{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "Ah-TOWidEh9g"
},
"source": [
"# HW 0 - Intro to Pandas\n",
"**Submit this notebook to gradescope.**\n",
"\n",
"Credit: https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html\n",
"\n",
"Read through the below and run the cells to get a feeling for how Pandas works.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"id": "Wmb5LVxeEh9n"
},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib as plt"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "8P4x0WpTEh9o"
},
"source": [
"## Object Creation\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "isYK12A3Eh9p"
},
"source": [
"Creating a Series by passing a list of values, letting pandas create a default integer index:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "qMtuncKIEh9p",
"outputId": "4fb651f6-5257-4527-9543-83a289e18280"
},
"outputs": [
{
"data": {
"text/plain": [
"0 1.0\n",
"1 3.0\n",
"2 5.0\n",
"3 NaN\n",
"4 6.0\n",
"5 8.0\n",
"dtype: float64"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = pd.Series([1, 3, 5, np.nan, 6, 8])\n",
"s"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "H_Y1-uzjEh9r"
},
"source": [
"Creating a DataFrame by passing a NumPy array, with a datetime index and labeled columns:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "T3b6rc7GEh9s",
"outputId": "673c7d49-e665-4b19-b216-b952c1430830"
},
"outputs": [
{
"data": {
"text/plain": [
"DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',\n",
" '2013-01-05', '2013-01-06'],\n",
" dtype='datetime64[ns]', freq='D')"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dates = pd.date_range('20130101', periods=6)\n",
"dates"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "jpzXQP69Eh9t",
"outputId": "6cfefce1-a10d-48d0-b930-296bcc4b729d"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-01 \n",
" -0.159369 \n",
" -0.099802 \n",
" 0.996220 \n",
" 0.710575 \n",
" \n",
" \n",
" 2013-01-02 \n",
" -0.284584 \n",
" -0.582972 \n",
" 0.073506 \n",
" 0.641281 \n",
" \n",
" \n",
" 2013-01-03 \n",
" 0.462220 \n",
" 0.173447 \n",
" 0.397632 \n",
" 0.921149 \n",
" \n",
" \n",
" 2013-01-04 \n",
" 0.702469 \n",
" -0.199847 \n",
" -0.020535 \n",
" -1.290123 \n",
" \n",
" \n",
" 2013-01-05 \n",
" -0.108791 \n",
" -0.250403 \n",
" -0.948057 \n",
" 0.663066 \n",
" \n",
" \n",
" 2013-01-06 \n",
" -1.128097 \n",
" -1.115742 \n",
" -0.702814 \n",
" -0.276980 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D\n",
"2013-01-01 -0.159369 -0.099802 0.996220 0.710575\n",
"2013-01-02 -0.284584 -0.582972 0.073506 0.641281\n",
"2013-01-03 0.462220 0.173447 0.397632 0.921149\n",
"2013-01-04 0.702469 -0.199847 -0.020535 -1.290123\n",
"2013-01-05 -0.108791 -0.250403 -0.948057 0.663066\n",
"2013-01-06 -1.128097 -1.115742 -0.702814 -0.276980"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))\n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "XqAgd_uBEh9u"
},
"source": [
"Creating a DataFrame by passing a dict of objects that can be converted to series-like."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "9OGPFjVIEh9v",
"outputId": "2bc2efae-e3e4-4ba4-8e40-caf1606d8024"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" E \n",
" F \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 1.0 \n",
" 2013-01-02 \n",
" 1.0 \n",
" 3 \n",
" test \n",
" foo \n",
" \n",
" \n",
" 1 \n",
" 1.0 \n",
" 2013-01-02 \n",
" 1.0 \n",
" 3 \n",
" train \n",
" foo \n",
" \n",
" \n",
" 2 \n",
" 1.0 \n",
" 2013-01-02 \n",
" 1.0 \n",
" 3 \n",
" test \n",
" foo \n",
" \n",
" \n",
" 3 \n",
" 1.0 \n",
" 2013-01-02 \n",
" 1.0 \n",
" 3 \n",
" train \n",
" foo \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D E F\n",
"0 1.0 2013-01-02 1.0 3 test foo\n",
"1 1.0 2013-01-02 1.0 3 train foo\n",
"2 1.0 2013-01-02 1.0 3 test foo\n",
"3 1.0 2013-01-02 1.0 3 train foo"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df2 = pd.DataFrame({'A': 1.,\n",
" 'B': pd.Timestamp('20130102'),\n",
" 'C': pd.Series(1, index=list(range(4)), dtype='float32'),\n",
" 'D': np.array([3] * 4, dtype='int32'),\n",
" 'E': pd.Categorical([\"test\", \"train\", \"test\", \"train\"]),\n",
" 'F': 'foo'})\n",
"df2"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "GkNITW1MEh9w"
},
"source": [
"The columns of the resulting DataFrame have different dtypes."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "MDjAg1EAEh9w",
"outputId": "d0d9f22e-4b9a-429d-f1ac-ffe6c0a9e854"
},
"outputs": [
{
"data": {
"text/plain": [
"A float64\n",
"B datetime64[ns]\n",
"C float32\n",
"D int32\n",
"E category\n",
"F object\n",
"dtype: object"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df2.dtypes"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "hJsbATBTEh9x"
},
"source": [
"## Viewing Data"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "bKX5TCKREh9x"
},
"source": [
"View the top and bottom rows of the frame:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "2pDxiu9OEh9y",
"outputId": "e5841e03-74e6-446d-a8b6-d9d734c5343a"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-01 \n",
" -0.159369 \n",
" -0.099802 \n",
" 0.996220 \n",
" 0.710575 \n",
" \n",
" \n",
" 2013-01-02 \n",
" -0.284584 \n",
" -0.582972 \n",
" 0.073506 \n",
" 0.641281 \n",
" \n",
" \n",
" 2013-01-03 \n",
" 0.462220 \n",
" 0.173447 \n",
" 0.397632 \n",
" 0.921149 \n",
" \n",
" \n",
" 2013-01-04 \n",
" 0.702469 \n",
" -0.199847 \n",
" -0.020535 \n",
" -1.290123 \n",
" \n",
" \n",
" 2013-01-05 \n",
" -0.108791 \n",
" -0.250403 \n",
" -0.948057 \n",
" 0.663066 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D\n",
"2013-01-01 -0.159369 -0.099802 0.996220 0.710575\n",
"2013-01-02 -0.284584 -0.582972 0.073506 0.641281\n",
"2013-01-03 0.462220 0.173447 0.397632 0.921149\n",
"2013-01-04 0.702469 -0.199847 -0.020535 -1.290123\n",
"2013-01-05 -0.108791 -0.250403 -0.948057 0.663066"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "JkZdFAnTEh9z",
"outputId": "7987ea12-a487-41c2-c7cc-618fc7dbe6d0"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-04 \n",
" 0.702469 \n",
" -0.199847 \n",
" -0.020535 \n",
" -1.290123 \n",
" \n",
" \n",
" 2013-01-05 \n",
" -0.108791 \n",
" -0.250403 \n",
" -0.948057 \n",
" 0.663066 \n",
" \n",
" \n",
" 2013-01-06 \n",
" -1.128097 \n",
" -1.115742 \n",
" -0.702814 \n",
" -0.276980 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D\n",
"2013-01-04 0.702469 -0.199847 -0.020535 -1.290123\n",
"2013-01-05 -0.108791 -0.250403 -0.948057 0.663066\n",
"2013-01-06 -1.128097 -1.115742 -0.702814 -0.276980"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.tail(3)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "MuT1DtZ3Eh90"
},
"source": [
"Display the index, columns:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "mdSzc02GEh90",
"outputId": "ca88b1d8-e4ef-46f0-9a94-4d9a7a60e9fc"
},
"outputs": [
{
"data": {
"text/plain": [
"DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',\n",
" '2013-01-05', '2013-01-06'],\n",
" dtype='datetime64[ns]', freq='D')"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.index"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "zjH4Ks-CEh91",
"outputId": "9d5b3ece-edf1-4b73-d439-84c28e138181"
},
"outputs": [
{
"data": {
"text/plain": [
"Index(['A', 'B', 'C', 'D'], dtype='object')"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.columns"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "klip81RzEh91"
},
"source": [
"DataFrame.to_numpy() gives a NumPy representation of the underlying data. Note that this can be an expensive operation when your DataFrame has columns with different data types, which comes down to a fundamental difference between pandas and NumPy: NumPy arrays have one dtype for the entire array, while pandas DataFrames have one dtype per column. When you call DataFrame.to_numpy(), pandas will find the NumPy dtype that can hold all of the dtypes in the DataFrame. This may end up being object, which requires casting every value to a Python object.\n",
"\n",
"For df, our DataFrame of all floating-point values, DataFrame.to_numpy() is fast and doesn’t require copying data."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "w6MygBMgEh93",
"outputId": "eca5978b-c7cc-4ee2-eb44-8d44b531ebcc"
},
"outputs": [
{
"data": {
"text/plain": [
"array([[-0.15936938, -0.09980238, 0.99621955, 0.71057533],\n",
" [-0.28458372, -0.58297182, 0.07350619, 0.6412811 ],\n",
" [ 0.46222038, 0.17344671, 0.39763182, 0.92114935],\n",
" [ 0.70246944, -0.1998469 , -0.02053547, -1.29012306],\n",
" [-0.10879122, -0.2504025 , -0.94805694, 0.66306592],\n",
" [-1.12809694, -1.1157421 , -0.70281434, -0.27698042]])"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.values"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "kDhAF09EEh93",
"outputId": "0dc6f138-f1d2-4840-a546-65e8cc84ae43"
},
"outputs": [
{
"data": {
"text/plain": [
"array([[1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'test', 'foo'],\n",
" [1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'train', 'foo'],\n",
" [1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'test', 'foo'],\n",
" [1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'train', 'foo']],\n",
" dtype=object)"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df2.values"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "FBFTY4pLEh94"
},
"source": [
".describe( ) shows a quick statistic summary of your data:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "ATwjLkMyEh94",
"outputId": "ca6987c8-b26e-4417-95e1-5c203ecf4d88"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" \n",
" \n",
" \n",
" \n",
" count \n",
" 6.000000 \n",
" 6.000000 \n",
" 6.000000 \n",
" 6.000000 \n",
" \n",
" \n",
" mean \n",
" -0.086025 \n",
" -0.345886 \n",
" -0.034008 \n",
" 0.228161 \n",
" \n",
" \n",
" std \n",
" 0.640864 \n",
" 0.449354 \n",
" 0.713051 \n",
" 0.852423 \n",
" \n",
" \n",
" min \n",
" -1.128097 \n",
" -1.115742 \n",
" -0.948057 \n",
" -1.290123 \n",
" \n",
" \n",
" 25% \n",
" -0.253280 \n",
" -0.499829 \n",
" -0.532245 \n",
" -0.047415 \n",
" \n",
" \n",
" 50% \n",
" -0.134080 \n",
" -0.225125 \n",
" 0.026485 \n",
" 0.652174 \n",
" \n",
" \n",
" 75% \n",
" 0.319467 \n",
" -0.124814 \n",
" 0.316600 \n",
" 0.698698 \n",
" \n",
" \n",
" max \n",
" 0.702469 \n",
" 0.173447 \n",
" 0.996220 \n",
" 0.921149 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D\n",
"count 6.000000 6.000000 6.000000 6.000000\n",
"mean -0.086025 -0.345886 -0.034008 0.228161\n",
"std 0.640864 0.449354 0.713051 0.852423\n",
"min -1.128097 -1.115742 -0.948057 -1.290123\n",
"25% -0.253280 -0.499829 -0.532245 -0.047415\n",
"50% -0.134080 -0.225125 0.026485 0.652174\n",
"75% 0.319467 -0.124814 0.316600 0.698698\n",
"max 0.702469 0.173447 0.996220 0.921149"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "P1CGQzqKEh94"
},
"source": [
"Transposing your data:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "doiqymYuEh95",
"outputId": "e2f810e4-c42a-4239-c9c4-665240b989e0"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" 2013-01-01 \n",
" 2013-01-02 \n",
" 2013-01-03 \n",
" 2013-01-04 \n",
" 2013-01-05 \n",
" 2013-01-06 \n",
" \n",
" \n",
" \n",
" \n",
" A \n",
" -0.159369 \n",
" -0.284584 \n",
" 0.462220 \n",
" 0.702469 \n",
" -0.108791 \n",
" -1.128097 \n",
" \n",
" \n",
" B \n",
" -0.099802 \n",
" -0.582972 \n",
" 0.173447 \n",
" -0.199847 \n",
" -0.250403 \n",
" -1.115742 \n",
" \n",
" \n",
" C \n",
" 0.996220 \n",
" 0.073506 \n",
" 0.397632 \n",
" -0.020535 \n",
" -0.948057 \n",
" -0.702814 \n",
" \n",
" \n",
" D \n",
" 0.710575 \n",
" 0.641281 \n",
" 0.921149 \n",
" -1.290123 \n",
" 0.663066 \n",
" -0.276980 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" 2013-01-01 2013-01-02 2013-01-03 2013-01-04 2013-01-05 2013-01-06\n",
"A -0.159369 -0.284584 0.462220 0.702469 -0.108791 -1.128097\n",
"B -0.099802 -0.582972 0.173447 -0.199847 -0.250403 -1.115742\n",
"C 0.996220 0.073506 0.397632 -0.020535 -0.948057 -0.702814\n",
"D 0.710575 0.641281 0.921149 -1.290123 0.663066 -0.276980"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.T"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "FEnMivHrEh95"
},
"source": [
"Sorting by an axis:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "A3W2BAZoEh95",
"outputId": "1b111f7d-bfce-4b6f-8daf-ac1721848784"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" D \n",
" C \n",
" B \n",
" A \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-01 \n",
" 0.710575 \n",
" 0.996220 \n",
" -0.099802 \n",
" -0.159369 \n",
" \n",
" \n",
" 2013-01-02 \n",
" 0.641281 \n",
" 0.073506 \n",
" -0.582972 \n",
" -0.284584 \n",
" \n",
" \n",
" 2013-01-03 \n",
" 0.921149 \n",
" 0.397632 \n",
" 0.173447 \n",
" 0.462220 \n",
" \n",
" \n",
" 2013-01-04 \n",
" -1.290123 \n",
" -0.020535 \n",
" -0.199847 \n",
" 0.702469 \n",
" \n",
" \n",
" 2013-01-05 \n",
" 0.663066 \n",
" -0.948057 \n",
" -0.250403 \n",
" -0.108791 \n",
" \n",
" \n",
" 2013-01-06 \n",
" -0.276980 \n",
" -0.702814 \n",
" -1.115742 \n",
" -1.128097 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" D C B A\n",
"2013-01-01 0.710575 0.996220 -0.099802 -0.159369\n",
"2013-01-02 0.641281 0.073506 -0.582972 -0.284584\n",
"2013-01-03 0.921149 0.397632 0.173447 0.462220\n",
"2013-01-04 -1.290123 -0.020535 -0.199847 0.702469\n",
"2013-01-05 0.663066 -0.948057 -0.250403 -0.108791\n",
"2013-01-06 -0.276980 -0.702814 -1.115742 -1.128097"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.sort_index(axis=1, ascending=False)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "LQyfBED6Eh95"
},
"source": [
"Sorting by values:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "6reCn6RsEh96",
"outputId": "7a9b82c4-ef2c-4fee-90ac-845760ed3c57"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-06 \n",
" -1.128097 \n",
" -1.115742 \n",
" -0.702814 \n",
" -0.276980 \n",
" \n",
" \n",
" 2013-01-02 \n",
" -0.284584 \n",
" -0.582972 \n",
" 0.073506 \n",
" 0.641281 \n",
" \n",
" \n",
" 2013-01-05 \n",
" -0.108791 \n",
" -0.250403 \n",
" -0.948057 \n",
" 0.663066 \n",
" \n",
" \n",
" 2013-01-04 \n",
" 0.702469 \n",
" -0.199847 \n",
" -0.020535 \n",
" -1.290123 \n",
" \n",
" \n",
" 2013-01-01 \n",
" -0.159369 \n",
" -0.099802 \n",
" 0.996220 \n",
" 0.710575 \n",
" \n",
" \n",
" 2013-01-03 \n",
" 0.462220 \n",
" 0.173447 \n",
" 0.397632 \n",
" 0.921149 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D\n",
"2013-01-06 -1.128097 -1.115742 -0.702814 -0.276980\n",
"2013-01-02 -0.284584 -0.582972 0.073506 0.641281\n",
"2013-01-05 -0.108791 -0.250403 -0.948057 0.663066\n",
"2013-01-04 0.702469 -0.199847 -0.020535 -1.290123\n",
"2013-01-01 -0.159369 -0.099802 0.996220 0.710575\n",
"2013-01-03 0.462220 0.173447 0.397632 0.921149"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.sort_values(by='B')"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "i4P2WK7-Eh96"
},
"source": [
"## Selection"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "diX599N6Eh97"
},
"source": [
"### Getting"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "qoBFsXmqEh97"
},
"source": [
"Selecting a single column, which yields a Series, equivalent to df.A:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "m-kuv5gEEh98",
"outputId": "b3f62661-4cc9-4d4e-f3e4-6abcfca738f2"
},
"outputs": [
{
"data": {
"text/plain": [
"2013-01-01 -0.159369\n",
"2013-01-02 -0.284584\n",
"2013-01-03 0.462220\n",
"2013-01-04 0.702469\n",
"2013-01-05 -0.108791\n",
"2013-01-06 -1.128097\n",
"Freq: D, Name: A, dtype: float64"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['A']"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "lACd9jksEh9-"
},
"source": [
"Selecting via [ ], which slices the rows."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "MHNLFqopEh9_",
"outputId": "b00c5e16-1bbf-4d79-cb6a-d3a366d8b4e8"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-01 \n",
" -0.159369 \n",
" -0.099802 \n",
" 0.996220 \n",
" 0.710575 \n",
" \n",
" \n",
" 2013-01-02 \n",
" -0.284584 \n",
" -0.582972 \n",
" 0.073506 \n",
" 0.641281 \n",
" \n",
" \n",
" 2013-01-03 \n",
" 0.462220 \n",
" 0.173447 \n",
" 0.397632 \n",
" 0.921149 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D\n",
"2013-01-01 -0.159369 -0.099802 0.996220 0.710575\n",
"2013-01-02 -0.284584 -0.582972 0.073506 0.641281\n",
"2013-01-03 0.462220 0.173447 0.397632 0.921149"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[0:3]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "H4BwiajVEh-A",
"outputId": "a3d92ff0-d93f-4a50-97d5-b6b547f8949c"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-02 \n",
" -0.284584 \n",
" -0.582972 \n",
" 0.073506 \n",
" 0.641281 \n",
" \n",
" \n",
" 2013-01-03 \n",
" 0.462220 \n",
" 0.173447 \n",
" 0.397632 \n",
" 0.921149 \n",
" \n",
" \n",
" 2013-01-04 \n",
" 0.702469 \n",
" -0.199847 \n",
" -0.020535 \n",
" -1.290123 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D\n",
"2013-01-02 -0.284584 -0.582972 0.073506 0.641281\n",
"2013-01-03 0.462220 0.173447 0.397632 0.921149\n",
"2013-01-04 0.702469 -0.199847 -0.020535 -1.290123"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['20130102':'20130104']"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "TUYkkA7MEh-B"
},
"source": [
"### Selection by label"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "h0DptV7TEh-B"
},
"source": [
"For getting a cross section using a label:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "BNnNgM7YEh-C",
"outputId": "049b898a-98c9-4eea-d030-43c807deca20"
},
"outputs": [
{
"data": {
"text/plain": [
"A -0.159369\n",
"B -0.099802\n",
"C 0.996220\n",
"D 0.710575\n",
"Name: 2013-01-01 00:00:00, dtype: float64"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.loc[dates[0]]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7ejhsbKCEh-D"
},
"source": [
"Selecting on a multi-axis by label:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "CFZqHODIEh-E",
"outputId": "25430c3f-6fbe-4d78-88cf-607fbbc78bad"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-01 \n",
" -0.159369 \n",
" -0.099802 \n",
" \n",
" \n",
" 2013-01-02 \n",
" -0.284584 \n",
" -0.582972 \n",
" \n",
" \n",
" 2013-01-03 \n",
" 0.462220 \n",
" 0.173447 \n",
" \n",
" \n",
" 2013-01-04 \n",
" 0.702469 \n",
" -0.199847 \n",
" \n",
" \n",
" 2013-01-05 \n",
" -0.108791 \n",
" -0.250403 \n",
" \n",
" \n",
" 2013-01-06 \n",
" -1.128097 \n",
" -1.115742 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B\n",
"2013-01-01 -0.159369 -0.099802\n",
"2013-01-02 -0.284584 -0.582972\n",
"2013-01-03 0.462220 0.173447\n",
"2013-01-04 0.702469 -0.199847\n",
"2013-01-05 -0.108791 -0.250403\n",
"2013-01-06 -1.128097 -1.115742"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.loc[:, ['A', 'B']]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "TwtqfdCeEh-F"
},
"source": [
"Showing label slicing, both endpoints are included:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "7JmCDJW3Eh-G",
"outputId": "7906cc9b-c6aa-4f14-b259-25e8e3f250f7"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-02 \n",
" -0.284584 \n",
" -0.582972 \n",
" \n",
" \n",
" 2013-01-03 \n",
" 0.462220 \n",
" 0.173447 \n",
" \n",
" \n",
" 2013-01-04 \n",
" 0.702469 \n",
" -0.199847 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B\n",
"2013-01-02 -0.284584 -0.582972\n",
"2013-01-03 0.462220 0.173447\n",
"2013-01-04 0.702469 -0.199847"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.loc['20130102':'20130104', ['A', 'B']]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "VP6aFTCjEh-H"
},
"source": [
"Reduction in the dimensions of the returned object:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "aGA2noyQEh-H",
"outputId": "c84c418a-f06f-4573-a378-8be40430463e"
},
"outputs": [
{
"data": {
"text/plain": [
"A -0.284584\n",
"B -0.582972\n",
"Name: 2013-01-02 00:00:00, dtype: float64"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.loc['20130102', ['A', 'B']]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "102_V6_jEh-H"
},
"source": [
"For getting a scalar value:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Y42nc9IdEh-H",
"outputId": "3dd644f8-9abb-4782-bd67-379e75726952"
},
"outputs": [
{
"data": {
"text/plain": [
"-0.15936938354360106"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.loc[dates[0], 'A']"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "rCVtl3hyEh-I"
},
"source": [
"For getting fast access to a scalar (equivalent to the prior method):"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "7tRrkPrDEh-I",
"outputId": "92d8643c-2137-4493-b1f5-82f19f964ef5"
},
"outputs": [
{
"data": {
"text/plain": [
"-0.15936938354360106"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.at[dates[0], 'A']"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "oBBFywhwEh-I"
},
"source": [
"### Selection by position"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "r82fyeprEh-J"
},
"source": [
"Select via the position of the passed integers:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "fuy2D5inEh-J",
"outputId": "6d5971b1-2b45-455d-f290-ef44d6f64235"
},
"outputs": [
{
"data": {
"text/plain": [
"A 0.702469\n",
"B -0.199847\n",
"C -0.020535\n",
"D -1.290123\n",
"Name: 2013-01-04 00:00:00, dtype: float64"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.iloc[3]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "WYBGC8KIEh-J"
},
"source": [
"By integer slices, acting similar to numpy/python:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "SwnBAo9dEh-K",
"outputId": "eb83cda9-c6ac-4979-eff3-3684e40ac664"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-04 \n",
" 0.702469 \n",
" -0.199847 \n",
" \n",
" \n",
" 2013-01-05 \n",
" -0.108791 \n",
" -0.250403 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B\n",
"2013-01-04 0.702469 -0.199847\n",
"2013-01-05 -0.108791 -0.250403"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.iloc[3:5, 0:2]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "sbLR05p0Eh-K"
},
"source": [
"By lists of integer position locations, similar to the numpy/python style:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "ETDsGrfAEh-K",
"outputId": "8fc9c884-aea9-43a5-da94-9607037bb2ad"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" C \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-02 \n",
" -0.284584 \n",
" 0.073506 \n",
" \n",
" \n",
" 2013-01-03 \n",
" 0.462220 \n",
" 0.397632 \n",
" \n",
" \n",
" 2013-01-05 \n",
" -0.108791 \n",
" -0.948057 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A C\n",
"2013-01-02 -0.284584 0.073506\n",
"2013-01-03 0.462220 0.397632\n",
"2013-01-05 -0.108791 -0.948057"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.iloc[[1, 2, 4], [0, 2]]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "FYx7KahuEh-L"
},
"source": [
"For slicing rows explicitly:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "wZjktJEdEh-L",
"outputId": "b894664c-b1a4-4a3a-a3fb-7c7ac9a09053"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-02 \n",
" -0.284584 \n",
" -0.582972 \n",
" 0.073506 \n",
" 0.641281 \n",
" \n",
" \n",
" 2013-01-03 \n",
" 0.462220 \n",
" 0.173447 \n",
" 0.397632 \n",
" 0.921149 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D\n",
"2013-01-02 -0.284584 -0.582972 0.073506 0.641281\n",
"2013-01-03 0.462220 0.173447 0.397632 0.921149"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.iloc[1:3, :]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "20tRuAVCEh-L"
},
"source": [
"For slicing columns explicitly:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "7I3iH2-eEh-M",
"outputId": "a8c0e4a0-7a7e-47f6-bd6e-291db9219277"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" B \n",
" C \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-01 \n",
" -0.099802 \n",
" 0.996220 \n",
" \n",
" \n",
" 2013-01-02 \n",
" -0.582972 \n",
" 0.073506 \n",
" \n",
" \n",
" 2013-01-03 \n",
" 0.173447 \n",
" 0.397632 \n",
" \n",
" \n",
" 2013-01-04 \n",
" -0.199847 \n",
" -0.020535 \n",
" \n",
" \n",
" 2013-01-05 \n",
" -0.250403 \n",
" -0.948057 \n",
" \n",
" \n",
" 2013-01-06 \n",
" -1.115742 \n",
" -0.702814 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" B C\n",
"2013-01-01 -0.099802 0.996220\n",
"2013-01-02 -0.582972 0.073506\n",
"2013-01-03 0.173447 0.397632\n",
"2013-01-04 -0.199847 -0.020535\n",
"2013-01-05 -0.250403 -0.948057\n",
"2013-01-06 -1.115742 -0.702814"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.iloc[:, 1:3]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "MQEeMGcpEh-M"
},
"source": [
"For getting a value explicitly:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "TH-y7oGMEh-M",
"outputId": "3b40d39b-0f08-47e1-c8c7-d6fc3b85892d"
},
"outputs": [
{
"data": {
"text/plain": [
"-0.5829718231249323"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.iloc[1, 1]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "s4K3PZKKEh-M"
},
"source": [
"For getting fast access to a scalar (equivalent to the prior method):"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "2Rz1kipBEh-M",
"outputId": "e1cf7ac7-a9f6-436f-8e4f-59a522c3e74d"
},
"outputs": [
{
"data": {
"text/plain": [
"-0.5829718231249323"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.iat[1, 1]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "SvKUNsEjEh-N"
},
"source": [
"### Boolean Indexing"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "eo1AQX8mEh-N"
},
"source": [
"Selecting values from a DataFrame where a boolean condition is met."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "8miBqoK_Eh-N",
"outputId": "8498c24a-1fe4-4acd-f412-584235cfbc45"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-01 \n",
" NaN \n",
" NaN \n",
" 0.996220 \n",
" 0.710575 \n",
" \n",
" \n",
" 2013-01-02 \n",
" NaN \n",
" NaN \n",
" 0.073506 \n",
" 0.641281 \n",
" \n",
" \n",
" 2013-01-03 \n",
" 0.462220 \n",
" 0.173447 \n",
" 0.397632 \n",
" 0.921149 \n",
" \n",
" \n",
" 2013-01-04 \n",
" 0.702469 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 2013-01-05 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0.663066 \n",
" \n",
" \n",
" 2013-01-06 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D\n",
"2013-01-01 NaN NaN 0.996220 0.710575\n",
"2013-01-02 NaN NaN 0.073506 0.641281\n",
"2013-01-03 0.462220 0.173447 0.397632 0.921149\n",
"2013-01-04 0.702469 NaN NaN NaN\n",
"2013-01-05 NaN NaN NaN 0.663066\n",
"2013-01-06 NaN NaN NaN NaN"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[df > 0]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "1jtrsD7MEh-N"
},
"source": [
"Using the isin() method for filtering:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "cs6P_kCCEh-O",
"outputId": "393fe47f-2f33-4f36-907c-66934d059e49"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" E \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-01 \n",
" -0.159369 \n",
" -0.099802 \n",
" 0.996220 \n",
" 0.710575 \n",
" one \n",
" \n",
" \n",
" 2013-01-02 \n",
" -0.284584 \n",
" -0.582972 \n",
" 0.073506 \n",
" 0.641281 \n",
" one \n",
" \n",
" \n",
" 2013-01-03 \n",
" 0.462220 \n",
" 0.173447 \n",
" 0.397632 \n",
" 0.921149 \n",
" two \n",
" \n",
" \n",
" 2013-01-04 \n",
" 0.702469 \n",
" -0.199847 \n",
" -0.020535 \n",
" -1.290123 \n",
" three \n",
" \n",
" \n",
" 2013-01-05 \n",
" -0.108791 \n",
" -0.250403 \n",
" -0.948057 \n",
" 0.663066 \n",
" four \n",
" \n",
" \n",
" 2013-01-06 \n",
" -1.128097 \n",
" -1.115742 \n",
" -0.702814 \n",
" -0.276980 \n",
" three \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D E\n",
"2013-01-01 -0.159369 -0.099802 0.996220 0.710575 one\n",
"2013-01-02 -0.284584 -0.582972 0.073506 0.641281 one\n",
"2013-01-03 0.462220 0.173447 0.397632 0.921149 two\n",
"2013-01-04 0.702469 -0.199847 -0.020535 -1.290123 three\n",
"2013-01-05 -0.108791 -0.250403 -0.948057 0.663066 four\n",
"2013-01-06 -1.128097 -1.115742 -0.702814 -0.276980 three"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df2 = df.copy()\n",
"df2['E'] = ['one', 'one', 'two', 'three', 'four', 'three']\n",
"df2"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "d_nQBQF1Eh-P",
"outputId": "d2e01444-a502-47dc-d7ba-d36681c6bf9c"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" E \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-03 \n",
" 0.462220 \n",
" 0.173447 \n",
" 0.397632 \n",
" 0.921149 \n",
" two \n",
" \n",
" \n",
" 2013-01-05 \n",
" -0.108791 \n",
" -0.250403 \n",
" -0.948057 \n",
" 0.663066 \n",
" four \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D E\n",
"2013-01-03 0.462220 0.173447 0.397632 0.921149 two\n",
"2013-01-05 -0.108791 -0.250403 -0.948057 0.663066 four"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df2[df2['E'].isin(['two', 'four'])]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "vo085nBiEh-P"
},
"source": [
"### Setting"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "iL0_dDBrEh-Q"
},
"source": [
"Setting a new column automatically aligns the data by the indexes."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "nAS9d_lbEh-Q",
"outputId": "dd639874-9976-4f50-d7b7-89d493c3850f"
},
"outputs": [
{
"data": {
"text/plain": [
"2013-01-02 1\n",
"2013-01-03 2\n",
"2013-01-04 3\n",
"2013-01-05 4\n",
"2013-01-06 5\n",
"2013-01-07 6\n",
"Freq: D, dtype: int64"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1 = pd.Series([1, 2, 3, 4, 5, 6], index=pd.date_range('20130102', periods=6))\n",
"s1"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"id": "czHtnKKsEh-Q"
},
"outputs": [],
"source": [
"df['F'] = s1"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "WXI6M1eBEh-R"
},
"source": [
"Setting values by label:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"id": "shE4FKLOEh-R"
},
"outputs": [],
"source": [
"df.at[dates[0], 'A'] = 0"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "DdZ-5UkUEh-R"
},
"source": [
"Setting values by position:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"id": "prMWqSWBEh-S"
},
"outputs": [],
"source": [
"df.iat[0, 1] = 0"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "5RsqbLmJEh-S"
},
"source": [
"Setting by assigning with a NumPy array:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"collapsed": true,
"id": "HK7Q0sGoEh-S",
"outputId": "60eeb981-19d1-46c6-ed03-740b48ab0a28"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
":1: DeprecationWarning: In a future version, `df.iloc[:, i] = newvals` will attempt to set the values inplace instead of always setting a new array. To retain the old behavior, use either `df[df.columns[i]] = newvals` or, if columns are non-unique, `df.isetitem(i, newvals)`\n",
" df.loc[:, 'D'] = np.array([5] * len(df))\n"
]
}
],
"source": [
"df.loc[:, 'D'] = np.array([5] * len(df))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ff0dfzvoEh-S"
},
"source": [
"The result of the prior setting operations."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "bWBENheSEh-S",
"outputId": "dc07977f-8c94-4f1e-d3f3-170ca69bbc06"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" F \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-01 \n",
" 0.000000 \n",
" 0.000000 \n",
" 0.996220 \n",
" 5 \n",
" NaN \n",
" \n",
" \n",
" 2013-01-02 \n",
" -0.284584 \n",
" -0.582972 \n",
" 0.073506 \n",
" 5 \n",
" 1.0 \n",
" \n",
" \n",
" 2013-01-03 \n",
" 0.462220 \n",
" 0.173447 \n",
" 0.397632 \n",
" 5 \n",
" 2.0 \n",
" \n",
" \n",
" 2013-01-04 \n",
" 0.702469 \n",
" -0.199847 \n",
" -0.020535 \n",
" 5 \n",
" 3.0 \n",
" \n",
" \n",
" 2013-01-05 \n",
" -0.108791 \n",
" -0.250403 \n",
" -0.948057 \n",
" 5 \n",
" 4.0 \n",
" \n",
" \n",
" 2013-01-06 \n",
" -1.128097 \n",
" -1.115742 \n",
" -0.702814 \n",
" 5 \n",
" 5.0 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D F\n",
"2013-01-01 0.000000 0.000000 0.996220 5 NaN\n",
"2013-01-02 -0.284584 -0.582972 0.073506 5 1.0\n",
"2013-01-03 0.462220 0.173447 0.397632 5 2.0\n",
"2013-01-04 0.702469 -0.199847 -0.020535 5 3.0\n",
"2013-01-05 -0.108791 -0.250403 -0.948057 5 4.0\n",
"2013-01-06 -1.128097 -1.115742 -0.702814 5 5.0"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "zt__ArpqEh-T"
},
"source": [
"A where operation with setting."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Km-k39EvEh-T",
"outputId": "50f96db2-db43-4449-c211-77629908e170"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" F \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-01 \n",
" 0.000000 \n",
" 0.000000 \n",
" -0.996220 \n",
" -5 \n",
" NaN \n",
" \n",
" \n",
" 2013-01-02 \n",
" -0.284584 \n",
" -0.582972 \n",
" -0.073506 \n",
" -5 \n",
" -1.0 \n",
" \n",
" \n",
" 2013-01-03 \n",
" -0.462220 \n",
" -0.173447 \n",
" -0.397632 \n",
" -5 \n",
" -2.0 \n",
" \n",
" \n",
" 2013-01-04 \n",
" -0.702469 \n",
" -0.199847 \n",
" -0.020535 \n",
" -5 \n",
" -3.0 \n",
" \n",
" \n",
" 2013-01-05 \n",
" -0.108791 \n",
" -0.250403 \n",
" -0.948057 \n",
" -5 \n",
" -4.0 \n",
" \n",
" \n",
" 2013-01-06 \n",
" -1.128097 \n",
" -1.115742 \n",
" -0.702814 \n",
" -5 \n",
" -5.0 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D F\n",
"2013-01-01 0.000000 0.000000 -0.996220 -5 NaN\n",
"2013-01-02 -0.284584 -0.582972 -0.073506 -5 -1.0\n",
"2013-01-03 -0.462220 -0.173447 -0.397632 -5 -2.0\n",
"2013-01-04 -0.702469 -0.199847 -0.020535 -5 -3.0\n",
"2013-01-05 -0.108791 -0.250403 -0.948057 -5 -4.0\n",
"2013-01-06 -1.128097 -1.115742 -0.702814 -5 -5.0"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df2 = df.copy()\n",
"\n",
"df2[df2 > 0] = -df2\n",
"\n",
"df2"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "AMk33NUNEh-T"
},
"source": [
"### Missing Data"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "37jfBprEEh-T"
},
"source": [
"pandas primarily uses the value np.nan to represent missing data. It is by default not included in computations. See the Missing Data section.\n",
"\n",
"Reindexing allows you to change/add/delete the index on a specified axis. This returns a copy of the data."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "_UjdfQQWEh-U",
"outputId": "0d4ae819-6a43-4d3a-b8ba-d80db49dfbb8"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" F \n",
" E \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-01 \n",
" 0.000000 \n",
" 0.000000 \n",
" 0.996220 \n",
" 5 \n",
" NaN \n",
" 1.0 \n",
" \n",
" \n",
" 2013-01-02 \n",
" -0.284584 \n",
" -0.582972 \n",
" 0.073506 \n",
" 5 \n",
" 1.0 \n",
" 1.0 \n",
" \n",
" \n",
" 2013-01-03 \n",
" 0.462220 \n",
" 0.173447 \n",
" 0.397632 \n",
" 5 \n",
" 2.0 \n",
" NaN \n",
" \n",
" \n",
" 2013-01-04 \n",
" 0.702469 \n",
" -0.199847 \n",
" -0.020535 \n",
" 5 \n",
" 3.0 \n",
" NaN \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D F E\n",
"2013-01-01 0.000000 0.000000 0.996220 5 NaN 1.0\n",
"2013-01-02 -0.284584 -0.582972 0.073506 5 1.0 1.0\n",
"2013-01-03 0.462220 0.173447 0.397632 5 2.0 NaN\n",
"2013-01-04 0.702469 -0.199847 -0.020535 5 3.0 NaN"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df1 = df.reindex(index=dates[0:4], columns=list(df.columns) + ['E'])\n",
"\n",
"df1.loc[dates[0]:dates[1], 'E'] = 1\n",
"\n",
"df1"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "d1Z5BwsDEh-U"
},
"source": [
"** To drop any rows that have missing data. **"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "wXAVAjSGEh-U",
"outputId": "142bcdda-096f-46f1-fea1-f6c0f6fc5b1b"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" F \n",
" E \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-02 \n",
" -0.284584 \n",
" -0.582972 \n",
" 0.073506 \n",
" 5 \n",
" 1.0 \n",
" 1.0 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D F E\n",
"2013-01-02 -0.284584 -0.582972 0.073506 5 1.0 1.0"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df1.dropna()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "WVTrMryyEh-U"
},
"source": [
"Filling missing data."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "-W-u-vP7Eh-U",
"outputId": "f7f3a2b7-09ed-4f50-b898-54cacbfb72c6"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" F \n",
" E \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-01 \n",
" 0.000000 \n",
" 0.000000 \n",
" 0.996220 \n",
" 5 \n",
" 5.0 \n",
" 1.0 \n",
" \n",
" \n",
" 2013-01-02 \n",
" -0.284584 \n",
" -0.582972 \n",
" 0.073506 \n",
" 5 \n",
" 1.0 \n",
" 1.0 \n",
" \n",
" \n",
" 2013-01-03 \n",
" 0.462220 \n",
" 0.173447 \n",
" 0.397632 \n",
" 5 \n",
" 2.0 \n",
" 5.0 \n",
" \n",
" \n",
" 2013-01-04 \n",
" 0.702469 \n",
" -0.199847 \n",
" -0.020535 \n",
" 5 \n",
" 3.0 \n",
" 5.0 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D F E\n",
"2013-01-01 0.000000 0.000000 0.996220 5 5.0 1.0\n",
"2013-01-02 -0.284584 -0.582972 0.073506 5 1.0 1.0\n",
"2013-01-03 0.462220 0.173447 0.397632 5 2.0 5.0\n",
"2013-01-04 0.702469 -0.199847 -0.020535 5 3.0 5.0"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df1.fillna(value=5)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "DlJVhZ5-Eh-V"
},
"source": [
"To get the boolean mask where values are nan"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "8o9-ApeVEh-V",
"outputId": "992b3a48-e729-4276-d103-ff17b6f1bf77"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" F \n",
" E \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-01 \n",
" False \n",
" False \n",
" False \n",
" False \n",
" True \n",
" False \n",
" \n",
" \n",
" 2013-01-02 \n",
" False \n",
" False \n",
" False \n",
" False \n",
" False \n",
" False \n",
" \n",
" \n",
" 2013-01-03 \n",
" False \n",
" False \n",
" False \n",
" False \n",
" False \n",
" True \n",
" \n",
" \n",
" 2013-01-04 \n",
" False \n",
" False \n",
" False \n",
" False \n",
" False \n",
" True \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D F E\n",
"2013-01-01 False False False False True False\n",
"2013-01-02 False False False False False False\n",
"2013-01-03 False False False False False True\n",
"2013-01-04 False False False False False True"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df1.isnull()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "nOT7pKc3Eh-V"
},
"source": [
"## Operations"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Ez3tbk9_Eh-W"
},
"source": [
"### Stats"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7i9TL3ziEh-W"
},
"source": [
"Performing a descriptive statistic:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "za3FhicFEh-W",
"outputId": "878a6df1-eed8-418c-cf07-01a85ef0023b"
},
"outputs": [
{
"data": {
"text/plain": [
"A -0.059464\n",
"B -0.329253\n",
"C -0.034008\n",
"D 5.000000\n",
"F 3.000000\n",
"dtype: float64"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.mean()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "0rbPk4jjEh-W"
},
"source": [
"Same operation on the other axis:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "1u4MvfZNEh-Y",
"outputId": "b98ce900-a1f3-4758-e704-b180cfa439ce"
},
"outputs": [
{
"data": {
"text/plain": [
"2013-01-01 1.499055\n",
"2013-01-02 1.041190\n",
"2013-01-03 1.606660\n",
"2013-01-04 1.696417\n",
"2013-01-05 1.538550\n",
"2013-01-06 1.410669\n",
"Freq: D, dtype: float64"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.mean(1)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "idqkoLDNEh-Z"
},
"source": [
"Operating with objects that have different dimensionality and need alignment. In addition, pandas automatically broadcasts along the specified dimension."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "MGKyv3goEh-Z",
"outputId": "0482ef7d-c605-43e5-c5bc-45586d7a9abd"
},
"outputs": [
{
"data": {
"text/plain": [
"2013-01-01 NaN\n",
"2013-01-02 NaN\n",
"2013-01-03 1.0\n",
"2013-01-04 3.0\n",
"2013-01-05 5.0\n",
"2013-01-06 NaN\n",
"Freq: D, dtype: float64"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = pd.Series([1, 3, 5, np.nan, 6, 8], index=dates).shift(2)\n",
"s"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Wg3YBSiDEh-b",
"outputId": "04ae64a0-8e15-4d16-ae80-d43e8436e236"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" F \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-01 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 2013-01-02 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 2013-01-03 \n",
" -0.537780 \n",
" -0.826553 \n",
" -0.602368 \n",
" 4.0 \n",
" 1.0 \n",
" \n",
" \n",
" 2013-01-04 \n",
" -2.297531 \n",
" -3.199847 \n",
" -3.020535 \n",
" 2.0 \n",
" 0.0 \n",
" \n",
" \n",
" 2013-01-05 \n",
" -5.108791 \n",
" -5.250403 \n",
" -5.948057 \n",
" 0.0 \n",
" -1.0 \n",
" \n",
" \n",
" 2013-01-06 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D F\n",
"2013-01-01 NaN NaN NaN NaN NaN\n",
"2013-01-02 NaN NaN NaN NaN NaN\n",
"2013-01-03 -0.537780 -0.826553 -0.602368 4.0 1.0\n",
"2013-01-04 -2.297531 -3.199847 -3.020535 2.0 0.0\n",
"2013-01-05 -5.108791 -5.250403 -5.948057 0.0 -1.0\n",
"2013-01-06 NaN NaN NaN NaN NaN"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.sub(s, axis='index')"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "9ABOZxSnEh-b"
},
"source": [
"### Apply"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "elBUf_c7Eh-b"
},
"source": [
"Applying functions to the data:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "bTSXYfA7Eh-f",
"outputId": "e256be30-8740-4b75-f996-60223c3de71e"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" F \n",
" \n",
" \n",
" \n",
" \n",
" 2013-01-01 \n",
" 0.000000 \n",
" 0.000000 \n",
" 0.996220 \n",
" 5 \n",
" NaN \n",
" \n",
" \n",
" 2013-01-02 \n",
" -0.284584 \n",
" -0.582972 \n",
" 1.069726 \n",
" 10 \n",
" 1.0 \n",
" \n",
" \n",
" 2013-01-03 \n",
" 0.177637 \n",
" -0.409525 \n",
" 1.467358 \n",
" 15 \n",
" 3.0 \n",
" \n",
" \n",
" 2013-01-04 \n",
" 0.880106 \n",
" -0.609372 \n",
" 1.446822 \n",
" 20 \n",
" 6.0 \n",
" \n",
" \n",
" 2013-01-05 \n",
" 0.771315 \n",
" -0.859775 \n",
" 0.498765 \n",
" 25 \n",
" 10.0 \n",
" \n",
" \n",
" 2013-01-06 \n",
" -0.356782 \n",
" -1.975517 \n",
" -0.204049 \n",
" 30 \n",
" 15.0 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D F\n",
"2013-01-01 0.000000 0.000000 0.996220 5 NaN\n",
"2013-01-02 -0.284584 -0.582972 1.069726 10 1.0\n",
"2013-01-03 0.177637 -0.409525 1.467358 15 3.0\n",
"2013-01-04 0.880106 -0.609372 1.446822 20 6.0\n",
"2013-01-05 0.771315 -0.859775 0.498765 25 10.0\n",
"2013-01-06 -0.356782 -1.975517 -0.204049 30 15.0"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.apply(np.cumsum)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "4wgZyifgEh-g"
},
"source": [
"### Histrogramming"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "5pyml5CvEh-g",
"outputId": "d381d707-6f86-481c-b266-a6e37bc21e12"
},
"outputs": [
{
"data": {
"text/plain": [
"0 0\n",
"1 5\n",
"2 1\n",
"3 2\n",
"4 2\n",
"5 6\n",
"6 0\n",
"7 2\n",
"8 6\n",
"9 5\n",
"dtype: int64"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = pd.Series(np.random.randint(0, 7, size=10))\n",
"s"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Vh0UCpx3Eh-h",
"outputId": "437ad0b8-f822-4e67-df91-af2802267fe5"
},
"outputs": [
{
"data": {
"text/plain": [
"2 3\n",
"0 2\n",
"5 2\n",
"6 2\n",
"1 1\n",
"dtype: int64"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.value_counts()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "LqE0sKNSEh-h"
},
"source": [
"### String Method"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "JejKRxfIEh-h"
},
"source": [
"Series is equipped with a set of string processing methods in the str attribute that make it easy to operate on each element of the array, as in the code snippet below. Note that pattern-matching in str generally uses regular expressions by default (and in some cases always uses them)."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "s1GJoKnLEh-h",
"outputId": "258c5a5b-4d6e-4bf9-803c-5aa6d390c5f7"
},
"outputs": [
{
"data": {
"text/plain": [
"0 A\n",
"1 B\n",
"2 C\n",
"3 AaBa\n",
"4 Baca\n",
"5 NaN\n",
"6 CABA\n",
"7 dog\n",
"8 cat\n",
"dtype: object"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = pd.Series(['A', 'B', 'C', 'AaBa', 'Baca', np.nan, 'CABA', 'dog', 'cat'])\n",
"s"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "N4jmHeFUEh-i",
"outputId": "b9d36ad0-c6b1-42f7-a62e-14fce3343aa6"
},
"outputs": [
{
"data": {
"text/plain": [
"0 a\n",
"1 b\n",
"2 c\n",
"3 aaba\n",
"4 baca\n",
"5 NaN\n",
"6 caba\n",
"7 dog\n",
"8 cat\n",
"dtype: object"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.str.lower()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "wIQur8N_Eh-i"
},
"source": [
"## Merge"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "UDWQ0678Eh-i"
},
"source": [
"### Concat"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "PjE-znMgEh-j"
},
"source": [
"pandas provides various facilities for easily combining together Series and DataFrame objects with various kinds of set logic for the indexes and relational algebra functionality in the case of join / merge-type operations."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "grU7yz8dEh-j"
},
"source": [
"Concatenating pandas objects together with concat():"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "QqgiVGVQEh-j",
"outputId": "caeecd23-60c9-4e0a-98ec-32f3e6865244"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" 0 \n",
" 1 \n",
" 2 \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.554041 \n",
" 1.819310 \n",
" -0.760252 \n",
" 1.831732 \n",
" \n",
" \n",
" 1 \n",
" 0.737515 \n",
" 0.933649 \n",
" 0.047110 \n",
" 0.830570 \n",
" \n",
" \n",
" 2 \n",
" 1.478678 \n",
" -0.291802 \n",
" 0.452511 \n",
" 0.707388 \n",
" \n",
" \n",
" 3 \n",
" 1.369125 \n",
" 0.829020 \n",
" 1.965164 \n",
" 1.210251 \n",
" \n",
" \n",
" 4 \n",
" 0.629035 \n",
" 0.817867 \n",
" 0.740799 \n",
" -1.704560 \n",
" \n",
" \n",
" 5 \n",
" 0.762615 \n",
" -0.314556 \n",
" 1.216510 \n",
" -1.902308 \n",
" \n",
" \n",
" 6 \n",
" -2.181161 \n",
" 0.736552 \n",
" 1.838537 \n",
" -0.141971 \n",
" \n",
" \n",
" 7 \n",
" -0.364336 \n",
" 1.048950 \n",
" -0.885021 \n",
" 0.235757 \n",
" \n",
" \n",
" 8 \n",
" -0.661032 \n",
" 0.443768 \n",
" 1.186724 \n",
" 0.767563 \n",
" \n",
" \n",
" 9 \n",
" 0.383260 \n",
" 0.739670 \n",
" -1.536112 \n",
" 0.589527 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" 0 1 2 3\n",
"0 0.554041 1.819310 -0.760252 1.831732\n",
"1 0.737515 0.933649 0.047110 0.830570\n",
"2 1.478678 -0.291802 0.452511 0.707388\n",
"3 1.369125 0.829020 1.965164 1.210251\n",
"4 0.629035 0.817867 0.740799 -1.704560\n",
"5 0.762615 -0.314556 1.216510 -1.902308\n",
"6 -2.181161 0.736552 1.838537 -0.141971\n",
"7 -0.364336 1.048950 -0.885021 0.235757\n",
"8 -0.661032 0.443768 1.186724 0.767563\n",
"9 0.383260 0.739670 -1.536112 0.589527"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.DataFrame(np.random.randn(10, 4))\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "sop9otWhEh-j",
"outputId": "d4e210e8-c3ce-4ee8-8c44-47ef0b6d5847"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" 0 \n",
" 1 \n",
" 2 \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.554041 \n",
" 1.819310 \n",
" -0.760252 \n",
" 1.831732 \n",
" \n",
" \n",
" 1 \n",
" 0.737515 \n",
" 0.933649 \n",
" 0.047110 \n",
" 0.830570 \n",
" \n",
" \n",
" 2 \n",
" 1.478678 \n",
" -0.291802 \n",
" 0.452511 \n",
" 0.707388 \n",
" \n",
" \n",
" 7 \n",
" -0.364336 \n",
" 1.048950 \n",
" -0.885021 \n",
" 0.235757 \n",
" \n",
" \n",
" 8 \n",
" -0.661032 \n",
" 0.443768 \n",
" 1.186724 \n",
" 0.767563 \n",
" \n",
" \n",
" 9 \n",
" 0.383260 \n",
" 0.739670 \n",
" -1.536112 \n",
" 0.589527 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" 0 1 2 3\n",
"0 0.554041 1.819310 -0.760252 1.831732\n",
"1 0.737515 0.933649 0.047110 0.830570\n",
"2 1.478678 -0.291802 0.452511 0.707388\n",
"7 -0.364336 1.048950 -0.885021 0.235757\n",
"8 -0.661032 0.443768 1.186724 0.767563\n",
"9 0.383260 0.739670 -1.536112 0.589527"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Break it into pieces\n",
"pieces = [df[0:3], df[7:]]\n",
"pd.concat(pieces)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Uy7qeZbKEh-k"
},
"source": [
"### Join"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "E7SzBfQsEh-k"
},
"source": [
"SQL style merges"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "zxi1m3k9Eh-l",
"outputId": "709c68bf-9976-46db-d023-b62db80b69f1"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" key \n",
" lval \n",
" rval \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" foo \n",
" 1 \n",
" 4 \n",
" \n",
" \n",
" 1 \n",
" foo \n",
" 1 \n",
" 5 \n",
" \n",
" \n",
" 2 \n",
" foo \n",
" 2 \n",
" 4 \n",
" \n",
" \n",
" 3 \n",
" foo \n",
" 2 \n",
" 5 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" key lval rval\n",
"0 foo 1 4\n",
"1 foo 1 5\n",
"2 foo 2 4\n",
"3 foo 2 5"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"left = pd.DataFrame({'key': ['foo', 'foo'], 'lval': [1, 2]})\n",
"right = pd.DataFrame({'key': ['foo', 'foo'], 'rval': [4, 5]})\n",
"\n",
"pd.merge(left, right, on='key')"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "x633gwufEh-l"
},
"source": [
"Another Example:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "0e_vUFQ7Eh-l",
"outputId": "864dca2f-75f7-40ac-e2ad-0a980b3f4407"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" key \n",
" lval \n",
" rval \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" foo \n",
" 1 \n",
" 4 \n",
" \n",
" \n",
" 1 \n",
" bar \n",
" 2 \n",
" 5 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" key lval rval\n",
"0 foo 1 4\n",
"1 bar 2 5"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"left = pd.DataFrame({'key': ['foo', 'bar'], 'lval': [1, 2]})\n",
"right = pd.DataFrame({'key': ['foo', 'bar'], 'rval': [4, 5]})\n",
"\n",
"pd.merge(left, right, on='key')"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "gpBOBSSGEh-m"
},
"source": [
"### Append"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "nnR3Nm7rEh-m"
},
"source": [
"Append rows to a dataframe."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "u4thCaJLEh-m",
"outputId": "81d5246e-1f2d-417c-a5a4-86b1d89ae8ad"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 1.035525 \n",
" 0.046660 \n",
" 1.476975 \n",
" 0.356385 \n",
" \n",
" \n",
" 1 \n",
" 0.650000 \n",
" -0.451045 \n",
" 0.264549 \n",
" 1.080703 \n",
" \n",
" \n",
" 2 \n",
" -0.227501 \n",
" -0.628831 \n",
" 0.458663 \n",
" -0.675215 \n",
" \n",
" \n",
" 3 \n",
" -0.147583 \n",
" -1.033229 \n",
" 0.019412 \n",
" -1.786899 \n",
" \n",
" \n",
" 4 \n",
" -0.392623 \n",
" -0.862504 \n",
" 0.556490 \n",
" 0.399691 \n",
" \n",
" \n",
" 5 \n",
" -0.147263 \n",
" 0.244907 \n",
" 0.513290 \n",
" 1.166708 \n",
" \n",
" \n",
" 6 \n",
" -0.582422 \n",
" -1.230051 \n",
" 1.806441 \n",
" -1.858918 \n",
" \n",
" \n",
" 7 \n",
" 0.741935 \n",
" 1.092879 \n",
" -0.413341 \n",
" 1.068340 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D\n",
"0 1.035525 0.046660 1.476975 0.356385\n",
"1 0.650000 -0.451045 0.264549 1.080703\n",
"2 -0.227501 -0.628831 0.458663 -0.675215\n",
"3 -0.147583 -1.033229 0.019412 -1.786899\n",
"4 -0.392623 -0.862504 0.556490 0.399691\n",
"5 -0.147263 0.244907 0.513290 1.166708\n",
"6 -0.582422 -1.230051 1.806441 -1.858918\n",
"7 0.741935 1.092879 -0.413341 1.068340"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.DataFrame(np.random.randn(8, 4), columns=['A', 'B', 'C', 'D'])\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "ZZzRUjN6Eh-m",
"outputId": "f61abddf-5745-4c25-ecfd-1f5e7d1158f3"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
":2: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n",
" df.append(s, ignore_index=True)\n"
]
},
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 1.035525 \n",
" 0.046660 \n",
" 1.476975 \n",
" 0.356385 \n",
" \n",
" \n",
" 1 \n",
" 0.650000 \n",
" -0.451045 \n",
" 0.264549 \n",
" 1.080703 \n",
" \n",
" \n",
" 2 \n",
" -0.227501 \n",
" -0.628831 \n",
" 0.458663 \n",
" -0.675215 \n",
" \n",
" \n",
" 3 \n",
" -0.147583 \n",
" -1.033229 \n",
" 0.019412 \n",
" -1.786899 \n",
" \n",
" \n",
" 4 \n",
" -0.392623 \n",
" -0.862504 \n",
" 0.556490 \n",
" 0.399691 \n",
" \n",
" \n",
" 5 \n",
" -0.147263 \n",
" 0.244907 \n",
" 0.513290 \n",
" 1.166708 \n",
" \n",
" \n",
" 6 \n",
" -0.582422 \n",
" -1.230051 \n",
" 1.806441 \n",
" -1.858918 \n",
" \n",
" \n",
" 7 \n",
" 0.741935 \n",
" 1.092879 \n",
" -0.413341 \n",
" 1.068340 \n",
" \n",
" \n",
" 8 \n",
" -0.147583 \n",
" -1.033229 \n",
" 0.019412 \n",
" -1.786899 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D\n",
"0 1.035525 0.046660 1.476975 0.356385\n",
"1 0.650000 -0.451045 0.264549 1.080703\n",
"2 -0.227501 -0.628831 0.458663 -0.675215\n",
"3 -0.147583 -1.033229 0.019412 -1.786899\n",
"4 -0.392623 -0.862504 0.556490 0.399691\n",
"5 -0.147263 0.244907 0.513290 1.166708\n",
"6 -0.582422 -1.230051 1.806441 -1.858918\n",
"7 0.741935 1.092879 -0.413341 1.068340\n",
"8 -0.147583 -1.033229 0.019412 -1.786899"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = df.iloc[3]\n",
"df.append(s, ignore_index=True)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "8WlageZyEh-n"
},
"source": [
"## Grouping"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "DnGJLGEVEh-n"
},
"source": [
"By “group by” we are referring to a process involving one or more of the following steps:\n",
"\n",
"* Splitting the data into groups based on some criteria\n",
"* Applying a function to each group independently\n",
"* Combining the results into a data structure"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "AM_kmcJmEh-n",
"outputId": "ca09e9bd-efb9-4bfe-86b0-7295c4809ce3"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" A \n",
" B \n",
" C \n",
" D \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" foo \n",
" one \n",
" 0.098420 \n",
" 1.417315 \n",
" \n",
" \n",
" 1 \n",
" bar \n",
" one \n",
" 0.829466 \n",
" 0.053800 \n",
" \n",
" \n",
" 2 \n",
" foo \n",
" two \n",
" -0.251390 \n",
" 1.386465 \n",
" \n",
" \n",
" 3 \n",
" bar \n",
" three \n",
" 1.581271 \n",
" 0.273634 \n",
" \n",
" \n",
" 4 \n",
" foo \n",
" two \n",
" -0.640688 \n",
" -0.939706 \n",
" \n",
" \n",
" 5 \n",
" bar \n",
" two \n",
" 1.184550 \n",
" 0.289504 \n",
" \n",
" \n",
" 6 \n",
" foo \n",
" one \n",
" -1.185911 \n",
" -1.525941 \n",
" \n",
" \n",
" 7 \n",
" foo \n",
" three \n",
" -2.128775 \n",
" 0.957272 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" A B C D\n",
"0 foo one 0.098420 1.417315\n",
"1 bar one 0.829466 0.053800\n",
"2 foo two -0.251390 1.386465\n",
"3 bar three 1.581271 0.273634\n",
"4 foo two -0.640688 -0.939706\n",
"5 bar two 1.184550 0.289504\n",
"6 foo one -1.185911 -1.525941\n",
"7 foo three -2.128775 0.957272"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar',\n",
" 'foo', 'bar', 'foo', 'foo'],\n",
" 'B': ['one', 'one', 'two', 'three',\n",
" 'two', 'two', 'one', 'three'],\n",
" 'C': np.random.randn(8),\n",
" 'D': np.random.randn(8)})\n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "IYiV9EakEh-n"
},
"source": [
"Grouping and then applying the sum() function to the resulting groups."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "72qbz28HEh-o",
"outputId": "f389959d-45b5-4fc1-da26-6a15158454fd"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
":1: FutureWarning: The default value of numeric_only in DataFrameGroupBy.sum is deprecated. In a future version, numeric_only will default to False. Either specify numeric_only or select only columns which should be valid for the function.\n",
" df.groupby('A').sum()\n"
]
},
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" C \n",
" D \n",
" \n",
" \n",
" A \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" bar \n",
" 3.595286 \n",
" 0.616939 \n",
" \n",
" \n",
" foo \n",
" -4.108344 \n",
" 1.295405 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" C D\n",
"A \n",
"bar 3.595286 0.616939\n",
"foo -4.108344 1.295405"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.groupby('A').sum()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "mKt1CS1KEh-o"
},
"source": [
"Grouping by multiple columns forms a hierarchical index, and again we can apply the sum function."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Uf0J6AISEh-o",
"outputId": "3bb4ec6c-042b-4b47-9a11-c81b3860aac1"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" C \n",
" D \n",
" \n",
" \n",
" A \n",
" B \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" bar \n",
" one \n",
" 0.829466 \n",
" 0.053800 \n",
" \n",
" \n",
" three \n",
" 1.581271 \n",
" 0.273634 \n",
" \n",
" \n",
" two \n",
" 1.184550 \n",
" 0.289504 \n",
" \n",
" \n",
" foo \n",
" one \n",
" -1.087491 \n",
" -0.108626 \n",
" \n",
" \n",
" three \n",
" -2.128775 \n",
" 0.957272 \n",
" \n",
" \n",
" two \n",
" -0.892078 \n",
" 0.446759 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" C D\n",
"A B \n",
"bar one 0.829466 0.053800\n",
" three 1.581271 0.273634\n",
" two 1.184550 0.289504\n",
"foo one -1.087491 -0.108626\n",
" three -2.128775 0.957272\n",
" two -0.892078 0.446759"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.groupby(['A', 'B']).sum()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "KQ6PfWSwEh-o"
},
"source": [
"## Plotting"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "5jyhCutFEh-o",
"outputId": "c61e0f99-842d-4db5-94df-2b1048100037"
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ts = pd.Series(np.random.randn(1000),\n",
" index=pd.date_range('1/1/2000', periods=1000))\n",
"ts = ts.cumsum()\n",
"ts.plot()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "HwH3vbO2Eh-p",
"outputId": "d52a9009-7548-4415-a927-88e0de6306a0"
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAioAAAGtCAYAAAA4bV9OAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOyddZhUZRvG7zNd291LL93dDUqoKKgYIIoFnwgWdiF2oCgKCCggISCCgnTH0r1LbvfO5sxOn++PM6cmdmc7OL/r4mJOvzM7c97nPHE/BEmSJAQEBAQEBAQEGiCi+h6AgICAgICAgIA7BENFQEBAQEBAoMEiGCoCAgICAgICDRbBUBEQEBAQEBBosAiGioCAgICAgECDRTBUBAQEBAQEBBosgqEiICAgICAg0GCR1PcAqovNZkNGRga8vLxAEER9D0dAQEBAQEDAA0iSRElJCcLDwyESufebNHpDJSMjA1FRUfU9DAEBAQEBAYEqkJqaisjISLfbG72h4uXlBYB6o97e3vU8GgEBAQEBAQFPKC4uRlRUFDOPu6PRGyp0uMfb21swVAQEBAQEBBoZFaVtCMm0AgICAgICAg0WwVAREBAQEBAQaLAIhoqAgICAgIBAg6XR56h4itVqhdlsru9h1CpSqRRisbi+hyEgICAgIFBj1Jmh8umnn2L+/Pl46aWX8O233wIADAYD5s2bh3Xr1sFoNGL06NH48ccfERISUmPXJUkSWVlZKCwsrLFzNmR8fX0RGhoqaMoICAgICDQJ6sRQOXXqFH7++Wd06tSJt/7ll1/GP//8g40bN8LHxwezZs3CAw88gKNHj9bYtWkjJTg4GCqVqslO4CRJQq/XIycnBwAQFhZWzyMSEBAQEBCoPrVuqJSWlmLq1KlYunQpPv74Y2Z9UVERli9fjrVr12LYsGEAgBUrVqBt27Y4ceIE+vTpU+1rW61WxkgJCAio9vkaOkqlEgCQk5OD4OBgIQwkICAgINDoqfVk2hdffBH33nsvRowYwVt/5swZmM1m3vq4uDhER0fj+PHjbs9nNBpRXFzM++cOOidFpVJV8100Huj32tTzcQQEBAQE7g5q1aOybt06nD17FqdOnXLalpWVBZlMBl9fX976kJAQZGVluT3nwoUL8cEHH1RqHE013OOKu+m9CggICAg0fWrNo5KamoqXXnoJa9asgUKhqLHzzp8/H0VFRcy/1NTUGju3gICAgICAQMOi1gyVM2fOICcnB926dYNEIoFEIsHBgwexaNEiSCQShISEwGQyOVXjZGdnIzQ01O155XI5I5cvyOYLCAgICAg0bWot9DN8+HBcunSJt2769OmIi4vD66+/jqioKEilUuzduxeTJk0CACQmJiIlJQV9+/atrWEJCAgICAgINCJqzVDx8vJChw4deOvUajUCAgKY9TNmzMDcuXPh7+8Pb29vzJ49G3379q2Rip+mwPHjxzFgwACMGTMG//zzT30PR0BAQEBAoM6pVwn9b775BuPGjcOkSZMwaNAghIaGYvPmzfU5pAbF8uXLMXv2bBw6dAgZGRn1PRwBAQGBJs3W8+mY+dtpnEnW1vdQBDjUqYT+gQMHeMsKhQKLFy/G4sWL6+T6JEmizGytk2s5opSKK1WRU1paivXr1+P06dPIysrCypUr8eabb9biCAUEBASaLmdTCnAtsxiP9opm7sU5JQbklZjQLtwbepMFL607DwCwkcCyJ/3rcbQCXO6aXj8AUGa2ot27/9XLta9+OBoqmecf94YNGxAXF4c2bdrgsccew5w5czB//nyh/FhAQECgCjzw4zEAgL9KhrEdKeXuPp/shY0Edr88CEsP32b2zSs11ssYBVwjdE9uoCxfvhyPPfYYAGDMmDEoKirCwYMH63lUAgICAo2Ly+lF2HQmjVnefTUbAOVht5HUupc3nMeG0+w+uSWCodKQuKs8KkqpGFc/HF1v1/aUxMRExMfHY8uWLQAAiUSCKVOmYPny5RgyZEgtjVBAQECgabE/IQfTV/IFRzefS8fYjmHo14Jtq3I5na9wnltiBEmSgge7gXBXGSoEQVQq/FJfLF++HBaLBeHh4cw6kiQhl8vxww8/wMfHpx5HJyAgINA4+OTfay7XP/PbaXw0sb3b40xWG4rKzPBVyWpraAKVQAj9NDAsFgt+++03fPXVVzh//jzz78KFCwgPD8cff/xR30MUEBAQaBRkFRvcbntn65Vyj80Rwj8NhobvXrjL2L59OwoKCjBjxgwnz8mkSZOwfPlyPPfcc/U0OgEBAYHGgcFsRYnBAgCQigmYraRHx7UM1uBmTilyio1oHeJVm0MU8BDBo9LAWL58OUaMGOEyvDNp0iScPn0aFy9erIeRCQgICDQetDoTAMpI+eXxHh4d8/a9bRHiLQdAlS4LNAwEj0oDY9u2bW639erVCyTp2VOBgICAwN3Ml7sSAQAECAyNC8afz/XFg0uOAwB6xPjhdHKB0zEqmQTBXlQTXSH003AQPCoCAgICAk2OzWfTAVCJsQDQJpQN44xsF4IRbYMhFfOretRyMYK9KI+KUKLccBAMFQEBAQGBJkWp0cK8frhnFABAzan4FBFUOOjS+6MRxzFgVDIJguyGSnmJuAJ1i2CoCAgICAg0Ke7k6gAAXnIJPp3UCQAgErHeE4KglhVSMVpxEmbVMjEifJUAgIzCsjocce1isdrww74buJBaWN9DqRKCoSIgICAg0KRIzC4BALQN93a5XcQRcmsVrGFeq+QSRPqpAABpBU3HUFl5LAlf7rqOiYuP1vdQqoRgqAgICAgINCkuphUCADpF8Ksn7+8aAX+1DPd3jWDWje8cDplEBKmYQKSfEpF+lEclt8QIQz01sa1pDl7Pre8hVAuh6kdAQEBAoElxMa0IANApype3/uvJnWGxkZCK2Wf0ZoFqxL85HKVGCwI1cpAkCZVMDL3JiswiA5oFqj26Zl6pEeviUzC5RxSCvRU19l6qi8liw+EbefU9jGoheFQEBAQEBJoUdH5JswC+kUEQBM9IofFVyZiQD0EQCLUbGtmVSKh9fvUZfLnrOuZtvFDVYdcKdBNGmjJT4/MSCYaKgICAgECTwWYjkW8Xewv0qlqvHrry5+FfTmDD6VSX+6QXlmHehgtYdvg2AOBUEqXLUlnvxa4rWTiVpK3SOD0hIYvfcDFf1/jKroXQj4CAgIBAk6GwzAyrjRLGDFDLq3SOEE7o5rU/L2Jyjyhm2WK1QSwisOFUKjadTQMAjGoXymz3U0nLPXeqVg+5RASRiECh3oyZv58BACR9em+VxloRiVklvOX8UhPjPWosCIZKA2XatGlYtWoVs+zv74+ePXvi888/R6dOnepxZAICAgINl7xSymPgq5JCJqla0IAWfXN17hkrT6HYYEGvWH9m/aAv9nOOdZ+fkltixNjvDjM6L2PaswaOyWKr8njLI0WrdxpDY0MI/TRgxowZg8zMTGRmZmLv3r2QSCQYN25cfQ9LQEBAoMFCT8SBmqp5UwAg1MfZ2Nh1JQs9Pt6DC2lFuJOnw9XMYhdHAnKp+2n1n4sZPDG6nVeymNclBnOVx1sexWXUeem8m8xGKGQnGCoNGLlcjtDQUISGhqJLly544403kJqaitzcxl1qVhsUGYugNdRenFdAQKBxQHtUgqphqHDl9mnmb77EW76Tp3N5LG0YuGLrhQy3265nl3o4uspRZB8P/Z4yG6GQ3d1lqJAkYNLVz79qNhMsLS3F6tWr0bJlSwQEBNTQB9L4ySjNwCsHX8GAdQNw/9b7UWZpfD9CAQGBmoPxqLgJ33hCRwf9FZIk4a3k555wPSNcSgyu1+eXGnEupRAEAWx9sb/T9keWnnCq0KkuZqsNOnuVD90qILOo8XlU7q4cFbMe+CS8fq79ZgYg86wen2b79u3QaCjVRJ1Oh7CwMGzfvh0i0d1lX5bHEzueQLae+nFrDVqklaShlV+reh6VgIBAfZFXaq/40VSt4gegypUHtAzEkZtUBU+p0eJkqDgiFhGw2kiUGCwgSRIEwW94SHtgwn2U6BzlCx+llPF20Ly49iyufzy2yuN2hGs0tba3CmiMrQGEGa8BM3ToUJw/fx7nz59HfHw8Ro8ejbFjxyI5Obm+h9YgsJE2xkihyStr3MJGAgIC1YP2qARVw6MCAKuf7g25PblVqzNBLROXuz9tlpisNhjMNt6286mFeHDJcQBATABVcbP5hX54rE80T8LfZOEfV11oQ0gjlyDMnndDl27XFnuT9+Kvm38xyzvu7MC2W9uqdc67y6MiVVGejfq6diVRq9Vo2bIls7xs2TL4+Phg6dKl+Pjjj2tydI2S/LJ8p3WCoSIgcHdD56hUJ5mWJsxHgaR8PbKLjW5DPTRWkoRcIoLRYsOH269i3qjWzBge+JHtsRNjF6FrEaTBx/d1xJhvD/HOk1NsqDFlW9pQ8VFKEWAfS35p7VX9WG1WzDkwBwDQN6wvSJB47dBrAICBEQPhq/Ct0nnvLkOFICodfmlIEAQBkUiEsrLG57qrDTJ1mU7rcsuERGMBgbuRqxnFiPJXIsueg1GdZFqaULuhkllUxkz693YKwz8Xne89JAn4q2XILDLgj/gUFJWZEKCW49nBzWHjpCjSHhWaXs38kcDROvnvShYe7xtb7bEDQIGe8p54K6UIsIfCCvRmvP/3FeSWGvH84Bbo4JCPUx0KjYXM6xJTCU5ln2KWs/RZgqHSFDEajcjKosrXCgoK8MMPP6C0tBTjx4+v55E1DKb+O9Vp3d6UvfCR+WB07GhoZBoXRwkICDQ1TiVp8dCS4wjUyJjQRvsI152TK0OYD9WgMLPIgEI9Zah0ivBhDJUV03vi/b+vIDlfj0g/JbScsMq/l6h797FbfC9vjD/fUJk1rCU6hPsgp8SAL3ddx9LDd2rMUKHF3mIDVPBTyUAQlEG18lgSAKBIb8bqp3u7PX7l5ZW4mHcRH/T7AF4y50ooR7iVl3qLHrcKbzHLWbosxPnHVel9CDkqDZidO3ciLCwMYWFh6N27N06dOoWNGzdiyJAh9T20esVqs+KD4x8wy0qJEi93fxkAcDH3It4//j7m7J9TT6MTEBCoa3ZepoyCvFITSBJoHaIpV3jNU2g9lcSsEsaj0j3Gj9keqJZj5fRemNA5HMue7AG9iz46t3L5ZcwxDv2Hgr0UmNwzCk8NaAaxiECKlvLg1ASX7M0ZO0f5Qiwi4KfiJxiXdx2SJPHVma+wO3k3+v3Rz6OqygJDAfO6xFTCyyHM1lW9okkwVBooK1euBEmSzL/i4mLEx8dj0qRJ9T20euefO//gz+t/MssrxqzAUx2egr+CVYo8mXWyPoYmICBQD/g6VOS0Dau+NwUAk4C65Vw6ACpBlxsq8VNL0SxQjUWPdEVcqDeeHtCswnNGB7jOV1TJJGhjr8w5n1JY5TEfvZnHhL9u5FAelXb2zyNAzTdUdEb3DQpvF93mLd8svIkTGSec9tuTvAcbEjcAAJ7b8xyzvsRcglw9G4r//vz3IKso0yEYKgKNjqv5V3nL7QPaAwDPUAEAndm1IJOAgEDTwlF63pWybFUIdUhqjQv1gkIqxif3d8TrY+Kceua8MroNfpzaze35XhreChq5+4wLWr8lMbvE7T7lcSAxB1OXncRDPx8DAGQWUgZLuC8VwqJLlGkKy0xYfH4xpmyfwrtfFhoKcd/W+5zObyH5CcUmqwkvH3gZH534CFfyrsBsY8utS0wlyNHnMMtFxiKXeYWeIBgqAo2O1BLX3UwDFHwhPEGpVkDg7kDnUJEjF9fM1EZP8DQtgqi8t0d7R+P5IS2c9ldIxbinY5iTgdMjxg9XPxyNl0e2Lvd6sYFUWCjJjeptRayLp+6Nqdoy3PPdYZTYPxfaM+SYyGsw27DkwhJczb+KTdc3Met3Je9yeX5upWVycTIOpx9mlk9k8r0tHx7/kClu0Eipz+3Vg6+CJMlKV2cKhopAo+Fa/jWM+nMUDqUdcrndBr4GQbHRdS8OAQGBpkUpJ4ShkUvwaO+YGjmvo2cm0k/pZk8+Cod+P3/M7AOVrOLalVi7IfHX+QxcTCv0bJAcuA0I6V5E3goJ1HYvzuQeUfBRSvG0PR+GC7diJ6k4yeX5acPjv6T/MG7LOF4u4PHM4y6P8ZZ5QyamQk4X8y5i+eXlGLphKFZeXunx+xIMFYFGw9+3/nZyHU5qxebs3C7kx1SLTEV1Mi4BAYH6pdRIhRxeG9MGF98bVWOhH3+H5FNPDRVuJsaJ+cMh9dDD04Ij/vbN7uuwWCsnAEeXI3Ph6snEBqpx/t2ReOvetvBWSACCDdUYrKy0Pu21HhM7BhIRa2DRCbG/X/3d6TqO91+atv5tMTRqKLO8+NxiAMBXZ76CyeqZ+JxgqAg0GkpMbNxWKVFi3b3r8Fbvt5h10ztM5+3/x7U/oDdTTxiJ2kTM3DUTNwpu1M1gBQQE6gxajM1LLoHIwVNQHUQiAp8/2IlZrkhGn+aDCe0R6q3Aqqd6VcpoahWswYi2IQCA/Ym5eGy550UBNhvpUnXWzyGBliAIEAQBX5UMhJj1wHDvr6nFlKFyf8v7sXTkUsbQ2Je6Dzn6HFzIveB0HdrbEqwK5q3vHNwZc7rNYcfJ8Xw75hu6QzBUBBoNWTq2Jfr3w75H+8D2kIrZG8ejbR/Fr6N/RY+QHgCAA2kHsPTSUgDAg9sexPHM43jryFsQEKgJDqQewMg/R2L5peWwkTUrfS7gOSRJMpol6nISVavK5B5RGB4XjFbBGl5pcnkMaROME28Ox+DWQZW6FkEQ+GZKZ2b5xG0trDZ+pczVjGJ8u+c6ivT8PkE5JUaXEvxD2wTBRtqw/fZ2/Hv7X6byxkcpBSFmc2HSS9OZ17TnOlwTjh6hPfDNkG/gr/BHiamkQjn8Vr6tcGrqKcR6xyJEFYLH2j4GX4UvBkUOAgDeb+V8zvlyz0UjCL4JNBroH8+K0SvQI7SH03apSIqeoT15SbRns8/yMtEdewMJCFSV2ftmAwC+Pfst5GI5Hmv3WD2P6O7kTDKr3VFeRU11WPYkdb9xbDRYG3gp+F6b3BIjzyvz1l+XcC6lEEdv5mHjc/1wM6cUx27lOVX0AIBSKsZzg1vgVNYpzD88HwAQ4RWBzkGd4auS8jwqidpEkCQJnVkHvYVaT3tHxCIxwtRh0Bq02JO8BwAwMmYkdifvdrqmt8wbCokCmyZsgo20QSGhxh6kdDbazuee9+gzETwqAo2CC7kXkFKSAgIEYn1iy92XK0qUoE3gWe2+cl8AVDz1vWPvIa0krRZGK3C38f257+t7CHct3ATSbh56PCoLHS6pDzI4omw5JQacs2usnEoqgMVqw8O/HMe7W6/g9U0XnY6d3j8WErEIGaVsjzv6gc9HKQUhYT0qxaZiZOoymZJiL6kXVJwedbShcTn/MgCgd2hvfD7oczzU+iHeNcM0YQAAmVjGGCkAXHa1v5jrPGZXCIaKQKNg0dlFAICJLSciUBlY7r7v9HkHCjH1A9Fb9Fh6cSmzLUuXBZIk8fSup7H5xmbmKUNAoLLQ3zEAvBu6QN1Cy9ZP6BxeI40IGxq0FgpAhX24tHxrB/JKqfefnE8ZbI/0ikLnKF8AwOj2oQCAAiNfMRagRPJE8ixwSSpKYrzOjrkmgSr+fbd3WG+MbTYWs7vO5q2/p9k9Lt/HmNgxkIn4+TK056YiBENFoMFjtppxOvs0AGBmx5kV7j8wciBOTj3J/GC4ZXN6ix75hnwm8ctT16OAgCNR3lHMa71ZD6vNvcqnQO1BV7r4OySNNmaWP8mGtg9dz8Xkn49j5m+ncfyWc8d4R6L8VVjzdG/senkQY7BwS49p2QYflQxiRTrv2MPph90mxXJDN15SL8R4UyXg3B5AAyIGoI1/G5fjClAGYPno5egd2htjY8ciQhNR4XuhEQyVBkxWVhZmz56N5s2bQy6XIyoqCuPHj8fevXvre2h1yr93/oWNtEEpUSLSK9KjY0SECMOjh7vcxi2j45beCQhUBrOVzX3SW/S4WXizHkdz96LVUX8Hxz42jZnhbUPw7KDmAID1p1MRf0eLXVez8fMh1yXAXGL81dDIJbyclSIjK9VQbKIMFTEBiOyGirWMuq+uvraaCccEKPkCmlzDoo1/GyYUJhFJML75eHQP6Y5vh35b7ti6BHfBstHL8PngzytlqAh36QZKUlIS+vfvD19fX3zxxRfo2LEjzGYz/vvvP7z44otISEio7yHWGW8ffRsAlXtSmTjxgIgBvOXWfq1xveA6b0KRijwrNxQQcISWHPdX+ENr0OJk5km3T5MClWfP1WxEB6hcJolyKdDRHpWm9VsOK6esWSOXMCXZjgxq7RwaP5zGKsjShkqZTQuRRAeSFMFqDIVYSeXrrU9cD4DN56PpENiBed0pqBNv2ycDPynnnbgmXBPu8b6CR6WB8sILL4AgCKYRYevWrdG+fXvMnTsXJ044N4ZqqtA6KADQL7xfpY5VSVVo69+WWe4T1gcAcDDtILOuzFKGzNKq9Z8QuLspNZcCYGPyW29trbNrV7W5W2Nhy7k0PP3baTxjD3fMXX8eExcfxfIjd2C22rDs8G2m2kdrD/046oU0dsJ8ncXlfJRSRPkr8doYvkH8VP9meKRXFL6d0sWpauhi7kUmnAMAf17/E5fzLiNTvBEAYDMGwazlP9QBzr3TYr1jmddcAbeq0jO0p8f73lUeFZIkK2xTXVsoJUqPvQFarRY7d+7EggULoFarnbb7+vrW8OgaLtymVh/0+6DSx7/d5218duozvNztZVzMo1yaxzKO8fa5d8u9ODX1FMQicfUGK3DXYLVZmXvJQ60fwuprq3G94DrKLGVQSjxTL60qX5/5Gttvbcf6cesRpKqcTkdjYemhOwCoBNEnV8Qz+iAXUgvx0XZWJOynqd2QXkD9HUK8a0aNtqEQ7sP/Hv37v4GIDVRBIaHuU7klRgR7yeGlkGJ853AnSXyaK/lXnNY98s8jzOsuYc1x7E4oLCVxkHixnnpfhS/vGLFIjN/H/o4cfQ66BHep4rtiGR07GgtlCz3a964yVMosZei9tne9XPvkoyc9rgy4efMmSJJEXFxcLY+qYaM36xnlwljvWISqQyt9jk5BnbDmnjUA3DczNNvMSCxIRLuAdlUfrMBdBe1NAYBIr0h4ybxQYipBekk6Wvq1rNVrr7i8AgDw29XfMK/HvFq9Vn3BfaZzJWJG8/yas8zr2ADnh7rGTJgv3/DyVUl5/YLmjfIszEjf9wKVgS6bATbzD0KiWoZSUxAA1lDxl/s77VsTBgqNXCzH4uGL0R3dK9xXCP00QJq6W9dTntn1DF4//DoAIEQdUu3z+Sn4Ggtcw2TK9inYleS6Y6iAgCN0JVmwMhgysQyRGioZkRtWrG0MFkPFOzVSHNVYuahlzp5PhVSEQE3TCv0EOISyPEkW1hq0GLdlHL47+x2zjtaKcheu8ZZ5Y3zncBjz+NsdPSq1gadG/V3lUVFKlDj5qOe9E2r62p7SqlUrEARxVyXMOmKxWZhQDQBmIqgOjslhr/V8DT+d/wkns6jvxLyD83Ap9lK1ryPQ9DmRQeWJ3dv8XgBAlFcUrmmv4duz3+LB1g/CR+6DLF0W9qXsw8iYkbUSorGSTbccWmdynSgKAK1CvPB4nxjM28j2m4n0U9WbIFttQYnMAfRzq2NHZlfsuLMDycXJWHZpGWZ3nQ0RwYq9dQvpho3XNzod4y33RoCfErCpEC26Hym2LQBcC7TVF3eVR4UgCKikqnr5V5kfkb+/P0aPHo3FixdDp9M5bS8sLKzBT6Vh4uiibO3XutrndEwOC1GFYGg0/ymCm7wrcHdzLP0YjqQfcbmNLvekKxe48vl/Xv8TAKVWuzB+IR74+4EaG5PRamReW2zuJ/PGjs7o3giTS0SY1D0S741nPaLfTulSB6Oqe7h5Kp7MISKCndKv5l/F+8feR2JBIgCqB48rpCIp4kK9AQA56Z3QLqAdPu7/Mbxl3tUZeo1yVxkqjYnFixfDarWiV69e2LRpE27cuIFr165h0aJF6Nu3b30Pr8a5XXibl+jMlXwGgGY+zap9DUdDJVgVjOY+zXnr0kobjqT+j+d/xGP/PiYYT/VAkbEIz+55Fs/ved7l50+XeNI3867BXZlk7+23twNg5cELjYU8zZXqwO1wa7I5d8ptKrgrvQUAmYSath7sHon+LQPw/vh26BDhU1dDq1OeHdwcAWoZfnncOY+jyFiEU1mneKkChYZC5vWbR97EphubmGV3Xj0baUOPWD8opCLkFirxQY+lmNhyYs29iRpAMFQaKM2bN8fZs2cxdOhQzJs3Dx06dMDIkSOxd+9e/PTTT/U9vBrDYDHgvr/uw8StE/Hh8Q+Z9edyzjGvZ3aayZQWVweNTMO8VklUkIllTgm0dHvzhsBPF37ChdwL+C/pv/oeSr1SHzlbCVo27OqqkSVjqMjZp05aYPBm4U0kFycjqTiJ2ZZTloOagL4uwBfxakqYLDYmgfb1MXHQyCWY1i+W2R5qr+7xUkix5uk+mNa/+g8xDZUn+sbi9NsjMKq9cyHBM7uewVP/PYVndj3DGMX5Bla59k7RHea1RCSBr9wX3w39DuOaj8OY2DHMNhtpg0IqRp/mlMDbwUS2lLmhIBgqDZiwsDD88MMPSEpKgtFoRFpaGrZu3YohQ4bU99BqhFVXVqHnmp64VXQLAPskCoCJpT7T8RnM7jq7xuLPi4cvRpg6DIuGUb2DfOQ+2H7/dnQL7gYAzFjqG+4k1JRzESoivTQdIzaOwJILS+r0unS1GUAZKjn6HOTq2Rs4LUPOdY/7yH0Yz9/D2x/mnS9Lx++pUlW4HhXu03NTQsfxpjw9sBkufzAa709oj88ndULnSB+8OvruEtVzd++7pr0GADiZdRJT/50KAMgvcy2xH6gMhIgQYVj0MCwcuBBfDP4Co2JGQS6W4/6W9wMABremPC4bTqfCbHVfaVUfCIaKQL3x5ekvndb9kfAHbKSN6fA5uc3kGr3moMhB2PXgLvQOY8vUY7xjGNGug6l1V7VRHtxSap1Zh2v517D22loUGArKOarpsfbaWuSU5WDx+cV1el1uV+20kjQ8tO0hjPhzBIqMRSgyFiFDR4UmHeP4tMAgt3wZALJ1zl6ZqsA1VLiN5poSdNhHJhFBKmanqMk9o7B11gAENzG9lKrgLhx5OP2wi70BjVTjtO7LwV/i8MOHmYrKB7pGwk8lxa1cHY550FOoLhEMFYEGxScnP8GZ7DOwkZRF79hvorYYHjMcBAhczLtYY0+/1YFrqKy4vAKTt0/GwviFWBjvmUBSU4HbJr4uc3W4LvQr+VegNWhhI23YcmMLPov/jNnGDf0AcKv1k1BQMxV8XK8Ot9FcU4Ku+NHI76qi1ErBDSvS/G/f/3jJ1lxcJcYSBMGrRvVRSZluy4euN6zwj2CoCNQLjnkHz3V+jnl9NP0oAMqVXle9eAKVgega3BVAw/CqpBSnMK+5k2ZSUVI9jKb+EBOsZsatwroLy3Fd6HQVDwDEZ8Vj2+1tzDK3cyxAfY+4TG5NeQR33tnpdhKpCL1Zj+sF16E36/HusXeZ9TqzDiZr00uoLdJTicdeCsFQcYcr4bYz2Wfc7u8j9yzZuEcsVXCQkFVcwZ51i2CoCNQL3Aqfya0n48UuL2Jw5GAAwPLLywHw3dx1AZ1YS4ed6pOUkhSX65uqu98d3FydLTe34OszX9dJbgbXOOTCda3P6DDDyZAOUvIrK17o8gIkhASZukzsuLOjSmN5fs/zmPT3JLx37D2nbcsvLW9yApF5pZTxFaiR1/NIGi7lJVK39G2Jud3nYsXoFcy6Fr4tPDovLZpXoKuZKrWaQjBUBOoFuvMsALzZ+00AzuVzdPinrqDd+EWm+qmmSCtJw9hNY/Hbld94ORJc8srymtzEVB7cv8XG6xux4vIKzD8yv9av6y4pkSZSE4k53ec4reeGgpaOWooAZQDGNhsLwLnk3lPO5lAy8TuTdjpt+/HCj27zEhoreaWU56mpKc3WJOXlqq0csxLTO0xHj9Ae+HTgpxgaNRRPd3zao/PS6rcFehNStXqM/uYQtpyrf8kGwVARqBfoZEMvmRfTDDBYGczbZ1r7aXU6Jh8Z5R6tr7LPz+I/Q1ppGr44/YVbj4rFZmmyuQmucPW3uJBzwcWeNUOiNhEdV3WE3lJ+Pow7V3qIim310DuUStimReG0Bm0NjZIPtwy1KcAaKoJHxR30PWB49HB8M+QbZn20VzTvu3lv83uxaNgiqKWe9UHyV7OGyqK9N5CYXYKX19fe781TBENFoF4oNdkNFSkb4w/ThDGv/RX+mN11dp2Oif6B06WndQ2tIAmwMejvh30PAJjadiojWHez8GbdD66ecPW3sKH2PG2z97HfufJa2bsTW2vh2wIf9PsAS0YsYcpK6b+bO0MluTjZbZjTlVdxfPPxPF0hs61huemrC22oBHkJhoojKcUpWHNtDXLLqGTXNv5t0DagLbOdew+tCr4qKpRpMNvA9dtmFpW5PqCOEAwVgTrHYrMweShcjYBRMaMwrvk4RGgi8NmgzyAT163rlzZUTmadxDdnvqlg75qDJEmsurLKKTfGV+6LIVFDsH/yfrzW8zUMiRoCADy1yaaOqzCczqyrlQogs83M+xs83u5xty7zV3u86vY8D7R6AP0j+jPL/krKUDmYetDJ8LhddBvjtozDY/8+Ble4MmDCNeF4p887zPI/t/9xO5bGiJCj4p53j72LT+M/xV83/wIA+Mn9EKxiPdFKsec95VyhkUsgFVP35JwSNvk7Jb9+1bEFQ0Wgznl297PYm7IXACXoRaOSqrBw4ELsnLSzRpRoKwu3aeGvl3/FkfQjuJJ3BXP2z8GM/2ZUOcegIg6nH3apKRPlFQWAFWuilU9vFNyolXE0RNyF4XL0NaP0yuV8znnmdQufFugS1AUvdXsJZx47gxWjVzDJ1j1De6JvuOdtLPzllKFispmcKsrePvI2AMpgcZV75CoXwVvmjWjvaCa362bhTVzJv+LxeBo6lEfFBrlcaB3hiGNlTyu/VvyE7mrqYhIEgQA1ZSByS5RzS6tWsVZTCIaKQJ1yJvsM4rPimeXpHabX42j4OOYdPL/neTz8z8PYm7IX8Vnx+PfOv5U+55pra3D/1vvL1WY5lXXK5XrH/kbRXtEAKI2VuyGh1kbaGMl4X7kvugV3Y2LttOBaZTBYDNh2a5vbRMRDaYcAABNaTMBf9/0FqZiaAGRiGXqE9sA3Q77BMx2fweeDPq/UdWmDE2DVRAHgSPoRXMpju3WXmJ29J67ykejPoH1Ae2Zdbebt1DW5pTqoYhfjo4tTcDb7bH0Pp8HATfDuG9YXb/R6A91D+D2AeoX2qvZ1HugW4bQur6QJGyoLFy5Ez5494eXlheDgYNx3331ITEzk7WMwGPDiiy8iICAAGo0GkyZNQnZ2zag4NmamTZtmb/NNQCqVIiQkBCNHjsSvv/4Km61hyRtXhh/P/8i8/nrI15jbfW49joZPpCay3B/6d2e/4/WA8YRP4z/FzcKb+Pniz273oft0vNPnHd71HUsKI7wiICbEKLOU1YpHoaFRai5lQiV7H9qLVWNXoWdITwCV68mUX5aPBScW4J2j7+DNI29i0PpBLg3Hg2mUt2Ng5ECX5wnXhON/3f7npJVSEWGaMLTxo2TfuVoqW25s4e3naky0dkznoM7MOjr5vFNQJ4yIHgEAWBi/sMk0r8w334RYmQ4SJM+wu5vJ0mXhu7PfAQAiNBH4ZdQvmNp2KrN9y4QteLXHq3g47mF3p/CYSd0jndY1aY/KwYMH8eKLL+LEiRPYvXs3zGYzRo0aBZ2OLU19+eWXsW3bNmzcuBEHDx5ERkYGHnig5tqiN2bGjBmDzMxMJCUlYceOHRg6dCheeukljBs3DhZL42vxTpIk46LeNGETRsaMrOcR8SEIAktGLkGkxvmHSuOplLvZasYvF39hlt1ps5htZuYz6RnaE7Hescy2lr4teftKRVLEeMcAQJNy9buDDvsoJUomXynKm/JOuKuKcsUXp7/AusR1vPLeb89+y9vHaDUy1TN0tU5NMjyGCtsVm4qZTsqX8y7z9uEaKquurMJ9f92HDdc3AAAGRgzE10O+xsQWE5l2DwDl/aHhemcaKzqjBWaw4b6m2nixsjyz6xlsuUkZthEaZ49HS7+WeKL9EzUikNksQA21TMxbl9uUPSo7d+7EtGnT0L59e3Tu3BkrV65ESkoKzpyh4mxFRUVYvnw5vv76awwbNgzdu3fHihUrcOzYMZw4caI2h9YokMvlCA0NRUREBLp164Y333wTW7duxY4dO7By5cpqn/9O0R18Fv8ZruRdwU8XfuJpm9QG+YZ86Mw6iAgRb0JuSEhFUoyMdW9AcauUHMkvy8e+lH0gSRI/XfgJ35/7ntnmqnrFaDXi1YOvwmg1wlvmjRjvGHQN6cps7xHSw+kYep27cFFTgv7MuCG5GC/KUKuMoXIlz9moc8wVoa8lIkQeq3hWBrr0/c/rf6L32t7YcWeHU/iKW8315ekvcavoFtMcsVtIN4yMGYmPB3zMSzKnE6wBtpIOoNRsvz79daMzaHNKjCAknH5GDbC3VV5ZHr46/RVPPbo22J+yH0/ueBJZuiyeZL67Ng01hUhEwEfJN3iyiuvXUKlTjeKiIso69venksvOnDkDs9mMESNGMPvExcUhOjoax48fR58+zgmVRqMRRiP7oRUXe15KSpIkyLL6KbMilMoa6QA8bNgwdO7cGZs3b8bTT3sm4uOOB/5+ABabBauvrQZA3axf7/V6tcfoigJDAcZsolqLh6nD6ryipzJwcwoAqhyUlk03WA1uj3t+z/O4pr2Gzwd9jmMZx3jbErQJMFgMvN41xzOOM0nF/cP7Q0SIMDp2NHL0ORgYMRAqqcrpGh2DOmLD9Q11KidfE+xO3o1m3s3Q0q9lxTvboZ+m6Uke4HhUPJwkCgwFLvuicEs6ATC5MF4yL4iImn9+4wrBmW1mvHboNQDUd21Kmyn48vSXOJdzDoDrBoaO30kagiDQP7w/jmYcZbSJSJLE1H+n4mbhTfxz+x/snby3pt9OlbCRNnxw/ANEe0VjRscZTtuvZhRj2eHbICSswdUQPSqvH3od8Vnx2JW0C/89+F+tXMNqs+J/+/8HAEzIhyZMXb0SZE9oFeKFjCL2XpdeUL9hxTozVGw2G+bMmYP+/fujQ4cOAICsrCzIZDL4+vry9g0JCUFWluvkw4ULF+KDDz6o0hjIsjIkdute8Y61QJuzZ0ConCeeqhAXF4eLFy9W6xwkScJi44ePNiRuwGs9X6sRgypbl43n9jyH8S3G46kOTzGeA8A5SbShwXWtbhy/EXH+cRgcNRivHHwFu5N341j6MexL3Yc53eZAI6O6kiYVJTHx9HUJ65gkyCfaPYHfrv4Gs82Mny78hJe7v8ycm84zCVAEYMGABQAoj85THZ5yOzZaFC/P4Nzro6FyPuc85h6gcpEuPel5eIIuTeZ6OLgJxVablcnXcMeSC0tcrud6HwDWUHHVvK0mcHfeEFUIOgV1AgBcy6e+P446ORKRxEmanwudXEt7RI9nHGfOkVOWg+MZxytVpVRbnMw8ic03NgOgkui5BuGNHC0e+HM2CLER8kA2j7EhtoygiwGqktDtKbeLbjtdjybWJ7bWrkuz4P4OmLX2HEa2C8EX/yUivbAMJEnWyNxQFeqs6ufFF1/E5cuXsW7dumqdZ/78+SgqKmL+paZ6nlTXVKjuF8ZsNWNfyj6n9SabiRESqg6ZpZkY8ecI3Cy8iW/OfINLuZdwMusks53Os2ioNPdpzrxu5dsKAL+Hy7N7nsX6xPX4/BRb/cHtapyhy2DEvR5u8zAea0tpZNDeExq6n8zQ6KFMhUlF0N2kK5J4b0hwlVPp/AxPYDwqHEMlVB0KiUgCs83sUUIx94bPhTZMmGVj7Roq7nIHpCIpkxOVW5YLs83sNDmHq8PLNchoQ4X2qDh2ap65eybiM+OdjqtruB3BHcXvlp37C1Kfi5Bo+MUWDdGjUhdwQ17c7/nYZmMxKmZUrV8/0k+Fv17sjxkDqIdKg9mGFG39eVXqxKMya9YsbN++HYcOHUJkJJuoGBoaCpPJhMLCQp5XJTs7G6GhruNwcrkccnnVhIAIpRJtzrrvMFmbEMrqCfFwuXbtGpo1q7pXYsHJBU6iYRJCAgtpwe2i2zwBoarwzx2+AJXjE2K34G7VOn9tE6oOxep7VkMj1TAThKumXqezT1P/Z53mhXq4SZH+Sn88HPcwVl9bjeTiZJisJibspS2jbta0cqkn0BUnBYYCmG3mOusuXR3kYvb3mlaa5rFHjZ6kuMaDRCRBuDocKSUpSC9Nr1CJ010831FIrbY9Kh0DO7pcbyWtCFAGQCqSMsaX4+TsKnmSC22ofH/ue4xvPh6Zpc6J239e/xO9wqpfuuopyy4tg4/cBw+1fohZxw1XZpZm8qqn4nP2uzxPcnEyzFazx4Z8U2DbrW1488ibTuu/HPwlRseOrtOxKKRiNA9S43auDsuP3MGHEzvU6fVpatWjQpIkZs2ahS1btmDfvn1Ok2v37t0hlUqxdy/7pJmYmIiUlBT07VvzrkqCICBSqerlX025zPbt24dLly5h0qRJVT6HK2VTuiSTLpWtDkfSj/CWvzj1BQCqiuW9vu81uGofV3QO6swzTnzkPtg4fiNvn9SSVJzKOuW2okcmkkElUfG8MS/ufZF5TT9VVsZQ8VP4QUyIQYJkDJ2GDv2kD3ieWwK4Dv0AgK/Cl7e93Gs7hHi4Y7KRNpRZyrDjzg4kaqkneW4uSU2ikWlw9vGzmNZ+GhYOZL1vSokSIkLE5B1klGY4JZDSvYLKOzfNJyc/QZbeOWzual1tkVaShu/OfocPj3+Ip3c9zbSD4P5OuK9JkkSBlf8w0z6gPQKVgdBb9Hj76Nt1M3APcGUEVhWT1bkNg9VmxbvH3nVaH6QMqhNPiise6UmFWxOz6rabPZdaNVRefPFFrF69GmvXroWXlxeysrKQlZWFMntCq4+PD2bMmIG5c+di//79OHPmDKZPn46+ffu6TKS92zAajcjKykJ6ejrOnj2LTz75BBMnTsS4cePwxBNP1Mg1glXB2H7/dqavydabW6t1vmJTMU/hE2CFrAZEDMCDrR+stzhndYnzj8P6cevhJWMrf5767ymmu60j/kp/EATBS4o9kclWs1XFUBERIuZJtC4nn+rADbOUJ3zniKvQD8Am175y8BVM/Gui2z45ACuYNr3DdISoQvB+3/cBUImd9IT62qHXsOrqKt65awOpSIp5PeZhXPNxeKPXGwhSBjE5S7RnKFOXWWHTyT/iU/D0qlMoMVBhNG6u2dGMoy6bFNLGAkBVBNVmSGVD4gbm9cnMkxi6YShKTCW8cA/9PTBYDBi3ZRysRClIkg1vycVyDI4cDKBhVbgtOreoRs6zLmEdeq/pzYgM0twpuuOUOwhQv4H6um92iKB+E7SWSk2JTVbmPLVqqPz0008oKirCkCFDEBYWxvxbv349s88333yDcePGYdKkSRg0aBBCQ0OxefPm2hxWo2Hnzp0ICwtDbGwsxowZg/3792PRokXYunUrxOLykwg9ZWjUUMR4xzBejpSSFBQaCqt8vou5F2ElrYj2ioaY4I/RT+FXnaE2CNoFtMPuB3fz1tHGXZAyCG392WqScLXrJ2H6RlQVQwVgK0C4Mf+GDNer8fHJj3E84zi+P/c9T/zMFa6qfgDWcLHYqFDl0fSjbs9BT/p9wvpgz0N7MKn1JKbE/Jsz32B9wnre/hNbTvTsTVWTqW2nYu9DexmvHf1dySjNcDJUHPV05m++hD3XcrD8CGWQcPOVzDYzkouTAQCfDfwMr/Wkqou4hsrM3TNxz+Z7eOtqitSSVKy4ssJp/abrm3jjpPOz5hyYw5Sa20z+eLD5U5CIJJjXYx5mdpoJgPobNhQlZq7RzQ1pVpYFJxfAQlrwafynvPU1kSNY09DNIW/n6rDzciY6f7ALw746gDKTtcrn3H01Gz0+3oMjNz37DtZ66MfVv2nTpjH7KBQKLF68GFqtFjqdDps3b3abn3I3sXLlSubzMpvNyMnJwe7duzF9+nSIRNX7s3Gz7emwhEamYSZAx2S8ypCrp35oUd5RTq3FXXWCbYyoJPzqLbp77YyOMzCt/TRmPbd30MQW7ASYV5aHcznnmETPyhoqdDJySnEKFp1dhFl7Z7ntzNsQcPR4zNw9E79c/AXLLy0v9zi3HhWH5VcPveqk8gpQibt0fybu32JW11kAqBClhWSfXt/r+x5TgVMXcJ+QeR4V+4PClDZT8FSHpzC5zWRmvyxOyeitXKrKx92YB0QOwKRWVIi4zFIGvVmPbF02LuReQLGpGP8l1Xxp7fWC6y7Xp5em876j+WX5+OvmXzwjkwCJ5zo/jxOPnkCnoE7M38xsM0NvaRiqu9yHL6WkanmH3PugXCznJcu6Mx4fiXukSteqCbhdrJ9bfRbFBgtu5+pwOaPqXrlnfjuNfJ0Jz/3uWc6o0OvnLiRUxRqCXJVLWua7Ohod9JNSoCLQqf18bSUq1jXuXLCdAjvhnubs5xkXEMe8/rD/h8yNLVufjSd2sKG7qnpUTmefxtJLS3Ew7SAWn/NMMbc+oNVVHbmQW35/Gvq7xDUyANfhmXePvYttt7bxZOT/vfMv9BY9vKRePIHBR+IegbfM20kTx51WSV3gyqMyJGoIXu7+Mk9z6HI6OznczqU8VRNbTsQH/T7At0O/ZbYpJUp4Sb2gkqoYwzq3LBfnc88z+7gSwqsu7gyVtNI0nrGx9dZWvHP0Hd4+xtwx8FVJGU+FUqJkXpcXDlt1ZRUe2vZQrRvrqcWp2J/KJv0WGguxO3l3OUe4hhv+vFl4E8M3Dsee5D0A+N6xYGUwfh39K5aOWsoYnPWBt8J1zU12sXtNqZpGMFTuQugb9J/j/2QEtAC2oqSiH7zOrMNj/z6GRWf58VqSJLHm2hoAVBnt2GZjIRVJMSxqGCa0mFBnbvX6YEjUEHQMoio7Vt+zGtPbT8eMDqyolYgQobVfawDAzQJ+4qDjRFwRtFgZN3ZfGaXWuqS83kjHMo65LTG2kTbmhu6YTOpOOfbNI2/i9cOsYCHtsbqn+T28PCGCIFw+DbsL1dUF9HtMK0ljypP95M6h0tt5bBgt0+5dkYqkeKDVA0xOB0B5IWiDmtbdOJ9znpc/llNW8/2iHJNNaX2g61rXBgyN7s6LsJR0gFzCeiwIgmD+1uWFo788/SUStAnMvae24EoQ0Mw9MBevHXoNSy8u9dhj7Eptd8FJ6nOi/yZPtHsCeyfvRc/QnugT1qdCvaDahCAITOzi/NtIL2DFU9/ccgnTV8TjZk4prme7zhnLKTFgzrpzePCnYy63l0edKtMKNAzKLNQXzDE0Qz/ZVyRbfTD1IC7kXsCF3At4tO2jjIFzKO0Q47oMUARgTrc5eL3n6y4VVpsa3DLMzkGdeU3kaGiD5EDaAd76yt6EugR1gZgQw0qyMeIEbQIsNgskoob1k04vSS93+2uHXsPKMSud1ueX5cNsM0NEiBCk4oud+Sv5Hqhor2jGUDuQeoDRGaIrS1z1bnL09k1uPZlntNc1dK5KeinVjA9gq5totDoTPvk3gbdcZrJCae/LIhFJMDBiIA6nH2aS4wGqT9DV/Ks4lnGMV3Xl7oHEarPiQu4FdAzqWOnyd26Fl0KsYAT6yjWKTJGwGaIQF+rcnsJP7occfY5bjwrXOHCVhFqTuLsv7rizAzuwAz5yH16Yzh2uPneNVAOz1Yy/b/0NANWWiKhpvnu4K758qDNIEvhmz3X8dOAWMgqpecRksWHtSep7tT+Rak1x/t2R8FXx1ccnLzmOpPyqhfAEj8pdhtVmdWuo0MmuFRkq3NJCbhUL1y0qIkROFS9NidldZ/OWHRMeXUE/HR5IPVCta6ukKvQJ41fFFRoLK8z5qA/o5MBhUcMwKHKQ0/Yz2Wew+upqpwZ99HcsWBXsNFnSnimAemJ3bPvQf11/FBmLGCl6V1oq3ETeiS0m4p2+7zjtU5f4K/wRqAxkjBTA2dO2+6pzxVRmEb8lyHdDv8Pngz7H6z3Zz4QWMMwry0NySTKz3t3vfMvNLXhy55N46/BblX4f3MTph+MedjIyY7xjnELApJkyUH6c6qyvRN+T3KnA0jlxAGq1LUeiNhGX86nvqEaqcbmPY7WjO1w1j1RL1bhVdIvJyxrXfFzVBlqLSMUiyCQiRPhS3sh0u6HiqrOyo0Gi1ZmqbKQAgqFy18GNE7szVFxZ/GWWMthIG8xWM0/cjBtTvVFwg3nNzdVoiszsNJOnh+FJozBXIZ7H2z1epevP7job4epw3pPzD+d/qNK5aou0kjSm23SQKggjoke43O+zU5/x8hVIksTPF38G4Docw803kRASJ+9ViakE53POM6EjV38b2mjyV/jj4wEfV+Jd1R7tA9ozr6UiKS9pu9hgxuub2AnOV0UZb8kON3+pWIqxzcYiRB3CrGPCJ8ZCXuPRQoPrapptt6i+VjuSdlQ674P2qNzf8n7M6jqLlw8HAJFekfj3gX+x5p41WDR0EToHdYUuk5qUQ30UTufrEtwFANUWwBXppazHbsmFJXh+z/NutXOqyvmc83hw24PM8soxK7Fs1DKn/bL1zj2aHCk1leKnCz85rb+Sf4XRn2rt15pRoG6IsIYKFXrMcZGrQntb3C1XloblJ64lbLamUW3iCRW9V/pGJSEkTk+qdEycdrNabBZ8fupzeMu8sfbaWnQP6Y4QdQiv9wSd8AiwP9Q196ypdIJoY2R49HB0CuyE7qHdPWpk52io7Jq0q0JlVXe0D2yP/x78DzbShs6/sRN1XlkeT/GzPpnx3wzmuxSoDCw3mfpm4U0kFycjxjsGJ7NOMvoS7QLaOe0rIkR4ocsLOJFxAkOihkAlVWFI5BBeSO1C7gU29OPlHPp5s9ebaObTDBNaTKjGO6xZHol7BAfTKNe5r9wXBEHAYLZCqzNh2wXWozBnRCsk5+ux5Vw6zqcWYmhc+WEC2lDJ1GXyQyWkBcWmYqecH67GyomMExjbbKzHGh60oTK+xXiX5bsWmwU+ch+mUilS3gMjDx2Ct0IClcx5OhoQMQBLLizB6azTLluHJBbwJfePpB/B8czjNSoqeTj9MG85yiuKJ7LXO7Q3Tmad9MhQ+fbst2630c0HG/q9M8LPbqjYGxVmu+isfCWjCPd0pO5tBToTFvxD9bEK1MhAkkC+zlnsrjyatKEik8kgEomQkZGBoKAgyGSyBis2VmaywGixwVshhUhU+TGSJAmTyYTc3FyIRCLIZK7doLS711fh6/RZ0BNcpi4TpaZSXMi9gD8S/mC2O+ZWAKxHxUbamNflNVBrSiglSqy51/MEPu6EoJFqaqRdu4gQIc4/jklanXtgLn4b+1u1z1tdSk2lPHd9sCrYKbfEkSd2PIGDUw7y1JFdGSoA8Hzn5/F85+eZ5W+GfgMA+P3q7/j6zNfYcWcHSJBMSMURX4Uv7/iGQJw/WyVGG3VvbbmMTWfT0LsZ+9mJCQLdon2x5Vw6Tt6puOcTXSVFl4lLCAnkEjl0Zh20Bi3ve2mwGHCnmBWMe/3w60gvTccznZ7x6D3Q3gyuKCIXx+RpOiHYlTcFoD4TCSFBgbEAWbosJ8PeMWQIVJwXVVm44SWACr1y751T206lDBVdNval7MNrh17DwoELnYylXH0u1ieyuj20J9Cx+q2hGyrhdo9KscGCEoMZOSXU33BM+1A0C1LjpwO3sHj/Lcwe1goKqRjzNl7A8dvU97RbtB/ahnnju7033J7fFU3aUBGJRGjWrBkyMzORkVF7nS6ri40kkVVkgI0ENHKxUxJSZVCpVIiOjnartUIbKq5+DLE+sYj1jkVScRJ+vfyry4oNOolTLVUzNzqA8sLQmhQN5Ym+ocGdEJr7NK8xo3ndvevQ5fcuAIBzOeeQq891yg2oa05msk0o1VI1hkQNgY/MB92Cu+FszlkMihyEU1mnmHwpgAo5kiSJVVdWMevGNBvj0fXoJOJobyp5M600DQDbVLIxwP1NqmVUWHbTWep9nLzDhmAe6hEFs9UG4ApO3NYiVatHlL/7XDDHtgAW0oIwRRh0Zh0KDAW83kufxn/qVL2y6NwijwyVNdfWMDlJ3LDyLyN/wczdlHjbmFj+3zOrmDZUXGuSyMVytPRriQRtAq5qr/IMFZPVxCSfcqH/9jXBpuubsOWms0aPUqLE+ObjUWgsRN/wvhATYhisBry0/yUA1AODY6dwR1XmX0b+ApVUhY6r+H2g3FW1NRQ0cgl8VVIU6s3o+P4uqO3J3KE+CtzfNQI/HaDkLW7n6hAToMK+BNY4DfdV4oWhLdA12hd7rmXjt4OeaXY1aUMFoLwq0dHRsFgssFqrrqRXG5AkCRsJ7LqahS/3UVnT3WP88PmDbap0PrFYDIlEUu4ESIdqXBkqIkKE0bGj8fPFn7H00lKXx9OVJrO6zMJnpz5jvCj0U4ef3O+uaiBWGbgeFE8b83mCWCTGaz1fY7o5X82/isGqwRUcVbsczaCEvFr7tca3Q79lvm+rxq5CZmkmfOQ+WJuwFusT1+O5Ts/h/ePvA6AmSlr989Uer1a66sSxwqeVX+MxVLi/W7VE7XKfH6d2Y7wPA1oG4sjNPGw4nYp5o9zfM1x5N/wV/kgtSUWBoQAkScJoNYIE6bIPmCdsvbmVp7JKq/8CQN/wvjg05RCOZhx1ylPKpj0q3u5VXoNVwUjQJqDIWASdWYf/7fsfhkQNYTpCKyVKfDbwMyQUJODH8z8yIn/V5Wz2WeZ7SbN8FJuw/snAT5jXfcL6MN95GoPFAIWE+lvtvLMTrx56ldnWPqC920KDhla554ooPxUK9VSIUGdXqI30U6J1iBc6R/rgQloR7ll02Om4UB8F5BIxhrQJRo6LkJE7Gv4nUgMQBAGpVAqptOFMoFlFBkxfeRpanRETu0QgvYT6YwcUmqFQuHaD1gQVybb7ijy7sbfxp26M9FMCXZYcqBK8Ke6gBfWAqqtauuPxdo/jav5VbL+9HQnaBAyOql9DhZb3n9Z+mpOQGv1U/HTHpzGjwwwUGYuYCWFtwlpmP1cdqyvCsdNwVc5Rn0xpMwUbr2/EnO5zYDA7P1gNaMX+vh7sHokjN/Nw6HpuuYaKq/wpOnE+35CPaTunOfWrGtd8HLbf3s4s20ib2zwsvVnvJN5Ge4S413NVyZJZgUcFYJWgyyxl+PvW34jPikd8VjxT/dU3rC+GRg+FXEIZOyklKVh5eSX6hvdl7lNVYcedHbzldfeuQ/vA9i737Rve18lQydXnIso7CnqznmekAJQKsiva+LXBlDZTqjzmuiLKX4lLHPFBah31dwrUuDc6wzghvhA34T5XCFU/9cTua9m4llmM7GIjDl1nY6DaSiYZVZbyDJXcEiPe2eic5e+YcCgRSZjcgQJjAYpNxYzL927JT6kKComCSailu1XXJHTViGOjs/qAzoeoyI1NEITbfIZ+4f0qfV1ukiMARsejsfBW77dwaMohtAtoh9wS/hPne+PbwVvBPmy1DaNCOnfydBX2wuGWdAPs7/+jEx+5bKr5Th++4eGYp8ElS5/FlFWPiR2Ded3neewJO59SCACIKSd0RRv1erOe13GYVsGd0ZESVqS9acnFyfjqzFd4cNuDWHbJuTrHU05nn2Zeh6vDyzV66bYWXHLLcpFSnMJUsNFMajWJEW0E2NykR+IewZ8T/nR5rsZAlB/1N2ztQg+Hhs5vAYBQb8FQafAUcAySBE777EK92dXuNQYjyOai/C2tQA/S4qwR8FH/j/B2b7bVur/cH2qpGgEK6hwHUg8wT1RCfkr5bBy/ET8O/9Glpkh1GdNsDCSEBBfzLtaY+7uq0IaKOyOEiyvBu0mtJlU5h+eXkb+gV2gvzO46Gz1De1bpHPUFV431h3037euAZU/0wLR+sbx9o+2Te7HBUuF94+eR/MnSnRYIjUqqwuLhbFuG8jp15+mpe0qsdyy+GPwFpnWYVu65aVK1elzNLIZERGBYOZVLdIhk0blF+PL0l07b6fcSqg4FAf53hq6kqSwmq4lRNt794G7snLSTCeO4wpVB/MP5H3Dvlnvx6+VfmXVeUi+Mih3F2+/H4T/inT7vYE63OVUaa33wWJ8YEATgo6QM0hZBarQM1jDbuOydx3p3gzl9g0LKCfc5Ihgq9YS7G0up0QKTxYa917Lx+4nkGu8aSusOuNKnKDZY4PiV+Pu+vyEiRBgSNYRZR2s00Jb/W0dYYSjBo1I+oerQWvGmAJSRSEuxNxhDRVqxoeIKTwwcd/QN74vlo5djZqeZDbbKzxPozrI9Y/0xol2I03tRysTMU+m1zGKn47kEKgOx9b6taOHTAp8O/LTcvkbdginhtUGRg9AlqAsAMOJ5rmC8qZVM4KYrfiL9lPBTuy8gqChMSifuysQyl4quVekGn16aDhtpg1KiRIjK+bN3JNIr0kmXitvigh7n0UeOOnkKg1RBmNxmcqMSx+zXIhDXPhyD8++OxOoZvbH5hf6QSai5I8JXia8eoiqaPpjQHs0D1egW7YuOET6I9GPfo49SillDKxbKBO6SHJWGSGGZ+xCPVmfCjFWU25GAs4VaHWhDJcIrwmlbURnfeOoY2JFJ+uTeAGi37uPtHndyG5tstRu6EiifUHUoUkpSyn0Crm1IkmQMFcdQjKfUdA5PY+LIjTysOHqHUf5c9mQPt/sObBWIjWfSsO5UKvq1LN+b2dynOf667y8AlCFZYCjAyJiRKDAW4Gr+VcZb8cXgL5hjQtWhQK5zxQoXJj+tkt5UrY4KbfmXY6QAzt3KHeEatbE+sU56JtcLrqNXWK9KjY3OsYr2ivbI2JWJZVgxegXKLGX4L+k/JtdKIpJgePRw/Jf0H17r+VqjNpwdUUgpTyg3b4pmUvdI9G0RgFBvBQiCwKbn+4EkwZPeIAgCzw1pgdedjnZGMFTqkLxSI97YdBEKqdjuvXANt0Pq0Zt5NWaoXM67zNxwHJMOAaDYbqgYsu+BPGg3XuryCrON+wOjE/GGRw+Hv8Kfp14Z49U446tNhRAV5e0q7wm4timzlDGl6p52zP5z/J84kXmCmSxru29LQ+ax5Wxpd5sQL15eiiMj24Vg45k0pGgrJ0/uJfPC811YHZnuId3RI6QHWvm14knR05Vq5YZ+KmGoHL6Ri18O3cbCBzoyol/+6vJDAK6M1k5BnRi9He52V57iqhjtjKHi7XmOE513kq3PZgyVNn5t8PmgzzGz00yP2mw0Jbj5KARBoDo2mhD6qUN2XMrEnms52H4xk5dASyOxW5sHrrN153TpV03A7S5K55dwoT0qZu0glCa+DzXY5DGz1YaZ7V9GmDoML3WjtAIIguAlhd3X8j7c3+r+GhuvQOWhw3KeqGTWFlwBK089I2382+DJ9k8yy9xePHcz0QHlexM0cupZU2+qnmEnIkRoH9jeqV8ObWiWJ0vvaSK9yWLD48vjcfhGHpYfuYN18ZQx4K8uP/HW8Ts0NGooAhWsUcR9iBoRQ5U/h6nDMLEF1a29KkY73bzRlapxRXDzz7oEd2E6p3uiXi3gGuGTq0NSC8rvd3B/V8rLcSCRNWIOXc9F7Bv/4J7vDjMKgFWFzlt4qdtLLl2QxQZu6EeMW7mlSNXqsezwbTz7+xl89WcIXm//O08DhNuKfn6v+bXaGEygYujeKuW56muLImMRJm+bzIh7Aaiyq7uxVj5Ul9NJ/Kq7CN/yDT2V3VDRGT1/oDGYrVgXn4JsFz1aHKGNBFqY72r+VTz939O4lMuKmdHJtI4eFbPVhsvpRbDZqDy7v86zirGJWSVMeatSWn73cMfcjXua3eM2pDgochAWD1+M38f+Xi2jne7GXZWqMbVUjY3jN2Ja+2mY1n5apY8XcEYI/dQhqS7cs58/2AneCgnGdAjDqmNJ2HgmDWkuDJqrmcXotWAvTr45HCEOZV0XUgux4J9reOOeOHSL9nM6NrUkFZuub2Jcpb1CXcdrix1yVDIKDXhp3X7euiUHb+G/K1noGeuPh3pE8Z527ua8goYCfXPen7ofNwtuoqVf3bmbf7v6G65przHLjiWxnrBqzCoczzx+V3rmbueW4sEl/OZ7lAKte2hVUF0lPCo/HbiF7/beQOsQDXa9XL7eDm0k0IbKnP1zkKnLxIxdMxA/NR46sw4ns6hQlWMy7ec7E7D08B18MKE9pvSMwuc7WRXSY7cqlv6n4d5XHmj1AEbHji7X+KA9GkzYqgpGOzdHpSrE+cfxWiIIVA/BUKlFrmUWI8pfxbhnXRkgo9qFMJL5rYIrTjxccTQJb4zl/wCmLjuJUqMFz/1+BvFvOXeofW73c8wTAuA6P+VyehH+sLtivRUSFBssLtvKn0oqwKmkAmw4nYaHekTxSvaaUqJYY4XOUQGAuQfn4u/7nCXGa4sr+Vd4y7+M/KXS5+gW0g3dQrrV1JAaFRfTipzWuXrw4EJ7VPSV8Khsv0h5Vq9nV9xl2NGjQjd6pJfnHpjH7EuHY7aeT8e7W68woeT3/r6CbtF+yCt1nWj/7ODyRfm4IZO53eeCIAg8GvcoUktSMSBigNvjmHytcoyaAkMBvjv7He5reR/0Fj06BHaARqphvM9VCf0I1DyCoVJLHL2Zh6nLTiIu1Atb7KVbt3L5NwaZRMTUoQNAy5CKDZXr2SVO60qN1NNUTonruD7XSFFL1U5ibyRJ4pWNbF7BI72j8fPB2zhrF2NyR1GZGRNbTMTvV3/ntagXqD+4Mv13iu6Us2fNsvPOThxNZ5U5pSJpg2+u1tBIyqc6m0/pEYWZg5vj5G0tJnZxTg7lorF3HDZZbTBZbEyJaHkoZWyoxWixQi5xH3rhiq05UlBWhGMcNVbao/LBtqtOFYSJLu5bapkYh14bioBylEwBoHdYbwyMGIheob0YjRmpWIq3+7xd7nGeJJYvv7Qcm25sYloHTGgxASarCWabmfeeBOoXwVCpJRbvp8SaErJK8Nqmi/jfsJbQOyTG+iqlPC9EkEbOeDO4TOoWyTQno29mNFydFZWs/FgvQKmX0te0WG1I0eqx9mQKIzo3f2wc08a7Ijp/sAsn5g/Hv/f/61JATqDuoZVvgYrLOmsSrkR4r9BemNp2quBhqyRJedRvOzZQjRZBGrQIqvjBhWt0lJms5Roq8Xe0SNHqYbKw4aSUfD1ahbjXrHH0qMhEMkaCYG8SW53UznsQvGXesNpIFOqdPSdf7UoEQCX/0g9WPZv5V2ikAFRjwh9H/Fjhfo7QRnuBsYDXd4cLt8M3AKcmh5XtNSVQOwjJtLUEV9Bt24UMXLULMnWP8XO5D0CFTpoFOjcje2l4K2yfTbk4U7V6WG2scZLPUbj1yFDh9Kr4aPtVDPvqIJYdoZ68Fz7QEc8OboEgD24eNN/svo4o76hGJVbUlCEIgqnKqu2nwb9u/oXDac6NxxYPX4xh0cNq9dpNEVo3Jcrf81wvmUQEmZi6jVeUpzL55+N4ZeMFXsgnu4LGcFxD5VTWKZ5O0pqEFQAAm9kb7SUvgiAIZBaVweZCo5IWd2sXzpartylHar0m8JZ5M+PfcWcHuv/eHR1XdcR/Sf8x+1RHWFCg7hAMlVqAJEknz8eZ5AIAQJSfEj9N7QaJiMDMQc2djqWfNgBg++wBWPt0b0QHqNA2zBtKqRhmK4mELFaFMquIzdwv1JuZDHu9yYKt59OdGptxExxXHU9mXkf6KfFILypxLJZjLHnJnZ1uHSPY/i0ZRWW4k6dz2keg/hgSOQQAVYVTWyQXJ+Odo+/ghb0voOdqvkx9eVLjAu6hHzoCKtAVcUQlpx5Q6BJlqwtLwZ3CdUWVhNyGgI5N+lJKb1HntimwPzEHXT7chQGfscn3XgoJ2jh4a7pE+TKvB7asXUOaIAgmx+TdY+8yRtYrB1l9KG2Zc28zgYaHYKjUAvk6E/QmKwiCLS/8zW4UBGrkGNsxDOfeHYl5o5yrIh7sTklbd4nyRYcIH0ZtUiwiGAXAfddYnRVuiaHFRjKx4akbvsQrO3/Gwn/ZKgwAaOFDJa7ZHG5mvirWxcmtKqIbn3HpGMkaKodv5GHolwfw3Z4brj8MAKeStHj4l+P4aPtVhxJogdqAjuMXm4phI8uvGqkqtwpvMa8NVvY7+Of4P2vlek2RpDwdisrM2HIuDZfTi5iGpAGaypX4q+15KqVGK17deAG9P9mLmzklvN94idG1t+WVjRec7gVclFLWo0JXwtBVNSabvTjAqsSdPB3PQ9whwhsX3xuFl0fyu7GPaheCJ/vG4LUxbVwqmtY07/Z516V+CUmS2JeyDwfSDgAAvhv6nZN3ZcXoFbU+PgHPEAyVWoAuQw71VjCNmmjomKyXQuoyhv/MwGb4dkoXrJzu3Eythz1sxE3KzXLQQigxWJBflo+b1jVQhG3BqhN8A8JqDMT8zZdw/Da/PNBXyb85vn1vW2jkErw3oZ3TOFwZL+tPpTitA6invIeWHMeJ21osP3IHc9add7mfQM1B56nYSBu23dpWK9egBbG4tAtohzb+bWrlek2NlHw9hnx5AJ0/2IWX11/AuO+PMBN9RZLyjvjZBdMyCsuw8Uwa8kqNGPH1Iby99TKzT6GONSK4DyU2Ejht9/a6gg6dGKwGJBdTD1uDIvgNNUmbswctQC0HQRAI8uJ7h1oEafDBxA54YUjdlM13Ce6C3qG9ndbvSt6Fl/a/xCwHKgMhE7Gf+4HJB9Aj1H3rAoG6RTBUagG6DDnSTwmNgh86CazgaUkiFuG+rhFMyTIX+gb21/kMbLWLJ526w3ddXskoQgGnCRchKQZBUmN4uuPTmLf+Gv6IT8HUZSd5x3FvXgDw9MDmuPzBaLQP98HvM3qhs92LEuWvxEPdI9Ehgm+s5JYaXbqXP/6H79HhtgcQqB2kYvZvuSNpRzl7Vp2r2qtO6wyW6gkS3k3QDQcdIQjAz8Vvvzy6RlEPMPEO94K1J1ljssCe4Bruo8D5d0fh3XHsA8iJ2+41TbgaJnRpcs8wh4cowjl5lvacRviyuWvtwrzLbT5YW9DaQlx+u/obb7l9QHve70YoDmhYCIZKLZBrLxMO9lZg7kh+eCewEomqjnCftF5adx7r4lPw13l+1vrza+Jx/9/3McsiWQFIgnL7Tu8w3WWZIABembQjA1sFYeusATj6xjDsfGkQFFIxts8eiP8NbwU/u4FjtpIocEgOPpdSwLtZAlQIS6D2WTZqGQDgWv61Gu/AnVeWh11Ju5zWT2w5sUav01Sx2UhcTCt0uc1XKa30b6R3c6oMfMPpVLf70IYK/QA0tU804+09l+Leo6IQK3iVLy19W6K5T3M82upZZp1Yme50HP2VC/VRYNkTPbDqqV7Y/EI/p/3qAlc9iIwWNon4lR6vQCwSM54Xubjq92iB2kEwVGqB3FLqRxCkkaNFkAa/PUUpwRIEnEJBlcHRJfzjASpPYELncMZTI1bf4u2jil7OvpaoEO3vujono7B8eX+AyrdRc5Jr545sjXPvjkKAfVyOktyPLD3hdI4CF6WLAjVP56DOEBNiaA3aGu/7czX/KqwkP0n780Gf48l2T7o5QoDLZ/8lYN0p10aFY6jEE0a0DYGPUuokfwCAMYjosBIdJpJLxFhwXwcA5Qu/EQTB65zeP7w/AGBQ8MMwaSnDw5g7kneMQirCx/ZzA8CIdiEY3DqI6bZb13ANLS8plYdSZGI9u3Ruyqs9X8X09tOx9t61dTtAgQoRDJVaIM/uUaFvOgNbBWLLC/2wbdYARLkxFDzB0VBJ0erhr5bh00kdmV4fEgdDhcZm8oXF6v5JbUCrqmfgB9uTb7n5MharDQYzlcjZM9YPm56nbmoGs82pEkmg5lFIFGjhSyVOX813DtNUh0QtpYlxT7N7sGDAAiwftRxjm42FWFQ/E1Fj48gNftiHLi8GgM6RvpU+n0IqRs9Y1+J6s/84B6uNZOQRuGGl1vaKnPTCMty3+ChvXOdSCnDcLnPPVTsOUgWBJElMXXYSxux7EVT8Ksza/rxrxr81Ah04lYH1zeQ2k9EpsBM+7Pch+oT3AcCX1ddIqYdHH7kP5vaYW6XWDwK1iyD4Vgvk2T0qtJeDIAh0rUAK2xNcxXffn9AeKpkEZfbJnxC7Du2QVg3SC8t45c8AEP/mcBy+kYfxnctXwCyPEG85rmUC01ecwuHXhiLKX4VkTl+jtc/0gUREQCIiYLGRKNCbEOYj9AWqbdoFtMP1guvYcH0DDBYDRsaMBAjgYu5FdA7qDImoaj//xALKUInzj8OEFhNqcsh3BWUcQ/1/w1oi1EeJN7dQTf7cGRwV0S7MC3uuOXvOkvP16PfpXkYvhVvR56eWIchLjtwSI86nFuKx5SeR9Om9jKo2tb8cPXqyoRN/hT8nxCtGaXE43r63OWwkiQ2n06CRS1xKGtQngcpArLmX6hyfV5aH3cm7eduHRg+tj2EJVIKG9Y1qIjChnyq4ccuDewMI9pLj0d7RGN8pjLcPIXGWugYAa1kUkvN1TqqRwd4KTOpevX4WIV7sze+ng7fwyf0dkZBJGUydIn0gtT8x+qpkyCs1QqsTDJW6oKUvVVlxNP0ojqYfxY3CGwhWBeOTk59gQosJWDBgQZXOS3tU2vgJFT7uMJituG/xUbQN88Y3U7rwtuXbe94Mah2E54e0RF6pETKxCM2D1BjXOczF2SqmM0efBACkYgItgjRIyCrhiboFO9yTWodomJw6moPX2e7t2cVGXEgiAPszUoAygCeP3zXaF08PpPSgZgxoDgINu+dXz1B+IvBXg78S1GcbAULopwax2Uhsv5iBy+mUm7U6ibOuIAgCJ98cjsOvDUX8WyMwZ0Rr5qbw3cNdAJEBEk0is/8nvZbjnS6/w5Q/AKa8YXhq5WmXqpHVJdibfZ8miw1bz6djyzkqwY4rDkcn3hbpBS2VusCx187V/KtYfonKWfr71t9VSrIts5QxvaNa+wsucnf8dyULCVklzO+AxmSxMRP9d1O6QCkTI8pfhaNvDMPWWf2hklXt2XFIm2B0j/GDQirC1hf7Y9+8IZjSM8ppP+5vFQBaBfO1Q5LzdchxyDXLymErYAIUfEPlgwlsLopYREDUwJPlOwd1Ris/VttFI6t6zqBA3XFXeVT0Jgtu5ejQIcKbZ/UX6ExQycXlNufyhK0X0vHyera5X017VAC+65bLxC4ReO/ERtBOZX3ScxjwYBf4qWUw6l/HO1uvuDyuJhBxPsvDN3Lx55k0Zpkbc6cl/suEHJU6wbHE8ljGMd5yWkkaorydJ7PyyCjNgI20wUvm5bKaQoAio5Cd7M1WG6RiEUwWG+ZuOA+AmtS5lXbVvVeIRQTWPN0bOqOF0Woa1No570zk4O1o7aAcO23FKWYsrUM0uJ5dCltZM2Z7gDIAV/MoQyUu1AuhPo1LhZggCHw/7HuM2TQGgOtO8gINj7vGUCkzWTH2u8NIztfj+0e6MjkZe65m4/k1Z9Ap0pdJ+KwMJEli1bEknLyjxY7LWbxtlZXCri5WJWuMjGnbgslpebxvLKL8VZi24hRvf6m4Zp5+uI3RHHuHcMXh6P1cVScI1DwBivK1IC7mXfTIUFlxeQX8FH64r+V90Bq0Hp37bodbATfzt9Po2cwf6QVl2H6R0iJRSEQ17n1QSMW8yprmgWoopWLmwUAiItC/Jd+4bO3Qsf1Ono5p//H+hPaYu/4CsoqBSc1mwl9DIlAZiKIyShKhPEmDhkyEJgLb7tuG9NJ0xHjH1PdwBDzgrjFU4pO0SM6n8jeuZ5eg2GDGhO+PIMm+7kxyAdIK9Ij0q1xVzvFb+Xh/m3NVhVom9qjlek1RbCrmLX80oRdveUibYDzYPRJ/nklDsJccOSVGfP9Itxq59iM9o/HpjgSX22ID2c9TKRU8KnVJRaJVCdoE3Nv83nL3SStJw9dnvgYAnMo6xVQQOYaVBPgkc3p97U/Mxf7EXN727lVMmq0MBEFg55yB+O14Mu7pGIrYALVTt2JXnZPpiGCItwIdIryRVWxAjHgcpnejPCt06Me7kRoqABDrE4tYn9j6HoaAh9w1hspZjkz09/tuYvmRO05P9r8dT4ZGLsFzg1t4bGQ4StjTmK21kAxSDhmlrPBbnH8cI6PO5eP7OuDeTmEY1CoIOpMF3oqaudH4qKTY9HxfTPrpuNM2L841aI+KUJ5cN3C/Az8O/xEv7H2Bt532jpQHt7T571t/M68FQ6V8buW6b9TppZDg0wc61sk4YgLUeGeccxsMGh+lFL2b+SM5Xw9vpYTRVJFLRIjwVaJtmDf2XMvhaa3QqrON1aMi0Pi4awyVGzn8sl1X4YdfDt0GAIgIYNYwfjOtM8kF2HMtGy8Nb8Vzr3ITy7h0jqpbHYH0Uippr31Ae6y5Z43LRlwKqRhD21DiTTVlpNC4kvyf4FDyrJRSXzch9FM3SEQSvNbzNWgNWgyIGIDH2z2O36/+zmx39MI5UmoqxbyD81xu81NUv9y+qWIwW5Fa4Lr6DgCOvDYMPqqGM8n/8UwfmG02PPv7GcYg6RHrB4VUzOSg5HK6LNPJ8IKhIlBX3DWGCl0S6AkX0ljVQrPVhm92X2dUYEO9FXiyXyyz3dFQ8VZI8L/hrZwm6dqG9qhEekXWi/CWY3+SJ/rG4O17+U9yShllPJUJhkqd8Xi7x5nX9zS7h2+oGMs3VHLKctxuEzwq7kkrKEN5BVUNyUgBAJGIgFwkhj/nN9yvBZXLEuxFGyps7llmEWW0hLpJ7BcQqGnumvJkR+n2Xs3YG61j2f/uq9m4Zldy/O14MmOkAEBGEV9q3tFQmda/GZ4e2JxRa60r7hTdAVB/Wew+Sinvc2weqHYKnwk5KvVL+4D2mNRqEoKVlFetIo+KyereuOeWeArwKa9NxM45A+twJJWDWwnZrwWV30RXAHENlSy7oRLmKxgqAnXDXWOoaHX8m8fYDqE48MoQvHVPW1x6fzRmDW2JHjGsO3vhjgRYbSS2XeA3/RMTBG7llmLDqVTYbCSKy/hKr96K+nFSXcilyqI7BtZN7NsRx3JLV4l2SrtGhOBRqR8IgsD7/d7HouGLAAA3C28irSTN7f56Mz98oZaq0cavDQZHDqZUbgVcUqBzbagsfaIH4kK9XW5rCDTjJL53sssKMIYKpzs6/bAW1shKkwUaL3dF6MdmYzv7rn2mN07e1mJyjyio5RI8M4hSVXxldBuQJIlZa8/hn0uZOHQ9Fy3e/NfpXHmlRoxbdARlZiusJOki9FP3bl2j1YibhTcBAJ2COtX59Wn8VDKm+Zmrz0HwqDQMvGXsZDlr7yz8dd9fLvfTmdmEUI1Ug+33b6+wkkiAbQAY5a/EhM7hmDmwBfRmS4NXY57aOwY6kxVTekQxHZyD7FVCZiuJvFIT/NUypvS6ob8fgaZDkzJUaGElLiRJ4q2/LsNql2TtHuPHxF8dIQgCi6d2w/GPdvM8MH4qKWPoJOfrmYl2/uZLTufwqgePirZMCxtpg0QkQZCy6s0Fq4svJ/buKg6vlAo5Kg0BrqFyq+gWLDaLy74/OgtrqKwcs1IwUjyEDv30jPHHq6PjAAA+aFh5Ka7wU8vw+pg43jqZRISYABWS8/W4kV2Ck3e0MFtJ+CilbsUnBQRqmiYT+tl8Ng2t396BXVf4omvJ+Xr8EU9Jfof5KDxSn136RA/e8i9P9MAy+7qTd8ov6axOd+SqojVSY/KX+9drnw1uQq0rjwotDy54VOoXL5kX0wcIAHL0rpNmy8yUi39gxEC08Rf6+niK1m6ouKqEa4zEhVJaK+dSC/HjAcpzO7ZDKON1ERCobZqMofLu1isgSWDm72d463M4SWCOBog7Iv34Ls1WwZpyu5o2C1Tj2BvDsHpG73ppb15goDRi6rtklOtR8VY6P6ErGGVai9M2gbpDRIjw5/g/EayikmozdZm87VfyriBRm8iEftRSNVK17sttBVgMZit+PkjJHPg1sOqeqtLGnlezLyGH0Yd6zcHzIiBQmzQZQ8WHMzHmlxqdXveI8fPYiFBzuhR7ySXwVcngo5Li0d7RTvs+1D0SP07thnBfJQa0qvneJ8WmYuSV5ZW7D22o1HfJKNdb5cqjQofFHBOQBeoesUjMyIdn6VgvZJGxCA//8zAe3PYg8g35AIAbWSYM/Hw/1p9KqZexNiZucITR+rRoGqGytnaPyhm7aGabEC/4q5uGt0igcdBkDBWuE3LLuXQYLVR4Ic+eaxKgcf5h3S66jQ+Pf4j/kv7jrVdxBN241SvhnCx3f7UM1z8eiy8e6szrZ1OTlJhK0P+P/rhn8z28xEZHaIXR+vaocD3BKplziM3X/lm6E8kTqFvC1GEAgNVXV6Pb792wN3kvk5QNAEfTjwIArqVTxv7rmy4hJV/wrABAod6EEoPz95iuiIkL9SrXC9uYiHO4v0X4CUm0AnVLkzFUCjlP6R//cw0Tf6Busudyj0LV7DtIldkoNZWizMLqoCw4sQAbr2/EG4fegNHKemG4zcLkHC0Qbpa7v1pWq718ruRdQb8/qCaJZZYyJBcnu933ct5lAKj3brYSzufmKleGjtkLhkrDIFITCQC4nH8ZZpsZcw7Mwe2i28z2a9prAADSxvaHGf3tIVzP5qs8320U6k0Y8fVBTPzhKJOkT5NZSN1fYgPU9TG0WiHaX8VU7AFAlGCoCNQxTcZQAfg5EglZJSjSm7FX+wXEikwc1L2BsZvH4skdT8JisyC1OBXxWfEAAAtpQY/VPZCgdW6sxzVGuAJHQZra7YxMN4KjcSfOZbQasTt5NwBgdOzoWh1TRVTUDZb2qJQaLTBbbXUxJIFy6BzU2WldQn6i0zpLKaswXGa24u/zGU77NHVySgz4+eAtaHUmbLuQgbxSE27n6ZCQxf9dZjZBMTSxiMC/L7FCdfd3i6zH0QjcjTSp8uSXR7RGsJccz685CwBI0ephA+tpKTQWotBYiK6/d4Va6vzEs+TCEnw79FveOq5HJZzjUQnxrh1DxWKzoMhYxBhRNHQeiiN5ZXmwklbIRDInsTfSZoM5IwPSiIg6qQaa0jMKK44m8VR/uXDDaMVlZqdOrgJ1iyvNnWPp/O+dWuKNEgN/Yvph/030bu6Pga3qrxS+rnnpj/M4fjsfh2/k8YQNd13JRvtwNvct3e5RifBtWl6HZoFqrJ7RG2arDV2ifOt7OAJ3GU3KoxLlr8TYjmHoFu0LAEgt0ENkdT1p6sw6iAkxRkSPYNYpJM5PQdwE0VBOjoonZc6VZV3COvRZ2wfP73keANDarzXjJXHsdGu2UuGT/DIq4TFAGeBkjGhXrMCtESOR9e57NT5WV8SFeuPkm8OxekZvl9vFIoJJqC20h38MZity3HSgFqhdNDINPhnwCZr7NGfWpenu8PYpNbpWWZ234UKtjq2hcfw29Ts7cjMP/1xiq6R+OnALl9PZ3mBJ+VQuWUwTCv3QDGgViKFxwfU9DIG7kCZlqET4Uhom0XYtkx/23YSVoLLwZSLnp/ceoT0wuhkbLtFINU77qOWsQcLtmmwtr+tYFdCZdVhwcgGMViOTGzA4cjD85FSCLNdQ2ZeyD2OW9MSxV55C4U1q3wAFVWFgLdWheMcO2HQ6FP3zDwCgcONGWApce2SqAmk2I/O995nzcwnxVpSbu0OH5wrtWhMPLjmGXp/sRaZDDyWBumF8i/HYet9WjIoZ5XoHwrXmTS6nso5LTonBZZJpU6RLlC9MVhueW30GJEmCJEkk5VHJxlw5egEBgerRpAyVcHtceGS7UADA1axcECJqQjx8+yYu3UlBcxN7E20X0A7Do4czy9w8kDfGxsFfLcPb4/gdgGmaBdbsE9OR9CO8ZY1Ug0fbPgp/JeURog0Vw7VrKH3yRfzwvRF+248jaPr70OhJRjU06/33kf7yXGS8MR/G6zeY893o24/p1VEdSJLE7QkTUbh+PTLmvVLp4wPUdJMzEwxmKy6nU5/54Rvll2DTJOXp8Pjykzh207P9BTyDKwDHw42hQpLASbuXAaBUoePvaDH0iwPo+P4udP5gFxbtveHy2MaIr4MmyqO9o7HsSUqXKa2gDLmlRuSVmlBqtIAg6kf4UUCgqdJkDBU/lRRedu2OMR0oQ0WkoPQhvKw2qOyT9GPFrDHSyrcVpCIpFgxYAIDSkKB5bnALnHl7BFoE8b0sv8/oham9ozFjQLMaHT9d1dMtuBumtZ+GX0f/ikBlIPzllKFC56hkvvU2WvH1ufDhaitaZlNhn+Lt2wEAJbt3Axa+XknGvHnljsF4+w5yv/+hXO+L7ugxmO6w4QHSVrmkWLo1fHaxAQlZbPWI3MMKqvmbL+HwjTw8uuxkpa4rUD79Ivoxr21mb9gslHaGVR+DdmHeOPTqUOybN5inRspVaf5uzw1M/vk4dPb2CEVlZny9+3odjb728eXkpYR6K/DJ/R0RqJEz4pBJeXrGKxji5ZkCtoCAgGc0GUOFWw4oFhGYOsQAdexP1DYz60Xx5VSbRHtTAm6+cl8AVLItF1cJqANbBWHB/R15YaCagM416R7SHfN6zEPbgLYA4ORRsRQ4S/hH5gOjP9yD0sNHnLZxKf53B4y3b7vdnv/zEuQtXozb48a73ceSm8tfzqucZ4PO88ksMuBKBmsY0o3cXHH4Ri5+P54Es9WGm7mlbvcTqDodAjpgaNRQeKMd9Hf+h7LkZ2Aq6A1DxhSE+SgQHaBC8yAN4t8cjsf7UEJx3DLzH/bfdHfqJoGG08PLxLmH0J7VQ9dzkWWv+KmtRHsBgbuVJmOoxASwrta0kjRsy/6QWe5tYJM1lZzwR7QXZaj4yKmsfXeVNXUBbYg4qsvSOSqqW5m4NW4cLJlZTsfSlOzZA0LFdznL27ZF1M9LmOXb99yL3EXfo2D9BqfjdceOAwCs+fm8MJH+9GlkvvseLHl5yJw/n3dM6rPP4fZ99yN74aeevE2mkVl2sYEJ+wBsIzdXvLz+At7ZegWvbrwAKeeJ3iKUONcYYpEYi4YtQozpZZBWDdREOIxZ94O0+DKJzwAQoJEj3F7RUp5xSWOyNI2/kcHMvg9uDg79gPTD/ptYdpjyNAYLzfoEBGqUJmOoRPpRE7TVasF7x94DCerG0ktvxhNFbIjB38rG3GlPSowX9YSYqct0q1dS27gzVGiPypQ/MmC6eavcc1hycyFWO+TOWMzQDB4MzXA2Fyfvxx+R9d57TmEbSXgY89paWEgdXlCA5MceR+GGDUh94UWnaxqvXYMxIQHaVaugP3Wq/DcJNo/obEoBLqYVMuvdTXoGsxV59sTNv85nIKOINTrv5LlX6xWoGnTDyGcHs5VAEzqH8/ah8zWKyljjkpZUf+uetujfkpWOLzWy4cd/L2XiyV/jeS0uGgt6zvsY0JIVVozl5KrFJ1G/YcGjIiBQszQZQ8VXLQX0Whxc3h/xWfGQEFIo7jyG5dmZ8ONMyO1MZryZp8VPshZMaMdX4YsITQQA4Fr+tXoZP2OoKB0MFXuOSmi+85NpgaNNkpsLkZcXf52W8hKFvPG60/HWoiLeMslJNLbkUCGe4m3bmXXGa+V/NqUHD5a7HQCGtAmGr0qK5Hw9rmSwRmGhG49Kbon7Se1sCvXeFu+/ibh3duCXQ+UbcgIVU2bPMekS5YeEj8Zg6RM98HCvKN4+dL7Gnms5SNXqYbHaGI/YfV0jsObpPkwLBa734YU1Z3Hwei7mrD+PoV8ewMId9fNbqwp6uwE3LC4YCx9g9WdcVfcEewkeFQGBmqTJGCp+Shlw8HOssVET/uMF+XjYzEnmeyMFeI6S1X+kpBQDSP5TT1t/KickUeuszFkXMHooCvZp1JSWBi+xCl4m53yYl58R4/bK+djWi0CSXdrAcOkSTA45KLYSypski4qC/1NP8bZZHfJLbHrWQ2HJyQEAFO9i+yCRnFyfkHfehsghzKQ/dbr8NwnARynFwz2dmzvm65wNFauNxG/HkwCAJ+FN8/qmS9hwOhVf/JcIg9mGT/5NQE6Ja00WkiRRtHUriv/bVeEY72Zoj4pSJoJCKsbIdiFOiaFcwbMPtl2BVm8CSVK9nmjPisbe2LPEQHkiuKHEwzfycCdPh58P3sbEH45gf2JOrb6nmkBvpD6Xj+7rwNNToj25XPyEhn0CAjVKkzFUfFVSbC1OQLxSARFJ4uGSEsyT/kltDO8KKHyA0A7AVPu64nTqfxt1A2ruS7m647Piy20AWC1yE4Gv2wEnlvBWW2wWlOoKAJJkQj/Fu3fj1oiR0P60BAOtzZ1O1b7NQExq+xB+Hy7GZw+5T+wNW/gJ81rWLJZ/XXsuitVuzNj0bMM53ZHDsOn1KLtw0emcik6d4PfQQ4j45mt4TxiPyJ9+pM7nkGjrjl7NnJsnphc466h8u+c6ltrj/u3CXTd+fO1P/vjchZCK/tqKjNffQPrcubAWFqL433+R9/MvMCRQbRMupxfhZk71E3VJS8PrDP3i2rN4+JfjHuX06O0eFaXUvWi1ktNwstRoQXYR5fUK0MiZqiBa2K/EYEGxwYypbqq0LqQVYfqKU7xS54aG2WpjEmjVDs02WwVr0COG/332VjQpwW8BgXqnyRgqNlEh9pioiXJySSnCLRz9BzVH6tubCvFAewc48g3waQyQfhYtfFoAAA6mHcTjOx6HjayFJMCDn1EG0k5+GCb31FH8/qUFk46STN5M1jvvAgDyfvwJ/c0xvP2TgwCVXyCUEiW+H/Y93hz7BcR+zpO//4yn4HPvvcyyPDaWt92Sn4/8JUtwvVdvaH9fDVLHGipF2/+B4coVwOw88Yd99CEImQyawYMR8fnnkDejSrUdQ0nu8FfLOa+pp8/beTq8//cV5smbJEl8v4+tJAnzUWBIm4ol292JjemO2CuirFaUHDiA9LnzkPvNN0h+chqSs4sx7vsjGPXNwWppzWR9vAAJHTqicPOWKp+jptEZLfjnYiZO3NbiaiYbavv54C1870LnhA79KF10v6ZpEcyW7CukYiRrKcM+mqMdIrN7YTaeTsUbmy7i2K3yDZFdV7M9eDf1g46Tn+L4uRAEga8nd+Gt47aKEBAQqD4NwlBZvHgxYmNjoVAo0Lt3b8THx1d8kAMr9r+C6KPFCMsnMUrn0IpexekqHNSGMlxMpcCe9wFTCbD3AzTzYXVRbhTcwBuH38DyS8thsrqvRqkQkgSu/AVkXmCXacxUiCJRm4jEVT9ARAJTDttA2PNECCXbK6RzCeVlOdSewKrhInz4qBgx3pTxMiRqCEa1HItmf26E/7RpzDFRS39B8Msv84Yjb9OGl8NSduEC8pb8DJAkshcs4HlUrFotDNep0JmMa+BIpZC3aME7r8iHqpqy6XQeeRT8VaxrnPs0uvJYEqavPIVpK+J5+Sv3dgrDnBGt8N3DXTG9fyzWPO1aoh8AissszGTLhav9UrhhI/PaVlSEk5t3Uq9JQOsiBOUKm8mE5GnTkbvoewCUBk3B6tUAgMw330Tp4cMenac8LFotUp59FslPPFluWXl5ZHHaE2QXU56P/FIjFu5IwFe7r/PeL0mSTOhHVY6h4q2Q4quHqIaGWUUGJOdT35sYjqGSbb/u5nPp+PeSc6Wa3GIEwXkYOJXkXHbfUKA/Q1+V1KU+SpS/El3tbTsA6vMREBCoOerdUFm/fj3mzp2L9957D2fPnkXnzp0xevRo5ORULm4974dUjDtgwXe/WBF0wCFurGbzPiASA82HOBxNIEwdxluz484OfHv2W6y9trZS4+CRuAPY+CTw8yAg/xZAcD7uPCoXZt7BeThiuMKsNiYmwlqq43knLIepsuH0AAL/9BKhREWgQ2AH3qWkEREInvsyxD4+kEZEQN2/PwgJ3wUt9vZG87+2IMhuwBT89jtIo5tkVZJE3o+UDo1myBDeOZzOyzF+6DBSefhrWEMl2JsVzQKAA4m5OJCYi/t/pPKJYgNUWPxoN7QM9oKPUor3xrdHvxYBTuekWXcqBe3f24l18Smct0LClJTELJedPcs7puN370FknzSzKug7VGwww2K1ofjff6E/cQJ5P1JhL3N6Om8/7cpV5Z6HxmY0sl4khyqsnK+/hu7gIejj45E0eQrKLl1G0XbntgXlkcWpkkq296Hhela4horRYoPVRo2lIp2gjpGUcZpZZMA1+/miORIB/xvmRukWQDeFEet3fIDXTrO/raRaquAibTaUXbgAm6Hq/aQyC+0dkX1cNxokCAJDWrM9cHyUQuhHQKAmqXdD5euvv8YzzzyD6dOno127dliyZAlUKhV+/fXXKp+zLElJp55Q0OEed8syNaOl4sj53PNVHgfjSQGArItACUdStiQLJEkiuTgZck60wpSWhuJ//wHJ8W7Q3gCt3R7wk/uhQwDfUAEAQiZDywP70Xzb3yBErv+00ogIBMx8BuKgQJfbQRAQeVP5INZ8yl2v7NKZ2axo09r5EIkEIntZtM2D8A83zq+SSbDm6d54pBc/wdZspSbMlsHO/ZcIgsC3U7q4PPd/V7JhI4E3Nl9i1hkuXeJ5i1zhb6Am2+dXn3XbJPFmTgkGfLoPU5edhFXL19xxDHvpjh6FOcu95g0AGO/cwfXefZC9cCFMSUm43qcvchct4pzjGPPaVlqKpIceQsYrr0B/9ly55+WSyTFUUrR6kCSJNzaxnw1Xv2bZYcprIyLK96gAVCgOoETftl+kvtd9m7MG5LT+zXheBoAKDR18dQh+Ut6E3GrCkPTzzLZig4UnIOcIaTZD+/vqSnuWCjdtQtKUh5H13vuVOo7mZk4pjtrbNYT7uK/mCfVhw5mCR0VAoGapV0PFZDLhzJkzGDGC7WAsEokwYsQIHD9+3OUxRqMRxcXFvH+usJTZb7QKX6DTFP5GL773BHqtSxVaANibshfncjyfGHjkc9Q6C5KB4gx2uTQHZRYqgVTJiTYYE6+77XZMGyqbJmyCRuY8gQOASKl0qsZxhCAIqHu5Dp+IlEpIOPku8rg4eI0ejbCPP4KsRQuEvv++6+N87MaNm7+H4/Vp/NUyxASoMbETvysrQdrQI/sa4rzFMN66hdsPPIDiXWzFzvC2/P29yklgLNm3j3kv7gjRU4ZHilaPD7ZdddpOkiRm/nYGxQYLTt7RwsQJL5IWC6xFhQCoRGOaOw895PZ6AJDzxZcgDQYU/PY78pYuha24mPFiFe/eDUtmpsvjjIkJ5Z6XSzbH6PrteDLOJBcgvZBNXOZ6VG7bvRo9YvwhFZd/a/BSSJnKHoBSaO3dnO/pasUxMqf1i8Wh14YiJkANWymbtMwN/6Rq3RuTBevWI3vBAty+d5zHuVAAkLeY8ngVbd3q8TE0BrMVI74+iGVHqAeFMF/3hgq3EkrIUREQqFnq1VDJy8uD1WpFSEgIb31ISAiy3DyNLly4ED4+Psy/qKgol/tZDPa31nI4oOJrk8ArlL9ckoHyeP/Y++Vudz0AI5DKqXQoSOJ7VEqzcejGLjy2z4rW6WzuSv4vvzCvA559FuB4RrRe1AQfpKo4qbQiZM3ZnBxpDOvNEPv7Q+zryyz73n8fCIKA74MPosU/2yGLdi4tBgCxN+WRshZ5Jpj34tAWaBPiRXlSMi+i17rOmC3ezGwfnHYeHx1fjuE/vYPMt9+B8eo1pP/vJWa7Ri5hJspu0b54qDv/e8CdOMzp1N/Xe8wYiDTs5PleH7ZcO7qETebkSvvT3MwpZSZyACjUsu/TpmNDdYo2bZj11tzy2wtwq6QIEevBIEmSmWBdQVqcc3DcQZcH0zy4hP8AwDVU8kup1w/1iPTo3GEcD4OrJp1RnNJdbniPGx5c8UAbdI7yBUA193OH7sQJ6gVJ4vqAgSjZu9ejMRIyNsxY2b5Ujho+3WOcE9ZpgjjaKZ72rRIQEPCMRveLmj9/PoqKiph/qampLvdjPCpt7nHe6GioFCQDZYX4c/yfeLbTszjy8BGMiR3DbL5dVIVExvWPA0WcsaWfxk8aGaaGheCUQg7ochH/9ZuYcJJElJv5TNWjB29izfEB5nUvv7Ggp3ANDs2gwcxrSUgIRL5sGEzZo4dH55P423sSrVqFrAWfVJgT8OroOPz38iDKoEg6DJGlDMPFrOeqX+ZlAIAi5TbKzjl7tAiCwKJHumDuyNZYMb2XU3dbg9nK5H5YsikjRBoRAf8nHgcAnA9sifiQtigcQv2dpyaw3ppAjbOyKJ2ISrP/FOsts+l0TMiLa+QBfO0ZLrmLF8NwiQ3BEHL2mglt28FoL5tW9Xb2fBkqEN7jojeVn9zMNVRoBWBX798VXD2RaBfdgiM4xklcKFtezs3n6UlqMfj2SQTpC8pNZOaFMs1mZL71tkdj5Cawm9PSeJtosToASMwqwUNLjjEiggCQ66CgO6GzQ8iYQ7doX0zrF4s374lz650VEBCoGvVqqAQGBkIsFiM7m1+amJ2djdDQUJfHyOVyeHt78/4BwKlWBPZ14vSBiboHuOdLoMMk55OEdgKC2wNtJwB+sQBIIO002vi3wayus+Aj98HCgQtxb3O2tNdorYTst80K3DlEvbaHnYpzLuNHP19cVMjxo68PCopT0S6l/FJYRds4kCb25r3vsSOY1mGa5+MoB7Ef62XSDBrEvJaGBEMzYCC1QBBQlBMu4ULL7+uOHEHB779XrurFHhKLICiLLchLDr3EtZudWz48LC4E/xveCj5KqZNsudFiYyY+2lCRhAQjcNYsrH/2E7zd7xmAIHC6A/XeAwzF6Jx7AwRp4zWgo8nX8f/+ilLW62LT6WAtpA0VHwS/+gqzzeKQy0KT9/0PvGVrsetwRuSi7yBx+C0Ubd4MU0qKy/0d0RmdvS8akx4Tbx2Gl0nH8xrQHpUAjWeCZeGc5FJXhkoUZ13v5tT3zTGxOWXadIz9ZylePbMWWp3735hTkrYHZeQkSTJ/ewAw3mSNy42nUzHw8/1Ybg/rPPHrSZxKKsDUpawX1NGjwu0c7QhBEHh/QnvMHNTC7T4CAgJVo14NFZlMhu7du2Mvx41rs9mwd+9e9O3bt1Ln+mGCGF59iuHfmop/Z687gYy/kwFXTzcyFfDCMWDK70BkT2pdNj/hUiKSYOGAhczyp/GeNd0DQGm0WMoAiRIY9w1AiHGMU26sE4kwXn8RoW56IIrUajTf9jckgYEIfoWa9HynTIGvwtfzMVSAqmsXiAMCoOjUCcquXZn1Vp0OflMfRcibbyLql19AiD3rEi0N4+f9WDLKD6fxKKKedIOIIvhKrdjQS4bRKa5L1K0Frj+0UBcVGYlZJSBJEmZ7BZk0OBiFZRaszJbBag+17CGCUSKljv306M8YmXIaxWVm/HUunUmiBIA8+yQ+sBWVhOxndAj92Hsjiby9ETBjBsSB1H7WfM+6S7tsNimRQOTtDUX79k6bPFEBBlx7VN6K/w3PXdqKDf++h7xEavImSZIxxhw9KjadDiUHDoC08o0ebjiH2xSUpkeMH94f3w5rn+7N5LxYCwoYtWQuHfPvuFQnpjHd4rdHYCqlrO7DYLaSEp6hb7zO6sa8ahcKXLiD8lzRHjO6PBvgGypLHuvm9joCAgK1S72HfubOnYulS5di1apVuHbtGp5//nnodDpMnz69Uuf5Iz0LjxeXQKpmbzRFf26qWMAroBUAIHftLiT27IWy8+eZTVwX7p/X/2SPST5OabBYXNxYk44Ci3tRr4PbAjI1ENgKl+TsU+o1uQxFIgJebnIH/R57DPJW1Lj8pj6KmLVrEPLmfNc7VxGRWo2We3Yjds1qiDVqiO2hG1W37iBEIvg/8Tg0Awd4fD5pON8tbs6qhIAXJ8n4yHMtQS7+xu2ujqXFNGEuKjKuZhYj4fQVkGVlIEUiiIKCcSuXrz57IbUQIs53ZGjqGZxNKcSc9ecxddlJPLTkGOZvvsQ00msRpMFLw1vBz8Cex6rTMfkmEruBIgmgEkst+c5CZ67CYq48JBJ/fxAEAVVP5/Cbxx4Vu6YMnWzsX1aELnmsZ6Hl4X9BkiQK9Gam0srfQQI+6+MFSHvueae8mYgKDBWCIDCtfzP04zTxc2zxwMVd6Mecne2kemwrKYHuxAlc79kLuT+6zuexOLSIKLtIGSeX0/neK7ODYi99z6ANlUd6RWNMB4cEfAEBgTqj3g2VKVOm4Msvv8S7776LLl264Pz589i5c6dTgm1FNJuTAKLzI5D2nshbT1ZQlopASu8hb18SYLUi66OPK77YijGUqu3x79l1VjNw6Etg5T0AaTeW+jxP/e8Xi8ty/s1faiYhc/MwKAlhK1oIgoCqWzeI5J7lDVQGkVIJQkrldjT7awtC3nwT/tOnVelcshiH8uIs1xUrLuEYKpqyDJ673pG0WbNdVn24ypdIyCrBioVUmfuZwFaY+3cikxDLLXtWW1jDIdDATwY+lVSAP+JT8OMB6ok+QC1DoEYGPyPrFdAdPQaz3YMktX9vJcHU39DVe7HkORsvrvaj811877/faRs3jFEedNffzyd1wpN9YxBXwDdwggsykVtqZDpRh/konDRUirZQSrt5DgaBmlP146rnjSsMV6643VZQ4jqZlpvLw0CSSJk2HTa9HnmLvkfhps1Ou1gckpl1R4/Cptdj52XWeyWXiHAjm2+8rjlJfUZ0jorQDVlAoH6pd0MFAGbNmoXk5GQYjUacPHkSvV0kEFaIVAHcvwTSMS/xVlt1FQhJhXTkLTo+7T7c5mHmtVOeSsoJNlnyyl/Avo/Ybff/DHSabB+EGUlSfrKnmj6VSITgV1+Fz0TWwBI7dECuC6TBwfB/4nGIZJ7lJzii7Mj/HC2eelRsVqAkEyQJ5F7W4PbzH7gN79C4mqS9FVKMbBeCrtG+eHYw1RvpXEoB2uUnAQBOh8Th7wsZOHmbUkDt1yIACin19b8QyOYVRJbmonOus7Q8TYBGjiDCDJmNDalof/2VCf3QBoo0IhwApYvjiDXPs55IdIKt2McHYQsWAGBVgs0pyR6dg/aoqOQSRPqp0FabBAAwRFDKxqE6LRIyS3Db7mlqHsSv3ilPabhviwD4KKXoHuNXoUAcAOT99BOyF1IhVFlLF7kcbhLjyy66MFQcyHzrLad1FvvnrOrRA2JfX5BGI0ypqbySbaPFhn0J/O/q0sO3YbOROJ9SCIDKmRIQEKg/GoShUpNIw8N5y7bSCgyVoNZA86HMIpmfAnDKGOf3ng8CVAio0FDIOzRr8wVc79MXpktHgc1P88/b7j7mpaHFMGgdcj3U9nul2MsLATOeQvhnbA6MqB4MlepCSKUIfOEFZrkiY4OhNBsgrShNVyDvsjeMqfynYIWfCd7DB0Leti2zzlbmuqJo6RM9sOWF/mgRRHlLbuWUoo3dg5DoR3l8Dt+gJq8QbwUMZurv/Hn3R2Ga/hw0g6nqp3eijLz8Cy4BGhkCze6bF9IhNFkkVeJbvGOHU/jRMSThDmkkG07znfQAmm/7GxHffQsAMN646VG7AjpHRS0To124N9pq7QbOCKraKVivRUJqPhMOaR7I1+cp2b2bt2wrY70e3gopjr4xDOtm9uHtU3rwIAyJ1+FI7nesmF3AjKchjYmGD8dbNGfTJ7DZnEO1hsuUoRL63rsIW7AAhBudIJODoWPJsYfjgoNYD1duHrIdkmQ3nqGMyUd6RUMiIpCcr8enOxMYBd8gD6ugBAQEaocmZ6iIvflddm26ijviks1YQ8VmMADXdzDLIkIEPwWln1BoLORVGxRcEcOm0yH/WzbplkHKhiKy21HVQ0oxu+5/mdTEQPfJAQD/adOg7tcXmv79KxxzQyTof7PRfNvfADxvUIgiqlTVWORasC1qsBYRrzyO4FfYsmxaXM0dEb6UkaExl8HXRBmqsb26AABy7JOUH6ffkFbpg86vvwS5XQMlUmLB0DbUxKYx6dEv4xLEdqnjQI0cwWmuwy4ib2+mjFYaSem6mJNToI8/xdvPVejHFZoB/BwheatWTANIAMh4/Y0Kz0FX/ah+/g6hn7zBGG4BY0fBKpVBDBLWXTuYyXpYHBt2JEkSeb8s5Z0v6/33kb9yJWN8aeQSnjicISEBqc8+hzsTJ8LsRrAOANT9+6Hlf/8hnNPdW2k1IaOA/2BB2mwou0SVqis7d4bvpAecc3bsuWSO16PLkaURkUzukCUvl1EeDrRXN9G9ino180OIN/Ub/eUQm0sjeFQEBOqXJmeoOGKrKPQDwCpnE+VICwGknOBt95NThsrZnLOAxflpniTL/xizyqiqk1BNGLZM2ILver6JgUXUhMkN84S88Tqif/2VyRtpjNCGl7WoyDOBrWJqMjHr+R4nicqCVvdnQaKwAfo8aDq3hrqNvZLGHmZxJOe775D5wQcItecU0HkkBoUKgzryRcwcdVcAQMyo6xbhmYHN4aWQ4L3LG/FO/CpMuU5VpgVqZJBcOg8ASPBjReZ8Jk5AxNdfM8vcSipjYiLvOu48KlkqP5hEEugjYhE4axbP20BDyGTMZ1yyZw9sJtcJqO9uvYynV51GUZkJgfpCEFs2wHTsKCSkDUURzRDVuS1sXtT7HbL1FyiKtNDIJbwO1caEBBivXQOhUIBQ2CXzt/6NnE8/Q2LXbjy5f5rSQ2xZevE//yBv6VJkf/GFUwsDaXCw46EAgJRLrCem7PIVKg+lpASEXM4kmIsUrLdL1asXlJ2pFg+le/fxclVMaZSHRRoVCYm9ZYQ1L48J/QzgJPkCQIdwH4S7UJ8VDBUBgfql6RsqpRV7VLR7Wcl0m0UEWzJfYIzuA7T66mrA4MJTYOAYQ23uBR5mm62RJImtNyn57jB1GFr6tcSw5vfCZqY+erHIvRqnxxz/kfpnswGrJgC/3++RzkRtIKY9RDZbxUYiSQKXNwEAzFZ+r6XgTiWQyO2Gji4P2PY/SC1U2KJw0yYnqX6bwYD8n5ag8I91IDPS8cbYOPgZKEPF5O2HB7tH8sI5viopnhtM5Um8NobypNA9jow3byI6QIVDrw5FhxQq7PDQjf0AqBwVQwIluLa+9XB83XUylEuWI/yzz6AZwHrCpCHB8Js6lXpvDirLFjc5KhcCW2HyPR/i2PzvEPDCCzyRM4vVhp2Xs5BXakSrA/sBggBpNDLCcDQ3c0pwIDEHvx1Pxp5r2TBbSXTM51fatJ72KAiCgFTLGkwDMy4iJkDFq3QrPXwEAKDu0wcyjicHAEiDAXk//uQU1jJcusi81v6+GrlffQ3t8l+Rv2wZsz7yh+95x/hzKvxyr7GGSsbrr0Nv76Su7NiRMeBtZazRE/75Z0z7Bu2qVch86y0Y7J+JOZUygmVRUUy5uDEnFwV6Kq+sfTj/O9cyWOMk7AcIhoqAQH3TJA2VsI/ZpNa0WbORNuflcpvS6S/xkyfNty7zJvqpbakJp9CQDxz+CgDAaVEC0mifkMd/BzyyFohjheJOZJ7AttvbAABt/O3y6nIv6HMot7NEdwnQVkH5lubWfuC/+dS/L5oDdw4Ct/ZRTRDrAW51UuY775a/c/Ix4Br12VjM/LwcqdoKBNnF5vT5QOK/EEmov4nx6jXkfPU1b39u1YxNp8OAloGMR0USGAiZRMRrfOirlOGVUa3xz/8G4Fm7SBdtZBmvXkPxf7vgxynTVVipyU0lBky3qL9Xslcodsf0ws9a1zlFUnueiiklGZnvvItie74H7VEJeHoG/OxKuQBQoNDAKJHhqz030HvhXqYkGqAqUZ5bfQaPLj0BkVIJZbdu9nOn8oyF8d8fxbQV/FBT6yJ+Qq+yG+Xtkd/3ALMuvDTXqcSY1i5Rdu3K6//Exabj/65o4TuA/zehexgBgBentxcAhLz+GnJaUT2SCjKpz8ZaqmOuL/LyQuiHHzL7Bz5HVdP5Tp4MaWgoaxxzrkuSJBMKkoaHQxJAGSq6TGpMMrEILYLZxOEF93cAQRAY24ES1/NVSbHsiR7YM3cQ5BLPtIQEBARqhyZpqPg++CBPJKtk504Ubd0KU1q6y/25SpkAYC7QA4VsGWefcCpZsNisg+EUFbO3mtmPjiy2PzF78RN5AeBwOusKb+1n7zxMECjNpm6SPtFlQEn5XXbdYrMCW19kl8s4Caw/DwKsFSdb1iYlO3eWv0MG67my6CnLL6RbIUJ7FEIZaAJC7H/Dc6sBgKeRozt6lHlt0+mQ8+VXzLK1qAjRASoMTaU0V7zCqcmnfTibv+SnlkIiFqF9uA+jOEr3KwKArI8/cgqrzI5TIvvDj0AajSBlMmSrqcTZP+JTkFXkHBKUhlHXLd2zF4UbNyJ99v9A2mww3aQmYEXnzkw5MwCUqdjx5ZYYsesqO9Fvu0CVP1+3l9LK7D2uMl55BXcmTIRNr8fTq07xBMtoWuhymNea4cMZteHot+Yj1Yu6vpe5DNH+1HdSu2YNbt93P6MuLPb3Y5KEHbEWOnSRrqAppbuGmdJA6vwluVRVljGBbRPQ6shhyDm9qVTduqLloYMIfY8yhMU+vrxzWbQFsOl0IO2Jv5KgICb0Y7Qn2AZ7y3nCdvTrWcNa4uP7OuDI68Mwol0IWgY3vsR2AYGmRpM0VAB+jgAAZH3wIW6NGIGi7f/w1luLimDVUjdHlb2vjUUv5nkkvKReUIipG1lmuhLpx3xhtrI3bpvJ/jF6O4tCcZ92h0YNRdG2bch8/31Y7E4YqcbqOpzkCXotUOza+AIAcCao+oL7/nMXfY/b4yewibb2KirSNxbWYmoC9ooywK+lnsqPDKNyD+ieST6xevi2oD44c1oaDNepMEHBunW86hRrYSE0sKJ3NjXZ+cRQ1TOtQ9hJh5tMSyP2ZreL1Rqn3jCT4zehcMMGAIAsNAT9W7N5FpvOOpchSyOcm/uVnT0LU1ISCKWSKpvltjII5edtiDlhGLmU/1OVRrP5McYbN5B+NB57rrn+e0faGy7GrF2LqMU/MGrDEi8NDnYdBQBQm8sQG6CCtbAQ2R99DGNCAvO7EPv6QtWrJ3O+qJ+XMK+tBYW8a1lLKEPFd/Jkl2Np/s92l+u9giiBvNiLx5D58QKYkqkwn6pPH+SbgBkrT2H7RVZvRxoczLwPR4+KNT+PEYgTqdUQqVRMMq3VLsAX4q1wMFSo74OXQorH+sTwOkMLCAjUL03WUAl8diZCP/iAyROgyfnyS94y3SBNHBAAqb1Rn8Uo4nk5CIJAkIQq2zQc8kVxigrpZ9gwgi5bjqQ9AbDC+ekrW09NEm/0egNqqRrZn3+OwnXrme1imQ04v6Zqb1JfQZlriZuqi9Jc4NQywFx+48CqEvgi6+Xh5gjl/fgjjDduoHDLFsobZA952Vo9ANil0CVBHIXbkA6884plJMJ6FkHZmdJs0a5YCYAq1eViLSzkGRkBT1FdksN9lfhoYnt8cn9Hl7of3IaChEIBw5WrvO2l+/ax+/r44pspXZhlkYtWDVwvAA0tDKfs1AkSPz+c92KNmbEj+MY1V1JexqmsKTGY4TVsGBNaAoA7x1wr9kqtZviVUl4PWbNYp+3qAF8AVIVUdIAK5mxnY0fi5wef++6DZsRw+D36KDSDBzPl4o7eSFsxFW7ze+RheI0cAUW7dsw2Vc+eTq0WaILCKEOiZX4yClevRt5PlDF0yyRGzwV7sDchB7PWOjenBJwr/Sx5+axScBCVHEwbKkQBZXwFe8l5CrxqwTAREGiwNFlDRRIUBL8pkyEJdVC45UwopM0Gawk1kYp9fCAJoJ5urQYRUFbIOyxYzK8GMKfzwzVleXLozvMTGwHWUAlRhVDXc1DLFElJKk8jq2JRKyf09jJXkZubbIkb0bWN04B/5gELQoB/X6v8dSsgaPYs5vX1nr2QNns2T0qesFqAZcOZRFqLlUpyFWk0IJQcHY9w/sRN4zeR8gKYkpNBms0o+usv3nZrYSGjqSFv15aRsweAx/vG4tHefBVdGml4OPyffIIaU04ODJcvu32PhESCQI0cD/ekPBs6o3OYTaRWO60zpVDjEvv5odhgxkvHCjBn0Gzsv/859Lh3MG5/cg+87XL3eZwcFb2JDelkFBqgiItDyz27ETRnDrU9gV9ZRHsIAu3eOkIud+rsDAA+wdRnozGVISZADavWuXRa7OsLkUyGqB9+QOi77wBgPRMZr75KNRpMTkbKzJmMYSoJDkbk998j9IP3mfM4ahxxkfrxx0YbmmcK+JVj17Od+wSJHfJnjDduIOOVV6lx2A0UOplWqiuB1GpBXKg3FFIxJveIxLC4YLQWQjwCAg2WJmuo0DipvNrtFO1vv+N6r97Qn6RKkUVqNcT+1E1be12DskR+gmssUbFiq9lFY7n0EspjE6oOdVlWy9hNOdectrmlJJuq8KENlYjuQLcnnfdb9wiw+z1+BZAuD0g+wi7H/0zJ/9ciJbv3IPuzz5hl8s4hXn6K1UIZgWI/P+DerwAQwICXAZW/vbs1H5mGGq/p9m0U/f03s54O3VkLCmG2GyqyyCin48sj4LnnqHNotTClO4dzmPfA0VUBKC+HK3ynTAE45eamO1S3XrGvD/ZczUZRmRnm1u3w9EezQRAERCICs4dRZbhcQ4X7mtvJWWLPcTE7GBh75w3B4deGYmZb6vsvCQ3hVfTQjO1DXcvXZkSoWoqS/fud9nFl4MiiWWPPdOcOkh97HDpOaTL9u6NLioHyGwhy84O4FEv5xt7M35ybMdL5JzS6o0dhsTeipIXexL6+zN8hojQH93aiPDufP9gZv07rCVE5nZEFBATqlyZvqIjUfKVNWmU2+5NPYCstZaoRRGo141EBgKSvD6CM02OkuYWE3ORc8iuLYJ/mcr78AiYLO4kUGgqRb6AmkPDrBUj73//cD9TTPJXza4GvWgOnl1NGBwCoAoEJi4CRHwJD3gQ6cvIDjn4L3LJ3py4rBL5u53jG8vNcqkjYp3wRPK7omfXKPt42q4nyIIj9/IDY/sDrd4Dh71EbYweyO9o7XUsJyq1vLSxE5ltvM5uVXbsAoMpUsz+hri9r0bxS4xb7+AD2smC6vNUlFn6zvxIXHhUACH37LbQ6dJAJ0xT/84/9Or44Z5doHxYXDJmE/SnSzf4OXc9FWoEeOSUGJOWz1TWFetYoEvtSEzxRwiaxLnygI3yUUvicOoJhx6g+PdKQUJfji4qmDB1vfRGud+yIgt9+d9rHMQcEAELeeYd5XbB6tVPTQMLeikGkYD2RMhehMMf34UiJTAUvhYQR8eN+DjS018QVdMsBgiBg7kp9f94+uxbNfRqvVpGAwN1G0zdUvPiGijkjgycDzuynVgMOMvfaFSuY180Neng5HJYSBMx/KQJ+z9u9GVYbfvl2GrP9VhFV3RGuDkf2UzNRdvqM+4Hu/4Q1PFxx+Gtg53zgL3ujw39fAfZ+QL1W2Q2s/i8BQ14H+s3mH3v9P/uATwCO/YoAoNB1j5Xq4GvPaaCxcLRErEb+146u+BHT7n+lH+tq6vIoIJYBPZ4C2k6g9it1DrFphg+HNMrZe6Lp169S4yZEIqbChQ4fSSMinPajxew0tKFisBsqJAlwGhYSUikkfn5MrgSN2NcXF+2y9V2ifXnbhsUFo324Nwr0Zgz4bD96LdgLK0danmeo2CteVAY9pGICCR+NwSO9okFarUh/6SXoT1MeCImbJp8ih/wOR8T+/i4FCBVtWjP9qXR2rRPmnA5ezNhNfyLgmWcQMGOG2+twPTRcyiRyjGwXgu2zWZVeui0ADddQETkYVdzvxKWxVL5aRFEWDFf5+UcCAgINlyZvqLhq8Ff45yandSK1igodcJIWy85fYF7HleTDm/Mwt36gCK9PF+NaQQISYlljyG8/e0yClppQW/q4aMDmSJkWWD7K9TarmTJKTji0s6e9MM2H8NeHdeIv59lFtNI4+hqD32CPWzWu4vE5YrMCu94BLqznhXG4+D74oMv1FkdDpZCyAF0+9cf0A97MAMZ9A0T3BQAQyUcRMp8vH6/q3t0pRKHs0gXKLl08eDN8JHZDhe68TSufcpHbE1O9FNQkXkobKrveBj6LBc7yPRNBL/GbZYp9fZGqpc5P9yaiUUjFeHlEa7fjK9CzSba0J8LLpEOLIA2TJMzNCQIow8IVIrWa8SC5winHiwOhorwcdLm178NTEPPHWjTbwu9krGzfHsHz5pbbAdxRUI5GJ1VAI5fATy2Dj5L6rK9l8vNUuMaJol1b3jZZFJtwnOobjrNBVCgq+ZFHQbpR9RUQEGhYNHlDhZA4J5rqjh93WidSqyENCUHLVQsRO4pyY9v0VCls8cZVUN9IwzvrKHf/7RBg0wARrGLqqf9MuAHrhlE30W63SKYS4kIOZbR0l7XkXUvempo0FO3bAR0fYjdobwEFSc5vojxPS+/ngY6uDQKG2weAvBtsHkzsQGDQq6ygGsAmD3uqaHt1K3BsEbBlJvDLEOCcc+WS15AhiFj0ndP6slwZrGY2J8CcR12b1h1xQmx/og/vCkjVgKEQ3n3a8HYReWl4horY3x+x6/6oUjsCMScECADKznzDz/uesQiZPx8A4CWnQz92L8fFDYDNAvw9i/dZqvv0RvCrrzLLVv8AaO1VPREuGiCG+jhLudMU8gwVXwCAxmJA6yBWo8TiUL2j6tkTriBEIog0GpfbAEAa7N5QESn5miiy6BiounZlGjJWBkIsBtGKb0ylaoJwNqYznupPGTF9mlN/lx/23UBSHqt6zM294XYhV3ToAGX37sxyUZkZV/1jmWXBqyIg0Dho8oaKLCaGeR1ir1jglpnSiO0VGtKOQyGxV0zYSktR9M8/SH/nUyTtCmI6Hmu9+Il3K6+uwubeJK7bixrKEilPyjUtZRi0B5W4Jw4MRNuEa2i2eRMif/geUcuWAWM+453L8UmcGrCb6h0ACG7rer23w2Tx6xggz14ZMuBlQCwBRn3Mbk87BfzQE1g7xTNjRecgA7/1BZe7eY8aBWWP7rx1VpMY2kQ1bm4LRu5lDaNgKnGTR8EglgAhVI6N2JTGEyETe3nxDRUXeRWeIvEP4C1zn/YV7dsj4uuvmVCOl2Poh1uBlcsPUWkGDwLEYqh69EBeS6r02kcphbfC2ZgK9nb2PnSzh4gKuKEfTugmkGTDepYc/neGWybsBKcLs2bIEMg5XonyPCoiJd/AcgxvVZaWK5bDd9kKzBz+Kr7o9ghSvl6B42+NQmwg9dt8tDf1W96fmIshXx7ArVy29L3Fnj2IWbMa3qNYr2TgCy/wjJiiMhO2N2dDgYZrlUhgFxAQqDeavKEi9vVFiz270erokXKf9JhSUrkXRB3HAwBIixWFGzY67VvkXHUKACiwGzCf75iPXH0uMnWUjkmIjpqI6EZshEQCrxEjKFlydQArbAZQ8veOlJYj3ObjnD8BAHh8M9DlMeBeu9S8Pg/It+uNBNg9PGIp1ZsIoEqF864DN/4Dbuxyfz0accVVUDSR33+PmDWr0Wrpq/CJpcIdeZe9YdZJkHfZm1GZdetR4WI3zIjji6FswQqkidQOHpUKci/Kw9GjIgnljMtBTj3Yi/J8ZBYZYDu9CihhRcmQzuYkGcxWvHa6BHd+XIfoFf9v77zDmyrbP/49SZqke0/ooOw9VYoCIggoIKiAgAMUVBQ3DlBfxJ/zdeLAAYqoLyqigII4GDIUUEBA9i4FuvduM87vjycn55zkpE3apEnb+3NduXL2eVJOybf3c9/fexkyy5jYEJJEbYkMlAuVy1MicENvpoQvFYnJUpxGA4OeRTbCDOLcpCFHLlTqiixJHXgTP/oQiR+IU4y6VMfJyKoA+dhty4RdRRMVhfirBuLVR29Ax9snYfqV7azTPQDQPlr+i/fTv6JPkLZtGwT07w9VQAACLrsMqpAQBPTvJzu+pMqAEl0wCsZPBQBU25R0EwThm7R4oQIA2rZtoYmMtEu2lIbDpZ4XqpgU63LlX3/ZXU9lBt4Z9g5uaH+DbHuR5RL+pTXYenErakw14MAhqIR9KWkcdIzF9HXALItAyfyHVfZIOzjX5TAb4kCoRHcGJiwGLpsJRIololBpgFCJYAuz/ExyJWHwi/YloHbUKFil1yr3U9KEhyOgf39o1BXQhTkuhdZ16OBwn5UYS2Qg8x8EGMR/G3VwEDQSoWI2NDz/wDaiIosUmOS+HglhevipOeiM5VCtt6nqkkzjLd+Zjh8OZOL+n9PBnVyP6myWN+So4Z1aUi77+sRe+HZ2Gq60dPvdl1GEaotVPs/zKPZnoiysSvw3MWaJX+JJny2r6+PKIioA+7z6nj3h37cvwiZNcnASwPnbCpWwuu/jJFd2iML867rCTy3/7yk+VH4/qbeMlKTPlqHj71vsomolVZbfQ8v/A4LZI0EQvk2rECoC2pQUBA5iCZmhEyYg6v77xH2SKSIuMhmcyvH0x7DLJ+OapGvw0lUv4c4eYufX4iD25RJeDvzfLtZELdI/ErzF5M1R5QX0oUCbfmKvoLX3AZ9dJ0ZSpBGVtAeAp7MATs2qY8KS7a9nS4QkUTEwGlBJogKBloqJPLFrrWKejC3SvkICpZn22wR4Hvh7CYLiFaqOLDg1dRAjTmEERItiRBUYaC2JBcTGgQ1BHSGPDKglIlbwTxHQqFVIDPfHfzQKU3aF56yL5y1ltbeotwKrZmDITlYpJnVHteXFCT0wplc8xvdhYrRDTBDCA/xQazTjdC6b9vhu30VcUrPxhVSKJe61FsO0mHlPITAtra6PawenViPl25VI/mqF3fSOFNscFUeNC92F2sbrZE96Icxm+99TTqNRNNsTqqX0lgRbwSWYIAjfplUJFY7j0Oadd9B28fuIf+lF+Pfta/mrcSIChwwRDwxJsHbqVaLTfWJS5OxeszEudRwWXb0IRZacxMhSoPdZM4IqecQGxMKYJ5hP1fFFzHFA0hXiOm8Wy4YtPXEwcA4w6iVAGwA8dhSY/Sdbro+2kkRKf5svk0DLmIyS2utD3wKbnq/7moJQSUoDQi1RmXNbHR+/91OgOAO6UCOSHh8LzqY5XZtFi+q+n4BEqOjDJbkalhLVuIULAQCx855y7noKSJ1sAcgEEBS+GCfr92CyZpv9hQ5/Z20aWWtkkZjpajatFljLxGtdQuW2gclYPK2f1WOF4zhEWgzmSi0Gc+9sPoVCPYscBFms8mvOnUPZb6z3kVahZNsZOI5TNIiTYitiGjv14wwvTBDbKuw7X4SF6444dV5ptQEXLVNmQUkWoZKVJetFRRCEb9KqhArAki6Dhw8Hp1ZDpdcj5euvEP/CC/L/lFMG282/C7T94AOog8S/1gL8AvDy4JcxPHk4xg64DQDQO53HMyvNeHStGUnBSTDYuGQ6xLbMWHCeFcqQ9ZJQdnCc4/wUWwZJpiSMNhGNQAfiaddi5n4r5dwOYO0cJlIEodL9JqCdReTt+dTxGHa+J96yT1d0/mu3dUoiePRohIwe5cwnAYLE8XIqoN3oXCSPNVv/mg+fcgs6bN/GHGEbiNQHJGjYMPlOBXfVa6ttukR3GSvm8Oz/H5BzxDpVk8LJ3YvrEipK2CXvAijQW6Z+jv8L3mjE2evHWMfp54Qzb/htt8nenUUVKIpNTq+vM/riLm4fmIz/3tzTuv7FrvPW6qm6GPMuc82NDdEhqQuLMPJVVSj+5hvPDJQgCLfR6oSKU6jUUEWL/8FzavEL29anQcrg3vKclZ7nefQ8UoGKbdsBAH6Opn4E+tzKKnIEBMfYakvugb6BCaJ+klLX2gr5vkAH4slUA5TaOLN+PhY48D9g+xtiObN/ODDUEr3IPQbUlEMRqfMupwLn54fAtDSkbvgJCf991emPYos+zIiAIMmXf2km/Er+BWdqRI6KZAqq7QeLZft4W/EGILb2vHV5XdQsYMoK4J6t4gEfXYV7zz+KCJQigBOFoh+Mil2c60LwbZEKlexAlvwbeOBvXHpsrqxqS5tS/9Rg7JNPIOmLzxH75BP1HitFKkwC+vev40j3cn1PeWPD2z+1zyOTUlVrwoVCFk15eHgnaP31UFuiZtnP/5+dqy5BEL4FCRUH8AbxiyDsKtHfwWGeCQBNlH10YsC7YhVPvREVtR8wYiHQw+KLsv4RJgiUIioNpdZGSIQns3wXgeteA6Isn7fgjLhd+gVdcFqMqPiHsWsExwPggRxJKH7Li8CinqzponB8mwFAj5uth+hSU+s0AlNEo+AxYjKwMS4eCKy4WRbBcRVdu3ZI+O+rSPz0E7vpD7vKsYp8BFmmcT4yjsNjF4fg4IViFAR2EB2CeTN61R7ACLXcmTgM5YgIdM3nRYiolFaJ016/t+2Hi5ZIU9lvYsVW4JVXOvWz5bRaBF5+uXyKywk4vShUIu+e5dK5jSHYppz7SKZCYreEzBLLlI9Og6mXsz9AeEkCsbGw0M0jJAjCnZBQcYBfEvsPTRUUhOg3v0bg0CGIfeaZOuftNTZlrXb76xMqAlIxcXqTe4RKN4sR1sD75NuDYoABYkIw4nqJ5cvS6p9iMWoAlUYeURHOA4AsizOv2QRsfx0ozgBWWqYUwpKBuzcDukZ2qp3ylf22nCMsAlVj+VkVnGrULULHj0fQlVda15M+/xxBI4YjbuFz8gMtbr9nzPF41TgVBmgwfvGfGP7WNvHnaKELJ29VEMaV4/J28nyY+giRTP2YzTx4Hqjy0+Pu4U/ClCAXUW3efMOla7uKtD9PQL9+dRzpfiYPkH/W347YNwQVEMq5E8L01t9faSdnU1Gx+wfoJXieR/mOHXbOxATRnCGh4oC4p59G1EMPIvnLL6AOCkLSxx8j4va65/CVXHClOJ1sKO1m/P1M0ThM13BvEIz/ALj1e2DIk/b7OkryQ+J7W3vq4IDEbTbnsLhcckESUQkXzwOAn59g0z/S46XXdgcdhgPPZMuFQMZuoFBS6WNQLpVuKIFXXI7E99+HX7x82gFntwIAjun7yDYXVxrA23zeDpy8HPb76Z1cy1HJPowoDXMdLKs24M7le3DJ0n4AHAf1g+K0YdvF7zNfGWMNK3cXhKUb0bZti4TXX0fy/750ORrTWP57s9wt+J4vHffRyiwWhIoYAWrzmmi0qNTVvLmS/977uHD3Pci2JJUTREuAhIoDtCkpiL7/fui7Os5JUULXhdnSK0VP6quisDL8P/J1IcLSmIiKLgjoOALQKHyhdBgOXDYLGPUyqyLqPJptLzon5pxkS4RH7nGg1tJvRR/G3hP6iPuPrAHS/7C/T5cG9BRyhJ8/cPcW4MpH2PrJn9l4BSSNAT2KJaIydtxEjOklFzF5QV2B0WL+TTwnn2IIydoNpznxC/DRlbj38K0IQxlO5JRh20kxt+L/xndH1xuvR+cD+9H1+DEED7c0hNz0PCt3/95xQ8DGEDpuLOuR1cQ4/bsEWMWc1FxP17Ejgiw/I1OxQqm9lzGVV6DmzBmUbdmC9NtuQ8kPP9hVKBkyM3HhgQdQ+iub7uN5HvkWs76yjZvAKyR+E0RzhISKm0la9ilSvl3pcgWFjIS+wKMKZZfuyFFRQqUGxrwJpLFSWviHi9VAF/4CTv4GZB8Sj5d2YBbG1OFacduFv5SFSqQTzRldQR8K9J/Bls9uk09VeVqoGKqZ90yOxSgvvjfC/OW5ExmFlcDA+1Dc7wEAQJyNUMFh++aYVkwGYOf7TBQCwPF1AICg2lyMUf+FHafk/Z/uSEsBAKj0Nvk7f33I3k9vYmKnBbFgbB1tAcC+uD/ZcRbvbWGOzAlhtuXUYQB8M6KS9eyzODtmLC7ePwdVe/ch86l5KPjkE9kx526eiPJNm5E5fz7O33knLs6WT+temvs4iRWiRUBCxc1oIiLg36sXIu64HZGz70Wbd96BrnNnxL3wf65dyNZx1j9C7ijraQQ32//dBHw1CTjxk/Jxast0l0YLTLWUeh5eDZzebH+sEH1xJxHtgIj2AHjg6I/idk8LlS0vAIsvY/4zGn8gIhVhAXKhcjaPVVhVcuwLMphjf9mb2w8HwLE8mjIHfZx+fgr47Rkxv+f8TuuuwapDyucoIU083uziM+jj3HWVcsdlgQ2HsvHiT2I/n7Y2zR8FJ2NTkW9FVHijEWW/2IvKvDffQs1pJrrMlZXWcfOVlajctRvl2+RePmW//ILqQy48K66O02zG+TumI2PmLPKjITwKCRUPodLrEfPIIwgZNRKpP6xFeB1W5IpwHPDwQXG9wwi5o6ynEaZ/bBlRhxFchxFAVGfAUCFGXaLEiin4h7lteDLiLL4aNZIS6JoyVgW09n7m/eLu/0h3vS8uR3YAVGqE+cun1Y5kluDnQ1k4WSyfplCFJYnNJLMOQpG9Fk+aglOsPF2SfxPPyRMlX5soz9cAwCI+JRcBQ5X9vhbEpP6Oxfsfp+VRJ7uIiiBUfCiiwhsMqDnlOBG8ct8/AICqgw6eGwBhkyZZc4aM+XV0Xm8kxpwcVP79Nyr+/BPmkpL6TyCIBkJCxZcJlZh1db+xae/d93b7bd0mAFc9wiz8+94G3PixfL/aD2h/jXyb1OLfU1NXsT3st9WUAcd+YAnBB/4H7FvOKpEay5G1wEWbxM2wJABAqE1E5fNd53Hfin/wwzGb6I4uiFVbAcqtCGzJkU8DxnLiOXufHYHJAxRM3ZaNAt7uDkAi0HKPAAe/AXa8CWx4Umbx31xZME6c/hFM9QQOXii2Lus0KnSIDpLtF5LbjT4iVIx5eTh51WBkzGBVeH6JidB37y47RrD9r71wwe58Af/evRB41VXsmgWeK702lYnPtYmECuFB6i5TIbyLSg2MXwyUZQGdr2vaewdEAGqdGBl5Kl2s8NEGsHEpEZIgX5d2WVa75hniNOEp9ttqy5l/i8D6R4CybGDY/Ibdw2wGlg4Dsg6w9aA4oNxSEmsxlwvRK3++ctg4tupCxJ+lklCxjf5csCTdJvQFMvcjGsVQwQwzVIhQMowzVIvjBICOI8WO2GvuFbdXFwM3LVEcc3MhUKuBimOdDUqrDdD7sagjz/M4nccSwV+5qSeu6hCFcJsKK2tEpagYtRcvgTfUQteu7ukkT1Kxa5csMqGJjUHsvPlInzjRus1w8SJ4oxG5r/5X6RIAAP/eva0RF1Oh58qUpWXdpqIiQNIvjSDcCUVUfJ2+twFDnmBTQU1NcJy4bNsjyBE9bhKXJ3zkOXEiJVzyH6S0JYBtsuq2V+VJwa5w4S/5l7/QfwkAIlLZMAKUP2suHybfoA0S83UOrQJKxU7H2PS8JRIi4eBK9t7rFoBTQc3xiAT7QlPZNOpDTTmw5h5xnVMDY95S/kxSQ79mikrFIUjH/t7afbYQH207g3P5FSioqEWt0QyOAyb2b4vECPueWEJEpfrQIZwZMQLpkybDXOXFqTKbqV1VQAD8e3RH6oafEP/KKwCYUCn54UeYKx2X32tTU6G2dAD3aERFktvjK1EpomVCQoVwTK/J7D3tAefPCW0LPFfMXn2myiMqnsIy9QKAJQHbJiJLWTEJMBkd73dEWZZ83cj8TNBpNDCUedNc3i4CT4zqjC9nXo4Arfilc5xPglnq/qsLEoXfpb3AR6KxHP54S2ydIJBnSQhNGQwEMWdk6fSPjH++AI7+IK7/Jw8ISwQe/EfcJvi7NNZ4z0doH8OmdB76ej9e/fk4bl26G//bzQwKY4J18FMr/zcnRFSECJa5vNyr+SrmMrnDrtCdWpeaCl1Hltxee+kSynfssD9ZxT6jJjoanFoNjaUDuEcjKpKflS/l+RAtDxIqhGOGPQPMu8A6NrsCx4kRoEEWkSM443qCIElbg5iuovtuTDfgvp3yY8uygIoG9HaROvMKcCpgytdAIOvczHEc5gzrgMEdoxGgFWdVX550GVTRXcTztEHyxOLKAlbmXJ8pW2gba5TLoVAptImSCH+lR6QC7YYykTLE0tOnqmVYx78/rR8CJcIws6QaizaxhFSjyXEStZIBY12RCk9SffQosl9+RbZNJekwrm3LxLcpP1+xIihs0iS0WbQIKd+tAoCmiahI/GdIqBCehHJUCMdwXMMbIQrE9waeOOP81FFD4DgWMTi6Fug9lQmX5EFAfB/2RT1nDwAeWD4WqMhlQiUkvp6L2lCkIFT0oda/ZG0Z0jEKq/dfwoDkcFzTJQYoHMGSWQEgtrt9z6UvJwAD73d8f40/my4KjgewH2kxBtw6WsFordhBkiXHAdMt5dtCMnDWQZZg3JTVZB6gTZg/RvWIw+p/LtntG9rZQXdwAOoQ+2fbXOneqR9TeTkuPvgg9N26IfYJx00fz02cZNetXCpUVKGhUAUFwVyu3PRT16GDrAO50M7DkxEVaY+kltSGgPA9KKJCeJ7AKM9/GUa2BwbPZcm8KjXQpr94z+hOQHRnsdLm48FA5n7Xrq8UUQlOsN9m4eWbemLjo0Pw3X2DWBLnwPtZGfXgx9lYbIVbeQ6w+0PH9w+JZ2LDElGZ1UuPa7ooNMgskQgVtYOGhAGSe//1sfIxzYyJCmXKV3eOxuMjOzs8h1Or7Tp3m6vcG1HJf38xKnftRuGny+r2GlHoyq0KEJOwOY6DX6K8uiv6scfQZtHbCJs0EeG3TJbtE7pDezSiIil9pogK4UlIqBCtB8sUDQBg1QzXzhUiKlJxolRtZEHvp0bHWEkOSHAcMPsPsT2CTcNCaPT2/YniJP4own2DLZEg25wZgOVaCBGVmG7AnRuUB+cvaZ7569MOP0NzYlD7KPz99HDZtndu6WvnnWJL6PjxSPnuO+u6o4hFQ6k5edK6bHKxUaA0ogIAfjad20PHjUXI6NGIf+EFu15LmghLRKW42GPutMZccQqVhArhSUioEK0HaUVQmeNuu3aYzWKkYuQL4vbGJKMKzr8CxmqgxpJMOWsLcOt3LEIkILQKEMq/938JVNiYeVUXiz2YZm0G2jrowaMPBUItCcj+YUD6n8otD5oZMSF6jOkVj4RQPX5//Go7XxtH+Pfobu1XdPH+OeCNDUi2doBRksdhyLIXlyXrf0L6LVMUz+Vtoiycv+gy3OXIYfsGmRKs+Tdms8c8Tox5JFSIpoGECtF6kHq8uGLnX3SOeaVwamZ6JxDRCM8NtYZ5sdii0gBt+gEdr2VNHMd/ADxyCOhlcTaWRnFso0JCNCUginndOILjgDl/seWqImD59cDyMcx/pZmzeFo/7HjqGrSLCnTpPLOh1rpsuGSf69JQpF/mhkx7oZL5+OMyl9nwO0SjRVOxXGD4SRqdcuq6p1I5jcZa1eQpd1oSKkRTQUKFaD2kXi0uu2Lnv3cZe0+8ggmM2X+yku1BDzZuPLP/AO76DZBWBJmNYsWUWgP0vVVefi0VKuk2ZaolF9l7mIJTrS3aAHmECWB5Mi0Ata23jBOYKyoUl+vDWFgIUymLhFUdOoRLTzxpjZzwJhNMkhyRyj176ryWKjAQcU+LU3G2YiTy7ruh69gRMXUk5UoRoiqeSHQ1V1bKKqSMHkzaJQgSKkTrIWUIAEEEuGBEJ1jY95nK3uN6sJJtrWt/tdsRFA0kXVG374stdSTwWqenQp0QKoD9fRtStt1CMJeJuSnORgcMubk4c931ODthAkzl5UifOg2l69Yh65lnAADGggJZkmzZxo11Xk9IgI1/6UX49+uHyFkzZfs1UVFIXfcjImfe5dT4PNnLyLaRoykvH2WbFRqREoQbIKFCtB7UGmCm5cuiyoV5+1LWX0XWt8idSCMqw56p+1iVCug3XVyXWvAXZ7D3hgqVFhJRaQjSJFpnv9iLv1kJc0kJjJlZKP52FWDJbak6wKZyDBctES5LZMSYn2+XdyJF3431LQq7+WakfLUCmqgoh8c6gyeFitESpbGa5gEo37pN+WCCaCQkVIjWhTDlI7XArw9BqLgS+XCFoU+yfJRJy60ut3Vyw7ssDwWQ+6YIERVnpn4A5iIspTzXufNaIJxeTFQ1Fjkw07NB2uW44g9xGk5IxhUqfgKvuJztMJlkia225coB/fq6Nuh6EERE9nPPIX3qNLea2QniRxMXh6iH2BRo7XmFEn6CcAMkVIjWheBfUlPKOizXx5E1YiWNqyZxTo8pDJiywrUO2UKZcnkOUJYD/DIfOPkr2+ZsRGXAnUCHESxJGGjVUz9t31lkXTZcuOjUOYZssXKsYucu6zJfW4tLjz+B7IXPA2CREpXFXM4kMUnjq8Xk5cBBgxAyblyDxu4IqfNu1f79qNi1q46jXUOY+lGHhyFo0CAAQOXff6Ny/35cuH8OLj32mMfKoonWBwkVonURECl6mBxeXf/x298Ulxubk+JOgi2eGuU5wMdDgN0fiP2HnI2oxHQFbvseGPoUW1dy320lBAwYgMj7ZgMACpcvR8n6n+o9x2gRKvoePez2la5fb10OGjYMGiGxVermWmoRwGo1Ej/9xHqMu5BOywBA8eo1bru2VaiEhUEr6Thd8OmnKN+yBaUbfkbJunWOTicIlyChQrQuOE7M8Vj3EPBuP3FqRwrPAz/MAXIs3ZanfN10Y3QGob9RWRZQnq28z1miLJ4u+SfrPq6FEz55svXLvWR13SK26sgRa3lu4ocfIPbp+YrH+Q/oj4D+/RWdYst/3wIAUOn14DzQHV2w0bfeb/Nm1F5w0GLBRYQ+P5rwcKhDQ+Hfvz8AoOboMesxNSda9/NEuA8SKkTr44p7WSdigDXx27+C9bz5eiqw9n4mUnKPAvv/x47xjwC6XO+98SohiJHcY/b79KGuXSvaYjOff8LaSbg14hcfj+QvvwAAVP7zD8y1tQ6PzXvrbQAA5+cHdWQkIu64Ax137bR+YQu0+e9/AcCaGFt7IcO6r2jFCrbgAZECsEiOLdXHFJ6XBmC0RlRYFCj0hhsAAIZMUfTLprncaKJHtD5IqBCtD40OuF0SBq8uBgrPAic2AAdWAJ9eK3qSAECnUXaX8DqCed3h7+Xb1Vpmx+8KEe1ZJ+jqkladUAsA2g4dwPn5ga+uxqnBQ3Bu8i12uRbmigpU/MUM8xLeeAOcpTGlJjwc+s6drMdFP/wQ/NqwBOyAy1lCbcW27QBYIq0hi0XC4p5b4JHPoomIQLs1q9HmvXcRMnYsAPclvArJtEIejDo8zO4YoWlh4f9W4HjPXqjY/Zdb7k20PkioEK0TtR8wdB5bNlTKe+dc3AOc3ymuj3q5acfmDO2vUd6u0bv+F7qfXiy9frMT6zKdf7px42umcBwHdTSLfphLSlD9778o/Umer2LIzQWMRqgCAxEyaqRsnzpcnG7RxInJ14GWhNOqQ4fAm80wZmWxkmiNBiGjPCeE9V27IuTaa6FNZv++lXv2IPett2UVSw1BMJGzChWbfBiA9TbijUbkvPgiwPPIX7y4UfckWi8kVIjWi2Azb6iy7/3z5yL2fvm9QIB8rt8niGyvXC5tqGrY9aTnpe8A9n3m3HkVBcCRtYCp5YT2NVFyx97MJ5+CuabGum79ko6wfy7UkrwQTbR4HW1SIqDRgK+pgTEnB7UZLFdEm5ho11DQE+h7dAcAVGzfgYIlS5D33vuNup40mVb6LsVYVIT8JUus60rHEIQzkFAhWi9+FqFSW6HcjRgAojspb/cFbv3OfpvZ0LBrXX63fL3wnHPn/f4isGo6sHqW8/e69I9rTSGbGCWjtby3F8FUxqp0hERStUKVjkYiXjQxolDhNBpo2zLfmtr0dBhz2OfXxLmY+NxAgq66SrZeuW9fo64nLU8GAI0lWViKMSsL+e++J57joeaIRMuHhArRevFTiKgMsLEn73Nr047JFSJS3XettAfk6yd+YgnG9fHPl+z9yBrnjr+0D1g6DFjmg3k/FqT+JgKFy5ezKQzYf0lLUQWJHbWlERUA1umX2vMZMOSwXCC/mKYRKpyfH8Km3GJdNxUUoPg7BaHrBDzPi4ZvFrGmiYxE8LXX1nme1HeGIFyBhArRerFO/UhyVKIkEZSgOMDPv+nH5Sx+eqDv7UCb/kBU58ZfyzZC8+c79Z8n7SC9aSHwdk+xN5ISxyzeGkXpLHnXBwm9+SaA4xAz7ynZl2/JDz+CN5utQkUTZh9RUQWKXattpzo0sUyUGPPzYczJkW1rCmKfegpRD4qCNGvBcw26jrmkBLylIkoaVWr73ruImfcU4l98wZqTI8WQkYGqI3U8GwThABIqROtFNvVj+WsvOE7M/egw3DvjcoXx7wN3bwGmrQQ6XAtMX1//OY7oeC2woEj8/Hs/q79cuVLSNXfnu0BJBvB7HcnH0imlS/80fKweJHTMGHTetxeRM2ZAm5Ii21fyw48wFjqe+vHv0wdht9yCmCeftPNGEaaUjPl5MDTx1A8AqPz9ET1njlVA6dq3b9B1hERcv4QEqPzlQj5yxgyETZyIuOcXAn6s8Wfb999D8LUjAAAla39o2OCJVo3G2wMgCK8hnfoRev8ExwN3/Agc/Mp+OsSXiWgH3NawUL4MlQp4YC/wcgITHRX5rMuzEiYjUFlov12jUz6+KB04LhFSjvKCfABVAHs2gq4ZhoKlS63bs+aLxm5SR1YBjuMQ//xCxWuqo1geh6mgAEZh6qcJIyoCbd56Exl3zaz/QAdUW3oY6To5zt/SJiaiy78HYS4vhzo4GLzRhLKNm1C5e3eD70u0XiiiQrRe/KRTP5KISlQHYPgC36z2aQq0AWK/oII6ypQrCwAoRFwCHQibP98FzJLqoOrSBg+xqfDv0wfh06Yp7gsZ45oJoBBRqfhzp9V+X9NEOSpSVCHMENBU6vrP31xdjUqLH4quc93TjRzHQR3McnYCLhsAAKg5fRqm8gqX70u0bkioEK0XIUelNFPskxMU573x+BKRlmmBwjOOj6lwYA5XWy5fzz/NIi+Zlqkef4sArCkFDn4DrJjEypx9EI7jELfgP4i4S55knbR8OdRBQS5dSyh7NldWWu33NbEx7hmoC6hDLQ0SXRQq+UuW4kSfvijbuBEA4N+rp9PnaiIjoYmJAXgeNSdPuHRfgiChQrRehIgKb6lW8Q9nSaWE2LixroiKIxdbaaTk+E/A4suAT0eK+Smx3S3HlQBr7gVO/Qb89CiwbDSw64PGj90DBA8XDfbUEREIHHiFy9cQvEysaDSKZb2eRohy8FVV1qTY+jCVlCDvrbdk2/x79XLpvvquXQEo2/jXnDtnteUnCFtIqBCtF/9wAJKEx+B4h4e2OoSISkFdERUWFUDq1cDo/wI9J7H1GotQKbkErJoB8Gag4JSYBxTdhb3vkpiOHf0ByNgF/Krc3M/bSAWFNimpQddQabVou1j8zH4JCeDU6kaPzeVxBIsl1M5GVWrPyX114l95xa78uj50Xdm/e83x4/Jrnz+Ps9ddj7Njx7l0vcbC8zx4gwHm6mrkvfc+as6ebdL7E85DQoVovehDgNSh4nowTftYsUZUnBAqgTHAwNlAj5vZenUpsHcZ8HY3wGTzF7tKU7//S1F6g4bsSaRlxObamjqOrJvAtDRrEm7kXXc2elwNgVOroQpleSrGwkIUfPopsp5bCN6mwsuQmWndVnMuXbYv7MYJLt9X37UbAKD6qDyiUvb77wBYknFTcumhh3Fq2DXIfuEF5C9ejPSJk5r0/oTzkFAhWjfJV4rLFFEREcRE4VnAbFY+Rpj6EZJndSz3ATWlwPpHxeOECArAcoD8w+q+9zu9gezDLg/Zk6j8/a2GaeGTJzf8OgEBaPf9d2i3+nuET5niruG5jNUl9/x55L7+BopXrkTlnj3W/cXfr8bpa4YjbxHz0jFIuj4LpcauohciKqdOgTeIDspVBw9al23FkqfgeR5lGzfClJ+Pku9XA2C5Q4IRH+FbeEyopKenY+bMmWjXrh38/f3Rvn17PPfcc6i1mRP9999/MXjwYOj1eiQmJuK1117z1JAIwp7wFHGZIioiYcmAyg8wVgGlF5WPESIqQvmynv2VbpfXIhWDQTGioAFYLyUlNv4H+Ox69pJGWArPAYt6eSWXJW7BAqSsWoWwiRMbdR1VQAD03bq5aVQNQ5vKhGiNpdQYAIy5edbl7JdeAgAUfPwx2yeY3MXEIP6FFxp0T7+2baEKDARfW4say1SSMT8fZT//Yj2Gr2pgryoXEZx1bak5bp8/Q3gfjwmV48ePw2w24+OPP8aRI0fw9ttv46OPPsLTTz9tPaa0tBQjR45EcnIy9u3bh9dffx0LFy7EEkkjK4LwKFKh0qa/14bhc6g1Yp5K/knlY6wRFUvliiOh1228uKzRWXKDLARGM0fc/jPk7QvObAHO/8le7/QW7fl/exYoPu+VXBZOpYJ/zx7gNM3ffkrbLgUAUH1IjFyZSkWnYKnDLgCYS1guS+SsmQ1uLsipVGKeiiWhtvb8efl9KpqmdNmQmam4veZ0HVOdhNfw2G/c6NGjMXr0aOt6amoqTpw4gQ8//BBvvPEGAGDFihWora3FsmXLoNVq0b17dxw4cABvvfUW7rnnHk8NjSBEpJb57a9xfFxrJKojkHccyDkKdFAI91sjKhahEmBTwTJ2EdBpFBCSIG7j1EDbAeJ6eDJzxO14LVBVBPy7Cqgts7/XuoeA8YvlzQxrygBdsP2xRL34JbB/k5oz4hdz4bLPwFdVIXzqVJjy8mXHCw0F1ZbcloaiTU5G1d59MGSxf0fbyIa5ogJwMUm3IRizlM0Ga86SUPFFmjRHpaSkBBGS7qK7du3CkCFDoJW0OR81ahROnDiBIgelajU1NSgtLZW9CKLB+IcBc/4GHtrv2319vEGSpV/Lv98q77cm01q6DdtYxqPfHXKRAjDnW40OuGcrMHQe0P1GcZ9/OHDXL1DkwNfAkbXApb3ittzjyscS9eIXw8Sl4cIF6zbDxYvIff0NnBomF+ylv/4Gw6VLAABVSAgag1piNscbjbg4R+7+bGqiiErVgQPycVm+l4xZ1DjRF2kyoXL69Gm89957uPdecU46OzsbsTYW0sJ6toNOm6+88gpCQ0Otr8TERM8NmmgdRHd2byfiloJQbpxziLUZkGI2y6t+bAlLBlSS0lshciVcM6EvMGw+oPaTn+co0ZY3Aaumy7dV5isfS9SLJsax0Zy5RN4s8tLDD6M2PR0AoA4Na9R9RbO5ElnyrvXeTSRUyn7fCgBo8/Zb6PD7FiS8wvpTGfPpmfJFXBYq8+bNA8dxdb6O29TJX7p0CaNHj8akSZNw9913N2rA8+fPR0lJifV1QfIXAUEQbiQwCtBYDPDKbP5wKLkg2uFLLfP73MbeR9h05p2xAZi6UtzvCH2Y8+P7/aX6myYSitQlVOpCEBoNRYjImEtKUbD0E7v9nhAqpRs2IGvBc9ZKI95ksubG+PfpA7/4eGjiWH4VCRXfxOUclblz52LGjBl1HpOaKv51mpmZiWHDhmHQoEF2SbJxcXHIsbQ7FxDW4+KUE/N0Oh10OgdNzwiCcB8cxxJki9KZUImQNOH72/K7HJYEaMSpW4x9G0ibA8R0lV8rKBroPBr1og2039ZmgHzKRyD7EDOK6z6h/usSMqSmb66g1DHapfODmVCp2LUL5vJyu/1lv/yC4GHDGnUPWy49NhcAENC/H0LHj2d9loxGcH5+VsEm9GEyFRWBNxodJkzXnDoFc0UF/Pv0Qc3p0+Bra71ewdUacDmiEh0djS5dutT5EnJOLl26hKuvvhr9+/fHZ599BpVKfru0tDRs374dBklN/caNG9G5c2eEN/IXgiAINyB4y9h2OhaM4HrZeIFotEBsN/t8FWexPW/Ch8A1z8i3tR8uLl+0nz4g6ofjOMQ8+aR1XR0WBm1KisPj/Qf0R9SDD0AjyTFsCEJERkmkAEDJDz+61UtF2iLAWMA6fddeYOX2UmdgdVgYy5/ieRgdGM/xJhPOjrsB6VOmwpiXh/O334FzN92MqsNH3DZeQhmP5agIIiUpKQlvvPEG8vLykJ2dLcs9mTZtGrRaLWbOnIkjR45g5cqVeOedd/DYY495algEQbiCUHJcLo98Wu3wY23617iTiPZAn2lA8lXitrFvy7taH/oOMDrXr4aQE3HnDKsNftQDD6D9Lz/Dz0HOX9wzzyB6zpxG31PtIBk35fvvrMtCw0Z3IC1D5k1sqlJIDPazmN4BzK3XL5Gtl6xZqyiWpKXUuW8vgslS8FH8rYNkc8JteEyobNy4EadPn8bmzZvRtm1bxMfHW18CoaGh+O2333Du3Dn0798fc+fOxYIFC6g0mSB8BUcRlWpLwqW+ceWqivSeCqh1wM1L2bpGy/JbrnwE6DddzI0BgPJs1k8ov47miYQiHMchccnHSFzyMcJvnQZALEMGgM4HD1iXHQkYV1EplDfrOneGf/fu1ohOzalTbrkXANRmiI66Jkv+iTGP+f9obAo5Im69FQCQt2gRCj629/KSNlMsWb1avIeNFwzhfjwmVGbMmMGaPim8pPTq1Qs7duxAdXU1Ll68iKeeespTQyIIwlWEiEpZNnB8A/D+ZczevqqYba/PDr8h3PA+MPe43ICv82jg2udZJdHQpwCd5AvvxE/AFze4fxytAH3XrggaMgScZcot5jHW+iBs0iSodDp02LIZ7X/5GeqgILfcT8gFkRI5axYAWHsgGS44cEJuACU/rrMuC5EawYHXtqli0NVXW5fzFi2yu5ZQ+WS3nYSKx2n+FosEQXgOaUTlm6ls+denPRtRUWvk0zu2xHQFnkoHvpkGnPyZbSu95P5xtELCJk+GrlMn6Hv0ACAaw7kLlY3gCb/jdoSMHQNANJMzlbnHG4vneZRv325dN2Sz6UtBsNgKFWnUSBVon9RtsinbFjBmZ8NUVgZ1AxOUifqhpoQEQThGiKjkSnqgmGoBg6WM1JVyYneiUtUtZogGwalUCOjXDyqJCadbr2+TLB3z2GPWbUIlkrlMOdHWVQwZGTBLDEFrLY0VHQkVjuOQ+Ckrmeb87c0fhTYCgL3xXfm27baHE26EhApBEI4RIioVkgTHjF3isiciKs6ia5ynB+Fd1JGRUOn14nowi7aYyxVaKDSA8u07AMCa+2LKy4epuNg6VaOJsbfq13dixoSmwkLwJpNsn8kieuL+73l02rUTiZ9+grCprOqtcp9C+TzhNkioEAThmPAUUazYEpokd59taqTOtBpqf9Dc8O/bR7auCmIRFZMLEZXy7duRteA5mKur7faVrF0LAAi/7TZrI8X8pUthKiqCJjoa/t3tK9bUEREsWmc2w1RYKNsnCBV1SCg4tRpBV14JXSpr3GkqKrYel/fe+8h95x23llm3dkioEAThGLUfcNksm40ckDIYuPEjrwzJSliSuGysAkwGx8cSPkPKqm8RetNNiH9O7l6sskRUStetc5i4asuFe+5F8bffIu+99+z2CaXJAZddBk0CE9uFny4DAITfOg2cwvQWp1aLfX/ybRszFgOQu/MKAkhormjMz0f+4sUo+PAj1J6mSjR3Qcm0BEHUTfIgcXngHNajxxe6Fg96iFUf7f2UrVeXAoGRdZ5CeB//nj3h37On3XZpMmrWs/+Btn17+Pfpg7AbJ9R7zfJNmxH7xBPWdd5otIoHTVQkNJFRqLHsUwUEIOyWWxxeSxMVBVN+vp1QEXJUpB2kBade4V7nb7tdHNO2bdB17Fjv2In6oYgKQRB102YA0PYyFkUZ8rhviBSAlUaPfQvQWsYjmNARzRKVJIG1cu9eFK9ciaz58506t/aivKTZWFjI+kCpVFCHhUETKQrYkDFjoKnD+VwooTbmiUKF53lr1Y8qRCJUhIhKURFMpaWySJCBOjG7DYqoEARRNxotMGuTt0fhmKBooLAMOLsViGzv7dEQDcVBvpOppASmkhJok5Jk23mzWXKQTeKrxQZfHREBTq2GJlr0b9HEK/eRs+4XhIokomKuqLTa8WsiRJGjCQ9j9ysutkZVxHOaphN0a4AiKgRBNG9Sr2bvPz0GlGbVeSjhuwSmDUTo+PF22y/Mvg9nRo5C8fffy7bbCgFZX598JlSESIpaElHxi61HqFhEjalAFCrCMhcQAFVAgHW7EFHha2rsIigkVNwHCRWCIJo3A+4Sl4szHB9H+DScRoOE/76Kdj+slW2v2r8fAJD1zLOyShpTidwYzpifD0NWFip27xa9UizREW1ysvU4W+t8W5SmfoSGhrZNGbmAAGueijBOAXcJlfIdO9zaVqA5QkKFIIjmTVxPINaSnFnrHrMwwnvoO3dG8or/wX9Af7t9ua+/YZ3yMZfKnWKNubm4cN/9yJhxJ7KefhqAOM0TNGQIwm+9Ff59+yKgX986769WmPoxFcojNAIcx0HftQsAoOKv3bJ97hAq1ceP48Ld9+DsuNbdIoKECkEQzR+txfK8lsLtLYGA/v0R+/jjdtsLly1D6c+sbYKpVB5RqUlPR83x47JtfpYmuJxajbj/PIuUr7+STd0ooYliRnBSoSJMJakj7avKdF26AgAqdzGhYnXYrXSDUDkmfp7q48dbrTcLCRWCIJo/VqFCEZWWgn+fPggYMMBue/XRo6wKp6hItr103Xq7YxvSTFHIUZEKldpzZwEAfnH2+S1CREVAEEcmSUSlbOtWnLrmGuS8/nqd9649fx6G3FzFfecm3IiyjRud+AQtDxIqBEE0fyii0iIJGTfObpsxKwunh16NzKfmybZX/PknAMg8UrSprleBCTkq5tJSmGuY+0qFJVoScJm9cNJ3kQsVvcXx1lxRCYCVNhd98QWMmVko/HQZzFVVivc15OTgzKjRODfuBmvkRDCZE8h/f7HLn6clQOXJBEE0fwRvF4qotCjCJk2EMTcX/r16ovZ8BnJefhmlG36u85zQcWMRPm0aao4fQ9Dgq1y+pyo4GJxWC762lnVGLipCzcmTAAD/vvb5Ldp27WTr0Q/MQcmaNTCXlMBcWYn0W6bIkmENWdnQpbazvQwq97J+QaaSEhhz8+AXGwNTgdzG37b/UGuBIioEQTR/KKLSIuFUKkQ/+ACChg6FX4JyzymNzXSMKiQE+s6dFEudnbonx0HbnkViMuc/jfQpU8V7KeSocBr53/sqiXPtiX797Sp2DFmZivcVmiUCQNnGjeB5HuV//CE7hlfoadQaIKFCEETzRxAq+Se9Ow7CYziaxtF36yZbV4c0vqt2gCVyUvXPP9ZtqpAQcH5+iscLtvrq8HDHeTEq9nV7YeYsGC5dku3ieR7lv2+1rue//z6Kv/kGNceOyY4zFhaC53kUf78aVYcOufSZmjMkVAiCaP4IQuXoD0B5nnfHQngEbbsUxaqbwIEDZevuECpKUzxqiwutEomfLIV/375ou/h9AEDojTfK9mtTUxE2eZJ1PeOumag6fASXnnwShsxMFCxZimqJ8DAVFyP7+f8DAETecw9Sf94AAOCrqlC2aROynnkG6ZMmN/jzNTdIqBAE0fwplYTTc496bxyEx+A4TrEKKPjaEfLjJD2DGoqS14omPELhSIZ/z55I+forBPTrBwCIe/YZ2X51aCj84hOs67XnzyN94kSU/rgO2c//Hyp27wIABF19NSLuEg0M/RISEP3wQ9CmpACWaE7BkqXW/a2lXJmECkEQzZ/eYh4BDMpVFUTzR9qNOCBtIOIWLoRffDw0kvwVjuMafR9NQoLVHl9AHeFYqNiiCgxEwGWXieeGhjrMsak5fdqanxJ5z90IvFLsVq5t3x6cWg2O46zdpaWRF3NZmdNjas6QUCEIovmTeDkQ35stF54F8k97dzyERwibNBHqqCiETZqE5M8+Q/gUVoqsTWjj1vtwHGcnTDSRzgsVQG4Opw4NVfRgAQDDpUswZrIeVdrkZAT0Fx15eYPBumwqLLQ7V+r10pIhoUIQRMsg3FLy+et84IOBQFmOd8dDuB2/2Fh0+mMH4l/4P9n24JEj3X8zm1LgAJtcmPqQ9gVSh4VCEx0tXuvyy+2O5/z8oI6IgEqvt07z+PfsWec9jLl5MBYV4fSIa5Hz6n9dGl9zgnxUCIJoGejFslCYDUDhGSC47gZ0RMsg/NZpAG9WFAANhTcaxetPm4qQUaNcOl9aNq2OiIQ2JQWRs++FOjQMuk4dUfn33zYnaKzTVu3Xr0PJj+sQOWumdXfi0iW4eP8cWZTFmJ+P6sOHYLh4EYXLlyN23lMujbG5QEKFIIiWgVSoAEBF6wiLE6yXT8T06W69plSoxC1Y4PL5fgli8qw2KREAEPPII9Zt7X74AeckXi+cSpzg0CYnI/rBB2TXCxo8GJ3/PYjC5Z+jYMkSmIqKYMzLg7m21nqMuaoKKjckE/saNPVDEETLwD9Mvl5JQoVoOOG33QoACBo6tEHnS4WKX9tEu/3alGRWzWNBZ2PFrwTHcYi8cwZCb2DdlI35eTCXiyaHhkxlM7nmDkVUCIJoGQREydcpoZZoBJF33gl9127w79OnQef7xYtTP9rEtnb7VTodUn/egMq//kbBJ5/YlTTXhbVxYl4eIIn81J7PgK696/2NfB0SKgRBtAy6jQcKTgPH17PKn92LgbT7gVD7LwmCqA9Oo0HQVVc2+HxNXBzCp00Dp9fblTpb78FxCBx4BQIHXuHatS2Juab8fJjKxP5WF++/Hx3/2GFtrNhSoKkfgiBaBv5hwMgXgF5TxG3/fOm14RCtG47jELfgP4h98gm3X1ttESIVf++R+aoAQPm2bW6/n7choUIQRMtiwJ3ictZB742DIDyEvlMntiCZ9lEFsjYStRcvemNIHoWECkEQLYugGGDyF2y5yt4kiyCaO5roaOg6d7auq8PDEXX/fQCAyj17YK5oWV3ESagQBNHy8LeYbVWSUCFaJvquXa3LqRt+slYWVe3dh0tPPOmtYXkEEioEQbQ8AixChSIqRAtF2oxREx4u64NUvmWLN4bkMUioEATR8hAiKlVFgNncsGtc2AMsHQ4c3+C+cRGEmwgePhwJb76BdmvXAAC07VJk+82VlV4YlWcgoUIQRMtDiKjwZqCmpGHX2P8lcGkv8M1UwFgLlGYCB74GqkvdN06CaAShY8ZAbzGK4zgOkffNtu4r27TJW8NyOyRUCIJoeWh0gDaILVcUNOwaJtGaHOe2AR9eCaydDayYCJRmAdteoxwYwqeIefhhaGJZf6vMp+Z5eTTug4QKQRAtk1CLbXlResPON1SJyysmivkuF/4C3uoC/P4SsPO9Rg2RINxN+FSLjxDPw1Rc7NWxuAsSKgRBtEwiLVbiO94E/nwXKMsGeN7582vL7bepdfL1P94CjDUNHyNBuJmo2bOhTU4GAFQdbBk+QiRUCIJomQhCJWMnsPE/wJudgR1vOH9+TZl8PaEv0G6I/XE/zW34GAnCA/j37QsAqDxwwLsDcRMkVAiCaJnEdLff9s8Xzp9foxBRie1mv20/2fQTvoXQSLFq/wGvjsNdkFAhCKJl0mG4/bagOPttShiqgdwj8m1XPQZ0HqN8fHmea2MjCA+i78Jca2vT0707EDdB3ZMJgmiZBCp0kK0qcu7c7a+Ly7O2APG9AbWGebL0u4MJk5M/i8ec/R3oNblx4yUIN+HXlnUMN+bkgK+tBafVenlEjYMiKgRBtFw4m//iKvOdO2/X++JycCwTKQCgUgE3vAdM+waY9i0QzTwsUHCm8WMlCDehjowEp9cDPA9DVpa3h9NoSKgQBNFyGfQgexfyVaqKAZPR4eFWIjuIy4Ifiy2dRrEXoFwhRBBeguM4+LVpAwAo29z87fRJqBAE0XIZ9gxw01Lg9tWWDTyrAqqPwGj2zqkA/zDHx2mD2XsNudUSvoVfmwQAQO5rr6Fy/34vj6ZxkFAhCKLlotGx3JHgOCA0iW37fBzwyQhmi++I6mL2PuWruq+vs0RblCqECMKLCBEVACjfvNmLI2k8JFQIgmgdCNNAAHBxD1Bw2vGxVcXsXR9W9zWFaSGa+iF8DJVOb11Wh4d7cSSNh4QKQRCtg7BE+Xp5juNjqy2NDOua9gEookL4LJqoSOuyuaraiyNpPCRUCIJoHfhHyNeLzikfx/OiUKk3omLJUaktq/s4gmhiwqZMtS6bShrYQdxHIKFCEETrICBSvr7+UXnjQYGKfIA3AeCAgAj7/VJ0QjItRVScwmxiQtBs9vZIWjzqoEDEPPEEAKDoyy+Rt3gxeIPBy6NqGCRUCIJoHSiJjpKL9tvOWBIPQxNZMm5dCFM/VUXA+seAP95u3BhbMrUVwDt9gOfDgFeTgDO/e3tELR5VSLB1Of+991H0zUovjqbhkFAhCKJ1oA+131ZtU1ZcUwasuZctq/3qv6YQUakuBvZ+CmxayKIGhD2nfgNKMthybRnw5QSvDqc1oA6SewCVbdzopZE0DhIqBEG0DlRqoM+tQNIgICKVbau2sdQ/+au4nDSw/muGtAUSr5BvK89t3DhbKkr9kGgKyKMEDx+O0Ik3W9eNBQVeHE3DIaFCEETrYcIHwF0/AyEWj4lqmyTDTIkx1tXz67+eSgWMtZnuKcts3BhbKsXn7bdVNuEXp9kEHFkDlLaefx9Oq0XCiy+i3do1AABTcbF3B9RAqCkhQRCtD2EaqLqE5al8OgooleSrDH/OvpzZEbHdgclfAN/ewdbLst071pZCUbr9trIsICi6ae5/8ldg1Qy2PP+iOG3XClCHhQFg1T88z4PjOO8OyEUookIQROtDKlQ2vyAXKUD91T62dBsPdBnLllvRX+wuofRzqcvLxt0UnBKXL/1jn5/UglGHWp53oxHmigrvDqYBkFAhCKL1IQiVP98FijPs99t6rjhDcBx7L2v+3Wo9gtLPpSl/VmUSUfTFDcDrHYCNzwGFDvx0WhAqf39wOlbBZipufp4qJFQIgmh9CEKkqlD5r3pXIyoAEBzP3mnqxx6TUfnn/OODwMW9TTMGW1FkqgH+XAQsGy1uM9YCh79nXjotDCGq0hzzVEioEATR+ug1WVwuPMPew1PEbQ2JqISwbrU+M/VTchFYfQ9wdqt7rrfvc+CbW4Gco8CBr9nLWcpzAN5S4RNqk/uzaaF7xufMGBS3S4Tln+8A390FvN4e2P6GPArTzBH6/Rhzm19VGgkVgiBaH+HJQHQX+baUweJyoyIqPjL187+bgX9XAl+MByoLG3etmjJg3UPA8fXAh2nA2tnsVXzBufMrLKXJQXHAo4eBGT+J+3g3lChn/FV/WXhd/y61lryNI6vFbVteAH5+svFj8xH03boBAKr276/nSN+DhApBEK0TqaW+yg8YvoCJlY4jgaBY168nCJVSHxAqxhog77i4vnysYyO6nKPAkquBEz87vl7eCeXtpzc5Nx4hmhEYxd6TBgGxPdhyiZNixxHH1gHLRgIrb1Pez/PAuR1A4VnH1xA6afsFyLdf3NO4sfkQAQP6AwCqDh708khcp0mESk1NDfr06QOO43DgwAHZvn///ReDBw+GXq9HYmIiXnvttaYYEkEQrR3/cHE5KIa9ZqwHbl0FNKR8M8QiVGpKxL/QvQHPAzvflW/LPQJkHlA+fvP/Mf+Yr6fY76utZNEUqeiRkv1v/eMxVANfWabahEiVSgXc8SNbLs5wrVeSsQZY9zATKACw/XX2fuEv5ePPbQc+H2u/vd90IKY7WxbyirQ2QqX0EnBwJfsZNHP82rIpN2OegvGej9MkQuXJJ59EQkKC3fbS0lKMHDkSycnJ2LdvH15//XUsXLgQS5YsaYphEQTRmpGavZVeavz1dCGAXyBb9mZC7R9vA1teZMvJV7IX4DiiwEm+Bv5YBJRYfhY8D3w8BHinN3Dhb+VzS5z4ueUeEZdVkrYEgZFi5MpRxAZgIubSPjEitPtDYN9yFkEpvgBkSSIEPG9/fv5J5eumXCXmFZXnWFxyFQTqmnuAtfc7Hl8zQRPBhLmpkE0DGouKkHHvvSj95de6TvMJPC5Ufv75Z/z2229444037PatWLECtbW1WLZsGbp3744pU6bgoYcewltvveXpYREE0dox1ojLgW4wHeM4sUTZmwm1m58Xl2O7i0nCSoZrABDaVlze9Bzw+Ti2XF3CvEcqC4B/Plc+15nPKf05V9pU0wh5QnnHHJ+/5l5g6TXA97PY+vmd4r5di+XH2joNA44reNoPB4ItQumPRcCKicC5bcrHHvvR8fiaCUIyramkBNVHj+JU2iBUbNuOS4884t2BOYFHhUpOTg7uvvtufPnllwgICLDbv2vXLgwZMgRarda6bdSoUThx4gSKiorsjgfYNFJpaansRRAE4TLXvy4uT/7SPdcU/kL3VkRFKgoA1iogvB1bdhRRMVTK14UqqAqFKYLEgfJ3W6M8JaSJvCajfF8MS/BErgOhUpbNEngBluj691K5781Zmw7Mtgm1uceAba+yZb9AYPafwE2fAI8cYhEdIQJWeEbsmg0AU78BOo6q/7M1IwR3WgDImDnLewNpAB4TKjzPY8aMGZg9ezYGDBigeEx2djZiY+VJa8J6drbyL/orr7yC0NBQ6ysx0Umba4IgCCkJfYCFJeyVnOaea1orf7wUURGSQgWSBgJxlqTVc9uVmwAq5dNUl8j7HgFAr1uA274HJn0OTFrOtlUVAZ+NUZ5yEaiS/NF5vU0OYkxX9p57VPncLJscmA2Py6MvtrkztiXIP8wRl4cvYD+LXpOAsCS2TcgrsiU4nuUstSA4jUb0UrEJBBgLG1kV5mFcFirz5s0Dx3F1vo4fP4733nsPZWVlmD/ficZeLjB//nyUlJRYXxcuNDJjnCAIwl0IX24bFziXv+FO8k6yKQyA5ctMXcmESuowQBvEoh85h+3PUxIqeSeB1XeL688VAzctAXRBQPcJ8i/48384jogAolDpMZHlhUgRIiqZB1jSrS3OVgTF9rRcx0Zc5UuEmzbQ/rzL7hZFi0BcL/vS9RaCOjJScfupQVfC6GAWwxdwWajMnTsXx44dq/OVmpqKLVu2YNeuXdDpdNBoNOjQoQMAYMCAAZg+fToAIC4uDjk5cgUsrMfFxSneX6fTISQkRPYiCILwCaRlzRueaLr7GqqYLfyhb9l6txuAzhbHVT89kNCXLWcplKbaTv0AwEmbUmWlKqgO14rL6Tscj00QKkJpspSEPkBIW+YQLEzxSClxYmpJ4w9EdWTLG/8jVjfxPGCUiB+VQg9eXRCb5hG48mFg9g72M+t6g/xYQ1X9Y/FxAgcOdLjv4oMPNuFIXMNloRIdHY0uXbrU+dJqtXj33Xdx8OBBHDhwAAcOHMCGDRsAACtXrsRLL70EAEhLS8P27dthMBis19+4cSM6d+6M8PBwxfsTBEH4LNLpgroSRN3NqY1yQzPbiEB8b/auVE5cq1AavONNcfma/yjfc7wkkVWpX5KAUHXjr/B/utoPaDfY8TUEoTLkSeCWFcrXD4kXk5gBYNt/2XtFPrPJB4D217BIkBJSR+IQSWJxp5HA3JOiwGkBtvohYxXKtC1U7d3XhCNxDY/lqCQlJaFHjx7WV6dOnQAA7du3R9u27GGYNm0atFotZs6ciSNHjmDlypV455138Nhjj3lqWARBEJ5DWj1kax7mSWyrbyJS5evRndm7UgM+YeqHU/g6aNMfGOTgL+3gWGDYs2y5RqGooSybRZWESEm7ocrXEYz3qhTyJAShEtOFiQ3FcSQAarEgwyrYhETfoDjg9jWAn7/y+dIpoeRBNteOFf9NbSuWmiH6Lp2ty37JSej0127Zfr6uXCMvohALazpCQ0Px22+/Yc6cOejfvz+ioqKwYMEC3HPPPd4cFkEQRMOQfukpTTW4i90fAv9+C+iCgbQH5F+i3cYDHUbIjw+0RHqKz7MqHGmLAEGozNoMRHYAPh4sljL3mw5odI7HoQti70qGbUuHi2IhppvjhGUh0lKpkCMhCJXQRHszNoHgOHlUSKgyKrBUL0nLrx1x/18sAVpIPJYSEMXET0VB/dfxcVQBAdB17ICaU6cRPmkS1KGh0KakoDY9HQBgKiiAJkphis7LNJlQSUlJUVRrvXr1wo4ddcxvEgRBNBfaDGBfvFVFrvfXObUJiGwPRLSr/9hf5onLUu+Pq+cDV8+zP17ID8k/CSzqBTzyLxMrPC+6rmqDAH0IcPfvwGuWMdSXVKoLZu+200cV+fLS5fg+jq8hiCbbiIrZJBrx1SU2QuKBbjcCez5h6+U57HMd/YGt20ZJlIjpwl5KBFoiPi0gogIACW++iZpjxxAyjvnlJH/9FU6lsZ+RITPTJ4UK9fohCIJwF2oN+6IHgAoXutSe3wmsuBl4t0/9x9YVng9QruqQba8tE8uBP7ueTdto/EUxEBAB9JrCplra9Kt7LFoHERXbcuO2/R1fQ+hUbSvsyrIB3sQiU0KS8hWzAY2elUkL+AWw68/+g60bq1l5ddYBtt5pdN2foT4CLF/cW19tEVEVfadOCB0/HpyKff1rwsOh78mqpi498igqfbBpIQkVgiAId+Ifxt6N1YCx1rlzzv/p/PXr6jvjKA/DtuJGMEbL2MXek66QT63c9DHL61D7oU6sUz82Y5Ja4qt1QM/Jjq/hKKIiRFOCEwCVmi2PegV44ox8aksQYXE9WVk2wKIq5RbDOsGEr6EIP7uic0xMtkA0lrJlQ2Ymzk+dBlO5WLLuC3krXs1RIQiCaHHoJJYJNaWAxsVQ+vldzLgtoQ/78gWAf1cBR9cC499nfW4cEaRs62CNfAiU51hcbC1fQuPetTvFKbTC1I+NUMk/xd47Xw9c9xqbUnKEkD9TmsmmewRRIpi3BUtKvlUqURzd9j1w/Ceg7+3i/uA49jP/7T+A0VJO3FjjNqnIy9wPmAz1C7hmhjpKHokr/m4VTPn5KN+2DeaaWqSuWQ1VoIIPTRNBQoUgCMKdqNRMrNSUsikIJf8QW0yiRQM+k0xVLCwBzm4FVlssz09vFr+AbYlIdVwZw3FA8lXMnA1g0yrSKIgzCadKCDkqwtTPhT2ARis687a/Bgirxz08sgMTUrXlzDhOSGgVoj6BDoRGhxH2ScPxvVkezilJoz0lozdXSLTxHsk/yXootSA0kfJnNPfV/8rWqw4dRuDAK5pySDJo6ocgCMLd6JlVeb09f87vAr6/Gzj4tfL+lbcDX4wX16UipdNooO3l4vqol1nEwRG3r2aGZgATAUIDP79AMYrhKtKpn/I84NMRrONyqaVE2JlohloDtLW0WbkgKZcVhIorERFHQq0xJA+SJxUL1UQCZpN9D6NmhsaBY60VXqH1QhNCQoUgCMLdmCy5Kcuvl2/neVadcs5S6bjhceYm68gwzVHX3lu/YwZoqVeL2yLa1z0mjQ6IsvholGeLU0h1TcvUhzDNZaoBzmwRtwsmb46momwRohYZEqFS0QCh0m28KBLdhUoNzNwoOvFK+ynxPLB0GPDBQOfzkXwQfTdLzyW1GqrgYLv9pnKF8vMmhKZ+CIIg3I20OZ407+L0JuCnuWx5QZFy75264FTADe8DHS1fmtKS2cgO9Z8v5Huc2SIKC6mjravoQwFOzapz1kj8rwQDOGdFRpJlWuHiHnFbmeVnKDXRqw9tIBMVF/cyQdH5OufPrQt9CND2MuD0RrG7NMBKoIW2BLlHWV6RLUIjSI5TbkXgAwQMGIDU9esAAOaqKqRPuxXahATUnj/PtlUo9INqQkioEARBeJLKAvEL++xWcXuRgkvszI2sy/Hez1i+xYmfxH1j3mR+IYGSMH3q1cDeZSyPo65pHwFnIxzOwnFMpDi8n5NCJdryF33xBTaNcv4P8bMLHZadJbqz6MTrTiItESth6sdkAFZNF/cXnrEXKid/BX58iEWwEvoBszY1fJrNw+g6iEK3y/5/ALUalx59DGW//AJzOQkVgiCIlsXguWK/nPIc8QtbcHwFgCNr5OeEJgKJl7PXkMdZguqGJ4DUoSwyoDSl0WUcMOVrselgfQS7WagAYuKwLQGRzieyCj4pvAlYOxuoyBP3JTlh2NYUCBErYeqn3MYnJ/e4fL0sB/h6qijkMv8BFl8O3L62/gRjL8NpmDRQBbF/v5wXX0T45EngtNq6TvMYlKNCEAThboY9K5YES6eBpNMsW15g7zHdgZEvApOWy6+hCwJu/BDoPcVx3oVKBXS5nrmzOoNgruZOpjpIBI52IRIijQYdWgXkW8TA2EXORYqaAiGiUpHHnIdtE6WlIvTiPuDNTvbRpoLTwOb/8+gw3YnKX/TWKf311zqO9PA4vHZngiCIlopKxSIjgPwvb9u/wgEguhNr/CdUvnh6XCmD5dtu/a5x10y5Snl7Y6ZfBPt9abKwt9EFA2FJbDnzAHDgf/L9h75lFVwll+SVWrYcW+exITpFySXg/cuB3R/Ve6ippNi6XPbbb14zfyOhQhAE4QmEqYLTm9i7ySC6rUoxN3Fp6+1rgZEvseVeU8TE3MYQIPHhiO0BhCUDV9zr2jWUBFNjXWXdTdvL2Puh71hukC2HvgWWXC03wGt/DZvWm/wlWzdWsXLushz785uC318C8k8AvzxV76HGbHGMZRs3ofDTTz05MoeQUCEIgvAEgmPqkTVA9mGg5IKyH4XBgYGbp1BrgIH3A3dvAca9455rTvuWma/dtxO470/W9NDViErHa0WfF4G6Ojd7g86WcnNpNKXPrfJjbHs89bsDePQw0O0G1lMJADY9z6aGjq333FgdUZrp9KHh06bK1nPfeBO1Fy86ONpzkFAhCILwBPG9gM5jmDg5/D1QdF75uDZNMOVji0oFtOkP+Ondc722/ZmlfWMdW6VVSWMXNe5anqDHzfaNH0e9XPc5QZIWAIJL8Z6l7H3t/e4bW30Ya4DfXwHS/xC31WNUFzxqFNr9sBadD+wH589EljE3r85zPAEJFYIgCE8h+Hhk7AKKFYRKYIx9FKE1I7XyH3Cn98bhCI6Tu9TG9WJNKO/b6fgcaQsA22m+mhKWXGvrdusJDn4NbHsVMEvaNVTULTo4joO+c2eo9Hro2rNkYmneCm82o+Lvv2Gu8mxUkIQKQRCEp0i0GJllHpBXhQjctETetbi102UMcNksYEL9iZ5eI1RSWixUY4XWUW4cJDGsUzLX2/Em8F4/oNbDXiXFF+y3lTk/DaQOZZ/VXCqWohcu/xwZd0xH9gsvNnp4dUFChSAIwlNEtGPOrcYqIOMvts1P4i2SlOadcfkqKjUztusztf5jvUVEqrjsH8be9SHA9W8AGpuptLQH5KXlujrs/be85LYhKsIpfN1XFjl9ujqUtUswlZSg+vhx5H/0EXJfew0AULJ6tVuG6AgSKgRBEJ5C7QeEp7DlDMv0wNi3WYLl2EXuyxEhmo4Bd7LeRAGRwBX3idsvvxsY8by4PuFDYJSN+LjlSyZUY3syAStlzyesd5CnEJJ8VX5i9ZKSUZ8DVJaIiqm4BBfuuRd5i+SJ2OenzwBvMCid2mjImZYgCMKTRHWU94eJ7gz0vsV74yEaR1AMMNOB+VmwJHFWWrItkDoUeMYy3fLljfJGjqYaZiQX4AFTPoB1twaA614FTllK5mvKmDgqy2L+KomXOTxdHcKESv4HHyjur/zrL9ScPQt9Z/e3L6CICkEQhCfpNVm+Hp7snXEQnkdW4RPp+DhA7twrlC0LbreGKuCDNPdWBQkRlcAYZl4HsCaQL8YCb3UFPh0BZB9yeLqQoyKl3Q8/yNY9VRFEQoUgCMKTdJAYqqk0gH+498ZCeJageiIqUgY/BoS0BdpeLk4PlluEyrkdrBvzgRX1lhBbqa0Afn4KOP6T8n6hPD60jShU9n/JIjkCGbsdXl7XuZPdNn3nTmi3VuxZZczJtjvGHZBQIQiC8CT6EHHZjyp8WjRKnimOCIwCHtwH3PWrOGVUlsOqw3a+Kx73+TigIr/+e6+6E/jrI+Cbafb7sg+JEZXIjvJnUoracdPBgAHKfj/6Ll0QNplFDQ1ZJFQIgiCaN0KjQqJlogsCblvNXs50jvbTM/O9YEurgNKLwPKxQPoO8ZiMncDPT9Z9nexDwClJ3oyQlJv+BzN5+0jSj0kfIkZUbKkqdHgLlU6HxI+Vy8b94plRn+GSQosIN0DJtARBEE2FowZ+RMuhw3DXzxFKngvOslYLtlzcU/f5th49NaWA2cSiK9Ul4nahyaPOQUSlnshN0NChUEdEwFQoFzTadmz8JWvXgjebYC4tA282IfGjj8C5ofs1RVQIgiA8zazNQL/pwOhXvT0SwheJZK6vOPiV8v76+kFV2fihlGWzaIpUpLQZIDZGtBUqMZbWB/U41QJAxO23AQACr7zSuk3XqaN1ufTHdSjfuhUV23fA4Ka+QBRRIQiC8DRtB7AXQSghCBVHGKrr3m8rVNbMBnpOEtc7jQbGLxZzU8JsnHQHzgZ+fJCVKNc31FmzoO/WDf79+lm3aZOSoAoKgrm8XD7srGxok5LqvWZ9UESFIAiCILxJRD1CxVgFmBU6bwtUFcvXsw4Cv85ny2kPANNWypN743rKj4/rxd5zj9RtOleWDW79QwhKMEAdLOa5cBoNEpcusTvckOW8RX9dkFAhCIIgCG+iC5J3jp7yFXDda6Ilv9kIVBY4Pl+IqAydB0R1BniTuC84zv5422Ta6C7MKbeqCCi1ERebX2DmdMZa4PBqNj214mZWoSQhoG9f6Lp2lW0zZrunCoiECkEQBEF4G+n0T1wv4Ip7gafSRT+WuhoIVhezd/9wYMoK+b4wB1MvsZKoip8eiOnGli/8JT9uxxvMQffUr2KJMwBcsPdc0YTLPYKUypWrjhxB9dGjymNyAAkVgiAIgvA2UkERaOm47OfPDNoAoFSh87JApaUKxz+MtWzoZWnR0HkMeykx+XNmNDfqZbbebgh7P7tVPKa2UrJcIZ9iuvSP3SXjnluAwMGDETaJ5ccYssUxG4uKkPvW20i/eSLO3XQzqo8fd/x5bCChQhAEQRDept8d7J1TyZtVhrRl77kOohDGGqDA0ksqzNKeYfxiFo2Z+hWgdlAzE9keePggkDaHrQuly4JQyT4MvBwvHm+olPusZNoLFW1yMpKWLkHwSObGbLREVKpPnMCptEEoWCLmsRR9/Y3yuBQgoUIQBEEQ3iZ5EHD7GuCebfLtnUay990fiI0FBX6ZD7wYw4ziACDGkiOi9nO9VUPyINbiofg8UHgO2PmefH9ZDnBU0tsn84DDBF+/eCZwDJYclaJv7EVJ5e/rnO4WTUKFIAiCIHyB9tcA8b3k23pMZHkqFXnAGx1YpANg0zC7JZ2MQ9qwqZ+GogtifYcAFlXR2zQh3GbjAVRTChSdU7yUJo4JFXNpKWq//w9qz6XbHVObW4nM+U85NTQSKgRBEAThq+iCgJ4TxXWh7PjQKvlxgrttYxCmf85tB+BEtMPWEdeCOigQAf37AgDOPPMdKnezxNuEe65F+28+tB5XtnGLU8MioUIQBEEQvkxIG3G5xDLNc2yd/Jg6Ggo6TVwP9n5kNfC3vS+KlaQ09l583vGlHp4Ov0BJ52eOR1D+F9BqS10eFgkVgiAIgvBlpFM6hWeBHW8COUfkx3QY0fj7SAWRwIQPgYH3i+s3LRUN4hxEVABAF2JEu9F5iO1XgvCru6JNWhHUWh7I/tflYZGFPkEQBEH4MkK5ssDm/7MscMC924GLfwP972r8fZSEin84MPoVQKUGco8D3cYD5RaztxIHvXzObgX2fAK1H4+IThVARzVwytIGYPvraDNIj0s7I5weFgkVgiAIgvBlOo4EBsxkpcgH/iduj2zPkm9tE3AbitRmX0CoHhr5orhNMKGrLLQ//tQm5lwr2/abbDUkqRrlmZUoP6NzalgkVAiCIAjCl1GpgbFvseXqYuD4erYsJL+6C46z36ZkwR9giYZUKQiVg187dSuN3lT/QRYoR4UgCIIgmgvhKeJyymD3X//u3+XroQoW/EKUpbLIfl/6H/L1IAWhA0Ddx4FjrgIkVAiCIAiiuRDaVlyO7eH+67fpJ0/MVSnIBH8HEZWaMqDcpr/PjJ+AZ/OAmZvEbfG9oUru7fSQaOqHIAiCIJoLKsnXdkQ7z9xj2NMsMjL4ceX9wtRPbTnrqqyxlEYLHZW1QUC7ocx2P6Idm7qKkzRBNNZAndIezkJChSAIgiCaC93Gs6qflMFMAHiCNv2BeRdEAWKLPhQAB4AHKguAEEtPICGaEhTL+gxJkfYvKs2EJoKqfgiCIAii5REUA8w9Dmj8PXsfRyIFYAIpqiOQf5KVIncdB+xdBmz8D9vvhJW/KjS03mOsxzp9JEEQBEEQ3kcbqJw70pT0sJQgn/wF2PqKKFIAx/4qU75mibg3LYU6LMzpW1FEhSAIgiAI12g7gL3nHgVyj8n3DV+gfE6X64HO5wCOg7q2FuqoSOD0qXpvRREVgiAIgiBcI6Y7ey84A+iC5fv63ub4PItXi0qrRYdff3XqViRUCIIgCIJwjeA4No3Dm4BLez16KxIqBEEQBEG4BseJURUp3Sa4/VYkVAiCIAiCcJ3YbvL1Gz8Gxr7t9tuQUCEIgiAIwnU6jhSXVRqg9xTRDM6NkFAhCIIgCMJ1Ol4rLpuNHrsNCRWCIAiCIBrGyBfZ+5AnPXYL8lEhCIIgCKJhpD0AJF8JxHSr/9gGQkKFIAiCIIiGwXGs47IHoakfgiAIgiB8FhIqBEEQBEH4LCRUCIIgCILwWUioEARBEAThs5BQIQiCIAjCZ/GoUPnpp59wxRVXwN/fH+Hh4ZgwYYJsf0ZGBsaMGYOAgADExMTgiSeegNHoOdMYgiAIgiCaFx4rT/7+++9x99134+WXX8Y111wDo9GIw4cPW/ebTCaMGTMGcXFx2LlzJ7KysnDHHXfAz88PL7/8sqeGRRAEQRBEM4LjeZ5390WNRiNSUlLw/PPPY+bMmYrH/Pzzzxg7diwyMzMRGxsLAPjoo4/w1FNPIS8vD1qt1ql7lZaWIjQ0FCUlJQgJCXHbZyAIgiAIwnM4+/3tkamff/75B5cuXYJKpULfvn0RHx+P6667ThZR2bVrF3r27GkVKQAwatQolJaW4siRIw6vXVNTg9LSUtmLIAiCIIiWiUeEytmzZwEACxcuxLPPPov169cjPDwcV199NQoLCwEA2dnZMpECwLqenZ3t8NqvvPIKQkNDra/ExERPfASCIAiCIHwAl4TKvHnzwHFcna/jx4/DbDYDAJ555hncfPPN6N+/Pz777DNwHIdVq1Y1asDz589HSUmJ9XXhwoVGXY8gCIIgCN/FpWTauXPnYsaMGXUek5qaiqysLABAt25ikyKdTofU1FRkZGQAAOLi4vD333/Lzs3JybHuc4ROp4NOp3Nl2ARBEARBNFNcEirR0dGIjo6u97j+/ftDp9PhxIkTuOqqqwAABoMB6enpSE5OBgCkpaXhpZdeQm5uLmJiYgAAGzduREhIiEzgEARBEATRevFIeXJISAhmz56N5557DomJiUhOTsbrr78OAJg0aRIAYOTIkejWrRtuv/12vPbaa8jOzsazzz6LOXPmuBQxEYqWKKmWIAiCIJoPwvd2vcXHvIeora3l586dy8fExPDBwcH8iBEj+MOHD8uOSU9P56+77jre39+fj4qK4ufOncsbDAaX7nPmzBkeAL3oRS960Yte9GqGrzNnztT5Pe8RH5WmpLi4GOHh4cjIyEBoaKjL51922WXYs2dPg+5N5zaPezfHc0tLS5GYmIgLFy40yB+oofdujj8rb967OZ7rrXs3x2e6Od7Xm+e6en5JSQmSkpJQVFSEsLAwh8d5zJm2qVCpWOFSaGhogx5+tVrdYKM4Ord53Ls5nisQEhLSpM91c/1ZNcdxt8afF9C8nunmeF9vntvQ84XvcYf7GzyaFsKcOXPo3CY415v3bo7nNpaG3ru5/qya47hb48+rMXjjmW6O9/Xmue44X4lmP/VDFvpES4Sea6KlQc80YYtXLfSbEp1Oh+eee468VYgWBT3XREuDnmnCFmefiWYfUSEIgiAIouXS7CMqBEEQBEG0XEioEI2C4zisXbvW28MgCLdCzzXR0mjOzzQJFULGjBkzMGHCBG8PgyDcCj3XREujNT3TJFQIgiAIgvBZfF6otCbV6GukpKRg0aJFsm19+vTBwoULvTKelgI9096FnmvPQM+192jpz7TPCxWCIAiCIFovzUqo/PLLL7jqqqsQFhaGyMhIjB07FmfOnLHuT09PB8dxWL16NYYNG4aAgAD07t0bu3bt8uKoCcIx9EwTLRF6rgl30qyESkVFBR577DHs3bsXmzdvhkqlwo033giz2Sw77plnnsHjjz+OAwcOoFOnTpg6dSqMRqOXRk0QjqFnmmiJ0HNNuJNm1ZTw5ptvlq0vW7YM0dHROHr0KHr06GHd/vjjj2PMmDEAgOeffx7du3fH6dOn0aVLlyYdb3NHpVLB1g/QYDB4aTQtE3qmmx56rj0PPddNS0t/pptVROXUqVOYOnUqUlNTERISgpSUFABARkaG7LhevXpZl+Pj4wEAubm5TTbOlkJ0dDSysrKs66WlpTh37pwXR9TyoGe66aHn2vPQc920tPRnullFVMaNG4fk5GQsXboUCQkJMJvN6NGjB2pra2XH+fn5WZc5jgMAu5AjUT/XXHMNli9fjnHjxiEsLAwLFiyAWq329rBaFPRMNz30XHseeq6blpb+TDcboVJQUIATJ05g6dKlGDx4MADgjz/+8PKoWh5msxkaDXss5s+fj3PnzmHs2LEIDQ3FCy+80KJUurehZ7rpoOe66aDnumloTc90sxEq4eHhiIyMxJIlSxAfH4+MjAzMmzfP28NqceTm5qJDhw4AgJCQEHzzzTey/dOnT5etU0/LhkPPdNNBz3XTQc9109Canmmfz1ERVKNKpcI333yDffv2oUePHnj00Ufx+uuve3t4LYaioiKsX78eW7duxYgRI7w9nBYNPdNNBz3XTQc9101Da3ymfT6iIlWNI0aMwNGjR2X7pSoxJSXFTjWGhYU1ayXZVNx1113Ys2cP5s6di/Hjx3t7OC0aeqabDnqumw56rpuG1vhM+6xQKSoqwp9//omtW7di9uzZ3h5Oi2fNmjXeHkKLh57ppoeea89Dz3XT0hqfaZ8VKq1RNRItG3qmiZYIPdeEp+F4irURBEEQBOGj+HwyLUEQBEEQrRcSKgRBEARB+CwkVAiCIAiC8Fm8LlReeeUVXHbZZQgODkZMTAwmTJiAEydOyI6prq7GnDlzEBkZiaCgINx8883IycmRHZORkYExY8YgICAAMTExeOKJJ+y6cG7duhX9+vWDTqdDhw4dsHz5ck9/PKKV0lTPdVZWFqZNm4ZOnTpBpVLhkUceaYqPR7RCmuqZXr16Na699lpER0cjJCQEaWlp+PXXX5vkMxK+ideFyrZt2zBnzhzs3r0bGzduhMFgwMiRI1FRUWE95tFHH8W6deuwatUqbNu2DZmZmbjpppus+00mE8aMGYPa2lrs3LkTn3/+OZYvX44FCxZYjzl37hzGjBmDYcOG4cCBA3jkkUcwa9Ys+gUgPEJTPdc1NTWIjo7Gs88+i969ezfpZyRaF031TG/fvh3XXnstNmzYgH379mHYsGEYN24c9u/f36Sfl/AheB8jNzeXB8Bv27aN53meLy4u5v38/PhVq1ZZjzl27BgPgN+1axfP8zy/YcMGXqVS8dnZ2dZjPvzwQz4kJISvqanheZ7nn3zySb579+6ye91yyy38qFGjPP2RCMJjz7WUoUOH8g8//LBnPwhBWGiKZ1qgW7du/PPPP++hT0L4Ol6PqNhSUlICAIiIiAAA7Nu3DwaDQWYV3KVLFyQlJWHXrl0AgF27dqFnz56IjY21HjNq1CiUlpbiyJEj1mNs7YZHjRplvQZBeBJPPdcE4S2a6pk2m80oKyuz3odoffiUUDGbzXjkkUdw5ZVXokePHgCA7OxsaLVahIWFyY6NdzwGZwAAAsNJREFUjY1Fdna29Rjpgy/sF/bVdUxpaSmqqqo88XEIAoBnn2uC8AZN+Uy/8cYbKC8vx+TJk938KYjmgk85086ZMweHDx+mluBEi4Kea6Kl0VTP9FdffYXnn38eP/zwA2JiYjx6L8J38ZmIygMPPID169fj999/R9u2ba3b4+LiUFtbi+LiYtnxOTk5iIuLsx5jm1kurNd3TEhICPz9/d39cQgCgOefa4Joaprqmf7mm28wa9YsfPvtt62mSzChjNeFCs/zeOCBB7BmzRps2bIF7dq1k+3v378//Pz8sHnzZuu2EydOICMjA2lpaQCAtLQ0HDp0CLm5udZjNm7ciJCQEHTr1s16jPQawjHCNQjCnTTVc00QTUVTPtNff/017rzzTnz99dcYM2aMhz8Z4fN4OZmXv++++/jQ0FB+69atfFZWlvVVWVlpPWb27Nl8UlISv2XLFn7v3r18Wloan5aWZt1vNBr5Hj168CNHjuQPHDjA//LLL3x0dDQ/f/586zFnz57lAwIC+CeeeII/duwYv3jxYl6tVvO//PJLk35eonXQVM81z/P8/v37+f379/P9+/fnp02bxu/fv58/cuRIk31WonXQVM/0ihUreI1Gwy9evFh2n+Li4ib9vITv4HWhAkDx9dlnn1mPqaqq4u+//34+PDycDwgI4G+88UY+KytLdp309HT+uuuu4/39/fmoqCh+7ty5vMFgkB3z+++/83369OG1Wi2fmpoquwdBuJOmfK6V7pOcnNwEn5JoTTTVMz106FDF+0yfPr2JPinha1D3ZIIgCIIgfBav56gQBEEQBEE4goQKQRAEQRA+CwkVgiAIgiB8FhIqBEEQBEH4LCRUCIIgCILwWUioEARBEAThs5BQIQiCIAjCZyGhQhAEQRCEz0JChSAIgiAIn4WECkEQBEEQPgsJFYIgCIIgfJb/B7J9UVasZdpkAAAAAElFTkSuQmCC",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index,\n",
" columns=['A', 'B', 'C', 'D'])\n",
"df = df.cumsum()\n",
"\n",
"df.plot()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "c6INJ-xFEh-p"
},
"source": [
"## Getting data in/out"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "MTynkj_3Eh-p"
},
"source": [
"### CSV"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"id": "Vlt2h9qbEh-p"
},
"outputs": [],
"source": [
"df.to_csv('foo.csv')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "l42FI1jQEh-p",
"outputId": "f78f18db-b3ed-4892-8486-59ed890faa3d"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Unnamed: 0 \n",
" A \n",
" B \n",
" C \n",
" D \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2000-01-01 \n",
" 0.725139 \n",
" 0.963259 \n",
" 0.049076 \n",
" -0.736992 \n",
" \n",
" \n",
" 1 \n",
" 2000-01-02 \n",
" 2.562265 \n",
" 0.109562 \n",
" 1.103480 \n",
" 0.728580 \n",
" \n",
" \n",
" 2 \n",
" 2000-01-03 \n",
" 3.497459 \n",
" -0.995202 \n",
" 0.534811 \n",
" 0.021265 \n",
" \n",
" \n",
" 3 \n",
" 2000-01-04 \n",
" 4.665594 \n",
" -0.285106 \n",
" -0.847259 \n",
" -0.413688 \n",
" \n",
" \n",
" 4 \n",
" 2000-01-05 \n",
" 4.902819 \n",
" -1.076785 \n",
" 0.535897 \n",
" -0.042710 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"text/plain": [
" Unnamed: 0 A B C D\n",
"0 2000-01-01 0.725139 0.963259 0.049076 -0.736992\n",
"1 2000-01-02 2.562265 0.109562 1.103480 0.728580\n",
"2 2000-01-03 3.497459 -0.995202 0.534811 0.021265\n",
"3 2000-01-04 4.665594 -0.285106 -0.847259 -0.413688\n",
"4 2000-01-05 4.902819 -1.076785 0.535897 -0.042710"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.read_csv('foo.csv').head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "qoG_k8u6ItSW"
},
"source": [
"# Your Turn!\n",
"\n",
"Use Pandas to solve these problems."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "IqQVTc7yI0Sh"
},
"source": [
"We have already imported pandas. Now we have a CSV file that we would like to read into a pandas data frame and perform operations on it. We will be using a database of diamonds.\n",
"\n",
" 0) First, read the file. It is located at https://raw.githubusercontent.com/mwaskom/seaborn-data/master/diamonds.csv"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"id": "NxWY-FP0Eh-q"
},
"outputs": [],
"source": [
"# YOUR CODE HERE"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "HKAh7QFKJCFs"
},
"source": [
" 1) Sample 10 random diamonds and display them."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"id": "931dKA4mJCFx"
},
"outputs": [],
"source": [
"# YOUR CODE HERE"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Ey-MHykLJTBx"
},
"source": [
" 2) Display some statistics (mean, standard deviation, quartiles) about the numerical columns in the data"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "kt04yN-JJPFO"
},
"outputs": [],
"source": [
"# YOUR CODE HERE"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "hzv3A-pjJ5Ak"
},
"source": [
" 3) For the non-numerical columns, we would like to count how many of one value we have. In other words, pick one of (cut, color, clarity) and count the number of values. You can also display a histogram to get a visual of the distributions."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "P_qKjM_cKTEJ"
},
"outputs": [],
"source": [
"# YOUR CODE HERE"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "xVWyyjzuLXeT"
},
"source": [
"Let's say we're building an online store. We want to filter the diamonds based on certain qualities.\n",
"\n",
" 4) Drop the depth, table and x, y, z columns from the data frame."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "p7jM_GtOLWxQ"
},
"outputs": [],
"source": [
"# YOUR CODE HERE"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "3U81Fhq6Ltla"
},
"source": [
" 5) Add a new column named `cut_index`. This will be the index of the cut based on the following list:\n",
"\n",
"`[Fair, Good, Very Good, Premium, Ideal]`\n",
"\n",
"So Fair would be 0, Good 1, etc."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "forlwMr_LtQn"
},
"outputs": [],
"source": [
"# YOUR CODE HERE"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "-A81MnrJLifg"
},
"source": [
" 6) Inflation took on and the prices are rising! Use the `carat` and `cut_index` to calculate a new price. Use the formula:\n",
"\n",
"`new_price = old_price * (1 + cut_index / 10)`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "8ESqxh1AKmy0"
},
"outputs": [],
"source": [
"# YOUR CODE HERE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Submitting\n",
"\n",
"To submit, download the file as `.ipynb` and upload it to the correct assignment on Gradescope."
]
}
],
"metadata": {
"colab": {
"collapsed_sections": [
"Ah-TOWidEh9g",
"8P4x0WpTEh9o",
"hJsbATBTEh9x",
"i4P2WK7-Eh96",
"diX599N6Eh97",
"TUYkkA7MEh-B",
"oBBFywhwEh-I",
"SvKUNsEjEh-N",
"vo085nBiEh-P",
"AMk33NUNEh-T",
"nOT7pKc3Eh-V",
"Ez3tbk9_Eh-W",
"9ABOZxSnEh-b",
"4wgZyifgEh-g",
"LqE0sKNSEh-h",
"wIQur8N_Eh-i",
"UDWQ0678Eh-i",
"Uy7qeZbKEh-k",
"gpBOBSSGEh-m",
"8WlageZyEh-n",
"KQ6PfWSwEh-o",
"c6INJ-xFEh-p",
"MTynkj_3Eh-p"
],
"provenance": []
},
"kernelspec": {
"display_name": "Python 3",
"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.7.1"
}
},
"nbformat": 4,
"nbformat_minor": 0
}