diff --git a/fa23-team-d/EDA_Notebooks/extension.ipynb b/fa23-team-d/EDA_Notebooks/extension.ipynb
new file mode 100644
index 0000000..20062da
--- /dev/null
+++ b/fa23-team-d/EDA_Notebooks/extension.ipynb
@@ -0,0 +1,1630 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " service_date | \n",
+ " route_id | \n",
+ " direction_id | \n",
+ " half_trip_id | \n",
+ " stop_id | \n",
+ " time_point_id | \n",
+ " time_point_order | \n",
+ " point_type | \n",
+ " standard_type | \n",
+ " scheduled | \n",
+ " actual | \n",
+ " scheduled_headway | \n",
+ " headway | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 2023-01-01 | \n",
+ " 01 | \n",
+ " Inbound | \n",
+ " 58061899.0 | \n",
+ " 110 | \n",
+ " hhgat | \n",
+ " 1 | \n",
+ " Startpoint | \n",
+ " Schedule | \n",
+ " 1900-01-01T06:05:00Z | \n",
+ " 1900-01-01T06:05:04Z | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 2023-01-01 | \n",
+ " 01 | \n",
+ " Inbound | \n",
+ " 58061899.0 | \n",
+ " 67 | \n",
+ " maput | \n",
+ " 2 | \n",
+ " Midpoint | \n",
+ " Schedule | \n",
+ " 1900-01-01T06:09:00Z | \n",
+ " 1900-01-01T06:06:28Z | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 2023-01-01 | \n",
+ " 01 | \n",
+ " Inbound | \n",
+ " 58061899.0 | \n",
+ " 72 | \n",
+ " cntsq | \n",
+ " 3 | \n",
+ " Midpoint | \n",
+ " Schedule | \n",
+ " 1900-01-01T06:12:00Z | \n",
+ " 1900-01-01T06:08:57Z | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 2023-01-01 | \n",
+ " 01 | \n",
+ " Inbound | \n",
+ " 58061899.0 | \n",
+ " 75 | \n",
+ " mit | \n",
+ " 4 | \n",
+ " Midpoint | \n",
+ " Schedule | \n",
+ " 1900-01-01T06:15:00Z | \n",
+ " 1900-01-01T06:12:41Z | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 2023-01-01 | \n",
+ " 01 | \n",
+ " Inbound | \n",
+ " 58061899.0 | \n",
+ " 79 | \n",
+ " hynes | \n",
+ " 5 | \n",
+ " Midpoint | \n",
+ " Schedule | \n",
+ " 1900-01-01T06:19:00Z | \n",
+ " 1900-01-01T06:16:35Z | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " service_date route_id direction_id half_trip_id stop_id time_point_id \\\n",
+ "0 2023-01-01 01 Inbound 58061899.0 110 hhgat \n",
+ "1 2023-01-01 01 Inbound 58061899.0 67 maput \n",
+ "2 2023-01-01 01 Inbound 58061899.0 72 cntsq \n",
+ "3 2023-01-01 01 Inbound 58061899.0 75 mit \n",
+ "4 2023-01-01 01 Inbound 58061899.0 79 hynes \n",
+ "\n",
+ " time_point_order point_type standard_type scheduled \\\n",
+ "0 1 Startpoint Schedule 1900-01-01T06:05:00Z \n",
+ "1 2 Midpoint Schedule 1900-01-01T06:09:00Z \n",
+ "2 3 Midpoint Schedule 1900-01-01T06:12:00Z \n",
+ "3 4 Midpoint Schedule 1900-01-01T06:15:00Z \n",
+ "4 5 Midpoint Schedule 1900-01-01T06:19:00Z \n",
+ "\n",
+ " actual scheduled_headway headway \n",
+ "0 1900-01-01T06:05:04Z NaN NaN \n",
+ "1 1900-01-01T06:06:28Z NaN NaN \n",
+ "2 1900-01-01T06:08:57Z NaN NaN \n",
+ "3 1900-01-01T06:12:41Z NaN NaN \n",
+ "4 1900-01-01T06:16:35Z NaN NaN "
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "import os\n",
+ "import pandas as pd\n",
+ "dfs = [] # Create an empty list to store dataframes\n",
+ "\n",
+ "# Example: Read multiple CSV files\n",
+ "arr_dep_dir = '../data/MBTA_Website/MBTA_Bus_Arrival_Departure_Times_2023/'\n",
+ "csv_files = os.listdir(arr_dep_dir)\n",
+ "csv_files = [os.path.join(arr_dep_dir, i) for i in csv_files][:6] \n",
+ "for f in csv_files:\n",
+ " df = pd.read_csv(f)\n",
+ " dfs.append(df)\n",
+ "\n",
+ "df = pd.concat(dfs, axis=0, ignore_index=True)\n",
+ "df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Reading sheet: Age\n",
+ "Reading sheet: Household Type\n",
+ "Reading sheet: Race\n",
+ "Reading sheet: Group Quarters Population\n",
+ "Reading sheet: Nativity\n",
+ "Reading sheet: Geographic Mobility\n",
+ "Reading sheet: Educational Attainment\n",
+ "Reading sheet: School Enrollment\n",
+ "Reading sheet: Means of Commuting\n",
+ "Reading sheet: Travel Time to Work\n",
+ "Reading sheet: Place of Work\n",
+ "Reading sheet: Per Capita Income\n",
+ "Reading sheet: Occupation\n",
+ "Reading sheet: Industries\n",
+ "Reading sheet: Labor Force\n",
+ "Reading sheet: Household Income\n",
+ "Reading sheet: Family Income\n",
+ "Reading sheet: Housing Tenure\n",
+ "Reading sheet: Bedrooms\n",
+ "Reading sheet: Vacancy Rates\n",
+ "Reading sheet: Vehicles per Household\n",
+ "Reading sheet: Poverty Rates\n",
+ "Reading sheet: Poverty Rates by Age\n"
+ ]
+ }
+ ],
+ "source": [
+ "file_path = '../data/2015-2019_neighborhood_tables_2021.12.21.xlsm'\n",
+ "\n",
+ "# Get the sheet names in the Excel file\n",
+ "xl = pd.ExcelFile(file_path)\n",
+ "sheet_names = xl.sheet_names\n",
+ "\n",
+ "# Create a dictionary to store data frames for each sheet\n",
+ "dfs = {}\n",
+ "\n",
+ "# Loop through each sheet and read it into a data frame\n",
+ "for sheet_name in sheet_names:\n",
+ " print(f'Reading sheet: {sheet_name}')\n",
+ " df2 = xl.parse(sheet_name) # You can use parse with sheet_name or parse with sheet index\n",
+ " dfs[sheet_name] = df2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "neighborhood_data = {\n",
+ " 'Place': ['Allston', 'Back Bay', 'Beacon Hill', 'Brighton', 'Charlestown', 'Chinatown', 'Dorchester', 'Downtown',\n",
+ " 'East Boston', 'Fenway', 'Hyde Park', 'Jamaica Plain', 'Longwood', 'Mattapan', 'Mission Hill', 'North End',\n",
+ " 'Roslindale', 'Roxbury', 'South Boston', 'South Boston Waterfront', 'South End', 'West End', 'West Roxbury'],\n",
+ " 'Latitude': [42.355537, 42.350707, 42.358708, 42.3489, 42.3787, 42.3492, 42.2995, 42.3555, 42.375097,\n",
+ " 42.345187, 42.2557, 42.311605, 42.3389, 42.272321, 42.333265, 42.365097, 42.291209, 42.3126,\n",
+ " 42.333431, 42.351938, 42.341310, 42.363919, 42.279265],\n",
+ " 'Longitude': [-71.132749, -71.079730, -71.067829, -71.1605, -71.0616, -71.0621, -71.0649, -71.0565, -71.039217,\n",
+ " -71.104599, -71.1256, -71.114384, -71.1072, -71.086995, -71.102029, -71.054495, -71.124497, -71.0899,\n",
+ " -71.049495, -71.049883, -71.077230, -71.063899, -71.149497],\n",
+ "}\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Place | \n",
+ " Latitude | \n",
+ " Longitude | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " Allston | \n",
+ " 42.355537 | \n",
+ " -71.132749 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " Back Bay | \n",
+ " 42.350707 | \n",
+ " -71.079730 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " Beacon Hill | \n",
+ " 42.358708 | \n",
+ " -71.067829 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " Brighton | \n",
+ " 42.348900 | \n",
+ " -71.160500 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " Charlestown | \n",
+ " 42.378700 | \n",
+ " -71.061600 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Place Latitude Longitude\n",
+ "0 Allston 42.355537 -71.132749\n",
+ "1 Back Bay 42.350707 -71.079730\n",
+ "2 Beacon Hill 42.358708 -71.067829\n",
+ "3 Brighton 42.348900 -71.160500\n",
+ "4 Charlestown 42.378700 -71.061600"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "neighborhood_data_df = pd.DataFrame(neighborhood_data)\n",
+ "\n",
+ "neighborhood_data_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import json\n",
+ "bus_stops_data = json.load(open('/Users/xavierohan/Documents/GitHub/ds-boston-transit-performance/fa23-team-d/data/stops.json'))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " Place Latitude Longitude num_stops\n",
+ "0 Allston 42.355537 -71.132749 507\n",
+ "1 Back Bay 42.350707 -71.079730 49\n",
+ "2 Beacon Hill 42.358708 -71.067829 7\n",
+ "3 Brighton 42.348900 -71.160500 730\n",
+ "4 Charlestown 42.378700 -71.061600 876\n",
+ "5 Chinatown 42.349200 -71.062100 30\n",
+ "6 Dorchester 42.299500 -71.064900 487\n",
+ "7 Downtown 42.355500 -71.056500 26\n",
+ "8 East Boston 42.375097 -71.039217 1229\n",
+ "9 Fenway 42.345187 -71.104599 66\n",
+ "10 Hyde Park 42.255700 -71.125600 375\n",
+ "11 Jamaica Plain 42.311605 -71.114384 66\n",
+ "12 Longwood 42.338900 -71.107200 40\n",
+ "13 Mattapan 42.272321 -71.086995 715\n",
+ "14 Mission Hill 42.333265 -71.102029 78\n",
+ "15 North End 42.365097 -71.054495 12\n",
+ "16 Roslindale 42.291209 -71.124497 104\n",
+ "17 Roxbury 42.312600 -71.089900 130\n",
+ "18 South Boston 42.333431 -71.049495 144\n",
+ "19 South Boston Waterfront 42.351938 -71.049883 28\n",
+ "20 South End 42.341310 -71.077230 85\n",
+ "21 West End 42.363919 -71.063899 12\n",
+ "22 West Roxbury 42.279265 -71.149497 234\n"
+ ]
+ }
+ ],
+ "source": [
+ "import pandas as pd\n",
+ "from geopy.distance import geodesic\n",
+ "\n",
+ "# Given data\n",
+ "neighborhood_data = {\n",
+ " 'Place': ['Allston', 'Back Bay', 'Beacon Hill', 'Brighton', 'Charlestown', 'Chinatown', 'Dorchester', 'Downtown',\n",
+ " 'East Boston', 'Fenway', 'Hyde Park', 'Jamaica Plain', 'Longwood', 'Mattapan', 'Mission Hill', 'North End',\n",
+ " 'Roslindale', 'Roxbury', 'South Boston', 'South Boston Waterfront', 'South End', 'West End', 'West Roxbury'],\n",
+ " 'Latitude': [42.355537, 42.350707, 42.358708, 42.3489, 42.3787, 42.3492, 42.2995, 42.3555, 42.375097,\n",
+ " 42.345187, 42.2557, 42.311605, 42.3389, 42.272321, 42.333265, 42.365097, 42.291209, 42.3126,\n",
+ " 42.333431, 42.351938, 42.341310, 42.363919, 42.279265],\n",
+ " 'Longitude': [-71.132749, -71.079730, -71.067829, -71.1605, -71.0616, -71.0621, -71.0649, -71.0565, -71.039217,\n",
+ " -71.104599, -71.1256, -71.114384, -71.1072, -71.086995, -71.102029, -71.054495, -71.124497, -71.0899,\n",
+ " -71.049495, -71.049883, -71.077230, -71.063899, -71.149497],\n",
+ "}\n",
+ "\n",
+ "\n",
+ "# Assign neighborhood to each bus stop and count stops for each neighborhood\n",
+ "neighborhood_counts = {neighborhood: 0 for neighborhood in neighborhood_data['Place']}\n",
+ "for stop, stop_data in bus_stops_data.items():\n",
+ " min_distance = float('inf')\n",
+ " closest_neighborhood = None\n",
+ "\n",
+ " for i, neighborhood in enumerate(neighborhood_data['Place']):\n",
+ " distance = geodesic((stop_data['latitude'], stop_data['longitude']), (neighborhood_data['Latitude'][i], neighborhood_data['Longitude'][i])).meters\n",
+ "\n",
+ " if distance < min_distance:\n",
+ " min_distance = distance\n",
+ " closest_neighborhood = neighborhood\n",
+ "\n",
+ " bus_stops_data[stop]['neighbourhood'] = closest_neighborhood\n",
+ " neighborhood_counts[closest_neighborhood] += 1\n",
+ "\n",
+ "\n",
+ "# Add a new column \"num_stops\" to neighborhood_data_df\n",
+ "neighborhood_data_df['num_stops'] = neighborhood_data_df['Place'].map(neighborhood_counts)\n",
+ "\n",
+ "# Display the updated DataFrame\n",
+ "print(neighborhood_data_df)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Neighborhood | \n",
+ " Total Public Transit | \n",
+ " Bus | \n",
+ " Subway or Train | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " Boston | \n",
+ " 33.2% | \n",
+ " 13.5% | \n",
+ " 19.7% | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " Allston | \n",
+ " 38.2% | \n",
+ " 18.8% | \n",
+ " 19.4% | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " Back Bay | \n",
+ " 24.8% | \n",
+ " 2.9% | \n",
+ " 21.9% | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " Beacon Hill | \n",
+ " 20.3% | \n",
+ " 2.2% | \n",
+ " 18.1% | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " Brighton | \n",
+ " 33.1% | \n",
+ " 14.5% | \n",
+ " 18.7% | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Neighborhood Total Public Transit Bus Subway or Train\n",
+ "0 Boston 33.2% 13.5% 19.7%\n",
+ "1 Allston 38.2% 18.8% 19.4%\n",
+ "2 Back Bay 24.8% 2.9% 21.9%\n",
+ "3 Beacon Hill 20.3% 2.2% 18.1%\n",
+ "4 Brighton 33.1% 14.5% 18.7%"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "means_of_comm = {\n",
+ " 'Boston': {'Total Public Transit': '33.2%', 'Bus': '13.5%', 'Subway or Train': '19.7%'},\n",
+ " 'Allston': {'Total Public Transit': '38.2%', 'Bus': '18.8%', 'Subway or Train': '19.4%'},\n",
+ " 'Back Bay': {'Total Public Transit': '24.8%', 'Bus': '2.9%', 'Subway or Train': '21.9%'},\n",
+ " 'Beacon Hill': {'Total Public Transit': '20.3%', 'Bus': '2.2%', 'Subway or Train': '18.1%'},\n",
+ " 'Brighton': {'Total Public Transit': '33.1%', 'Bus': '14.5%', 'Subway or Train': '18.7%'},\n",
+ " 'Charlestown': {'Total Public Transit': '25.3%', 'Bus': '12.3%', 'Subway or Train': '12.9%'},\n",
+ " 'Dorchester': {'Total Public Transit': '36.5%', 'Bus': '19.6%', 'Subway or Train': '16.8%'},\n",
+ " 'Downtown': {'Total Public Transit': '20.1%', 'Bus': '2.6%', 'Subway or Train': '17.5%'},\n",
+ " 'East Boston': {'Total Public Transit': '53.6%', 'Bus': '4.7%', 'Subway or Train': '49.0%'},\n",
+ " 'Fenway': {'Total Public Transit': '26.3%', 'Bus': '11.0%', 'Subway or Train': '15.2%'},\n",
+ " 'Hyde Park': {'Total Public Transit': '24.6%', 'Bus': '12.1%', 'Subway or Train': '12.4%'},\n",
+ " 'Jamaica Plain': {'Total Public Transit': '41.8%', 'Bus': '9.9%', 'Subway or Train': '31.9%'},\n",
+ " 'Longwood': {'Total Public Transit': '14.4%', 'Bus': '6.5%', 'Subway or Train': '7.9%'},\n",
+ " 'Mattapan': {'Total Public Transit': '33.4%', 'Bus': '20.0%', 'Subway or Train': '13.4%'},\n",
+ " 'Mission Hill': {'Total Public Transit': '38.6%', 'Bus': '10.4%', 'Subway or Train': '28.2%'},\n",
+ " 'North End': {'Total Public Transit': '23.9%', 'Bus': '0.9%', 'Subway or Train': '23.1%'},\n",
+ " 'Roslindale': {'Total Public Transit': '29.4%', 'Bus': '9.4%', 'Subway or Train': '20.0%'},\n",
+ " 'Roxbury': {'Total Public Transit': '41.9%', 'Bus': '31.2%', 'Subway or Train': '10.7%'},\n",
+ " 'South Boston': {'Total Public Transit': '36.6%', 'Bus': '22.6%', 'Subway or Train': '14.0%'},\n",
+ " 'South Boston Waterfront': {'Total Public Transit': '18.3%', 'Bus': '6.9%', 'Subway or Train': '11.4%'},\n",
+ " 'South End': {'Total Public Transit': '25.8%', 'Bus': '8.5%', 'Subway or Train': '17.3%'},\n",
+ " 'West End': {'Total Public Transit': '22.0%', 'Bus': '3.0%', 'Subway or Train': '19.0%'},\n",
+ " 'West Roxbury': {'Total Public Transit': '18.6%', 'Bus': '6.7%', 'Subway or Train': '11.9%'}\n",
+ "}\n",
+ "# data from https://data.boston.gov/dataset/neighborhood-demographics/resource/d8c23c6a-b868-4ba4-8a3b-b9615a21be07\n",
+ "\n",
+ "meanas_of_comm_df = pd.DataFrame(means_of_comm).transpose()\n",
+ "means_of_comm_df = meanas_of_comm_df.reset_index()\n",
+ "means_of_comm_df.columns = ['Neighborhood', 'Total Public Transit', 'Bus', 'Subway or Train']\n",
+ "means_of_comm_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "+-------------------------+-----------+------+\n",
+ "| Place | num_stops | Bus |\n",
+ "+-------------------------+-----------+------+\n",
+ "| Roxbury | 130.0 | 31.2 |\n",
+ "| South Boston | 144.0 | 22.6 |\n",
+ "| Mattapan | 715.0 | 20.0 |\n",
+ "| Dorchester | 487.0 | 19.6 |\n",
+ "| Allston | 507.0 | 18.8 |\n",
+ "| Brighton | 730.0 | 14.5 |\n",
+ "| Charlestown | 876.0 | 12.3 |\n",
+ "| Hyde Park | 375.0 | 12.1 |\n",
+ "| Fenway | 66.0 | 11.0 |\n",
+ "| Mission Hill | 78.0 | 10.4 |\n",
+ "| Jamaica Plain | 66.0 | 9.9 |\n",
+ "| Roslindale | 104.0 | 9.4 |\n",
+ "| South End | 85.0 | 8.5 |\n",
+ "| South Boston Waterfront | 28.0 | 6.9 |\n",
+ "| West Roxbury | 234.0 | 6.7 |\n",
+ "| Longwood | 40.0 | 6.5 |\n",
+ "| East Boston | 1229.0 | 4.7 |\n",
+ "| West End | 12.0 | 3.0 |\n",
+ "| Back Bay | 49.0 | 2.9 |\n",
+ "| Downtown | 26.0 | 2.6 |\n",
+ "| Beacon Hill | 7.0 | 2.2 |\n",
+ "| North End | 12.0 | 0.9 |\n",
+ "+-------------------------+-----------+------+\n"
+ ]
+ }
+ ],
+ "source": [
+ "combined_df = pd.merge(neighborhood_data_df, means_of_comm_df, left_on='Place', right_on='Neighborhood', how='outer')\n",
+ "\n",
+ "# Drop the redundant 'Neighborhood' column\n",
+ "combined_df = combined_df.drop(columns='Neighborhood')\n",
+ "\n",
+ "combined_df['Bus'] = pd.to_numeric(combined_df['Bus'].str.rstrip('%'))\n",
+ "# Display the combined dataframe\n",
+ "# print(combined_df[['Place', 'num_stops', 'Bus']].dropna().sort_values(by='Bus', ascending=False))\n",
+ "\n",
+ "from tabulate import tabulate\n",
+ "\n",
+ "# Assuming 'combined_df' is the combined dataframe\n",
+ "table = tabulate(combined_df[['Place', 'num_stops', 'Bus']].dropna().sort_values(by='Bus', ascending=False),\n",
+ " headers='keys', tablefmt='pretty', showindex=False)\n",
+ "\n",
+ "print(table)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " stop_id Neighborhood\n",
+ "0 1 South End\n",
+ "1 2 South End\n",
+ "2 3 South End\n",
+ "3 4 South End\n",
+ "4 5 South End\n",
+ "... ... ...\n",
+ "5798 109901 East Boston\n",
+ "5799 109912 East Boston\n",
+ "5800 869411 Brighton\n",
+ "5801 869451 Brighton\n",
+ "5802 883321 Brighton\n",
+ "\n",
+ "[5803 rows x 2 columns]\n"
+ ]
+ }
+ ],
+ "source": [
+ "df_neighborhoods = pd.DataFrame(neighborhood_data)\n",
+ "stop_data = pd.read_csv('/Users/xavierohan/Documents/GitHub/ds-boston-transit-performance/fa23-team-d/data/stops_locations.csv') \n",
+ "# Function to calculate the distance between two points using Haversine formula\n",
+ "def haversine(coord1, coord2):\n",
+ " return geodesic(coord1, coord2).miles\n",
+ "\n",
+ "# Function to find the closest neighborhood to a stop\n",
+ "def find_neighborhood(stop_coord):\n",
+ " distances = df_neighborhoods.apply(lambda row: haversine(stop_coord, (row['Latitude'], row['Longitude'])), axis=1)\n",
+ " closest_neighborhood = df_neighborhoods.loc[distances.idxmin(), 'Place']\n",
+ " return closest_neighborhood\n",
+ "\n",
+ "# Assuming that the column 'route_id' represents the routes passing through stops\n",
+ "# Create a new column 'Neighborhood' in df_stops to store the assigned neighborhood for each stop\n",
+ "stop_data['Neighborhood'] = stop_data.apply(lambda row: find_neighborhood((row['X'], row['Y'])), axis=1)\n",
+ "\n",
+ "\n",
+ "# Group stops by route_id and aggregate the list of unique neighborhoods for each route_id\n",
+ "neighborhoods_by_stop = stop_data.groupby('stop_id')['Neighborhood'].unique().reset_index()\n",
+ "neighborhoods_by_stop['Neighborhood'] = neighborhoods_by_stop['Neighborhood'].apply(lambda x: x[0] if x else '')\n",
+ "# Now, neighborhoods_by_route contains the routes and associated neighborhoods\n",
+ "print(neighborhoods_by_stop)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "47: ['South End' 'Fenway' 'Chinatown' 'Longwood' 'Mission Hill']\n",
+ "65: ['Fenway' 'Brighton' 'Allston' 'Longwood']\n",
+ "76: ['Allston' 'Brighton']\n",
+ "44: ['Roxbury' 'Mission Hill' 'South End']\n",
+ "CT2: ['Fenway' 'Longwood' 'Mission Hill' 'Charlestown' 'Back Bay' 'South End']\n",
+ "{'47': ['South End', 'Fenway', 'Chinatown', 'Longwood', 'Mission Hill'], '65': ['Fenway', 'Brighton', 'Allston', 'Longwood'], '76': ['Allston', 'Brighton'], '44': ['Roxbury', 'Mission Hill', 'South End'], 'CT2': ['Fenway', 'Longwood', 'Mission Hill', 'Charlestown', 'Back Bay', 'South End']}\n"
+ ]
+ }
+ ],
+ "source": [
+ "route_ranking = pd.read_csv('/Users/xavierohan/Documents/GitHub/ds-boston-transit-performance/fa23-team-d/data/route_ranking.csv')\n",
+ "\n",
+ "stop_ids_by_route = df.groupby('route_id').agg({'stop_id': 'unique', 'time_point_order': 'unique'}).reset_index()\n",
+ "# Define the list of route_ids you want to visualize\n",
+ "route_ids = route_ranking[-5:]['route_id'].values \n",
+ "\n",
+ "top_10_most_late_routes_neighbourhoods = []\n",
+ "unique_neighborhoods_by_route = {}\n",
+ "for route_id in route_ids:\n",
+ " # Get the list of stop_ids for the route\n",
+ " stop_ids = stop_ids_by_route.loc[stop_ids_by_route['route_id'] == route_id, 'stop_id'].values[0]\n",
+ " # Get the list of neighborhoods for the route\n",
+ " neighborhoods = neighborhoods_by_stop[neighborhoods_by_stop['stop_id'].isin(stop_ids)]['Neighborhood'].unique()\n",
+ " for neighborhood in neighborhoods:\n",
+ " if neighborhood not in top_10_most_late_routes_neighbourhoods:\n",
+ " top_10_most_late_routes_neighbourhoods.append(neighborhood)\n",
+ " # Print the route_id and associated neighborhoods\n",
+ " print(f'{route_id}: {neighborhoods}')\n",
+ " if route_id not in unique_neighborhoods_by_route:\n",
+ " unique_neighborhoods_by_route[route_id] = neighborhoods.tolist()\n",
+ " else:\n",
+ " unique_neighborhoods_by_route[route_id].extend(neighborhoods.tolist())\n",
+ "print(unique_neighborhoods_by_route)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['South End',\n",
+ " 'Fenway',\n",
+ " 'Chinatown',\n",
+ " 'Longwood',\n",
+ " 'Mission Hill',\n",
+ " 'Brighton',\n",
+ " 'Allston',\n",
+ " 'Roxbury',\n",
+ " 'Charlestown',\n",
+ " 'Back Bay']"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "top_10_most_late_routes_neighbourhoods"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "746_: ['Downtown' 'South Boston Waterfront']\n",
+ "171: ['South Boston' 'South End' 'East Boston']\n",
+ "SL2: ['South Boston Waterfront' 'Downtown']\n",
+ "SL1: ['Downtown' 'East Boston' 'South Boston Waterfront']\n",
+ "351: ['Brighton']\n",
+ "{'746_': ['Downtown', 'South Boston Waterfront'], '171': ['South Boston', 'South End', 'East Boston'], 'SL2': ['South Boston Waterfront', 'Downtown'], 'SL1': ['Downtown', 'East Boston', 'South Boston Waterfront'], '351': ['Brighton']}\n"
+ ]
+ }
+ ],
+ "source": [
+ "route_ranking = pd.read_csv('/Users/xavierohan/Documents/GitHub/ds-boston-transit-performance/fa23-team-d/data/route_ranking.csv')\n",
+ "\n",
+ "stop_ids_by_route = df.groupby('route_id').agg({'stop_id': 'unique', 'time_point_order': 'unique'}).reset_index()\n",
+ "# Define the list of route_ids you want to visualize\n",
+ "route_ids = route_ranking[:5]['route_id'].values \n",
+ "\n",
+ "top_10_on_time_routes_neighbourhoods = []\n",
+ "unique_neighborhoods_by_route = {}\n",
+ "for route_id in route_ids:\n",
+ " # Get the list of stop_ids for the route\n",
+ " stop_ids = stop_ids_by_route.loc[stop_ids_by_route['route_id'] == route_id, 'stop_id'].values[0]\n",
+ " # Get the list of neighborhoods for the route\n",
+ " neighborhoods = neighborhoods_by_stop[neighborhoods_by_stop['stop_id'].isin(stop_ids)]['Neighborhood'].unique()\n",
+ " for neighborhood in neighborhoods:\n",
+ " if neighborhood not in top_10_on_time_routes_neighbourhoods:\n",
+ " top_10_on_time_routes_neighbourhoods.append(neighborhood)\n",
+ " # Print the route_id and associated neighborhoods\n",
+ " print(f'{route_id}: {neighborhoods}')\n",
+ " if route_id not in unique_neighborhoods_by_route:\n",
+ " unique_neighborhoods_by_route[route_id] = neighborhoods.tolist()\n",
+ " else:\n",
+ " unique_neighborhoods_by_route[route_id].extend(neighborhoods.tolist())\n",
+ "print(unique_neighborhoods_by_route)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['Downtown',\n",
+ " 'South Boston Waterfront',\n",
+ " 'South Boston',\n",
+ " 'South End',\n",
+ " 'East Boston',\n",
+ " 'Brighton']"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "top_10_on_time_routes_neighbourhoods"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "age_data = {\n",
+ " 'Allston': {'Population': 19261, 'Median Age': 27.5},\n",
+ " 'Brighton': {'Population': 55297, 'Median Age': 30.8},\n",
+ " 'Charlestown': {'Population': 19890, 'Median Age': 35.7},\n",
+ " 'Dorchester': {'Population': 126909, 'Median Age': 33.4},\n",
+ " 'Downtown': {'Population': 18306, 'Median Age': 33.5},\n",
+ " 'East Boston': {'Population': 47263, 'Median Age': 30.6},\n",
+ " 'Fenway': {'Population': 33489, 'Median Age': 26.3},\n",
+ " 'Hyde Park': {'Population': 38924, 'Median Age': 39.4},\n",
+ " 'Jamaica Plain': {'Population': 40867, 'Median Age': 34.8},\n",
+ " 'Longwood': {'Population': 5351, 'Median Age': 20.2},\n",
+ " 'Mattapan': {'Population': 26659, 'Median Age': 36.7},\n",
+ " 'Mission Hill': {'Population': 17386, 'Median Age': 30.1},\n",
+ " 'North End': {'Population': 8749, 'Median Age': 31.1},\n",
+ " 'Roslindale': {'Population': 30021, 'Median Age': 39.8},\n",
+ " 'Roxbury': {'Population': 54161, 'Median Age': 32.5},\n",
+ " 'South Boston': {'Population': 36772, 'Median Age': 31.9},\n",
+ " 'South Boston Waterfront': {'Population': 4403, 'Median Age': 34.5},\n",
+ " 'South End': {'Population': 32571, 'Median Age': 37.1},\n",
+ " 'West End': {'Population': 6619, 'Median Age': 37.8},\n",
+ " 'West Roxbury': {'Population': 33526, 'Median Age': 42.8}\n",
+ "}"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "+-------------------------+-----------+------------+\n",
+ "| Place | num_stops | Median Age |\n",
+ "+-------------------------+-----------+------------+\n",
+ "| West Roxbury | 234 | 42.8 |\n",
+ "| Roslindale | 104 | 39.8 |\n",
+ "| Hyde Park | 375 | 39.4 |\n",
+ "| West End | 12 | 37.8 |\n",
+ "| South End | 85 | 37.1 |\n",
+ "| Mattapan | 715 | 36.7 |\n",
+ "| Charlestown | 876 | 35.7 |\n",
+ "| Jamaica Plain | 66 | 34.8 |\n",
+ "| South Boston Waterfront | 28 | 34.5 |\n",
+ "| Downtown | 26 | 33.5 |\n",
+ "| Dorchester | 487 | 33.4 |\n",
+ "| Roxbury | 130 | 32.5 |\n",
+ "| South Boston | 144 | 31.9 |\n",
+ "| North End | 12 | 31.1 |\n",
+ "| Brighton | 730 | 30.8 |\n",
+ "| East Boston | 1229 | 30.6 |\n",
+ "| Mission Hill | 78 | 30.1 |\n",
+ "| Allston | 507 | 27.5 |\n",
+ "| Fenway | 66 | 26.3 |\n",
+ "| Longwood | 40 | 20.2 |\n",
+ "+-------------------------+-----------+------------+\n"
+ ]
+ }
+ ],
+ "source": [
+ "age_data_df = pd.DataFrame(age_data).transpose()\n",
+ "age_data_df = age_data_df.reset_index()\n",
+ "age_data_df.columns = ['Neighborhood', 'Population', 'Median Age']\n",
+ "\n",
+ "combined_df = pd.merge(neighborhood_data_df, age_data_df, left_on='Place', right_on='Neighborhood', how='outer')\n",
+ "\n",
+ "combined_df['Median Age'] = pd.to_numeric(combined_df['Median Age'])\n",
+ "# Display the combined dataframe\n",
+ "# print(combined_df[['Place', 'num_stops', 'Bus']].dropna().sort_values(by='Bus', ascending=False))\n",
+ "combined_df = combined_df[['Place', 'num_stops', 'Median Age']].dropna().sort_values(by='Median Age', ascending=False)\n",
+ "from tabulate import tabulate\n",
+ "\n",
+ "# Assuming 'combined_df' is the combined dataframe\n",
+ "table = tabulate(combined_df,headers='keys', tablefmt='pretty', showindex=False)\n",
+ "\n",
+ "print(table)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "['West Roxbury' 'Roslindale' 'Hyde Park' 'West End' 'South End' 'Mattapan'\n",
+ " 'Charlestown' 'Jamaica Plain' 'South Boston Waterfront' 'Downtown'\n",
+ " 'Dorchester' 'Roxbury' 'South Boston' 'North End' 'Brighton'\n",
+ " 'East Boston' 'Mission Hill' 'Allston' 'Fenway' 'Longwood']\n",
+ "['South End', 'Fenway', 'Longwood', 'Mission Hill', 'Brighton', 'Allston', 'Roxbury', 'Charlestown']\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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XCUib6fz58/bzZs3nS4Ao0ePNh8fH/viiy+cZa5evWovvPCCzZkz567bGJ5x7do1a9WqlRUrVswWL17sTH/nnXfsySeftPfff99OnjxpZreveBcqVMjKly9va9euNTNakcS1yPvH0aNH7dSpU3b69GlnWsOGDa1gwYL25ZdfOl0E7lyXbRY3It7nH374wZ5//nmrVKmSdevWzTmH+PPPP6127dqWKVMm+/PPP93WgXdEfv+HDBliefLkcc4hRo8ebS+88IIlSJDA3n33XXv66actffr0dvDgQW+V+9iLOKYdO3bMKlasaN27d3eueH///ffm4+NjHTt2dLqKsn/FP4Tux0DEjnr16lVr2LChTZ8+3Y4ePWrffPON5ciRw0qXLu0su2LFCps5c6Z9+umntm/fPm+V/NiLfLK5YsUKW7JkidNMOcLp06dt27ZtVqtWLStVqpS5XC4bMWJElPXhOZHf5yFDhljlypXtqaeesvr169uBAwfMzOz99983l8tlbdq0sTfeeMMqVqxoRYsWdda9deuWN0p/bC1btsyeffZZq1y5si1atMiZ3qNHjyjBe/PmzVa6dGk7fPiwt8p9bEU+YezTp4+VLl3a0qVLZ1WrVrWxY8c68xo0aGCFChWyGTNmOM1hI3AcjFuLFi2yhAkTWrt27axbt26WNWtWq1Chgs2ZM8fMzHbs2GENGjSwJEmS2O7du71cLSL89ttv1rp1a/v++++jzFu6dKm98sor9tRTT5nL5bJevXrZrVu3CHRxKOK9jvjCMTw83EaNGmVly5a1jRs3Ost9//335u/vb61atXL+hyF+IXQ/gqI7mV+1apVVq1bNmjdvbkeOHHGWW716tWXPnt1KlSrllVoRVeR/ZiEhIZY1a1bLly+fpUiRwjp06GDnz593Wz4sLMz++usv69Kli6VNm9bOnDkT1yU/9nr37m2pUqWyTz75xN577z2rWLGipUqVyn755RczM5s1a5Y9++yzVqNGDXv++eedK+GEgrgT+b1evXq1NW/e3CpUqOB2xTsiePfr18/p401fOO/q16+fpUyZ0ubMmWMTJkyw7t27W4IECWzQoEHOMo0bN7a0adO6DVqIuBMeHm5nzpyxp556yoYMGeJMP3HihNWrV88qVKjgXN3+5ZdfrEWLFrZnzx5vlYtIZs6caU8++aTlyZPH2UYR4yREnItc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pUuXZt/yogULFpjL5bLEiRM7g9dF/C+7cuWKff3111ayZEl76qmnrGbNmk4rE3jXnbfVmz59ulWsWNHq1avn3Aps9+7dVqpUKevatas3SnysRT4fjPjfdOTIEZs2bZplzpzZKleubOPGjbMECRLYJ5984izLYJ8PD5cZX+k/Knr16qURI0Zo2LBh6tixoz7++GMNGTJEs2bNUvXq1WVmzreWN2/e1Pfff6/8+fMrV65cXq788RR5e0Q4cuSIXn/9deXIkUPvv/++kiVLppUrV6pGjRoqXLiwrl69Kj8/P23evJk+wV7Qu3dvjR8/Xm+99ZZu3rypuXPnKkWKFHrzzTf1zDPPaN68eZo7d65u3LihjBkzavTo0fLz81NYWJhbn27EnVu3bsnPz09XrlxR8eLFlTx5co0fP15FixaVJLaNl0W8/7Nnz1aHDh2UOHFi9e7dW02aNFHatGmd5X788Uft3LlT27ZtU44cORQSEiI/Pz9n+8KzIv5fXb9+XX/99Zd27dqln3/+WZ999pmmTp2qZ5991mkN5HK5dPPmTSVIkEBXr16lj2k8MG3aNC1dulSjR49WypQpnenTp0/X8OHDlSNHDo0aNUqZMmXS4cOHlSlTJvn40Bg2rkTsX2vWrNG6det06NAhNW7cWCVLllRgYKCuXbumF154QTdv3tSvv/6qgIAAzZ07V0WKFPF26YgNbyZ+PBiRr9a89957liBBAqtbt66lSZPGli9fbmZR++X89ddfcV4notevXz979dVXnfuif/7555YnTx7bunWrmd3evmvXrrXXX3/dPvjgA+fqDle449bu3bstX758breY2rlzpz333HNWuXJlt30q8rbhapz3RWyDixcvWo4cOaxEiRLO/gXvuPN2eWfOnLELFy5YSEiIZcmSxYYNG2anTp2Ksh77VtyLOH9YvHixvfnmm7Zz504zM/vrr7+sU6dOFhgY6HbP+/nz59tvv/3mti68q0+fPlayZEnr2LGjM3ZChNdee838/f2tXLlyduzYMWc6t7SMW3PnzrUkSZJYtWrVrFSpUpY0aVLr1KmTbd682Vlm3rx51qRJEwsKCnLbVng4ELofEZEPjgMGDDCXy2WdOnWKclISEhJiyZMnt8OHD8d1iYjGiRMnLG/evOZyuaxLly7Wv39/u3XrlrVq1cpKlix51/U42fS8O084Dh06ZBkzZnRuLxVxMvnHH39YqlSpor2NCiec8Ufk4J03b17LmTOn7dixw8tVYd26dbZhwwaneauZWffu3S1Lliw2atQoO336tJmZtWjRwvbv3++tMh87dx675s2bZ4GBgRYSEuIMcmdmdvDgQXvttdcsadKkNmLECHv33XctadKkUQa+Q9yJLiyHhYXZxx9/bKVLl7ZXX33VuZWlmdnYsWOtWrVq1rNnT4K2l+zfv99y5MhhkyZNcva96dOnW9GiRa1r165uX0CGhoY6x0U8XGg78ojw8fFReHi4pNvNzPv27asJEyZowoQJunLliiSpT58+GjVqlJYuXarg4GBvlvvYsjt6c6RLl06DBg1SokSJlCRJEh07dkxFihRRnTp1dPr0aQ0fPjza56E5pedFNK37/fffZWYKCwuTn5+fc+ubiFvk5MuXT4UKFdLvv/8e5Tm43VTcuHO/im5aRFPkZMmS6ZdfflFgYKACAgLiqkTodveMqVOnOo/ffPNNNWvWTNWqVdMrr7yiCRMmSJKGDRumJk2aaNSoUeratasqVaqk5cuX838rDrlcLt26dUuStHXrVnXs2FEjR47UoEGDlDt3bknS6dOnlSlTJn300Ufq0qWLhg8frmXLlmnlypXKmjWrF6t/fN26dcv537Vy5Ur99NNPWrNmjXx8fPTmm2+qefPm2rZtm9555x0dOXJE165d06pVq9SgQQMNGDDA7VwSnnPn/6fr16/r5s2byp8/v3Pe8MILL6hbt26aPHmy/vrrL2fZhAkTKnXq1HFaLx4QbyZ+PHh3NjX39fW1KVOmWEhIiPn7+ztNvuBds2bNsunTpztX39555x1r27atnTx50kJCQqxIkSKWIkUKy5Mnj9PsHHErPDzcli9fbi6Xy7kKN3ToUPPz87M5c+Y4y125csWKFi3KLTu8JOKqwJIlS+zll1+29u3bO91qohOxz9EKIW7t37/fqlWrZhUqVLB58+bZpk2bLH/+/LZu3Tr7/vvvrV27dvbkk0/a8OHDnXU++ugja9++vbVp04ZuNXFkzJgxVrVqVbdpP/zwg5UtW9YuXbpkly5dsilTpli1atWsYMGC9vLLL9v58+fNzOzUqVN29uxZb5T92Hv++eftq6++ch5369bNUqZMaZkzZ7aECRPac88955xLjB492sqUKWNJkiSxwoULW968eTkuxoGI8/PI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M7PmzZtb3rx5rXXr1lapUiVLkCCBhYSEcB9uL4ocmhcvXmzTp0+32bNnRwlqH330kXMRJmKf5LZ7cSvifV68eLG98MILVrJkSXvrrbecUf6PHz/utnzPnj2tZMmSXIR5jBC645l169bZ66+/7pzgf//991amTBlr1KiRrV692lku4oQm8oBriFsjR4604OBgp79ip06dbOjQoWZ2+6pcsmTJbOLEiWZmduHCBedbz++++44+wV40duxYK1mypF27ds3thObll1+2oKAgmz59ult/4PDwcE5a4kjk7XH06FErV66c1a5d27nl16JFiyxx4sT26quv2s6dO+3QoUPWu3dvy5gxI8HAy/r372+fffaZbdy40Vq2bGlp06Z1BlDbtWuXNWnSxPLmzWs5cuSwihUrOvemLVOmjM2aNcubpT+25syZY2XKlLGwsDBr166dpUuXzumX/+eff9ro0aOj9NOHd/To0cPSpEljxYsXt4QJE1rFihVt0qRJzvyJEyda+vTp7fLly27HUa50x62FCxdaQECAde/e3T7//HPLlSuXFS9e3O32eosWLbI333zTgoKCbMuWLd4rFnGO0B2PhIWF2ZAhQyxv3rzWsWNHp/nk4sWL7emnn7bGjRvbrFmzrF+/fuZyuZxRlRH3xo8fb/7+/m6DzzRo0MAGDhxo3333nSVNmtQ+/fRTM7u9XUePHm2jR492+wdI8PaOTz75xIKCguz69etmZs5Vnl9++cV8fHwsVapUzkivnLDErTu/3JgwYYJVrVrVmjRp4lzx/u677yxNmjQWHBxs2bNntyxZstimTZu8Ue5jLfK+MX/+fAsKCrJt27aZ2e2r202bNnUL3pcuXbKzZ8+6XaELCQmxjBkzRulKgLhToUIF8/HxsYwZM9rWrVu9XQ6i8dVXX1n69Olt48aNdvPmTTt48KA999xzVqlSJfvyyy/NzGzHjh2WMWNGO3z4sJerfXxEbkkQHh5up06dsqeeespGjhxpZrfP8dKkSWPdunVz1rl27Zp16tTJypYtG2W0eTz6CN3xzKVLl2zo0KFWsmRJe/XVV53gvXTpUqtZs6bly5fPcuTI4fTDQtybOHGiJUyY0BYsWOA2vVevXlalShVLliyZjR071pl++vRpq127tn344YdxXOnj7W7f9l+4cMEKFy5sderUcVofmN0eHfvtt9+2l19+2VKnTs2XWnEsInCvWLHCPvvsM2f61KlTrUKFCta0aVMneJ84ccJWrFhhy5cvp3uNl3311Vc2cuRIp5VPhJ07d1rTpk0tXbp09ssvv7jN27Jli9WrV88yZsxomzdvjsty8f8i9rfvvvvOcufO7fw/o1VP/NOrVy+rXLmymf13+/z1119Ws2ZNa9SokZmZ7du3z2rXrk03qDjy2Wef2fTp093OIc6fP28lSpSw48eP219//WUZM2a09u3bO/NXrFhhV65csatXr7rd0QGPD0J3PLB//363x5cvX7YPP/zQSpUqZR06dHCC94EDB2z37t1R+oUg7qxYscJcLpf169fPbXqnTp3s1VdftYIFC1rOnDlt/fr1dvnyZTt48KDVqlXLSpUqxZXtOBT5xHH8+PH24osv2qBBg5wT/IULF9qTTz5pFSpUsC1btti6devsmWeeseeff95OnDhhqVKluus9NfHgRWyvefPmWerUqe3VV1+1PXv2OPOnTJli5cuXtyZNmjhNzeEdoaGhTremS5cuWYYMGczlclmnTp2iLPv7779bixYtzOVy2Z9//uk2b+zYsbZr1644qRl3d+LECcuZM6f17t3b26XAzH766Sfr16+f9enTx5YsWWJmZv369bPSpUs7AS8iWC9dutR8fHyi7EcEb88KDw+3cuXKWcGCBW3OnDnOdjl27JhlzZrVaVbevn17Z1vs27fPnn32Wfvxxx+9WTq8jNDtZbt27bISJUpYz5493aZfvHjR+vTpYxkyZLA333wzyr0X4R179uyx8uXLW/369Z3WBo0aNbKcOXPa9evX7fDhw5Y7d24rVKiQpUmTxsqUKWOlS5eOci9aeE7kwN2vXz8LDAy05s2bW7p06axGjRq2cOFCMzNbvny5lS1b1pIkSWJZsmRxvhg5d+6c5c6d23744QdvvYTH0qpVqyxp0qQ2ZcqUaOfPnDnTKleubDVq1LB9+/bFbXEwM7O5c+dao0aNrFixYta/f38zMzt8+LCVKVPGcuXKFW2I3rp1q/Xu3ZtjXzz2xRdfWEBAQJQWCYhbkyZNsjRp0li1atUsc+bMFhwcbMuWLbMtW7aYy+WyMWPGuC2/YsUKK1KkCK194lDE+cXNmzetXr16VrhwYZs9e7YzRkXv3r3N19c3yp2FevXqZUWKFGHskcccodvLTp06ZR06dLCyZcs6JzERzp8/b9mzZ7fkyZPb66+/7p0CEcWePXvsmWeesTp16li5cuXsySefdOuTeOrUKVu+fLlNmDDBfvrpJ+dkkyvdcWvz5s3Wpk0bW7NmjZnd7vPWoEEDq1SpktvtpTZu3Gj79u1zmqCHhIRY3rx5+ecYh8LDw23w4MH2/PPPm9nt2+AsXbrUnn/+eWvevLktXrzYzG738a5bty4nmV4wfvx4CwwMtG7dutkbb7xhPj4+Nm7cODMzO3LkiOXLl89KlChxz/2G4B0/HT161CpVqsQxz4smTZpkCRMmtDlz5pjZ7SvegYGB1rp1azMz+/DDD83Pz88GDBhgmzZtsgMHDlitWrWscuXKjD0SxyKubIeFhVnz5s2tcOHCNmvWLLt586b99ddf1rJlS0uXLp2NHz/eJk6caJ07d7ZkyZIxZgII3XEtuv5Sp06dsu7du1vJkiXdgveZM2fsueees0GDBjE4RjyzZ88eq1atmgUFBdnXX3/tTL9bsOZkM25Nnz7dKlSoYE899ZRb3+xt27ZZgwYNrEqVKvbVV1+5rfPbb79Zx44dLXny5IwoGgfuPBb27NnTAgICbM2aNVavXj2rWbOm1a9f38qWLWtFihRxmjSfP3/eG+U+1iZNmmQJEiRwG8eiZcuW9sknnzjdnQ4fPmzFihWzkiVLEt4eQhEDSiLu3a3bWsaMGa1s2bJ24cIFu3jxoi1cuNBSpEhhwcHBli1bNrdWdATvuDVt2jR75513LCwszOrUqWNFihRxvjDZvXu3vfvuu5YxY0YrUaKENWzYkEHTYGZmLjMzIU6YmVwul37++Wf9/PPPOnfunKpWrarq1avrwoUL+uCDD7R69WqVKlVKHTp00JdffqmNGzdqzpw5SpUqlbfLxx3279+vTp06ycfHRz179lS5cuUk/Xc7w3t+/PFH9ezZU/v27dPUqVPVoEEDZ96OHTvUt29f7du3T8OGDVO1atUkSZs3b9aPP/6oBg0aKG/evN4q/bEQsY+sWbNG+/fvV9u2bXXp0iU1b95cmzZtUo0aNdS2bVtVrVpVv//+u5o0aaL//Oc/ypkzp7dLf+ysXLlSVapUUd++ffX+++8704sWLarw8HAdPHhQhQoV0muvvaYKFSqobt26unTpkjZs2KC0adN6sXLg4bB37161a9dOKVKk0HvvvacSJUqoUaNG+vbbb53zw8DAQLVo0UIBAQFKnz69kiRJosKFC8vX11e3bt2Sn5+ft1/GY+Ovv/5SzZo11bFjR3Xv3l23bt1Sw4YNdeTIEb3//vtq0KCB/Pz8dObMGaVKlUrXr19X4sSJvV024gFCdxybN2+e2rZtq+LFi+v69evauHGj3njjDfXq1Ut+fn4aP368Jk+erMuXLytRokSaO3eunnzySW+XjbvYu3evunbtKknq3bu3ypYt6+WKHj/h4eHy8fGJMn3t2rV6++23lSpVKr3xxhuqWrWqM2/z5s2aM2eOBgwYIF9fX2f6zZs3lSBBgjip+3EVEbjnz5+v1157TQ0bNlT37t2VO3duSbdPaLJnz+4s/84772jVqlVavHixUqRI4a2yH1vRBYLGjRtr+/btGjhwoAIDA9WjRw+Fh4dr6dKlCgsLU0hIiL744gu3fQvA3UWcS/j6+urChQu6evWqpkyZorx582rt2rXavXu3PvzwQ129elUtW7bUqFGjJElhYWHsZ3Fo69at+uqrr3T+/HmNHz9et27dkr+/vxO8jx49ql69eqlu3bpO0OZCDBxeu8b+GNq3b59lzpzZJk2a5DStnDlzpqVKlcp69OhhZrebeJ04ccLWr19vJ06c8Ga5iKE9e/ZYnTp1rESJEs59ahE3IjepW7Zsmc2ZM8e++eYb5x7cK1assKefftoaNmxoy5cvj/Y5aPof91asWGEBAQE2efLkuy7z448/2uuvv05z/3gg8jgWZcuWjTKOxaZNm8zlcjmDFEZg3wJiLnK3tdmzZ0eZf/78eVu5ciX7lZdcuHDBmjZtaqlTp7bq1as70yPON27evGkNGjSwLFmyRLmlLGBmRnsUD4i48nbnFbjr16/Lz89PJUuWdKa1aNFC4eHheuGFF9SwYUOVLVtWiRIlUrp06bxROv6FXLly6eOPP9Znn32mggULerucx0rE/vXWW2/p66+/dpv27bffqlKlSvrggw/Up08fffrppwoNDVWtWrXcnoOrBJ716aefKn369GrUqJHs9jgiWr58uVq0aKGXXnpJ58+f15YtW/Tll1/q+vXr6tSpk4KDg7VmzRpt2rRJq1evVqFChbz9Mh5ruXLl0ieffKLXXntNO3fu1KRJk5Q1a1aFh4c7V3Dy5csXpRsU+xYQc7ly5dL48ePVqVMnTZ06VRkzZnS6rd26dUtBQUGqWLGiJK5we0NgYKDeeustuVwuLVmyRF988YVeeOEF+fv768aNG0qYMKHmzp2rVq1aqXDhwt4uF/EQzcsfsIigffDgQS1dulRPPvmkSpQoIUnatGmTypQpozVr1qh06dIKDQ2Vv7+/JKlQoUJq27at3nzzTW+Wjwfgbs2d4RlTpkxRjx499MMPPyhTpkz6559/9NZbb2nz5s3asGGDsmTJohUrVqhDhw5q1KiRBg8e7O2SHxtnzpzRK6+8oo8//lg5cuRwpoeEhGjChAn69ttvNWzYMF2+fFkJEybUsWPHZGb6+eefde3aNUliPIt4JPI4FiEhISpfvrwkqV69erp8+bKWL1/OsQ/4H9FtLX6w/28Wbnc0D9+8ebOGDBmi48ePq0uXLmrWrJkkuZ3TA9EhdD9AEWFrx44datKkiQoUKKCXX35ZtWvXdpZp1qyZfv/9d/3nP/9x+i3euHFDTz/9tF599VW1b9/eW+UDD6WePXvq0KFD+uqrr5xpFy9eVL169RQeHq6ffvpJCRIk0NatW1WoUCGuDsSByCcp165dU+LEibVx40bt379fLVu21KFDh/Taa69pzZo1ql+/vl544QXVrFlT27dv13PPPaclS5boiSee8PKrQHQiAkFE8B4xYoR27typnTt3KkGCBHzpCDwAe/fuVbdu3XTy5ElNnjyZK6dxLOJ/2OrVq7VkyRJdunRJZcqUUdOmTeXn56dffvlFw4cP1/Hjx9W1a1c1adLE2yXjIcB/xgfIx8dHu3btUsWKFdWoUSONGTPGLXBLUvfu3fXEE0+odu3a+umnn7R69Wr1799fhw4dchvoCUDM/PPPP9q6davzOCwsTIGBgWrXrp1Onz6tM2fOSLo92rKvr6/CwsK8VOnjIaLJ8enTp/XPP/8oceLEunTpkt577z2NGjVK8+fPV5YsWfTdd9/pt99+05dffqmaNWtKkqZPn66goCAlS5bMy68CdxPR1NzlcqlKlSr6/fffncB969YtAjfwAER0W6tQoQLd1rwgYrDPunXr6siRI9qzZ4/GjBmjzp076+bNmypdurS6d++uTJkyqX///lq4cKG3S8bDwEt9yR9J165ds6ZNm1qnTp3cpt+4ccMOHz5s+/fvNzOzXbt2WdOmTS1x4sSWO3duK1CggG3evNkbJQMPjTNnzkQ7/ccff7QCBQrYiBEj3O6TvnjxYsuXLx/3uPeCvXv3WrZs2ezVV1+1U6dOmZnZ77//bnXr1rXKlSvbzJkz3Zb/v/buPqzm+/8D+PN0Xwo1Q2g11Q7NpC7lpvJlcoVNcbFkxCi6kG5QbprbnFYaQ6NtmNxdLjbKJLeL5oSEhSmRytLCNYVuRum8f3/49fk6X/b9sjqOm+fjus51dT7v93m/X5+6ztV5nfedUqkU06ZNE+bm5iInJ0cbIdNzysvLE9OmTZPec4+/94ioafEc7hfr5MmTwsbGRqxdu1YI8WiTO3Nzc9GuXTsxatQo6Xx0pVIpxo8fL4qLi7UZLr0i+JV0E9LT08ONGzfUzvg9cOAAIiMj0aVLF/Tr1w+DBg2CXC7Hjh07cPr0aRw6dAhHjx6Fk5OTFiMnerkdO3YMI0aMwC+//CJdE/+/MqZ79+7o3bs3du/eDYVCgbt376KoqAirVq2CjY0NOnTooK2w30gqlQqbN29GcXExCgoKEB0djbKyMjg4OCA+Ph6GhoZYt26dtPFdUVERUlNTcebMGWRkZMDR0VHLd0DPolOnTli1ahX09PR4TjCRhnEGyYtVUFAAd3d3BAYGori4GAMHDoSPjw/Cw8Nx6NAhTJ06FbW1tXBzc8OaNWtgbW2t7ZDpFcA13U3o3r176NGjBzw8PDBjxgzs2rULGzduRJcuXdCnTx+YmpoiJiYG3t7eWL58Oc/uI3pG+fn5CAoKgqmpKebMmSNtLNOwg+utW7egUCjw888/4/Lly5DL5TAwMMDJkye5zlQLcnJy0K9fP3Tv3h26urro1KkTZs+ejbZt2+LSpUsIDw9HXV0dpk6dimHDhqGsrAz6+vpo1aqVtkMnIiLC+fPn4eDggI8++giWlpZISkpCVVUVnJycUFJSAj8/PyQlJfGzPD0zJt1NLD09HV5eXmjfvj3Ky8sRHx+P/v37w87ODnV1dfj444+lNy8RPbuGDZyEEJg3b56UeNfV1UFfXx+1tbWora1FYmIiPD090bVrV+jq6nIUTsMe/8AhhIBKpYKuri7mz5+PmpoamJiYIC0tDR4eHpg1a5aUeEdEROCPP/7AggUL4O3treW7ICKiN1HDl/L3798HABgZGUllBQUF8Pb2RmJiIv71r3/h5s2bCAkJgZubG4YNGwYrKytthU2vIA79NLEPP/wQhYWF2LlzJwoLCxEUFAQ7OzsAj84sbdGiBaysrKTzaono2Ty+gVN0dDSUSiUAQF9fH0II/Pnnn/D19UVRURGcnJykTdOYcGtOw6Zp5eXluHXrFmQymTSjwNraGkqlEpGRkfD394dSqURcXJy0BCc2NhYdO3bkdHIiInqhTpw4gYqKCgCPpu7/9NNP8PPzQ//+/ZGUlCSVGRsb4+HDh9i7dy9u376NhIQElJWVYdSoUUy46blxpPsFqa2tRXR0NL7//nscPXoU9vb22g6J6JX0tBHvmzdvwtfXF6WlpcjLy4O+vr62w3xjXLlyBYMGDYKRkRFiYmIgl8shl8sBPPoS0sXFBXFxcViyZAlSU1Ph7u6O6dOno127dtIsBSIiIk0TQuDMmTNwdXVFdHQ0IiMjkZWVhUGDBmH06NGorq7Gtm3bEBISgvDwcLRr1w4KhQJJSUmora1FfX099u7dC2dnZ23fCr2CmHS/AFu2bEF2dja2b9+Offv2cdM0okZqSLxlMhkmT56MhIQEXL9+HefOnZOOLuIIt+apVCrpKDAzMzNYWlrCzs4OrVq1QlxcHH744QcolUp88803MDAwgEKhwKZNmzB8+HBER0dDR0eHa+GIiEjjHl8KlZCQgLCwMMTHx0Mmk0EmkyEsLAwAsGPHDkyaNAljx47FokWLYGxsjLy8PFy7dg3Ozs545513tHgX9Crjp1INy8/Px/r162Fubo4jR46gc+fO2g6J6JXXMNU8LCwMPj4+6NSpExNuLdDR0UFwcDCqq6tx7do1WFhYYNSoUZgzZw7GjBmD6upqpKenw8PDA+PHj0dUVBQMDQ0xYsQI6Orqajt8IiJ6AzSs275x4wauX78OPz8/WFhYwN/fH+3bt8fMmTOlur6+vhBCYOLEidDV1cX06dPh5OTEATNqNH4y1TC5XI7t27fD0NAQLVq00HY4RK8Ne3t7LFu2DLa2tli+fDmPLtISS0tLREZGIiYmBr/++isKCgqQnZ2NtLQ0pKenIz09HWZmZlL9xz/cEBERaVJDwp2bm4tJkybBxMQEpqam2LVrF2pqahAUFIQLFy6goqIC5ubmAICRI0dCV1cXvr6+MDY2xqJFi7gUihqN08uJ6LXAhFu7ysrKEBMTgxMnTmDMmDHSVL3CwkJ07NhRu8EREdEbp2FK+cWLF+Hu7o4pU6YgKCgIlpaWUhK9Zs0aBAcHIyYmBpMnT1YbIEtOToaDg4O0TwlRYzDpJiKiJnHjxg0oFAqcOnUKPj4+mDt3LoB/n6dORET0IpWXl8PHxwfOzs5YuXKldP3xL+oblqspFApMnToVzZs311a49BrjsBARETWJtm3bIioqCgqFAmlpaXjw4AEWLVrEhJuIiLTixo0bKCsrw/Dhw6Wp5gCgp6cnHXvZsDFreHg4qqurERkZycSbmhzP6SYioibTkHjb29vj+PHjuH37trZDIiKiN1ROTg6uXbsGDw8P6OjoQKVSSWUNJ2jU1NTA19cX3377LVavXo26ujotRkyvK04vJyKiJnfz5k0AQJs2bbQcCRERvamOHz+O/v37Y8uWLRg+fPhT66xcuRJ79+7FwYMHUV5eDgsLixccJb0JONJNRERNrk2bNky4iYhIq6ytrdG8eXNs2rQJ165dk64/PuZYUlKCbt26QaVSSTuYEzU1Jt1ERERERPTaad++PRITE3HgwAHMmzcPubm5ACBNK587dy5+/PFHBAYGStPNiTSB08uJiIiIiOi1pFKpsHbtWgQHB8POzg69evWCkZERSktLcfLkSezfvx9OTk7aDpNec0y6iYiIiIjotXbq1CnEx8ejoKAAZmZm6N27NwICAmBvb6/t0OgNwKSbiIiIiIhee/X19TzGkrSCa7qJiIiIiOi113BON6C+mRqRpnGkm4iIiIiIiEhDONJNREREREREpCFMuomIiIiIiIg0hEk3ERERERERkYYw6SYiIiIiIiLSECbdRERERERERBrCpJuIiIiIiIhIQ5h0ExEREREREWkIk24iIqKXhI2NDVasWPHM9YuLiyGTyZCTk/O3dZKSktCyZctGx/Y0CxcuRLdu3TTS9v/St29fhIWFaaVvIiKi58Gkm4iIqJE+++wzyGQyxMbGql1PSUmBTCZ75nays7MxadKkpg6PiIiItIhJNxERURMwMjJCXFwcKioq/nEbb7/9NkxMTJowKs2pq6vTdghERESvBCbdRERETcDT0xNt27bFF1988bd1lEolPDw8YGxsDCsrK4SEhKC6uloq/8/p5ZcuXYK7uzuMjIzg4OCAw4cPQyaTISUlRa3dwsJC9OvXDyYmJnB0dMSJEyee6DslJQX29vYwMjKCl5cXSkpK1MoTExNha2sLAwMDyOVybN68Wa1cJpMhMTER3t7eaNasGRQKhVS2efNm2NjYoEWLFvDz80NlZaVU9uDBA4SEhKB169YwMjKCu7s7srOz1drOyMiAq6srDA0NYWlpidmzZ+Phw4dSeXV1NcaOHQtTU1NYWlpi2bJlT9zfmjVrpPtr06YNRowY8ZS/ABER0YvHpJuIiKgJ6OrqIiYmBgkJCbh+/foT5VevXsXAgQMxfPhwnD9/Htu3b4dSqURwcPBT26uvr8fQoUNhYmKCrKwsfPfdd4iKinpq3aioKMycORM5OTl47733MGrUKLWktaamBgqFAps2bUJmZibu3LkDPz8/qTw5ORmhoaGYMWMGfvvtNwQFBWH8+PE4cuSIWj8LFy7EsGHDcOHCBUyYMEG6r5SUFKSmpiI1NRUZGRlq0+wjIyOxc+dObNy4EWfPnoWdnR28vLxQXl4OACgtLcXgwYPh4uKCc+fOITExEevXr8eSJUukNiIiIpCRkYHdu3fj4MGDOHr0KM6ePSuVnz59GiEhIVi8eDHy8/Oxf/9+9OnT52//VkRERC+UICIiokYZN26c8PHxEUII0bNnTzFhwgQhhBDJycmi4V9tQECAmDRpktrrjh07JnR0dMRff/0lhBDC2tpafPXVV0IIIfbt2yf09PREWVmZVP/QoUMCgEhOThZCCFFUVCQAiHXr1kl1Ll68KACIvLw8IYQQGzZsEADEyZMnpTp5eXkCgMjKyhJCCNG7d28xceJEtdg++eQTMXjwYOk5ABEWFqZWZ8GCBcLExETcu3dPuhYRESF69OghhBCiqqpK6Ovri61bt0rltbW1ol27dmLp0qVCCCHmzp0r5HK5UKlUUp3Vq1cLU1NTUV9fLyorK4WBgYHYsWOHVH779m1hbGwsQkNDhRBC7Ny5UzRv3lwtDiIiopcFR7qJiIiaUFxcHDZu3Ii8vDy16+fOnUNSUhJMTU2lh5eXF1QqFYqKip5oJz8/H1ZWVmjbtq10zdXV9al9du3aVfrZ0tISAHDr1i3pmp6eHlxcXKTnnTp1QsuWLaUY8/Ly4Obmptamm5vbE/fQvXv3J/q2sbGBmZmZWv8NfV+9ehV1dXVqbevr68PV1VWt7169eqltOOfm5oaqqipcv34dV69eRW1tLXr06CGVW1hYQC6XS88HDBgAa2trdOzYEf7+/ti6dStqamqe+rsiIiJ60Zh0ExERNaE+ffrAy8sLc+bMUbteVVWFoKAg5OTkSI9z587hypUrsLW1bVSf+vr60s8NyatKpWpUm0/TrFmz/9p3Q/+a6Pu/MTMzw9mzZ7Ft2zZYWlpi/vz5cHR0xJ07d15oHERERE/DpJuIiKiJxcbGYs+ePWobmjk7OyM3Nxd2dnZPPAwMDJ5oQy6Xo6SkBDdv3pSu/ecGZM/q4cOHOH36tPQ8Pz8fd+7cQefOnQEAnTt3RmZmptprMjMz4eDg8I/6a9CwMdvjbdfV1SE7O1tqu3Pnzjhx4gSEEGp9m5mZoUOHDrC1tYW+vj6ysrKk8oqKCly+fFmtLz09PXh6emLp0qU4f/48iouLkZ6e3qj4iYiImoKetgMgIiJ63XzwwQcYPXo0Vq1aJV2bNWsWevbsieDgYAQGBqJZs2bIzc3FoUOH8PXXXz/RxoABA2Bra4tx48Zh6dKlqKysxOeffw4Az3X2N/BoNHratGlYtWoV9PT0EBwcjJ49e0rT1SMiIuDr6wsnJyd4enpiz5492LVrFw4fPtyI38KjkfHJkycjIiICFhYWeOedd7B06VLU1NQgICAAADBlyhSsWLEC06ZNQ3BwMPLz87FgwQJMnz4dOjo6MDU1RUBAACIiIvDWW2+hdevWiIqKgo7Ov8cNUlNTUVhYiD59+sDc3BxpaWlQqVRqU9CJiIi0hUk3ERGRBixevBjbt2+Xnnft2hUZGRmIioqCh4cHhBCwtbXFyJEjn/p6XV1dpKSkIDAwEC4uLujYsSPi4+MxZMgQGBkZPVcsJiYmmDVrFj799FOUlpbCw8MD69evl8qHDh2KlStX4ssvv0RoaCjeffddbNiwAX379v1H9/642NhYqFQq+Pv7o7KyEt27d8eBAwdgbm4OAGjfvj3S0tIQEREBR0dHWFhYICAgQPqCAQDi4+NRVVWFIUOGwMzMDDNmzMDdu3el8pYtW2LXrl1YuHAh7t+/D3t7e2zbtg3vv/9+o+MnIiJqLJl4fD4XERERvbQyMzPh7u6OgoKCRq8DJyIioheDSTcREdFLKjk5GaamprC3t0dBQQFCQ0Nhbm4OpVKp7dCIiIjoGXF6ORER0UuqsrISs2bNwu+//45WrVrB09MTy5Yt03ZYRERE9Bw40k1ERERERESkITwyjIiIiIiIiEhDmHQTERERERERaQiTbiIiIiIiIiINYdJNREREREREpCFMuomIiIiIiIg0hEk3ERERERERkYYw6SYiIiIiIiLSECbdRERERERERBrCpJuIiIiIiIhIQ/4Pk1L1yF/8TkgAAAAASUVORK5CYII=",
+ "text/plain": [
+ "