From fe8b58e248e017a69eb905c7c581187444526de8 Mon Sep 17 00:00:00 2001 From: Nelofar Qulizada Date: Wed, 6 Aug 2025 01:27:20 +0000 Subject: [PATCH 1/2] Update environment.yml with analysis dependencies --- environment.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/environment.yml b/environment.yml index d91c3c80..001ec318 100644 --- a/environment.yml +++ b/environment.yml @@ -1,7 +1,11 @@ -name: cookbook-dev +name: biascorr channels: - conda-forge dependencies: - - jupyterlab - - mystmd - - jupyterlab-myst + - python=3.11 + - pandas + - numpy + - matplotlib + - statsmodels + - scikit-learn + - jupyter \ No newline at end of file From 7288ed5b6ad5479fad2249127a8ddc9c3d4c6a95 Mon Sep 17 00:00:00 2001 From: Nelofar Qulizada Date: Wed, 6 Aug 2025 01:53:37 +0000 Subject: [PATCH 2/2] Update bias-correction model notebook --- .../03_bias_correction_model_robust.ipynb | 2580 +++++++++++++++++ 1 file changed, 2580 insertions(+) create mode 100644 notebooks/03_bias_correction_model_robust.ipynb diff --git a/notebooks/03_bias_correction_model_robust.ipynb b/notebooks/03_bias_correction_model_robust.ipynb new file mode 100644 index 00000000..3cf41654 --- /dev/null +++ b/notebooks/03_bias_correction_model_robust.ipynb @@ -0,0 +1,2580 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "e21c8a3d", + "metadata": {}, + "source": [ + "# 03 — Bias Correction Model (Robust: sparse-safe + impute + de-collinear)\n", + "\n", + "This notebook is designed to be robust for large, sparse covariate sets:\n", + "\n", + "- Loads `../processed_data/weekly_with_covariates.csv`\n", + "- Target: `EcoCntr_weekly_SUM`\n", + "- Predictors: `SUM_total_trip_count` + all other covariates (excluding IDs/dates)\n", + "- Drops covariate **columns** with > **80% NaN** (too sparse)\n", + "- Train/test split, then **impute** remaining NaNs with **train means** (no leakage)\n", + "- Removes **constant** and **duplicate** columns to reduce multicollinearity\n", + "- Fits OLS (HC3 robust SEs), evaluates, and exports predictions + metrics\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "5fc8309b", + "metadata": {}, + "outputs": [], + "source": [ + "# Imports\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import statsmodels.api as sm\n", + "\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import mean_squared_error, r2_score\n", + "from sklearn.impute import SimpleImputer\n", + "\n", + "pd.set_option(\"display.max_columns\", 200)" + ] + }, + { + "cell_type": "markdown", + "id": "1bbf14ef", + "metadata": {}, + "source": [ + "## 1) Load merged weekly dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "926f80e0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loaded: (3377, 278)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
GRID_ID.1STARTweek_stravaDATE_castGRID_IDENDweek_stravaDATE_castSUM_total_trip_countEcoCntr_weekly_SUMMAX_slopePctSTARTweek_TimeHEXid_weekIDHEXid_WeekIDENDweek_Timeweek_idweek_start_GRID_JOIN_OBJECTID *Shape *SOURCE_IDGRID_ID_covslopePctTrailCounterSqMetersASOSIDAR_asosID_hexIDSlope_10m_MEANOBJECTIDGRID_ID.1_covTIMESTEP_stravaDATE_castSTARTTIME_stravaDATE_castENDTIME_stravaDATE_castSUM_EcoCounter_WeeklyAggregationSUM_total_trip_count_covSUM_ride_countMAX_activity_typeMAX_slopePct_covSUM_forward_people_countSUM_reverse_people_countSUM_forward_commute_trip_countSUM_reverse_commute_trip_countSUM_forward_leisure_trip_countSUM_reverse_leisure_trip_countSUM_ebike_ride_countSUM_forward_morning_trip_countSUM_reverse_morning_trip_countSUM_forward_midday_trip_countSUM_reverse_midday_trip_countSUM_forward_evening_trip_countSUM_reverse_evening_trip_countSUM_forward_male_people_countSUM_reverse_male_people_countSUM_forward_female_people_countSUM_reverse_female_people_countSUM_forward_18_34_people_countSUM_reverse_18_34_people_countSUM_forward_35_54_people_countSUM_reverse_35_54_people_countSUM_forward_55_64_people_countSUM_reverse_55_64_people_countMIN_slopePcthexid_weekid_joinASOS_IDHexIDstationASOS ID WeekID JoinasosID_encodeSTEPTIMESTEP_weekIDSTARTTIME_WeekdayENDTIME_WeekdaystationMAX_max_temp_fMIN_min_temp_fMAX_max_dewpoint_fMIN_min_dewpoint_fSUM_precip_inMEAN_avg_wind_speed_ktsMEAN_avg_wind_drctMIN_min_rhMEAN_avg_rhMAX_max_rhSUM_snow_inMIN_min_feelMEAN_avg_feelMAX_max_feelMAX_max_wind_speed_ktsMAX_max_wind_gust_ktsMAX_climo_high_fMIN_climo_low_fSUM_climo_precip_inLocation of EcocounterCOUNTMEAN_forward_average_speed_meters_per_secondMEAN_reverse_average_speed_meters_per_secondSUM_forward_overnight_trip_countSUM_reverse_overnight_trip_countSUM_forward_unspecified_people_countSUM_reverse_unspecified_people_countSUM_forward_65_plus_people_countSUM_reverse_65_plus_people_countOBJECTID.1HEX GRID_IDSlope Pct CategorySlope MAXpct...2029 Other Race Population2029 Other Race Population: Percent2029 Diversity Index2022 Pop 25+: HS Diploma (ACS 5-Yr)2022 Pop 25+: HS Diploma (ACS 5-Yr): Percent2022 Pop 25+: Some College (ACS 5-Yr)2022 Pop 25+: Some College (ACS 5-Yr): Percent2022 Pop 25+: Assoc Degree (ACS 5-Yr)2022 Pop 25+: Assoc Degree (ACS 5-Yr): Percent2022 Pop 25+: Bach Degree (ACS 5-Yr)2022 Pop 25+: Bach Degree (ACS 5-Yr): Percent2022 Pop 25+: Master`s Deg (ACS 5-Yr)2022 Pop 25+: Master`s Deg (ACS 5-Yr): Percent2022 Pop 25+: Prof Sch Deg (ACS 5-Yr)2022 Pop 25+: Prof Sch Deg (ACS 5-Yr): Percent2022 Pop 25+: Doctorate (ACS 5-Yr)2022 Pop 25+: Doctorate (ACS 5-Yr): Percent2024 Pop Age 25+: High School Diploma2024 Pop Age 25+: High School Diploma: Percent2024 Pop Age 25+: GED2024 Pop Age 25+: GED: Percent2020 Total Population2024 Total Population2024 Population Density2022 Civilian Pop 18+: Veteran (ACS 5-Yr)2022 Civilian Pop 18+: Veteran (ACS 5-Yr): Percent2022 Civilian Pop 18+: Nonveteran (ACS 5-Yr)2022 Civilian Pop 18+: Nonveteran (ACS 5-Yr): Percent2022 Workers 16+: Bicycle (ACS 5-Yr)2022 Workers 16+: Bicycle (ACS 5-Yr): Percent2022 Workers 16+: Walked (ACS 5-Yr)2022 Workers 16+: Walked (ACS 5-Yr): Percent2022 Commute to Work: 15-19 Min (ACS 5-Yr)2022 Commute to Work: 15-19 Min (ACS 5-Yr): Percent2022 Commute to Work: 10-14 Min (ACS 5-Yr)2022 Commute to Work: 10-14 Min (ACS 5-Yr): Percent2022 Commute to Work: 5-9 Min (ACS 5-Yr)2022 Commute to Work: 5-9 Min (ACS 5-Yr): Percent2022 Commute to Work: <5 Min (ACS 5-Yr)2022 Commute to Work: <5 Min (ACS 5-Yr): Percent2022 Avg Commute to Work (ACS 5-Yr)2024 Median Age2024 Median Age: Index2024 Senior Population2024 Senior Population: Percent2020 Multiple Races Pop 35-392020 Multiple Races Pop 35-39: Percent2024 Population Age 0-42024 Population Age 0-4: Percent2022 Poverty Index (ACS 5-Yr)2022 HHs: Inc Below Poverty Level (ACS 5-Yr)2022 HHs: Inc Below Poverty Level (ACS 5-Yr): Percent2022 HHs w/Public Assist Income (ACS 5-Yr)2022 HHs w/Public Assist Income (ACS 5-Yr): Percent2022 Race: White (ACS 5-Yr)2022 Race: White (ACS 5-Yr): Percent2022 Race: Black (ACS 5-Yr)2022 Race: Black (ACS 5-Yr): PercentGRID_ID.2Trail Counter NameSq_MetersAREAShape_LengthShape_AreaSpatial Component 1Spatial Component 2Spatial Component 3Spatial Component 4Spatial Component 5Spatial Component 6Spatial Component 7Spatial Component 8Spatial Component 9Spatial Component 10Spatial Component 11Spatial Component 12Spatial Component 13Spatial Component 14Spatial Component 15Spatial Component 16Spatial Component 17Spatial Component 18Spatial Component 19Spatial Component 20Spatial Component 21Spatial Component 22Spatial Component 23Spatial Component 24Spatial Component 25Spatial Component 26Spatial Component 27Spatial Component 28Spatial Component 29Spatial Component 30Spatial Component 31Spatial Component 32Spatial Component 33Spatial Component 34Spatial Component 35Spatial Component 36Spatial Component 37
0BD-172022-10-17BD-172022-10-23 23:59:002765.01181NaN2022-10-17BD-17_198BD-17_1982022-10-23 23:59:00BD-17_1982022-10-17BD-178134Polygon8134BD-1712 to 25%N Walton - Bentonville489982.325556VBTBD-17_VBT16.163683<Null><Null>922020-10-05 06:00:002020-10-12 05:59:59183730503005Ride,EBikeRide12 to 25%133016150014051690351952056656905107751070125022027530535580094011516512 to 25%BD-17_92VBTBD-17_VBTVBT_92VBT_92922020-10-05 06:00:002020-10-12 05:59:59VBT8843.066.939.00.00004.139276162.92353633.99657074.086262100.00.041.26356067.06006987.30833415.00000019.11747775.447.20.63N Walton - Bentonville653.1540004.02630800030200<Null>BD-1712 to 25%25...241.4039.6907.7320717.78615.2455147.3418816.15332.84272.32867.9000.00161516611043.11289.60120590.40101.1500.0013918.3921027.788611.38486.350.044.111226115.71139.03875.2430213.7171.24176394.58402.15<Null>N Walton - Bentonville489982.3255562604.986301489734.0191180.0157830.0408550.0272910.017883-0.0038950.0135020.021565-0.0198810.026586-0.008986-0.001549-0.014623-0.013211-0.0129380.017165-0.017385-0.0107530.0037790.007025-0.0011570.0142340.0057930.016226-0.0164560.0263060.0071630.0172730.0009700.005897-0.008076-0.005118-0.004417-0.019202-0.001520-0.0046880.012160-0.010374
1BD-172020-10-05BD-172020-10-11 23:59:003050.01837NaN2020-10-05BD-17_92BD-17_922020-10-11 23:59:00BD-17_922020-10-05BD-178134Polygon8134BD-1712 to 25%N Walton - Bentonville489982.325556VBTBD-17_VBT16.163683<Null><Null>922020-10-05 06:00:002020-10-12 05:59:59183730503005Ride,EBikeRide12 to 25%133016150014051690351952056656905107751070125022027530535580094011516512 to 25%BD-17_92VBTBD-17_VBTVBT_92VBT_92922020-10-05 06:00:002020-10-12 05:59:59VBT8843.066.939.00.00004.139276162.92353633.99657074.086262100.00.041.26356067.06006987.30833415.00000019.11747775.447.20.63N Walton - Bentonville653.1540004.02630800030200<Null>BD-1712 to 25%25...241.4039.6907.7320717.78615.2455147.3418816.15332.84272.32867.9000.00161516611043.11289.60120590.40101.1500.0013918.3921027.788611.38486.350.044.111226115.71139.03875.2430213.7171.24176394.58402.15<Null>N Walton - Bentonville489982.3255562604.986301489734.0191180.0157830.0408550.0272910.017883-0.0038950.0135020.021565-0.0198810.026586-0.008986-0.001549-0.014623-0.013211-0.0129380.017165-0.017385-0.0107530.0037790.007025-0.0011570.0142340.0057930.016226-0.0164560.0263060.0071630.0172730.0009700.005897-0.008076-0.005118-0.004417-0.019202-0.001520-0.0046880.012160-0.010374
2BE-152022-04-11BE-152022-04-17 23:59:0020680.03440NaN2022-04-11BE-15_171BE-15_1712022-04-17 23:59:00BE-15_1712022-04-11BE-158442Polygon8442BE-158 to 12%North Trail (RBG) - Bentonville489983.971087VBTBE-15_VBT14.190971<Null><Null>02018-12-31 06:00:002019-01-07 05:59:59303556155565Ride,EBikeRide8 to 12%228530057510523803100011015015052060635770197525751653257501030102014101102158 to 12%BE-15_0VBTBE-15_VBTVBT_0VBT_002018-12-31 06:00:002019-01-07 05:59:59VBT6527.045.026.11.94015.524672235.68964439.35653781.974665100.00.019.90337636.27100964.90000021.72440526.06928646.324.60.67North Trail (RGB) - Bentonville2022.6995542.724752000000<Null>BE-158 to 12%12...72.5243.01914.181914.1853.733828.363022.3953.7332.242614.8610.57264270321.574.6414596.0310.9132.733130.691413.861514.8565.940.034.488259.2614.35197.0491711.2900.0017779.0262.68<Null>North Trail (RBG) - Bentonville489983.9710872604.986127489733.9539930.0199260.0322650.0327380.014478-0.0087400.0085350.028416-0.0181120.023882-0.019235-0.006239-0.0051240.004725-0.0083640.018894-0.011290-0.0148840.0058780.003777-0.0008410.0117530.0007910.009333-0.0194130.0275400.0105740.000171-0.002385-0.005621-0.004850-0.007405-0.004869-0.022160-0.010040-0.0090150.0060140.005778
3BH-262020-12-21BH-262020-12-27 23:59:002820.0668NaN2020-12-21BH-26_103BH-26_1032020-12-27 23:59:00BH-26_1032020-12-21BH-267367Polygon7367BH-261 to 3%Horsebarn - Rogers489989.142339VBTBH-26_VBT2.903954<Null><Null>1522021-11-29 06:00:002021-12-06 05:59:5984224502365Ride,EBikeRide1 to 3%121012559550116012501001001506756803303708308503004002753005656002801901 to 3%BH-26_152VBTBH-26_VBTVBT_152VBT_1521522021-11-29 06:00:002021-12-06 05:59:59VBT7534.063.033.10.50025.713273177.16430931.86082869.994705100.00.030.07688356.16083373.90000020.00000030.41417053.728.90.86Horsebarn - Rogers765.0723685.211579000505075<Null>BH-261 to 3%3...19.0961.700.0000.0000.0000.0000.0000.0000.00228.5700.0001034.400.0000.0000.0000.0000.0000.0000.0000.000.035.089220.0000.00110.00000.0000.0000.0000.00<Null>Horsebarn - Rogers489989.1423392604.986401489734.056717-0.0350470.0160620.023415-0.0106110.023480-0.0089630.0091210.0203000.0012270.0048430.0029970.0028780.009927-0.0011730.0103980.029699-0.005415-0.001269-0.001177-0.000546-0.0303930.003949-0.0150630.0087060.0035190.019769-0.0173290.005003-0.008240-0.009508-0.024286-0.0020290.006402-0.001713-0.0025550.0028570.001643
4BQ-252020-08-17BQ-252020-08-23 23:59:008965.00NaN2020-08-17BQ-25_85BQ-25_852020-08-23 23:59:00BQ-25_852020-08-17BQ-257444Polygon7444BQ-251 to 3%Foerster Park - Rogers490003.801737ROGBQ-25_ROG1.669559<Null><Null>2172023-02-27 06:00:002023-03-06 05:59:59051004810Ride,EBikeRide1 to 3%2175279023030195528152200151270130077512151470187062597033555098011504405501 to 3%BQ-25_217ROGBQ-25_ROGROG_217ROG_2172172023-02-27 06:00:002023-03-06 05:59:59ROG7530.057.925.02.05009.574210210.68573316.55799962.636715100.00.025.31819550.98758873.90000030.00000039.00000056.630.70.89Foerster Park - Rogers1484.2724324.434122022000245110<Null>BQ-251 to 3%3...26120.4277.824934.5816623.06547.50446.1110.1460.8300.0029137.07779.8111771228447.5424.6586295.4600.0020.33529.5110619.385910.79213.840.037.39519916.21147.95725.861476218.2900.0084259.3400.00<Null>Foerster Park - Rogers490003.8017372604.986401489734.056717-0.024320-0.0235650.041983-0.0129290.014677-0.0209800.0103920.015039-0.0103220.0018680.020474-0.002792-0.002008-0.0098090.009287-0.0024580.007774-0.000434-0.0059060.0079070.0040700.003692-0.015666-0.014223-0.013315-0.0056380.0116270.007847-0.0128790.0228070.022764-0.010053-0.0109540.022039-0.0196980.014580-0.015723
\n", + "

5 rows × 278 columns

\n", + "
" + ], + "text/plain": [ + " GRID_ID.1 STARTweek_stravaDATE_cast GRID_ID ENDweek_stravaDATE_cast \\\n", + "0 BD-17 2022-10-17 BD-17 2022-10-23 23:59:00 \n", + "1 BD-17 2020-10-05 BD-17 2020-10-11 23:59:00 \n", + "2 BE-15 2022-04-11 BE-15 2022-04-17 23:59:00 \n", + "3 BH-26 2020-12-21 BH-26 2020-12-27 23:59:00 \n", + "4 BQ-25 2020-08-17 BQ-25 2020-08-23 23:59:00 \n", + "\n", + " SUM_total_trip_count EcoCntr_weekly_SUM MAX_slopePct STARTweek_Time \\\n", + "0 2765.0 1181 NaN 2022-10-17 \n", + "1 3050.0 1837 NaN 2020-10-05 \n", + "2 20680.0 3440 NaN 2022-04-11 \n", + "3 2820.0 668 NaN 2020-12-21 \n", + "4 8965.0 0 NaN 2020-08-17 \n", + "\n", + " HEXid_weekID HEXid_WeekID ENDweek_Time week_id week_start \\\n", + "0 BD-17_198 BD-17_198 2022-10-23 23:59:00 BD-17_198 2022-10-17 \n", + "1 BD-17_92 BD-17_92 2020-10-11 23:59:00 BD-17_92 2020-10-05 \n", + "2 BE-15_171 BE-15_171 2022-04-17 23:59:00 BE-15_171 2022-04-11 \n", + "3 BH-26_103 BH-26_103 2020-12-27 23:59:00 BH-26_103 2020-12-21 \n", + "4 BQ-25_85 BQ-25_85 2020-08-23 23:59:00 BQ-25_85 2020-08-17 \n", + "\n", + " _GRID_JOIN_ OBJECTID * Shape * SOURCE_ID GRID_ID_cov slopePct \\\n", + "0 BD-17 8134 Polygon 8134 BD-17 12 to 25% \n", + "1 BD-17 8134 Polygon 8134 BD-17 12 to 25% \n", + "2 BE-15 8442 Polygon 8442 BE-15 8 to 12% \n", + "3 BH-26 7367 Polygon 7367 BH-26 1 to 3% \n", + "4 BQ-25 7444 Polygon 7444 BQ-25 1 to 3% \n", + "\n", + " TrailCounter SqMeters ASOSID AR_asosID_hexID \\\n", + "0 N Walton - Bentonville 489982.325556 VBT BD-17_VBT \n", + "1 N Walton - Bentonville 489982.325556 VBT BD-17_VBT \n", + "2 North Trail (RBG) - Bentonville 489983.971087 VBT BE-15_VBT \n", + "3 Horsebarn - Rogers 489989.142339 VBT BH-26_VBT \n", + "4 Foerster Park - Rogers 490003.801737 ROG BQ-25_ROG \n", + "\n", + " Slope_10m_MEAN OBJECTID GRID_ID.1_cov TIMESTEP_stravaDATE_cast \\\n", + "0 16.163683 92 \n", + "1 16.163683 92 \n", + "2 14.190971 0 \n", + "3 2.903954 152 \n", + "4 1.669559 217 \n", + "\n", + " STARTTIME_stravaDATE_cast ENDTIME_stravaDATE_cast \\\n", + "0 2020-10-05 06:00:00 2020-10-12 05:59:59 \n", + "1 2020-10-05 06:00:00 2020-10-12 05:59:59 \n", + "2 2018-12-31 06:00:00 2019-01-07 05:59:59 \n", + "3 2021-11-29 06:00:00 2021-12-06 05:59:59 \n", + "4 2023-02-27 06:00:00 2023-03-06 05:59:59 \n", + "\n", + " SUM_EcoCounter_WeeklyAggregation SUM_total_trip_count_cov SUM_ride_count \\\n", + "0 1837 3050 3005 \n", + "1 1837 3050 3005 \n", + "2 3035 5615 5565 \n", + "3 842 2450 2365 \n", + "4 0 5100 4810 \n", + "\n", + " MAX_activity_type MAX_slopePct_cov SUM_forward_people_count \\\n", + "0 Ride,EBikeRide 12 to 25% 1330 \n", + "1 Ride,EBikeRide 12 to 25% 1330 \n", + "2 Ride,EBikeRide 8 to 12% 2285 \n", + "3 Ride,EBikeRide 1 to 3% 1210 \n", + "4 Ride,EBikeRide 1 to 3% 2175 \n", + "\n", + " SUM_reverse_people_count SUM_forward_commute_trip_count \\\n", + "0 1615 0 \n", + "1 1615 0 \n", + "2 3005 75 \n", + "3 1255 95 \n", + "4 2790 230 \n", + "\n", + " SUM_reverse_commute_trip_count SUM_forward_leisure_trip_count \\\n", + "0 0 1405 \n", + "1 0 1405 \n", + "2 105 2380 \n", + "3 50 1160 \n", + "4 30 1955 \n", + "\n", + " SUM_reverse_leisure_trip_count SUM_ebike_ride_count \\\n", + "0 1690 35 \n", + "1 1690 35 \n", + "2 3100 0 \n", + "3 1250 100 \n", + "4 2815 220 \n", + "\n", + " SUM_forward_morning_trip_count SUM_reverse_morning_trip_count \\\n", + "0 195 205 \n", + "1 195 205 \n", + "2 110 150 \n", + "3 100 150 \n", + "4 0 15 \n", + "\n", + " SUM_forward_midday_trip_count SUM_reverse_midday_trip_count \\\n", + "0 665 690 \n", + "1 665 690 \n", + "2 1505 2060 \n", + "3 675 680 \n", + "4 1270 1300 \n", + "\n", + " SUM_forward_evening_trip_count SUM_reverse_evening_trip_count \\\n", + "0 510 775 \n", + "1 510 775 \n", + "2 635 770 \n", + "3 330 370 \n", + "4 775 1215 \n", + "\n", + " SUM_forward_male_people_count SUM_reverse_male_people_count \\\n", + "0 1070 1250 \n", + "1 1070 1250 \n", + "2 1975 2575 \n", + "3 830 850 \n", + "4 1470 1870 \n", + "\n", + " SUM_forward_female_people_count SUM_reverse_female_people_count \\\n", + "0 220 275 \n", + "1 220 275 \n", + "2 165 325 \n", + "3 300 400 \n", + "4 625 970 \n", + "\n", + " SUM_forward_18_34_people_count SUM_reverse_18_34_people_count \\\n", + "0 305 355 \n", + "1 305 355 \n", + "2 750 1030 \n", + "3 275 300 \n", + "4 335 550 \n", + "\n", + " SUM_forward_35_54_people_count SUM_reverse_35_54_people_count \\\n", + "0 800 940 \n", + "1 800 940 \n", + "2 1020 1410 \n", + "3 565 600 \n", + "4 980 1150 \n", + "\n", + " SUM_forward_55_64_people_count SUM_reverse_55_64_people_count \\\n", + "0 115 165 \n", + "1 115 165 \n", + "2 110 215 \n", + "3 280 190 \n", + "4 440 550 \n", + "\n", + " MIN_slopePct hexid_weekid_join ASOS_ID HexIDstation ASOS ID WeekID Join \\\n", + "0 12 to 25% BD-17_92 VBT BD-17_VBT VBT_92 \n", + "1 12 to 25% BD-17_92 VBT BD-17_VBT VBT_92 \n", + "2 8 to 12% BE-15_0 VBT BE-15_VBT VBT_0 \n", + "3 1 to 3% BH-26_152 VBT BH-26_VBT VBT_152 \n", + "4 1 to 3% BQ-25_217 ROG BQ-25_ROG ROG_217 \n", + "\n", + " asosID_encodeSTEP TIMESTEP_weekID STARTTIME_Weekday \\\n", + "0 VBT_92 92 2020-10-05 06:00:00 \n", + "1 VBT_92 92 2020-10-05 06:00:00 \n", + "2 VBT_0 0 2018-12-31 06:00:00 \n", + "3 VBT_152 152 2021-11-29 06:00:00 \n", + "4 ROG_217 217 2023-02-27 06:00:00 \n", + "\n", + " ENDTIME_Weekday station MAX_max_temp_f MIN_min_temp_f \\\n", + "0 2020-10-12 05:59:59 VBT 88 43.0 \n", + "1 2020-10-12 05:59:59 VBT 88 43.0 \n", + "2 2019-01-07 05:59:59 VBT 65 27.0 \n", + "3 2021-12-06 05:59:59 VBT 75 34.0 \n", + "4 2023-03-06 05:59:59 ROG 75 30.0 \n", + "\n", + " MAX_max_dewpoint_f MIN_min_dewpoint_f SUM_precip_in \\\n", + "0 66.9 39.0 0.0000 \n", + "1 66.9 39.0 0.0000 \n", + "2 45.0 26.1 1.9401 \n", + "3 63.0 33.1 0.5002 \n", + "4 57.9 25.0 2.0500 \n", + "\n", + " MEAN_avg_wind_speed_kts MEAN_avg_wind_drct MIN_min_rh MEAN_avg_rh \\\n", + "0 4.139276 162.923536 33.996570 74.086262 \n", + "1 4.139276 162.923536 33.996570 74.086262 \n", + "2 5.524672 235.689644 39.356537 81.974665 \n", + "3 5.713273 177.164309 31.860828 69.994705 \n", + "4 9.574210 210.685733 16.557999 62.636715 \n", + "\n", + " MAX_max_rh SUM_snow_in MIN_min_feel MEAN_avg_feel MAX_max_feel \\\n", + "0 100.0 0.0 41.263560 67.060069 87.308334 \n", + "1 100.0 0.0 41.263560 67.060069 87.308334 \n", + "2 100.0 0.0 19.903376 36.271009 64.900000 \n", + "3 100.0 0.0 30.076883 56.160833 73.900000 \n", + "4 100.0 0.0 25.318195 50.987588 73.900000 \n", + "\n", + " MAX_max_wind_speed_kts MAX_max_wind_gust_kts MAX_climo_high_f \\\n", + "0 15.000000 19.117477 75.4 \n", + "1 15.000000 19.117477 75.4 \n", + "2 21.724405 26.069286 46.3 \n", + "3 20.000000 30.414170 53.7 \n", + "4 30.000000 39.000000 56.6 \n", + "\n", + " MIN_climo_low_f SUM_climo_precip_in Location of Ecocounter \\\n", + "0 47.2 0.63 N Walton - Bentonville \n", + "1 47.2 0.63 N Walton - Bentonville \n", + "2 24.6 0.67 North Trail (RGB) - Bentonville \n", + "3 28.9 0.86 Horsebarn - Rogers \n", + "4 30.7 0.89 Foerster Park - Rogers \n", + "\n", + " COUNT MEAN_forward_average_speed_meters_per_second \\\n", + "0 65 3.154000 \n", + "1 65 3.154000 \n", + "2 202 2.699554 \n", + "3 76 5.072368 \n", + "4 148 4.272432 \n", + "\n", + " MEAN_reverse_average_speed_meters_per_second \\\n", + "0 4.026308 \n", + "1 4.026308 \n", + "2 2.724752 \n", + "3 5.211579 \n", + "4 4.434122 \n", + "\n", + " SUM_forward_overnight_trip_count SUM_reverse_overnight_trip_count \\\n", + "0 0 0 \n", + "1 0 0 \n", + "2 0 0 \n", + "3 0 0 \n", + "4 0 220 \n", + "\n", + " SUM_forward_unspecified_people_count SUM_reverse_unspecified_people_count \\\n", + "0 0 30 \n", + "1 0 30 \n", + "2 0 0 \n", + "3 0 50 \n", + "4 0 0 \n", + "\n", + " SUM_forward_65_plus_people_count SUM_reverse_65_plus_people_count \\\n", + "0 20 0 \n", + "1 20 0 \n", + "2 0 0 \n", + "3 50 75 \n", + "4 245 110 \n", + "\n", + " OBJECTID.1 HEX GRID_ID Slope Pct Category Slope MAXpct ... \\\n", + "0 BD-17 12 to 25% 25 ... \n", + "1 BD-17 12 to 25% 25 ... \n", + "2 BE-15 8 to 12% 12 ... \n", + "3 BH-26 1 to 3% 3 ... \n", + "4 BQ-25 1 to 3% 3 ... \n", + "\n", + " 2029 Other Race Population 2029 Other Race Population: Percent \\\n", + "0 24 1.40 \n", + "1 24 1.40 \n", + "2 7 2.52 \n", + "3 1 9.09 \n", + "4 261 20.42 \n", + "\n", + " 2029 Diversity Index 2022 Pop 25+: HS Diploma (ACS 5-Yr) \\\n", + "0 39.6 90 \n", + "1 39.6 90 \n", + "2 43.0 19 \n", + "3 61.7 0 \n", + "4 77.8 249 \n", + "\n", + " 2022 Pop 25+: HS Diploma (ACS 5-Yr): Percent \\\n", + "0 7.73 \n", + "1 7.73 \n", + "2 14.18 \n", + "3 0.00 \n", + "4 34.58 \n", + "\n", + " 2022 Pop 25+: Some College (ACS 5-Yr) \\\n", + "0 207 \n", + "1 207 \n", + "2 19 \n", + "3 0 \n", + "4 166 \n", + "\n", + " 2022 Pop 25+: Some College (ACS 5-Yr): Percent \\\n", + "0 17.78 \n", + "1 17.78 \n", + "2 14.18 \n", + "3 0.00 \n", + "4 23.06 \n", + "\n", + " 2022 Pop 25+: Assoc Degree (ACS 5-Yr) \\\n", + "0 61 \n", + "1 61 \n", + "2 5 \n", + "3 0 \n", + "4 54 \n", + "\n", + " 2022 Pop 25+: Assoc Degree (ACS 5-Yr): Percent \\\n", + "0 5.24 \n", + "1 5.24 \n", + "2 3.73 \n", + "3 0.00 \n", + "4 7.50 \n", + "\n", + " 2022 Pop 25+: Bach Degree (ACS 5-Yr) \\\n", + "0 551 \n", + "1 551 \n", + "2 38 \n", + "3 0 \n", + "4 44 \n", + "\n", + " 2022 Pop 25+: Bach Degree (ACS 5-Yr): Percent \\\n", + "0 47.34 \n", + "1 47.34 \n", + "2 28.36 \n", + "3 0.00 \n", + "4 6.11 \n", + "\n", + " 2022 Pop 25+: Master`s Deg (ACS 5-Yr) \\\n", + "0 188 \n", + "1 188 \n", + "2 30 \n", + "3 0 \n", + "4 1 \n", + "\n", + " 2022 Pop 25+: Master`s Deg (ACS 5-Yr): Percent \\\n", + "0 16.15 \n", + "1 16.15 \n", + "2 22.39 \n", + "3 0.00 \n", + "4 0.14 \n", + "\n", + " 2022 Pop 25+: Prof Sch Deg (ACS 5-Yr) \\\n", + "0 33 \n", + "1 33 \n", + "2 5 \n", + "3 0 \n", + "4 6 \n", + "\n", + " 2022 Pop 25+: Prof Sch Deg (ACS 5-Yr): Percent \\\n", + "0 2.84 \n", + "1 2.84 \n", + "2 3.73 \n", + "3 0.00 \n", + "4 0.83 \n", + "\n", + " 2022 Pop 25+: Doctorate (ACS 5-Yr) \\\n", + "0 27 \n", + "1 27 \n", + "2 3 \n", + "3 0 \n", + "4 0 \n", + "\n", + " 2022 Pop 25+: Doctorate (ACS 5-Yr): Percent \\\n", + "0 2.32 \n", + "1 2.32 \n", + "2 2.24 \n", + "3 0.00 \n", + "4 0.00 \n", + "\n", + " 2024 Pop Age 25+: High School Diploma \\\n", + "0 86 \n", + "1 86 \n", + "2 26 \n", + "3 2 \n", + "4 291 \n", + "\n", + " 2024 Pop Age 25+: High School Diploma: Percent 2024 Pop Age 25+: GED \\\n", + "0 7.90 0 \n", + "1 7.90 0 \n", + "2 14.86 1 \n", + "3 28.57 0 \n", + "4 37.07 77 \n", + "\n", + " 2024 Pop Age 25+: GED: Percent 2020 Total Population \\\n", + "0 0.00 1615 \n", + "1 0.00 1615 \n", + "2 0.57 264 \n", + "3 0.00 0 \n", + "4 9.81 1177 \n", + "\n", + " 2024 Total Population 2024 Population Density \\\n", + "0 1661 1043.1 \n", + "1 1661 1043.1 \n", + "2 270 321.5 \n", + "3 10 34.4 \n", + "4 1228 447.5 \n", + "\n", + " 2022 Civilian Pop 18+: Veteran (ACS 5-Yr) \\\n", + "0 128 \n", + "1 128 \n", + "2 7 \n", + "3 0 \n", + "4 42 \n", + "\n", + " 2022 Civilian Pop 18+: Veteran (ACS 5-Yr): Percent \\\n", + "0 9.60 \n", + "1 9.60 \n", + "2 4.64 \n", + "3 0.00 \n", + "4 4.65 \n", + "\n", + " 2022 Civilian Pop 18+: Nonveteran (ACS 5-Yr) \\\n", + "0 1205 \n", + "1 1205 \n", + "2 145 \n", + "3 0 \n", + "4 862 \n", + "\n", + " 2022 Civilian Pop 18+: Nonveteran (ACS 5-Yr): Percent \\\n", + "0 90.40 \n", + "1 90.40 \n", + "2 96.03 \n", + "3 0.00 \n", + "4 95.46 \n", + "\n", + " 2022 Workers 16+: Bicycle (ACS 5-Yr) \\\n", + "0 10 \n", + "1 10 \n", + "2 1 \n", + "3 0 \n", + "4 0 \n", + "\n", + " 2022 Workers 16+: Bicycle (ACS 5-Yr): Percent \\\n", + "0 1.15 \n", + "1 1.15 \n", + "2 0.91 \n", + "3 0.00 \n", + "4 0.00 \n", + "\n", + " 2022 Workers 16+: Walked (ACS 5-Yr) \\\n", + "0 0 \n", + "1 0 \n", + "2 3 \n", + "3 0 \n", + "4 2 \n", + "\n", + " 2022 Workers 16+: Walked (ACS 5-Yr): Percent \\\n", + "0 0.00 \n", + "1 0.00 \n", + "2 2.73 \n", + "3 0.00 \n", + "4 0.33 \n", + "\n", + " 2022 Commute to Work: 15-19 Min (ACS 5-Yr) \\\n", + "0 139 \n", + "1 139 \n", + "2 31 \n", + "3 0 \n", + "4 52 \n", + "\n", + " 2022 Commute to Work: 15-19 Min (ACS 5-Yr): Percent \\\n", + "0 18.39 \n", + "1 18.39 \n", + "2 30.69 \n", + "3 0.00 \n", + "4 9.51 \n", + "\n", + " 2022 Commute to Work: 10-14 Min (ACS 5-Yr) \\\n", + "0 210 \n", + "1 210 \n", + "2 14 \n", + "3 0 \n", + "4 106 \n", + "\n", + " 2022 Commute to Work: 10-14 Min (ACS 5-Yr): Percent \\\n", + "0 27.78 \n", + "1 27.78 \n", + "2 13.86 \n", + "3 0.00 \n", + "4 19.38 \n", + "\n", + " 2022 Commute to Work: 5-9 Min (ACS 5-Yr) \\\n", + "0 86 \n", + "1 86 \n", + "2 15 \n", + "3 0 \n", + "4 59 \n", + "\n", + " 2022 Commute to Work: 5-9 Min (ACS 5-Yr): Percent \\\n", + "0 11.38 \n", + "1 11.38 \n", + "2 14.85 \n", + "3 0.00 \n", + "4 10.79 \n", + "\n", + " 2022 Commute to Work: <5 Min (ACS 5-Yr) \\\n", + "0 48 \n", + "1 48 \n", + "2 6 \n", + "3 0 \n", + "4 21 \n", + "\n", + " 2022 Commute to Work: <5 Min (ACS 5-Yr): Percent \\\n", + "0 6.35 \n", + "1 6.35 \n", + "2 5.94 \n", + "3 0.00 \n", + "4 3.84 \n", + "\n", + " 2022 Avg Commute to Work (ACS 5-Yr) 2024 Median Age \\\n", + "0 0.0 44.1 \n", + "1 0.0 44.1 \n", + "2 0.0 34.4 \n", + "3 0.0 35.0 \n", + "4 0.0 37.3 \n", + "\n", + " 2024 Median Age: Index 2024 Senior Population \\\n", + "0 112 261 \n", + "1 112 261 \n", + "2 88 25 \n", + "3 89 2 \n", + "4 95 199 \n", + "\n", + " 2024 Senior Population: Percent 2020 Multiple Races Pop 35-39 \\\n", + "0 15.71 13 \n", + "1 15.71 13 \n", + "2 9.26 1 \n", + "3 20.00 0 \n", + "4 16.21 14 \n", + "\n", + " 2020 Multiple Races Pop 35-39: Percent 2024 Population Age 0-4 \\\n", + "0 9.03 87 \n", + "1 9.03 87 \n", + "2 4.35 19 \n", + "3 0.00 1 \n", + "4 7.95 72 \n", + "\n", + " 2024 Population Age 0-4: Percent 2022 Poverty Index (ACS 5-Yr) \\\n", + "0 5.24 30 \n", + "1 5.24 30 \n", + "2 7.04 91 \n", + "3 10.00 0 \n", + "4 5.86 147 \n", + "\n", + " 2022 HHs: Inc Below Poverty Level (ACS 5-Yr) \\\n", + "0 21 \n", + "1 21 \n", + "2 7 \n", + "3 0 \n", + "4 62 \n", + "\n", + " 2022 HHs: Inc Below Poverty Level (ACS 5-Yr): Percent \\\n", + "0 3.71 \n", + "1 3.71 \n", + "2 11.29 \n", + "3 0.00 \n", + "4 18.29 \n", + "\n", + " 2022 HHs w/Public Assist Income (ACS 5-Yr) \\\n", + "0 7 \n", + "1 7 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", + "\n", + " 2022 HHs w/Public Assist Income (ACS 5-Yr): Percent \\\n", + "0 1.24 \n", + "1 1.24 \n", + "2 0.00 \n", + "3 0.00 \n", + "4 0.00 \n", + "\n", + " 2022 Race: White (ACS 5-Yr) 2022 Race: White (ACS 5-Yr): Percent \\\n", + "0 1763 94.58 \n", + "1 1763 94.58 \n", + "2 177 79.02 \n", + "3 0 0.00 \n", + "4 842 59.34 \n", + "\n", + " 2022 Race: Black (ACS 5-Yr) 2022 Race: Black (ACS 5-Yr): Percent \\\n", + "0 40 2.15 \n", + "1 40 2.15 \n", + "2 6 2.68 \n", + "3 0 0.00 \n", + "4 0 0.00 \n", + "\n", + " GRID_ID.2 Trail Counter Name Sq_MetersAREA Shape_Length \\\n", + "0 N Walton - Bentonville 489982.325556 2604.986301 \n", + "1 N Walton - Bentonville 489982.325556 2604.986301 \n", + "2 North Trail (RBG) - Bentonville 489983.971087 2604.986127 \n", + "3 Horsebarn - Rogers 489989.142339 2604.986401 \n", + "4 Foerster Park - Rogers 490003.801737 2604.986401 \n", + "\n", + " Shape_Area Spatial Component 1 Spatial Component 2 \\\n", + "0 489734.019118 0.015783 0.040855 \n", + "1 489734.019118 0.015783 0.040855 \n", + "2 489733.953993 0.019926 0.032265 \n", + "3 489734.056717 -0.035047 0.016062 \n", + "4 489734.056717 -0.024320 -0.023565 \n", + "\n", + " Spatial Component 3 Spatial Component 4 Spatial Component 5 \\\n", + "0 0.027291 0.017883 -0.003895 \n", + "1 0.027291 0.017883 -0.003895 \n", + "2 0.032738 0.014478 -0.008740 \n", + "3 0.023415 -0.010611 0.023480 \n", + "4 0.041983 -0.012929 0.014677 \n", + "\n", + " Spatial Component 6 Spatial Component 7 Spatial Component 8 \\\n", + "0 0.013502 0.021565 -0.019881 \n", + "1 0.013502 0.021565 -0.019881 \n", + "2 0.008535 0.028416 -0.018112 \n", + "3 -0.008963 0.009121 0.020300 \n", + "4 -0.020980 0.010392 0.015039 \n", + "\n", + " Spatial Component 9 Spatial Component 10 Spatial Component 11 \\\n", + "0 0.026586 -0.008986 -0.001549 \n", + "1 0.026586 -0.008986 -0.001549 \n", + "2 0.023882 -0.019235 -0.006239 \n", + "3 0.001227 0.004843 0.002997 \n", + "4 -0.010322 0.001868 0.020474 \n", + "\n", + " Spatial Component 12 Spatial Component 13 Spatial Component 14 \\\n", + "0 -0.014623 -0.013211 -0.012938 \n", + "1 -0.014623 -0.013211 -0.012938 \n", + "2 -0.005124 0.004725 -0.008364 \n", + "3 0.002878 0.009927 -0.001173 \n", + "4 -0.002792 -0.002008 -0.009809 \n", + "\n", + " Spatial Component 15 Spatial Component 16 Spatial Component 17 \\\n", + "0 0.017165 -0.017385 -0.010753 \n", + "1 0.017165 -0.017385 -0.010753 \n", + "2 0.018894 -0.011290 -0.014884 \n", + "3 0.010398 0.029699 -0.005415 \n", + "4 0.009287 -0.002458 0.007774 \n", + "\n", + " Spatial Component 18 Spatial Component 19 Spatial Component 20 \\\n", + "0 0.003779 0.007025 -0.001157 \n", + "1 0.003779 0.007025 -0.001157 \n", + "2 0.005878 0.003777 -0.000841 \n", + "3 -0.001269 -0.001177 -0.000546 \n", + "4 -0.000434 -0.005906 0.007907 \n", + "\n", + " Spatial Component 21 Spatial Component 22 Spatial Component 23 \\\n", + "0 0.014234 0.005793 0.016226 \n", + "1 0.014234 0.005793 0.016226 \n", + "2 0.011753 0.000791 0.009333 \n", + "3 -0.030393 0.003949 -0.015063 \n", + "4 0.004070 0.003692 -0.015666 \n", + "\n", + " Spatial Component 24 Spatial Component 25 Spatial Component 26 \\\n", + "0 -0.016456 0.026306 0.007163 \n", + "1 -0.016456 0.026306 0.007163 \n", + "2 -0.019413 0.027540 0.010574 \n", + "3 0.008706 0.003519 0.019769 \n", + "4 -0.014223 -0.013315 -0.005638 \n", + "\n", + " Spatial Component 27 Spatial Component 28 Spatial Component 29 \\\n", + "0 0.017273 0.000970 0.005897 \n", + "1 0.017273 0.000970 0.005897 \n", + "2 0.000171 -0.002385 -0.005621 \n", + "3 -0.017329 0.005003 -0.008240 \n", + "4 0.011627 0.007847 -0.012879 \n", + "\n", + " Spatial Component 30 Spatial Component 31 Spatial Component 32 \\\n", + "0 -0.008076 -0.005118 -0.004417 \n", + "1 -0.008076 -0.005118 -0.004417 \n", + "2 -0.004850 -0.007405 -0.004869 \n", + "3 -0.009508 -0.024286 -0.002029 \n", + "4 0.022807 0.022764 -0.010053 \n", + "\n", + " Spatial Component 33 Spatial Component 34 Spatial Component 35 \\\n", + "0 -0.019202 -0.001520 -0.004688 \n", + "1 -0.019202 -0.001520 -0.004688 \n", + "2 -0.022160 -0.010040 -0.009015 \n", + "3 0.006402 -0.001713 -0.002555 \n", + "4 -0.010954 0.022039 -0.019698 \n", + "\n", + " Spatial Component 36 Spatial Component 37 \n", + "0 0.012160 -0.010374 \n", + "1 0.012160 -0.010374 \n", + "2 0.006014 0.005778 \n", + "3 0.002857 0.001643 \n", + "4 0.014580 -0.015723 \n", + "\n", + "[5 rows x 278 columns]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Path to merged CSV\n", + "DATA_PATH = \"../processed_data/weekly_with_covariates.csv\"\n", + "data = pd.read_csv(DATA_PATH, parse_dates=[\"week_start\"], low_memory=False)\n", + "print(\"Loaded:\", data.shape)\n", + "\n", + "# Sanity checks\n", + "assert \"EcoCntr_weekly_SUM\" in data.columns, \"EcoCntr_weekly_SUM not found.\"\n", + "assert \"SUM_total_trip_count\" in data.columns, \"SUM_total_trip_count not found.\"\n", + "\n", + "data.head()" + ] + }, + { + "cell_type": "markdown", + "id": "ed45dea3", + "metadata": {}, + "source": [ + "## 2) Build predictors" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "94819e39", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Rows after minimal filter: 3377\n", + "Predictor count (incl. Strava): 263\n" + ] + } + ], + "source": [ + "# Exclude ID/date/geometry columns\n", + "core_cols = [\n", + " \"week_id\", \"week_start\", \"EcoCntr_weekly_SUM\",\n", + " \"SUM_total_trip_count\", \"GRID_ID\", \"GRID_ID.1\",\n", + " \"HEXid_WeekID\", \"HEXid_weekID\", \"STARTweek_Time\", \"ENDweek_Time\",\n", + " \"STARTweek_stravaDATE_cast\", \"ENDweek_stravaDATE_cast\",\n", + " \"_GRID_JOIN_\", \"OBJECTID *\", \"Shape *\", \"OBJECTID\", \"Shape\"\n", + "]\n", + "\n", + "predictors = [\"SUM_total_trip_count\"] + [c for c in data.columns if c not in core_cols]\n", + "\n", + "# Coerce numerics (non-numeric -> NaN)\n", + "for c in predictors:\n", + " data[c] = pd.to_numeric(data[c], errors=\"coerce\")\n", + "\n", + "# y and X (minimal row filter: target + main predictor must exist)\n", + "y = pd.to_numeric(data[\"EcoCntr_weekly_SUM\"], errors=\"coerce\")\n", + "X = data[predictors].copy()\n", + "mask = (~y.isna()) & (~X[\"SUM_total_trip_count\"].isna())\n", + "X = X.loc[mask].copy()\n", + "y = y.loc[mask].copy()\n", + "\n", + "print(\"Rows after minimal filter:\", X.shape[0])\n", + "print(\"Predictor count (incl. Strava):\", len(predictors))" + ] + }, + { + "cell_type": "markdown", + "id": "0588a328", + "metadata": {}, + "source": [ + "## 3) Drop very sparse columns (>80% NaN)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "9e5b3b76", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Predictors retained after sparsity filter: 228\n" + ] + } + ], + "source": [ + "# Compute NaN fraction per column, drop columns with >80% NaN\n", + "nan_frac = X.isna().mean()\n", + "keep_cols = nan_frac[nan_frac <= 0.80].index.tolist()\n", + "X = X[keep_cols].copy()\n", + "print(\"Predictors retained after sparsity filter:\", len(keep_cols))" + ] + }, + { + "cell_type": "markdown", + "id": "861533bd", + "metadata": {}, + "source": [ + "## 4) Train/test split + mean imputation (fit on train)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "0c16cf4d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train/Test shapes post-impute: (2701, 228) (676, 228)\n" + ] + } + ], + "source": [ + "# Split\n", + "X_train, X_test, y_train, y_test = train_test_split(\n", + " X, y, test_size=0.2, random_state=42\n", + ")\n", + "\n", + "# Imputer fit on train only (no leakage)\n", + "imputer = SimpleImputer(strategy=\"mean\")\n", + "X_train_imp = pd.DataFrame(imputer.fit_transform(X_train), columns=X_train.columns, index=X_train.index)\n", + "X_test_imp = pd.DataFrame(imputer.transform(X_test), columns=X_test.columns, index=X_test.index)\n", + "\n", + "print(\"Train/Test shapes post-impute:\", X_train_imp.shape, X_test_imp.shape)" + ] + }, + { + "cell_type": "markdown", + "id": "42e1260b", + "metadata": {}, + "source": [ + "## 5) Remove constant and duplicate columns (reduce multicollinearity)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "cea1af06", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Predictors retained after collinearity filter: 222\n" + ] + } + ], + "source": [ + "# Drop constant columns\n", + "nonconst_cols = X_train_imp.columns[X_train_imp.nunique() > 1]\n", + "X_train_imp = X_train_imp[nonconst_cols]\n", + "X_test_imp = X_test_imp[nonconst_cols]\n", + "\n", + "# Drop duplicate columns\n", + "X_train_imp = X_train_imp.loc[:, ~X_train_imp.T.duplicated()]\n", + "# Align test to train columns\n", + "X_test_imp = X_test_imp[X_train_imp.columns]\n", + "\n", + "print(f\"Predictors retained after collinearity filter: {len(X_train_imp.columns)}\")" + ] + }, + { + "cell_type": "markdown", + "id": "2cf54ae9", + "metadata": {}, + "source": [ + "## 6) Fit OLS (HC3) and evaluate" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "52df2448", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " OLS Regression Results \n", + "==============================================================================\n", + "Dep. Variable: EcoCntr_weekly_SUM R-squared: 0.490\n", + "Model: OLS Adj. R-squared: 0.487\n", + "Method: Least Squares F-statistic: 728.0\n", + "Date: Wed, 06 Aug 2025 Prob (F-statistic): 0.00\n", + "Time: 01:24:50 Log-Likelihood: -23860.\n", + "No. Observations: 2701 AIC: 4.775e+04\n", + "Df Residuals: 2687 BIC: 4.783e+04\n", + "Df Model: 13 \n", + "Covariance Type: HC3 \n", + "=========================================================================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "-------------------------------------------------------------------------------------------------------------------------\n", + "const -1.067e-07 2.08e-08 -5.120 0.000 -1.47e-07 -6.58e-08\n", + "SUM_total_trip_count 0.1611 0.007 21.878 0.000 0.147 0.175\n", + "SOURCE_ID 0.0500 0.010 5.182 0.000 0.031 0.069\n", + "SqMeters -0.0522 0.010 -5.123 0.000 -0.072 -0.032\n", + "Slope_10m_MEAN 0.0005 4.53e-05 12.087 0.000 0.000 0.001\n", + "TIMESTEP_stravaDATE_cast -0.0029 0.002 -1.624 0.104 -0.006 0.001\n", + "SUM_EcoCounter_WeeklyAggregation 0.3718 0.024 15.437 0.000 0.325 0.419\n", + "SUM_total_trip_count_cov -0.0464 0.007 -6.723 0.000 -0.060 -0.033\n", + "SUM_ride_count -0.0433 0.008 -5.682 0.000 -0.058 -0.028\n", + "SUM_forward_people_count 0.0029 0.006 0.496 0.620 -0.009 0.015\n", + "SUM_reverse_people_count -0.0662 0.007 -8.985 0.000 -0.081 -0.052\n", + "SUM_forward_commute_trip_count -0.0079 0.000 -25.272 0.000 -0.009 -0.007\n", + "SUM_reverse_commute_trip_count 0.0022 0.000 4.860 0.000 0.001 0.003\n", + "SUM_forward_leisure_trip_count 0.0282 0.009 3.297 0.001 0.011 0.045\n", + "SUM_reverse_leisure_trip_count -0.0674 0.007 -9.160 0.000 -0.082 -0.053\n", + "SUM_ebike_ride_count -0.0054 0.001 -3.631 0.000 -0.008 -0.002\n", + "SUM_forward_morning_trip_count 0.0325 0.007 4.525 0.000 0.018 0.047\n", + "SUM_reverse_morning_trip_count 0.0326 0.007 4.723 0.000 0.019 0.046\n", + "SUM_forward_midday_trip_count -0.0319 0.005 -6.164 0.000 -0.042 -0.022\n", + "SUM_reverse_midday_trip_count -0.0594 0.015 -3.939 0.000 -0.089 -0.030\n", + "SUM_forward_evening_trip_count 0.0128 0.005 2.817 0.005 0.004 0.022\n", + "SUM_reverse_evening_trip_count -0.0372 0.003 -12.670 0.000 -0.043 -0.031\n", + "SUM_forward_male_people_count 0.0012 0.003 0.420 0.674 -0.004 0.007\n", + "SUM_reverse_male_people_count -0.0474 0.011 -4.500 0.000 -0.068 -0.027\n", + "SUM_forward_female_people_count -0.0008 0.005 -0.142 0.887 -0.011 0.010\n", + "SUM_reverse_female_people_count -0.0254 0.004 -7.155 0.000 -0.032 -0.018\n", + "SUM_forward_18_34_people_count 0.0094 0.002 5.163 0.000 0.006 0.013\n", + "SUM_reverse_18_34_people_count -0.0167 0.006 -2.963 0.003 -0.028 -0.006\n", + "SUM_forward_35_54_people_count 0.0043 0.005 0.861 0.389 -0.005 0.014\n", + "SUM_reverse_35_54_people_count -0.0275 0.002 -11.729 0.000 -0.032 -0.023\n", + "SUM_forward_55_64_people_count -0.0063 0.002 -3.272 0.001 -0.010 -0.003\n", + "SUM_reverse_55_64_people_count -0.0133 0.001 -10.092 0.000 -0.016 -0.011\n", + "MAX_max_temp_f 0.0028 0.001 5.306 0.000 0.002 0.004\n", + "MIN_min_temp_f 0.0044 0.001 7.766 0.000 0.003 0.005\n", + "MAX_max_dewpoint_f 0.0025 0.000 4.929 0.000 0.001 0.003\n", + "MIN_min_dewpoint_f 0.0043 0.001 8.097 0.000 0.003 0.005\n", + "SUM_precip_in -0.0001 2.97e-05 -4.149 0.000 -0.000 -6.49e-05\n", + "MEAN_avg_wind_speed_kts -0.0002 2.04e-05 -10.551 0.000 -0.000 -0.000\n", + "MEAN_avg_wind_drct -0.0049 0.001 -5.282 0.000 -0.007 -0.003\n", + "MIN_min_rh 0.0016 8.54e-05 18.824 0.000 0.001 0.002\n", + "MEAN_avg_rh 0.0002 0.000 1.424 0.154 -9.22e-05 0.001\n", + "MAX_max_rh -0.0003 1.96e-05 -13.128 0.000 -0.000 -0.000\n", + "MIN_min_feel 0.0050 0.001 7.347 0.000 0.004 0.006\n", + "MEAN_avg_feel 0.0043 0.001 5.461 0.000 0.003 0.006\n", + "MAX_max_feel 0.0035 0.001 5.687 0.000 0.002 0.005\n", + "MAX_max_wind_speed_kts -0.0006 0.000 -6.289 0.000 -0.001 -0.000\n", + "MAX_max_wind_gust_kts -0.0008 0.000 -6.353 0.000 -0.001 -0.001\n", + "MAX_climo_high_f 0.0036 0.001 5.599 0.000 0.002 0.005\n", + "MIN_climo_low_f 0.0035 0.001 5.947 0.000 0.002 0.005\n", + "SUM_climo_precip_in 3.829e-05 2.75e-06 13.917 0.000 3.29e-05 4.37e-05\n", + "COUNT -0.0003 0.001 -0.385 0.700 -0.002 0.001\n", + "MEAN_forward_average_speed_meters_per_second -0.0002 1.01e-05 -16.697 0.000 -0.000 -0.000\n", + "MEAN_reverse_average_speed_meters_per_second -0.0002 1.62e-05 -10.649 0.000 -0.000 -0.000\n", + "SUM_forward_overnight_trip_count 0.0090 0.002 4.356 0.000 0.005 0.013\n", + "SUM_reverse_overnight_trip_count -0.0040 0.001 -3.465 0.001 -0.006 -0.002\n", + "SUM_forward_unspecified_people_count 0.0016 0.000 10.237 0.000 0.001 0.002\n", + "SUM_reverse_unspecified_people_count 0.0006 0.000 2.945 0.003 0.000 0.001\n", + "SUM_forward_65_plus_people_count -0.0079 0.001 -7.280 0.000 -0.010 -0.006\n", + "SUM_reverse_65_plus_people_count -0.0019 0.000 -4.503 0.000 -0.003 -0.001\n", + "Slope MAXpct 0.0007 0.000 6.148 0.000 0.000 0.001\n", + "HEX Area ACRES -1.289e-05 2.52e-06 -5.123 0.000 -1.78e-05 -7.96e-06\n", + "Count LC Polys 2023 3.505e-05 0.000 0.281 0.779 -0.000 0.000\n", + "Minority LandClass Pct -0.0009 0.000 -2.443 0.015 -0.002 -0.000\n", + "Majority LandClass Pct -0.0015 0.000 -3.325 0.001 -0.002 -0.001\n", + "Replica OSMfeature COUNT 0.0011 0.001 1.149 0.250 -0.001 0.003\n", + "SUM_AADT_replicaOSM -0.0040 0.002 -2.365 0.018 -0.007 -0.001\n", + "MEAN_MPH_replicaOSM -0.0003 0.000 -1.160 0.246 -0.001 0.000\n", + "pMEAN_length 0.0029 0.001 2.290 0.022 0.000 0.005\n", + "MINOR RoadClass Pct 0.0005 0.000 3.940 0.000 0.000 0.001\n", + "MAJOR RoadClass Pct 0.0006 0.000 3.976 0.000 0.000 0.001\n", + "Topo Rough Index MEAN 0.0002 1.44e-05 12.755 0.000 0.000 0.000\n", + "Topo Rough Index MEDIAN 0.0002 1.21e-05 12.434 0.000 0.000 0.000\n", + "latWGS84 1.158e-07 2.3e-08 5.040 0.000 7.08e-08 1.61e-07\n", + "longWGS84 1.038e-05 2.06e-06 5.051 0.000 6.35e-06 1.44e-05\n", + "UTMnad83z15_E -0.0065 0.012 -0.556 0.579 -0.029 0.016\n", + "UTMnad83z15_N 0.0134 0.003 4.989 0.000 0.008 0.019\n", + "AADT 2023 ArDOT sum 0.0355 0.008 4.176 0.000 0.019 0.052\n", + "AADT mean 2023 ArDOT -0.0112 0.008 -1.450 0.147 -0.026 0.004\n", + "ArDOT Sum Lgth 2023 -0.0418 0.006 -7.199 0.000 -0.053 -0.030\n", + "Dist2Park Meters 0.0588 0.005 10.875 0.000 0.048 0.069\n", + "Distance to K12 Meters 0.0026 0.019 0.142 0.887 -0.034 0.039\n", + "Meters from Transit Stop -0.0254 0.014 -1.875 0.061 -0.052 0.001\n", + "Sum of Sidewalks Meters -0.0744 0.016 -4.643 0.000 -0.106 -0.043\n", + "Join_Count -0.0002 1.51e-05 -14.565 0.000 -0.000 -0.000\n", + "TAZ_ID 0.0224 0.003 7.463 0.000 0.017 0.028\n", + "COUNTY -0.0031 0.001 -4.777 0.000 -0.004 -0.002\n", + "2024 Median Household Income -0.1123 0.010 -11.597 0.000 -0.131 -0.093\n", + "2024 Median Household Income: Index -0.0001 1.07e-05 -13.247 0.000 -0.000 -0.000\n", + "2029 Median Household Income 0.0685 0.009 7.676 0.000 0.051 0.086\n", + "2029 Median Household Income: Index 4.195e-05 7.79e-06 5.387 0.000 2.67e-05 5.72e-05\n", + "2022 Median HH Income (ACS 5-Yr) 0.0350 0.007 5.234 0.000 0.022 0.048\n", + "2024 Diversity Index -0.0004 0.000 -1.700 0.089 -0.001 6.52e-05\n", + "2024 White Population 0.0200 0.009 2.195 0.028 0.002 0.038\n", + "2024 White Population: Percent 0.0002 0.000 1.181 0.238 -0.000 0.001\n", + "2024 Black Population -0.0005 0.000 -1.631 0.103 -0.001 0.000\n", + "2024 Black Population: Percent -8.206e-05 2.38e-05 -3.442 0.001 -0.000 -3.53e-05\n", + "2024 American Indian Population 0.0002 0.000 1.371 0.170 -7.37e-05 0.000\n", + "2024 American Indian Population: Percent -2.874e-05 9.18e-06 -3.131 0.002 -4.67e-05 -1.08e-05\n", + "2024 Asian Population 0.0045 0.001 7.999 0.000 0.003 0.006\n", + "2024 Asian Population: Percent 0.0005 0.000 1.978 0.048 4.35e-06 0.001\n", + "2024 Pacific Islander Population 0.0005 0.000 3.689 0.000 0.000 0.001\n", + "2024 Pacific Islander Population: Percent -6.206e-05 2.18e-05 -2.845 0.004 -0.000 -1.93e-05\n", + "2024 Other Race Population -0.0006 0.001 -0.403 0.687 -0.003 0.002\n", + "2024 Other Race Population: Percent -0.0003 0.000 -3.114 0.002 -0.001 -0.000\n", + "2024 Population of 2+ Races 0.0009 0.001 1.032 0.302 -0.001 0.002\n", + "2024 Population of 2+ Races: Percent -0.0002 5.62e-05 -4.139 0.000 -0.000 -0.000\n", + "2010 Diversity Index -0.0007 0.000 -2.833 0.005 -0.001 -0.000\n", + "2022 Race: American Indian (ACS 5-Yr) 0.0009 5.7e-05 15.298 0.000 0.001 0.001\n", + "2022 Race: American Indian (ACS 5-Yr): Percent 5.334e-05 9.72e-06 5.488 0.000 3.43e-05 7.24e-05\n", + "2022 Race: Asian (ACS 5-Yr) 0.0042 0.000 11.331 0.000 0.003 0.005\n", + "2022 Race: Asian (ACS 5-Yr): Percent 0.0006 0.000 4.535 0.000 0.000 0.001\n", + "2022 Race: Native Hawaiian (ACS 5-Yr) -0.0003 3.57e-05 -7.484 0.000 -0.000 -0.000\n", + "2022 Race: Native Hawaiian (ACS 5-Yr): Percent -0.0001 1.57e-05 -7.033 0.000 -0.000 -7.97e-05\n", + "2022 Race: Other (ACS 5-Yr) -0.0094 0.001 -10.669 0.000 -0.011 -0.008\n", + "2022 Race: Other (ACS 5-Yr): Percent -0.0005 5.07e-05 -10.084 0.000 -0.001 -0.000\n", + "2022 Race: Two or More (ACS 5-Yr) -0.0087 0.001 -10.991 0.000 -0.010 -0.007\n", + "2022 Race: Two or More (ACS 5-Yr): Percent -0.0010 0.000 -6.108 0.000 -0.001 -0.001\n", + "2029 White Population 0.0301 0.009 3.277 0.001 0.012 0.048\n", + "2029 White Population: Percent 0.0003 0.000 1.402 0.161 -0.000 0.001\n", + "2029 Black Population -0.0002 0.000 -0.574 0.566 -0.001 0.000\n", + "2029 Black Population: Percent -6.762e-05 2.05e-05 -3.293 0.001 -0.000 -2.74e-05\n", + "2029 American Indian Population 0.0003 0.000 2.142 0.032 2.28e-05 0.001\n", + "2029 American Indian Population: Percent -2.951e-05 9.15e-06 -3.225 0.001 -4.74e-05 -1.16e-05\n", + "2029 Asian Population 0.0060 0.001 9.259 0.000 0.005 0.007\n", + "2029 Asian Population: Percent 0.0005 0.000 1.982 0.047 5.64e-06 0.001\n", + "2029 Pacific Islander Population 0.0006 0.000 3.992 0.000 0.000 0.001\n", + "2029 Pacific Islander Population: Percent -4.424e-05 1.77e-05 -2.492 0.013 -7.9e-05 -9.45e-06\n", + "2029 Other Race Population 9.816e-05 0.002 0.059 0.953 -0.003 0.003\n", + "2029 Other Race Population: Percent -0.0004 0.000 -3.131 0.002 -0.001 -0.000\n", + "2029 Diversity Index -0.0004 0.000 -1.721 0.085 -0.001 6.06e-05\n", + "2022 Pop 25+: HS Diploma (ACS 5-Yr) -0.0053 0.001 -10.078 0.000 -0.006 -0.004\n", + "2022 Pop 25+: HS Diploma (ACS 5-Yr): Percent -0.0008 0.000 -7.762 0.000 -0.001 -0.001\n", + "2022 Pop 25+: Some College (ACS 5-Yr) -0.0061 0.002 -3.610 0.000 -0.009 -0.003\n", + "2022 Pop 25+: Some College (ACS 5-Yr): Percent -0.0007 3.23e-05 -21.982 0.000 -0.001 -0.001\n", + "2022 Pop 25+: Assoc Degree (ACS 5-Yr) 0.0028 0.001 3.665 0.000 0.001 0.004\n", + "2022 Pop 25+: Assoc Degree (ACS 5-Yr): Percent 0.0003 2.84e-05 10.858 0.000 0.000 0.000\n", + "2022 Pop 25+: Bach Degree (ACS 5-Yr) 0.0100 0.005 2.091 0.037 0.001 0.019\n", + "2022 Pop 25+: Bach Degree (ACS 5-Yr): Percent 0.0010 0.000 5.080 0.000 0.001 0.001\n", + "2022 Pop 25+: Master`s Deg (ACS 5-Yr) 0.0046 0.001 3.271 0.001 0.002 0.007\n", + "2022 Pop 25+: Master`s Deg (ACS 5-Yr): Percent 0.0003 0.000 1.659 0.097 -5.24e-05 0.001\n", + "2022 Pop 25+: Prof Sch Deg (ACS 5-Yr) 0.0013 0.000 3.563 0.000 0.001 0.002\n", + "2022 Pop 25+: Prof Sch Deg (ACS 5-Yr): Percent 0.0001 3.19e-05 3.504 0.000 4.93e-05 0.000\n", + "2022 Pop 25+: Doctorate (ACS 5-Yr) -0.0015 0.000 -3.668 0.000 -0.002 -0.001\n", + "2022 Pop 25+: Doctorate (ACS 5-Yr): Percent -0.0001 3.06e-05 -3.597 0.000 -0.000 -5.01e-05\n", + "2024 Pop Age 25+: High School Diploma -0.0032 0.001 -4.942 0.000 -0.004 -0.002\n", + "2024 Pop Age 25+: High School Diploma: Percent -0.0008 0.000 -7.901 0.000 -0.001 -0.001\n", + "2024 Pop Age 25+: GED -0.0018 0.000 -9.533 0.000 -0.002 -0.001\n", + "2024 Pop Age 25+: GED: Percent -0.0002 3.87e-05 -5.659 0.000 -0.000 -0.000\n", + "2020 Total Population 0.0100 0.010 0.961 0.337 -0.010 0.030\n", + "2024 Total Population 0.0250 0.009 2.653 0.008 0.007 0.043\n", + "2024 Population Density -0.0030 0.014 -0.209 0.835 -0.031 0.025\n", + "2022 Civilian Pop 18+: Veteran (ACS 5-Yr) 0.0008 0.001 0.956 0.339 -0.001 0.002\n", + "2022 Civilian Pop 18+: Veteran (ACS 5-Yr): Percent 0.0001 1.01e-05 11.670 0.000 9.82e-05 0.000\n", + "2022 Civilian Pop 18+: Nonveteran (ACS 5-Yr) 0.0055 0.009 0.584 0.559 -0.013 0.024\n", + "2022 Civilian Pop 18+: Nonveteran (ACS 5-Yr): Percent -0.0003 0.000 -2.744 0.006 -0.001 -8.6e-05\n", + "2022 Workers 16+: Bicycle (ACS 5-Yr) -0.0004 8.63e-05 -4.275 0.000 -0.001 -0.000\n", + "2022 Workers 16+: Bicycle (ACS 5-Yr): Percent -4.304e-05 7.88e-06 -5.463 0.000 -5.85e-05 -2.76e-05\n", + "2022 Workers 16+: Walked (ACS 5-Yr) -0.0003 0.000 -2.491 0.013 -0.001 -6.1e-05\n", + "2022 Workers 16+: Walked (ACS 5-Yr): Percent 0.0001 6.01e-05 2.303 0.021 2.06e-05 0.000\n", + "2022 Commute to Work: 15-19 Min (ACS 5-Yr) 0.0035 0.001 2.841 0.005 0.001 0.006\n", + "2022 Commute to Work: 15-19 Min (ACS 5-Yr): Percent 0.0019 0.000 5.498 0.000 0.001 0.003\n", + "2022 Commute to Work: 10-14 Min (ACS 5-Yr) -0.0027 0.001 -2.609 0.009 -0.005 -0.001\n", + "2022 Commute to Work: 10-14 Min (ACS 5-Yr): Percent -0.0004 7.02e-05 -6.354 0.000 -0.001 -0.000\n", + "2022 Commute to Work: 5-9 Min (ACS 5-Yr) 0.0032 0.000 7.451 0.000 0.002 0.004\n", + "2022 Commute to Work: 5-9 Min (ACS 5-Yr): Percent 0.0007 5.79e-05 11.582 0.000 0.001 0.001\n", + "2022 Commute to Work: <5 Min (ACS 5-Yr) 0.0018 0.000 3.953 0.000 0.001 0.003\n", + "2022 Commute to Work: <5 Min (ACS 5-Yr): Percent 0.0002 2.42e-05 6.585 0.000 0.000 0.000\n", + "2024 Median Age 0.0002 0.000 1.285 0.199 -8.91e-05 0.000\n", + "2024 Median Age: Index 0.0004 0.000 1.193 0.233 -0.000 0.001\n", + "2024 Senior Population 0.0082 0.003 2.821 0.005 0.003 0.014\n", + "2024 Senior Population: Percent 0.0007 0.000 3.431 0.001 0.000 0.001\n", + "2020 Multiple Races Pop 35-39 -0.0002 9.32e-05 -2.076 0.038 -0.000 -1.08e-05\n", + "2020 Multiple Races Pop 35-39: Percent -9.79e-05 5.74e-05 -1.707 0.088 -0.000 1.45e-05\n", + "2024 Population Age 0-4 0.0006 0.000 2.819 0.005 0.000 0.001\n", + "2024 Population Age 0-4: Percent -3.35e-06 7.67e-06 -0.437 0.662 -1.84e-05 1.17e-05\n", + "2022 Poverty Index (ACS 5-Yr) -0.0063 0.001 -8.417 0.000 -0.008 -0.005\n", + "2022 HHs: Inc Below Poverty Level (ACS 5-Yr) -0.0023 0.000 -8.973 0.000 -0.003 -0.002\n", + "2022 HHs: Inc Below Poverty Level (ACS 5-Yr): Percent -0.0008 9.41e-05 -8.427 0.000 -0.001 -0.001\n", + "2022 HHs w/Public Assist Income (ACS 5-Yr) 0.0007 7.24e-05 8.984 0.000 0.001 0.001\n", + "2022 HHs w/Public Assist Income (ACS 5-Yr): Percent 6.312e-05 1.06e-05 5.932 0.000 4.23e-05 8.4e-05\n", + "2022 Race: White (ACS 5-Yr) 0.0026 0.013 0.205 0.838 -0.022 0.027\n", + "2022 Race: White (ACS 5-Yr): Percent 0.0008 0.000 6.744 0.000 0.001 0.001\n", + "2022 Race: Black (ACS 5-Yr) 0.0016 0.001 2.950 0.003 0.001 0.003\n", + "2022 Race: Black (ACS 5-Yr): Percent -4.896e-05 2.02e-05 -2.419 0.016 -8.86e-05 -9.29e-06\n", + "Shape_Length -0.0003 5.43e-05 -5.120 0.000 -0.000 -0.000\n", + "Shape_Area -0.0522 0.010 -5.120 0.000 -0.072 -0.032\n", + "Spatial Component 1 -9.315e-07 2.79e-07 -3.339 0.001 -1.48e-06 -3.85e-07\n", + "Spatial Component 2 -1.181e-06 2.97e-07 -3.971 0.000 -1.76e-06 -5.98e-07\n", + "Spatial Component 3 4.284e-07 2.36e-07 1.816 0.069 -3.39e-08 8.91e-07\n", + "Spatial Component 4 -2.077e-07 7.64e-08 -2.719 0.007 -3.57e-07 -5.8e-08\n", + "Spatial Component 5 -7.931e-07 1.33e-07 -5.959 0.000 -1.05e-06 -5.32e-07\n", + "Spatial Component 6 4.589e-07 1.66e-07 2.772 0.006 1.34e-07 7.83e-07\n", + "Spatial Component 7 -6.213e-07 1.75e-07 -3.547 0.000 -9.65e-07 -2.78e-07\n", + "Spatial Component 8 -1.232e-07 1.06e-07 -1.163 0.245 -3.31e-07 8.44e-08\n", + "Spatial Component 9 -6.305e-07 3.04e-07 -2.074 0.038 -1.23e-06 -3.48e-08\n", + "Spatial Component 10 -1.622e-07 1.55e-07 -1.050 0.294 -4.65e-07 1.41e-07\n", + "Spatial Component 11 -9.687e-07 2.44e-07 -3.970 0.000 -1.45e-06 -4.9e-07\n", + "Spatial Component 12 1.875e-07 5.03e-08 3.726 0.000 8.89e-08 2.86e-07\n", + "Spatial Component 13 1.365e-07 1.93e-07 0.706 0.480 -2.43e-07 5.16e-07\n", + "Spatial Component 14 7.848e-07 3.26e-07 2.411 0.016 1.47e-07 1.42e-06\n", + "Spatial Component 15 -4.019e-07 6.54e-08 -6.150 0.000 -5.3e-07 -2.74e-07\n", + "Spatial Component 16 1.008e-06 1.53e-07 6.591 0.000 7.08e-07 1.31e-06\n", + "Spatial Component 17 -8.008e-07 1.9e-07 -4.204 0.000 -1.17e-06 -4.27e-07\n", + "Spatial Component 18 -3.013e-07 7.6e-08 -3.963 0.000 -4.5e-07 -1.52e-07\n", + "Spatial Component 19 5.633e-07 1.79e-07 3.151 0.002 2.13e-07 9.14e-07\n", + "Spatial Component 20 4.71e-07 1.43e-07 3.289 0.001 1.9e-07 7.52e-07\n", + "Spatial Component 21 -5.812e-07 2.98e-07 -1.952 0.051 -1.16e-06 2.3e-09\n", + "Spatial Component 22 -2.01e-08 1.7e-07 -0.118 0.906 -3.53e-07 3.12e-07\n", + "Spatial Component 23 -7.728e-07 2.29e-07 -3.379 0.001 -1.22e-06 -3.24e-07\n", + "Spatial Component 24 -2.029e-07 5.85e-08 -3.466 0.001 -3.18e-07 -8.82e-08\n", + "Spatial Component 25 1.582e-07 1.16e-07 1.368 0.171 -6.85e-08 3.85e-07\n", + "Spatial Component 26 1.051e-06 7.41e-08 14.177 0.000 9.05e-07 1.2e-06\n", + "Spatial Component 27 -1.277e-06 9.87e-08 -12.936 0.000 -1.47e-06 -1.08e-06\n", + "Spatial Component 28 1.739e-07 4.85e-08 3.584 0.000 7.88e-08 2.69e-07\n", + "Spatial Component 29 9.27e-07 2.5e-07 3.715 0.000 4.38e-07 1.42e-06\n", + "Spatial Component 30 -7.488e-07 1.01e-07 -7.444 0.000 -9.46e-07 -5.52e-07\n", + "Spatial Component 31 -9.83e-07 9.51e-08 -10.336 0.000 -1.17e-06 -7.97e-07\n", + "Spatial Component 32 4.068e-07 8.83e-08 4.609 0.000 2.34e-07 5.8e-07\n", + "Spatial Component 33 -7.583e-07 1.11e-07 -6.836 0.000 -9.76e-07 -5.41e-07\n", + "Spatial Component 34 -9.564e-08 3.7e-07 -0.259 0.796 -8.2e-07 6.29e-07\n", + "Spatial Component 35 1.196e-07 5.4e-08 2.214 0.027 1.37e-08 2.25e-07\n", + "Spatial Component 36 -8.537e-07 6.67e-08 -12.799 0.000 -9.84e-07 -7.23e-07\n", + "Spatial Component 37 3.215e-08 2.07e-07 0.155 0.877 -3.74e-07 4.39e-07\n", + "==============================================================================\n", + "Omnibus: 1973.578 Durbin-Watson: 1.888\n", + "Prob(Omnibus): 0.000 Jarque-Bera (JB): 90362.534\n", + "Skew: 2.957 Prob(JB): 0.00\n", + "Kurtosis: 30.712 Cond. No. 1.28e+22\n", + "==============================================================================\n", + "\n", + "Notes:\n", + "[1] Standard Errors are heteroscedasticity robust (HC3)\n", + "[2] The smallest eigenvalue is 2.8e-28. This might indicate that there are\n", + "strong multicollinearity problems or that the design matrix is singular.\n", + "{'rmse_test': np.float64(1419.9331418012075), 'r2_test': 0.5591267369016439}\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/srv/conda/envs/notebook/lib/python3.10/site-packages/statsmodels/base/model.py:1894: ValueWarning: covariance of constraints does not have full rank. The number of constraints is 222, but rank is 14\n", + " warnings.warn('covariance of constraints does not have full '\n" + ] + } + ], + "source": [ + "# Add constant\n", + "X_train_const = sm.add_constant(X_train_imp, has_constant=\"add\")\n", + "X_test_const = sm.add_constant(X_test_imp, has_constant=\"add\")\n", + "\n", + "# Fit OLS\n", + "model = sm.OLS(y_train, X_train_const).fit(cov_type=\"HC3\")\n", + "\n", + "# Predict & evaluate (manual RMSE for older sklearns)\n", + "y_pred = model.predict(X_test_const)\n", + "y_true = pd.Series(y_test).astype(float)\n", + "y_hat = pd.Series(y_pred).astype(float)\n", + "mask_eval = y_true.notna() & y_hat.notna()\n", + "y_true = y_true[mask_eval]\n", + "y_hat = y_hat[mask_eval]\n", + "\n", + "mse = mean_squared_error(y_true, y_hat)\n", + "rmse = np.sqrt(mse)\n", + "r2 = r2_score(y_true, y_hat)\n", + "\n", + "print(model.summary())\n", + "print({\"rmse_test\": rmse, \"r2_test\": r2})" + ] + }, + { + "cell_type": "markdown", + "id": "0b29cfc6", + "metadata": {}, + "source": [ + "## 7) Predict for all rows and export artifacts" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "d7dd45bb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(PosixPath('../processed_data/weekly_predictions_with_covariates.csv'),\n", + " PosixPath('../processed_data/model_metrics.txt'))" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from pathlib import Path\n", + "\n", + "# Impute all rows and apply same column filtering\n", + "X_all = data[[c for c in X.columns]].copy()\n", + "for c in X_all.columns:\n", + " X_all[c] = pd.to_numeric(X_all[c], errors=\"coerce\")\n", + "X_all_imp = pd.DataFrame(imputer.transform(X_all), columns=X_all.columns, index=X_all.index)\n", + "\n", + "# Apply same non-constant and duplicate filtering as train\n", + "X_all_imp = X_all_imp[X_train_imp.columns]\n", + "\n", + "X_all_const = sm.add_constant(X_all_imp, has_constant=\"add\")\n", + "pred_all = model.predict(X_all_const)\n", + "\n", + "out = data.copy()\n", + "out[\"predicted_eco_from_model\"] = pred_all\n", + "\n", + "# Save outputs\n", + "out_dir = Path(\"../processed_data\")\n", + "out_dir.mkdir(exist_ok=True)\n", + "pred_path = out_dir / \"weekly_predictions_with_covariates.csv\"\n", + "meta_path = out_dir / \"model_metrics.txt\"\n", + "\n", + "keep_cols = [\"week_id\", \"week_start\", \"EcoCntr_weekly_SUM\", \"SUM_total_trip_count\", \"predicted_eco_from_model\"]\n", + "for k in [\"GRID_ID\", \"GRID_ID.1\", \"HEXid_WeekID\", \"HEXid_weekID\"]:\n", + " if k in out.columns and k not in keep_cols:\n", + " keep_cols.append(k)\n", + "\n", + "out[keep_cols].to_csv(pred_path, index=False)\n", + "\n", + "with open(meta_path, \"w\") as f:\n", + " f.write(model.summary().as_text())\n", + " f.write(f\"\\nRMSE_test: {rmse:.4f}\\nR2_test: {r2:.4f}\\n\")\n", + "\n", + "pred_path, meta_path" + ] + }, + { + "cell_type": "markdown", + "id": "3c468876", + "metadata": {}, + "source": [ + "## 8) Quick diagnostic plot" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "438b4ae5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "PosixPath('../figures/obs_vs_pred_test.png')" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkcAAAHFCAYAAAD40125AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjUsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvWftoOwAAAAlwSFlzAAAPYQAAD2EBqD+naQAA6+ZJREFUeJzs3XmYXFWZ+PHvvXVr33rfks5KIIQtIQoERGRxWETGFRVFMQrMMCMioojjjOAI/HAcRXHDGVlGXBgcwGUwCoOikIQlELYsQNKddCe9L7Uvt+qe3x+VKnrvqt67836epx9I1a2qU7eq7n3vOe95j6aUUgghhBBCCAD02W6AEEIIIcRcIsGREEIIIcQAEhwJIYQQQgwgwZEQQgghxAASHAkhhBBCDCDBkRBCCCHEABIcCSGEEEIMIMGREEIIIcQAEhwJIYQQQgwgwZE4bGzdupUPfvCD1NfX43A4qKur4wMf+ABbtmwZtu2NN96Ipml0d3fPQktn17Jly7jssstmtQ3Nzc1omlb403WdyspKLrjgghE/r+lw2WWXsWzZskG3aZrGjTfeWNLzHDx4kBtvvJHt27dPWdvy7rnnHjRNo7m5ecqfuxiPPPJIyftjIm655RYefvjhaX+doeLxODfeeCN//vOfZ/y1xeyS4EgcFu644w5OO+00Wltb+cY3vsFjjz3GN7/5TQ4cOMDb3vY2vve97812E8UIPvOZz7Blyxb++te/cuutt/Liiy9y5pln8sILL8xKe7Zs2cKnP/3pkh5z8OBBbrrppmkJjmbbI488wk033TTtrzObwdFNN90kwdFhyJjtBggx3Z566imuueYaLrjgAh566CEM482v/Yc//GHe+9738tnPfpZ169Zx2mmnzWJLR5ZIJHC73bPdjFmxZMkSTjnlFABOO+00jjjiCM4++2x+8IMf8B//8R8jPiaRSOByudA0bcrbk2+LEGJhk54jseDdeuutaJrGD3/4w0GBEYBhGPzgBz9A0zT+3//7f8Me29LSwvve9z4CgQDBYJCPfexjdHV1Ddrm8ccf5x3veAeVlZW43W6WLFnC+9//fuLxeGGbdDrN17/+dVavXo3T6aS6uppPfvKTw55r2bJlXHjhhTz44IOsW7cOl8vFTTfdxLp16zj99NOHtS+bzbJo0SLe9773lfxapmnyxS9+kbq6OjweD29729t45plnxt2fpmlSU1PDpZdeOuy+/v5+3G431157LQCWZfH1r3+do446CrfbTVlZGccffzzf+c53xn2dkeSDk3379gFvDiv98Y9/ZOPGjVRXV+PxeEilUgDcf//9bNiwAa/Xi8/n49xzzx2x1+mee+7hqKOOwul0cvTRR/Nf//VfI77+SMNqBw4c4IorrqCxsRGHw0FDQwMf+MAH6Ojo4M9//jNvfetbAfjkJz9ZGCYc+BzPPfccF110ERUVFbhcLtatW8d///d/D3vtrVu3ctppp+FyuWhoaOCGG27ANM2S9+FUueyyy/j+978PMGgIND/Ep5TiBz/4AWvXrsXtdlNeXs4HPvAB9u7dO+h5XnjhBS688EJqampwOp00NDTwrne9i9bW1sJzx2Ix7r333sJrvOMd7xizbT/84Q854YQT8Pl8+P1+Vq9ezZe//OVB27S3t3PllVeyePFiHA4Hy5cv56abbiKTyQC5od3q6moAbrrppsJrz/aQs5ghSogFLJPJKI/Ho04++eQxtzvppJOUx+NRmUxGKaXUV7/6VQWopUuXqi984QvqD3/4g/rWt76lvF6vWrdunUqn00oppZqampTL5VLvfOc71cMPP6z+/Oc/q5/97Gfq0ksvVX19fUoppbLZrDrvvPOU1+tVN910k3r00UfVf/7nf6pFixapNWvWqHg8XmjH0qVLVX19vVqxYoW666671J/+9Cf1zDPPqO985zsKUK+99tqgdj/yyCMKUL/5zW9Kfq1PfOITStM09YUvfEH98Y9/VN/61rfUokWLVCAQUJ/4xCfG3F+f+9znlNvtVqFQaNDtP/jBDxSgXnrpJaWUUrfeequy2Wzqq1/9qvq///s/tWnTJnX77berG2+8ccznb2pqUoD6t3/7t0G3v/jiiwpQl1xyiVJKqbvvvlsBatGiReqKK65Qv//979WvfvUrlclk1M0336w0TVMbN25Uv/vd79SDDz6oNmzYoLxer3r11VcLz5l/jr/9279Vv/3tb9V9992njjjiCNXY2KiWLl066PUB9dWvfrXw79bWVlVfX6+qqqrUt771LfXYY4+p+++/X23cuFHt3LlThUKhwvN/5StfUVu2bFFbtmxRLS0tSimlHn/8ceVwONTpp5+u7r//frVp0yZ12WWXKUDdfffdhdd59dVXlcfjUWvWrFG/+MUv1K9//Wt17rnnqiVLlihANTU1jbk/p8Mbb7yhPvCBDyig8L62bNmiksmkUkqpyy+/XNntdvX5z39ebdq0Sf385z9Xq1evVrW1taq9vV0ppVQ0GlWVlZXqLW95i/rv//5v9cQTT6j7779f/d3f/Z3asWOHUkqpLVu2KLfbrS644ILCawz8/Ib6xS9+oQD1mc98Rv3xj39Ujz32mPrRj36krr766sI2bW1thc/3zjvvVI899pj613/9V+V0OtVll12mlFIqmUyqTZs2KUB96lOfKrz2G2+8MV27VMwhEhyJBa29vV0B6sMf/vCY233oQx9SgOro6FBKvRkcfe5znxu03c9+9jMFqPvuu08ppdSvfvUrBajt27eP+tz5g/X//M//DLr92WefVYD6wQ9+ULht6dKlymazqd27dw/atru7WzkcDvXlL3950O0XX3yxqq2tVaZplvRaO3fuHPP9jRccvfTSSwpQP/7xjwfdftJJJ6n169cX/n3hhReqtWvXjvlcI8kHR7fddpsyTVMlk0m1bds29da3vlUB6n//93+VUm8GNh//+McHPX7//v3KMAz1mc98ZtDtkUhE1dXVqYsvvlgplQsmGxoa1Iknnqgsyyps19zcrOx2+7jB0caNG5Xdbi+cyEeS3/cDg5281atXq3Xr1hU+v7wLL7xQ1dfXq2w2q5TKfT/dbnchqFAqF/ivXr161oIjpZT6h3/4BzXSNfaWLVsUoP793/990O0tLS3K7XarL37xi0oppZ577jkFqIcffnjM1/F6veN+J/P+8R//UZWVlY25zZVXXql8Pp/at2/foNu/+c1vKqAQfHV1dQ37zMXhQYbVhCA3BAAMy1P56Ec/OujfF198MYZh8Kc//QmAtWvX4nA4uOKKK7j33nuHDRkA/O53v6OsrIx3v/vdZDKZwt/atWupq6sblux5/PHHc+SRRw66rbKykne/+93ce++9WJYFQF9fH7/+9a/5+Mc/XhguLPa18u0f7f2N57jjjmP9+vXcfffdhdt27tzJM888w8aNGwu3nXTSSbz44otcddVV/OEPfyAcDo/73ANdf/312O12XC4X69evZ//+/dx5551ccMEFg7Z7//vfP+jff/jDH8hkMnz84x8ftB9cLhdnnHFGYT/s3r2bgwcPcskllwz67JcuXcqpp546bvt+//vfc+aZZ3L00UeX9L4A3njjDXbt2lX4DAa284ILLqCtrY3du3cDuc/r7LPPpra2tvB4m83Ghz70oXFfRyk16LlL+ctmsyW/L8h9DzVN42Mf+9ig56urq+OEE04o7P8jjjiC8vJyrr/+en70ox+xY8eOCb3eQCeddBL9/f185CMf4de//vWIM05/97vfceaZZ9LQ0DCofeeffz4ATzzxxKTbIeY3CY7EglZVVYXH46GpqWnM7Zqbm/F4PFRUVAy6va6ubtC/DcOgsrKSnp4eAFauXMljjz1GTU0N//AP/8DKlStZuXLloJyajo4O+vv7cTgc2O32QX/t7e3DDt719fUjtnHjxo0cOHCARx99FIBf/OIXpFKpQTkQxb5Wvv2jvb9ibNy4kS1btrBr1y4A7r77bpxOJx/5yEcK29xwww1885vfZOvWrZx//vlUVlZy9tln89xzzxX1Gp/97Gd59tln2bZtG3v27KGtrY0rrrhi2HZD91lHRwcAb33rW4fth/vvv3/c/TDabUN1dXWxePHiot7LUPk2XnfddcPaeNVVVwEMaudE2/jEE08Me/5i/84+++wJvzelFLW1tcOec+vWrYX3FQwGeeKJJ1i7di1f/vKXOeaYY2hoaOCrX/3qhPOpLr30Uu666y727dvH+9//fmpqajj55JMLv5t8+377298Oa9sxxxwDcFiW8BCDyWw1saDZbDbOPPNMNm3aRGtr64gnstbWVrZt28b555+PzWYbdF97ezuLFi0q/DuTydDT0zMogDj99NM5/fTTyWazPPfcc9xxxx1cc8011NbW8uEPf5iqqioqKyvZtGnTiG30+/2D/j3aLKtzzz2XhoYG7r77bs4991zuvvtuTj75ZNasWVPYptjXyrd/tPdXjI985CNce+213HPPPdx888389Kc/5T3veQ/l5eWFbQzD4Nprr+Xaa6+lv7+fxx57jC9/+cuce+65tLS04PF4xnyNxYsX85a3vGXctgzdZ1VVVQD86le/YunSpaM+buB+GGqk24aqrq4uJA6XKt/GG264YVBC/UBHHXVUoZ0TbeP69et59tlnJ9TGod/NYlVVVaFpGn/9619xOp3D7h9423HHHccvf/lLlFK89NJL3HPPPXzta1/D7XbzpS99aUKv/8lPfpJPfvKTxGIx/vKXv/DVr36VCy+8kNdee42lS5dSVVXF8ccfz8033zzi4xsaGib0umIBmd1RPSGm35NPPql0XVfvfve7CwnXeZlMRl144YVK13X11FNPFW4fL+fopz/96aiv19/frwD1hS98QSml1H333acAtXXr1nHbunTpUvWud71r1Puvv/565XQ61V/+8hcFqDvvvHPQ/cW+1o4dOyaVc5T3oQ99SNXX16uHH35YAeoPf/jDuI+5/fbbB+V1jGS0hOyh8jlHzz777LDHG4ahbrvttjEfn81mVX19vVq/fv2kco527do16mvk87MG5pblrVq1Sl1wwQVjtlGpuZtzdO211ypgUKK/UrnfHKDuv//+CT1vWVmZ+uAHP1j4d0VFRSFPbCLy3898rtqnP/1p1dDQoHp7e8d8XDgcVkAhR0ocPqTnSCx4p512GrfffjvXXHMNb3vb2/jHf/xHlixZwv79+/n+97/P008/ze233z5ijsmDDz6IYRi8853v5NVXX+Wf//mfOeGEE7j44osB+NGPfsTjjz/Ou971LpYsWUIymeSuu+4C4JxzzgFytZR+9rOfccEFF/DZz36Wk046CbvdTmtrK3/605/427/9W9773vcW9V42btzIbbfdxiWXXILb7R6Wc1Lsax199NF87GMf4/bbb8dut3POOefwyiuv8M1vfpNAIFD0vt24cSP3338///iP/8jixYsL7znv3e9+N8ceeyxvectbqK6uZt++fdx+++0sXbqUVatWFf06pVq2bBlf+9rX+Kd/+if27t3LeeedR3l5OR0dHTzzzDN4vV5uuukmdF3nX//1X/n0pz/Ne9/7Xi6//HL6+/u58cYbixqy+trXvsbvf/973v72t/PlL3+Z4447jv7+fjZt2sS1117L6tWrWblyJW63m5/97GccffTR+Hw+GhoaaGho4M477+T888/n3HPP5bLLLmPRokX09vayc+dOnn/+eR544AEAvvKVr/Cb3/yGs846i3/5l3/B4/Hw/e9/n1gsNm37sBjHHXccALfddluh5/X444/ntNNO44orruCTn/wkzz33HG9/+9vxer20tbXx5JNPctxxx/H3f//3/O53v+MHP/gB73nPe1ixYgVKKR588EH6+/t55zvfOeh1/vznP/Pb3/6W+vp6/H5/oVdtqMsvvxy3281pp51GfX097e3t3HrrrQSDwUJZha997Ws8+uijnHrqqVx99dUcddRRJJNJmpubeeSRR/jRj37E4sWL8fv9LF26lF//+tecffbZVFRUUFVVNaxyuliAZjs6E2KmbNmyRX3gAx9QtbW1yjAMVVNTo973vvepzZs3D9s233O0bds29e53v1v5fD7l9/vVRz7ykcKMtvxzvve971VLly5VTqdTVVZWqjPOOKMwtT7PNE31zW9+U51wwgnK5XIpn8+nVq9era688kr1+uuvF7Ybr+dIKaVOPfVUBaiPfvSjI95f7GulUin1+c9/XtXU1CiXy6VOOeUUtWXLFrV06dKie46y2axqbGxUgPqnf/qnYff/+7//uzr11FNVVVWVcjgcasmSJepTn/qUam5uHvN5J9tzlPfwww+rM888UwUCAeV0OtXSpUvVBz7wAfXYY48N2u4///M/1apVq5TD4VBHHnmkuuuuu9QnPvGJcXuOlMrNwNq4caOqq6tTdrtdNTQ0qIsvvnjQ9+QXv/iFWr16tbLb7cOe48UXX1QXX3yxqqmpUXa7XdXV1amzzjpL/ehHPxr0Ok899ZQ65ZRTlNPpVHV1deoLX/iC+vGPfzyrPUepVEp9+tOfVtXV1UrTtGFtueuuu9TJJ5+svF6vcrvdauXKlerjH/+4eu6555RSSu3atUt95CMfUStXrlRut1sFg0F10kknqXvuuWfQ62zfvl2ddtppyuPxKECdccYZo7bp3nvvVWeeeaaqra1VDoej8Hnky0vkdXV1qauvvlotX75c2e12VVFRodavX6/+6Z/+SUWj0cJ2jz32mFq3bp1yOp0l9aqK+U1T6tA0HSGEEEIIIbPVhBBCCCEGkuBICCGEEGIACY6EEEIIIQaQ4EgIIYQQYgAJjoQQQgghBpDgSAghhBBiACkCWSTLsjh48CB+v3/U5R2EEEIIMbcopYhEIjQ0NKDrxfUJSXBUpIMHD9LY2DjbzRBCCCHEBLS0tBS9ULQER0XKL8DY0tJS0vIKQgghhJg94XCYxsbGkhZSluCoSPmhtEAgIMGREEIIMc+UkhIjCdlCCCGEEANIcCSEEEIIMYAER0IIIYQQA0hwJIQQQggxgARHQgghhBADSHAkhBBCCDGABEdCCCGEEANIcCSEEEIIMYAER0IIIYQQA0iFbCGEEPOOUorOSIpEOovbYaPG75RFwcWUkeBICCHEvNLSG2fL3h6au2OkMhZOQ2dZlZcNKypprPDMdvPEAiDBkRBCiHmjpTfOQy+00hc3qQ+6cdttJMwsu9rCtIcSvHfdYgmQxKRJzpEQQoh5QSnFlr099MVNjqj24XMa2HQNn9NgZbWP/rjJlr09KKVmu6linpPgSAghxLzQGUnR3B2jPugell+kaRq1ARfN3TE6I6lZaqFYKCQ4EkIIMS8k0llSGQu33Tbi/R6HQSpjkUhnZ7hlYqGR4EgIIcS84HbYcBo6CXPk4CeezuA0dNyOkYMnIYolwZEQQoh5ocbvZFmVl/ZQYlhekVKKjnCSZVVeavzOWWqhWCgkOBJCCDEvaJrGhhWVlHns7OmKEkmaZC1FJGmypytKmcfOhhWVUu9ITJpM5RdCCDFvNFZ4eO+6xYU6R52RFE5DZ3V9QOociSkjwZEQQoh5pbHCw+Jyt1TIFtNGgiMhhBDzTn7qvhDTQXKOhBBCCCEGkOBICCGEEGIACY6EEEIIIQaQ4EgIIYQQYgAJjoQQQgghBpDgSAghhBBiAAmOhBBCCCEGkOBICCGEEGIACY6EEEIIIQaQ4EgIIYQQYgAJjoQQQgghBpDgSAghhBBiAAmOhBBCCCEGkOBICCGEEGIACY6EEEIIIQaQ4EgIIYQQYgAJjoQQQgghBpDgSAghhBBiAAmOhBBCCCEGMGa7AUIIIRY2pRSdkRSJdBa3w0aN34mmabPdLCFGJcGREEKIadPSG2fL3h6au2OkMhZOQ2dZlZcNKypprPDMdvOEGJEER0IIIaZFS2+ch15opS9uUh9047bbSJhZdrWFaQ8leO+6xRIgiTlJco6EEEJMOaUUW/b20Bc3OaLah89pYNM1fE6DldU++uMmW/b2oJSa7aYKMYwER0IIIaZcZyRFc3eM+qB7xPwij8PGi/v7efVgWAIkMefIsJoQQogpl0hnSWUs3HbboNt7Y2n2dkXpiqbojaUBOGFJmeQgiTlFeo6EEEJMObfDhtPQSZjZwm29sTTb9/fRHkpi6BoVXgcVPge72sI89EIrLb3xWWyxEG+S4EgIIcSUq/E7WVblpT2UQCmFUoq9XVHi6SxVfgepjEW130ld0CU5SORytDrCSZq7Y3SEk4ftfpgrZFhNCCHElNM0jQ0rKmkPJdjTFcXjsNEVTeG063RH03gcNlZW+dDQQIPagIvm7hidkRS1AddsN39GSbmDuUd6joQQQkyLxgoP7123mNX1AfpiJr2xNBlLURd0sa6xnHKvo7Ctx2GQylgk0tkxnnHhyZc72NkWpszjYFmllzKPDDXONuk5EkIIMW0aKzwsLnezpj4AQIXPQV3QlesxGiCezuA0dNwO20hPsyANLXeQn9WXL3ewpyvKlr09LC4fecafmD7ScySEEGJaaZrGMQ0BTlhSRiyVgSHpNPl8m2VVXmr8ztlp5CwYq9yBpmmDhhrFzJLgSAghxLTL5yCVeezs6YoSSZpkLUUkabKnK0qZx86GFZWHVQ/JaOUO8g7Xoca5QIIjIYQQM2JgDlIoYdLcEyOUMFldHzgslxIZqdzBQIfjUONcITlHQgghZkw+B6kzkiKRzuJ22KjxOw+rHqO8fLmDXW1hVg7IOYI3hxpX1wcOq6HGuUKCIyGEEDMqn09zuBta7qA24MLjMIinM3SEk4flUONcIcGREEIIMUvyQ435OkedkRROQ2d1fUDqHM0iCY6EEEKIWSRDjXOPBEdCCCHELJOhxrllVmerZTIZvvKVr7B8+XLcbjcrVqzga1/7GpZlFbZRSnHjjTfS0NCA2+3mHe94B6+++uqg50mlUnzmM5+hqqoKr9fLRRddRGtr66Bt+vr6uPTSSwkGgwSDQS699FL6+/tn4m0KIYQQYh6Z1eDotttu40c/+hHf+9732LlzJ9/4xjf4t3/7N+64447CNt/4xjf41re+xfe+9z2effZZ6urqeOc730kkEilsc8011/DQQw/xy1/+kieffJJoNMqFF15INvvm9MhLLrmE7du3s2nTJjZt2sT27du59NJLZ/T9CiGEEGLu09QsLv174YUXUltby09+8pPCbe9///vxeDz89Kc/RSlFQ0MD11xzDddffz2Q6yWqra3ltttu48orryQUClFdXc1Pf/pTPvShDwFw8OBBGhsbeeSRRzj33HPZuXMna9asYevWrZx88skAbN26lQ0bNrBr1y6OOuqocdsaDocJBoOEQiECgcA07A0hhBBCTLWJnL9ntefobW97G//3f//Ha6+9BsCLL77Ik08+yQUXXABAU1MT7e3t/M3f/E3hMU6nkzPOOIPNmzcDsG3bNkzTHLRNQ0MDxx57bGGbLVu2EAwGC4ERwCmnnEIwGCxsM1QqlSIcDg/6E0IIIcTCN6sJ2ddffz2hUIjVq1djs9nIZrPcfPPNfOQjHwGgvb0dgNra2kGPq62tZd++fYVtHA4H5eXlw7bJP769vZ2ampphr19TU1PYZqhbb72Vm266aXJvUAghhBDzzqz2HN1///3cd999/PznP+f555/n3nvv5Zvf/Cb33nvvoO2GTmdUSo07xXHoNiNtP9bz3HDDDYRCocJfS0tLsW9LCCGEEPPYrPYcfeELX+BLX/oSH/7whwE47rjj2LdvH7feeiuf+MQnqKurA3I9P/X19YXHdXZ2FnqT6urqSKfT9PX1Deo96uzs5NRTTy1s09HRMez1u7q6hvVK5TmdTpxOKdkuhBBCHG5mtecoHo+j64ObYLPZClP5ly9fTl1dHY8++mjh/nQ6zRNPPFEIfNavX4/dbh+0TVtbG6+88kphmw0bNhAKhXjmmWcK2zz99NOEQqHCNkIIIYQQMMs9R+9+97u5+eabWbJkCccccwwvvPAC3/rWt9i4cSOQGwq75ppruOWWW1i1ahWrVq3illtuwePxcMkllwAQDAb51Kc+xec//3kqKyupqKjguuuu47jjjuOcc84B4Oijj+a8887j8ssv58477wTgiiuu4MILLyxqppoQQgghDh+zGhzdcccd/PM//zNXXXUVnZ2dNDQ0cOWVV/Iv//IvhW2++MUvkkgkuOqqq+jr6+Pkk0/mj3/8I36/v7DNt7/9bQzD4OKLLyaRSHD22Wdzzz33YLPZCtv87Gc/4+qrry7Marvooov43ve+N3NvVgghhBDzwqzWOZpPpM6REEIIMf/MuzpHQgghhBBzjQRHQgghhBADSHAkhBBCCDHArCZkCyGEEKVSStEZSZFIZ3E7bNT4neMWBhaiFBIcCSGEmDdaeuNs2dtDc3eMVMbCaegsq/KyYUUljRWe2W6eWCAkOBJCCDEvtPTGeeiFVvriJvVBN267jYSZZVdbmPZQgveuWywBkpgSknMkhBBizlNKsWVvD31xkyOqfficBjZdw+c0WFntoz9usmVvD1KdRkwFCY6EEELMeZ2RFM3dMeqD7mH5RZqmURtw0dwdozOSmqUWioVEgiMhhBBzXiKdJZWxcNttI97vcRikMhaJdHaGWyYWIgmOhBBCzHluhw2noZMwRw5+4ukMTkPH7Rg5eBKiFBIcCSGEmPNq/E6WVXlpDyWG5RUppegIJ1lW5aXG75ylFoqFRIIjIYQQc56maWxYUUmZx86eriiRpEnWUkSSJnu6opR57GxYUSn1jsSUkKn8Qggxh0iBw9E1Vnh477rFhTpHnZEUTkNndX1A6hyJKSXBkRBCzBEzXeBwPgZijRUeFpe75127xfwiwZEQQswBM13gcD5Xms5P3RdiukjOkRBCzLKZLnCYD8R2toUp8zhYVumlzONgV1uYh15opaU3PiWvI8R8JcGREELMspkscCiVpoUYnwRHQggxy2aywKFUmhZifBIcCSHELJvJAodSaVqI8UlwJIQQs2wmCxxKpWkhxifBkRBCzLKZLHAolaaFGJ8ER0IIMQfkCxyurg8QSpg098QIJUxW1wemdBq/VJoWYnxS50gIIWbR0EKMHzhxEV3R9LQWOJRK00KMTYIjIYSYJWMVYlxW5Z3W15ZK00KMToIjIYSYBTNdEXskc7XS9Hxc1kQsLBIcCSHEDBtaiDF/4s8XYtzTFWXL3h4Wlw+vRbSQKaXYvr+fLU09dISS2HQNl902b5Y1EQuHBEdCCDHDSinEOBd7dqZDS2+c/33pII/v6iSayhB0O6gNOGkoc89ob5oQILPVhBBixkkhxsFaeuM8+Hwrf32jG0vByhofZW47nZEUr7VHKPc4ZFkTMaOk50gIIWbYwEKMPufww/DhVIgxP8R4sD+BTdOo9juxaTo2O1QbOl3RFE3dMY6s9dHcHaMjnETTNMlHEtNKgiMhhJhh+UKMu9rCrByQcwRvFmJcXR84LAox5ocYK7wOWvsT2G1vDmhomkbAZacnliZrQXc0xYMvHCCazAyb3SfDbWIqSXAkhBAzLF+IsT2UYE9XlNqAC4/DIJ7O0BFOTrgQ43yc5ZUfYqzwOjB0HTNr4TTe7DFzGDqRlMnB/gTN3TE0YGWNf1Zm94nDhwRHQggxC6a6EONYNZPmctCQH2I0bBqVPgftoSTVfh2NXFCXzljYNI3dnRGcNp3jFgXR9Vzv0uE+u09MHwmOhBBilkxVIca5UDNpogYOMa6o9BJOmHRFUgRcduw2je5oCl1TaApOaCwrBEZ5h+vsPjG9JDgSQohZNNlCjPO9ZtLAIcbeeJoja/wcDCfoCKUIJ0y8ThtrG8vpT+QCv5F4HEYhwJxJ83EYUxRHgiMhhJjHFkLNpKFDjJVeB0GXndqAiw0rK6kPuvivLfvm1Oy+6R7GlMBrdklwJIQQ81gxNZNmo1elVGMNMSql5tTsvukexpyv+WMLiRSBFEKIeWxgzaSRzKeaSZqmUeN34nbYSKSzdEZSKKUKQ29lHjt7uqJEkiZZSxFJmuzpik54dt9EDB3G9DkNbLpWGMacbLHKfOC1sy1MmcfBskovZR4Hu9rCPPRCKy298Sl+R2Ik0nMkhBDz2EKqmTRej8lUzu6bqOkcxpzv+WMLiQRHQggxh5SaazLZmklzJbel2KGqqZjdNxnTOYy5EPLHFgoJjoQQYo6YaK7JRHtV5kpuS6k9JrMZGEzn0i8LJX9sIZDgSAgh5oDJJvmW2qsyl2ojzacek+kcxpQ19+YOScgWQohZNlVJvvlAYlmVl9qAa8yhtOlMKi5VMT0mqYw1J3pMpjM5PB94tYcSw/Z9PvBaVuWdF/lj850ER0IIMctK6TmZj683nvk24y4/jLm6PkAoYdLcEyOUMFldH5hUj9tcmpV3uJNhNSGEmGUznWsy13Jb5uOMu+lKDp8rs/IOdxIcCSHELJvpXJO5ltsy2Rl3s2W6ksPnwqy8w50MqwkhxCyb6VyTuZjbMl1DVfNVsfljYnpIz5EQQsyyme45mas9NdJjIuYKTc3UdIR5LhwOEwwGCYVCBAKB2W6OEGKOmkxRxZmuOzRX6hwJMZ0mcv6WniMhhJgikw02ZrrnRHpqhBiZBEdCCDEFpqqo4kxXgJ7titNCzEWSkC2EEJM014oqiqmXT1Rv7o7REU7KZ7nASc+REEJM0nxa/mIy5soitTNNcrMOPxIcCSHEJM21oorTYSIBwnwJpsZq51xag07MHAmOhBBiksYrqhhLmWSyFt3R1JwOEkYzkQBhvvS2jNXOxeXuQcOl+c8sP1y6pyvKlr09LC4f3mMo5jcJjoQQYpLGWv6iJ5ri6b092A2dR15uw2W3zckgYTRD86mKCRDmS2/LeO08fVX1YTFcKoaThGwhhJik0RYMbemN8fjuTmLpDEfXBVhe5SPosfP8vl7uerKJF/b3zfnE3lIXqZ0vyelFtXNPD0kzO+ZwaSpjzevhUjEy6TkSQogpMHTB0I5wkqbuGB6HjQ3LK6nwOemLpdnTHaU7kqInmqa5J8Z5x9Zx6sqqKetJmeo8n1LzqeZLcnox7TzYnwCYM2vQiZkjwZEQQkyRgUUVW3rj/PbFgzSUu/E77fTF0rzQ0kc8nSXotuOy24gkM7ywr4+OcHJKhpqmI8+n1EVq50tyejHtNGwalT4n7aHEsOHS/NT+1fWBGV2DTswMGVYTQhy2pqN2Tb7XocrnxLDpeOwGCsWe7ijxdJZqvxOnYcNlt6Hr0FDmnpKhpnz+zM62MGUeB8sqvZR5HOxqC/PQC6209MYn9LylLlI7MJgayVzpbSmunblev6HDpZGkyZ6u6KytQSemn/QcCSEOS1PVyzLaMNbAk6+lFD3RNEG3HY3ciTSdsTB0HYdhozZgm9RQ00SSpkt5X6tqfLT1F7dI7VjJ6XOpt6XYdq5dUkaV31n4rnRGUjgNndX1gXmTVC9KN6GeI9M0aWlpYffu3fT29k6qAQcOHOBjH/sYlZWVeDwe1q5dy7Zt2wr3K6W48cYbaWhowO128453vINXX3110HOkUik+85nPUFVVhdfr5aKLLqK1tXXQNn19fVx66aUEg0GCwSCXXnop/f39k2q7EGJ+mqpelpbeOA9sa+Xezc38dOs+7t3czAPbco8f2OOSNrNkLAu7LXfIVUoRTppUeh34XcakE3tLTZou9X09uqMDpz0X+IUSJs09MUIJk9X1gWHDgaMlp8+13pZS2tlY4eGD6xfziVOXcekpS/nEqcv44Pq5MeNOTI+ig6NoNMqdd97JO97xDoLBIMuWLWPNmjVUV1ezdOlSLr/8cp599tmSXryvr4/TTjsNu93O73//e3bs2MG///u/U1ZWVtjmG9/4Bt/61rf43ve+x7PPPktdXR3vfOc7iUQihW2uueYaHnroIX75y1/y5JNPEo1GufDCC8lm3zzQXHLJJWzfvp1NmzaxadMmtm/fzqWXXlpSe4UQ899UzaYaL8Bq7UsUTr4HQwksC1KZLEkzS1c0hcduY8WhHovJDjUVkz9TbPA12vvqDCdJZbK88+jacQOEfHL66vrAuMHUbCqlnfkgc1mVl9qAa9aDOzG9NFXEIPe3v/1tbr75ZpYtW8ZFF13ESSedxKJFi3C73fT29vLKK6/w17/+lYceeohTTjmFO+64g1WrVo374l/60pd46qmn+Otf/zri/UopGhoauOaaa7j++uuBXC9RbW0tt912G1deeSWhUIjq6mp++tOf8qEPfQiAgwcP0tjYyCOPPMK5557Lzp07WbNmDVu3buXkk08GYOvWrWzYsIFdu3Zx1FFHjdvWcDhMMBgkFAoRCATG3V4IMTd1hJPcu7mZMo9jxATjSNIklDD5xKnLRh3iUkrxwLZcAHHECEMye7qirK4P8MH1i2ntS7B5TzebXmmnM5ykyuek0udkRbWPCq9j2PYTOelOxXsq9X0V087ZrJBdymvPRDvnS7XwhWgi5++ico42b97Mn/70J4477rgR7z/ppJPYuHEjP/zhD7nrrrt44oknigqOfvOb33DuuefywQ9+kCeeeIJFixZx1VVXcfnllwPQ1NREe3s7f/M3f1N4jNPp5IwzzmDz5s1ceeWVbNu2DdM0B23T0NDAsccey+bNmzn33HPZsmULwWCwEBgBnHLKKQSDQTZv3lxUcCSEWBimYjZVKcNYjRUeLi5vZFWNj/ufbSWSNGkocxFwG0SS5oh5O6WaqjyfqZyGP5vBQKn5ZPn3NlfaI2ZfUcHRAw88UNSTuVwurrrqqqJffO/evfzwhz/k2muv5ctf/jLPPPMMV199NU6nk49//OO0t7cDUFtbO+hxtbW17Nu3D4D29nYcDgfl5eXDtsk/vr29nZqammGvX1NTU9hmqFQqRSr15vh8OBwu+n0JIeauUqemj6TUAKu1L8EbXTHsNo1wMsNTe3rwOQ2WVng4vrFs0ifJfP5Me6i4pOmpel+jmc1gYK5V555r7RHFKTkhe+PGjYPyffJisRgbN24s6bksy+LEE0/klltuYd26dVx55ZVcfvnl/PCHPxy03dAftFJq3B/50G1G2n6s57n11lsLydvBYJDGxsZi35YQYg4rdWr6SEqZrj4wh2dJpZe/WVPL246ootbvxOOwccryiik5OU5Fns9UTMOfrpICxZhr1bnnWntE8UoOju69914SicSw2xOJBP/1X/9V0nPV19ezZs2aQbcdffTR7N+/H4C6ujqAYb07nZ2dhd6kuro60uk0fX19Y27T0dEx7PW7urqG9Url3XDDDYRCocJfS0tLSe9NCDE3TcVsqmIDrGqfY9jJ0bDp1AfdrFtSTsZSbG3qnbKT42RnVU02cJztYGCqZ+0ttPaI4hUdHIXDYUKhEEopIpEI4XC48NfX18cjjzwy4tDVWE477TR279496LbXXnuNpUuXArB8+XLq6up49NFHC/en02meeOIJTj31VADWr1+P3W4ftE1bWxuvvPJKYZsNGzYQCoV45plnCts8/fTThEKhwjZDOZ1OAoHAoD8hxMIw2V6WYgOsrmh6xk+Ok5lVNdnAcbaDgamctbcQ2yOKV3QRyLKyMjRNQ9M0jjzyyGH3a5rGTTfdVNKLf+5zn+PUU0/llltu4eKLL+aZZ57hxz/+MT/+8Y8Lz3nNNddwyy23sGrVKlatWsUtt9yCx+PhkksuASAYDPKpT32Kz3/+81RWVlJRUcF1113HcccdxznnnAPkeqPOO+88Lr/8cu68804ArrjiCi688EJJxhbiMDVwqY+JJA0PXUttpOKA+Zybub6UxkDFvK/RzPbSIVORT7aQ2yOKV3Rw9Kc//QmlFGeddRb/8z//Q0VFReE+h8PB0qVLaWhoKOnF3/rWt/LQQw9xww038LWvfY3ly5dz++2389GPfrSwzRe/+EUSiQRXXXUVfX19nHzyyfzxj3/E7/cXtvn2t7+NYRhcfPHFJBIJzj77bO655x5stje/cD/72c+4+uqrC7PaLrroIr73ve+V1F4hxMIy2VlK4wVY8/XkONHAcbbf71yrzj3X2iOKV1Sdo4H27dvHkiVLDrv6DFLnSAhRqnzdoNFOjpOtbzTXzIX3O3B2mM9pYNM0skoRTWUo99hnbbZaf9wccRahzFabfhM5f5eckL1z506eeuqpwr+///3vs3btWi655JJhSdFCCHE4m6mlNKZjAd2JmAtLhzRWeDh5eSWRZIYn3+jm0Z0dPPlGN5FkhpOXz3xdoflSLVwMVnLP0XHHHcdtt93GBRdcwMsvv8xb3vIWPv/5z/P4449z9NFHc/fdd09XW2eV9BwJISZqOuv+zMUCg3OhzlFvLI3fZX+z5yhpUu51zFpAIhWyZ8+0VcgeqKmpqTD9/n/+539497vfzS233MLzzz/PBRdcUOrTCSHEgjfZ5O/RTHeBwYme0Kfr/RbT3nwpgVU1/sHDegEXe7qibNnbw+Ly4bPpptt0V+EWU6vk4MjhcBCP54p4PfbYY3z84x8HoKKiQqpICyHEKKb65DgwEFhZ5SWaytIfT2O36ayo8rK3OzapQGCyvT+zEQxM5fIns0V6mOaGkoOjt73tbVx77bWcdtppPPPMM9x///1Arj7R4sWLp7yBQoiFRQ7+UyMfCLjtNp7f309PLI2ZtbDbdCq9DmoDzgkHAvN1yYvZLiUwWXNxiPRwVXJw9L3vfY+rrrqKX/3qV/zwhz9k0aJFAPz+97/nvPPOm/IGCiEWDjn4T51EOkt3NEV3NE0ynSXotmN32zEzFu3hJP0Jkyqfo+RAYGiV63zgmq9yPZtDU+OZ7VICkzFfA9KFquTgaMmSJfzud78bdvu3v/3tKWmQEGJhkoP/1HLZdboiKSLJDIvK3gxUnHYb1YbOgf7cEiAue2mTkufz0NR8rSs0nwPSharkqfwAe/bs4Stf+Qof+chH6OzsBGDTpk28+uqrU9o4IcT8NXB6eXsoweY93bIA53QZer4s8vw5UgmA+bzkxVwoJTARs73sihiu5J6jJ554gvPPP5/TTjuNv/zlL9x8883U1NTw0ksv8Z//+Z/86le/mo52CiHmkaHDZ5msxf7eOEfXB+Zdb8RclTQtqvxONA26IikCLjsOQyedsQgnTQJugyqfk6Rpjfj40YY4V1X75u3QFExu+ZPZMt9zpRaikoOjL33pS3z961/n2muvHbSEx5lnnsl3vvOdKW2cEGJ+GJhk3RdP85fXuuhPvDl8drA/Tmc4haZF8DgMKryOQY+Xg3/p3A4b1T4n1V4n7ZEkPdE0kZSJoevUBV3U+V2gMWIQM9YQZ1t/nIDLoD2UmFdDUwPNVimBiZrPuVILVcnB0csvv8zPf/7zYbdXV1fT09MzJY0SQsy8ic4iG9gDkTSzNHXHSGctNiyvLBzogx4HlT4HkaTJ3q4o5Z7yQc8tB//SDcyvOXFJGdFUFjNjYTd0fE4be7tiIwYxxeS31AQMgu7c0NRIS17MxaGpoeZTXaH5miu1kJUcHJWVldHW1sby5csH3f7CCy8UZq4JIeaXic4iG9oDYWYsdrZFMLMW21v7WddYTrnXgd9lUOV3sr8nTk80l0QccNsBOfhPVD6/pj2UYG9XjNqAizKPg3g6w96u2KhBTDH5LaGEyTvX1PJ6Z3TeDE3NZwM/y/kckC4kJQdHl1xyCddffz0PPPAAmqZhWRZPPfUU1113XaEgpBBi/pjoLLKReiB6zBSaBvVlLnqiafZ0R1nvLUdDY2WVj/54mo5Qkr54Gq9TDv6TNZH8mmLzW8o9Dj64fvG8GZqa7+ZjrtRCVnJwdPPNN3PZZZexaNEilFKsWbOGbDbLJZdcwle+8pXpaKMQYppMZgrxSD0QdpuO3aaTySgCLnsuDyaZIeCyU+51sLo2gFKQNLM098TGPfhPdKjvcCo0WWp+TSn5LRMdmjqc9v9Umm+5UgtZycGR3W7nZz/7Gf/6r//K888/j2VZrFu3jlWrVk1H+4QQ02gyNW1G6oHwuwwqvQ7aw0kqvQ4iKQszk5stpZQimcly3rF1nHFkNUnTGvPgP5mhvtEet1BPPKUEMdOd3yKFPidnPuVKLWQlB0df+9rXuO6661ixYgUrVqwo3J5IJPi3f/s3/uVf/mVKGyiEmD6TmUI8Ug+EpmmsqPYRTpi0hZLYbTq6rhFJmoXhs1NXVlEXdI/ZrokO9Y31uN3tEar9TsIJc06ctGerd2U681uk0KdYKEouAnnTTTcRjUaH3R6Px7npppumpFFCiJkxMMAZyVizyPI9EO2hxKDijRVeByc0luEydFx2nd5YilDCZHV9oKiT49ChvmILRo71uAqPg+f39fLX17oIuu0sq/RS5nGwqy3MQy+00tIbn8Dem7iW3jgPbGvl3s3N/HTrPu7d3MwD22auHfn8ltX1AUIJk+aeWEmf0Ugm+rkJMReV3HOklBrxiuLFF1+koqJiSholhJgZkxliGasHoi+e5q3Ly3n7qhrKvY6SekYmOtQ32uMUir09MWy6jqFrKMWgk/ZML80wG70rI/VSTXV+y3xedkSIoYoOjsrLc3VJNE3jyCOPHPTlz2azRKNR/u7v/m5aGimEmB6THWKZjhk2Ex3qG+1xkWSGnmiaSp+DaCqDmX2zYvRMn7RnYw2t8XKApuo9S5VnsZAUHRzdfvvtKKXYuHEjN910E8FgsHCfw+Fg2bJlbNiwYVoaKYSYPpMNcKa6B2Ki1YJHe5yZschYFkrpGHpuNt1AM3nSnunelZnspZIqz2IhKTo4+sQnPgHA8uXLOe200zCMkkfkhBBz1GQDnKmcYTPRob7RHmc3dGyaRl88TWO5B79r8LFrJk/aM9m7MtO9VLNd5VnKB4ipVFSEE4vF8Hq9AJxxxhklbS+EmB/myhTiiQ71jfY4DcgqRcZSLK/yzurSDDPZuzLTvVSzWeVZygeIqVbUbLUjjjiCW265hYMHD466jVKKRx99lPPPP5/vfve7U9ZAIcT8lg9AmrtjdISTRc1WmuhsqsXlbk5fVU2Vz8nB/gTNPVFCCZPTj6jixCVl9MXTRJImWUsRSZrs6YrOaHXu0Wb4wZv7aVmVd0oCtdF6qZRShBMmiXSW3liaeCoz6dfKm45ZcOPJDx3ubAtT5nHM+kxEsTAU1XP05z//ma985SvcdNNNrF27lre85S00NDTgcrno6+tjx44dbNmyBbvdzg033MAVV1wx3e0WQsywiQxbTOaKvtShvqEL4AJU+pxsWF7J2iVltPYlZn1phpnsXRmpl6o3lmZvV5SeQ0FRRike29nJeTZ9yvbBTFZ5no0Ed3F40FQJRSdaW1t54IEH+Mtf/kJzczOJRIKqqirWrVvHueeeywUXXICul1w6aV4Ih8MEg0FCoRCBQGC2myPEjJpIkDNaMnB7KEGZxz6lPQnFvtZcyUuZiWEgpRQPbGst5AD1xU227+8jns4ScBv0J0wqvA5qAy7Kp/jzmCkd4ST3bm6mzOMYcZgykjQJJUw+ceqyOTFkLGbHRM7fJWVVL168mM997nN87nOfm1ADhRDzz0RmPM3kFX2przUXTpIz0bsysJfqjc4IHeEUsVSGgNtOOJnB5zQ4pj5Imcc+b3tYpHyAmC4Ls5tHCDElJlr1uJRk4MmaydeaSvm2LavyUhtwTUtQks8Baij30BZOklGKZMaiLuhiXWM55V7HnN5H45lMhXchxiLz8YUowlwZjplpE53xNJNX9NJ7MLbGCg/nrK5hT2eUuoALl8OG32Wg8ebnOV/30WyXDxALlwRHQozjcJ4mPNHAYyanrEvxwfF5nAYVXgcep7Gg9tFslg8QC5sMqwkxhsN9mvBEhy1mcsr6TL7WfLWQ99FslA8QC5/0HAkxCpkmPPFhi5m8opfeg/Et9H00k+UDxOGhqODopZdeKvoJjz/++Ak3Roi5RFYZn9xJdToWpR3NTL7WfLXQ99FcmYkoFoaigqO1a9eiaRpKqXEj8Wx2fiX0CTEaSfTNmcxJdSav6Md6rcM1oX4o6WERojhFBUdNTU2F/3/hhRe47rrr+MIXvsCGDRsA2LJlC//+7//ON77xjelppRCzQBJ93zSZk+pMXtGP9FoLOaF+IkGf9LAIMb6igqOlS5cW/v+DH/wg3/3ud7ngggsKtx1//PE0Njbyz//8z7znPe+Z8kYKMRtkmvBg8+mkmg8a9nZG+dPuLtLZLA1lnqIKWM4XCznoE2K2lZyQ/fLLL7N8+fJhty9fvpwdO3ZMSaOEmAsWehLrXDaZYbB80NDUFeXlA2HCCZOVNV6qfRa+Q1PZ53tC/USqlgshildycHT00Ufz9a9/nZ/85Ce4XLmryFQqxde//nWOPvroKW+gELNpoSexzkWT6REZGDT4nAaaBlV+Bx3hFJFkZtSq0POlRwxkFqUQM6Hk4OhHP/oR7373u2lsbOSEE04A4MUXX0TTNH73u99NeQOFmG2SxDpzJtMjMjRo6I2lyVqKco8Dvwu6Iin2dEdZ7y1HQ5u3CfUyi1KI6VdycHTSSSfR1NTEfffdx65du1BK8aEPfYhLLrkEr9c7HW0UYtbNp3yb+WqyPSJDgwa7Tcdu0zEzFk67jYDLTk80TSSZIeCyz9uEeplFKcT0m1ARSI/HwxVXXDHVbRFCHMYm2yMyNGjwuwwqvQ7aw0mqDR2HoRNJmZgZa14n1MssSiGm34SWD/npT3/K2972NhoaGti3bx8A3/72t/n1r389pY0TQhw+iukRSWWsUXtEhi51omkaK6p9eOw2uqIpIkkTXdNIZy32dEXnbUL9Ql4KRIi5ouTg6Ic//CHXXnst559/Pn19fYWij+Xl5dx+++1T3T4hxGFiouu45Y0UNFR4HaxdUk6d30lPNA1AJmvN63W38rMoyzx29nRFiSRNspYikjQnFfTlA6vm7hgd4eSwwEuIw4mmSvwFrFmzhltuuYX3vOc9+P1+XnzxRVasWMErr7zCO97xDrq7u6errbMqHA4TDAYJhUIEAoHZbo4QC45Sige2tY5aV2pPV5TV9QE+uH7xqCf+fEJ3f9wcVHqhPZTAbtM5c3UNK6p9CyKhfirrHEnNJLGQTeT8XXLOUVNTE+vWrRt2u9PpJBaLlfp0QggBTE1dqdFKLxzdEFxwJ/qpmkUpNZOEGK7k4Gj58uVs3759UNVsgN///vesWbNmyhomhDj8DAxumrqiNPfE0NFYVuXl3GNqizpJH06lFyY7i1JqJgkxspKDoy984Qv8wz/8A8lkbkz6mWee4Re/+AW33nor//mf/zkdbRRCHEYaKzwopQglTMKJDFml6I2l2NrUi6ZpRQVIUnqhOKXMEKzxOw+LgFMImEBw9MlPfpJMJsMXv/hF4vE4l1xyCYsWLeI73/kOH/7wh6ejjUKIw0hLb5yHtx+gL26ytMorwzzTqNiaSXu7ojzxWpfkJInDRskJ2QN1d3djWRY1NTVT2aY5SRKyhZh++aTsnW3hQcM8+fuKScqeiyazVtx06ggnuXdzM2Uex4g1kyJJk5beOB6HDdNSg3KS2kMJyjx2CVbFnDeR83fJU/nPOuss+vv7AaiqqioERuFwmLPOOqvUpxNCiIJShnnmi5beOA9sa+Xezc38dOs+7t3czAPbWmnpjc9208atmdQeTpLMWKSzFkdU+/A5DWy6VshJ6o+bbNnbI9P+xYJT8rDan//8Z9Lp9LDbk8kkf/3rX6ekUUKIua/Y3pBSek0W2tIYc30m2HgzBO26jsvQaSjzyDpu4rBSdHD00ksvFf5/x44dtLe3F/6dzWbZtGkTixYtmtrWCSHmpGLr4pRaP2chLY0xX2aCjVb+YHV9gMYyN4/t6lwwwaoQxSo6OFq7di2apqFp2ojDZ263mzvuuGNKGyeEmHuK7Q2ZSK9JfphntEKQA9dDm6t5PHmTXStuJo1W/qAzksL5RveCCFaFKEXRwVFTUxNKKVasWMEzzzxDdXV14T6Hw0FNTQ02m/xAhJgpsxEcFNsbsqjMNWw7pRSWpShz2znYl2Dznm4uLm8c1OZiCkGesryC7fv72dLUQ0coiU3XcNltc2721HwbIhyp/EEpwaoQC0nRwVG+6KNlWdPWGCFEcWZruYdie0N2tEUGbdcbS7O3K0pPLI2ZtQrJvpVeJ0fU+AYFd2MN8yyt8PDIy208vquTaCpD0O2gNuCkocw9Z/J48hbCEOFUVC0XYj4qOSH71ltvpba2lo0bNw66/a677qKrq4vrr79+yhonhBhuNpN8i+0N6Y+nC9v1xtJs399HPJ0l6LZjd9vpj6XZ3RHlu//3Oqvr/VT5nIOCu5GGeVJmlodeOMAzzb1YClbW+Mhkcr1n0WSGExrL6Iun50QeDyycXpexgtW51FMnxFQqOTi68847+fnPfz7s9mOOOYYPf/jDEhwJMY1mO8m32N6QMo8Dp6ETT2fY2xUlns5SfahnKJbOcDCcRAM0DdIZi6DbPiy4GzjMk69/dLA/gU3TqPY7sWk6NjtUGzpd0RRN3TGOrPXNmTyehdTrcjgtyVKKuZ73Jiau5OCovb2d+vr6YbdXV1fT1tY2JY0SQoxstpN8i+0NWVPvZ0dbmOebe+mJpgi67bm8IxTd4SSxlEltwEVtwEVf3EQpxgzu8u+7wuugtT+B3fZmiTZN0wi47PTE0mQtSGWsOZPHs5B6XWRJlsFma2hbzIySg6PGxkaeeuopli9fPuj2p556ioaGhilrmBBiuMkk+U7FVW6xvSG6rrNhRSU720J0R1MsKrdhKUU4adIZTeNz2qnxu3AaNqKpDGbWGjO4y7/vCq8DQ9cxsxZO48194DB0IimTcNKcE3k8+X0dT2WIpbO8ZUkZa+oDeB02PE5jxpLnpVdjesz1+lVi8koOjj796U9zzTXXYJpmYUr///3f//HFL36Rz3/+81PewIXMsix2tEXoj6cp8zhYU+9H10suWi4mYL6eOCaa5DuVV7nF9IYopXAYOm9ZUsHutiiRhEksncHMKNx2naUVHjwOg6SZxdD1Qk/QaMFd/n0bNo1Kn4P2UJJqv45G7jNLZywMTSMUT3PisoppyeMp9juT39cvtfTT3BMjls7idRgsq/RwfGPZjAylzUSvxlT/hoYGlOMFkjP5Gx74Wi67zuY93XO+fpWYnJKDoy9+8Yv09vZy1VVXFSplu1wurr/+em644YYpb+BC9fTeHh54roXdHRESpoXbrnNUrZ8PvqWRk1dUznbzFrT53B0+kSTf6bjKHSsHZeD+TZpZHIZGLG1xfG0At8Pg5dZ+7IaOOtSTVBdw4XflDkWjBXcD3/eKSi/hhElXJEXAZcdu0+iOpnAZOvVlrmkJPkopevnQC63s703QGU6SsRTlHjuJdJZ9vXFSmWxR+3zoyRggaVpFVSLf2xnlT7u7SGezNJR5Cp/3zoMh3uiIcObqGpZXeYt6ztHatr2lny17eugIT00phcEBZZxYOoPXYWNZpbcQUE6muOhkDH2tTNZif2+co+sCI+4zj8PGi/v7WVMf4JiGkbeZrxdnpZjv77Hk4EjTNG677Tb++Z//mZ07d+J2u1m1ahVO5+Su1G699Va+/OUv89nPfpbbb78dyO3cm266iR//+Mf09fVx8skn8/3vf59jjjmm8LhUKsV1113HL37xCxKJBGeffTY/+MEPWLx4cWGbvr4+rr76an7zm98AcNFFF3HHHXdQVlY2qTZP1NN7e7ht0y7aQgmUApQimswd4Pd2x7j+vNUSIE2T+dwdnj/YNJa5eaMjyhtdUerGSfKdzgTukXJQRtq/LruNLXt7eH5fHytrfJiWRXN3DI9Dx2kY1AScoI0e3A193z3xNEfW+DkYTtARShGKp3EYOscsLeftq2pYXO6ekv2cD0wO9if47YttxNMZVtT48NiNEb8z+X3dG0uTtSwylqI24EJDw+9UdEVTZLOKvtjYM+paeuNs3tPNjoNhOiMpQgkTh02jJuAaNqtv4GO27O2hqSvKywfChBMmK2u8VPssfE6DdMYiFDd5oyvG8/v78LnsaEC13znoOcdLum7pjfO/L7fx+M6ON0spBJ00BCZeSuHNgDJORzhFNmtR7rETT2fZ3xsnlbEmXVx0okZ6rQP9ucBX08DrNCj3OgAK5Sq6oil6Y7mOgxOWzG5gN1sWwnssOTjK8/l8vPWtb52SRjz77LP8+Mc/5vjjjx90+ze+8Q2+9a1vcc8993DkkUfy9a9/nXe+853s3r0bv98PwDXXXMNvf/tbfvnLX1JZWcnnP/95LrzwQrZt21YoSnnJJZfQ2trKpk2bALjiiiu49NJL+e1vfzsl7S+FZVncs7mZPZ1RUmaGLIACNLAB8VTu/rcuK5chtik22zO9JmPowSZlZklmLMxMHKfdNmqS73QncBcz3LC43MORNSn+tKuTN7pjAKQyWWwa1Afd2A5q7O+N43UYLC53s6rGx76eeGH6/tam3uHv27Co9DrQgaDbnls1Pmvx6M4OXu+KTroHo7k7Rnc0RWc4SVs4SdZSNATdmJZiZZWPcq9j2Hcmv6/9LjtN3fFcEvqhYT80cBo6rf1JAh47TV3REfd5S2+cezY3s6s9TCKdpSuSxMyCy66TziiqfM4xK5H7nAaaBlV+Bx3hFJFkhuWVXpq6Y8QPDe8dDMUxsxYOw4amaYXn3N0eodrvJJwwRzyhtfTGefD5Fp5p6suVUqj2kbEUneFcKYW1i8voLbGUwsCA0soqsllFTcCFpmn4XYquSIqMZdF3aIHbkYqLwvT8hkc7XpS57VT5nIQTGfZ0R1nvLacvZhbKVTjtOhVeBxU+x5RUjZ9vFsp7LCo4et/73sc999xDIBDgfe9735jbPvjggyU1IBqN8tGPfpT/+I//4Otf/3rhdqUUt99+O//0T/9UeM17772X2tpafv7zn3PllVcSCoX4yU9+wk9/+lPOOeccAO677z4aGxt57LHHOPfcc9m5cyebNm1i69atnHzyyQD8x3/8Bxs2bGD37t0cddRRJbV3sl49GGbbvl6iqQzZIQtZm0A6a7JtXy+vHgxz3OKyGW3bXDVV3bPTEShMV9fxwOfti6X5y+ud9Ccy1AVdZLKKaNLEjKVwO2ycNWSYpCOcLLRjOhO4Rx1uqB88lLC3K8qzzb0oBR67DV1TGJpGOpOlJ5bGYdgIxU0CboNKr51Hd3SQNLP0x9N0RpIE3Q6OX1yGx5HrsWnrj2O36RzTEODVg5Fhw0cjHYSL+ZwGHtTddhvd0TS9MZNQ3MTrtKGh0R5KEk6YrGssp9zrGPSdye9rv9MgY1nYbXYAYukM3ZEUkaRJLJ3FUgqX3cbezuig75lSiv996SDP7+vFaeiksxaGTSfgshE3s7T0xfG77Jy+qpK93bERg4Vcr5Wi3OPA74LOcJJt+/twGjrVfif7e+OksxbVPhdep0FXNEV7KMnySg+P7+7E4zB4+5HVhX2d35fvWbuIrU29HOxPYugaAZ8Tm65j06Har9MVSbG3J8ZRtf6SfkMjBpSHPpdcj5tBWyiJz2nw6oEQR9f5Z2y25mjHC7/LoNLnJNYbpzuSIpwwC+UqqvwOuqNp6oIu6oIuUIxZNR7mx8VZsebzBehQRQVHwWCw8EaCweCUNuAf/uEfeNe73sU555wzKDhqamqivb2dv/mbvync5nQ6OeOMM9i8eTNXXnkl27ZtwzTNQds0NDRw7LHHsnnzZs4991y2bNlCMBgsBEYAp5xyCsFgkM2bN894cNTUFaUnmh4WGOVZQE8kTVNXVIIjJt49mx+iae1LALC43D3lyzkMza3JWoraoIsNyytZu6RsWD5QsUHU0Odt6o6RzlgcXR9gd3uEnmiajGVh0zRa+5PYtFzPy76e+LB9NF0J3CNdHR7sj9MZTqFpETwOgwqvA8uyeH5fH4l0lgqfnYP9KQCcdh23biOZschYFqcfUcmz+/p4+WCY4xcH6Y2leelAiP5YGr/LTiYLxy0OUuF1cESNnzc6I/z1jR58ThuravzDDsJvdEbY9Go756yuoT9u8lpnZMT9MzB4yh/UV1Z5eX5/P8lDtZmi6Uxupl3KZEmFm65IutBjMPA7k9/XWaUKM+oylqKlN046Y2HXNbxOA4ehEU6Y/Gl3F4sPFbwE6AgnebqpF5uuE/Q46InF8DgM7LpOwKbTlzBp6o6ytjE4aiVyuy2X3G5mrEM9ijZa+xMcUe0jnVGEExncdgPDpg8ogZAiYWax6TqGrqEU2HRt0AntDzs66I2mKPc6aelLYDcGlFLg0PNE02SqVUmlFAYGlGbWwu62F+6LpTJ0RZJ0RdOkTIusUthtOuFk7js3kqlckmXg8UIpRSSZm1Vpt+ksr/LSnzDpCCU52JegK5rCadfpjqbxOGysrPLleg01Rv2sBppra+1N1GyXGplKRQVHd99994j/P1m//OUvef7553n22WeH3dfe3g5AbW3toNtra2vZt29fYRuHw0F5efmwbfKPb29vp6amZtjz19TUFLYZSSqVIpVKFf4dDoeLfFdja+uPjxoY5WWBHQdCXLRu8dgbLnAT7Z7N50U8vbeHnkNj/5VeB8fUB0iZ2SlZzmFoL0NvLE1HOMVzzb38eVcnZ62u4V3HNxQCiWIDvKHv2cxa7GyLEEtleHxXB2WeXG+FoRtEUxk6+pM8/MIBTlxaxtolFcP20XvWLpryBO58L8LQq8Ogx0Glz0EkmbuSLveU0xZK0hVL4XLY6I6apLNZAi47TsNGVikyFnSGU7x8MISh66QzFq8cCBNPZ1FKURdwEjMt3uiMkLEs1i0pp8LrwOs02N4a4m1HVA07CPfFTTrCKba3hnippZ+OcBK7TeeExjKWVXpH/A4NPKhHU7keraDbjgXYNA1d04gmM6RMVQgEIskMGhS+M/mk8Z1tYSq8djpCSRLpLOmMhc9pI5rKEnAbuZpONV5Myxp0Fd3al6AnlqY+6MKyFJZS2PQ3e1F8dhuhZIb+uMniQ20eWIkcDvVqeB20h5NUGzq6rpHJKnQNMlmLhJml1u/EeSjJ22HodMeyJNIWlT5HoaxCXuGE1hUjqxSN5Z5BwVdevpRCJFFaKYWBAeXA542lMrT0xUmkcwn9AbdBOqPojCRpDyWp8jlZXD78tz+VS7Lk29YWStAeShaWvrHbdCq9DuoDucWPo6kMvbE0FV4HdUFXYdh14PM098TY1R6mN5brVRrJXFtrbyLm23qCY5m1pJaWlhY++9nPct999+FyjR5BDj3wKaXG7Y4bus1oswXGep5bb72VYDBY+GtsbBzzNYvVGzeL2u7VtjBKjRNFLWBDu2d9TmPQ1Wz/oRyEofsol7PRxB9ebSeSzFAfcFEfdBFJZnhqTzf7emK83jF83+YDhWVV3nGngQ9sW4XHwWvtETrDKcrcdlbU+LAU/PWNbh58vpWn9/bw0Aut7GwLU+ZxsKzSS5knl4vw0AuttPTGx3zPlqXQNNA0RTydIZXJEoqb7O2O0dIXpyeWpj+Rprk7TsrMDttHW5t6OWV5BWUeO3u6okSSJllLEUma7OmKjpvAPdJ+/8OrHTR1RUccbqjyO1EKeqK5fJeEmSWTtUibWVKZLHZdx3GoPpFN0/A4dMyMorU3SbnboDeeJpo0KXcb6JqGYdjwOXJ5NKFDwxfqUM9MOpPrPRsov1RJXyyNoWskMlksBZZSvNYeIZQwR/wODTyom1kLM2thGBoohf3Q82Qti6xl4TB0MlbuPQ38zuRrQJV77Bi6TtZSdERSaCgiqQz6oSDL6zQ4otpP3YCr6MFfMLDpOrqmkbXe/J6qAW91aCXyhJk72WiaxopqHx67ja5oiqSZwaZrJE2L/kQap5HrlRpYAkFHw0KhFIPKKuR5HAZZpbBpWq6UgtdBKGkO+g3lP4v+RLqo31BePqCMJk0qPXZCSRPLsuiKpkhlsuh6LqfMzCrqy1yctKwcu6HzUkv/sHU+S/kNF9u2gNvOlr09tIUSeOw2qnxOPHYbbaEEO9ojnLS8go1vW87axWWsbSxj/dLyQYFRXyzN1r097GqP8NfXutndEWHr3h76Dl20DTQf1tobz8Ce6pHMp/dYVHC0bt06TjzxxKL+irVt2zY6OztZv349hmFgGAZPPPEE3/3udzEMo9BjNLR3p7Ozs3BfXV0d6XSavr6+Mbfp6OgY9vpdXV3DeqUGuuGGGwiFQoW/lpaWot/bWDJWcQFPKGEOP2geRkrpns1TSrF5Tze72iK4DJ1FZW7cDgO33WBRuRuX3UbCtOiPm7zRGRk3UBivbXUBVyHRtdrvxGm3YdN0qnxObJrGwf4ED2xrpTeWLirA6wgnefVACKdhI5LMoJQqTHnvjZmgNFp6E7zaFqK1L0EkkcHMZnHZbfTG0zzT1FuYJTNwHzntNt67bjGr6wOEEibNPTFCCZPV9YFhvW/F7vd8j9mg+9FYWeUj4Dbojqboi6dx2mwoC0LJDE7DhtOeKwaZl7HAsGmkMlnCqQzpjEWZx4FhsxWCA5tNQ5GbIt0Ty/XYZA4FKdkBz6WUKuR+BNx2DF0jlsxQ7XdS43cRN7OF4Grod2jgQd1uywU2Td0x9nbHiKYzhJMZemMm0WSGpJnFsuBgKDHsO5OvAfXW5RXUleUu+lJZha5rVPgcLKvyFvKVPA5j0BDU4nI3lV4HvfE0DkPD58rl/SgUSiniqSxep42g2ygEAWvq/Syr8tIeShS+RxVeB2uXlFPndxJJZHDbc0NRjeUeVtcFcgv/HnrOcNKk0ufAbej0xdNUeh2Fsgp58XSGco+dZVVeOsJJlld5BwRfWbLKojuaIqsU9UF3SaUUCgGl14HNpmHTNQ70J+iNpXKfva4fCqJzQ1W6buOERWWksxavHAhN+DdcNKVyf+TmzQz8L0qhAcc0BDhhSRmxVGbAnbnA6Pn9vYd+Ty5OXFJGfTD3nXt+f++gAGmqA7vZkg92B34f8+bbeyxqWO0973lP4f+TySQ/+MEPWLNmDRs2bABg69atvPrqq1x11VVFv/DZZ5/Nyy+/POi2T37yk6xevZrrr7+eFStWUFdXx6OPPsq6desASKfTPPHEE9x2220ArF+/HrvdzqOPPsrFF18MQFtbG6+88grf+MY3ANiwYQOhUIhnnnmGk046CYCnn36aUCjEqaeeOmr7nE7npMsTjKTWX9w4q8Ouz4uux+kyke7ZzkiKHQfDWArK3I7BvYdoBN0OQgkTv8tOQ7mHvlh6Qss55NuWyarC8MvA18oNMeSKIL5yMDzi0M/Qk3M6Y/HbFw/yQks/XoeBw8h13S+v9mLTcycuh66RzeYCJpddJ5XJkjQtyj0O3A6daCpTGM7SNG3QPlpW5S1qbaxi9rtFrhdhpOHJcq+D1bUBlIKkmUXXwO00CKdMqnx24mYuGLAZuTyOpJnF57ShAb0xE6dNx+fK9Rr5XAahhInLyPWiuOw2YukM6UyWWCrDymof0VSmEOxEkhl6YmkCboNwMoPfZSeaymAflF+TC64Cbvug/bO00lMYfix32wknTPoT6dy+tTvIWIpMxuJgKIEjlmZxuZt1S8o5dWXVsO9MvgZUriL2Ppx2G+VuO45DeTpmNheUDBySg1xuyskrKvnDq+2HajgZxFMZ+hImmlJkLWgIuuiKpij3OgZVIh9asdxu0wh67GxYWVlIXDcti3rDxq6OMAcO5eIF3HaWVXp46UCIjKVYXuUddej1lOUVPLz9AH3xNKtqfbSFknSEcwnqXqfB6UdUFYaSSzGwqOhLLf3sbIuQMHPDr5VeB4vK3YOGqurL3CyLeVlS5S1cRE7HkiydkRThZIYNK6pojyRzQ6kpE0PXqS9zU+d3EU5m6Iqmh30GboeNV9tCtIWS1AfdrKkPYjdsrKkPkjIt2kK5i5xTVlSSSGfn3Vp7o1lI6wkWFRx99atfLfz/pz/9aa6++mr+9V//ddg2pfSu+P1+jj322EG3eb1eKisrC7dfc8013HLLLaxatYpVq1Zxyy234PF4uOSSS4BccvinPvUpPv/5z1NZWUlFRQXXXXcdxx13XGH22tFHH815553H5Zdfzp133gnkpvJfeOGFM56MDXBCYxCHDcaKe2waNATcRXU9zvdCW6OZSCJxIp0lfmjHDkwYzXMYOmi5PI5zVtfgcRpj7rfR9m2+bZFD+RkDk0jhULVmXcdp2EYc+snLn5z3dkZ5dl8vB/oSeB0GAbeBjkZ7OEkoYWJms2homEphoXAYGpqmHRoayfWuGLqNMs/gk//QfVTM2ljF7Pcyt50Kn5O2/sSIeUzJTJbzjq3jjCOrSZoWR9UFuOP/XqcvlsHrsqFrEE1lyFgKp12nNuCkO2qia4qgx0kmk7u92uckkc7QF09T4XGQTGeIpTLs6YyyosbLecfW83RTT+EgnDSzxFMZUpl875yXHW2RwlIj+byYfE7NwP2TP6i39SfY2tybm5HlthNLZVFaFr/ToKbKSXs4SW3AyWfOOoJ1S8pH/a1pmsYxDQHWLilnV1sYXdN4rTM6KJk+qxSnH1FVuIrWNI13HVdPVyTJ7rYI6YyF12lgWiZpUxH0GCwu93B0Q3BQEDBaxfKB25249M28tyqfM98ZQpUvdxFx+hFVdB3q7XMY+ogntKGvU+F1EHTbR52EUIp8QHnGkdXs74nx38+1UumzU+Zx4ncZb5ZEOPS5VfmcvG/dosKMzOk49uUvFJZVellU4c4lZGcs7IaO32VgWdDcEytcfAzcN809MdpC+d693EQCyPXqrVtSjvOgTlsoyc62MOUex7xca280C2U9wZLrHD3wwAM899xzw27/2Mc+xlve8hbuuuuuKWkY5KpxJxIJrrrqqkIRyD/+8Y+FGkcA3/72tzEMg4svvrhQBPKee+4p1DgC+NnPfsbVV19dmNV20UUX8b3vfW/K2lmKpVU+Gss97O2OM9oAm9dhcGxj2bhdjwuh0NZoJlIJ2u2w4TkUCAxNGIVc0ILKddF7nMaYgcJY+3ZxuZtlVV6eb+7FrmuDXktxqOpz0IXbrg8b+hkons7gsGm8cjBMX9zkuMVBTEsdWhrDSbXh5EB/gnAyTV3AQVs4N4SYy0NReJ0Ghk0jlspS48/1tPQeShodbR9N1X7P9yKMdnV46soq6g7NKFpa6aG5O8qjuzpJm7nARNfA57BR6XdgKY3jFgepCzh5vSNXRK8+6Mrl5zgMMllFPJ2lIxzBZbcdyrOx0VDmHnQQ7o2lyShFtdfJMfVByrx2OiKpwlIj+aDVbtNH3D+NFR7efmQ121v68bnspLNZlMoNlficBrqus6rGT4XXwaJyz7gn4nzAtbs9wv/t6sCm61T6HCiV6wnMWLnCkK19iUGBzmWnLi8UgYyns7jtOovLPRy3KMiKGt+IQcBYFctHun+kqtutfYlxT2jjvc5k5IP3Gr+Tpp44u9rC+J2DA6OBn1vtoXpI02XohULANfgiKJ4enHw+cN+83hFBKVhTH8AYksNV4XVwyopKdrSFeddx9ayq9S+Yi9q86fyezJSSgyO3282TTz7JqlWrBt3+5JNPjplYXYw///nPg/6taRo33ngjN95446iPcblc3HHHHdxxxx2jblNRUcF99903qbZNlRq/kyPrArSHU7kZOYdu1w792TSoCTo5d03tmF+khVJoazQT6Z6t8TtZ0xBgT2eU/kSaGuPNg6dCEUqk0XWNNQ1jBwzF7NtcL0Oc1kPTeOuDrsJwicdhY0Wll554Ojf0kzRRQw7k+YN8fZmb3miK+qAbXdNZWeUbtDSGy26jtS9Dlc9BhcdOwrTwugw89txQVCSZW4UeIJrMJf2mMtkJ518Uu99LuTrUNI2PnrIMl91GU3duenqZ245Nh7Zwikqvk4+dsgRN0wrVl/d2xQi47VT4HOgahJImy6q8nLikjEq/k45QkodeaOW96xbzwfWLC2tyPbazs5ALlM+BCidMOsNJzKw6VD1bjbp/yj0Olld5qfQ6sZTCODRbLGPlZlN5HDb29caLHvJeXO6m2u/E4zAwdI1oKoOh6zSWe1he5aVvhKKJjRUeLi5vLPnEMl7P4Hj3F3tCK6YHcjLmytDMRC7QBu6bCm8PyYyFzza8FzthZqnwOlhV65/zU9onarq/J9Ot5ODommuu4e///u/Ztm0bp5xyCpDLObrrrrv4l3/5lylv4ELTFc0lPa5pCNDenyCUNElnc4l9dl2jwufkmIYgLsfoH81CKrQ1llK7ZzVN49SVVbzWEeH5/f0c6E8UurPzSzqcuLSCU1cOzwHKK3bffnD9Yt53YiNOuzHoZJ5fSqE3nqbcY+e8Y+oGDf0MPcgf2xDgsZ2dhRyfcq+DdY3l7OnODcHE0xmySlHpc3LKikqe35+bmp4kN6Mp4LFT7nVQX+biYF+SgNtO1lKT6sIudr+XcnXYWOHh/esbB/fG6Tonr6gc9JxXvn0FJy+vYMueHtpDCfZ2x0hlFMc0BDmi2l/IO/FVG4M+i/xB+DybzkMvtBb2d8Bt58gaPy8e6Ee3cnlg4WRm1P3jduSWO7Eb+ojDipFkrrfAZdfpCCfHfd+dh4oEvv3IapSiMBXc7zLQNA2HoY9Y92W2Tixz5YQ2F4ZmJhOkTSSwEnNLycHRl770JVasWMF3vvMdfv7znwO5vJ577rmnkBQtRpdIZ3HabZx+RDXNPTEO9ieIpTPYNI36oJvV9X7CycyYV6YLqdDWeErtns0PS1T7c3WO2sNJIFfn6OTlFeMmjJaybxsrPINP5uEk6UyWUCLXy3HuMbUsqfTSUOYe9SDvMHScr3cPyvEp9zpY7y0nkszQF0vhMmzUBVwsr/IR9Dh4pqmXaDJD0GOQNC0qvA5q/U6WlHs586jqUYdepmO/l3IyLeY5NU1j3ZJy1jaW8erBML94ej8Vvlz9mIHDK6N9z0c7qV50QgNH1voPJa+P/h0q5qRWE3DxxGtdYxaVzMvnrXgcRqFm0UDzqe7LTJsLQzMTDdLmSu+XmLgJra128cUXSyA0QflxbJfDxvpl5RyZ9A9K8osmM7nZQmMkYy+kQlvFKPVqNh+0vGdtw6AK2cXkKCTSWZJmFjNr0RNNFT6X/Il56L7Nn8wrvQ7+sKOjUCyvN5Zia1MvmqaNeZBXSo14Ms4vndAZTvL2I6sKQ2W1ARdvXVrBrvYwrX0JDJtGhccxLEl3KkxHL0Kxz6lpuaRql8NGjX9wYJQ32vd8MifV8U5qmgZdkVRuSLSI4eyJVigXOXOhJ2ui36e50PslJm5CwVF/fz+/+tWv2Lt3L9dddx0VFRU8//zz1NbWsmjRoqlu44Iy9Mp0YJJfsd2tcsAdn6Zp1AXdhaTgYvXF0jR1x9jZFkHXc0XxKn2OwlTikfZtS2/80BRnk6VV3lFPmCMd5Iu5wnzX8Q0Ag4akllZ6WLe0nGMbAqyonnxP0Vw0ke/50BmGSyvHT5wearST2lF1fvpiaToiqaKHs2V4ZWGYaJA2F3q/xMSUHBy99NJLnHPOOQSDQZqbm/n0pz9NRUUFDz30EPv27eO//uu/pqOdC8ZUdLfKAXd6tPTG+cvrnaQPrfdV53OROTR7LJwwC6uOD9y3U5H/VewV5uF2kC31ez6VszdHOqkppfivLftKGs6W4RUxF3q/ROlKDo6uvfZaLrvsMr7xjW8MmlJ//vnnF+oPibFNtrtVDrhTLx/k9CcynLKikhdb+nMFBV12Kn0O2vqTbGnq4aRlFYP27VTlf4011bojnCwEQofTQbaU7/l0zN4cur/zQVepw9kyvCLE/FNycPTss88WiikOtGjRojEXchWDTba7VQ64U2tgkONzGqxdUs7ermiuqGLKwm7TcNh03n5k9aB9G0uaHOhLEE9l8DgMfE4bWUVhRlIp+V/5k3GuB6t7QdavKoVSudllb11awSsHw/TGUiN+z2dq9uZkhrNleEWI+aXk4Mjlco24Qv3u3buprq6ekkYdLibbEyAH3NGNVt16tNuHJrlXeB2Ue3Izxsysha5p9MRSlHveXFTy6b09/NeWZp5t7iOrFOpQLZwqv4Mqn4tKr4PagLOk/K+Zql9lWRY72iL0x9OUeRysqfej67O2DvUwQ4fIHLZcmYuRcqxmavbmZIezD7eePyHms5KDo7/927/la1/7Gv/93/8N5H7w+/fv50tf+hLvf//7p7yBYmxywB1utNyTpRUe9vXGaeqK0hc3sWlaYcr90F4BpRSRZIZ09tA6ahmLrKUKw11P7+3hO4+9Rl8ijd9lozuSQgGpTJZ0Njd1O53J0tQT49xj6sbM/8oHbLGkycPbD9LaF2dVjR/voWUtiu0BKXYpmaf39vDAtlwtoHQmt4DrymofH1y/mJNXVE7Z5zBRowWIbf0JEukMi4dUp56p2ZsynC3E4aPk4Oib3/wmF1xwATU1NSQSCc444wza29vZsGEDN99883S0USwg070W3P6eGPdt3UdPLE1DmZulFR6SGYtnm3p4+PlWgp7cIrGRQ6urv3wgxLPNvWw8bdmbC496HDR1xzjQn6AnmiKVschmFUsqPTzxWhenLK/ggW2t9CVMVtX42NkWxbRy7w0FsVSW1zoiLK9wo+n6m6t6j/De80s2vNTSz2sdEZp74ngcNg70J1lU5mZFtY8Kr2PcHpBik5HfDOpM6oNvntx3HAzxnb44nz3nyFkNkCYyRDaTszdlOFuIw0PJwVEgEODJJ5/k8ccf5/nnn8eyLE488cTCQq9CjGa614Lb3xPju4+/we72CH6XQXc0hcdh0BB0EUll6Yyk6I2l8ToNvE475R4HGtDSF+eup5rYeNpydreHeXx3J9msIpY2MTMKBeg2DUspnmvuza0cfjBEfdBFKJ6hJ5rC0MFSGpYCzbKIp7OEkhlOPaKacDLD9v39vN4VHfTeA247XZEUoUSajnCq0IsDip5oikzWys2SW1JOhdcxag9IsUNxlmUNCup0LdcLFnA58DkN3uiM8sC2Vt66rHzWhtgmMkQ207M3ZThbiIWvpOAok8ngcrnYvn07Z511FmedddZ0tUssMBPJpcmf2Iop5NjSG+e+rft5rT1Ctd+BruVWtX+jM8qLrbnnymQUqaxFpddBXyI3rOZ12PA77ezrifPUnm6qvA7cdp32WIJIKovPYcPnNCjz2ElnFJmsIpxI0RfPVcF+tStMLJXBsOmF9fEcNh1LgdthEEtnSGcsfvPSAUArvPd4OsNfX+simjKpDbjJZhW1ARexdBaHTSORscgqRczMsLcrSrmnfNS6PsX2tOxoi7CnK3poUdfBwY+u6dQGXOzpirKjLcKxi4JT+vkXayJDZLMx3CXD2UIsbCUFR4ZhsHTpUrLZhVF5WcyMiQyVtPTG+d+XDvJ0Uy89sXRuZXSXjWMXBTn/mHrWLikrbJt//p5oCrtNI5m26IwksZQi6LYTTppEklni6UwuKRvwOw0S6SwH+hNksgqbTWPTKx34nQYuh04qo9A1jUg6S8y0iKQyGLpGOGGyqsZLOmOxvaWf7mgKUymsbBZD1zFsGpmsQilwGjod/Uk0XaOx3M3xiwe2GWy6hqU0mnpirKjy4rTnArFQ0sRl6MRSWco9Dnpi6dxitNHUsB6QUnpa+uNp0oeWshiJ12kUtpst4w2RxVImmaxFdzQ1qMdGhruEEFOp5GG1r3zlK9xwww3cd999VFRUTEebxALTGUnR1BXF5zTojaUHLbw58ASeW55BY29nlF+/dJDdbWFsuk7Qbac3mmJvV5LXO6I8vaeH84+rL6yT1hlJ8VJLP33JdG519nSWrKXwOw2cdnDbbfRE0qDlApJ0xiKdsYgkTSxAaaADGcuiuSeG3aaDBgqFZSkscgsDO50GkVSG1r4E6WyGSDKXS+TQc8NpWaWwTIVC4TBsZLMW3akMlV4nK4YM95hZC9NSBNwGPd3p3HAcGlV+Jwkzt4RJNvf0xNMZ9nRFWVLpGdYDUkpPS5nHgcPQiaczBFyOYdvGUhkchk6ZZ/h9M2WsIbKeaIqn9/ZgN3QeebkNl902aFhWhruEEFOl5ODou9/9Lm+88QYNDQ0sXboUr9c76P7nn39+yhonZk4pidKlJlXv7YzycmsI01KY2Vy+TX3AxYoafyGXZk9XlAdfOEAkYfJya4jmnhgOQ6ehzE1XJJePU+FxkMhk6U9k+MvrXaQyFu87cTGtfXF2tIWx2zS8ToPwoZXTE5ksZszC67ChyCVLG5qGeSiXJ2MpXDadhJUla+WSru2GjqFBOJXFrmt4HLmZa6lsLo/I49TpiaexaTbsNotUJovdZkNlrVyAZCkMXaPM46Azmqbc46DK7xzWW2O36bkg7FCydsrM4nEYeB0GjRUe2voThJImffE0mqZxVH2A846pG3EV+WKTkZdUuFlZ7WPHwRA+pzFoaM1SuWKTaxqCrKn3D3ueyX4HijXaENnB/jhbm3pBKTYsrqK+zD3isKwMdwkhpsKEpvLLldjcNNYJa6z8nVISpUtNqm7pjfPrlw7S3BPDpuvk83w7wynaIylOXVlFPJWhuTuGBtQEXJiWwqbrZCzFG51RHIZ+KHk619OUMHM9Q22hBJv3dBNOmJhZRY3fid2m0xlOklXgsGmks4pQwkTTNOw2HaUpzGzu8YZNJ5W1sNt0TMtC1zWq3Q764xmyWRObluuN0TQNu64TMzP43E7MjMLnNnAbNroiSeKmBRpoh4bK7DY9l6BtaZy4pJyA2xgWvPhdBpVeB/t6YngcOrF0ljKPQtM0PA4bAZfB4go3XrvB6voAnzpt2YhJ0qUkI2uaxgfXL+Y7fXHe6MwFHl6nQSx1KDfHbeeD6xePm4w93Yn1Q4fIOsJJmrpjeBw2NiyvpMKXG1ac6iKPQgiRV3JwdOONN05DM8RkjXXCAgbn7wCVXgcnr6hkXWMZTzf1FJUoXWpStVKK/z00POYwdLIW+F12sllF3MzQ0hvnJWcf0UP5PEsrPHTH0sRTWXRN4XIYhBNJdP3NE55x6P/NrKLM7WDHwTBKKRor3PTHTfxOg4Dbfmh9NIWVVaSyWXwOg/oyF+3hFNFUBh0Lm67h0HNDaIbNRsBlpzrgJJ6OotDQNUhksrneJssCwFLgMDSCLjseh0FdwMX+3jipbBaXYcNh6ERTGVyGjWqfwfvXL+KNrtiw4EXTNJZXeWnqiRFw23E7bHRGkrgO7VO7TcfvtNNY4ea8Y+tGDVhKTUY+eUUlnz3nyEKdo85ICoehs6YhWFSdo5kqUjlwiKylN85vXzxIQ7kbv9M+aLupLPIohBB5RQdH8XicL3zhCzz88MOYpsk555zDd7/7XaqqqqazfaIIY52wdrdHiCRNXu+IYNN16oMuUNAbT/OHV9p48vUu6oJu1jW+mSw80hU5UHJSdUc4ydNNvdj0XJHBlr4E0VQGt5GbIdYbS/PygRBlLoO6Mg9PN/cRS2XojeVqC1lKQ9c0zIxFJquw2zQy1qE8H0PH77YXgr3VtQFeau0nnDLxuQxiSROfzUbctHBbOiuqfGSVYlEQ4qadUMLEZtNwGzYU0FjuRgEOXacm4KIvbuK220hbinTWQtdy+TuN5R5CCROHTafc6yCUMDmi1kdPNE00lSGZsdA08LvtnL26hnVLyqn2u0YMXvriaU5cUka1L1fvqLk7Rnc0l0jcEHTzlmXlnLqyatxgo9Rk5JOWV7Ckws3LB8KkzCzLqrwc0xAYt8doppbpyMsHPol0FsOm47GPfLiaqiKPQgiRV3Rw9NWvfpV77rmHj370o7hcLn7xi1/w93//9zzwwAPT2T4xjrFOWCuqvfz+lXbaw0mqvQ5qg240cvc32G209sdp7o7jdxkw5Fw29IocKLn+TGtfgp5YmvqgC7fdYEmFRlc0RTSZwcrkgp1kSpHMKJKHEoYDLoOkmaGlN0FfPIWh62RVrsaQUoqEmZtxVh90Yei5ISgAl8NWWA/NshKEEybptIXPZSPgcrGi2svLB8OgaZx5VDXNPQkO9MVxGBplHifrGsvY2x2jLZRAA5ZVebFpEHTbyViKcMKkLujm1BXlbNrRiabg6Do/L7WGiKez1AScVFkO2sO53p/TjqjiXcc3FDWTanG5m+0t/Wx+o5vmnhhK5WaOlaLYZOSRehgTGYsyj2PcIGymlukYaiaLPAohBJQQHD344IP85Cc/4cMf/jAAH/vYxzjttNPIZrPYbHJQmi1jnbCiqSzJdJZkysJdbhQCI8idzLwOg4yVC2AiyQwB1+Ahi6FX5BNeokG9uc2SChsp0yJrWaSyFq93RNA1CHrsOA89d33QQzydpTOcJJHNYtMgk7UTT2exlMolFlf5DiUQBwDY3R5hZbWP9UvLObLWT3c0RWt/nAO9CZyGDa/T4Nxj6kApwskMAbdBb8yG3dA5qtZP0OOgNpChqScGSrGmIUhbKEEokQGg3OtkWaWHpp4Eq+sCgKI/YbKq1kdbKElHOEk4YeJ1Gpy1uqYwky5vrOClpTfOX1/voi9usqo2UOj5290eoSOcLHqoarxk5MkOic3UMh1DzXSRRyGEKDo4amlp4fTTTy/8+6STTsIwDA4ePEhjY+O0NE6Mb6wTlpmxsJTCwhpxmMNlt2HTc4uumhlr2P1Dr8hLvXpfXO6m0uugN56mwZ5bJ0xDw2W3oZROR08MQ9dZUuUhnMzgtNvQyM04W1ntx6ZrHOxPggZ9cZOg286KGh+rqv30xtOUeeycujI3rNsRThaGrbxOA03LTa1fUu7lzKOqWVHjK5w88yfwvnia1zoi7OuJ09wTw2nogwIoM2vlJ5NR5cst4ZHv7QEKPTAVXgdBt53aoIsNyysH1WAaaKTgxbIsNr3Szr6eOEfU+PA6c/tgqoeqpmJIbLZ6cGRNMyHETCs6OMpmszgcg+ufGIZBJpOZ8kaJ4o11wrIbOrqmoaPn1v0aQtPAadjIZBWGbfCJZaQr8lKv3msDLk5eUckfXm2nM5Ik6M7V2UlnLEKJNJmsRW3AydrF5bx8IERXJEXAZcdh6Nh0jQqvA6ehc/bqWtJZRSxlYjdyCdRD82lGGrY6epScm3yAsgwvaxvLhvXmwJsBVH6h2aRpDRuqmmxNnZbeOJtebeeRV9owdI3uaJpKn4OVVT7Ki1hPrRRTMSQ2mz04UuRRCDGTig6OlFJcdtllOJ1vHviSySR/93d/N6jW0YMPPji1LVzApqJWzFgnLJ/Thsthw+XUSaQzBNz2wtCaUrk8mgpvbo2xzkgKXdPGvCIv9epd0zTedVw9XZEku9sihBJpNDQUCpumcfziIIau43YYrGssZ093lJ5omkjKxNB1Kn1OVtX4ueSUpdT4nWPuq4kWABxtKKqYQGQyNXXyQ1z7euIYuk5twEnWUrSHcsNz6xrLKR9jPbVSTcWQWL4Hp60/zsut/QQ9DgIuOzY9F3xNdw+OFHkUQsyUooOjT3ziE8Nu+9jHPjaljTmcTFWtmPGGHFbXBVhU5ub1jggH+hJUeHO9f72xNFmlOHFJGX+zpo59vfFxr8gncvXeWOHhslOXs3lPNzsOhnOFFB021jTkHrO1qbcQ2K1fWk4kmcHMWBg2jc5IiqMH1OgZLxCZLwUAhw5xdUfTZLMKp91GtV+nK5JiT3eU9d6R11ObiKkcEnMaNjoiKXa0R4A3y0K867j6ae/BmS+fsRBifis6OLr77runsx2HlamuFTNe0AJv1jlqDyeB4Se0k5ZXFHVFPpGr98YKDxeXN474GE3TBgV2XodBnFxgV75Ac0kGDnF5HTYqvblZbtWGjqZpBFx2eqKH1lOLDF9PbSKmYkhs4Pf2lJWVZLKK6KEq3ilzbk6jn65K3kKIha3kIpBicqarVsx4QcuVZ6zkPesWjbrCfSlX5BO5eh/tMYdjLsnAIS5N01hR7SssLBtw2TFsGvFYhjc6oywdYT21iZhsUvNo39tyj4PF5Z5pq1I9meBmuit5CyEWLgmOZth01ooZK2jRNI26oJu6oHvCbZ8uh1suydAhrgqvo1CjqSeWJh7LkLEUq+sCnHfs8PXUJmoygehs1DiaTHAzU5W8hRALkwRHM2y2asXMdYdTLslIQ1wVXgflnnLCCZM9XVGOGmM9tdEU08sy0UB0Kr+3xbRzMsHNTFfyFkIsPBIczTCp9ivGGuLqiqZYUunhvGNGX09tJKX0suQD0XyQsq8nPuJCxQMDGJddn5LvbTHtnGxwM1uVvIUQC4cERzNMqv0KmNpcq4n0soy3UPHQ+5ZWegi4DNpDiSlJ6B6pne9Zuwin3UZLb5xXD4RoGCH4KSa4kd5ZIcRkSXA0w6Tar8ibilyrifSyjL1QcRjIrWU38L7d7RE0Lff9ncqE7nw7t7f08d3H36Da56A7mmZ3R4RQ0mRVtZ9y7+Dis+MFN9I7K4SYrOL77cWUyfcarK4PEEqYNPfECCVMVtcHJFH0MJPvCVlW5R00e7BYpQwhwfAgxec0sOm55UpWVHnZ3RZhV3uYldXeQfetrPahFFT7nRxV5y/5eztWO/viJu3hFK+1RzBsOssqvXgdBq29CV5o6aMvlh60/XjBTb53tj2UGFYZPt/LtazKK72zQohRSc/RLDncZmiJ6VHqENJ4CxVnlQKlEU1lCbjevHbKB1qhhMl71jagadqUJHQrpdjbFcXMWNhtGrFUBo/DRn3QSVsoSSyVKRTE1NCKGsKT3lkhxGRJcDSLDqcZWmJ6lDqENOZCxVkL0EBTIy5EnA+0kqbF0kpPIejqjKTGDZBGa2ckmaG1P0E4niZmZnmpNYTXaeCy59YFTGUs2vqT9FebGLpWdHBzONbPEkJMHQmOhJjHSk3wH3OhYpsO5HqO7MbwEfd8oNUXS/NMc29J9YdGa2dXNEVbfwIzm6XK76KhzIWZVYQSJhpQ4XHQHknS3B2j2u8sKbiR3lkhxERJcCTEBMyVZSlKHUKq9jko9zrYfShICbjtA5Kjbdg0DaXl/n/o++0IJ6nxO/nL6530JzIl1R8aqZ1uu42mrijxdJZyj0FD0I2u6TgNCmvM2WywdnGQi9YuorHCU/J+lt5ZIea+uXI8HUiCI3HYG++HOfT+lJlla1NpPSfTqdghpPz0/X3dMfZ2x3itI8ricjer6wI47Tod4SRH1fsBjb1dsWGBVtBtB02jP5GZUP2hoe1s6o7RG0/TUObCYdMHDfVpaPidBgf6kpy4pIL1S8tn/WCZNxcP5ELMV3N1mR8Jjha4w/lAXkzQs31/P1uaeugIJbHpGi67bdAPc+gPN2XmcmwCbjtH1vrnzLIU4w0hDZy+v6TSS43fxa6OMK29CdrDSdbUBzi+sWxYnaOBgdaqGh+P7uiYVHHFge18vSMCQH3QxcutocLacg5DJ52xCCdNDJvGsQ2BOfOdnasHciHmo7m8zI8ER7NougOXw/lAPt57b+mN878vHeTxXZ1EUxmCbge1AScNZe7CD/Pk5ZU83dRT+OG6DJ2tTT209sWpt1yYmdx097myLMVoQ0gj1RjyOQ1O81cRTpiHFrj18v51DXTHTBLpLG9fVcXbV1WRNK3Cd3NfT3xKiisObGeFtwe3wxi0tlwkZWLoOuUeBxVeBytqfJPfOVNgLh/IhZhv5voyPxIczZLpDlwO5wP5eO/95OWVbN3bwzPNvVgKVtb4yGRygWo0meGExjJ6Yyke2NaKz2ljVY0fTdMIJ0xiqSxLKjyEk4OnmM/lZSlGm76voRF0Oziy1s++nhh3bd5HXyw97PuYfy9TXVxxaJL2+qXlRJIZzKyFoWt0RpIc3RCcE/WI5vqBXIj5Zq4v8yNFIGdB/uS9sy1MmcfBskovZR4Hu9rCPPRCKy298Uk9/1iF/lZW++iPm2zZ2zOsQN5CMN5774uleWBbKwf6E9g0jWq/E5um47TbqPY5iZtZmrpjeBw29nRF8bveTFg2sxZm1sJh2Ai47PRE00SSmcJrexwGqYw155alGK8WUsq02NEWZtc438epLq6YT9Iu89jZ0xUlmsrgdRo4DJ2uaIpyr2PO1CMqtdimEGJsxdRom83jqQRHM2wmApfD+UA+3nv3Og32dEVxGTaySh2avv7m/QGXnZ5YmlRGkc5Y2AY8h92mY7fpmBkLh6GTsaxB9YDm6rIUA3t8hlIodnWEMbNq3O/j0GAmkjTJWopI0mRPV3RCxRXnS7X4uX4gF2K+Geu4BLN/PJVhtRk28OSNBuGkmasObOj4XcaUdCUezgtvjvfeDT2X7OswdAxdx8xaOI03t3UYOpGUSdLM4jD0XMXoQ/wug0qvg/ZwEr/TwND1Qj2gubxo8Fi1kMIJk9beBI0VbgJu+6DHjdS1PR3FFedDPaLDfb22w3lih5gec30RdgmOZlj+5J1MZ9nVHqYnmiZjWRi6TqXPwbIK76SvQKf7QD6XD5TjvfeMlQuM3Pbc/m4PJan262jk2p/OWBiahpnNsrLaRzSVKfSaaJrGimofoYRJS1+cZVVePA4bkaQ5rctSTHZ/j1UL6Y3OKIZNY3XtyDPCRgqkpyOYmev1iOb6gXw6Hc4TO8T0mevL/EhwNMPydXKe64iQsRRBtx27zY6ZtWgPJemKpFha4ZnUFeh0Hsjn+oFyvPceS2VyQU86y4pKL+GESVckN4XcbtPojqZwGToNZW5OWVHF0009g364dptGhdeOTc9Vb97XE5/WZSmman+P2uNTF8Btt+Ea5fs2WiA914OZqTbXD+TT5XCe2DFT5vLF5nSby8v8SHA0w6p9DpIZi+5oiiNqfOhabljGadio8mm80Zk78Fb7HBN+jek6kM+HA+V4773c6+C8Y3NT9HvjaY6s8XMwnKAjlCKcMPE6bZy2qopTlldS7nVw+qpqXuuI0Nwdo7knho7GkbUB/mZNDS6HMa0HtKne3yP1+FT7HPzq+QNzvkdkuk4gpTxvY4WH96xdxB9e7aC5O4aFosxtnxMH8ukwH2bolVrAda4FHnP9YnMmzNVhdQmOZlhXNI3L0Kn0OemOpocVvav0OXEZOl3R9JhX5uP96Kc6Ip8PB8q8Yt57Q5m7cH+l10HQZac24GJFtZdQwuTRnR2Fg5XfaUPXNXQ0skrRG0vxdHMfG1ZUsqzKW3L7ijlgT9f+HqnHZzKB9EycfKbrBFLq87b0xtna1EtvLEVWKWyaRoXPySnLKwrbz/WTcSnm+lTrYmqZzeXAYz5cbM6UudgTLcHRDEukszjtNt66tILmntigond1ARfLKr2EkuaYOUfF/uinMiKfSwfKYk5Ai8vdvH1VFSsOBS+Ly93UBlyF7UbaNykzy8PbDww6WLX1J/jjjg441CNVH3SPeQAbr23FfnYzub8nGkjPxMlnuk4gpTxvvpL6b146QDyVZUW1j4YyDwkzS1t/goe3H+C96xYDzOmTcbHy3+HXOyL0xtLUBUf+fk3FxI6JBpPF1DIbWMB1rgUe8+li83AlwdEMyycMuxy2QUXv7LbcbLVoKoMzM3qydKkni6mKyKdjBtxEDozFnJCLPWkP3DdKKR7Y1jroYKVQtEeSOA0dM6t4ozOK32kQcNtHPIAVcyVb7Gc30zMOSw2kZ+Kqd7wTyBudETa92s45q2vwOI2iT6ylnJha+xJs3tPNplfa6QgnqfY5MbOKFdU+KryOwvb/+3IbKTNLf2JunoyLNfA73BtLs7sjQjhpckx9kHLv4KH+yU7smGhwXcz3YmgB14H3z4XAYy5dbIqRSXA0wwYmDK8YMiQzXo7HbF5tDJwF5nXackHdgBIEpR4oJ3JgLOaEDBS2qQu4yGQVkVSG55t7aeuP874TG0d8/pEOVpFkhta+BPFUlng6S3s4SXc0RbXPyfJq76ADWDpjjdm296xdxNam3qI/u9mYOj7W8iND85Qm8j0c+Dwuey7XbuDyJEO/s2OdQPriJh3hFNtbQ+zpjFLhdRTdS1PsiWl7Sz9/fb2LA30JkqZFY4UHHY32cJJwwmTtknIqvA5q/E6e3ttDjd/J8YvL5uTJuBhDf191ARfhpJn7jZpZTlxSUQiQpmJix0SD62JqmW1vDfG2I6rmbOBxOJdbmS8kOJph+YTh3e1hfv9yG8mMRVaBTQOXobO6ITBqjsdUXW1MpMcmH9Q929RLxrLojZmFEgQVXjuGrvPW5RVjHijzr7u3M8qfdneRzmZpKPMUdWAsJjDcvKcbyJ04KzwOdrdH6Imlcz1zukZrXwKn3eDKt68Y9n5HOlh1R1K0hxLYdA2bppHKWHRFUrSFEuxqj7CkyoPPYbC/J7fK/Vht+8OrHfTGUkV/dnNl6vhIQWyZ286u9jA1ATeRZAa/yyi0b7Tv4cDn6Y6m6DpUgLTK76Tal3uvpyyvwGm3Fb6X8VRmxBNIbyzN9v19xFIZDF2jLuDC4zSK7qUp5sTUEU6yZU/u+7aozE1rfwKnYUPXNKoPVfDe2xWl3FNO1oKeWJrVdf45ezIez2i/rzX1QVKmRVsowattIU5ZUUkinZ3UxI7JXuQVW8vMNkq75kLgcbjXzZoPJDiaJZFkhvZoimTKwsJCR8fl1Fk0YDmKgZRStPTG6Yyk8DoNFKpQmyevmB/9aD02Q09MQwMmTdNYWuHh4edb6U+Y1AVd+F0O4ukMu9sjlLntfGD94jGHYbbs7aGpK8rLB8KEEyYra7xU+6yiFm8tJjDccTAMgNdp8GJLP/F0NlcqwW3HzFh0RVM8vrODk5dXsLaxbFCA6LLrgw5WSikO9CfIZhUOm05f3CSdsQi4DTy6QVckzYv7+nAYOrGUSSarWFXrpzeWxm7o+Jw2osksZtbC47CxtytCPJ0rOGlZalBAMdpnt6rGx86DYV4+0M/yKt+UTh0vJkAe6eq+LZRg06vtHOhLsKjcjd9lp9LrKAwzjfReBj6P226je8CyK5oGlR47f3y1nfuf2U9NwEldwIXLbsNu0+mOJPE4bNQdyhdTSrG3K0o8nSXgtpPMWLgctpJ6aYo5MWWtXAC6qNyDpdSggqEDK6lHkhnCSRMAn8s+7LlG2h8zodQLoNF+XxVeB+uWlOM8qNMWSrKzLUy5xzGpGXqTvcgrtpbZwAKuA82FwGOuXPyI0UlwNMOUUvzvy2283hmlxutE82tYSqEfOvC/3pnLXxjYu5EPLF49EOK1jggH+hLUl7lYWeUblAcw3o9+f0+M+7bupyeWoqHMzdJKD0nT4tmmXh7b0UGN34nTbhtxiEspxb7eOA3lue72nrhJXzyNoeusrvWj6/DSgRA1fuew/I+BJ0ef00DToMrvoCOcIpLMsK6xnHKvY8wDYzFX+/F0FqUUoYRJPJ2lekAbnHYb9UEXe7ti/P7lNl7riBRWmXcaOksrPQTcdtpDCVZUeWkLJemJpnDYdQ70x8lYCruu0xtNk7EUSoFlWSjgtfYIkVSWXe0RGsrdeBwGmUN5ZDZdI5NRdEVT6JqiuSeGpkHQZWd1vZ8llV40tEGfXUtvnM17utlxMExnJEUokaY9nKLG76TK5xz1xFTsCXF/T6wwHT2rFOUeO8urfcM+76FX972xNK+1R9C03EksZWYJuOw0dcfoiqQ4aXkFlT7noPcy8HlWVnl5fn8/yXSWRWW5CvF7OiPsaosQSZqksxbuLhv1ZS6CLgexdJZQIpf3sqYuwIoaP4au0RNLE3AbhJOZQ0F67jBWbC9NMSem2qCL7kgKt92GrjOsYGi+kno6kyUUT1PpdWDYRg4+ZvpkPJEh67F+XxVeB6esqGRHW5h3HVfPqlr/pGbhTXZIqehaZgMKuA68fy4EHodr3az5RIKjGdYRTvL03h6yWUU0k6YnZmJmFXabRqXXjqbZeHpvD+9Z20Bd0D0osGgocxNKmBzoT9DWnyCcMAuBxXg/+v09Mb77+Bu81h7B58pdvVf6HFR6HfTGUrSFkhg2jVOWV5LMWMOGKPJXe0fWBvA6bIMSyc2sxc62MI+83FbI/1ha6eHIWj9lbjuP7eqkN5ZmVU2uZyVrKco9Dvwu6IqkBq1uP9qBsZirfY/DdujgkqLMbR92YDGzCqdd55mmXkIJk5U1/sKQ3u72CJqmEU2Z/P7lNvoTJq39CeKpDKYFGqAsi5RpYWmgDg2Fuh06MTMLKFKZXCFPr8Mgnc3idRjUBJx0xpL0x000LRe8aJpG1lK8fDDEMQ1BTl5WQU88TUPQzZ6OCL95qY2WvjiWBWgKZUE0laHa5+SdR9eydknZiL08xZwQn97bw0+ebKI9lMRp13HZbYSTJt3R9Iifd13ARSSZIZ3JsrM9QiydYVGZm2gyw4H+BJFkBgtFW0gRTZmceVQN/YfWRqvxOwf1EkRTWXpiaYKHPpvuaIqD/UmiqVwOUpnbTtK02NeTwNCTrK7zY9cdRFMZdnWE6YqlOaLad2i47dD6b1W+QT2oxfTSFHViWl7Jozs7Ct+3lVW+QQVDLaWwLMXB/tyFyrIqLx2hJL5qY1ZPxhPN5Rnv95Uws1R4Hayq9U96aHCyQ0ql1DKby4HHXC6AKCQ4mnGtfQnaQkl6YylCcTPXC0Hu5NsTTRP02ElnrcJK6L998SAH+hIctziIrukcUeMnmswQS2foj5u83hXhaFtgzB99S2+c+7buY3d7hGq/A5/zzYrcu9rCuOw2Gis8xA4lHo80G2vg1Z6maYV1uHpjaV5s6SeaymBZCpehE02aPLCtlbSZpSbgojua66ly2W0oK3fCSGeyOA0bDptOa2+C+qCLhqB71APj0ET2aCpbCM58ThvtoQSLy920hxN07EvgMjQU4LTnrvQVilAiTTqTJWnmKpN7nTY03lxkdXtLX26WTsKk/9CQiXWoZ14BmXwv/aH/WgpCcRM0cNh0FFkiCQvLUiwqcxNOmjR1x0hnFIYO8bSFpXJtNnSdeDrDC/t7Odgbo6HcQ9rM8odX22jpTeBx6NQF3XjsBpZSJNMZ3uiM8HRTD2uXlA37fIs5Ie7vifGTJ/fS0pdgaYUHh/H/23vzKMvK8t7/8+7xzKfmqbu6emRomqFppkYUnABFUBPFGwlKYqJGxpB7xcQsRX9RErNiWN6oSbxevBoixiUoKEFABIduQBtahp7oqXqqeTjz2eP7+2OfOl3VVT1BUd1tv5+1Svvs/Z49vOdQ+1vP+32eR8cLQsbLHvmyR6HqETf7+cglC6m4QU28VBgre5Qcn4FClWzMRNcEFS+g4gX4oazdO2wbKlF09/GmZa317+Hk7814ueb/ipuEMqR3tIQbhGgCYqaOoQkCGWDpGqEM6c9XWd6ZwSx7NCZN9o1VeXlfDi8ISMdtFjYn0XUxZYn5SKM0h3swzW+M88pQsR6daExarOxuZNtwkeGCw0jRpS1js7KnkYuXtABRIsCxfBi/Fi/PXC7zzMa5jraW2fEqPI7XAogKJY7mnIn/+PMVj8lL4pIosjFSdHG8kCc2DVJ2A57fPU7SMvBCyZKWyNdxzoJGtg8V6ctV2D5UIhszOWNe9qBLLWu3jzBScknHDFK2iSYEtqGTjkl6R8poWrRMUHSiaBBMXaIYyFcpOj4Vx2fbUAFTE5SdgFBKtg4V6ctXCYPIWL7GDRgpOfhh5NPI16IO/eNlnt0xStLSCaVk51BIImYShpJqrbP9/IYKui44b2ETUkp2Dpem/LKYMLI/8lJ/zU8gAIkXhMRMndFyJEYG8pHhtyFh0ZyyyMYsio5HvuqRq3hoQrCud4ydI2WWtCaZX5uzoYLDrtEK8xtjeF7AWMlDA8LaXE7+98RnFgBCQogkCIiKA/oBwyWHsuNTdAMMLerLZojoMe74klBGS4COlOwJKhiaxsLmBMNFhzAMyVVCxkoF0nGdmGmQsnQCKXlmxyjvWTmPjmx8yud7uAfivIYYP90wQF8uak8TM6P/9INQUnZ9hgoupi4YyFdBQHdDPKoCLaE1ZaNrgqGCQ8mNssSqno+layRsgzCU+KEkCCXFqo+pCeY3Rtc3OUpg6loUafRDKl4QjdU1gjBE18ALJaGMmv8KNApVn4obYuiC5Z0ZlrWl6R0pUXJ9BvMOVS/AHNRpTlksaUnRkDCP6iF+uAfTgdGJTNzk1PY0li5Y0primnO6OKd7fxTvWEcBXouXZy6XeWbrXIf7/E4U4XE8FkBUKHE055gaFKseQU0YRY/3/f+PhHzVp3e4yIKWNAlTxzJE5OvIV7lwUTNNKZvGRCNj5SSb+vOc19PIwpYknh/w0t4ccVOwZ6yKBoyUXZ7vHSUdM9g7LsmVXeKWgW1qBKFEEHVm3zdWiUyouSq6oGZIdtg2XCBfdilUXdbuGGW8HIk6KSGQ9SBK/V5Gyy660LBNgQxDChWPXNWjprkYq/1eCiWIkkvS0okZUaRg00CBmKnTnLLrfiBLj6oQr+jKEDN1kCAF0f8IieOFDBWq6JpguOCga9CcMhkv+xSqHlU/YFh3iJlRlMoPJLYRiYDdYxU29+c5vTPLwqYEe8crQBTFKDg+mhbdZz1SdJDPVAJhKNE0QRBIqm4IePX3BhJCP8SpzZGlCyxDIBFU3BDXh925CuUtQ/TnHZDRsQQCqhAzdHKOjwDcXJXdo+V6VKbo+OwYKk57IEopKdTEx8t7c5zekWbnUCmaByOKqpRdn12jZdwgJBXT8YPIS7VpX45nt48QyCgqZJkaIROiRVJ0HEIpaU3ZNKVsgiCKBPqhJB0z2TxQZCBfpSMbnxbxa05a9OerIGXktQMMTYAErxZFMrWJKJBktOyQsg0sPfow9oxVaEvbNCQs/CASVfvGKwwVHDoyMbqb4kf1ED/Ug+lg0Ylze5pmFDzH+mH8Wr08c7nMM1vnOpywUMJD8WpR4miO2dRf3L88w35xMVlkSMCsPQxGyy5+IEHAYN6h5Aa8+bQ2NAQb+vL0Dpf49tO9lByfihtQ8QOqblA/niB66KQsA09GaiYbN4hbBl4gyVddKm4QeY40Iq+LlLi+xA9DfF/y251jkQH5MPcWRb/AIySU0UKHG8gp1xJMvvcQqrVf1IN5h57mBKMllxf35HjTKa04XsimgTy/3jrCwy/swzZ0dF2woisDRAb2F/fk8ALJUMEhlFGkQgiBVvMFJUwdzw9wQ4EmBBXPxw00LENHF1BwfDb25RgqRL4g29TrPphgkjA6HH4IojZ44vOTEoIwREpZn7toeU6ioUFtTgXgeiHjpeizFrWRpi5w/Kiw4ITRuVT1eWLTYGSI9kOqbkDvaJkLFjbV/RujJZftQ0VGSi6uH1JyI5GUq3rEzChyY5lROrobhKRtAwlUPQ/L0GnPxHllcJjmlIUmoohR2jZIWjp9+Sp+EGLoGjHTQEMgNKhIyCYsWlMWAwWHPWMVOmqCbSJKsH24RHvGZrzi0Z+r4AfRMmzc0ih70XKaJnTcMKTqhrhB9L1sTlpsHigwXo78eWfPbyCQ1O9RE4Jc2aM9E+M958yb9Yf40QieY/kwno308LkUeMdaTCoUh0KJozmmP1+dspx2MAYLLkU3JAgkgZRkbQNTRH8lP/pyP7YuGK94CCEIqx79+SqFqo8/ScEYGmgC3ABKrosmotdlL0DgoAnwA4kfgqlHf8EXqh7+pD8sJRzR9R6IG0x/00yH8SUkTR0hoihXvOY9GSt5bB0sUHYDuhpiDBYc9uUqCCHYO1YhFTPIVVwG8w5hKAlC0LRICAYh+EGUSVbxgigaoQeYhoauaVi6RtzQCCV4tarGYRhSdKL08lAXSDl9Ge1QTNNRUtYEkk7ZCaYNdoOAINj/3kBCxaudTdSickGIJgSuH1Ks+nhBQMUP2TNW4cz5DcRNncFClRf35vhN7ygXLmoGYP2usXoZA9uIii0OFqoM5CokYwa5qkdaGhSrfuQhQ+D5AX4Q0pyy6mUN/FCyoivNQM1jo+uR4BUITF1ES2FBtERmGRqtKZuZnmsHRglaUhZBEDBacql4ISlTq31G0ZJjoerV0+abkxYd2Ti7RkrsGauyvCtDpmbobkzsrzDv+AFBKLEPEjV5LZwo0YeJKN3GvjxtaRs/kPUirUiOeMlxLu/3RJlbxcmHEkdzTLz2sDocuaqLEIJFrUn2jFUYr0QPjLLrs2MoWrKJPEQGQyWXkuMT1rKqJvAPeLJrtR/PD+vLePWsq9pDxa+lpwuOXBi8FqQEITTcIGR0tMLpnWm8ULJ9uDglHV8XLmNlj4a4QShhKF+l6gd4tUiLqAkKx4uWZkS06hal8moCPwjxQ0lTwsQNoOxF8+WHIa4v8bwAN5A4RkBDPIYm3LoZ+0ioL4vWcPwQy9CJmTplN5iyMwSYtGniM6svU0rqka8glDgiwCuFaJogYeosbUvWIwMd2RhL2pJs7i+wbSCPEKI+b4jIR9XZEOPc7iz//bJLseqTiZlRVe8gJGZquEHAWMWlIW5FBmg9am9T9QISlsGqnkS9Ivpgvsp/v9RHxQupeCG2AZm4SWvKJmHr7B2r0Jy06p6jCQ6MEsRMjed3jfHvv9xOqRrQmY1RcQN2jpSjAn6aoC1tM78pgalp5CvU6g1Nrb01kRgQhFGZhJO5ovBELbLHNwywbudYPRsxHTNIWsZRLzkqFCczShzNMfII12kqbkBPk4lt6rSkArYOurU6PiA0gSEEfigZLXuUXR+NmiCAGR/qWm27qUd1d0xDRMJCQHvWJpSCsZJbEyu1B/ariBi9GgqOh6lpOF7AQM6hM2uTr3o0xq164b+yG2XD2YZG2Y0ezBPLZwDBhDAUkfgwBfg1xTIRWUJIclUfXYuWpCaiQ5qQ6JqOLgN8X1JwvKg+0QzRrwMRgppHa+q8W4ZGzIi8Swlbp+QE9f1htEpaF0UTwkqDKep2onK6G0gEMjqmpe+PMBFFcZa2phkuumwaKJKwdFpSNo4fkq96JCydJS0pNE3n7HkN/LZ3lERt6XGo6DBW85A1xC3esLSF5pSNlJK0bZArexh65H3K1AocNiZNNvTl6Ms5NCUMGhI26Vi0RDuYrxKEIRcuapoxGnBglOAdZ8ZpStp8f12U5VXxonY0C1Jx2lNxbFOj6gX4mqwZ0AVFJ6BQ9euiaILjobDfsWb3aJlndoyQiRsYelS93PFCcuUKHVmb9y06Mfq7KRTHA0cWxniduOuuuzj//PNJp9O0tbXxnve8h82bN08ZI6XkzjvvpKuri3g8zmWXXcbLL788ZYzjONx88820tLSQTCa55ppr2LNnz5QxY2NjXH/99WSzWbLZLNdffz3j4+Ov9y1Ow9CP7Jd3KME0NCSSkhMQN3UaEibtmRiN8Sgd3zI0HD+I/C6adkgto2vUhYOYqNOjgaYJ4oYRVZLWo+UNXWPG5ZHZoHYZU7ANDUMXtSKGVcpugOeH9aJ6VT+k7AbETY2KF+IGkTCaiLBMQ0bepyCAMKz9W+4XiGG4P2ImhcTQtdq8RCGnouMThCEhh9eHcVMjbhm1TKyo7lHC0mlKWnQ1xEnHDeY3xGlLWdFnMDEPYv+PrtVM+Vq0FDpxb6I2ztKj7bahYWiCVwaKjJbc+rEakxbn9zSRtA1KTkDe8ah4AR3Z2JQ6WEnboDll092cZGlrgq6GGElL56x5Gd55ZieLW1P1YyZtnY5stJxZqHoEYbTctX2oxDkLmrhkWQvJmInjhwyXnCgLUBOc29PEVWd1HXF04sLFzXzpD8/k/3v3Cj566WLesKSFGy5exNXndLF6SQsXLWpm9eJm3rC0mZ6WBPlaOYYpH3ctA3RhS/KkrSg8OWtxZXcjb1jSwhuWtPDGZS28Y0UH8xri9I6Wka9mjVyhOAk5ppGjp556ihtvvJHzzz8f3/f59Kc/zeWXX86GDRtIJqOmrF/60pf48pe/zLe+9S1OOeUU/u7v/o63v/3tbN68mXQ6DcBtt93GQw89xH333UdzczN/9Vd/xbve9S7WrVuHXhMjH/zgB9mzZw+PPPIIAB/96Ee5/vrreeihh+b0nhsTRzblrh9SqHqRkbYSLfEkLIP2tM2usXL0lJciEjEyqvNy4OPowKUeXRNRDRxCLF1DiCiNPghDbKFj6lHKeeSfmf1foqaIUt8n/37WRXRdrh8iRHTfUYFCHccP6czGCYmuszUTw/ECcpUoXZyauJjIhBOCKXWJJu5fry25Tfh40COR4fgBmhDEbJ2qG2WDhWGIE0QVy3UR/f/kWlQw1YsUBJIg8JEIUrbJwuYEuYrPWNmlLS2jdiESTFMnbRtUvJAwDEnZOk4ga817daQfoGmRadyP3N1YhkbG1vGCKE0+aRvMb0hQ8YJ6X6/9FcA1lnemqXghLSmLbMKKWpQg6gbtvlyFUm3JrbsxwXUXZHl5Xx4vqLVbqKX1D+SrdDcleN+iZnpHyzNmEwH1Kt5lNyBh6SzvynDxkpajjk5omsaKeVla0zbbh0o4vsS0xbToUFcmzr6xCvvGK9imflwW9jtWzJTGP3n+NE0c9/3dFIrjCSGPoz8lhoaGaGtr46mnnuJNb3oTUkq6urq47bbbuOOOO4AoStTe3s4//MM/8LGPfYxcLkdrayvf+c53+MAHPgDAvn376O7u5uGHH+aKK65g48aNLF++nKeffpoLL7wQgKeffprVq1ezadMmTj311MNeWz6fJ5vNksvlyGQyr/oef7J+Nzfe98Jhx3Vmotoy2bjJeMWnNW3Rlo4RMzVe3pcHCbYh2D1apuxFhQX9MKwLhQM/VI3oAZowNXwJMoy8OK4f0JqKUqNHSx4DhSphrd7Ma/liRNWjdapugC9BBww9ModPHFcDDF1g6lrdTyKBhBktj5TckJSlk4oZFJyAhc1JwlDy4t4cAokXSqpeEEWCqAkluf/Yoia8UjEDx408RWEYLSVqtZDTRAlBXYtqA5WdKB3aNrVaarmGlCGaFl0jtWXHoLZUZxgCW9dI2gZnz2/gzPkN9I9X+PW2YWITkS4/pDFpIoh66o1XvCi6FYYIBNl4VCvIDSR+IHHDACGjlieRKBM0Jkx6WpK4fkg6ZlD1QlYvbiYTN5FSsm2oyKkd0R8Lm/sL9eJ69Satro8XSOY3xTm9M8NALhIUF04SQDNV1j5US5JX08D4UEgp+f66PQctDrhtqEhb2qYxaU1p/XK41hgnAzuHS3zn6d6oMOYM4dQJT9b1F/WwsCV5DK5QoTh2vJrn93HlOcrlcgA0NTUBsGPHDvr7+7n88svrY2zb5tJLL2XNmjV87GMfY926dXieN2VMV1cXK1asYM2aNVxxxRWsXbuWbDZbF0YAF110EdlsljVr1swojhzHwXGc+ut8Pj8r99g7Wp0W0ZmJ7uYEZdfH8SSNCYO2TAwNwXDRpaP2l1/F9bFNg6rvEko5LXI0GU2LhIiha+hQMzJLmpKR32i05jeydUElfG1xI1uH9kyM1nSMnSNlql7kB6l6IVoYFYs0NLAMnbilY2pR1CtmRl3P81WPihdS9QJKVR83CFnUkmS87OIHAQlLw/ElKSPKsCs5tUrWk4SRaQhiRtQXSwhBOmZS8QK8MDL7Ol70/24gsTRBVzaOpgmKbhldE9hGtMRY8UJ0TUMIQaJ2vMa4wWDRJQgkSVvntM4sZ3Rmmd8UmZBHSw7Xnt+NoQle2ptj+3BU7by7Mc4p7Sl+t2ec7UMlWlI2p7SlqPohG/ryjJRchJQkDRNdg6SlEzcNdF2wrC3N4tYk63ePk6tEy1xVL0AI6pGTiUrNA/lqXUhsHSwwXvEwdUFDwmRZa5q0bZJqNdg2VKR3tMz7zp3HUNGdUeQcKptotjONjqQ44FVndan07xlQXd4VitnluBFHUkpuv/12LrnkElasWAFAf38/AO3t7VPGtre309vbWx9jWRaNjY3Txky8v7+/n7a2tmnnbGtrq485kLvuuovPfe5zr+2mZiAdNyKz7yFSoTSgIxNjWVuap7ePMFxy2TNapjUVdSxf3JpCAFuHCoxVPLwwwPFCpBDE9Khvl1+L/kTRGerVicNaRKI9bZBNWLQkbfaMVxgoVEFCWzaO54UMl6pUvMNLpGTN2B0QRYs0ATHLIFGro3R6Z4bOrF1fnhovO7y4N19bJjJpS1sM5KsEYS0aQ1R4sKclCURekrGSx+b+Ak5tCTCU0XKWURMwhi4IwkjwQbT8Fbd0MjEz8sIAlqkRt/WaOVsyEkSCAWStealJ1ffRhcA2a/NkGFQ9r9b3y4rq8TgBqbhFYzKGH0pKrs/pnWm6GuMUnf0P8XdNeohvHyry0r48o0WHghMwryGBqWtk4yYLW1PRtcYNfrNzDCEkp3dk2DlSwTKiWleJWrXriRYWL/fl6MtV6c9XaUpO75A+kTb/8t4c24dLJC1jWqPiyRWTh4rucbPUcqTFAY+X6z1eUF3eFYrZ5bgRRzfddBMvvPACv/rVr6btO/CvwgM7Lc/EgWNmGn+o4/z1X/81t99+e/11Pp+nu7v7kOc8Es6al0XXpqfZT0FAJhaZZ9+4rIUtAwVMXUMAC1uSJG2TsuvTkLB4++kdLO9MsX53jpf78oyVXUStGOK8xhhpO4qY9Ocjo3PMMOhpjnPh4sjoapt61ObC8WuRCEFX1uaF3WPc+dAmxioOCTNq+VF2ImGi14zdcUtnWWuKmKWRipmMl3zcIKDk+mTjJhcsauKixVEj2419OXpHKjQmbOY3JMhVPVKWwVDBYazsEzM1HB+8MBIPrWkbgSBuGhQq47UlFJ0QjXw5qjDu1bK2EqagNW0ThpKxsouUkripR5EwQ0ND0JywSCdMkFE7jLXbR6g4PoYZlUPwgpCKG6XfZ2MGCEFLymLncKneKLXihUgBndk4Z3RlKTkem/oLVL2QnSOlgz7E2zMxLlrcPCXa4XgBT+8YrQuApG1yzdldIAS5skt/3iVf8VjSlmRpa7ouaiZM+Su7G3nb6W0kbGNa5GQibX5xS5KSG7CoJUlDwpzmSjuSJq3HAlUc8OhRXd4VitnluBBHN998Mw8++CC/+MUvmD9/fn17R0cHEEV+Ojs769sHBwfr0aSOjg5c12VsbGxK9GhwcJCLL764PmZgYGDaeYeGhqZFpSawbRvbnv2/slrTNnYty+xgCKiZKxNk4iaNSZu3nd7G7rFK/S9929A4fdKD+N0r5zOQr7JnLGqBMb8xTnsmhpSSDX0FxksugZR0N8ZJxsyDekfGSi6/3DpC70iZ0zozrN89husHxCyDdEKn7Hi4/v5ecLvGKzQmTHwpMAyBrutYpobnS/aOV/n6U9sYK7lUvZAQScLUaUlZxEzBcNEjZuo0JqJltpGShyAyZ5edgIStM5Cv4gaSmKlF5vEgRNNAk/sFZigFUoZkE1FD3XwlKm2wtC1Fa8qmL1fBD6Jjzm+Ms7QtSe9oiX3jVUIZ1ttsNCVMEpbGeMWjPR2jKWGRT3qkbYOmpMVQ0aUjG+MNS5prfh6HK1d0cOkprVS98JAP8ZmWoLqbEtMEAETm2u2DRX6+eQgvDGuRsf1m6caEyZUrOg7psRFC0N2UoC1t14T19Gs6npdaVHHAo0d1eVcoZo9jKo6klNx888088MADPPnkkyxatGjK/kWLFtHR0cFjjz3GypUrAXBdl6eeeop/+Id/AGDVqlWYpsljjz3GtddeC0BfXx8vvfQSX/rSlwBYvXo1uVyOZ599lgsuuACAZ555hlwuVxdQc8Xe8SqGpiEIDurr0TXBeMVn23CRU9vT2IbG4tbUtOjDTN6QiZ5bQkRm7YnoxIR5daCQ5KJFTXUhNZCvsm+8wmjJZbjksnOoiERwanua8xc2kYnp/HrbCMWqT1Bbqpvw8zQmTEYrHn25Kq4vWdqWwg9Dtg2WKLs+fs3fk6t4jNca7RqaYLgYzUEIzG+IE4RQqHrYhkZT0oragRQd2oTFcNGpp7dP9Foz0AmCENOIRFEoJWMlH8eXZOIGvpR4gWS05CAELGhOsnOkhCajrKyCE/C25R0M5iq8uC9P1QvoyMTQas1VnVrm3EjJpac5QdkN2DNeoTllc3pHhpIbTPH5TDSBPVoOJgAmok3zmxKv6UGnllpOPlTUTaGYHY6pOLrxxhv5z//8T370ox+RTqfr/p9sNks8HqWk3nbbbXzxi19k2bJlLFu2jC9+8YskEgk++MEP1sd+5CMf4a/+6q9obm6mqamJ//k//ydnnnkmb3vb2wA4/fTTufLKK/nzP/9z/u3f/g2IUvnf9a53HVGm2mwyWnJrlYkFri+n9BqbyLAKZdRXa7jgYOlR7ZiJX3AH+2t692i5/iB1/BDHCxgsVMnETU5pzxA3dcquzy82D/K93/SCFJScgLFy1I19aXsaPwgZLLj4QchAvkqmlhXVlLDwgpCqF2JqGoYWtR0pOFFndqlF3pvhYs1sLqMMrZGSS0zXGC45+H7UX0wHKm5UyDIbM0nGTM7qbuDFPfl641fb1MhXPPwgEimWuT/VPmbqVL0Qz4+iTaEUhFISiFobjhA6M3HcIMTWdQZyUbuWq8/q5NSODI0Jq/7A2DNW4Scv7OOJTYPsG6+QiZssaEpwekea3pGoIWtDwqItrdGRjRMzov5ktj83f42/1gedWmo5OVFRN4XitXNMxdHXv/51AC677LIp2++55x5uuOEGAD75yU9SqVT4xCc+wdjYGBdeeCGPPvpovcYRwD//8z9jGAbXXnstlUqFt771rXzrW9+q1zgCuPfee7nlllvqWW3XXHMN//Iv//L63uBBEERZY6JWRyesGaijRqSy1vVeMlJ0WdKamvEBNmUprOzyiy1DjFc8OrNxYqbG09tH2DNWoTOMage5fsiLe8Z5aV+OkZKLqUHaNtE1gaYJNuzLUXEDMjGThKUzVnYZK7n4UiKlRNY6pKZsHV3TGCu75Co+jQkT09Dx/JChQtTotFrrc5Urewz4ATIEXRfotbR5iFLWS45P73CJixY18aZTWnhi0yADeQfLANePlgZNfSKaI2sd2zWkIaLKyeH+Rq860X0acY3WjA0SzpyXxa9ldV12atu0CE93U4KPXbqECxc1s3bHCAO5KromiJk6V3c3cEpb5PWJWzqtKeugGV2vBwemyfc0J17V+dRSi0KhUBw9x1Wdo+OZ2apz9JsdI9z83ecpOVHDTFPX0TVBEE40z4yW1Za1pWjLxLjlrctYuWBqJt7kKFHVC9gxXMINQlYvaqYpFbXeWLtthLipka/6pG0Tz/fpHa3UDcsgCGTUjqM5GXVSL1X9qB6PiMSH44e19hUQBJEZuSlpETN0Sq5PruIRNzRScQPHC/CCqFVHzIxkUMULcP2ortCEoXyinpFTq4AdN3WuPa+bhS0pRksOz2wfZawSearefGorG/YV+G3vKCUnam4aM3X0iXR/N4jupSaaErbB8s40gYyy/Vb1NBJKjqi+y2zX7HktHBgFnI1aPsfT/SkUCsVccsLXOToZ6G5KsLA5yfbhItKNupqHtZ4eEy0oGhMmS1pTvGFZC+d0N0x5/+7RMg88v4exchQl8vyQjX0FvCBk/Z5xVnY3EkqJH4ZYhkk6BjuGisSMKONMEwLT1KI6PyJakso70ZKVpkHB8YkZOrahU/EChIiuKQyjcomOFxIzdGKmRskRSAGuJ6l6kQhK2gbpuEGu7CNlZDqfEEV6dJtoWiQApYwatJZr2VJNSZsLFzWxdscIlq4xWvJoSlosa0uzbahI0QlA+timXmu7IerHsQyN9oyFH0qSlhGVOxCCsuMdken4eFmKOPDzjZvR57CpL0/feJk3LWurR7OOdonteLg/hUKhOBFQ4miOac/EuOzUVvJVj0LVJ1/rW2VoAkPT0DRBRzbOkrYUFy9pmWaineiftLT28B/xItNxZ0OMkaLLtuEip7SlMLSowrOUUHIDsjGT8WqtUqKM2oRoRJWiq7WUeCGimkVJK2oCJhDIEAwDENHSlR9EtYYQ1FqQRM1sg1Cjo8EmYerkqz5S1o5Zu/YwjEpLGzUxE2XsRWPKXhA1LZWSouNzwcIm3nRKa90f5HgB//lMLz9+oZ+RkoMThCTMqPdXlJ3moYmofUdnNs7i1hRNtX5iJ5LpeKbPF6LK3Y0Ji2e2j7B+d45FLUlipq4qQysUCsXrhBJHc4wQgqvO6mKo6LKxL0e+YpKverieBCFpy8R42+ntXHVW17SH3kz9kyaKO/q+JBMzGSm60AbNKYv+XBW9Ni5u6+jlqO2rE0gSlgZSUPEDZBjWhUvkfwoQRFWiq36AFwjMWpsPxw8pewG6EMQMjUrNzxS3dOY3JvADyUjJw9R1LEMSBAHBRBPVWtdZIUSUji8gbupsGSiwub+AZWgsaU1x5Rkd05YS73jH6Vx+Rgc/eG4PG/YVqPpBPf1+QWOCsu9jCK1eB6pQ9U440/FMny9EJv7f7R6PShlIaE5F6fmb+vL05yq8d6Xqtq5QKBSziRJHx4DupgQ3XLyw3riz5PgIERV4vHhxC+csaJjxYV5xIx9Q3Ny/RJSOGTQnLfrzVZqTFgUnxAskS1pS5Mouu0crxAwNWxckTI3RYpQBlq7VcHKKAV4o0bSo2WzC0tHQkAIStoYbhASBpCFhko6ZjJUd/BDcIMQ0NDoyMbqb4gwWHQpVn4RlsLwrAxK2DBbYF1QJ/YkokkQXGqYm8AOJqWksbElw8dIWDKFFkaOqxzM7RuhqiE954AsRZe2tXNA4Yz2nPWOVuk9nog7UiWY6nunzlVKyfahI2Q3ozMYYLbuEoSSViKpmbxsqsnb7CPMb4yeEAFQoFIoTASWOjhHdTQmubew+KpPsTP2ThBAsbk2Rr9UbMvVoac7QBE1JG00TFCo++3IOCdugNW1Tcn1KXkDS1DB1QSijkI6pa1FfMVNjfkMcXdPoz1cZLbkIAQXHozll090YJ5TREuEHzu/m7PlZ/u+ve9nUn2dpWyrqBi5hcUuKp3cMs22ohECSsIxo6c6P6jA1pSzecmo7Tan9S14yEzvkA1+IaNlxpsyzE7m+i6wtKVbdqARDR61mVaHqM1JyycZNvEBiaBqmUVv2nNQCRHVbVygUitlDiaNjyNGaZA9W1K8paXF2dwPPbB/BNDRGSw62oXP+oiYuWtTESMnlwfX7qHg+jT2NbBsssXWoyFDRRReCpa0pzlvUxCltKV4ZKPLMjhHGyx6ZuMnyzgwJU2PrYJGKH7KwOcn8xjiLaiUGJqIyV67ooOL5DBUcNCFIWAYNSZOlbWlStoEbSApVj1BCyo5h6BrndjfWhZFEUqh4jJU9vCDkpb053rTs6Aosnqim44nstB1DRXpHS7y4N8fS1iSL29JIKfGCECNuMFKr0J2O7f/P9nhtAaJQKBQnMkocnUAcqqjfWNnl/EWNM2YzLWhO0lLrJ7ZzuMT8pjgdWZtkzGRFV4ZVPY316tpSStbvGp9W9+cPz2ucUvdnpn5eM9XTmRBolqHVl8KklPz3S/10NkTCZ6zk8uLeHDuGo4w0Wcuqixsaf7x64ZRlsQNT0l9N/aHXM639aI+9e7TM/c/tZt94lcakzfLOLBv7cmwaKDBUcjmtPRJIfeORf2pJS2pKK5DjuQWIQqFQnKgocXSC8WqL+h3pspMQgpU9jZyzoOGoBcThzjERBRrIV4nVUtQ9P2TN9mF2jZbREGTjBn4Qkq/6/HrbML6EGy6OBNJMVcCrXkAoo6y7pKWzvCvDxUtaDjoPs11D6MBinFsGCvSOlI/o2FJKfvJiH8/uGMPQBLvHKpi6RtIyiVs6/TmHjX35qHmuJjlnfkO9Ae3E+0+kbDyFQqE4UVDi6ATk1fprjmbZ6dUuUU28b0I09I6Up13fxPLgxr484yWX/lwVUxOkY5FXqeqFdGRjxAyNTf151mwbZrVs5ofr99br/1TdgF/tHmf3eBlD02hNW9iGwdahIlsGinVBNZlD1RB6NVlfk4XWcDHKNDMNjbPnNbCwOXnYY6/fPc4TGwcIJWRSNqah4fkhuapH3NQ5Z0EDQSB5y+ltvLQ3x2jZxTQ01QJEoVAoXmeUODqGvJblnePZX3NgBe8glLRnY6xe1FzPxFu9uJmtA0U29efxAknK0vGDqKq2ZWi0pmL1prUv78uTr/r1+j8Az+0coy9fJWZohAjCELJxk1zF5bneUVpTFh+7dEl9Pg9VQ+jVZH1NFlodmRj7xiuEMqrntGWwQNI2aExaBz22lJK120YoOj5LWlPoWmSytk2dVkNjqOiQr0RFMJe0pjilPa1agCgUCsUcocTRMeL1aBExlxxM2E0WDXFTZ7TkMpB3+O3OUZ7cNMhbTmur13B686mtPLdrlHzFoeqH6JogEzdpTdkkbYNQRrWfRksuQSDpaUkihCBXcdk+UkSrjfcDScmNltiStajK0ztGec/KefWlvIPVEIKjz/o6UGgVasKtNWVjmRpDBYdtw0VWJRsPeuzBgsNAvko2HlX11rWp15OJmbX90RJbeyZ2QmfjKRQKxYmEEkfHgAkBMVpyScdM0rZBICUb57io36uNXB1M2F20qImnd4wyVvZoSlj8bvc4ZTegIW7SkrboG6/yy63DOH7IH5w7n8VtKZZ3ZpCyQNLSidsGMUOrX4PrhyCjEgOBlPX6P+Nlj5ITkI3peIGk6vmMVzxcP0TXBTIMGSl6PLdrjHeeGYmjmWoITWZy1tfh5uVAoeUFYdQnL24iEPVinIWqX2vkOz2jrOIG6JqgPWszmHdoTWtTjNamIchXPNqzsbqf6HiOFioUCsXvE0oczTETUYddoxX8IGBTfwHXD7EMjY6MTbHqz0lRv1cbuTqUb2frQJGy69PdlGBzf4GyG9A6SVi0pGzKrk9fLirY+L5z53HGvCzbh0p4YUjjJGEkkeQqLpomWN6ZZrTk7q/vJCEIQ8bKEjcIKbs+YSgxdY1GyyIUUKh6PLV5iDPnNdDdlCBu6Vi6YLBQxapVFU/HjPr5JrK+xsouz+4cPeS8HCi0JqqUe36IbepYhkbB8fAm2qPMkFEWt3Ripk5XJk6xGpVAyMRMLEPD9UOGiw5J22D1IuUnUigUirlGiaM5ZrDg8MLucXpHSgznq5T9kCCU6JpgYLxCSyaGbWhcekrr6xYleLXG5Jl8OxJJKCUNcZPNAwVyZY+ObKxeuHDyg90yBCOlqDXJy7U6RhcvaWHLQIHndo2zd7xCUy0ba7TkEoQh5/Y0ccUZHTy9Y7Re3wkRiSLXD9Fq1xUzdYJQMlp0EJogZRtUXJ8124a5trEbxwsYKrps6S+QihmYukZz0mJxa4rGRLSE1ZaJ8YstQ4xXDj0vBxbjnFylvLUmbiaKNR4so2xyzapz5jewfaQURZscD11EhTjfuDSqlq5QKBSKuUWJozmm7Phs6s+zbahEyYkiHpKo99iYJhiv+vVxrwevxZh84HLSWClqdDtSdPHDkKobMFR0aB2068tMEonjhRQdj6GiQ9mJDNp+KLn/+b1cfVYXN1y8iNZ0H89sH6E/XwWgOWlx4aKmKT3mtg4UeK43WrZLmFGkpuqHGLogZmmEAeQdH4nEzsQYKro88lI/2bjJloECAA0JEzcI0QT05SoMFR06MjbzG+MgJeOVw8/LTMU4J6qUDxaqeIFkflMcAWwbKs6YUTa5ZtVo2eXU9jR+a1QIc7zi0pmNc9VZXSpqpFAoFMcAJY7mmKLjs324RL7iIQFdEEU/AD+U5Cse24aKFF8ncfRajMmTl5PGSi7P7x6j7AZk4yamblK1AvpyVV7aO05jMkau4pGveoyXXMYrLq4f9WhLWAZBKNk1XOKB5/fw3pXz+dibFvOec7qm9UwTQrBrpMRPXx5gIF+ld6TMvlwFS9ewDQ0/DLF0DdeXVL3IL2SZOj1NSRKWzu6xMv/xdC8d2RgruxsZL3t1QScE5Moe7ZkYb1zWyuMbB494Xg4sxpmNmyxrT/HinhyBkFi6Rq7iHTKj7MCaVRPLeOf2NJ0wxnyFQqH4fUSJozmmVHUpVKI2GpoASbQ0BQKBJJRQqHiUqu7rcv6jMSYfyMRyUtnz2TZc3O8pqt2DF4Q0Jy1Kjsee0RKBhJgpcHxJEBI1tRXQO1JieWeWFfOybB8usXb7CO9fNX/GnmnPbB/hm7/aQX+uim1qGLrANnTSMYOWlM14xSUIJSUnMjhnYgaaJojkJmRiBiNFJ+r3BjQmLVYlGylUfTw/xA1C/CAklBzVvBysGOfV53QdspL4gZzoPeEUCoXi9xEljuaYF/cVCGX06JYAUtb2yPq2UEbjLlraNuvnn6l57WQO1Y5iYjnpud5RhgtO5ClCUHJ9hvJV+nJRrR8B5GqRMUsXICBtm6RqWXleEN3pTBGZyZlio0WH//PL7ewZr9DTlMAydApVj76cg+uHxEydpoSNFwQEIVi6hhdKPM9n61ARAcxrjJOwDApVn0LVJx2L/u0FIaaukY2b9I6WkVLiByF7xys0xM0pZu2DzctsCRuVhaZQKBTHF0oczTFRtChCSggn7RMHjHs9OFjz2uh6Dt2OYsIns3FfnpGiS8zUKTgevcMlchWPIATbEHiBJAglhiEIZbRciABq9XsyMYOqH1Ko+iTt/RGZA4tHburP0ztSYWlrkpgZfVUzcZO2lEV/IYokJW0TLwjIVyMjs+MFBFLWIzwlNxKBLUmboaLDloECIyW3Lo6Slo6la6zfPc6u0TKD+SotKZvmlM3i1hRNSeuQ8yKEoC1t1+9hsOCoyI9CoVCc4ChxNMc0JS00IlEkD9g38VrUxr0eHKp57ZG0o+huSnDNOV3sHClRqHoMFVzKTkDM0PGlJAxDvDCqNxQ3dQwhKLg+jhcyv9EkEzPRNUHR8fBqafiWLtg2VORXW4coOwGLW1MkbYOyG+IFAXvGyvhSkrZNbEOQjluMlj2GCw6GiBrjhlJSdgIkkbDUNYGpCzw/ZNh1KFQ9pJTouqAhYdGcNClUA17elwMEui44vSODEJCv+JRGy4xXPE5tT+H44UHn5UQv5qlQKBSK6ShxNMes6ExPE0UHImvjXi9ebfPaCc7pbuCKM9p5YtMgpapPQyLGeNnFrYa4gUQQ1f4xNI0ghLihk696vDJQIBMzQAh0oTGQq1L1fUDwnad7GcxXaU3ZeIGkMWlSdX38UDJQcMjXokxhKNG0yONUdgP2jlcxdAiCEAmYOtiGBmi4QUAYSvwQ3CBgY3+elqTFWCkSZn4Q4oYhUgq2DxVZ1JJk1YImtg0XGS44DOSqSCm5ckXHjM1sZ7tXm0KhUCiOD5Q4mmP2jFf324wOgpTRuGWdr991vBa/zJ6xCuMVn/5clT3jVUxdkq8G+EHIxNuFiKI2EgjCyGier/hUXR+JwNAE//1yH0nLoLsxTtkLaU3bxE2d3pES63a5DBeq+IEEIQhCHy+QSKJMsLipIQR4YUiu7OPX5jQIwfUlkkh0BbV1SwEITVDyAopuQCghZuokLJOYKRgsuDyzfYSLFrewqicybI/XCk9eekrrNKP4bPdqUygUCsXxgxJHc8zusfIRRY52j5Vf92t5NUbgydGSlQsaGS0NMFR0cGrqZKIswYTBfDISqAagiciQ7XhRhpgfBHghJMsGhqbh+JEwCcIQQxMEUlL1JEEY0hC3cPyQXNnFNnR0A3y5f0kykBDUo1cSTYsM7rqAhKkjpUDXiaqRuz5VN6ApGUMSUHKDek+0TMwkaRnsHClR9UIOZDZ7tSkUCoXi+EKJozmmL+cckTjqyznRv19l/7NXy4T5ePdombGyR2PCpLspUTcdP/i7vbzSX6AjG6Pg+Th+ACGYGnjhfoP5wa5QA5KGwA0lZTfEMsANNRwvqhRecQN8GSJrB/Jq5Q0kEASQr3qEMloqswQUq/4Ur5YgugZBLRFQRueEKKqkC4muaQihETcMilWHsuujC41MfGpPtENl7r2WkggKhUKhOL5R4miO6UibRzzu9TT7ziS69oxV+MmLfTy5aZDdo2UqfoClaTSnLLqbEkhJ1Ey2Vmwxqg0UwAFZdzDdbD5BCJQ8WR/v+CCqft2gHsiQ2iEBsDUIBPgTYsmPsuAsI2pMG4Y1ITTDOf1wfyRLE+D6AUiJKXVcP7pvXUCu4jO/IU7GNhgpu9Fy4GEy915LSQSFQqFQHN8ocTTH+OHh4kYRQ0XndTP7Hii6LF2gC8G2oQKb+qP+aAGRoCg4PsMll1cGCpi1vmEQLVUdWIrgSJn8Hgk4vkQICIKg7h2awJeRwdrUiczVgSQMo2WzQIKuCzTAD+QUgVRfZgN0LfICaUJQcgM8P2S87BLIKHPONqPCkQXHRxMCNwgP2vZjgtdSEkGhUCgUxzdKHM0x42XviMa9tDfHorbsrJt9d4+Wuf+5PeyrNXnVaxWrn905Rr7i1Xu9GbqGLqKCjRNRG9eN/jFxxiOTeYcnBIScubaTlICIDNyeDEBEy2OGDpoQaKLmKdIESEkgp0aRNCBpG5GhWkp2j1cIAxl5nUoui1uSnNvTxGjRYetQiWzCxA/Cw2buvdaSCAqFQqE4flHiaI4ZrxyZB2XzQInl85pm1ewrpeQnL+zj2Z2j6EKwdahIf86h5HqUqj7epMwuzw9xDnacIz7jkTPTMSfuPJQSgyhyNFFP0tA0/FoDW10IYqZGEEhkramshiBEsqglAQjKXoCQ0JaycANJxZ3oY9ZIa9omCEMuWtzEm09rY3Fr6oi8Xa+1JIJCoVAojk+UOJpj2rJHVtzR9yWb+gskLGNaQcijMftO9hZtGyzys40DSAQtKZvhgkPR8ai4AYGc6t15PQTQ4Qhr5umQKLtM1wRBbf2uWvMaTZiTTF3DD2tmbCFq5REkph4VhUzaBoYmaMvEo3mq+lEbk5iBrmm4fkDVC8lVfCzD4/Su7KsSNKo3mkKhUPz+ocTRHLOkOXlE45qSUR+x7UNFGhONB+3zNVn82IZguOiSq3g0JCzSts4zO8fq7The3pdnz3iV0ztSVDyf/oITeXVq5upjhS4i/xBE/iBNCISUSAlCizxHuiZoTtp4QUjVD2lNWQwUXMbLLn4QmbgFYJs6MUPjvJ4mUrZOU8rG0jWM2pqdH0pMXUPKkP68w9Vnd9Wz8V6toFG90RQKheL3CyWO5pi4bdbT3g+GBjSl43gBjBSdKLW81lV+stnX8QK+v24PO4dL7BwpsW2oSNnxgeiBLaWkMxvj1PY0IChUXKquz/rd4+iaRqHiEsr9wmQu0QBNi/xDB54/Zmh4QQgyEjvZuI0bBNimzjkLGtg5UmbncIm4pdPVECdXdik5ftTHLQiJWRandqTQNI3BfJWOGQzT24aKnDEvy6qexmn7VBRIoVAoTm6UOJpjDCGwDB3vEEtihi6Yl40zWvEYyFUZK7u1XmP7zb49TQkeeH4P+8arVL2Ql/bkyFU8nCDA9/cbk3ePVXmudxzL1Gop6tHylWmIQwq02WRiuW7atv39aNG1ydsE2bhJ1Q0RQMnzaUlZXHVWJ1ed2cm9T/eyd6xC1Q3QNIEQgoRtYuoCQxcsbEoyVHDQtKiK9uEM0xOCaPtQkZf25RktOriBVH3SFAqF4iRFiaM5JgQsQ8Pxg3oW2GQ0InGUipm0ZeJICVUvYOdIqW72vWhREz95sY9fvjICUrJjOGoCGxwkvd6X4E/KNBNQr2g9F0QG6shD5AeRcAtr92oagqRtYOkCxw/xAknc0kiaOgubEyQtg7ZMjA+c383KBY2s3zXOlsEi7Rmb0ZLLWMVDhtCUNGlK2WRiBhJBWzrGUNGhLW3TmLToHSnPaJieKGvwwu5xNvTl8QJJd1Oc09ozxCxd9UlTKBSKkxAljuaY+Y0xhIgiKYZGPZJTy0QHJiInBgUn4MoVHVx6SitVLyRu6bSmLP7rt3u49+leHD/E0AX5qnfEUaBjYbaWRIIwZRkUHB/HDzF1QcI26MzEaEqajBQ9BosOpgampuGFML8xyUVLmqcImQdf2MtAvkp3U4KWtM3m/kLNR6TTkrKImwYjJQc/lLRnYuQqHu9ZOQ8hxLSlsolWKKMll9Gyi2VotKVNxsseL+wZ55wFjapPmkKhUJyEKHE0x5TdqF+YLqLlIF2AV+soL+oCSbJjuMzS9hQXL2mpNz3dPVrm336xnf94ehfDRZeEpeMFM0egjgW6iEReMKmNiCbAqEWMCo4fLYFZOsiobpME9o47VFyfmKGzsCVBT1MCNwj5wPkL6p6giUavZSegNWVHqfpSYugaDQmDouMzXHRpSwsMTcPUtXpWX9ULWdgy1Qg/uXFseybGjuEyjQkL29CxDZ2hYrTMtqqnUfVJUygUipMMJY7mmKoXYOk6DYmo/YUbyNrDHzQkmhGJpnkN8SlLObtHy/xg3W5+vnmQouOhETVtdWvC6lijAZmYQSBrYk8ChJFQMXQcL/IHzW+Is6ApztahMmU3YCxwiZsG7ZkY2YSFF4TsGqvQ05SguylRj9RMNHpd3JrCCyT9+Spp20AXgiCQxA2dQsVDF4IFTQnSsUgwHayFx+TGsY4X4Ichpm4iiQpEGpqgL1chX0mRipmqT5pCoVCcRChxNMcIIUjFDPxAo+pFtXZcIUCEhGFk1k7FDN5yeltdGE0Ub/zVthH2jVepuFFmFuH+pbhjja5F9yakRNei6JCpCVrTMVbMyxI3NfrzDqd1pnnvOV18+bEt/G5PngWNcUxDxzYEji8xBOweq9CetmlN7a/vNNHoNWEZLG5Nka945KsetqFRqkWdSq5PWzrG4tYUwCFbeExuHBtKiaFp5Coe+YpH0fHxwxDXlzy/e5wlrUnVJ02hUChOIpQ4mmPmN8bpzMboG6/ghxIvDDEMDV3TMIXACUJ0IaJ2GDXW7xrniU2DVF0fL6wZq4XAOxY5+AfBMjR0IfCQJCyDTMyg4oV0NsQ5vSuDQNCSjjxAo2WfmGnQkY1R8UM8KenPeeSqHlUvQBcae8Yq/G5PjpULGoGpjV6bkhbnLGhk+1CRQFbIVzzGXJekZXDGvAymLg7bG23y8dIxg7ip83JfDlMTxE0DQxcIQkaKDkNFhyvO6FB90hQKheIkQTvWF3Cy0Z6JccGiplpn+5C2tE1r2qIxbmGZGnHLoDll8cpgESmjAo1rd4xQdHwaE1a9WGNQa756rJh8bo2oxcdELr4fBAwVHOKmzhk1YQRRZW+n1vTVNnXO72kibZv0DpcZKDgIBO3pGItakhSqPg+u38fu0TKwv9Frf66ClJKmpMWqnkbecmobb1veTndjgu6mOKGU5Coep3VmDplhduDxQNad6lJKql4QRb/0mhHseAnRKRQKheJ1R0WO5hghBBctbua/X+wnLwR+KBG1Zq+60OhqinH2/Gw99RxgIFclG7dARv3FIDIov16Pa439WW0T7Tzq189+YRT1MIOAaLBlaFRrPipL18jGjbowgv2VvRsSFrahYZsaCUujNWWTTZgYukbM0HD8ECGg4vlTssRmavQ6ERS6ZFkzb1rWRmPSOqLijZOP99LeHLmKz8LmJGMVl7GSGy0N2gZdjXE60jHyVV8ZshUKheIkQYmjY0BjwuK0zjSOF7BnrELVC4iZOgsa4yxpz5CNm+wcKdUNwLomaM/YbB8qIQBd1/BlgHwdstRMbX+qv6lrtaWnkDAMCScCKLUMtHTMwA1CXD8kFTNpSlhYuk6IZFlrkrIXsm24yKpkI8j9HqDlnWk29OV5bucooyWX1rSNbUZ+HokkX/XoyMZY1JKakiU2241eJ4730O/2saGvQMoyaE5adDcmmNcQpyVtk44ZhCFTPg+FQqFQ/H6jxNExIG7pWLpGsepjGVq9DtBEpGNy7zSAmBm1yRjMV9GEwEDiM71mkSCK5liGhgxD/DAqAHmkmLrA0jV0AZapsaApyantaX7bO8qe0QqZuIEbRD3PEpaGpWuMV3wWNMXIxE3Ont+AZWi8MlCk7AXYhsZQwaE/V6Xk+HUPkKZprF7czMa+HMNFh3mNkSna9UPyVY+EpbOkJTVjg93ZbvTa3ZTgD86dx0C+StwyaIibpGPGAb3sPGXIVigUipMIJY6OAY4XMFhw2DNWZkFTImon4of0FxxyVZ+mpMn5i5rrBuCFLUk29eU5c16WvrzDWMlBY//y1oT+EQI0rVZhUgiEkDTGDHRNMF72DiqU6seSEj8I0U2NhrjNuQsaWdyaImnp/HD9PrIJi85sDEuPlr5GSy6BhPZMHF2LqlJn4iYp22T7UJGhohMVWCy6nL2gYUp0p7spwTVnzWPncJlC1afk+hiaRkc2xpKWFI1Ji0J1ZlEy241e2zMxzpiXZVNfnnRsaqHHyb3slCFboVAoTg6UOJpjpJQ8vWOUTNykM4y8LJmYwDI00rbB7rEyugYXLWqqP6QnvDFjJZfT2lPsHtMpVFz68lUCGRVflAjCUBKGEl9E6fSpmME7V3Qigcc3DDBSEzMTaEDc0jA0DTcI0IRAExrtGZuUbTBaclnUImlJ2yxtSxHKqBls2QswNI3upgTxooPjB3Q3RrWFAJqSFo2JRvpyFcZKHn904YLImH1AdOecBQ1cuaKD53eN0ZWNY5l6FLWpearmSpQczM80Ux82hUKhUPz+o8TRHDNRfPCU9jSen2TbcJGRokvB8TC0qNFpU8Kqe3CAKV4bL5AMFBwyCYvmVIzhkkOxGqX4y1ASNw3itk57OkbC1hkuuwyMO2hC0Jy0qHghSTtKYx8puVh6lLCoSw1DE2hCUPVDpPTYM15hWVuKoaLDZae1UXV9+nNVsgmLTMxEF5KfbR6i5Pi0pi0OTJ8ruwFnL2iYURhBJEouXtLCQL7KeNmj3dQJw2gZa65FyWz7mRQKhUJx4qLE0RwzufhgyjZYlWykUPXx/BDT0EhYOr0j5Wnm3wmvzaWntLJ9sNY9vuQwUnLYM1YhCKMK1S0pi9Z0DA34wfN7cH2JrgsqfuQBEkyUARAEIaBDfJIQC6QkZmj4QchgvsrWwQI9LUmuOrMToC4eekdLDBWcWhsUWLttlN1jFU5rz2Cb2hGLm+NJlMy2n0mhUCgUJyZKHM0xk4sPJi2NvpxD2fVJWAZNSZOiExzU/DvhtWnPxLhoSTMD+Sp7xqI6PTFTp1D1eHlfgR1DBZ58ZZixkottaDRZJq6mRUUjBVS8ADeI0uVNQyOUUfZZVIwyamXiheD6AfNq4mVCpMxvjLN+1zgPvrAXgc3i1hSOF7JpIM+e0Qr9uSrLOzOc1d1wxOLmeBIls+1nUigUCsWJhxJHc8xE8cGfbxqkP1dhuOTiBxJDF7QkLTqycd58WtthfTZ7xir1aIvjh3WTty5gx0iJfNnD1CMR1pcPSJhm1BQWSRBKQgmmJvD8AIiW09K2QXdTAl0IBvNVTFPjPWd3TRM4rwwVAcFZ8xsQQpCOwRtSLeS7PLYNFelpSfK+c+ehaUdeY1SJEoVCoVAcLyhxNMcIIYgbGi/tyVF0o8y0bMyk4vn0jpQZLri8c0XHIaMmu0fLPPD8HkZLLumYScrS2TlcYudICc8PKblRk9e4qWFqgpIXRCZqXSAQxMwoZT8Io0KLAkFb2qYpaeEHkpLvk4qb9DQlSMbMKeee3LB18jUKIcgmLJa1pxkruQwVXSV2FAqFQnFCosTRHBOGIU+9MoxlavSk4pTckIoXogmNBU1xik7AU68Mc9VZnTNGXqSUrNk2zOb+Im4QUKgW8IOQ/lwVPwgpuSF+GAISP5ToQmBpghBoTljELY2xskc2ZpKOG+QrHgAVL2TnSLkewWq0NLoa4vUWJhNCaLJnaiZmqk2kUCgUCsWJhBJHc8yGvkK09NScIGUZ5Ko+rh8ggYSpk7ADtg4W2NBX4IyuzDQfzvrd4zzw3F721hrXxk0dAeSrHlU3JAglUkQFHTUh0TSBH0S9z7xQsiBtA4LLTmvjrHkZvr22l/GKS3c6gW1oFCoee3MVBgsOMdOg6PgsbEnW/UOTPVMpe/rX58AClgqFQqFQnGgocTTHjJddXD/q+7FrrMJ42aXk+PihxNAECUvHCyRPbxtmQ1++7imyDY1M3GTrYIHe0RKmrtGasqi4IQOFKlUvqPdAq/V/JQgkHhJdRBlqJcdj33iFxa0p/sd583lm5xjzGhN0ZGOMljzyVY+RklvLpDNr/dFMNvXl6c9VeO/K+cxvjNeLUi5pTamCiQqFQqH4vUOJozmmIWEhkewYLuEHUfd3KaM+ZkEYkq/6hKHkwd/1cUpHilPaM8RNnbLr88stQwwVHaSUxC0dgaDqBZiawBUCL5AYGiAERu14YRgiESAEjhfQnLL5yCWLsU2dl/fmaE1ZZOMmEnh+9zgCmNcQx/ElY2UPKWFJa4ptQ0XWbh/h/avmq4KJCoVCofi9RomjOeb0jhRxU6dvrELC1glCGS2BaQJT1xgr+9i6wAsCwkCStHSEiNLrdU1g6oJAgueF6ELgBCGWoSOlxPH9qGI2koSl43gCNwgwNBFFnhImt7xlKV0Nce5/fi/P7x4naetYuk7C0smVPVrTMYTQsAxJwfHwgrCeSTZRh+h4qk2kUCgUCsVso8TRHDNc8pjfmGDvWIWholsTOAIpA6SUGLqGaeg0JW1Gyh6Fqk8mbuIFIV4oaU7ZDBcdvDCkXA5wvZC4pSFqDWMhyhzzA4ltCnTNoCVt0ZS0WNaaImGbPPD8HvaOVUhaBhnbQNME/fkqI0WHtG1gGzquH2JoGmatgvaBRuvjqTaRQqFQKBSziRJHc0zFDbAMjaakSa62bBWGEhBRPzRbJwjBMjTcIMQLIieRqUdCJQxDQimouCFSSsq+T8kDTUSiSBAtuSXtaNlNmLC0NU06pnNWdwNbBgqMlT3OnJfFCyT9+SqtKZu2tM1g3qG/UGWxrZOvenRkYvV+aTMZrVVtIoVCoVD8PqLE0RwTMzWGCw6GpjOvMU4oZeQREoKYqTNacnCCKF1+QhABpGMGMUPjxb0FBJCKGfhBGFW7rvmK4qaOrgt0EVW8TloGHdkYHRmLppTNKW1pHts4QGc2jqZpLG5Nka94DBUd0jGDhoTBcCGqqt0Yt1hcM1wro7VCoVAoTiaOvISxYlaxjP1RIlOLDNQQ+YoMXTBUqNKcMOuRmwncIGocu6ApKsKoaQJNRNlpcUvjtI4UHZkYRSeg6AZ0ZmMsn9fAe1fOpzFpTalR1JS0OGdBIx2ZGFUvxK55l5CwrD1FNm5SqEZVr5XRWqFQKBQnCypyNMdUvZDWtE3VCxnIV8lVouw0QxPoGiRjFgnLIGWb6Lqg6ER91wbyFfpyVRa1JGlOWuQqHqGMBI6l6wQyxA8kXgjNKZu2TIx0zOSPLuzhjK4MQggG8tVpNYqakhaNiaj57VjZZWFzFCEaL3vsHCkpo7VCoVAoTjqUOJpj4paOpWuUHY+KG+D5IV4YAgJTA6H5LG1NccMbFpKv+vVssKobkIkbXLCwmea0xa6RMq4f0pyyiVs6oZT0jVc5a16WtnSMhKXTO1omZRv1aM9EX7cDaxRF/dEMBgtVLlrSwvvOncdQ0VVGa4VCoVCclJxU4uhrX/sa//iP/0hfXx9nnHEGd999N2984xvn9BpaUxYjJZftwyUcL8ALQQJE1YiougENCZPLl7cjhKhngxUdn5+8sI9Yrb5RY9IiFTPRtahfmueHJG2DtnSMTG05bCYD9ZHUKNI0TRmtFQqFQnHSctJ4jr73ve9x22238elPf5rnn3+eN77xjbzjHe9g165dc3odgwWHVwYLFJwAty6MIrwQim7A1qEigwWnng22sCXJGV0ZFrWm6M9VkFKSjhk0pyaW10LyVY/mpEU6ZtQN1AtbktMM1BM1ik7rzJCrREtnuYrHaZ0Z3rtyvlo6UygUCsVJz0kTOfryl7/MRz7yEf7sz/4MgLvvvpuf/vSnfP3rX+euu+6as+voHSmya6R8yDG7Rsr0jhTpyMbr22aK+ixsSjJUcNg6WKQ5ZbOwOUnROXylalWjSKFQKBSKg3NSiCPXdVm3bh2f+tSnpmy//PLLWbNmzYzvcRwHx3Hqr/P5/Kxcy/pdY7iBPOQYN5Cs3zXGhYtbp2w/sDK144f0NCVoz8SIGRq5qoftH5mBWtUoUigUCoViZk4KcTQ8PEwQBLS3t0/Z3t7eTn9//4zvueuuu/jc5z4369eyfaj0msbNFPVpTVnKQK1QKBQKxSxx0niOgGmCQUp5UBHx13/91+RyufrP7t27Z+Uaqv6ho0ZHMm6yF6k9E6sbqCdeK2GkUCgUCsWr56SIHLW0tKDr+rQo0eDg4LRo0gS2bWPbs18NemlrclbHKRQKhUKhmF1OisiRZVmsWrWKxx57bMr2xx57jIsvvnhOr+VNp7Ri6YeO7Fi64E2ntB5yjEKhUCgUiteHkyJyBHD77bdz/fXXc95557F69Wr+/d//nV27dvHxj398Tq/jzPkNrFzQwG92jhHOsHKmCVi5oIEz5zfM6XUpFAqFQqGIOGnE0Qc+8AFGRkb4/Oc/T19fHytWrODhhx+mp6dnTq9D0zRuf/up/O0PX2T3aAUvCKn1nsXUNbqb4tz+9lPRtJMiqKdQKBQKxXGHkFIemUP4JCefz5PNZsnlcmQymdd8vGe2j/Bfv9nF7/bk6llmZ8/Pcu35C7hwcfMsXLFCoVAoFIpX8/w+aSJHxxsXLm7m/IWNbOgrMF52aUhYLO9Mq4iRQqFQKBTHGCWOjiGaprFiXvZYX4ZCoVAoFIpJqDCFQqFQKBQKxSSUOFIoFAqFQqGYhBJHCoVCoVAoFJNQ4kihUCgUCoViEkocKRQKhUKhUExCiSOFQqFQKBSKSShxpFAoFAqFQjEJJY4UCoVCoVAoJqHEkUKhUCgUCsUkVIXsI2SiBV0+nz/GV6JQKBQKheJImXhuH00rWSWOjpBCoQBAd3f3Mb4ShUKhUCgUR0uhUCCbPbKWXUIejZQ6iQnDkH379pFOpxFCzNpx8/k83d3d7N69+4i7BSteHWqu5w4113OHmuu5Q8313DDb8yylpFAo0NXVdcTN3VXk6AjRNI358+e/bsfPZDLqP7Y5Qs313KHmeu5Qcz13qLmeG2Zzno80YjSBMmQrFAqFQqFQTEKJI4VCoVAoFIpJKHF0jLFtm89+9rPYtn2sL+X3HjXXc4ea67lDzfXcoeZ6bjge5lkZshUKhUKhUCgmoSJHCoVCoVAoFJNQ4kihUCgUCoViEkocKRQKhUKhUExCiSOFQqFQKBSKSShxdIz52te+xqJFi4jFYqxatYpf/vKXx/qSjlvuuusuzj//fNLpNG1tbbznPe9h8+bNU8ZIKbnzzjvp6uoiHo9z2WWX8fLLL08Z4zgON998My0tLSSTSa655hr27NkzZczY2BjXX3892WyWbDbL9ddfz/j4+Ot9i8ctd911F0IIbrvttvo2Ndezx969e/njP/5jmpubSSQSnHPOOaxbt66+X8317OD7Pn/7t3/LokWLiMfjLF68mM9//vOEYVgfo+b61fGLX/yCq6++mq6uLoQQ/PCHP5yyfy7nddeuXVx99dUkk0laWlq45ZZbcF336G5IKo4Z9913nzRNU37jG9+QGzZskLfeeqtMJpOyt7f3WF/acckVV1wh77nnHvnSSy/J9evXy6uuukouWLBAFovF+pi///u/l+l0Wv7gBz+QL774ovzABz4gOzs7ZT6fr4/5+Mc/LufNmycfe+wx+dxzz8k3v/nN8uyzz5a+79fHXHnllXLFihVyzZo1cs2aNXLFihXyXe9615ze7/HCs88+KxcuXCjPOusseeutt9a3q7meHUZHR2VPT4+84YYb5DPPPCN37NghH3/8cbl169b6GDXXs8Pf/d3fyebmZvnjH/9Y7tixQ37/+9+XqVRK3n333fUxaq5fHQ8//LD89Kc/LX/wgx9IQD7wwANT9s/VvPq+L1esWCHf/OY3y+eee04+9thjsqurS950001HdT9KHB1DLrjgAvnxj398yrbTTjtNfupTnzpGV3RiMTg4KAH51FNPSSmlDMNQdnR0yL//+7+vj6lWqzKbzcp//dd/lVJKOT4+Lk3TlPfdd199zN69e6WmafKRRx6RUkq5YcMGCcinn366Pmbt2rUSkJs2bZqLWztuKBQKctmyZfKxxx6Tl156aV0cqbmePe644w55ySWXHHS/muvZ46qrrpJ/+qd/OmXbH/zBH8g//uM/llKquZ4tDhRHczmvDz/8sNQ0Te7du7c+5rvf/a60bVvmcrkjvge1rHaMcF2XdevWcfnll0/Zfvnll7NmzZpjdFUnFrlcDoCmpiYAduzYQX9//5Q5tW2bSy+9tD6n69atw/O8KWO6urpYsWJFfczatWvJZrNceOGF9TEXXXQR2Wz2pPtsbrzxRq666ire9ra3Tdmu5nr2ePDBBznvvPN4//vfT1tbGytXruQb3/hGfb+a69njkksu4Wc/+xlbtmwB4He/+x2/+tWveOc73wmouX69mMt5Xbt2LStWrKCrq6s+5oorrsBxnClL1YdDNZ49RgwPDxMEAe3t7VO2t7e309/ff4yu6sRBSsntt9/OJZdcwooVKwDq8zbTnPb29tbHWJZFY2PjtDET7+/v76etrW3aOdva2k6qz+a+++7jueee4ze/+c20fWquZ4/t27fz9a9/ndtvv52/+Zu/4dlnn+WWW27Btm0+9KEPqbmeRe644w5yuRynnXYauq4TBAFf+MIX+KM/+iNAfa9fL+ZyXvv7+6edp7GxEcuyjmrulTg6xgghpryWUk7bppjOTTfdxAsvvMCvfvWraftezZweOGam8SfTZ7N7925uvfVWHn30UWKx2EHHqbl+7YRhyHnnnccXv/hFAFauXMnLL7/M17/+dT70oQ/Vx6m5fu1873vf4z/+4z/4z//8T8444wzWr1/PbbfdRldXFx/+8Ifr49Rcvz7M1bzOxtyrZbVjREtLC7quT1Oyg4OD01SvYio333wzDz74ID//+c+ZP39+fXtHRwfAIee0o6MD13UZGxs75JiBgYFp5x0aGjppPpt169YxODjIqlWrMAwDwzB46qmn+MpXvoJhGPV5UHP92uns7GT58uVTtp1++uns2rULUN/r2eR//a//xac+9Sn+x//4H5x55plcf/31/OVf/iV33XUXoOb69WIu57Wjo2PaecbGxvA876jmXomjY4RlWaxatYrHHntsyvbHHnuMiy+++Bhd1fGNlJKbbrqJ+++/nyeeeIJFixZN2b9o0SI6OjqmzKnrujz11FP1OV21ahWmaU4Z09fXx0svvVQfs3r1anK5HM8++2x9zDPPPEMulztpPpu3vvWtvPjii6xfv77+c95553Hdddexfv16Fi9erOZ6lnjDG94wrSTFli1b6OnpAdT3ejYpl8to2tTHnq7r9VR+NdevD3M5r6tXr+all16ir6+vPubRRx/Ftm1WrVp15Bd9xNZtxawzkcr/zW9+U27YsEHedtttMplMyp07dx7rSzsu+Yu/+AuZzWblk08+Kfv6+uo/5XK5Pubv//7vZTablffff7988cUX5R/90R/NmC46f/58+fjjj8vnnntOvuUtb5kxXfSss86Sa9eulWvXrpVnnnnm73Ua7pEwOVtNSjXXs8Wzzz4rDcOQX/jCF+Qrr7wi7733XplIJOR//Md/1MeouZ4dPvzhD8t58+bVU/nvv/9+2dLSIj/5yU/Wx6i5fnUUCgX5/PPPy+eff14C8stf/rJ8/vnn66Vp5mpeJ1L53/rWt8rnnntOPv7443L+/Pkqlf9E46tf/ars6emRlmXJc889t56WrpgOMOPPPffcUx8ThqH87Gc/Kzs6OqRt2/JNb3qTfPHFF6ccp1KpyJtuukk2NTXJeDwu3/Wud8ldu3ZNGTMyMiKvu+46mU6nZTqdltddd50cGxubg7s8fjlQHKm5nj0eeughuWLFCmnbtjzttNPkv//7v0/Zr+Z6dsjn8/LWW2+VCxYskLFYTC5evFh++tOflo7j1MeouX51/PznP5/x9/OHP/xhKeXczmtvb6+86qqrZDwel01NTfKmm26S1Wr1qO5HSCnlkceZFAqFQqFQKH6/UZ4j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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure()\n", + "plt.scatter(y_true, y_hat, alpha=0.4)\n", + "plt.xlabel(\"Observed EcoCounter (test)\")\n", + "plt.ylabel(\"Predicted (test)\")\n", + "plt.title(\"Observed vs Predicted — test set\")\n", + "from pathlib import Path\n", + "plot_path = Path(\"../figures/obs_vs_pred_test.png\")\n", + "plot_path.parent.mkdir(exist_ok=True)\n", + "plt.savefig(plot_path, bbox_inches=\"tight\")\n", + "plot_path" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}