diff --git a/freight_economic_competitiveness/ReadMe.md b/freight_economic_competitiveness/ReadMe.md
new file mode 100644
index 000000000..5c3575d20
--- /dev/null
+++ b/freight_economic_competitiveness/ReadMe.md
@@ -0,0 +1 @@
+Freight Economic Competitiveness Analysis conducted for Kelly McClendon to contribute to the SB125 conversation
diff --git a/freight_economic_competitiveness/freight_ec_data.csv b/freight_economic_competitiveness/freight_ec_data.csv
new file mode 100644
index 000000000..a4edec8aa
--- /dev/null
+++ b/freight_economic_competitiveness/freight_ec_data.csv
@@ -0,0 +1,32 @@
+sln,freight_ec
+03,
+04,17860.5
+05,3370.16
+07,19599.28
+10,3323.42
+11,3119.47
+12,1467.86
+15,3473.47
+18,4199.73
+19,4555.1
+22,3479.98
+23,16643.05
+25,
+27,771.96
+29,72.21
+30,10533.22
+32,1085.17
+37,7913.15
+39,12896.31
+40,11352.45
+42,4181.13
+43,
+44,2524.16
+45,3950.36
+47,2863.96
+50,9210.17
+53,618.38
+54,12667.98
+61,443.47
+62,9753.58
+63,7552.66
diff --git a/freight_economic_competitiveness/freight_ec_data.parquet b/freight_economic_competitiveness/freight_ec_data.parquet
new file mode 100644
index 000000000..7e6be911f
Binary files /dev/null and b/freight_economic_competitiveness/freight_ec_data.parquet differ
diff --git a/freight_economic_competitiveness/freight_truck_ec.ipynb b/freight_economic_competitiveness/freight_truck_ec.ipynb
new file mode 100644
index 000000000..9f9684f55
--- /dev/null
+++ b/freight_economic_competitiveness/freight_truck_ec.ipynb
@@ -0,0 +1,1133 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "08ac9974-c868-4ba3-8b63-f265950ab2d2",
+ "metadata": {},
+ "source": [
+ "# SB 125\n",
+ "## Cycle 4, Spring FY2024\n",
+ "### Freight Truck Economic Competitiveness\n",
+ "Created March 2024 \n",
+ "Analysis and write-up completed by Noah Sanchez for Kelly McClendon for a request he received from CTC, Angel, and Hannah \n",
+ "Geodatabase provided by Affi N'Guessan contained data from the FAF5 https://www.bts.gov/faf "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "1f582986-fe0c-42e8-b59d-642a330bd15f",
+ "metadata": {},
+ "source": [
+ "#### TCEP/SCCP Cycle 4\n",
+ "Project's included in the TCEP/SCCP Cycle 4 (https://experience.arcgis.com/experience/1173a09d9f7a452ca7be858c39546678/) were analyzed for freight movement to identify Freight Truck Economic Competitiveness. "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "22f01fe4-6bf6-4c37-ad1d-982268929218",
+ "metadata": {},
+ "source": [
+ "#### Methodology\n",
+ "ArcGIS was used to identify the segments in the FAF5 datasets that corresponded with Caltrans' Projects that were included in the TCEP/SCCP Cycle 4. Not all projects were included, only non-rail projects that had project lines that were within the limits of the various projects. Attribute tables that included the segments of the various projects were exported from ArcGIS Pro and imported into JupyterLab for this analysis. Each Project had the values in the column ['TOT_Tons_All_22'] averaged. "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "8ac14f1d-4898-44d1-afea-13b51f039a96",
+ "metadata": {},
+ "source": [
+ "#### Deliverable\n",
+ "This analysis is not a comprehensive economic analysis, but is being used to add to the conversation. The final deliverable is a CSV or Excel doc containing the Economic Competitive Analysis results and other general project information. The final deliverable was sent to Kelly McClendon and Affi N'Guessan via email on 3/21/2024. "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "05dee661-6eba-4926-9cb8-514ceeefb9f3",
+ "metadata": {},
+ "source": [
+ "#### Additional Research\n",
+ "We discussed potential future analysis could be performed, including a more detailed breakdown of the freight being transported per segment in an effort to identify the average value of the freight in a given area."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "780fed8b-b6f2-49f6-ba32-878834b95c4f",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# import modules\n",
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
+ "import pyarrow as pa\n",
+ "import pyarrow.parquet as pq\n",
+ "import os\n",
+ "import nbformat\n",
+ "from nbconvert import PDFExporter\n",
+ "from nbformat import read"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "0805fa7d-834c-41bf-9ffd-e1f06a4bd32d",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/opt/conda/lib/python3.9/site-packages/google/auth/_default.py:78: UserWarning: Your application has authenticated using end user credentials from Google Cloud SDK without a quota project. You might receive a \"quota exceeded\" or \"API not enabled\" error. See the following page for troubleshooting: https://cloud.google.com/docs/authentication/adc-troubleshooting/user-creds. \n",
+ " warnings.warn(_CLOUD_SDK_CREDENTIALS_WARNING)\n"
+ ]
+ }
+ ],
+ "source": [
+ "\n",
+ "\n",
+ "test_df = pd.read_csv(\"gs://calitp-analytics-data/data-analyses/freight_ec_2024/03_links_flow_trucks_SR132_West_3A.csv\")\n",
+ "\n",
+ "# do a for loop to read in the data\n",
+ "# f strings can be used to create an easier way to read-in all the data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "a05d78c1-aef6-4992-8dc1-9ca62afed631",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Create an easy to use GCS path\n",
+ "GCS_PATH = \"gs://calitp-analytics-data/data-analyses/freight_ec_2024/\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "fd83db53-11ed-47b4-82ec-9a8c51171cb7",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#test_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "e45ef50d-279a-469d-9b5f-e3c21916f1ac",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Assign the DataFrame names\n",
+ "\n",
+ "# assign names to the datafile that were exported from the FAF5 geodatabase\n",
+ "# the exported data includes FAF5 segments (similar to OSM segments) that contain Truck Freight Flow data\n",
+ "# sln == \"submission log number\"\n",
+ "sln03_data = '03_links_flow_trucks_SR132_West_3A.csv'\n",
+ "sln04_data = '04_links_flow_trucks_Sac5_managed_lanes.csv'\n",
+ "sln05_data = '05_links_flow_trucks_Konocti.csv'\n",
+ "sln07_data = '07_links_flow_trucks_sr132_west_phase2.csv'\n",
+ "sln10_data = '10_links_flow_trucks_SR46East_UnionRoad.csv'\n",
+ "sln11_data = '11_links_flow_trucks_SR46_AntelopeGrade.csv'\n",
+ "sln12_data = '12_links_flow_trucks_805_15_Transit_Only_Connector.csv'\n",
+ "sln15_data = '15_links_flow_trucks_SantaBarbaraUS101.csv'\n",
+ "sln18_data = '18_links_flow_trucks_sr84_us101_Interchange.csv'\n",
+ "sln19_data = '19_links_flow_trucks_I680_SR4_Interchange.csv'\n",
+ "sln22_data = '22_links_flow_trucks_SR37_SearsPoint_US101.csv'\n",
+ "sln23_data = '23_links_flow_trucks_TulareSixLane.csv'\n",
+ "sln25_data = '25_links_flow_trucks_centennial_corridor.csv'\n",
+ "sln27_data = '27_links_flow_trucks_HarborDrive_2_0.csv'\n",
+ "sln29_data = '29_links_flow_trucks_ScenicRoute_68.csv'\n",
+ "sln30_data = '30_links_flow_trucks_I680_NB_ExpressLane_phase1.csv'\n",
+ "sln32_data = '32_links_flow_trucks_I10_RiversideAvenue.csv'\n",
+ "sln37_data = '37_links_flow_trucks_AmericanCanyonSR29.csv'\n",
+ "sln39_data = '39_links_flow_trucks_SR60_WorldLogistics.csv'\n",
+ "sln40_data = '40_links_flow_trucks_SR60_RedlandsBlvd.csv'\n",
+ "sln42_data = '42_links_flow_trucks_i15_ExpressLanes_Southern.csv'\n",
+ "sln43_data = '43_links_flow_trucks_McCall_Boulevard.csv'\n",
+ "sln44_data = '44_links_flow_trucks_i15_sr74_ii.csv'\n",
+ "sln45_data = '45_links_flow_trucks_Watsonville1_SantaCruz.csv'\n",
+ "sln47_data = '47_links_flow_trucks_SR91_Central_Ave.csv'\n",
+ "sln50_data = '50_links_flow_trucks_harbor_scenic.csv'\n",
+ "sln53_data = '53_links_flow_trucks_HuenemeRoad.csv'\n",
+ "sln54_data = '54_links_flow_trucks_i5_managed_lanes.csv'\n",
+ "sln61_data = '61_links_flow_trucks_castrovilleBoulevard.csv'\n",
+ "sln62_data = '62_links_flow_trucks_multimodal_skyway.csv'\n",
+ "sln63_data = '63_links_flow_trucks_SC_SR71_GapClosure.csv'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "ab8ea0e0-cbcb-40c6-b7b6-5475190f19f5",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# create a function to import the data from a csv file\n",
+ "def getData(path):\n",
+ " # reads in the data from a .csv file\n",
+ " # add in an f string to designate the data path\n",
+ " df = pd.read_csv(f\"{GCS_PATH}{path}\")\n",
+ " return df\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "e934ca92-cf41-47e8-9087-eea0589dd8c3",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Pull in data\n",
+ "\n",
+ "sln03_data = getData(sln03_data)\n",
+ "sln04_data = getData(sln04_data)\n",
+ "sln05_data = getData(sln05_data)\n",
+ "sln07_data = getData(sln07_data)\n",
+ "sln10_data = getData(sln10_data)\n",
+ "sln11_data = getData(sln11_data)\n",
+ "sln12_data = getData(sln12_data)\n",
+ "sln15_data = getData(sln15_data)\n",
+ "sln18_data = getData(sln18_data)\n",
+ "sln19_data = getData(sln19_data)\n",
+ "sln22_data = getData(sln22_data)\n",
+ "sln23_data = getData(sln23_data)\n",
+ "sln25_data = getData(sln25_data)\n",
+ "sln27_data = getData(sln27_data)\n",
+ "sln29_data = getData(sln29_data)\n",
+ "sln30_data = getData(sln30_data)\n",
+ "sln32_data = getData(sln32_data)\n",
+ "sln37_data = getData(sln37_data)\n",
+ "sln39_data = getData(sln39_data)\n",
+ "sln40_data = getData(sln40_data)\n",
+ "sln42_data = getData(sln42_data)\n",
+ "sln43_data = getData(sln43_data)\n",
+ "sln44_data = getData(sln44_data)\n",
+ "sln45_data = getData(sln45_data)\n",
+ "sln47_data = getData(sln47_data)\n",
+ "sln50_data = getData(sln50_data)\n",
+ "sln53_data = getData(sln53_data)\n",
+ "sln54_data = getData(sln54_data)\n",
+ "sln61_data = getData(sln61_data)\n",
+ "sln62_data = getData(sln62_data)\n",
+ "sln63_data = getData(sln63_data)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "4c307bf0-0788-4951-ae24-6333444a622a",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Create subsets\n",
+ "\n",
+ "# Create subsets using only the [ID] and [TOT_Tons_22_All] columns\n",
+ "data_03 = sln03_data[['TOT_Tons_22_All']]\n",
+ "data_04 = sln04_data[['TOT_Tons_22_All']]\n",
+ "data_05 = sln05_data[['TOT_Tons_22_All']]\n",
+ "data_07 = sln07_data[['TOT_Tons_22_All']]\n",
+ "data_10 = sln10_data[['TOT_Tons_22_All']]\n",
+ "data_11 = sln11_data[['TOT_Tons_22_All']]\n",
+ "data_12 = sln12_data[['TOT_Tons_22_All']]\n",
+ "data_15 = sln15_data[['TOT_Tons_22_All']]\n",
+ "data_18 = sln18_data[['TOT_Tons_22_All']]\n",
+ "data_19 = sln19_data[['TOT_Tons_22_All']]\n",
+ "data_22 = sln22_data[['TOT_Tons_22_All']]\n",
+ "data_23 = sln23_data[['TOT_Tons_22_All']]\n",
+ "data_25 = sln25_data[['TOT_Tons_22_All']]\n",
+ "data_27 = sln27_data[['TOT_Tons_22_All']]\n",
+ "data_29 = sln29_data[['TOT_Tons_22_All']]\n",
+ "data_30 = sln30_data[['TOT_Tons_22_All']]\n",
+ "data_32 = sln32_data[['TOT_Tons_22_All']]\n",
+ "data_37 = sln37_data[['TOT_Tons_22_All']]\n",
+ "data_39 = sln39_data[['TOT_Tons_22_All']]\n",
+ "data_40 = sln40_data[['TOT_Tons_22_All']]\n",
+ "data_42 = sln42_data[['TOT_Tons_22_All']]\n",
+ "data_43 = sln43_data[['TOT_Tons_22_All']]\n",
+ "data_44 = sln44_data[['TOT_Tons_22_All']]\n",
+ "data_45 = sln45_data[['TOT_Tons_22_All']]\n",
+ "data_47 = sln47_data[['TOT_Tons_22_All']]\n",
+ "data_50 = sln50_data[['TOT_Tons_22_All']]\n",
+ "data_53 = sln53_data[['TOT_Tons_22_All']]\n",
+ "data_54 = sln54_data[['TOT_Tons_22_All']]\n",
+ "data_61 = sln61_data[['TOT_Tons_22_All']]\n",
+ "data_62 = sln62_data[['TOT_Tons_22_All']]\n",
+ "data_63 = sln63_data[['TOT_Tons_22_All']]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "83d96202-50e4-4a24-8931-4d2821057b08",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Create a function to average the Totals Column\n",
+ "def calculate_average_combined_freight(path):\n",
+ " try:\n",
+ " # Identify the dataset\n",
+ " data = path\n",
+ " \n",
+ " # Filter out NaN values from the specified column\n",
+ " filtered_data = data.dropna(subset=['TOT_Tons_22_All'])\n",
+ " \n",
+ " # Calculate the total of the specified column\n",
+ " total = filtered_data['TOT_Tons_22_All'].sum()\n",
+ " \n",
+ " # Calculate teh number of records with data in the column\n",
+ " count = filtered_data['TOT_Tons_22_All'].count()\n",
+ " \n",
+ " # Ensure count is not zero to avoid division by zero\n",
+ " if count != 0:\n",
+ " # Calculate the average\n",
+ " average = (total)/count\n",
+ " # Format the average to have two digits past the decimal point\n",
+ " formatted_average =\"{:.2f}\".format(average)\n",
+ " #Convert the formatted average back to a float\n",
+ " average_float = float(formatted_average)\n",
+ " # Convert the float to a DataFrame\n",
+ " # I had trouble with this one, still working on it\n",
+ " #formatted_average = pd.DataFrame(formatted_average)\n",
+ " \n",
+ " return average_float\n",
+ " else:\n",
+ " #print(\"No records with data in the column.\") # This step has been changed to a comment to clean up the final PDF version\n",
+ " return None\n",
+ " except Exception as e:\n",
+ " print(\"An error occurred:\", e)\n",
+ " return None\n",
+ "\n",
+ "# Create a function to rename the first column\n",
+ "def rename_col(df):\n",
+ " # rename the columns\n",
+ " mapping = {\n",
+ " df.columns[0]: 'freight_ec',\n",
+ " df.columns[1]: 'sln'\n",
+ " }\n",
+ " df = df.rename(columns=mapping)\n",
+ " return df\n",
+ "\n",
+ "\n",
+ "# Create a function to reorder the columns so the [sln] column appears first\n",
+ "def reorder_columns(df):\n",
+ " \"\"\"\n",
+ " Reorder columns from 'freight_ec' and 'sln' to 'sln' and 'freight_ec'\n",
+ " \n",
+ " Paramters:\n",
+ " df (pandas.DataFrame): Input DataFrame.\n",
+ " \n",
+ " Returns:\n",
+ " pandas.DataFrame: DataFrame with reordered columns\n",
+ " \"\"\"\n",
+ " # Ensure that the columns exist in the DataFrame\n",
+ " if 'freight_ec' in df.columns and 'sln' in df.columns:\n",
+ " # Reorder columns\n",
+ " new_df = df[['sln', 'freight_ec']]\n",
+ " return new_df\n",
+ " else:\n",
+ " print(\"Error: 'freight_ec_ and/or 'sln' columns not found in the DataFrame.\")\n",
+ " return df \n",
+ "\n",
+ "# Create a function to export the data to a parquet\n",
+ "def export_to_parquet(df, output_file):\n",
+ " \"\"\"\n",
+ " Export a Pandas DataFrame to a Parquet file.\n",
+ " \n",
+ " Parameters:\n",
+ " df (pandas.DataFrame): The DataFrame to Export\n",
+ " output_file (str): The path to the output Parquet file.\n",
+ " \n",
+ " Returns:\n",
+ " None\n",
+ " \"\"\"\n",
+ " # Convert the DataFrame to a PyArrow table\n",
+ " table = pa.Table.from_pandas(df)\n",
+ " \n",
+ " # write the PyArrow table to a Parquet file\n",
+ " pq.write_table(table, output_file)\n",
+ " \n",
+ " print(f\"DataFrame exported to Parquet successfully at {output_file}.\")\n",
+ "\n",
+ "# Create a function to export a notebook to a PDF\n",
+ "def notebook_to_pdf_with_code(input_notebook, output_pdf):\n",
+ " \"\"\"\n",
+ " Convert a Jupyter Notebook to PDF.\n",
+ " \n",
+ " Paramters: \n",
+ " input_notebook (str): Path to the input Jupyter Notebook.\n",
+ " output_pdf (str): Path to save the output PDF file. \n",
+ " \"\"\"\n",
+ " if not input_notebook_c.endswith('.ipynb'):\n",
+ " raise ValueError(\"Input file should be a Jupyter Notebook (.ipynb)\")\n",
+ " \n",
+ " if not output_pdf_c.endswith('.pdf'):\n",
+ " raise ValueError(\"Output file should be a PDF (.pdf)\")\n",
+ " \n",
+ " if not os.path.isfile(input_notebook_c):\n",
+ " raise FileNotFoundError(\"Input notebook not found.\")\n",
+ " \n",
+ " pdf_exporter = PDFExporter()\n",
+ " with open(input_notebook_c, 'rb') as f:\n",
+ " notebook_content = read(f, as_version=4)\n",
+ " body, _ = pdf_exporter.from_notebook_node(notebook_content)\n",
+ " \n",
+ " with open(output_pdf_c, 'wb') as f:\n",
+ " f.write(body)\n",
+ " \n",
+ " print(f\"Notebook successfully converted to PDF: {output_pdf_c}\") \n",
+ " \n",
+ "def notebook_to_pdf_without_code(notebook_path, output_path):\n",
+ " # Read the notebook\n",
+ " with open(input_notebook, 'r', encoding='utf-8') as f:\n",
+ " notebook = nbformat.read(f, as_version=4)\n",
+ " \n",
+ " # Iterate through each cell\n",
+ " for cell in notebook.cells:\n",
+ " # Hide code cells\n",
+ " if cell.cell_type == 'code':\n",
+ " cell['execution_count'] = None\n",
+ " cell['source'] = ''\n",
+ " \n",
+ " # Export to PDF\n",
+ " pdf_exporter = PDFExporter()\n",
+ " pdf_exporter.exclude_input = True\n",
+ " pdf_exporter.exclude_output_prompt = False # This can be changed if you want to hide teh output cells as well\n",
+ " (body, resources) = pdf_exporter.from_notebook_node(notebook)\n",
+ " \n",
+ " # Write PDF to file\n",
+ " with open(output_pdf, 'wb') as f:\n",
+ " f.write(body)\n",
+ " \n",
+ " print(f\"Notebook successfully converted to PDF: {output_pdf}\") "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "4e9de515-610a-4b6c-abf8-348d3b09e79d",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Use the calculate_average_combined_freight(path) function to identify the average\n",
+ "# freight tonnage for the segments in each of the project's limits\n",
+ "average_03 = calculate_average_combined_freight(data_03)\n",
+ "average_04 = calculate_average_combined_freight(data_04)\n",
+ "average_05 = calculate_average_combined_freight(data_05)\n",
+ "average_07 = calculate_average_combined_freight(data_07)\n",
+ "average_10 = calculate_average_combined_freight(data_10)\n",
+ "average_11 = calculate_average_combined_freight(data_11)\n",
+ "average_12 = calculate_average_combined_freight(data_12)\n",
+ "average_15 = calculate_average_combined_freight(data_15)\n",
+ "average_18 = calculate_average_combined_freight(data_18)\n",
+ "average_19 = calculate_average_combined_freight(data_19)\n",
+ "average_22 = calculate_average_combined_freight(data_22)\n",
+ "average_23 = calculate_average_combined_freight(data_23)\n",
+ "average_25 = calculate_average_combined_freight(data_25)\n",
+ "average_27 = calculate_average_combined_freight(data_27)\n",
+ "average_29 = calculate_average_combined_freight(data_29)\n",
+ "average_30 = calculate_average_combined_freight(data_30)\n",
+ "average_32 = calculate_average_combined_freight(data_32)\n",
+ "average_37 = calculate_average_combined_freight(data_37)\n",
+ "average_39 = calculate_average_combined_freight(data_39)\n",
+ "average_40 = calculate_average_combined_freight(data_40)\n",
+ "average_42 = calculate_average_combined_freight(data_42)\n",
+ "average_43 = calculate_average_combined_freight(data_43)\n",
+ "average_44 = calculate_average_combined_freight(data_44)\n",
+ "average_45 = calculate_average_combined_freight(data_45)\n",
+ "average_47 = calculate_average_combined_freight(data_47)\n",
+ "average_50 = calculate_average_combined_freight(data_50)\n",
+ "average_53 = calculate_average_combined_freight(data_53)\n",
+ "average_54 = calculate_average_combined_freight(data_54)\n",
+ "average_61 = calculate_average_combined_freight(data_61)\n",
+ "average_62 = calculate_average_combined_freight(data_62)\n",
+ "average_63 = calculate_average_combined_freight(data_63)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "a5816f34-8da2-40a7-9d34-2ea4d41f4102",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Create a DataFrame for each average value\n",
+ "df_03 = pd.DataFrame([average_03])\n",
+ "df_04 = pd.DataFrame([average_04])\n",
+ "df_05 = pd.DataFrame([average_05])\n",
+ "df_07 = pd.DataFrame([average_07])\n",
+ "df_10 = pd.DataFrame([average_10])\n",
+ "df_11 = pd.DataFrame([average_11])\n",
+ "df_12 = pd.DataFrame([average_12])\n",
+ "df_15 = pd.DataFrame([average_15])\n",
+ "df_18 = pd.DataFrame([average_18])\n",
+ "df_19 = pd.DataFrame([average_19])\n",
+ "df_22 = pd.DataFrame([average_22])\n",
+ "df_23 = pd.DataFrame([average_23])\n",
+ "df_25 = pd.DataFrame([average_25])\n",
+ "df_27 = pd.DataFrame([average_27])\n",
+ "df_29 = pd.DataFrame([average_29])\n",
+ "df_30 = pd.DataFrame([average_30])\n",
+ "df_32 = pd.DataFrame([average_32])\n",
+ "df_37 = pd.DataFrame([average_37])\n",
+ "df_39 = pd.DataFrame([average_39])\n",
+ "df_40 = pd.DataFrame([average_40])\n",
+ "df_42 = pd.DataFrame([average_42])\n",
+ "df_43 = pd.DataFrame([average_43])\n",
+ "df_44 = pd.DataFrame([average_44])\n",
+ "df_45 = pd.DataFrame([average_45])\n",
+ "df_47 = pd.DataFrame([average_47])\n",
+ "df_50 = pd.DataFrame([average_50])\n",
+ "df_53 = pd.DataFrame([average_53])\n",
+ "df_54 = pd.DataFrame([average_54])\n",
+ "df_61 = pd.DataFrame([average_61])\n",
+ "df_62 = pd.DataFrame([average_62])\n",
+ "df_63 = pd.DataFrame([average_63])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "a3195816-0c8a-4999-87bb-75f564fb387c",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# adding a column to the datasets called 'sln' which stands for 'submission log number'\n",
+ "# the value of the 'sln' column will correspond with that record's submission log number that is found on the TCEP_SCCP_Cycle_4... Excel doc\n",
+ "df_03['sln'] = '03'\n",
+ "df_04['sln'] = '04'\n",
+ "df_05['sln'] = '05'\n",
+ "df_07['sln'] = '07'\n",
+ "df_10['sln'] = '10'\n",
+ "df_11['sln'] = '11'\n",
+ "df_12['sln'] = '12'\n",
+ "df_15['sln'] = '15'\n",
+ "df_18['sln'] = '18'\n",
+ "df_19['sln'] = '19'\n",
+ "df_22['sln'] = '22'\n",
+ "df_23['sln'] = '23'\n",
+ "df_25['sln'] = '25'\n",
+ "df_27['sln'] = '27'\n",
+ "df_29['sln'] = '29'\n",
+ "df_30['sln'] = '30'\n",
+ "df_32['sln'] = '32'\n",
+ "df_37['sln'] = '37'\n",
+ "df_39['sln'] = '39'\n",
+ "df_40['sln'] = '40'\n",
+ "df_42['sln'] = '42'\n",
+ "df_43['sln'] = '43'\n",
+ "df_44['sln'] = '44'\n",
+ "df_45['sln'] = '45'\n",
+ "df_47['sln'] = '47'\n",
+ "df_50['sln'] = '50'\n",
+ "df_53['sln'] = '53'\n",
+ "df_54['sln'] = '54'\n",
+ "df_61['sln'] = '61'\n",
+ "df_62['sln'] = '62'\n",
+ "df_63['sln'] = '63'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "b25a8fae-95b5-4bad-a389-296787043cc8",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Rename the columns using the rename column function\n",
+ "df_03 = rename_col(df_03)\n",
+ "df_04 = rename_col(df_04)\n",
+ "df_05 = rename_col(df_05)\n",
+ "df_07 = rename_col(df_07)\n",
+ "df_10 = rename_col(df_10)\n",
+ "df_11 = rename_col(df_11)\n",
+ "df_12 = rename_col(df_12)\n",
+ "df_15 = rename_col(df_15)\n",
+ "df_18 = rename_col(df_18)\n",
+ "df_19 = rename_col(df_19)\n",
+ "df_22 = rename_col(df_22)\n",
+ "df_23 = rename_col(df_23)\n",
+ "df_25 = rename_col(df_25)\n",
+ "df_27 = rename_col(df_27)\n",
+ "df_29 = rename_col(df_29)\n",
+ "df_30 = rename_col(df_30)\n",
+ "df_32 = rename_col(df_32)\n",
+ "df_37 = rename_col(df_37)\n",
+ "df_39 = rename_col(df_39)\n",
+ "df_40 = rename_col(df_40)\n",
+ "df_42 = rename_col(df_42)\n",
+ "df_43 = rename_col(df_43)\n",
+ "df_44 = rename_col(df_44)\n",
+ "df_45 = rename_col(df_45)\n",
+ "df_47 = rename_col(df_47)\n",
+ "df_50 = rename_col(df_50)\n",
+ "df_53 = rename_col(df_53)\n",
+ "df_54 = rename_col(df_54)\n",
+ "df_61 = rename_col(df_61)\n",
+ "df_62 = rename_col(df_62)\n",
+ "df_63 = rename_col(df_63)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "639bddbf-2091-451a-a580-f739a9dcffd3",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Reorder the columns using the Reorder column function\n",
+ "df_03 = reorder_columns(df_03)\n",
+ "df_04 = reorder_columns(df_04)\n",
+ "df_05 = reorder_columns(df_05)\n",
+ "df_07 = reorder_columns(df_07)\n",
+ "df_10 = reorder_columns(df_10)\n",
+ "df_11 = reorder_columns(df_11)\n",
+ "df_12 = reorder_columns(df_12)\n",
+ "df_15 = reorder_columns(df_15)\n",
+ "df_18 = reorder_columns(df_18)\n",
+ "df_19 = reorder_columns(df_19)\n",
+ "df_22 = reorder_columns(df_22)\n",
+ "df_23 = reorder_columns(df_23)\n",
+ "df_25 = reorder_columns(df_25)\n",
+ "df_27 = reorder_columns(df_27)\n",
+ "df_29 = reorder_columns(df_29)\n",
+ "df_30 = reorder_columns(df_30)\n",
+ "df_32 = reorder_columns(df_32)\n",
+ "df_37 = reorder_columns(df_37)\n",
+ "df_39 = reorder_columns(df_39)\n",
+ "df_40 = reorder_columns(df_40)\n",
+ "df_42 = reorder_columns(df_42)\n",
+ "df_43 = reorder_columns(df_43)\n",
+ "df_44 = reorder_columns(df_44)\n",
+ "df_45 = reorder_columns(df_45)\n",
+ "df_47 = reorder_columns(df_47)\n",
+ "df_50 = reorder_columns(df_50)\n",
+ "df_53 = reorder_columns(df_53)\n",
+ "df_54 = reorder_columns(df_54)\n",
+ "df_61 = reorder_columns(df_61)\n",
+ "df_62 = reorder_columns(df_62)\n",
+ "df_63 = reorder_columns(df_63)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "6902a4b4-bed8-4e38-b596-4dac17961795",
+ "metadata": {},
+ "source": [
+ "#### Freight Economic Competitiveness Analysis Results"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "da39f086-15de-4792-81a4-bd090c413c04",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " sln | \n",
+ " freight_ec | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 03 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 04 | \n",
+ " 17860.50 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 05 | \n",
+ " 3370.16 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 07 | \n",
+ " 19599.28 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 10 | \n",
+ " 3323.42 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 11 | \n",
+ " 3119.47 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " 12 | \n",
+ " 1467.86 | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " 15 | \n",
+ " 3473.47 | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " 18 | \n",
+ " 4199.73 | \n",
+ "
\n",
+ " \n",
+ " 9 | \n",
+ " 19 | \n",
+ " 4555.10 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 22 | \n",
+ " 3479.98 | \n",
+ "
\n",
+ " \n",
+ " 11 | \n",
+ " 23 | \n",
+ " 16643.05 | \n",
+ "
\n",
+ " \n",
+ " 12 | \n",
+ " 25 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 13 | \n",
+ " 27 | \n",
+ " 771.96 | \n",
+ "
\n",
+ " \n",
+ " 14 | \n",
+ " 29 | \n",
+ " 72.21 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 30 | \n",
+ " 10533.22 | \n",
+ "
\n",
+ " \n",
+ " 16 | \n",
+ " 32 | \n",
+ " 1085.17 | \n",
+ "
\n",
+ " \n",
+ " 17 | \n",
+ " 37 | \n",
+ " 7913.15 | \n",
+ "
\n",
+ " \n",
+ " 18 | \n",
+ " 39 | \n",
+ " 12896.31 | \n",
+ "
\n",
+ " \n",
+ " 19 | \n",
+ " 40 | \n",
+ " 11352.45 | \n",
+ "
\n",
+ " \n",
+ " 20 | \n",
+ " 42 | \n",
+ " 4181.13 | \n",
+ "
\n",
+ " \n",
+ " 21 | \n",
+ " 43 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 22 | \n",
+ " 44 | \n",
+ " 2524.16 | \n",
+ "
\n",
+ " \n",
+ " 23 | \n",
+ " 45 | \n",
+ " 3950.36 | \n",
+ "
\n",
+ " \n",
+ " 24 | \n",
+ " 47 | \n",
+ " 2863.96 | \n",
+ "
\n",
+ " \n",
+ " 25 | \n",
+ " 50 | \n",
+ " 9210.17 | \n",
+ "
\n",
+ " \n",
+ " 26 | \n",
+ " 53 | \n",
+ " 618.38 | \n",
+ "
\n",
+ " \n",
+ " 27 | \n",
+ " 54 | \n",
+ " 12667.98 | \n",
+ "
\n",
+ " \n",
+ " 28 | \n",
+ " 61 | \n",
+ " 443.47 | \n",
+ "
\n",
+ " \n",
+ " 29 | \n",
+ " 62 | \n",
+ " 9753.58 | \n",
+ "
\n",
+ " \n",
+ " 30 | \n",
+ " 63 | \n",
+ " 7552.66 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " sln freight_ec\n",
+ "0 03 NaN\n",
+ "1 04 17860.50\n",
+ "2 05 3370.16\n",
+ "3 07 19599.28\n",
+ "4 10 3323.42\n",
+ "5 11 3119.47\n",
+ "6 12 1467.86\n",
+ "7 15 3473.47\n",
+ "8 18 4199.73\n",
+ "9 19 4555.10\n",
+ "10 22 3479.98\n",
+ "11 23 16643.05\n",
+ "12 25 NaN\n",
+ "13 27 771.96\n",
+ "14 29 72.21\n",
+ "15 30 10533.22\n",
+ "16 32 1085.17\n",
+ "17 37 7913.15\n",
+ "18 39 12896.31\n",
+ "19 40 11352.45\n",
+ "20 42 4181.13\n",
+ "21 43 NaN\n",
+ "22 44 2524.16\n",
+ "23 45 3950.36\n",
+ "24 47 2863.96\n",
+ "25 50 9210.17\n",
+ "26 53 618.38\n",
+ "27 54 12667.98\n",
+ "28 61 443.47\n",
+ "29 62 9753.58\n",
+ "30 63 7552.66"
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Create a DataFrame for each average value and then concatenate them together\n",
+ "freight_ec_data = pd.concat([df_03, df_04, df_05, df_07, df_10, df_11, df_12, df_15, df_18, df_19, df_22, df_23, df_25, df_27, df_29, df_30, df_32, df_37, df_39, df_40, df_42, df_43, df_44, df_45, df_47, df_50, df_53, df_54, df_61, df_62, df_63], ignore_index=True)\n",
+ "freight_ec_data"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "fc2a93f7-9eab-4e98-87ea-13f0eafa8604",
+ "metadata": {},
+ "source": [
+ "### Data Visualizations"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "id": "45798efb-7ef6-4f5c-a67e-dfe4557fc402",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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BSlOO+zTp49KlSqlvn37avfu3fr2229VsGBBvfnmm4553nnnHS1cuFBPPPGEnn/+ee3atUuTJk3SwYMH9emnnzqt7+jRo+rXr5+efvpptW7dWlOnTtXLL7+soUOHaty4cXrmmWckSV988YX69OmjlStX3vGI3sSJEzVhwgRVqVJFr7/+unLkyKGdO3dq06ZNqlev3m2XuXLlijZt2qTq1aurRIkSd+29MUa9evXS5s2b1aFDBz366KNat26dPvjgA50+fVpvvfWW0/y//PKL/vOf/6hz586ObXn55Zf1wgsvaNasWercubMuXbqkyZMn66233tLXX3/ttPylS5f04osvqlmzZmrRooVWrFih9957Tzly5FCHDh0k3QgCvXr10q+//qqnnnpKFSpU0P79+zV9+nQdOXJEn332mSTpgw8+0DvvvKPQ0FA99dRTkqQyZcrcdjvTMzabN2+umTNnas2aNWrWrJlTb//73/+qXbt2jqNNixYt0qBBg1SvXj31799fV65c0ezZs9W5c2ctXLjQacwlJycrKipKoaGhGjBggDZu3KipU6eqdOnSjn5K0pAhQ7Rw4UK1b9/eEShnzpyp3bt3a/bs2cqRI4diY2MVFRWlAgUK6MUXX1S+fPl0/Phxp7Cwfv169e3bV7Vr13ZcZ3jo0CFt27bN8Z65k6VLlypPnjxq3LixcufOrTJlymjJkiWqWrVqinkvXbqkF154QU2aNFGzZs30ww8/aOzYsQoICFDDhg0l3fh8+/bbb9WyZUt17NhR8fHxmj9/vl544QV9++23evTRR29bR0REhB566CEtWbJETZo0cXpsyZIlKlOmjKpUqSJJeu2113TgwAF16dJFJUuW1Pnz57V+/Xr9+eefKd7/dvPmzdPw4cP1xBNPqFu3brp27Zr27dunnTt3qlWrVnftEwAXMAAs67vvvjMBAQG3/WOMMZs2bTIBAQHmscceM1euXHEsZ7PZTNOmTU2PHj2MzWZzTL9y5YqJjIw0zz//fIrnOHbsmDHGmLNnz5rKlSubV155xamWCRMmmICAADNw4MAUy3bv3t3peUaOHGkeffRRc/nyZce0Fi1amC5duqR521Pb7oCAALN06VJjjDFJSUkmMjLSNG7c2Fy6dMlp+ZvradOmjaldu7a5cOGCY9qePXtMpUqVzIABAxzTxo8fbwICAszgwYOd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j48mTZp0x6Ojdm3bttWIESN06tQpJSYmaseOHRoyZIjTPN27d1dkZKRWr16tn3/+Wf/85z/1xRdfaPr06apcufJt11uhQgWtXLlSa9as0bp16/Tjjz9q1qxZ6t27t15//fW71gUg8whCANKtdOnSkm785vlOR1Rux340JCYmxrEeSbpw4UK6Tiu5VVpDQ3rY69u/f3+q22nfnsOHD6d47NChQypQoEC6Q2HJkiVls9l09OhRpyMz586d0+XLl1WyZMl0rS89ypQpI5vNpoMHD6Yacm8nT548qlWrljZt2qQ///wzxRGcW5UsWVIbN25UXFyc0xGMQ4cOOR53pTNnzqQ4Mmc/smJ/rjJlymjv3r2qXbu2S8dTetfVrFkzff3114qLi9Py5ctVsmRJhYeHOx63j8tChQql+/2XmjJlymjjxo2qWrVqil983E54eLjCw8P197//XUuWLFH//v21fPlyx1GTnDlzKjIyUpGRkbLZbHrvvfc0d+5cvfLKK44jKbfasmWLTp06pddffz3FEcnLly/rH//4h1avXp3uW97/8MMPKl26tOOuhnbjx49P0/LNmzfX6NGjtXTpUl29elU5cuRwupmFXZkyZdSjRw/16NFDR44cUdu2bTV16tRUw6V04xdGzZs3V/PmzZWYmKjXXntNn3/+uV566SVurQ64AdcIAUi34OBglSlTRlOnTr3tqVC3uxObXe3ateXr65vi1sUzZ87MVE158uTJ9KlytwoKClKpUqX09ddfp1i3/bfyRYsW1aOPPqpFixY5zbN//36tX7/eceeq9LAvc+vthu3XbmVknWn1+OOPy9vbW59++mmK67zudpSld+/eMsZowIABtx0Xv/32mxYuXCjpxndXJScnp3jdv/rqK3l5eaXpNKr0SEpK0ty5cx0/JyYmau7cuSpYsKCCgoIk3Qggp0+f1rx581Isf/XqVSUkJDh+9vPzS/N4S+/YtO8UL1y4UOvWrUux012/fn35+/tr0qRJt71O507vv9Q0a9ZMycnJjjvj3SwpKclR/6VLl1KMA3tgtt9i/MKFC06Pe3t7O27Rfuvt329mPy3uhRde0JNPPun056mnnlK5cuUydGtp+1Gjm+veuXOnduzYkablCxYsqPr162vx4sVasmSJ6tWr53Sq4ZUrV1Lc8bJMmTLKmzfvHbf31j7lzJlTFSpUkDEm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EAIAAABgOQQhAAAAAJZDEAIAAABgOQQhAAAAAJbj8SB0+vRp9e/fXxEREQoNDVWrVq0UHR3t6bIAAAAA3Md8Pfnkly5d0jPPPKOIiAh9+eWXKlCggI4ePar8+fN7siwAAAAA9zmPBqEvv/xSxYsX16hRoxzTSpcu7cGKAAAAAFiBR4PQf/7zH9WrV0+vv/66tm7dqmLFiqlz58566qmn0rWe5OTkLKow7c/tyRqswJV9jomJ0blz5zK9HlcoXLiwypQp4+kyHBjP7kGf3Ydeuwd9dg/67B702T2yos/pXZeXMca47NnTKSQkRJL0/PPP68knn1R0dLRGjBihoUOHql27dnddPjk5WTt27MjiKnE/OXXqlDp06KCrV696uhRJUu7cuTV//nwVL17c06UAAADcF8LDw+Xj43PX+Tx6RMgYo+DgYPXt21eSVLlyZf3xxx+aM2dOmoKQXUhISJo2NiskJycrOjraozVYgav6vG3bNl29elW9PpykEhUCXVhh+p08uE//evMlFS1aVOHh4R6txY7x7B702X3otXvQZ/egz+5Bn90jK/psX2daeTQIFSlSRBUqVHCa9vDDD+uHH35I13p8fHw8PlCzQw1WkNk+25ctWTFQ5YPCXVRVxnh53fg7O46d7FjT/Yg+uw+9dg/67B702T3os3t4ss8evX121apVdfjwYadpR44cUcmSJT1UEQAAAAAr8GgQeu6557Rz5059/vnnOnr0qJYsWaJ58+apc+fOniwLAAAAwH3Oo6fGhYaGauLEifr444/16aefqlSpUnrrrbfUunVrT5YFAAAA4D7n0SAkSY0bN1bjxo09XQYAAAAAC/HoqXEAAAAA4AkEIQAAAACWQxACAAAAYDkEIQAAAACWQxACAAAAYDkEIQAAAACWQxACAAAAYDkEIQAAAACWQxACAAAAYDkEIQAAAACWQxACAAAAYDkEIQAAAACWQxACAAAAYDkEIQAAAACWQxACAAAAYDkEIQAAAACWQxACAAAAYDkEIQAAAACWQxACAAAAYDkEIQAAAACWQxACAAAAYDkEIQAAAACWQxACAAAAYDkEIQAAAACWQxACAAAAYDkEIQAAAACWQxACAAAAYDkEIQAAAACWQxACAAAAYDkEIQAAAACWQxACAAAAYDkEIQAAAACWQxACAAAAYDkEIQAAAACWQxACAAAAYDkE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PF0CAAAAAAvgiBAAAAAAyyEIAQAAALAcghAAAAAAyyEIAQAAALAcghAAAAAAyyEIAQAAALAcghAAAAAAyyEIAQAAALAcghAAAAAAyyEIAQAAALAcghAAAAAAyyEIAQAAALAcghAAAAAAyyEIAQAAALAcghAAAAAAyyEIAQAAALAcghAAAAAAyyEIAQAAALAcghAAAAAAyyEIAQAAALAcghAAAAAAyyEIAQAAALAcghAAAAAAy8lQEDp27Jir6wAAAAAAt8lQEGrSpIm6du2q77//XteuXXN1TQAAAACQpTIUhBYuXKjAwECNHj1adevW1ZAhQ7Rr1y5X1wYAAAAAWSJDQejRRx/VO++8o3Xr1mnkyJE6c+aMOnfurJYtW2ratGk6f/68q+sEAAAAAJfJ1M0SfH191bRpU40fP179+/fX0aNHNWbMGDVs2FADBgzQmTNnXFUnAAAAALiMb2YWjo6O1nfffafly5crT5486tGjhzp06KDTp09r4sSJeuWVVzR//nxX1QoAAAAALpGhIDRt2jQtWLBAhw8fVoMGDRxHgby9bxxgKl26tEaPHq3IyEiXFgsAAAAArpChIDR79mz97W9/U7t27VS0aNHbzlOwYEGNGDEiU8UBAAAAQFbIUBD68ccf7zpPzpw51a5du4ysHgAAAACyVIZulvDdd99pxYoVKaavWLFCCxcuzHRRAAAAAJCVMhSEvvjiCxUoUCDF9EKFCunzzz/PdFEAAAAAkJUyFIROnjypUqVKpZheokQJ/fnnn5kuCgAAAACyUoaCUKFChbRv374U0/fu3asHH3wwszUBAAAAQJbK0M0SWrRooREjRihv3ryqUaOGJGnLli0aOXKkWrRo4dICAQAAAMDVMhSE3njjDZ04cULdu3eXr++NVdhsNrVp00Z///vfXVogAAAAALhahoJQzpw59cknn+jw4cPau3evcufOrYCAAJUsWdLV9QEAAACAy2UoCNmVL19e5cuXd1UtAAAAAOAWGQpCycnJWrBggTZt2qTY2FjZbDanx7/++muXFAcAAAAAWSFDQWjEiBFauHChGjZsqEceeUReXl6urgsAAAAAskyGgtCyZcv0ySefqGHDhq6uBwAAAACyXIa+RyhHjhwqU6aMq2sBAAAAALfIUBDq0aOHvv76axljXF0PAAAAAGS5DJ0a9+uvv2rz5s1au3at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s9m0ceNGp1PlAAAAAMCVPH5q3PPPP6+BAwcqODhYoaGhmj59uq5cuaL27dt7ujQAAAAA9ymPB6HmzZvr/PnzGj9+vM6ePatHH31UkydPTtOpcQAAAACQER69axwAAAAAeILHv1AVAAAAANyNIAQAAADAcghCAAAAACyHIAQAAADAcghCmTBz5kxFRkYqJCREHTt21K5duzxdUrY1adIk/e1vf1OVKlVUu3ZtvfLKKzp06JDTPF27dlVgYKDTnyFDhjjNc/LkSb344osKCwtT7dq1NWbMGCUlJTnNs3nzZrVr107BwcFq0qSJFixYkOXbl51MmDAhRR+ffPJJx+PXrl3T0KFDFRERoSpVqui1117TuXPnnNZBn+8uMjIyRZ8DAwM1dOhQSYznjNq6datefvll1atXT4GBgVq9erXT48YY/fOf/1S9evUUGhqq7t2768iRI07zXLx4Uf369VPVqlVVvXp1vfXWW4qPj3eaZ+/evercubNCQkLUsGFDffnllylqWbFihZ588kmFhISoVatW+umnn1y+vZ5ypz5fv35dH374oVq1aqXw8HDVq1dPAwYM0OnTp53Wcbv3wBdffOE0j9X7LN19TA8aNChFH6OiopzmYUzf3d36fLvP68DAQE2ePNkxD2P67tKyP+fO/YxM74sbZMiyZctMUFCQmT9/vvnjjz/MO++8Y6pXr27OnTvn6dKypR49epjvvvvO7N+/3+zZs8f07NnTNGrUyMTHxzvm6dKli3nnnXfMmTNnHH/++usvx+NJSUmmZcuWpnv37mb37t1mzZo1JiIiwnz00UeOeWJiYkxYWJgZNWqUOXDggPnmm2/Mo48+atauXevW7fWk8ePHmxYtWjj1MTY21vH4kCFDTMOGDc2GDRtMdHS0eeqpp0ynTp0cj9PntImNjXXq8fr1601AQIDZtGmTMYbxnFFr1qwxH3/8sfnxxx9NQECAWbVqldPjkyZNMtWqVTOrVq0ye/bsMS+//LKJjIw0V69edcwTFRVlWrdubXbs2GG2bt1qmjRpYvr27et4/K+//jJ16tQx/fr1M/v37zdLly41oaGhZs6cOY55fv31V/Poo4+aL7/80hw4cMCMGzfOBAUFmX379mV9E9zgTn2+fPmy6d69u1m2bJk5ePCg2b59u+nQoYNp166d0zoaN25sJk6c6DTGb/5Mp8833G1M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1OXLl126XgCAM19PFwAAcI+ff/7Z8e/ly5dr/PjxWrlypWOan5+fJ8pyi5o1a2rz5s168cUXHdM2b96shx56SFu2bFFERIQk6dq1a9qxY4fee++9NK33wQcfzIJqAQDuwBEhALCIIkWKOP488MAD8vLycvxcqFAhTZs2TQ0aNFBwcLDatGmjtWvXOpY9fvy4AgMD9eOPP6pr164KCwtT69attX37dsc8CxYsUPXq1bVu3To1a9ZMVapUUVRUlM6cOeOYZ9euXXr++ecVERGhatWqqUuXLvr999+d6jx48KCeeeYZhYSEqHnz5tqwYUOK08n+/PNPvfHGG6pevbpq1qypXr166fjx46lue0REhLZt26akpCRJUlxcnPbs2aOePXtqy5Ytjvm2b9+uxMRERzDav3+/XnjhBVWpUkV16tTRm2++qfPnzzvmv/XUuDNnzujFF19UaGioIiMjtWTJEkVGRuqrr75yqufChQvq3bu3wsLC1LRpU/373/929Llbt26SpBo1aigwMFCDBg1KdbsAABlHEAIA6Ouvv9a0adM0cOBALV68WPXq1dMrr7yiI0eOOM03btw4RUVFadGiRSpXrpz69evnCBeSdPXqVU2dOlUffPCBZsyYoT///FNjxoxxPB4fH6+2bdtq1qxZmjdvnsqWLasXX3xRcXFxkqTk5GT17t1befLk0bfffqthw4Zp3LhxTjVcv35dUVFRyps3r2bOnKnZs2fLz89PL7zwghITE2+7fREREUpISFB0dLQk6ddff1W5cuXUtGlT7dy5U9euXZN04yhRyZIlVapUKV2+fFnPPfecKleurPnz52vy5MmKjY1Vnz59Uu3jwIEDdebMGX3zzTeaMGGC5s2bp9jY2BTzTZw4Uc2aNdPixYvVoEED9e/fXxcvXtRDDz3kOEVx5cqV+vnnn/X222+n+nwAgIwjCAEANGXKFPXs2VMtWrTQww8/rDfffFOVKlXS9OnTnebr0aOHGjVqpPLly+v111/XiRMndPToUcfj169f19ChQxUSEqKgoCA9++yz2rRpk+Px2rVrq02bNqpQoYIqVKig999/X1euXNHWrVslSevXr9exY8c0ZswYVapUSdWrV9ff//53pxqWL18um82mESNGKDAwUBUqVNCoUaP0559/Oh3duVm5cuVUrFgxx+ObN29WjRo1VKRIET300EOOI1s3nyY3Y8YMVa5cWX379lWFChVUuXJljRw5Ups3b9bhw4dTPMfBgwe1YcMGvf/++woLC1NQUJCGDx+uq1evppi3Xbt2atmypcqWLau+ffsqISFBu3btko+Pj/Lnzy9JKlSokOPoHQDA9bhGCAAsLi4uTmfOnFHVqlWdpletWlV79+51mhYYGOj4d5EiRSRJ58+fV4UKFSRJefLkUZkyZRzzFC1a1OmIyLlz5/TJJ59oy5Ytio2Nlc1m05UrV3Ty5ElJ0uHDh1W8eHHHuiUpNDTUqYa9e/cqJiYmRb3Xrl1TTExMqttZs2ZNbdmyRS+99JK2bNmiqKgop+nh4eHauXOnOnbs6HiezZs3q0qVKinWFRMTo/LlyztNO3z4sHx9fRUUFOSYVrZsWUewudnNffTz85O/v7/TKXcAgKxHEAIApFmOHDkc//by8pIk2Ww2xzRfX+f/Vry8vGSMcfw8cOBAXbx4UW+//bZKlCihnDlzqlOnTrp+/Xqaa0hISFBQUJDGjh2b4rGCBQumulxERIRGjhypCxcuaM+ePapZs6akG9fizJ07VzVq1ND169dVu3Ztx/M0btxY/fv3T7Gum4NaRtzcR+lGn27uIwAg63FqHABYnL+/v4oWLapt27Y5Td+2bZsqVqzo0ufatm2bunbtqoYNG+qRRx5Rzpw5deHCBcfj5cuX16lTp3Tu3DnHNPt1PXZBQUE6evSoChUqpLJlyzr9udNpZLVq1VJCQoK++uorlS1bVoUKFZJ0Iwjt2rVLa9eudZxCZ3+eP/74QyVLlkzxPLe7w1758uWVlJSk3bt3O6YdPXpUly5dSleP7CEpOTk5XcsBANKHIAQAUFRUlL788kstX75chw4d0tixY7V3717HHcxcpVy5clq8eLEOHjyonTt3qn///sqdO7fj8bp166p06dIaOHCg9u7dq19//VWffPKJ0zpatWqlAgUKqFevXvrll1907Ngxbd68WcOHD9epU6dSfe7SpUurRIkS+uabb1SjRg3H9IceekhFixbV3LlzHdcHSVLnzp116dIl9e3bV7t27VJMTIzWrVunwYMH3zakVKhQQXXq1NGQIUO0a9cu7d69W//4xz+UO3dux9GztChZsqS8vLy0Zs0anT9/XvHx8WleFgCQdgQhAIC6deum559/XqNHj1br1q21bt06ffbZZypXrpxLn2fEiBG6dOmS2rVrpwEDBqhr166OIzOS5OPjo08//VQJCQnq0KGD3nnnHb388suSpFy5ckm6cR3SjBkzVKJECb366qtq3ry53n77bV27dk3+/v53fP6IiAjFx8c7BR7pxnVCt04vVqyYZs+eLZvNpqioKLVq1UojR47UAw88IG/v2//3OWbMGBUqVEjPPvusXn31VT311FPKmzevo/a0KFasmF577TV99NFHqlOnjt5///00LwsASDsvc/PJ2wAAZDO//vqrOnfurFWrVjndiOFecOrUKTVs2FBfffWV49ojAED2wM0SAADZyqpVq+Tn56eyZcsqJiZGI0aMUNWqVe+JELRx40YlJCQoICBAZ8+e1YcffqiSJUuqevXqni4NAHALghAAIFuJj4/X2LFjdfLkSRUoUEB16tTRwIEDPV1WmiQlJWncuHE6duyY8ubNqypVqmjs2LEp7hIHAPA8To0DAAAAYDncLAEAAACA5RCEAAAAAFgOQQgAAACA5RCEAAAAAFgOQQgAAACA5RCEAAAAAFgOQQgAAACA5RCEAAAAAFjO/wE8xJgjulv5twAAAABJRU5ErkJggg==",
+ "text/plain": [
+ "