Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"from math import floor, ceil\n",
"from matplotlib import path\n",
"from matplotlib import pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Some useful tools/numbers we have of the time\n",
"start_time = 1404360000\n",
"end_time = 1405828798\n",
"\n",
"def time_to_index(tt, st = 1404360000, divisor=60):\n",
" return floor((tt-st)/divisor)\n",
"\n",
"NN = ceil((end_time - start_time)/60)\n",
"\n",
"# Our combined dataframes\n",
"# Index on `id`. For a given DataFrame.loc[id], the values will be sorted by time / pickup time\n",
"\n",
"OD = pd.read_pickle(\"./data/OD_combined.pkl\")\n",
"GPS = pd.read_pickle(\"./data/GPS_combined.pkl\")\n",
"\n",
"def _from_traffic_dataframe_get_dict_of_ids_to_dataframe(DF, time_key=\"time\"):\n",
" IDs = list(set(DF.index))\n",
" \n",
" dict_of_ids_to_dataframe = {}\n",
" \n",
" for key in IDs:\n",
" try:\n",
" dict_of_ids_to_dataframe[key] = DF.loc[key].set_index(keys=time_key)\n",
" except:\n",
" # If it doesn't work, it means the key is only associated with one entry.\n",
" # So, just don't include it.\n",
" pass\n",
" \n",
" return dict_of_ids_to_dataframe\n",
"\n",
"# Get IDs\n",
"OD_IDs = set(OD.index)\n",
"GPS_IDs = set(GPS.index)\n",
"IDs = OD_IDs.intersection(GPS_IDs)\n",
"\n",
"# Dict of ID to dataframe\n",
"OD_ddf = _from_traffic_dataframe_get_dict_of_ids_to_dataframe(OD, time_key=\"ptime\")\n",
"GPS_ddf = _from_traffic_dataframe_get_dict_of_ids_to_dataframe(GPS, time_key=\"time\")\n",
"\n",
"# Warning: Will take about 4.2GB"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"13398\n",
"664\n",
"645\n"
]
}
],
"source": [
"print(len(OD_IDs))\n",
"print(len(GPS_IDs))\n",
"print(len(IDs))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7f48000e28d0>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAD4CAYAAADlwTGnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOy9d3Rc133v+9nTewFm0BtBsHcSJEVJpERapHq1ZC05smKr2M69yXPy4hu/t3LzYt885107xXHsxLLiGttSIkuxJUsUJZmiREqiKLH3BhC9l+l9znl/DOYQjR0kCHJ/1uICODhzZs+A/P32/pXvT6iqikQikUiuP3STvQCJRCKRTA7SAUgkEsl1inQAEolEcp0iHYBEIpFcp0gHIJFIJNcphslewIXg8/nUmpqayV6GRCKRTCl27drVp6qqf/TjU8oB1NTUsHPnzslehkQikUwphBDN4z0uQ0ASiURynSIdgEQikVynSAcgkUgk1ynSAUgkEsl1inQAEolEcp0iHYBEIpFcp0gHIJFIJNcp0gFIJBLJdYp0ABLJFCObzdLX1zfZy5BcA5zTAQghfiKE6BFCHBz22CNCiENCCEUIUT/Oc6qEEBEhxFfPcM8fCyH2CSH2CyFeEkI4Lu1tSCTXD7u7uni2p4e9vb2TvRTJFOd8TgA/A+4Y9dhB4CFg6xme8x3gjbPc889UVV2kqupCoAX44/NYh0QiAXb7fGydO5cdTieNjY1kMpnJXpJkinJOLSBVVbcKIWpGPXYEQAgx5nohxANAIxA9yz1DQ9cKwArIuZQSyXlyl9mMEVhvsVBSWUlPTw9CCBwOB06nc7KXJ5lCTGgOQAhhB74GfOM8rv0p0AXMBr53luu+KITYKYTY2SuPvBIJlcCTQ1+TySRGoxEhBDqdTOlJLoyJVgP9BvAdVVUj450OhqOq6heEEHpyxv9R4KdnuO454DmA+vp6eVKQXNfEYjFCoRDZbBYAu92Ow+HAarVO8sokU5GJdgArgYeFEN8GPIAihEioqvr98S5WVTUrhPhP4H9wBgcgkVzPZDIZYrEYkDP+RqMRv9+PXq+f5JVJrgUm1AGoqro6/70Q4utAZLTxH4r7T1dV9eTQ9/cCRydyHRLJVEVVVaLRKIqiAGAwGLBYLMRiMQoKCjCZTJO8Qsm1xDkdgBDiBeBWwCeEaAP+GhggF7rxA68LIfaqqnr7Oe6zEXiaXNz/50IIFyCAfcAfXcqbkEimMqlUikQiof3d4XCg0+lQVZVgMIiqqng8nklcoeRaRajq1Amr19fXq3IimORaIJFIkEqlADCZTFgslhE/j0ajZDIZXC7XuNV2EsmFIITYparqmJ6tKTUSUiK5Vkin07hcrjGPp1IpYrEYdrsdu90+CSuTXE9IByCRXAXkwz0mk0mGeyRXDOkAJJIrjKqqWpIXIBKJoCgKbrdbhnskVxTpACSSK4wQAr1eTzgcRlEU7HY7BoP8ryi58sjWQYlkEnA4HHR2duJyuaTxl0wa8l+eRHKFyCd4Q6EQVquV2tpaQqEQbrd7spcmuU6RDkAiucxEIhGSySSZTAa9Xo/H46G/v59MJkNpaelkL09yHSMdgERyGUin08TjceLxOAaDgZaWFgYGBrBYLFgsFux2O4ODgwQCAebMmTPZy5Vcp0gHIJFMIJFIhGAwSCKRwGKxoCgKiqIwc+ZMUqmUJuVgsVjo6+ujr6+PcDgsZZwlk4J0ABLJJRKLxWhtbUVRFBwOB263G5fLhaqqWK1WjEYjADabjc7OToQQRCIRfD4fxcXFk7x6yfWMdAASyUUSDodpaWnBZrNRV1eHTqcjHA4DOWM/WrFTCEFZWdlkLFUiGRfpACSSCyAvz9zX14der2f27Nnajh7A6XTKZi7JlEE6AInkPIjFYmQyGZLJJPF4nOLiYsxmM9FoFCHEuLo+EsnVjnQAEskZUFWVY8eOUVhYiM1m02SZLRYLzc3NxGIxSktLZVhHMmWRDkByXTN8+MpwIpEIp06dora2lmQyOeJxk8lEUVERHo+HWCzG8ePHURQFl8tFYWHhGGlnieRqRToAyXVFPpQDuaTseMnajo4OotEoc+bM0QauZzIZLBYLZrMZVVXJZDKkUqkRid0TJ04QCASora2VM3olUwLpACTXNKqqapU5kKvOsdls416bSqVobm5Gr9dTVFSEEAJFUbBarSO0+YUQGI1Grbwzz+LFiwHQ6aTElmRqIB2A5JpDVVUikQiqqiKEOK/KnIGBAbq7u3G5XFgsFoQQ2mjG80UafslUQzoAyTVDXlcfOG/jraoqp06dIh6P43Q6tT+ylFNyPSAdgGRKoygK3d3dJBIJqqqqxsTzz0YkEuHEiRMYjUYqKirkJC7JdYd0AJIpSTKZJJlMIoSgpKSERCJBV1cXcH4dt0eOHCEajWplnHLHL7kekQ5AMmUIBAKaaFoqlRrRfGW1WikvLz+v+xw9ehSXy0VFRYUUYZNc10gHILmqGV7FE4vFcLvdlzREpbOzE5/Ph91ul6WakuseWbYguWpJJpN0dnbidDpxuVyawmY+1HOhhA6HSPx7AnfILY2/RIJ0AJKrGLPZTHFxMaFQiFgshs1mIxaL4XA4CAQCF3SvWCxG/+/6KX+7HOO7xnM/QSK5DpAhIMlVjV6vx+12k06nCYfDpFIpysrKaG5uJp1O4/f7z3mPZDJJLBbDvsGOyW+C9Vdg4RLJFECeACRTAqPRqMX9Q6EQ2dYslhct0Hr25+UVPGOxGP7FfngSqLz865VIpgLSAUimFGazGbfbTe+mXpyvOOHtM1+bTyAnEgl8Pp8s9ZRIRiFDQJIph6qq6FfpYTpnDecEAgEMBgPpdPqM+j8SyfWMdACSKUcymcRSbYF7znxNIBBAURQSiQSFhYVXbnESyRTinCEgIcRPhBA9QoiDwx57RAhxSAihCCHqx3lOlRAiIoT46hnu+SshxDEhxMGh+8uyDMl5k0qlxihxDicQCBCPx9HpdPh8vguSh5BIrifOJwfwM+COUY8dBB4Ctp7hOd8B3jjLPX8FzAYWAFbg6fNYh0SC0Wikp6eHgoKCcX8+ODhIJBLBbrfj9Xpl3F8iOQvndACqqm4FBkY9dkRV1WPjXS+EeABoBA6d5Z4b1SGAj4GKC1q15LrFYrHQ2to6bvnn4OAgoVCIgoICOaP3OkJV1QvuC5HkmNAcgBDCDnyNXGpu3PDPqOuNwOeAr5zlmi8CXwSoqqqamIVKpixCCE3nfziDg4MEAgHKy8sxmUyTtDrJlSKZTNLX16f9/Xz6QSRjmegk8DeA76iqGjnPo/e/AltVVd12pgtUVX0OeA6gvr5enZBVSq4pAoEAgUCAioqKs+YGJNcG/f39xONxCgoKZHXXJTLRDmAl8LAQ4tuAB1CEEAlVVb8/+kIhxF8DfuBLE7wGybVMK6gbVZgBVOYavXp6eqiurpbG/zqgu7sbi8VCRYWMGk8EE+oAVFVdnf9eCPF1IHIG4/80cDvwKVVVlYlcg+Ta5sQvT1D8YTHMBZ6E9vZ2SktLMZvNk700yWWmt7cXk8l00UqwkrGcTxnoC8B2YJYQok0I8ZQQ4kEhRBuwCnhdCPHmedxnoxAiP6XjWaAY2C6E2CuE+H8u4T1IriMG5g0w7XPTYD309fXJGv/rgMZ0mr9raaHXbMbr9U72cq4pznkCUFX1sTP86DfneN7XR/39rmHfywY0yUWRLkiTXpMmbU+T7Eni8/m0eQGSa4t0Ok1PTw+v6PW8VVFBoU7H3Mle1DWGNMSSKcUNN9zA5s2bMZlM3HrrrZO9HMllIJPJ0N3djV6vp7S0lId1OtxIEdfLgRSDk0wpDAYDixYtImA28+g//AO7u7vJtZNIrgUikQhdXV2UlJRQUlKCTqejEiniermQJwDJlMPv99Nhs9FZUcFPPvyQ2e3tlJWV8cADD6DTyT3NVCSTyRCNRrV5D/L3eGWQDkAy5dDr9dzncqHT61m3YQOl2SwtLS388z//M6oowDzrIe5d6KCy7Nz3kkw+8XicbDaLoigUFhZK438FkZ+0ZEpSCXzZZqM0m8XlcjFv3jyeeuopeo11/HDfJn765gFSqdRkL1NyDiKRCIqikE6ncbvd0vhfYeQJQDJlEUJokhBCCBRF4cv3r8L5XgPGrq387d++DKDtKl3Tp3PY6eShadMoH7qHz+eT0hGTQDqdJhqN4nA4CIfDeDweKdw3CUgHILkmyOsDlRZluKswyrFtDmbe/wA1N9Tg8XgA+Anw+61bmebzsVwa/UkjHA4jhMDtdjM4OChVWycR6QAkU5p8BVAoFMLlctHZ2Yluhw7/J34W1S8ioAYYHBwk6HIxENJze2AaNzbEaHf1jjA6FovljBLTkokhnU4Ti8Ww2+0oikIwGJTGf5KRDkAy5VEURQsHmc1m9rr2suKhFXQt6iIZTFJTU8PPurp4tTXNfZ9AZYvA9d/LpOG5goTD4VwYzuUiFAphNBq1k5lk8pAOQDKl0el0BINBPB4PyWSSRCJBQ6CB6Rumo9gVDGkDx44do16vJ5xKcN+MWtxrbSBt/xUhlUoRi8U0Ge9wOIzL5ZLO9ypBOgDJlMZqtRIOh+nu7ubnP/858Xic+vp6MpkMoVAIv99PUVERlUYjq+tscNNkr/jykslkiMfjIx4LhUKEQiHKy8tHPJ43wjqdDpvNdmaj3Aq8Ta4Vd5xurGw2SzqdJp1Oa4+pqko0GkWn02G1WnE4HLLC5ypEOgDJlOa1115jz549AKxdu5aqqip8Ph8WiwWDwXBN7TRVVSWRSJDJZM54jV6vR6fTMTAwgKIoJJNJAGbPnj3uZ5HNZolEInR2dmqJ9HxeRbv+RVBfUWEQDI8bxmjwCyFIpVLo9XotFCeEoKioSM5jvsqRDkAy5Ugmk7z88sscP34cgD/8wz/E7XZjNBpRVRWn0znJK7w4FEUhGo2OK22RN8YWiwWr1ao9rqoqBw4cYMeOHQQCAaLRKABBoMvrpWRwkC8++iiRSGTc19TpdDidzrNLLH8G8ALrIVOYO2HknUV/fz/JZBKn00m/1crHHg8bhJCyDVME6QAkU4ZAIEBrayuvvvoqPp+PBx54gLq6OhwOB5DbzXZ3d2vXm0wmLBbLZC33rKRSKRKJxIgdt06nw263nzFU0t3dzZtvvsnBgwdHPF5QUMDKlSvxeDy43W6Kior4qRD8/vnncfp8VFRU4HA4Lv40lBfjAQwYcDqdWljJ5/Npn/8m4D/JpVeevLhXklxhxFQS0qqvr1d37tw52cuQXGHS6TTd3d2k02l+8YtfsHTpUhYvXoxOp6Os7LTeQygUwul0aoYub2Tz2O32SQlJjF4HgNFoHLGTz9Pd3c2RI0fYvXs3oVBozM9XrVrFihUrztk4lQ/bd//wh5ijUZ566ilUVdXKMC9lqEo8HiccDlNQUIDBcHoPeY5UgWQSEULsUlW1fvTj8gQguaro7OzEbrdjtVpRFIVEIkEsFsNkMrF//37cbje33HILiqJgNpuJx+MjDOlwo2gymUZ0+UajUbLZLJCLldvt9glf/5mMfb788cCBA6TTaZpjMf7r44+pBUab4pkzZ3LnnXeeMW5/Pmib9i99ic2bN/Pss8/yxBNPoCjKJTlBVVXp6emhoqJizH2GHRQkUwTpACSTTigUYmBggGAwSGVlJUIIAoEAwIjYtaIolJaWkkqlSKfT6HQ6zahbLBa6DAZe4sw70OEGP5vNjthhWyyWC5aEGG7sI5EIe/bs4dChQ8RisTM+p7a2FpPJxE6rlchf/AULbLYJNZqZTIauri4AbWh6MpmkpKQEi8VyyZILgYMBfO/70N+jl9v8awDpACRXnHg8TnNzsyYJ4HK5MJlM+Hw+rRvXZrPR09OD3W6nd38vpk9M6Mv1HG48zOHDh0/fLAg0ArWwxw0HgRcNBtxWK/UeD7ctXUpRUdGYEki9Xo/L5dL+nkgkcg6hDdgCznudpEvSJBIJtm3bxieffDLi9YJ10OhkxA6+traWO+64g5qaGkwmE2az+YzG9iZOh0smEoPBQEVFBcFgkHQ6TXt7Ox9//DHr168nkUjQ19eHwWDAaDSSSCRIpVJ4vd5xw1HjEd4UpurtKjAjt/vXANIBSK4YwWCQjo4Okslcd+7s2bMBiMVi6HQ6EicTbPnuFt5Lv3faqgaBLcAgFK0uYtEtizAfMrPgsQWYakx4X/Gi7Fc44T3B3U8V8F9NTfTHYnwcj2MfGCD6yiujFgHBVmgsg9oOcFcyMgazh5wXeWvIyA9AbQHU1hRSV1dH5o0Mg/0Gfl6fos0e4KZP3coXq904nc4LCq1cSrgkFArR2dmp/V0IQVdXF9lslmQySW9vr9ZspSgKwTBs76zCZFUpL8nV6ycSCQoKCjCbzef1msFgkEAgQOG9hVCIHM91jSAdgOSKEA6HGRgYoLS0VJMAOHbsGG+88QaJRILuRIJD7UAXrHA7WLZmOkVFRVjfslJtrWZg+gCZJzNYPrHg2Otgv2E/27Lb0B/WU+2v5oZbbsAYDvO3N95ImxC8parcHItREIvxL//yL6cX0ghdeOhYtox5qoHp4ZNYbrQw49Zb2VlYyO1dOio3AevhueMpPmzbQ0VrO8XFGaZNm0b63jTvWwfpMEZZYFnNuu0mGjINOBwOvF4vFovljAnei0VVVSKRiFYtZDAYmDVrFpALZQ0MDDBz5sxxn6soCi2GNXzrjX/mNyv/J/9YZmDlWV4rn8hdGQziGQq/5U9p1dXVuYtmT9Abk4whmUxiNBqvWNOcdACSK4LT6cTpdJJIJHjuuefo6OjAYrGwYsUK0oWF/OWbb9Jx91xMeicPLlnOA+VWIpEIIVOImDPGgHeAzf+ymZQ3BW4oLSzlGdMzJD5J8LLrZZ7f8jwAwfDpXXvrUDvAM888Q1nZkPZPK7R+CJsWZ1hNgvIV8wk6g3zz3XfZWVJCcPp0Hrsj97wVRUbi0VpuXTadRLSBgYEBaubV8IjPh3mbjXvDFlw3hFHDDhzvOhhcNohaopLJZKiurkav12O1Wi8q5j48YS2EGLeMMxAIaPmG4ScCk8lEYWGh9tw5dQLD059j16++w7/e+2esdBlGxO+z2SyNjY0Eg0FeUVXe8XhIlJby30aFzSSXh2w2S0NDAzabDbPZjN/vv2KvLctAJVeEQCDAP/3TPwFw6623UlNTg8PhwGaz8X/+7ne873Ix54478G7ejP399wEttI8b8J/080THEzgfd8KTuTzCiW0nSL2fIjQ3hHO6k1Qqxff/cyctt9zBFwrqeHrt+YdkjoTDvJ1O82BBgWYbw+EwNpuNrq4uBgcHiUajzJ8/H7vdTnNzM7FYLBf2eQl4HZK3J1EfyJVaJluTLOpehP5TeqgY+Vr5U0K+LDPfjRuJRHC5XNhsNmw224gSywuhq6sLRVG0MYsb3W5+qaokD3awcgf81fTF+O7N5WHi8Th6vZ7p06fj8XhkKeckoKoqwWBQa+IzGo0UFRVN6GucqQxUOgDJZaW7u5sf/OAHQK5j1+fzkclkOHI8yPY2IzZ7lO+/9jyzC+dT9/EJZuj8rFj3IN96zMgpm8Kd7e3MO3aM3mO92Bps6Bbmjsb243bWfGkN1jorOp2OnTt3kkgkKCpdyid9XtbXcd4jIZPJpGbs8zIHyWSSZDKplW8CHD58mLq6Onw+HydOnKC6ujpXOTSO1Yw/G2f/T/cTXh1Gd5eOyspKnE6nVt2Ul0uw2Wzo9XocDofWxTwR8hXxeJxMJoPT6aQpm+W1cJiWXV38/mQzq7JRnlhWzsKFCyc0VCWZGOLxOP39/Xg8Hq3J7lKRDkByRWloaOAXv/gFkAtJVFZWkkwmaW9vR1VV9jTDXguEbRAzwuyT8MCbuefuWQJ7V4DXAbebTMwsLqa6upqqqqqcYXs5g/FtI101XbzR9CGNy+FTK2dQ5/WiKAqKogC5sJPVakVVVeLxuGZYVVUdIZpmNpupqKjAaDQysG0A7+tePM94cK91YzKZSKfTtLW1YbVaMZlM2glgzpw5Z/4AhjkFpVyhtbWVvr4+zGYzbrcbVVUpLi4+7yTshRAOhzEYDFj7rARfCfKR5yN61B7MJyppytbw4OxifPfkKoCKi4sn/PUnkmw2q0lJw8WV605FWltbKS0tvehT4GhkI5jksqOqKu+//z6bN28GwOPxUDBrFruLiwl7PCzv7GTt2rU4HA5ONEb5kxd+SdKsULZoDX+i2Fj0SO6fY30JbJk1yOPJRUy70USsIEZzczObN28moNPRVOWmsLYF094Y7R47/Xc+RHqhhblDYwaj0agWQkkmkzgcDqxWq/Ynk8lossT5fgC3250Lwbzt4vjm4wTTQdQCFb1ej81m49SpU8ybN49MJkNTU9O5j+jDynx06Kiurqa6uppIJEJ3dzehUIhoNHp2J3IRn38wGMRut5NIJPjd3/2OxHsJpj8wneVfWY475Eb/jp7UjSk2HT/OYZ+P+202LUKVP5FcLaqd+d9TJpPRJD2CweCIWc+Xq7tbVdXL2jmeTCbPOLNaURQcDseEGf+zIR2A5JJoBd5UFGY1NrL5l78EYNmyZezbt49AIMCWHTvYWVuLzm4noChMs9kYHBxEKEluLVBQli/nizcvY96jp2sx4/E4BX+zh9rtZmzYOFZyjDd//CbBOtjihEE6WTwDllih/FCUwJu/4Lc74BXAAqz2+fj0unWUlpYC0KHTsUlVWRWPUxAMkkwmUVWVQCCAqqr09/eTSqWora2l8EuFrLGuoen+JsqWlBGNRjEajXR3d1NcXEwymdRmD+QF0S4Eh8NBh07HLxsb2VBUxESZ/7wjSyQSbNy4Eb1ez62fv5XixcW50FQBNIWaaKlrwdxnpmX2bN5xuynidDnqaDG6iQpHXQz56WFer5dgMKgJ/I0W+ssny4ef7kav+WJ+TwC9vb1aIj7/umaz+aJPbfmcj6IoZLPZMw7ECYVCV2xYjgwBSS4KRVHo7+/nOydP8sbAADe63USPHsV7pA33SShZWYJ3upcjXV18ODgIwDxyCd22COxMQL0CFe0wWg+hLQI7ozBnAPqngRjU8393fIZdn3fw4ipBDfCXZjOnTpzgJ5s24Zwzhw8qK4lVV+MxGvlCOIzt9dcZGBgATpf2zweWjPNe8jvm/H92yP1H1+v1mM1mUqkU0WiUhQsXsmrVKkpLS7XSzOEGKW+MzpTA7e3tZffu3bxrt7Nj8WIedzguuBcgmUxyKp1ms6qyDijNZnnxxRfp6OigtraWkpIS1qxZo+2Ys9ks0WiU1tZWmpqaWL58OX6/nzYhzprsHV56eqYqpMtFvsPaarUSjUYvuMdiosl/FnB65z5GMvsMzxv983zOB3I9h+8A6xhTJzDhirYyBCS5aMLhsPYPPhAI0NXVRawpRtWpKm5aZMJcUcHBpibebWtjSQjWHbaQdWYxzDLgX7CA9q1bqSwupsxkYrYo4vkdu2jwg33mnXz7pzNQahTE47lac4PBwKNb2zmxfxPhWIZYsZeUp4TXW7LcYuvk9g5YASRVlc06HR8Cf3DLLTxptRIxGvHbbDxaVIT3ySexWq3o9foxOVpVVVEUhVQqNUJbP5vNkkqliMfjpNNpbUe8d+9eXC4X0WiU559/nnA4DOScRL6aJ51Os2bWGma3zcZwp4FYJkZwY5BYfQxKc8ZfVVVuv/125gIzgE8pCqlMhnQ6PWIXmyf/mafTaU3Xf8+ePfx47172pdO8Rc6hbdiwgWeeeWbELjj/O9PpdDgcDnp7e1m6dGnuBNLRgV4Ihqpd6SCXp7HZbFgsFnQ6HaJN4HzbqeUwwuEw/f392u7X4/GMmQswEeQNrF6v105bk40Q4ownkEthO7lTq5XJa6qWDkByTmw2m1ZvnpccVj9Wib4eZbGhhHmz0zyxZw8JwHnzfOqMULSuCEOpgb956y2OAy3d3ZiB6J5WKAQxbx7G6V4Gbx9kv20/YltOFnlgYICS1gCrpy3h06tqeeW4jv2ZbpyxEu6+w8s9Q92tffv6yH58HLLg6Evz6KshwovChO1hGoBeIfhEVakHisgdMhqARHk5JSUl475Pk8mE1WrF6/Wi0+nIZrP09vZSXV2NoijU19ej1+tH6PXnjW5fXx87v72T995+j/Q7Q5OxDoJ9mR3HIzV01tZyk8HA7t270ev13Gy1oppMDFgsWpI6P1FrcHCQbDbLwYMHCYfDRIxGGkwmqqNRKhwOZqxezUeJBLWKQl1fH6dOnaKzsxOv1wtAcyzG7myWm10uZrjdxONxOjs7qaysxGQyjZHFyDuwWCxGKBRCURTUF1WUVxRMQRNFf1qkyXUkEglcLtdlyRMkEgnNGeZLZa9l1o/6OhlIByA5J3q9fuzO537w2DywHn70wo+wtIGlFDx+Gx2zT9LQ0EDX9jiuCEzzwbRSH/eUl9Me3MeaLqjUmdnQfohfdO+jrqGO2PQYen8u4Tq/LMsqUzeht09Qtz1Gj0+lz7KV//iPMi0U4f3Ay6cPFNLmgbu/q+DY78BqsjLzS7mO2H8HdgLVwJ1DS7ZaradDMzuAZ4Evw3itsYlEgt7eXk6ePMmhQ4f4zGc+g8ViGVffR1EUDAYDt//J7dwx/w5YN7R73wL9i/v5odLGxoYG+vR6Nuj1ZDIZkskk6XSaTCaD0WjE4XCQTCbp6OhACIHb7WbJkiW43W5+Z7fTYjBwa3ExTwnBzUBPMsl7DQ384+23j1nPT4CjqkpdXx/VDQ3o9Xpmzpyp6f+0t7fjcDhwOp253b4QY5RT80NgUrfkhPfysxUsFguhUGjC1VTj8TixWAyDwXBV7PqvBFeDeuo5HYAQ4ifAPUCPqqrzhx57BPg6MAdYoarqzlHPqQIOA19XVfXvx7nnHwN/CkwH/Kqq9l3i+5BcaYb+9aqqStsHbcxrhFVfuR9n1x7C4TDpdJrGbgjNX8KXq1bw9D12Xj11il/v28e8dcv4osNBMpFgW80qooNV3G3WUXpzrswvkUjkQhUBwTuP6TAss7F4povHhr18bGYM/RY9n7xqxX8sTawqjfs2tyYwt26ofnrd0PX5ZG80GmVgYADnt5zMeHcGOnRjHEA4HKZ5RzMvfe8lqnhtF0YAACAASURBVNdU88TTT6DT6cadewu5QS4WiwXrXCvMHXajueDCxX9nGjM5HYJKJpP09fWNmf5lt9spLy8fYdBVVeXuSAR9NMrCzk46gKdUlaSq8ldz54472349gBCs9/upHOoqPfD2AazvW/E96INKtGqk4bFsVVVPh3aGfr8mxpZculwu0uk0gUAAu91+yTv1/MnD7XbLvoQrzPmcAH4GfJ/cpirPQeAh4IdneM53gDfOcs8PgNeAd8/j9SVXMbFYLCeaVgC1R15h5tIZFK1YQXd3N+HdjbC9iTeP76e0+Eb+fvM2juuh5ZNdmEqKyKZSvBNPg9jP8a4oK182aaVxfr+fd06F2JlIsrDwHorDgl1Dr6mqaq5p6hYn8aNx2ua14bzFSXe0G3NHrpXeHQ7zILmdZUcmoyXkLBZLTkfnjyFqi2J60oRJNWlG9/Dhw7z44ovo9ur4avirOLyOsYL950k+pOEBHlZVuru7OZrNYjab8fl8lJaWnjOUIoRgjtPJnGEnsC8M/TkTo3eWXV1dbHv9CJbKBazfDpVVp6U5IPd5ZrPZCyo7NBqNeDweotEo8Xh8hLLqhRAMBonFYhQXF1815afXE+f8jauqulUIUTPqsSMwfgZcCPEAuS7+6FnuuedMz5dMHfINVbH6WRw8dozy+fOZccMNvHTiBNVGI/f8wWp+vquBbcZBfrptG85+mOkoZMPdj/FMuYnD7/Zw0vQelp5W1s6fzh/ccYdWzqiqKuG/eY85xsU8cqCGac+YNNkCn8+nraFoRhG3/rdbtfU0NTVpktKQcyTj7lDXgbo2F/seGBigoaGBjRs3AvC1r30Na5/1vPWa8123gFbil0wmyWQymlETQjB9+vQrauTiJ+L0vdKH8w4n+q/dz78d3EeoqpQ/ZWQPgxDiomvO7XZ7TnE0GMRsNl/QCM7Ozk5MJpNWriu58kxoDkAIYQe+Ru6/zVcn6J5fBL4IUFVVNRG3lEwQwWAQt9vNYoOBLmBmR5xv/tWP2FsOXgOs5QheG0wPQHsEgn4d5TqVyn2v8f7PU3ycshCeGWGVZRl1GcFHH32kzQA40tXFXgLM3TbI7zrfIhvJYjQasQwlTQHUZpXI1ghf3/113PPcWONWsoezeFZ4cpLFQ6TTaeLxOA6HA51ONyLs0t7ernUEz549m2QyyYsvvpgziGbIvJMz4vlY+YAQ7FdVFgpBITmnk88t5NdnMBgwm804wg6sO62Y15kx15o1pUe9Xq+FXDKZDNlslmw2q3Uxp9NpUqkUqVRK+xlDr5WPxQ8P3eQTyMPnC6uqivkVMwWbCtBZdax5IoVyYx3LBgc5fPgwhYWFE9YFrNPpcLvdJBIJrRHtbA4lFovR29tLSUnJZemElpw/E50E/gbwHVVVIxO1u1dV9TngOcj1AUzITSWXTCqVwmQyEQgE8DFUX7+9n/lH7XSXW0jddxNV5eXUnjrF+68dpl1tofrepzHfWIYHeLIV7vwQ3nbD+l9AZTFwb64JxuVy8Q/t7cS/VM6MT+DJaYwoVs9kMsRiMaLPRPnJ8Z+wtv4PeO2GTj57ZA7pV09RubwS070mzTAHAgG8Xi+BQEBLMKbTab75zW8CsHz5cm644QbtRGowGLRSz7whMxgM2O12nrdYaAJugBE5ibwxT6VSmhQF/w6pjSmS+iTBwiBdXV2aUYec8dbr9RgMBs0p6HQ6LSGb7wbNOx8Y20Gqqiput1sbQDMikWsH/MB6mOOEmdksMbcb3G76+/tPD7khV91VV1d3SafyfJI4342dn0kwnL6+Pk0tVTL5TLQDWAk8LIT4NuABFCFEQlXV70/w60gmmXg8rkktpNPp3OCWGDx0yzruuqeAnx/5kPiOHWyprqbnwZVkX2zhrhI/MxiKqlRC5aM5R8CnGBNqWSMEXiusX5NzNslwUtvdatO8vgSeZg/vPprkrWQS54JeVq0JYltkw9RvQlEUTQpCCKGFgjo6Onjuuefw+XzcdNNNLFiwAIPBQLYpS9fLXZhvM1O+aHwp5DOV7uXvPyLcdB+5Iu8JlNY8Wx16IpHQHBeQ+x/4yND34Vw57/B69pqamhHPnSjsdrvWi5CvoVdVldbWVjwez4gQnmRymVAHoKrq6vz3QoivAxFp/K89otEoBoOBgYEBFEXJhVAOgf+wn3BZmHBvB0uaQ3Tv6MY8Z5Cb64L09oPvlV8SKNDxP1MpVnm9zCwoQK/XkyhPoDuqQzmsEAqFiNnt/PbUKew+H12Dg2R7e6lYsoQjDgf1QJnBgL5PT2p7isT6BHctLiDdmWRefICKL1ZQXFw8xlBGIhFSqRSHDx/m9ddfZ8OGDaxatSpXZx+JoNfr2fStTaw8uDJX3rho/Pd+QaV7V7jOL78DH4/hMgRnYniFE+ROPRaL5aJOBfkhMtlslubmZm3XfyX0bSTnz/mUgb4A3Ar4hBBtwF8DA8D3yB0wXxdC7FVV9fZz3Gcj8LSqqh1CiP8D+AugBNgvhNioqurTl/ZWJFcCVVVJJpOEQiEcDgednZ20bm+Fg+BTfDhMDmzFtlzseb+OknkldJ/qZtOWY3x+4X388m6VVrOZub29dJw4Qf+CBdzjdpNtakJRch2nv/d62SUEhsJC5i1dykOpFP9y5Ai7SkqwCME8i4Xs5izHXz9OeHqY/W+8QUEwSJteT7/VSsho5LjNxsNz57K4uBi3201XVxctLS1s3boVvV7PtGnTiMVimM252LzNZoOFULKkBNOd157apBDiguv28/MELkYuJn8CCAaDZLNZampqtFxLNBqluLhYFoFcBUgtIMkFEQgECAQCFBUVsWPHDt577z2Cb0JjBh423UD7/S18Eupj9mYjX+h8EMvjFp73bOKDQ23cPL8Sc4lF0+XZfOLECI2eNWvW5IyOw8EWvR7fjBms7umhRFWJejzsLy3lU4qCNxIhdDTEv//wdzQstfHVJx7SyiRVVeV7AwO8lExSf/Agrg8/PON7ue+++zAajUQbo8xtm0vzzGZirhjLly+XJYmXQF4TKZlMIoTQZkDEYjFt5oH8fK8sUgtIcsmkUim6u7uZNm0aL774IidPngSgcSE0ltVxoMxC6X33Ewg5aDnw7ySKEzTOaeSD/W3sLYBkzTS+sE9QUx1mMDjI/JN2KI/it+YE2+qdTrypFLPKyxF79rBhwQKss2Zpce2ZoRDhcJiQqqKr0LGjspvOZXfwViLBdLOZkydP8vLLLzOQzeIFVGDBggWsXr0ao9FIT0+PFgY6cuQIr776au6N7QG1U8V9n5tTdacYHBxk1qxZlJaWXlBZoySXxA8Gg5qAnE6nIxQKYTAYLrpXQHL5kA5Act40Njbi9/v57ne/mxtfFwQaoTYLjp5B3C0h7HON6LpDVFQa2Fq6lTp/HbUN0FteRqBkHq17U3y6L0OJu4R0RxrXOhc/eRJ+uPVjeuLLWenqJaJEaGtro7W1FavVSk9PD/39/RQM5Qx0Oh1GoxE/0LxpEw1OJ38bDmOxWHjkkUcwmUxUVFSMGRyS18pZsGABra2tWuhn+++28+bGN6EfHnnwEWbMmEFbWxuHDh2ipKRkRKhCr9fj9/vlDnaITCYzopTWYrFQUlJCOp2e0AlnksuDdACS86KpqYm//9F/sD0FBQaY1Qm9evB3QsUfPsCnsy46DDtprqxEXV5C+boYnwXeeOMN3JXw7LxP80lxAStqAkzb4CUWj5FKpmB9rkim8Qis3wrqcpXM3RkqKyupqqriyAch/uudNH5rN+7ydiDXf6DT6egF7J/9LFVWK087ndhsNk2sLB6Pa6McIVerbrfbNWNUWlrK/v37qampYe0jaylbWMaePXv44IMPmDdvHrW1tSNUNfO17ZlMZoSEApweHnItz9RVVZXBwUH6+vpGvHedTkd5efkYZdB0Oi13/FMA6QAkZ6W1A/7gf32d/kJIZ+CUEywZUIrL6TH3Y/ck+CD1AT2VxTxc4MPQ2sqiY8eYXVbGR0O7bMKw82evED8a48NVpfzgY1hhsVA+10TL7hiffJigqKOdTYZ9tDe3w78CjdB3vI/3D8HOMjOfM9/C6tUpTSsmFArR9OKLzB8Y4OHlyzGnUiOMTn76V578aMHhmM1motEo7e3tHD16lHg8zl133aX9PF/JArkqomw2i9VqHdO5qqoqXV1dJJNJXrFY+I3ZDBbLpAt9XQqxWIyOjg4ymYzmNL1eL3V1ded1+hk+W0Fy9SIdgOSs/Oo3DexyQkIHVRaYGYYZM2dxV7SKw74g9r2ddFtMzEw5eHVnAmdkD3Oq3PT29ZFOp1m4cCH7ftjEAX8Zd/aU8fEcA/t0OsqB2xwODplMHNXrmbE6yYKWFtZ41/DCX7zAgz0PUigKWfiY4L39Crcs0lNc7CUUCuF0OikvL8cNzDp1CkddHdjtZ61y0XoHhpFOp2ltbeUnL79MI/A/nniCObW14z4/P5w7f7LId+RCzlGUlpaSSqW4NRbDCKwKh2GCh3pcTpLJJC0tLZrhtlqtVFdXX7TQm91uJxqNTqhiqGTikQ5AwuDgIIODgyQSCa1WvKWlhYMHD9L2OjiW5hKqtSkb/+9jqzWtHcvfNaDfYeEh72xeUhL8Pn6S9Y65CNHB4OAg0WiUxsZGGhfCQeUjkjPns+SYnpsLC3lg0SIM8Tjl245wtzKNOa4+cOe0dKgFy0oL4aVhCqpN/PEt5Vr362i1zNtuu02TY7gQEokEQZuNf3z+eXR+P6HPfpYPAgFWZbNnnT6VP1nkS2GHyyKbTCZmqCrVqdRVmyPIzw0Oh8O5PM4QZrOZadOmTVidvtFo1Kp+ZA7g6kWWgV4HqKrKzp076ezsxOfz0X2om32v7WPt42uJ2HIJ187OznxOl/weuBGI74BjJeCNwNoqcA/f1LaRE92vh6AbGgegtmDUNUEIboNGC9R6wD26EG30vMbdwPtQdFcRBfcUoBvQYT5ipnRDKbrSnCRzV1cXg4ODtLS08PnPfx6Hw0EqlcLr9WqyCucywF1dXXzp2Wc5CGxYu5bKkhLuzRZhfaWf0odKsc86v51rvlY+P3nrajN20WiUQCBAJpMhHo9rswacQzmTy7nevLO5XvT9r2ZkGeh1yObNm6msrMRqtfL666+fNvAHwX0Qtvxyy4ghuY3kbHGeg0C5HbwDUN8I7tGDS3uB8NDXCmC8iEcjuE/BkhSwapyf1476+j4wCD0be+ip69EcxJ6WPeMO9P3Zz352to/grORf0rJlCyng5bwz+ogRrzVnzhzuu+++cU8ZBoMBt9utNbGpqjquBs6VpqOjQxNmyzvGK621L4TAZrNpQ92HO+VsNkt/fz9+v3/SP6vrGekArjFeCAb5VmMjd8RiHD9+nGK9nvqhahjNwE+HJWlOW8AhNFscBo4BHogXQXMWdprAeeL0Dl6v15OtHUr02eDQQdgzC+JG+HRpKYlEApPJRHdtN8TBY/VQcGsB/tl+MkP6/AaDgePHj/PQnz2ETqcjHA7j9/j5zi9eoeP5p/jyLFg5qqxGVVWtO7WlpYWSkhItTp0XRjsbqqpy+PBh3nrrLVbMmsXixYspKipCr9cTORqh8zedZG/IEvfEtRGVH3zwAUeOHMHlcvHwww9TWlo6Jjau0+lwuVzaAHFFUc6pijmRxONxUqkUXV1dKIpCaWkpZWVlV+S1z0QikdAGqI+unIJcX0lzczNGo1E7mcicwZVFhoCuISKRCPWvvMHxY4fwqJAPZd9IbkObPwH4yW3a8wY/UFmJp7X19NyTPcBQA21wJWwphEETLI7Dkrqxryt+LThcU82W+R0stqZ4oKiIYDCoSRvD6dh9X1+fppiZn/4FQw5lKAH52xQc08FsVfCgWYwbR84PL49EImPWk59hPFwe2Ww243Q66es7/+FzxpiRwq5CIlURMo6Mttbly5dTUVGB2+2mpKTkjM1i+Y5Yi8UypifhUsnfO5FI0N/fr42rLC4uPmsO40qSV3Y9HxQlpwNls9km/LOSyBDQNYuiKDQ2NvLSSy+RSCRY0gAsmsvnK5bTUHCC5g8/zO3oT4K7Fpa4T4fdAQaBPa2tTE9COgwFcagvAfdQCMSdgrXbobESakcZ/9raWmbOnMmmdzbxmYY6Cuc6+cxj8+k7cIClS5dSV1fHCy+8QH9/P2vXrtW0630+nzaYvaOjg7KyMtLpNCdOnMjVlH9tC/tXfoo/STpZ+eWx7zmvRzRcvCyTydDY2KgJ1FVXV2OxWHC73RgMBkwmE9/73vfw+XxUVFRQU1ODXq/HaDTS29vL3r17ue222+jp6SGZTOL3+7FutJJ5P0OyJkn85jjt7e18dOQIz33yCTe0tTHT58NoNFJWVobf78fj8Yw4geR3s+NVDl0I6XSavqGqqlgsBuScnF6vx2KxMHv27KsyjHIha9LpdJc1V5BIJGRX9zhIBzAFCQQCNDU1kclkeHXrVk4aDMx1Olm+YAFf+fSNeD/x8p7+PRIffsj99fXofq/D1GZCN1OH824nNxiNdCxezG2qyoPPPkvmppvo7o0xONhHT/F0lu9oYdqNXbkJW+834T4KX25bSXtlO8XLinG5XGzbto2KigpcLhcrn16J7VCWz99ciS2dxjltGnq9noGBAfr7+7nhhhvo7u6msLCQyspKrfokP9oRclUjlZWVZLNZYtv28n/9vI7KOyoJfTZnREaXXY6nfLls2TISiQRvvfUWdXV1mhx0KBTi3/7t36ivr8cWseHb58PoMmKttWKz2airq8Pr9VJeXs7MmTNRVZVEIoH6kAoeyN6SJeAIUFhYyL7KSg6+9RZ0dpLs7ARg9+7dTJs2DZMpN4OgtraW4uJiioqKEEKMqRwyGAxjGqfyDA4OakY+f7oxGAwUFhbidrvP+LyLJf9e8870Qh1JJpMhk8mgKIr2+8z/TkefAFRVxWw2YzabtVkIRqPxioTJ+vr6xlSQSaQDmFLk69az2awW5jiSybAnHmfZF77Aep+P/v5+Ou/sZMsPt/DII49gNBqZsXAGYqGA9ZAuSedCGUNNUevaVepO+ripwMpbvgqmB408fW85HmeE7du3E2yGxjIotkRYeN8cautrEUIQa44R/K8gyo0KjQcaKd1Vytylc4kkIhQW5sZxJZNJAD766CO+8pWvaFIMeQeQTCZHGPH8UPKSe0qY1z2Pjk93oIZUiouLtRDBaIaHV/L5Aa/Xy8DAAH6/H71ezw9//WsGli3DVFVFxWsW+l7vo8ZRQ7w6Tk9PD21tbVgGLYj3BLF1sVxCG3JfnwCjzki1rRohBH8E1N14I+sBU3c3P/jBDwA4deqUtqa9e/eOWOOyZcu4+eab8Xq9mM1mMpkMoVBI08tRVZWenh4CgQBOp1MzmmVlZRdlsPIT0PLPHR7mHe9+FovlohPE+SE7QghtoI0QglQqhcPhQFGUESEpi8WC0WjUpp/lw2r5PotzoaqqNi0tHA5rMwfO5hzzzqm9vf2MCfr8uq43pAOYKrTCSz/cyvY5UW7Q25hzpJBd9l1UxGKULltG5fHjvL1nD/39/TQ2NgLw61//esQtDD/PjS3Mj0VUVRX7a3Ee/+4uqtdVs/rrWeKmON0dScI2G8XFxTRygIMzYJ67gs9tWEBfXx9erxdll4L3Iy8F/gLe33mIQPlcFnxYQ82nIgghCAQCBIPB0689NGVLVVVNN0an05HNZslkMiROJmj8j0b0N+lRqhXEtwTl5IaydHV1kclk8Pl8Y3b9iURCcwzHjh0jlUpRWFiIw+Ggv7+f3t5ePh4YoG3lSmZXV5Mp38qsh2bhuNOBv+r0vODOf+zEucmZG+AyqoU3m81qiefhM1aw2fjzP/9z4HTFS77Spa2tjeeff55YLMauXbvYtWuXdr8gYLzlFh5fuBBvWxvBYJCSkhLq6uouaTec/3yvhPCaoihEIhFNl2k0JpMJVVXp7e3Vdt6KopBKpcYMn8nrCZ3vmvPT0s42HCdPPk9is9mIRCLjynjkv+ZDanmHZbfbz1lUMNWRDmCq8Db0W+rZMyNIdauexW8HWbBuARu+uAGv14vRaCRyLIK1xcrBpQd5Y8sbLEwtpPz2cnSlOi3OrigKZrNZm1v7jYP/xMF1s9FND0FHF0VFRTidTkpKSkgmk9T2AgOw2J/kk08+0Qaox3QxKIdgCF5fAW3iP/h5Gu7+MlAN7aUObh2a4VxRUYHVatXm24bDYXbs2EE6nSabzVJeXk7Tj5qYuWMmFRUV7LbvJjusISufL+jr66Ovrw+PxzNix9jW1sa+ffuorKykpKSEqqoqbe5sV1cXix0O5mWz1DU28uGpj6n7bB2iVJBIJDRjFFgcoNRTOu4QeL1ef84d6uiBK263mz/6oz/Sfp7NZmlqaiISifB3v/89B997j2PvvTemsvX222/H7XZTUFCA3W5Hp9OdV71+a2srpaWlly2coiiKlofI7/Tz6xotsTEco9FIQ0ODpv+fN96j34/NZkNRFO0kks1m6e3tHTHAZnioChiR5D8TOp1OM+pjJrYNI5FI4HA48Pl8V20T3+VAOoCpwnq4/0M3+lID7sbt+B9dRJuvjWRTUkusmt83Y/iNgbkPzsVR4ODXP/s1lQWVLPjLBXR3d+PxeLREWygUInIswk6Lm92rm1jy2n6WN4ZpNEBtA7iHlMzcJljSBodnvgvvDVuPG1iSqypqA+JAV/0yeoIRema5aXUEKHe5cAcheTLJB7Ma+ajCyK0GA9GBAWIuF292deHs7SXY309lUR+OOgcdP+1g+vTpdM7pxD0nt/tqymR4J5tlw4CZiufM9B3pY9/9+zhlO4XRaGTatGnce++9WjglEAjQ1dVFcXFx7lTQ1cU9qRTxeJzHHnsMi8UyZveYLcqirr34rtXzGbiyaNEiEokE/3vRIl5ua2N+IECiuZmjR49q17z54punu/GGbT7nzZtHaWmpFiLKa/TEYjG2bNnC4sWLqagY3aiRI5PJkEwmzzoNTFEUbTD98EH0eY4ePcqMGTPOK1GbPx3kcbvdBINB3G43yWRSCw3mxfYikQjRaJREIoHP59N246NVV/1+/3UZprmcyDLQKcjhw4cxGAw0NDRw4MABHnroIerq6shLUYZXhXE6nLT9Zxv/0PkjDjnB//DDdLT1U/KrLcTKoDYD7s3w3A3QWQSlPbA8CQe9MP8gLLFCWxa226EwBMvswPyxtikIvE7OCVSkoaYHjhWD1wBrAXZCYwjitdBQc7rhN1+J5CTXSzYfWPJr4ChgAW5Da8bSmoWbYclLQAKYBzyQ+/mjjz6qGb9wOEwsFsPv93Ps2DF+//vfM2fOHNasWUMsFsPhcNDd3c3s2bO1z7O1tRWDwTBG5O1K0NTUREdHB/Pnz2f37t28+5134SAEl0D4/umUdHdjGFXqOrxjO/97mD9/Pn6/X3OCw8mf9s62s80nZfNd1PnTVzab5cCBA5SXl58zT5B/3XxuY7gzTSZzM50tFot2Yshf53A4sNvtV0356rXImcpApQOYgiiKQltbG8lkkk2bNtHf38/jjz+ecwJAZ2cnW7ZsoampiY8zGT5QFMJANgvlYQsmp4HlITOrNxppXVXKf92ksvKD48yc46TBZWPargjVC1387/0NHC0DSxK+8cRTdHQe4T3gkenTecbjYePGjcybN49kYSEf2+3cmEzicLl4K5nkxlSKpg8+4JevHKJ16So+VViFZ6VgUSTCdLudtkyGHXo9hQYDW+x2ZrS38/qPNvIn++/g067ZHPtmmHd9GdbodAz09fFBKsWitgS6F/o4dOwQX/67L5NdlGXbtm0jdtDAiP6CefPmsWDBAkKhkJaAXbp0qRaTbm9vRwhxxt3zleC3v/0ty5cvx2QyoevUYdhq4B/mnOBX215jZUEBf3377VRWVmpJzv8vkeBHJ08yZ9Mm6iORER5h+tLprFmzBofDgcFgGFe+2e/3n1f8fHBwkHA4TGVl5YRUzwQCAYxGIyaTSe7krzDSAVyjqKrKj3/8Y9ra2oBcgkyn0/HZz34Wt9vNro4OXolGCRUXc2L7Hip/t5tYGXxu5TpM7wb+f/beOz6u+kz7/p7pvUgzGvUuWbLlLnfjBqZjAwECxAkskCXZ90l2s0+Szbt5n2fJvsmWPEk2u5DCJoEUEkoIzaEb22AbY2NbLnKVLVm9zmhmNL2d54+jc6yxJRdKIGSuz8cfyTNnzpwZzdz373ff131d9Bb2kleTRzQapauri7q6OqqqqvD5fDzwxm4OGKDC4uQHa5cxY84cXopEWBAMIvT3E4vFqK+vVxhJsvSAxWIhEonw8MMPExiDurVfZV6+j5JCQamFy83K33R1sbWrn9hwCG+5h/kRCxtUUVpqnLxjNLKupIQ7TSZcLhc6nY6Hfvc7VGvXcpXVSkEyqTT4zGazwgoJBoO8+OKLgDQA5nK5sNfV0T9jBje73ZQhTaG2t7eTn5+Py+X6yOiBss7+q6++yq233ko0GsVqtdINvCaKVB8/Tttbb9HX18e8efOYPXs2v3W5eHRwkJsSCe5Kp9E8r6F2Sy3BdUEeDj+c1WTVaDTcfvvt6PV6QBKz8/l8WXX7kZERxQB+xowZEhU3EsFut3+gzeRMJkNfX99Hmmz/UpEbBPuEQhAE7r77bgYGBvj5z3/OcCKBYe1aRk0mPAYDaxobWRyJSNTL1UvYY9XS2dlJ68HNkAc3XXcThYWFZDIZjoyOssdoxBOLMa+yEsfu3diAqmSA2R4PI4cOsUqno7CwkEhhIYFAAI/HA0iBzOPxKFIIIyMjEAB7OwQ0D/JmngpNSIP1qJUiWxH6y/XYG+1cX1uLf0c/8wauoHX+HL5g0LH8Uzq6RJFnR0a40mCgGOjt7WXfvn0MV1Wx3+3GAnxWryc/P18JbvKqtn9PP7TAN773DRIeSZnzJz4fT58+TcTv5w6tlmg0SlVV1Uc+HBSNRrHZbMyaNYtNra2cPTxmXAAAIABJREFUrKpiPZKZzL2CAA0NrG5oIJPJ8Nxzz/Hoo48SAKYDJbW1mJYtw3Clgb2RvYgVIjfU3EBZmdTAEQSBnp4eNm7cKKmp+iF+NM7qDatpXNWovG+1tbVEo1H6+vr49a9/zdy5cykoKCASibCvv5+dKhVXmM3jnCwpqVgsFoxG4yUPe6lUKlKp1J9MIiOH8yO3A/gEIRaL8W/HjvHo08/h9MPP7vlrij3S8E0ikcDhcCgr/WAwyFuHDrFtZIRYDGJB6MkDQQNrS0up7OkhAHRqtTTn5fH/3HknXq+XwsJCOjo6sFgsyhQsZA/9xONx/vVf/xVaYEXvCpr/qhk+C7FHYvge8jGcGqbryi5OlfvYe8rLNdObyOwcwmF0wGIgnywqaWFhIUajkauvvpquTIa31GquNZmoOiuIRKNRIpEID97zINcOXMu8++YRvzPO8PAww1otW1IpZvp8zCoooKSkhI8DxsbGsFqtBINB/qunh5dEkftmzLigmUwoFOLJJ5+ku7ubANBjMvE369Yxx+Ph1KlTpFIp9Ho95eXlJJNJrFYr5ifNpH6XYvOszRytOKqYtjudTmw2Gzabjfr6ehKJBBqNBo/Hw6+BpzMZrg+HuX08VsgKqLKl5lQwm814PB40Go2SKOTyZfk4QyyHPw1yO4C/ABgMBu6dM4dT1LP/ne18+8H/Zq4DblXfSkbM8JTlKfyCX5FxblkBLXkQVkM8HxChbtpMNsxqIC8e54UXXmBWMkmJyYQoilRWVnL06FHMZjN6vV5hlSQSiaya7pEjRwBY/4X11LbXwhoYGh6i4KoCyiJl5CXyWPy5xfyvF98hdO88dBkzt9x/rm5MJpMhHA7T1dXFwMAAb7zxBi6Xi79qbubgi3tIH3FRsL5AGdwyGo3seG4HRGHuzXPpauzCd9RHUVERDTYbDUB/PP4nV8W8GAiCwFUOB5HOzsmYqOfAYrFw7733AvALUWTX4cP8fNMm6sa1jsrKyqioqCAYDFJdXU1HRwexghhV66q4Yv0V1Jdezu9OnmRxJoPO68Xn8xGJRGhpaUGr1aLX60kmkyywWhEcDq4rLKRkQhNZTgLn48mHw2E6OztJJpNYLBaFQSQIAl1dXbkk8DFAbgfwCUR3H7x+EpaXRDj54FZ2/3Y3AJbVFpJVST6z+TOUHS+jY02Kn365nV9ueZYRIYYpCjPCYC+QSDb2Cc3F6+68jpKSEoaGhshkMjQ2NtLe3k59fT2to6O8bTCwcGwMk9+vDKA98MADyjUFg0Hi8TgqlYrTySR/6OhgXeVi9uwLsG6OHactdFGNySNHjvD222+zoHcB4isiNRtq4HMSW2VXZyc//uGzfN13F5UrdIxdN3aOOJrZbCaRSHxskoC8A0gmk0qiW7ZsWdYxF/IZ7gZeCAZZZ7Nh9fvx+Xzs3r37nOZ4SUkJZrMZURQ5VF7ODncZV7wd4JZyDflN+Xg8HoVrH4vFlKTg9/sVcxcYZ+9ELNgP23Fd66Jo/oXnD8bGxpTBwOLiYgYHB4nH41RWVr6n9y2HS0OuCfyXim6I/zbOW+1vscO8Qwroe6AkWYLeqmfUNcrLjVreadZRI9gJrpmH/8nfsBTJN2BPBnylsCTvjEKC1WqlpqaG4eFh9KWl/CqZJDBtGp9SqcjbvJn+/n5F+iGdThMKhUgkEoqGzz+/+y4tq1ZxhyDwV+OmIWq1+oIJIJPJ8Pjjj3PHHXeg6lUx+twoJypOEDKH0Gq1fH/zZo5qTdxbeys3uKK4Z0la8/n5+R9bDRg5AQBs3boVl8vFjBkzGBwc5MSJE/T09PByIMAeUaQpFGKF0aiUVOSGsayBpFarmTZtmiJ+p9VqFUlmgG3btnHgwAEpAZaUkNQv44bnC/AsTzF2/RjJZDIrWcqKo3q9nrq6OgwGg8KeCvwogO0FGyPXjtC/up90Op2VICb+Lg+MyVTT0dFRRFFUFGFramre03snz158XP+2HyfkEkAOpNNpDrx6gBcefgHcUK+qZ8k1S4j689m8KkNzpZ03wmFG2tqoP3mSnV1envUOENVAnq2Ude09lBZkn7MF2A84kXj/UxYEAlARqKBxfSN5a2ex3WRSVrTxeBy/3680lCdDMBhk+/bteDwe5s+fD5yRPrBarezcuZPfv/Yajd/8JtdotdjH5SE+bEmE9wN5YCoQCNDa2squXbtoaGggGAwiiiIVFRW43W6CZjM7BYG1Fgt5sRipVApA4dTv27dP0RMKh8OKtLZGo8HlcpGXl0d/fz8ajYabb76Z/Px81Go1g/sGEd8SYQWYak2Kps/ZiMViynuv0WjoiEbpdE9j5aY0ZYuFMyuDsyBPC8syGiCVjmKxmCIJEgwGSaVSLFiw4D29fxOFBeUkc7FJQZZD+UuY/M0lgByy0NHRwebNm+nu7iYvL4+qqirmzJmDxW+h65kufA0+jgrDPH7kCIdCENXAvJiH/31VpbJq9apUbNfp0BqNXK3V8u7GjQDccccdnDx5kubmZoLBIIFAgLaftXF80/Ezk2CTYOnSpTQ2NmK327MCBUh9Bp/Px9y5c5UyhcViQa1WS83vf/s3FixYwHXXXUcoFEKj0ZDJZD5w9cwPEjJldd++fezdu5fp06dTVVWFXq9XGt96vX5SfXzZ4vFspNNpenp6iEajikpnIBBQpoEtFgsLFizA5XJlPU62joQz0swTy2TxuNRMT6VSPAVsqqzkds6RTTrnGmVfhh5gq1rN9SaTQsONRCJEIhFOnz5NR0cHzc3Nyi5RFg4EFEmMi4FMYT0bOp1O6WtEo9GsYbSzY6DFYvnEaQDlEkAOk2J4eJiDBw/S0dFBT08PBScL8L3jIzUjRd7leXT4fOzpgMEMeFRwy9pa7OPB+XWfj8M2GytdLop2HYN2MDeZufHuG3G5XDidTuLxOLFYDO2gls6nOvGs96Ct1JJKpRgeHiYYDCpB69ChQ+dcn8lkYs6cOYgeD68ODLDa6WReSQkqlYp4PE53dzcdHR2Ew2FWrFjBjBkzFHG4j/PqH6RdzQ9+8AMAbrnlFkwmk2LfeCHIwmWyuJn8PVar1YrujixiJ5eH5ITY29uLSqVSBgfPRiaTwe/3E41Gs8T7kskk5eXldGUybAGuUKuZdpEOXj+NRnkyGuX6aJTbIUv1FKShs6Nbj1LbWYvlWgumeilxy77C8mDbe4EoiooRkVarxWg0nte/ORQKKbswh8PxiXApyyWAHM4LuYTQu7eXQ384RIetA+ySMVhLEgoGwe+WXMaWdULF7Zczv87DgNvN0nicjff/FFphw30b4FYoLy8nGo0qteFTp07hdDopKys7h3sfCoUwmUyKT6ws3+v3+3n99dfx+/3neMdnYYLVmTvmZvZNs6m/rB632w1cusb9BwlZvlhehctIJBL88pe/pKKigqqqKjweD0VFRcqqf7LzyCtw+f8qlUqxs5wKoVCI0dFRQBr4ikQiFBUVUV1dPeVjzvdaQqGQkmw0Go1yPZN5HEw8fthg4E2dTin7yb2JiX+bzK8yJJ9OEr42TOpTKYxGIzabDYvFkjW4drE7AtmnGTjHk/gvDbkEkMNFIxqN8s3/9V1OeUVGPXBUhIY26KyCQSMYo6DWwnwD/M8lS3hl507ao1B/WkPVrDwi+ogS1DUeD8f1em7Mm8aythqENQLponQWE0eWcD4bsu57MpmkLRzmZZ+Pm8vK8Le2MnPmTEZHR9myZQtdz3exvGc52gItBzsO4p3mnbzMdJaIjkvtwthuRDNTg7ZQq0wUy5LZstSx7FV7dqDNZDJZ7JjJICtgys5kAOnOND/85g+5+p6r8Wl9zJ49G5vNltUE93q9imiajLPF0GTLTY1Gc861nTp1iqNHjypJwuPxZPknfxCYKOwml17k90l+TywWy8UH3gl0p3hBXCnVhMNhDAYDeXl5WK1Wpacw0UxoYrkqGAwSDAZJJpNZyXTi0OBfGnJzADlcPHrg1AmRVg9clj+HFbOLKEv20Gpu5w+ZMKMGUI3Hm53jwb81CVSmmFvlYG7VXFwuF1arld+OpDk0HKDkeIbGJ3zkk4/6c1L5Qv4Sj4yMKBIWsnRvMplkeHhYGVYq1ev5YmEhBU4nwdmzaWtrY/PmzYTDYebcMIfpgemI9SLT26cjrhCxNkzCKPoVpA+kSdekGbtxjLe/8zbxd+OkhTRha5jh4WFCoVCW5PCHgvHtzCs/egWMsLduL6YiE0VFRYqpe15eXlawmmjuIv8eiUSIx+NKU/fw4cPK8VqtloaGBgJjOl4/PMKiiiCFBaeUIChLduh0OnQ63SULscnJR74WWUpiaGiIVCqlBH3TuK/ERQXeMpSmgh7JOUyeHYhGo4yOjtLf3684i5WXlyufFb/fT1tbG5lMBpvNRmFhIWazOecvfAHkEkAOWUgkEux/dD/VJ8FgsPKtO9ZhMweIzCil4aSL/Vu2sAdQA/KavfoUWDNubm9ehNo5TGdnJy0tLXg8HtZ4L8M5Np21Fij7KyQy+4TYnE6nFdZGJBKhv79fCcLFxcWUlJScEzx0Oh0bxxvO119/Pc3N0sImGAzCSmm7f3bZRxRF4pfHEdMi4YVhBEHgmi9fI9WU1pDFZJGD2aWWjia6VU2FTCbDqR2n2PPkHu6ouwPjViOa6Zrzd1OnQCwW4/Dhw4qc8j333ENRUVHWKv8Xb4ocakhS509wzdw0Pp+PeDzOwMCAQs9NJBKK/PNkLmITb4czDdWJpRhRFDH4DZQeK8W+zo5QLh0fDofp6+sjHo+j0WgwGo0kk0m0Wi1Op/Oi5SRkW82Jr729vZ2uri7GxsZQq9U0NDQoLnByg1mGRqOhIF6AsEmYeqDiLxAXTACCIDwCXA8MiaLYNH7brcADQCOwUBTFPWc9phw4AjwgiuL3JjlnFfAEkAfsAz4riuLU35oc/iSIRqP09PSwS7sLeymsNtfhDIZIGjMcPHiQXbt2YQREIAIcTECkH6rz4UvuZhZumE+8IK7UmkOhEIe6XsFwXINw3wpYmM0XFLtEfM/6CM0KIdZKAcdqtVJeXj7pyi2TyTA0NMRPf/pTANasWUNdXR3hcFiZTJ24Qj7n8QUZ2AAey/hwWAnSJ/gDgiAIiuftVAgGgxgqDaQXp4ktiWEttk5qQjMV4vE4Bw4cQBRFUqkUjY2NGAyGKdlOV9YJCCd1rJ2lw27nfbNbzpfk0r9KM/LECKeGTiGuO5NAdDqdYlwfi8WIRqOYTCaFITaV2c75zHD6+vpIJBLMmzdPYQwlk0l8Pl9WMpPnQFQqFf3/2Y/4vIgwKiDcmc3+kX2X/9IkqS9mB/BL4CHg1xNuawVuBh6e4jH/Abx8nnP+O/Afoig+IQjCT4F7gZ9cxLXk8CEhFArh9Xo5fvw4MWMMjLDvrX3s8+3Lqqcvz88n6vXiS0BeB7RaoLxiLjO+PIOBsQHMCclGr7i4mKGhIYxXGwlfFmZnx04GT6XQ33orV2s0lAF9v+/D8ZIDtaBGPU+taNbH4/FzVnAgfaEfflj6yK1du1bx/i0vLyccDkt6N5M0CGUmktFo/FiUBBwOB/F4nLAjjPse90U9JhwOc/jwYVKpFNOnT0elUl1Ufb2sGO4p/iCuWsJ5k9x6cJgc56yw4/E4x44dy0oaKpWKqqoqrFbrlOyeiVacICWf/n5p6KyysvKcpKfVas+ZJUmnpV1PIpGAFSAgoFmjwea0ZZEREokEw8PDdKfTvCUIrEBaH6hUKvLz8z+x8tUXTACiKL4lCELlWbcdhcnZFYIg3IjUagtPdj5BetAa4M7xm36FtJvIJYCPCH6/n1gsRl9fH319fZKc8DhJxDnXyZzVcwiHw1RUVGCz2bhbFHn87x9n4EiUgg2f4arrbKjVapxOp1Lbl5vABoOBZDKJTqfjQCzG49/+NoF77+WmRALdch1+/ETnRvGoPFm1d61WS2Fh4aQB7qabbsLpdOJwOOjp6VE8joGs4+VdgdyE/agRiUQwGAx0dHRccPBNRjKZpLW1lWAwSGNjIzab7SNXMJ0SE2r4E6HX65k1a1bWbbIseGdnp8IkkpOL0WhUVuOCICjzBKIoUltbe0mrdNlZDJAi+gLpPQ0Gg/h8PuU4URSx2Wwcslp5FWmwcd64fWl3d7dStpI9Jdxu9yXPmExkRcmsLpfLdVEuax8WPtAegCAIZuAfkNYAX53isHzAL4qizInrAaaUZhQE4a+BvwZy4lEfMOQhIZkC2tLSwlDbEIz3Etf89RrmXT2P3t5ejEYj5eXlpFIpTpw4QbQsSpO1jFtv9GBttCrDWWd7tqrVauLxOHa7naWpFOkrruDYL37Bo9dcw2emT6dxkTVLDuG86IZAK/yuOcBnSktxIE3DDg8PK8kGpC9aMBhErVZ/LAK/DNn8/Nlnn+WLX/ziefWIMpkMu3btIhQK0dTUxJw5cz5RkgdqtfocCQi5vBSNRvF6vQqFWK1WK6Ug2Yh+KphMpgsmCK1Wew7rTLannNnbyygwI5PBbzKRn5+Pw+FAFEWSySTxeFyaqD9wgIDRyI5kkqvy86m+QFIWRRGdTqeUo0Aqdw4NDbFv3z4cDgd6vR6DwYBOp1Pc0j5sfNBN4G8hlXZC5/mwTnbHlDw6URT/G/hvkGig7/sKcwCkVVA4HEbdr6bv2T6eGXlG0nFoB1rgdvvtxEbz+fq+fQB8ae5chVPd3d0NdhhwDRDNjyKEpOnNqQKaHNzLyspw793Lb+bP5/GXX0ZnMvGPjZdQhH8dMvZmnt68GUOJlfs9Hlwul6IsqdFoFHkIm832sQqYyWSSt99+m3feeYcvf/nL5OXlKffJgU8uq/T09NDS0sJll132ka4O/9SYWF6a7HWLokgkEpnU23gikWDi/aIoXpTdpCAI2Gw2FthsyKIUiURiUsN7tVpNU1MTj6lUvGMy4fJ6qRqnw8p9C6vViqpXlaXiF4/Hs6Qr5HNXV1djt9uV12exWMhkMspAo9Fo/NBKUB90AlgE3CIIwncBB5ARBCEmiuJDE44ZARyCIGjGdwGlQN8HfB05nAcxWU+mB3742R+SGcqAG0nMpxo0cQ1PZJ6g5SS83Ss9pnfz5nOo9clkko07d3LC4aAZKOCMw5XFYiE/Pz+rLBQIBGhqauJrCxZQu2wZHf/1X7w0bx6NjY2IonjhmvZa+IrxGtQ6HcHnn+dZt5urr74as9ms1IpleYiPE6LRKD/60Y9QqVR84QtfyAr+Y2NjSh8D4OWhIR48fZr/79prcXzMXsdHDVnn52yIopjVK5gIi8VCNBp9T0lBpshOhesBPbDW5VJKGPJsyNDQEOmn0vA8CKMC3CE976BGw9ZMhqvNZhqLi5WJ7VAoRCgUQqfTZQnpAfh8PqxW64cia3JRg2DjPYA/yiygCbdvBb56Ngto/L4HgNAULKDfA3+Y0AQ+KIrijy90HblBsPePUCiEWq0mdTrF9+/4PgwDaig1lHLFfVdQ/tVypab+0OOPE77lFjQ6HZ/mTF+vr6+P//4//y3tFu67kU1OC59yWbkio+OP+71cOd2C2eBncHCQpqYm0uk0drudaDSatbLLZDL85Cc/YXh4mM9+9rMUFBQoH/7zrXqGhoYIBoM89thjgGQKr9Pp3rOq5IeFWCxGPB7nZz/7GTU1NSxatIiioiLli93X14dOp1N0eURRZP3+/WwrLuZGj4dHP8qL/wTgfIlhMg2gS9EcuiicpeMtiiI/T6d5ShC4MRLhsxMYa7Iz3IfV33nPk8CCIDwOrAJcwCDwT4APeBBp3egH9ouieNVZj3uACQlAEISXgPtEUewTBKGaMzTQFmCDKIrZY4+TIJcA3h8CgQDGESPHf3ycP7zyB+kv54bV969mVmoWzhudSpTftm0bM2fOnLIEEf1plH//P/+Ora6Skbp6VpaZedMS5uWkn9m9fcwrlSQHZs6cSU1NDVqtVhEAs9vtygc/FArR29vL448/Tl1dHYsWLaKqqkqZAIZzJz3T6TRtbW2cPHmSPXv2UFlZidlspmj+fA643awBylUq9Ho96XRaYZ/IFFFZKO3slZb8u9FoxGw2ZzlZXQrkwC+KIu+++y5dXV2sX78eq9WKXq8nHo/T399PUVGRUvaRd05bRkd52m7n71wuFl3yM+dwMZgsMcjlF3kuQa1WfygaQFN5O/T19Snueh8G3vMksCiKd0xx17MXeNwDZ/3/2gm/twMLL/TcOXwwkHV1bDYbwu8F/vDrP0AGZs6aiWaDhpk3zcSZd0Z9Ua6jnk9MzXidkcAmaCk+zVeqlrDo+nKK4hEKTqX51K0FlBRm8Hq9nD59mmeeeQaj0ag0ahsbG5WgLooi06ZN45/+6Z949dVXeeONNxTWiMvlUqQZ5HqorEcvCAKdnZ2ApCKaSCTY4nTydChETBS5KRbjwIEDFBcXZyUckBrHWq120uCeTqcZGhoiEomQTqfRarWKtr48rTxVUojH46R70uje0aFaqSIWj7H7J7v54re+iEanQa/XK6JkE41Q5OCv1+tZbrGwKBabSmE5hw8AUzVYLRaLUqNPJpP09vYqswQej+cD2R1MQZT6yJCbBP6EI5VKEQqFFK33Bw4/oPD6hVsElq1fllWTBmhtbWXFihUEAoGpm5BlcLgAWgSorUhQZ/JR5jLxuWIBnS6ESmXB7Xbjdrtpbm4mFAopnOzt27dTW1tLXl4eiURCmdy96qqrGBwcZHhYmiY+ceIEs2bNwmazoVKpCIVCiszAu+++y/DJYarHqjGOGtEX6vEcOMBlJhMV8Tj7RJFDlZXUVlZScokqkjJzSJY7SCaTJBIJhQFyNuQ5A71ej3qLmtgrMTQJDSpBheOog/7n+in72zIGBgYwm81ZUsyiKHLixAklwXk8HkpLc+H/o4BKpcpio8mf/XQ6raiuTgbjuEkPvLcyUiAQ+MiovbkE8AmGTM2UP8hdokiLHaqXwpyqKmYvn50VjLqBpwcHWV5Souiyx2KxKT+cMyzraQk9T88ze7FcfpMSOGUpB7mGLwiC8sUym6VBscOHDzM8PExJSYkS/GTuv8FgoLi4GK1Wy759+9i9ezcmk4lrrrlGOc8TTzxBoBtOlTVRvC2IeVmQYo2GJouF6lmz+EUyyQ6DgQqtlpkfyrubHfiV9ygPidawFgLBANXD1eRfm6/o5shyzB0dHYrOUXV19XsyRMnhTwO1Wk1RUdGk98ly2TJldbJE4XA4Jm3gptNpgsEgVqt1Ug+DPwVyCeATinA4nBV4Af4YDtM6/vvtDQ24XK4smtsLwDORCPaqKhYglUrOtzq5ee10XvvN8/Q7TvPEpk1cv3gxBQUFWCwW/H7/pLsHmYO9YsUKTpw4wa9feIHoVVdR2NTETYkE7mAQlUqlmMHU1NTQ3NyM3+/n1VdflaZ9Q2ZogcjqaexfW4V6tIcvNTRgNBrx+/0cPHgQZzDIHZdffikqCxcNmas+6YDZ+B4/nU6TNqfJXJEhXZjm2KFjGI1Gjhw5QmFhIc3NzR/fga4cLhpyUpdxdtlULr/Kktwg7TDlxYPValUawB8FcgngE4hgMDjpuP5ckwkrUuc+Pz//nOC1DtCbTCwYHSVtsyk+vcFgcNIPaNtaPcmm+zn68MO8dOgQxTodCxcuRKfTnVdRM51OE41GcTqdqNas4bfbt2PKZHA0NXGfzUY6nSaZTDI6OorNZlOmZtevX8/AvgF+8Q+/gFFYNbOARneS62rqECMRxUmrsLCQhmCQo7t3M6TRoCosxOVyvW8p4PMGfrItCoPBIAcPHmTZsmXKhPV11133sZtPyOHDhSAIOJ3OLIezQCCgTDt/1MglgE8Q5NXGVPoqR1UqxpCYn1VVVefcXwbcp1aD00kwGFQatSqVilQqdc451wK+oiJ44AF6H3iAzXv38uNdB6mYdzPJYAcbfNUUzxOg6Mz1CYKASqVSmsKfKi/H1NTEsZdfpn/jW/xxqBJrgxXrgJXGDY2kTWnJftLrRRRFXC0uGAWcoCvzs2ZgAF00irO8nNHRUZxOpzLUs2jRIpLJJAMDA+zduxeHw0FJSYnC8LlYyIFf9gaQX4s81h+Px0kkEqhUKoU5EovFlGGew4cPs2rVqo/VVHIOHx0+Tp+DXAL4hCCVSjE2NjalsTdIAft5JJmfCw3B2Gw2YrGYsvqfrKRTxgS9jwce4FvbDrLn2WfYvvNJSu/7Ksv+aGF1OxKJeApogkH+QasltGYNA4cHKGotwhw0E++O807sHeZ+cy6CIGC328lkMvTO6KXuqjrazG2UzysnFovhcrloa2ujrq6Oo0ePUlRUhM1mIxwOMzY2hkqloqGhAZ/Ph0qlUuioIA37TFWKkaelk8mkMqwzOjqqvL9msxlRFNFoNKhUKkkiY9xG0eFwsGTJEl577TWam5v/JGP9HwjOMmUZHR0lnU4rvPnJPls2mw2tVotarVb0e3L480AuAXwCIDszTdxmToYypvRjnxQyXdLv96PX64lEIuedRrynbxaqogpe3/cfGH7yPaqdd4A4TQoqU+ivy7V+s9lM7YZa8AAzQNeqQ7BLnPxYLEY4HEar1VJ7WS0dsQ7adrThdrsxGo10d3eTTqfZsmULpaWl9Pf3EwgEyM/Pp3h82hIgLy+PaDTKyMgIoiii1Wrp7e1lZGSEQCCg0AMDgQBjY2NotWdcwuQp5YmaMLIto2zjOGfOHGVeIZ1Os23bNhYsWKAk20wm8ye3JcxkMlkzFRON2ic2K5Wg/RTwPIijIvq79Iq+/vnOL0+xplIpBEHA7XbnksCfCXIJ4M8cskrixTSRZLbNpUCtVuNwOJTVr0zDlLVXJqJsKfy/QTNf+aev8stNv2Tr64+z64iRz6k+x4nrx9jY3U1RVxf2dBq9Xk9NTQ3l5eVnAsZ4AzWVSrEjtoPy8nKSySRWqxWrVRKc83q9tLW1AWcC6ohGw2s+H3PSafKjUaZNm4bYLRJ5NMLA0gGi8pRtAAAgAElEQVS60l2KaYrT6cRms5FMJpXHO51OSkpKiMfjhEIhioqKsoL+2dBqtcquYXh4GFEUMRqNyi4MoL+/n0ReHo96vVym1yOcOEHC6WSwuZkrBYHS8RKSXF4SBEEyLSkomNTMJhgMkk6nJaXWSSCb2MgDTROH3PR6vVLy0ul0590lchuSFOZapNHPC0ClUn1kDcwc3j9yCeDPGPIq9UJsElmHZzIRrSx0Q/ylOPpr9ees2GX7wN09PbzY38/cZJKCCfcPAa1WK4vmgWUwxMKFC+lUd3I4epjvbn6YfXkNRFct5nPz59MUDPJsPM7TL73E9G3b0Gq17PHHCY+kmH7NZVyZr8MUi7Fx40Y8Hg/hcFhaxQ4l8e71Kp6+v/61ZFHRIgh0zp5NOBql/+BBRkdHqd9bT+eTnYS7wiz83wux2Wz4fD4ikQgnTo2xbzifOXl+3Plp1Go1FouF4uLiLEXRcDisvGeySuPZcLvdJJPJrMCcPJ0k8WyCdy5Xsb2+Ckcsxn0VFfzrwYM8/a1v0f/pT3OP3Y7FYsFsNl+wGZhIJDji93OgoIDr8vIm3UzJ16BSqd7f0NLHbVIphw8VuQTwZwi52WuxWC6oEiivSu12exYVbSJPXz5n7MUY/Y/1Y4laSH86nWW8LQgCidMJdg0Y2FpqpXRWFVeLojJrsBfYNDqKKpXiGoOBcDhM1YIq7G12vnfibVqPHaPw9DFOIZWY3554kdEo78YhZoEj27fSZ4SVNhu1tbW4XC7cbrf0Wp/S8k7XO+xhD5//8eeJRqOUlpZyIhzmtWiUa202VH19vPHGGzibnOzas4tZzbM4cOAAbrdbMWLZcTrDK5YQqkA+n19wpjYfCoUY2j9E+ZFyhLUCljLLhEuMKjsojUZDJpPJMiqZqEI58PQAW5/YyujBIM7ZakYNBv4zEiEhijQBiZdfpmPRoqzHZzIZZRUvG9vIq/SOeJwf5+dzOpNBx+TxWavVfmJNS3L48JBLAH9mkIdHzruNH0csFiORSCi9gYnHnzhxQmnqqsZ1cxILEpQIJajWqlB71MoYvDxN7G51c9ubWhLXRXBH9hKqr8dgMGAwGLhWEDDYbFxjMFCt1RKJREilUgQ+HcDzkh9V9Ag3rNvA/yyzc2BoiAadjnQiwU0mE2aLhT9G9AS6wF4ONzulWap0Ok0kElFmGlgFezbvgWppVexwOEgkEszKz2fmuKeB2uVi8eLF7Hx3J7WfqWXusrmIosixY8cQ+0TKjpVx9xILJWOwthas1jOMHr1eD7ug7ak23BE36rvUirrjxHq5XOuWZSGsVqtSKx8YGOCF4Au4ml38jy98ForJMhOxWq1Zk8byuTOZDH6/H6/XS29vLwaDgSVLlgDwClIbpZ5Lco/MIYcLIpcA/owg14sv1OyFM6qfMo9fXqkHkEQ854fDXNvQoBi2eL1erPVWEvUJNBoNWpVWOY/MauEaSPtP8/cLy2iLxejv7896zvnJJG0nA2zbMsB+RwftVmnmYLAX5g5A/F8e40fjerKytNvrEx5vBlJIfchJERj/oYLHk0muiMVQd3ZSVFSExWLBYDAQjUbxeDzU1tayfft27DE7jb2NLLlpCcEXgkSfjqKKBrjqdtBpdfT1nZlXEEWRRHOCoDdIt6sb8Y8ijqMOPNd70FacEaSbmEgzmQydnZ0MDg4Ckogedrj1G7eiUqlQqVTn6A4FAgHC4bCiHR+Px0mlUjidTkpLS89puq6d8DPnZZ7DB4mLkoP+uOAvWQ1UHje/EJ1Q5r3LNWCZ2SL3Cx7Yto1XDx2iCfjZ3/wNarWaRCKhnFej0ZBOp/F6vYTDYaVOLbsgxWIx2tvbs8pJSlapHv/ZCi0roLUC7Go1g/E06ihcKcD0Yhsul0tp6sqrYXmXMTAwMHWzugXYDy2zoXUmNGkvgtXUIl0PTROub7yHoNVque6665S6v0qlQjeiw7Xfhfl6M7wOod+GGLtujNStKYU6Kq/Y5f87nU6lefv973+flStXUlRUhMvlIj8/n1AopDxOfh6z2ayokl7ISD6HHN4v3rMc9McJf6kJQF7NyytQueacSqWUxBAOh+nr66Ozs5NkMklPT8+k5wqgOD4yYwzsJ1EC4ntBY2Mjc07NIfJChODKIPbVdswtZvqWi7yVlySzfz8/PtzGiBoWzF3OIw3FSukpEomQn5+fNZQVjUaJRqOKFLNarcbv96PVajnVEeah//wDG4x3MnR3IcsXJCg4naTjmQ5qbqnBPcdNb28vbrebcDjM0aNHeWvjW3yx9IvortSRKc4o79/IyAivvfYaAwMDynO7XC60u7WMbR8jYo9gWGYg2h3FMN2A1i3tiM5OTiUlE9xMfdD7di81q2vQFmoZGBggEAiwevVqCgsLsx4niiIGg0FRPM0hhw8T71kOOodzkclkGBsb4+TJk0qg7evrY2xsTJkAnRQTV8pTBNwA0B6F6lNgL5v6uEtFeXk5er2etrY2jEiLYqMPVh6zsWL2CtTrJf9ceZCqoKCARCKByWTCbrej1+vPsbhT0A0USrePWkYJN4Vp0GrJ0+n4zdAQup1tiE7QOKZjs2WU3YZsJA/SexqNRunt7VVomkK/QPWJagrWFpDwJPj6739I60wYu6qeuz1hAokEp5/pJP16mk5VJ293vk1hYaGyMu9LpRheNZe95X2srm3IKq3YbDbuv/9+BgcHyWQyGI1GxsbGMK8wk06k0XfpidXEMP2rSfEskEthtbW15/RfotEoqUdS9I70Yk1byb8xX/EhCAaD50x/ygqSo6Oj+P1+qddSVMQmQciVenL4kyGXAC4RiUSCQ4cOMTw8jNvtprKykuHhYVasWKHYH57NxlDkYh9BWn7PZEqq3T1b97LplY0U2KHuGMwoB/skQoQFBQW4XC5MJpNihG0wGMjPz0er1eL1eonH41nX0tbWRmVlJaHubkinqc6D2z5/G9ZrrAzrhwkGg1x22WUAivxyIpHg4MGDklTua1Z4CeLdcZLXSbVztVqNx+OBq6XnUMVVSrB79vRp/vDmmxjNYE5AxeAR+izShK7BYGBsbAy/3688n9FopLKy8oxkxCsqjr0VYmupitVxkbJ3o9TctZrFc4LojEaKNEW03xDjwPJ81s22sbBkIYFAQJF6eKOkhP3pNOo9e1hYVoZGo8kaZBMEgcLCQjozGX5z+jSrdTrqy9VYvm0h/moc42qjQn+1WCwSUyoWU0o6E2EwGDCuM+JKubBca1HKPbJH8dmm95FIRNnp2Gw2RFHkZ319PC+KhEwmvnyWRHcOOXwYyCWAS0AkEmH79u10dnYyY8YM1Go1hYWFzJo1S1kRiqJIKpVSJkVBWh0CsASIjv8cF+FMJpMEg0EGBwdpb29n187jxGzQ54aQHqpC0/j8bbMVMxV5LH+iBvlkOFvjv7u7W5EuqHW7sQwMgBW6l3VzdNdRPB4PdXV1tLW1EQqFlOCk1WpxOBwSDfNyLRqDBuOVRrRVWuX65YAt/5QNW24qLcV4zz0cf+QRMhUV3DItD3fUieUVC2Pzx3BWObFarRiNRuLxOMGjQWLbYliusUApBBcF2Vxj5Zlmgd43fLQPwVf2FVK6UlI7jcViHJjh4vH+frT5eu7HgN1uJxgMYjQaucFiIRMIYAyFsNlsxONx/H7/OQYxG4NBXnW7cVksLBQE4sY4wuek19PX16doAOn1+vMPPZVB4tYEukKdMhA2cRJ5Is6eqM5kMhKTClg8Xr7SarUUFxd/KF6wOeQAuQRwUQiHw8TjcR588EFUKhW33347qVRKaY52d3czMDBAMplURNOSySTHjh3D7/eTSCSyy0JPTv1cS3RAELTDkEzBIrFG2VXIwR/OJBVZt1+r1U7ZIM5kMpSWllJaWqo0KmVs27aNdevW4XA4cLlcCrXR7/fjdDqVhqcoikTcEfqd/XgTXrx7vBiNRsUtS6PRYLVaGRoaUjwItJkM1/eJhFvgipl1vPvmm5x8V41pv4mqa6sIXRZSmsF6vR5ehtCmEHSA+io1brcblyHCvAMi/REnb8+GGfU6ivr7lR3PkmiUhMPBslgMxpu5NpuNsbExCjIZPicIbBl/rXq9Hp1Op6ilyjIU11oseINB+oJBjggCNeN0TflcgKKLJDfVp6LghsNhwuHwJat+qlQqGq1WGkHiphYWkkgk6OvrUyaF7XY7brf7koTscsjhfMh9ks6DgYEBnnzySUW7+7bbbsMestP3UB+JdILINREolNgk5eXlpNNpAoEAkUiEQCDAwMAATU1NeDweEokEeXl5WK1WRV9HFEV0Oh1Go5Fjx46xa9cuSi1wK7A5AC3F0HpZDVfqolPKEoiiiFqtJplM0tHRgdPpxGQyZU2tDg4OEgqFOH36NDt27Mh6/Lx586iurkYQBMbGxjAYDMTjcRwOhzJdGg6HFU5+KpWio6ODyy677BzhL3kHkJ+ff8brdocIrbA8sJzlX1nO8P5hoq9HKbhRqutnrajrgelk9RgWAZ8G/vn0KBwF41In0yrOiNIVpdNMi8VIp9NZ3gaAImSW7E/S+d1O8m7Ig1Ip2AaDQYX95I7F0Pl8bK6tpUQQmD7JZ0Ged5AVPkFaxU8ssUUiESURfhDQ6XRZ1pF+v5/Tp08rzKG8vDxF6iHHIsrhvSCXACZBf38/L774Ij09PaxevRqn00lxcTEajYaxn48x9vwYq0yrSM1KEVshSQBEo1FOnz7NoUOH6O3tVc7V2tpKa2vrVE+VBZPJRENDA36/n98n24mp4GB+O4ODKo4fP47D4cBqtSKKIul0mt7eXoaHh+kOhzmcyVAaCLCwvp7TY2McUaspGRlB9PmkkwegZwD2VMGNjTVw6hQAV1xxhbIiBiloajQa+vv7lclUnU7HyZMnAWlFvG7duilfw9klEm+pF6zADOn/7jluAlUBtBYt6dhZ9ooTZAhkZhNIu5zl0QH2GuHOIlOWP8H5zLtlpyV3h5vQthDl+eUI9wrKfalUiqGhIfR6PdX7e9AdNDGzEvqKBIXm6XA4sgzpAWWXFI1GlaAv02k/qOA/GRwOh8KgisVi+Hw+RFHE6/UC0udHvla1Wo1WqyWVSikaQsPDw+cnKVwkJpb8AGVg0GKxKLtQWUspt1v5eCP315kAWXRr9+7dLF26FJ1Op8j99vf3E4vFeLH3ReqW1vE7focmqaF4fzE+n4+WlhZAYtvccMMNFBUVKcHhueeeo6ioiNLSUkRRpKuri6GhIaUBKiOZTDI2NkZNTQ1zOjsZS6eZ03OSU2o16XSa48ePEwqFlAbtFVdcwdy5czmtUnEKqM9k6HjlFbYGAgr1XeHJt8MeK5zQa3nu1CkWqlTszmRYMjLCnHSaY8eO4XQ6lWlWuTwilx4WLFjwnhQeo9ui0Atsg3CTVLePRCKEQiFl1yF7DkyE7M8q9xRK1WrmAu7x1X53d7cSDOUhqol/R9lUJp1OY1lhoX24nUBLgMWdi1FVSM8lB0Ov18v0oy5u21ZM/JY4iTsSCIJAUVER4XB40qCeyWSU19Le3k48HqesrIyCgoJzjv0wINtmypB3av39/UrZTp5AVqvV6PV6KioqMBgMF5QCf7+Qacper1exSgQpKeh0ulxP42OEXAJA+sC2tbWRyWSwWq0UiAW0fLuFGZ4ZuO5wUbJA4np/61vf4t6/vxe73U5PPzz05Gvon3sD+4T40NXVRVdXF5DN+vT7/Rw9evTMgeN3Ni1uwhPwYFhuwFIj1ZaTyST2xka0ra0Ur1rF1aNm2ALaK7UY64xE3oyw6Z83MX3pdHpsPVSPjLAUqAUEXTHVrQGmfW4Vpo4DzKmooLu7m0B9gOaeFMSTNOtgdybDceAfHnqI+z0eSkpKONjXx5aeHv72xhtZMIG2mDqdIvTjENZ1VqU0I3aJDP58kMJMITiQ6jRlZOnJUwY6tQ4yENwRxLvES8KVQKvVkkwmMRgM7Nq1iyNHjkz5t5n4HgJ89gc/yGLRXgSzVoIXeBNe636NypsqsVgsuFwuioqKEASBYFOQI8IRXAtcmAQpQCUSCYxG46Qyzj6fT/EGqK+v/9C4/HIwT6fTyr+pVvB6vZ76+vqPXIpZEATMZnPWeyKL68VisawhQpvNdt6eSg4fLnKDYEg87SNHjpBOp+np6eHo747C29DjgT2roNkladNMREsntGrhxmnL+PqGWRiNRvr6+njiiSfOHAPnrsTPvtOKxAg666DAGLT7oDpvfFhr4omeA44D04AbJ5wzAGwBRkHXrMO4XOK2FxQUUFtbS4mqhNFNozgud7Ap3cMjW9+muQNWLa5l2tJpvG6389sdO5gTCrF+5kxatFrmJpMITw5z+LXD2dfYgqToFgMMwNLx+85+0QHgNWAAmD9+3Nk4K4pXVlZSWlqKVqtlq9PJS/E41+p07Hv2WYZuuolP5edz53hA/sXoKK/b7axXqbhj/HSyimeWa1dXnPaX22m3tuOocNDY2IjFYsFoNGI2m4nFYooshizRkE6nSaVSpFIpRTHUNGpCfFMktihG6cLSSRVC5R1IPB5/z+WWieUV2WhFrVYr8hKfBIiiyNjYWFbvxmQyXZTOVQ6Xhtwk8AWQTp+pR/sO+dBt1PH5JSFeePNnFETg78qquPP2q2hpaWHXrl3ZAXqKsq8c1+5YsYKGvLwsTRixT+TEcyeYtnwa6nY1mcUZVCXSFzuTyfDb77xIR9jALXPnUbXQRM2pGnRX6dBWa1G9q8L/n35iG2KYlkur1XA4TOZ3Gfoe6WObcBjdnTexarlI3HyKxzZulOJrK3Ac2puhugLs49IKOIHVELCfo+ggxfEJAbp6bjV5eXk8vfsI7xRXcesJI0uMxRz6lIM1hQaqR/Rot2lJXpZELJbMU777uYcZSuUzb3oVp1bHyA+FaO3u5tqmJjxqNclXkrAD1LcUc/hWJ9N9PmKdnbhcLo4ODbE3EmFaOs3wwABl99/PLK+XBWVlqFQqeoAX/X6uslionKTeLKtkyhPFra2tbNq0CZCs+UpKSqiursbj8ZCfn4/JZFIcw2w2mxJsZXewyC8iiM+LmG8zo75r6lKKRqORhuc+IcH6T4VIJJK1Q9Dr9eTn5+cSwvtELgG8B2wJhfjG6Sg9P/kRzRH49Np6mq66ijdSKao7Omh55RXpwPEAufiWxRjLjQpr6PDhw9x+++24XC4ikQhd6TQvjJ/7+nSaxOnTmEwm/H6/Mggl10m//sjjtCZhw8p13HpAh7BUMgx5/D8en7reMb4DaDFAaz00+aF6nrIpYE4UND4dnbcu4/bGau4YUOH9tpdHjz6D7eZ1bChpxLTYx6hxlF2nTnHYYOB/rFlD9TjTRTY9F0WR5j9spH1aLU1oWDk6wHa9npnhMA6tliVGo+IV0NPTw9PPnqLVClYNJBYW4bJYCFqt3GgvZ/1mEaFWIHQkxLt31fFUcohrBIF/bGhAo9EQDAYxm83s37+fjRs38qUvfQmVSsXw8DAmk0mhW8rc/7MlrlOpFMlkEo1Gk7Va93q9PPbYY6RSKeW26upqZs2aRWVlJQ6HI8sXWcFZJa4cPlwkk0kCgQAajeac+Y0cLh65BPAe0d0Hv9p0BO+BpyjymNjhjdCaHBcik+PCeWs9ZyBXTUCqhFQjDQbrrVYaYzFM47Z99EBgP7SXj0tC9CCVT8Y1HFbcvIKZX5+JTqcjHA5TUFCARqORSh0n43Q9leHxcBuq9DaOlwscmb+U2kQBX7MI6Mp1bE6naTjQh2NrDMcsB//1ZisvJQ/TWLSSb2iKKbpdYjVt3bqV6upqZZpVhl6v55kXDrN3ei3rgmpq52vZOxJj+ISP/hsXs4oYVUNDHLdYaFar2fO1HbSroMSkh7+roziV4nQySdM7ULnDinqeGrVNjXi1h2MzC1khCMgKO2NjY1itVt59911aWlrYsGGDYhIDUoBwOp2K4J1OpzuHEikbt8u2iGdDFEVaWlrYsmV8YiAA+UP5LPz0QqqXVCuDYLngk8OfK3JaQJeIRCJBMBjk8cceIRWJUFHm4Atf+AL9G/6Nyxrvo8QT4BXdDpqTFrzRE9z16bvQ36RHKBXIy8tT2CVer5euri6e37uXo4AFaeEol1laAMbGUAG31NRw5ZVXkv5ymtHDo+w5socOoQNUoFFp+NK/fIn463ESSxOS9IDRiFqtVobCIpEIhgID9d+085VgFYODJp7ct4/Bg/186i0jtukC8evjrBFFHPvzsO60Yqm0cOvdpbz0q+MczxznpSqJWaLNy+PG225jz44djM1YxuqdOkrKIHMsw+jsURrcR/j/A4sxaU1QAfOH4aHIO9QP2pnVYOQRv5+O/n62dHbS7Ab8sLZ2JRXVBhwOBwaDAcciB2KTSNqbRrVZhWWWheuuPvM3kA3fBwcHOXnyJCaTidraWkCiccplmdHRUSwWC1arVan/T1y1y8Ny53NOW7lyJStXrgTA/5CfH77wQ14OvQz7pPsvv/xyZs6cqTCPcsjhk4DcDmACZIPrtrY2Nm7cCEij/HfffTepVIrvfve7EIDZydm8PDNCy4wKrj6s567fOElfm4ZPSTME27dvzyotALyzciVvzZuH3WjkOzod9yBVE34bj9Pb0sKNNhtlcg37AAT/M0g4EsZaZ8VV62J/9X72de/LOuddd91FXl4eKpWKdDqN3+/n+PHjnDp1Cp1OR1NTE/tnz+aRnftY+PYQc3Re0nZpoCvQFUDVoUKsFtk3KrJfD844FBRAy3jsXAoQhdYxaDoOc71kN6wn7HxaGlB2Rhil1oIICIAn4sA74qcpKfC//vY6iouLs6iVQq+AcbuR8NIwlKIMNg3vH2bvr/byDu/gqffw+c9//hxeuczgqq+vV26LRqNkMpn3zsw5q8yze/duXnrppaxDvva1r+VUPHP4s0GuBHQehEIhXn75ZQ4fPqzctn79emn464CGB7/+IDQDpVJC8Hq9DMXj9FosNIypyDuhwr3EDfnS/UuXLj2nDLEL+D7SsOv9nFs+nug/K4oi8UfjnPrtKco/XU7R3xcRCoWUwabR0VE2bdpER0eH0n+oWFGBs8ZJeXk5arVa0fQZyWQINzdzg8fDrHHp5WQyyfDwMKOjowwPD6PWlfFOr5bLKkFbpuP34TChoSGafT4OPPouWucqpg0HYcYwrqAL73wVL3S1sNRUTNUpO8JsgWCJnj3xOPrWVupnzKC3vJxZDgcdWi31XhU7O+Ls3/s4V9SVctmMGQrzo7q6moKCAqm30CPCW9A7rZcX97yoJJgv/e2XyP/y1L65EwfDZMRiMVKp1AX9E853jskgiiKPPvqoQvUFKWF94xvfyJWIcvjYIpcAJqCjK8Xf/eO3qfaDvY5zGqpZrMTnQHtCy+WrL8f4L9LS2GKxUFlZqQzUiKLI6OgoTqfzgwsC3fD2T96m8Y5GNJWSKJtKpVIamYlEglAoxPHvHefVJ1+l+fpmWIsiEdDQ0KCsUEOhEN/73vcmfRqdTseCBQtQq9VKrd9iseDxeHA6nXTv6aayvRLt5Vp0VTo0Gg2PptM8dvo064xGNuj1RKNROjo6iMfjivm6z+ejp6dHsZts0el4NxA4f5vkbWAvkrT0lbBm2Rqsh6yU3VyGqU6aco1EIgoXXhbdm9ionUiflH+3Wq1KwkmlUoqB+8S/VSqVoqSk5JJZO8lkku985ztZt1VVVXHXXXdd0nlyyOHDxHtOAP+3vXMPjqu68/zn9EsttVpS62W1JMuWjSz8FCbmYQgETMDYAUNIEdbYhBQLFGSp7Gwlu4GaqhkqtVuZmcxMHqTGhM1AkWUIGIMDA8SGYGwMGBJj/JZtZIMtWY+WWq1+Sv26Z//ovtett6yXZel8qlSS7kv3Ht0+v3N+5/f7/oQQzwK3AR4p5ZL0truBJ4GFwJVSyr3p7VcCz+inAk9KKbcOcM1VwD8DNlIf+f8qpUz0Pa4vYzUAUkr2b9vPL//wVz6ryub6YzncUmam5+s91NbW4na7yc7O5g82G68IwQa7nQc+BZ4GHiElTDPEtcfbCDQ2NgKpZBld5bLvKLX1s1aefuJpAB79m0fp9OSwZcEZOt95pZddW7duHeWyHOdfnDhucyArJd3d3Xi9XuO6FovFyMrV0/tbW1txu92GkijAGSn5z0CAW2w2kqdPI4SgpKQEn89Hfn6+IZEQj8dxOBwp/aDubt7r7ORKs5kKqxWL10JwVxDPXA82t42enh5s22w433ISz4qz94q9A1qKVatWUVJSwuzZs406uwOhu8S8Xi9dXV1UVFQghMBqtfZaC9DXB0KhED6fj+rq6lH/v+LxOM3NzTz33HO9tldfeSXJtWtV4JDigjEWA3A9EAJ+n2EAFgIa8FvgxxkGIAeISSkTQgg3cAAoz+zchRAm4DRwk5TyhBDip8BpKeW/D/cQozUAUkq2bdvGl19+yTe838D82Rzev8HEbdk5zF5Lv0/laCP9NE3D7/ePqGbvSOjq6jIyJxcuXNjPAJyIRHgxHEbbnST4o6fJz4HPK+DwEvjx//5fbEyn4Z88eZLu7m6if4zCDhCrBKw9Vy4yFosZmjGRSARN0zh27BihUAibzcaCBQt6xWbrHWkoFMLlchmdsD4it9vtmEwmXK6U3LPJZKK7u5vGxka+/PJLTCYTS1qWYP/IjvsON0UPFaXUPTvs2F63Ybfaz2UWkwrZ3LlzJ4cOHerXRhs3bqSgoICsrCy8Xi+HDx+mLZnkoMXCxssuoy5drD0QCAyYYBQKhYzQ1uLi4nHRrtFVQ5PJJC0tLTz+8su9gsTuuusuli1bNua/o1CMlDG5gIQQc4E3dQOQsX0nGQagz75q4BOgoo8BKAH2SCkvSf9+HfCElHLtcPcxlhlAIBDgzJkztO1sQ7wpiK+Js2LjCsOlopdcHOvofbyNQDAY5NChQyxevBibLeWCsVgsHD16lJ9/8QWvh8Nk+eI82aoHo0YAABrLSURBVHgPG2WSA7Pb+UXHZmpy4OtLlpCdnc0ll1xCaWkpWZ4sxJ+FYdl0zZahslX1UXbfdtGVQvuS2Y6ZmbiQcp3p9YYP/PkA3g+8BOYGsJfbqampoaamxpDYhlRW6GAdss/n4ze/+U2vBD6A9evXs7umhs0mEyv37eOmUIj58+cD59xjmfV8HQ7HuGvj6KGrANFolJPRKO8Dq4Qg8dVXvPrqq72Of+KJJ5Sap2JCmTQDIIS4ilTtqznAfX1dQCLVk3wFfEdKuVcI8StglZRy6SB/+2HgYYCqqqqvnT59etj7HZJngZeg5zs9fHHNF0ZFK30kPBgDxZcPxngbgaamJj777DM8Hg92e6roybJly3ihqIhne3pYcLqdB97wMGdFNrnzc5kzZ86IFz+HY7COPhOHw2H4zvVZRF9MJpOha6Ofo3e8J0+eZPfu3Zw+fRopJddccw3Lly83VDYBQxhOd7X5/X7OnDlDVVUVRUVFNDU1sXnzZiC1hmP9xje4e8ECLsnJMeSfI5EI+fn5JJNJioqKsNvtNAJvR6NcF40ach9DKYyOhEwDoKPLHsC5ugSNjY189NFHHD9+3Dju7rvvZvHixaP+2wrFQFyIGcBC4HngeillT599K4F/ArJIKcV8S0o5RApVinFZBO7j35FS0t7ejt/vJ5lMYrVacbvd/RQLo9HooAZCStlvtDpWIxAOh4nH4zQ0NBiKipdddhlnzpzB7/dzvLOTT5xObLm5rC8uZkVa1GyyGekswmq19jIMoVDIqBymJ7JByoC8+eabhrpqWVkZ69ato7293ZitFRQUkJ+fP6iq5K5du84ldQF51dXEr7uOG6xWKtKuGb/fT0NDA6euuII37XY2uFw8lL6HSCRi3PNoGMgAZNLT00MsFutVXKazs5OdO3dy8OBB47jLL7+cNWvWjPo+FAqdSTcA6f3vA/9zsP3pY24BHpRSfne4+5iMTOBYLEZLSwvd3d2GX7ikpGTIc/RasX1j//XiIQUFBb1GyQOd39HRQUNDgzHa1ouNzJs3j2g0yuctLRwqLGR5IMAsKflPm43Xg0FuTia502xm+fLlEy7zO1pisRjRaHTAfZqm0dHRYbiZdEMajUZpbm6mvb2d3bt3YzKZ8GkasWXL+N4VV7AwXaIxc1bW3t6Ox+Mx1h9KS0s5dOgQf7d1a6bkEau+9jVcLhe1tbV02O3sNJu5CSjL+P/1k4AYIbp7aSQzMD3vBFIDDJvNZtRTPnv2LM8++6zh4rr00ku54YYbmDVrlgo3VZw3k2IA0n7/xvQi8BxgD7BMStnR57xSKaVHCJEFvA38HynljuHu40JIQbS3t9Pe3o7JZKKkpISCgoLz6miTyaShKaO39dmzZ2lubiYWi9HT04PFYmHu3LnMnz+fQCDQy6+t69m86XKxORzmHqeTH+Tm9prIuBMJ9u/fb5y3aNGiCS1MMt7onaZeK0GvFzB//nxjZmCz2XjZZuPpN95gXkODESB01113UVVVRTgcNhZxQ6GQUQC+o6OD3SdO8Ju2NgILF3J7LIbces4ruXjxYu68885+bi7dTXO+BIPBUckbHzp0iKVLB/SCEgwGeeaZZwwXktvt5rrrrqO6unpURkox8xhLFNAfgBuAYqAN+HugE3gKSCf5s19KuVoIcR/wOBAnFSX0UynlH9PXeZvUSL9ZCPFzUqGlJmCTlPKXI3mIC2EAdDRNo729nUAgYLg7Mj/kQgicTme/EVoymcTj8VBfX290yiUlJUb0jF7oPRKJEIvFMJlMmM1mQ4NelwP+Mh5nj9PJapNpyMgkKSX19fUEg0GESMlSzJ8//6IaNfp8PgoKCuju7jZmVSaTiUYp2SElV4XDlKdnTa+99hqQ8vsHqqt5bM0aFuXn09nZaUQf2Ww22m02dplM3OlyUaUrskrJCy+8wMl0dTSAhx9+mPLycnp6evppBw01i9MZzv0zGMePH6e2tnbY47q6unjllVeMqnM5OTlcccUVXHrppZSWlk7ZWaDiwqISwSYYfaTf1tZm1PnNzc0lGo3S2NiI2+3GYkkldOn7+6LX3IVUh6dpGp2dnTgcjmHdUIPh9Xo5efKkEddfWFhIdXX1lDUI8XicSCRidLT6+9nT02MkwullKjP5nabxb9u3s+jUKS5pbwdg9erVLHQuJLI9QstNJvbXzeLqQIB5fdpfd98lk0l+8YtfAFBcXMzy5ctZuXKlsYCth4vq6HUDMttytAbg2LFjXHrpped1TiAQYPv27b0y2Gtra1m+fDnl5eUjymxWzAyUAZhEotEoTU1NVFRUGElHuouhryCZviAI9JMz1gkGg0Yh8ry8vDG5dzo6Ovjyyy97dVpOp9OYlUxVwwCpdtWltuPxOE6n0+jkGoHX/X7W5eXh7OrCarWyadMmwh+G4TB4vr+UEz+5nXttNjakr5Gbm2uMmH0+H5FIhEgkQllZGTabjSNHjrBnzx6klFRlV3Ft+FoK7yxEq9CMjGTdWOkzv9EYgEgkgsfj6VUA/nwJBoN8/vnn7Nu3r1ep0Ztuuonq6mpKS0tH5dJSTA+UAZhEenp6CAQC2O12hEjp+GeKk8XjcUPBs+9C5nD4/X6jOtV4EQwGDW2gzPchNzeX/Px88vPzxyVHYjzRo7d0N42maTi6HAT+FMB6oxVTpQmHw4E4K5A7JL+LvcYu/1fMA+YXF3Pvvfca8hoOhwNN0+jq6qKtrY2CggKj1kBTUxPNzc0EXwmStSsL71VezKvN1NTUUF5e3m+x+HwMQE9PD6dOneLMmTMsWrRo3Aqo68apra2NHTt6L60VFhayfv16iouLp9T/UzGxKAMwieidgJ4JWlhYSFZWlqFhry9QTmV0l4ff76erq8swWLqUgh6tk5eX188NMtnoMg6z/jSL2Esx5HckfO/cc8C5PAJILbjqyVjZ2dl861vfora21tBDOnjwIE1NTVRXVzN79mwqKir6hQ/rC/l6nsTixYvJzs4mFApRVFQ0IqOeTCaNnIbs7GxDimMkSCkNGQuLxTJo+4fDYePvSCk5evQof/nLX3ods3r1aq6++mplEKYxygBMIsFgEIvFQmtrKy6Xy6jjOp6j9guF3uHpWj/BYJBwOGwYBIfDYXQkDofDqNg1EehuMSOpbAgNj8xZV2aiV3t7O1u2bKGtrQ1IRRtdddVV1NXVjbgUoZSSI0eO0NHRgd1uR9M0qqqqjEV+wOjgpZScPn2a7u5urFarUd8A+ofL2u32IXMABgs/1vfBuUAF3aDrNRRMJpMh57Fnzx5aWlqM+3zooYcoLCwc9rkVFw/KAEwSiUSCEydOYLFYKCsr6zXynK7oyWDJZLLXQqkexaO7WTJxOBxGzPtoOR93S2dnpzHCHqxT9fl8/OpXvzJ+f+yxx3C5XCOOrNHvJ5FI0NDQQDQaNWZ7euZyWVkZc+fONcp/DhVVlBkFBYwqvHQgpJQEAgG8Xq+RkKb/z7xeL++++y6Qck/+6Ec/UmsH0wBlACYBTdOor6/H5XJRXl5+oW/ngqMvkvaVh7Db7USj0VQFs/QIubi4+Lz1cDo7O7FaramOsUmMSMEvM9JqKB2gt956i7/+9a9AykWycuXKYe+nr0FqbW2lvr4ei8XCnDlzqKys7BXdNJKoIh1dV0nHbDaPixtRSonf7ycUCmEymbDb7UYSZENDAzt37iQ7O5sf/vCHKufgIkYZAMWUQR/Z6u4kKSVer9cYaTocDiorK0fsfgmFQvB74FWwfNdC9iMj66h0/zikRtd659zT04PX6wVSLpFf//rXxjmPPPIIZWVlA15Pr6dw+L3DdH/UTdmtZVSsqBhxPeGBdJT6ylfrJBIJw6UF56dVNRh6VnYsFjPcZIFAgH379rFv3z4qKip48MEHp/2MdjqiDIBiSqNpmrFIHg6HaWpqQtM08vPzKSsrG95dlPb/x2+IEylKzSxG0iHqI/FgMIimabS1tVFZWUlpaWm/Y9va2ti0aZPx+6OPPsqsWbOIRqO89uGHfBwKcYvbzarPFuPY6oD/AjxwPq3QHz1bPJOB8iD6alWNJGltKBKJBK2trUDKuGiaxpYtW+jo6GD9+vUjSlpTTB2UAVBclPj9flpbW4nFYobvvqysbNji7J2dnRQUFPTrBDM7ykyZ6kzXTEtLi7HPYrFQlC6lmUgkCIfDWK1WPv7jx3z48ofpsnHgW7GCo2vXst5k4oHRFpQYIZm5IzqZ7qy+7qXziS4aiFAoZOQWfPHFF+zatYuKigruu+++AWcniqmHMgCKixo96ig7Oxuv14vf7wdSnVtxcXE/N4vuGtI0jXg8boyYzyfvIhwO4/F4jKpigJETMf/D+fhe9OG614X/Tj//+PTTRhnRW1eu5NprrzUWvifaZZK5CK+TqTTaV9Jbj0gazd85cOAAiUSC3bt34/f7ueOOO1i6dOm45TAoJgZlABTTAn0RV4/micVivQxCTk4Oubm5vTokr9eL2WzGbDbjdruHdY1omsaRI0fweDxIKXG73dTU1NDR0WHoQAVPBMn7PI+8tXk4as+5W7q6uvjlL89JWz3++OMXZJSsu9QyP996RFJfYwGpdhsu2snj8ZCXl0c8Hsfj8dDR0cE777xDQUEBa9asYd68eWNyOykmDmUAFNMK3RD0rcMQiUQIBAKpEpPpjldXG9U0jZaWFqMTr6urIysrCyklHo+Hzs5OIBWNM3fu3CFnCh6Pp1cIpT7Kz5SnOHHiBC+++CIAS5cu5bbbbruglb8SiUS/RWZ98bhvTYeBDEdjYyOzZ882hAa7u7sJhUJ0dHRw9OhRuru7ufHGG1mwYIFaKJ5iKAOgmJaEw2HD1ZOZaNfT04PZbB40oUnTNA4ePEg4HKajo4M511zDvpISvimloRY6UoLBIH6/31BuHaia2AsvvGAkm82ePZt77rlnSiQG6vpKmWRnZxtZ0boryePxGAq2erhrIBCgubkZt9tNa2sreXl5fPzxx7S3t7Nx48Yp8XyKFMoAKKY1eiy7Tn5+/og7IE3T+IeGBt5xubg7K4v70tszs2iht4RHZjEXPdFtJKNeTdN46aWXOHHihLFt3bp11NXVTRkpZ5/Ph8fjwel0Gs8eiUSoqakBIFgfJGt3FjsdOzniOUJVVRUej4e2tjZKSkqMdZJbb711TKU1FeOHMgCKGYOe6ZppEKxWK3l5eYP640cSuKPH3kspz6vTH4r6+npefvnlXtuWLFnC6tWrxy3zd6zoMhG6i+iDn37A8T8fp/jqYuoeqUPTNEpLS5kzZw42m41IJGIsPutRU6qS2YVFGQDFjCYejxMIBIhGo73CP/XSm1OFSCTCiy++SFNTU799hYWFbNiwgaKiokm9J933H41G+dnPfgZ+2Fi6kUBdgPnXzh9W70lfNM6kpKRESUxMIsoAKBQZ6LHy+mKylBKHw4Hdbp9yse16kZw9e/bwySefDHiMHyj67nf53sKF572GMRTNzc2Ulpbi9XrZtGkTl112GfPmzWP27NmYTKZR6Tn1lfKWUpKXl6cK2EwgygAoFEOgx9L39PQYswQ9pHQqzRAgtfDd1dVFXl4eHo+HRCLBy/E4z2/ZwhJgOdAE7AVWAJVATU0Nt99+O/68vBHnqOnKpZFIhM2bN3PfffcZWcEul2tchQ4DgYBR8xhS+RqFhYUqrHScUAZAoThP9AgjXTxODznVPzN6COWF8G1rmkYwGDSSuo6Hw/w5kWBJWxtu4O9yc3nX6eTO/Hz+rbubTz/9lJ07d/I5cBiYD+Rardwwdy5znU6WLFmC2+3ulTF87NgxPB4PO3bsYMOGDVRWVhqlT3Nzcyd0xB6NRuns7DTWHcxmsxGFpDh/lAFQKMZI3wQqXb9f/wzpwm19DYLZbJ6wimr6PWWqkEopeT8U4rfBIHcFAiyTktzcXGbNmkWbzcY7UtIWifDG8eOsFoINDgenTp0ikUjgcDgIh8PEYjEOHjwInNM8CgaD5ObmcvbsWQoKCiY1zDORSODz+QwJDD081WKxYLfb1UxhGAYzACp/W6EYIcPJL8fj8V4GQScajfaq05uJlNKYSehy0OfTmeXk5JBMJvH7/TgcDqM62Cqnk1VOJ5SXG+sdjY2NxONxrgWCTif5NTV802SCs2cpLCyktraWUCjEvn37jM7/iSeeMEbdesJbd3c3brd7xPc4HlgsFkpKSozfdamPaDSK3+9H0zQjm3km1OAYL5QBUCjGCavVOuh6gcvlGnC7lNIwHMlkEo/H0ysjdzBcLpfhrjGbzeTn5xMKhRBC9Iu910fLmSP2QCAAx44RNpvRNA2bzcapU6d4/fXXAbj66qtZtGjRgJE6eXl5+P3+C1o1TAjRrxhQOBwmkUhw5swZY5FaMTTKACgUFxAhBDabzehoRxJVI6Wkq6sLn8/Xb188HufMmTP9QjP1AjImk8lwSZWWluJ2uwkGgzz11FMALFy4kMWLF1NZWUl+fj5+v5/c3FwjSU13E2Uu2E4VdMNns9loaWkhNze3V1lORX+UAVAoLjKEELhcrkFnFZAa4VutVmOWoBeb0Wsj+3w+wuEw27ZtMxK97rnnHsNImEwmhBAUFBQQDAbp6emhqKiIUChEXl6eUY95KpKdnU15eTmhUIhgMEhnZye5ubmjdg1pmkYsFiMejyOEICsra8pFho0WZQAUimlIXl6esfaQn59v+Mbj8TjBYJCmpiZ27doFpDr+iooKotEoTU1NVFZW9urgnE4n3d3dRsGeiwHdReR0OkkmkwSDQZqbm2kGPhCC64GKPudkivr1vZbNZsNqtaJpGj6fr1et5qGQUuJ0OrHZbFNyJqIMgEIxTcnKysJms+H3+8nOziYQCLBt2zZOnjwJpNYsbrzxRiwWC7FYDJPJRElJCaFQqNfsAVJVyCwWC11dXcZIWtO0i8LPbjabKSgooKCggO3AdsAFXDEJf7u9vR1gyoavqjBQhWIGcPToUTZv3sz69espLi7m3Xffpb29Ha/XS0lJCUuWLOHo0aOsWbMGIQQWiwWz2cysWbMADJ+/0+nE7/eTTCax2Wz9FmKnOhNcrG3KovIAFIoZztatW9nb0EBTfj7frKpiUUkJJSUlxGIxPvjgA6P0ZiZ1dXVcddVV5OTkEA6HcTqd5OTk0NraSjwe7+cuUkxNVB6AQjHD+fa3v40P+Kijg4/ffx/fiRNGERxIuXluvvlmioqK6OrqIh6P895773HgwIERXf+SSy5h6dKl1NXVTdATKMYbZQAUihnEzQDFxdx89939XCCHDx9m+/btA4Z4LliwgJqaGnJycvD7/djtdrq7u3n//feNBdGGhgauu+66CX8GxfgxrAtICPEscBvgkVIuSW+7G3gSWAhcKaXcm95+JfCMfirwpJRy6wDXvAn4OWACQsD3pZQNw92scgEpFJNPLBZj8+bNNDT0/4i6XC40TcNsNnP//fePSh1UMfGMeg1ACHE9qU769xkGYCGgAb8FfpxhAHKAmJQyIYRwAweAcillos81TwB3SCnrhRA/IGVEvj/cQygDoFAoFOfPqNcApJQfCCHm9tlWn75o32MzK07bgcGsiwR0KcF8oHm4+1AoFArF+DLuawBCiKuAZ4E5wH19R/9pHgTeFkJ0AwHg6iGu9zDwMEBVVdV4365CoVDMWMY9i0NK+amUcjGpPIsnhBADpb/9D2CtlLISeA741yGu94yUcoWUckWmGqBCoVAoxsaEpfGl3URhYEnmdiFECVAnpfw0vell4JqJug+FQqFQDMy4GgAhRLUQwpL+eQ5QC3zV5zAfkC+EWJD+/WagfjzvQ6FQKBTDM+wagBDiD8ANQLEQogn4e6ATeAooAd4SQuyXUq4Gvg48LoSIk4oS+oGUsiN9nbeBB6WUzUKIh4BXhRAaKYPwwPg/mkKhUCiGQklBKBQKxTRnsDDQqS/lp1AoFIoJQRkAhUKhmKFcVC4gIUQ7cPpC38cYKAY6LvRNTHFUGw2Nap/hUW3UnzlSyn5x9BeVAbjYEULsHcgPpziHaqOhUe0zPKqNRo5yASkUCsUMRRkAhUKhmKEoAzC5PDP8ITMe1UZDo9pneFQbjRC1BqBQKBQzFDUDUCgUihmKMgAKhUIxQ1EGYJQIIWYLId4XQtQLIY4IIf57evvPhRDHhBAHhRBbhRAFg5z/lRDikBBivxBib8b2QiHEu0KIL9LfXZP1TOPJBLbPk0KIs+nt+4UQayfrmcabcWijAiHElvSx9UKIlent6h1iyPaZNu/QWFFrAKMkXfLSLaXcJ4RwAp8BdwKVwI50Wcx/BJBS/mSA878CVuhieRnb/wnolFL+gxDiccA10PlTnQlsnyeBkJTynyf4ESaccWij54HdUsrfCSFsQI6Usku9Q8b5g7XPk0yTd2isqBnAKJFStkgp96V/DpKStK6QUr6TUQXtE1Iv6/lwB/B8+ufnSb3wFx0T2D7ThrG0kRAiD7ge+Pf0+TEpZVd694x/h4ZpH0UaZQDGAZGqmbwc+LTPrgeAPw1ymgTeEUJ8li57qTNLStkCqQ8AUDq+dzv5jHP7ADyWnv4/e7G6N/oyijaaB7QDzwkhPhdC/E4I4UjvU+/Q0O0D0/AdGg3KAIwRIUQu8CrwN1LKQMb2vwUSwH8Mcuq1UsrLgTXAfxNCXD/hN3sBmID22QTMBy4DWoB/mah7nyxG2UYW4HJgk5RyOanqe49Pwu1OOhPQPtPuHRotygCMASGEldSL+R9Sytcytt8P3AZskIMsskgpm9PfPcBW4Mr0rra071P3gXom7gkmloloHyllm5QyKaXUgP/LuXa7KBlDGzUBTRmlVbeQ6vBAvUMwRPtMt3doLCgDMEqEEIKUf7FeSvmvGdtvBX4CrJNSRgY515Fe1CI9Lb0FOJze/QZwf/rn+4HXJ+YJJpaJah+9Y0vzbc6120XHWNpIStkKNAohatObbgKOpn+e8e/QUO0znd6hMSOlVF+j+CJV/lICB4H96a+1QAPQmLHt6fTx5cDb6Z/nAQfSX0eAv824bhHwHvBF+nvhhX7WKdY+/w84lL7uG6SiRC748052G6V/vwzYmz7/j6SifdQ7NHz7TJt3aKxfKgxUoVAoZijKBaRQKBQzFGUAFAqFYoaiDIBCoVDMUJQBUCgUihmKMgAKhUIxQ1EGQKFQKGYoygAoFArFDOX/A/x18GtMpKyyAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# example plot\n",
"an_id = list(IDs)[123]\n",
"a_gps_df = GPS_ddf[an_id]\n",
"an_od_df = OD_ddf[an_id]\n",
"\n",
"plt.plot(a_gps_df[\"lat\"], a_gps_df[\"lon\"], linewidth=.1, alpha=.5, color=\"black\")\n",
"plt.scatter(an_od_df[\"plat\"], an_od_df[\"plon\"], s=2, color=\"magenta\", alpha=.5)\n",
"plt.scatter(an_od_df[\"dlat\"], an_od_df[\"dlon\"], s=2, color=\"cyan\", alpha=.5)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>dtime</th>\n",
" <th>plon</th>\n",
" <th>plat</th>\n",
" <th>dlon</th>\n",
" <th>dlat</th>\n",
" <th>pRID</th>\n",
" <th>dRID</th>\n",
" </tr>\n",
" <tr>\n",
" <th>ptime</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1404361394</th>\n",
" <td>1404361974</td>\n",
" <td>114.107201</td>\n",
" <td>22.612200</td>\n",
" <td>114.119202</td>\n",
" <td>22.554600</td>\n",
" <td>196</td>\n",
" <td>273</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1404368281</th>\n",
" <td>1404368589</td>\n",
" <td>114.138397</td>\n",
" <td>22.545000</td>\n",
" <td>114.125999</td>\n",
" <td>22.549200</td>\n",
" <td>172</td>\n",
" <td>178</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1404385739</th>\n",
" <td>1404386227</td>\n",
" <td>114.132896</td>\n",
" <td>22.579599</td>\n",
" <td>114.118698</td>\n",
" <td>22.562500</td>\n",
" <td>191</td>\n",
" <td>276</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1404393106</th>\n",
" <td>1404393498</td>\n",
" <td>114.040802</td>\n",
" <td>22.531300</td>\n",
" <td>114.024101</td>\n",
" <td>22.539000</td>\n",
" <td>237</td>\n",
" <td>251</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1404393609</th>\n",
" <td>1404394342</td>\n",
" <td>114.025002</td>\n",
" <td>22.538700</td>\n",
" <td>114.079002</td>\n",
" <td>22.540600</td>\n",
" <td>251</td>\n",
" <td>284</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1405731621</th>\n",
" <td>1405732016</td>\n",
" <td>114.115097</td>\n",
" <td>22.580099</td>\n",
" <td>114.110199</td>\n",
" <td>22.598499</td>\n",
" <td>200</td>\n",
" <td>188</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1405735246</th>\n",
" <td>1405735979</td>\n",
" <td>114.081398</td>\n",
" <td>22.556000</td>\n",
" <td>114.047699</td>\n",
" <td>22.535000</td>\n",
" <td>213</td>\n",
" <td>235</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1405736910</th>\n",
" <td>1405737634</td>\n",
" <td>114.042297</td>\n",
" <td>22.558599</td>\n",
" <td>114.088501</td>\n",
" <td>22.543200</td>\n",
" <td>292</td>\n",
" <td>283</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1405738016</th>\n",
" <td>1405738598</td>\n",
" <td>114.081497</td>\n",
" <td>22.540199</td>\n",
" <td>114.043602</td>\n",
" <td>22.527599</td>\n",
" <td>283</td>\n",
" <td>237</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1405739091</th>\n",
" <td>1405740116</td>\n",
" <td>114.047997</td>\n",
" <td>22.535000</td>\n",
" <td>114.046204</td>\n",
" <td>22.597200</td>\n",
" <td>235</td>\n",
" <td>340</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>370 rows × 7 columns</p>\n",
"</div>"
],
"text/plain": [
" dtime plon plat dlon dlat pRID \\\n",
"ptime \n",
"1404361394 1404361974 114.107201 22.612200 114.119202 22.554600 196 \n",
"1404368281 1404368589 114.138397 22.545000 114.125999 22.549200 172 \n",
"1404385739 1404386227 114.132896 22.579599 114.118698 22.562500 191 \n",
"1404393106 1404393498 114.040802 22.531300 114.024101 22.539000 237 \n",
"1404393609 1404394342 114.025002 22.538700 114.079002 22.540600 251 \n",
"... ... ... ... ... ... ... \n",
"1405731621 1405732016 114.115097 22.580099 114.110199 22.598499 200 \n",
"1405735246 1405735979 114.081398 22.556000 114.047699 22.535000 213 \n",
"1405736910 1405737634 114.042297 22.558599 114.088501 22.543200 292 \n",
"1405738016 1405738598 114.081497 22.540199 114.043602 22.527599 283 \n",
"1405739091 1405740116 114.047997 22.535000 114.046204 22.597200 235 \n",
"\n",
" dRID \n",
"ptime \n",
"1404361394 273 \n",
"1404368281 178 \n",
"1404385739 276 \n",
"1404393106 251 \n",
"1404393609 284 \n",
"... ... \n",
"1405731621 188 \n",
"1405735246 235 \n",
"1405736910 283 \n",
"1405738016 237 \n",
"1405739091 340 \n",
"\n",
"[370 rows x 7 columns]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ID = list(IDs)[0]\n",
"\n",
"df = OD_ddf[ID]\n",
"\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def get_demand_from_df(df):\n",
" demand = np.zeros((NN, 492))\n",
" demand.dtype = np.int\n",
" for row_idx in range(len(df)):\n",
" ts = time_to_index(df.index[row_idx])\n",
" rid = df[\"pRID\"].iloc[row_idx]\n",
" demand[ts][rid] += 1\n",
" \n",
" return demand"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0, 0, 0, ..., 0, 0, 0],\n",
" [0, 0, 0, ..., 0, 0, 0],\n",
" [0, 0, 0, ..., 0, 0, 0],\n",
" ...,\n",
" [0, 0, 0, ..., 0, 0, 0],\n",
" [0, 0, 0, ..., 0, 0, 0],\n",
" [0, 0, 0, ..., 0, 0, 0]])"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"get_demand_from_df(OD_ddf[ID])"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"370"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.sum(get_demand_from_df(OD_ddf[ID])) # should equal number of rows. good!"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Operating on id 0 of 645\n",
"Operating on id 100 of 645\n",
"Operating on id 200 of 645\n",
"Operating on id 300 of 645\n",
"Operating on id 400 of 645\n",
"Operating on id 500 of 645\n",
"Operating on id 600 of 645\n"
]
}
],
"source": [
"# Let's redo the demand processing\n",
"demand = np.zeros((NN, 492))\n",
"\n",
"for idx, ID in enumerate(list(IDs)):\n",
" if idx % 100 == 0:\n",
" print(f\"Operating on id {idx} of 645\")\n",
" \n",
" demand += get_demand_from_df(OD_ddf[ID])"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"222787.0"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.sum(demand) # let's see what this sums to"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"# write to csv\n",
"pd.DataFrame(demand).astype(int).to_csv(\"./data/demand_only-overlapping-ids.csv\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# TODO - REPROCESS DEMAND USING ONLY THESE IDs\n",
"# TODO - TRAFFIC EVENT EXTRACTION"
]
}
],
"metadata": {
"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.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}