{ "cells": [ { "cell_type": "markdown", "id": "9da58f3a", "metadata": {}, "source": [ "# pandas" ] }, { "cell_type": "code", "execution_count": 1, "id": "b5d78ee7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'2.3.1'" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "import pandas as pd\n", "pd.__version__" ] }, { "cell_type": "markdown", "id": "a35d5cba", "metadata": {}, "source": [ "nlargest" ] }, { "cell_type": "markdown", "id": "9c7874af", "metadata": {}, "source": [ "data[['far_price', 'near_price']] = data[['far_price', 'near_price']].fillna(data['reference_price'])" ] }, { "cell_type": "markdown", "id": "2c3ee57f", "metadata": {}, "source": [ "dropna, drop行" ] }, { "cell_type": "markdown", "id": "576e0b9b", "metadata": {}, "source": [ ".all(axis=1)" ] }, { "cell_type": "markdown", "id": "3df7206c", "metadata": {}, "source": [ ".any()" ] }, { "cell_type": "markdown", "id": "0bd65033", "metadata": {}, "source": [ "## quickstart" ] }, { "cell_type": "code", "execution_count": 16, "id": "d140e2b8", "metadata": {}, "outputs": [], "source": [ "df = pd.DataFrame({\n", " 'height':[1,2,3],\n", " 'score':[0,1,2]\n", "})" ] }, { "cell_type": "code", "execution_count": 17, "id": "6be34959", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
heightscore
232
121
010
\n", "
" ], "text/plain": [ " height score\n", "2 3 2\n", "1 2 1\n", "0 1 0" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.sort_values(by='score', ascending=False)" ] }, { "cell_type": "markdown", "id": "4b52807b", "metadata": {}, "source": [ "### 对象创建" ] }, { "cell_type": "markdown", "id": "9d0d719e", "metadata": {}, "source": [ "通过一个list创建 series,默认索引为`RangeIndex`" ] }, { "cell_type": "code", "execution_count": 18, "id": "ae539fb3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 1.0\n", "1 2.0\n", "2 NaN\n", "3 4.0\n", "dtype: float64" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = pd.Series([1,2, np.nan, 4])\n", "s" ] }, { "cell_type": "markdown", "id": "9167b732", "metadata": {}, "source": [ "通过`date_range`创建df, 带有时间索引" ] }, { "cell_type": "code", "execution_count": 19, "id": "1e9d333f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DatetimeIndex(['2020-10-10', '2020-10-11', '2020-10-12', '2020-10-13',\n", " '2020-10-14', '2020-10-15'],\n", " dtype='datetime64[us]', freq='D')" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dates = pd.date_range('20201010', periods=6)\n", "dates" ] }, { "cell_type": "code", "execution_count": 20, "id": "0eda0833", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCD
2020-10-10-0.987835-0.3008751.914156-0.911640
2020-10-11-1.8068210.835906-0.3310150.094304
2020-10-120.506742-0.0206020.216988-2.628958
2020-10-130.9672781.7586840.758026-0.418628
2020-10-14-0.259991-0.1656940.3138320.581593
2020-10-15-0.324487-1.1976321.761982-0.595702
\n", "
" ], "text/plain": [ " A B C D\n", "2020-10-10 -0.987835 -0.300875 1.914156 -0.911640\n", "2020-10-11 -1.806821 0.835906 -0.331015 0.094304\n", "2020-10-12 0.506742 -0.020602 0.216988 -2.628958\n", "2020-10-13 0.967278 1.758684 0.758026 -0.418628\n", "2020-10-14 -0.259991 -0.165694 0.313832 0.581593\n", "2020-10-15 -0.324487 -1.197632 1.761982 -0.595702" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame(\n", " np.random.randn(6, 4),\n", " index = dates,\n", " columns = list('ABCD')\n", ")\n", "df" ] }, { "cell_type": "markdown", "id": "b1783201", "metadata": {}, "source": [ "通过字典创建 df" ] }, { "cell_type": "code", "execution_count": 21, "id": "4ff04a46", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCDEF
01.02020-10-101.03testFOO
11.02020-10-101.03trainFOO
21.02020-10-101.03testFOO
31.02020-10-101.03trainFOO
\n", "
" ], "text/plain": [ " A B C D E F\n", "0 1.0 2020-10-10 1.0 3 test FOO\n", "1 1.0 2020-10-10 1.0 3 train FOO\n", "2 1.0 2020-10-10 1.0 3 test FOO\n", "3 1.0 2020-10-10 1.0 3 train FOO" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2 = pd.DataFrame(\n", " {\n", " 'A': 1.0,\n", " 'B': pd.Timestamp('20201010'),\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", " }\n", ")\n", "df2" ] }, { "cell_type": "code", "execution_count": 22, "id": "38d1c4dd", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "A float64\n", "B datetime64[us]\n", "C float32\n", "D int32\n", "E category\n", "F str\n", "dtype: object" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.dtypes" ] }, { "cell_type": "markdown", "id": "cfa39803", "metadata": {}, "source": [ "### dtypes\n", "- pandas 会有逻辑类型和存储类型之分\n", "- `select_dtypes`的是逻辑类型\n", "- `dtypes`是存储类型\n", "- 常见的,\n", " - `number`逻辑类型包含`int64, float32`等等;\n", " - `object`包含`object`等\n", " - `str`\n", " - `category`: 常常应该把Object类型转换为这个,其他如lgbm才会处理\n", " - `bool`\n", " - `datetime`" ] }, { "cell_type": "code", "execution_count": null, "id": "b168871b", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'pd' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[1], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m df \u001b[38;5;241m=\u001b[39m \u001b[43mpd\u001b[49m\u001b[38;5;241m.\u001b[39mDataFrame(\n\u001b[0;32m 2\u001b[0m {\n\u001b[0;32m 3\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mA\u001b[39m\u001b[38;5;124m\"\u001b[39m: np\u001b[38;5;241m.\u001b[39mrandom\u001b[38;5;241m.\u001b[39mrand(\u001b[38;5;241m3\u001b[39m),\n\u001b[0;32m 4\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mB\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;241m1\u001b[39m,\n\u001b[0;32m 5\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mC\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfoo\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 6\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mD\u001b[39m\u001b[38;5;124m\"\u001b[39m: pd\u001b[38;5;241m.\u001b[39mTimestamp(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m20010102\u001b[39m\u001b[38;5;124m\"\u001b[39m),\n\u001b[0;32m 7\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mE\u001b[39m\u001b[38;5;124m\"\u001b[39m: pd\u001b[38;5;241m.\u001b[39mSeries([\u001b[38;5;241m1.0\u001b[39m] \u001b[38;5;241m*\u001b[39m \u001b[38;5;241m3\u001b[39m)\u001b[38;5;241m.\u001b[39mastype(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfloat32\u001b[39m\u001b[38;5;124m\"\u001b[39m),\n\u001b[0;32m 8\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mF\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m 9\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mG\u001b[39m\u001b[38;5;124m\"\u001b[39m: pd\u001b[38;5;241m.\u001b[39mSeries([\u001b[38;5;241m1\u001b[39m] \u001b[38;5;241m*\u001b[39m \u001b[38;5;241m3\u001b[39m, dtype\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mint8\u001b[39m\u001b[38;5;124m\"\u001b[39m),\n\u001b[0;32m 10\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mH\u001b[39m\u001b[38;5;124m\"\u001b[39m: pd\u001b[38;5;241m.\u001b[39mSeries([\u001b[38;5;241m1\u001b[39m] \u001b[38;5;241m*\u001b[39m \u001b[38;5;241m3\u001b[39m, dtype\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mint8\u001b[39m\u001b[38;5;124m\"\u001b[39m),\n\u001b[0;32m 11\u001b[0m }\n\u001b[0;32m 12\u001b[0m )\n", "\u001b[1;31mNameError\u001b[0m: name 'pd' is not defined" ] } ], "source": [ "df = pd.DataFrame(\n", " {\n", " \"A\": np.random.rand(3),\n", " \"B\": 1,\n", " \"C\": \"foo\",\n", " \"D\": pd.Timestamp(\"20010102\"),\n", " \"E\": pd.Series([1.0] * 3).astype(\"float32\"),\n", " \"F\": False,\n", " \"G\": pd.Series([1] * 3, dtype=\"int8\"),\n", " \"H\": pd.Series([1] * 3, dtype=\"int8\"),\n", " }\n", ")\n", "df" ] }, { "cell_type": "code", "execution_count": null, "id": "8a5ed0c2", "metadata": {}, "outputs": [], "source": [ " traindata.select_dtypes(include=['datetime']).columns\n" ] }, { "cell_type": "code", "execution_count": 23, "id": "ec9bce97", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "A float64\n", "B int64\n", "C str\n", "D datetime64[us]\n", "E float32\n", "F bool\n", "G int8\n", "dtype: object" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.dtypes" ] }, { "cell_type": "code", "execution_count": 24, "id": "2122f05b", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
C
0foo
1foo
2foo
\n", "
" ], "text/plain": [ " C\n", "0 foo\n", "1 foo\n", "2 foo" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.select_dtypes(include=['str'])" ] }, { "cell_type": "code", "execution_count": 25, "id": "f025fa2c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABEG
00.91044211.01
10.50455711.01
20.07111611.01
\n", "
" ], "text/plain": [ " A B E G\n", "0 0.910442 1 1.0 1\n", "1 0.504557 1 1.0 1\n", "2 0.071116 1 1.0 1" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.select_dtypes(include=['number'])" ] }, { "cell_type": "markdown", "id": "5e73a77a", "metadata": {}, "source": [ "### view data" ] }, { "cell_type": "code", "execution_count": 23, "id": "a476dc20", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCD
2020-10-10-0.987835-0.3008751.914156-0.911640
2020-10-11-1.8068210.835906-0.3310150.094304
2020-10-120.506742-0.0206020.216988-2.628958
2020-10-130.9672781.7586840.758026-0.418628
2020-10-14-0.259991-0.1656940.3138320.581593
\n", "
" ], "text/plain": [ " A B C D\n", "2020-10-10 -0.987835 -0.300875 1.914156 -0.911640\n", "2020-10-11 -1.806821 0.835906 -0.331015 0.094304\n", "2020-10-12 0.506742 -0.020602 0.216988 -2.628958\n", "2020-10-13 0.967278 1.758684 0.758026 -0.418628\n", "2020-10-14 -0.259991 -0.165694 0.313832 0.581593" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 24, "id": "9427e942", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCD
2020-10-11-1.8068210.835906-0.3310150.094304
2020-10-120.506742-0.0206020.216988-2.628958
2020-10-130.9672781.7586840.758026-0.418628
2020-10-14-0.259991-0.1656940.3138320.581593
2020-10-15-0.324487-1.1976321.761982-0.595702
\n", "
" ], "text/plain": [ " A B C D\n", "2020-10-11 -1.806821 0.835906 -0.331015 0.094304\n", "2020-10-12 0.506742 -0.020602 0.216988 -2.628958\n", "2020-10-13 0.967278 1.758684 0.758026 -0.418628\n", "2020-10-14 -0.259991 -0.165694 0.313832 0.581593\n", "2020-10-15 -0.324487 -1.197632 1.761982 -0.595702" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.tail()" ] }, { "cell_type": "code", "execution_count": 25, "id": "d9ae8360", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DatetimeIndex(['2020-10-10', '2020-10-11', '2020-10-12', '2020-10-13',\n", " '2020-10-14', '2020-10-15'],\n", " dtype='datetime64[us]', freq='D')" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.index" ] }, { "cell_type": "code", "execution_count": 26, "id": "d032d006", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['A', 'B', 'C', 'D'], dtype='str')" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.columns" ] }, { "cell_type": "code", "execution_count": 27, "id": "5d641911", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[-0.98783525, -0.30087463, 1.91415639, -0.91164047],\n", " [-1.80682121, 0.83590589, -0.33101498, 0.0943043 ],\n", " [ 0.50674201, -0.02060168, 0.21698811, -2.62895756],\n", " [ 0.96727811, 1.75868444, 0.7580259 , -0.41862832],\n", " [-0.25999123, -0.16569436, 0.31383164, 0.5815927 ],\n", " [-0.32448715, -1.1976322 , 1.76198225, -0.59570173]])" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.to_numpy()" ] }, { "cell_type": "code", "execution_count": 28, "id": "cefc667d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1.0, Timestamp('2020-10-10 00:00:00'), 1.0, 3, 'test', 'FOO'],\n", " [1.0, Timestamp('2020-10-10 00:00:00'), 1.0, 3, 'train', 'FOO'],\n", " [1.0, Timestamp('2020-10-10 00:00:00'), 1.0, 3, 'test', 'FOO'],\n", " [1.0, Timestamp('2020-10-10 00:00:00'), 1.0, 3, 'train', 'FOO']],\n", " dtype=object)" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.to_numpy()" ] }, { "cell_type": "code", "execution_count": 29, "id": "57d0c476", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCD
count6.0000006.0000006.0000006.000000
mean-0.3175190.1516310.772328-0.646505
std1.0000811.0204400.8965911.105617
min-1.806821-1.197632-0.331015-2.628958
25%-0.821998-0.2670800.241199-0.832656
50%-0.292239-0.0931480.535929-0.507165
75%0.3150590.6217791.510993-0.033929
max0.9672781.7586841.9141560.581593
\n", "
" ], "text/plain": [ " A B C D\n", "count 6.000000 6.000000 6.000000 6.000000\n", "mean -0.317519 0.151631 0.772328 -0.646505\n", "std 1.000081 1.020440 0.896591 1.105617\n", "min -1.806821 -1.197632 -0.331015 -2.628958\n", "25% -0.821998 -0.267080 0.241199 -0.832656\n", "50% -0.292239 -0.093148 0.535929 -0.507165\n", "75% 0.315059 0.621779 1.510993 -0.033929\n", "max 0.967278 1.758684 1.914156 0.581593" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.describe()" ] }, { "cell_type": "code", "execution_count": 30, "id": "a9e00634", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
2020-10-102020-10-112020-10-122020-10-132020-10-142020-10-15
A-0.987835-1.8068210.5067420.967278-0.259991-0.324487
B-0.3008750.835906-0.0206021.758684-0.165694-1.197632
C1.914156-0.3310150.2169880.7580260.3138321.761982
D-0.9116400.094304-2.628958-0.4186280.581593-0.595702
\n", "
" ], "text/plain": [ " 2020-10-10 2020-10-11 2020-10-12 2020-10-13 2020-10-14 2020-10-15\n", "A -0.987835 -1.806821 0.506742 0.967278 -0.259991 -0.324487\n", "B -0.300875 0.835906 -0.020602 1.758684 -0.165694 -1.197632\n", "C 1.914156 -0.331015 0.216988 0.758026 0.313832 1.761982\n", "D -0.911640 0.094304 -2.628958 -0.418628 0.581593 -0.595702" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.T" ] }, { "cell_type": "code", "execution_count": 31, "id": "6a79e96c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DCBA
2020-10-10-0.9116401.914156-0.300875-0.987835
2020-10-110.094304-0.3310150.835906-1.806821
2020-10-12-2.6289580.216988-0.0206020.506742
2020-10-13-0.4186280.7580261.7586840.967278
2020-10-140.5815930.313832-0.165694-0.259991
2020-10-15-0.5957021.761982-1.197632-0.324487
\n", "
" ], "text/plain": [ " D C B A\n", "2020-10-10 -0.911640 1.914156 -0.300875 -0.987835\n", "2020-10-11 0.094304 -0.331015 0.835906 -1.806821\n", "2020-10-12 -2.628958 0.216988 -0.020602 0.506742\n", "2020-10-13 -0.418628 0.758026 1.758684 0.967278\n", "2020-10-14 0.581593 0.313832 -0.165694 -0.259991\n", "2020-10-15 -0.595702 1.761982 -1.197632 -0.324487" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.sort_index(axis=1, ascending=False) # 索引(列)排序" ] }, { "cell_type": "code", "execution_count": 32, "id": "3f4a1035", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCD
2020-10-15-0.324487-1.1976321.761982-0.595702
2020-10-10-0.987835-0.3008751.914156-0.911640
2020-10-14-0.259991-0.1656940.3138320.581593
2020-10-120.506742-0.0206020.216988-2.628958
2020-10-11-1.8068210.835906-0.3310150.094304
2020-10-130.9672781.7586840.758026-0.418628
\n", "
" ], "text/plain": [ " A B C D\n", "2020-10-15 -0.324487 -1.197632 1.761982 -0.595702\n", "2020-10-10 -0.987835 -0.300875 1.914156 -0.911640\n", "2020-10-14 -0.259991 -0.165694 0.313832 0.581593\n", "2020-10-12 0.506742 -0.020602 0.216988 -2.628958\n", "2020-10-11 -1.806821 0.835906 -0.331015 0.094304\n", "2020-10-13 0.967278 1.758684 0.758026 -0.418628" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.sort_values(by='B') # 行排序" ] }, { "cell_type": "code", "execution_count": null, "id": "df6150ad", "metadata": {}, "outputs": [], "source": [ "df.info()" ] }, { "cell_type": "markdown", "id": "6f4e2cf5", "metadata": {}, "source": [ "### selection" ] }, { "cell_type": "markdown", "id": "1ecb99f9", "metadata": {}, "source": [ "#### []" ] }, { "cell_type": "code", "execution_count": 33, "id": "ef77cc28", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2020-10-10 -0.987835\n", "2020-10-11 -1.806821\n", "2020-10-12 0.506742\n", "2020-10-13 0.967278\n", "2020-10-14 -0.259991\n", "2020-10-15 -0.324487\n", "Freq: D, Name: A, dtype: float64" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['A']" ] }, { "cell_type": "markdown", "id": "d6805ce1", "metadata": {}, "source": [ "如果列名只包括字母、数、下户线,就可以这样获取" ] }, { "cell_type": "markdown", "id": "2ebaca31", "metadata": {}, "source": [] }, { "cell_type": "code", "execution_count": 34, "id": "b1bd27ae", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2020-10-10 -0.987835\n", "2020-10-11 -1.806821\n", "2020-10-12 0.506742\n", "2020-10-13 0.967278\n", "2020-10-14 -0.259991\n", "2020-10-15 -0.324487\n", "Freq: D, Name: A, dtype: float64" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.A" ] }, { "cell_type": "code", "execution_count": 35, "id": "cb8cdf2d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AB
2020-10-10-0.987835-0.300875
2020-10-11-1.8068210.835906
2020-10-120.506742-0.020602
2020-10-130.9672781.758684
2020-10-14-0.259991-0.165694
2020-10-15-0.324487-1.197632
\n", "
" ], "text/plain": [ " A B\n", "2020-10-10 -0.987835 -0.300875\n", "2020-10-11 -1.806821 0.835906\n", "2020-10-12 0.506742 -0.020602\n", "2020-10-13 0.967278 1.758684\n", "2020-10-14 -0.259991 -0.165694\n", "2020-10-15 -0.324487 -1.197632" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[['A', 'B']]" ] }, { "cell_type": "markdown", "id": "cb5e333b", "metadata": {}, "source": [ "获取行" ] }, { "cell_type": "code", "execution_count": 36, "id": "7c798968", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCD
2020-10-10-0.987835-0.3008751.914156-0.911640
2020-10-11-1.8068210.835906-0.3310150.094304
2020-10-120.506742-0.0206020.216988-2.628958
\n", "
" ], "text/plain": [ " A B C D\n", "2020-10-10 -0.987835 -0.300875 1.914156 -0.911640\n", "2020-10-11 -1.806821 0.835906 -0.331015 0.094304\n", "2020-10-12 0.506742 -0.020602 0.216988 -2.628958" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[0:3] " ] }, { "cell_type": "code", "execution_count": null, "id": "bd1ae739", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "57d9cebd", "metadata": {}, "source": [ "#### loc" ] }, { "cell_type": "code", "execution_count": 37, "id": "4a23b0d4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Timestamp('2020-10-10 00:00:00')" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dates[0]" ] }, { "cell_type": "code", "execution_count": 38, "id": "76e49b54", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "A -0.987835\n", "B -0.300875\n", "C 1.914156\n", "D -0.911640\n", "Name: 2020-10-10 00:00:00, dtype: float64" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.loc[dates[0]]" ] }, { "cell_type": "code", "execution_count": 39, "id": "88028300", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AB
2020-10-10-0.987835-0.300875
2020-10-11-1.8068210.835906
2020-10-120.506742-0.020602
2020-10-130.9672781.758684
2020-10-14-0.259991-0.165694
2020-10-15-0.324487-1.197632
\n", "
" ], "text/plain": [ " A B\n", "2020-10-10 -0.987835 -0.300875\n", "2020-10-11 -1.806821 0.835906\n", "2020-10-12 0.506742 -0.020602\n", "2020-10-13 0.967278 1.758684\n", "2020-10-14 -0.259991 -0.165694\n", "2020-10-15 -0.324487 -1.197632" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.loc[:, ['A', 'B']]" ] }, { "cell_type": "markdown", "id": "0839eca7", "metadata": {}, "source": [ "注意第一个参数,是两边闭" ] }, { "cell_type": "code", "execution_count": 40, "id": "112057cc", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AB
2020-10-10-0.987835-0.300875
2020-10-11-1.8068210.835906
2020-10-120.506742-0.020602
2020-10-130.9672781.758684
\n", "
" ], "text/plain": [ " A B\n", "2020-10-10 -0.987835 -0.300875\n", "2020-10-11 -1.806821 0.835906\n", "2020-10-12 0.506742 -0.020602\n", "2020-10-13 0.967278 1.758684" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.loc['2020-10-10':'2020-10-13', ['A', 'B']]" ] }, { "cell_type": "code", "execution_count": 41, "id": "0afc59f1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(-0.9878352544417939)" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.loc[dates[0], 'A']" ] }, { "cell_type": "code", "execution_count": 42, "id": "70987134", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(-0.9878352544417939)" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.at[dates[0], 'A']" ] }, { "cell_type": "markdown", "id": "9672d045", "metadata": {}, "source": [ "at获取一个位置数值,和loc 等价的" ] }, { "cell_type": "markdown", "id": "6fb6937d", "metadata": {}, "source": [ "#### iloc\n", "通过位置选择行" ] }, { "cell_type": "code", "execution_count": 43, "id": "3791d5a9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "A 0.967278\n", "B 1.758684\n", "C 0.758026\n", "D -0.418628\n", "Name: 2020-10-13 00:00:00, dtype: float64" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.iloc[3]" ] }, { "cell_type": "code", "execution_count": 44, "id": "4b757bee", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
BCD
2020-10-10-0.3008751.914156-0.911640
2020-10-110.835906-0.3310150.094304
\n", "
" ], "text/plain": [ " B C D\n", "2020-10-10 -0.300875 1.914156 -0.911640\n", "2020-10-11 0.835906 -0.331015 0.094304" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.iloc[:2, 1:]" ] }, { "cell_type": "code", "execution_count": 45, "id": "e621cecf", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(0.8359058858792715)" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.iloc[1,1]" ] }, { "cell_type": "code", "execution_count": 46, "id": "9a988a73", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(0.8359058858792715)" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.iat[1,1]" ] }, { "cell_type": "markdown", "id": "75114207", "metadata": {}, "source": [ "#### bool indexing\n", "- 选择行,使列满足什么条件" ] }, { "cell_type": "code", "execution_count": 47, "id": "eab90aba", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCD
2020-10-120.506742-0.0206020.216988-2.628958
2020-10-130.9672781.7586840.758026-0.418628
\n", "
" ], "text/plain": [ " A B C D\n", "2020-10-12 0.506742 -0.020602 0.216988 -2.628958\n", "2020-10-13 0.967278 1.758684 0.758026 -0.418628" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[df['A']>0]" ] }, { "cell_type": "code", "execution_count": 48, "id": "64e3e61b", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCD
2020-10-10NaNNaN1.914156NaN
2020-10-11NaN0.835906NaN0.094304
2020-10-120.506742NaN0.216988NaN
2020-10-130.9672781.7586840.758026NaN
2020-10-14NaNNaN0.3138320.581593
2020-10-15NaNNaN1.761982NaN
\n", "
" ], "text/plain": [ " A B C D\n", "2020-10-10 NaN NaN 1.914156 NaN\n", "2020-10-11 NaN 0.835906 NaN 0.094304\n", "2020-10-12 0.506742 NaN 0.216988 NaN\n", "2020-10-13 0.967278 1.758684 0.758026 NaN\n", "2020-10-14 NaN NaN 0.313832 0.581593\n", "2020-10-15 NaN NaN 1.761982 NaN" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[df>0]" ] }, { "cell_type": "code", "execution_count": 49, "id": "10d5d7c6", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCDE
2020-10-10-0.987835-0.3008751.914156-0.911640one
2020-10-11-1.8068210.835906-0.3310150.094304one
2020-10-120.506742-0.0206020.216988-2.628958two
2020-10-130.9672781.7586840.758026-0.418628three
2020-10-14-0.259991-0.1656940.3138320.581593four
2020-10-15-0.324487-1.1976321.761982-0.595702three
\n", "
" ], "text/plain": [ " A B C D E\n", "2020-10-10 -0.987835 -0.300875 1.914156 -0.911640 one\n", "2020-10-11 -1.806821 0.835906 -0.331015 0.094304 one\n", "2020-10-12 0.506742 -0.020602 0.216988 -2.628958 two\n", "2020-10-13 0.967278 1.758684 0.758026 -0.418628 three\n", "2020-10-14 -0.259991 -0.165694 0.313832 0.581593 four\n", "2020-10-15 -0.324487 -1.197632 1.761982 -0.595702 three" ] }, "execution_count": 49, "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": 50, "id": "651bd56f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCD
2020-10-120.506742-0.0206020.216988-2.628958
2020-10-14-0.259991-0.1656940.3138320.581593
\n", "
" ], "text/plain": [ " A B C D\n", "2020-10-12 0.506742 -0.020602 0.216988 -2.628958\n", "2020-10-14 -0.259991 -0.165694 0.313832 0.581593" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[df2['E'].isin(['two','four'])]\n" ] }, { "cell_type": "code", "execution_count": null, "id": "2fa5734b", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "2d6c8cdd", "metadata": {}, "source": [ "#### set value" ] }, { "cell_type": "code", "execution_count": 58, "id": "2266c264", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2020-10-10 1\n", "2020-10-11 2\n", "2020-10-12 3\n", "2020-10-13 4\n", "2020-10-14 5\n", "2020-10-15 6\n", "Freq: D, dtype: int64" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s1 = pd.Series(\n", " [1,2,3,4,5,6],\n", " index = pd.date_range('20201010', periods=6)\n", ")\n", "s1" ] }, { "cell_type": "markdown", "id": "77e80630", "metadata": {}, "source": [ "为df设置一个新列" ] }, { "cell_type": "code", "execution_count": 59, "id": "439a0496", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCDF
2020-10-10-0.987835-0.3008751.914156-0.9116401
2020-10-11-1.8068210.835906-0.3310150.0943042
2020-10-120.506742-0.0206020.216988-2.6289583
2020-10-130.9672781.7586840.758026-0.4186284
2020-10-14-0.259991-0.1656940.3138320.5815935
2020-10-15-0.324487-1.1976321.761982-0.5957026
\n", "
" ], "text/plain": [ " A B C D F\n", "2020-10-10 -0.987835 -0.300875 1.914156 -0.911640 1\n", "2020-10-11 -1.806821 0.835906 -0.331015 0.094304 2\n", "2020-10-12 0.506742 -0.020602 0.216988 -2.628958 3\n", "2020-10-13 0.967278 1.758684 0.758026 -0.418628 4\n", "2020-10-14 -0.259991 -0.165694 0.313832 0.581593 5\n", "2020-10-15 -0.324487 -1.197632 1.761982 -0.595702 6" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['F'] = s1\n", "df" ] }, { "cell_type": "code", "execution_count": 62, "id": "bc1210b1", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCDF
2020-10-100.000000-0.3008751.914156-0.9116401
2020-10-11-1.8068210.835906-0.3310150.0943042
2020-10-120.506742-0.0206020.216988-2.6289583
2020-10-130.9672781.7586840.758026-0.4186284
2020-10-14-0.259991-0.1656940.3138320.5815935
2020-10-15-0.324487-1.1976321.761982-0.5957026
\n", "
" ], "text/plain": [ " A B C D F\n", "2020-10-10 0.000000 -0.300875 1.914156 -0.911640 1\n", "2020-10-11 -1.806821 0.835906 -0.331015 0.094304 2\n", "2020-10-12 0.506742 -0.020602 0.216988 -2.628958 3\n", "2020-10-13 0.967278 1.758684 0.758026 -0.418628 4\n", "2020-10-14 -0.259991 -0.165694 0.313832 0.581593 5\n", "2020-10-15 -0.324487 -1.197632 1.761982 -0.595702 6" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.at[dates[0], 'A'] = 0\n", "df" ] }, { "cell_type": "code", "execution_count": 64, "id": "abfb3a20", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCDF
2020-10-100.000000-0.3008751.9141565.01
2020-10-11-1.8068210.835906-0.3310155.02
2020-10-120.506742-0.0206020.2169885.03
2020-10-130.9672781.7586840.7580265.04
2020-10-14-0.259991-0.1656940.3138325.05
2020-10-15-0.324487-1.1976321.7619825.06
\n", "
" ], "text/plain": [ " A B C D F\n", "2020-10-10 0.000000 -0.300875 1.914156 5.0 1\n", "2020-10-11 -1.806821 0.835906 -0.331015 5.0 2\n", "2020-10-12 0.506742 -0.020602 0.216988 5.0 3\n", "2020-10-13 0.967278 1.758684 0.758026 5.0 4\n", "2020-10-14 -0.259991 -0.165694 0.313832 5.0 5\n", "2020-10-15 -0.324487 -1.197632 1.761982 5.0 6" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.loc[:, 'D'] = np.array([5] * len(df))\n", "df" ] }, { "cell_type": "markdown", "id": "425edf93", "metadata": {}, "source": [ "我们也可以使用bool条件设置" ] }, { "cell_type": "code", "execution_count": 72, "id": "5ba89514", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123target
0-0.964237-0.573508-1.109884-1.506903-0.348507
1-1.361796-1.311485-0.361705-1.636924-0.449459
2-1.122803-2.252449-1.261629-0.575619-0.157774
\n", "
" ], "text/plain": [ " 0 1 2 3 target\n", "0 -0.964237 -0.573508 -1.109884 -1.506903 -0.348507\n", "1 -1.361796 -1.311485 -0.361705 -1.636924 -0.449459\n", "2 -1.122803 -2.252449 -1.261629 -0.575619 -0.157774" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2 = df.copy()\n", "df2[df2 > 0] = -df2\n", "df2" ] }, { "cell_type": "markdown", "id": "54c6b2c7", "metadata": {}, "source": [ "例子:\n" ] }, { "cell_type": "code", "execution_count": 75, "id": "534c79e5", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123
0-1.0988620.8597360.448311-0.563639
10.3597230.0631721.2731040.212454
2-0.1627820.734354-0.368384-0.874321
\n", "
" ], "text/plain": [ " 0 1 2 3\n", "0 -1.098862 0.859736 0.448311 -0.563639\n", "1 0.359723 0.063172 1.273104 0.212454\n", "2 -0.162782 0.734354 -0.368384 -0.874321" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame(np.random.randn(3,4))\n", "df" ] }, { "cell_type": "code", "execution_count": 77, "id": "66248f62", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "RangeIndex(start=0, stop=3, step=1)" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.index" ] }, { "cell_type": "code", "execution_count": 79, "id": "5a57a7e7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "RangeIndex(start=0, stop=4, step=1)" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.columns" ] }, { "cell_type": "code", "execution_count": 80, "id": "542ef89c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 0.859736\n", "1 0.063172\n", "2 0.734354\n", "Name: 1, dtype: float64" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[1]" ] }, { "cell_type": "markdown", "id": "ed8aa48b", "metadata": {}, "source": [ "### missing data\n", "- np.nan 表示缺失值" ] }, { "cell_type": "code", "execution_count": 72, "id": "f65af029", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCDFE
2020-10-100.000000-0.3008751.9141565.01NaN
2020-10-11-1.8068210.835906-0.3310155.02NaN
2020-10-120.506742-0.0206020.2169885.03NaN
2020-10-130.9672781.7586840.7580265.04NaN
\n", "
" ], "text/plain": [ " A B C D F E\n", "2020-10-10 0.000000 -0.300875 1.914156 5.0 1 NaN\n", "2020-10-11 -1.806821 0.835906 -0.331015 5.0 2 NaN\n", "2020-10-12 0.506742 -0.020602 0.216988 5.0 3 NaN\n", "2020-10-13 0.967278 1.758684 0.758026 5.0 4 NaN" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df1 = df.reindex(index=dates[0:4], columns=list(df.columns) + ['E'])\n", "df1" ] }, { "cell_type": "markdown", "id": "010bf4c3", "metadata": {}, "source": [ "`reindex` 支持我们动态在指定轴上 修改索引" ] }, { "cell_type": "code", "execution_count": 77, "id": "6c9ff4a3", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCDFE
2020-10-100.000000-0.3008751.9141565.011.0
2020-10-11-1.8068210.835906-0.3310155.021.0
2020-10-120.506742-0.0206020.2169885.03NaN
2020-10-130.9672781.7586840.7580265.04NaN
\n", "
" ], "text/plain": [ " A B C D F E\n", "2020-10-10 0.000000 -0.300875 1.914156 5.0 1 1.0\n", "2020-10-11 -1.806821 0.835906 -0.331015 5.0 2 1.0\n", "2020-10-12 0.506742 -0.020602 0.216988 5.0 3 NaN\n", "2020-10-13 0.967278 1.758684 0.758026 5.0 4 NaN" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df1.loc[dates[0]:dates[1], 'E'] = 1\n", "df1" ] }, { "cell_type": "markdown", "id": "23d9bc50", "metadata": {}, "source": [ "`dropna`丢弃行, " ] }, { "cell_type": "code", "execution_count": 81, "id": "5b8d61b9", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCDFE
2020-10-100.000000-0.3008751.9141565.011.0
2020-10-11-1.8068210.835906-0.3310155.021.0
\n", "
" ], "text/plain": [ " A B C D F E\n", "2020-10-10 0.000000 -0.300875 1.914156 5.0 1 1.0\n", "2020-10-11 -1.806821 0.835906 -0.331015 5.0 2 1.0" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df1.dropna(how='any')" ] }, { "cell_type": "code", "execution_count": 82, "id": "92155193", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCDFE
2020-10-100.000000-0.3008751.9141565.011.0
2020-10-11-1.8068210.835906-0.3310155.021.0
2020-10-120.506742-0.0206020.2169885.032.0
2020-10-130.9672781.7586840.7580265.042.0
\n", "
" ], "text/plain": [ " A B C D F E\n", "2020-10-10 0.000000 -0.300875 1.914156 5.0 1 1.0\n", "2020-10-11 -1.806821 0.835906 -0.331015 5.0 2 1.0\n", "2020-10-12 0.506742 -0.020602 0.216988 5.0 3 2.0\n", "2020-10-13 0.967278 1.758684 0.758026 5.0 4 2.0" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df1.fillna(value=2)" ] }, { "cell_type": "code", "execution_count": 85, "id": "7ddf6650", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCDF
2020-10-10FalseFalseFalseFalseFalse
2020-10-11FalseFalseFalseFalseFalse
2020-10-12FalseFalseFalseFalseFalse
2020-10-13FalseFalseFalseFalseFalse
2020-10-14FalseFalseFalseFalseFalse
2020-10-15FalseFalseFalseFalseFalse
\n", "
" ], "text/plain": [ " A B C D F\n", "2020-10-10 False False False False False\n", "2020-10-11 False False False False False\n", "2020-10-12 False False False False False\n", "2020-10-13 False False False False False\n", "2020-10-14 False False False False False\n", "2020-10-15 False False False False False" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.isna()" ] }, { "cell_type": "markdown", "id": "45bd9c81", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "5aa7505e", "metadata": {}, "source": [ "### operations" ] }, { "cell_type": "markdown", "id": "227e331e", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "59afa8c3", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "67d467af", "metadata": {}, "source": [ "#### stats" ] }, { "cell_type": "code", "execution_count": 89, "id": "51e40d8f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCDF
2020-10-100.000000-0.3008751.9141565.01
2020-10-11-1.8068210.835906-0.3310155.02
2020-10-120.506742-0.0206020.2169885.03
2020-10-130.9672781.7586840.7580265.04
2020-10-14-0.259991-0.1656940.3138325.05
2020-10-15-0.324487-1.1976321.7619825.06
\n", "
" ], "text/plain": [ " A B C D F\n", "2020-10-10 0.000000 -0.300875 1.914156 5.0 1\n", "2020-10-11 -1.806821 0.835906 -0.331015 5.0 2\n", "2020-10-12 0.506742 -0.020602 0.216988 5.0 3\n", "2020-10-13 0.967278 1.758684 0.758026 5.0 4\n", "2020-10-14 -0.259991 -0.165694 0.313832 5.0 5\n", "2020-10-15 -0.324487 -1.197632 1.761982 5.0 6" ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 90, "id": "37a8eb2c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "A -0.152880\n", "B 0.151631\n", "C 0.772328\n", "D 5.000000\n", "F 3.500000\n", "dtype: float64" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.mean()" ] }, { "cell_type": "code", "execution_count": 94, "id": "06fb98de", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2020-10-10 1.522656\n", "2020-10-11 1.139614\n", "2020-10-12 1.740626\n", "2020-10-13 2.496798\n", "2020-10-14 1.977629\n", "2020-10-15 2.247973\n", "Freq: D, dtype: float64" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.mean(axis=1) # 行" ] }, { "cell_type": "markdown", "id": "867020ad", "metadata": {}, "source": [ "数据和索引不对齐,索引会自动延申" ] }, { "cell_type": "code", "execution_count": 97, "id": "426803ce", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DatetimeIndex(['2020-10-10', '2020-10-11', '2020-10-12', '2020-10-13',\n", " '2020-10-14', '2020-10-15'],\n", " dtype='datetime64[us]', freq='D')" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dates" ] }, { "cell_type": "code", "execution_count": 101, "id": "c1162229", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2020-10-10 1.0\n", "2020-10-11 2.0\n", "2020-10-12 3.0\n", "2020-10-13 NaN\n", "2020-10-14 7.0\n", "2020-10-15 9.0\n", "Freq: D, dtype: float64" ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = pd.Series([1,2,3, np.nan, 7, 9], index=dates)\n", "s" ] }, { "cell_type": "markdown", "id": "050e283f", "metadata": {}, "source": [ "沿着index做差" ] }, { "cell_type": "code", "execution_count": 100, "id": "a7c8d14e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCDF
2020-10-10-1.000000-1.3008750.9141564.00.0
2020-10-11-3.806821-1.164094-2.3310153.00.0
2020-10-12-2.493258-3.020602-2.7830122.00.0
2020-10-13NaNNaNNaNNaNNaN
2020-10-14-7.259991-7.165694-6.686168-2.0-2.0
2020-10-15-9.324487-10.197632-7.238018-4.0-3.0
\n", "
" ], "text/plain": [ " A B C D F\n", "2020-10-10 -1.000000 -1.300875 0.914156 4.0 0.0\n", "2020-10-11 -3.806821 -1.164094 -2.331015 3.0 0.0\n", "2020-10-12 -2.493258 -3.020602 -2.783012 2.0 0.0\n", "2020-10-13 NaN NaN NaN NaN NaN\n", "2020-10-14 -7.259991 -7.165694 -6.686168 -2.0 -2.0\n", "2020-10-15 -9.324487 -10.197632 -7.238018 -4.0 -3.0" ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.sub(s, axis='index')" ] }, { "cell_type": "markdown", "id": "cf7525b1", "metadata": {}, "source": [ "#### user defined functions\n", "- `agg`简化结果,进行了聚合 。 自定义函数参数为列,返回为列结果\n", "- `transform` 对每一个元素进行转换。 自定义函数参数为元素额,\n", "- " ] }, { "cell_type": "code", "execution_count": 107, "id": "e364450c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCDF
2020-10-100.000000-0.3008751.9141565.01
2020-10-11-1.8068210.835906-0.3310155.02
2020-10-120.506742-0.0206020.2169885.03
2020-10-130.9672781.7586840.7580265.04
2020-10-14-0.259991-0.1656940.3138325.05
2020-10-15-0.324487-1.1976321.7619825.06
\n", "
" ], "text/plain": [ " A B C D F\n", "2020-10-10 0.000000 -0.300875 1.914156 5.0 1\n", "2020-10-11 -1.806821 0.835906 -0.331015 5.0 2\n", "2020-10-12 0.506742 -0.020602 0.216988 5.0 3\n", "2020-10-13 0.967278 1.758684 0.758026 5.0 4\n", "2020-10-14 -0.259991 -0.165694 0.313832 5.0 5\n", "2020-10-15 -0.324487 -1.197632 1.761982 5.0 6" ] }, "execution_count": 107, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 108, "id": "5a2ff91b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "A -0.305760\n", "B 0.303262\n", "C 1.544656\n", "D 10.000000\n", "F 7.000000\n", "dtype: float64" ] }, "execution_count": 108, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.agg(lambda x: np.mean(x) * 2) # 列转换为了 均值的平方" ] }, { "cell_type": "code", "execution_count": 111, "id": "0072148b", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCDF
2020-10-100.000000-30.448513193.712626506.0101.2
2020-10-11-182.85030784.593676-33.498716506.0202.4
2020-10-1251.282292-2.08489021.959197506.0303.6
2020-10-1397.888545177.97886576.712221506.0404.8
2020-10-14-26.311112-16.76826931.759762506.0506.0
2020-10-15-32.838099-121.200379178.312604506.0607.2
\n", "
" ], "text/plain": [ " A B C D F\n", "2020-10-10 0.000000 -30.448513 193.712626 506.0 101.2\n", "2020-10-11 -182.850307 84.593676 -33.498716 506.0 202.4\n", "2020-10-12 51.282292 -2.084890 21.959197 506.0 303.6\n", "2020-10-13 97.888545 177.978865 76.712221 506.0 404.8\n", "2020-10-14 -26.311112 -16.768269 31.759762 506.0 506.0\n", "2020-10-15 -32.838099 -121.200379 178.312604 506.0 607.2" ] }, "execution_count": 111, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.transform(lambda x: x * 101.2) # 对每个元素做了统一变化" ] }, { "cell_type": "markdown", "id": "703dec6e", "metadata": {}, "source": [ "#### value_counts" ] }, { "cell_type": "code", "execution_count": 116, "id": "ac693b2c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4 3\n", "3 2\n", "1 2\n", "2 1\n", "0 1\n", "6 1\n", "Name: count, dtype: int64" ] }, "execution_count": 116, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = pd.Series(np.random.randint(0,7, size=10))\n", "s.value_counts()" ] }, { "cell_type": "markdown", "id": "8086eeb7", "metadata": {}, "source": [ "统计百分比" ] }, { "cell_type": "code", "execution_count": null, "id": "c097044f", "metadata": {}, "outputs": [], "source": [ "s.value_counts(normalize=True)" ] }, { "cell_type": "markdown", "id": "6f91caa3", "metadata": {}, "source": [ "#### string method\n", "- Series配备了.str方法, 更好进行变换" ] }, { "cell_type": "code", "execution_count": 118, "id": "08629017", "metadata": {}, "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: str" ] }, "execution_count": 118, "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": 120, "id": "3bdf8b2c", "metadata": {}, "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: str" ] }, "execution_count": 120, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s.str.lower()" ] }, { "cell_type": "markdown", "id": "4f09e3f8", "metadata": {}, "source": [ "### merge" ] }, { "cell_type": "markdown", "id": "b4d6174b", "metadata": {}, "source": [ "#### concat" ] }, { "cell_type": "code", "execution_count": 124, "id": "3534307c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123
0-0.6020900.550267-1.223086-0.444570
1-0.633155-0.346444-0.660296-1.540638
20.3006011.815010-0.168324-1.224505
3-1.7204321.5022490.1785920.913841
40.1518220.039237-0.5534160.958658
5-0.305660-0.387923-1.518987-0.189006
61.0269090.8038750.9260050.364731
7-1.8698580.775665-0.5540720.058960
8-0.744252-0.026305-0.445575-0.075493
9-0.3917570.5878300.1900650.122111
\n", "
" ], "text/plain": [ " 0 1 2 3\n", "0 -0.602090 0.550267 -1.223086 -0.444570\n", "1 -0.633155 -0.346444 -0.660296 -1.540638\n", "2 0.300601 1.815010 -0.168324 -1.224505\n", "3 -1.720432 1.502249 0.178592 0.913841\n", "4 0.151822 0.039237 -0.553416 0.958658\n", "5 -0.305660 -0.387923 -1.518987 -0.189006\n", "6 1.026909 0.803875 0.926005 0.364731\n", "7 -1.869858 0.775665 -0.554072 0.058960\n", "8 -0.744252 -0.026305 -0.445575 -0.075493\n", "9 -0.391757 0.587830 0.190065 0.122111" ] }, "execution_count": 124, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame(np.random.randn(10,4))\n", "df" ] }, { "cell_type": "code", "execution_count": 127, "id": "c712d606", "metadata": {}, "outputs": [], "source": [ "pieces = [df[:3], df[3:5], df[5:]]" ] }, { "cell_type": "code", "execution_count": 129, "id": "89f80125", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123
0-0.6020900.550267-1.223086-0.444570
1-0.633155-0.346444-0.660296-1.540638
20.3006011.815010-0.168324-1.224505
3-1.7204321.5022490.1785920.913841
40.1518220.039237-0.5534160.958658
5-0.305660-0.387923-1.518987-0.189006
61.0269090.8038750.9260050.364731
7-1.8698580.775665-0.5540720.058960
8-0.744252-0.026305-0.445575-0.075493
9-0.3917570.5878300.1900650.122111
\n", "
" ], "text/plain": [ " 0 1 2 3\n", "0 -0.602090 0.550267 -1.223086 -0.444570\n", "1 -0.633155 -0.346444 -0.660296 -1.540638\n", "2 0.300601 1.815010 -0.168324 -1.224505\n", "3 -1.720432 1.502249 0.178592 0.913841\n", "4 0.151822 0.039237 -0.553416 0.958658\n", "5 -0.305660 -0.387923 -1.518987 -0.189006\n", "6 1.026909 0.803875 0.926005 0.364731\n", "7 -1.869858 0.775665 -0.554072 0.058960\n", "8 -0.744252 -0.026305 -0.445575 -0.075493\n", "9 -0.391757 0.587830 0.190065 0.122111" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.concat(pieces)" ] }, { "cell_type": "markdown", "id": "056575ec", "metadata": {}, "source": [ "#### join\n", "- how参数:表明保留哪些行。\n", " - `inner`: 保留共有字段\n", " - `outer`: 并集\n", " - `left`: 左表所有键" ] }, { "cell_type": "code", "execution_count": 5, "id": "268f53cb", "metadata": {}, "outputs": [], "source": [ "left = pd.DataFrame({\n", " 'key':['foo','bar', 'bob'],\n", " 'lval': [1,2, 3]\n", "})\n", "right = pd.DataFrame({\n", " 'key':['foo','bar'],\n", " 'rval': [1,2]\n", "})" ] }, { "cell_type": "code", "execution_count": 7, "id": "20955e0d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
keylvalrval
0foo11.0
1bar22.0
2bob3NaN
\n", "
" ], "text/plain": [ " key lval rval\n", "0 foo 1 1.0\n", "1 bar 2 2.0\n", "2 bob 3 NaN" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.merge(left, right, on='key', how='left')" ] }, { "cell_type": "code", "execution_count": 8, "id": "6e3242f3", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
keylvalrval
0foo11
1bar22
\n", "
" ], "text/plain": [ " key lval rval\n", "0 foo 1 1\n", "1 bar 2 2" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.merge(left, right, on='key', how='inner')" ] }, { "cell_type": "code", "execution_count": 9, "id": "7c9f8a73", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
keylvalrval
0bar22.0
1bob3NaN
2foo11.0
\n", "
" ], "text/plain": [ " key lval rval\n", "0 bar 2 2.0\n", "1 bob 3 NaN\n", "2 foo 1 1.0" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.merge(left, right, on='key', how='outer')" ] }, { "cell_type": "markdown", "id": "318cde52", "metadata": {}, "source": [ "### group分组\n", "- 指定by;\n", "- 选择一些列;\n", "- apply function\n", "- 聚合" ] }, { "cell_type": "code", "execution_count": 46, "id": "fb9b6aac", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCD
0onefoo-0.4078800.037157
1twobob1.3955431.246526
2threealice-1.2792701.019978
\n", "
" ], "text/plain": [ " A B C D\n", "0 one foo -0.407880 0.037157\n", "1 two bob 1.395543 1.246526\n", "2 three alice -1.279270 1.019978" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame({\n", " 'A': ['one', 'two', 'three'],\n", " 'B': ['foo', 'bob', 'alice'],\n", " 'C': np.random.randn(3),\n", " 'D': np.random.randn(3)\n", "})\n", "df" ] }, { "cell_type": "code", "execution_count": 47, "id": "3f08cacc", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
BC
A
onefoo-0.407880
threealice-1.279270
twobob1.395543
\n", "
" ], "text/plain": [ " B C\n", "A \n", "one foo -0.407880\n", "three alice -1.279270\n", "two bob 1.395543" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby(by='A')[['B', 'C']].sum()" ] }, { "cell_type": "code", "execution_count": 48, "id": "c1e66b6c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "A\n", "one foo\n", "three alice\n", "two bob\n", "Name: B, dtype: str" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby(by='A')['B'].sum() # 只选择B列" ] }, { "cell_type": "markdown", "id": "d3f60291", "metadata": {}, "source": [ "多级行索引" ] }, { "cell_type": "code", "execution_count": 49, "id": "d66bf0eb", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CD
AB
onefoo-0.4078800.037157
threealice-1.2792701.019978
twobob1.3955431.246526
\n", "
" ], "text/plain": [ " C D\n", "A B \n", "one foo -0.407880 0.037157\n", "three alice -1.279270 1.019978\n", "two bob 1.395543 1.246526" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby(by=['A','B']).sum()" ] }, { "cell_type": "markdown", "id": "a3ba1074", "metadata": {}, "source": [ "### reshaping" ] }, { "cell_type": "markdown", "id": "6f0e8bfb", "metadata": {}, "source": [ "#### stack" ] }, { "cell_type": "code", "execution_count": 50, "id": "2b9b39f0", "metadata": {}, "outputs": [], "source": [ "arrays = [\n", " ['foo', 'bar', 'alice'],\n", " ['one', 'two', 'three']\n", "]" ] }, { "cell_type": "code", "execution_count": 53, "id": "b6e08dc7", "metadata": {}, "outputs": [], "source": [ "index = pd.MultiIndex.from_arrays(\n", " arrays,\n", ")" ] }, { "cell_type": "code", "execution_count": 56, "id": "68dd757a", "metadata": {}, "outputs": [], "source": [ "df = pd.DataFrame(\n", " np.random.randn(3, 2),\n", " index = index,\n", " columns = ['A', 'B']\n", ")" ] }, { "cell_type": "code", "execution_count": 60, "id": "da812faa", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AB
fooone0.5016210.045875
bartwo0.967446-1.766177
alicethree-1.287660-0.256039
\n", "
" ], "text/plain": [ " A B\n", "foo one 0.501621 0.045875\n", "bar two 0.967446 -1.766177\n", "alice three -1.287660 -0.256039" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 61, "id": "a677fd00", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "foo one A 0.501621\n", " B 0.045875\n", "bar two A 0.967446\n", " B -1.766177\n", "alice three A -1.287660\n", " B -0.256039\n", "dtype: float64" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.stack()" ] }, { "cell_type": "code", "execution_count": 63, "id": "30d2111e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AB
onethreetwoonethreetwo
aliceNaN-1.28766NaNNaN-0.256039NaN
barNaNNaN0.967446NaNNaN-1.766177
foo0.501621NaNNaN0.045875NaNNaN
\n", "
" ], "text/plain": [ " A B \n", " one three two one three two\n", "alice NaN -1.28766 NaN NaN -0.256039 NaN\n", "bar NaN NaN 0.967446 NaN NaN -1.766177\n", "foo 0.501621 NaN NaN 0.045875 NaN NaN" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.unstack()" ] }, { "cell_type": "markdown", "id": "7f86ea1e", "metadata": {}, "source": [ "### pivot tables" ] }, { "cell_type": "markdown", "id": "e342376e", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "00047965", "metadata": {}, "source": [ "### time series" ] }, { "cell_type": "code", "execution_count": 77, "id": "f097bd91", "metadata": {}, "outputs": [], "source": [ "rng = pd.date_range(start='20201010', periods=10)" ] }, { "cell_type": "code", "execution_count": 79, "id": "0be79e6e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DatetimeIndex(['2020-10-10', '2020-10-11', '2020-10-12', '2020-10-13',\n", " '2020-10-14', '2020-10-15', '2020-10-16', '2020-10-17',\n", " '2020-10-18', '2020-10-19'],\n", " dtype='datetime64[us]', freq='D')" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rng" ] }, { "cell_type": "code", "execution_count": 82, "id": "88eaa8fd", "metadata": {}, "outputs": [], "source": [ "ts = pd.Series(\n", " np.random.randint(0, 10, len(rng)),\n", " index = rng\n", ")" ] }, { "cell_type": "markdown", "id": "2ebef0bc", "metadata": {}, "source": [ "### categoricals" ] }, { "cell_type": "code", "execution_count": 85, "id": "566f7f8d", "metadata": {}, "outputs": [], "source": [ "df = pd.DataFrame({\n", " 'id': [1,2,3,4],\n", " 'raw_grade': ['a', 'b', 'c', 'd']\n", "})" ] }, { "cell_type": "code", "execution_count": 88, "id": "c94b6fbf", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 a\n", "1 b\n", "2 c\n", "3 d\n", "Name: raw_grade, dtype: str" ] }, "execution_count": 88, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['raw_grade']" ] }, { "cell_type": "markdown", "id": "87efdfcf", "metadata": {}, "source": [ "我们可以将其转化为categorical类型" ] }, { "cell_type": "code", "execution_count": 90, "id": "b40d35d1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 a\n", "1 b\n", "2 c\n", "3 d\n", "Name: grade, dtype: category\n", "Categories (4, str): ['a', 'b', 'c', 'd']" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['grade'] = df['raw_grade'].astype('category')\n", "df['grade']" ] }, { "cell_type": "code", "execution_count": 93, "id": "2a73606a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idraw_gradegrade
01aa
12bb
23cc
34dd
\n", "
" ], "text/plain": [ " id raw_grade grade\n", "0 1 a a\n", "1 2 b b\n", "2 3 c c\n", "3 4 d d" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "markdown", "id": "4ed6d3cc", "metadata": {}, "source": [ "categorical应该具有更好的名称" ] }, { "cell_type": "code", "execution_count": 99, "id": "f20ecc72", "metadata": {}, "outputs": [], "source": [ "df['grade'] = df['grade'].cat.rename_categories(['very good', 'good', 'very bad', 'worst'])" ] }, { "cell_type": "markdown", "id": "593ff9b2", "metadata": {}, "source": [ "排序是按照类别的顺序,不是词汇顺序" ] }, { "cell_type": "code", "execution_count": 100, "id": "fa3c11dc", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idraw_gradegrade
01avery good
12bgood
23cvery bad
34dworst
\n", "
" ], "text/plain": [ " id raw_grade grade\n", "0 1 a very good\n", "1 2 b good\n", "2 3 c very bad\n", "3 4 d worst" ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.sort_values(by='grade')" ] }, { "cell_type": "markdown", "id": "eea7374f", "metadata": {}, "source": [ "### plotting" ] }, { "cell_type": "code", "execution_count": 102, "id": "c67006be", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "plt.close('all')" ] }, { "cell_type": "code", "execution_count": 105, "id": "b73f5bb3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2020-10-10 -0.855467\n", "2020-10-11 1.356744\n", "2020-10-12 1.353603\n", "2020-10-13 0.987404\n", "2020-10-14 -0.424806\n", " ... \n", "2023-07-02 1.719214\n", "2023-07-03 -0.172318\n", "2023-07-04 -3.198644\n", "2023-07-05 -0.207917\n", "2023-07-06 1.494452\n", "Freq: D, Length: 1000, dtype: float64" ] }, "execution_count": 105, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ts = pd.Series(\n", " np.random.randn(1000),\n", " index = pd.date_range('20201010', periods=1000)\n", ")\n", "ts" ] }, { "cell_type": "code", "execution_count": 106, "id": "98d9618a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 106, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ts = ts.cumsum() # 累积求和\n", "ts.plot()" ] }, { "cell_type": "code", "execution_count": 110, "id": "9d20f378", "metadata": {}, "outputs": [], "source": [ "df = pd.DataFrame(\n", " np.random.randn(1000, 4),\n", " index=ts.index,\n", " columns = ['A', 'B', 'C', 'D']\n", ")" ] }, { "cell_type": "code", "execution_count": 111, "id": "df781192", "metadata": {}, "outputs": [], "source": [ "df = df.cumsum()" ] }, { "cell_type": "code", "execution_count": 113, "id": "8d04f7e5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 113, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df.plot()\n", "plt.legend()" ] }, { "cell_type": "markdown", "id": "03d4b8d0", "metadata": {}, "source": [ "## copy\n", "- 防止连带修改, 很多时候, 我们不小心会修改到原数据,不希望的\n", "- app_train_domain = app_train.copy() 另一份拷贝" ] }, { "cell_type": "markdown", "id": "77e5df71", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "26f7fedc", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "63e2bb96", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "98ffc60d", "metadata": {}, "source": [ "## 数据结构\n", "增强版的 NumPy 结构化数组" ] }, { "cell_type": "code", "execution_count": null, "id": "80ea2c8d", "metadata": {}, "outputs": [], "source": [ "print(res.shape) # 返回 (N,) 表示 Series,返回 (N, M) 表示 DataFrame" ] }, { "cell_type": "markdown", "id": "128dc701", "metadata": {}, "source": [ "### 3.2.1 Series 对象" ] }, { "cell_type": "markdown", "id": "b3c8612a", "metadata": {}, "source": [ "\n", "#### 初识\n", "1. Series对象 带有索引的 一维数组。\n", "2. 通过 .index 和 .values 属性访问\n", " - values返回类np数组\n", " - index返回pd.index对象" ] }, { "cell_type": "code", "execution_count": null, "id": "131eca36", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1 0.5\n", "2 0.1\n", "dtype: float64" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data = pd.Series([0.25, 0.5, 0.1, 0.2])\n", "values = data.values\n", "index = data.index\n", "data[1]\n", "data[1:3]" ] }, { "cell_type": "markdown", "id": "0082d6ff", "metadata": {}, "source": [ "#### Series灵活的特性 : 数组和字典。\n", "1. 与np数组最大不同:Series对象是显示的索引,索引可以是任意类型。\n", "2. Series对象是特殊的字典。特殊:一类数据映射到另一类数据。\n", "- 就像np数组比py列表高效一样, Series对象比py字典会高效。\n", "- 因此可以从py字典创建一个Series对象\n", "> 因为具有数组和字典双重特性 所以可以对字典进行切片操作!!\n", "\n", "3. 创建Series对象\n", " pd.Series(data, index = index)" ] }, { "cell_type": "code", "execution_count": null, "id": "ce248435", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "a 0.25\n", "b 0.50\n", "c 0.10\n", "d 0.20\n", "Name: score, dtype: float64" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data = pd.Series([0.25, 0.5, 0.1, 0.2], \n", " index = ['a', 'b', 'c', 'd'], name='score') # name在合并df时候标记为列名\n", "data" ] }, { "cell_type": "code", "execution_count": null, "id": "3c770f79", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "7d3ef33a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "California 38332521\n", "Texas 26448193\n", "New York 19651127\n", "Florida 19552860\n", "Illinois 12882135\n", "dtype: int64" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "popular_dict = {\n", " 'California': 38332521,\n", " 'Texas': 26448193,\n", " 'New York': 19651127,\n", " 'Florida': 19552860,\n", " 'Illinois': 12882135\n", "}\n", "population = pd.Series(popular_dict)\n", "population" ] }, { "cell_type": "code", "execution_count": null, "id": "233ab2f1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "California 38332521\n", "Texas 26448193\n", "New York 19651127\n", "Florida 19552860\n", "dtype: int64" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "population['California' : 'Florida']" ] }, { "cell_type": "code", "execution_count": null, "id": "2ed71819", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1 A\n", "2 B\n", "dtype: object" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pd.Series([2, 4, 6]) # 列表或者np数组\n", "pd.Series(5, index = [1,2,3]) # 标量 , 填充到每个索引上\n", "pd.Series({1 : 'A', 2 : 'B'})\n" ] }, { "cell_type": "code", "execution_count": null, "id": "0ecbba81", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "22898560", "metadata": {}, "source": [ "### 3.2.2 DataFrame对象\n", "- 与Series对象一样,数组和字典双重特性。\n", "- DataFrame对象既有行索引又有列索引。是具有同样索引Series对象的集合\n", "- DataFrame 的基本索引是列索引, 直接[]访问的是列" ] }, { "cell_type": "markdown", "id": "26f9992d", "metadata": {}, "source": [ "#### 数组角度\n", "- 如何获取一行数据?不能直接通过[]这样索引,而是loc。\n", " - 因为这个每一列是一个元素(series),[]是访问列的" ] }, { "cell_type": "code", "execution_count": null, "id": "0eabf2ac", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
col1col2
\n", "
" ], "text/plain": [ "Empty DataFrame\n", "Columns: [col1, col2]\n", "Index: []" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 创建一个只有列名没有数据的\n", "pd.DataFrame(columns=['col1', 'col2'])" ] }, { "cell_type": "code", "execution_count": null, "id": "46a3ce4e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idname
\n", "
" ], "text/plain": [ "Empty DataFrame\n", "Columns: [id, name]\n", "Index: []" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 创建一个只有列名没有数据,但指定类型\n", "pd.DataFrame({\n", " 'id':pd.Series(dtype=int),\n", " 'name':pd.Series(dtype=str)\n", "})" ] }, { "cell_type": "code", "execution_count": null, "id": "86a8aa0e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
populationarea
California38332521423967
Texas26448193695662
New York19651127141297
Florida19552860170312
Illinois12882135149995
\n", "
" ], "text/plain": [ " population area\n", "California 38332521 423967\n", "Texas 26448193 695662\n", "New York 19651127 141297\n", "Florida 19552860 170312\n", "Illinois 12882135 149995" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import pandas as pd\n", "area_dict = {'California': 423967, 'Texas': 695662, 'New York': 141297,\n", " 'Florida': 170312, 'Illinois': 149995}\n", "area = pd.Series(area_dict)\n", "states = pd.DataFrame({'population' : population, 'area' : area})\n", "states" ] }, { "cell_type": "code", "execution_count": null, "id": "65eb259f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['California', 'Texas', 'New York', 'Florida', 'Illinois'], dtype='object')" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "states.columns\n", "states.index\n" ] }, { "cell_type": "code", "execution_count": null, "id": "a1445297", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'states' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)\n", "Cell \u001b[1;32mIn[2], line 1\u001b[0m\n", "\u001b[1;32m----> 1\u001b[0m \u001b[43mstates\u001b[49m\u001b[38;5;241m.\u001b[39mvalues \u001b[38;5;66;03m# 返回对应的数组\u001b[39;00m\n", "\n", "\u001b[1;31mNameError\u001b[0m: name 'states' is not defined" ] } ], "source": [ "states.values # 返回对应的数组" ] }, { "cell_type": "code", "execution_count": null, "id": "67d0ad45", "metadata": {}, "outputs": [], "source": [ "# 改列名\n", "df.rename(columns={'旧列名': '新列名'}, inplace=True)\n", "\n", "# 改行索引名\n", "df.rename(index={'旧行名': '新行名'}, inplace=True)" ] }, { "cell_type": "markdown", "id": "f8d7c020", "metadata": {}, "source": [ "#### 字典角度\n", "1. 注意不能直接通过行名获取,因为字典看来,字段是列名!" ] }, { "cell_type": "code", "execution_count": null, "id": "50f97f4b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "California 423967\n", "Texas 695662\n", "New York 141297\n", "Florida 170312\n", "Illinois 149995\n", "Name: area, dtype: int64" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "states['area']\n", "#states['Texas'] # !!" ] }, { "cell_type": "markdown", "id": "fbe125c6", "metadata": {}, "source": [ "#### 创建DataFram对象" ] }, { "cell_type": "code", "execution_count": null, "id": "66fd2540", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AB
000.0
100.0
200.0
\n", "
" ], "text/plain": [ " A B\n", "0 0 0.0\n", "1 0 0.0\n", "2 0 0.0" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pd.DataFrame(population, columns=['population']) # 通过一个series对象创建\n", "pd.DataFrame([ {'a' : i, 'b' : 2 * i} for i in range(4)]) # 元素是字典的列表\n", "pd.DataFrame([{'a':1, 'b':2}, {'c':3, 'd':4}]) \n", "pd.DataFrame({'population' : population, 'area' : area}) # 具有同样索引多个series对象\n", "pd.DataFrame(np.random.rand(3,2), columns = ['foo', 'bar'], index = ['a', 'b', 'c']) # np二维数组,指定行索引index,列索引columns\n", "A = np.zeros(3, dtype=[('A', 'i8'), ('B', 'f8')]) \n", "pd.DataFrame(A) # 从np结构化数组构建" ] }, { "cell_type": "markdown", "id": "d9f2ece1", "metadata": {}, "source": [ "### 3.2.3 Index对象\n", "- 可以看作是 **不可变数组** 或 有序集合。\n", "- 默认索引是RangeIndex," ] }, { "cell_type": "code", "execution_count": null, "id": "9891d836", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index([2, 3, 5, 7], dtype='int64')" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ind = pd.Index([2, 3, 5, 7])\n", "ind" ] }, { "cell_type": "code", "execution_count": null, "id": "cd28b961", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[2, 3, 5, 7]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ind.to_list()" ] }, { "cell_type": "markdown", "id": "b8c4e6ca", "metadata": {}, "source": [ "#### 从不可变数组角度:类似np数组\n", "- 值不可修改!" ] }, { "cell_type": "code", "execution_count": null, "id": "4f3bd66f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(4,) 4 1 int64\n" ] } ], "source": [ "ind[1]\n", "ind[::2]\n", "print(ind.shape, ind.size, ind.ndim, ind.dtype)" ] }, { "cell_type": "code", "execution_count": null, "id": "6704e75b", "metadata": {}, "outputs": [], "source": [ "# ind[1] = 0" ] }, { "cell_type": "markdown", "id": "facdd64d", "metadata": {}, "source": [ "#### 从有序集合角度:\n", "- 可以使用集合操作。 但必须size相同!" ] }, { "cell_type": "code", "execution_count": null, "id": "d1bf05e6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index([1, 3, 6, 7], dtype='int64')" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "indA = pd.Index([1, 3, 2, 5])\n", "indB = pd.Index([1, 2, 4, 6])\n", "indA | indB" ] }, { "cell_type": "markdown", "id": "4e0c267a", "metadata": {}, "source": [ "- so, 可以for" ] }, { "cell_type": "code", "execution_count": null, "id": "cea85c37", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2\n", "3\n", "5\n", "7\n" ] } ], "source": [ "for i in ind:\n", " print(i)" ] }, { "cell_type": "code", "execution_count": null, "id": "2a4de9cd", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "20711e17-381d-42ff-9159-3a0696c8ff9d", "metadata": {}, "source": [ "## 基本功能\n", "- pandas 一般都不会原地修改" ] }, { "cell_type": "markdown", "id": "5c3a3a31", "metadata": {}, "source": [ "### 函数应用\n", "- 将自己或者其他库函数应到pd对象" ] }, { "cell_type": "markdown", "id": "bdc12a83", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "4d5997c5", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "83e8fff7", "metadata": {}, "source": [ "### 统计特征函数\n", "- 都会保留索引的,值为df\n", "- \n", "- `sum` ; `quantile()`; `mean()`\n", "- `map`\n", "- `skew`,偏度,分布是否对称, 偏左<0。\n", "- `kurt` 峰度。以正太分布基准,数据集中程度。尖峰>0" ] }, { "cell_type": "code", "execution_count": 77, "id": "633af435", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 6\n", "1 3\n", "2 7\n", "3 4\n", "dtype: int32" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rng = np.random.RandomState(42)\n", "s = pd.Series(rng.randint(0, 10, 4))\n", "s" ] }, { "cell_type": "code", "execution_count": null, "id": "89226a43", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(2.775)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "s = pd.Series([2.1, 3.2,3,4])\n", "s.quantile(0.25) # 直接调用接口" ] }, { "cell_type": "code", "execution_count": null, "id": "98aa4113", "metadata": {}, "outputs": [], "source": [ "df = pd.DataFrame(rng.randint(0,10, (3,4)), columns=['A', 'B', 'C', 'D'])\n", "df" ] }, { "cell_type": "code", "execution_count": null, "id": "b62d0a92", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 's' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)\n", "Cell \u001b[1;32mIn[53], line 1\u001b[0m\n", "\u001b[1;32m----> 1\u001b[0m np\u001b[38;5;241m.\u001b[39mexp(\u001b[43ms\u001b[49m)\n", "\u001b[0;32m 2\u001b[0m np\u001b[38;5;241m.\u001b[39msin(df)\n", "\n", "\u001b[1;31mNameError\u001b[0m: name 's' is not defined" ] } ], "source": [ "np.exp(s)\n", "np.sin(df)" ] }, { "cell_type": "markdown", "id": "2a4e0f52", "metadata": {}, "source": [ "#### Matching / broadcasting behavior\n", "- 没有对齐的数据缺失值用NAN填充,或者设置参数fill_value" ] }, { "cell_type": "code", "execution_count": 78, "id": "b7ad9d9a", "metadata": {}, "outputs": [], "source": [ "# 索引不同的两个Series对象\n", "area = pd.Series({'Alaska': 1723337, 'Texas': 695662,\n", " 'California': 423967}, name='area')\n", "population = pd.Series({'California': 38332521, 'Texas': 26448193,\n", " 'New York': 19651127}, name='population')" ] }, { "cell_type": "code", "execution_count": null, "id": "b62759e5", "metadata": {}, "outputs": [], "source": [ "population / area" ] }, { "cell_type": "code", "execution_count": 79, "id": "c4e67467", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Alaska 0.000000\n", "California 90.413926\n", "New York inf\n", "Texas 38.018740\n", "dtype: float64" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "population.divide(area, fill_value = 0)" ] }, { "cell_type": "code", "execution_count": null, "id": "3e1d18b2", "metadata": {}, "outputs": [], "source": [ "df1 = pd.DataFrame(rng.randint(0,10, (3,4)), columns=['A', 'B', 'C', 'D'])\n", "df2 = pd.DataFrame(rng.randint(0,10, (4,2)), columns=['A', 'F'])\n", "print(df1, '\\n', df2)" ] }, { "cell_type": "code", "execution_count": null, "id": "52131237", "metadata": {}, "outputs": [], "source": [ "df1.add(df2, fill_value=0)" ] }, { "cell_type": "markdown", "id": "11486e0f", "metadata": {}, "source": [ "使用均值填充!\n", "stack将二维数组压成一维" ] }, { "cell_type": "code", "execution_count": null, "id": "0f973ef4", "metadata": {}, "outputs": [], "source": [ "fill = df2.stack().mean()\n", "df1.add(df2, fill_value = fill)" ] }, { "cell_type": "code", "execution_count": null, "id": "81389e50", "metadata": {}, "outputs": [], "source": [ "A = rng.randint(10, size=(3, 4))\n", "A" ] }, { "cell_type": "code", "execution_count": null, "id": "55a892e4", "metadata": {}, "outputs": [], "source": [ "df = pd.DataFrame(A, columns=list('QRST'))\n", "df" ] }, { "cell_type": "code", "execution_count": null, "id": "9d83ec5d", "metadata": {}, "outputs": [], "source": [ "df - df.loc[0]" ] }, { "cell_type": "code", "execution_count": null, "id": "0f077510", "metadata": {}, "outputs": [], "source": [ "df.subtract(df['R'], axis=0)" ] }, { "cell_type": "markdown", "id": "9d8c8f33", "metadata": {}, "source": [ "## IO" ] }, { "cell_type": "markdown", "id": "1c77fee2", "metadata": {}, "source": [ "### Feather\n", "- csv存储是为了用户的,但要在不同阶段传递,比如特征工程各阶段。那么csv会损坏数据类型,且速度慢\n", "- feather提供了df的序列化和反序列化,几乎是内存保存" ] }, { "cell_type": "code", "execution_count": 10, "id": "af3d49b5", "metadata": {}, "outputs": [], "source": [ "import pytz" ] }, { "cell_type": "code", "execution_count": 13, "id": "470fc1d7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "a str\n", "b int64\n", "c uint8\n", "d float64\n", "e bool\n", "f category\n", "g datetime64[us]\n", "h datetime64[us, US/Eastern]\n", "i datetime64[ns]\n", "dtype: object" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame(\n", " {\n", " \"a\": list(\"abc\"),\n", " \"b\": list(range(1, 4)),\n", " \"c\": np.arange(3, 6).astype(\"u1\"),\n", " \"d\": np.arange(4.0, 7.0, dtype=\"float64\"),\n", " \"e\": [True, False, True],\n", " \"f\": pd.Categorical(list(\"abc\")),\n", " \"g\": pd.date_range(\"20130101\", periods=3),\n", " \"h\": pd.date_range(\"20130101\", periods=3, tz=pytz.timezone(\"US/Eastern\")),\n", " \"i\": pd.date_range(\"20130101\", periods=3, freq=\"ns\"),\n", " }) \n", "df.dtypes" ] }, { "cell_type": "code", "execution_count": 14, "id": "4de5a451", "metadata": {}, "outputs": [], "source": [ "df.to_feather('example.feather')" ] }, { "cell_type": "code", "execution_count": 16, "id": "b8a73b61", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "a str\n", "b int64\n", "c uint8\n", "d float64\n", "e bool\n", "f category\n", "g datetime64[us]\n", "h datetime64[us, US/Eastern]\n", "i datetime64[ns]\n", "dtype: object" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result = pd.read_feather('example.feather')\n", "result.dtypes" ] }, { "cell_type": "markdown", "id": "d3f37b17", "metadata": {}, "source": [ "#### `align` 对齐\n", "- join\n", " - `inner`, `outer`, `left`\n", "- " ] }, { "cell_type": "code", "execution_count": 14, "id": "e2689c07", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a -0.440754\n", "b -0.967044\n", "c -0.343204\n", "d 1.479043\n", "e -0.125159\n", "dtype: float64\n", "a -0.440754\n", "b -0.967044\n", "c -0.343204\n", "dtype: float64\n", "b -0.967044\n", "c -0.343204\n", "d 1.479043\n", "e -0.125159\n", "dtype: float64\n" ] } ], "source": [ "s = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])\n", "print(s)\n", "s1 = s[:3]\n", "s2 = s[1:]\n", "print(s1)\n", "print(s2)\n" ] }, { "cell_type": "code", "execution_count": 20, "id": "f5df91e0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "b -0.967044\n", "c -0.343204\n", "dtype: float64 b -0.967044\n", "c -0.343204\n", "dtype: float64\n" ] } ], "source": [ "# 交集\n", "s1, s2 = s1.align(s2, join='inner')\n", "print(s1, s2)" ] }, { "cell_type": "markdown", "id": "bf6b601f", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "c91afbe2", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "25398b9a", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "17700c64-e44f-4d5e-b639-996b146c3c67", "metadata": {}, "source": [ "`read_csv`" ] }, { "cell_type": "code", "execution_count": 58, "id": "9012d40d-ad23-4797-b89c-83a7dd3408be", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(2.775)" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "56a12130-7d4a-4a93-9162-6bedd618b941", "metadata": {}, "outputs": [], "source": [ "# 读取网页内table标签内容,返回table列表,可能多个table\n", "# 需要lxml底层库 解析网页\n", "pd.read_html()" ] }, { "cell_type": "code", "execution_count": 51, "id": "45d0a948-5f9d-495a-a423-f3095bc3acc1", "metadata": {}, "outputs": [], "source": [ "# pd.read_csv('.csv', sep='|', index_col='')\n", "# pd.read_csv('URL', sep='|', index_col='')\n", "# pd.read_csv('URL', sep=r'\\s+')" ] }, { "cell_type": "code", "execution_count": 52, "id": "789bd324-9802-447d-978c-397557f8e992", "metadata": {}, "outputs": [], "source": [ "#df.head(10)\n", "#users.tail(10)" ] }, { "cell_type": "code", "execution_count": 53, "id": "22dd835c-e374-4823-ac3f-00777599dc9b", "metadata": {}, "outputs": [], "source": [ "#users.describe(include='all')" ] }, { "cell_type": "code", "execution_count": 2, "id": "ef3760dc-60ea-4a53-a451-1d3da1f81c43", "metadata": {}, "outputs": [], "source": [ "# train_data[['col1', 'col2', 'col3']].describe()" ] }, { "cell_type": "code", "execution_count": null, "id": "88fc7a6e-3d92-42f3-a461-e65cbd766227", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "86227c96-8626-41d8-a44c-eb446857baa0", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "010b78d8-cfd0-43a6-a648-a4d67c09e79b", "metadata": {}, "source": [ "include 不能直接通过列名" ] }, { "cell_type": "markdown", "id": "3052d1d6-e1c3-4c9f-b4d1-de7c90b19e3d", "metadata": {}, "source": [ "## Indexing and selecting data" ] }, { "cell_type": "markdown", "id": "b693453c", "metadata": {}, "source": [ "### 索引方式\n", "- `loc`\n", "- `iloc`\n", "- `[]`" ] }, { "cell_type": "markdown", "id": "95d3c7ed", "metadata": {}, "source": [ "### Boolean index\n", "- `|` `or` `&` `and` `~` `not`\n", "- 必须括号分组\n", "- 这与numpy相同" ] }, { "cell_type": "code", "execution_count": 64, "id": "4fdf5ac8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4 1\n", "5 2\n", "6 3\n", "dtype: int64" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = pd.Series(range(-3, 4))\n", "s[s>0]" ] }, { "cell_type": "code", "execution_count": null, "id": "0db507db", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 66, "id": "6c27d9a3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 -3\n", "1 -2\n", "2 -1\n", "3 0\n", "6 3\n", "dtype: int64" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s[(s<1) | (s>2)]" ] }, { "cell_type": "code", "execution_count": 73, "id": "8ed6f7e8", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
abcd
2020-01-030.1800910.673043-0.416968-1.834319
2020-01-050.679155-0.5576290.3887890.699663
2020-01-061.3419011.036003-0.0966800.157641
2020-01-080.678832-1.0188730.4478081.362020
\n", "
" ], "text/plain": [ " a b c d\n", "2020-01-03 0.180091 0.673043 -0.416968 -1.834319\n", "2020-01-05 0.679155 -0.557629 0.388789 0.699663\n", "2020-01-06 1.341901 1.036003 -0.096680 0.157641\n", "2020-01-08 0.678832 -1.018873 0.447808 1.362020" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dates = pd.date_range('1/1/2020', periods=8)\n", "df = pd.DataFrame(\n", " np.random.randn(8,4),\n", " index = dates,\n", " columns = ['a', 'b', 'c', 'd']\n", ")\n", "df[df['a'] > 0]" ] }, { "cell_type": "code", "execution_count": 74, "id": "6b12cc8e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
abc
0onex0.235107
1oney0.455529
2twoy1.187247
3threex-0.776355
4twoy-0.572664
5onex1.399288
6sixx0.555768
\n", "
" ], "text/plain": [ " a b c\n", "0 one x 0.235107\n", "1 one y 0.455529\n", "2 two y 1.187247\n", "3 three x -0.776355\n", "4 two y -0.572664\n", "5 one x 1.399288\n", "6 six x 0.555768" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2 = pd.DataFrame({'a': ['one', 'one', 'two', 'three', 'two', 'one', 'six'],\n", " 'b': ['x', 'y', 'y', 'x', 'y', 'x', 'x'],\n", " 'c': np.random.randn(7)})\n", " \n", "df2" ] }, { "cell_type": "markdown", "id": "0cb285bf", "metadata": {}, "source": [ "### 例子:各种筛选" ] }, { "cell_type": "code", "execution_count": 27, "id": "1d6e037f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AGELOANOVERDUE
User_A2510000
User_B4550001
User_C3020000
\n", "
" ], "text/plain": [ " AGE LOAN OVERDUE\n", "User_A 25 1000 0\n", "User_B 45 5000 1\n", "User_C 30 2000 0" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "data = {\n", " 'AGE': [25, 45, 30],\n", " 'LOAN': [1000, 5000, 2000],\n", " 'OVERDUE': [0, 1, 0]\n", "}\n", "df = pd.DataFrame(data, index=['User_A', 'User_B', 'User_C'])\n", "df" ] }, { "cell_type": "markdown", "id": "1d5a6945", "metadata": {}, "source": [ "- 筛选行: 符合条件的行" ] }, { "cell_type": "code", "execution_count": 30, "id": "6588dcee", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AGELOANOVERDUE
User_B4550001
\n", "
" ], "text/plain": [ " AGE LOAN OVERDUE\n", "User_B 45 5000 1" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[df['LOAN'] > 2000]" ] }, { "cell_type": "markdown", "id": "2b9b4ebe", "metadata": {}, "source": [ "- 筛选列名: 比如corr矩阵" ] }, { "cell_type": "code", "execution_count": 35, "id": "2e41d670", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
abcd
a1.0000000.5580910.3490600.767784
b0.5580911.0000000.4883310.326215
c0.3490600.4883311.0000000.650923
d0.7677840.3262150.6509231.000000
\n", "
" ], "text/plain": [ " a b c d\n", "a 1.000000 0.558091 0.349060 0.767784\n", "b 0.558091 1.000000 0.488331 0.326215\n", "c 0.349060 0.488331 1.000000 0.650923\n", "d 0.767784 0.326215 0.650923 1.000000" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame(np.random.randn(4,4), index=list('abcd'), columns=list('abcd'))\n", "corr = df.corr()\n", "corr = corr.abs()\n", "corr" ] }, { "cell_type": "code", "execution_count": 39, "id": "45c9277f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['c', 'd'], dtype='str')" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corr.columns[corr['c'] > 0.6] #" ] }, { "cell_type": "code", "execution_count": null, "id": "2eb38053", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "96fc9ed3", "metadata": {}, "source": [ "- 筛选行名:比如想知道符合条件的id" ] }, { "cell_type": "code", "execution_count": 38, "id": "98963f79", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['c', 'd'], dtype='str')" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corr.index[corr['c'] > 0.6] # 找到了和c 相关系数大于0.6的特征" ] }, { "cell_type": "markdown", "id": "2eec716a", "metadata": {}, "source": [ "### astype(bool)\n", "- 非0即True\n", "- NaN是True" ] }, { "cell_type": "code", "execution_count": 37, "id": "81925041", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Abc
00-1.004799NaN
110.562132NaN
220.890005NaN
330.559909NaN
\n", "
" ], "text/plain": [ " A b c\n", "0 0 -1.004799 NaN\n", "1 1 0.562132 NaN\n", "2 2 0.890005 NaN\n", "3 3 0.559909 NaN" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame(\n", " {\n", " 'A': np.arange(4),\n", " 'b': np.random.randn(4),\n", " 'c': [np.nan for i in range(4)]\n", " }\n", ")\n", "df" ] }, { "cell_type": "code", "execution_count": 38, "id": "5135a7b8", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Abc
0FalseTrueTrue
1TrueTrueTrue
2TrueTrueTrue
3TrueTrueTrue
\n", "
" ], "text/plain": [ " A b c\n", "0 False True True\n", "1 True True True\n", "2 True True True\n", "3 True True True" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.astype(bool)" ] }, { "cell_type": "markdown", "id": "584b9e6b", "metadata": {}, "source": [ "### where\n", "- 快速where update" ] }, { "cell_type": "code", "execution_count": 20, "id": "bc355003", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123
0-0.616614-0.657717-0.025098-0.480370
1-0.368138-0.341348-2.3263000.454195
21.2613472.2964351.386900-0.867184
3-0.364546-1.276686-0.822064-1.099228
41.1971510.670332-0.009173-0.483234
50.429132-0.1087431.044581-0.361712
\n", "
" ], "text/plain": [ " 0 1 2 3\n", "0 -0.616614 -0.657717 -0.025098 -0.480370\n", "1 -0.368138 -0.341348 -2.326300 0.454195\n", "2 1.261347 2.296435 1.386900 -0.867184\n", "3 -0.364546 -1.276686 -0.822064 -1.099228\n", "4 1.197151 0.670332 -0.009173 -0.483234\n", "5 0.429132 -0.108743 1.044581 -0.361712" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame(\n", " np.random.randn(6,4),\n", ")\n", "df" ] }, { "cell_type": "code", "execution_count": 24, "id": "1bac392e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123
0-0.616614-0.657717-0.025098-0.480370
1-0.368138-0.341348-2.32630088.000000
288.00000088.00000088.000000-0.867184
3-0.364546-1.276686-0.822064-1.099228
488.00000088.000000-0.009173-0.483234
588.000000-0.10874388.000000-0.361712
\n", "
" ], "text/plain": [ " 0 1 2 3\n", "0 -0.616614 -0.657717 -0.025098 -0.480370\n", "1 -0.368138 -0.341348 -2.326300 88.000000\n", "2 88.000000 88.000000 88.000000 -0.867184\n", "3 -0.364546 -1.276686 -0.822064 -1.099228\n", "4 88.000000 88.000000 -0.009173 -0.483234\n", "5 88.000000 -0.108743 88.000000 -0.361712" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.where(df<0.3, 88)" ] }, { "cell_type": "code", "execution_count": 26, "id": "9747069d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123
0-0.616614-0.657717-0.025098-0.480370
1-0.368138-0.341348-2.326300NaN
2NaNNaNNaN-0.867184
3-0.364546-1.276686-0.822064-1.099228
4NaNNaN-0.009173-0.483234
5NaN-0.108743NaN-0.361712
\n", "
" ], "text/plain": [ " 0 1 2 3\n", "0 -0.616614 -0.657717 -0.025098 -0.480370\n", "1 -0.368138 -0.341348 -2.326300 NaN\n", "2 NaN NaN NaN -0.867184\n", "3 -0.364546 -1.276686 -0.822064 -1.099228\n", "4 NaN NaN -0.009173 -0.483234\n", "5 NaN -0.108743 NaN -0.361712" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.where(df<0.3) # 默认变为NaN" ] }, { "cell_type": "markdown", "id": "9407b14a", "metadata": {}, "source": [ "### reset索引" ] }, { "cell_type": "code", "execution_count": 45, "id": "cb1afca4", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
areapop
2020-10-101.1836771.191695
2020-10-11-0.4106220.811568
2020-10-12-0.237822-1.234384
2020-10-13-0.6191601.917208
2020-10-140.0307150.243250
2020-10-153.830778-0.931668
\n", "
" ], "text/plain": [ " area pop\n", "2020-10-10 1.183677 1.191695\n", "2020-10-11 -0.410622 0.811568\n", "2020-10-12 -0.237822 -1.234384\n", "2020-10-13 -0.619160 1.917208\n", "2020-10-14 0.030715 0.243250\n", "2020-10-15 3.830778 -0.931668" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame(\n", " data = np.random.randn(6,2),\n", " index = pd.date_range('20201010', periods=6),\n", " columns = ['area', 'pop']\n", ")\n", "df" ] }, { "cell_type": "markdown", "id": "8008bba3", "metadata": {}, "source": [ "`reset_index` 将索引重置为简单的整数索引, 原index转为列" ] }, { "cell_type": "code", "execution_count": 46, "id": "11ccc4c0", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
indexareapop
02020-10-101.1836771.191695
12020-10-11-0.4106220.811568
22020-10-12-0.237822-1.234384
32020-10-13-0.6191601.917208
42020-10-140.0307150.243250
52020-10-153.830778-0.931668
\n", "
" ], "text/plain": [ " index area pop\n", "0 2020-10-10 1.183677 1.191695\n", "1 2020-10-11 -0.410622 0.811568\n", "2 2020-10-12 -0.237822 -1.234384\n", "3 2020-10-13 -0.619160 1.917208\n", "4 2020-10-14 0.030715 0.243250\n", "5 2020-10-15 3.830778 -0.931668" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.reset_index()" ] }, { "cell_type": "code", "execution_count": null, "id": "4cd45e51", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "cdb0816a", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "6c3063b1-b5dd-4757-8738-e5e3cebb1d76", "metadata": {}, "source": [ "### 3.3 数据取值与选择" ] }, { "cell_type": "markdown", "id": "c7fd02bf-303c-4332-b2c9-f3a8c33d1f14", "metadata": {}, "source": [ "### 3.3.1 Series对象" ] }, { "cell_type": "markdown", "id": "ba477bf4-ca3d-4aa5-9ed6-af9a1f41ce7b", "metadata": {}, "source": [ "#### 1. 作为字典" ] }, { "cell_type": "code", "execution_count": 2, "id": "27a4cdb1-b034-49cf-8845-2a47249e70ac", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'pd' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[2], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[43mpd\u001b[49m\u001b[38;5;241m.\u001b[39mSeries([\u001b[38;5;241m0.25\u001b[39m, \u001b[38;5;241m0.5\u001b[39m, \u001b[38;5;241m0.75\u001b[39m, \u001b[38;5;241m1.0\u001b[39m],index\u001b[38;5;241m=\u001b[39m[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ma\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mc\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124md\u001b[39m\u001b[38;5;124m'\u001b[39m])\n\u001b[0;32m 2\u001b[0m data\n", "\u001b[1;31mNameError\u001b[0m: name 'pd' is not defined" ] } ], "source": [ "data = pd.Series([0.25, 0.5, 0.75, 1.0],index=['a', 'b', 'c', 'd'])\n", "data" ] }, { "cell_type": "code", "execution_count": 3, "id": "528c0a46-0b27-4fef-a535-107c6f0eb4e3", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'data' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[3], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124ma\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01min\u001b[39;00m \u001b[43mdata\u001b[49m\n\u001b[0;32m 2\u001b[0m data\u001b[38;5;241m.\u001b[39mkeys()\n\u001b[0;32m 3\u001b[0m \u001b[38;5;28mlist\u001b[39m(data\u001b[38;5;241m.\u001b[39mitems())\n", "\u001b[1;31mNameError\u001b[0m: name 'data' is not defined" ] } ], "source": [ "'a' in data\n", "data.keys()\n", "list(data.items())" ] }, { "cell_type": "code", "execution_count": 17, "id": "6c7ecec0-48cc-4698-9d3b-d0d3adf80dd6", "metadata": {}, "outputs": [], "source": [ "data['e'] = 1.2 #添加索引和数据" ] }, { "cell_type": "markdown", "id": "617898d6-b7b5-44b7-bd9e-f8ce3187ea0c", "metadata": {}, "source": [ "#### 2. 作为数组" ] }, { "cell_type": "code", "execution_count": 18, "id": "a0d9c9e0-e381-4eb1-97f6-559da39b945b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "a 0.25\n", "b 0.50\n", "c 0.75\n", "dtype: float64" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['a':'c']" ] }, { "cell_type": "code", "execution_count": 19, "id": "b3111cac-1ce5-42b0-b914-b63dc557b4db", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "a 0.25\n", "b 0.50\n", "dtype: float64" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[0:2] # 隐式整数索引" ] }, { "cell_type": "code", "execution_count": 20, "id": "9cdef413-0c31-40f8-8f0d-785792f33ecd", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "a False\n", "b False\n", "c True\n", "d True\n", "e True\n", "dtype: bool" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data > 0.5" ] }, { "cell_type": "code", "execution_count": 21, "id": "87ca0288-a5f0-4942-85c7-33594fed8377", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "c 0.75\n", "d 1.00\n", "e 1.20\n", "dtype: float64" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[data > 0.5]" ] }, { "cell_type": "code", "execution_count": 22, "id": "c8a6e378-6bd2-4e37-8531-2ccc96abf97b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "a 0.25\n", "e 1.20\n", "dtype: float64" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[['a', 'e']] # 花哨索引" ] }, { "cell_type": "markdown", "id": "477ea401-4bb8-408a-b06c-c4ed54862440", "metadata": {}, "source": [ "#### 3. 索引器 loc, ilod, ix" ] }, { "cell_type": "code", "execution_count": 23, "id": "e8b88c89-4a58-4718-831e-55c72c940d1b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(0.5)" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.loc['a'] # 显示索引\n", "data.iloc[1]" ] }, { "cell_type": "markdown", "id": "c2b881bd-40d8-4cb6-b1c6-2ca1bc464310", "metadata": {}, "source": [ "### 3.3.2 DataFrame数据选择方法\n", "- for 返回的是列名" ] }, { "cell_type": "markdown", "id": "f76aec5e-d8b8-47d7-a2da-d5fa27509327", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "c8008bdb-8444-4011-ac85-b833d096df7e", "metadata": {}, "source": [ "插入一列" ] }, { "cell_type": "code", "execution_count": 2, "id": "d0900da0-18ff-4554-b165-f5bba1bedae9", "metadata": {}, "outputs": [], "source": [ "#train_dataset.insert(0, \"WAGE\", y_train)" ] }, { "cell_type": "code", "execution_count": null, "id": "945541e8-4579-4bf5-9ad8-2cc3a1513d22", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "53c48d28-cc5b-44b7-81f0-b431984a84cb", "metadata": {}, "source": [ "#### 1. DataFrame作为字典, value是Series对象" ] }, { "cell_type": "code", "execution_count": 2, "id": "224d1665-708a-4e4c-9c64-4184ff5b711f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
areapop
California42396738332521
Texas69566226448193
New York14129719651127
Florida17031219552860
Illinois14999512882135
\n", "
" ], "text/plain": [ " area pop\n", "California 423967 38332521\n", "Texas 695662 26448193\n", "New York 141297 19651127\n", "Florida 170312 19552860\n", "Illinois 149995 12882135" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "area = pd.Series({'California': 423967, 'Texas': 695662,\n", " 'New York': 141297, 'Florida': 170312,\n", " 'Illinois': 149995})\n", "pop = pd.Series({'California': 38332521, 'Texas': 26448193,\n", " 'New York': 19651127, 'Florida': 19552860,\n", " 'Illinois': 12882135})\n", "data = pd.DataFrame({'area' : area, 'pop' : pop})\n", "data" ] }, { "cell_type": "code", "execution_count": 7, "id": "9692b727", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([423967, 695662, 141297, 170312, 149995])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['area'].unique()" ] }, { "cell_type": "code", "execution_count": 5, "id": "6ac968d9-0705-454e-871f-0814d57d2ac2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "California 423967\n", "Texas 695662\n", "New York 141297\n", "Florida 170312\n", "Illinois 149995\n", "Name: area, dtype: int64" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['area']\n", "data.area" ] }, { "cell_type": "code", "execution_count": 6, "id": "4a59d763-8b13-4d4a-8587-8bcab1029cf6", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
areapopdensity
California4239673833252190.413926
Texas6956622644819338.018740
New York14129719651127139.076746
Florida17031219552860114.806121
Illinois1499951288213585.883763
\n", "
" ], "text/plain": [ " area pop density\n", "California 423967 38332521 90.413926\n", "Texas 695662 26448193 38.018740\n", "New York 141297 19651127 139.076746\n", "Florida 170312 19552860 114.806121\n", "Illinois 149995 12882135 85.883763" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['density'] = data['pop'] / data['area']\n", "data" ] }, { "cell_type": "code", "execution_count": null, "id": "231af5bf-8e1a-4178-b122-3cd0b4615860", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "7da5cc6b-0a8b-4655-aab1-1222ce1ed938", "metadata": {}, "source": [ "#### 2. 看作二维数组\n", "得到的结果也是np数组\n", "通过loc,iloc索引访问 Index对象!\n", "- 不支持[]数组切片. 只能通过iloc位置或者loc列名" ] }, { "cell_type": "code", "execution_count": 8, "id": "b2f84ea5-4adb-4966-b8ac-0f5e8238ca9f", "metadata": {}, "outputs": [], "source": [ "# data[:, 1:] # error" ] }, { "cell_type": "code", "execution_count": null, "id": "c94b24f2-b831-4c7b-9fa8-96909cef6bf1", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 8, "id": "3478b9a2-3972-4946-9a31-d970aaf8a2a0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[4.23967000e+05, 3.83325210e+07, 9.04139261e+01],\n", " [6.95662000e+05, 2.64481930e+07, 3.80187404e+01],\n", " [1.41297000e+05, 1.96511270e+07, 1.39076746e+02],\n", " [1.70312000e+05, 1.95528600e+07, 1.14806121e+02],\n", " [1.49995000e+05, 1.28821350e+07, 8.58837628e+01]])" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.values" ] }, { "cell_type": "code", "execution_count": 9, "id": "ac9a53f4-e8e6-41e9-aec0-e8d95f7bb64e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CaliforniaTexasNew YorkFloridaIllinois
area4.239670e+056.956620e+051.412970e+051.703120e+051.499950e+05
pop3.833252e+072.644819e+071.965113e+071.955286e+071.288214e+07
density9.041393e+013.801874e+011.390767e+021.148061e+028.588376e+01
\n", "
" ], "text/plain": [ " California Texas New York Florida Illinois\n", "area 4.239670e+05 6.956620e+05 1.412970e+05 1.703120e+05 1.499950e+05\n", "pop 3.833252e+07 2.644819e+07 1.965113e+07 1.955286e+07 1.288214e+07\n", "density 9.041393e+01 3.801874e+01 1.390767e+02 1.148061e+02 8.588376e+01" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.T" ] }, { "cell_type": "code", "execution_count": 10, "id": "a3df95b1-b405-49f4-b589-49e2cbf2b706", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([4.23967000e+05, 3.83325210e+07, 9.04139261e+01])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.values[0]" ] }, { "cell_type": "code", "execution_count": 11, "id": "4f722a4e-d22d-4e3c-9276-acf827b29cf8", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
areapop
California42396738332521
Texas69566226448193
New York14129719651127
\n", "
" ], "text/plain": [ " area pop\n", "California 423967 38332521\n", "Texas 695662 26448193\n", "New York 141297 19651127" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.iloc[:3, :2] # 按位置索引。 " ] }, { "cell_type": "code", "execution_count": 12, "id": "131ab097-60c0-4d01-8266-3c12acbc9a9b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['California', 'Texas', 'New York', 'Florida', 'Illinois'], dtype='object')" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.index" ] }, { "cell_type": "markdown", "id": "2022f80e-8168-4409-8a62-00429053459e", "metadata": {}, "source": [ "iloc依赖整数索引,如果索引被修改过,可能iloc失效" ] }, { "cell_type": "code", "execution_count": 14, "id": "653d8ead-b06f-47ae-9710-ba68637879cd", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
area
Texas695662
Florida170312
\n", "
" ], "text/plain": [ " area\n", "Texas 695662\n", "Florida 170312" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.loc[['Texas', 'Florida'], ['area']]" ] }, { "cell_type": "code", "execution_count": 1, "id": "ea7f5505-2b83-4278-8ed2-1cc1d25270ce", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'data' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[1], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[43mdata\u001b[49m\u001b[38;5;241m.\u001b[39mloc[:\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mTexas\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124marea\u001b[39m\u001b[38;5;124m'\u001b[39m:] \u001b[38;5;66;03m# 按照名字索引\u001b[39;00m\n", "\u001b[1;31mNameError\u001b[0m: name 'data' is not defined" ] } ], "source": [ "data.loc[:'Texas', 'area':] # 按照名字索引" ] }, { "cell_type": "markdown", "id": "a5c14022-b6ea-4a39-8d34-145bfd470139", "metadata": {}, "source": [ "切片是基于行索引切片的, 最好通过loc显式切片" ] }, { "cell_type": "code", "execution_count": 2, "id": "6d57b622-d762-4128-95c5-aa4334558409", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'data' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[2], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[43mdata\u001b[49m[:\u001b[38;5;241m1\u001b[39m] \u001b[38;5;66;03m# 表示第一行 而非第一列。 \u001b[39;00m\n", "\u001b[1;31mNameError\u001b[0m: name 'data' is not defined" ] } ], "source": [ "data[:1] # 表示第一行 而非第一列。 " ] }, { "cell_type": "markdown", "id": "da98762c-97d0-4c5e-8718-6a7d870e3cc0", "metadata": {}, "source": [ "#### 3. 删除行列" ] }, { "cell_type": "code", "execution_count": 13, "id": "1a006bb5-7b3c-419a-b791-a0d82e03304a", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "crime = pd.DataFrame({\n", " 'id':[1,2,3],\n", " 'country':['CH','US','EU'],\n", " 'total':[1,2,3],\n", " 'dead':[4,6,7]\n", "})\n", "crime.set_index('id',inplace=True)" ] }, { "cell_type": "markdown", "id": "80fad266-5d39-4f9f-9242-a9d40ff2ed82", "metadata": {}, "source": [ "1. del原地删除列。\n", "- 不能用于删除行" ] }, { "cell_type": "code", "execution_count": 14, "id": "d4ccf482-336b-4929-b080-feb462c850c3", "metadata": {}, "outputs": [], "source": [ "del crime['total']" ] }, { "cell_type": "code", "execution_count": 15, "id": "ba409608-cab0-4776-b655-886537c2c3f4", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countrydead
id
1CH4
2US6
3EU7
\n", "
" ], "text/plain": [ " country dead\n", "id \n", "1 CH 4\n", "2 US 6\n", "3 EU 7" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "crime" ] }, { "cell_type": "markdown", "id": "dce5a5d3-9c93-4fa1-ad25-a3f2727e1891", "metadata": {}, "source": [ "2. drop\n", "- inplace原地修改\n", "- 必须axis指定行列方向" ] }, { "cell_type": "code", "execution_count": null, "id": "078cd54d-0faa-43a5-9a07-704cbee9cdaa", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
country
id
1CH
2US
3EU
\n", "
" ], "text/plain": [ " country\n", "id \n", "1 CH\n", "2 US\n", "3 EU" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 删除列\n", "crime.drop(columns=['dead'],axis=1)" ] }, { "cell_type": "code", "execution_count": null, "id": "b22bef3e-6d99-4fc0-9b96-058f1de81d69", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countrydead
id
2US6
3EU7
\n", "
" ], "text/plain": [ " country dead\n", "id \n", "2 US 6\n", "3 EU 7" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 删除行 axis=0. \n", "crime.drop(index=[1], axis=0)" ] }, { "cell_type": "markdown", "id": "1a1bcdb4-6e08-4e52-9f8b-34c64c80d1fd", "metadata": {}, "source": [ "#### 4. 通过dtypes选取列" ] }, { "cell_type": "code", "execution_count": 25, "id": "0dec278a-cadc-4cc2-9393-8fee0305ad2d", "metadata": {}, "outputs": [], "source": [ "df = pd.DataFrame({\n", " 'age':[1,2],\n", " 'name':['aa','bb'],\n", " 'married':[False, True]\n", "})" ] }, { "cell_type": "code", "execution_count": 27, "id": "908dfa44-ab04-41cb-aa3f-27005f0ffa14", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "age int64\n", "name object\n", "married bool\n", "dtype: object" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.dtypes" ] }, { "cell_type": "code", "execution_count": 29, "id": "477ab888-9dd2-467e-a3e6-55067e5e031b", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
age
01
12
\n", "
" ], "text/plain": [ " age\n", "0 1\n", "1 2" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.select_dtypes(include=['int64'])" ] }, { "cell_type": "markdown", "id": "963d730c", "metadata": {}, "source": [ "## Working with text data" ] }, { "cell_type": "code", "execution_count": null, "id": "4507f8ed", "metadata": {}, "outputs": [], "source": [ "names.str.capitalize()\n", "names.str.len()\n", "names.str.match('[A-Za-z]+')\n", "names.str[0:3]\n", "names.str.split().get(-1)" ] }, { "cell_type": "markdown", "id": "d009a92d", "metadata": {}, "source": [ "## Working with missing data" ] }, { "cell_type": "markdown", "id": "16f1a929-2c61-42f5-82f2-b0c21e58e418", "metadata": {}, "source": [ "### 3.5 处理缺失值\n", "? 缺失值有3种形式;null, NaN, NA \n", "\n", "pd的缺失值表示:NaN,None对象" ] }, { "cell_type": "markdown", "id": "b6ec8cbb-1c41-4ee0-90f3-c05b491643b7", "metadata": {}, "source": [ "### 3.5.2 Pandas的缺失值\n" ] }, { "cell_type": "markdown", "id": "a4f25840-8406-4858-95e0-d696031c3a8b", "metadata": {}, "source": [ "1. None:Python对象类型的缺失值\n", "\n", " 只有在object数组类型用到" ] }, { "cell_type": "code", "execution_count": null, "id": "f63ac7b4-621d-4e83-b61a-4bb4e694f461", "metadata": {}, "outputs": [], "source": [ "np.array([1, None, 3 ,4], dtype = object)" ] }, { "cell_type": "markdown", "id": "898d6c7d-424e-49c5-94f0-28773362662f", "metadata": {}, "source": [ "2. NaN(全称Not a Number,不是一个数字): 数值类型缺失\n", "- 是一个特殊的浮点数!!!\n", "- 无论和NaN 进行何种操作,最终结果都是NaN。不会抛出异常\n", "- np有一些特殊函数,忽略nan聚合影响" ] }, { "cell_type": "code", "execution_count": null, "id": "e8286f3e-3ce5-4514-81ea-a0abd7b0965f", "metadata": {}, "outputs": [], "source": [ "x = np.array([1, np.nan, 3, 4])" ] }, { "cell_type": "code", "execution_count": null, "id": "55d9e559-fd3b-4648-9e0a-647c99c2d365", "metadata": {}, "outputs": [], "source": [ "x + 2" ] }, { "cell_type": "code", "execution_count": null, "id": "1c9803f8-331b-44a8-ba09-500f1f8add53", "metadata": {}, "outputs": [], "source": [ "np.nanmax(x)" ] }, { "cell_type": "markdown", "id": "1d0e1f6d-9839-4ef8-b9c0-8b3b87ba5a80", "metadata": {}, "source": [ "3. Pandas中NaN与None的差异\n", "\n", "基本上可以看作等价交换的" ] }, { "cell_type": "code", "execution_count": null, "id": "8952a4f7-e445-49bb-a4d6-f40456938e85", "metadata": {}, "outputs": [], "source": [ "pd.Series([1, np.nan, 3, None])" ] }, { "cell_type": "markdown", "id": "94a6f8a1-da6f-4189-aa1d-e906820b4619", "metadata": {}, "source": [ "### 3.5.3 处理缺失值\n", "发现、剔除、替换缺失值\n", "- isnull()\n", "- notnull()\n", "- dropna()\n", "- fillna()" ] }, { "cell_type": "markdown", "id": "5a9fb820-9c4f-4578-bc45-8d420641a73b", "metadata": {}, "source": [ "1. 发现" ] }, { "cell_type": "code", "execution_count": null, "id": "02a8409c-8d2b-4b57-be7d-858e5b106956", "metadata": {}, "outputs": [], "source": [ "data = pd.Series([1, np.nan, 'hello', None])\n", "data" ] }, { "cell_type": "code", "execution_count": null, "id": "1e21de9f-6359-406f-956f-80403c5014e4", "metadata": {}, "outputs": [], "source": [ "data.isnull() # 返回掩码数组" ] }, { "cell_type": "code", "execution_count": null, "id": "8daff2aa-821e-48de-92c8-7d5d2f60043d", "metadata": {}, "outputs": [], "source": [ "data[data.notnull()] # 通过掩码筛选,索引去除" ] }, { "cell_type": "markdown", "id": "8c0eb983-c1fb-43dd-99ff-1a6ac3b7acdd", "metadata": {}, "source": [ "2. 剔除" ] }, { "cell_type": "code", "execution_count": null, "id": "425542af-18a0-4302-882a-79e247e9c95c", "metadata": {}, "outputs": [], "source": [ "data.dropna() # 快速剔除!" ] }, { "cell_type": "code", "execution_count": null, "id": "8db62dc6-77a8-4090-87cd-24a8bbc7dcc5", "metadata": {}, "outputs": [], "source": [ "df = pd.DataFrame([[1, np.nan, 2],\n", " [2, 3, 5],\n", " [np.nan, 4, 6]])\n", "df" ] }, { "cell_type": "code", "execution_count": null, "id": "02e10921-8279-4fcf-be71-ef5a8af154f1", "metadata": {}, "outputs": [], "source": [ "df.dropna() # 默认剔除行" ] }, { "cell_type": "code", "execution_count": null, "id": "f19b0999-931b-4001-8c74-562e6426e363", "metadata": {}, "outputs": [], "source": [ "df.dropna(axis='columns') # 剔除列" ] }, { "cell_type": "markdown", "id": "8d1930bb-5aee-48e3-8c12-7f939532fcce", "metadata": {}, "source": [ "剔除行列对数据影响太大,\n", "- 通过how属性选择策略\n", "- thresh设置阈值:非缺失值最小数量" ] }, { "cell_type": "code", "execution_count": null, "id": "305a4934-5c06-4408-bc20-533d41a22c04", "metadata": {}, "outputs": [], "source": [ "df.dropna(how = 'any') # 只要有缺失就剔除" ] }, { "cell_type": "code", "execution_count": null, "id": "f973e71e-6f09-436a-8413-d8989e527108", "metadata": {}, "outputs": [], "source": [ "df.dropna(axis = 1)" ] }, { "cell_type": "code", "execution_count": null, "id": "0954fac3-c791-4c89-94bf-5f1794d06729", "metadata": {}, "outputs": [], "source": [ "df.dropna(axis='columns', how='all') # 只有一列全部缺失才剔除" ] }, { "cell_type": "code", "execution_count": null, "id": "bb4409d1-a961-4f10-a2eb-672077484419", "metadata": {}, "outputs": [], "source": [ "df.dropna(axis='rows', thresh= 3)\n" ] }, { "cell_type": "markdown", "id": "b1748873-ae05-45d8-b087-1dc3b72beee3", "metadata": {}, "source": [ "3. 填充缺失值" ] }, { "cell_type": "code", "execution_count": null, "id": "1e5bd330-1bb5-4b65-be80-8958af7d63f3", "metadata": {}, "outputs": [], "source": [ "data = pd.Series([1, np.nan, 2, None, 3], index=list('abcde'))\n", "data" ] }, { "cell_type": "code", "execution_count": null, "id": "83c31a1b-c24a-428a-a5fb-2233eaa9982a", "metadata": {}, "outputs": [], "source": [ "data.fillna(0) # 0填充" ] }, { "cell_type": "code", "execution_count": null, "id": "e41d5e8d-f79e-42f5-8ba2-1f6e687eb217", "metadata": {}, "outputs": [], "source": [ "data.fillna(method='ffill') # 通过前面的值填充" ] }, { "cell_type": "code", "execution_count": null, "id": "ad6d00d1-ba01-48c4-8b16-490f4bc168d6", "metadata": {}, "outputs": [], "source": [ "data.fillna(method = 'bfill')" ] }, { "cell_type": "code", "execution_count": null, "id": "cf400e83-6e8c-438e-a016-f39850790035", "metadata": {}, "outputs": [], "source": [ "df" ] }, { "cell_type": "code", "execution_count": null, "id": "9608e81c-3b26-4121-99ac-bff334d62300", "metadata": {}, "outputs": [], "source": [ "df.fillna(method = 'ffill', axis=0)" ] }, { "cell_type": "markdown", "id": "62d9efe2-27aa-4388-9343-0577ff8b7e9e", "metadata": {}, "source": [ "## MultiIndex / advanced indexing" ] }, { "cell_type": "markdown", "id": "9ea4bd20-ddf9-4435-bdd2-6d95e64aba44", "metadata": {}, "source": [ "### 层级索引" ] }, { "cell_type": "markdown", "id": "af555809", "metadata": {}, "source": [ "分组后agg也会生成层级列索引" ] }, { "cell_type": "code", "execution_count": 54, "id": "e95f25b5", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AB
minmaxsumminmaxsum
ID
00.1063740.1063740.106374-0.514180-0.514180-0.514180
11.6101021.6101021.610102-0.389459-0.389459-0.389459
20.6870680.6870680.687068-0.214000-0.214000-0.214000
30.2359960.2359960.235996-0.120299-0.120299-0.120299
4-0.136370-0.136370-0.136370-1.748903-1.748903-1.748903
5-0.809654-0.809654-0.809654-1.679501-1.679501-1.679501
\n", "
" ], "text/plain": [ " A B \n", " min max sum min max sum\n", "ID \n", "0 0.106374 0.106374 0.106374 -0.514180 -0.514180 -0.514180\n", "1 1.610102 1.610102 1.610102 -0.389459 -0.389459 -0.389459\n", "2 0.687068 0.687068 0.687068 -0.214000 -0.214000 -0.214000\n", "3 0.235996 0.235996 0.235996 -0.120299 -0.120299 -0.120299\n", "4 -0.136370 -0.136370 -0.136370 -1.748903 -1.748903 -1.748903\n", "5 -0.809654 -0.809654 -0.809654 -1.679501 -1.679501 -1.679501" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame({\n", " 'ID': pd.RangeIndex(6),\n", " 'A': np.random.randn(6),\n", " 'B': np.random.randn(6)\n", "}\n", ")\n", "df_agg = df.groupby(by='ID').agg(\n", " ['min', 'max', 'sum']\n", ")\n", "df_agg" ] }, { "cell_type": "markdown", "id": "ecb5b94d", "metadata": {}, "source": [ "可以将层级列索引平铺" ] }, { "cell_type": "code", "execution_count": null, "id": "ca5aae7e", "metadata": {}, "outputs": [], "source": [ "df_agg.columns = ['_'.join(col).strip() for col in df_agg.columns.values]" ] }, { "cell_type": "code", "execution_count": 56, "id": "b0b6f9b2", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
A_minA_maxA_sumB_minB_maxB_sum
ID
00.1063740.1063740.106374-0.514180-0.514180-0.514180
11.6101021.6101021.610102-0.389459-0.389459-0.389459
20.6870680.6870680.687068-0.214000-0.214000-0.214000
30.2359960.2359960.235996-0.120299-0.120299-0.120299
4-0.136370-0.136370-0.136370-1.748903-1.748903-1.748903
5-0.809654-0.809654-0.809654-1.679501-1.679501-1.679501
\n", "
" ], "text/plain": [ " A_min A_max A_sum B_min B_max B_sum\n", "ID \n", "0 0.106374 0.106374 0.106374 -0.514180 -0.514180 -0.514180\n", "1 1.610102 1.610102 1.610102 -0.389459 -0.389459 -0.389459\n", "2 0.687068 0.687068 0.687068 -0.214000 -0.214000 -0.214000\n", "3 0.235996 0.235996 0.235996 -0.120299 -0.120299 -0.120299\n", "4 -0.136370 -0.136370 -0.136370 -1.748903 -1.748903 -1.748903\n", "5 -0.809654 -0.809654 -0.809654 -1.679501 -1.679501 -1.679501" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_agg" ] }, { "cell_type": "code", "execution_count": 4, "id": "8e384a4c-ceca-46b7-a5f2-17ca55c667e6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[('California', 2000),\n", " ('California', 2010),\n", " ('New York', 2000),\n", " ('New York', 2010),\n", " ('Texas', 2000),\n", " ('Texas', 2010)]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "index = [('California', 2000), ('California', 2010),\n", " ('New York', 2000), ('New York', 2010),\n", " ('Texas', 2000), ('Texas', 2010)]\n", "index" ] }, { "cell_type": "code", "execution_count": 5, "id": "d89795a2-9544-4368-b1ff-e6ba36c52793", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "MultiIndex([('California', 2000),\n", " ('California', 2010),\n", " ( 'New York', 2000),\n", " ( 'New York', 2010),\n", " ( 'Texas', 2000),\n", " ( 'Texas', 2010)],\n", " )" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "index = pd.MultiIndex.from_tuples(index)\n", "index" ] }, { "cell_type": "code", "execution_count": 8, "id": "2d896182-c2a7-4952-ae7c-cac57cd71040", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "California 2000 33871648\n", " 2010 37253956\n", "New York 2000 18976457\n", " 2010 19378102\n", "Texas 2000 20851820\n", " 2010 25145561\n", "dtype: int64" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "populations = [33871648, 37253956,\n", " 18976457, 19378102,\n", " 20851820, 25145561]\n", "pop = pd.Series(populations, index=index)\n", "pop" ] }, { "cell_type": "markdown", "id": "cf77728b-6cab-4da7-bce6-327dd5ceee3b", "metadata": {}, "source": [ "一级索引缺失忽略就是多级索引的表现形式!。" ] }, { "cell_type": "code", "execution_count": 9, "id": "0f84e074-aea0-40bc-89d0-fa59fa0187ca", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "California 37253956\n", "New York 19378102\n", "Texas 25145561\n", "dtype: int64" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pop[:,2010] # 二级索引获取2010年数据" ] }, { "cell_type": "markdown", "id": "c0bc1f3c-89a5-46a9-b091-f30fff3131cc", "metadata": {}, "source": [ "!多级索引如二级索引 可以与 dataframe互换!\n" ] }, { "cell_type": "code", "execution_count": 6, "id": "d8167884-a7be-40f1-aec5-e6b4ce474d51", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'pop' is not defined", "output_type": "error", "traceback": [ "\u001b[31m---------------------------------------------------------------------------\u001b[39m", "\u001b[31mNameError\u001b[39m Traceback (most recent call last)", "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[6]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m pop_df = \u001b[43mpop\u001b[49m.unstack()\n\u001b[32m 2\u001b[39m pop_df\n", "\u001b[31mNameError\u001b[39m: name 'pop' is not defined" ] } ], "source": [ "pop_df = pop.unstack()\n", "pop_df" ] }, { "cell_type": "code", "execution_count": null, "id": "b7ea5226-6796-4a21-ad16-efa8f0243d82", "metadata": {}, "outputs": [], "source": [ "pop_df.stack()" ] }, { "cell_type": "markdown", "id": "907332af-efff-4ef8-9dd6-12d4b3fefadc", "metadata": {}, "source": [ "三级索引!" ] }, { "cell_type": "code", "execution_count": null, "id": "f85954ba-0122-4a37-be5b-55f82d6dac3d", "metadata": {}, "outputs": [], "source": [ "pop_df = pd.DataFrame({'total' : pop, 'under18' : [9267089, 9284094,4687374, 4318033,5906301, 6879014]})\n", "pop_df" ] }, { "cell_type": "markdown", "id": "a81457db-fb40-42ee-9560-0ae6b9eeb503", "metadata": {}, "source": [ "### 3.6.2 多级索引的创建方法" ] }, { "cell_type": "markdown", "id": "81eda97f-0156-42bb-8404-4cb85c7ad492", "metadata": {}, "source": [ "1. 最直接的就是,index设置为多维数组 (隐式)" ] }, { "cell_type": "code", "execution_count": 10, "id": "eebdd0df-8082-4d41-9b93-d5e4ebdd20fe", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
data1data2
a10.1335490.117980
20.3286390.054611
b10.8468740.911447
20.7729550.942654
\n", "
" ], "text/plain": [ " data1 data2\n", "a 1 0.133549 0.117980\n", " 2 0.328639 0.054611\n", "b 1 0.846874 0.911447\n", " 2 0.772955 0.942654" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame(np.random.rand(4, 2),\n", " index=[['a', 'a', 'b', 'b'], [1, 2, 1, 2]],\n", " columns=['data1', 'data2'])\n", "df" ] }, { "cell_type": "markdown", "id": "1c5b64da-b3e7-4c76-9015-49d4df324c0b", "metadata": {}, "source": [ "2. 元组为键的字典(隐式)" ] }, { "cell_type": "code", "execution_count": 11, "id": "a5638f5f-3381-450b-9e8d-3548bc26dcec", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "California 2000 33871648\n", " 2010 37253956\n", "Texas 2000 20851820\n", " 2010 25145561\n", "New York 2000 18976457\n", " 2010 19378102\n", "dtype: int64" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = {('California', 2000): 33871648,\n", " ('California', 2010): 37253956,\n", " ('Texas', 2000): 20851820,\n", " ('Texas', 2010): 25145561,\n", " ('New York', 2000): 18976457,\n", " ('New York', 2010): 19378102}\n", "pd.Series(data)" ] }, { "cell_type": "markdown", "id": "e4c03544-84e1-40e1-8cbc-502b0cb78ae4", "metadata": {}, "source": [ "3. MultiIndex显示创建" ] }, { "cell_type": "code", "execution_count": 12, "id": "8277781f-abae-44fd-9a77-682f00ff1ac6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "MultiIndex([('a', 1),\n", " ('a', 2),\n", " ('b', 1),\n", " ('b', 2)],\n", " )" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.MultiIndex.from_arrays([['a', 'a', 'b', 'b'], [1, 2, 1, 2]]) # 规格的多维数组" ] }, { "cell_type": "code", "execution_count": 13, "id": "d04e71a7-58e4-470a-b6e1-1a1931cd8154", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "MultiIndex([('a', 1),\n", " ('a', 2),\n", " ('b', 1),\n", " ('b', 2)],\n", " )" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.MultiIndex.from_tuples([('a', 1),('a', 2),('b', 1),('b', 2)]) # 直接用元组" ] }, { "cell_type": "code", "execution_count": 14, "id": "358af549-b4c8-41d2-bee0-901432b3938e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "MultiIndex([('a', 1),\n", " ('a', 2),\n", " ('b', 1),\n", " ('b', 2)],\n", " )" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.MultiIndex.from_product([['a', 'b'], [1, 2]]) # 笛卡尔积" ] }, { "cell_type": "markdown", "id": "5f11ce06-ff41-49fd-9e52-cfa892996cae", "metadata": {}, "source": [ "3. 为多级索引添加名字" ] }, { "cell_type": "code", "execution_count": 15, "id": "b0db6553-c054-4015-a7f5-d9c512d12702", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "California 2000 33871648\n", " 2010 37253956\n", "New York 2000 18976457\n", " 2010 19378102\n", "Texas 2000 20851820\n", " 2010 25145561\n", "dtype: int64" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pop" ] }, { "cell_type": "code", "execution_count": 16, "id": "821765cd-3b7f-4ee9-a2db-f956a3a1de6d", "metadata": {}, "outputs": [], "source": [ "pop.index.names = ['state', 'years']" ] }, { "cell_type": "code", "execution_count": 17, "id": "2828acb1-bcf7-4064-9a75-a901c3df12b7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "state years\n", "California 2000 33871648\n", " 2010 37253956\n", "New York 2000 18976457\n", " 2010 19378102\n", "Texas 2000 20851820\n", " 2010 25145561\n", "dtype: int64" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pop" ] }, { "cell_type": "markdown", "id": "165713d5-d998-4e92-b89b-4f3c233dd769", "metadata": {}, "source": [ "4. DF的多级列索引" ] }, { "cell_type": "code", "execution_count": 18, "id": "cd01d903-d4d3-4fd6-9257-076bba8dd56a", "metadata": {}, "outputs": [], "source": [ "# 两个多级索引\n", "index = pd.MultiIndex.from_product([[2013, 2014], [1, 2]],\n", " names=['year', 'visit'])\n", "columns = pd.MultiIndex.from_product([['Bob', 'Guido', 'Sue'], ['HR', 'Temp']],\n", " names=['subject', 'type'])" ] }, { "cell_type": "code", "execution_count": 19, "id": "f0823923-426f-4705-b02a-3097fab3ad88", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
subjectBobGuidoSue
typeHRTempHRTempHRTemp
yearvisit
20131-0.70.30.10.7-1.3-0.4
2-1.60.90.6-0.60.70.8
20141-0.8-1.6-0.10.20.30.4
2-0.92.2-0.7-1.60.4-1.8
\n", "
" ], "text/plain": [ "subject Bob Guido Sue \n", "type HR Temp HR Temp HR Temp\n", "year visit \n", "2013 1 -0.7 0.3 0.1 0.7 -1.3 -0.4\n", " 2 -1.6 0.9 0.6 -0.6 0.7 0.8\n", "2014 1 -0.8 -1.6 -0.1 0.2 0.3 0.4\n", " 2 -0.9 2.2 -0.7 -1.6 0.4 -1.8" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = np.round(np.random.randn(4,6), 1)\n", "health_data = pd.DataFrame(data, index = index, columns = columns)\n", "health_data" ] }, { "cell_type": "markdown", "id": "b2f54bd2-b755-4cc7-8dbc-2873656f1c0a", "metadata": {}, "source": [ "这是一个四维数据" ] }, { "cell_type": "code", "execution_count": 20, "id": "ca85590e-d927-4f28-a413-8e08d69550c7", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
typeHRTemp
yearvisit
20131-1.3-0.4
20.70.8
201410.30.4
20.4-1.8
\n", "
" ], "text/plain": [ "type HR Temp\n", "year visit \n", "2013 1 -1.3 -0.4\n", " 2 0.7 0.8\n", "2014 1 0.3 0.4\n", " 2 0.4 -1.8" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "health_data['Sue'] # 列的一级索引直接访问" ] }, { "cell_type": "code", "execution_count": 21, "id": "cc60e4e4-3e75-4092-811f-5fef347a95b2", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
subjectBobGuidoSue
typeHRTempHRTempHRTemp
visit
1-0.70.30.10.7-1.3-0.4
2-1.60.90.6-0.60.70.8
\n", "
" ], "text/plain": [ "subject Bob Guido Sue \n", "type HR Temp HR Temp HR Temp\n", "visit \n", "1 -0.7 0.3 0.1 0.7 -1.3 -0.4\n", "2 -1.6 0.9 0.6 -0.6 0.7 0.8" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "health_data.loc[2013] # 行一级索引" ] }, { "cell_type": "markdown", "id": "7129dd7e-f111-4743-a29f-ce6ed7aa65e7", "metadata": {}, "source": [ "### 3.6.3 多级索引的取值与切片" ] }, { "cell_type": "markdown", "id": "a86b3cae-8c14-4728-a7a0-633179f564d0", "metadata": {}, "source": [ "1. Series多级索引取值" ] }, { "cell_type": "code", "execution_count": null, "id": "5051278b-ab96-4c97-98ba-99784f950c70", "metadata": {}, "outputs": [], "source": [ "pop" ] }, { "cell_type": "code", "execution_count": null, "id": "c3cfe25b-489c-48e7-9c82-ad8d205ba2b0", "metadata": {}, "outputs": [], "source": [ "pop['California',2000]" ] }, { "cell_type": "code", "execution_count": null, "id": "b0d92bec-50c8-4cbe-be65-6fb155ee8e47", "metadata": {}, "outputs": [], "source": [ "pop['California']" ] }, { "cell_type": "code", "execution_count": null, "id": "3221d1a7-b351-423a-9be4-5dbaae2d1d8a", "metadata": {}, "outputs": [], "source": [ "pop[:, 2000]" ] }, { "cell_type": "code", "execution_count": null, "id": "d858d790-86c5-42a5-8969-067f62feda17", "metadata": {}, "outputs": [], "source": [ "pop[pop > 100]" ] }, { "cell_type": "code", "execution_count": null, "id": "88327143-9f60-43fc-ab17-a6fbe8374824", "metadata": {}, "outputs": [], "source": [ "pop[['California', 'Texas']]" ] }, { "cell_type": "markdown", "id": "d6a66672-9509-4446-9dac-9e882eac0a5a", "metadata": {}, "source": [ "2. DataFrame多级索引" ] }, { "cell_type": "code", "execution_count": null, "id": "85ef4a57-9425-4934-944b-93af686dfbd8", "metadata": {}, "outputs": [], "source": [ "health_data" ] }, { "cell_type": "code", "execution_count": null, "id": "b0fa4688-fd47-4440-b499-0deb792d9a6e", "metadata": {}, "outputs": [], "source": [ "health_data['Bob', 'HR'] # 列的二级索引访问" ] }, { "cell_type": "code", "execution_count": null, "id": "cf540ab5-463d-4a73-8f34-39a20bc6648e", "metadata": {}, "outputs": [], "source": [ "health_data.iloc[:2, :2] # 看作二维数组" ] }, { "cell_type": "markdown", "id": "2b909f3e-4583-4117-98d9-d2651b050675", "metadata": {}, "source": [ "Indeslice来快速处理多级索引取值: 比如要访问行索引的第二级" ] }, { "cell_type": "code", "execution_count": null, "id": "6f7c8853-7c2a-48b2-a3c1-96351444152a", "metadata": {}, "outputs": [], "source": [ "idx = pd.IndexSlice\n", "health_data.loc[idx[:, 1], idx[:, 'HR']]" ] }, { "cell_type": "markdown", "id": "95eea665-66b9-48cc-9790-e7bfe2e5f48c", "metadata": {}, "source": [ "### 3.6.4 多级索引行列转换" ] }, { "cell_type": "markdown", "id": "015d5b6d-dfa1-432a-93c4-49a3aef2909e", "metadata": {}, "source": [ "1. 有序的索引和无序的索引\n", " - MultiIndex如果不是有序索引,那么切片就会失败!因此必须保证索引有序\n", " - pd提供了方法来排序索引" ] }, { "cell_type": "code", "execution_count": 22, "id": "0c48c7c4-a106-4b81-a7d8-4faf3e58f993", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "char int\n", "a 1 0.667677\n", " 2 0.790632\n", "c 1 0.783999\n", " 2 0.035292\n", "b 1 0.991972\n", " 2 0.442809\n", "dtype: float64" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "index = pd.MultiIndex.from_product([['a', 'c', 'b'], [1, 2]])\n", "data = pd.Series(np.random.rand(6), index = index)\n", "data.index.names = ['char', 'int']\n", "data" ] }, { "cell_type": "code", "execution_count": 23, "id": "cac0b76f-02a5-4413-a7bb-3d710dbf441e", "metadata": {}, "outputs": [], "source": [ "# data['a' : 'b'] # 切片失败" ] }, { "cell_type": "code", "execution_count": 24, "id": "81c5b2ec-477e-4bd7-bcee-e55567a28f26", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "char int\n", "a 1 0.667677\n", " 2 0.790632\n", "b 1 0.991972\n", " 2 0.442809\n", "c 1 0.783999\n", " 2 0.035292\n", "dtype: float64" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.sort_index()" ] }, { "cell_type": "markdown", "id": "bd925cb1-4e9a-4be9-af69-b4e990b752fe", "metadata": {}, "source": [ "2. 索引stack与unstack" ] }, { "cell_type": "code", "execution_count": 25, "id": "3726e5eb-d541-4055-baed-d7cc4bcea63c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "state years\n", "California 2000 33871648\n", " 2010 37253956\n", "New York 2000 18976457\n", " 2010 19378102\n", "Texas 2000 20851820\n", " 2010 25145561\n", "dtype: int64" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pop" ] }, { "cell_type": "markdown", "id": "17f140f2-000f-4c34-964a-2e6154289944", "metadata": {}, "source": [ "展开索引, 比如多级,要展1级" ] }, { "cell_type": "code", "execution_count": 26, "id": "4ad63b0d-4b84-48e6-a09f-0cd1fe277c34", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
years20002010
state
California3387164837253956
New York1897645719378102
Texas2085182025145561
\n", "
" ], "text/plain": [ "years 2000 2010\n", "state \n", "California 33871648 37253956\n", "New York 18976457 19378102\n", "Texas 20851820 25145561" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pop.unstack() " ] }, { "cell_type": "code", "execution_count": 27, "id": "65829bf9-8b77-4c6f-aad5-1958de390939", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
stateCaliforniaNew YorkTexas
years
2000338716481897645720851820
2010372539561937810225145561
\n", "
" ], "text/plain": [ "state California New York Texas\n", "years \n", "2000 33871648 18976457 20851820\n", "2010 37253956 19378102 25145561" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pop.unstack(level = 0) # 设置第一级索引去列" ] }, { "cell_type": "code", "execution_count": 28, "id": "b1c3a9bf-a40e-4beb-b3cd-b7b6362ba54e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "state years\n", "California 2000 33871648\n", " 2010 37253956\n", "New York 2000 18976457\n", " 2010 19378102\n", "Texas 2000 20851820\n", " 2010 25145561\n", "dtype: int64" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pop" ] }, { "cell_type": "markdown", "id": "44989273", "metadata": {}, "source": [ "### 层级索引:平铺" ] }, { "cell_type": "markdown", "id": "afa9d917", "metadata": {}, "source": [ "平铺列索引" ] }, { "cell_type": "code", "execution_count": 38, "id": "af8e3713", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AB
minmaxsumminmaxsum
ID
0-1.531047-1.531047-1.531047-0.253353-0.253353-0.253353
10.3426270.3426270.342627-1.600890-1.600890-1.600890
20.6410670.6410670.641067-0.434768-0.434768-0.434768
30.2016960.2016960.201696-0.899129-0.899129-0.899129
41.6520711.6520711.6520710.4097220.4097220.409722
50.4302620.4302620.4302620.3717640.3717640.371764
\n", "
" ], "text/plain": [ " A B \n", " min max sum min max sum\n", "ID \n", "0 -1.531047 -1.531047 -1.531047 -0.253353 -0.253353 -0.253353\n", "1 0.342627 0.342627 0.342627 -1.600890 -1.600890 -1.600890\n", "2 0.641067 0.641067 0.641067 -0.434768 -0.434768 -0.434768\n", "3 0.201696 0.201696 0.201696 -0.899129 -0.899129 -0.899129\n", "4 1.652071 1.652071 1.652071 0.409722 0.409722 0.409722\n", "5 0.430262 0.430262 0.430262 0.371764 0.371764 0.371764" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame({\n", " 'ID': pd.RangeIndex(6),\n", " 'A': np.random.randn(6),\n", " 'B': np.random.randn(6)\n", "}\n", ")\n", "df_agg = df.groupby(by='ID').agg(\n", " ['min', 'max', 'sum']\n", ")\n", "df_agg" ] }, { "cell_type": "code", "execution_count": 39, "id": "9f30829f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IDAB
minmaxsumminmaxsum
00-1.531047-1.531047-1.531047-0.253353-0.253353-0.253353
110.3426270.3426270.342627-1.600890-1.600890-1.600890
220.6410670.6410670.641067-0.434768-0.434768-0.434768
330.2016960.2016960.201696-0.899129-0.899129-0.899129
441.6520711.6520711.6520710.4097220.4097220.409722
550.4302620.4302620.4302620.3717640.3717640.371764
\n", "
" ], "text/plain": [ " ID A B \n", " min max sum min max sum\n", "0 0 -1.531047 -1.531047 -1.531047 -0.253353 -0.253353 -0.253353\n", "1 1 0.342627 0.342627 0.342627 -1.600890 -1.600890 -1.600890\n", "2 2 0.641067 0.641067 0.641067 -0.434768 -0.434768 -0.434768\n", "3 3 0.201696 0.201696 0.201696 -0.899129 -0.899129 -0.899129\n", "4 4 1.652071 1.652071 1.652071 0.409722 0.409722 0.409722\n", "5 5 0.430262 0.430262 0.430262 0.371764 0.371764 0.371764" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_agg.reset_index()" ] }, { "cell_type": "markdown", "id": "31bbcade", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "8f0b2ea5-1502-4ae0-86f7-c5795e3a439d", "metadata": {}, "source": [ "3. 索引的设置与重置\n", "- 重置索引,则会生成一个DataFrame。\n", "- 重置时候,需要补充数据列名\n", "- 将这样数据转化为MultiIndex可以设置索引!" ] }, { "cell_type": "code", "execution_count": 29, "id": "91150c2c-f53a-49b0-88e9-c37f14268b1a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
stateyearspopulation
0California200033871648
1California201037253956
2New York200018976457
3New York201019378102
4Texas200020851820
5Texas201025145561
\n", "
" ], "text/plain": [ " state years population\n", "0 California 2000 33871648\n", "1 California 2010 37253956\n", "2 New York 2000 18976457\n", "3 New York 2010 19378102\n", "4 Texas 2000 20851820\n", "5 Texas 2010 25145561" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pop_flat = pop.reset_index(name = 'population')\n", "pop_flat" ] }, { "cell_type": "markdown", "id": "36f16fdb-5fc2-4a78-b68f-c4966289e894", "metadata": {}, "source": [ "set_index()没有inplace必须手动赋值" ] }, { "cell_type": "code", "execution_count": 30, "id": "270a0b0b-e97f-4c1c-8da3-f5d6770c8a6f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
population
stateyears
California200033871648
201037253956
New York200018976457
201019378102
Texas200020851820
201025145561
\n", "
" ], "text/plain": [ " population\n", "state years \n", "California 2000 33871648\n", " 2010 37253956\n", "New York 2000 18976457\n", " 2010 19378102\n", "Texas 2000 20851820\n", " 2010 25145561" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pop_flat.set_index(['state','years']) # 设置某列为索引" ] }, { "cell_type": "code", "execution_count": 31, "id": "d6b14262-b28d-4267-8c92-ccba5ae890a9", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
indexstateyearspopulation
00California200033871648
11California201037253956
22New York200018976457
33New York201019378102
44Texas200020851820
55Texas201025145561
\n", "
" ], "text/plain": [ " index state years population\n", "0 0 California 2000 33871648\n", "1 1 California 2010 37253956\n", "2 2 New York 2000 18976457\n", "3 3 New York 2010 19378102\n", "4 4 Texas 2000 20851820\n", "5 5 Texas 2010 25145561" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pop_flat.reset_index()" ] }, { "cell_type": "markdown", "id": "be3c2053-f0a1-40a8-9193-102544007090", "metadata": {}, "source": [ "### 3.6.5 多级索引的数据累计方法" ] }, { "cell_type": "code", "execution_count": null, "id": "c7fa53ff-c472-4803-9542-2bcd38a0998b", "metadata": {}, "outputs": [], "source": [ "health_data" ] }, { "cell_type": "markdown", "id": "a567890b-d576-4d90-856d-3939b8db2712", "metadata": {}, "source": [ "1. 行计算:" ] }, { "cell_type": "code", "execution_count": null, "id": "7ac3b277-d8d6-4ff8-bb31-0ddf8517443f", "metadata": {}, "outputs": [], "source": [ "health_data.groupby(level = 'year').mean()" ] }, { "cell_type": "code", "execution_count": null, "id": "b7ad3395-e40b-4402-8c0f-2db25123d405", "metadata": {}, "outputs": [], "source": [ "health_data.groupby(level = 'visit').mean()" ] }, { "cell_type": "code", "execution_count": null, "id": "54e97685-2a4f-46dd-861c-2b12341abc44", "metadata": {}, "outputs": [], "source": [ "year_mean = health_data.groupby(level = 'year').mean()\n", "year_mean.groupby(axis = 1, level = 'type').mean()" ] }, { "cell_type": "markdown", "id": "0c1aeba4-9eb3-40af-a95b-e12c2f6863a4", "metadata": {}, "source": [ "2. 列计算" ] }, { "cell_type": "code", "execution_count": null, "id": "c8a3ffdf-38d5-47de-aca7-bba4591b81e5", "metadata": {}, "outputs": [], "source": [ "health_data.groupby(axis = 1, level ='type').mean()" ] }, { "cell_type": "markdown", "id": "0629aa09", "metadata": {}, "source": [ "## Copy-on-Write (CoW)" ] }, { "cell_type": "markdown", "id": "6fc36aa9", "metadata": {}, "source": [ "## Duplicate Labels" ] }, { "cell_type": "markdown", "id": "0d0186cc", "metadata": {}, "source": [ "## Merge, join, concatenate and compare" ] }, { "cell_type": "markdown", "id": "84cc392a-9a60-4a4f-b2f3-a006ad1f93c1", "metadata": {}, "source": [ "### 3.7 合并数据concat\n", "df之间、series之间、df与series之间\n", "- concat axis指定行列" ] }, { "cell_type": "markdown", "id": "ef1af4db-00c9-479b-b224-224600fed1af", "metadata": {}, "source": [ "### 3.7.1 concat连接" ] }, { "cell_type": "code", "execution_count": 1, "id": "93fb519d-930e-49f6-9861-053a59457cee", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABC
0A0B0C0
1A1B1C1
2A2B2C2
\n", "
" ], "text/plain": [ " A B C\n", "0 A0 B0 C0\n", "1 A1 B1 C1\n", "2 A2 B2 C2" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "import numpy as np\n", "def make_df(cols, ind):\n", " data = {c : [str(c) + str(i) for i in ind] for c in cols}\n", " return pd.DataFrame(data, index= ind)\n", "make_df(\"ABC\", range(3))" ] }, { "cell_type": "code", "execution_count": 3, "id": "a431554c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABC
0A0B0C0
1A1B1C1
2A2B2C2
3A0B0C0
4A1B1C1
5A2B2C2
6A3B3C3
\n", "
" ], "text/plain": [ " A B C\n", "0 A0 B0 C0\n", "1 A1 B1 C1\n", "2 A2 B2 C2\n", "3 A0 B0 C0\n", "4 A1 B1 C1\n", "5 A2 B2 C2\n", "6 A3 B3 C3" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.concat([make_df(\"ABC\", range(3)), make_df(\"ABC\", range(4))], ignore_index=True)" ] }, { "cell_type": "code", "execution_count": 14, "id": "8975da1d-69ad-4faa-8b1b-ad2696416a25", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
s1s2
071
171
231
359
443
561
632
739
819
958
\n", "
" ], "text/plain": [ " s1 s2\n", "0 7 1\n", "1 7 1\n", "2 3 1\n", "3 5 9\n", "4 4 3\n", "5 6 1\n", "6 3 2\n", "7 3 9\n", "8 1 9\n", "9 5 8" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s1 = pd.Series(np.random.randint(1,10,10))\n", "s2 = pd.Series(np.random.randint(1,10,10))\n", "pd.concat([s1,s2], axis=1, keys=['s1','s2']) # keys重新命名列" ] }, { "cell_type": "code", "execution_count": 7, "id": "d3309877-b1b3-4e58-89b2-c1d11bfd3743", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1 A\n", "2 B\n", "3 C\n", "4 D\n", "5 E\n", "6 F\n", "dtype: object" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ser1 = pd.Series(['A', 'B', 'C'], index=[1, 2, 3])\n", "ser2 = pd.Series(['D', 'E', 'F'], index=[4, 5, 6])\n", "pd.concat([ser1, ser2])" ] }, { "cell_type": "code", "execution_count": 8, "id": "05e904da-b523-48f9-ac3f-d1f578cc29f9", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
01
1ANaN
2BNaN
3CNaN
4NaND
5NaNE
6NaNF
\n", "
" ], "text/plain": [ " 0 1\n", "1 A NaN\n", "2 B NaN\n", "3 C NaN\n", "4 NaN D\n", "5 NaN E\n", "6 NaN F" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [] }, { "cell_type": "code", "execution_count": 3, "id": "13fff70e-7194-46b4-8738-2a0f001db71e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AB
1A1B1
2A2B2
3A3B3
4A4B4
\n", "
" ], "text/plain": [ " A B\n", "1 A1 B1\n", "2 A2 B2\n", "3 A3 B3\n", "4 A4 B4" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df1 = make_df('AB', [1, 2])\n", "df2 = make_df('AB', [3, 4])\n", "pd.concat([df1, df2])" ] }, { "cell_type": "code", "execution_count": 4, "id": "86e70a0d-7fa0-4f71-9bfe-f81f4523f092", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABAB
1A1B1NaNNaN
2A2B2NaNNaN
3NaNNaNA3B3
4NaNNaNA4B4
\n", "
" ], "text/plain": [ " A B A B\n", "1 A1 B1 NaN NaN\n", "2 A2 B2 NaN NaN\n", "3 NaN NaN A3 B3\n", "4 NaN NaN A4 B4" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.concat([df1, df2], axis = 1)" ] }, { "cell_type": "code", "execution_count": 5, "id": "45c09f49-2173-401f-8006-0ddab2fc68ba", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABAB
1A1B1NaNNaN
2A2B2NaNNaN
3NaNNaNA3B3
4NaNNaNA4B4
\n", "
" ], "text/plain": [ " A B A B\n", "1 A1 B1 NaN NaN\n", "2 A2 B2 NaN NaN\n", "3 NaN NaN A3 B3\n", "4 NaN NaN A4 B4" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.concat([df1, df2], axis = 1)" ] }, { "cell_type": "markdown", "id": "265027fd-c1e3-404d-b02a-e49ba46167ff", "metadata": {}, "source": [ "#### 索引重复时候如何连接?\n", "- pd默认是允许的,结果会有重复索引\n", "- 但我们想要结果肯定是唯一索引\n", "\n", "1. 捕获重复索引错误。\n", "2. 忽略索引\n", "3. 增加多级索引 " ] }, { "cell_type": "code", "execution_count": 32, "id": "24107831-5c16-415b-8f01-8cbd92866167", "metadata": {}, "outputs": [], "source": [ "s1=pd.Series(np.random.randint(1,4,10))\n", "s2=pd.Series(np.random.randint(1,3,10))\n", "s3=pd.Series(np.random.randint(10000,30000,10))\n", "d= pd.concat([s1,s2,s3], axis=0)\n" ] }, { "cell_type": "code", "execution_count": 33, "id": "da23d96e-434a-465b-9e3a-b3e53a7c2307", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3,\n", " 4, 5, 6, 7, 8, 9],\n", " dtype='int64')" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d.index" ] }, { "cell_type": "markdown", "id": "eb7c7aa1-ee33-4eff-a7f4-4057b0462f70", "metadata": {}, "source": [ "重复索引合理的不会自动合并" ] }, { "cell_type": "code", "execution_count": 23, "id": "35eeb3b5-e940-4f52-891c-70cc8e1c4aa6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 1\n", "1 3\n", "2 3\n", "3 3\n", "4 2\n", " ... \n", "295 13715\n", "296 29372\n", "297 23352\n", "298 28118\n", "299 24099\n", "Length: 300, dtype: int32" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.concat([s1,s2,s3], axis=0, ignore_index=True) " ] }, { "cell_type": "markdown", "id": "2d7013eb-895a-4798-b1ce-4234ffd8355c", "metadata": {}, "source": [ "注意这样合并,还是series,通过to_frame()" ] }, { "cell_type": "code", "execution_count": null, "id": "18f01370-960e-4433-b440-04e356e9a105", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "d497a53f-9ed6-4227-b5f9-6ceed13ad076", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 19, "id": "c02017c2-08a9-4d08-ab63-b52a8ff75899", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AB
0A0B0
1A1B1
0A0B0
3A3B3
\n", "
" ], "text/plain": [ " A B\n", "0 A0 B0\n", "1 A1 B1\n", "0 A0 B0\n", "3 A3 B3" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = make_df('AB', [0, 1])\n", "y = make_df('AB', [0, 3])\n", "pd.concat([x ,y])\n" ] }, { "cell_type": "code", "execution_count": null, "id": "76b12d35-0ae3-48e3-b5ee-b5eb5564732f", "metadata": {}, "outputs": [], "source": [ "try:\n", " pd.concat([x,y], verify_integrity = True)\n", "except ValueError as e:\n", " print(\"ValueError:\", e)" ] }, { "cell_type": "code", "execution_count": null, "id": "8f8a0d84-537c-47b3-a993-23d858d61d52", "metadata": {}, "outputs": [], "source": [ "pd.concat([x,y], ignore_index=True) #默认行为忽略" ] }, { "cell_type": "code", "execution_count": null, "id": "42759107-aa9d-46c6-b9b2-fcd077283583", "metadata": {}, "outputs": [], "source": [ "pd.concat([x, y], keys = ['x', 'y']) # 连接时候加上层级索引" ] }, { "cell_type": "markdown", "id": "dec96db6-c2ee-4637-a536-97055956e8d0", "metadata": {}, "source": [ "#### 合并:数据缺失NaN\n", "- concat连接时候会出现NaN, 数据缺失。\n", "- 设置join属性,决定合并连接策略" ] }, { "cell_type": "code", "execution_count": 27, "id": "8b6c31fb-4a3d-4fbb-8557-5d2cb4a5ef5d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " A B C\n", "1 A1 B1 C1\n", "2 A2 B2 C2\n", " B C D\n", "3 B3 C3 D3\n", "4 B4 C4 D4\n" ] } ], "source": [ "df5 = make_df('ABC', [1, 2])\n", "df6 = make_df('BCD', [3, 4])\n", "print(df5)\n", "print(df6)\n" ] }, { "cell_type": "code", "execution_count": 28, "id": "3fa66df8-9d4a-463b-9c7f-6080a3df6624", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCD
1A1B1C1NaN
2A2B2C2NaN
3NaNB3C3D3
4NaNB4C4D4
\n", "
" ], "text/plain": [ " A B C D\n", "1 A1 B1 C1 NaN\n", "2 A2 B2 C2 NaN\n", "3 NaN B3 C3 D3\n", "4 NaN B4 C4 D4" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.concat([df5, df6])\n" ] }, { "cell_type": "code", "execution_count": null, "id": "2041065e-30c7-4100-9f32-a99c6f7ce6b4", "metadata": {}, "outputs": [], "source": [ " pd.concat([df5, df6], join ='outer') # 默认行为并集" ] }, { "cell_type": "code", "execution_count": null, "id": "c0c12605-4013-48d8-8cf4-7c8e59185a43", "metadata": {}, "outputs": [], "source": [ "pd.concat([df5, df6], join = 'inner') # 交集" ] }, { "cell_type": "code", "execution_count": null, "id": "b9782de2-986e-4e48-bb0b-cf65ae749db9", "metadata": {}, "outputs": [], "source": [ "# pd.concat([df5, df6], join_axies = [df5.columns])" ] }, { "cell_type": "markdown", "id": "e851a3e5-39a8-4425-9571-65394175602e", "metadata": {}, "source": [ "### 3.8 合并数据集df:merge\n", "- 类似数据库,实现不同数据源的连接:一对一、一对多、多对多\n", "- pd.merge和 Serier、DataFrame的join\n", "\n", "**contact vs merge**\n", "- contact只是按照行列进行拼接, 重复索引和值缺失\n", "- merge是基于列进行连接匹配, \n", "merge更加高级,比如内外也可做出contact效果\n" ] }, { "cell_type": "markdown", "id": "fb54f994-b140-4ec6-8260-1b014282f9bd", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "2ff17c67-823e-4fb3-b008-e00a49e99706", "metadata": {}, "source": [ "1. 一对一连接" ] }, { "cell_type": "code", "execution_count": 81, "id": "bf365a9f-f173-48bd-9052-686a96d5c4c7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " employee group\n", "0 Bob Accounting\n", "1 Jake Engineering\n", "2 Lisa Engineering\n", "3 Sue HR\n", " employee hire_date\n", "0 Lisa 2004\n", "1 Bob 2008\n", "2 Jake 2012\n", "3 Sue 2014\n" ] } ], "source": [ "df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],\n", " 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})\n", "df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],\n", " 'hire_date': [2004, 2008, 2012, 2014]})\n", "print(df1); print(df2)" ] }, { "cell_type": "code", "execution_count": null, "id": "bde87a28-f077-4812-9b10-481d154c84b5", "metadata": {}, "outputs": [], "source": [ "df3 = pd.merge(df1, df2)\n", "df3" ] }, { "cell_type": "markdown", "id": "4a5c724e-723c-430d-84cf-9b9a86c337cc", "metadata": {}, "source": [ "两个df有一个共同列,merge就会自动根据这个列进行合并!且行数据不冲突!" ] }, { "cell_type": "markdown", "id": "4230e05a-b561-4bde-bded-dde7f21a515c", "metadata": {}, "source": [ "2. 多对一连接\n", "- 合并两个列时候,有一个列有重复值。\n", "- merge会保留重复值。并填充缺失" ] }, { "cell_type": "code", "execution_count": null, "id": "fd7a9200-825f-4c25-9df2-36eaa64b5795", "metadata": {}, "outputs": [], "source": [ "df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'],\n", " 'supervisor': ['Carly', 'Guido', 'Steve']})\n", "print(df3);print(df4)" ] }, { "cell_type": "code", "execution_count": null, "id": "3d4ecaab-147b-4ff5-b1c1-16bc483ef8d3", "metadata": {}, "outputs": [], "source": [ "pd.merge(df3, df4)" ] }, { "cell_type": "markdown", "id": "2057921f-c6c0-4920-a16e-e7aa7a7d1b3c", "metadata": {}, "source": [ "(2,supervisor) 是缺失的,自动填充了!" ] }, { "cell_type": "markdown", "id": "217bd8d8-4ba2-4e53-a8cd-30d7b897e1bd", "metadata": {}, "source": [ "3. 多对多连接\n", "- 顾名思义:合并的两个列内部都有重复值" ] }, { "cell_type": "code", "execution_count": null, "id": "04c06a2e-1251-4e9a-a95b-71d09a639670", "metadata": {}, "outputs": [], "source": [ "df5 = pd.DataFrame({'group': ['Accounting', 'Accounting',\n", " 'Engineering', 'Engineering', 'HR', 'HR'],\n", " 'skills': ['math', 'spreadsheets', 'coding', 'linux',\n", " 'spreadsheets', 'organization']})\n", "print(df1, '\\n', df5)" ] }, { "cell_type": "markdown", "id": "ae83842d-acc5-4c82-8d56-81782cc4d4f6", "metadata": {}, "source": [ "场景:显示人员的一种或者多种能力" ] }, { "cell_type": "code", "execution_count": null, "id": "2e4a7e82-2f68-4bd0-b789-e3f353e2b472", "metadata": {}, "outputs": [], "source": [ "pd.merge(df1, df5)" ] }, { "cell_type": "markdown", "id": "1f11c680-6185-4976-a806-d49d2621f509", "metadata": {}, "source": [ "### 3.8.3 设置数据合并的键\n", "- 很多情况下,目的合并的列是不同名的。merge不会自动合并。需要设置哪两个列合并" ] }, { "cell_type": "markdown", "id": "4aad5e0f-5232-4a1e-9145-efee7b753f6c", "metadata": {}, "source": [ "**1. 参数on**\n", "\n", "用在列名相同(merge默认行为)" ] }, { "cell_type": "code", "execution_count": null, "id": "7553e41e-7608-4188-82b1-c739ec4b2fca", "metadata": {}, "outputs": [], "source": [ "print(df1, '\\n', df2)" ] }, { "cell_type": "code", "execution_count": null, "id": "dfce5b34-ffc9-4376-9d3c-df5fc39c5d59", "metadata": {}, "outputs": [], "source": [ "pd.merge(df1, df2, on = 'employee')" ] }, { "cell_type": "markdown", "id": "39622114-ceb2-4755-90a8-ee1bdfabcce2", "metadata": {}, "source": [ "**2. left_on与right_on参数**\n", "- !! 结果中并没有直接去掉列,需要drop方法手动去掉" ] }, { "cell_type": "code", "execution_count": 34, "id": "19d31ef6-6463-46be-a204-f8d42ff076ae", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " employee group\n", "0 Bob Accounting\n", "1 Jake Engineering\n", "2 Lisa Engineering\n", "3 Sue HR \n", " name salary\n", "0 Bob 70000\n", "1 Jake 80000\n", "2 Lisa 120000\n", "3 Sue 90000\n" ] } ], "source": [ "df3 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'],\n", " 'salary': [70000, 80000, 120000, 90000]})\n", "print(df1, '\\n', df3)" ] }, { "cell_type": "code", "execution_count": 35, "id": "848a0984-ab9c-4272-b5ca-9598ea098785", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
employeegroupnamesalary
0BobAccountingBob70000
1JakeEngineeringJake80000
2LisaEngineeringLisa120000
3SueHRSue90000
\n", "
" ], "text/plain": [ " employee group name salary\n", "0 Bob Accounting Bob 70000\n", "1 Jake Engineering Jake 80000\n", "2 Lisa Engineering Lisa 120000\n", "3 Sue HR Sue 90000" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.merge(df1, df3, left_on = 'employee', right_on = 'name')" ] }, { "cell_type": "code", "execution_count": 36, "id": "e07635a7-ec2b-42e6-b97b-8c4f68049a5e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
employeegroupsalary
0BobAccounting70000
1JakeEngineering80000
2LisaEngineering120000
3SueHR90000
\n", "
" ], "text/plain": [ " employee group salary\n", "0 Bob Accounting 70000\n", "1 Jake Engineering 80000\n", "2 Lisa Engineering 120000\n", "3 Sue HR 90000" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.merge(df1, df3, left_on = 'employee', right_on = 'name').drop('name', axis = 1)" ] }, { "cell_type": "markdown", "id": "60b69822-2b7e-4642-97fe-783166f8d62f", "metadata": {}, "source": [ "丢弃一列额外方式:直接取出来赋值" ] }, { "cell_type": "code", "execution_count": null, "id": "7a6c3e3a-e3a6-40b8-95af-9b9b50fee321", "metadata": {}, "outputs": [], "source": [ "#price_table= price_table[['item_name','item_price']]" ] }, { "cell_type": "markdown", "id": "27fadc39-3c69-483a-bb9c-92d358041c0b", "metadata": {}, "source": [ "3. left_index与right_index参数\n", "- 之前都是合并列。 这里合并索引\n", "- 索引和列同时合并,需要设置_index 和 _on" ] }, { "cell_type": "code", "execution_count": null, "id": "26767fbe-f941-4fba-8587-ba13c7941016", "metadata": {}, "outputs": [], "source": [ "print(df1, '\\n', df2)" ] }, { "cell_type": "code", "execution_count": null, "id": "3720ab2b-e77d-4c69-b560-cc3f64edddc7", "metadata": {}, "outputs": [], "source": [ "df1a = df1.set_index('employee') # 将employee列设置为索引\n", "df2a = df2.set_index('employee')\n", "print(df1a, '\\n', df2a)" ] }, { "cell_type": "code", "execution_count": null, "id": "7ed62050-ccfc-4029-86a4-d7fda2559de1", "metadata": {}, "outputs": [], "source": [ "pd.merge(df1a, df2a, left_index = True, right_index = True)" ] }, { "cell_type": "code", "execution_count": null, "id": "d8acd638-f440-4bc3-856b-9912e6cd9ebb", "metadata": {}, "outputs": [], "source": [ "print(df1a, '\\n', df3)" ] }, { "cell_type": "code", "execution_count": null, "id": "6bc855d8-1944-4c49-8293-d4cdf6072d62", "metadata": {}, "outputs": [], "source": [ "pd.merge(df1a, df3, left_index = True, right_on = 'name') # 保留df1a索引, df3合并保留name列" ] }, { "cell_type": "markdown", "id": "29b9ad33-4972-4bc5-b7d5-d3e581d9b6af", "metadata": {}, "source": [ "### 3.8.4 设置数据连接的集合操作规则\n", "- 合并两个列时候, 如果一个值出现没有在另外一个列。即需要内连接 外连接规则" ] }, { "cell_type": "code", "execution_count": null, "id": "b7e97b61-86d5-4d88-a974-8c17292205f4", "metadata": {}, "outputs": [], "source": [ "df6 = pd.DataFrame({'name': ['Peter', 'Paul', 'Mary'],\n", " 'food': ['fish', 'beans', 'bread']},\n", " columns=['name', 'food'])\n", "df7 = pd.DataFrame({'name': ['Mary', 'Joseph'],\n", " 'drink': ['wine', 'beer']},\n", " columns=['name', 'drink'])\n", "print(df6); print(df7);" ] }, { "cell_type": "code", "execution_count": null, "id": "441f46c4-ab25-41f5-953f-74aacf6eff19", "metadata": {}, "outputs": [], "source": [ "pd.merge(df6, df7) # 默认内连接,即等值连接" ] }, { "cell_type": "code", "execution_count": null, "id": "3aa81392-cc9f-40ac-81b5-e47bbd794b76", "metadata": {}, "outputs": [], "source": [ "pd.merge(df6, df7, how = 'outer') # 外连接全连接" ] }, { "cell_type": "code", "execution_count": null, "id": "833bcd91-830b-412e-b5cf-d5ccd5161bae", "metadata": {}, "outputs": [], "source": [ "pd.merge(df6, df7, how = 'left')" ] }, { "cell_type": "markdown", "id": "b1aafa00-42ee-43bf-9c41-edb17d939e82", "metadata": {}, "source": [ "### 3.8.5 重复列名:suffixes参数\n", "- 列名重复,且不是目的合并列。 需要重命名或者添加后缀" ] }, { "cell_type": "code", "execution_count": null, "id": "76d3ba19-4d7d-4a02-b386-0dce1bbd8ac6", "metadata": {}, "outputs": [], "source": [ "df8 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'],\n", " 'rank': [1, 2, 3, 4]})\n", "df9 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'],\n", " 'rank': [3, 1, 4, 2]})\n", "print(df8, '\\n', df9)" ] }, { "cell_type": "code", "execution_count": null, "id": "db35390c-03ae-4053-be4d-03600a583a30", "metadata": {}, "outputs": [], "source": [ "pd.merge(df8, df9, on = 'name') # 指定了name列是目标合并列,merge会为其他重复列自动后缀" ] }, { "cell_type": "code", "execution_count": null, "id": "e83c2859-d840-49c5-9805-76bcb31fb9d9", "metadata": {}, "outputs": [], "source": [ "pd.merge(df8, df9, on = 'name', suffixes = [\"_L\", \"_R\"]) " ] }, { "cell_type": "markdown", "id": "c002adcb-a1a2-44c7-beaa-4ee5ae8f4066", "metadata": {}, "source": [ "### 3.8.6 案例:美国各州的统计数据\n", "\n", "任务:计算各州人口密度排名\n", "1. 合并pop与缩写表,显示全称\n", "2. 将面积表合并" ] }, { "cell_type": "code", "execution_count": null, "id": "e957860a-0a33-4459-8908-5e5d258747bd", "metadata": {}, "outputs": [], "source": [ "pop = pd.read_csv('state-population.csv')\n", "areas = pd.read_csv('state-areas.csv')\n", "abbrevs = pd.read_csv('state-abbrevs.csv')\n", "print(pop.head(), '\\n', areas.head(), '\\n', abbrevs.head())" ] }, { "cell_type": "code", "execution_count": null, "id": "d03fdd65-bf78-464e-a182-bb4921c927b9", "metadata": {}, "outputs": [], "source": [ "data = pd.merge(pop, abbrevs, left_on = 'state/region', right_on = 'abbreviation').drop('abbreviation', axis = 1)\n", "data" ] }, { "cell_type": "code", "execution_count": null, "id": "b279cb83-5f51-42f8-b508-6e1b61b7f564", "metadata": {}, "outputs": [], "source": [ "data.isnull().any() # 检查字段是否有缺失" ] }, { "cell_type": "code", "execution_count": null, "id": "dce29b2c-134e-4a2a-bd55-83b3f5deb50e", "metadata": {}, "outputs": [], "source": [ "data = pd.merge(data, areas, how = 'left')" ] }, { "cell_type": "code", "execution_count": null, "id": "03dc52c6-dd27-46e1-b588-75925ca144b7", "metadata": {}, "outputs": [], "source": [ "data.isnull().any()" ] }, { "cell_type": "code", "execution_count": null, "id": "f0a11758-af93-473f-8ae9-884c71473fe1", "metadata": {}, "outputs": [], "source": [ "data" ] }, { "cell_type": "code", "execution_count": null, "id": "64e1b3b5-a962-4305-ae00-abcdfeaca540", "metadata": {}, "outputs": [], "source": [ "data2010 = data.query(\"year == 2010 & ages == 'total'\")" ] }, { "cell_type": "code", "execution_count": null, "id": "55665c17-c5aa-49cb-97ae-e41444ae4e37", "metadata": {}, "outputs": [], "source": [ "data2010.set_index('state', inplace=True) # inplace表示原地修改\n", "data2010" ] }, { "cell_type": "code", "execution_count": null, "id": "12e87a87-1554-41c8-9ea4-3b6c3546f5bf", "metadata": {}, "outputs": [], "source": [ "density = data2010['population'] / data2010['area (sq. mi)']\n", "density" ] }, { "cell_type": "markdown", "id": "9aba2518-0f09-4254-ad23-0505a39429f1", "metadata": {}, "source": [ "**排序** \n", ".sort_values(by='quantity', ascending=False)" ] }, { "cell_type": "code", "execution_count": null, "id": "a6a15544-7b6f-46fe-9609-f462aca0f1be", "metadata": {}, "outputs": [], "source": [ "density.sort_values(ascending = False, inplace = True)" ] }, { "cell_type": "code", "execution_count": null, "id": "515fabe7-e92f-4dbb-99e3-d1c6654795d2", "metadata": {}, "outputs": [], "source": [ "density.head()" ] }, { "cell_type": "code", "execution_count": null, "id": "1b122ca7-5eea-4543-90ee-358874ba51a3", "metadata": {}, "outputs": [], "source": [ "density.tail()" ] }, { "cell_type": "markdown", "id": "9354a134", "metadata": {}, "source": [ "## Group by: split-apply-combine" ] }, { "cell_type": "markdown", "id": "f1a2d6b5", "metadata": {}, "source": [ "### agg\n", "- aggregate\n", "- 在指定轴上进行一个或者多个运算 进行聚合\n", "- 行汇总" ] }, { "cell_type": "code", "execution_count": 4, "id": "bf2088a6", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABC
01.02.03.0
14.05.06.0
27.08.09.0
3NaNNaNNaN
\n", "
" ], "text/plain": [ " A B C\n", "0 1.0 2.0 3.0\n", "1 4.0 5.0 6.0\n", "2 7.0 8.0 9.0\n", "3 NaN NaN NaN" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame(\n", " [[1, 2, 3], [4, 5, 6], [7, 8, 9], [np.nan, np.nan, np.nan]],\n", " columns=['A', 'B', 'C']\n", ")\n", "df" ] }, { "cell_type": "code", "execution_count": 8, "id": "82a84e3b", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABC
sum12.015.018.0
min1.02.03.0
\n", "
" ], "text/plain": [ " A B C\n", "sum 12.0 15.0 18.0\n", "min 1.0 2.0 3.0" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.agg(['sum', 'min'])" ] }, { "cell_type": "markdown", "id": "e3e67d27", "metadata": {}, "source": [ "每列可以有不同的聚合方式" ] }, { "cell_type": "code", "execution_count": null, "id": "9851efaf", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AB
sum12.0NaN
min1.02.0
maxNaN8.0
\n", "
" ], "text/plain": [ " A B\n", "sum 12.0 NaN\n", "min 1.0 2.0\n", "max NaN 8.0" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.agg({\"A\": [\"sum\", \"min\"], \"B\": [\"min\", \"max\"]})" ] }, { "cell_type": "markdown", "id": "7490fd11-0eed-4d43-9a07-159686b92f2c", "metadata": {}, "source": [ "### 3.9 累计与分组\n", "- 统计\n", "- 分组groupby" ] }, { "cell_type": "markdown", "id": "5b70ddbe-609e-4807-a186-e4e192447937", "metadata": {}, "source": [ "### 3.9.1 行星数据为例\n", "- 内容为2014年以来发现的外行星绕太阳系运动观测数据\n", "- describe方法快速描述整体统计. series、df、groupby都可以使用\n", "- grouby局部分析\n", "- GroupBy对象\n", "- series直接操作:value_counts()" ] }, { "cell_type": "code", "execution_count": 22, "id": "c311a1ca-37bf-45b0-bfe3-853f060521ad", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
methodnumberorbital_periodmassdistanceyear
0Radial Velocity1269.3000007.1077.402006
1Radial Velocity1874.7740002.2156.952008
2Radial Velocity1763.0000002.6019.842011
3Radial Velocity1326.03000019.40110.622007
4Radial Velocity1516.22000010.50119.472009
.....................
1030Transit13.941507NaN172.002006
1031Transit12.615864NaN148.002007
1032Transit13.191524NaN174.002007
1033Transit14.125083NaN293.002008
1034Transit14.187757NaN260.002008
\n", "

1035 rows × 6 columns

\n", "
" ], "text/plain": [ " method number orbital_period mass distance year\n", "0 Radial Velocity 1 269.300000 7.10 77.40 2006\n", "1 Radial Velocity 1 874.774000 2.21 56.95 2008\n", "2 Radial Velocity 1 763.000000 2.60 19.84 2011\n", "3 Radial Velocity 1 326.030000 19.40 110.62 2007\n", "4 Radial Velocity 1 516.220000 10.50 119.47 2009\n", "... ... ... ... ... ... ...\n", "1030 Transit 1 3.941507 NaN 172.00 2006\n", "1031 Transit 1 2.615864 NaN 148.00 2007\n", "1032 Transit 1 3.191524 NaN 174.00 2007\n", "1033 Transit 1 4.125083 NaN 293.00 2008\n", "1034 Transit 1 4.187757 NaN 260.00 2008\n", "\n", "[1035 rows x 6 columns]" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import seaborn as sns\n", "planets = sns.load_dataset('planets') #\n", "planets" ] }, { "cell_type": "code", "execution_count": 23, "id": "531dab24-025d-464e-95e6-7aab8bafb7a6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 1035 entries, 0 to 1034\n", "Data columns (total 6 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 method 1035 non-null object \n", " 1 number 1035 non-null int64 \n", " 2 orbital_period 992 non-null float64\n", " 3 mass 513 non-null float64\n", " 4 distance 808 non-null float64\n", " 5 year 1035 non-null int64 \n", "dtypes: float64(3), int64(2), object(1)\n", "memory usage: 48.6+ KB\n", "None\n" ] } ], "source": [ "print(planets.info()) # 查看数据基本信息" ] }, { "cell_type": "code", "execution_count": 24, "id": "514a4222-cc90-44e3-bcd0-f313de739da6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " number orbital_period mass distance year\n", "count 1035.000000 992.000000 513.000000 808.000000 1035.000000\n", "mean 1.785507 2002.917596 2.638161 264.069282 2009.070531\n", "std 1.240976 26014.728304 3.818617 733.116493 3.972567\n", "min 1.000000 0.090706 0.003600 1.350000 1989.000000\n", "25% 1.000000 5.442540 0.229000 32.560000 2007.000000\n", "50% 1.000000 39.979500 1.260000 55.250000 2010.000000\n", "75% 2.000000 526.005000 3.040000 178.500000 2012.000000\n", "max 7.000000 730000.000000 25.000000 8500.000000 2014.000000\n" ] } ], "source": [ "print(planets.describe()) # 统计摘要" ] }, { "cell_type": "code", "execution_count": 25, "id": "ecdfa738-a966-4fe8-bdba-202279020dc6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "method 0\n", "number 0\n", "orbital_period 43\n", "mass 522\n", "distance 227\n", "year 0\n", "dtype: int64\n" ] } ], "source": [ "print(planets.isnull().sum()) # 查看缺失值" ] }, { "cell_type": "code", "execution_count": 26, "id": "afa8d530-8037-4eb0-b99b-151edf24ba20", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
numberorbital_periodmassdistanceyear
count498.00000498.000000498.000000498.000000498.000000
mean1.73494835.7786712.50932052.0682132007.377510
std1.175721469.1282593.63627446.5960414.167284
min1.000001.3283000.0036001.3500001989.000000
25%1.0000038.2722500.21250024.4975002005.000000
50%1.00000357.0000001.24500039.9400002009.000000
75%2.00000999.6000002.86750059.3325002011.000000
max6.0000017337.50000025.000000354.0000002014.000000
\n", "
" ], "text/plain": [ " number orbital_period mass distance year\n", "count 498.00000 498.000000 498.000000 498.000000 498.000000\n", "mean 1.73494 835.778671 2.509320 52.068213 2007.377510\n", "std 1.17572 1469.128259 3.636274 46.596041 4.167284\n", "min 1.00000 1.328300 0.003600 1.350000 1989.000000\n", "25% 1.00000 38.272250 0.212500 24.497500 2005.000000\n", "50% 1.00000 357.000000 1.245000 39.940000 2009.000000\n", "75% 2.00000 999.600000 2.867500 59.332500 2011.000000\n", "max 6.00000 17337.500000 25.000000 354.000000 2014.000000" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "planets.dropna().describe()" ] }, { "attachments": { "10f9ee33-54bc-4ccd-b693-976f24bc1748.png": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/oAAAMFCAIAAABLQBo6AAAgAElEQVR4Aey9d2BUVdo/fqdnJhWILmV3FQg99F4suOyKy9e1gahYEEIJRRDEBaVIUwFRkVVQQMD0ySRTMi09IQQbRRGVEmp6n8n0en+883k9v3nBsCAJTOCcP8aTO+ee+5zPuSOf5zlPYVjaKAIUAYoAyzocDsDg9XqdTqfX63W5XCzLer1eu93udrvxLRl2Q5h5vV6Hw+H1ej0ej9Fo9L+XzEwu2u120qcdigBFgCJAEaAIUARuEgHmJu+nt1MEKAJ3AAJg9iD3LpfLZrN5vV6WZa9g3nZf+wPrdTgcTqfT/0an04mHQn8oLy+3WCwsy1ZUVPgPo32KAEWAIkARoAhQBG4SAUr3bxJAejtF4M5BwOlrWE9TU1NjYyNZm9PprKurM5vN5MrNdIxGo9lsdrvdNTU1LMs2NjZCu2hoaLiZaem9FAGKAEWAIkARoAhcjQCl+1djQq9QBO46BDweD8uyLpfLbDZbLBZiiXe5XA6Hw+PxOJ1Om80GXK4w+V8PWDDhu1wuPMjfOwi340FXO/Zcz+R0DEWAIkARoAhQBCgC10CA0v1rgEO/ogjcLQh4vV6r1XrFav1t+WD8Vwy4/j/B8lmW9Xg8oP5ut9vpdNbU1BCKDyciolRc/+R0JEWAIkARoAhQBCgC10CA0v1rgEO/ogjcLQggNherJYTb4XCYTCa32w1PG5Zl3W73HzDtsyw7c+bMefPmxcbGLliw4PXXXyeO+1AAdDpdQUEBiR8gZwt3C/p0nRQBigBFgCJAEWhNBCjdb0106dwUgTaCAHGaz8/Pf+ONN/r27cv4WlBQUM+ePZ988smEhARY6Ovr64k9/voXJxQKRSIRn8/ncDgMw5jNZigV58+f79+/P541c+bMm9Eorl8YOpIiQBGgCFAEKAJ3FQKU7t9V200XSxFoFoG6urqXX36ZYRg+ny8SiRiGCQoKAhFnGOall16qq6tjWdbfw6fZua76AvMIBAIul8sw//O/HTjrr1y5Ek+USCQMw3zwwQdX3UovUAQoAhQBigBFgCJwUwhQun9T8NGbKQJtCwGn0wkjPSz08J+x2Wxut/vZZ58VCAQMw8AAzzAMj8djGEYoFDIMs2jRIqzUarW63W7ieIOLDocDaoDT6bTb7Y2NjfD58Xg8SK9J1AbMT26PjY1lGCY0NBSqxdtvv93U1EQghagHDhxYtGjRihUriE8RcTciHXIL7VAEKAIUAYoARYAicAUClO5fAQj9kyJwJyNA/HAQmEv+XLhwIcMwERERDMO0a9dOLBbD3M4wTFhYGMMw6enpLMuCXrtcLnKj3W4n9n743JOviAnfZrM1R/c//vhjPp+Pbzt16iSXy4G+1+s9cODAkCFD7r33XoZhuFzuuHHjvL818ghE9xLl4U7eObo2igBFgCJAEaAI/FEEKN3/o8jR+ygCbRkBlLaFvdxqtQYHB4Nzd+jQgWGY6OjoTz/9VCaTJSQkbNiw4ZFHHvnll1+IKR30GtwbGBC7O4HEaDTC+QdXmqP7Vqt12rRpUCree+89DK6srLTZbBqNBneFhYVFRERERUWRJ0LHgO0fn+S5tEMRoAhQBCgCFAGKwBUIULp/BSD0T4rAHY4A+DExybtcLr1ezzBMhw4dxGKxQCAIDg6uqakh6XEcDofBYCCgnD9/nvQNBgOoP6zsbre7qakJeTYxxmAwoJBWc3SfTFVVVYXTAOLMo9Pp/O+6//77WZa1Wq1X8Hv/ggBkNtqhCFAEKAIUAYoARYAgQOk+gYJ2KAJ3BQIg+m63G7zcZrMtXboUrvMw7c+aNQuVbsH44YVfXV3tz+PBzkHQWZZtamoiKsEVdBzRvf7EncPhEPcb4paD8wHcazKZzGZzcnJycHAwgoYlEsmYMWMQBgAxnE6nyWRiWfbqg4W7YhfpIikCFAGKAEWAInDdCFC6f91Q0YEUgbaPgNfrJXZ98HibzRYbGysQCOBDHx4ePmPGjLq6OpBp4q+PpYNqP/roo0OHDh00aFD//v137NhRWlq6efPm+++/H072Tz755JkzZ1iWrampgcuQ3W5vju6///77AwYMGDFixGhf27Bhg9ls3rlz54gRI5AMFFIFBQUJBIKBAwdGR0c/+OCDMpkMBQGQtv+PlQJo+5tJV0ARoAhQBCgCFIHrQoDS/euCiQ6iCNwZCBDTOzoOh8Pj8Xz11VcMwwQHByMzT/v27evr6xsbG1mWJaQfjjS4OHz4cLDw4ODgmTNnvvrqq2DzISEhHTt2ZBhmyJAhR44cAWLg4s3R/WXLluErvq+9/vrrbrd7xowZ/uORHQhmfoZhBALBnj177oztoKugCFAEKAIUAYrALUCA0v1bADJ9BEUgUBAAy3e5XGDhsL6XlpYiHT5Jvtm5c+cDBw4Q7x0U1oUvTWNj49ixY0k6ndDQUFBzOAKRGSZNmnThwgWiMPjTd39nnpkzZ/L5fPL0efPmud3u119/HeNDQkJIEQAulyuRSIRCIZfL/eqrr1iWtVgsJHo4UPClclAEKAIUAYoARSDwEKB0P/D2hEpEEbjlCEyaNIkwcuTd5/F4c+bMqaysRMpOuM3YbDaPxzN+/Hj47fB4PP9SXGSG4OBgiUSSnZ0N73+LxUK++t28+2KxGDn+//3vfzc2Nm7durVPnz69e/dGVlCGYSQSiUgkGjFiRPfu3SdMmKBQKCAPcIIecssxow+kCFAEKAIUAYpA20CA0v22sU9USopAqyJw6dKlyMhIhmH+8pe/gJrD4t69e/e0tDRE1sLY73a7R40ahdpbGNm5c+fPP//8q6++ioyMDPI1XI+NjSXZ/Zuj+2+++aZ/Ya8VK1bA6Z9l2T179ojF4vbt2+PeYcOGNTQ0wKcIUDT5WqvCQienCFAEKAIUAYrAHYAApft3wCbSJVAEbhYBh8NRVFQEhxwU2BKLxeDZvXr12rp1K5xnkEinZ8+exJNeIpG8+uqrcA3avHkzrP64sW/fvizL4pbm6P6iRYvwFcIG5syZQ1Yik8n87+revTuJN8AYVPAl42mHIkARoAhQBCgCFIHfRYDS/d+FhV6kCNyNCGRlZcGFBjw7PDwcxvUuXbqoVCpiWY+OjiZEvEOHDvv27UM2TIfDQa5LJJJ27drB6Z9lWXL9CmeemJgYfCUSiQQCwUsvvVRbW+t0OhsaGrRaLSn+dc8994wbN45sCZnW36WHfEs7FAGKAEWAIkARoAj4I0Dpvj8atE8RuKsRcLvdv/zyy8svvywWi0NCQkDEYeYfOnQooLHb7Q888ADq4GIANAEY+IcOHcrn88PCwvDV0aNH4QiEP/HpH6o7b9482PWRfmfhwoUkJX9cXJz/XYMGDYIAHo/HaDQ2NTV5vV5SPeCu3ja6eIoARYAiQBGgCFwTAUr3rwkP/ZIicNcgUFdXB2O5wWCQSqUk0w7h/UeOHPF4PC6Xa8iQIf7pdGQyGbGyP/TQQwzDkPjdtLS0azvzzJ8/n4QBCIXC5cuXE7y/+OILDocTHh6O0OH+/fuToGEyBmUBSAFg/+u0TxGgCFAEKAIUAYoAEKB0n74JFAGKwP8iQLLsm0ym5OTk++67j5B+hmHmzZuHAb169QJHFwgEwcHBycnJhIj379/f3yQvl8sxtf9Ff+t+bGwsycLJ5/MXL17s8XgsFovX601JSRGJROD6QUFBY8eOxVQOh8NmszmdTpfLRYry0i2kCFAEKAIUAYoARaA5BCjdbw4Zep0icBchAL7ubyZ3u90rV65EEkzUwBo0aJDL5fJ4PCNHjuRwOEKhEH4+ycnJQMpgMAwePBgaAmJ5NRoNonWbo/skxT4S+cfGxhLQU1JScBe+6tWrF6Yi1QBYlnU4HE5fI3fRDkWAIkARoAhQBCgCVyBA6f4VgNA/KQJ3OAJwssciCXUmSTZx3WKxmEym9PR0VNHi8XhCobB///7Iz9OvXz8QcQ6Hw+VyNRoNHO6tVmuvXr1Ich6xWOzxeBDFewXdR44dr9c7f/58jMdxATLzwGafnp6OGroiXxszZozH4yECU7v+Hf6a0uVRBCgCFAGKQMshQOl+y2FJZ6IIBDwCHo+nqamJiGkymUCgUZ7WarUaDAZi49+6dSvDMPfeey/y88yaNQvJeUaNGkUc+vl8PmrcsixbUlKCiFvU1o2IiGBZ1mw2u1wuHo8Htxx8ReJxZ8+eDU4fEhLC4/Fee+01hAF4vd49e/a0a9cO3/J4vB49epDUQKRjtVo9Hg+l/mRDaYciQBGgCFAEKAJXI0Dp/tWY0CsUgTscAZfLVVlZSRZZXV39008/kT/R+f777+G0wzCMWCzmcrk7d+4sLS1lWXbcuHEMw0RERISHhzMMM23aNNyyfv368PBwpO3v0KHDkCFDoEWwLIuiueRMwGQywf9+yZIl/prAq6++6nK5oIGoVCqMh+Gfx+OVlJQQPQFqCQpvXSE5/ZMiQBGgCFAEKAIUAX8EKN33R4P2KQJ3PgJgzMSEbzab9+3bxzDMgAEDnnjiiVmzZs2ePfvFF18cMWIELOvg3O3atTtx4gSI+LBhw3BRIBDw+fzOnTuvWbPmzTffjIqKwnWY8Ldt21ZfXw8Pe3jsiEQioVAokUgIyosWLRIIBFwuF7Z/WPdZlkVMMDkQQAL+UaNGLV68+N1334WDEJkErkHkT9qhCFAEKAIUAYoARcAfAUr3/dGgfYrAnY9ARUUFFun1eq1Wq9Pp3LFjB8MwfD5fIBCQcrmwx3fp0gUMfu3atbjL4XCMHj0ayfIFAkFERATDMCEhITDqMwxzzz33cLncoKCgM2fOEDTh5ENS7DudTqTPf+WVV/w1hNjYWIfD4fF4EDo8cOBAJPgn9bY4HE67du2gsRDSTzrkcbRDEaAIUAQoAhQBigBBgNJ9AgXtUATuCgTgYON0Oi0WCxY8ffp0wrk5HA6Px+Pz+UKhEClxkIITI2F0h+Gfw+EQD35yOwh9hw4dtmzZ0tjYSPLxo5guGUbs8bNnzyY6AJfLjY2NJccO5eXlH330EVID4UaQfg6HA2GoJ89d8b7SRVIEKAIUAYrATSNA6f5NQ0gnoAi0HQTMZjOERZAry7J1dXV///vfCbOHHw7oNYfDCQ0N3bdvH+4iMb59+vRB8C5I/OTJk++//36Y4SUSyRXVstxut9FoJEQ/NDS0Xbt2yJrPsuyrr74qEomQ6DM0NHTRokVIHASDfVNT02OPPcYwjEgkIqcHnTp1IooKzPwkXU/b2QcqKUWAIkARoAhQBG4dApTu3zqs6ZMoAgGCAPF+QSVdlmXj4+OXLFkyYcKEQYMG9evXb/Dgwa+88goS6hOW73K5YN0fOnQoHHgQRJvsa88///yQIUNmz5799ddfsyxrNBqJaZ9l2dWrV8fExMyaNevf//739OnTkbHH6XQqFIqZM2cuWLBg4cKFc+bMSUpKYlnW5XLBmQdqxsaNG5955pkBAwY84GuzZ8+22+04BMABQoCgSsWgCFAEKAIUAYpAYCJA6X5g7guViiIQEAi43W4wb5ZlbTabxWJxu90jR46EtR6+/nFxccTcHhBCUyEoAhQBigBFgCJAEfBDgNJ9PzBolyJAEfi/CJBzgKamJtIfNWoUcc5hGCY1NRWGfJr//v+CR/+iCFAEKAIUAYpAQCBA6X5AbAMVgiIQmAggrtfhcPjX4u3bt69/6G16ejo8cPzHBOZyqFQUAYoARYAiQBG4CxGgdP8u3HS6ZIrA9SKAWFhSLau2ttbj8QwePJhhmCBfYxhGKpVe73R0HEWAIkARoAhQBCgCtxwBSvdvOeT0gRSBNoUA0vPDfo9Q3VGjRgkEgqCgIJTB2r9/v8PhMJvNxMu/Ta2PCksRoAhQBCgCFIE7HAFK9+/wDabLowjcJAIulwsBu4TNR0VFkbSYfD5foVDc5CPo7RQBigBFgCJAEaAItB4ClO63HrZ0ZopAm0fA6/XCkwdc3+PxWCyW2NjYQYMGde7ceciQIQ8++GBOTo7FYnE4HKRCVptfNl0ARYAiQBGgCFAE7iAEKN2/gzaTLoUi0AoIgO7DiR+J8P379fX1eCatddUK2NMpKQIUAYoARYAi0AIIULrfAiDSKSgCrY2A9/+21n7cXTs/YL7G8v/vPnivMZJ+BQS8Xq/H43H/1jweDzK62mw21GJDzbVbBpfT15A0Fjqq0+l0OBxer/eKIs3484YE809OZbfbzWaz1+t1u924TnRjt9vt8XjI8m/oEbdgsMfjYVm2trb2coE8kn7X4XC43W4gVllZybIs1fBvwV7QR1AEWgoBSvdbCkk6D0WgFRGgLLMVwfWb+r/Sfb+xtPvfEbjivSXckWXZK1y/mpqawDL/+6Q3NwIkHs+CDKdPn05PT5fL5VKpNC4uTq/X4wk4y7qhp9ntdv/qE2SNv/76a1JSklqt/uSTT65e+w09olUHOxwOl8sFcE6ePPnFF18kJCTEx8cbDAZC7kkMD1ldq4pEJ6cIUARaBAFK91sERjoJRaC1ECAE9Grm1IaueJppgbYEiEkwb61NvWvmJbb8K1Z8OaPrqlWrXnvttVmzZs2bN2/+/PmrV6++Ykxr/EnkAaP1er0WiyUjIwNl40QiEYfDeeyxxwwGA8uyf6xWdFNTE5EcqkVNTU1UVBTDMBEREUOHDq2vr0eGKzIsADs2m02r1QYFBfH5fIZhdu3aRaCDFkS5fgDuGhWJInANBCjdvwY49CuKwG1DgPBgfwIKvwh/14jfXCSu/K8rwBo8KK7+DDAx/39xAOgVSgrZlNv2WrS1B7vdbn+LPhFfKpWSwsxBQUEMwwiFwltJgglbtdls+/fv53K5pHLc0KFD/S30RObr7Pi7AMGHZ/PmzQKBgMfjMQyzb98+Mo//SHLx9nbsdjvZr6qqqvHjx2Nr+vTpc/Hixbq6OqhJcEa6vaLSp1MEKAI3hACl+zcEFx1MEbhFCPwuswcbhasxKt3am2nWAGuWZlqAiWm1/daAq8PXiJaCnKTgOsTYeYteiLb5mN+l+16vd+7cuQzDIJ2rQCAA9U9KSrplq7TZbITXxsfHg4tDkiFDhpCv/pg8RFtwOBwmk6lr164gzdHR0WazmWgaf2zyVr0LGhei8z0ez969e1Fbg2GY9957j7gq/QE3p1YVm05OEaAI/FcEKN3/rxDRARSB24AACXAExSfk3mazWa1Wi8Vi9jVTM80YYK2xmRZgYhqbfA2gAmGz2WyxWKzW/9UE7HY7Uo5iX27Dm9GmHnkF3fd6vU6n0263jxs3jmGY0NBQEH0+ny8UCpcvX34LFkeCdIlxXSaT8fl8DocTFBTE4/GGDRsGLfQPCAO/dhIB7HK5FAoFOTeIj49nWdZqtbpcrurq6j8wf2vfAuM9CTg2mUzDhg1jGIbP59933324TmpsEwBbWyo6P0WAInDzCFC6f/MY0hkoAi2MgD/Xh2mZUHyTydTU1GQ0Gg2+1gyLbqwLsFbdTAswMevq6+sbfA3AAmSDwdDU1GQymfypP8z/Lbzxd9x0oI9kWU6n02KxGI3GDh06gOiLxWLY1MVi8WOPPUZGtl6HRJoStpqamgpGe9mGLRKJxowZ84ef7nA4iLuLy+WyWq0TJkzASu+9917yLcuyhFL/4We16o1EvOXLlzMMExISwjCMVCr1T6NEAGxVSejkFAGKQIsgQOl+i8BIJ6EItCQCV9B9h8NhNpv9iX5jY2NDQ0N9fX1zdLkZdn3bLlc0026bQM08uPa3BmDrf2sGXzMajVeQ/pbc9TtxLn+vGK/Xa7fbjUZjfX097OhcLrddu3ag+xEREffdd98twICkv0R+TIfDkZiYSI4auFzuyJEjIQYCdm9UJNB9p9Pp9Xrr6+vJzJMnT2ZZ1mg0khQ3pHOjj2i98V6vF/gQf568vLywsDAoQhMmTED4MjHwt54kdGaKAEWgZRGgdL9l8aSzUQRaAIGmpqbGxv+x0BMfHpic6+vra2tra2pqqqurq3ztYoC1urq6ioqKc+fOnTx58tSpUxcvXrx06dKpU6fONdMCTPyLZWVlNTU1x48fr66uPnPmjM1mu3DhgsFgqKmpqa2tra+vb2xsNBqNxMxPXPxJ+sIW2P47aAoYiUkuF/j2bNu2TSgUwuY9f/784OBg9Bnmf/89cjqdxOUGYCDdjdFohCcMy7L+CXCQ2hKqRVVVFW5xu91WqxXku6mpCTzV5XJhGGz8Tqezvr5eqVQiVDc8PJxhmHHjxhHrOwzY8Gj3eDxw5cL8mJCcFdjtdmLtJkrO5s2buVwu3N+3b99ONtblcjmdTsiGebxer/+K0MeEWMUVDLuuro5lWRIkwLIsok5YliViEHWCRNYSwfBowAgBiF8+7kLMLoZFR0djgzp27IjSARCPzE/WRTsUAYpAwCJA6X7Abg0V7G5EwGQykUg+q9UK3t/U1FRZWQn7eHl5eWlp6aVLly762vkAa8eOHTt37tzp06dPnDhx7ty5kpKSn3/+uaSk5GQzLcDEP3/mzJmLFy+eOnWqvLz81KlTlZWVZWVl58+fLysrKy8vr6ysrKmpqaura2hoMBgMYJ82m81ut4OhEjp1N767v7dmUE+Qfo+vsSy7ePFijq8xDLNt27YuXboQup+VlVVTU0NgNJlMH3744ezZs9euXTt16lStVuv1evft2xcbG/vQQw+NHj161apVhN/b7XZw4tjY2CVLlsydO/dyos/y8nKbzfbee++NHz9+0KBBzz77bFxcHDh6TU0N6Gx6ejrc65GIc/jw4RaL5eLFi3Pnzp09e/aCBQtmzpy5dOnS48ePY4l2u/2TTz558803Z8+ePWPGjJiYmPPnz5O0QqirhQJV8+fPx9KCg4N//vlnglBDQwOZSqfTTZs2rWvXriNGjIiJiXn77bdRxIpl2bS0tKVLl86ZMyc2Nnbu3Llw/Ud9q02bNr322mtzfS02Nvann37Coo4ePbpkyZKYmJiFvgb2L5VKH3744REjRjz88MObNm2CssGy7KFDhxYuXDh8+PA+ffosXrz4woULkApWBiLtyy+/jHScIpGoqKgI4Qe0zBbBh3YoAm0CAUr328Q2USHvfAS8vsayLChIYWHh3Llzx40b17Nnz65duw72tUGDBg0cOHDAgAH9fS06OnpggLX7779/+PDhAwYM6NGjx+DBg/v16xcVFTV69Oi+zbQAE39gVFRU7969hw0bNm7cuKeffvqdd94pKSm5dOnS2bNnz507d+HChdLS0oqKiqqqqtra2rq6Ovj2WK1WGHexd3f+y3rdKyRuaf53IE4XBv5Dhw4NGzYMkbKXg2Xff/99FHOF3drj8QwZMoRw8ZiYmHfeeeeee+4h6kFISEhMTMylS5dYliWEm3wbHBz8/vvvP/XUU0Kh8J577gFn7dKly6pVqyAP9ArQfbFYjBujo6M9Ho/T6ezUqRO5yOVyk5OTcZfJZOrRowfCD0JCQiQSCWzt+Nb1WzObzVgpwzCdO3cG84ZFHFrQ0aNHH3zwQTwU84hEIoZh5s6di6kWLFiAtXM4HC6Xe7k6Af4vYbVax44dyzAMEgpxOJykpCTMHB8fj9MSHo8nFotZlp08eTJWgcmFQuHEiRNZlt2yZQtCpTkcjkAgwF1g81gBNBaHw7F9+3aSPWnz5s3kHMP/bAEC00+KAEUgYBGgdD9gt4YKdlcggH+/wYqQ29FgMFwuxLN06dKIiAhCXNpKRygUisVikrwPYkskElhzr/4MtHUFBwcLhUJkgmcYplu3bocOHTp+/Pivv/568uTJM2fOnDt37tKlS7D0V1dXw8ZvMpmsVqvD4bgiEc1d8Qb/t0VCBSJnVnV1dYj7BMj19fVPPPGEQCDgcDhCoXD27NmYz2q14pY+ffrgJYmMjOzUqRP5UZBgX4Zhli1bRqinw+EQCARisRhZPkeOHInbQXkJ8U1MTIR92ul0yuXyoKAgsGGGYaKjoyHDI488Qt6Ey7R77dq1xFWGOCMJhcJBgwZhPA4x8A64XK6Kigoi5IQJE8Ce3W43nGeqqqpGjRrVoUMHgUAAURmGCfO1zZs3Y8KZM2f6/0AWLlxITjAGDx6M5J7QB7AclmX37dvn/+t75JFHGIbhcrmhoaEikYjH44WGhnK53Keeegr8XigUQmdgGEYgEPz973/HKQE8l9xut9PpLC4uJi5JL774osVioWotNoh+UgTaEAKU7rehzaKi3oEIEKLv/q01NjZWVlaShB5cLpfYPv3/IffnAQHYv0JUfjMtMCUn9Cs4OPi777774YcffvrppxMnTvz6669nzpw5f/48sfETxx6z2Wyz2eCQTXxR7sD39caXBGpIfNwLCgqw6SKRqF27dh6PZ8mSJXhbxGJxnz59yBMA49ChQ8FoQVtxL3m7EEXK4XBKSkqIgR8cnTB1DodDlAT46DMMM2DAAIPBAI0iJSUFlJfrawjVdblcW7ZswUMFvvbPf/4TGoLZbCa6AcMwS5cuxaEcZoPYbrf7xx9/xO0cDufVV18l64JW8O6772It0EBCQ0MROcAwjMPhwP8WFixYIBAIRCIRSDms/kBy+PDhAoEAtwiFQqVSCVf++Ph4JDsiK4UWgWfBSM/hcMgb7n8dxv7MzEwsgXB6k8nE5XJ5PB6Xy3344YedTicJDyCLoh2KAEUgwBGgdD/AN4iKd4cjQLwdcIDudDpNJpPRaBwzZgzDMKAsIAT4hznAP/35BLGA+nOjAJefy+XC9iwSicRisUgkOnTo0DfffHPkyJFjx44dP378l19+IYy/vLy8urq6pqamvr7eaDRaLBZq4P/dn6vX6yV0f8OGDXgHeDzemDFjvF7v/v37cQXpeqqqqgjR9Hq9MM/jXYKJ+rnnnouJieHxeBKJBGz4chrNDRs2gG07HA6SVRNsODQ0NCYmZtKkSXhKREQEXsjCwkJIS8psweD94IMPer3eurq6c+fOEU2DOOSwLJuRkeH/Gufl5SFbrv/a3W63Rh8Iap4AACAASURBVKPBMD6f//rrr5MgY+gMffr0CfY1hmHuu+++U6dOsSxbXFy8cOFCzON0OlGMDJNwudxZs2aRGOL+/fvDCoBvU1JSXC6X3W5PSkoiuhCUjaFDhz7++ONPPvmkRCJp164dseUzDBMTEzN37lyoTEThWbduHUleRBz0w8PDuVyuWCzu168fLlKd1n+7aZ8iEPgIULof+HtEJbxjEfDn+mAMDoejsbHRYDCgug1MdN27d3++mfZCgLUnfK1Hjx4CgQCu0pGRkS+88MKzzbQAE/+F5557bvz48f5kTqvVZmdnFxcXf/31199///0PP/zw888/nzp16uzZs+fPnyd+/I2NjWazGelNCFu9Y1/c614YoAAThTfLxIkTCbzz5893uVwnTpwgjJZhmIKCAkyP4y549sPCLRQKJ0yYAKK5cuVKMo9IJOrdu3djYyPYMMMwxHUnJCRk3bp1sL4/8MADeCdx41tvvYUHJScnQwGAdv3AAw8g1Q/LsiNHjiS3iMXiuro6r9e7bt06zMDn86Ojo0mYAWbDku12+44dOzCMx+N9+eWX/pgZDAaSzD4sLOy1115jWRbxu/6G81mzZpE1MgyzYMEC4k3Ut29fEHR8fvXVV16v1+VySaVSoqJA94Y7vt1uByZQgQQCwfTp0+FWNH36dJIttH379lOmTIHiBIGhp8GlisvlRkZGAmTiPeW/LtqnCFAEAhYBSvcDdmuoYHc+AlfQfSTEKPe1vn37kn/pJ0+erFAolFc1lUqlDrCmUqkyMjIuB7kS4QcPHqzT6TTNtAATX52VlQXzM/w3+Hy+QqHQaDT5+fmFhYXFxcXffffdsWPHTpw4cfLkydOnT5N0PQ0NDSaTiQbsXvGjJZl5wCA9Hk/37t1xfnKZYm7duhWagL/nyWeffQa/FNB6/x8CwzCffvopMsOUl5cTMg0ztsfjQcgsrsM1RSwWI6OOzWb77LPP8BWfzxeLxd26dQOXValUsIiDOj/wwAMej8ftdptMppUrVxK6HxQUpNfrbTbbypUreTwen8/n8XiTJk2CGoNgA8T4ohbV+vXrMSGHw4GzjT+NxrRg5FFRUTU1NUhXCts5UgzBuh8aGop5YmNjGxoawLMHDhyIEw/Y5lEAi2XZlJQUcHfcMm7cOIy32Wz9+/cnhyQMw+h0OmTVTE5OBiyRkZEMwwwePBibCGUA/YceeghjuFwuofv+y7li3+mfFAGKQKAhQOl+oO0IleeuQMD/KBxmOQThmc3mqqqq6upqhOKBhTz77LPqgGwajUar1Wo0GpVKpVAo0tPTVSqVVCqdPHkyGBjDML169crIyAhI8X9HKKVSuWHDBpAwWEn379+vVCoVCoVWq83Lyzt48OA333xz9OjRX375paSk5OzZs6WlpbW1tai862/gR95JhGKzd2sj1n2YpcvKygjh5nK5Wq0WhHvAgAHE9etf//oX0IJLyfDhwxHhDSUhJSUFOeYtFkvfvn05HA5xFSsvL8fPimEYuOXgWVAeTCYT0RAkEolIJOrRowcelJKSAt90jB82bBj5eR45coRhGHi6czicrVu3mkymQYMGkTfk448/Bp8GWUff6XTa7fZ58+aRmIG9e/f6vwJer7dnz55kyREREX379t2xYwfLsiDZEGDOnDlQWkJCQjgczsKFC4mbDf7/QKJ1kTXI4/GA7hN/nqFDh0Ikr9eLA0Os8XJEskwmgzKWkJBALnK5XBI+Ae8j3N6rVy/yi8ZdXq+X5t3331PapwgEOAKU7gf4BlHx7kwECJ+AmwFsnFar1WQyoX5W26X7KSkpzzzzDCEHbYvuq1Sq9evXE4PuZb/qvXv3pqWlyWQylUqVlZVVUFBQXFz8/fff//TTT6dOnUKazpqaGlJ+i/jzULpPfrrEDKzT6fyZJcuyBoPB5XI98cQTxLll3LhxUBJAoIcPH06CWBiGkUqlJpMJP58RI0YQxxUul6vRaPAg8gjcCMIKfcP/K4lEgq+kUmlzdJ9l2W7duoGXh4eHL1q0yO12t2vXDq83yUMPDYRk0cXPed68eSRcGCnzkSoUD92xYweXy23fvj0m5/F4kZGRjzzyCMi0y+XyeDzTp0+HXgFT/YIFC/Aty7IjRoxAED9cdFqK7iOIGVjhWQ6Hw+Px+Ds1AWQEHJMtph2KAEUgwBGgdD/AN4iKd2cicAXddzqdNpvNYrGgolZlZeWgQYMIlWlD1n2lUpmSkgJnHnho9O7dO6PtWPevpvu7du1K8LXU1FS1+n+8fQoKCg4dOnT06NGff/759OnTFy5cqK6ubvAV3jKZTDabDVyN0n3y03W73eDuS5cuRcJHgUAQEhLSu3fvIUOGjBo1qmPHjhwOB6T2/vvvhw0bhBJ0H+ZqDoejUqnItKD7YPAhISE7duzAQRm0NR6Px+FwgoODKyoqUPzYbreTKF7cBZ+Za1j3WZZ97rnnMFgsFg8bNsxkMpEndu3a1WQyQTkhhnmk03U6nYsWLcJIhmHy8/NJdSpAYbVaX3jhBTIAa+dyuRKJhCwwJibG380JvvuontuzZ0/k3Ye20IJ0f+jQoSQgGDKbzeZRo0bhwKRdu3b4FpESRFTaoQhQBAIcAUr3A3yDqHh3JgKE7qMGp8PhsFqtZrPZaDRWVFS0XbqvUCiSkpJA90HR2hbdz8jIIC7XoGKffvrp7t279+zZEx8fn5aWplarMzMzCwsLv/322x9++OHkyZPnzp2rrKysq6trbGxsamqCCwS4Ppgf2es781X+b6u62lSPuAjEjML1nM/nE14rFApPnDgBS7m/C4q/Mw++7d+/P/aIz+eHhYXJ5XKE2HK5XKFQiKdwuVyXy0W2gETxIrEPDO2JiYnNWfcvBxvExcVBRcGzioqKRCKRQCDgcrnPP/+8f5gB9BMYvy+bxtesWUPYfGJiYkNDg8fjQe4mYFZXV/fRRx+BtV/2FILfTlhY2HPPPYcBr7/+Ojlo4nA4/qG6qD4GJYFhmBak+8OGDSPHFOTU4r777oNHU+/evWH7J4WB/9v+0+8pAhSBgECA0v2A2AYqxN2GAOEfoPt2u91isZhMJoPBUF5eXlFRMXDgwLZo3U9PT09MTHzqqaeI8G2L7qvV6nXr1oF6Ql356KOPPvnkk88++2zPnj2JiYnp6elqtTonJ6e4uPjw4cM///xzSUlJeXk50nEaDAaLxYLs+9S6jx81XnWPx2O1WsPDw1EgFjy4Y8eOl6NvUSXXP9tsQkIC7nW73eC1JHVMXFwcAmFZlu3Rowf4Ltz3T58+DbpP3j18S/7fUl9fT+g+l8uNiooC3U9KSmqO7nu9XpPJFBYWBgeey0nxV6xYIZFIwMLj4+MRewCVBkQfnx6PZ/fu3YTur1y5krjdoz4ADhasVuuJEyeGDRuGVw4++pGRkVVVVS6X680338QMfD5fIpHMmTMHVZxZln3ooYeg0mBAC9L9wYMHk/874aiKZVmBQADHpLFjxwI06rhP3ivaoQi0CQQo3W8T20SFvGMRgPuBzWaDab+xsbGsrKy8vHzAgAGEtbQhZ560tLSEhIQnn3ySEJ3evXur21Rbt24diD4Y2KZNm95///1t27bt3Lnzq6++kkqlSqUyMzPzwIED33777U8//XT69OnS0tLq6moY+M1mM9ydKd1Hyhry0/3uu++ImTwkJEQsFgNhiUSCYsbknZk3bx7u8nq9/l5tDMMoFAp8ZTAY7rnnHhIyy+PxLifScbvdLpeLzAOGivFWqzUhIYG4DDEM8+ijj4JzX8N3H/7rI0eOhOYgkUhIn2GYS5cuwTMHNn5Y98GGvV7vgQMHUJqKy+WiWjChyLgLfyI297HHHiNiBwcHFxYW1tXVrVixAheDgoKCg4OffvpprMVisQwePJisXSAQtBTd53A4AwYMwBLgnuT1es1mM4kJfvrpp0nsBIShnxQBikCbQIDS/TaxTVTIOxYBZO6z2Www7Tc0NJSWlpaVlYHu4x/7qVOnqgOyXZ2ZRyaTxcfHI/ISwrctuq/RaEhWdZDRjRs3rl279sMPP/z000/37t2blJQkl8t1Ol1hYeE333zz448/njx58uLFi5WVlbW1tQ0NDUjOQ515/H+xQAOOK6DgIpHos88+gxUZ3Bdo452B+zhmGDhwIDG9h4SErFmzBqz6008/5XK55KxgxIgRHo8H7ByTIKOOUCjU6/UsyxqNxhkzZhDvF4Zh3n77bYyXyWTkEQzD+GfmsdlsXq/3/fffx5yhvob+kCFDyBPhzo6YDeKGVF5ejrJWfD5/3LhxpOgv1uXxeOD+Dm69Y8cOgUAA/3gej4ecRR9++CGeBWYfHR2Ne7/77rvIyEiS2KdlnXkI3Qc4brc7JyeHRN4vX77c6XRCZqIV+O817VMEKAKBiQCl+4G5L1SquwUB0H2r1drU1GQwGOrr6y9dukTpvvo2NX+6D2q4fv36VatWffDBB//5z3++/PJL+PMQuv/DDz/8+uuvFy5cqKysrKmpIdn3Kd33/wGbzWaLxRITE0OSWjIMYzAYSAivw+EgdaMEAkH79u3J7QMGDODz+SKRCEcunTp1+vrrry9duoTUkCRpz+uvv05uQTwu8XqfOHFiSUlJdnY24fRCoZDH45Fc9deg+5gT+UOJNZ3D4QgEgpkzZ+JbmOdhqgdFJp+dO3fm8XgCgaBr165kAI4Udu7cWVRUROz9b731FtFSGIY5ePAgkugLhUKi0gQHB69evXrv3r3Ixw+63xqZedxut9frJaEImzdvhjLG4/F27doF3/0rtBcCPu1QBCgCgYkApfuBuS9UqrsFAX+639jYWFVVVVpaWlJSQsIQeTzelClT1M00lUql0WgUCkV+fr5MJsvOzpbL5Xl5eWlpaXq9Pj09PSMjQ6lUqlQquKA0M80NX4ZdX+trarVaqVTK5fK0tDSpVBofHw9nHj6fz+Fw+vTpc8Oz+25QKpXZ2dkqlQqp/fV6fXZ29h+b6vrvQqguIV58Pv/NN99cvXr1+vXrN2/eDAN/cnKySqXKzc2F+/6JEyfOnj1bVlZWXV1dX1+PYluU7rO/NYvFAtf2zp07w7TP4/H+9Kc/EQcYfPuvf/2LYRh44YtEohMnToBuwpkHFaDgeQ+aC/KNCRmGQe1YTIXtI/n4GYZp3749GQl+3LdvX9TkslqtaWlpuAUawsiRI61WK2HniAcgiXERUMswzLfffovEmqD7JKoV60IFq3/+85+kAkBZWRnJeGO1WuG90759+wcffLBHjx4I2IUAf/7zn7F2lmUhPMQjByCoMUzeUpFIJJPJEDOQmppKrjMM069fP6/Xi69IOBAQSExMhLcVboHf0eWqxg8//HBTUxNypCJM4uWXX8YtISEhZWVlkA1Ky2+bTP9LEaAIBDoClO4H+g5R+e5sBG6S7qvV6uzsbI1GU1xcrNFodDpdUlKSVqtFOKler8/KysrMzIRKkNFyCTFbm+7n5uampaUpFAqdTpebm6vT6VDJS93K7Wq6v2zZslWrVq1bt+5qun/w4MHDhw9Tun+NXyj4N1jjvffeCw3wcklXUGrQZfDjf//734SnisVihUIBWhkdHS0Wi/25O/zISWlehmHeeOMNYnI2Go1cLhfk3t/dBZOj7tVf//rXL7/8koidnp4OJo3xDzzwAPkKrNftds+YMaNTp05Ews6dO0NbIPk3XS6XzWaDzGTV69evB49nGOaLL74g07rd7vbt25PZoOdA5s6dO3/wwQcY6XK55s2bR4YhNw58flBfTCAQ4AyKhDQkJiYihBdrGTVqFHlodHQ0USqCg4NRsMzr9SqVSv+QhqioKML1ofP06dMHodLdu3cnq/ZXb8gjaIciQBEIWAQo3Q/YraGC3RUI3CTd12g0OTk5KpUqPz9fr9drNJrU1NSsrCy9Xq/T6bKysrRarU6nU6vVLcj11Wp1a9N9jUYDgbOysjQaDZaDzPfq1mxX0H0ej/fGG2+sXLly7dq1mzZtgj9PUlKSUqnMycmhdP86f6J2u10mk4GYwir/5ptvknthJy4oKIATDoYtXboUXJMcc4GR9+zZE1k7wemDg4OnTJkCtQFM1GazEX6Mzvjx44ldHN5EmzdvhvUdhvmEhATiLMQwzOjRoxFOAKM45MzIyPA3tD/++OO47na7ISeIPm6BM4/NZvv2228FAoFIJAoODp40aRLKb1VXV588eRKy8Xi8kJCQsLAwom9s3LiRIGO320+dOvWXv/yFHG4gQVBQUJBcLkcy0MuV4O677759+/ZBx0DaUEzO5XJHjhyJ2HGTyTR27NiwsDAShr57926v12uz2fbv348QamgIAwYMIALU1dX98ssv2BEOhzNjxgyyaurMQ1CiHYpAm0CA0v02sU1UyDsWgZun+3q9PiUlRalUanwtMzMzNzc3IyNDJpPl5uaqVCq1Wq1SqXQ6XWZmprqFWmvTfQifk5OTm5ubnJycmZlZVFQkl8tbSPxmp7mC7nO53KVLl7799tvvvPPO+++/v337dqTjVCgU2dnZRUVF1LrPXkdrbGz87LPPxo4d26tXr3Hjxg0bNuzLL79EnK7T6bRYLG63u6SkZMCAAWPHjh09evTQoUOXLFmCDDDwooFVnsvlpqSkbNiwAYb24cOHL1++nNibQbLhAMMwTHBwcLt27cLDw48fPx4bGxsZGRkeHv7MM8+kpqaCGbvdbqTRvHz8NXz48KFDh44ePXrkyJGxsbFNTU0ejwfKAAJwjx07RpJ4hoSE+Jvqvb7mH7cK0m80Gq1W6/jx40G+27VrR3LVGwyGt9566/nnnyc8PjQ0dObMmd9++y1m89c05HL5lClTkK5UIpHMmjWrurqaZdkhQ4YMHz584sSJ9913n0ajwfK1Wu2oUaP69u2L5UydOpV43bz44ov9+vUbNGjQ6NGjx40bp1QqsXVZWVljxowZOHBgr169Ro4cOWfOHKguyHS0bNkyLpcL/HU6HQz/0FuuY+fpEIoARSBQEKB0P1B2gspxdyJwk3Qf3vOpqanp6enoZ2dn79y5U6VSJSYmfvPNN/DdT09Pz83NPXjwoLqFWmvT/ZycnLS0tN27dx88eFClUun1+pycHJlM1kLiX2saOGCAonE4nCVLlrz11ltr1qx57733Pvnkk927dyckJMjl8qysrMLCQkr32Ws2QoJRfcxgMBCvG9wHwzzYLWoSg4uDiJtMpjFjxsCTB/RdoVAQfk8S8FdXV0N5qKqqYlk2KCiIy+US/x88CI8mNJok0ISVGq44Ho8H+XBxC+rXOhwOk8n05JNPwsgtFAqDgoJwOABaDH8el8uFxUJ+1NNgWXbnzp3whAkLC4OXDrL9EGcYoqUQIC0WC0i/wWBAtn7/ErYOhwOLRcUuj8fT1NRE4geIHw4SBMELH2oGWbvRaCQPdTqdXq+XQOp2u/2nYlmWKCR9+vTBPBhwxTAiPO1QBCgCgYkApfuBuS9UqrsFgZuk+zpf0/taVlaWTqdTKBSIlP3zn//8+eefZ2Zmfv/995mZmSqVKj4+Xt1CrbXp/uOPPx4ZGRkSEvLxxx9LpVIUt9Lr9S0k/rWm2bBhA7g+Pl9//fXly5evXr363Xff3bZt265du+Lj49PT0zMzMwsKCijdZ6/ZrFYryKs/O8Q7TygmAkZBTAlpdrlcl5P5lJWVkTJb2A6tVovxjY2NYL1ut5sYsEGLyfaBoCM2APnjQbKNRqPdbieqCFZA/rTb7V6vlyTZdDgcoOwIkOXz+VOnTkX8Lok9gHLidrudTidh0pj2/PnzPXv2RA0NlKSFPkByd8IXCBNecS9EwjKvhtnfiQizXT40IJweq8ZdwNZsNvunzCfnKmRmUg3A6/XW1tayLAsXJkQnx8XFOZ1OouGQu2iHIkARaBMIULrfJraJCnnHInDzdF+tVufl5WVmZup0uuzs7PT09I4dOwYHB/fs2TMuLk4mk2k0GvjD5OXlqVuotTbdh8c2j8eLj4/X6/VKX2sh2f/LNFfQ/cWLF//73/9evXr1xo0bP/744y+++CIuLg6JjyjdZ6+7gRCj3jDLsoTjElYKe7b/n5j7oYceQr4aoVDYoUOHvXv3kvw2OCgA50ZdatxC6L5YLJZIJHa7ndBopJjEMCIDZCPJlAjvZ1n28ldr1qzp0KFDUFBQeHg48n5WVFRgCYT7kqn8tRqCzfbt28ViMXSPxMRE4kpEBmDVRA2ARZ9k1Kmrq/N6vY2NjaDy5eXlLMtCsYG5ndxIJnQ4HEQ2f7g8Hg9Wh4MUMp50iAsTy7I1NTXjxo1jGCYkJGTgwIFItw+syHjaoQhQBNoKApTut5WdonLemQjcJN3XarVpaWlZWVkqlUoul+fn5+t0Oj6fHxISEh0djbQ2ubm5iYmJarUaMbvqlmitTfeFQqFIJOrdu3d2djaclJCfpyVk/y9z/C7dX7VqlT/dl8lkOp0uPz+fWvfZazZCf10uF/FvgSWbZdnKykr4nBBlAJP5k/K+ffsihBdZZeAPA87q9DXcAsINWg+6T9LkY4A/T7VarYQigxb7G8XJgkpKSp5++mmS2h8CzJkzB2oAhuFGnGD4qzEul4v4C5nN5v79+wcFBV1O9t+3b1+Qe7PZDAKNutrEhE80EyBGFAk4I2HhdrudHGigY7PZYHqHqgDZcO7h8jWn00kSBxHJcYhhMBg8Ho/dbgcmLpcLi0pPT2cYBl77e/bsIbBYLBYcgBCZyVe0QxGgCAQsApTuB+zWUMHuCgRuku4jSQ5ycSqVyqSkpLVr14LoTJ48uaCgQKvV5ubmJiQk5ObmqtVqhUKBpDeFhYVpaWkyXysoKMjLy1OpVDk5OfHx8fCSz8nJUfhaWlraN998k5iYqNVqFQqFVqtVKpUKhaK4uFitVkulUrlcDmcbhUKRkpLy1Vdfoaouko307t07IyMjLS0NLvhIDIpMO6gMoFar031NqVQeOnSooKBg9+7dMOhOmDAhMzMT2fdBr1UqVbavKZXKtLQ05CFFAqKcnBypVLpv376nnnoqKirqgw8+QBWCQ4cOpaeny2Sy/Px8lUqVlpaW6WtZWVm5ubn5+flSqVQmk2VkZGRlZanV6stldJG9BA4YixcvRi5O0H0488B3/8CBA5Tut+yvlDjDED0hKipKLBYjaYxAIFAqlTDnW61WsFV/8g2yC2LNMEx4eDiPx3M6nVc4rzcnM/HhcTqdDl/r0KEDPO+hQsAbp7nbr3H9u+++U6vV8KY7e/Zs4BPlqqqqgwcPpqamJiUlpaen+y8N5zDkNMb/K9qnCFAEAhYBSvcDdmuoYHcFAjdJ9zMyMpCnUqvVopbW/Pnz+Xx+eHj4G2+8gXT7hYWFKSkpOp0uLS1Nq9VKpVLU5Dpy5IharUYfaoNSqdRqtXK5XKVSgf6ShJhqtfrQoUO5ublQAzQaDaizXq9HR6vVJiUlNUf3Vb4EQbDTY84MX0M2IUTiqlSqhIQElUr1wQcfIBP5/PnzIUxqaqpCocjKykJHo9Eg3RCWr9Vq4Ux/2W2pd+/e0HakUinCfHU6nVQqhZ6AByFtkVqthgeUQqHIycnJy8vT+uoVULp/e394DofDZrPB3fyy+/jQoUORaB+EW6VSQTzkjUEfZmxiTcdIOM8wzI39G4cjCFi4nU7nP//5T9TAYhhm1KhRR44c8feNuSGgvF6vyWQym83kYCEASb+/I5PNZjMajeQY4YYWSwdTBCgCgYbAjf2vMNCkp/JQBNo6AjdJ91F0Vq1W6/X6jIyMnJycRx99FMm8ZTKZVCotKCjAp0ajKSoqUqvVBQUFcOXfu3dvfn6+QqGAlT07O1uhUBw/flyj0Rw4cCA+Pl4qlaJQV3x8fIavRJdKpULgbH5+fnp6ukKhKCoqUqlUKSkper0+Pj6+Obqv1+tBpqGTwBcfFBw1AVBAQCqV6nS6559/Hgxv8+bNSqXywIEDGRkZqb6Wl5dXWFiYk5MDbQGWfiwcxw4wzHft2hWPQH5SODIl+1pOTo5cLtdoNGSATqdD4V6lUkmt+wH1g6qrq/vb3/6GDJhcLrd9+/ZSqRRuLZCzqamJsHxcKS0tBd3H4VLHjh0vXLjg8XjgzAOb9NWfZNUw8Lt9zeVyffzxx7DuDxgwAFZ5cPSrZ8AVEgBwRQfeL/5PQb+5eW7XdSIh4qH9var8v6J9igBFoM0hQOl+m9syKvAdhUCL0H2lUomc+rm5ud26deNwOOHh4YWFhTCNq1QqjUaDIrWwymdlZaWlpaEml1qthlFfr9dLpVKtVpuSkpKVlQUOLZfLYTuH305xcXFqaurhw4dha8/OzobCkJSUpFarZTJZc3Qf/jbg+hkZGSj+BZKdn59fWFiYnp6u0Wjkcnlubu7AgQOFQiGXy01ISMjMzMzPz5fL5Xq9HoHIGb6mVCqzsrKKioqysrKSkpKgOSQmJsL74umnn5bJZKg7Bt0ARXm1Wu3BgwfhF5SamiqVSjMyMg4dOgR9AO5J1Lp/239g8ESH047F15AI3z+Zj9PpNJlMhFUjFT0kRzpOl8tlMpngxkOS/8CR/epPQq8RzOp2uzHG7XZ379591apVSOljMpngRHT1DLiCcIKrPxsbG0nsrMvlsvqaw+Fobp7bdR0xvna73el0klMI0rntLwYVgCJAEfjDCFC6/4ehozdSBFoAgZuk+/BmAd0HXRaLxQzD9O/fH6Wg4uPjv/vuuxUrVmzcuPG9994D6T9w4EBmZqZSqdy4ceNrr702bdq0DRs27Nq1q7i4GMG+mzZtulzdc82aNQqFAhHAMOEfOHBg3rx5a9euXbFihV6vz83NVSgUMPnLZDKM+V3f/cuVjGBQz8jIQCGw3NxcVMxVq9UJCQnLly+fNm3a888/v2bNmvvvv18kEt1zzz1IJRQXF5eamvrNN9/AiX/9+vUvvvji1KlTX3nllcWLF+/cubO4uHj79u3r169/4YUXYNmdPn36+++//847prBGtwAAIABJREFU72zbtg1uTjqd7ptvvtFqtZ9++unbb7/9+OOPT548edGiRRs2bMjMzIQKIfeV8aJ0vwVe6z86RVlZGSGXdl/Dn6D+SIpfVlYG9u/xeBobG9FvampyOBwVFRXl5eXQBMxmM1xTqqqqamtr4UgDnn31Jwg6/PUJ5UVErMVisVqtIOsul+vMmTOIFrh6EmQdhX5yxafNZvP/1uxrUB5+d57bddFisTQ1NRmNRtQ+wzZ6PB6oQ390V+l9FAGKwO1HgNL9278HVIK7GYGbpPvwkIFxWqvVbt++HXz36aefht0dJTlx8R//+Ad4s0ql+vzzz0eMGIHqpPi2V69eO3bs0Ol0ycnJsK8zDJOdnZ2WlgZ3GqVSuX379uDgYIZhnnzySalUqtFoEhIS4EWTkpIil8ubs+7D1wjHCLm5uQUFBThAUKvVsbGxUVFRQUFBEKNjx45cXxs2bJher5fJZOnp6QcOHEhKSnrllVf+8pe/YFhwcDAUmzFjxnz22We9e/dGZC3yBorFYnj1TJgwITk5+fDhw/n5+Z9//vn/+3//r3379si1QgI6p0+fvmfPnuLiYkQzU7p/G3+P/u7sYO0Wi4Ukn6mpqWlqajKZTI2+ZjabrVZrTU0NktLU1NQ0NjZardba2tr6+nrUnzIYDDabzWKxYJixmWa6qjX91pDy8ty5cxaLBSk4KyoqDM00CHb1Z319fUVFxcWLF8vKyurr66FCWCyWZsS5bZetVit0KqPRCEgMBkNDQwNOG9xuN6j/bXxD6KMpAhSBP4YApft/DDd6F0WgZRC4SboPGg2vFZ1Ot3TpUrDhBQsWHDp0SCqVbtmyBbx26NChhJr/5z//+etf/4qRUVFR3bt3R/+xxx5LT09PTU0dNWoUwzACgQDZeJDQMz8//6WXXoJL9JIlSxQKhVKpTE5OhsqBG5uj+zqdDvV9MRW8ifbv379w4UKU7YyMjOzUqdOgQYMgCcMw06ZNk/nK6BYWFl6uEDxx4sSgoCA+n9+hQ4eePXsS+adOnVpUVESyLoaEhCCLC8MwYWFhkydPlslkRUVFmzdvJgWb/vSnP/Xs2RN6y+Ukjxs2bNBqtYWFhXFxcdR3v2Ve65uYBVVsGxsb4VFDfO4bGxsbGhpMJpPdbq+vr6+qqqqrq2tqaqqvr8f16upqm83mdrsvXLiAK1VVVaWlpQ6Hw2w2V1dXNzY21l1fq/+t2Wy2xsbGo0ePItW91Wo9ffq0xWKpbaZVN9OgotTW1tbU1NTX10MfaGhouD5xbt2ohoYGg8GAiAgoWvA4wkmLw+FA6iTK+2/iBae3UgRuDwKU7t8e3OlTKQJA4CbpPmzk2dnZMPC//PLLoMvx8fEKhSItLQ1GbrFY/MUXXxQUFKjV6h07dowYMQJseMuWLQhdBb+/9957tVptTk7O1KlTMU96erper0diH5lM9qc//UkkEv31r39Vq9UHDx6EMqDyNeT8aY7uQy1BYDFk3r9//7Zt2yBenz59EhIS4FI/ePBgPPqdd95Rq9VFRUUKheKpp55CvOYLL7yQlJSUn58/Z84ckUgUEhIyc+ZMua8lJSVFRkZKJJLw8PADBw7k5ORgZH5+/qZNm6BIdOjQYe3atYBr0qRJyKT+0UcfyWQy4llErfu38bcJSzxSZ7rdbqPReP78eYPBcOrUqaqqKrjrwEZeW1tbV1dXVlZmtVpLSkouXbpUW1tbXl5+8eLFGl87depUdXV1RUVFWVnZxYsXjUbjhQsXmmHj1VV+zX9MXV1dTU2NxWI5e/bsxYsXGxoaoF34Df8/3Ypm2oULF8rKyip9rby8vKysrKKioqqqyv9ZgdCHEgXNiignRqMRzkXI3E8Yv38an9v4ztBHUwQoAteDAKX714MSHUMRaC0Ebp7ua7XarKys5OTkQ4cO/fnPf5ZIJGKxWC6X5+XlRUZGwtT93nvvgcenpqbOmDEDfPqDDz7IzMwsLi5WKBRTpkxBdCyy1jzxxBMcDofL5b711ltarVYmkykUio8++ghuMDExMc2V2WqO7mdnZ6empiJ6GFG2u3btgkm+W7dun3zySWFhIZzsR40aBR1gz549WVlZSqUSHvlhYWGvvvoqccR/9NFH4f+za9cupVIpl8sVCgXEe+yxx6AAZGdnI9nOyJEjJRIJn8//8MMPkYZfq9V26dKFz+dHRkaq1erk5OQsX6PW/dZ60a+al2R4RAeZN+vq6lADq7Gxsaqqqr6+vqampqqqyseTK+GaX1paeunSpYu+VtpMu9TK7fz583V1dZWVlWVlZZcuXTp16tTp06ch0q+//lpSUlJeXn7hwoWzZ89e8LWzzbRWFrPZ6YFnaWlpRUVFbW3tpUuXzp49W1lZWV1dXVpaeu7cuaamJsBuNBrr6ur8rf4IpG7OwI/URlftNr1AEaAI3GYEKN2/zRtAH3+XI3CTdF+pVOp0OlTVLSwsBLkfNGjQjz/++MgjjyBNzZo1a5AoU6PRxMXFicViHo/31FNPJSYmajSa/fv36/X6xx9/HPZ+lUql0+liYmIw1bvvvqvxJbnPz88fO3asSCTicDhJSUk3Svd1Op1SqczOzs7IyEhPT8/JyXnllVcEAgGXy3377bdhbi8qKsrPz4d3flBQUFFRUUJCgkwmEwgEYrG4T58+cXFxKCim1+v79+8Pco/sPUqlEtoIn8+PiYkhBw6ZmZkrV64MDw9nGGbKlCkQG1mGAE50dHRGRgYy/+j1ekr3b/Hv0el0kopaNTU1sO7Dg7ypqamhoaGiogKUHhT/woUL58+fP3fuHPjzmWbaqVZup0+fPn/+/MmTJ3/55ZfTp0+fOHHiyJEjx44dO3Xq1K+/tRMnTvzwww9Hjx49fPjwb9eu/G8ri9ns9D/++OPx48d//vnnkydPlvzWzp07d+zYMcQ0V1RUnDlz5vz587W1tTabjTB+hBfDw+d3GT+l+7f4F0QfRxG4TgQo3b9OoOgwikCrIHCTdJ/UiEVUK8z2L7/88ttvv43CtP/4xz+gDGRlZWVnZ8fGxnK53KCgoO3bt8fFxcXHxx86dCg+Ph4ke8SIEWDeK1aswO2bN28GRQbtFggEQ4YMOXr06I3SfSTfhMeRQqFITk7u1KkTh8Pp2bOnRqP5+uuvU1NTMzMz5XI5qiMNGDAA8cHPPvss3HiWL1/+9ddfIwYgMzMzIiKCYZioqCi5XI60Py+++CKOBTZt2qRWq7VaLR4KN56IiIjdu3fjQXq9fvv27SKRCDoAThuQFZTS/VZ5y6+a1OVykWvwzjcYDCTyBK+xUCjEhsLnisfjcblccgVjAuEzKCgoNDRUIBDguAlKLALH+Xw+x9cCQU5/GXi+JhQK8XPj8/kQvkePHv/5z3+gU5X52qlTp86ePVtdXV1TU1NXV3d5mwjjdzqdVyfmp3SfvNi0QxEIKAQo3Q+o7aDC3HUI3CTdRwpOUNV169YxDMPlcl944YVgX+vXr19iYmJqaiopZAuWHBwcrFarkdpy9+7dHTt2ZBgmPDx82bJlyK25efNmhOquWLECHH3+/PmhoaGXh3300UeIDEaJXMTpwp0mLS2tOWceHBEoFIpMX1u8eDHIx8KFC5VKZUZGBrL+b9myBSz8pZdeSktLk8vlDMN07NixW7dusOvjYnp6Om6fNGkS8ntmZmZGR0eDuyQmJqrV6pycHLVavW3bNoycPn16amoqagbr9fo33ngD11evXq1UKgsLC1Gml9L9W/ML9C+VBVv+yZMn+Xy+wNewNWD2pDguLl7xCdp69SdIdut9CgQCf8UDfXwGBwcjnB0/Rnwi2dTVn60n4bVnhoT+cpLI9SlTphw+fPiHH3746aefSkpKYOMvKysrLy+HZ7/BYDCbzfDjd7lcV3jwU7p/a35B9CkUgRtFgNL9G0WMjqcItCQCN0n3YcaGq8wTTzwB/3uStWbHjh1woYETPNJ0ikSi0aNHr1y5curUqYiL5XK5HTp0eOmll1JTU5W+FhcXxzCMSCR6+eWXUXa3d+/eEokkKirq4MGDf8CZJzMzMy0tTaVS6fX6vLy8Pn36gBslJycrFAqpVFpUVKRUKhctWhQWFiYUClesWKHVamHulUgkc+fOzcvLS0pKSktLS09P37JlC1jU4sWLUQw4IyMD2khYWJhSqVSpVPn5+VqtFk5KPB5v3759qDmgVquzs7OfeOIJFO798ssvVSoVyTRK6X5LvtzNz4Vs+jZfa2pqQkksUHmYmQmtDwoK8ifW5Do6VxN9XLk22W2Rby/ndMIJGMkAC/83f01AKBSKRKIrVuS/hBaR5A9MIhKJhEIhkR/nJxBs7Nixhw4dOnLkSHFx8YkTJy762rlz5y5cuFBaWgrGbzQakQUVYbv+6VMp3W/+raffUARuJwKU7t9O9OmzKQI3SfdVKpVarUbem549e+Lfb0KPNmzYoNPpDhw4sH///sLCwrfeeis4OBjf8ni8du3aSSQShmE6d+68bNmy5OTk/Pz8+Ph4BAOAuzzxxBPp6el79+6F0X3JkiWZmZl/wLqfk5ODQwaNLxIAcQJdu3ZVqVSXy+ii+m9eXh5YOM4Q8vLyxo8fDwPk9u3b4Y6v1+tVKhU8fEQi0YcffpiXl6fVavfu3Yt1DR48GMcFOTk5CoUiIiIiODg4LCxMLpdnZWXl5+dnZGRkZ2dHR0czDNOlSxeU1kLG/YyMDEr3b+VP0mw2o6KTx9dg2sc7KRaL0YF1vzlaf7W9HFf8KXXr9SUSCY/Hk0gkUDXJgwQCQbt27a7B8snI294RiUQRERH+vL9Lly75+fnHjx8/fPjwcZ9//+HDh0+dOkXM/NXV1Q0NDUjWidScUN7w5nh97Va+RfRZFAGKwPUgQOn+9aBEx1AEWguBm6f7Op0O/jYoIBUSEjJx4sSQkBCJRNKtWzckw9m9e3dRUdErr7zCMIxEIomIiAgNDe3atev48eO3bt2ampqqUqmys7NzcnLS0tJA9xHJevkEQKlUTps2jWGYe+65R6FQpKam5uXl3ajvPo4XUJBr165dODp49tln4caD2l6FhYU9evSA0TQlJUWj0XTr1o1hmE6dOuEQIC8vD4V1o6KiGIaJjIxMTExEsAEcmRiGeeWVV9LT07VarVqtxhkFh8MZPXp0WlpadnZ2QUFBRkZGampqeHg4n88fMmQIjkfUarXG1yjdb60X/ap53W63w+FA9VaTyVRRUYHYay6XKxKJpk2btmXLltWrV3/wwQebNm1a62vrrmprmmmrW7mtX7/+zTff3Lhx46pVq9auXfvaa6917949JCQEvHns2LGrV69+9913N27cuHXr1nXr1jUj5ppWFrPZ6detW7d169aNGze+++67q1evHjt2LH53HTp06NOnD/LYFhQUfO1rx44d+/m3oN6LFy9WVlbCib+pqclutzscDn8Pfkr3r3rT6QWKQEAgQOl+QGwDFeKuReAm6b5Go8nJyUF2fOSf6dOnT1pa2vPPP8/lcvl8fnx8fHp6enFx8WW+S/5RT0tLQ/J7BPiqfQ2JemD/lkqlXbp0YRhm1qxZOp0Ozv1TpkxBrn2ZTHajdF+n0+n1ep1OJ5fLL5MMHB2sWbPm0KFDKSkpcLw5ePAgbLq9evXKzMzMyMiAVtCrV6/Dhw8nJycXFhZihqCgoLCwsKioKJ1Op9FoZDLZggULYAZes2YNwpfT0tJ27twJC/Frr72GYXK5XKfT7dixA2rP+PHjoSmlpaVpfY3S/Vv2S7Tb7S6Xy2KxeDye+vr6kpISDoeDSskMw6xcufLrr79OT09XqVQ4rsn4reF1xSd27epP/zGt0S8sLLxcjQ6pnLKzs3ft2jVgwADi3vPMM8/gEEmtViNJLkJWrv5sDdmuZ86UlBQEwyDEZfLkyYjVYRime/fuWVlZCQkJ2dnZBw4cyMzMPHbs2E8//YQcROfPny8vL6+trW1sbDQajTabjdJ9ljaKQFtAgNL9trBLVMY7F4GbpPvFxcVxcXE5OTkbN26EY8CCBQvgtwOuPGfOnIKCAq1Wq9PpoqKi4JMD15qsrKy8vDzwexS7TU9Pl8vlOTk5l+tqjRw5ksPhPPnkk2vXrg0LC2MYJjU1VS6XI4/NjdL9lJQUhUKhUqny8vImTpwIzWTjxo15eXkKhUKn06WkpOzZs4fL5QoEgqeeekqr1X722Wcg608//bRKpcrMzERE8pIlS+69916GYcaOHYu0PHq9/oEHHggJCWEYZseOHXq9PjMzU6lULlu2DF5D69evT0lJwbmEXC6fMmUKaOUbb7xBUv3odDpQH1pm69b82jweD9JuGo3G6urqyspKEtV6mXpu3LiRHLyoA69lZGQgYEahUMhkMqlU2r17dxJV/Oyzz+K9gnaKs6aAWgRi1omQ8I5DEEL37t0TExOlUimC17Ozs2HjP3r06K+//opKAmVlZXDpQeVdp9Pp789za94f+hSKAEXghhCgdP+G4KKDKQItjMBN0n0wYK1WO3PmTND9LVu2qNXqgoIC5NaMjo5WqVQZGRmZmZlISSkQCA4ePFhYWIgU+CqVCubwvLy8rKysxMREpVKZk5Pzt7/9jWGYQYMGTZkyBdwa82g0GtgFiUlVrVb/18w8RUVFOTk5YO0vvPBCaGgoj8dbvnx5SkoKeLxOp1u2bBn4/bRp03744YfVq1czDBMaGvrss88mJiYqFIoDBw7k5ub27NkTqTljYmJApLRaLbyALgusUCigilxe4/jx48EgV65cefDgQSgbGRkZiAdAhEBWVpZarZbL5TKZjPrut/DLfc3p3G631Wq1WCxGoxEVndou3U9JSblj6H7Xrl2/+uqrhIQEhUKBehRFRUXFxcWHDx/++eefS0pKzp8/X1paWl1dXV9fT+n+Nd9x+iVFIIAQoHQ/gDaDinIXInCTdF8mk+Xn56tUqokTJ+I4XiqVymSy+Pj4Bx54APxp+/btMOQ/8sgjkZGRDMMsXboUqSqhLWRmZmb5Wl5eHjJd5ufnI6dNly5dkOdnw4YNGRkZINPIc39DdD8jIyM3NxexAZg5IiJi27ZtSIlz+TBBp9Pdf//90Fg2bdq0b9++9957D57QkyZN+vHHH/fs2ZOTk/PRRx+FhYXxeLzOnTuvWbMGdEStVsOw2q9fv6+//johISEpKUmtVs+YMaNz586XXSw2bNiQlZWl1+uVSmVMTExY2P/H3nsHRlFtD/yzu9lNSIJUIYANkEAIXUCQR9Hn0ycqIO0Jyld5oNKLdBKSUEKHAAkQaur23dmpOzPbUwGBh0pREUUB6ZESICFtf7jn5/zyAzYmMSGFe/7YTGZmZ+6cuTP7ueee8gy4A5lMJqPRKF4XBOwi6/6TeQwLCwshBefNmzcvX74MvvtSj9R+6z5FUWazGYDYYDDUG9zHMOyFF17Ys2fP/v37tR6BYPr09PRDhw4dP378hx9++Pnnn8+dOwcpeiA/z/3795F1/8k8NegsSAOV1gDC/UqrDn0RaaAKNPA3cZ/3iFqtBlt+y5YtIdCWJMnIyMimTZtKJJIpU6bYbDaz2Tx37lwYAHz00UdiZCrLsoIgJCUlgW0bPH9wHIfwXPDaf/nll8EbR6/Xgwd1RZ15wG2AJEmj0RgWFgZJMP/5z38mJCTY7XadTifG2mIYBrEB27Ztg9b+85//PHjwIMMwgiC0adPmmWeeAfP8tm3bICQgMjIS0vI8CD5OS0v76quvIGvn1KlTMQwLDAxcsmTJ/v37jxw5Eh8f37JlSxgb+Pn5CYKgVqth0gAGA8h3vwr6dDkOUVJSAvV0c3Nzb9y4cenSpd9++60OWfdL475er9doNO3atRNnjequMw/k6YqLi9u+fXtycnJKSorBYDCbzQ6HIzs7+9ixY999992PP/74yy+/XLx48dq1a7m5uXfv3s3Pz38o+345ugDaBWkAaeCJagDh/hNVNzoZ0sBDGvibuA+ONJB13s/P77333rNYLED8O3bskEgkPj4+r732GsdxycnJu3btAvO5QqH45JNP4uPjMzIy9u7dO3r06ClTppAkqdPpsrOzBUHQarVLly6VyWSQYXDGjBmQ7oamaZZlcRyvKO47HA6KonAc1+v18fHxTZs2lclkjRo1SkxM5Hl+woQJcrm8YcOG4H8P5M3zfNOmTf38/AICAmJjY8EZycfH5/333wfffXCMpml67dq1Uqk0MDCwWbNmO3bsIAgiKysrLS0NxhVQfFej0aSmpsrl8tatW7///vsSieSFF144ePCgTqeDymIwjEG4/1D/rKZ/IS1Pbm7u7du3f//994sXL164cKEO4T5JkizLmkwmHMd1Ol29wX2pVBoUFLTJI2DjV6vVkMQ2LS3tyJEjJ06cAAP/b7/9dvXqVUjAn5eXV1hYWDr7fjV1G3RYpAGkgUprAOF+pVWHvog0UAUa+Ju4T1GUwWDYt28fcPzkyZOhgK5Go4FCs7BerVYLgpCVlTVy5EhIuSOVShUKhRhc+M4770DuGjGt5/r168GXJjAwMDU1lSCItLQ0l8vFcZzoHw/+POXx3YepA0ijmZiY2KNHDzCFQm7yRo0avfbaa6NGjWrQoEGzZs0gK6hKpXrrrbdgAAAlP5s2bTplyhSYo8AwLCMjQ6lUgj8PXBSkH23UqBGE/z4IRQBHfwzDmjRpAo4KD6oC9+vXD8OwDh06OBwOSMGZkpJC07TT6US4XwV9uhyHKCwszM/Pv3379q1bt3Jycn777bfz58/XXdxXq9Vt27aFKSYMw+qudV8ul7ds2XLt2rWrV6/esWPH7t27U1JSoBz1gyD7gwcPfvPNN999992ZM2cgWvfmzZu3b9++d+8ewv1y9Hq0C9JATWoA4X5Nah+dG2ngb+K+y+UyGo3h4eEymaxx48bTp08nCMLlcmk0mvT09OnTp0NSnQULFhgMBvD8GT9+POTUB9QOCAjo1q3bwoULIfclWPFtNtvnn38O+PLxxx9zHrHb7ZC3XowPLj/uW61WkiTNZrPdbj9y5MiDZP+hoaEwFMEw7KOPPkpJSYGY4N69e7MsSxBEZmZmQkJCq1atMAwD3J82bRpBEB9//DGE6kKWQzCvzp49u0GDBpDwB8Mws9m8d+9eq9W6bds2uFgMw9q1axcbG6tWqyFnYp8+fZKTk+GiTCYTDJMQ7j+ZR7KwsDAvL+/27ds3b968fv36hQsXzp07V4dwnyAIhmFwHDcajTqdrt7gvq+vb8uWLaOjo1esWBEbGxsfH5+UlKTRaCCvKPjznDx58scffwT3/Rs3bgDuFxQUIOv+k3l20FmQBiqnAYT7ldMb+hbSQNVo4G/iPnjem0wmgiCg4JTZU2EqIyMDx3GwxENMIZTCFYvLRkVFrVq1Ki4uDhzl7XY7eAGRJAmpOSGNT0BAgFKpZBgGat+yLKvX6y0WS0WdeSBrIUVRkA3z0KFDe/bsSUhICAsLS09P5zjOarU6HA673Q4ZwfV6PSTjdzqdO3fu/OKLLw4ePMjzfHZ2tkqlyszMTEpKMpvNUL0LKmc5HI758+fHxcVBg8HX32634zi+YcOG6OhoHMe1Wi3P8xaLBdIEER6B9KMOh0MQBIT7VdOt/+ooBQUFeXl5t27dunnz5rVr186fP193cV+r1arVajHQvE5b9xs0aBAUFLRq1aqoqKitW7fGx8cnJiaq1WqSJAVByMzMPHr06IkTJ06fPi3iPtRFRrk4/6rLo+1IAzWsAYT7NXwD0Omfcg38TdxnqkjAt16tVoMv++LFiyHPz8cff7xr1y6otmM0Gnmedzgc4MEPpn0YXfxlIs4qauaTOAzKzOOufiksLLxz505eXl5OTg447v/0008SiUTqkfJn5jGbzYIg2O12juPAsQ1yzj6BjkKSJO6R1NRUpVLZoUOHSjjz8DzvdDqVSuXBgwe1Wm1mZibUk65o+6GGHcdxMPPGsmzZRygj736bNm0WLVq0YsWK1atXb926dd++fSqVCowCLpfr8OHD3377rYj7169fv3HjRm5uLkTrIgO/GwnSQG3VAML92npnULueDg3UEtwHaz3P82az+UGcXsOGDeVyedu2bRMTE61Wa1ZWFtj1WZblOM5oNFbUus/UHUG4/wSevKrCfQhKgdQxJEmmpaUB9D+B7lYluE+SJEEQer2eIAgof+HJiPtHLYgKCbjbVSHuL1++PDo6esuWLXv37lUqlQaDAap5fPXVVwj33UiQBuqgBhDu18GbhppcjzRQS3DfbDarVCqbzbZjx45WrVoFBAQ0btx49erVGRkZEJ4L9XQhQz+y7oNPVHp6OuQq+emnnyByMScnByydxX9KiUfqUYetmkupKtwH077BYLBYLAaDIT09HSagmOqXKsH99PR0kiR5ntfr9VarFcpTQEXbCl2BONUGCXb/jnW/devWCxcuXL58+apVq2JiYvbs2ZOamqrX60vj/g8//CCm3kfW/ap5JNBRkAaqWQMI96tZwejwSANlaqCW4D5BEHa7feHChXK5vFWrVlKp9MMPP7TZbBzHgcs7QRA8z0MFXEAKkTDKk5mHqTuCrPtldtiq2VhVuA+F0jiOs9lsdrvdaDTiOE6S5BPoblWC+4IgKJVKHMcFQYDEsmazuRLtFykfFv7y8r0580De/YULF0ZFRa1cuXLz5s27d+9OTk6GghtOp/PQoUPffPPNDz/88Ouvv166dAk581TN84COgjRQ/RpAuF/9OkZnQBrwroFagvs6ne7tt9/GMAwy+cyYMePYsWMQs4vjOLA+uPHodLpKJOJk6o4g3PfeW6tsS1XhPsSXOxyOBQsWbNy4cd26dQ6HA5LJVnePqxLct1qtFotFEIRjx46Fh4cvXrx406ZNaWlpVdL4Mmz8ZeB+q1atFixYEBkZuWLFio0bN0K0rk6ng0y1gPvff/89wv0qexjQgZAGnogGEO4/ETWjkyANeNFALcF9p9M5dOjQFi1aNGjQICI1Q8iHAAAgAElEQVQiQqVSQXkdCAEUfXjAybgSmXmYuiMI97101apcXVW4T5IkTdOrV6/GMMzf33/s2LFWq7USzjCV6J5VgvsqlepB/TiCIFJSUvz8/BQKxRtvvKHVaivaHigSJ5aKg2oSlcb9+fPnR0RELF++fMOGDTt27Ni/f79Op6MoClLvf/31199//z0U1kXW/ap8KtCxkAaqUwMI96tTu+jYSAN/pYFagvs0Te/du/fNN9+MiYmxWq0sy1osFpPJZDabIQqQpmnwMbBYLE6nE4XqWiwW5Lv/V73b6/aqwn2KotLS0sTKa1FRUZmZmTiOM9UvVYL7er3eZrMJghAZGQllKCZPnpyRkVHR5lN/CtSz+/u4v2zZsqioqHXr1m3fvn3fvn1arbY07n/33XcI9712brQBaaBWagDhfq28LahRT40Gagnug98wx3F2j+A4zvO83W6HqFyapsElGoz9UJQK+e4j3K/0Y1pVuG+z2SwWy9tvv924cWMMw3bu3AkzUUz1S5XgPoyiSZIcNWoUTFCEhYVVYrhCeoSiKNHAX7YTfxnOPEFBQfPnz1+2bFlkZOS6devi4uL27t2LcL/SXR19EWmglmgA4X4tuRGoGU+pBh7C/atXr54/f/706dNdunSRSCQYhslkslGjRonmutIxeaLpXUzDJy6U3q06lku3h6ZpSCNoMBhwHFcqlcOHDxcr5nbu3Bl8qR9tRg22/9HGwBqe59esWSM2HsOwOXPmLF68ODIycvXq1TExMbt27UpOTsZx3Gq1ZmZmQhryM2fOnD9/HiIXb9++nZeX92dinmJPYp6Sp7Rze7/sgoKCO3fu5ObmXrt27cqVK7/++uupU6dkMpkn7b60/Hn3CYJ4EGHyyiuvYBimUCiAd3meNxqNDofDYrHQNA3+/SzLZmVl0TSdmJiYmZnpdDqhehTP81CRjWVZtVoNtdtomobkS2az2WazQQ1dSP6TmpoKvvUVwn2SJK0egSkyp9Npt9sJguA4zmAw2O32/v37KxQKDMNMJhNFUYIgkCRpMBgyMjKUSiXY7OFCoHYetNlsNrtcriFDhjzzzDPNmzeHSTkoqAcltAWPQP5cm81G07TRaIR8nSaTieM4mqY5jhs7dqzY54OCgubNmyfi/qPW/WPHjn333Xdnz569ePEicubx3sfRFqSB2qUBhPu1636g1jxtGign7ot4KtrUy14Q96+mhdK4D5l5cBw3GAxGo1HEfRiudO7cWSz9U9oFqGbb700tHMeBI7hIP3PmzFm0aJGI+/Hx8cnJyUaj0WKxINyv9NNaVbjPsiyO440bN5bL5Z07d87KygI0pyiKIAggZpVKBcHlOp2O53lAZ47jlEolzF9lZmZCCTmxf8IUgdPpFASBpmmr1QpeQxRFwQSX2OdxHE8tR5ktqHhNUZTZbIYBBnjfwKQZRVGtW7f28fFp3rw5RVFWq9VgMEAiLLgiaCeO43q9PjU11W63Q30uGN40adLE39+/S5cuDMPgOA4XaLVaYUCi0+k4jrNYLBqNRqvVWiwWh8NRtnUf4X6lOzb6ItJArdUAwv1ae2tQw54KDZQT973BsTdsre71gPvA8SL6GAwGvV6fkpIC1n3A/ZCQEJGiHr2K6m5nJY4fHR0tsj5Y9xctWhQREREdHR0TExMfH5+UlAS4n5GRgaz7lXtKqwr3GYbZsWMHhmHNmjUbMWKE3W6HHDJQbRdiykmS5DiO53mTyfTAFu5yufR6PcdxgiAcPXoUakixLOt0OtPT06EzMwwDhnD4LmT5BKM75KcS+3w5cR8QHGJnjUYjNDItLU0QhPT0dBzHpdI/5jT69+8PdO5wOGw2m1arNRqNer0eRikOhwMK3rlcLqVSKQiCwWDYunUrhmF+fn4ffvghOP1zHEeSpN1uN5lMaWlpNpvNarUKggA2fhhsINyvXL9F30IaqLsaQLhfd+8danl90EA5cR+8dERcFim2dEaO0sviDtW0wHgEDi468+j1eq1Wm5ycPGzYMAzDgGBCQkIYhqlt7femFoqiVq5cWRr3Z8+evXDhQsD9zZs379y5MykpCeo6Idyv9BNYVbhvMpmWLFmCYVhAQMCcOXOSkpLAkG+xWKxWK4A1x3EUReE47nQ6YRhgs9lMJhN4oLEsm56e7nK5NBoNZPG3ecRsNhuNRoZhwJ2GYZjk5OQDBw6QJAnUXiFnHng2CYIwmUw8z7tcLkEQ9Hp9okfi4uKgy40fP16n0wmCQFEUSZI6nc5qtR44cIDjOJVKxfM8zA+AEw5N0waDYeLEiTKZrFGjRl9++SXDMCqViqZprVbL8zxBENBR4byZmZkOh8NgMNA0jXC/0l0XfRFpoI5qAOF+Hb1xqNn1RAPlxH0AfYBUMD3SNA0eC8Tj5M9EHdX1lyRJcCQALgE3A61Wq1KpEhMTAfdlMhmGYSEhIYAXoktPbWi/N70QBLF8+XIR9yUSyezZsxcsWLBs2bJVq1YB7icmJhoMBrDLIut+5Z7DqsJ9lmVHjRoFPQ0yxB84cECv18+bN2/UqFHjxo1bt24dBFpYrVaO4xISEoYOHdqnT5/27dsvWLAgLi7uyJEjarU6Pj5+6NCho0ePDgsLA8M/wzAURZlMprVr144ZM2bEiBF79+6FmHUYBlQI9zMyMkwmk1qt5nk+PT1drVbPnz//vffeGzRoUL9+/d59913ocmFhYbCDTqfLzMzMzs7W6XQbN24cPXp0aGho+/bt+/btO3z48DVr1lit1kmTJn3xxRdBQUEQt/D222+PGDFi1KhRW7ZsAacdhmGOHj2alJQ0adKk3r17v/jii8HBwW+99dbUqVMR7leu36JvIQ3UXQ0g3K+79w61vD5ooJy4z3gEEJ8kSTDXmUwm3IuYqllwHBfPAP4GGo1GpVKlpqbu37///fffxzDMx8dHIpF06tSJoqja1n6x8Q8t4DgeFRX1EO5DopJVq1Zt2rRpx44diYmJ4F+Rnp6OcL9yD2FV4f4D753OnTvD/bJarTabLTs7OzIyslmzZg/CXrt3775z506bzXbw4EEcxydPntyoUSNIgAP98/nnn09MTLRYLBEREeASM3z4cJPJRJKk0WikaVqj0XTr1i0wMBDDMIIgEhMT09LSVCpVRZ15nE4nwzA8z5vN5qioqNDQUGizj48PnBeQPS4uDqpupaamGo3G1atXBwcHg1NcgwYNxG753//+d9euXeKFwPqAgIAHIc5yuXz+/PkOh8PpdGo0mn//+9/+/v4YhsElwA4SiQThfuX6LfoW0kDd1QDC/bp771DL64MGyon7YEQHysdx3Gg0Gjxi9CKwtfo+9Xq9eHCdTqdWq1NTU1NSUpKTk/ft2/co7te29ouNf3RBzICOYZhEIpk1a9a8efPCw8NXrlwJuJ+QkAC4n5aWhnC/cg9hVeE+x3FQB7pjx452u93lcq1bt653794Yhr300ktffvmlxWLJzs5OTk4ePXq0RCKRSqV9+vQZMWLEkCFDgH2nTZvGMMy+ffvg3+HDh0OlW7PZ7HA49u7d26BBA5lM1rt376ysLJIkv/7660o485hMJofDwfN8WFjYiy++CIg/ePDgoUOHvvrqq8DrzZs312g0LMtCrp6oqKg+ffoA0/fv33/MmDE9e/YEpl+5cmVcXFxISEj79u0VCkXjxo2bNWv26quvdu/evXfv3uvXrz906FBsbOyHH37o4+Mjl8s7dOgwcuTI999/PygoSKFQtGvXDuF+5fot+hbSQN3VAML9unvvUMvrgwbKifuiOR9AX6/X63Q6rVb7KK3CGl01i9YjcBKNRqNUKpOTkxMTE5OSkkTcl8vlYN0vPR1RS9rvTT16vR4MvcD6CPer6RmrKtxXq9Uyj4waNUqr1er1euB4DMOWLFkCNXc5jps7dy4k5h80aBDLsg6Hw2g0wpp+/fqBmw3Y+9955x1wNiNJUhCEL7/8EpLhbt261Wg0sixLkqTJZKqodZ8kybS0tLi4OLDrBwcHR0dHu1wumqZ37NjRvHlzDMPatm0LZQQIgoiOjn7uuecwDAsODt6/f39WVpZSqRw6dCjY6VUqFUT0Ll26FOYrxo0bl5qa6nK5UlJSGIZxOBzgICSXy+fNm6fRaMxm886dO8WdEe5XU8dGh0UaqLUaQLhfa28NatjTooHi4uK8vLxbt27l5ORcvHjx0qVLp0+f7t27N0z0SySSoUOHAsTrPQKgr9VqNRqN2oukVrOoVCqlR0SjfpJH9u3bt2XLliFDhoAHwgMXiB49eqjVam8th4M8+lnNzU999IywRq/Xh4eHl3afmDp16qJFi5YuXbp8+fINGzbExcVBkVGz2ex0Og8dOvTNN9/8+OOP586du3TpUk5OTm5ubn5+fkFBQVFRUUnJ/5dxv6SkpLi42I3Eo4GK4j4EilgsFsitCRnoNRpNVFSUv7+/j4/P3LlzeZ7/9NNPwVI+fvz4tLS0xMREcMEHdO7QoQMcgWVZl8v10ksvYRjWrVs3KCCNYViTJk1eeuklyHFpMBg4jmvXrh2GYe3bt6coymKxUBSl0WgguU2FfPdVKpXD4Xj99deB7Ldu3WoymQRBcDqdS5Ysadq0KYZhU6ZMgeZRFNWsWTNfX9+WLVsajUaNRkOSpMPhePnllx+UEmvZsiXLsjzPJyUlLViwALx0Zs6cabFYwNcoPT192rRpoIdJkyYZDAabzWY2myMjI2Em5IsvvkC4jx5EpIGnTQMI95+2O46ut9ZpoDTuX7p06fz58z/88MMrr7wCmW0wDOvVq9cYj4z2yKhRo0b+KR94keHVLCM8Ip5kWCl59913wV0BoDkoKGjixImjR48e5RFoOLQaDvLYT/HI1bTw2JOOGDFi3LhxgwYNAlTy8/Pz8fGZP3/+8uXLAffXr18fGxtbBu5fv34d4X55HrBK4D4wLniFQfJ7iqJEvt+6deumTZugUtXgwYO1Wi3wNMMwc+bM8fX1BXs/5NqHXD2dO3eWSCTvvfceVM565plnZDJZ+/btoYJsenr6hg0bIAZg4sSJZrM5LS0NclxCav8K4T7HccuXL3/22WcxDHvzzTeNRqMgCBB/P3XqVHCvnzt3LiQOmjNnDjjtzJkzhyRJvV6flpa2a9cuGBX06NED7PcEQYwePRr66t69e61Wq8vlMpvNDyLmg4ODMQx77rnnkpOTOY7T6/UkSX7wwQew865duxDul6eXon2QBuqTBhDu16e7ia6lTmqguLj43r17N2/evH79+pUrV37++edTp0716tUL/EkwDGvcuLGklMBvdm37hAaKbZZIJDA7Ae0Ujf21rdne2uPr6+vn5+fv7z9lypQZM2Y8yPb4wJAMuL93717wsXY4HIcOHfr6669Pnz4N1v3r169DVV1k3S/7Uawo7oNrDcuyEPAKlRygGC3cwR07drRu3RpcYpKSkg4cOJCQkOB0OgmCAP+Z559/XhAEu93Osqzdbh8/fjyGYc8888yECROcHmnbti0MrXEcpygqKytrwIABEomkcePGSqUSCFsQBLHIboVw3+l0DhgwAJq6b98+QRAgbJcgiGHDhkkkEoVCER0dzbKsyWR64YUXMAx79tlnLRaL2WwG0z74mEkkko8//pggCKvVyvM82PsDAgLAyyg9Pd1sNk+fPh1ONHv2bDgRBAOIMc0wzEBVdcvuomgr0kA90wDC/Xp2Q9Hl1D0NFBUVibh/7dq106dPnzhxokePHpCsA365a/MnREBKPeLr6yuSvUKhgDDH2tz4h9omk8kkEom/vz/YgyUSycSJE6dOnbp48eLIyMi1a9du27Ztz549arWaYRi73X7w4EHA/V9//fXixYvXrl1DuF+eJ7CiuE9RlM1mg6zzsADUHhQUJJFIunkEw7AHtWlXrVqVmZkJ1muSJHfs2CGXyzEMGzZsmMlkoigqOTl5zJgxcH+fe+45tVoN5a5eeeUVDMNCQ0PhyGq1GvYZNmxYWloazCpwHOfwRNxW1Hdfr9c3btxYKpW+8MILVqsVSlBDyd7u3buDH1FSUpIgCCtWrIA+OWPGDJvNBpMARqNx/vz5MJbesGED5A56kEUK9oRKduDvJwgCjFtatGghCIJWq4VZkbS0tEaNGvn7+0MDkHW/PL0U7YM0UJ80gHC/Pt1NdC11UgOFhYV37969cePGNY+cPn36+PHjAAEAHA8hael/AbIf/Sw1GVCNi3BeT6ikzMcjpdsm4r44ACi9FZYfbTmsqcZGew7t7bzQKplMBm4hvr6+n3/++YwZM6Cw7po1a7Zu3bp7924oZgQZHo8dO/bDDz+IuH/r1q179+4h637Zj2IlcN9utxMEwfO8iPt6vR7DMPCGB6/0YcOGwT5Wq9XpdJIkCV7sCoWiV69en376KZjYYd5p4MCBsbGxMF1gs9neeecdGGBDMdq5c+fCOCEuLo7neaiKxXEc7F9R3IdiDgEBAZMnT8ZxHApg8TzPsiy0H2IGrFbrG2+8AZ2QJEnI0y8IwoOMQCNGjID1Op2OYRiCICAXp1Qq/de//mW1WiGaH1bK5fJBgwZlZ2eLRccexDlAkp8333wzIyMD4X7Z/RNtRRqofxpAuF//7im6ojqggdJBnKVx/+rVqz/99NOJEycA94GkW7du3eFPCfZIxz+lkxf5c3t1/RVPCyeAVgUHB7dv375r167g8QzELJVKQ0NDxR3EBolHeOyCuFs1LTz2pJ06deratWubNm2gJLBUKm3QoMH06dNnzZq1cOHCZcuWrV69esuWLbt27VIqlRRFQcVTwP1ffvnlt99+u3r1KsL98jx+FcV9hmGsViu44/M8D4Xb1q1bB0QOHNyqVStfX1+bzQa+KwaDwWq1/utf/4KUO+C6A0DfqlWr4cOHJyYmajSaw4cPK5VKmqbHjx8PR2NZ9oFzf69evfz8/Dp37myxWIxGo8vlAtA3GAyV8N0fNWoU2OZ37tyZkpICXjcsyyqVSqgRNnDgwLS0NJIkGzVqJJFI2rVr53A49Ho9wzAWi8Vut7ds2VKhUPj6+rIsCy46S5cuhaxBkydPhkamp6dPmDBBLpdLpdLFixdbLBan0wlTIqtXrwYtTZo0CSJ3kTNPeToq2gdpoN5oAOF+vbmV6ELqkgZE3C8pKQHc//33369evXr58uVz586dPHkScB/DsAYNGgwZMoT5U8Br2Ww2cx5ha0jg7GazGTKfQHZCk8mUlJSUmJj4zjvvSCQSwI6ePXuq1WqxmWLLeY/AcR79FPevpoVHzwhreJ6PiIho2LAhsBGGYbNnzw4PD1+wYEF4ePjq1atjYmLi4+NTU1NJkrRYLAcOHPjf//73/fffi7h/8+bNu3fvIut+2U9jRXEfGNdkMkHuGrNHJk+e7O/vr1AoXnjhhUmTJsEtW7JkCc/zBEGo1WqO40JCQiD6JSQkpG/fvlOmTImMjBRd/3meh85pNBpnzJgBIbOCIOzatQuCNxYvXiwIguhExLIslNqtqHW/W7dugPUmk0mr1Yq4Hx0dDc2ePHmy1Wrds2cPhmG+vr7Dhg2D0QVJkna7XalUwqugR48egiCANoYPHw7f3bx5M8QbOJ3O/v37+/j4BAQEpKSkQEAzDI1GjhwJw+/Y2Fgcx5F1v+z+ibYiDdQ/DSDcr3/3FF1RHdBAadwH9AHcv3Tp0sWLF0+dOtW9e3fIzBMYGPjRRx/RHmEYBvBXhGamhoTjOJH1TSYTFNbV6XRJSUk4jkOZLWCR4OBgl8slUju0HFgfohUB3R76rO7Leuh04r8Mw4SHh0PLmzdvLpVKp0yZMnXqVMD96OjozZs3x8fHp6SkINz/O49ZRXEfug3gvsFgAJAVu1lSUhLHcRiGNWrU6K233oKSzwcPHtRqtZDNplOnTpBtMzU1FbzhIZUnwzAcx9ntdpvNFhkZCUSu1WoXLlyIYVizZs2sVqtOp7PZbKmpqXa7HeAbIoYrFKrbqlWrZs2a+fv7g2cOVO3leV7MmLlixQqaptetWwdzEbNmzaJpGtoMyTphGDB+/HibzQYVf8XQW5IktVptdna2yWQCb6VWrVrpdDpwQLLZbCzLtmjRAnr1gQMHCIJAuP93ei/6LtJAXdQAwv26eNdQm+u8BoqLi4H4S0pKSuP+xYsXz549e+rUKfG33MfHZ/To0UwtE3G8AdAP+KLX69VqdVJS0rBhw8AfBsOwkJCQWtb2sppD03R0dLRUKhXjDaZPnz579mzRmScmJgb8MUwmE8/zmZmZhw8fPnXq1M8//3z+/PkrV64g6767HFJR3Fer1RaLxWq1wiiLoiiDwdCxY0eZTNakSROIRh04cKCvr6+/v79arRYEwWg0kiQJ97Ffv36pqak2m83hcICPuyAIVqsVfPEJguA4DkpWKRSKhISEdu3aSSSSDz/8sIy+UiHch+z4HTt2dDqdOI5D1a0HMbvdunUDvtdoNHa7fcqUKQDlq1atomlaq9USBIHj+LvvvgszTgsXLnQ4HBqNxuFwYBgWEBDQpEkTi8UC8xWpqakwQfGPf/wDgB4CHsBxH4oMsCyLrPvl6KFoF6SB+qYBhPv17Y6i66kTGkC4z9RKKQ/ug3VfxP0jR44A7l+4cAHhfjmfvoriflpaGszA0DQNxnWlUhkYGCiVSgcOHGg2mw0Gw+zZs8GXfcWKFSzLpqWlGQwGiMpt3bp1dna20WjU6XRmszk7O9tutxsMBkEQ0tLSdDpdWloaOMzI5fJFixYBNO/YsaOMTloh3IfRb+/evVUqFcMw2dnZSUlJCQkJkDy0YcOGOI5zHPfxxx9LpVJfX985c+ZAtS+VSiUIgpjfNjk5maZpnudTUlJgYNC/f3+SJLOysgiCoCgqKCioYcOGbdq0UalUZrOZpuns7Ow33ngDQpkHDx7McRy4EiHf/XL2VbQb0kD90ADC/fpxH9FV1DENINxnaqV4w/1FixZBqC747qekpBAEIQhCZmYm4P7Zs2cvXLiAQnXL+RxWFPdZlk1KSiJJ0mq1gjP67t27wXL/ySef8DwPcSNSqVQmkw0aNAjcfmiabt++PYTn0jStUqlYljUajVCRSq/Xa7VaWCZJ8sCBAwDQkJGze/fuMHPlrZ9WCPfBuv/ss886PHk8IeXO1KlTZbI/UlqFhobCdYmVsNatW8dxHEEQ2dnZEOYLIxmGYYxGI7j3BAYGSiSS//u//+N5PjExkef59PR0uISQkJCMjAyDwZCVlRUTE4NhWMOGDX18fCZMmACTG8iZp5wdFe2GNFBvNIBwv97cSnQhdUkDCPeZWill4H5ERMSaNWu2bNkCobqA+1lZWUePHv3uu+/Onj2LMvOU/wmsKO4LgvDAMd1qtdrtdvDkCQsLg9jTiIgIcE83GAy9evUKDAxs2rQpOOjb7Xbw75fJZJ999hlFUWlpaTzP6zwCswQ0TTscDpVKxfP8888/Dy7yD6pcbd++veweWiHcDw4OhnmGrVu3QqBtQkICoDmGYUOHDrVYLAzDzJgxA3LvjhgxAqoE7N27F8MwCNxv3bo1QRAQQvDee+/B5b/zzjvgnAPzFZDWMygoSKlUCoLAMExISAiMeSQSydSpUyEtD8L98vdVtCfSQP3QAML9+nEf0VXUMQ0g3GdqpXjD/cWLF0dERKxduxYScYqZeUTch8w8qMxWOZ/DiuK+3W4H+zeY7QmC+PDDD319fRUKhUqlstvtOI5rNJq5c+eCFXzOnDk0TZMkuXLlSjHP0pgxY8LCwjZt2vTBBx906tRp9uzZNE0zDAO4rNPpOnToAE4vzz77rNVqBVz21k8rhPtvv/02wP3gwYOXL18+depUuVweGhoKyD5jxgwYe2zZsqVJkyZQG3jFihUQyNu7d2+w+nfp0sVkMmVnZ+t0uo8++ggOGBwcvHz58o0bN6anpxsMhqFDh8L6cePGrVy5snv37g0aNNi4cSPoat68eVBTDOF+OTsq2g1poN5oAOF+vbmV6ELqkgYQ7jO1UsrAfaiqC2W2lEolxIxmZ2eLiThRVd3yP4EVxX2oI6tWqw0GQ2ZmJkVRUHY6MDCQYRhIQcOyLBSZwjBs0KBBx44dg1DXd999F/LSBAQEQPYeAOLPP/8cPFvAOygjI6NNmzbPPvsshmHTpk0jSRIQ3Fs/rRDub9iwAYrdgl+NVCpt0aKFXq+HXEARERFmsxkS7Xft2hXmASB+ICgoSK1Wd+/e3cfH5+WXX8ZxXBAEjuPi4+PBQQjDsMDAQBgJ2O12sSgvXCOGYR999BHkFZXJZBEREQ/s/VqtFuF++fsq2hNpoH5oAOF+/biP6CrqmAYQ7jO1Urzh/pIlSx7CfSiz9RDuX79+/fbt2/n5+SjvftkPZEVx32w2Q/odyKVjNBrfeOONdu3avf/++2JeTrvdrtVqBw8ePGjQoOeffz4lJcVgMHz99dc4jk+YMAFSXfn5+TVv3rx79+4LFixwOByZmZkmk4ll2QeOQBRFNWnSxM/Pr02bNuDibzKZyuikFcJ9q9W6du3azp07y2SyZs2ajRs3juM4vV7fpUuXPn36rF+/3mw2p6en2+326OjokSNHymQyuVz+2muv8Tz/IGfoq6++Ghoa+s4779A0TRCEzWbjOG748OE9e/YE558JEyYkJCSQJOlwOGbMmNGiRQs/P79nn3120aJFFEWtWbOmbdu23bt3j42NhfyeCPfL7p9oK9JA/dMAwv36d0/RFdUBDSDcZ2qllI3769atE637YlXd//3vfz/88MOvv/568eLF69ev5+bmItz/yyeworjPsixJkpBSZs+ePS6XCzLNi5npMzIyAIWzsrIeQL/T6bR5JCUlJS0tTa/XcxxnsVgcDofJZILE8wRBkCQJKfxZlp0xY4ZUKg0ICBg/fjw4xoA/vbd+WiHch0q9NE0bjUae57VarU6nc7lcRqPRYDCYTCaz2UwQBE3Thw8fTkxMhJEGy7IEQcCEBsdxsJKiKI7jrJSjNKoAACAASURBVFYrRCykpKTYbDaxdBfEJ+h0uszMTJIkbTYbjAGSk5NhAgHHcavVinD/L7so2gFpoJ5poMZw/9q1a6DKgoICt9t9zyNutzs/P19cDz+cbrc7Ly+vFupdJDa3233nzp2ioqLi4uJa2E7UpFqoAbHMltvtLioqunfv3q1bt3Jycq5evXr+/PnTp0936dIFEo/IZLJRo0YxVSQcxwElQGJyl8sFGc0renixuK+Ydx+KbWm12uTkZKj3KZVKMQzr1KkTeEhX9BSP3R+qhx44cMBoNBIE4XQ6wdz72J0rsZKm6ZUrV4qOEBiGzZo1a/78+UuWLImKilq/fn1sbOzevXs1Gg3Lsg6H46uvvvrmm29Onz4NuA+Zee7evVv8p5R4xF2PpPR7r3Q3rtAlVhT3K3ErH/sVcAqiaZrjuMzMTLVaDQWh4+PjX3rpJQzDgoOD4ebu27fvsUcQV1YI98Vv1ZIFhPtuJEgDT5kGagz3RT2XRnlAf7fbffPmTZH7xT1r4UKRR2phw1CTarkGSnPSk8R9nU5nNBqVSiXHcSzLZmRkQJYSpoJSU7gPadfT0tKgCJHBYGAYpmwrbIWuzBvuL126dPny5YD7+/btAyJ0Op2A+z/++OO5c+fAd//WrVv37t37k/b/KKZW+l7X8m5ZoeaVlJTkeaSoqKhCX3S73TWF+w6Hw263G41GqLpFkqTT6XxQvatnz54wxouPj9dqtTCTUIWhuhXqhE9gZ4T7Fe2xaH+kgbqugZrH/fv37+fk5Ih6/P33391u961bt+7fv+92u0tKSnJzc8VhgLhb7VkoKSkpLCwsKiqqE+OT2qO3p7wlpRHwSeI+wzAOh4NlWZfLBTZOs9lcNtYwj5Oawn2e53Ec1+v1DofD5XLZ7XaLxaLVah/Xxsqs84b7YWFhy5cv37BhQ1xc3L59+yDY8SnEfRjGFBUVFRQU5OXl5efnV25Ks6ZwnyRJ8KIB73yHw6HVatu0aSMG77pcLgj8tVqtBEGU0YeQdR+8127cuAHz8EVFRaVfa24kSANIA7VJAzWJ+3l5ebm5uRRFDR48uEuXLr169erSpcusWbMKCwvBvac2KerhtsB7rbRZq7Cw8OrVqw/vh/5HGnicBkr/Lj5h3Lfb7QzDUBSl0WhSU1PBQM5UUGoK9ymKgrzpPM+r1erU1FSKoirY9rJ294b74eHhK1as2Lhx4/bt2/fv36/T6TiOc7lchw8f/vbbb3/88cfz589funQJQnWfEuu++08p/Rr8c91f/K0p3Hc6nTRNJycnQyXaKVOmvPTSS+B1BtV5tVqtw+HgOA5CWhnvgnAf4f5f9HK0GWmgNmmgJnEf9EAQBGQcgzLj7du3B/eegoIC4H632105A1K16vnmzZtw/KKiorNnz1brudDB658Gagr3k5OTWZaFkEeLxUJRFI7jmZmZTAWlpnBfq9XabDaCILKysgRBsFgsUO6qgs33urs33F+2bNmDDO6bNm3asWNHYmKiXq+HIqaA+2fOnDl//vzly5cB9/Py8uqrM09ubu69e/fy8/PFlzNMxrorKDWF+w+y3HAcl5WVxTDMrFmzIK0NhmFvv/02RNBCTAvP8zD35bWjMAzCfYT7Fez1aHekgZrUQI3hPrzu8/Pz1Wo15B6G1GN9+/YFHx7QSmFh4f379+/du1eTSvJy7tzc3DNnzmg0mhkzZqSnp9+6dcvLjmg10sDDGqgp3BcEwWazpaamduvWTeGR3r17G41GpoJSU7jPMMyBAwcYhiEIIiYmJjo6evbs2VVo4PeG+xEREatWrdq8efPOnTuTkpIMBoMgCBkZGUeOHDl+/PhPP/104cKFy5cv5+TkgGNDfcV9sR/fv39fDLsSF8Stf7lQU7hP07TVajUajQ6Hg6IoKKo1Y8YMjUaTnp5usVjAsY0kSaPRWHa/QriPcP8v+znaAWmg9migxnAfEpIUFhZqtVofHx8/Pz/wnhwwYEBRUdH169dBR5WYJn4yyl26dGmXLl3EDB4URUH2vSdzdnSWuq6BmsL9pKQkSM7ToUMH6L0NGzYsG2uYx0lN4b7FYmFZNjo6WqweKpfL09LSHtfGyqzzhvuRkZHR0dExMTHx8fFJSUlGo9FisTyFuH/gwAHRrlFYWFhQUFC5WOSawn2e56F4ltkjGzZsSEhIgBydu3btOnz4sEqlyszMhOBvp9NZRh9CuI9w340EaaDuaKDGcF/0z9Hr9SI0YxgG1v07d+6A+/7t27drpzNPr169MAyTSCQwHWw0GgsLC0szXN3pA6ilNaCB0l3lSfrug++yUqmEyp3wuXnzZqaCUlO4n5KSMmHChMaNG8NLA+qkQjLQCl7B43cvA/dXr14NuJ+cnGw0Gq1Wa2Zm5pEjR06cOAHW/StXrtR76z6GYRMnTjx69Ci8wEt3Y3dFpKZwX6/X22w28AGz2+2QYclsNiuVysOHDxsMBgB9nueB5h/fSzxrEe4j3K9Il0f7Ig3UsAZqDPdFiNdoNKVx/9VXX3W73ZCfB3Rz1yMwG3D37l1Yee/evdLOo5cuXSouLha3wiDhxo0bj9Vu6YODpQrmEB7rMgQrIU1Q6akGKOEutpxhGPGXD3aGU6MxwGNvAVopaqC4uLigoODevXu3b9++cePG5cuXz58/f+bMma5du0LvkslkY8aMYapICIIwmUyRkZGQYrx169YAcMA3kK4EUJ5lWZqmvZ22unFfEASapnEcB+cKyBs4c+bMli1bglq6deuGYRiE/dhsNm/trMT66OhoqHgA4/k5c+YsWLAgMjIScH/Xrl3JyclQq+gpxP0GDRqA2pcuXQov0tzcXLdH7t69C2/L/Pz80q9K2PrQZ2Fh4d27d+/cuXPt2rUrV6788ssvJ0+ehJBZUH50dDSUpgIzPOsRxiO0RyiPwHKNfBIEYfRIamqqUqns0KGDxCMYhv3nP//heZ5hGEEQoJIXtP/RzxppOU3TYvOgkMXo0aPhsZJIJK1bt16wYEFERAQUmti+fTukoqIoym63Hzx48NixY999993Zs2d/++2369evo8w8D/Vt9C/SQO3UQK3D/Y4dO4rJ7IuLiyGvM7A+VOa6e/futWvXCgoKIFg2Ly9PxHfI13np0iVR1zBLAMMA2Aq/Q7/88kteXl5plBe/AjmhIasmZNoRWR9+2OA43bt39/X1hfe7QqFISkq6efMmJKKGumAw5IDDilMZpc+ClpEGYND7JHEfAhA/+ugjDMN69OjRvn17qVT6+uuvP0g9TpIkTdMURQHKQ3ISxotUN+4DjkAYLkmSLMtSFBUWFoZhWIsWLSZNmrR9+3YAFD8/vyrMu88wDML9Mh5MDMN8fX3B9/K5557bvXs3vNxE24pI/2UnJi4P7jMMA9UhSlMy9EeRkr10z2pfTVGUyWQyGAxGozElJUX5/8f9sWPHQgfmeZ4gCPAgKn0V4nK1N9TLCUTcN5lMFEWNGTPmsbi/bt06EfdJkrTb7QcOHEC470aCNFAHNVDrcP+1115zu93wYxAdHf2Pf/yjR48eAwYM+PTTT91uN8uyb775JoZhTZo0CQoKmjZtmvjrAnb07Oxs2P/111/v2LFjcXFxRkYGuPmC3WLXrl3ibSouLr5x48bo0aMHDBjQt2/f7t279+vXjyAI4Pvr168PGjSoV69eAwYMCA4OHjBgANjve/bsGRwc3LRpU5lMBuYoDMM6dOgwePDgvn37Tpw4UawSACOKx04aiG1AC0+5Bp6wdd9sNttsts6dO/v4+Lz11lsDBw4MDAxs2bIlWPdJkhSt6WBfZ7xIdeM+cB4AH47jNE2bzeatW7e+8sor69atI0lSq9U2b94cGAXh/hN7iCCtAqi9VatWEomkV69eHMeVbkCJRwoLC/Pz82G59FZY/kvcX7VqFcMwopuWNxs/U0NCEATUf9Dr9cnJyampqS+//DKoBcOwsWPHwmiZ4ziTyWQ2m0W+f2ihhpr/xziKpmlBEEwmE03T//nPf2BS5SHr/rp16+Li4qCMdGncP3XqFLLuQ09Gn0gDdUUDtRH3i4qKgIE+//xzeAf5+Pg8GAY8iJaTy+UKhQLeqnK5HMOwN998E8z5wP0JCQniO9fPzy89Pb1p06awRiKRwNT/lClT3G636PkTGhoqHtPPz0+r1cIMQG5urlQqBedgDMNkMhmAOyRzEM+CYRjYuqA9ffv2LS4uhlmFv5zRriu9BLWz+jTwhHEfzI0QcPLFF19MmzYNAE6tVlMURRAEZCzhOK5mcR8ICaDfaDSC+4FKpdLpdGazOTs7myRJeAZlMplKpWKqTpB1v4zejmGYQqEo/Q5UKBQNGjQYM2bMmTNn3G63aOYXw66Ki//f0sKiu6No0CnDmWfVqlVQQZn2iDfch61P/hPHcYPBoNVqdTpdUlJSSkpK+/btxR+FMWPGcBwHE2U4jjMM8xDli/8++ZbDGc1mM5SwEHFfKpXCr22rVq3mz5+/bNmyyMjItWvXirhPEITNZsvOzv7f//536tSpn3/++cKFC8iZp4yHBW1CGqhVGqh1uD9gwAAoUut2u6dPny6+QFu0aCGXy4HXwX9XTOazfft2t9sNxXdTU1NhHz8/PzGncsOGDcXjYBjWqFGjAwcO5OXlgeN+t27dgNRhLKHX63///Xcg9cDAQPDfhWOWlJTcunUrICCg9K8dwv1a1aHrXGOePO5v2rQJHof169fv3r0bllesWMF4Uok7nU6TySQIAkz3M16kuq37YNaF9OcmkwncuBmGAUN+RkYGx3HQcl9fX9EG7KWxFVuNcN/tXSC2u/TrFBjR39/fz89v4cKF4MMDc63gxA/mG4B+8cDerPsSj2AYtmrVKspTQA189MVbCP5msJKsOQHWV6vVGo0mISEhOTm5Xbt2olrGjBljNptJkmQYxmAwlG4ztFz8rKkroGkaHivINzp27FhvuB8bG7tnzx61Wl0a90+ePIlwX+zMaAFpoE5ooNbhfr9+/YqLi+E3Y9asWeLbH8OwZs2aie/TwMBAMMn7+Pi0a9cOTPs3b97keR7s8RKJBH6Z4AgymczX11ehUMCP06BBgyAewO129+zZE8OwwMBAgH6VSgXOPIWFhXA6MQ0IuPV36dKlZ8+eyJmnTvTv2t/IJ4/74LjfoEEDtVptNpuhkw8fPtxsNkMlUYPBAMGvLMsyXqS6cZ/jOJIkgZnA64CiKEEQoAYwQRAajUYcdUPVJC8trfBqhPtu7wLmEvHFCCYViN9VKBQNGzbs3r17XFycGLlU6BEg/vJY98UX/sqVKymKomn6ISAmPGL6U/AaEp1Op1arlUqlSqXav39/YmJi27ZtQS0Yho0ePZplWXCL1+l0JEn+2d6H/9ZQ8/84rV6vpyhKp9OZTCYxVBfDsKCgoHnz5oWHh0dERKxZs0bEfZPJZLVas7Kyjh49evLkyZ9++un8+fPIuu/9WUFbkAZqlwZqHe736NHD7Xbn5+ffv39/6tSp4gtU5pGBAwempaUNHz4c5pTFTzEkV6lUSiQSP49AVNmECRNSUlImT54MTN+oUSM45vnz5+FWDBgwwNcjMDzQ6XRi1ZhnnnlGnBnw8fERK+m63W4Uqlu7OnKdbc2Tx/3OnTtDWh6e5zmOe/HFFzEMe/755+FfhmF0Op3D4SAIogyreXXjPs/z4MMD0bp2u91oNJrN5kOHDu3Zs8dkMlksFniQGzVqpNfrmaoThPtlPEzgGylOtIKXo/gpvq5HjBiRlpYG9hGoj/4Q8f+ldX/lypUkSYKDGTjKAxlDMhzDn6KrIdFoNEqlEoJ09+3bl5iY+NJLL4mXP2rUKIZhTCYTBJkQBPFnex/+W0PN/+O0arUax3GVSmU0GkeOHCk2/iHc37Zt2+7du1UqVWnch+SzCPfLeFLQJqSB2qaBWof7ISEhkK4kPz9/2rRpD2Z1fTwik8latGgByTdzcnKCgoLg9QSexziOgy9+amqq6IgPpH7p0iWYK+jbt6/4RsMwbNu2beCLHxISAiZ/2MqyLNyku3fvwhrwGgoMDCwoKMjPzy8uLna73SgRZ23rynW0PU8Y9wVBABe1IUOGOBwOHMeHDBkC/VzwCBjOXS6X0WjkOI7xIk8A9/V6PZhFbTaby+XSarWiU4TdbjebzaJjSRnt9NL8slYj3Hd7FzCagOZ9fX3ByxHDMLlH4HUNsy5+fn6fffbZ/fv3/z7um0wmo9EIpKz3iEjJmhoSMO1DkO7evXsTEhIexX0cx0mS1Gg0JpNJbPBDCzXU/D9Oq1QqDQZDamqqXq//4IMPxB/HoKCgL7/8Mjw8fNmyZWvWrEG47/1pQFuQBuqSBmod7vfu3RuYvqSk5PPPPxcTQUgkkpkzZ4pu/aVpWyqVqtXqEo+o1WqpVApvLl9f365du4rTygsWLABHfAzDpFLptGnT4ESDBw+G/eGnKzExUfTz8fPzg8llOKbb7Rbno1999VUMw0R3Ao1GIybkqUv3H7W1pjVQTbgPOTcYhqEoCoIFGYYhCCI5ORn6ORggOY776KOPwI1t27ZtWq0WfPfNZrMgCDXozMN4ETE9qCAI8CBjGOZl30qufizuh4WFbdy4cevWrbGxscnJyTAUcTgc33777YkTJ3744YezZ89C1aFbt27duXOnqJ6KCIVlLIDtXzS7bNmyRYzfFc0l3qz7cFg/P7/w8HCIghXdZpQVkdRqlj179uzevXv//v3QJdasWdOmTRvwI5VKpSNHjkxKSoKRCU3TMAnw2OZXczPLOjyMNPR6fXx8/IgRI8RAtRYtWsycOXPhwoVhYWGA+/Hx8SkpKQaDQRCEzMzMo0ePosw8biRIA3VNA/UW9+HN269fP5Hd9+/fL+K+TCYbNWoUxOP2798frFNgmlKpVBBhVlxcDPtLJJJHcb9Pnz7gLAS/T1qtFuF+Xev8taK91YT7kBiE9gj4QDMMw/P8okWLILh87dq1KpUKx/GoqCjwvf7yyy/Bc8ZgMADoI9yXSCRQZis8PHzx4sVxcXEPvLSTkpKys7P1ev2QIUNCQkI6d+4cGhrapUuXrl27du/evUe9Fm+UHxAQIEZGifvIZDKYB3jllVe0Wu2NGzdgorWoqAhwPzc3F8psnT17Fsps+fn5gYmnY8eOPXv2DAkJCQ0N7dq168sVlPbVLF26dAkNDe3QoUPbtm07duzYu3dvuGoYObdu3bpfv36hoaEvv/xy586d27Zt66351dxMr4fv2LFjhw4d2rdv36VLl+7du7do0QIGzxKJpEWLFjNmzCgb90+ePIkScdaK3w/UCKSBcmug3uI+eOAMGDAAVFFSUsLzvGgOlMvlffr0Adzv0aOHRCKB3xh/f3+dTgcm/JKSkjJwX3y/wzF1Oh04+ZRb82hHpIE/NFBNuA+pbCA3COTUp2na5XK99957GIYFBATwPE9RVEZGxgPiB1J5/fXXwXZuMBjMZjOO4wj3RdyPiIiIjo7esGHDrl27TCaTSqUaP348TP2BOUAmk0FqLwgEEjfVswUR5R9aCAwMlEgk8MKUy+WeSKs/siNAWTTYedKkSQcPHgSXyMLCwjt37gDuX758+ezZsydOnID8CvAqBm4WzyKtoFS32sWfEmihmK8Zhjc+Pj5i4jjYwVvzq7udZRy/tG7FZRH3FyxYEBYWtnr16q1bt+7cuROs+zzPZ2RkHDlyBDLzoKq66DcMaaAOaaDe4j68v/r06QNRvMXFxZCoG+z0CoUiODgYAD00NBR+YCBIQKPRwP0rKCgoA/fBug9nUSgUBoOhDt111NTao4Fqwn2apq1WK0EQLMtarVZIEmKz2YKDg6FKndVqZRgmPT3darVCzquWLVtCLk5IxGk0GqHkFvM4qW7f/ced8491NeXMs3z58piYmLVr127ZssVgMGzevPmVV14RIQkteNMAvFrFnMhjx469fv06hPAC7l+9erU07sMrF17FGIaJOX+84XJNrRcnhKGFD/E9QDboRCqV+vr61lQ7vZ03ICAAbs1DN6407i9dujQ6OnrLli07duwABzYR90+cOIEScbqRIA3UKQ3UZ9yXSqW9e/cWy2kplUpILSyRSORyee/evcGK361bNzDJgE+z0Wh0u92QhKcM3O/bty9Ys8A1QqfT1an7jhpbWzRQTbgPJTAhu47FYiEIgqIolUoFoZYSieTjjz8ePXr0yJEjJ06c2KJFCxgGJyQkQEkgq9VKURSk42QeJ08b7q9YsSIyMjI2NjY+Pn7Xrl0EQYSHh4vWaPFV8BA8PVX/KhQKMe8ZOEYCCsPnA5+WpKQkcOa5ceNGQUFBbm7u7du3r169eunSpZ9//vn48eOl1QUdEmzkD1nKS+9Wg8sw/wAjGR8fH3FI82iTytj06M5PZk1p1gdVQ3olqVQKzjwLFixYsmTJqlWrYmJi4uLikpOTdTodx3Hp6emHDx+GzDyozFZt+RVB7UAaKIcG6i3uA7v37t1bVMLWrVvB6AIGjwkTJsCmV1991cfHR/zBJkkSjE9ut1ucCYUXYulQ3VdeeUWhUMA4QS6XJyUliSdCC0gD5ddANeE+QRB2u50kSchaA078UVFRcrkccilCvloxlS2wy8KFC6GeLiTlhJpWzOPkacP9ZcuWrVy5EnKQJycnsyyr1+ujoqI+/fTTiRMnTpo06bPPPvviiy+mTp06bdq06dOnz6ynUgaMSqVSHx8fmUymUChEwJVKpf7+/g90cu3aNbfbDXOthYWF9+/fB9y/cuXKo7jfoEGDIUOGjBgx4sMPPxw2bNjYsWM/rKCMq2YZM2bM+PHjP/jgg3Hjxr377rtvvvkmuL+Dk0+nTp1GjRo1fvz4kSNHjh49uoy2V3MzvR5+xIgRo0ePHjFixLhx48aPH9+1a1e4cSLuz58/H3B/06ZNsbGxSUlJpXH/+PHjKO9++V/yaE+kgdqggXqL+wqFQiqVdujQAVxF3W43VBcSU0THxMQAvv/zn/8sberYuHEj3JgrV640adJEHCFg2B+6ggkBt9vdpUsXPz8/MftEbGxsbbidqA11TgPVhPuQJJumaY7jIGM9wzAffvgh4FpwcHBQUFDXrl1ffPHF5557LigoCHD/3//+N8dx4OtvsVhomma8yNOG++Hh4Rs3bty0adOuXbsMBkNSUpLRaPz111+//fbbkydP/vjjj+fOnbt27drt27fz8/MLCwuL66l4w33ReR1mRGG3hg0bfvLJJ4cPHxZfm/B4QlmV27dv37p168qVKxcvXvzpp5++/fZb8eDPPPPMqlWrINzcZDI9Wmzrodpbj/5LVbOwngp0JEniOK5Wq7ds2dKpUyewCikUijFjxhAEkZ6ebjabOY6DanGPNhIKC1RzSx9/eJIkbTab2Wx2uVyCIIwbNw4C2Erj/uLFi1euXLlp06Zt27YB7pvN5rS0tK+++ur48eNnzpxBeffr3M8NavDTrIF6i/sYhjVs2LBJkyY///wzzCBDOSER98GKX1RU9O6778JrGqrnfvDBB/n5+Xl5eevXry/DmSc4OBjK9MJP1Nq1a+/fvw+xv09zf0LXXlENVB/ug22e4zi1Ws3zPMMwgwcPlnjSTOE4bjab09PToYwuz/NSqVQul3fq1MnsEZ1OZ7FYjEYj40WeNtxfvnz5kiVLtm7dmpSUtHv3boIgDhw4wPP8119/ffz48e+///7s2bOXLl36/fffc3Nz7927V1JPRSTyxy74+PiIdQnfeustgiB+//13eCKgn0P6MrDuA+5fvny5NO5DOsgHB4+KirLZbFD5VRAE6Jbl/+SrWQRBMBqNGo1m//79KpVqz5497du3l3sEw7Bhw4YBT0PCVqgP/djGV3MzvR6eIAibzYbjuNUjI0aMgHmJh3B/xYoVGzdu3LZtW2JiolarfQj3z507h6rqVvSFj/ZHGqgpDdQk7sM1G41GCMkCd5pevXq53e67d++WlJRMmTJFTHbp4+PzxRdfiPb1kJAQYHE/Pz+pVKrX60tKSvLy8lJTU8FBH7wUpFLpBx98sGvXrnfeeQfiEWEY0Lp1a9FBf+nSpeCT06RJExgMfPzxx59++ilU8hLdRn18fESaz8/PnzRpEnjtQ/Z9Pz+/Tz755LPPPjty5Ijb7b5//37pOwr1vEqvQctIA6CBasJ9i8Wi1WqtVqtOpzMYDARBcBzXuHFjhUIRFBTEeiQtLQ1qaREE0bRpU3gAWZa12+0ZGRlACowXqSncFwQB3I1wHIfxub+/fxlOR16aX9bqx+bdX7ZsGYQt7tmzJzU1Fcr6pqenHzlyRPRjvnLlSk5OTm5uLmSXL/YIYL+7vkhpyhcTmkHcqviqfO6553bs2AF+O95GPYWFhbm5uTdv3rx48eKFCxfOnDlz/PhxGIuC8SU6OpphGLPZXNatqrltNE2LtXJTUlJSU1Pbt28vKmfs2LEQU85xnMlkqoVXYTabTSaT2MixY8dC4x/CfdG6n5CQoNFoWJZ1uVyHDh365ptvTp8+/euvv165cuX69eu3bt26d+9eYWHhQ9M49aXXo+tAGqgPGqgx3M/Pz797925hYaFGoxHfklKptEuXLm63G/h4+vTpEPIFhof//ve/JSUlYB8S82BCxje9Xg8jAZ1OB+wuk8kgREwcMADKg9PC7Nmz4e7dvHkzKytLbACGYf7+/mCkgeOU3gRz0Pn5+QUFBWazufQm0TQSFxcHLSmdl7P0cn3oNegaqk4D1YT7YM53Op20RziOi4mJgTHw4MGDeZ6naRpKcYGzwb/+9S9waVu3bp3ZbGZZ1mg0qtVqxovUFO4TBGEymQiCUKvVwJdyudxkMnlpZmVWI9x3exfI4iq++uB1Kv7bpk2byMjI77//Hg5QVFSEcL8e4H5sbOyjuP/jjz8i3Pf+oKAtSAO1TgM1hvt3794FYzmO4+Jvhr+/f2hoqGhEnzdvntQjwO4zZ84E/RUVFQ0YMEBM1iaXy9VqNWwiCKK02kunUQAAIABJREFUIz78Dvn7+4txVBiGDRw4EIYTBQUFEEDWo0cPqVT60Bd9fHy6dOkilUrB8CmXy+EUkOrn7t27oaGh4u8cOPErFIqJEydC+2/fvg2mDmTar3W9vjY1qJpw32AwgBc+y7I8z2dnZ3/22WfwNM2bN08QBIqiwCsazPn//e9/YZJt4sSJHMfpdDqbzZaVlcV4kZrCfZfL5XQ6HQ4HQRBSqRRcxssYlnhpflmrEe67vQvYX+DdK763wQNnwoQJBw8ehLdfbm4u2GUQ7tdd3F+yZAlY92NjYxMTE0tb97/99luIV0HWfe/PCtqCNFC7NFBjuA+/CgUFBSqVqnnz5iI3Dxw4ENw9i4qKPv/8c3E9hmFffPEFmMmvXbv22muviZv8/f13796dk5PjdrtNJpNolYdgxJ49e8KeUAQnJCTk5MmTbrf78uXLcCsKCwuPHTvm6+vbrFkzMaFEs2bNxowZk5KSIk4vBAYG3rp1q7SjjlKpBNqQyWTNmzeHoN6ZM2fC79y9e/egtbm5ubXrnqPW1CYNVB/uO51OiqJIkiQIwuVy9erVCx6EPXv2iOW0IB7Xbrdv2rQJcnT26tWLZVmlUil4hPEiNYX7UEDAarVCGQ2YwbPb7V6aWZnVCPfd3gVSyMNMKbwt5XL5iy++iOP4jRs3xIlZOMCtW7cQ7tct3JfJZC1btpw5c6aYiHPz5s2A+6V997/99tszZ86cO3cO4b73ZwVtQRqoXRqoMdwX1XDkyJGlS5fOmTNnlkc2bdqUl5cHgwGtVjtz5sxp06bNnTt39uzZBEFAisxbt26tWbNm+vTpc+fOXbRo0ZIlS7755huAbJ1OJ6bUxDCsf//+ubm5e/bs6dChw5AhQ9avX19SUnLv3j3wrc/JyYFv3blz5+zZs4sWLRo4cGD//v1Hjx5NUVRubu6pU6e+/PLLWbNmTZs2beHChaJHfklJCSTmFwRh7dq1gwYNCg0N7d69+7hx40wmU2FhIVwdLOTl5YkXixaQBh7SQDXhPkmSEEtqt9tZlrXZbC+99FKDBg0aN25sNBppmmZZ1mQyOZ1OkiQh7Sb4xvj5+ZnNZqfTmZGRoVKpGC9SU7hPEARN006nk2VZccCfnp7upZmVWY1w3+1dQOeQcxPqtUVFRUFxaPhScXFxYWHh7du34b2HcL/u4v6DqLZVq1Zt3rw5Li7OW2YehPvenxW0BWmgdmmgxnBfjOkpLi7OycmB5Dlutxts4eK/oC1xZ7fbDZtyc3NFjL59+7aoVLDHg1vOM88806NHD7fbXVRUBHQulty6c+cOfKuwsFBcKZ5UXHP58mVIIiFmjIZxCJxO9NIBj6Dff/+9pKQkJydHbC3gvkj/YiPRAtKAqIFqwn2omAtYn5CQ8KAiLND8G2+8QVEUTdPgoO9yuaACl1qtfvnllxUKRWBgYFxcHI7jHMcplUrGi9QU7uM4DgZ+tVrdokULuVzu5+e3b98+L82szGqE+27v4uPjA1OaUql06tSpFy5cEC36eXl5OTk5eXl5JSUltz0CUUyPJX4UqluZrll13/EWquvj4xMUFDRr1qyFCxdCVd2YmJjt27d7y7uPcN/7s4K2IA3ULg3UGO6Ltp+8vLxHgRgGACJbl5SUgK8/sJGoQtgBjO7gPJOQkCAmzAkICAgJCQFzvvgVcWwA34LPfI/APuIoAhbA/A+b7t+/f/PmTXENUL7b7YZjit47bre7NOiL+4ttQAtIA6IGqgn39Xq9yWTCcdzlclmtVkEQwsPDo6Ki1q9fD7nAwacfSnGBt8/OnTuXL18eERGhVCopihIEweVyMV6kpnDfZrM5HA6LxWK32yMiIsLCwsLDw202m5dmVmY1wn23dwFLSt++fR0OB+x1/fp1cdoT1hQUFIgmj8eyfklJCcJ9pkalPLgfFhYWHR39WNwvnY0KZeaBbo8+kQZquQZqDPdFxIefCpHsCwoKoEgNeMnfv38fErqJHvD5+fl37tzJzc0Vf2PAKg8HVCqVMN0MHvzdunUTS+SKdH7fIwUFBeJJ4SbBiWB/0XIPm6BV4r0sKSmBnYuKimBUIDYG/PXz8vKKi4vh+OL4Qfw6WkAaEDVQTbj/wFmfoii9Xi/m2jOZTHa73el0CoJgs9kgM48gCJBSkCAIp9OJ4zgktQTneMa71BTuQ/yxTqeD2Qmn08lxHEEQ3lta4S0I993e5YUXXhAriOfk5IjWE5iYfci0cf/+fYT7dcuZR7TuL1q0KCwsbPXq1YD7ycnJ8DLJyMg4fPgwwn3vjwjagjRQSzVQY7hfVfp4qLgVOPOIKSP69esnpuovvVBVZ0fHQRr4mxqoJtxnqllqCver+bL+ODzCfXf1C3hR3rlz59q1a1euXPnll19OnjwJmaOqJO++WFMC5q+cTueBAwd0Oh1JkuDhxjAMQRA4jkMNrEr0Kyipi+N4amqqUqns0KGDGDb29/Pu4zhO0zTP8ziOEx7hOI5hGKiTDen8xXITlcjr7826j2FYUFDQl19+uXTp0vDw8FWrVsXExOzcuTMlJcVgMAiCkJmZefTo0VOnTp09e/bixYuozFb1PyvoDEgDVaOBOo/7BQUFpc3nqamppa37PXr0gB3u3r0rGuCrRnPoKEgDVaEBhPtMLROE+1XRr//iGNWN+yzLkiTJMIwgCED2APoMw7AsKwgCVJN1eASKVFS0G1Yr7otYT5KkIAgWi8VqtVosFoqiwA2P53mHwwEB93ClFWr/X+I+uMmBMw/C/b/ozWgz0kBd0ECdx30xGgyKWSYnJ0MVdzARDRgwAJx8oKpXXbgjqI1PlwYQ7jO1TBDuP4EnsLpxH8dxlmUpj5jNZr1ebzAYsrKywAeM47j/h733Doji6vrHB3bpoiiW2KLR2GKJjymmvE8Sk2iemLxGY4mamF5MTCzYFWyIYu/YQOlsL7OzvdEsEUuixh4VFUG69Cb7I/v5en/7KotCWMAnc/5YhruzM2fP3nvnc88953OwHtBoNFqtViQSNaAPOhTuA+KjqBxqYAusQtO0RCIRCoX4alKrwPFfr6/w+HB/69ate/bsiY6OFovFOp3u0KFDJ0+eZL37TTBG2FuwFmhcCzzxcL+iosLWba/RaF5//fV+/fq99tprr7/++vTp00tKSqqqqgCqGtd27NVYC/x9C7Bwn2lhwsL9v9+rH3kFR8N9eMcVCoVEIoGPX2cVqVQql8tRqU0ul6vV6vj4+AYEwzAM41C4r1Qq1Wq1RCIB7kd5bHj0sV+RkJAAN79SqSRRPY8/kuqA+506dfLz81u6dGlAQMCaNWu2bdu2d+/e2NhYiUSi1+sPHz7Mwv1Hdm/2BNYCLdACTzzcR2btvXv3SKItODfv3btXUlKSmZlJOKGRN9YCfwNWpX+yBVi4z7QwYeF+E4xHR8N9jUaDoB2FQiGXyw8dOiSXy2fPnr1w4cLAwECRSITg/ri4OLlc3gK9+zKZTC6X0zR99OhRmUyGhHuj0SgWiyUSiUgkMhqNcXFxOp1OpVI1bjAP4L6/v/+yZcvWrl27ffv2/fv3x8XFyWQyg8FgC/fT0tLY2P0mGCzsLVgLNIoFnni4X1xcDDoIQv1m6+xHJI8tfUSjWI29CGuBxrIAC/eZFiYs3G+svl3HdRwN91UqlUKhMBqN4J4ym801yLVdu3YURfn4+Hz77bdSqVSpVCoUiqSkpOTk5Ab0QYd699VqNeC+Xq//4YcfpkyZMnHixE8//XTKlCnTpk0bO3bstGnTPvroox07dqAMRX31f6R3H3A/ODh4586doaGhPB5PLpcbjcYjR46cOnXq/Pnz165dY+F+HT2cfYu1QEuzwBMP94lBy8rKCgoKqqqqysrKSktLQbtZVVUFJjgU2yInswesBVqIBVi4z7QwYeF+EwwNR8N9mqZVKpVWq1UqlXq9nmGYr776iqIo1A34+OOPFQoFyGpVKhVN0w3ogw6F+0ajEekHMpmsZ8+epIC0q6trmzZtKIpycXFxdnZesGCBTCZrQKpx3XB/7ty5/v7+y5cvX7du3c6dO8PCwvh8Pk3TLNxvgqHB3oK1gIMs8N8A90F1f+/ePeLgLy0tfYAB2mKx5OfnkxMcZE32sqwF6msBFu4zLUxYuF/fPtyA8x0N9+VyucFgkMvlYrE4MTFRKpVOmDCBoqjWrVtTFPXKK69ER0ebTCaUl26BcF+pVPJ4PKPRaDAYOnbsSFGUs7MzCmO7urpSFOXp6enq6hoUFIR4nvqOoceH+7t27SJw32QyHT16lPXuN6DDsx9hLdDsFrAL921DYmpFydXV1agkVVVVhZgZ8mXgUL9nlapmEqIMoe6BPnW/kq0A8vFmUr8qLy8PcUqVlZW2Rb4e0Id8HaIwe/BkWeABuJ+ZmXnz5s1Lly4NGjQINN4cDmf8+PFg58CrykYUdsT2fEcc0zStUChABE7TtFQqFYlEAoFAJBJFR0ePGTOG+CP79+//gAI26v8VcVGrPPCRJvtXpVKtWbOGEKhTFDVr1qwFCxYsX74cJYf27t0bGRmJtMXk5OSUlJTTp09fuXLl5s2b6enp2dnZBQUFqLKHsVltlSerTzaBthUVFaiWCN791NTUc+fOcTgcUO/XeK+DgoIYhmlYEi3DMDqdDuH7YrE4Li5Or9e7u7t7enqOGjUKPROR/TqdTiqVNiDV1dGpuhqNBnT7Wq2Ww+G4uLhMnjxZpVLpdDqFQiESifh8vkgkQtR+A6xUB9x/6qmn5s6dGxAQAO9+HXCf5d1vgpHC3oK1QGNZwC7cR4YrgmGASOBEJzcmcL/SKmVWKbVKiVWKrYLjpn9FSE9paamtMlCp7lecjy9SVlbW9JrjjrAzqvYWWaWkpKS8vBzWrqysJLgfqIL8LuzBk2WBBsB9W+zL2BHbcxxxDIyOm9vCfaFQGBUVVTfct9XHjvp/kaM3lwQFBZG1CuD+/PnzCdzfs2dPZGQkSAlZuG9pqDga7mMhqlKp1Gq1VquNjo5GnfUZM2aAo3nbtm3wi0ul0gYEwzQB3KdpWiaTRUZGojfOnj0bta5VKpXBYDCZTHq9HoyiSqXS3jiy187C/Yb2XPZzrAWeVAvUBferqqoIm01ZWVlRUVFJSQlgdElJSXFxMdwzhYWFBQUFBEMDmxZaxbadnNBkBw9oUvB4As3x2SZT9eEbQVlUB8P+SUlJSUFBQfl9gcsfoP+BldiT2hn/kXo/JtxnahP412t7x+Fw2fbWgPtisVgoFPL5/MjIyP/93/8liLl///61aghAZu+t5sL6CoVi9erVRHknJ6dZs2bNnz9/2bJlKDm0Z8+eiIgIwP2kpCTWu29pkDga7oNWn6ZpnU535MiRxYsXc6yyb98+hMRMnTrVaDSiApe9Tlh3u0Nj98lyOjAwEL1x06ZNSqWSz+dLpVLsj9E0bVtKrG5tH3iXhfsWVlgL/MMsYBfu24bCE5vch5rlD4D+oqKiPKvkWiXHKtlWQXvTv+bm5tqqkfXYArXx2dzc3KbXHHfMzs7OysrKyckpKCjA4ionJ+f27dtFRUXFxcUlJSWlpaVlZWUA/XD2k+AB8nuxBy3fAo8J9xX3hb4vcqvcb27qvwjmwV3lcjkJ5omLiwsPD38A7tsqd1/9v5AKCp3avtvsxzKZbNWqVQ/A/Xnz5gHub968effu3RERESKRSKfTsXC/wePL0XDfaDTSNC0SiZRKZVJS0nvvvefq6tqlSxeNRuPr60tR1HPPPWcymcDb0wAiS0d795Gnq9Ppvv/+e/RGgUBA07TWKnDq171gZuoUFu43uOuyH2Qt8IRawC7cJ98HAS2IKsnMzCThOsS7X1BQcPfuXQKnM61yxyoZGRlAz03/CgXu3LmTYZX0xxacTz7e9JqTO965c+e2VTIzM3NycvKsghXI3bt3CwoKyH4LcD+gf63rNPJrsgctzQKPCfdtUbLMKtZ6mn/VDGoWAS84bk2wPo/Hi4mJOXjw4IcffkhRFCLg+/XrR5SHP7Il6G/PaBKJZMWKFVDeySozZ85EKPPq1asB98PDw0UikVarTUxMZL37DRtQjob7BoMBMe5KpVKlUvXo0cPV1fXVV181mUwDBw5Ezi5N06ixJZPJmPqLQ737crlco9HodLrRo0d7enp26NAhMTHRbDbjpmKxmKZpvV5PViz1VZ+F+w3rt+ynWAs8uRZ4NNwvLy8vKioqLS2tsoqt1zwrKyszM5NAaltgDZyalpaGxqZ/JQqkpaXdssrNxxCcmWYVXKHpNccdr169iuS/9PT0mzdvXrfKjRs3MjIy7ty5QxYABQUFhYWF+IGIs5+N7XmCBuTjw325XE6AskQiEVtFYkfwrqNfcXMkDsbGxkZHR0dGRoaFhQHuI0i6X79+YBBvgfo/bB+hULh8+XLAfaSNzpw508/PLyAgYPXq1Zs2bQoJCQkPDxcKhRqNhoX7DR5ojob72DgCJo6IiHB3d+dwOJ9++qlarZ44cSJFUVwud+fOnUlJSWDfZ+ovDoX7Wq0WK5YhQ4Z4enr27dsXg8hkMoGSH0sUjVXUanV91WfhfoO7LvtB1gJPqAXswv2KioqysjJ8q6qqqhs3bqSmphYWFhLnfUZGRnp6+u3btwGO/7wvV6xyuQXIpfty0SoXHkNw5v3PXWreL3Hz5s2MjIwbN25A8Vu3bt29e/fGjRs3b97EOgrRPnl5eXfv3i2xChA/C/efoNH4mHDfFiuLxWKRSCS0isCO8B0vAoFAKBQKBAI+nx8bGxsVFRUREREeHh4aGgq4D47zvn37YiuArFVaiP61WkggECxbtgy8hyCK+eWXX+bMmePv7x8YGAi4f/DgQcD9hIQE1rvfsLHmaLgvkUjUVtFoNCtXrgS+X716tUKhAPMSl8udMWOGyWSCH52pvzgU7ut0Or1eLxKJunbtSlFUp06dvvjii6+//nr//v0CgQCLAaVSKZVKG7Y1wcL9hvVb9lOsBZ5cC9iF+xaL5e7du0D8v//++/Lly7/44gs/P7+frTJjxoyffvrpxx9/nD59+g9W+d4q31nlW6t8Y5Wvm0ls7/6VVb58DMGZUNn2Ck3/Jb755pvvvvvum2++mTZt2nfffRccHJyQkJCTk3P16tVr167duHHDFvHn5uaSgP6Kioqqqqont0f+0zSvF9yXSqXw6wNnCwQCnh2Jc7zweDw+n8/j8eLi4qKjoyMiIg5aZf/+/R988AEpaWQL91uU/rVaiM/nBwQEPAD3Z8+ezcL9xh2Yjob7KKmrUqkkEsl3331HUZS7u3tMTAxN0zwez8nJydXVdcyYMRqNRiwWGwwGpv7iULivUqk0Go1AIECmASHaR9GAwMBAuVyu1WoRHcd69xu3c7JXYy3wX2kBqtZQ7+rq6srKSnBrFhYWenl5ubq6gsgMD0JU9UMKkZubGw5a1KuzszOHw0FFEngZnZ2d8W+L0tOeMtDZxcUFBxwOZ+LEiampqRcvXrx06dKff/6Zmpp669atjIyMrKys7OzsvLy8/Px8UCGhylhVVRXr5n/koC0rK6uurkbR5YqKClgMLeSz9+7dq6ysxL+lpaXkGC0YLAUFBeR8QpmKFtR7xjHKWZSWlpKTwXiLc3Jzc9PT0y9fvvzHH38MHz4cwTAuLi5vvPHGIjsyv8XIAqv4+fktXLjwpZdeIhNFt27dlixZYkf9RS1G/f+nyOzZsydNmuTp6UkG5syZM3/++eclS5asXLly/fr1O3bsCA0NjYuLUygUBoMBVYcuXryYmpp6+/btrKysu3fvkgFo25HAXGz7u/+Tjx0N97VarVgsNhqNGo1m2LBhHh4e7dq1U6lUoOT38fFxdnbu06ePUqmUSCRCoZCpvzgU7ms0GoPBsHnz5jfffLNz5869evXq0qUL6ZMdOnTw8/PT6/VGoxH7fvVV39HefUykKHYpFApLS0tzc3PJ8wjo4p/c/9nvzlqg6S1QC9zHY6mysrLUKgUFBZ6engR3kgw8wFCC+5HW1vSviK99+JXMjOSAw+G4ubk1vYYNuyNRmxy8+uqrJ0+ePH369NmzZ8+fP3/58uVr164hsCc9PT0nJyc3N/fu3buI44ePn0yvTd+xnpQ72poI4Ky6uhpPqcLCwry8PILYbEE/WR5UVlbiBOyo4JVEwdkawXaRYFvD7gG4X1JSkpmZef369RdffJH89HX024d7ftO0PNyrcV+iM8In8K+Xl9fD56OlabR9/Lu4u7uj8KqLi4unp2erVq0Qu28L9/fv31833C8pKcEAJJ3HYrGwcN92ODga7kulUoFAgLh8AOWhQ4fyeDypVErT9P/8z/84OTl16dKFpumWGbsPQqGkpCSFQoHEXIFAsHv37mHDhmFk9ejRY+fOnTqdLt4qTD3F0XAfM6TFYnnllVcwCUybNg0dgDg7QOhn2yvYY9YCrAUcZ4Ha4X5VVVVFRQX4H/Pz893d3blcLsH3INyA65HAfdvHfMs59vLyoigKry1Hq8fRBNvNHA7Hw8Ojffv2FEX17dvXbDb/+uuvKSkpJ0+ePHPmzIULF65cuXLt2rXU1FTi44eDHwW52Kiexx851VYh5wP0A/dbLJaysrL8/Pzq6moYlsA4uPYJfAemx6eqq6uLiopMJhN+hYqKCvKpkpIScgy4X1paevfu3dzc3NTU1EuXLv3xxx+EP4TsqtXabezBaEe316oMRVHt2rXDW1AbHdjeybYEOI5W+DGvT2KQiM6ff/750qVLlyxZsmLFivXr12/fvn3//v2xsbHw7h85cuTUqVMXL168fv16WlpaZmYmEmlYuE+GUq0Hjob7ycnJCNHZt28ffsoZM2ZotVpQ13/++edo3LhxI0pxMfUXh3r3EbOHPmY0GpVKpUwmo2l6x44dr7zyCh7BH3zwgVKpxBqmvuo7Gu4XFBSUlZUJhUIvq1AU1a1bt6FDh168eLG4uBhdApNnaWmp7dYo3mJfWQuwFmh0C9QC96uqqiorK0HIU1BQkJOT4+LigtgYiqI6duz4/PPPDxky5HmrDBw4cNiwYYMGDRrQwuTpp5/u3bv30KFD3dzcUFeFoqguXbq0MDXtqtO7d+9BgwbB0ejt7U1R1MCBA48cOZKYmJicnHz06NETJ04QxH/16tX09PQ7d+4gqsfWwd/oPea/8oKVlZXwyNp+u3v3BY0A8agzDWdtWVlZTk7OjRs3Ll++HBERsXbt2hkzZnz22Wevvvrq4MGDgXeDgoLS0tJwherq6rKyMqB/W7gPltu7d+/m5OSkp6dfuXLlwoULgwcPpijKw8MD62p7/mlOcwtRDHjaxcUFQApqu7q6IjCGnPbAQXOr/+D9oTxc+1wu18XFZfLkyXPnzl28ePGKFSvWrVu3ffv2ffv2xcbGgvXlyJEjJ0+evHDhAoH7+fn5xcXFLNy3HUoPHzsa7tfE8NA0LRaLZ82aRVGUr6/vypUrFQpFcnIyTdMrVqxwc3NzdXWdMWNGQkICTdNM/cWhcD8hIQGVwjRWkcvlSqUyPj6eYRjUhXB1dfXx8UlISIiJiWmBsfvwgDAMgwHl4+ODg27dukmlUvj+yc7q3bt3H+4hbAtrAdYCjWuBB+E+Ftyg5SkoKMjPz8/MzIRfH8/vTZs20VaRSqUKhUIqlTIMI5VKlS1M1Gq1RCIJCwtD4CZFUa6uru+8804LU7MudWia/uyzz8i+yoABA0DIYDKZkpKSfv3111OnTv3xxx+XLl26cuUKonru3LlDKnPBD9243eW/72rIXcF2FiB4VVWVrbcJAf0FBQUajWbPnj1+fn4//PDDxIkT33jjjX79+rVv3x65K2QHycXFBTszFEW1adPGZDKRy967d6+4uBgPOducmaqqqpKSkvz8fPx2qamply9ftg3meeqpp/CwfCJe3d3dvby83N3d27RpA4XhjHxSlCd6crlcb2/vb7/9dsGCBYsXL16+fHlwcPC2bdv27duHpE+9Xn/48GHA/WvXrt26devOnTss3H+cWaIJ4L5OpzOZTMgad3Fx6dq164ABA/r16zd48OBevXphX/rf//53UlKSSCRi6i8OhfsSqwDlq9VqlVXUarVYLJbJZO7u7p06daopFiYQCBiGMZvN9VXf0d59i8VSUFBQWlo6fvx4zANt27YlI2v69OmYBu/evWvr+HicnsOew1qAtUDDLEA9EMMAnpDy8nJEF8DdiFEKuA8uM4ZhUPZPoVAwDCOXyzEfNf2rPbxM07RUKo2JienXrx/09/Ly+uqrr5pew4bd0Uoip542bRqZIvv378/j8RiGUavVBoMhKSnp2LFjv//++7lz5xBLcOPGDSQLAnCwcP9xhsTDD5vs7Ozz58//9NNP77333ptvvonAX3T+B4JPyE+DxST+hdcQ50+dOhXXRxqMrT62cB97C/n5+dnZ2WlpaRcvXvz9999feOEFoGQvL68PP/wQTr6HX+31/6ZpR11P2+JZPB4vOjp65MiRsJW7u/trr70mlUof1hwtTaPn49+lJvjK398fWAo/6PTp0+fOnbto0SIC9/fu3RsTEyOXy3U63eHDh0+cOHH+/HkC9/Py8oqKiljvvm1vf/jY0XA/NjZWIpHIZLIePXpQFNWqVSsXFxdQNXh4eJAAOR8fH5lMJpFImPqLQ+E+Jnm9Xs8wDDYfaJoWCoUqlSo+Pr5fv37YRvP399doNHC61esbOBruE899De738/OjKMrNzQ2zImbUZ5991mQyIZTx4Un44Q7DtrAWYC3wNy3wf+B+dXV1VVVVeXk5Kunm5eVlZWWlpaXhsedkleXLl6vVaq1WK5PJdDodUCmynRTNIXI7EhUVFRsbW0MU2L9/f+jv7Ow8efLk5tCxIffETvTnn3+OAjEcDqdv37779u0TCoV4OOn1+qSkpJSUlN9+++3MmTN//vnn9evX4V8E4AAH/9/sH//AjxcUFFy7dq1Pnz4A8XBNEeRN+pK7u7uHhweJXXFycrLZxI4HAAAgAElEQVRdEiCKnWEYGLC4uNg2j6KoqMg2KKiysrK4uDgvLy87Ozs9Pf3WrVunT58eOnSoh4cH0vLGjx9vDy5jADb9q0ajgdNRqVQS0E/T9MGDB+Pi4kaPHs3hcGC6Z599FtTmtX6Fpte87jsC7pNfmaKoBQsW+Pn5LVq0aNmyZcHBwVu3bt27d290dDTg/qFDhwD3URcvIyODhfuPM2k4Gu5rtVqTyRQeHg6I37NnzwkTJkycOPGDDz4YN27c6NGju3XrhsEVGhp66NAhpv7iULivtwpAOSZ8DB/spcOH5ezsvGHDhoaxiDoa7hcVFVksFhLH+Pvvv+OHQGAql8t1c3Nr27ZtUFDQ4/QW9hzWAqwF/r4Faof7paWlwB+ZmZm3bt3Cww9wf8mSJYD7UqlUp9ORp37DfNh//1P2/HYqlYqmaYlE0rdvX0ISMn78+L9/x6a5QmJiIp/PnzBhAsmQ7tevX2RkZHR0NI/HE4vFSqXSZDIdOnQImbtXrly5evUqyu7m5uYWFhaycP/xhwc6PDm/srJSoVCgwA06P55SCADgcDgPRKfgXwL98ZMNGjTIYrGQLF6LxVJsFcT9E5pUhM9huGVlZaG22m+//fbcc8+1adPG2dnZycnpo48+srOqlTPNKgqFgqZpmUwGQn2JRCKXy0Ui0ahRo8B0TlFUr1699Hp9y9T/YeMZDAZUZULiBEVRixcvnjFjBuD+2rVrWbhPhsnfOXA03JfJZFqtduPGjc7Ozm5ubm+99ZZerzcYDFqtVqfTqVSqqVOnYn0+Z84cmUz2cE94ZItD4b7KyhmqVCq1VlGpVEqlUqPR6HQ6oVDYtWtXxBCqVCqZTIaTH6mw7QmOhvsWiyUvL4/w8xQWFqalpb3zzjuYTrlcbqtWrXD87bffWlhhLcBawPEW+Avuk7sAecC1DxbC27dvX79+3RbfIOFJo9EoFApAasBfppkE8yC2FxBUAB5iiUQiEokiIyPhpsXMMmnSpGZSs963xQbuJ598As0piurTp8+WLVv27Nlz8OBBHo+HWd5oNCKc4PTp0xcvXgTcz8rKskX8xJFssQpLCAg71P1aXFy8detWGJ/D4XC5XOK8J7/IAwdwX5Fci/Dw8DpS0EgwDyiAioqKcnNzMzMzb9++fe3atXPnzj333HO4PpfLnTBhAtPCRKlUknUvwvmkUqlYLI6Li4uIiBgzZgzh3R8wYEAL070udWiaXr16NVwbsP/PP/88e/bsBQsWBAQErFmzZsuWLbt3746KikKEUnJyckpKyrlz5+DdZ2P3LY8njob7BoNBqVSOHTsWC+bg4GCDwaBWq8G8aTabAwMDsT6fNGlSC4zdN5lMUqk0Pj5eqVTCrQZkL5FIoqKiXFxc2rZt6+HhkZiYKJVKG+DgbwK4X2tHmD17NsKryOTp6urap0+f3377DfzFZGLExwnTscViqZVQoda7sI2sBVgLPGwBu3C/oKAgLy8vLS3t2rVrmDERjMvCfaZJ5GG4/+yzz27evHnXrl2hoaExMTFisVihUOj1egAOwP3U1NT09HQW7j/c0RvQUlFR8dFHHxFmRjIKyIPqgQP4+BEW3LFjx5ycnDpuSp5qLNxvkvH0uDd5HLi/Z88eW7h//PhxwH2E0rGpunV0e/KWo+E+wPHzzz/v7Ozs7u7O5/OR56pWq6VSqVar3bFjB1akzz//vMKagfa4XeT+eQ717kskEoVCIZPJ8IpVik6nMxgMhEV02rRpwPqRkZH3lXrcv80F90tKSmqyjYcOHeri4oJgRSyt27ZtGxISQjgSqqqqCgsLbQMgLTYCkjSbBvaQtQBrgUdbwC7cBws4C/eZZhI8gSZNmkQwZe/evdevX79ly5aQkJDw8HDQLavV6oSEhKNHj/7222/nz5+/fv367du3MzMz4d1nq3s+egTYPwPMmB07diQ/weMcIOxn4cKF9i/81zss3GdapNiD+wsXLiTefcB9hIskJycD7iNVl+Xdr7vbk3cdDfcNBoNUKkXKtbe3N0CzWq3W6/VIeBUKhW3btnVzc3NxcYFvpb790aFwPy4u7tChQ5GRkRqNRigUSq2i1+uDg4PBbOvp6bl///6oqKhDhw6BwqFe+jcX3EcHuHTp0ujRo729vTt06GA7qX7xxRe3bt0iIUAk9KCiogLktvi4vWUA3mVfWQuwFqjVAnbhfr6VFvDWrVtXr14lfs2ahTjr3WeaRJABOXHiRDIbPvPMM0FBQevWrdu6deu+ffuioqIEAoFCoTAajcnJyadOnTp37ty1a9fS0tIIHScL92vt9I/TiJ3lsrIys9mMn8DX15f8Fg8fIF7fycnJy8urhs87KyursLCwjhuxcL9JhlG9b1IH3F+2bBli9/fs2RMdHQ24T1J1MfRYuF9Hn7d9y9FwXy6XBwUFYWvuo48+OnbsmEqlQna1SCQC7h8xYgQG8t69e+vdUax8dKDLjI6OjomJ6dOnD0npmTRpklqtVigU2ExoQGx9fHz8gQMHOnfuPHLkyLlz5+7bt8/Pz2/06NEgsG/Xrt0PP/wA2gaj0Wgymeqrf3PB/crKShLiOH/+fDc3t86dOxPGM5SXiYiIgP/+AVh/79690tLSsrIysgyw7VHsMWsB1gJ1W8Au3M+z8oTcvHnz6tWrJJKVhftMU4lKpVIoFBMmTCDIsibkccWKFatXr96wYUNISAgoUMCPlJiYeOLEibNnz/7555+3bt3KyMjIzs4G7TFLCFj3AKj73ezsbIvFMnv27NatW5NibeQXeeAAsfsURaFc/O3bt0m5+IfvwsL9phpJ9buPPbj/SGae69aqullZWey4e7i3P9ziaLiv1WqnT5+OITlz5kwejwcKS4Tvg2ECBJHOzs7fffdd/XqJ9WyHevfVavXevXsJTwMSczHhtG/f/ocffkCFYKQd63S6+urfXHCfIPX8/HyLxSKXy9u0aUOIEFq3bu3k5MTlcleuXFlRUVFZWVlUVFRQUEBwPwqAPtyd2BbWAqwFHmkBu3A/Nzc3Kyvrxo0bf/75Jwv3mSYXOIfGjx8PzwdFUd27d/f391+xYkVwcPCOHTsQwY841ISEhJSUlNOnT6PeVnp6OuA+KsWyqbqPHAa1ngD3PJ40b7zxBvkhHkD55F/y0EpJSYF3qqSkpNYrs8E8TT6eHveGdcB9wruPMluEd59U1UXVCxbu2+vztu2OhvsajQbFHyiK2rNnj1qtTkpKkkqlILhUq9VxcXFr1qzhcDgdOnQYPnz44/YPm/McCvflcnloaOhLL73UvXt38vylKOrdd9+dO3cuTdMqlUqj0cjl8gbU2GIYprngPnZNy8vLCwsLwVp28+bNCRMmkCJcnp6evr6+Li4uY8eOvXDhAsjNysrKQORPVgu2fYk9Zi3AWuBxLGAX7ufk5GRmZqampl65coVMN6x3n2kqAffRxx9/TBhOunXrBhfjmjVrtm3btn///ujoaIlEotVqExISjllLbl2+fJkU27p79y4L9x9nDNR6TnFxscViQbrtqVOn3n777TZt2tj62AjKJwd49z//+Q8qSpII1Fqvz3r3m2ok1e8+9uD+I6vqIm0Gy2xw4LLL7Fp7PhodDfcRupOQkEDT9JEjR6KiohQKRVJSEp/PRwBkUlLS4cOHY2NjZTJZA4JhwEbluGCe6OhonU5nNBr5fP6qVasWLFiwYcMGPp+PMroJCQnh4eGA+/Hx8fXr4tazmwvuV1ZWEg4DQlJcWVm5cuXKAQMGkLmUoihPT8/BgwcnJydjHwC4H24UQP86ehf7FmsB1gIPW8Au3M/Ozr5z584DcL8miJ+N3WeaRLRarUKhGDduHGGG6dq1K9gAg4KCtm7dSuC+TqdLSEj49ddff/vtt0uXLqWmpsLLyML9h7t7vVrAGy0QCEARTQJzbZ9J5Bg0nR4eHrGxsXiModCMvTuycL9JhlG9b1I33F+3bt22bdvg3adpWq/XHzly5OTJkxcvXsS4y87OJiUvWLhvr/NbLBZHw329Xq9QKAQCgVgsVqlU4OUEm5nSKgzDxMTEHD16VCAQtEDe/fj4eJqmExISZFaRy+VarRZ1A8xmM8imE63SsKrAzQX30SUqKytxUFRURHKcagoLvPLKK3Bv2UZOBgYGYk+guLgYUysL9+sYWexbrAXsWYCyfePevXsVFRUoOWTr3SeYpg7vvlwu1+v1eAQqlUqpVApvilar1Wg0SqUSNTg1Go1AIGhA6hJjR1TW+iMP8+4LrBIZGdmvXz/CmN4A3n34b1AXV6fTwZuuVqvtqMPIrEVPFAqFVCo1Go0GgwGFUeydX0e7Uqm0Zebp1q3bvHnzAgICVq9evWnTJoTvw5hmsxnkPAR2kBji8vLyyspKdn602Jfy8vLc3Fy8X2QVcu7s2bNRWsvLy4uMAg6Hg5hgRNZ6e3vXlLfECf369QOUqSNqHxe33ZWuqqoqKSkBEVBmZubNmzcvXbo0aNAgLDA4HM748eOZRpLk5GSxWKzT6RQKhVgsTk5OlkqlyAuv1x3s8e7z+fzIyEgQmGLc9e/fX9EgokN7+mg0GpVKhTz1xMRETDtms1mtVhuNRiRHoiZRHePU3sUVCkVgYCD5rSmKmjlz5rx58xYvXrxixYr169cjjo7H46HOHXbVyDIbqbrFxcX37ku1VSys/F8LOBru2/t9G7HdocE8jahnrZdqXrhvsSNZWVk//vijp6cnSVqgKMrNze3VV189c+aMxWIhEzWZPyttxM5V2WbWAqwF/rJAo8F98FTQNK3VarGRCkCgVCqx/wh3i1wuFwqFDYAXjB1xNNyPj48XiURGoxEk95GRkTRN17F/qtPpeFaRyWRyuRzRog1b3jwS7h84cICF+39zHJMN5Tt37uARAk/S6dOnBw0aRFFU+/btAf44HI6Hh0ePHj3g7G/dujVWAngXjatWraquroZbt+4lFnlcIeanyeA+hiFtlbi4OIlE0rDB2Fxwn/gUSAAGki8lEgmfz5fL5Wq1mrhvaZq2M23YbbYH95csWbJy5UrA/bCwMMB9s9lsL4juPtq/x8L9WkcoC/ftdsEmeaOlwX3i76+urg4ODm7VqtVTTz1FURQcK66urr169QoLC0NfIs6U7OxsTNc1hAok5qfW/sY2shZgLdBocF8ikRDqMVTb1Wg0Bw4c6GmVn376KTw8XCgU0jSt0Wgall3E1CaOhvs6ne7111/v06fPK6+8EhsbC39heHh4bbr81aZUKmmaTkpKOnLkiFQqxW5AA6oe4lK1evcDAwM3bdq0a9euAwcO8Pl8lUrFevctf0MKCwvBDVdeXo7E3LCwMDB2o2YWRVHe3t6+vr5CodBsNpNHEYfDAQe2s7Mzl8vt3r07QrehS92bKs0F9wHxFQpFQkKCyWRSKpXx8fENCGZoLrhvMplUKpVWq2UYJjIyUiAQmM1mg8Egl8tFVlGr1QiEk1vlrzFZH7EH95cuXbpy5coNGzbs3LkzLCyMjDsW7lsaJCzcr0+vbPxzWxrct1gsGRkZyHoqLS09d+7csGHDMLuSSbht27b+/v7obgUFBcSfQopzkWVAg7ok+yHWAv/lFmhMuM/cF2BivV4fEBAAJLRw4UKEHuJhfP/ERvjraLivUqnatWtHUdSzzz7L5/ONRmNCQgLQRq3aazQag8GgUqnEYnFMTAyI0urYDaj1Imis1bvv7+8fGBi4cePGXbt2AXYgqIAN5rE0VPCQyM/Pr66uLikp+e677+Cwx2Pm6aef9vHxGTp06JUrV3AH1ON0cXFBsAr8+hRF+fn5WSwWEopad6puc8F9dMijR49ixwmxag0IemkuuH/gwAGNRqPX62vW4Xq93mAVsVhsNptNJpNcLsdiQCqVohAphtLjv9qD+/7+/qtWrcK4w66aWq2Oj48HI9bly5dv3rxpy4jFevfrHo4s3H/8PumIM1sa3Me0CYIEEJfVxFjOnDkTUzHq7yJ/9/XXXz9//jx6V4VVSE8jW7WkhT1gLcBagFig0eA+gvWJX59hGIPB8Mknn2C4rlixQqFQ0DQtFovBOcM0kjga7m/ZsoXL5Xp7e48ZM4ZhGIlEUjeMQCBBXFycVqs9cuTIoUOHdu7c2YCgAnvefcAO4mUkMcQs3Cd9ul4H4MrEY+bMmTMDBw4kWL9Lly44nj9/Pq5ZVFSEMydMmMDlcn18fAhXD5fLRXQpcDyWEMT/9LBKzQX3jUZjbGysRqP56KOPXnrppTfeeOP999+PiYlh6inNBfdVKlVycjL2KJB4AKzP5/MB9xmG0el0UqmUYRhF/XMG7MH9gIAA7KqhprVQKNRoNImJibYEuLb1Lli4/3Cft21h4X49B1wjn97S4D6ZDwlkv3PnjsViiYmJQeVdRPPjtWfPnqGhoehO6enpOGCDeWAH9pW1gD0LNBrcx5NVp9PJZDKNRsMwTE2U7bBhw5ycnNq0aRMeHm40GnU6HYJ5JBIJ00jiaLgfEBAAzPf9998nJSWZzWadTicSieypL5FIFAqFVqs9ceJEaGjojBkzRo8e3Yhwf+nSpatWrQLcDw0N5fF4DMMYjUYW7tvr4nW3k/3fVatWeXt743GCTWSKovr168fj8cgTCFgfpDr/+te/EOTj7Ozs6ur63nvvWSwWEkhKLmvv7uTx1sSx+8DEycnJTz/9NDp2x44dnyDvPtA8n88/duxYjX/9rbfeQkjVnDlzRCIRRp/BYEBB0zrGqb3xaw/uL1u2bPXq1Zs3b969e3dERIRIJNJqtUlJScePHz9z5gwpb5eTkwNmHhbu2+v5aGfhvr0e2DTtLQ3uWyyW27dvg82MBFViOj1//vx7772HyYoUP+FyuQsWLMjMzLRYLEjWrbu/se+yFmAt0GhwH7DbaDRKpVIE8et0OqzL27dvjxB2o9GIkJ4GxAozdsTRcH/SpEkI6li1apVQKIyKiqqb+AzfXavV7t+/H8lGffv2bcRgHhJDDIaQuLg4Fu7/zWF8/fr1Dz74AI8TZ6uADmLUqFFpaWnYWX4gFaysrMxkMmFtgAIxcrmcRO/YQnl7utme05TMPCKRSCqVCoVCNzc3BCNRFBUaGmpneNltbi7vPoqJSiSS5OTkoKAgBNpRFDVmzBg+n4/MGZxjNBoFAoHdL2DnDXtwf/ny5UFBQVu2bNmzZ09ERATYjVi4b2mosHDfTgdsouaWBvfr8I+Ul5enpqb+9NNPBPG3bt0ac9eIESNOnz5dXl5eR0HDhvZQ9nOsBf7bLNBocF+r1arVarPZjJxdUPRwudz27du/9NJL8fHxUqkUZDU6na5hZCBMbeJouD98+HCQA8TFxYHsLyEhAdsXtanzV/yAVCpNTEwMCQmhKMrHx2fUqFFisbjWk+turDV2H3CfEAKycN/y90ShUICBh4TluLi4+Pr6LliwABdGFi/Ku8DNX1hYWF1dXVRUFBISAsTft29fi8UC11RpaSmcUnU8wCwWS3PBfY1V1q5dW4Pyu3XrBv39/Pzq7ooPv9tccF+j0SBzJjo6+q233qIoCsutMWPGqNXqhIQEuVyusMbwJCYmNmDc1QH316xZA7gfGRkpFov1en1ycvLx48fPnj0L7/6dO3dY7/5jDkcW7j88ppqypaXBfYvFkpeXV1paWlVVRWZOcoyqugKBoEePHgT0w5nYqVOnmJgY9DrbSfUx+yF7GmuBf44F/k+ZLeyLlZSUFBYW1pd3HyAeUQEqlUoikQQGBoKPfNKkSSaTCTXMlUoln8/X6/VAzEqlUiQS0TSt0+kSExPxLEdJET6fr9PpUKlepVIZjUZSNhxTlV6vl0ql8fHxIODDZ/V6vbUsicwe775Wq5XL5SgFIJVKVSqVTqfTarUSiSQpKSkmJkav16ekpPB4PNQn9/HxoSjqmWeeUVtFJBIhHEImkxHaciQIgsscwQYajWbJkiWYmObMmYNwf5yWnJysVCoPHjwIXKK1CrZE4uPj9+/fbzQaExMTVVYhyQ8URXXt2nXu3Ln24D7K/Vy4cOH69etpaWmZmZn5+fmoS1I3Rcx/WV8HLrf9UkgCA9FbRUVFdXU16mdZLJY5c+Z0794dP5OHhwfWdUOHDpXJZLZXsD2GG6m0tBQ3Qtnj3bt3255Tr2MUuygpKSkoKMjLy8vIyLh58+aVK1cGDx4MxTgczsSJE5lGEvA4vf/++xRFPf3008OGDaMo6u23305KSgJJrtlsBues1Br+bu+2zQX3kfyjVqtDQkLc3Ny6du2Kijwff/wxKnugBAde7Slfd3tQUJCTkxOM7+TkNHv27Pnz5wcEBNiWt5NKpZiyWLhvaZCUlZWVlJQUFxffuXMnPT395s2bFy5ccHJyIttrQUFBDMMgobzu36u53v1H8e4LhUKFQmE2m3/99dfff//9orWuHHLT8/LyEMD2QF25BvWLWj5UWVlZVFSECfzs2bNffPEFYUB2d3eHm+bnn3/GJ4H4wbtgsViKi4vZmP5abMo2/SMt0GhwH7VvkKgKKPDLL79gx23r1q0hISEpKSlKpfLYsWM6nU4sFmPbXS6X83g8hPXHxMSsWLFix44darUaJcRlMtmRI0cUCoVEIpHJZMnJyTweDyhEJBJhzYBEvUOHDhkMBqlUihKJIPsXCAQPl9nSaDQ0TSsUClT+wvpEqVQC3EdGRiYnJ+/fvz8wMHDPnj1arRYQsHfv3idOnIBWcrkcJIYajYbP5wcEBCxfvnzHjh14NykpKS4uLiYm5rPPPgOTgL+/v0qlkslkZrOZx+NJJBK9Xg8+QbFYvHz58nnz5q1YsQKsmkePHtXpdJGRkSzcb/B4LCgoABavrq7GAeg14afH8Y0bN95++20SqU+KOH755ZeE1s2eAqmpqSRM/8KFC1OnTiXB/fY+Ukd7E8N9iURSM1Rffvllb2/vt95664033uByuT179tTpdAzDiMVio9GI5TcKxjF2pLngPsqjSiSSDz/8kKKoGTNmAJezcL+OPtYC32Lhvp2B1UTN9fXuNxfcRw4MpnF045SUlI0bNxJKfiRQURT1/PPPG41GElFZUVGByH44MVvgEGBVYi3QxBZoNLgPeErTNMrc1DDB/+c//4G3JjY2VqlUxsTEhIaG9u7dG5vvfn5+8fHxRqusWbMGZTiBurp27fr9998bDAaQauNx3qVLF2zNJyUlwfn9ww8/wPX+9ddfh4WFgQET1b4kEok97z7iiFBdCJgbpXkSExPDwsIOHDjQsWNH3JGiqE6dOiFw/8svv0S6rVKp1Ol0sbGxS5YsefXVV3Em1OZwOJ9//nlsbGzbtm2Jd5CiKC8vL09PT2dn5xkzZojFYoFAcOLEiZ07d06ePNnX15eUa23btm27du2ioqKkUinWTiqVivXuN2A8ANBbLBYS0FlaWkqOy8vLa9Zjffr0wW/n4uKCH8vFxWXLli2PvB0uDtYIVHm0fRQ98uMPn9DEcF+r1Uql0g4dOri4uHz99dfjx4/38vJq1aoV6HqwsWb7ytiR5oL7qNqxceNGrMPDwsLg6mPh/sNdqyW3sHDfzsBqoua64T7Kt6OMNBifmwvuw6lPQDy6dEVFhV6vb9Omjbu7O+FBBrPCwYMHq6urCSVaaWkpSfxtycOB1Y21QBNYoNHgvkKhgA8beXJms7l3795OTk5du3aVy+WJiYk0TY8fPx4Y68svv0xISEBAy44dO8B46OvrS1EUNgRqot63bt2qVqsFAoGLiwtFUT169EhJSUlMTJRIJIjhGTVqFEVRrVu33rlzp16vT0hI0Ov1KH8TFRVlD+4DyiCMB7VyVSpVfHy8SqWaP38+1HNzcwOYcHZ2drJKWFjYwYMHzWazRqOJjIxECAfOoSiKw+G4u7t7eHjMmDFj8+bNZKuR1AehKIrL5U6fPv3YsWNRUVFbtmxp27YtXMuI76coysPDw9fXF+RF2MVm4X4DBgAC6LGNi4/jgQFSnZoI+5q9FPzKnTt3Jj9B7969z549a7FYsrOzS0pKyEXsKZCTk1NVVQWkTqL27Z1cd3sTw32j0bh7926MsvXr1y9duhSDbu3atYiJxyjGJpher2fsSHPBfYlEYjKZxowZQ1HUm2++GRwcjJxjFu7X3c1a2rss3LczsJqouQ6437lz53nz5i1btgxwPyQk5MCBA80O98vKyoqLi4krx2Kx3Lhx41//+perqysKnxM6tW+++QbOHYRx/k13TEsbOKw+rAUabIFGg/sIT0eGLvjp3d3dnZycsMWm0+kWLlwI+Pv222+r1Wrihu/evTs83IsWLVKr1Zs2bUIMzOjRo5VKZXJyMtBzv379RCIRkn21Wm1ERARc5iNHjpRag4wFAoFQKOTxeEgLtgf3ARewOMGUZzAYdDrdzJkzvazSunXrkJAQUOu0bt2aoihfX9+IiIiEhARkBYAUrH379mPHjt2wYcPx48dnzpyJNUlISIhIJFqyZMnChQu9vb0pihoxYkRgYOC6deu2bdsGBs+NGzfi+/br1y8oKEihUAiFQg8PDycnpyFDhmi1WpqmRSIRG8zT4D6NPFo4eBAQj0tduXJl6NChPj4+4KDET8bhcObMmYMTiM++7uAcZJKRlFxCvtkwhZsY7stksp9++snV1ZXL5arVaqFQiMXPF198gewUhmHAlosIfsaONBfcNxqNGzduBCHPrl27Zs2ahVU3C/cb1v2a61Ms3LczsJqouQ6436VLl/nz5y9btgxlpENCQg4ePNhccJ/46aurq0luQHV1dVZWFrruggUL4LDo1q0bpjLUxExMTLRYLCTrt7n6OXtf1gItxwKNCffhk0YO7pYtW0CR++GHHx46dKiGr7pTp04URfXs2VMqlYrFYq1WGxUV9fbbb8O9vWHDBpPJZDAY9Ho9Sh317t0b8cTvvPMOh8Pp3bu3TCZDwVqNRrNw4UKKolq1ahUQEIDimhqNBkSfRqORx+PZg/tSqdRsNjMMo1ar5XI51lDnlEEAACAASURBVCcbN27EZNG2bVu5XG4ymcAvBO+vt7c3j8c7duyYTCb7+uuvMaf88MMPEokkISFBoVAg/sfX11cikRiNRqFQSFzIc+bMQVKvTCZTKpWxsbHA+h06dEA2sFQq3b17N645ZcoUpCZjt4H17jdgnNju5BIgnpeXJxAI2rVrhzUYifvs0qVLVFQUwkNxr0c+HrBLQNYD+PfvMEI0Mdynafrf//63u7u7r6+v2SocDsfZ2fmll15CxQyshLHsrIOBqrng/qFDh1577TWKonr37p2YmFjjg8T2Ggv3GzBYmvEjLNxnmlXswX0nJyfA/eXLlwPu7969uxnhPkjMbJ36pNOSWVer1T777LMURbVp04bL5aIEbw3B2o4dO/Bx1sFPjMYe/JMt0GhwX2EVvV6vUqkUCgXKXzs5OQUFBclksmeeeQZP5eDg4MTERJDT8/l8V1dXDoczcuRIs9kcGhp65MgRpVLZuXNnb2/vl156SafTGY1G8CRSFKXVapOTk5EgO3z4cKwTGIZBEAKIPmmalsvlwPq1puqqVCpQ+pDiAAKBYMSIEVAvMjIS5YHlcjnDMO7u7hwOp1evXvhe27Ztg79/xIgRYrFYoVAgTglhIViQYKth8uTJrVq1qgkzAFu/XC5HYaD/+Z//adOmDZjOlUqlWCyWSCTTp0/HDLV27dq4uDiaphMSEljvfsOGJQHiFRUVgPuXLl2aO3euLc08lmdDhw49d+6cxWLJyMjAvQhjTx23JtcnZJoVFRXEBVXHB+291cRwX61WIyNl6NCh8OK/+OKLHh4ePj4+fD5fq9WiSFxNjbxHVo9GF1WpVAzDyOVyLOP5fH5kZCRScRAy1L9/f0X9q9sydmTLli2YNGbNmmU2m7du3crG7tvrWi25nYX7djp4EzXXDfdraIiXL1++atWqjRs3Njvcv3fvXmVlJcA9jgnNmsViycrKqqioyMrKGjduHNxzHA6Hy+W6urq6u7tPnDjxwoULLXkgsLqxFmgyCzQa3EcMgNlsBgXe5MmT4d2v4eT54IMP8OBfsGDBoUOHBAKBTqerYa9/5ZVXUM8oLi5Oo9HEx8fHxcXt3r0bkHrixInx8fFisfidd95BZqFGo4mJiZHL5fv27aMoqn379lOnTjWZTHw+X6FQgFAc3J0Mw9jz7uv1erVajRB/lUqVkJAQGhqKqWHEiBFCoRBUPyaTKTg4GIm2U6ZMAV/nyJEj4YYHCY9Op+Pz+RERETht5MiRuHtycjL4DblcrkwmO3HihEKhMBgMa9ascXV1dXNzGzNmDI/HU6lUiYmJJpPpxRdfRJiTUChUq9USq7Bw/++MgZycHDweDh8+TH41/EyI/Zg3b57t9Yn7p7y8/JEOfkT2V1dXE9f+EwT3RSIR8PHUqVMZhpHJZBiqNTvg0dHRgPsGqxACe6Y2aS7v/rvvvktRVMeOHXU6nUQiQaoMh8Nhvfu2/bnlH7Nwv7ZR1XRt9uC+s7Nz165dayJkVqxYQeB+eHh4cwXzVFVVkWxdVDwE9Mf0Dq8/jmsYeJYuXfrMM88gSpME9rz88stqtbrljwhWQ9YCjrZAo8F9xOFoNJro6OiahNohQ4ZQFPXUU08FBAQA93/22WcSicRsNguFQplMRtO0t7e3k5PT66+/Do+7yWSKjY3t1asXYNmWLVuQSjt16lQMYJVKJRaLDQbD2LFjQbgLrkCwfyoUCrj25XK5TGaXdx88PGq1WqvVisXiw4cPk92D0NBQkP8YjUa5XI6gQA6HExAQIBKJwsLCQAQ0atQonU5nMBhomhYIBIsXL0bs4Jw5c1ArQKVStWvXDiscrVaLcgFHjhwZMmQI3A+RkZGxsbEMw2g0msTExA4dOnh4eLRr1w6XVSqVLDPPI/s92d4tKSkBWMdT4d69e3fv3gUQ37ZtG5n0Sf70gAED9Hr9I6/fZCc4zruPNSr87tjLomna398f1Fjr16/XaDRyudzf3x+p5N988w3qP0ilUvBdYo+LqU0cDfeB5uVyOfh2tVptTZgfMg24XO4vv/wik8ni4+N37tyJn3jq1KkKhUKn08lksri4OKT91KF/bd/p/7WxvPsWx0tBQUFpaWllZWVhYWFBQcGNGzdSU1PxU3I4nI4dOw4bNuy999776KOPxo0bN378+Al2ZJIdsXN6ozWPt8rEiROnTJkyYcKEN998s3v37pjzW7Vq9dxzz7333ntTpkyZNm3a5MmTP/74Y3s3tqP+JHvnN1b7xx9/PHny5GnTpk2ZMuW9994bMGAAokzbtWvn4+OzYMGCoKCg1atXr1u37sCBA3FxcUKhkGGY+Pj4Y8eO2fLu5+bm5ufnFxUVgQCn+r44vgfVfocatyN8bWTmd3Z27ty589KlS/EBuGawSYtkgAfq0lRWVpKHS+33YFtZCzyZFmg0uA88IRKJGIYRiUSYO7p169axY0cnJ6ehQ4eKxWK5VRQKRXJy8ty5cymK6tChw+TJk8Vi8YoVK95//3186qmnnvr0008RxW4wGH7++Wdw6+7bty8mJkar1SIYY/To0Q2A+9gHwCvCFVCor1OnTtHR0ajUA6/npEmTMGXs2rVLqVROmzbN09MT4Unw1iuVSqlUOnXqVKCldevWgcX/wIEDXl5eTk5Ozz77LLg+EbfTvn17JyenQYMGYcmBFAKpVOrj4+Pk5DR48GBUCiMxEmzs/iPHFOHIx/Sdk5ODj6Snp+Pn8/DwwBIL+yfjx4+/ePEiccY/koHnkQr8/RMcBPfJfhepMqFQKNRq9VdffYXlt0gkQph+VFQU1qtjxoxBzyS17WiaZuyIo+E+1vAg9kXmulgsnjhxIkVRgwcPDg0NxWZgQEAAl8vlcDhjx45FkgyybrDMtqP7I5pZuG9pEikuLq6oqMjJybl582ZGRkZeXh6BaBRFubu7t27d2tPTk8vlAkbbvkuOwZz28Cs5wdEHTk5Onp6eXl5etkpyOBxs5BKeX0er0YDrOzk5IejFxcWFKO/k5OTr67to0aKgoKB169Zt3rx537590dHRKJWTkJCQkpJy+vTpixcv3rhxIz09vaXBfYvFcvHiRTB3IUCXUDKMGTMmIyMDkT8ki7fSKngiVFdXPwD9m2QcsDdhLdBEFmg0uA9qS4lEcvjw4b179z4w+/Tp0+fQoUMMwwAlKJXKTz/9FOe4ubmhGjb+7dGjx08//RQTExMfH8/j8ZRK5TJrNp63t/fy5cvlcvmaNWtw5rZt2xoA95VKJajHcbB7925vb29nZ+cRI0aA3xPhNAzDIGO4Zq2CLNuuXbu6urp6e3uDVgjJvjXLg5dffhlJQrGxsShRtGTJElC5T548OT4+nmEYhUKxevVqqP3jjz/qdDrkJYtEok2bNoFBbMqUKbCPRqMhxEEs734d4yAvL6+6urqwsBDOGFTRslgsPB5v4MCBXl5emOhh3tatWyNzy5aPn6wW6riLo99yHNzX6XQqlQqbRdj7qqF5hevL19dXahUUgUae+uDBg0lpLWxJKezH3Dsa7kMT6F8T0ZeUlBQREYF1/i+//GIymcxmc2xs7Ny5c7Gc++STT2qyeHU6nVqtRtk+sViM5TdTT2HhvqP7PK6fn59fVVV19+7dy5cv37hx48qVKySHHkDNlsgYk2fLeW3Tps0DQSPQDb3RVk+gahc7YntmUx4/rCfW/KC18ff3X7169aZNm3bu3BkSEkKqwSQlJR0/fvzMmTOXLl26ceNGRkZGbm4udlOJd79pOo+9u1RUVGCbd9u2ba6urs7OzqiKgx9r4MCBthXTbcOEcEFC/mPv+mw7a4En1wKNBvfFYjFYurVarb+/P8aYk5PTv//9b8xi27ZtU6vVOp1OoVDUeBZfeOEFtJM5ffjw4V9//fW+ffvAEKLX63k8HsMwmzZtwjlLly49cuTIyy+/7OrqirxYcAHVK5gHHnS4Nk0mEyh0uFyun5+fUqmEMx4+RbC4DBw4UKvVxsTEODs7czicfv36AUMIhUIEOmMZ0KdPH9CYaLVaEgwdFBRkNBoRuUSSGbZt26ayZjeigMB3332HmXfNmjXY/QApChu7X/egIkRscMzg1WKxBAYGEgJmLpeLIiyDBg0SCoW4IPkgWR7UfSNHv+sguE/TtF6vh0cfxRxompZKpdiJat++/YIFC7Zs2RIYGLhs2TJscHl7e0dERKhUKpLFrlQqGTviaLgP4iyTySQWixE3PG3aNBDyCAQCg8EgEok0Gk1gYGCrVq1cXV0/+eQTzC1IH9JqtTKZjIX7ju69Db5+VVVVQUEBgnmuX79+9erV33//vU+fPrYwFAjZ1dXVw8PD+f8K57783+b//z9HQ2cvLy9XV1fsKnCtAhcPKdXiaAUa9/pOTk54wHl4eIwaNQqRPJs3b967d29ISEhcXBxoeQ8fPnzq1Kk//vjjypUrN2/evHPnTl5eHuD+32QsaHBHqvWDCOY8evRo//79YShnZ2eQZNT8u2LFCsR/FhcXI+7fluUTGQK1XpZtZC3wRFug0eA+iRmIjo4eP348Zupvvvlm9+7dHA7Hyclp8uTJyGSVy+WHDh3q3Lmzs7PzoEGDgoODw8LCYmJiEHqbnJyMkH29Xq/T6ZKSkg4cOICtxlWrVtE03apVKy6XO2vWLKlUCsKcesF9rVar0WjEYjFN0yaTCZW/uFzu/v37gXIYhtHr9QKBAI+OMWPGKJXKTZs2YTb/9NNP+Xw+uH10Ot2OHTtcrfLuu+8ajUbsD7z++usAVREREUqlEksLJDN4eXlFR0eD0geUoFgOcbnc2NhYmVVY7/5jjqiSkhJM1sD6V65cGTduHLqKm5sbMkA8PT2HDRsG7p2ysrK8vDxsBZDlwWPey3GnOQjuYzTRNK3T6VAzi6bp7du3u7u7g7Qeld2QK0+gQ2BgIPz6crkcCSSMHXE03NdoNHFxcceOHcNXCA8Ph2u/Y8eOX3755bhx495///0pU6a89dZbUH7QoEHjxo1D/jFygRQKRR3LFTtf669m1rtvaRK5d+9ecXFxdnZ2VlZWenp6WlpaRETEK6+8Mnjw4D59+vS1yjPPPNOjRw+89ujR4+mnn+7evXu3bt26du3axSqd7UgnB0tbq/j6+nbs2BEqdOjQoV27dp07d+7SpUs3q3Tt2vWpp55q37492mvV1MFq2r18u3btOnTo0Llz5+7du/ewCgw7fPjwWbNmbd68ee3atZs2bQoLC4MDTq1Wm0ymX3/99ffffz9//vyff/5569YtwP2CggIkULWQSRVQPisrq6qqqri4+Ntvv8UUAfq7Nm3aODs7v/jii2lpaaSb40wwudWk/D7s9SdnsgesBZ5cCzQa3EfIPuLRX331VezGgtUe8KJv374Ia5FIJPHx8RiBiB8wWwWoHQmsarUaDD9I7QUoWbZs2c8//4zhqlAoQKGD7X6c/DipugjqBeO+TqeDqs7OzsA3SEgym801rMNOVvnmm28UCsX8+fMB99evXy+VSms+qNVq1Wo1ceQjRAfKg3W0Y8eOEomEpmmxWKxSqdq2bevu7t6lSxepVIodBqxqunfvTlHU008/rVQqoZVSqUQKARu7X/e4Ki8vL7KKxWLRarU+Pj5g3YGzDSuujRs3WiwW+J/I04jw9tiyatZ9L8e96yC4j40vmqYNBoNcLscA+e677zDufH19ya6at7e3i4sLvKogocLyAICesSOOhvsoUnH06FGVSmU2m9euXUvWJ/gKWNHhFQ9yzDkxMTEmkwm19rCNZucb2G1m4b7F8VJRUYFyeHl5eUVFRRkZGdevX//zzz8vXbp08uTJpKQkbLSCTDk8PHz9+vXr1q1bu3bt6tWrV65cuXz58oCAgKVLly6xI4sdLIsWLVqwYMG8efPmzJkze/bsWfdl5n2ZNWuWn5/f/PnzFy1atGTJkvvND/5dZEccrP5if3//pUuXLl68eOHChfNtZPr06Zs2bdq2bdvWrVu3bNkSYRWNRqPT6RITE48fP3727NmLFy9evXo1LS0tMzMzPz8fcJ9wZTq+79R1h+rq6tLSUhKliTIsoaGhTz31lK1rw9fXt2vXrnK5nHCyWSwWkqHLwv26TMy+98RaoNHgvlqtrqngYzQaTSYTal707NkTrnSUoeVyuTt27EBcAZ/P9/Dw4HK5Q4YMMRqNGo1GJpPFxsZaufsVCCegaVooFAIB+/j4uLi4TJ8+vW/fvm5ubiNHjkxMTJTL5cDuSqs8JjMPfOd4ZRiGbPYhiFkgEIDQ88033wS+DwoKUqlUn3/+OfDQ+vXrQUkONs8uXboAfGzfvh0hQBEREYAgQ4cOVVkFsUmoY9q/f3/ULjUYDEajcebMmTj5tddeI9AEYRj4LBu7X8fIIs4YkCO1bdvW1dWVuK4HDx6s0+ksFgvJ3wXuJ+m5BQUFtnN9HTdy6FsOgvtKpRIbbqg6h8AzLG7d3NxCQ0PBTFWToyIUCvfv349++Pzzz5NsdZqmSZ9kHhJHw31stYGMSy6XBwQEDBgw4IUXXhgyZEjPnj379OkzbNiwvn37YmkNas7Bgwf/61//wtoGUUAIL3xI90c0sHDf4ngpvS8lJSX5+fkZGRl//PHHuXPnzp8/f/z48aSkpPj4eI1GIxQKw8PDQ0NDt27dunnz5g0bNqxZs2bVqlUBAQFLlixZZF8WOFiWLFmyePFigH5g+oCAgJUrVy5dunTRokXz5s3DGmD27Nl+fn7z5s2zQdSPdehg9RcQ5RcuXLh48eJly5YFBgauWbNm7dq1NflsmzZtCg0NDQkJ4VkFBXCSk5NPnjz5xx9/XLp06dq1awTuFxYWgmQJe62O7zt13aGkpARv5+bm4qCsrOzevXspKSmdO3emKKp79+7E0+Hu7r5x48aUlBRyRYQkEccQaWcPWAv8F1ig0eC+wSqxsbExMTFwtk2ZMgVh65s3b0bw5Y8//sgwjNlslkgkWG27u7uDkhJJriaTSa/X8/l8kUiECwLTY/0wfvx4uG+joqIkEgnDMMgPrhfcx7LEYDCAfqdnz54AOijZK5FI9Hq9TCYjcX6I0f/www89PT3d3d1nzZplNBoFAoFQKAT9P8KWpFKpQCBgGGbjxo3IeXr33Xf1VkEhMLIG0Ov1cmsNL5lM1rt3b6wWPvzwQ7hjkQcMzxbr3a9jgGFGPnfuHAozw4xYobm5uU2bNg3zPiL1y8rKiOemjms2y1sOgvsqlUomkykUCqPRGBUVBeDbvXt3VNQCzwbC4UQikV6vBwVKx44dsbEG1qlmhPsymcxoNMbFxalUqqNHj2JhLxQKlUplfHy8QqGQSCQGg4FkwE+YMIGm6ZiYmJSUlMjISI1Gg6LXTP2FhftNMxCKi4tLSkru3r1769atwsLCjIyMa9eunT9//uTJk0ePHj1y5EhCQkKNR4bH40VFRYWHhx84cGDv3r07d+7cvHlzcHDw6tWrV9mXFQ6W5cuX4w7Lli3DwmPx4sVLly4NCAiA4/yBnYcAO7LcjjhY/b849VetWhUYGLh69eo1a9YEBwevX79+w4YNO3fu3L17d3BwcHR0dGhoqMgqWq3WZDIdOnTo1KlT586du3z58vXr12/fvp2VlZWfn0/gftN0m0feJc8qFouloqIiPz8f9RAx//v5+eFJ0bZtWzyRKYr64osvzp49ixieoqIi1rX/SAuzJzyhFmg0uI/4Fh6Pt27dOoyoZcuWodFgMIDC0svL69SpU2KxuAamg9CmW7dua9eu5fF4YNGGZzE5OfnAgQMKhSIhIQGhLz169HBzc6tZi7dq1ap79+5mszkuLg6AoL7BPHK53Gg0RkZGxsfH1zD0Dx06FDEA69evB8m3Wq0eN24cUjy7du0qFot5PN7UqVORmPXzzz/jvlqttnPnzsj3d3JyAjDSarWzZ89GGMmkSZNMJpNAIEBhL9jk6aef1uv1sbGxWq3Wz8+Py+XiCp9++mlUVJRCoUhKSlJa8yNZ777tiELUTVFRka2rfvv27QiFwsYLLNyuXbuDBw/aJmCRTQDbC7acYwfBfdvwNpFIRNN0aGgolkOvv/46wzBYWvN4PJ1OV8Peg5p3Li4u+/fvFwqFSHjFopqpTRzt3a/tnn+1JSQkgO1XpVLVlAxbsWIFh8NxcXH5/PPPsYA3Go0qlUoikbCx+5YWLJWVlah7XVRUlJeXd+fOnZs3b16/fv38+fNnz549efLk4cOH4fUAv2psbGxUVBQQ/65du7Zv377NKpvuy0arbGgqWW+VdevWBQcHr127ds2aNUFWCbTKX1B61aqVViHAfeXKlQRhBwUFrbHKOqvgatC9ab7Ixo0bYbnNmzdv2bJl69at27Zt2759+549e/bu3RsWFhYZGcnn8xHjajAYUlJSTpw4AQpOgvVzc3MLCwuLi4vhT2kJ3n17XZ7oFhMT06lTJ5CA45Hh5OTUvXv32NhYlH4D7ifuodLS0qqqqtLS0sepuW7v7mw7a4GWYIFGg/t4BhuNxunTpzs7O1MUtWPHDqlUCoccamF6eHiEhIRorTJ16lQ4+IcMGRIVFaXT6SIjI6VS6U8//eTv7282m5OTk3k8nl6vT0pKQmFUQHB/f39AYTAM1hfuI5ZGKpUqFAqpVPr111+DI//999+vqdBB0/TkyZN9fHycnZ1dXFyGDBmCSP0tW7YAxI8dO1atVovF4qFDh/bu3Xv48OFt27b19fWFT5SUAPPy8nr33XdRhwsZBc899xxFUT4+PlFRUWKxeM+ePd27dx85cmSrVq28vLxmz56NnRAEO8GXyXr3LRYL2DZthwo2Z7///nvC3+pslU6dOvXr1+/atWs4mcTll5WVgajB9iIt59hBcF8qlaLjaTQaZIMsWrQItca++uor0MiSilQKhWLKlCl4+M2cOVMsFptMJhLwxtQmzQX3kWePHTOVShUYGAi1J06cqFKpFAoFxg5tFZaZp+X08wc0IXC/uLg4Pz8/MzPz1q1bqampV65cuXjx4pkzZ44fP56cnGwwGBDWJRaLBQJBTEwMYnv27du3d+/ePXv27LovO62y475sbxIhMe6bN28GeibLDbIewJLAiurXwYMOqL3ZKtY1y184e/v27dAdX8TR6uMuu3btCgkJ2b17N1D+3r17Dx48GBERER0dzefzwW1lMpkSExNPnDhx6tSps2fPXrp0KTU1NT09PTs7Oy8vD3AfLJwP/MQt8N+SkpLy8vLTp0+PGDECm/DEx09R1C+//JKWlkYWBg/rX1pa+nAj28Ja4EmxQKPBfcSiJCUlwV9OURQK/SBRdevWrRRFtW7dGkQ3DMNERkYC7qO0VufOnUeMGNG2bdtWrVrNmjUrKSmJ5AvGxcWREHZfX1945U0mE+jw6wv3pVKpSCSKj49HZPOOHTt69uwJxPDMM8907NjRw8PjnXfeee6551q3bv3CCy/QNP3rr7+iGBZOGzhwYIcOHdq0aTN58uQPPviAy+X2798fviiapmfOnInTKIrq1avXF198gZXM119/TdqHDx9OUVTPnj13796NgjKLFy/Gg42maR6PhyClfzjcr7YKgnZsnfqXL1/G1pAt7zWHw/nxxx/JqCspKSEx+gT3k3db1IGD4D5N00DGer0ee/Fjx47lcDhcLnfDhg0oMCeRSBBXRtM0ql97eXn95z//AUpu3th9xo6A7hZq6/X6mmBuV1dXFxeXDz/8UGMVsg5BHKCdy9TVzAbzWBwvVVVVlZWV5eXlJSUlBQUF2dnZ6enpQPxXr169ePHi6dOnU1JSkpOTzWazwWDAWg4xk3FxcTExMdFWiYiICL8vB61yoKkkLCwsNDR0//79ZO2xZ8+e3VYJscouqwBY79y5E/+GhIQQbL1v377Q0NAwq0BrfIWDBw86+kvgRuHh4REREZGRkVFRUVZzRiNOFSQTWq02Pj7+8OHDv/7662+//XbmzBnCyZOZmZl7v55ui6LlqbvnVlrFYrFkZmYuWLAAQfzYHMbO56hRo3777beSkhLsCVdVVZGN5du3b9d9cfZd1gIt3AKNBvclEolQKKwhUujVq1fr1q2feeYZlJIFRUZ4eLiLi4uHh0efPn1EIhFSf9auXQuo7f3/sffdgVGU6f+z6QkQqmDB8zwVEbCXs3w9y/n1zrMcNhT19OzCUQSkI0goUpWOEqQkISF1+2520wshIRBqGklIQnrd7G6ym93s7vxwPt88v7mQjaLZJOg8f0zezM687zPPvDPzeZ73KUOGIFe6l5fXqFGj1q9fHxwcHBkZmZiYiPBfVNNkGGbRokWUtSY8PJzM/HzXhUsuOhKJJIKjoKCg22+/HasNDMNMmTIlOjo6JiYmKSlJpVKh3tbUqVMHDx6MZ37MmDGvvfba999/P3HiRDc3t+eee04ikaSnp0dFRc2ePZsCcz09PRcsWLBv375nn30WucAjIyPj4uKUSmVqaioOAxgdN24cHIeio6PHjBmDXP5Dhw697rrrFAoFDK4jR45cuHAhFiuQNjE5ORmXRnoOwzA33HDDvHnzli5dunLlyg0bNmzfvn3v3r1hYWEKhSIhIeHo0aM5OTkFBQVlZWUURNXW1maxWK6uSoGOTrJzxLIs/C+RDjkoKMjf358qwnh6enp7e99222179uzBk6bX65H0A//ycf/AfBRdB/fj4+NjYmISExMB3+H45OHhERYWBh85tVqdkpICvTo4OBjlaUeNGgV3sp6dYQhVw41NKpWKxeLo6Ojw8PCgoKB//vOfdI/Gjx8vd16uS3GFpFQqsQKGTKOXAjfxdL/44otarZbSEFGq3Cvs/sfDBbjPup5sHHV0dLS3t8Ofp76+vqamBi49xcXFeXl5J0+ezMrKOnLkSGpqakJCArwi5XK5RCKJ6aTIToqIiAjvJASY9sE2LCwslAtXCwkJCQ4ODuqkgxxBDSEEj38PHjxI2PrQoUNhnXT48OFO9sMjIiJczTzGAriPiorCZxEuwcT3LwAAIABJREFUcLDcabVaYP3s7Gzk2i8oKCguLibTPrz229razGbzgEq672zy0nekpqYGx+zdu3fkyJFkhvPx8fHw8Bg7diyKtNTV1eEwMhj1YPh3NqiwX5DAwJFAr8F9WALi4uLWrFkzd+7c9evXI3mORCKJioo6cuTIN998s3bt2hUrVmg0GngERnG0cePGyZMnv/zyy8uXL9+6datYLJZKpSqVKjU1Fa90rVY7fPhwVPuLjY0NDQ2Nj4+Pjo7GW+lKrfsajSYuLi4mJgY1v1COZ9myZVOnTv3www83b94cFhaWlpa2hEu8EBYWhjhgiUQilUpXr179H442b9586NChtLS0/fv3r1+//vvvv9doNAqFIjo6Gunz161b9+yzz37wwQeBgYFAHocOHVKr1W+99daUKVPWrl2Lj1ZYWNjatWtXrVoVEhKCDP3h4T++62NiYlQc/T7hPoA+AAFlWrBarZ9++illY/Tx8YE95oUXXigsLGRZ1mKxGI1GPFpkxcF+el8PnAePOHER3I+KisKcTE1NVSgUFEA/adIkBIsjv356enpsbKxUKk1KSrrxxhsBncPDwzUaDdQAhRPqL7gPYwF0Y7VavWrVKiwP/vvf/ya4jwDlmJgYSMDJFTjdLcB91vVEz7jVaoWBv7m5uaGhoaKiory8vKSkpKCg4MyZMydOnMjKyjp69Gh6enpKSkpiYiIMIupOgmqKFM9IzibrE5JyJJFIxGJxTExMdHQ0PmfYQgeByYkP4rvAa7FYLOEIvYFxOUd9chEy6OF4liHReI4SExNTUlKOHDkCrH/mzJmioqKSkhKyJZEbj9lshkWJD4X5bddPpZ81Av8TYOUIp5WXlz/99NMww8FfF+h/1qxZFouFUvTAHZS+Lz9rSOEgQQIDTAK9BvelUimqaCGfBip6RkVFoaysUqnUaDRhYWGHDx8GgE5OTkaRLJlMBrd1hUIhlUozMzODgoLggZCenp6YmLhgwQI8gfPnzxeLxWq1Gng9IyMDiB8d/vxEnEhNGB8fjyQ8mZmZ8DuKjY2Nj49Hip74+PikpCS5/MesoOHh4UeOHImMjExLS9u7d69ardZoNEglFBERAa/9yMhI1O2CmwR8iJFRRCwWJyQkIJ2ISqUSi8WBgYEajSY8PPzo0aNQBuB6AR9rxDf/zuE+1vopScKRI0cQ/ADTPsMwXl5eQ4cO/fLLL/Eeb2pqooPtdrvJZDIajZRnk34aYE/fj+y4CO4DzWNGAY688sorU6ZMWbBgwZEjRxDMitSxSMKj1WqnTZv2/vvvT506NSIiAqgFaEDRHfUX3FepVPHx8fDEE4vFP/zww1SOvvrqK2QHR/2KhIQEqPTd8f4T+wS4z7qe7Ha7w+Gw2+3wl2hra9Pr9c3NzdXV1ZWVlWVlZcXFxfn5+WfPnj158mROTk52dnZWVlZGRkZaWlpKJ6WmpiZxlMhRAkcArH2wjeMIr2tgZRVXkZrWn/Fh4s82AtYovaLVatFJXFwcGMYlJCQkuJp/jIjE2UlJScnJyRDqEY4yMjIyMzOPHz9++vTp3NxcLBpfvHixqqqqrq6uubnZYDDArt/e3m61WimwFRNnAMJ9crunlPx2ux3tjo6O+fPnUy12fGJQnzEvL4+y+KNWo+ufDGEEQQKukkCvwX0yrSG3DHKopaWlxcfHw6B+4sSJhIQEqAQSiSQkJESj0Wi1WpTAhFNmUlJSdHQ0XoUwny9duhSP3//8z/9ERUUFBwcnJSWp1WrUr8Xb84rgPqwmUqk0Pj5eq9VGRUXBTzEyMhJuCSqV6vDhwxTmKJFIAPejo6OPHz+OpCVwMYqIiECeH4SUAWDJ5XI42CQmJh4+fBgDRUVFHT16NCQkJCUlJSQkJCcnR6FQhIWFYZUD/MdxVYTBAwIefoe++4QAEMkHvL5w4UJYcKH1YT7cdtttISEhZH1hWdZsNhuNRv4eVz00vdqvi+A+Us1qNBp42Wk0msjISKwpYV0rKipKqVRKJBKooKgzjYcxOjoajnmYjYruqL/gPh5b+O4jSW54eLharQ4ODsZCn1arRYJRsVjcHeM/vU+A+6zrydFJmP94ePV6fUNDQ11dXXV19cWLFy9cuHD+/Pn8/Py8vLxz586dOXPm1KlTJ06cOH78eHZ29vHjx0+cOHGsk7I4yuyko31CGRkZR44cSU9PT0tLS/1vAnpO/m9KSUlJTU1NS0tLT08nYJ2RkQFmwTsuxNXsY9DMzMysrKxjx45BnsePHz/VSWfOnMnNzS0sLCwpKSktLa2srKyqqqqtrW1sbGxpaWltbYVdv1tn0QEI9/lOoe3t7Y2NjZjjZAn64Ycf/vjHP8KbH9trr7128ODB69ato8uhg13/fAgjCBLofQn0GtxHPSxY3ZA6LTo6OiMjA5Z7uVwulUqBrVEmk0AGkmzAJgcDf3Z2dkxMzKFDh7Zs2XLTTTf5+Pj4+fnt2LED3gVisVipVMbExERFRcXGxv4CZx74A0gkEgwdGhqakpKCUAG49ctkMuT6xAEKhQL7sWQsFosRVCCXy5OSkuB7gyq/EMLRo0dRwwge0oi7hfYCbhWKHysGHD16FLoHrh0iQjIEmPYFuG+xWKZOnYqwisGDB8MAIxKJXn311erqasqwSbYlNOilDMMhcEXvPzq91KOL4H5MTExERERKSgqM9zKZLCUlRa1Wp6enHzx4ED7uKSkpMplMq9Ui6j01NRXPQlBQUFpaGurfKZxQf8F9OPsh6gCp95VKJXQABZdZKyEhITo6GqAfWoGTK3C6W4D7rOuJIJTD4YAHf1tbm9Fo1Ol0zZxXT21tLcz8Fy5cKC4uLioqKiwsRJrOsxydO3cuNzf3TCed5ghg9WRfUU5ODqkf0Duys7M7FZBjWVlZndrH//3lY+sTHOVwBH7BPC7E1VeQk5NDg545c4ZEmt9JhYWFRUVFpaWlFRUVVVVV1dXVNTU1iNCFaR92/asI7nfwCBMcc89ms6EmV2Fh4eOPP87P1ePu7u7n5zdt2jTUb3H9YyGMIEjAhRLoNbiv6CWCmf/IkSPz5s2DHdff33/RokXOur9SuO+sn4G2/7fqzAPre0dHBxptbW1YUcW/tNJqsVjEYvGtt97q7e0NH32Y9keOHLlixQrC9+zVTy6C+66ez/0F9119XUKobl8+Ul1W8xB+o9frdTpdY2MjzPyVlZUVFRXFnVTE0flOwr99v+1ExV3/nnFC5zopl6M8jvLz8wudUJ9dEeRa0knlHBHEr62traurq6+vb2hoQOZNPtYnwwp71RK+OxaLBd757e3tlNsXSfMQzvTwww8rlUqk5GdZVq/X44qbm5tJcb1qZfALGYebk9lstnNks9kcDoeZo1/YowtOI2MfzVWj0Ujtywfk/8RvX37k1bhnwMF95MxB0R+GYYYMGTJ37lwk9Vd0RwLcv+oy81z+ftTr9eRbiZybq1atGjt2LCA+FSO76667FAoF/N2vxoetW54FuN/dY92f+wTrfrcT1RU7u8B9q9Xa1tbW2tpqMBgI8dfU1FRXV1dwdJGj8k4qKyu7MMDICXr/0VIO6gKvO2F21799c1mlHJVxBKFWVFTAb6e6urq2tpaAfnNzs06n0+v1cOOBvz6wsismRp/1iUuwWq0Uy9vS0pKenn7nnXeSNz8+Q3fcccfKlSvhZQr2fntw8BeLvcs3HTl229raBpRhDmk/yCmg24tFNDZNbNxiyhfS7SlX0c4BB/fVanVsbCyyWE6aNOntt9+WyWTJyckKJyTA/asO7vOztvEDaq1Wa2lpqcFg+Otf/4oqDQzDjBgxAm/badOmwabyG6tuKMB9J092v+0W4D7bh8RH/PDqMZvNcOxB8G5jYyNMyw0c1XNU10mV/UTVTghqSbdbcFrFEZ3d7ZHA3K6+MnACRx346tRwRBb9xsbGpqYmAH2DwYCKWki7CVNuH04T1w4FtGq329vb24H7CwoKJk+e7OnpOXLkSML9w4cPf+utt8AKPkOILhtQoNa1kuqud5vNxg/Xhg8tED8O7xlhd9dlr+1rbW2l0dEwGo1kW+x2GGRkam9vB9Yn6N/twVfXzgEH95Fhc8aMGc8888zq1avFYvHhw4flzvN2C3D/6oL7lMyYkprZbDadTgdP0NjYWOB7QvmXyjOPHDly69ateK5MJlMXQ8LV9bxdzq0A9xUDjAS4f/ksdd0ewH2k6LFxBKDQ3t6OohkGjvQctXCk66RmzssfakAfbxudUKca0vUvtBQYy6G9oIM+ZrvLcOChiaNmjvgQv6WlRa/XA+ibzWZAYfLDdN2U6OOeEX6AQW02m8FgaG1thRV/5cqVHh4eIpEIfsUMw1x33XUjRoyIiYlhWZb/CetjngfCcIh84H+OoSkNqEUPaGJ2jhCh0bPo7HY7FFo6DK8m+veqbgw4uK/mKC0tLTQ0VC6XI6GNAPd/M2W2Ojo6yBaCcox4fiwWy2effcYvbD58+HAfH58///nPx44dwzHQs+n0q/rBI+YFuK8YYCTAfZqcfdBwdBI+yXxjP1ws2tvbzWZzK0dGjvgKANSAvt+2OCFA5x62HKj+0TFGp9MBT/c98zQiJAmpQsK0p7W1ta2tzcSR2Wzu4Mhms/2WjJ0syzocDkywLteFr4zVaj148ODEiRMZhhFxxDDMNddc4+bmNmfOHDwd8G7qgydlQA1xOaa3Wq1dFt7bOOpftsm039HRwddMeuaKFDk6vefjr5ZfBxzcRzpLrVablpam1WrlcnliYmIPCQEF6/7VZd1nWZbicZuamhAgdf78+QceeABOOzfccAN8eDw8PF5//XWWZZuamvAuJhc6SqN2tTxmPfApwH3FACMB7vcwXV33E2A/EBiBfqq/gRBAoE/ACMBTtPt+C4h8+ZaQdJcGIXvC0zgXV3T51tVXRCNCsO2dBCs+DPkWi8XKESz6dq5UgusmQL/0TMYjxI1QqRZAQ/xaWVn53nvv4fOEki+jRo1iGObVV18tKSkhaNgv/PfXoOQPY7FYdDodRT6gGgNxhQ/35boBHdAHDYqrJuxBN/3y0a1Wa2trK8uybW1tKMOs0+n6l//LmfzFewYc3Ed6zbCwsISEBLVaHRYWlp6eLpPJFE5IgPtXF9wHvmdZll6sISEhqJrMMAy8JN3c3EaPHn3gwAGa1lTrpKOjg1409OtV3RDgvpMnu992C3C/3x8oQH/y8yFXH9iYgUEtHHXC1L7+i9Ev3wI9X751Bq8v7wF7+uZ6MBZhejLh2zjCegtQPt2Rfp8bvcsAfYa6dGuz2YxGI+FCg8Gwa9eu4cOHU5o4FOJ96KGH4uLiupz7e/gXmLhL2gzY4ywWCxyi6EtNjX6RzNy5c2fPnj1t2rRFixZNnz7dYrH8HDP/iRMnkpOTUT26X9h2xaADDu5LJJKEhASlUimTycRicWRkJJVJV3RHAty/uuA+4mCgN7MsO3v2bCpd7uPjM3jwYIZh7r///vPnz2O60wvXbrdTFa3+fX307nMowP3uHuv+3CfA/d6d4VfUG8HKLg1+J/gJYNQZXHb1foLCXRpAzJdv+ZCaD6ax//Ktq/m/HOiDK77YL5c5/cr/6WpvW61Wk8lEFly4pNNFQedkWba9vf3UqVM333zzkCFDkJ3Tzc1NJBKNHj16zZo1dPzvpNHF96mhoWHPnj3PP//87bff7uPjwzDMH//4x48++ig2NpYUg36RjNlsJg3N29vbx8eni8dRF66wTPH000/jKm688cbfEthwCvfr6+trampKS0vPnz9Py1gikWjjxo2okgucHRUVBbipdkIKFxOUARTBFYvF0dHRUVFRkZGR4eHhKIB12223Ef9vvvkm8tkrOSLW5HK5E/bVdEwfNyIjI9Vq9ZQpU+A16ObmNmbMmFmzZi1btiwgIGDjxo07duz44YcfDh8+rFQqExMTMzMzT548WVhYWF5eXl1d3dDQgOyW3ZZBYfucHA4HrfcZDAaHw5GRkQGfSEB8bN3c3JYvXw7uaB2gz5nt0wF/Y3A/IiIiJCRk8uTJ0OJEItEdd9yhuHpILpevXr2a3hhw0l24cOGXX365Zs2aLVu27NmzJygoKCoqSq1WJyUlHT9+/Ny5cyUlJZWVlXV1dU1NTUajsb29nVAgEFKfTilhMEECggRcJoGPPvoI74fBgwej/i7DMH//+99zcnKgFWBkmJDh/M2PeSCXVJcx2HcdAwofPnx47Nixw4YNg1hQp2z06NEMw6hUqsbGRlpCIQf6jo4Ok8lkNBrhMAaOoRjQHlorQLkDivRrbGyEERCmQ/CAg+FYRa6/gBBUNw31Ovnyb21t5d8msCGXyykXk4+PDzyK+QsCaOOioNi3tbXRNYJbcvrn60XYifBFfkbXPrthVwz316xZA3As57LlREZGSqVStVot71eSSqUSiQSldiM7KSQkJCgo6A9/+INIJPLx8RGJRB9++CGxKeNI2km0f4A0pFJpbGzs66+/Tsjj+uuvnzdv3tKlS7vAfahb3cJ9k8nUj3Df4XCYTCY8jSzLWiwWZDxgWTYwMBDXdeutt7q7u0P/fuyxxxQKBVax8QD8HtwiBbivGEj0c+B+cHBwdHR0bGysAPf77EMlDCRIYOBIYM2aNcOHD/f29gbch2PP/fffr9FoiEmYt5DpBTvpc8ZHnHT8VdeoqalhWXbWrFnXXnutl5cXwzDe3t5+fn5A1QzDDBs2DGCXn5Szra2N70zPsiz8ptBgWZZy9+FcvV7vzPAH0I98OwgvwR5+aJ/JZCIE5eHh4e7ubjAYzGZzl1uAsRCEEBkZSacwDPPyyy/jYBQBhMZC4J4WhXD7LBYLAX3+VSPPGDK90o1GumG+PkA/uahxxXB/+fLlUVFRwMpKpTIyMjImJkYqlcY4oU447cK/EolELBYT1o+IiAgPDw8NDQ0MDNy5c+e1116LfC8Mw7z22mvgQ8KRmCMnjP/fbhfy3WPXarVao9FMnToV1n2GYcaOHQu4v3Llyg0bNmzfvn3v3r1hYWHkzAPrfllZWVVVVX19vV6v70e4T4+T2Wx2OBw2jliWLSkpeeeddxiGIX99WAUmT56cn5+PQD3+K8BF837gdCvAfcVAImdwf/ny5WTdJ7ifnJwsWPcHzqMkcCJIwNUSIN+exMTEW2+9lWGY66+/HugQKTsDAgIcDofVaiUgaLFYUDsSvLW2tpKHqqu5dXX/Uql00KBBDMMMGjQItZIgCl9fX/jzgAH+2j7fTF5fX0/WQJPJRDk8cBZfgIAEBoPBbrcDWvBlSEfyT0S4udVqhecVGPP29nZwxJcMUoHTuampqUOHDmUYBlexYsUKAvc4pr29Xa/XEwMOh8NoNPJ9luAeRkOgkAhpPqg9zNdhqCs6xUWNK4b7K1asANxXKBQajQaIGYAb7S5bAGtXb7vAfXgU7N+/f9++fbfffrubm5u7u7ubm9srr7xCxvsu1v0ubNO/rubcWf9QWl555RV3jgD358yZs2TJkq+++mr9+vXbtm0LDAxEutL4+PijR4/m5OQUFBQQ3G9paWlra+tH6z60f35+4tjY2Eu1CcmXzt/f39fX19/ff926daQeGI3GhoaGLg+Yi2b/QOhWgPuKgUQ9wP21a9du3bo1MDAwJCQE1n0B7g+EJ0jgQZBAX0rA4XDAPm2325E8mmEYuHrDzP/EE09cvHgRjj18CGs0Gukz15cMu2Iss9lcW1s7atQod3f3QYMGwaLv7+8/bdq0b7/99sCBA2s5YlkWOBjR9hzS/tGtl+TAR7oNDQ1gFQ0q5dbS0gK3H1oBwOlQoviVOltaWsg1nyCEl5cXLTgwDEMjdnR0NDU1kTHebDaTVrZmzRp3d/fBgwfPmDEDugSpJcDu4BMZ+oGy+ELGKXa7vbW1ldhgWZaumi4EDWKJ34kr2lcM95cvXx4eHh7FkUKhiIyMBDA97ITCXEyhHB3iKCQkJDg4OIijAwcO7N+//8CBA5MmTYJiBzcsGO2jOcJVwPfHCfuHXcy+0+5DQ0P37dv3/PPPk246duzYOXPmLFq0aMWKFevWrdu6deuePXsOHTokk8ni4uIyMjIA90tLS+FG3L9wn4JxaQVz+/btsAQA7sM97k9/+lNSUhIeCZPJRCov3guumPEDrU8B7isGEjmD+ytWrODD/ZiYGI1Gk5KSIlj3B9oDJfAjSMB1EiBHFOBXlmXFYvHYsWMZhuGbt0eOHCmTycAGfQoNBgPAZV/6b7hOFIsWLSI9Bwb+rVu3woWJ791OMXvk1E7oFtJoa2sj0zgBALANcz7aCIgiQz6gOSr44gBEn0O2+KpiINwacsdHDADxwI/SZlmW7+dDlQT4d41ORLJODA1H/La2NrCHS+bjmS7O/TgLW4fD0eWq+b/2bvuK4f769evFYnFUVFRERIRMJgNWjnBOTvFsL/0AuB8aGnro0KEQjoI52r9///fff7979+4JEybQAtM//vEPct3hI35cTrcX0UtsXnE3Uqk0KCjo5ZdfHjx4MBD/DTfcMGvWrIULFy5fvvzrr7/esmXL999/HxISIpVKtVptRkbGiRMn8vPzCe7rdLrW1tZ+tO7j8WZZtrS09LXXXsNdgDEARQpffPHFgoICqLxQysnnh2VZ0vV7d8YPtN4EuK8YSNQD3P/666+3bdu2d+/eQ4cOicVirVYrwP2B9jQJ/AgScKkE4PlNIafAfIWFhffddx+MWQzD+Pv7DxkyxMvL68MPP6ytrQU/ZEXuM2znUjk4HI4bbrhh+PDh8Nq/5Pqyfv16OO46HA6qX9ve3g5bHlnH29vbCbK3traSNRBKEUJ4Ozo68C+/K1wO4lyBp0lJgLs/Of2TQwEGBfCAkdHX15es7CaTqVvsTnKjW4Z8o3a7nZYOqqqqcC7/clCvDafTqk4XhYQ/YmtrK38IGtd1jSuG+++//35AQMDixYu/+OKLZcuWLVy4cPHixYsWLVrohBa4nuZ30hedNG/evJkzZ37yySczZ878wx/+gARMgwYNuv/++5d0EthexJET3n/c7Xr2ux8Bl/DAAw/4+PggtHzs2LHTpk1DkpC1a9d+++233333XXBwsEQi0Wg0R44cAdy/cOFCRUVFbW1t/8J9mtbBwcHDhg0TiUQ33ngjxSH4+/vv3LkT05oeflr2+k0m3HT2DAtwXzGQyBnc/+qrry6H+6mpqYJ139nEFvYLEvitSgDfVlwdAdnPP/+cTFqwKPv4+Dz88MPV1dUsy1ZXV2NlgL53V7VwlEolhUR6enreeuutRqMRgQ18CNvW1kbO+q2trWq1+sMPP7zuuuuwGjBu3LidO3eWlZXBrA6BtLS07Nq165577rn99tsnTpw4ffp0lmWTkpKmTp0K1eKWW2555513gNqbmpo+//xzZF8cMmTI1KlTxWIxCRY6A24KtkOHDq2pqdm7dy+qefr5+b3zzjvHjh3DKajqI5FIHn300QcffPC+++574IEHPvnkE9yyxsbGJ5544qGHHrrrrrsmTpxYWFjY1tY2e/bsP/7xjyi+9tJLLymVSqvVSuDHZDKR1TIpKemDDz648847wcltt922dOnSiooKZDEhnl3auGK4zzDM0KFDKe8sbjk5nPAlizZcz123deORqJOIDQqjAYdwMsMZOJaOdNZwHec99ywSiZCbkiR80003ffrppwsWLPjyyy8B93fv3h0cHCwWi2NjYwca3MckXrJkCSSPhU5c0aRJk1CaxGq14tXgcDigqVMwu91uJ/3YpQ9Av3cuwH3FQKIe4P66deu6WPcFuN/vj4/AgCCB/pIA37KLNeqwsDBYtRDrCVAxZMiQ7777Dkzio0Zm6f7i/NePO3PmTIJM7u7ub7/9NvWJa0Q+YqzwW61Wh8OxfPlyvliAJBmGeeyxx06cOEGnX1KNPvnkE/jeeHl53XvvvVFRUTfddBOGoyDge+65h2XZBx98kNiA/f6mm266cOHCpZI+sMRbLBYvLy+chSN3794NNDJo0CDoD4899tipU6eo9Cc0GQrVxUBgDz1gGWfXrl00OnkKjRs3Ljw8HOoBWS31ev2aNWugFaCHESNG4JSnnnoqKyuLf+0ubf8X3EcAtdFobGlpqaurq6ysLCwszM/PJzUOvEKsFP1ADfzaL1uRSAQQT6MDZYJV0kaoQYcN2Ia7u7uvry+ljGUYZsyYMdOnT//iiy+WLl26evXqzZs379q16+DBg9HR0SqVKj09PTs7Oy8vD9b9uro6+O6bzWa+OeHXeA2Smk6ZcWlq0k/YY7FYysrK/va3v2FuIFuZm5ubh4fHRx99hDxZfJc+6ud32ADcR3oy1PArKysrKiri14u49tpr7+Jo0qRJEyZMGD9+/Lhx42699dZbbrllPI/u4GgCR+P6iSZMmHDTTTf5+/vj0fP19R0zZszNN998mxO69b/plk5yNftO2PlxN1L3MgyD2fvVV18tXrw4ICBgw4YNO3fu3L9/f3h4uFwuT0xMhAddbm7uhQsXqqqqhLz7v8PnV7hkQQJ8CZw+ffqxxx6DdZ+PSQgQt7S0YEEA9bzMZjN9Cml9m9/hwGw/88wzvr6+IpEIH/dDhw4hGRHABpQfBCvDovftt9/iSE9PT369AgCwm2++GQcjImLOnDkkQF9fXy+OkOgTr2WERN95551AdMjFgq78/f2ffPJJvtCQA5CgFD5MsMeTJ9IHH3yA2ACHw3Ho0CE6xs3N7d5776V0TG5ubhShMX78eA8PD6B2fCk8PT2HDBkybNgwjE63dd++feCNzsXouKI77rgDx3fx7eHDNv7l/Jr2L4H7np6eIpHI29sbsuZrTv2FnjvN+iJiABoY5Dts2DBvb2/K707HDPwGqSvu7u433njj7Nmz+XB/586dBPfT0tKys7Nzc3NLSkoqKirq6up0Ol1bW1tvwX0C9NSw2+3khki+ena7vaOjIywsDItlpMGjIZFIKCcuFA+LxUKd/Jo/yH/IAAAgAElEQVR5fPWei6xtSEOm0+kaGhpqa2srKioA94cOHcp/R1w+Y93d3T26I96iV1836V3J57Y7Hn/cd/kaV9+wS2+MLg18ZsA5XuVLlixZuHDhqlWrNm7cuGvXrgMHDvDhfk5OTm5ubmlpqQD3r95nUOBckMCvl4DVai0tLUU/X375Jd4hhEeHDh16yy23nDt3DgfgM8rPUMl3Avn1zLi6h5tvvhkX6OPj4+bmRv4wSDVDVwc2NBoN/Hjd3d3xObvvvvv+8Ic/UA+X3K3XrVuHg81m87Rp00aNGoVfcfzgwYO9vLzwQsanhGzQiAOkf2EYhQuNyWSy2+24BR4eHv7+/mgPGTKEjNSUPqSoqAh5wLuF+1BaSD3gfyZIkSAkvHv3btLcTp06hQUfQNCbb775vffe++c//wl3JqhAAQEBuHayxtpstoEC93EbaAuO6d8B1YBi1zNgGlAM85nx4QiLSt7e3tdff/20adO++OKLJUuWrF69etOmTTt37jxw4ACs+13gPvnu9xbcx3Ts6Ojogs7tdju0WMzU5ubm+fPnIysZwzDQwr28vP7yl7+Ul5eTvksZr2DbRue/zy1sPID7LS0t9fX11dXVlZWVDz/8ML0i+bMCC1mE8vk/DZy2p6enH0dX46PHf6czDDNv3ryvvvpqzZo1mzdv/u677w4ePBgREaFQKJKSkjIyMk6dOpWfn19WVlZdXV1fX9/c3CxU1f19PsjCVf+eJWAwGAjhIfw0JSUFNX/ofXLttdcOHjw4MDAQYM5oNMLMj1JcZEe7KsRIGNfDw8PNzY3veUvBDOTC/vrrr7u5uQENi0SiDRs22Gy22NhYfLDwjRg9ejRKZbEs+9FHH6EuKn4SiUSLFy/esmXLm2++SbAepqK//OUv4eHha9eu9fX1hTKAPlUqFXKAWq1WLAi4u7vjRtx9993ff//9woULyZYKuLJ79+4e4D6gCwEbjHLjjTdu3bp1586d48aNo4+vn5/f7NmzCerMnj0bPw0ZMsTX17ewsJBl2ZqamhtuuIFkyF+OsHPE9xPrxflwxdb97777TsqRQqFQqVQKhSI+Pl6lUsX2E6nV6tjYWI1Go9VqNRoNWJLJZAqFIiQkZMeOHffccw8mzfDhw19++eV+YvOKh1Wr1QcOHHjzzTdJZbz22msXLlw4b968JUuWrFq1atOmTTt27LiUaTQqKkqpVKamph47duzcuXMlJSUXL17sdbiPl1FHRwd52/OX7eCMmJWV9cgjj0Bvvu666/A4eXt7f/zxx1hngHscvQUQGdOlJkUvTu6roita0m1tbdXr9UajsbS0tKGh4csvvyRvvx5As5ubG+zT9LoZOI1uzfw/yV6/Xw4sQAzD+Pn5XXfddcuXL9+2bduGDRuQdP/QoUNQsJOTkzMzM0+fPl1QUFBeXl5TU9PQ0NDc3Iw1Wby17Xb7JafVq+tDflU8NQKTggQGmgTIEIZ07DabrbKy8u9//zve3mRO9vT0/Pe//00F5vlRqvX19QPtopzxg5pi9DIHUMbBQLr00tPpdKNHj8aRvr6+N9xwA4x9Vqv1qaeewn4A8fj4eGTX+fjjj7EfgPjBBx/EKUePHiUxikSiIUOGHDp0CFGCf/nLX4CUYGFcvXo1MYCaS/gYeXh47N27F3y+9957uDXe3t4ikeiZZ55BtHG31n0k5wE/IpEIDG/YsKG9vd3hcMydO9fHxwe8+fj4/PWvf4VXkl6vHz58+IgRI5Cx9NlnnyU3p1mzZtE1jh49uovXw0CB+5s2bZLJZHK5XCaTqdVqlUoVFxenVqtl/URSqRT8gCWJRBIdHR0ZGRkSErJv374ffviB8u57eXm9/vrr/cTmFQ+bkJAQGRn5r3/9i3TW4cOHz5w5c968efAk3rhx444dO/bv398F7hcXF1+8eLGmpgaGxt6y7lNGLTwqzc3NVAwLMzUwMJA0E+Qh9vDwGDFiRFhYGB7IDo7o9YEcW2QRof2/w4bNZmtvb0dJbZ1Od/78+ba2try8vD179nz88cdTpkx5//33//nPf7744ov/+Mc/nn322aeeeurxxx9/5JFHHn74YWz//Oc/P/TQQw8++OD9999/H0cP9BPdc889SFwwYcKEiRMn3nnnnffee+8DDzxwlxO6u5Puueeeeznqd/4feuihP//5z3/961+nTJny7rvvbtiwYdOmTVu2bNm9e/fBgwfDw8OlUqlGo0lLSzt27NjZs2fPnz8P97nGxkZKh2XvJAHu/w6faOGSf28SIKxPYbgAdrW1tcuWLYOvNmXqZBjm/vvvT0pKgsM6ZHV1fQoJdgOzEtzHIr/D4YBZsK2tLS0tzdvbm2DM/fffj+ylVqv1448/Bm4GVg4ICACsnzZtGtnRPT09P/30U4jIZDJhXDLgVlZWIhr4k08+wU5/f38PD48ZM2aQVRFAH6vigwcPRqKk9vb2hIQEWitgGOaBBx7owbqPO4Uh4M3u6+vb0NAApWLv3r30E8Mwd999NxhG4CvgPsMwy5cvR0VelmWlUinlYmEYJiMjAwyjQ3h29fqUuGLrfkBAAGznYrFYrVYrlUpsFf1EcrmcRpbL5QT3tVptSEjId999h6xPnp6ePj4+b731Fh08wBtHjhyRy+VTp07F44Ri3UuXLp07dy7B/e3bt+/fvz8yMlKhUKSkpGRlZZ09e7a4uBi2xt6F+4DsLEcWiwUPM8uySC726aefQn+lp9TPz+/pp58uKiqiI+mNgCp09DSiz9/zFg5RJpOptbW1sbHxwoUL5RyVlJTk5eVlZWXFx8djbkdERAQHBwcGBu7YseObb77ZuHHjCo6+/PLLpUuXLuZS4i5YsGD+/PkL+4nmcTSXR9gzywnN5ujzzz+fM2fO3Llz582bh2y6rmZ/kRNasmTJsmXLli5dumrVqs2bN2/kaNWqVbt27frhhx/CwsLEYrFKpUpMTEQd69zc3OLi4srKyvr6+qamJqpt14n2Bes+K5Aggd+DBBoaGvBRs3HEsixC2gwGQ0pKyvXXX+/u7u7t7Q1cyDDMsGHDkLHHYrHgSErrPvDFRXAfy8tUfQymfbPZjO9+a2vrtm3bENQ7atSoYcOGzZkzx2azAcjK5XI/Pz+YzD09PT/44AOg6s8++4yCgBmGmT17NkICzGYzTIqQ4ZAhQ2htZPr06SRYhmGQvhOj8IE4wzBQNpAD0M3NDYgFKwA9wH18o93d3f38/KCiuLm50W2SSCTAadBqnnnmGfx0qbowDsb+5557btGiRQsWLJg2bdpLL73EMMw111yDtYXw8HBEGkBfwkTiYyca69c0rhjuL1myBHAfRmXY1KVSqbqfSKVS0chKpVImk4nF4piYmMOHD+/bty80NHT8+PG+vr7Dhg1jGOZvf/sbHTzAG6hl9u677/py5OPjM3LkyM8++2zu3LmLFi1CnpDt27fv27evC9wvKioqLy+vrq5uamqimiA0RTCZ6N8ramAK2u12erbr6+vPnDkzfvx4WC+8vb2HDx8uEomGDx8+bdo0dI5q22jj8UPxL+JEr9eTReSK+PnNHIwABlTn1nGUm5t77NixnJycs2fPHjt2LDExEXM7KioqJCQkMDBw+/btmzdvXr9+/ddff7127drVq1dfCvdZsWIFcP/SpUuXDABavHjxwoUL58+f/8UXXwD0X7794osv5nO0YMGCRYsWLV68uG8YX+aEvvzyy+UcrVy58uuvv966dSuW0fbu3RscHBwVFaVQKLRabWpqanZ29pkzZ/Ly8kpKSqqqqhoaGgS4/5t5JIULESRwpRJAahq+byq8VeFEXltb++yzzwIlkzcIwzAfffQR3GIpQfuVjtsvx2MBHxGrIpGIskniWvgf9NmzZ/O9OmfNmkX4QS6X83PdPPHEE4D7sB5SMpiPP/4Y12iz2QYNGsQPFqXlkY8++sjDw4O84WfOnAkvWZvNBrd+OovEZTAYcLyPj8+YMWOgCTjLzAOjOwIpcTmA++3t7TabTSaTAdbj/t57773wW549ezaciyjymKy3aJCBPygoCPgKGAltbInhX9+4Yri/bNmy2NhYrVZ7qRiBVqsl076yX0mlUimVSoVCIZVKo6Ojo6KiwsPDQ0JCoqOjaV4yDPPBBx/0K5tXMHhcXJxEInn11VdpfowYMeLzzz8H3F+5cuWGDRu6wP3MzMyzZ88WFRUhcLB34T4tz1FGW51Odwlx+vr68uPcGYaZOHGiSqWCdZMmaHNzM96GeGxIw6bHlY78HTb4cB/l+pqamhoaGsrLy3NycjIyMnJycvCsSaXSiIiIoKCgPXv27Ny5c+vWrd9+++0333yzadOmDRs2fP3112vWrFm1alVAQMDKfiIoHsuXL8dqA+D70qVLnaDrZQSvv/rqq5UrVwYEBKxatWr16tWuZj/ACa1YseLrr7+GSDdt2rRr165vvvkmKCjowIEDoaGhEolErVYnJCQcOXIEOXny8/NLSkqqq6vhuC9Y93+Hz69wyYIE8CEjz2wIxGazUQwrnPXXrl1LSYopw8z48eOjo6OvLhk+/vjjpLowDINEnGTCg2sTkOu7775LSTuGDBny2WefAQrb7fYDBw4A3gwdOlQkEo0dOxZC+OSTT8gx2MPD45NPPqFMNQSHkIUFx8MviGGYkSNHIjB3xowZGJ1l2UvBwTCu+/r6enh4mEwm+gm94Sx/f//W1lZncB8DUZ1Q1E6m3J3BwcF8lQZ+QSaTCXoLRsEyAhy6sAXWx/JIaGgohoBF3xVpeViWdQr3a2pqKisrS0pKCgsLScQikWjlypVyuTw2NlYul6tUKplMpuJI0a+kVCqB+GUymUQiiYmJCePowIEDt912G92J119/vV/ZvILB5XK5Uql84403SPhjxoyZNWuWs1DdlJSUbuG+xWKhgHf2ZxNmGzIGIEiFTkXagfPnzz/33HP0TPr5+eHhf+ONN/Lz8+mxp7OERg8SgB2ivb3dZDK1tLQ0NTXV1tZevHixuLg4Ly/v9OnTJ0+eTE5OTkhIiI2NBeIPDg7et29fYGDg7t27d+3atXPnzu3btxP637x58zcups2dtIkjzuflx816jtatW4dlhzVr1qxevXpVJ63maA1Hazlax9H69es3bNiwcePGTZs2oWMXs++0+20cbd++fceOHbt37w4MDNy/fz+y8URHR8vlcpj2s7KyTp48eebMmbKysosXLwLu6/V6k8mEJ66H2y38JEhAkMDvRwJk4cIlR0VFjR8/HvkABg0aBMw3ZMiQhQsXolIsXzIIHqU9ra2tQNIOh4MS4JBLLQ4jBYPOckXjo48+ImQiEonefPNNSk5PGYfgaTNz5kxYvhmGuemmm958800oRTabTSwWwwcYpvfnnnvOZvvRz+eDDz4gr3qRSATffQdHNCiQN8Hi//znP5RiQSQSzZgxg66aYRj07+XlJRKJWJZtaWkB4ie3HG9v72uuuQZxt92G6uLqMDrhSQxht9sjIyOJMZFIhMpc7e3tn332GfbDug+M5OXlhVUFNzc3Cmk4efIkRet2yWhCF/LrGz3B/aqqKgHuK/qJfg7cRyJOeFWR734XZ54rhfsogMeyLK0tIl2AzWbTc8SybExMzE033QSdmMKPhg4dun37dqvV2qVaxK+fo7/5HrrA/ebm5vr6+srKygsXLhQUFJw9e/b06dMZGRlpaWmJiYmE+A8dOgTQ/8MPP1yqCh4YGPj9998T+t/ZV7SDo+2dtJWjLVu2YNlh8+bNpA+g0QXNb+Fo69at27ZtA8juK8a7H2dPJ+3du3f//v3BwcGhoaEIz1UoFBqNJjk5GV77586dy8/Pv3jxYmVlZU1NTWNjI+D+1ZU/+zf/cAkXKEigfyUAd3aynbEsm5eXR1F5CCH18/Pz9/d/4YUXqqqqGhsbCRDDnaOlpaW9vZ3wPRoocdPR0dHS0sKybFNTU18aGtatW+fn5wfg6+npOW7cOIvFwi8ZRgoJMD3DMFBs5s2bBxd5AAkg4JEjRw4ZMuTNN98E0kVmHsD3Xwn3bTYb5chHPAAmg9lsbmhoABYHD4888ggY6xW4397e3traumHDBjjzYKDAwECM3tbWRooK9tTW1tKaA3QeV0xaAe4rBiY5g/vIu49EnPy8+wT3i/87VPdK4T7i3GtqaqCaI4SotbXVZrPBIQ95ZKGeoia2SCSaMGFCbGxsl3UAV8zX32qfNpsNr0uDwdDS0tLY2FhdXV1eXl5UVJSfn5+bm3vixIljx45lZGQkJydrtVqFQiEWi6Ojow9zFBYWdujQoZCQkKCgoIN9RQc6aT9H+ziC7kHqx3cc7e4k/Ps9R8DVgRzt3bv3hx9+2Ldv3/79+w8cONBXV9DNOIc6CSg/OjpaIpHAqJ+QkIA1tJMnT+bm5p4/fx5BuvyM+5SD77c6UYXrEiQgSOCKJAA3HrvdjrocOFev11+ybvBdupHacvz48RqNhgAxDWS327GuTivnNpsN6wYBAQGHDx/GkSaTqQuOpB56t1FWVgYIO2zYMOB4rE6YzWZ8ywDcWZY9f/48TPgw2E+YMAGcdHR0TJ8+HZ3AdX7dunW4ohkzZvSWdd/hcPA9cDw9Pakk6L59+7y9vXELRowY8ec//7kX4T7clVFfzN/fH1b8gIAAfvTtJQnAlkr3FAxYLBb+nl68cU7hfm1tbVVV1YULF3C3cFcuuRkJzjyKPqEe4P7SpUtXr169efNmflVdyrvfJRHnlcJ9ZISkGeZwOGiNqaysDLWf8HhDJx48ePCHH34IawSWEckIQZ0IjZ+UANz3YRIwGAw6nQ4G/rKysuLi4vPnz8OlJzs7OyMjIyUlJT4+PjY2Ft50UqlUIpEgQh2BK5F9SBEREeGdRLpHWFhYaGhoSEhIMEdBnYR/Qzg61EmhoaFhYWGHDx8ODw+PiIjoQ967GQqSFIvFEokEnooajSYuLi4lJSU9PT0zMzMnJ+fcuXOFhYUlJSVlZWW1tbV1dXWNjY0tLS1Y1/oFvnM/OT2EAwQJCBK4SiUAYxmYh6UfbYfDkZmZeeedd8IRnDDxJVP35s2bcQw/5pXyV+InIMK4uLgxY8b86U9/wk6bzQatAP+6bmuz2Z5//nmGYfgay5w5c/gjItFQS0sL4idh53ZzcysuLsZht956K4Al0PCZM2cAJGBS7BXrPsuy5OSDsfbt24dY4aeffprccoYNG7Zs2bLehfu4RiTzgfYyevRoYCR+HCNfAYCORGZ+vjB7pe0U7tfV1VVXVxPch1wEuK/oK3IG9+fPn7906VLU+Ny1a9fBgwdjYmLUajXB/S5ltq4U7tPLwmg04oUCa0FMTAw9nMi9gyj1LVu2YCJi2RFzt4u3Yq/M1N9YJ11EBH8eq9WK/DwGg6Gpqamurq6ysrK8vLy0tDQ3N/fs2bOnTp3Kzs4+evRoWlpacnJyYmIiqstpNJrY2FjUwVD2FeFRkHMk41EX9QMaSBRH0RzFcCTmkUQioQIa6LavLqLrOJBkLEdarTYxMTElJSUtLS0zM/PYsWMnTpw4c+ZMfn5+cXFxaWlpeXl5Y2NjU1OTTqczGo0IArPZbHhwfmMzVrgcQQKCBHpLAvAF7+joMBgMCOhE7Km/vz9Q6eTJkwsKCuBojq8DFt6xhA7Aev78+bvvvhsr7ZmZmeTk01tM9tCP1WpNTU116yTy6b399tuff/75f/3rX48++ui//vUvRCO8++67cATApb377ruXQMWKFSsYhhk0aBBiWB966CFaEIDVv7fgPvnHA8ROmDBh7dq1X375JeXqgVeSwWDoRd99MnpCKWIY5g9/+APDMDfffPM333yDD0RpaalCobiUUo/kDKsf/dvruP8n4H5paWlRURGthri7uwvWfUWfUA9wf9myZWvWrPnmm292794dFBQEuJ+WlpadnZ2bm1tSUlJRUUFVda8U7mOq8cN9WlpaPvvsM/4zgwCX8ePHnzx5kmVZg8FA63csy6KMBU1ZodGtBLrAfeQVRjJgs9nc2toKlx5o3ZWVlYWFhQUFBbm5uWfOnMnJycnOzs7MzATuT0tLS+UoJSUluZOS+oQSOUrgKJ6jhISE+Pj4uLg46CFQQtSdBBit4UjLkYarh63VauPj4xMSEtBhn/De/SAkzNTU1PT09KNHjx47duz48eMnT548ffr0uXPnCgoKiouLy8rKKioqKisrdTpdS0uLwWBoa2tDKURU0u32pgs7BQkIEvh9SqC9vd1gMMDZhhIs4uvMsuyePXs8PDyoag2Q6C233BITE8MXF6xp2F4qxThlyhSGYVDFafLkyXRk3/jzWCwW4HJwO2rUKOBpd3d3KC033XQTWDpz5gyyZHp6emI1gJ+mBjqAQqEA2zabDRGuvQL329vbAV08PT3d3d0xLtW9cnNzQ4r2d955B3USnGXm+QWhulDV0tLSMBwuB2wMHz7c3d3d09Nz5MiRgwYNMhqNbW1tVqvVzhHdxy6Gf9r/ixs9wf2amhrAfUSTiEQiAe4r+oqcwf0FCxZ0gftisTg2NrYL3K+rq9PpdChodUXeBfC9o6JaBQUFcODBM0m2B6x8mTmil0t9fT2UWgHx/+QDeTncR9ltq9VqsVhMJpPRaNTpdI2NjXV1dbW1tWVlZaWlpSUlJefPn8/Pzz937tyZM2dOnz59opOOd1I2R8f6irI4yvxvOnr0aEZGxpEjR9LT09P+m9I5OvLflJGRcfTo0czMzKysrL5ivPtxcnJyTpw4cfz48RMnTuTk5ADi5+XlFRQUwFm/tLS0oqKiurq6rq6uvr7eYDAYjcbW1laEqZFD7U9OAOEAQQKCBH7zEqDV8i5XCq8V+PbAiHv27FlAT3d3d4rvvO6662bPng13IHiA4ESWZbdt24aPMra+vr4XLlwAXqQvcpdBe/1fm832t7/9jbQUWOsB+pGhu729Hde4c+dOrEJQzC7DMADio0aN+vTTTy0WC5IOXQpy6EXrvslkwgoEsghOnjwZshWJRGh4eHhcc801J0+eRMRzb8F9uk2XMoGuXLkSxV5JAvwbxzBMSkoKH9kTNug76359ff3lcP9SNIlg3Vf0CfUM99euXUvWfcD99PT07OzsvLy8CxcuVFRU1NXVUQrwK4L7APp4s+zZswcrUF5eXngTMQxz7bXXBgcH22w2Wq6i2Ym3CZkuev3l8lvqsIvQ4DVos9k6OjqsViuc+PV6fXNzc0NDQ319fXV1dVVVVUVFRVlZ2YULF4qKisjen5ube66TznbSmb6i0xyd4ujkyZPUINwM9YO2QNJQUnAMgDXOPX36dF8x3v04eXl5JE+g/KKiopKSktLS0jIu52ZVVRWc9Zubm+HD09raajKZ2tvbkZPn8jvLCiRIQJDA71gC/FzvJpMJuJafdrOpqQn+OdOnT8fiuUgkQjlYd3f3Z599trS0FB4g8OY/deoUPs0Ajvg6L168mB8b4Gp5NzU1YYht27bB0RdmfpixwRIUD0CFZcuWwbTPz/Ph6+v73nvvEavgf9q0ab0Vqmu1WlEDFHB/165db731FhQAknBcXBzGdXDUK5l5EGjBsiz0vU2bNt122224WaRvQOERiUTr1q0jCcCjCSCq1z8l/2Xdh3MYLIsNDQ2wKcKZh9SR3oL7KpUKmfvlcnlaWlpUVJRUKkXufJVKFR8fn5ycHBcXJ5PJULJX4YRwilKplMvlOBiuwxEcBQUF3X777Zh/DMNMmTLFSTdXvFsmkykUCplMFhMTc+DAAZlMptVqlVypryvuq7sTVBzx8+7fcMMN8+bNW7x48VdffbV+/fpt27bt2bMnNDRUJpPFxcUhOWBBQUFZWVlVVVV9ff1Pwn04GdOUwpNJWiaSYUFxJ6301VdfPXv2LDxPBFjPuoAI7uMx1Ov1Op0OqTnr6upqamqqq6srKysvXrxYXl5eVlZW5ITOu5gKnFB+fn5eJxFu7lRGuvmb30nor5AjF/PeU/cQZzFHJRxd4KiKo5qaGsL6LS0ter3eYrFAN+7yNLlgaghdChIQJPAbl4DJZAoMDLzlllsI7wJ6DR8+HLnvzGazw+G4++67KcCXsNmwYcOQT4/UCZcKC6nkMERZWVlwcPCcOXMeeeSR+++///HHH//444+Dg4OLi4sJYFit1ry8vG3btr344ov33Xffc889N3369OzsbNiwkVcURTwTExM/++yzjz766N13350zZ05kZCRUC4fD8emnn6LS6Pvvv79x48bKykoEM4SEhHzxxRczZ86cNWvWtGnTwsPDgeAv2SUXLlz4ySefzJ07d8aMGWVlZZd8bD7//PO//OUvzzzzzPLlywsLC1H2mISWkZExZ86c9957b8GCBdOmTfv2228BdS7VE1i4cOEbb7wxb968zz//fP78+QBLVqtVo9EsW7Zszpw5M2bMmDlz5po1awgdWSwWIP7m5uY9e/a8//77Tz755IQJE+6///6XX355+fLlSUlJ/KWALrcMGsjl2y6H/cx/+w3uHz16VCaTBQYGKpVKmUyWnJwcExMTFxcH1K5QKGI5UigUSqUyNjZW4YT6C+4nJyeLxWKVSpWUlKRUKrOysrKzsyMiIpywecW7fw7cDwwM/DVwn+2klpYWzEg8ITk5OQilh5nh+uuvR9KAgIAAJLFCRCn/ae/sSfj7ayVALj1IkWQ0GvV6Pfz4Gxsb6+vrAfqrqqoqObrohMpdTKVOCOAYQBmg2Yk+8n+7cfyFCxfQX1knuZh9p92TOCs4gpCrqqpqOaqvr29sbGxubtbr9XDjsXLU0dEhwH1WIEECggR6QwJ5eXlPP/00ysQihBexsP/5z39YlkXOftj+EVdJUafI7N43zjwUQExXTHmE+CsYFICLw5BUnjgE5MBCB52OhQ4cbzKZSGGAczJO0ev1BKmx7kF+U7SWotPpbDYbgWnyMYbLpdFoJOMmJSQEYzabDT9Rrkxihi6WsBCsn/AFohUbjOtwOD29ep4AACAASURBVOx2OzFQVVVlt9v5hYlIyaFuuzQuB/rY0+Wwn/lvv8F9gHu1Wh0dHf3ggw8+wNH69evlcjnK4kqlUgB9wv2K7qi/4L5YLM7Ozlar1fv371coFBKJJCwsLCkpqTsef8k+Z3B/yZIlZN0H3JfL5fHx8Vdq3adJg2xZLMvW1tayLLt3715Y9JFnE5aDcePGKRQKPISkBLMCuUACuC94J6K0ShtHeo5g6W9sbISHD9zH67ujOhcT4O/l2xqOqjmq4giI2dm2uroap6ArF3P9091Dlg0cNXLUxCOdTqfX6xFZZTKZzGZzB0cC1nfBoyB0KUjgdycBIFdYrBcuXIjvr7+/v7e3t5+fn7e3N+z6SIuHb7SHh4c7RwzD3HXXXfDRcLXgCIKDVfoXq9OE5sEG/kUJTv5Pl2MJ6oefLAQ7bTYbdgLN05HwomRZtr29HdJD8RPswWH8+l86nY7v3oy1WRIXwaGWlhZSReClSeoEIfvW1ta6ujpgerou/ujoFikcaAgcT5KhE+kAfuM3AvclXKZwlUq1fPlyWo2aMmWKRqNRqVRSqVQsFqO6jVarValUCifUX3A/KSlpz549EolEqVRSAecbb7zRCZtXvLsHuL9y5coNGzZs3749MDAwLCzsl8F9liPSbjs6OsrLy6nUH+XVGjp06DPPPHP69GkcT1u73U7n0k6h0VsSwBsBoN/CkYmjtra21tZWg8EAk3+Lc9K5mJqdE+AxsDJwcw9bwtLoz8Vc/3T3JFHoVwaOjEYjheTCTZ/vwwOsLyTk6a3JL/QjSOB3KwGz2QzMCheX0NBQ8upBuRuEugLoIygW8EkkEnl7e3t5eanVajJ7u06M/K8/wIDVanU4HPyhHQ5He3s7FqgRs9vOEb+MVEdHh8lkorNwSpd1A4qJgmRgOCe9CNcIgz2ML5dfNcW8IvcdNAFnh9k7ibjiH4m8ebSH2CDU3tHRAR2DP6her+cfQD+R0uK4QiIGrqjRb9b9pKSkQ4cOqdXqF154wc3NzcfHx93d/amnnoqLi0tISNBqtTKZjOC+XC5XOKH+gvsSiSQlJWXBggWkq7i5ucEK7oTTK9vtDO4vXbp05cqVGzdu3L59+969e8PCwhQKRUJCwpVa9+Hk53A4sIKWkpKCUBI/jnBRY8aMWblyJcuR0Wik2U9aL0Xr4hhh24sSAOKHbw9wP5L2WCwWWP2hAACPXr41upiAhnvYtnBE+NqZdoDD4AcPDxkAaxez/9Pdt3KEpZW2tjYzR7AkwTiE9zM+DfSu7sUJIHQlSECQwO9QAg6HA2ZvbOvr6++9916CGSNHjvT29iZ7HO1nGMbb29vX1/eZZ57pM6EBlxMw6LKwgMwTQLSEGZCUAt4+7e3t+LTRG5WMJmazmT5zBI4vvy4MwcchYMZms7W1tVFiazoRv8JYg1xA+NwQew6Hw2g0EgpH/8iVh05Iz0ED5Ym66DnwX6Ikh7jkLsIhlqAw0BfkZzbo9Ctq9BvcB6A/fvz4HXfcgZUpVCIQi8WI00XF0NjYWI1GI+PiYhXdUX/B/dWrV19zzTV42BBqfc0114wfP747Hn/Jvh7gfkBAwMaNG3fs2PHDDz8cPnz4F8P9jo4OeCZ8/fXXI0aMIOMBPPUfffRRlUrFsmxDQwPLEUCPxWIhHzta1cIBwrYXJdDlsQestHGEBVMrRwD9fb8lHOysAbj807Cay2LZ2tqKfvr+QpyNSPgeFilIm3z06UbjNtG/QkOQgCABQQK/XgLkzYKq9suXLx85ciTwBrxt3dzckELDzc0NUXZUl/fixYu/noGf0wPejWThJpQMgEv7ke6PzN78nukYrJHyf4JPPP8A8pPpchgdY7fbAbJpD/A9Pi50FrnlYA+tTtABwOtUaRT7ge/R4eUaCAxzOBLHAN+TekCg3+FwQH+glRw4RHUuKvzX3y4wgP7ls/rz2/0G9xMTE9VqdXh4OOYuuZHs3r1bKpUmJyer1WqxWIyYXYVz6i+4P27cOCyrPf7445999tmgQYNEIlEfWPeXLVvWBe4rlcrExMQrte5DIS4tLX3ppZfIQkAZeKZPn3727FlafiKNnCZWW1sbBaDQTqHx6yXAf9bp2eY3+LifrP4Ao/wtFAPXbflj8dtYToVCAjckLEfgw3D5lo5BJ3S66zjvuecuDNDtANAXfPR//QwXehAkIEigZwkYDAYAVoBXh8OhUCjwmR48ePDo0aPRppSdcN9nGAZOPkuWLOm5/1//KwzkfHyPPhF7inc+6kbRMQ6Hw2w2w/OeMlJcjpvhzwPATUZ3AsTojczzZNfv4h8PBQPlUMAYhfmiT6xL0+mExWlEvl8QdpICRvG4pDZAYWhtbSU1A4Pikvk7TSYT/1+oBNAr6FvDb/A//fz2L7uD/Qb3pVKpRqPZvHkzJu7OnTthI1+1alVoaGhCQoJKpYqKipLJZPDmVzih/oL7L7744qRJk9auXatWq9evX4+rmDRpkhM2r3i3M+s+4P6mTZvIuv/L4D7LsqGhobRK6OXlhZoX119//a5du1iOaF4S7jebzTTp6cHAwcK2VyRAYBTPPD3h6Jz+pTdCrwz6CzohTro0+F3hJ2K1hwaO5J870Nq4L1hrpg/YQGNS4EeQgCCBq1oC5MlDV2G1WktLS4cOHQqMAZiEdHkoVYv9yCuPmN0RI0bQ6S5q8LEBckaj/AhM8vz4V3jnw7MfzFitVpPJZLFYYAUnfx7k+oOHD9yE4OSD46EYtLW18UUEwA1ojsK0SKoDxIL+CYW3trYajcaOjg7aA7SNZQeMqNfrUR8drCKRDlyDwADwD5g0mUx8jYJgksFgQHwCzF5Yc4BrFn07+OoELrPb72OXzyv9+8tuq1O439TUVF9fX15eXlxcjPmElE+9lXdfqVRqtdp33nkHKqlMJkM1hGeffTYhIUGtVmu1WoVCoVKpELOrcEL9BfflcrlarZZKpQqFYtWqVUjtf8cddzhh84p3O4P78N1HqC7fdz8zMzMnJ6egoKC8vLyioqKqqgpZqAwGA9zgsKhkMpmwODh37lxk+ILPH+KB7rvvPtT7aG9vp3lJii8rkCABQQKCBAQJCBIQJOB6Cej1enyFH3nkEaodxDCMp6enl5cXfw8hNGqsWrWKzyAM7fw9l7cBwbvsJ3xJYBSGD1qnhdMjXCIpxgk7+3LrzCfT2X7yQcUBfclqt2MRP10amAAUu4ylD9xNinPocst6+Lff4L5arVYqlU8++STDMLfeeqtKpbr++uv9/PzuvPNOGUfA8QqFQs6RwgkJcB+++ykpKadOnSooKLhw4UJ9fT20tYaGBtI4Ozo6sHTV0NBwzz334GWBCGm8I9555x2LxQLttssSG6nyPcwk4SdBAoIEBAkIEhAkIEjgF0sAkXJUsJZl2Y8//rhnZE8Qn98YP348LNMsy9bU1ICfuro6Z4zxrXtwxSEDOXlmUuwsH0MDniJSqx+3zoLEmpxQl7QQ/ch5z0FudXV1WDZBNgsAfaQq+gUZ4foN7sfGxkZGRl533XUMw7z66qtarfZ///d/fXx8/P39Dx48KBaLlUqlWq2WSCRkRFd0RwLcB9w/cuQICprm5+c3NTUhXRT521yqLQesHxQU5OnpiYU/iuwZOXJkUFAQXgTIPcJ/+C+POnf2yhD2CxIQJCBIQJCAIAFBAr9GAlarFb4fBw4cGDx4MMF9Nzc3d3d3N468vLzoO84H+tSWyWToBAVzECHqjCtnkXhwsqcUN21tbchKzAepyAsHb/iWfiKdE6p3Qk1NTc2dpNPp+onr/z+ssxx3NTU1LS0t7e3tBoOhsbERNZUNBgMSm8Jp6ueb+fsN7qtUqsDAQEzNxYsXx8fHz507F/9u3rxZKpWq1WqNRhMTExMbGyvmYnYV3ZEA9/lwPz8/v6ioSKfTNTc3NzQ0OBwOvV5PoB9lO5DDizx5nnjiiVOnTsGJDZOJ/W8S4P5/y0P4T5CAIAFBAoIEBAn0vgRguEW/+fn5N954I0CRt7e3j4+Pt7c3P9c+IfvLG25ubk8++SQ86bF1BugxFtzcqVIVdsKpHb71qDtrMBhaWlp0Ol0DR8DSKF5Yy1F1P1GlE3LGTgVHOKmKI2dH9s1+SO/ybXNzc11dnU6nA9w3Go0mk6mhoaGNI/hpY878HNDfb3BfLpevWLECLuPbt2/XaDQ7d+7ErJ09e7ZKpUpISNBoNLDuR0dHK5yQAPcB95OSkk6ePFlUVFRXV9fc3FxSUlJUVGQ0Gs1mc1tbW2pqKqrxIdAH9bdFItGiRYvwnOt0ui4OPHjg4biPY2iP0BAkIEhAkIAgAUECggR6VwL0qTWbzc899xwQEb7XXTA9P/9ml5/orNzcXHjkd8Hxzng2GAyAAUajEWnpUSRLp9PBPbimpqaqqqqyspKAaQ1HwMRVVVWA0X2/veiEnHFSVlZW3kkXL150dlif7YfKcflWr9dXVFSUlpZWVVXV1NTU1tY2NjY2NzfDtwf13eGR0W0m0y43ut/gvkwme+WVVxiGGTZs2KFDh2QyWVRUFJTXZ555RqlUJiUlKZVKBUcSiQSNy7cC3Afcz8rKOnHixPnz5zFjampqkB3fbrfv37//UsEskUiEt8bgwYN9fX3Hjh17SeNiO6kH73x+zefOw4W/ggQECQgSECQgSECQQG9KAH4al9zllyxZgqhcmEQHDRpEoB9A39vbm/Z0C/fd3Nzef/99MEelcnrmFTDAbDbrdDqWZRsbG1HHHaC/ubm5sbGxoaGhvr7+AkclHBV3UlFR0fl+okInlOuE8vPzCzjCef3E9f8ftsgJXbx4sbGxsa6u7uLFi5WVlWVlZRcvXoSlv6mpqaWlxWAwoNA7UkX3fH/7De4rlco//vGPHh4e48ePV6vVUVFRGo1mwoQJnp6eo0aNio6OjouLi46ORjUulUqlcEIC3AfcP3nyZE5OTlFREez6WLkrKyt7++238S7gx/I/8sgjxcXFZM6n9LH0UnBcRj1PI+FXQQKCBAQJCBIQJCBI4FdKAFF2S5YsefHFFx999FH48/j7+/PdePhf826xvre3t4eHh5+fH4A7Zb10xhuBAWS4dzgcBoNh69at99xzz913333XXXfdeeedkyZNmjhx4gSO7uPoXo7u4ehujtDu++1dTmiiE7qTI5zUv5zzpQdO+NuAgIDTp0+3tLQQ3C8qKmpqaqqrq2toaADiRzJQfvJTZ3e53+C+RqNhGGbQoEGPPfZYenr64cOHk5KS/v73v6NyREhIiFqtDgsLS0xMlMlkcXFxCickwH3A/eTk5KysrPLy8rKyssLCQqPRWFRUFBAQQPX2/P398V744osvaDYQvtfr9dDsYcu3ddLPcQij3oSGIAFBAoIEBAkIEhAk8GskgO8ymeFYlq2trc3MzNy3b9/y5cs//fTTl156adKkSVRnt1vEj50bN25EDm4geGdc4esPKyESdSQlJaF4qIijLkN0u7PLMQPhX/B5+XYg8PYzedi6dWtJSUlubm5paWl5eXl+fn51dXVtbW1dXV1jY6NOp4NDP0qPObu/2O9yuK9SqWJiYrRarUqlioiIUKlU8fHxYrE4ICAAq1Qff/yxUqkMCgpKTU2dMWMGwzC+vr5z587VarVKpVIul6empiqcU3/BfaVSGRsbK5PJFApFQEAANO/bb7/dOadX9ouKozfeeIPmxA033DBv3jxnefdh2j916lRzc3NFRUVLS0t1dfV9992HsgYeHh4Mw9x7773R0dGsQIIEBAkIEhAkIEhAkMBVLgGTyVRcXKxWq3fs2LFo0aK33377iSeemDhxIqoYeXh4jB49Gik1Ucup58u1c2Q2m41G48GDB5ERiCyGgCKDBw8mTDKgGqgTOmjQIJQWhme4t7c3VRbi5zgaUJwTM15eXiKRyM/Pj2Kyvby83nnnnWPHjp3l6PTp0yUlJZWVlSUlJRUVFUi5jixDBoMBlYMvv9GUaNHlcF+pVKKArlqtRnpNQP+3334blVwnT5787bfffvXVV1u2bKGqW2+88UZsbKxCoZBKpQkJCVKumpWiOxLgPqz76enpeXl5WVlZpaWl1dXVzc3NOp3um2++8fb2RvauKVOmFBUV9fy0C78KEhAkIEhAkIAgAUECV5EE4GFPYb7wzLFYLHl5eRERESzLogpsz1eEFHwdHR1tbW0Gg4Hgvo+PD8MwhPL5PkWEU/u9IRKJ+GlJgfjd3d3BLf4Fk56entAB+p1nPgPQVbCH2AN4e/PNN9PS0o4fP37ixIns7Oz8/PwLFy4UFRWVl5fX1tY2NDQ0NjaiOmpra6vFYulPuI/KuCqVKjY2Fi74sbGxWq32rrvuwlW5u7uPGDGCMsvigu+++265XK5UKpGZZwCG6g40635CQsLZs2dPnDhRWFjYyFFzc3Ntbe3mzZtnzpwZGhoKFR9FpEnb6/n5F34VJCBIQJCAIAFBAoIEBrIELnfkMJvNJpOJKm2Rp24PV2G3261Wq8ViMRqNLS0tBw4cACoDTnvttddeeOGFt95667XXXnvzzTffGGD0yiuvvPXWW6+++upLL730+uuvT548mQKdGYZ58sknX3311TfeeGPKlCnvvffe1KlTBxj7b7zzzjsvvvjiq6+++hpH11xzDSkDr7zySlxcXGpqanp6elpa2smTJ3Nzc/Py8oqLi5Eiqb6+vrGxsaWlxWg0UpYe/o0mvOdy675cLtdqtQqFQqPRxMXFAcRLpVLSZvhYXyQSIR/8kCFDQkNDY2NjcTx8ZhTdkWDdh3U/JSXl9OnTFy5cKC8vRwR9VVUVy7IGgwFAH7e/tbUVsTv82SC0BQkIEhAkIEhAkIAggatOAna7/XK4320GbTjxO7tAm82Gurl6vb65uXn//v0wjcPGHM5RamqqVCrVarWxA4zCw8NlMllsbGx0dLRcLj9w4IAHRwzD+Pn5rVq1SqVSqdVqANGoqKgBxn6sWq2OiIhQKBSoPws3bCD+f/7znwqFQqvVJiQkJCYmZmVlnTx58vTp0/n5+aWlpZWVlTU1NUi/bjAYzGYzDPwE8TETcNNdDvcRaAvQHxcXB3f8Xbt2MQwjEonefvvtyMjIiIgIrVar0WgyMzMfeeQRXOSmTZs0Gg3WBHCfFN2RAPcB948dO3b8+HGqNaHT6erq6oxGI4J+bDYbSuvhrkPXR1vYChIQJCBIQJCAIAFBAle1BOx2e0dHB+ph4UL0er3ZbAYGQMKfHi6wo6PDZDK1trbCXLhv3z6RSOTu7g7rfnJyslarzcrKkslkKpVKMsAorpNQoykqKoqs456enuvXr09ISABWTEhIUKvVA4x9SUZGhlqtjo+PT0xMVKvVEydOJDekl156KSYmRi6Xo/LskSNHsrKyjh07dvr06fPnz5eVlVVUVNTU1MDA39bWZjabrVZrtxivT+E+2JXJZP/5z39wM+bPn6/VaqOjo2UymUQiiY6Onj59OhytEMIbFxenUqkGYGaegebMk5OTk5mZSYk4dTqd2WxuaWkxmUxkzv9/7H13fBTl9v7sZlMJTVRAQQVFqoA/LBcbqKgXUSlKb95rvbQP0nsqvXcCgbTtbXZnZ2Z7yabQEdtFkF5CEkgCaaQA+eXu82VuLmRziaQslzl/LMtkd+bM2Zl3nve8z3kO10vr2rVrNdz2/J/4CPAR4CPAR4CPAB8BH48AimurpnLh8F3g/vbt20VFRTWfS1lZWWFh4fXr16Gsv3v3boFAwFW+0jQNnKZQKJRKpa9lx0EU12q1MplMqVSqVCoO7ld2HFq6dCnDMFqtVq1WkyRpMBh8zX+dTieXy0mS1Ol0LMs+//zzIpHI39/fz89v0KBBOCmdp/2U0+lMSUlJS0s7dOjQb7/9dvLkybNnz168eDE7OzsvL6+wsLC4uLjR4L7BYDCbzcju63Q6u91OUVT//v2DgoJCQkJ27txJ07RWq0U5L8MwW7duxWzyrbfegu4+FjJoL8Zn97ns/uHDh48ePXrq1CnUcJSUlBQXF2MgQPEN7nZOfLPmm5//Kx8BPgJ8BPgI8BHgI+CzEeB6qXKFtmi3xJXt3r59G2n7/3oKpaWl+fn54AVkZWXFxsZC3ge4GViToiiHwwFEZ/Als1gsVquVoiiz2azX6ymKQtYYCxQrV660Wq0OhwN9nBwOhy/5/i9ftFotiDAmk8ntdnfq1Ak91AQCwQcffBAXF5eQkCCXy9VqtdFotFgsLpdr3759P//88/Hjx0+fPn3hwgXwedBn11ubhXrP7mMiBciuVqtdLpder+/UqRNBEI899pjBYCBJEkwel8tls9m0Wm1QUJC/v3+HDh2kUqnRaAQli/ZiPNwH3Icyz48//njx4sW8vLwzZ87k5OSUlJSUlpZyE/0bN27cmwb4r6MA/wE+AnwE+AjwEeAjwEfA1yJQXl5e9Zle9X3VNXxggKqE3ntPBHAfCh+ZmZm7du3iEuQEQVAUBSIGIBztY2YwGCiKSkhI0Gq18fHxMpksODhYKBSCErNo0SKQ+/V6vVwut9vtPuY+DSaP0+nU6/U2m619+/acmlD//v137NgRExOTkJAglUohU+lwONLT048ePXrs2LGTJ0+eP38+MzMzJycHcB9CTFUvBvzc9Q73MR1UqVTge5lMpqSkpKZNmzZr1qx///6YAKAqFwKder3+pZdewnWmVqsTEhIcDgfOsNpfqLHgPs4LVchz5sxBGXinTp2qdfJPbKyt7v7evXuPHDny+++/nz179tKlS9nZ2deuXfOmw4rfnn/lI8BHgI8AHwE+AnwEHvEIlJeXl5aWFhUVXbt27fLly5cuXdq5cyewMl65+kmGYbj3tM8Y4L7aYzKZTKFQAEPC+cjISABFo9GI8lGfcfzfjsAxk8lUOSfp0qULPA8ICOjXr9+GDRu2bt0aHx+flJQESpXZbE5OTj506NCvv/4KBv/ly5dzcnLy8vLy8/O98XnqHe6TJInCCJvNhlLd8PBw/BJDhw7VaDRoVsWJ8Fit1uHDhwM9L126FKlrELP+HZgq7xoL7mu1WqPRaLVanU4n2mwFBwe//PLLVVx7oLc83K/gjY8AHwE+AnwE+AjwEajnCJSVlZWUlBQWFvJwn24kqxbui0Sit956a+3atZs2bdq9e3d8fLxKpdLpdGaz2eVyHTx4sCrcR5PdxoT7DMNQFAU9TaPRKJPJxo4di1av4eHhaKSFSlySJM1ms8ViWbBgQUBAQLNmzT7++GONRqNWq2uIf2PBfe6kTCbTkiVLMIHp2LFjDa7W6k883K/gjY8AHwE+AnwE+AjwEajnCFSF+xkZGRcvXoyJieGz+3QDWrVwXyAQ9O3bd+XKlWvXrt2xY0dsbKxUKgWD3+l0HjhwAPR9NFdtfLiPnriV0kIqlUqv16vV6unTpw8bNmzEiBEMw0CJ32azQT7J5jGxWDx06NDRo0d/9913WNqw2Wzewt5YcF+v16N4xWw2JyYmDh48eOjQod9//703P2u7nYf7FbzxEeAjwEeAjwAfAT4C9RwB1PgVFBTk5eVxcL8qH4Yj8PBkHrp+rFq4TxDEa6+9tnTp0uXLl2/atGn79u2JiYlyuZxhGLvdvm/fPgjwnz59+tKlS1euXGlkMo/FYtHr9Xa7XaPRMAzjcrlkMpnVahWLxWlpaei2azabNRqNzWYzmUwkSdI0rVAodDodvsgwjNls9hbhxoL7WK/AL+R2uxUKhV6vNxgM3vys7XYe7lfwxkeAjwAfAT4CfAT4CNRzBKrC/UuXLl24cGHHjh083Kcb0LzB/VdeeSUiIiIqKgqUnri4OIlEgsrp9PT0H3/8keuwCy3OxiTz0DRNURQqjtGPzWAwHD58GAQecPcxcbTZbHq9XqlUajQal8tlt9ttNptMJtNqtTXEvLHgPoSfGIZJTEy0eMzhcNTQ/beGU6j2Tzzcr+CNjwAfAT4CfAT4CPARqOcIQLY7Pz8/NzeXh/t0Y5g3uN+nT5/Ketfw8PBVq1Zt2LBh9+7dYrFYp9OZTKbU1NTDhw//+uuvf/zxB7Q4Gzm7D31T1ONCX1/jMaPRiEQ+SZJcFl+v16OvltFjIO6zLFuDcFJjwX20O7ZarVKp1Owxu90OoZ46uVR4uF/P4xu/ez4CfAT4CPAR4CPAR6CiKty/ePHi+fPnt2/fzmf36Qa0GuB+mMdWrly5bt262NhYsVgMqRi3233o0KFffvnlxIkT0OJsZLhP0zQ0kkwmE7oDuFwupVLJsqzNZktNTZVIJGq12u124wRYlgXR3263KxSK5ORkmqYxMag28o0F97Hm4HK54LZKpSJJ0mQyVevkn9jIw/0K3vgI8BHgI8BHgI8AH4F6jgAH93Nycni4TzeGeYP7r7zySlhY2JIlS1asWMHBfY1Gw7JscnLywYMHfQvu12vosA4A0M9NLSiKUnosMTGxc+fOQqEQ89QRI0bUqzN1uHMe7lfw9hBGAE3d7//1ITxF3mU+AnwE+Ag83BG47TFuoC4rK7tx48b169evXLly/vz5c+fO/TnuvkKhsFgsdrudYRjorzgcDplMRtezoZMuSZJarVYikUilUoIghHfabN2/7r7JZFIqlSqV6ujRoyCeKJXKGny32WwKhcJgMFgsFpIk7XZ7enq6QqGgaZplWZfLZTKZ5HI5ZCcZhqlhV97g/quvvjpr1qywsLDw8PBNmzZt27YtPj5erVYzDAO4//PPPyO7n5WVlZOTc/369eLiYq6tckVFBddvq95192s4vTr5k9FoBDJGKLGSgBoApVLJw/3S0tLy8vJbt25V8MZHoP4jgKfI/b/Wv0f8EfgI8BHgI8BH4D8iUE9wHxWY3333XdOmTQmCWLZsGZAuXc9WV3CfZVmz2exwOGbMmBEaGkoQxPfff1+DVAzDMHq9HnIyDMNAYMZgMGg0GofDwTCMw+FITU01mUxms7lmTXke7v/3a6RarM/Dfb6rdCHyPgAAIABJREFU7n+Mbfx/+AjwEeAjwEeAjwAfAU8E6gnuG41Gg8EwePBg8CnUarVSqaxDxULai9UV3Ed232q1DhgwICQkRCAQREdHq1QqL4f9F1PdYrGAXWIymdDWNy0tjaIoh8OBJrgulwstWTkx02r3xsP9asPyHxurhfs6nY4n81y7dq2oqIjP7lf8T9v959Eb5pO1DXbDePXgR6ntefGf5yPAR4CPgM9GAENinZN5XC6XwWDo3r178+bNQ0ND09LSoLFO17PVIdzXarWHDh3q0aNHaGhokyZN1Gp1DVIxJpMJ6jIkSRoMBo5bbjKZAPEBUFmW1el0LMvWEAYe7tcQnP/7E+MxjrWP7lc83Oez+xWPhj04kK3bPdQ26nV79PrbW23Pi/88HwE+AnwEfDYCGCrrHO6npqaq1WqCIPz8/J5//nnAM7fbTdez1RXc1+v1NE3v27evVatWBEEEBgbqdDqXy+XNfbPZzDCMyWTS6XRqtdrpdCoUisp2q6+88srAgQPlcjlFUTKZzOl0/tdVDh7uewvyv7dXC/dJkuSz+3x2v+IRMG689pE3tQXcPuL2f3XjEbiU+FPkI8BH4FGJQD3BfYqiYmNjAfdHjRplMpnQc4muZ6sruI/2qfHx8cHBwSKR6M033zQYDDW3ftLpdFBg12g0ZrM5LCwsJCQkNDR00KBBbrc7PT2doqj09HStVlszqYmH+//9GrmrQlen05Ee4+E+D/cfhZH7v+LUBv7AzVpaA7v3pw/3KFxL/DnyEeAj8IhEoJ7gvsFgWLhwIYj7ixcvBrW9ZphL14XVFdxnWTY1NTUiIgKnMHjwYJVKZbPZvPkIDg/LshRFGY1GvV4/fvx4fHfOnDlGo5GiKIPBgFLdGvZD0zQP970F+e7tnCAPD/fPnj176dIlnsxT8WjYn8av9fTFslpaPblR57t9NK4m/iz5CPAReCQiUE9w32q1jh07NjAwkCAIsVhsMBhq5r7TdWR1BfelUqnJZBo3blxAQEBlgj86OhrqOt7cJEnSYrGAyeN2u3U63fDhwwmCCAkJ0ev1LMuC4SOXy1mWBVPI264aAu7fvHmTU+W8fft2WVlZYWHh9evXs7OzL1++fObMmRMnTmCyQhCEQCCIjIxkGMbpdDIMo9VqobJUw2no69nuAvpoxKtWq6G9umPHjpdeesnPzw8/wKhRozjyD+j++DpFUd5+g3p23+vuLRaLWq0eMmRIYGCgv78/QRBt27adMWPGggULIiIiVq1atXnz5l27dslkMoPBYLPZ0tLSDh8+fOzYsTNnzgDuQ36VL9WteAjt1q1bZWVlFRUVN2/ehIhq+X/azTtW6MUKGslu3LHi4uKiO1ZYWFjsxa5fv57vMfjLnU0juV+A8bC4uLiioqK0tDQ7O7usrOz69evcLKa8vByxx4zi3osLz9F7t/Nb+AjwEeAj4CMRqCe4bzQa33nnHYIgHn/8cblcjlpKm822devWr776aufOnVu2bLHZbNCstFqtMTExS5YsmTBhwujRo7du3ZqcnIzpQXx8/MKFCyMjIzUaDTqZmkwmlUql1+u3bt06d+7cxYsXKxQKvV6fnJwslUprC/dJknS73TKZjGEYi8WSnJwcFhb21VdfffLJJ2vXru3fv7+fx+Lj441GIzT1Dxw4AImeuLi477//fuTIkSNGjJg4ceK6deusVqtYLJ4/f/7y5ctbtWrVtGnTJk2arF+/fuHChevXr09MTDQYDGgaa7FYJBLJ+vXrx3hs7Nixs2bN2rVrl7fsvlAo7NOnz4wZMyIiIiIjIzds2LBly5bExMQ/qbtfW7i/ZMkSTGhAadJoNOinoPNiXvFs3f0BGX2tVgusr/KYXC6XSCQ7d+7s1q0b5poEQQwbNoy6Yzi+F6//vbnu3KzdniiKIkny888/9/f3DwoKEggEHNwPDw9ftWrVpk2bdu3aJZVK74X7Fy9ezM7O5uG+jwystXKjqKio2s+XlZWVeqzEY3dA9Y07iPrufznc3MBvrt2xPI/l3jH8997Xe7E+zqSB3eYOV1ZWlp+fn5GRkZubC09u3rxZUlJy48YNRL60tLSsrKzcY1VbmXC/2m2Pcf/l3/AR4CPAR8DXIoBh6tYdq6s2WyaTiSCI5s2bd+nSRSaTORwOkiTXrl1LEESLFi3atm2LplRqtdrlcn355Zft27cXiURIKLdt23bChAlms1mlUn300Ucikeixxx6bO3cuRC1RDkvTdIsWLZo1a9apUye1Ws2JYNYW7mMecuDAAYZhoqKiXnzxxYCAALghEAgCAwOFQmFAQIBSqbRYLFKpNDk5WafTqVSq3r17h4aG4sMtWrTAV9avX79s2TKCIIKDg5Fc5lLkQqFwx44dP/30k9PplEqlkydPfu655/BXCH36+fm9+OKLPgr3FyxYoFAosO6AJQy9Xq9QKDRe7N/AuX7e4bBqtVqlUik9plAo5HK5SqVKSEjYunVrmzZtuND//e9/57wgPaa9Y17c13Cfb+A3Go1Gr9cPGjSIc75Nmzbz5s2bP39+eHj4ypUrN27cuHPnTolEQlFUpUxsamrqoUOH/vnPf545c4aH+742tt6/P0CQt27dKioqKi8vr6ioKC8vz87ORnK8sLCwoKDg+vXr165dy8vLy83NvRdAY8sdmN0I/+bcsatXr165Y1e9Gz4OR7nTaQS/PYe85rGCgoJr165hTgVeHLf4UFRUBOiP2detW7fw4ORe7/+35j/JR4CPAB+BRokAxqtbd6yu4L5EIhEIBARBDBgwYP/+/Xv27FEoFO3btycIok2bNsuWLUtOTpbL5Uaj8YMPPkArrvbt2/fo0aNJkyaVbbkCAgJkMplarf7yyy+BfObNm7d371673a7X641GY3x8PLZ/+umnVo/J5XKTyVRbuK9Wq81ms0KhiI2NxaEJgujRo8frr7+O/QsEgo4dO9I0bTKZtFptUlJSRETEE088IRQKCYLo1q1bz549CYJo1qyZUCjcsmXLDz/8wE0Y/P39/fz8MI15/PHHwTShKOr999/Hzlu0aPHqq6927dpV5LFBgwb5KNwPCwvjWgSDz0NRlFKpvAOb7/4XqLr+XgH078L6crk8Pj4+Li5OLBZ36tQJZBiCIIYMGcKxd5Bs50D83X7f+X/9eV7znuPi4iiKGjVqlEAgCAkJCQgIaNu27cyZM+fNmxcWFrZixYoNGzbExMSIxWK9Xm+xWDi4f/r06YsXL2ZlZfGluo0yjD7gQQsLC0HjuX37Nhpi37hxo6KiAkA/Pz8/Ly8vJyfnypUrWVlZmZmZl7zYxUYyuIODX/DYeY/h/b2vVf+Kb1XdQ8OfxJkzZzIzM69fv37aY5cvX7506VJFRQXmJHl5edeuXcvPzy8sLCwqKiouLi73GDhXgP4PeAHwX+cjwEeAj0B9R6Ce4H50dPRjjz1GEMScOXNIkrTZbL169UJqf+7cucnJyVqt1mq1Tp06tWnTpiKRaNCgQQkJCTqdLjIyMjg4mCCIWbNmWa3WxYsXBwUFBQcHz5071263y+VynU63b9++d955x9/fv0mTJhKJhKZpNPFFa1sQIrRaLeA1QRBCoRBzj8jISHTCMhqNSFXb7XaxWBwbGxvksaZNm27YsEEikajV6jFjxuAURo4caTab9Xq9zWZbuXJl8+bNCYLo2bPnli1bUHzcpUsXgiCeffZZtN1lGGbMmDEA9BERERKJxGq1ajQai8UiFos/+ugjrHtMmjRJq9UyDDNq1CgQT6ZPn+6jcD88PDwpKYlL50skErlcnpSUJPFi4nq2eI/F3bE9dywuLm63xzp06IAfgCCIr7/+GisASqVS4TH5HfPivqSe3fe6e5lMRpLksGHDOOdbt24912OLFy9evnz5+vXrd+zYkZSUpNPpzGZzSkrKwYMHf/vtt9OnT1+4cIGH+/U9XNbf/gsKCgAigSavXr2alZWFTHlWVhYA6Pnz58+dO4eybODju17vBdYNswUo+ZTHTnrsD4/h/b2v3uB+w3h771F+//33S5cu5efnZ2ZmXrx48dKlSydOnPjjjz8yMjIuX76clZV15cqV3NxcgP6CgoKSkhKO3sPD/fq7Kfg98xHgI1CHEbjtsTvJ/X+Vit24ceP69etXrlzBw2XHjh3AHkDMXEdYhmG49/Q9NmLECHxry5YtKpVq0qRJyNlPmjQpNTVVLBYrFIqkpKSWLVsSBNGxY8c9e/bs3bs3OTlZpVIhOz5kyBCr1VrJYsB+JkyYoFQqk5KSoMGI1GePHj3QssrtdpvNZoqiapvdt9vtDoejU6dOWGGIjY2Vy+X79+9nWXbatGk49NKlS00mE8MwsbGxHTp0ADQnSVKn01mtVoZhEJkuXbpgLmEwGAYOHNikSZOWLVtu2LABgv1Go1GpVE6ZMgVfHzVqlEajcTqdLMsOHjw4KCiocolg3bp1Pgr3N27cCHI86nSlUikHnQGg73qV1rMlebHdu3dv3bp17dq1nTt3xqpKUFDQZ599pvGY2mM4EY4CdJfn+G89u+919wqFQiwWf/HFF9xKU6tWraZPnz5nzpxFixYtW7Zs3bp127dvT0xMJEnSZDJxcP/UqVMXLlzIzMzMy8srLCzkS3XrcIhsmF1duXLl5s2bGHwrKioKCgquXLmSk5MDxJ+dnZ2ZmZmRkXHJY797sWONZL957FeP/eKxnz2GLfe+/vbbb/+8Y8eOHePOppHcP3bq1KmzZ8+eOHHi5MmTJ06cuHDhQm5u7i+//HL27Nlz585duHAhIyMDsy+A/uLiYnB7ysrKqtZBNcylwh+FjwAfAT4CfyIC9QT3+/TpA1kUmqbnzp0LOvvHH3+s1+tBwdi7d++QIUOaNWtWqT4SExNjsVgoitLpdBxLZ/z48RRF7dixQ+ixsWPHUhRlMplomp4yZUpISIifn9+KFStIkty3bx9N00ql8k/AfbfbHRYWhqnIwIED7Xa7Wq3WaDQqlWrgwIGA+7t27aIoymw2jx49GgyRuLg4SLw4nc4FCxaIRKKAgIDhw4ebTCaI8Lz44osEQQQFBbEsazKZFAqFVqtNTEwEy7979+46nS4tLU0ikVRWCb/66qsikcjPz08mk/ko3EenMaj0gMaERRMEyNde27ZtW9U9XECCO+Zr3t7lT0BAgEAgEIlEzZs39/Pz69Chww8//DB79uxFixYtXbp03bp127ZtS0xMRN262+0+cODAb7/9durUqfPnz/Nw/0+MgL7wFejwVFRUxMbGtmvXDpcEN+W76wpBNxNoCNz1iku94V8D7pi/x8BNFIlE+O+9rzgj3JHwFifS8J5zR0QaJjg4uG3btl999dX58+dzc3NPnjx56tSpM2fOVEX8OTk5YPXcuHED8+rbt2/7wlXE+8BHgI8AH4EaIlBPcL9du3YCgeCZZ54BfG/dunX79u3j4uLsdjtN0xqNxuFwhISEEATRp08fp9Nps9mMRmNcXNw333xDEIS/v//GjRs1Go1MJsOjYcyYMSzLulwupVLZrVs3giCeeeYZlPOmpKRIpVIQY2qb3adp+vnnnycIokmTJjqdTiwWp6amarVam8320ksvAXSpPBYbG/vUU08RBPH222+j+DghIcHhcEyYMAF55GXLlqnVaqVSSZIkAOcLL7yQkpKSkJBw4MABg8Hw5Zdf4pQ3bNjATQNomm7ZsqWfn1/Xrl0RnGqFOBtZmQdTt7tgx13FyFX/egda1++/3KO66hvODX9/f6FQiFUbbuN9vqlfv73vnXMP6IcgiHbt2k2bNm327NkLFy6Mjo5eu3bttm3bEhISqsL9X3/99eTJk4D7ubm5fHa/hvHON/9UXl5eVFSUmZn51Vdf4Rrw9/evFMCtemFXRfberiDu+nno3uCMGtFtcDQB+tu1a+dwOH7++efjx4+fOHHi1KlT586du3jxYmZmZnZ29tWrVwsKCiAzWlJSUl5ezs3WfPPq4r3iI8BHgI9ARUVFPcF9pIPfeOONF198EYydmJgYlmUtFgvDMBRFzZs3Dzn1uXPnMh6zWq3ffvstQRAtW7Zs164dtDhpmkYya8KECTqdjmGY3bt3g8kzbdo0NLQiSVKv1x84cECtVtcW7m/fvh3Z6v79+9tsNqlU6nA4GIYhSbJ58+bBwcGtWrWyWq1yuRzcnmbNms2aNSstLQ0yQdAO8vPzCwgIEIvFDofDYrGsX78eqf1BgwaRJAmGksPhwFJG+/btaZrW6/UMw9jtdovFghP88MMPUQnQEHC/ajrq9u3bpaWlUKXIysq6ePHi8ePHjx07VjVBzqFPDuKDftRYj2cgIdRBi0QibsEB7uGZDQ8b188/HR9/f3+cRfv27b/99ttZs2bdBfc1Gg3LssnJyfv37//ll184uJ+XlwcVEQi8YIzj4YiPjPVV77uKiopbt26Vl5fj7isrK8vLy+vbty/W0P70ldMoX0TCgzs07seH69aDz0KhEAu4hw8fRh38Tz/9dOzYMfB8zpw5g+4WV69ezcnJuXbtWkFBQXFxcWlpKcp2feQy493gI8BHgI/AvRF4QLgPUjvLsgZPy1iNRkPT9KJFi1CNCsoNQRBz5841m80kSbIsK5fLzWbz0KFDMa4uW7Zs8uTJAwcOREacIIh+/fqtWrWKYRi32200GpF979+/v0KhsNvto0ePDgkJCQwMTEpKSk1NhRw+ShzRwaraUl1A6iVLlpjNZvQyUqvVWq124sSJGOcjIiKQcU9LS0tISNixY4e/v39oaOjQoUOdTqder3/ssccqxTTbtGmj0WjsdrtWq3W5XCaTqWPHjn5+fi1btjQYDBqNJjU19ZtvvsE+Z82ahfhoNJoffvgB05vJkydbrVaz2YzliPDwcEwD/vGPf7As20Bknqqw437gPvcg5+A+Jz/E/anh3wiFQj8/P8SaO7pQKMT8ElsgccP91fffcBQOnFeHDh2mTZtWFe5v3bo1ISGBh/v3jmW+v6XqfXcX3C8uLs7JyXnjjTe4SxRCAdx/ffyNSCQKDg4GDw2uYinTx92Ge4GBgdyAhkqsgwcPpqSkpKenHzx48KeffkKxwYkTJ1AnjRx/bm5ufn5+UVERXyrj+7ce7yEfAT4CDwj3WZY1Go0GgwFYGe1WkaQHQwZkin79+hmNRpvNplKpWJalKAogHhlkwDbw+9999901a9ZYrVabzaZUKmmafvrpp/39/Z9//nmKohiGAaOmf//+JElarVboj5MkSdN0Ddx9wP1FixYxDAPlfjj88ssvEwTRqlWr2NhY1A/Y7XaWZRcuXIgs28SJE1mWjYmJweOgf//+RqPRarXq9Xq1Wk2SJHSEXn75ZawJOBwOyKYLhcKVK1eiIYDNZnv33XdxgmvXrjUajZD60ev1o0ePxh527NhBedq8+mJ2f8qUKYsXLw4LC1u2bNnSpUvDw8OXL1++ePHiqEYyNBuLioqKjo6OioqKiIgICwtbvHjx/Pnzp02b9o9//KNVq1Z+fn5YBHjzzTcbyc1aH3bx4sWRkZFvv/02B5Latm07derUWbNmVdaIREdHr1mzZuvWrfHx8TzcfxjH7rvg/s2bN8vKykpKSrC2lp2dzcF9oVDYu3fvWl9A9fyFSC+2ePHi6dOn/+Uvf8F16+fn1759+xkzZtSzO3W2+7CwsHHjxj3++OPcfZecnOxwOOx2u9vt3r9//+HDh48ePfrrr78C8WdmZqJy99q1a4WFhaD0VNt+62G8Snmf+QjwEfifjMADwn3UsOr1erPZbDKZQHF57733kAV+4403+vTpIxQKQ0NDFQoFdCrtdrtCocC42qpVK0hY9uvX7+9///v69evVajWAO8C90Wjs1KlTQEBA+/bt7XY7mlhVUmVWrFgBrK/T6Ww2G8uyVqsVrJ5qs/tgoyxcuNBgMEDbx+FwWK1WZKBee+01kiTtdjtFURqNxmw2jxw5Eh4uXrxYr9cD/RMEMX36dMwKKpcdkpKStmzZgo/97W9/46Y9qNNt2rQpJDgrewukpaWFhoaKRKInn3wSXCb0BjaZTF26dEGsTCYTJi2+CPfXrl1b2VpMp9NhpoLpHX4qujEMnC2Dx1DirdVq1Wo1whofH9+hQweOgDRx4sTG8PHPHBPwYty4cRzseOKJJ6ZNmzZz5swFCxZERUWtWbNmy5Yt8fHxarWaYRiezFPxUFlVuH/79m0weW7cuFFQUJCdnX358mWQeQiCEIlEn3zyyZ+5hur5O7jpuEYWlMdMJpNGoxk1ahSKDQIDA3v16oXe4/XsTt3svrIrZHh4OJ5GuPWwX5ZlbTZbSkrKvn37Dh48ePTo0WPH/iXjc/HiRWj1IMF/48YNSPRU8MZHgI8AHwFfjcADwn2dTmexWCBJCdkcq9X67LPPCgSC1q1br1mzZubMmVgdjYiIAB7TarXx8fFIlk+ePHn37t0pKSlKpVKn0yHjDmoQTdMsyzocjgEDBkDnvrKi96233goKCnrmmWcMBoPNZgMfBnDfZrPpdDpv3H1I7y9ZsgSEGZqmrVarSqUC1P7ggw+gi28ymcRisUajQZut4ODghIQEiqL+9re/YX1gy5YtNE0rFApMNiZOnIjla7CPUDocEhIiFAqfeeYZo9FoMpmAkMHk6dWr1969e+EkOqiC4Nq1a1eapn0X7kdHR2u1WpqmjUaj3W43egzcLLYxzGAwgPaEqZter9dqtRqNRuwxqVTaqVMnjk88atSoxvDxzxxTLBazLDt8+HBcbQEBAW3atJkyZcrMmTPnz58fGRm5evXqLVu2xMXF8XDfV0fU+/Xr1q3/kz0uKirKz8+/fPlyRkbGq6++CrgpEonGjRv3Z66h+v8Oaq2gTQbcn5SUJJVKP//8c1y3BEF06dLFaDTWvy91cwS1Wj179mxuxKj0Xy6Xo5md0WisfAilpqbu27fvyJEj//znP0+ePMmpc165cqVqY7v7/e35z/ER4CPAR6DBI/CAcB95fYPBYDab0btKrVYHBgYKBILXX3/dbrcrlcrg4GCRSDRgwAC01lKpVMuXL8ccYNy4ceiQBQl/pIqQOwaktFqtgNodOnRQKpWhoaEhISFTp041m81g6ttsNqvVisoBlMBWm93HMzQyMtJms3G0n40bN4L7PWTIEI1GYzAYHA4HSZIajebpp5+G+A+oRx9++CF4RwC9KpXKZrOZzeb27ds3a9YsKCgoKSmJoii73R4TEwNloddeew3HMhqNsbGxmBUMHDjQ5XJRFKVSqdLT0+fOnYs4fPrpp3hu+ih3PyoqimEYi8WCh5/FYjGbzQi6qTEMEykcGZeOXq/HL6dSqWQyWdeuXVHqShDEmDFjGsPHP3NMrVZrMpk4uC8SiVq3bj1p0qQZM2ZwcH/z5s1xcXFInfLZ/QYfMOvsgID7xcXFhYWF165dA9xHj26MNRMmTPgz11B9fgdruMhhoMkI7TGSJLVaLa5bDLXdunVLTU2tT1/qeN9hYWEo+kdbR4nHkIUymUxOpzM1NfXgwYO//PLL8ePHOXXOrKysPE+ni5KSkrKysgre+AjwEeAj4KsReEC4D3gKlg4S55s3b8Za9ODBg81ms91u79Wrl0AgaNGihUqlQsYHtbytWrX6/PPPU1NT5XI5cI7L5XI4HDRNa7VavV5vNBopipo2bRqKeufOnQt5Z4ZhdDod2D52ux1Meqjye8vu4xkUHR3tcDgArDUaTUREBKD5yJEjjUYjigGsVmtsbCwWH/r27YvtaAlMEITJZLJarXBs06ZNBEE0bdq0SZMmWq0WtCLQfvz9/T///HMsdzAMEx0d3aRJEz8/v+HDh4NNpFAo9u3b17VrVywvjB071uVyAbj6IpknLCyMK85A9THmTHQjGfKLHOBAdh8dEyQSyZYtW0DmQfnI3/72t0Zys9aHRVkJij9wybZu3Xrq1KkzZsyYN29eZGTkqlWrNm/evGfPHh7uVzzkdvPmzdLS0qKiooKCgry8PJB50KAb493IkSNrfQE1yBcwgOr1ep1OB6CPXipjxowJDg7GemW7du2QGmkQjx70ICzL4pmEm66y9mD37t1SqTQhIQGN3E0mk91uT01NPXz4MBj8UOe8fPlyTk4O+uzycL+CNz4CfAR8OAIPCPdNJpNer3e5XBjbqypszp8/H6B8+vTpyGEvWbIEwyY69YaEhHTs2FGtVkskErvdrtFoEhISZDIZkikMw8jlcnTpQjHra6+9FhgY2K9fv/T0dDB/MHmwWCyYIcCZGrL7UVFR4PwAKEZHR2N4/+tf/2qxWPR6PcuyKpVq6NChkEWB2L/BYOjcuTM+qVQqbTaby+Xas2cPqm/9/f2fffZZLCywLDtq1Cjk5n744QeUBRsMhiVLlkDhbciQIfCcJMlK8IbKAaFQOH/+fJPJhBPxRbgfHh6OjD4qROk7ZmgkYxiGW8VH6MHd12g0Uql006ZNPXr0gMRNUFDQwIEDG8nNWh/Wbrfr9frhw4cHe8zPz69Nmzbfffcd4H5ERAQP9314LK2Fa7dv375582ZJSQkH969cuZKZmfnCCy9wPS4GDx5c6wuonr8AAg8kEXQ6ndZjGo1GrVYnJSUNGTIEoyRBEC+88ILJZKpnd+ps92azGQ8D9DtEcdjatWt37tyZkJCADo54LO3bt+/HH388fvz4yZMnz549m5GRAbgP+n4trgD+o3wE+AjwEWjYCNz22K07VlZWhj7uV65cOX/+/Llz5wDNOTFoZKCR1IdGDUmSaWlpSqXSYDDodLrvvvsOKXOpVGo2m8VisVQqDQoKEgqF77//vkKhIEkyPT0d6pNCoRAMH4vFAloOEucURaH61uFwhIeHC4XCVq1aIW20adMmsH3AIddqtQCiarUaMvzVwn0k0SMjI6GAabVaXS7XunXrkEfr2bMn1gpomoZqPiYYs2fPNplMlRpB3bp1CwkJEQgEW7duRbevtWvXEgSBLrmvvfYa3Nbr9f369cMqv7WVAAAgAElEQVTcJioqiqZplP9GRUWhEcFHH32EmoTKeUX37t1bt24Nsmucx+yeHmSNCfczMzMvXbp06tSp48ePc0/uyt8+IiIC1B2EHj8PVwZBN5IB9KP2GeBD5rH4+PhOnTrhZyAIYvjw4Y3kYK0Pi6Ufrk6cIIjWrVvXUKqLrrp8m62Kh804uF9YWJifn5+bm5uVlXXu3LmXX34Z1y2WAmt9AdXzF+6dZoNBp9VqpVIp4D7879q1K8Mw9exOne3eaDRGRUWhwAtPL5TFb9q0aefOnWKxGLIENpstPT39yJEjv/766x9//HHhwgVOnwdynHceo7fwWK3gjY8AHwE+Aj4TgQeE+0ajESWnDMMA/bdt27ZFixYBAQF79+5VqVQooezcubOfn19gYCDWAUwmEyQoWrdu/dRTT23atMlsNttstgULFrRr146+YyzLpqWlJSUlAXlWzg169uzpdrtrWCX2RubBMygyMhJ5fZQZGAwGTntt0qRJ6enp06dP9/f3f/LJJ6EfunDhQoqijEbjlClT4MOAAQOsVmtkZCRBEAMGDGjXrl1QUNCwYcM0Gk2lzI5cLoeSXvPmzb/88kupVMqyrFqtZlmWIIinnnoqKCho+/btUqn0vffeCwkJ+fjjj5988kmCINAtmCtABbTW6/VdunSB53XcVfcuhRCuzVZmZmZGRsbp06d5uH/nImzQf+8H7kOIE6W6gPu//fbbqVOn0FUXTGJeCLzCt+0uuJ+Tk5OZmcnD/Qa92aoc7F64j7L4DRs2bN++HQl+vV5vsVjQe+uXX345ceIED/d9+ybjveMjwEfgPyLwgHAfXXItFovJZEKKBxyKrl27oocukOuQIUMAW6dMmaJQKA4cOCCTyXr06IFFAzSMB54GIAbQh+yPUqkEPaZJkybIMtPerbZwf+zYsVhnwNEDAwPffvvt6dOnYyVBJpPpdDqZTLZ161bgcqwSEATRq1evSkXE5557DuljVCrLZLIhQ4aACEQQRGhoKNQ1zGbzwIEDcQisGxAEMWnSpPnz52MjSgI4rn+jwf2srCzA/RMnTsAzvPLZfe+XXF3+xRvch+4+Mo5VdfdTUlIOHjwIuH/hwoXMzEwe7lc8DHYX3L969WpmZubZs2d79+6NgZLP7tflffXf9sWybGVHAaHHUHkWHh6+YsWK1atXb968GTx+rVZrNBpRHP/zzz8fP34cE+wrV65wNx2f3X8Ybj7eRz4Cj2gEHhDuSyQSnU6Xmpqanp5O0/TOnTsBZ0eOHCmRSA4ePOhyufbu3VsJVEJDQwmC+OSTT2w2m1gs1mq169ate+6558CHAaps2bLlqFGj1Gq1TCaTy+UURVkslm3btkFk5ZVXXnG73aj3pb1YbeE+y7IfffQR1//xww8/3LBhw8qVK1HkqdFokpOTLRaL1Wr98ssvn3zySXjbt29fiUTCsiwWAb788kto9ezfv3/jxo1vvvkmTlYoFE6bNg3ddhUKxYsvvog5Q2ho6LRp03Q63bBhwwiCaNeunVKphNZQ4yvzXL58+fTp0zzc93KB1e/mGuD+woULo6Oj165dW7WrLgf3T58+jVxjVVnAW7duVfDmkxG4C+5fuXIlIyPjzJkznCYAD/fr9077z73fBfeFQuHixYuXLl26fPnydevWxcTEJCYmoumjw+FIS0uDAP/Zs2cvX76cnZ2dm5tbWFhYWlrKw32fvNt4p/gI8BH4VwQeEO47nU6j0ajVaiUSiVqtPnjwYGJiotvtBgeGZdndu3dXQuq9e/cqlUq3243q1UqOu9PpdLvdLMtKJJLFixdHR0eDFm4wGOx2e3JyMkj5NE2PHj0aOjlz585NTk4mPQ10aS9WW7hvt9vVavXOnTvXr1+/bds2g8EAJ1H/abFYHA4HwzASicTpdO7YsWPhwoU7d+602+0QbNBoNFarVa1Wo/cWVjmkUmlMTMymTZvWr19vNptlMplKpfr5558pilq7du2aNWswhUhNTZVKpQaDAWeKjH4jw33Ig5w5c+aPP/7gsvsCgYDP7nu53up4sze4P3v27IULFy5dunTt2rXbtm1LSEhArhHUgn/+85+nT5++ePFiVlYWD/crHga7C+5nZ2dfunTp9OnTVeH+iBEj6vjyeuDd/a9y9xmGiYyM5BrzCQSCBQsWREREREVFrV69etu2bXFxcXK5XK/Xo+vWkSNHfvvttzNnzmRkZHBwv6SkhIf7D8PNx/vIR+ARjcADwn2FQqHT6WiPGY1Gt9stk8nMZrNOp4M6J/QxUURLkqTZbFYoFAzDoElrWloaaPQ6nS45ORlNnDQajVKplEgkaWlpYWFh6HXYv39/pVKp91gNNaK1hfu7du2yWq04NMMwOLTFYtFoNJgJsCy7b98+qVSanJxM03R6ejpJkkDwLpcLdbd2u33fvn0Gg0GlUqFQWKFQYFdpaWkIjkqlQhMug8Gg1+uhZZfmsaSkJJIkGYbBDhuzVDc7Oxukgqpwv7KCjYf7+BXr+7UGuL9o0aKlS5euW7du+/btiYmJd8H9M2fOXLx4MTs7+/r168XFxTx3v8K37S64n5WVdfHixVOnTnG6+35+fjzcr+/brer+q8J9giDmzZu3ePHiiIiIlStXbtmyZc+ePVKpFO0kU1JSIMeJ9rpZWVmcFicP9337tuO94yPwSEfgAeE+ctKQYkfqB5herVZbrVadTme32wHxIYkjl8sPHz4Mkc3k5GSDwZCUlMSyrNvtjo+Pl8lk+/fvt1qtTo9Vtk5CtisoKGjXrl3orUSSJAQr6eqstnAfPpAkaTQabTYbGklRFKXRaBiGSU5Ojo2NBbFeLpezLLtr1y6GYWyeXl3Q/SRJEv19aZpGKRfDMGq12uVypaamKpVKu92O+YlCoXC73WgKBt1Io9EoFot1Ot2PP/5IUZRCoWjk7D7UAM+ePQu4z5UJ83C/uout7rd5g/tz5sy5C+6TJGkymdLS0g4fPnzs2DEe7lc8VHYX3M/MzLxw4QIP9+v+jrq/PRoMhspcPpfdJwhizpw5SPCvWLGCo+9zcB/9tk6ePImCGR7uP1Q3H+8sH4FHNAIPCPftdjvoLiRJ6vV6CNRYrVaWZc1mM2A0TdNA/1ar1W63g8+TnJys1+tpmganRaVSORyOQ4cOqdVquVyenJwcFxfXp08fSBFOnDgR7beAleswuw8nWZZ1Op3I7oOGRNO0Tqfbu3fvnj17dDodBIWMRuPRo0etVisSPVAlQn9cVNkqlUrI5+P04+PjKYqyWq0kSSYnJ8tkMpqmZTIZy7LI7mMZBNqmXE1CY2b3Obh/8uRJTnuVz+7TDWU1w/1ly5Zx2f174f6lS5f47P7DMorfBfcvX7584cKFkydPvvTSSyDR8dn9hrrn/nWce+H+7Nmz58+fHxERAbi/Z88emUwGMg/a6/78888c3L969WpBQcGNGzf47P7DcgPyfvIReAQj8IBwH3L14NiAogPejs1mQ6IdnbZAhbdarXK5nGEYVNwCZIMnAw4M2malpqbOnDmzS5cukMF55513HA6HRqOBrj+XSqers9pm9yGrjwaRgP4qlcrlcnGKQ3a73el0Iluv8VhVNg5YQFKpVC6X2zxmt9tVKpVUKkVVA/zBuofNZrPb7ViaQHxYlk1OTjabzdh/4whxVlRUlJeXFxcXFxQU5OTkZGdnnzt3DnAfyKMOufsWiwWsJo1G43Q69Xq9yWRCv97KpRySJLHQg8kW2GDV/co05FQxMULTH/yESo8lJiZ27tyZE0j6E6QIi8XCsizlMUzdOPEph8Mhl8vFYrHbY3q9Xq1W22w2KHM7nU6xWOx0OgHHq3W+ho2sx6rq7j/99NMzZ86slHAKDw9fuXIlhMClUinmkXv37j1y5Mjvv/9+9uxZwH2eu1/xMNitW7fKysqKi4vz8/Pz8vKQ3b8L7tfQLwJdpbk8il6vT05ODg8PX7169bx588ApNJlMWAnFomENV939/8kbd1+pVIrFYujui0QigUDQtWvXGnZrMpnUarXZYxqNhqZp9JNOSEhYuHBhVFRUQkICKI8WiwXDYrV7S01NjY+PR1t1iKMhh1Tth2vYaDAY0GYLI55QKPzhhx/mzp2Lgt0NGzbs2rVLLBYjnm63+9ChQ7/++itP5qmoZ+OmT3e9qefDPnK7vyu83H8fuUD8r5/wA8J9uo4MINBgMJjN5smTJ2PUDQ4Ofv/99yUSicPhkEgkRqPR6XRqtdoaxn8sMkDsPykpSSKRIEkNWsq9uvt15H5d7qba7L5AIHj55Zd/+OGHsLCwiIiIdevWbd68OT4+Xq1Wg3R08ODBn3/++cSJE+fPnwebFCzumzdvVtyx27dv4y3BvcP/Gwzux8XFhYeHz58/f/To0UOGDPnkk0/mz5+/cePGuLg4ULh0Ol3lso7BYMB8i/Zi9Q33wU6jKIqmaXDIsCKj0+nEYnFaWtrevXvx+E9JSdHpdDabjStY0Wg0DocDnDYv7nvdfD9wf9euXTzcr3jI7QHhPm4Qs9nMMAzaDdI0/c477xAE0b59+5iYGKvVajabkY22Wq1eL7ha/qGu4L7RaMTKL5qZgxJqNBoHDBgQFBTUtm3b1atXI29E07TT6fTmJuMhVmKplKKo1NRUhUKBibe3r1S7nYf7FT5pQCf3vvqksw+xU/dGGFse4lPiXa8uAvhZuelcbbvq0nVkDoeDZVmtVpucnDxjxgyCIJo3bz5o0KCEhIT9+/eDCYOHAsRzvB2Wh/s+Dfe7du0qFApFIhGXeg8JCcGsbtGiRShuiI+Pt9vtNpsNaLvaX7q+4T5zpyEoUvtGo1Gn0ymVSovF8ve///25554TiUQBAQHBwcGvvPJKYmKiRCJJTU3V6XR6vR5VIDqdDgSvav33ttEb3F+wYAGX3QfcNxgMNpuNz+5XPJz2gHBfpVKxLIuLzWw2O51OiqLQ8aRz584Gg2Hfvn16vR79CNGs29slV6vtdQX3MXlGtRNKoFiWtdvtHTt2JAgiODhYKpVC5UCj0dRQqoViL6VSabPZoA4BbmWtTgpkHj67/3DeST7hNYef7vONTzjNO/HoRcBH4D4eSShalUgk48aNW7x4sclkcrvddrsdZCGbzWY0GimKQqUsXZ3xcN+n4f7rr7+OhZsOHTr07t27S5cuHTp0wJa2bdt+/fXX+/fvp2kaD+8aSjTqG+4bPIYqExB71Gq1WCxu2bIlQRD+/v7wGf0gRCLR999/bzKZjEYjNFkBULg5Q3UXavXbaoD7ERERq1at2rx5865du2QyGQ/3Kx5me0C4DzU0hUIBFWSIIRAE0axZs/fff58kSYqi4uPjAWT/xLSz+quTpusQ7iN5b7FYwGvEnoUe6927N5g58L+GaT9WNhISElwu1/79+yUSiVKprKHpurfz4rP7D/PNxPvOR4CPwH1FwEfgvsFgQBmuw+EAwRs8foPBIBaLIe7pcDhMJhOo87QX4+G+T8N9gPvmzZuvWLHC5XLZ7fbY2NgRI0agSqNTp07x8fF6vR7aRo3I3fcG96Hd8corrwwePHjgwIGdOnUiCKJFixbPPffc+vXr7Xa7RqPBgoDJZKoBpni5ev9Vk8Cy7L3c/YULF0ZERKDHZ2xsLIq+7XY7n92/r0HO9z70gHAf5DGtVutwOFQqlUKhWLZsGaagn3/+uUKhIElSpVKlpKQYjcYauI/erkNv2+sQ7qNSymw2Y9ynaTo2NpYgiKCgoKFDh5pMJqxgoFu7N39omkbXknHjxr3wwgsEQWzcuPHIkSM1fL7aP/Fwv4I3PgJ8BP7XI+AjcB+ClchVURTlcDisVuvu3bvtdrvBYDAajWCigrMKKRu6OuPhvk/D/VdffTUgIMDf33/+/PlYprfZbImJidBbbdKkyaRJk0iSREVzDXC5vrP7XGL+LjJP//79xWKxzWZTKBQpKSkKheLtt98GzBo2bBjDMPDZZDKZzeY/AbNqgPuRkZGrV6/esmXL7t275XI5TdM83H94B+cHhPu4zCiKcrvdQMYTJkxAP3NMpF0uF8uykDPjLubqBszabatbuK/ValEkgwF91qxZLVq0EIlEU6ZMQbIHxQk1ZOtTU1NJknQ4HO3btw8NDW3WrBlN03+iNJmH+755KwGd3Pt6n5yZBvtYbaPXYI7d54HujTC21Pa8+M/7eATws3JXRWNx97EuDQVPmqbBR7Xb7dC8d7lceKjp9XpwK2gvxsN9n4b77du3F4lEfn5+kZGRDMOYzWYg+zFjxvj7+wsEgvfee89oNDocjpr7J9c33PdWqpuWlkZRFEmSnDLr7t27mzVrBr3YhIQEs9kMoSG8erlKvW72BvcXLVp0F9xnGMbhcPDZ/YqH0x4Q7iuVStSn0jTtcrkq0yF9+/YNCgoiCAI14lAxA1D2zVJdyBgjwQMPP/74Y5T0rF69Gn0H0YWkBjISN8HGlLtPnz6pqak1fN7bjcfDfd+8jW56sXLe6jQCXsL8b5UP37w8eK9qGwEfgftgaYKtTZKkRqOBcoNCoQC5g6ZpiqIMHqsh7cvDfZ+G+x07dkRBYUREBOi5+EVXrlwJWjwKDeVyOZot016svuG+NyFOpVKJ7sosy8rlcrvdTlHUE088AaQFPg8kO2suMfFyWl7JPID7a9as4bL7PNyv7UjnU59/QLiPBuZGozExMRHdAZ966inwyg4dOoQ2gaCT1WFqH+AbM1KM1BDPRf/wWglx4u7WarUsy1YukaFyC0t8AoEgPT0dHB5Q42oo1VIqlWq1evfu3QRBCIXC4cOHazQaXpnHpy71B3GmzIuV+pjdqKX5mPulXsJc9iC/Hf9dH4yAj8B9s9mMtCkadbndbjwIgLswhkOhUq/X10Dq5uG+T8P97t27EwTRpEmTefPmWa3W9PR0iUTidDojIyNFItHjjz/+zjvvGAwGCE3W8DPXN9ynvRhYZWq1+sCBA0lJSfv27ZNIJD179gTneP78+QqFwul0ymSyffv2gWHvZU/Vb/aW3Qd3H6W6PHe/4uG3B4T7NptNpVIhI2I0GpVKpUgkIgjiL3/5C2aboMcMGjTos88+Gzt2LMMwUqkUOpU2m+2LL77o27dvp06dxowZs3LlSovFotFotFrtxIkTx4wZ88UXX1gsFrSPwI1mtVqHDBkyfvz4L774wuFwoPUJ2oUA8SsUisTExMGDBwN2EwTRpUsX9IzjKrFomlYqlZBgs1gsarV6z549o0ePfvzxx3v16jVhwoSOHTsKBIKXXnoJovuJiYnHjh1TqVTJycl79uwZOnRot27dunfv3rt379GjR8+YMYNhmMmTJw8cOPCvf/0rQRCBgYF9+/YdP378wIEDv/nmm/T0dKVSWalP6nA4dDrdvHnzhg4d2qFDhxdeeKFPnz5ffPHFjh07SJKUyWQpKSk0TS9dulQgEGCVQCAQTJ8+ffbs2bzuft3eaoWFhXdpQGP/HLsAaWYucw0UXVxcXFRUVFBQkJ+ff91jBY1kRV4s34t5c9PLbv51jo1ixcXF5eXl3G+B+HM/CjBi3V4J/N4aJQL3wn10W7p69er58+dPnTq1ZcuWyj5L3Eio0+mMRqNCoeCGcS7dUzWRxDSSyeVytVoNatDOnTvj4uKCg4NFIlFwcHBAQEBkZKRGo8EKMJJK4IjiFHzEfxBJ0GTmhRde4CLfo0ePWbNmzZs3b+nSpStWrNi6deuePXtUKpXBYHA6nfv37//pp5/QcCkjI+PKlSt5eXnFxcVVdfe5C6zRdPeffvppCO0tWbJELBar1Wq73Z6SkvLmm282bdqUIIhvvvnmjz/+wCSPJEnaizUW3IeQuV6vt1qtHN7ifqStW7dCnwdK/EAbXs6g+s083K94NOwB4T4AOkVRLMvabLaNGzcGBAQQBDFx4kSpVGo2mxMSEgYMGADwPWXKFI1Gs3///sTExNWrVwsEAqykAdp279593rx5dru9ssPde++9h9sQLDu1Wu1wOJRK5YoVK4KDg/38/L766iuMklC9BHEIiRlvcB/UTPQbx0wYTRa5enR4jmJ9giDef/99i8Wi0+n27dunVqtVKtUbb7wBV1H2QxCESCR6//33FQoFxhM/P78mTZqEhITgYyKR6OOPP5bJZG6322KxREdH9+rVq3nz5hyUx5tp06Zh9ESNDQ/3G+zOKy8vv+ax27dvl5SU3Lp1C4e+ffv2rVu3bt68iWRzaWlpUVFRYWEhB/SvXbuW5zF8veFfMdm49zXXi3nz8N49YIu3z9f39uvXr+fm5mZnZ1++fDk7O/vatWvFxcWlpaXl5eWYgN26davaeVoFbw9VBO4T7oeGhgJ3ImVDURQ00DAgqzymVCoVd0zZSAa4j0aNcXFx8fHxGNvxGh0djdpLmqaxjOBr/qMWGcwlvV7/4osvBgQEIHPHwf3o6OgVK1Zs2bJlz549IPE+NHD/5ZdfDgwMFAqFK1asoCjKbDanpKRER0c/9thjBEF06tQJqWuu+Q7txRoL7qOFFgjHBoMhISHB6XS2atUKipyYeCkUCkiJV50+ejmPuzfzcL/i0bAHhPsQJMZyZ3Jy8vfffw862aJFi/QemzlzJoa8/v37I9OvUqmWLVuGct5WrVqNHz9+6NChKKTp2bOn2WzWaDRvvvkmxhqZTGa328Visdljw4cPx97WrFkDZjwuVExokV+pFu6jmzq8NRqNLpdLr9cnJiYOHToUO2zXrt2IESPGjBmD/xIEMXLkSKvViqPv2bOnd+/ekL599913x48f/+abb+KTQ4YMqZyTvP3223379sUWPz+/3r17d+7cuWfPnpMnT05LS5NKpbGxsX5+fiEhIY899thbb701bty4nj17YmKwePFilmVdLhfSCjzcb8g7r7S0FIcD1i8pKblx4wZS+NevX8/Ly8u5Y1c9duXKlezs7KysrEyPZTWS4ej3vl7yYhle7N49YEsjnVYWlhQwmyooKLhx40Z+fn5WVlaJx0pL/8X2uXnzJg/6G/IeqY9j3SfcDw4OBtyH9BlN0yqVSqPR6PV6ncdIj2nvGP7b8K8ymUwsFkskkj179mzbtm3Xrl3cc6TyTXh4uF6vVyqVcrlcpVKhLZJP+S+XyxUKhUwm02q1SqXyxRdf5JbHe/ToMXPmzLlz50ZHRy9fvnzz5s27d+9WKpUQMtq3b9/Ro0d///33c+fOXb582Uez+0iEC4XCsLAwkLeWLFny3HPPgeGzdOnS1NTU+Ph4p9MJUQ7aizUW3NfpdBaPIbFKUVRSUhISk88995zNZmMYJikpCdS0GjjHXk7LK3efJ/PUx9jXiPt8QLhP0/+6VACjXS7XW2+9BQgbFxfndDo3bdpEEERoaGjr1q1RO05R1M6dO/39/f38/J555hmOxPKXv/wFyXI0N/noo48qp+JBQUGJiYnIymu1Woqinn32WYIgXnrpJST1kZMwGAwymYyiKKlU6o3Mg+SQVCrdu3evTqcjSXL//v1DhgwhCMLPz++zzz7TaDRpaWkKhYKr012zZo1MJsOsANqaoaGhq1atQgnXt99+i6WJefPmYbZjMBgef/xxgiA6d+5M07TVaoVXRqMRyZ6mTZu2bdsWevwkSb7xxhu4YaVSqclkcrlc0C/i4X7D3A4gjZSV/YsXfuvWrdzcXCSSS0pKiouLCwoKrl27lpubC3x/+Y5lZGQAUV9sVDvvxc7W0rzs5nxjndzp06cvXbqEKQd+kfz8/IyMjIKCgsLCwqKiohs3bnDJfm41pmEuGP4odRiB+4T7GJ8JgrBYLAaDITk5WaFQaDQaucdkHpPeMYlEgi0N/0qSJAb2uLi4PXv2oIgLw7tIJFq+fDkSxyRJoiulr/mvUCjw9ARjCrRwzFg4uB8VFbVs2bJNmzbFxsbK5XK9Xm+32x8OuN+xY0eIb7Rr166Tx3Bu3bt3j4mJwZpLeno6SZLJyclYZKers8aC+1AxNxqN6GO6d+/e7777DqcwZswYtNlCcQk8rM73mraxHuN4DgRBPP300zNnzuThfsX/lj0g3Ic4MZc1f+qpp4KCgh577DFcW02aNBGJRE2bNt29ezfHs//ggw9woYKzDqWzUaNGoWcchvURI0bgMytXrlQoFBDMmTp1Ku7ZJUuWQA5Zq9VCZ5YkSdTUeoP76C2tUChcLpdOp9NqtfHx8UFBQQKBoFOnTiRJpqamGj3Wpk2bFi1aBAQEUBSlVqvNZvOECRM44h84lxRFffjhh8h/7N69W6VSGY3G7du3w+cBAwagalmv15tMJo1Ggx69TZo02bVrl8lkgrrz888/XynP37JlS/T5omka6xU83G+YO+z69eu3b9++du1aeXl5fn4+DlpaWloV7ufk5ADun7tjHJw+06h2yov9UUvzsptTjXhyV69ezc3NPXv27MmTJzMyMq5evZqVlZWbm5uXl3f9+vXCwsLi4uKSkpKysjKO5d8wFwx/lDqMwP3D/ZCQEKFQKBaL4+PjGYZJSEiQy+VKj4HCUxU6433Dv+7cuTM2NlYsFsfExOzYsWPt2rV4FqCUa/HixVqtVqVSYUISExPja/5LpdI9HpNKpZs2bcJSNk6hKtxfunTpxo0bd+7cKZPJQBTfu3fvjz/+6OvZ/W7duoH3IhAI/Pz8QBR+4okn3nvvvS1btqSkpMhkMpZl8arX62kv1lhw32q1Yuk/NTUV1RXdunXDz7N27VosdaWkpIDB/yf0v3m4X4dDmy/v6gHhPkVRELcxGAwSiQSEv169elWKl/Xp0wfsl5UrV7pcLrStXb9+fXBwcEhIyBdffMEwDASmNBrNRx99JBKJnnzySeRIgOxDQkLmzZuHOy8lJeWZZ54JCAho1aqVXq9HoS3WFsAaomm6BjIPiontdntiYiLLshRF9e/fnyCIkJCQLVu2GAwGrLHu2bMHykKVZbuYQiAxHxoa+sYbb7jdbrPZrFKp9Hp9165dCYJo27YtVtIYhqlc7hSJRIOLQbgAACAASURBVCEhIWjZYTAYWJZNTU395ptvcGNOnTrV5DGlUqlSqZ555hl/f/+//OUvZrMZZVIqlYov1W2Ym+XmzZuFhYUVFRWAjMXFxRUVFWlpadOmTZs6deqUKVMmTZr0/ffff/vtt19//fVXX331tRf7u4/Z37zYl17Mx9z/e1JS0tGjR/Pz869evXr69GkwBDIyMrKzs69cuZKTk3Pt2rWCggIgfo6I1TDXDH+UOozA/cN94LThw4d/+umnY8aMGT58+OjRo4d4bLDHPvPYpx7DloZ//cRjH3300fvvv//BBx8gGQQaEkEQ/fv3h0uDBg0aNmzYoEGDfM3/sWPHDhs27LPPPhs2bNiHH37YunVrbroCuD9nzpxKGZvo6OgNGzbExMRIpVKSJCFy8xDA/S5duohEIoFAMGjQoPHjx3/66acotoOyzZIlS5xOp1qtdrvdarW6Br3VxoL7IOUbDAaoBk2fPh19dt955x0AF5qm3W43uhGhgoSujfFwvw6HNl/e1YPDfUgXMwwD6g5BEJ988snXX38NOc7x48djXpqYmMgwDLRr2rZtu2nTJvS1MBgMGzduxMj42WefgZ8THh6O4Wb58uX79++32+1JSUnYMmrUKIqirFYrlHkoitLpdFD8BAGxWu4+yDwpKSnx8fEsy27atAmFua+//rpOpzty5IhYLMYsAqW0L730Ek3TlZQhjpGPgnibzYbJf2hoKEEQr7zyitVqZRjGYrF8/vnn+O6yZcvQZthisVAUBVj/7LPPms1mmUy2d+9ei8WyZMkSPz+/wMDAMWPG4HS4nr58dr8B7hcuMVxeXn779u3MzMzs7OxXX321shOLUCjkntPcM0/0n+Z/xzDqNvzrf7rz7/9580Toxf79zf98520/9b396aefnj179qFDhy5evIiFigsXLmRkZFy+fBm/UW5uLnL8N27cKCkpaYBLhT9EfUTg/uE+iriaNm3q5+cnEAgg1SC4Y9wd2rhvAgICMC2BG1ipFggEeMrc9afAwMA77v+fAlvjOg/QGxAQ4Ofn5+/vjzo6uCQQCDi4HxERER0dvX79+h07dlTqQGq12ocG7nO58KioKOThdDrd1KlTUUFYmbeLiYnRarU2m02pVLrdbtqLNRbchzvISlbqmv+///f/UHWwZMkSo9Go0+lAQIJ8lcVi8eK+18083K94NOwB4b7BY3q93mg0Ll26FGPEhAkTQFt84403UCMrl8vRdrdt27YEQXTo0GH79u02m41l2fHjx7dq1QqZ8rVr1zqdTqvVumzZMrA2FyxYgGt4/Pjx2KfBYLBarUql0mw2W61WlG2BAlSZdPdG5kEFDsoMSJL86quvAgMDRSJRWFgYTdNyuRwKV1FRURipx4wZYzab5XI5zujdd9/FKIHieMw9QkNDBw0axDAMqguQLxCJRDgWug1MnjyZIAiBQDB37lydTscwDEmSNpttxowZWOedN28eSZIo3sLUnYf7DXDncYnhvLy88vJykENwyQHxA/T72lMZV+P/9uuYMWPcbvfp06d//PHHQ4cOHT9+/Pz585cuXcrIyMjKyrp69WrVBH8DXCr8IeojAvcP90NDQzHy47LHVBw3pk/dCED2zZs3h7cceYQrPwgNDcXUBU+Ee3MKvnM6TZo0wVncBfejoqIA98VisUajsVgs6enpD0F2H2vxQqEwKiqKU+0wGAyTJk1C0Hv16qXVau12u1qtxhOdrs7qG+4zHgP4rvpq9RgKRJAK9fPzQ0qyOjdrvY2H+xWPhj0g3MfEEuxzyNq0adMGRbdCoTAmJoaiKJPJlJqaKpPJwGgMDAx84YUXhg0b9u6776K2lSCIVq1aRUVF4apTKpVWqxXp8zFjxiQmJprNZkhmffrpp5hgYNkKn8f9i56I3uC+WCy22+1YOkhJSWnWrBkyGXK5HKsT2C0KYAICAhYuXEjT9LfffisUCkUi0cKFCzEP0Wg0Tqdz1qxZGMTnzZtHUZTFYiFJMigoSCQStWvXzu12c6U1/fr1QwaBoigsGKLt3dtvv415BfSYaZpGhy+ezNNgt92tW7eg91JUVJSbm5uTk4MHNi48vPedB/C9noSEhAQGBuKpzGWpCILgFPS4r1RNLnIbG/fNXS6JRCIu4L169UpPTz9y5MiPP/54+PDhY8eOnThx4tixY6dOnbp06VJWVhZYPfn5+UVFRZin8TW7DXbX1NWB7oL7paWl169fv3r1anZ29rlz506ePLl582buEuWQMWq3uO2+9gaZAk7TpkmTJhjkqw4pvnwKUNVDVLnpSq9evaZMmTLPY0uXLl21atWOHTuSkpLUarXJZEpJSTl48OAvv/xy8uTJ8+fPX716NS8vr6CgoKSk5ObNm3dp5jaa7r43uG8wGJCAJAhi69at8fHxZrMZ/Wvp6qxh4H5VcAOIA3TicrmUSuUzzzyD5ZgNGzZU5+Of2cbD/YpHwx4Q7ptMJoPBUMnUr1xoQus6lJ9igP7yyy+5Cl2FQjFnzhxOdZ4bqZ944on+/fsvXboURHxMrS0WC/YwcuRIi8Wyfv36kJCQgICAuXPn4mquekfcD9zX6XQOh4MkSfT5QvlX9+7d3W63UqlEyXtSUtKHH36IBMy2bdusVmu/fv2EQmFAQMC2bdsYhkFFslwuHz16NEZwaBQYjca4uDhIEr388svI7qNcvlmzZhD2RdUv6D2V6wZdunQRCoUtWrRAhS7Lslip4OF+g912gPs3btwoLCzMycm5evVqQEAAByy6dOny/9n77vgmruz7keRu00MN4ADGFBNC24X0tskmv4QSWgIkJAESSKGFbht3wPRebAy2ZatLo9FImlEvlgsG0hNYQgs99A6h+ufV2czHX7AcZGzZIXp/CDEazbyR733vvPvOPbd37949e/bs3Llz9+7de9Sz1r59+87u9qS7PfvssxVLWLRo0aJHjx49e/bs2rVrtLvVs+73QK+6du3as2fPHj16tGjRghsQYmJi7HZ7SUnJtm3bSkpKfvjhh59++unnn3/eu3fvkSNHQOk5c+YMKD2///77jRs3bt++7TOz8d+oRn6Bu+52549WNdwnCKJ37959+/aNiYnp3Llzt27d6sqeu3toUVFRHTt2hLt17969orINSj2Wq8n16tWra9euMTExHTt2rKv+e7ovet63b9+n3A2zG3YhHmW4bzabn3vuOTxtXFycVCoFN0bnodU23OeujzA/92oymeRyuclkev/99zFQjhw5sopliYfuezzsh/tlf49WI3C/XFbSZDI1bNgwxN0+/vhjxPifeOIJq9VKkqRWq9VoNJxqfr9+/Z555pnhw4dPnTp148aNLMuaTCaz2YyccofD4XQ6W7RowePxhg0btn37dqjjd+/eXSqVci4AE2UY5kHgPvA0sm/T0tIQunjvvffsdjvKgW3fvl2lUnXp0gUrZ61Wa7FYwDJq2bKlXq9HJSxsBXTq1AmrAsgBGQyGxMTE8PBwgiBGjRpFUZTOLcS5YcMG+ObYsWORhms2myFsjBGmX79+RnczGAwmkwnVr/1kHt943u3bt6+72+XLl8+cOXP69Glkc2FvKjY2FqpTqOzDWV09ecPldsvlcqFQuHbt2n79+sHYgoODBw0alJWVpVarUYcR68960nN0A0w8jUajVquzsrIGDRrExfujo6NZlrVarXZ327Fjx9dff/3999/v3r37119/PXbsGCpwIYh43a3LeX8c0Tcm5L9LtX8BN9r/bzE7tCrgfrC7ZWVlKZVK1Fzn1BF8b9JaD81ms8GYMzMzMzIy0tPTud2qsLCwqVOnclr1ILX6vudV39Fut2NqI0kyOzsbgwmSJR5luE+S5Lhx48LDw3k83uuvv+5wODAf6zw0Do4jxgmREIqiILQkFAq7dOnCbd+MHDnSw2U8Hgam4f5U3HmQQ5k3bx5wQ/mCkiRJREa5cx7mjR/ul/092kPCfaTAgkiDgrKvvPKKWq0eOnQowAckOKEQNWDAAD6fHxwcLJFItFotZOYhesuyLCQ1zWaz0WikKKpt27ZBQUGDBg1iGAa0+AkTJtjtds4XvIL7Op0O6vgFBQVffvklsMWcOXOgYaXT6TCFgFzUt29fi8WiUCjwCE8//TRS9rVarUqlMhqNON6jRw+bzQYmz/Dhw3HN9PR07CFYLJbY2Fj4/rx585BPTLtbQkICNnzHjBmDp2ZZFgkJ/ui+z9wOcP/atWuXLl06ffr0yZMnkYeKmFZKSorNZmNZFskhHmb5OjuMLBSsky0WS/ky+B//+AdWqgEBAWPGjDGZTA6HQ6vVGgwGpVJZZx31cGMwAbRaLTS7xowZExAQAC5BVFQUFsx4uuLi4m3btu3cufPHH3/cu3fvoUOHjh49euLECQT4ocSPfGufWY7/Rg//C9x1t/+B/Tt3qoD7UE3kFJCVSqVarfZgVrV+GAP4/a8ajUahUDAMIxKJ8B5KDHw+Pzw8PD09HdXiUU4R8a9a76s3N6BpGgKPBoPBYrH0798fUQ8ej/cow32NRgPN76CgoGHDhrlcLr1ejxQ6XWXNl3CfIxlDjUQikUC6+7HHHktNTa2ik5V1/E+O+eF+2d+jPTzcR8Q6ISEBBOIpU6aYzeaVK1cCE48ZM8Zut4PEgth5YGAgZKPsdjuQsVqtJkkSAw2wfvlqGcn0r7/+OsBxYGDgli1bIMAP7O4V3AfW1+l0TqdzzJgxYDwvXLgQyphYcqxevRrHP/jgA51Ot2bNGvx31KhRkN8Bn2fKlCl4tLFjx8Lp0Fueu5EkCX6O0WgcN24cEEx8fDxN0xDwsVgsUPsJDAxMSEjArbGZgPR6f3TfB5539+7dW7duXbt27erVqxcvXkSVXI7JUx6ZS0pKQgQdI7y7JEM9etFoNAzDQINBq9VmZWV16NABZkkQxNChQxE+J0mSYRjQ1epR71lWLpczDANxD6PRyEUHBAJBVFSUXC5XKpV4RpfLVVhYWFxc/PXXX+/atWv//v2//vrr0aNHT506de7cOcjw37x500/f94HX1OAt7rrbg8N9jPxWqxWqDHVlzNykc88bmUyG6iv5+flSqVQkEgEuwyXT0tIsFgv0GCChXlf993RfBLxQldVms3G6+4843GdZFhhaIBCsX78eohlQEtRV1nwG94H1saxESHLgwIEwpokTJ4LE74/u1+B49De51EPCfZ1Oh33MQYMGAdquX79er9drNJrWrVvzeLy2bdvKZDKtViuXy3v16oWqW1lZWdCdRKYs+HKwbYVCgercb7/9tkAg6Nev34svvkgQxHPPPWexWOAFCPBzA+6DkHlMJhPSZxmGAbbg8/kpKSkmk4kkSafTSdM0Uo0FAsH48eNVKlVaWhro+B999BFyfPV6vdPpbNiwIcQiJk2apNFolEpleXYBchKaNm1qs9mwhGAYZtSoUYjix8XFkSTJsmxhYaFIJMIqIiQkZPPmzdgx0Gg0JnfzR/d943eA+1evXr1y5cqFCxd+++2348eP448VFhbWoEGD+Ph4tbthCuT2lOrJG6lUCsUqbD7k5ORER0cHBgaCQjBixAhEqcBeQzp4Pek5uqFSqQwGg1qtBtEINL+goKDAwMCOHTvmuZtMJkPKjd1udzqdpaWlP/zww549e/bv33/48GEE+C9fvnz16lU/fd83XlODd3lwuA+SJMuyEHq3Wq0IndSJPes8NNiqVquVSqVCoZCTbkOqblpaGsJYKFODLfE66b+nm0LvjmEYqVRaXlsmJiYGsY9HHO6vXr0arNxy/ZB8d0P2sYe/ss73cB9Yf/r06dAG6du3L8MwCJRCEdxTV706Dizlr6pb9qi3h4T7wMEMwzz11FM8Hq9p06aYwlmWHTx4MFxp0aJFiN9z5vT5558j1I39ehSaxWIV0MRqtQ4bNowgiLZt2zZt2rQ8IyA9Pd1oNGKXAE7nFdxnGAbBWpqmx4wZgwJbn332GSCdxWLZuHFjx44deTwen89PTEykaTo9PV0gEISEhLz11lu4F03TsbGxnPDCzJkzwTqgKArDeseOHbGuQA8//PBDLMjnzp0L9oJarcZzYasXtX6xOsIP4of7vnE4Du5fvnz5/PnzJ06cOHbsGP5YmOfmzJmD9afNZsOujqfAWJ0chyys0WiUy+U6nU4sFnfq1AlGyOfzR4wYAb1Xg8HgdDpBpauTfnq6Kdcxi8WiVqtHjBgB2ltAQEC7du02b96ckZGRk5OD3DmMD0VFRd9+++2uXbv27t178OBB1N66dOnSlStXIAPiG8vx36VGfoEHh/vwSsAepGDVoT17gsvYmsZsku1u6DZmwISEBDgsqKpgCXpyjTo5brVasVON7Lh27dpxg+GjTOaBYk+zZs1eeuklpVKJpWQVPBlfwn3wqyh3QxSnWbNmWVlZEA7Hdoyuhpof7tfIoFb/L/LwcF+v1xsMBshD9evXjyMmJiUlBQcH8/n8adOmIXo9f/58vruG0SuvvJKfn48icchCgaQsN9LpdLrhw4eD+AiZTrvdLpfLi4qKaJquBtwHsdJoNDIMAy38iIiIQYMGqdVqp9OZn5+P0D7gPogQqBrWrFmzvn37Wq1WDOVBQUE9evQAvTsjI8NoNFqt1oULFwJpxcTEYMmNwX3SpEkITc2YMQPhzMWLF+NxEIi1WCx2u91ms2m1WkB/P9z3jcvcvXv35s2bV69evXz58rlz544fP3706FGULsGfMiEhAbtJ4KrV0LBaY5dBqhhN00g0pygqOjoaqcYRERGjR49WKBQmkwmr3GqUWayxjnq4ENwBfCSFQjF69OiIiAieu7Vq1WrdunVr1qzJyMgQCoUajQbatS6X6+uvv/7pp5/27Nlz4MCBY8eOnTp1itPn8YvzlP2l2gPCfeCcxo0bY8uUJElUL/FgVrV+WOu56XS67OxskiRzcnLy8vKQyoXxPyEhAWXdWZblJB9qva/e3AATHLCl3W7v0KFDREQEyoE9CnAfzODHHnusPDF36dKlCxYseO+99x5//HHwj7t27bpixQqXy0VRlEwmc7lcnn662ob7BoNBIpE4HA6dTseyLLgTbdq0gb5ykyZN2rVrFx0dDdm1nj17PvXUU+UZhC+88EJxcTEqgBoMhirKhFXxXAzDcOFYgiAef/zxGTNmxMXFJScnL1myZO3atVlZWdASsVqtJSUl33zzzX/+8x+IJ5w6derChQvYZr1165afWFlWX9tDwn2VSoV0RoIgGjZsOHjwYJ1Op1QqGYYRi8WtWrXi8XgdO3YE4UcsFkPrhiCI/v37x8bGLlu2bNy4cX369Bk1ahRJkiKRiKIotVpdUFCQkpISGBiIQXP+/PkulysvLw8FrcCk9yq6b7fbseRgGCYrKwvCQRERER9++OHixYv79+8fHBwMHE8QhMFgsNvtWq0W+oBNmzZ988034+Pjo6OjGzVqNGHCBMhrgltMkmR6ejqITI0aNZo1a9aiRYuQdysUCrGNEB4e/uWXX3722WchISHdunUDm6hHjx4cIENFPywV/Nx9H/jKnTt3MDpxof2DBw/y/2gEQXDKsJ5GyDo/jgwujUYjlUolEknnzp0RkCMIYuTIkVzlB7VazbjVq+q8wxU7UL4fCAAE+SPky5X/7CDzpKamrlmzZsOGDVu3bpVIJCqVimEYm81WWloKiZ79+/eDvo+SW9evX79161aZv/11foEHhPsIrJTPFwA/yNri3le0qLp9j0WpSqWSy+W5ubn5+fkgX2CrMCUlBUARsS3kaNVth++/O9LbDAZD+ZDStWtX9DwgIKBnz54zZsyYOXNmYmJiSkrKihUruKq6JpOpqKjo66+//vnnnw8cOHD06NGTJ0+ePXv28uXLN27cuHPnzt27/xVf4pbidaa7z2mEc0NkaGgosMWAAQNWrVpVXFxcWlpqMBiQTH3/r4MjtQ33MaY7HA6FQoEFrlgs5vqMUkGBgYH423D7L926dUPMFZ2kadpT/z0d90f3y/4e7SHhvtlspml61apVkNtH9qrBYMC69LXXXkPt2I0bN+r1ervdPmHCBOTGEATRoEEDRFIJgujXr19RUZFery8pKdFoNJmZmcnJyfg0OjoaKvgoeEfTNPi+XsF9tVotkUhomi5X2rVYLFD25Gg5ERER77///rhx40JDQ9u3bw+SqFqtfvfddxs3boygb/PmzcufZdGiRVOnToWjsSzrcrmcTqdGo2nQoAH2bTHKZ2dnY8eZE2DGEr1v376ZmZnPP/88QRBRUVFQ04JCkdFohA6pH+77wPMA93///Xc/3Pc0BdTqcU9wPyAg4IknnkhOTl65ciUiSiKRCFtzVqt127ZtFeH+yZMnK8L9e2r6+MCK/Leo9i9wP9y/dOkS9HDvKbMFbMNBfDDratU4q3Hxvw/cX7lyZUZGhkgkIknyLwP3n3322datWzd2N8zQMTExr7/++ty5c0UiUWFhodlshuQTEgE9WUBtw/1yHQ8ogYpEIqPRiEI/zz//fPfu3WNiYnq625NPPtmtW7fOnTt37NgxKiqqb9++b775JkRqkRrih/vVHpUe+S8+JNxnWVYsFsfGxkZGRvbu3Rtq5TqdjqIoi8Uybdq06Ojozp07o4SF3W53OBxz587t2bMndjlDQkJ69er14YcfLl26tKioiGVZmUxmtVpdLtfYsWOBqqdPnw7qArTYAJG9LbPlcDjMZjPCnMXFxatWrRo0aFB0dHRYWFh0dPSiRYusVuvnn3/epk2bESNGOJ1OsVjMsqzFYuHijn369MnIyNBoNOXynb179+7fv79UKhWLxViErFu37umnn0a8oHv37tu2bdPr9SKRSKlUPvvsswRBNG3a9JVXXlGpVEVFRf/617+ee+654cOHazQabI8YDIaioiLgfj/c94HT3b59GzVZz507d+LEiaNHjx44cOCP4D7fH933NN/V1HFPcJ/H47Vr127+/PlLlixZsWLFxo0bc3NzsYdssVhKSkpA39+3b9+RI0cA9y9dunTt2jW/FqcPvKYGb3EP3L958yYH9w8fPrx///5169Zx4Ut/dL+m/K6K6/xpdD8pKSk1NXXVqlWZmZn3wP1du3aBX3d/dB8BflhOnUX3GYbJz8+HQhl4w0DGENpH6rTRaDQYDBRFYbip9Jeqbbhvt9sZhgG112KxyGQyh8OBPSNoMmCxi8A/ioOCSFBaWsrpFUIcsNL+ezroj+7DQB/514eE+yqVCmqAUCIrLS212+0g82ClSlEUfEqj0ZAkiWpTCP9D9go5WC6Xy2KxWK1WiUSCK2A/MSYmRiwWoyCuyWTCkKTRaLyF+xAq0Wg0MpnMbDabTCZAbb27sSyLfTzusqj55XA4sCFQXFwsFAqRX6hSqbRabX5+PrThQN8HcdNisWzfvp0kSbvdLhKJCgoK4L9KpVIsFoOJpNPpSkpKaJpWKpU7d+4kSRJkDFQi83P3feNxt2/fRoonR9w/cOAAz52ojZxRP5nH09RQI8c9wX2wRufNm7dw4cLFixevXbt2y5Yt+fn5NE0jlPjNN9/89NNPe/fuPXz48G+//Xb+/HnAfb8Wp28cp6bucj/cv3z58ll3cWsO7iOu74/u14jH/elFqob7s2bNSkpKSktLW7169ebNm8ViMfbAi4uLv/nmm127dh08eBDpNJDHvXnzJnbb6gXcR3EcSP4hJYvDIiqVCrFJaDKAoevpx6ptuA9JE6TxAUNoNBqbzUbTNBhgHKVBr9djI4KmaZFIBIE/TpvZU/89HffD/bK/R3tIuK/X661WK1aeIpEI7gBYDByvVCpBd9Hp/itjRVEUBHZgeBaLBXF30HPlcrnL5bJarW+//TYoalOnToXWDWQHUeIUav2c5T+IEKfNZnM4HFhmICGJ64nVasV2hF6vV6vVSqWyYhVSuVyO5GOw6RwOB0mS4B2BFc2yrFKp3LZtm9PpxGIGz8IwDJY9EBenaRpiKVi6I8SANFDUN/ELcfrS4W7dunXlypXr16+fPXv22LFjR44c2b9/P8hdfrgP36zV1yrgfuvWrWfPnl2eurNgwYKVK1dmZmYKhUIQ/V0uF+pt7dmz59ChQydOnDh//vzFixevXr3qh/u+dJ+Hv9c9cP/WrVsc3D9y5MiBAwfWr1/vh/u16oP3XLxSuC8QCMDdnzVrVjm9dsGCBWvWrMnKygLct1gsgPu7d+/mxLIA9yvutnEsuzqL7nNYmZPnA0cfIUaDwUCSpNJdjLAiOrnnBwKCQYAQfIMar6oLGXKVSgV5b9SYQGlPkHxAEeZWHTabDXRqrAcMBgMoQPf3vOojfrhf9vdoDwn3pVIpdpa2bdtmNpspioKtYkMMBcOB1/FpcXExy7IajQYBdXgZyGZIpaUoKjExERnz/fv3F4lEcEaYq0ajcTgcEGfwCu6j0mF+fj4YQdhwAGsIm2AI+WNHAtUAXC4XuHNYDHAMJaylESPQ6XQmkwnbblj2OByOgoICJCrIZDKsHOC2WLEgqQaLc2zcYbkC0O+P7vvG7QAv/HAfbuX716rh/qxZs5AXuHz58oyMjNzcXOjzOp3O7du3f//999CEOH78+Llz5wD3Ib3PAQvfWJH/LtX+Be6H+1euXDl37tzZs2c5uI+Ftz+67xv3rBrucytwbLhJJBLExMGv271796+//nr8+PHTp0+fP3/+6tWrFVPnOa+sM7jPsqzVajWbzYDLiEQiKxk/LnYPCwoKLBZLFWQYDmfXEtyHIA+IEDqdzm63g2KENQZegXuAn1AURqVSIe0P5ATEL70yGj/cr/ZA9tf64kPCfYPBwJU5RLIpcLNOp+MqICLqb7PZ4HEajQZxcaPRCK+BmnI5zd1sNk+YMAFZrVFRUdnZ2SDwcOJrWq0WEXqOdQM6Pq4JsxcKhYMHD+bScLt27arVah0Oh8lkUigURqORJEmHw8Fx5ADZwa6x2WxFRUXg/HAejRWC0Wh0uVwqlUqhUCiVlywXeQAAIABJREFUSrvdbjAYQNx3OBxYw8hkMr1eb7PZFAqFRqMB26egoAAbhsXFxdh5Q4gBxcUQMsAuXFFRkR/u+8Z9bt68efny5WvXrp05c+bYsWOHDx/et2+fP7rv1RzxMCd7gvs8Hq9169azZs1KSEhITk5etmzZpk2bcnNzsW9mt9tLS0u/++47RBOPHTt27ty5CxcuXLlyhYP7wJG+sSL/Xar9C9wD90GuA9w/evTowYMH169f74f7D+Ni3n73QeD+woUL161bB72sinAfy+8TJ05UCvc5I6kzuI/JHoRjk8kEQMzN0ODuIyKoVqvBTq7056ttuA9Gr8lkKi4u1uv1Und9ZlTuhKhTxWq7AEOQNtPr9QUFBQzDKBSKKqoCV/pQHATxC3FylvqovnlIuI/INEmSUM9UKBQQjUWpcLFY7HK59Hq92WxWqVSI5ZvdTeVuNputoKAASbG5ublvvvlmSEgI5PbT09M1Gg2i45BlgK+RJIk3XkX3MTZBzi8vLw+rCCzyIeuJ1B2geafTCdIOTdPQH7BYLBKJBBt9LpcLW5noAMol6vV6mqYdDgfKnRoMBpVKZTabc3NzHQ6HxWJhGIYkSZqmCwsLwUwArd9qtaK8qEwmwy6HP1XXB75WEe4fPXrUD/c9TQS1dNwT3Ofz+W3atLkf7svlcq1Wa7PZtm3b5of7PnCQ2r5FpXD//PnzZ8+eBdzfsGGDH+7XkvdVetkHgfuLFi1at25ddnY2pjkosH/33Xf/+c9/QK4D3L927RonvlnRkGoM7nNzv4/foDAQ8EdF5C13N6FQ2KVLF1gt5JAr/aE5eO3jzv/p7fxwv6KxPpLvHxLu/6kJPeAJLMuGhoY2b95cIBCEhYUtWLBALBZDlr7SK1Tc1+KWHFVE9/8qfqfVatPS0iBJgWDz9OnT58yZk5CQkJaWBq2SnJwcJBgUFBTs3Lnzp59+ggz5yT80j3///fc7fzR/sLNSt7158+aVK1cuX758+vTpkydPHjp0aNeuXQKBgO9uD67MY7fbKYpSKpWtWrXq1q3bu+++i8pWnuwNlC1sHFEUhcQw7AJ5+oqn49jyJUkyPz9fJBJ17twZtIdKdfcr+ktFh0IHIAnVrl27Ll26vPHGG1hjV5zOtO4G2huIahRFKRQKbnucoqht27bpdDqz2QzJf5IkWZZFpAl8P/QB9Uc9wX2CIFq3bj1z5kxE95csWQL1fSyGAfe//fZbjit85syZ8+fPX758GYV1OdpAmb/V71/gHrh/8+bN69evX7x48fTp04cPHz506NCmTZtqUJnHZDKpVCps4QKzWSwWpVKJuQPby1xkB+6g86ZBiBOZliKRCGrpfHdNyfJh/OF19w0Gg1wupyiKKzSm1+tlMhl2leVyOU3TJSUlOTk5BoMBETdvuv/fcyuF+wRB9OrVa+rUqQkJCYmJicuXL1+9enV2dnZFf8TyG2Ses2fPXrx48R64z3nlowD3MXqCjMsRAPxw319mq+yv0OoJ3JfL5TNnziQIol27drm5uRDlRAHdiuiEe18RvnBwX6lUymSySsk8nsY+7oL15I0f7vvGaWoK7gPRLly4UCAQhIeHT5gwoWp1BC4whNNMJhPIaZ7ss4rj1YD7FSlwnMHTNK3RaFatWhUQEBAaGjp48GAkmSDvy2QyoRa1TqcDFY1TiTAYDNh8ZhgGe1wkSQKUgMtXWFhIURR2m5FChk0wrDEqLbPlh/u+sf86v4uP4T7cDTgY/O3x48c/9thjBEG0atUqJyfHbDYXFBRAR6EKp/P0UW3DfXBWCwoKjEZjSkpKXFxcenr66tWrly5dumTJkhR3S0hIcDqdcrlcpVJ56mcVx6uA+9OmTePg/po1a+oe7mP69/0rBs17sL5Go/EW7vu+51XfEc/lj+6XPertIeF+1Vb04J8qFIri4uLJkyevWbOmtLQUMpc0TXu6AhdohOsB+lQD7nu6fl0d98N93zhcTcF9RK/HjBmDSOSiRYuQQ+VpWgVzDOAAeS+Qq/J0fhXHvYL7WGbcb9XIn1Gr1dOmTcMjoMwFSZKQuwWBjQPrJpOpsLAQTHow9PBRUVHRli1bXC4XvgVarF6vt1gsWDAYjUZk9TAMg2W8H+77xtTr5118DPc5e4ZDlRdWQjkU2HxWVhaysHJyckiSrIfRfYhWsyybn5/fsWNHdPv+V5fLJRKJqhg0qvjoT+F+UlLS8uXL16xZk5OTg/0EjlzHpc77KLp//0DmmyOVwn2Kovxw3x/dr5/j7D29qidw32KxAAO5XC6tVqtUKsHp9+TFGLbwKUIyoN17G933dP26Ou6H+/fYZy39twbhfnkO+vPPP8/n8wMDA5FtotVqYZ/3vyILBZvyKpVKrVbD7O8/80+PeAv3KyL+ihdHBsu7774L6duNGzdiy4Iri4Eeuuk8Wixmtm7dioQck8m0c+fO9evXf/LJJ2+99ZZOp1OpVEhhZ1lWoVDYbDaDwUC7GzYBsDzwk3nK/t7Nx3AfwuuQQkbhlCeeeCIsLKxly5YEQUyfPh3iznK5XKfTVSPXET5Se2Qel8uFzbScnBzI1vHdTSAQVAT94CwhBFbRxx/kvSe437t372nTpiUmJiYlJa1YsYKD+1qtFqnzUMoCd99HcP9Bnqc2zgEs4GiOGDqrAfdro28Pc01/dL/s79EeEu4/jI1V/K5er1coFChpx7Ks0+lUqVROp7PiORXfV0RUNE1DAFShUHgL9ytesz6898P9Mp+0moL7yDLv1KmTQCBo27YtxFspivJkS6gJDQ4PCr1xqlOevuLpeLXhPmYr8E6BDBQKRd++fXk8XkREhFQqpWnaYrEAXqjVaixLsNVWWFhosVgoiiosLEQHsrKymjdvHhoaGhkZCZyEonjYNyD/aBqNhtOt1mq1frjvEzOvvzfxMdyHrarVahSByc7ORkZl9+7dCYJ46qmnkD8DSk8VSoxVOCPtrqxCkmRtcPdRakkkEqWkpBAEIRAIPvzww9jY2CVLliQnJ5eTCVNTU+fOnWs0Gu12ew2SeXg8Xu/evadPn56YmJicnLxixYq1a9dCKasi3OfqYPwd4T5q6Mjl8gdP1fVkRnV13A/36+9IWaM9qydwH1uo0LnXaDQSiQSEAU/2j1gjPsU4q1Qq5XK5H+4jbfGPTN07mFZr1GQehYvVFNyHZBPibc8884zFYkEk25PdgjNgs9mcTici31zAyNNXPB2vHtznIlOg7EOESiKRNG/enCCILl26gI1TUfYNFanRZ2jUwlspirJarevXrycIgsfjvfnmmwUFBTZ3w66FTqcrX0hotVqz2YyCMNC0xaufzPMoOFJ1n8HHcF8ul4M1h/SVNWvWAO6PGjXqsccea9q0qV6vF4lEUFerRup8bUf3jUaj0+m0Wq2zZ88mCCIkJGTjxo2QZUcNVpPJZLPZxGJxaWkpiP6exg1PxyuN7vN4vD59+nz11VdJSUnJyckrV67k4L5Op3M4HNu3b//hhx/27NmDKtc+gvuY/n3/eg9rn6Iotbt5S+bxfc+rvqMf7ld3HPuLfe8h4X7VVvTgnxqNRqVSqVKpsOvKMExxcTEKWlV6EeQL4qOHgfuVXrxuD/qVeXzgQjUF91mWTU9Px376xIkTudRVT3MqRFelUqlSqUTtF1RK8XR+FccfEu5jIxoVMDIyMgDZBw4ciKRG1MkG0EeqLhcfVavVXG1Kk8k0d+5cPP6XX36p0+mgNgu1IqwZLBaLzWZjGEYmk4nFYk4S1w/3fWDn9fYWd92Ni0r4QJln27ZtJpMJZv/RRx8hKfyzzz4rl+EKDAzcvHkzlLJQc70Kv6v0o9qG+7m5uaDPjRo1iiCI4OBgKNfp9XrOka1Wa05Ojs1mMxqNlXay6oOVwn0+n8/B/ZSUlJUrV65bt04oFELUiIP7v/zyy98C7uMX5AR5/HD/119/PXbs2KlTp/zc/bK/QqsncB84CZr0CoXCZDIplUqLxeIJeVeE+6ixVb3ovqfr1+FxP9z3gd/UFNwnSXLGjBnAu6tWrQLHrAqxnaKiIolEssTd8vLykK0Logumkgd/rTbcR1wfsCYtLW3Dhg3JycmA++PHj+fIRUajEaXxaJrOyclZtmxZYmLiypUr8/PzwfNBRiPkHPh8/ooVK1CpBtUtNBoNakqgBkW5jHpKSkpaWtqWLVsQS/LDfR/Yeb29hRvt3/UZ3IdmJbJHyvlpTz75JEEQb7311ubNmwmCCAgImDFjhsFgMJvNXCXHB/dESMMh6lRLZB5I3JaXnnjhhReCg4NbtGiBtTRC+3hvt9uxPV4NMpInIU4O7icnJ6ekpKxatYqD+3q93uFw7Nix44cffnhQuH/79m1OlfPu3bsYhS9evHjq1KkTJ04cPHjwl19+4XIReDxeQkICtgIh/InCNAzDaDy0P6iDtfsv0gTBJZC6m1qtFolEcrm8bdu24FoRBDFs2DDOhoAnsPProe//PVy7/fZ8dSRdjRgxAj9+SEjI448/Pnfu3NjY2OTk5CVLlqxdu3bz5s0SiUSr1VoslqKioq+//hpyyID7kF+9cePGrVu37ty5U2/Hnb9nxzinKysru3379rVr1y5evIgC5ofcrUOHDgRBREREEAQxZMgQ3R+tntgt1tWo2yWXy6VSqUQiEYvFJElu2bLl7bff5gaNLl26cGuDiu4GuOPJ9Tx7Ru1+QtM0Fy3GI0yaNCkuLm7+/PlplenuY7Tdt2/f0aNHT548ee7cuStXrty8eZObRzGtlvnb//0Fagruy2SyL774AhUSVq5cabfbEefr0aMHQRAtWrQYN26cXq9XKpUul2vTpk0vvvgi/qzNmjULCwubNm0aTdMGg2H27NkBAQEEQbz33nsQCnQ4HCKRSK1Wf/jhhwRBBAUFLVq0CIMtKPLc7JD/ALr7CEg5HA7kKc6YMaNFixbBwcHw8RYtWqBXK1askMvlhYWFWH6bTKaZM2f26dOHx+NxDkUQxJw5c5xOJ46EhIRwExzWDF988YXBYJDJZCqVimGYgQMHgikUEBDQsGFDgiDCw8Or4O63atVqxowZ8+fPT0xMXLx48fr167ds2VJR59uvu/9/bfkv+T8fw33ki1utVuyqwXSnTJmi1+v5fH5wcPArr7wC6IwdZp2Xrbaj+xC2MpvNUVFRISEhL774InSxHA6HXC7HDmFBQQFkcGs2ut+3b9+vvvqqUrjvdDorwn0UfqlKd99buJ+UlITYAEiQiKZgbKp05vbyr1bN0zGYcqF9kiSzs7MzMzNFIlFUVBSPxwsPD+fz+WPGjOHkEXAngKc67//9j61SqcRiMQf3BQJB06ZNv/jii9jY2KSkpCVLlqxZs2bz5s1isfh+uH/06NFTp0754X5ZPW6e4P7x48d/dbeoqChsGhIEMWLEiPpmt+gPtMDhdyjTm52dvWnTpsGDB4eEhISGhvL5/JiYGI7LCHcD6EeMs9JBo3rR1vudqBpH5HI5l4wVEBDA4/EmT54cGxsLuL98+fINGzZULLNVKdy/ceOGH+5X7Xw1BfeNRuMTTzwB0Pz9999rtVqn0/nyyy8TBBEWFjZkyBCj0WgwGKxWa3JycpcuXQCO27VrBwJuYGBgamoqwzBLly4NDAwkCGL48OEgiJrNZiSgR0ZGNm7cuHnz5lKp1Gw2Q7SeqzXxgGW2GIax2+0mkykvL+/VV19FN5o2bQr8DQj+2GOPaTQal8sll8sLCgpkMtkbb7yB2GdISEhQUFBoaChWCOPHj1+yZElQUFBYWJhAIMDVCILAoLF8+XKFQuFyuZYtWyYQCJDYwA0mYWFh7du398P9qu3zkf/0rrtxw1Rtk3kA91mWpShqw4YNELRJT083Go3NmzcPCQnp3Lmz0WhEJj03Xzz4AF7bcL+wsJAkSZVKFRYWxuPxBg8erNPp7Ha7wWAoLS2VSqUsy+bm5u7cudNqtUL+68E7jzM9kXnqEu7HxcUplUqSJGUyGQr7KRQKiUQi89AUtdyUSiXuwIX2Je4mEom2bNmSm5sbHR2NmAdBEO+88w6kmvCXU6lUyj+ah+7Larn7Hi+v1WplMtno0aODgoIEAkFgYCCKHc6bNy8pKWnx4sWrV6/GeoamabPZXFhYuHPnzl27dh08eNAP9+v/YO0J7p88efLgwYP79++HZAGiIO+99159s1v4jkKhqBjaL19d5+fnb926tWJ0/8knn7RarVgMwNs4o4fPVup63Dk+fqNSqcolzypGUidOnDhlypT4+PjU1FTA/ezsbIVCYTAYnE4nMqX27dt35MiR33777ezZs1euXPHD/T91wJqC+3q9Hli5e/fuNpvNbrdPnToV8PeZZ56RyWR2uz0vL0+tVmNV0KZNm9TUVKFQmJqa2rhx4wYNGrz22mtarVYsFkMH8+2334bSFMMwVqt18eLFBEE0aNBg5MiRNpsN4XmTyeQt3McSQq1WDxkyBBB/5MiRS5cuNRqN06ZN4/P5oaGhbdu2VSgUBQUFKpVKKpUOHDhQIBDg1itXrqQoasKECTweLzAwcOXKlXK5PC0tbdy4cUFBQQRBPPfccwkJCXFxcfPmzZPL5Q6HIyEhoUuXLgRBxMTEfPTRR6WlpRaLBYb94osv+uH+n5roo32Cj+E+WC40TbMsO2HChODgYIFAIJVKrVbrs88+KxAIAgICGIbBihpBZJ03rbbhPlCu2Wxu1qwZQRD//Oc/4+LigHsxNWPwycnJQU+86fv/zq2PcD8tLU2hUCAdFiWRVSoVaDPIjr3nFeC7tl/FYrHI3fLdLc/d1q9fv3LlSpAiEOwZNmwYp9SJR+CYAfd0m/tvbffc0/XVavXWrVvfeecdDnk0b958xowZc+fOTUxMTE9PX7VqVUZGRn5+vkajQe0VwP0DBw6AV+Dn7pfV4+YJ7p85c+bAgQN79+7t2bMn96evh3YLyhwIPPn5+Xl5eUJ3y8zM3Lx589ChQ4ODgxHd79ixo1AorOhuFaE/52j3vPHkF7V9PCcnZ8qUKdwvLxAIsJ8WFxeXkpKydOnS9evXb926VS6XsyyLTKnvv/9+7969HNz3K/M8iNvVFNxftWoVQRDNmjUbMmSIRCLZsGFDgwYN+Hx++/bthUKhXq83GAx2u/2ll15CkHvOnDlFRUUlJSU0TUPzu2PHjjKZzGg0Irr/0ksvYccJDPjXXnsN0SKFQsGyrMVigZxlNeC+VqudPn06iDfPPfecxWIp75jD4di0aRPs7YUXXqAoCriBKxw2bdq07OxsiPB06tQpMDCwQYMGSOR1OByJiYmA+6NHjy4tLd2yZcuPP/5I07RUKsUORkxMjFQqdTgcEomk3JIJgmjcuPHrr7/uh/sPYqWP8Dk+hvuc/pXFYunfv39ISEjDhg2NRqPVap08eTLsf8OGDSRJIi9F52WrbbhfWFgok8mw+Ed8ISwsjCCIzp07T506VSb7b1zY4XDk5+dv375dJpN52f3/nl4f4f6yZcukUqlcLgdQlkqlCoWiXO/S0zQM/F3br8D3HOZAf9avX79o0aIePXpgoC9fPv7zn/8E1OBik4gdyuXyuu3//b+PXC7PyMgYNWpUkyZNQNxs1qzZ5MmT58yZM3/+/EWLFq1cuXLTpk15eXkURRmNRpfLtWPHjp9//vnAgQNHjhw5efKkH+6X1ePmCe6fPXv24MGDe/bs6dWrFwc6X3rppfpmtyJ344B+rrvl5OTk5eWtXbv2X//6FzofGBjYt29fCKFwvlYxqF/f/C4zM3Py5MktWrSAThxBEJMnTwaJDjkz69atA5UZ9IzS0lLA/cOHD584ceLMmTN+uP8gbldTcH/y5MmYd+Pi4miaRjy7cePGsbGxJSUlAO6c6t+wYcNMJpNWq83LyzObzd27dw8MDOzVqxdE9HCdPn36aLVarBPy8vIaNWpEEES/fv1KS0spitJq/1voCtFHr7j7UMZs1aoVQRAtW7aUSCQGgwHGv3DhQjjLxx9/jBpDixYtwg7AP/7xD5lMtnPnTpZl0Zng4OC2bduCmm8ymaBwQhBEQkICREjlcrnNZnv11Vd5PF75znBqaqpSqbRarVqtllvHJicn++H+g1jpI3yOj+G+TqdjWRak9tatWwcGBnbt2tXobsjWJQji448/NhqNXKq6zptW23DfYDAYjcb4+HgMCKDGYY5o2LDhgAEDoLivUCjy8/MLCwu96fv/zq2PcL9p06YdO3bs0KFDly5doqKiIiMju3btGhkZ2cFDi6rl1slD69KlS2RkJJg8HGxq06ZN5z8a+oVv44kqfYJa7r7Hy7dv375Dhw4NGjTgOh8ZGTlv3rzZs2fHx8cvXLhwxYoVGzduRNzUYDBwcH///v0INJ4/fx68An+qbln9a57g/pkzZw4dOrR79+6nnnqK+9NHRUX9Ybad64nddu5ceU+eeOKJzp07I/UQy1SCIPr06XNPt6vwOLihR8eo5Q8GDBjQqVMn/PIBAQF8Pn/evHkzZszgSHRr167NysqSSqV6vd5ms5WWln733XcQRgDcv3Tp0vXr1zlSLKbV+meAddyjmoL77777LnjAWVlZo0ePJgiiYcOGkydP3rFjB6eU16NHD+SqQoTeZrNZLJaMjIxAdxsyZIhMJjObzW3atCEIIjo6Wq/Xs+6GJGAej7du3TqNRsOyLDQ3qgH3SZJEaD8sLGzixIkOh4NhGK1WazKZPvjgA9hbYmKi0+k0m81vvfUWQRAdOnRYsmSJw+FAUntubi5Oe/HFFwsLCwGVnnvuORxEBldpaWlWVlZ2djZ2JN544w1UyzYYDBRFYaeCIAihUOiH+3XsAHV9ex/DfUT3LRbLpk2bsK4eOXIk/Eiv14NH17NnT7PZTJJkPeTuUxTldDpFItHWrVtdLpdYLF6+fPnbb7+N/H4w7rKysgoLC1mWFYvFOu9bfYT7HA+ei35xeUIYd+555dVRwxyAvoWHh4PyiDccCrmnq5X+t466/18dhvI0soolmh977LGJEyfOmjUrPj5+wYIFK1as2LBhg1AoJEmSZdmCgoLt27f//PPP+/fvhwKrH+7X9Yha1f09wf2TJ08ePXp0165dkBYBwSA4OBh2WKmJVnqwtu2W/0ertGPBwcHIIwTTIDw8vNJOVnGwtvvv6fr3d2nKlCkTJ04EiW7x4sVIkZdIJDqdzmq1btu2DXD/0KFDx48fP336tB/uV2X3f3xWU3Afm2CNGzeGHGejRo0GDhzocDhAthGLxQ6Ho2XLloGBgS+88IJYLIZONsMwIHk2bNhw69atjLthgd2uXTtIz5UXtOrWrZtAIOjRowcSZ61WK0mSRqMRqeTeRvcjIyP5fH5YWJhSqczMzGQYhmXZ8vq+AwYMCA4ODggIkMlkDMOAnkQQxAsvvADCGJQ3OW3+qVOnIrNLKBQ2adKEz+e3bdsWz4Xo6auvvoplz5IlS/R6PWoMm0ymDh06NGnSpG3bthRF+eH+H5b4N/3Xx3CfZVmNRmMwGKZNmwZUs3TpUg7gdu3alSCIJk2aVA/rw9lrVYiToii73W6xWNRqtclkgk9JJJIvv/wSU0bDhg1Xrlyp0WjMZjPGH52Xjfs1NBpN165dAVP5fH5dpuoGBQUBgnBItEGDBkFBQX/M/vf+e//06ZsjUDDAvSqiDa5/98AU7vg9b3zT20rvAikGKDNgTJ8yZcqsWbPi4uLS0tKQNZibm1sR7v/000/79u0D3IcmoF+Is34O557g/okTJ44dO7Zr1y6k6iIQAp1BWGY9t1suCsDn83k8HoIfiBFUusy+x924/1bqET47GBQUxOPx8CwzZ86cMmUKlzOzevVqKGL54f7DeFZNwX0+nw+R4jZt2oSHh3fv3h3AFxlNFEWVB0cwYU2YMMFgMCQlJY0YMYITq/nss8/EYnFBQUG5zgY0Otu0aQNhDYVCgZjLxIkT9Xq9xWKBckhhYaFKpfKWu5+Tk4OU32eeeWbHjh1KpRLh+XKpiZiYGKyKXS6XUqmcN29eQEBAYGDg/PnzCwoK8vLySkpKTCYT9PUJgsBWAxYbYWFhwcHBPXr0sFqtKJdhMpkwNffu3RspxaihgZzmwMDAnj17om6XJ919vxDnwxj2X+W7Pob7RqNRpVLRND1s2DAM4yAhQ1Px9ddfh9YtylRB3l3nTattMg+qTzocDixIIPgL1h9W1wRBvPnmmxaLRS6XV1H3o4pn8gXcrwg77t69e+PGjcuXL1+4cAFRxj179uzevRtog5trubESgxRoTJ6iZbV9HL3i7sJ1Em+4rvJ4PCwAuDPr/xs8Ap/Px3T1xBNPfPHFFzNnzgTcX7Zs2bp16yASotPpnE5naWnpjz/+yMH98+fPX7169fr167du3eLGIL8AP/dT1O2bO3fuwPW4Yhfnzp07derU4cOHDx069OuvvwLuY3sKe531ymJhnMDEFXE8B/dxAvdarzpfRWeQhoW5B4LQY8eO/eqrr+bOnZuQkLBo0aJ7UuQrrXdx/fr1mzdvVtQ4Lisru3v3v0Vt6tbq6s/dvYX7gAvIlEVRm3L6TWZmZkXbi4iIQJxbp9NhxrXb7VA7aN26NUwRYymyeydMmKDT6UDxZ1n25Zdfbty4MUEQdrvdZrP9+9//FggEjRo1UqlUxcXFJElqtVoUs9Rqtd7C/Y8++giTUWxsrFwuN5vNIpHIZrOxLItlQNeuXRmGMZvN4B1FREQgH9dqtYpEIrPZ3K9fPzwCViNFRUWpqak4MnLkSJIk1Wq10WicM2cOnnHatGlqtVqv1zudzvK85I0bN+LkoUOH+uF+/XGEuuqJj+E+SlCVi9hAgqJJkyZvv/32kCFDhg8fPmLEiJ49eyKwNW/ePJZlqwGXaxvuy2Qyi8UCD9VoNNhwM7hbXFwcsOUzzzyDYQHhAJ2XrT7C/RdffHHUqFFDhgwZNmzYmDFjBg8ePHTo0FGjRg2vozZ06NBhw4bBaEaMGDFs2LAcDbX0AAAgAElEQVR33nln8ODBo0ePfuedd4YPH960aVMsV8LDwzt37lxH3fT6tqNHjx42bFiXLl24+al9+/bTpk3zw/26Gh9r9r6e4D509/ft29etWzdOKrse2m1Fpxs+fPjQoUOHDBkyaNCg4cOHDx48GBmTWGO3bNlyzJgxXjtAHX3hvffeQ6gJ2Cg4OHjChAlz5szxw/2atX9v4b7BYAAZQK/XY041Go3lCRXwEWTL4U+2ZcsWrAfAyYmJicFxCO2Xc2l69Ojx2Wef5eXlmUwmhmF0Oh1qeX7++ec4syLsHjhwIMp8YhMfuuCYx70i87z22mvY6UKSLkVR27dvF4vFiPoHBQX9+9//NhgMIpEI2gwxMTFmsxn7CRaLRa/XN2nSpJx237FjR3AJDAYD6n8RBDF37lzomej1+uHDh+Mp0tPTGYahadpisaAYGaaSVatW0TTtJ/PUrD3/5a7mY7ivVqstFotQKOQKTQQFBaGIJFdNgiCI0aNHV6/oSm3DfbO7YSiwWCwmkwleCUoewgcEQRiNRmTGY4jw6rU+wv1169ahWyzL2u12PA/KECK9ycever0evzj6gL5pNBro7pcn1YEWhm3ZIUOG+Lh71b6dXC4XiURDhw7l4H6bNm2mT5/uh/t/uYG10g57gvsnT57cv3//7t27AfcDAgLCwsLeeuutahtSLX2Rczr4HVdvKzs7WygUDhw4EJgjODj4ySefBG2glnpSs5clSTI2NpajAgYHB3/22Wdz3c0f3a/Ukqt30Fu4j7JunDAOOPQo79CsWbPRo0fn5eUBT3/yyScg2et0Oq1W26xZs+bNm0dGRqalpeXk5IDdDuVio9EoFouVSmVBQYFWq8XiITw8nKIoEOgjIiI2btxoMpnkcrlGo8EOPlYI3kb3IRoRHh5uMpnsdrtarS4qKsrNzZ0zZw64N7NmzTIajSkpKaGhoUFBQWPHjpVKpShOZLPZNmzYgLjVoEGDOAnz/v37Yw2zZcsW8Ha0Wi2WNw0bNpRIJIy7sSxbjlWeffZZkOsoipLL5X64Xz27fWS+5WO4DxFbToQqPDw8Jibmqaee6tixY3R0NAfSunXrhoWBzstW23AftTjgelDowtaZ2WwuKSnh+C9Axdj98/IJfCLECUYBjPhByDwLFiwgSVKj0YDOSP/RvH22mjpf6256dwPmQNUDlEUgSZLT2SAIYuzYsTV139q+jtFodDqdY8eO5UJTLVq0mDx5sh/ulz0SzRPcP3HixN69e3/++Wek6hIEERoaWj/tFk7HRVtJklQqlRqNRqvVciFGVPkBB6O2XaZGrm+z2dLS0jiaYmBg4KRJk1Dvwg/3a9DzvIX7APokSZpMJky6JpMJm0gCgSA3N9flcj3++OMIs0FGE4gcHtS8eXMo4Wi1WpIk5XK5SqVCtV2tVisSiViW/eqrr6DVI5VKX331VT6fP2DAAKvVarFYpFKpTqez2Wx6vd5oNIJb7FV0HzShmJgYaPwbjcbs7GyWZf/9739jbbl161aWZceNGwci2dKlS7E7odfrzWYzV1596tSpIO3QNB0ZGYlq60gcBMho1KhRaGhoZGSk1WoFIkEaA3SHHn/8cZlMhhiZn7tfg/b8l7uUj+E+dufGjRsHFYeUlBS73c4wTEFBAerRPvnkk8gCzcnJqcZIXttwn2EYiqKwDUjTtNFoVKvVWI1LJBKs2Js1a1bOCXQ6nWq1uhqPUB+j+/Pnz1epVBhZTCYT0D7meCDvOnnFj6vVajEEK5VKoVC4efNmoVAITUAEfj744IM66V41bopg0qhRowD3BQJBy5Yt/XD/LzeqeuqwJ7h/5MiRffv27dq166mnnuLyXMeMGVMNE6rVr8DjgPi1Wi1FUSqVSqFQKJXKrVu3ctF9giC6d+8uk8lqtTM1eHGappOTk1H0Ea73ySefTJ8+3U/m8WTJ1TvuLdxHgEmlUpnNZqvVCnZv06ZNw8LC2rZta7FYlEolV8sZQpMg3vD5/KCgoMjIyK+//loul1utVtCIURBar9dbrVZw6FetWiUQCMoZaIsWLQoLC+Pz+fHx8SaTidMCx0aW2WzGdO4V3Ict9evXT6lUGgwGs9mcn59vMpnatWsHoQvsRQwdOhR1uJKTk4uKipDdqNfrIyMjIV2ydOlShUJhtVrz8vIaNmwYFBTUqVMnbFno9XqaplFQMioqqrCwUK1WIxVy8uTJQCT9+/fXaDQFBQX+6H717PaR+dZdd+P0gm/evHn9+vWLFy+ePn0a+WNc9TekxyBjBNWguPe6B25arbY8Y+Sf//wnIikikchoNELfDKI9zz//POa7pUuXVoPPU9twH4MAECZW4H8EuumkpKSAgIDQ0NAuXbo4nU6JRFK98FY9hftQIAb/j6Zp9LIGZ1xvLwUTRDcoikKUkSTJnJycrKwswH2kSb3//vveXryuzmdZ1mq1ckEdgUDQpk0bP3f/kRltPcH9Q4cOHTx4cPfu3T179uQoJcOGDasrO/R0XwB9jmJBUZRSqZTL5RRFrV+//u2330bnAwIC+vbt+xeC+3q9fuHChaGhoQB8BEF8+umnM2fO9MP9mnU9b+E+7JCiKIPB4HA4EB0PDg4ODAwcPny42WyWyWQbNmwAlX/ChAlOpxPMdRS9b9GiBRJt8/LyEN622+1WqxU7AJg7CgsLIYOGxWpYWBhN0xDiQDIAwzAGgwFA2VsyD+B+ZGSk0+m0Wq00TTudzvT09ICAAIFA0L59e0QKufhOfHy8VCo1m81Op3PatGk8Hg+5jCKRSK1Wm81m5OnyeLynn37aZrMZDAaTyaRSqcAraNu2rdlsBoNCoVCgfnBAQMAbb7wBGSI/3K9Ze/7LXe2uu/kM7stkMpvNBmds165daWkpEI5erwcP/pNPPoGPfPrpp/UQ7pMkabPZECzQ6XRyuRy1+Ww22yuvvIKef/nll06nUyaToTqHzstWH+H+ggULzGaz3W7HhiAWOthgrVkS7QNeDdXOIGqGRadGo0FUQyKRbN26tWPHjgEBAcHBwXw+f9iwYQ942To/zWw2MwwD1SqoE7Zu3dof3f/LjaqeOuwJ7h85cuT48eO7d++Ojo6G0RIEUQ/t1vRHMxqN8DustNVq9ebNmwcPHoyYJY/H69WrF0oq1rlPPUgHTCbTwoULy0O8kEInCGLSpEl+uO/JjKt93Fu4X1HtHnA5KSmJm2UZhoFmTuPGjXk8XvPmzVEErXzDfcCAAQRBlBPfk5KSioqKMGdjax7noBitXq8vKioCVm7dujWPxxsyZIjdbudqfNI0Xa6RbzAYINHjLdx/7LHHEHeHBCdFUVlZWU8//TQ0al955RWEz7jCt/Hx8UKh8LvvvtuyZUuHDh1CQkJQchE8IqPROH78eDz+wIEDjUYjJmKFQtGoUSMej9e0aVOxWMyyLEVRkydPRjVfgUDw4Ycf2mw2hULhh/vVNt1H44s+hvtg7MBiX331VaSbIw1GqVRSFLVs2TJ8+swzz9RDZR6aph0OR15eHreELigoUCgU8fHxoaGhfD6/QYMGDMMYjUZUy9Z53+oj3E9NTTUajSg3oHY3bHFyWxs+flMxKwJ1FhBlFIvFeXl5W7Zs6dGjB/aP+Hz+G2+84ePuVft2KKQyZMiQ4ODgkJAQPp/fsmVLBBr9QpyPwIDrCe4fP3781KlTu3bteuKJJ1B4ISgoaNSoUdU2pFr6YkXiPoKgCoVCJpOJRKKcnJzBgwdj7IaWCOjOtdSTmr2sTqeLj48H7MMGxeeffz516lR/dL9mnc5buG+1WrGrrFAojEajXC6fNGkSVFPj4+NLS0spiiontQNA8/n8DRs2AMe///77ULONjo7eunUrooxKpTLR3UiSdLlcNE2bzebNmzcjHRamK5fLdTod1HtIkkSdHZZlJRIJF1ci3S0/P18kEnXu3JlTBR05ciTLssg3UKvVDMP07t0bLJ3Y2FjsGAwcOBCqtTweb8yYMVgGJCUlwepefPFFrVZrNptfeOGFli1bPvvsswRB9O3bV6vVAlUMHz4c5Id3332XJEn8LCRJdu7cGWuDtWvXUhS1dOnSVq1a/b//9//Qt/nz51MUBUlBP3e/Zk36r3U1H8N9i8WCpWxISMjEiRNVKpXdbpdKpQUFBRqNxmg02mw20PqbNGmCpbvOm1bbZB69Xr9u3bqXX3555syZyBGVy+UjRoyAC0dEREyZMgWrbqVS6XK5vOn7/871BdyvKA7NSYBfvHjxt99+O3bs2P79+/fs2cPN3OWhiOTkZKgRYdxBTIITK6jGQ9bIV7itBiRQkyQpczehUNilSxduVH333Xdr5HY+uAgqOHClVQiCaNmypb/MVtmj0m7fvg0V9rt37966devq1avnz58/ffr0yZMnDx06tGfPnpiYGMzQAQEBw4cP94HJeXULeBykPxDpVKvVKpVKJpMJhULAffhd165dK67JvbpLnZy8YMGCiiPe5MmTv/rqq9mzZ8+fP5/T3ReJRMCIJSUl33zzzX/+859ff/312LFjp06dunDhwtWrV+/80TCtlvnb//0FvIX7UIZAfq3JZHI4HH369AH3BkYokUiUSmVycjL+dlOnTgXdduvWrW3btsXCoFmzZp06derRo4dAIIiIiIiNjUWmoFKpxMQRGRmJIPrLL7+M/NcqLNAr7j4Xto+IiGjVqlW4u+FgQEDArFmzUABYLpej3C9BEF27do2IiAgICJgzZ84bb7zB4/Hat2+v0+kQmI+Li8OTNm/ePCoqqn///sXFxTRNT506FcfDw8OjoqIIgujfv/+CBQtQazI1NTU7O3vnzp3+6P7/tce/3f98DPcZhvnXv/4Fy9y0aZNOp1MqldhoslqtSqXS6XRCVSUkJAQnVOF6939U23CfZdkPP/wQCfeY1zD4EATRuHHjUaNGKZXKwsJCZAQVFRXd38M/PVLHcP/48eMHDhzww/0//TvVxglVw/0FCxYsX758w4YN91TV/fnnn/fv34+quufPn79y5Yq/qm5ZvWzcMrsi3D9z5owf7teGN3l1zUrh/pw5czhlnszMTMB9i8Xih/vVcy9v4b5KpYIyhMFgQF44lGrbtm0rl8uRcVtQUJCZmdmsWbOAgIC2bdsqFAqz2VxYWJiQkIDgOpgzSFpt3bp1XFwc5W6c3k5UVFRISEhgYKBQKISEThWW4xXcpyhq0KBB4C4Dyr///vsURYWEhAgEgnnz5plMpvJaWjqd7oMPPmjSpAl2pAMDA8eNGyeRSFB0b8CAASDzGAyGcl5B//79oVxOEETv3r2RR7dx48annnoKX2/UqFHnzp2XL1/O1SNbs2aN0+nMyMjww/3q2e0j8y0fw/3y/bFevXoRBNGiRQuapl0uF0hxUK6kadput7/22msNGjQICwubNGlSFX5X6Ue1DfdLSkomTZqEWACPx0PZdbAEZ8yY4XA4rFarRCJBPAJOWmk/qzhYl3D/5MmTgPu//PIL1mR49Uf3q/iD1eBHVcD98rLwCxYsWLFixYYNG4RCIUmSLMu6XK4dO3YA7h85cuS3337zw/2yetw4Mk9ZWdmtW7euXbt24cIFP9yvQQ+q9qUqhfsg86Snp69evTozM1MsFmu1WsD9b7/9ds+ePVx0/+LFi9euXfsjuP/f2sl3796tx5ZYN13zFu6DgoIkEK1WW1xcnJCQMHv27EWLFkH5jmEYi8XicDiSkpLmz58/Y8aMkpISoVCo0+kKCgpEItG4ceM+/vjjIUOGxMfHZ2ZmSqVSq9VaXFxsNpsR2pfL5Shw+8wzzyCPEHweT4bkFdxnGCY/Pz8pKWn8+PFffvnl6tWrQelZvnz5rFmzcnNzrVarXq8vLCw0mUzr168fP378F198sWnTJqPRWFhYmJmZuXjx4oULF4IjZDQai4uLN2/ePH/+/PHjx7///vvLli3bvn27yWQqLi7etGlTXFzc+PHjJ06cKBaLzWZzbm5ueVpwWlpaVlaWy+VCYpifzFM3pl8/7upjuK/T6VJTU5OTk1NTU1mWzcvLk8vlLpeLoigk5hYXF2dkZMydO3f27Nm5ubmenM7T8dqG+9jBFgqFSUlJ77777ptvvvnJJ58sXbo0Ly+PpmmtVgus73Q67Xa7QqHw1M8qjtcx3D9x4sSBAwf8cL+Kv1DtfeQJ7s+ePZuD+xs3bhQKhdB/5eD+gQMHjhw5cvLkSZAK/NH9snrZKsL927dvA+6fPXvWH92vPZ96wCtXCvfnzZuXmJi4ePHiNWvWbN68GRJyVqt127ZtgPuHDh06fvz46dOn/XD/QRzOW7hvNBodDoderydJUiqVQmXS6XRqtVqDwSCXy5HeV1xcjKwSlUqFCCLE8u12O6pgIpcO15HJZBB1UKlU5eyCHj16IPq+ZcuWnJwcKIVXYTNewX2JRIJiXtDCt9vtpaWlEokEpYJVKhVEh5CIotFolEqlTCazu5tKpVKr1agdBlUinGw2m1FdC/Dd4XBkZ2dD0FOn0ykUCjwdwzBCoRDFtiQSiV6v95fZehATfbTP8THcNxqNWq3WbrfDVcHNw74cvA8psKgRUVhYWIXfVfpRbcN9m1v8Cu6JsIJOp8vLywODjqIop9PpcDhUKpVcLocwbqX9rOJgXcL9U6dOnThx4uDBg3v37uWi+zwezx/dr+IPVoMfVQH358+fv3DhwpUrV27cuDEvLw9wv7CwcOfOnbt27Tpw4MDRo0f9cL+sfreKEd/bt29D89gP92vQg6p9qUrhfmxsbFJS0pIlS9auXbtlyxapVKrX6+12+7Zt27777rtffvmFg/uXLl26fv26P7pftf95C/dJkoRcvcFgUKlULMuC3oP/QktepVJp3A0nqNVq0AakUqlWq7VarZzaN6ZnhmGkUil0LadNm0YQRMOGDd977z1UjKYoquqUO6/gPvA6ynWxLKtWqwsKCpBeXFRUhFTF4uJi5CEwDGM2mymKomnaarVC7RtQA7QlvV4vFosRVgTQIUnS4XAYDAaUuoe+ocvlAsZCHV88NeSG/GSequ3zkf/Ux3CfKwUtlUpZli0sLCwqKsrKyrLb7dCQxRIUpayqkQta23A/Oztbr9dD3lcqlcpkMlQCAbfCbrejHAeO22y2asw+dQz3f/vtt19//bUi3Ofz+X64X40/ZDW+4gnuz5kzBymDK1eu3LRpU15eHkVR2PAF3D948ODRo0dPnTqFKKM/ul8/B+6KcP/OnTuA++fOnfNH96vhLDX7lUrhflxcXHJy8tKlS9etW7fVLfDCMIzD4SgtLQXcP3z48IkTJ86cOeOH+w/icd7CfaVSCfYUwtsQwocGPyr4IO1PqVRCD7ukpARRf0TTLRYLtP9QcJdhGJVKRZKk2WxWqVSLFi0KDQ0NDw9v0aKFwWBQKBRFRUUWi6XqckJewX3sOcjlcoe7QQoTBCTgeIZhxGKxXC5HtdH8/Hyz2YwwP0VRpaWl0COiKKpc6hsigBw+oGmaW0gAVyHGjzUSchhwKa1WKxaLueoBnHzQyJEjuaBeq1atZsyYMX/+fGxnrV+/fsuWLTKZjKZpm82G7azdu3cfPHjw+PHjZ86cOX/+/OXLl3///XcuH+lBDMB/Tt3+Aj6G+1B2QZI9TdOoYw11XW5xy7Is1qv1UIiTZdnyMmGozI2NCJPJpNFoiouLDQaDVCoViUQajcZms1kslupJU3DurNFounbtCqEOPp/ft2/fr776Kjk5OSUlZdWqVevWrRMKhUqlEsuPHTt2/PDDD7/88svhw4dPnjx59uxZAL/bt29zBsaBDaKii1ZU5jl9+nRFuM/d2w/3dT5pVcB9LmVw06ZN+fn5gPtFRUVff/01RmE/3OcM/S/x5s6dO7///vulS5f8cN8nvvUnN6kU7sfHx6ekpCxbtmz9+vVbt26Vy+UsywLuf//993v37uXgPqCPP7pftet5C/cRMNO6m0ajUSgUQNsSiQRls1AHAhMtTdP5+fl6vb6goMBisQDBazSabdu2gTkAAc3CwkKLxfLpp59idmvZsiWyocAaMhgMVQsCegX3QWZQKpUoCwP0jPRcBP5tNhtk7kA0wvl5eXnov8lkIkmysLAQvB273a5UKhmGgf6mTqdzOp24skajMZvNDofDZrNptVpsdBQVFen1elRqx0F/dL9q+3zkP/Ux3IeUbV5eHvavYL1GoxEuBr9GpByyzn8yRt/3cW1H97FaVigUqL+BrHpUDEASTmFhITYDcfC+Dv75gXoB9/ft2wdBA2hR++H+n//dauKMB4H7GRkZlcJ9CAL6o/tlf5Hmh/s14TE1dg1PcD81NRVwPzs7GwxUp9NZWlpaEe6fPXvWD/cfxO2qAfdBfWEYxmq1Yq2FcKDBYNDr9SqVCpRZ8Hnsdjti2wjLcUF9s9mMilR2uz09PR1SlQEBAc2aNUtNTRWLxT/++CMWA9DxrMKqvIL7YNfY7XYwc1CcjmVZcPcR2je761fm5+eD4QCeEuTJNRoN2A4Gg0EkEun1eqQgkyRptVqNRqPZbFYqlQjbl0cHQVLCs6tUKqlUarFY8JtotVqbzeaH+w9ipY/wOT6G+xRF7dixw+BuAPcI7SMnnqIo1ITm6rdW4XeVflTbcB9jDqQCUK6bYRibzYYlCriFiLijUkelnaz6oC/gPhfnL3M3iIRcvnz57Nmzp06dOnToEOA+dvpqkLtP0zR2J3fu3CmRSAoLC3NycmJjY995553y4gUpKSlr16799ttv5XI5RVFVbI4wDIN9Uq1WS9M0xnqKouTuVlF3nyCIkSNHVv2L3/+p1WqFABwWbQicWK1WtVoN7ViQKRFZsVgsGHaxoYOqjVXLO9x/RxzBIrii7v7jjz8+Y8aMefPmJSUlIWUQCiFV63/7yTxlD9d+//13XABvbt26hf+eP3+euzB3Dnfkwd/cuXPn5s2b165du3Tp0vnz53/77bcjR47s27fvySefhNMJBIIRI0bovGzYPCVJElV+JBJJcXExSZJyuXzt2rVQ+UhMTFy1apVarbZYLEqlsqSkRKFQ2Nw5SUADVfidD3T3AV+wharT6YDnAHpUKhWoDsinpGkamA9+B6kHtVpdPQ7lggULEO5FmGPatGmzZs2Kj49PTU2F+m12drZCoTAYDE6nE3up+/btO3LkyN+BzHPu3DnYdsVt4bKyst9//52bSm7fvn316lXOUyr1BW/hPkdqf8g3QLpI0s3IyICLdejQQSaTcWE5VF/+0xtptVoUmhS7W3R0NCfIfX+ZrT+9mo9PgOOANWE0GjHRwOz9ZJ5KLdaXBy9evFhWVnbjxg341I0bN8rKyirSM65cufIwk05ZWdlDwn0fm+uf3s5buP+nF/TxCTqdrlK4z+PxevfuPX369MTExOTk5BUrVqxduzYnJ6eaZB5ujIY1+wzuK5VKKKDl5uaW7zNCF7lBgwZNmjTBENyuXbutW7cqFAq9Xu9wOHQeWm3DfQSQsJ7D2o6mablcTtP03Llzn3322S5duvTu3Xv48OFLlixBXjl4k0g6MZlMoGl66L7Hw7C2quH+5s2bkbBlNps96X/74X5ZtdpNdysrK7t58+Y9wOXw4cOXL1/GVTEQV+sO//tSLcF9lmVNJhNAv8PhIElSo9HMnTs3ICCAz+cL3A2FQtq0adOnT5/Vq1eDG22z2SiKIkmyavHg2ob7VqsVmYioyIsgqE6ny8/PHz9+fL9+/fr06dOxY8dPP/1ULpebzeaCggIkeBkMBiz7EUDVed/8cL8Ke7579y6HM7g3N2/erPQrKCRX6Ud1BfcxroLQr9frx4wZM3bs2NWrV0P9BtL1HNyvaOT3TP96vR5F3NVqtUgkKgf8f124bzAY/HC/Uiutq4PXr1/nbl1xirl582bFMBN3TjXePGJwH3ntarW6vLA0/BFsFKxgU1JSABSR84Np8R6Prtv/PuJwH9EFkiTXr18fEhJCEERoaCiAPl5jYmJcLte3335bdd5GbcN9jUaDouUGgwGJTWKxeOPGjaizEBERwXW7RYsWb7zxRm5uLralSJKESAKUc3ReNhjf/XAfCiGcIGBF/e9Kq3v64X41hkKEUm7cuGG1WpcsWYIRFqD/ypUruOCFCxfu3r17+/btCxcuVO8W+FYtwX3ImGDb1OVyIZ1o4MCB4eHhAoGAx+OhYjnncdHR0SNHjpTJZFarFT4FtQGdh1YRCdVSVV2wKRiG+f/sfXdgE1f27kiWK7YJoYYUCNWmGUKyCckvv002dUMCxNSwJMsmm10WCKGGZhsbcOg2YFOMMa6y1euoS5YrNSH0hNDBdAwYd2Osx+p7uU/PlhRLWLIhOn+Mx3dGM3dmzr33u+ee8x2pVCqXy9ls9qeffkpRlLe3N3EvpCgKoB/OEiKRSKvVKhQKwnxio/r2iq3C/cjIyJUrV8K6n5aWBut+QUHBH826v3r16kuXLpksBNAEsQrV1dXl5eWWAMXixP9v11G4jyXcR98C0CM3rcFg2LVrFwJhMblVKBTA+iqViowstm4KJ2NLuE8WhZpa921dpLXKVSoV2Dxpmlar1QjV9Vj3/z8dbaV/iKUJ9798+TIs/Zg819fXE/MTmW87UdNHhPutpbe27kvgvlAozMrKys7OxhhhC+7buk5rlT/hcL+wsFAoFK5fvx55iYODg7t06ZKUlFRQUCAQCFavXr1kyRJEKclkMr1eT9sQ0im7yJlHIpEQuI+JR05ODlaB/fz8evTo0a9fPyRppyjKy8vrn//8J2oiEon0er1EIsHQYqP6NovtwP2YmBgQAiab+b9hlPVY900tKuhblUplUFBQSEgIm81Gn2syme7cuUPMmQ0NDQ8ePLBcZnW0Fi6C+1BaiUSC5KBI4jNq1CiKonx8fMLDw7lcrlqtjo+Pf//99wH6O3XqtG7dOoQ8CoVChAzaUlBXw32kVQd9CggE09PTfXx8kHC0Z8+eL7/8MvGdoChq6dKler0ebjUvJD0AACAASURBVDxarRZwXyQS2aq/nXI7cD8uLm7btm1YS9VoNH9AuE9RVKdOndauXVtVVYW1r6YKX19fDytD00OkpLXgPpZeCc8GwuywbIuFXEvTvv2xH3BfJBJlZWWx2ey+ffs+dnAfBiwC99EPeJx5iJa24g5aUHV19dKlS+Pi4h48eIAW18hxzukaPmFwXywWI5YGcJ/NZnvgPtEN4sJDkT0cc5szj8IcbBQYGNipUyeKosLCwgoKCjgcjkgkglsS/HG5XC6Hw8nKyqJtiKvhPgnOgOEHhAlcLvfjjz+Oj48vKioqKCjg8XiTJk1iMBiBgYHPPffczp07CfKQSqXwRrBRfZvFtuA+IQRMSEjYuXMnSffjgfsmF0haWhpFUe3bt2cwGO+8887BgwdNJlNVVVXTVuP0zV0E9+VyuVarValUPB4PZB1Go3Hy5MlYjBo9ejTIW3U6XUpKypgxYwIDAxkMxhdffCGRSFQqFajK7fAfuxrug2UMBCwSiQQNbeTIkePHjxcKhcidxOFwxo4diw80aNAgEDIKBAKQnKjVaky2bbYxGweswv2oqCikst62bVt6ejoIH5Hb7siRI38c3/2AgADMskJDQ1UqFebAZWVltbW19+7dI4gEC192GoWjcN/Gt3K4WKPRIJtsQUGBRqNBmiqRSKQxC0JdLVG+nRtIpVJMRwH3EfULxNzUum/nOq1yqFGo7vjx48lCnwfum1pPiOUeVaiqqgoNDfX19X3jjTcOHTpkMpnI8nJlZaUdZ7nffYJHhPt0GxOxWAwfVIFAkJmZCbhPFoGbOvO0ser/tzpPsu8+n8+Pjo5GF/Pcc8/t2bOnqKgIOc9Bh4z0IjRNkx2rX8jVcB8mH7CYgRRCr9fjpsDxfD7/4MGDWVlZPXr0wONEREQgwJysDCCu12r9bRXagfvLly8H/zfS/eAVeeC+qaWlurpaoVD4+PjAC7B79+6+vr6zZ88+ffq05eqqpZ+lE1VwEdynaVqn0+Xn54OHG2wkEyZM8PX1pSjqb3/7G5zjweK6YcMGGCb79u0rEAj0ej04Ae340bka7pN2sXv3bsTpFhcXczgcjUYjEokQsmIwGNLT01988UW0u+3bt+v1ej6fj/ypEokENgVyqWbu2IH7SHaRnp6OHE9/QLiPETQ4OBjvfPz48UePHiVqX1FR0RxPHiwLVFRUlJeX37x5E7kmTpw44eXlxTTLQ5et2NhY59ZF7X9lg8GAJSCQ5GALwhD49cL8j9HXznRXLpdLJBKhWTIzM7Oysh5HuE84Rjxwn+hw6+5UVlbClkSg/PDhw9HWKIpatGhRZWVleXk5PEgbWZ0cqvkTBvdB9CkUCgH3s7Ky8NIwrnngPnSj1az7NE13794dn2TXrl20WeB3i1wGMpkMWESr1dqBHW6D+wBA4N4BeEIMMdyFH5I6f/jhh9Ctv//972q1GpMBzFWcsDLagvvg/7aE++D/8cB9hzq7Zp78cFJKnMVJn9ujR48tW7ZUVVXV1tY+ouO+yWRyEdwHUtGbBfsqlQq+7xRFTZkyBd4+SJ2jVCrxdP7+/iB6Qh4iO6tqrob74DzJzc1FlnIkMdFoNODkEYvFHA6nsLDw4Wz8tdde69ixI0VR8+bNQ14k9AlYpkDH4tDWKtxftmzZ9+ZU1tu3b8/IyADcLyoq+qP57iNwgqKodu3aBQUFURT11FNPzZ49+9SpU8SljezYgf6OWvflLSTQW7lcTtN0Tk5Obm4uj8eDOZ+macLthmA++LrYurNDcN/WRVqrHK56BO6PGzeO9G8e634zRwcXnVZfX3/nzh1MhhsaGl555RV8GuClwMDALVu22GlZzaxVg1lIepC6ujqkerx58+bFixcvXLiwfft23BeohqScg5tDa+mtrfsSuM/n8zMyMn4X7tu6TmuVP+HW/bVr11IU1bFjx4fu79nZ2SKRCNlS+Hw+eHiEQqFMJkO+ccS8Wh2zXQ33lUolgnTh1QNSVXACZmZm5uXlIeeLRqOZOnUqRVF+fn6jR4/GAoVKpcrPz/9dkhNbz6VUKpuG6pJ0P4mJibDue+B+Mzs4R0+7c+cO4H5AQAAJJYd1nKKot99+W61W45qPYmVxEdxHSlGRSERwuV6vR0BecHDw6NGjU1NTYeCHmz5FUR06dHhI+4W4WKPRaDAYrGomCsllMZcAEa1QKORyuRkZGaNHj8aSCEVRISEhQFd2rmb1kFqtRjohcO8gANdgMOBfBMZotVrMYQICAiZNmoS8hrDro/ewemX7hfbhflJSUkZGBhr4HxDuI0LJz88PIMDb2xst4tlnn01ISEBMC8EidkIJWwvuY4EIRBFsNru4uJjH42GMl0qloPZH2B96fjvDv0QiEZgF1v3evXsTxNzUmcfOdVrlkAfum9qwkBXj+vr6V199lclkBgYGQrtYLBZFUQMGDMjKynqUJ2gwy5ME98VisUAg8MB9e1l1GyEVt/nuf/bZZ0wmk6KomTNnwpBvNBqxzGp/MG501NVwv9HtyL+wvhcWFnI4HIPBIBQK33rrLTTI+Ph4GIfy8/MRgSAQCMgPm7ljy7oP332E6lr67u/evfuHH344ceLEyZMnS0pKysvLy8rKSktLq6urLQfdurq62tpaslBo8ojdN5CZmYnYVnxZaCyADkVRQUFBEydOLCwshEM/roQGVV9f3+gll5WVoRMnYAjnuwjuwycB7oCA5iqVKjw8vH379hRFjR8/HrmEDAZDYWHhmjVrUB4SEoI04EjGaccJzQ1wn7YmgPJ8Pp+macxJpkyZAgw6adIk8PbK5XJkRUHuQ2uXsVdmFe7PmDEjNjY2KSkpOTk5NTVVLBYbjcbi4uKjR4+eOHECvvvIYX737t2ysjKMpk23psdcCKK1uhMWFgaHfkS0WzYB2CzJ0yP0sLKykiR4gTMPyGEf2k1Wr15NMq5gvRcUCMQAL3GLYJWp6TYzM1MgEHC53JycHGRZ7tWrFxz/kOBFq9UajUZQNsPzxy31deAmAoEgPT0d2QPGjBlDPmjnzp1nzZq1ePHiZcuWYRk5KSmJw+FIJBK9Xr979+6DBw8eP378zJkzly5dunXr1p07d5BarlEqhsrKSvK5EdQBVoN6j9h+A2gyWB+7e/duTU3NG2+8gRGHwWB4eXnhMzEYjE6dOvXp0+fQoUMYcbAagBduOeKbTCbiIGRZ3hTuI9vSrVu3Ll68eObMmcTERDKlpygKZiC1Wl1UVAQ+wDbVHrOzs+FjmWWWnJwc2JuwGhkbG6tUKjGZR6COA+3EXafCYxyLJ8QzHHGt3377bWRk5LJlyzZs2LB582YkfpHL5UajEXkef/nll/Pnz1+5cuXmzZt37typqqoiS6ykDZpMplZz5vnggw+gu1FRUVKpFDx6jxHcFwgEbDZbpVIVFRXl5eWlpKR06NDB39+/b9++aWlpcAkFm5vRaERAGO2IOAr3CwoKAPd//fXXy5cv3717l4TyAFCiU2g0u7NUBc++5RsANEev4eXl5ePj4+XlBdJ6f39/2Pvh5zNkyJDw8HDC1UNirRoaGlCITrampgZdOTkTt3Mz3Eeo7sSJE4VCoVQqNRqNmZmZb7zxBjrHiIiIzMxMo9GIVX6gatqatBbcV6vVYrE4Pz9fKBQWFBTI5fK//OUvGAKjo6P1er1IJJKbXTWQp91a3X+nzCrc37hx4wazbN26FZ5FarVar9f/+OOPhw8fPnny5IULF27cuHH37t2KigoSsWp64oSAwkY7LBaLpEwJDw9HfAuaQF1dHclTgWlAVVWVLbjv7e2NxvX9998TH0hkoiUpFDFsN4XgriiBd37TrVgslsvlfD6fzWbv2LEjLS3t2WefRWCDl5fXpEmTaJrWaDQgn3BFxR7xmvBT4nA4iNkdN24c0nFQFGUJ99euXZuYmJiUlJSTk+Mo3Ifu15jl3r17nqGnOZ2BJSLH+X/605/Q1phMJkz7+NfX17dTp07BwcHTp0//4YcfyMXv37+PgaayspL4mtbU1JAEeTizmXA/ICCAxWIxGAzAULFYDJ5xNEYsiLWF9iiXy7lcrkgkysjISEtLS0lJIS/tYauMiYmBTRlVxSDyiC2oZX8OHxD0KjRN9+vXz9vbGwz1YWFhlnB/06ZNSOv+OMH9QYMGAe4nJSWJxWKdTic3C+2gtKJ1Pz8/Hz1+dnY2iUPAYsXevXtlMhl4ANFOHHws2lG4f+DAgZMnT545c+bcuXMlZiHNu7a21rITATc22rxna/8NSKVS9BpBQUHgrsGI7ufnRwwtFEUFBAS89NJLSUlJBNZUVVWRd3737l1LiP/gwQMyJXCd774t6z4eZ+rUqWC53bVr11dffYXCt99+G7wlyDyKSbgtvW0tuI9kuggmBt8/MYQgczCHw4EHIJ/PJ/6mtp7CarlVuL9y5cqoqKgVK1Zs374dJluVSmUwGH788ccjR478+uuvJSUlt2/frqysrKurs7Rq21ewx+4oVKXpFgtf8OnH0Tlz5kDtiaGBZAiqrKysr6+vqqqqrKy8desW0rcT6z5sisuWLUMyLKlUyuPxMLhiSQrgG440rt7ybYjZhpiVbpbk5OSdO3eSkHEGgzF27FiBQABeLJFIxOfzXV1PR6/P4XC4XG5WVhayRk6cODEgIACm0EZwPyEhYfv27Tk5ORimi4uLf/zxx+PHj589e7akpMSWdZ8ATWLyt+wDHzu1d1uFsQBy//59sgg8dOhQNKhGcJ/MLVks1sCBA9euXXvr1i3U07ILKi8vJ0jActxpJtwnS9kymUyj0WRnZwsEArhuIqeVSCRqC+2RzWanpKRkZmampKSkpaXt2LGDLMUzGAx0JlKpVCAQZJlpcx1tL64+n8PhCIVCPp8vEok4HE6/fv1IH0vgflRU1EPm+o0bN2I5EXF3e/fuPXTo0C+//HLhwoWrV6+2Uev+008/DcAEWJybmws/Y9pBaS24z+fz09LSVqxY8Y9//IPMuefPn89ms/EZMP1VKBQIBXPwsZyB+8D6ly5dKikpOXfu3O3bt2tra+vq6u7evXv79u1GizvEac+zY/UNVJglPT0dH7dRUirSFElHjJ0RI0YolUr0uXfu3ME7BwREIbaWcNDN1n3Us3///p9//vmHH37YuXNnlEyYMEEoFHI4nIKCAoSpyOVyO3C5teC+QqHQ6/VpaWn5+fnZ2dlZWVn+/v4sFqtz585w3BcIBAaDASmEnFhVo2naKtyPjo6GpXPHjh2pqakINDIYDD/88MPhw4exlnrt2rXbt2/fu3evvLzcqlI9AYXQlqZbAvdxCMb+5557TigUohUQtFdWVoY0dpWVlRUVFbdu3bp+/fr58+ePHz+Oi3h7ewcHB0dGRiJ8SyAQpKamYrgF9uaZhdvaAsSfmZmZnJy8ceNGwswTHBw8adKk7OxshUIBJJSTk9PalW18f4FAIBaL+Xy+WCxOSUkZPXo0CcIG3F+0aFFUVBTyOW7bto3NZoOUoplwHx0dfEctvXosu0HPvp03ALj/4MGD/v37k+aG5WXyL3YITdZbb70lFArJ266pqWm0zGg57jQT7pNbgJo50yxk+tqm2mNGRgabzd61a1daWlp8fHy7du3Ii1qwYAHyzMClB254jZtEq/6flpbGNguHw0lJSRk6dChpj5Zwf926dfHx8QjalEqlBoPh8YD7ZKqal5cnkUjg/q5UKmkHpbXgvkKhmDp1KsYnOEhs3LhRq9UWFBSAjxm2EHCJAEI59GSOWvf1ev1PP/104sSJkpKSy5cvX7t2raam5urVqxcvXty7d6/InFk6JycHRh0ej2fDaOUp/r9vQKFQ8Pn8+fPnIw2cpS0fnuK+ZrFEOYhZDAgI+Mc//nH48GGThZCFbMsOF8fdDPeJGxLpCp9++ukpU6YkJCQcOHAgMzMT2guvdztpqloL7mMFMz09PT8/n6bpGTNmwGE6PDwc66FKpTI3N1cikeTl5clkMocaHU62Cvfnz58fGxu7fv36devWpaSk6PX6oqIilUq1ZcuW7du3PzTupqens9nsHLNwOJwntSERtWm0Q6yApGPHCSwWa8SIEQhqr6+vv3TpEiDI/fv3AfdBxGkJ9xnmlM/jxo2LiIhYsWLFqlWrli1b9t1vssAs880yz/WCGzXdLly4cObMmbPM8s0330ybNq1Xr14YCHx9fUeMGDFr1qzIyMjo6OjY2Njly5e7vqaO3eG7775bvHgxXur06dNHjBiBfNvEmWfRokWRkZGrV6/euHHjli1bsrKyQFBRVFT0ww8//K51v6qqiizmYJ2T2K3ve8T2G6gzC0lgV1ZWNmLECARWYdxphPjJANS+fXvsjxkz5sSJExaDj4msM5Mpt8lkcgjuBwYGfvvttwjngEr/1hy/ayPtccGCBd+aZdq0aXPmzJk2bVqHDh2wCO/l5TVx4sQFCxZER0dHRUVFRER89913jrUW158dExOzbNmyxYsXL1y4cPr06WSpEL77s2bNioiIiIyMXLt2bVxcHPKrwrluz549P/30U1u37iMki8FgEDd3qVRqx5poa9huLbiv0+n+8pe/MBgM4KeHxBQdO3acMGGC1hyhhXgyMJ+IRCI3wH2j0Yhe+OrVqxcuXLh58+a9e/dEIlGnTp1Ij0BGaDJxJCWenUZvwNfX19vbm6zbAO4HBAT4+Ph4e3v7+Pj4+fkFBAT4+flZvl4vLy/gnqeeemrp0qVNPSYtl1PRI7sZ7qPdgRGrT58+xDI0bNiw//znP/v27ROJRGq1GgpshwC3teA+kp6C31ahUPTo0QMYa8uWLXAk1ev1Wq0Wlkgul2ur37BTbhXur1+/fsuWLZs2bYqPj4elc/HixWSdHQvrTCaToN5G6vRH+NfHx4c8vq+vL74LHjwoKGjq1KmWKOT+/fuEd//atWvnzp07duwYg8EgXZOXlxdcV3FNn9/E2yys38TLxfLbfaz8Jd+UxWKRdoTaYsZCTgBQc3FNHbs8NBYRO4RtDBUm1v3IyMhVq1bFx8cnJiYiNFmtVhcWFjYH7gNQmkymAwcObNy4cfbs2f/+97+nTZv2jUfsvoEZM2ZMnz7966+/njZt2vz58+fOnfv0008TRUK0LtFFjEr+/v6k1YBBrkuXLv/617+wqnbjxg0MNOfOncMOts2E+2R0g4aTG/3WHP87GmKgRK0c00LHzybP3miHvCKwI5L2iPLg4GA/Pz9S+bbZHlFVFotFWJiALcPCwgD3IyIi1qxZs2HDhh07dmRnZ8OgvHv37scA7pPAR8SzItOhHXhha3huLbhP07RIJBKLxRs2bJg2bRoZk/7973+rVCqdToecXAKBwLl0P45a9w8cOPDTTz+dPHny5s2bp06dunnzZklJCakYQJ6liRqt1LO19QZI2/Pz82OxWMAuTCbT19eXzAEsu5imVvPAwMA//elPRqMR3SssKw8ePCCWfpS7H+537tx5+vTpiApKTk7+4osvUHlvb+/ExESVSgX6S5qmc3NzbbW7VoT7NE3n5+dLJJI5c+YgWvq99957SMCvVqsJgbrcLFKp1Fb97ZRbhfuRkZErVqxYvXp1UlISTdNsNnvkyJGWCtBoH4s/Tbe29O1xKW/0mJb/+vn5waJGCgn6x0AbGBgYFxdnMpnu379PiDhv3LhhCfcRFo+wUUANzKvJNdvIDiAyAUOoVSPLK+EGaXRaG3kEYpvA6ODr64t+oEuXLrNmzVq4cGFERMT3338fFxeXkJCQkZHB5/MdgvvV1dU//PDDCy+8QB7f0r+ijbyEtlYNFotliUrJG7P8WNCrpsYFSw4JBPLu2LGDpLQzmf6fmb/51n2gakwzMJdAC21r7w01JB0Oquft7Q3obGl6sDp8t/rjBAcHo2KM3wQxgZbW/YiIiNWrV69fvz4pKQkmJ51O93jAfaAoLy8vsVis0Wi4XC5iB+0Mw1YPtSLcLyws3L17N4/H02q1W7duDQgIAJ7esmULbJBg5dfr9XIzVYjV+tsqdBTu79u3b+/evcePH7958+bJkyfLysouXbr03nvvET22HIoamXPIOZ4d8gYwRLFYLLwrQrGHExgMBjFmYAdDpr+/P6Ek9/PzCw0NTUpKwloqqH6AdUwW4ma4DxUdP348uHc0Gg1N0zNnzkTKpA4dOmBQl8vlGo2Gx+PZ0s/WgvuoGBwxwYVCUdTWrVu1Wi3s+oijReh/YWGhrfrbKbcK92NiYpYvX7527dq0tDSapuHuTHAMPFhYLFajUZmo0x9qB0Z6S+MC+sbOnTuvWrWqoqKCQJB79+4B7p89exbWfbSjoKAg0o7w6vBuYQ1kmuW3YdG1f3GvplvUKiAgwN/fn6gBHhlzFeAPHx8fHHVtLR2/OnmrjRDSw9ZkFe6np6fzeDyVSuWQdV+r1YKwmLwix2v6h/sFIH4jE28jcgjL/oTFYvmZhQxSZP2Zoqg33nijpKQEdJwWw45jzjxY04ZRnGgOMc23kfbIYDAA68l8iazPYxAHxRBZM2xTikU+KFqK5Zxk6NChs2bNWrp0qSXch3OdVqt9POD+sGHD0DnGxMSg0jwez2g0IpM5n8/HQjxAiUKhsDU8uxruG41GkUhkMBiQmUWlUiFbJ/gWkOsH1Zs8ebKPj09QUNDo0aPhPczhcPLy8kAabav+tsqVZmmaZssW7/6ePXsOHz586tSpCxcuXLly5erVq2fOnDl8+LCfnx/CTKH6MAk07eKJtnl2LN8AzF2WsyMS20r61oCAgKCgINLF4OfdunVbvXo1llMtO9mm+26G+6je2LFjCwsLFQoFElcbDIY+ffqgo1m4cKFUKtXpdLm5uXZ4610N9xFri7aDLaEqMxqNaWlpIBRq167dmDFjNBqN0pwOT6PRkEyoarXaYDdTmK2mZxXuL1q0aI1ZVq1aBQbeyMjIvn37wikCYNRSc57UfaLnTCaT7Nt6WCaTSUJf5s+ff/78eeg/yKnKy8vv3r175cqVkpKS06dPHz16FP1Sowm25chn60auK7eFCXBHUrfnn3/esoTJZBJ/a2IycF0lnbiy5SolcfvG43Tr1m327NkLFy5ctGhRTEzMhg0btm7dmpaWxuVylUplfn7+/v37jx49evr06YsXL16/fv3WrVvI7HP//n3Lpctr164plcquXbsidQlgFsGInh2rb4BoEYjgiFnay8uLTJlg3ceZxPxvqWZBQUFoSm+88YZCoUCjaxS228iZp7a2tqysjNBknT59OiEhwTKjfJcuXXDfpuvYTqhfi/+EzI7w4MQDCl49OEoMEOSttng1HuWCwcHB6FGfeeYZvPmAgAAGgxEWFjZz5sxFZomNjV27du327dstnesOHDhA2qMtpizoQKvx7mOkfDj137BhA0lYi0SYOp1Or9fD7iiTyRQKhR3Y4Wq4LxQK5XL5nj17tFqtWCyWyWRI5YNAPaFQCPYPjUazbt06fOwXX3xRKpUqzWHHsDI6ETLoKNzfvXv3oUOHTp06hS749u3b169fv3DhAj4z2TZq5A88YuMNmEym2tpagUBAhm2C7xutt5IWDn+Mjh07/uMf/zh48CB55/Z33Az3gaVGjRqlVqtFIhFY1SQSyaRJkxgMhp+f38iRI2UyGZfLBWsHbUNcDfexIIbmbzAYtFqtQqGALWDPnj3bt2/38vIKCAgIDAyUSqUyM+mtTCYD6IeNAE9no/r2iq3C/aVLl65du3bTpk2JiYnZ2dm5ubkGg4HP5//www/Hjh07e/bs1atXb926de/evdra2oaGhnqzQLnQ6ExmsaFuj00xtB3YwtvbG+YDMo4SO4LlWuKECRMKCwuR3a+mpgaI8P79+7bgPkVRCH1BQhyj0ajX67Fe2na2yDEEZv2MjIykpKTBgwdjbtOpU6eJEyeCBVyn02Eu2nZqjpoolUqNRqPT6ZDPfuLEiZ06dcLHbSm4D4WPjY19++23hw4d+tJLL7355pthHrH7Bt55551hw4YNGTJk8ODBw4YNe/PNNzFNwqdBQAuZZKLQEpR7eXkB6T799NPJycn4BISIk6wwN3XmsQX3cYuuXbump6dLzUJYCtqUSovFYqFQCA/VpKSk9evXd+/eHYNdQEDAd999JxQK9+3bZzQaxWIxwkTbVP1pms7Ly1Or1Xw+PzMzc8CAAWQV4kmA+5MmTaIoKjAw8PPPP0cWFXwqLpfL4XDA+Q3XW61WayeE19VwXyaTIfoWWoLue/fu3Xq9nqbp1NTU/Px8Pp+v1+vz8/NJ8xOJRDqz0M6KE3D/8OHDv/7664ULF65fv15eXl5VVUUIAS0BB7oAz9b+GwCDvkAgwDcFsiT7lhYOkhiIoqh33nmHOOvfvXv33r179u/ift598G+MGjVKo9Eg97NGo5FKpStXrkR77Nmzp06nY7PZ9tNUuRruo1Yg5wVgomlarVbDoyA0NBTfIiIiAgw8EokEpOyYaWu1Wp1O14JEnFFRUStXrty0adPOnTtTU1MzMzPlcvnu3bvBg3bq1KlLly4hzVZ1dXVT/qXfVYPH5QQs6GMcJd2dpbkxMDAQOhYQEAAizmvXruHpCNqorKy0Bfcxu2YymcuXL0foCDiO6FYSQJymW2RckUgkyAmQmZnZq1cvvBAWizV+/HitVotpqkQiEQqFrVR9m7cVCoUSiYRUcvz48QREthTchxPj7du3McFDBmWMRJ6trTdgmaDdZDJdvXr1rbfeCgwMtBxx4Dro6+sbFBRkua4Ih8ynn3568uTJhOu2uroaqQ8sF16aD/eRO++pp55SKBSFhYV8Pp/D4Shse1vYVDgXH5CYRSAQAEzu2rWLmPC9vb0jIiLkcjmsBmqzuLg6Tl4eznJ6vX7AgAHoTJ4Q6/6SJUvgndmtWze9Xp+dnQ1PHnBmS6VStVqtUqmA9bOzs229P1fD/dzcXLVaLRAI4KOfm5uLWEaVSqXX66VS6Z49e3g8nl6vNxqNZCxUqVQas0il5UWZgAAAIABJREFUUq1WC0u/rUewWu4o3N+7dy/S/Zw9e/by5ctlZWUg3a8yS01NTW1t7f379+vr6xEt+tiYE1uvoiaTKTs7G87EWGXz9fUlK6r+/v5kAZGiqOeff37Xrl0ms4BZHPu/u3WzdR+dyNixY/V6vUKhgIVPKpWuXbsWj9arV6+CggKxWKxWq41GI21DXA33kUgLmduFQqFAIKBpGk1p7NixeIqPPvoIecFIK5OZBXWDyd9G9e0VW7Xur1ixIioqatWqVampqYjRp2naaDQePXr0pDml7pUrV65du3bjxg1Q79ebBcprOdluPXVumTujORArviXQpyiqffv2BJcsXLjQkvivpqaG/GvHmQcGcoqiFixYAL8smUyGsC6M027eoh9uupXL5WyzpKSk5OTkZGZmhoSEwM7q7e39ySefYGBCqElRUZGbq/27tysqKsKEH43lk08+weIkRVEtBfcJAbzJQmzBXE853kB9fT0ITAmH2/Dhw8nqGfq9ptsOHTpgMPrkk0+QYRdrjOTFl5eXI2aGlOB2pFOwZd3HwOfl5cVms7F2Cj6V31UwN58AiJWenp6cnMzlctPS0tq1a0cW5KOjo+GMLRaL4aTq5ur97u0Q4SkWizEu9+7dm/S0T4J1n81mE9fPpUuXYuKIXlUulysUCkueDbFYTNsQV8N9lUoFJnK1Wq3T6YTmVEQikSgnJ0coFGL9QSqVFhYWbty4EV+ob9++sP3Demo0Gp1gCHEU7u/bt+/YsWOnTp06ffr0uXPniIEfDL9PsLmR9F+u2ElNTbUENIAyJIMybJydOnVatmwZ7l5TU0O66fr6epIZ0U7dWgvuq1QqgUCAXIlSqfTrr7+Gcejjjz/W6XQymQwNkLYhrob7arWa5PnicrlIoaXX6zdt2oTX3rNnT4FAAMM/AmwkEglWADQajUKhQHpCG9W3V2wV7q9bty7WLAkJCTk5OWq1Oj8/v7i4+ODBg8ePHz937tzly5evX79eWlp67949YsY2PXFiCTV8fHyCg4PhYEpcQRgMxj//+c9ff/0Vj47suZYvBDjDlnUfg8JDS3N0dDQ8uKAGsN65fyuzIRqNBp5mPB6Py+Xu2rUL7qnBwcG+vr7h4eHgioVTnEwmc3/N7d8RXqlcLlculxsMhvDwcF9fXzg6twjct+z6Kioq7t+/7xmDmtkZwBh/69YtGOxCQ0Ph18FisdBFow36+fnhe8F9f8iQIVwut6qqyvI9V1VVWaJ8SwN/M+E+7uXt7Y2sC/n5+Wq1Oisry752uf8oTdPIcZSampqdnb1t2zbUHAyQa9asMRqNQqEQWVC5XK77a2j/jnIzm4tcLseK9IABAxBY/IRY9wsKCsAb06FDhx49eiActri4WCwW5+XlQatAdimTyXbv3k3bEFfDfaxbqdVqpAPjcDgGg8FoNCoUClhuRCJRfn5+Xl7elClTMFaNGTMG3sMymQwuPbBN2ngC68WOwv09e/YcO3bszG9y+fLl0tLSsrIyS4u+yULQ2j1bW28AnaZIJCIWO3QfHTt2JL0tg8GYOnXqqVOnqqqqyJop8p9bdqwWb93KbqvA/U8//VShUIjFYjiqSSSSPn36wIa0ZMkSsVgMQ46dabar4T5Qlk6nQ3A8mtjOnTsxwj1cyN6wYYNcLkdUDyLp4cBDyHxbNlQ3Ojp6/fr1CQkJmzdv3rp1K5vNRvPfv38/QuQvXboE9/3y8vKamhosoz0wi6Uy2NK3x6Ucyg+7RlOXng8++KCwsBBabmncBegnM+Hq6mpbcB+hz+3bt1+xYoVardZoNPisdCuJLQdfpKSVyWRsNjsjI2PHjh0DBgwg/gN//etfMWdGC8JY3kpPYP22qBKi0XQ63V//+lfyZVsE7pvMcu/ePUsLSGVlJVqEZ2vrDZAVMLxAk8kUFhYGkntfX19i5kfYDD5Z165dV69eXVpa2tDQgCaGLbog8iEarTmjwyHVsGXdJ6vZWq0WAUtITEu3MQExJdbcOBxOcnIyAsTxiiIjI2ma5vF4AoEgLy/P4BSFg0ufODc3t6CgAATuD23KISEh+NZPCNxns9kSiYSiqK5du/r6+r755ps6nQ7uwkVFRWKxOCsrC6Y7gUCADJpWX7er4T64PtRqtV6vFwgEKpWquLg4MTFRKpVqNJr8/HyxWMzhcCIiIl588UUEysTFxUkkEtCJwAXZie7eUbifn59/5MiR8+fPXzDL1atX79y5U15ejix9981iCUFQ4tnaegMms8CZh4Ab4Bt/f38vL6833nijoKAALpIkpwx2LO0ruI6drfvhPpPJHDNmDPJdqNXqXbt2gcCeoqgBAwbAWQVOdHb01tVwH9NpJPySy+XFxcUpKSnvv/8+sn5++eWXINoXCAR6vR40WQqFwmAwaDQaRB+CX4h2XKxa9+fMmRMbG5uUlJRuzp6L4JyioiKksj579uzDNBfXrl27efNmWVlZZWVlo3ZHmp4tfXtcygngsMT6Xbp0efbZZ7ds2VJRUVFTU0OARXV1tSUfCHx40BZswX1YTLy9vRctWgQwCpczRRsTdOxSqTQjIyMtLQ1w38/PD+9n3Lhxubm5WNQFtmhj1VfQNI2KYd1s3LhxhGaxReA+YCu2VVVVDQ0NMIjY6Qk9hxq9gYqKitra2pdfftkSubYzC1Ask8mMior6+eefLQegBw8e1NbWInCivr7+3r17pA3W19eTWzQT7vv4+EClQeMmM+cpJ54XbUer4fgHSvecnJy0tDQkycHYvWrVqsLCwvz8fIwaCAlrO5Un71ZgFg6HExoa2q5dO39//ycE7oNu//vvv4fiYiXxq6++WrJkyeLFi8eOHfvFF1/weLy8vDw+nw/HLNqauBruky8BO2J+fn56enrv3r3fe++9GTNmxMbGRkdHT5kyBXRjDAbj9ddfLyoqgl1fJpPJ5XIul2vHB9raM/23zFG4r9frDx06dOHChctmuXnzJqyMmL43tR2aPPJ7b6CmpiYrK4v0d1BUiqJ69eqVlJSE5WnLNWsgPFy1oqKiOXG67g/VDQgIgG8xTdNisTg5Ofmzzz5DbCVFUdOmTcPCFHziYZukrYmr4T7c4WQyGUIh9Xr93LlzCQfFlClTpk6d+s4774wfP3706NHh4eEjR46cPXv2rl271Go1idAFu5e16tsrswr3o6Ojly9fvm7dOqQ4EQqF8Oc5cODAkSNHTp8+DbhfWlqKQRotzvTECQI6GQxGUFAQLH99+/b98ssvyRQXrER4bvjwIHsueRN1dXX19fW24L6lu63BYMDaDpgbWmV4ltkWHo8nkUi4XK5QKMzMzOzXrx/pIiZOnIikKwiAEYvFrVJ5OzcVi8VGoxEOzXl5eZaMzy0C9/G50T3ii0MZiDnZs2P1DQCa413BSP/nP/+Z6JWlZ+n48eP37Nnz4MGD6urqurq6Bw8eEDSPF97Q0EAaHXYsS5oJ9ymKCg4O9vLy0mq1EokErIlwY7OjXe4/hHU2iUTCZrOzsrLS0tLIS2MymQ8zoMMCi2AwZD51fyXt3JFY1hAdikAgLHU+Cb77SqVSq9VmZ2fPnDkTcQkURRHY4ePj06dPH8QLikQiNptN2xBXw32k8MSyslgsNhgMKSkpJF28t7e3v78/FCswMPCll16yUU2Hix2F+3v27Dl48OAvv/xy/vz5y5cv37hx4+7du5WVlYjQJYOxySOOvAGZTIaPyzSLn59fVFQUjJfwVUBEpiOXbHyui6z7SqVSJBKhgxYIBAg3/+ijjyyDLEmHiKxhX331lUKhMBqNEokEnip2GBhcDfeLi4vBsZCVlaVUKgsKCkgPSKrdaMfb2zsvL89ozt2ByAQ7ZgLatliF+5GRkbGxsRs3bkxOTs7KyoIfVEFBAYg4z5w5U1JSAt99y2k2wuItR9nGn/9x+x/dHdGiiRMnHj582IkHrK2tvXfvXllZ2bVr165cuXLmzJkjR44AzWAWERsbC6uH7Q/VykekUinIoLKysthsdt++fclrmTBhAsyNKpUKrnGtXNcmt1cqlchkj9CICRMmoDWxWKxu3bp98803CxYsWLx48cqVK+PMWXWt8nxfunTJPs+3ySMOvgEC2U0mE9jhXnvtNXwaQgk9dOhQsVhseaaDN/nv6c2H+9Bqwo4IQmS6jYnUTMcsFAp5PF56enpWVhZWq1D55cuXAyiCyplg6zb1EGRBWyqVhoSEoOYsFmvIkCHz5s2bP3/+smXLli9fHhcX15R3/9ixY6dPn7506RIZg0B83NDQYDkPbDXefay85+fnS6XS2NjYDz74gOBm2PAGDhwoFovzzaKwTfzkargvEolUKpVIJKJpWiAQoCaTJ0/u1KkT8ikyGAwfH5+QkJB58+YRs+Kjq5EH7ptaWyorK3fu3EkYxD/66KPy8nLiqEB27t+/39Thsvl1dxHcJ0SWAByIXp09ezah28MQ8tRTT/Xq1WvIkCFbt25VKBTIJoFpNrxibGmyq+E+8l0gbQWmLkOGDCGm30ZAH//6+/unpaVJJJLCwsLi4mL4I9mqv51yD9y3o70URcGNJywsTKFQ1NXVwW3Azk+sHiJw//r16x64b0cbXXTod+H+d999t2TJEsD9xMTErKwsRMYjqy6BFx64b1W9nS6sq6u7/1u2MgwrQ4YMIauaHTt2jI+Ph6UJpgSnb9QU7t+7d+/WrVs3b968cOECSbMFAzNFUR6476KWSC7bTLgfHx+flJSErLoajaaoqIiYnNou3EcYLgA0qJG4XO62bdvi4+O3bdsmkUg4HM7u3bsRD56Xl0deSqMdV8N9cBfAPiqVShHqweVytVrttm3bYPPbsWNHTk4OvPkbVc/pfz1w39Ta0tDQwOFwfHx8Xn75ZeQmvHv3LipVWlrqHMpp+kwugvs6nU6hUICHGN7Per0+NTV106ZNa9asiY6OjoiIWLFiRUJCQnZ2Nix8hM0GU1zME2gb4mq4L5PJkHYE6XX379/P5XIR24Om0WhrNBqzsrKKi4u5XK5CoQD7PjxNbTyBzWIP3DfZFiaTGRwcvH79ehgIgUicWDysra0tLy+/d+/e9evXr169evbs2aNHj3qs+zaVsqUP2IL7Xl5e3bp1mzVrFuB+bGxsfHz8li1bbMELD9y33VacP4JYdqR6fOmll+A4980335w4cQLzAVz6UQz8jeB+XV0dgfsXL148c+ZMYmIizCgwM3vgfks3wcbX+124Hx0dvWLFio0bN+7YsYPNZiPHa1FR0Y8//nj8+HHEjzW17sPAD4VpNes+tEcsFvN4PA6Hw+fzMUJLJBLw3CGtAwj4pVJp43fz2/+uhvug21cqlUajUavV8ng8tVqN/C8CgYDP5wMqIUmhnWnJb/Vt7l8P3De1AcnNzd20aRMWVWHOr6qqKisrI1ifJDRwurIugvsIc4fzPejq4T6n1+vxr9wsSqVSp9Pl5uYih65CocBRidmfB/EqVlXW1XBfLBYXFRWBBUJiFjiM2mJKKSgooGmaz+fv3LkTqwHw/rdaefuFHrhvR5mnT59+69Ytk8mErclkIstcdn7V9FBdXR3g/o0bNzxw375CuuKoHbjftWtXwP2lS5d+//33Gzdu3Lp1ayO4f/z4cTiweeB+U91+lJJG8+fS0tI333wzNDR03759MDZZOs6RdLlO3LEp3C8vLy8tLb116xaB+wD6HrjvigbY9Jr24f6CBQuio6OR6jE5OTk7Oxt0ESCDPnHiBMigkfiloqKirq4OqtIm4D5i3QoLC4uKisjArFKpDAaDUCgED6BWqwVe4XK5Td8OSlwN90UiUV5eHnJmIa8W5h4I8dZqtYh24vP5IpHIOV9hq4/mgfumVhWQGqEKDx48AL7HlnS4NTU11dXV5F/n6usiuI+oIHg/I2UVcj8LBAKkr4aC0TQNUnCaphUKBbLFgbNMJpMVFhbSNsTVcD8nJwczFuRs12g0eXl58Ly0GvAkl8uNRiNSduzdu5eQ5Nqovr1iD9w32ZWGhgYSoY7YFWAUuz9qfLCurg4hvDdu3Lh27dq5c+eOHTvGYDCYZnnoveDx3addKb8L9xcuXLh06dJVq1Zt2rRp27ZtIDrUarXFxcWW1kQP3G+s2S3xvyWdzsGDB2FvIhd+8OABKLZJiRM7jeA+QucB9y9dunT27NktW7Z44D7tRrEK9728vOC7v2DBgpiYmNjY2M2bN+/cuTMnJ0cikej1+t27d//0008///zz+fPnr1y5QuD+/d9cwixZm1rTui+Xy8VmAYDGKC6TyaRSqcFgAJEZgL4dn3hXw30kPpDJZEDz8IGWyWRkbQvGfpJUpaXUwwP3nejCWvAn4Eaora2FoyR8D3B9ECZYsgo+yn1dBPeB44GYkbIqJycHrDvAxJivItufSqWSyWRCs2CGIJVKxWKxnVU1V8N9gHswn8Bsj6UGmQ1B+nGJRAL2RgT3K2zH/NC2xQP37ehzaWkpjtbV1SGnD7hB7PzE6qH79+8D7t+8edMD92m3S3PgfkRExOrVqzdv3rx9+3bAfZ1OB7h/4sQJpG/3wH2r6u10ISHNJFe4evUqwnZra2vr6+tBwgMMZ5lCi5zfzJ2mcL+iouL27dulpaUE7iNo3mPdp90i9uH+d999t3z58tjY2ISEhJSUFA6HA5y8d+/eQ4cO/fLLLxcuXLh69erNmzfv3LlTWVkJlAJlIBbJ1of78OFBchywg4nF4oyMDOQTLigoQF5bWy/c1XAfTHASiQTQB/gJJIZ6vT4/P1+hUOTk5MCbf9++fbbq6Wi5B+5DU1tri7UwOCXfunWLoH+TyQRbZv1vHMYVFRXO+TPg0VwE96G3Wq1WKpXC/R1sgGq1GjZyopCYZhsMBsS2ajQaOPxIJJLs7GxyWqMdV8N9MChj3S8/Px9ORyCFsOrPA+pbjUYDZh6ZTOb0UpsH7kMzbW3BoY6j1dXVTjjum0ym+/fvV1ZWlpeX37x58/r16+fOnTt+/DhM+x5mnkZtzRX/NgfuR0ZGrlmzJiEhISkpKTs7WywW63S63bt3Hzx4kDgPeOC+rWby6OVAbASrWTY0JHZ8lFs0gvv19fUE7peUlJw7d27Lli0euO+Kpmfrms2B+99//31iYuKuXbtIpvm9e/cePnz45MmTFy9evHbtv4lfmsJ9oietBveR7h4IAxZ9pEEGNJHL5XDbFYlEAoEAvvJWX5Or4b5Go+Hz+QqFIjc3FzTesHoi/ZZcLpfJZCR/px14ZLXydgo9cJ/oaKvsWPonEO8FmDNxCNzGJpPJMnuoE1V1EdzX6/UgixQIBFwuF9qr0WgwcYWBHzqGLWbdsKMThbeTL8LVcN9gMLDZ7IKCAtAEkYxLtpqMUqmUmkWpVKL+IM+1db6dcg/ct6PGBHw0NDTcuXMHZ964ccPOT6weAtyvqKgA3D9//rwH7tNulObD/cTExB07dnjgvlU1dlEhWhmx9Fv6zlVVVVmOTU5XwCrcv3PnTmlpKeD+1q1bPXDfjS3yv860crkczuGEiJM488C6v2rVqsTExNTUVC6XK5PJcnNz9+3b1xTuV1VVEXOkpYa0JtxvkVdJfJSBvGHLRAQwj8fLyMjo378/tJaiqAkTJrTITd1zEYVCQeiQKYp67rnn5s+fv3Tp0piYmLVr1yYkJMCFC/kRPbz7lmr9GO27CO67WkXlZsFdZDKZWCwWCAQ8Ho/L5WZkZIwePZpkhAkJCZHL5a6uT0tdXy6Xr1y5khB9MpnMOXPmLFy4MCoqCqSE27ZtS0tLAynhH5B339RCQnz3AfcvXLhw4sQJLy8vGPgf3XcfDApGo3H79u1Lly6dOnXqu+++O2rUqL/97W+LFy9GSoqioiIkyXJOP13Kuy8UCvft2ycUCrFsJRQKDQYDTdMkk4bBYEAQjk6nk5lznTrUBGzBfYqiunTpMnfu3KVLl0ZFRa1evTohISE5OZnAi71798JX+Ny5c1euXPFY91uoQbj7Mo3gfl1dXXV1dVlZ2c2bNy9evHjhwoXt27e3IDOPVqtFCNkScx7VyZMnh4eHjxkz5uuvv46OjkboY0FBAdwvlUqlQ8oMbwu0R6E55x2bzQaFKDyRHp13HyQWAoGgoKAAdigej6dUKpHWXSKRoIVmZ2cXFhYKBAJH64/YuaZwn6KooUOHfvvtt1FRUcuWLduwYcOmTZtSU1NBEmM0GgnchzNPaWlpWVlZI7hPbDQtBvetxs+5oRC2SWiJJeLnmaX5cN8NVXXoFvj8Hrjv7l7Q7fd7RLjvkFK14MnoznBBuVyO/o7P5zsK91uwSi1yKQ/cd08LcDXcR9x5RkbG888/D9TSrl07Mot75plnRo4cuXr16uLiYri3QZ8d2roU7iMKJTw8vH///kOHDu3Ro0e/fv0GDx48bNiwvn379unTZ8CAAcOGDQsLC0OiUIdqjvgcq2m2KIrq2rVrI7i/c+dOD9x3T7tw213cDPcNBoNMJouIiAgICEAz9PX1ZbFYgOOdO3f+6quvtm3bBjJoJxgO4XMhEolcBPdVKhWfzx80aFBISEjfvn2HDBnSt2/ffv36hYWF9erVa+DAgb179x4xYsQ777xjP+bNTju1at0H3J89ezaB+5s3b259uG/pGODOfTjywqWHpmkgfplM5ijcd2edm3MvD9x3W8fXujd6RLjfHF1yxTmNnHlg4BcKhY7CfVfU7VGu6YH77mkOrob7aWlpGo1Gq9UiFymDwXjjjTd69OgxfPhwLy8vAI5evXpxudzU1FQn4AVN0y6F+3l5eQ+N98OHD6coys/PDxX29/dHjjNMXQCVwBJhB0ZYPWTHug+4HxERAet+YmKiB+67p1G48y5uhvvIRB4bGwtlDgoKevnll3v06NGlS5fu3btDvQcPHiwUCgsKCpywjrsa7oObEfVEB8Jisby8vNAeg4KCsJjQv39/OMpabXT2C38X7kdHR2/YsGHz5s1paWmtbN23Gj/nhkJCLWKJ+OVyuaNw3w1VdegWHrjvzr6vFe/1iHDfIaVqwZMBqXFBhUIBuC8SiRyF+y1YpRa5lAfuu6ctuBruFxUVKRQKoVCIETowMDAzM1OtVoM/vkePHhine/fuDYoq+yOx1aMuhfsqlYrH440bN27AgAGvvfba4MGDXzRLnz59Bg4ciGkARVGdOnXKy8tD0nerlbRVaB/uz5s3LyIiYtmyZWvWrPHAfdOTKG6G+3l5eTqdLiIiAu3xtdde4/F4GDWWLVvWv39/pOv+4osvRCIRYWa3pb1Ny10N9zMyMh6Gw4WFhQ0cOPCVV17p0qVLn99kyJAhPXv2xBxg7NixoMdoWsPfLbEF94cNGzZ79uxly5ZFR0fHxcW1Cbj/KBa1R/ktlmItsT6Y+hyF+49SB1f81gP3TX8MeUS47wrda841Yd1XqVRoeui4Pdb90tLS8vLympqaB78JhtU/hi478JSuhvs0TbPZbJlMRlFUcHAwg8HgcDharRYx60lJSb169aIoisVibdy4sbi4mHZcXAr38/LyjEYjnBNomtZqtYib5/P5SqVy3rx5MPD/+9//Rg5pR6tvB+5369Zt3rx5kZGRgPtbtmxJSUnxOPM4oNyPw6luhvsSiUQgEERFRVEU1a5du5dfflksFtM0feDAAalUumrVKm9vbx8fn+eee47D4dhJ72hLz10N92Uy2f79+8HvrNFoUHmYlXU63ciRI7GKuGnTJo1G40QsDfBeU999BoMxbNiwOXPmLFu2LCYmJi4uLiEhIT09vZWt+y3iOOvERYA24LsPhh9E6zoK9524tUt/4oH7j0Of2QJ1fES471IltHNxdLskZsbju19SUkISmHvg/u82DFfDfYPBoFKpcnNzYU2kKAo+7gKBQCqV6nS6N998MzAwkKKoiIgIPp8PfXZo61K4j7wuWq1Wo9EIhUKFQgFO6ry8vMLCwg8++ACh8Dk5OTRN5+fnO1Rz+777zzzzzPz58yMjI6Ojo9euXbtlyxYQ/4EJxBOq+7u6/Vic4Ga4bzQaxWLxQxM1RVFeXl4vvPACGl1qaioIzUloDZ/Ph1Y7pNKuhvuIPdBoNLm5uZh7KxQKPp+PVYsXX3wRMe6I6LXDJGnnoaxa9xkMxksvvTR37tzo6OiYmJj4+Pg2AfdtZL9xeTHx1yecPGKxWCQSOQr3XV5RB2/ggfuPRaf56JV8RLjvoFq12OlSqVQmk5HgeJFIhDhdR515WqxCLXQhjzPPo6t0c67gariPmaparQbcZ7FYarVaoVDs2bMnPT39yJEjQMze3t7h4eFCoZB2XFwK98FVIpVK+Xw+j8cDS7VOpzMajdnZ2Z07d2YymQMHDqRpWiQSOcEsZMe6D7j/0BALuL9161YP3G+OSj9e57gZ7ut0OqFQGBMTAx/37t27K5VKrVarVqulUqlQKBw0aJC/vz9FUZs3b0YWJodapKvhvkwmy87OJmkc4UMul8vz8/NXrFiBmn/++ecKhYLH4znXn1iF+0wmk8D95cuXx8fHJyYmZmRktLJ1H6TX7t9ilCdYH6ufQqHQUbjv/prbv6MH7j9evafTtX1EuG9fi1x3FPz9uD5h4eRwOI7CfdfV0Lkre+C+05rs0A9dDfdVKpVQKBSJRO3atWOxWBRFCQQCJF+DW/xXX32F8rlz59rJ2k7bFpfCfZVKVVRUhOwZer1ep9PB11kul8NE2qFDh/Hjx0skkry8PCfq3xy4D8ZnD9x3SLEfl5PdD/eVSmVcXByDwfD29n7hhRf0er1SqZTL5QUFBTk5OQMHDoTfXWZmphOrba6G+0hhm5ubC+9xDodDpivvvvsuPJR27twpNovtPsPeEftwPyYmZvny5Rs3bnwkuF9fX09YORsaGtALl5WV3bhx4+rVq+fOnfv111/JeiiDwVi4cCFsCTweTy6Xi8XihzMzgUDAtyEitwjqANpvjllEIlFGRkZSUlK3bt0IucHIkSMRzwcXIGKbhBEzQFl+AAAgAElEQVTF6hO4pfpWboIqjRs3Di/f19e3e/fuCxYsWLx48bJly1avXr1p06YdO3bAP5XkNv/555/PnTt3+fLlGzdugH61trb2/v37lgn5Hpf+6MmuJ2l0JpOpvr6+qqqqrKystLT01q1bN27cKCkpGTJkCMkXMXHixLapt03bXU5OTkpKyl//+lcs2rJYrMGDB6Nbh68dDCSYlrd6v9G04QkEgjVr1jzkfff29kbT+9e//rVkyZLIyEirvPsHDhw4cuTI6dOn4cxz+/btiooKJLp/YBYMq0+2MjvxdK6G+2q1WigUSiQSiqKeeuopPz+//Px85F+Ty+V8Ph98IF27dl27dq1zi++uhvsikQiJHblcrkajKSgoQD7HV155haKogICA9PR0g8EA8m/aQbED9z2++07o82P3EzfDfRjsFy5ciJDWPn36IMWqSCTKz8+XSCTwrAsKCkL2dwfV+b80WYgfE4lEbDY7Ozsb3m5gr3p03n2soSGoQCKRgJhLKpVqNJoOHTpQFPXss88WFhZiIc4J5zqYd5v67jOZzOHDh8+dO7cR3BcIBAqFIj8/HwPQr7/+evHiRXiT2uPddxTuR0VFIUoPDoUymUwikTQdNd1ZIjQLFj25XC7g/q5du1JSUnbt2tW7d28Gg+FnlsmTJzd1/nFnVZt/L4xJkyZNwuKXj49Ply5dZs+evWjRokZwXyqVarXa4uLiH3/8EXC/pKTEA/fbeP9rC+5jmn3mzJmQkBDihzBlypQ2qLdW211KSsqOHTvCw8O9vb0xXenbty+Xy4VzBZ6CrMXB7675jcINZ7LZbNBHMBgMUK3NmjWLwP0NGzZs3brVMs2WVbhfW1sLrP/gwQMP3LfaEl0N9+H9kp+fj/Ee1n2lUpmXl5efnz937lwQAg4dOpTkRHcCYUAhs7Ky2Gx23759yb0mTJigUqmQ6kssFjuRNggBuMjdDuIdQP/s7Gw4Cr/00ktisRiFjtbcvu++B+5b1dgnrNDNcB/z0qioKCaT6e3tPXjwYJFIJJPJFAqFWq1+++23/f39g4ODJ0yYsHv3boBmh7Ta1XAfGe6USiVaHAKBtFptXFwcJjB///vfJRIJn88vKChowVDdVob7y5cvx5vl8/lwuoLbrlXTOJ/PB/h29TYnJyc7O5vNZmeZJTMzMz09PTMzMy0tLTQ0FLDJy8tr3LhxWG1pZFzk8XitW/+m70ckEmVlZY0fPx6VZzKZXbt2nTdv3qJFi6KiolatWrVx48akpKSsrCzA/aKioh9++OHEiRPnzp3zwP223zXbgvtXr169dOnS8ePH+/Tpg0/frl27zz77rG3qbdN2l52dnZycPGbMGFSeoqiBAweKRKJGEB/LAnas+01bhHtKpFJpTEwMcBuLxWIymTNnzpw9e3ZERMSKFSsA95Hl5OEolZ+fv3//flj3L126dO3atdLS0oqKCg/c/90G6Gq4n5mZCe8d6GH79u2TkpLUarVSqZw4ceJzzz1HUdSIESNgJAPhhkPwwtW8+2DvVqlUGo0G0F9ulsWLF4NCdPr06ViUkMvlThAXeqz7v6uiT/YJDWYhVglXZ9WVyWR8Ph9+aJ07d37nnXfgD8Nmsz/55BP0t2+99ZZKpRKLxU7kwXA13NdqtRKJBG1NoVCIxWK1Wq3X67GOTVEUbEASicRgMLSs735rWvdjY2O5ZmGz2RwOB9vMzMwsG5LpeskwS7pZ0tLSUs2SkpKSlJQUFxcXEhICZfL39//oo48a4Qz4/3C5XBvVz3J99a3fQSgUpqamTpw4EVYoiqK6des2f/78hQsXRkZGfv/99/Hx8du3b8/MzJRIJBqNhsD9s2fPwq/g7t27lZWVHmeettlr24L7JSUlFy9ePHbsGKapWJh6991326DeWm13mZmZ8fHxH330ERqdr6/viBEjsrOzAdZzzJJtnpmzzdLW2l1GRsbChQuDgoJQf4qiZs6ciSSjy5cvX7duHYhKeDyeSqXKy8vbv3//4cOHT506ReC+h4izOS3O1XB/z549hYWFarWaeMSFhYWFhoaSnD4jR46Mi4tTKpW5ubnODc8udeYBxQfWB9RqNaIOZDLZW2+9RVHUw8XerVu3EjuiEzZ+D9xvjpY+wec0mOXBb+JquJ+Xl/fQ72XTpk2Yfnt7ew8cOLB///4IcvXz8/viiy+Ki4v1ej1CbmgHxdVwX6PRwANco9HAtK/X6zkcDhJshYSEyGQyhNCA8NfB6v/3dFu++60J919//fWxY8d++umn4WYZNWrUuHHjRo0aNdqGfOoWGfObkFp88sknH3744TvvvAN9gjNuaGjoBLOM/03G/Sbkh4123FJ9KzcZM2bMqFGj+vXrR6ykzz777AKzRERExMbGxsXFbdu2LSMjAxPNwsLCAwcOHD9+/OzZs5cuXbp+/boH7pvasNiC+xcvXiwpKfnll1+GDx+OUEKKovr06dM29fa3ZjeGtJoxY8a89957vXv3Bql5QEBA586dx4wZY6niTX9Ffk52LM938/7//u//Esd9iqIWLFgQFRW1ZMkSRC4mJiaChlypVBqNxn379gHuX7x48erVq7du3fLA/eY0O1fDfYFAIBKJxGKxv7+/j4/PQ8aPp59+2rIvXbhwYUpKCp/PV6vVTvB8u9q6Dxcj0HsjD4ZOp8vIyHjqqacekooOGzZMIBDodDq5XK5UKqVS6X/xgiPigfumP7a4Ge7n5OTweLy4uDjSBtEqMUyEhYXNnj1brVbDZ2T37t2O6PJ/z3U13JfL5QaDAREIAoEAGbsfktXicaZPny4SiZDfOicn58nx3Sdfi1i/4LpEytvIDmoFlSIGnjZSNyeqwWQyn3322W+//Xb+/PlLly5duXIl/ArS09NFIpFKpSJw/8yZMzA03rlzB34FnlDdNtix24L7ly5dunLlysmTJ1977TWs2iPq3wmdaZWfeHt7k56BVID07KSkze6wWKxGtZ0zZ878+fMXL14cHR29Zs2ahISEnTt3cjgchUKRm5u7b9++Q4cOIVIKcP/evXvV1dW/Wc08vvvWG5+r4T6fz5dIJEqlksSQTJ48OTw8/N133yXN6qWXXtq2bRvGaUfhhavhvlKpBC0PUlZrNBq1Wr1gwQLYrWbMmAG/Z8B9zAocegQP3Leul3+YUjfDfaPRqNVqN2zYgICoTp06TZ48efz48f369QPjPpPJfP311wUCAZvNdiLWxdVwXyKR5ObmomIikUin0/H5/Pfffx+GoczMTEJEodPpkDTDofbYRq376G7gYwAYHRAQABYOL2vCcrE0uie5GzCHl5cXk8ns2LEjaoiwV4Y1aXQd8i+5oJt3APKCg4NZLJa/vz+LxeratevXX389f/78JUuWrFixYv369Vu2bElLSxMKhUqlsqCgYP/+/cePHz9z5szFixevXbvmgfttueu2BfcvX7585cqV48ePv/LKK2QizWQyrensf8uIojbacbW62rodcDzWJZhMJqCzn58fs4k0ukKjf11df1vXt5yHoA+ZNWvWv/71L4TIr1mzZvPmzcnJyUgEYzAY9u7dC7h/4cKFK1eu3Lx50wP3m9PuXA33ES1HePcf0lfLZDK9Xq9WqzMzM0ePHo0P3bNnT/hDOjo2uxruSyQStVotl8t1Oh3WbzkczvDhwymKeuaZZwAvQHgFxO9o/T1wvzla+gSf4364r1AoFi1ahHYXGhoqEolgMWGz2c8++yzK//znP6vVai6X66g+uxruy+VyJNPVarXw6klISOjSpYufn9/AgQMRUi8Wi2UyWUFBgXPOgW3RmYcMh8TToJExjJzQujsEKlEUBXMOJieNUAcBGa1bW6t3ByIhh7p16zZz5sx58+YRuJ+YmIgAEeRc3L9//7Fjx06fPg24D05Aj+9+2+yybcH9a9euXbly5dChQ0OHDsWnZzKZiBm1VN22rLcURQUFBfn6+mI2AldjosZtfAfGC1QSfciiRYtmzpxpyYiVnJycnZ1N07QH7jvduFwN90GyrNVqib7BY0epVCLkjrSv6dOng1nPCYQhMkuWC5h5eDyeQqFAfAhI8JKSktAV9O/fv6ioSC6Xa7VaqVmMRqOjlffAfadV98n4oZvhPrDs0qVL/f39vb29Q0NDdTqdUqkEeyaPx+vfvz9wWnx8vBN5JFwN9xE/k5OTk5eXl5ubKxaLo6Oj0bd8+eWXKpUKwTZg5RcIBI62RzdZ94nuNjQ01NfX19TUVFRU3Lt37/r16yUlJSdPnvz555/BYIpn8/b2HjZsWFhYWL9+/QYMGNC/f//Q0FBsQ1tD+pslJCQkNDQ0JCSkb9++vXv3fvHFF7t3796vX78//elPpLunKKpHjx6tUUdn7vkwD8X//M//tG/fHhTL/v7+3bt3nzFjBoH769atS0xMTE1NJQys+/btO3r0KIH7d+7cqaysrK6uvn//PvnKHgJ+8ipadwcUjSaTiSS7uH37Nlg4T506deTIkSFDhhDo2Yrty5bu9uvXr3///qTd9evXr3fv3r169Ro0aFDPnj0RwES8JkaMGGHrOm2tPCQkZNCgQbARwJAxY8aMRWaxyohlSYB7+bd8F9XV1Z5ptv325R64r1Kp4Bzs5eWFhA80TQsEAqPRuGHDBvjBd+rUyQlrohus+xKJxGg0gk1IqVR+/PHHaFDR0dFisTg3NzcvLy8nJ0cmkzmRhdQD9+3r5xN/1P1wX6FQgJmHoqjQ0FAS8Aqj+MyZM+GC8eqrrzox/XYD3IeZAKG6RUVFoM7z9vbOzMyUy+WZmZn5+flKpRI0dLTj4g7rPlHrZsL99evXw49QKpVicoZaKltJMCvCzVET5AEQCAQcDmf79u2DBg1q166dl5eXv7//Bx980ErVdPi2fD5fIBCEh4d7eXnBP+zpp5/2wH2iro/7ji24f/369TNnzhw9enTAgAHED/6tt95yWIFc/AOr7Q4+xImJiR9//LG/vz+TyfT393/11VfhjuniGrXM5bOysmJiYvzNAkvBf/7zHzsEuB6471xLdDXcNxgMCKcj6d5AbanRaAwGA5fLPXDgAPLjUBSFtRraQXEpM49arZZKpSqVSq/XI35xwIABLBarS5cuCQkJSH2j1WpBvS+Xyx2sO+2B+87p7RPzKzfDfVDKxsbG+vj4IPciFqZgDtfr9enp6ehvO3To4IQ+uxruw2VOZRa5XM5ms5955hkEzYtEIgQZgz8Uz+Voe2yj1v3vv/8eNUPyMxCE0TSNF+H+rS3YAe6/1NRUwrvv5+f32Wefub+Gzt0RAR8TJkwggY+dO3eePXu2x7r/ZHS4tuD+jRs3zp8/f/z48f79+6P78/f3nzx5snNa5LpfKcwCiE2m2WKxmMvlpqWlTZgwgZj2+/fvLxQKXVeTlr2yWq1euXKl5ZLg9OnTYeD3WPdbsOm5Gu7TNI2xCdZ9X19fpVKpVquzsrKAMHJzc8F7xmKx1q9f78Tw7FK4bzAY4OdgNBo5HM6WLVtg9Hn//ff5fL5Op0PuLRCJOmEN9cD9FlTmx/FSbob7SKoVExPjbZahQ4eixcnlciRBgt8dlLy4uNjR9uhquI/wXPjoy+Xyb7/9FgPcrFmztFqtTqdDHAIC6Ntumi2iqc207sfExGBRQyQSIVTIiTBqR7+lnfNlMhmZC8rlcnTBQqFwx44dqampmZmZQ4YMAWIOCAj44osv7FyqTR1CytLw8HD4a1IU1blz52+//dYD901PhNiC+1evXr148eKvv/5KpqkBAQFffvllm1JOJMclVZLL5RKJBJkBdu3alZGRMXbsWOK4P2DAAOQDIue35R2pVEpWnH18fHx9fb/55pvp06fbSm/nse6bnBJXw31gCJqmCY0EVn35fD5N07t3736Y7qR3795YO42IiHBCJ10K9+G+zOfzc3Nz5XL5lClTMAWNjIzUarUajQb+weDrJCNg85/CA/edUtsn50duhvtisVgqlSJhOZx5JBIJuOr5fL5QKHzoDU/CLJuvxuRMV8N9ZDdSKpXg5EHQfGBgYGpqql6vV6lUarMg56lCoSAVa/5OW3TmiY2NVSgUSPVnMBi0Wq1er8ekp2XNbM28GrEyqlQqTD+kUqlYLJZIJFlZWbt27XrhhReIrW7MmDHNvGyrn5abm6tWq8eNG0cq37Fjxzlz5njgvumJEFtw/4JZzpw5M3jwYHx6BoMxceLEVlfIRhVQKpWkBFyBYrFYKBTm5ORkZWV9+OGHRG979uzZiqt/pJLN3NFqtWvWrEFYPx5h9uzZCxcu9MD9lm12rob7CASE7z6+IwYFg8EAN1SBQODt7Q0SQMwBaAfFpXAfLKIikQhD7fPPPw+uNg6Ho9frYdjCIaVS6Umz1bLK+Ue4mpvhvl6v12q1xJLSr18/LEnJ5XI+n49Ymvbt27NYrH79+jkR6upquA+jtlQq1ev1GzduBFHN66+/DpYetFbQAxB6fge7E7ek2SKa3Uzr/vLly2UyGYhF4XCCOCF5K4lEIsGXBu8pMAeSp2RnZ2dkZCCiws/Pz9fXd/Lkya1UTWduKxaLR40aRWBTt27dFixY4IH7RGMf6x1bcP+cWc6cORMWFkY+/SeffOKMArn+NzDzA/fweDwOhyMUCrlc7qeffspkMp966qmAgIB+/fqJRCLX16Vl7iAUCpcvX07ePEVR//nPfxYsWOCB+y3b3FwN9w0GA0ZifEpfX9/c3NyioiIsNBUUFMyZMweH+vbtq9fracfFpXBfIBDAeqVQKDZv3gy2qz//+c/gEoUnLXC/RCJxgsnEY91vWX1+7K7WYBaSHsTVWXVhbQHcZzAYQ4cO1el0YLlBMDqBOp9//rkTae9cDfdVKhUQpkKhmDp1KtYM586dq9VqsWwok8kwgUELdbw7aZNwf8WKFTRNq9VqhUIBCwqy+sHK7v4tBnkS6ADTvlAo5PF4O3fuZLPZ8IHGbOzjjz92fw0f5Y6TJ08OCAho164dk8ns1q2bx7r/2PWqtipsC+5fvHjx7NmzJ0+eBD8MEMmYMWMeRYtc8VsSGIslSLFYLBAIeDyeQCBITU19//33CWIePHgwzJCuqEaLX1Mul69ZsyYgIAC5AiiK+vrrr6dNm+aB+7Y02blyV8N92L+VSiVx5kEInUQiSU9PT0xMDA4OhpPnt99+m5GRQTsuLoX7cALGjOWTTz4B3F+1apVWq8Wj0TSt0WjAK+p43T2hus6p7ZPzKzfDfaFQKJPJ4LvPYrEGDRoEyyzCab755huQuXXo0GHNmjVO6LOr4T4C/VUq1cP0wAMGDKAoqmfPnunp6ZgGIFJIKpXCpceJ+hMEixj9kJAQ9E5MJnP48OFz586NiYlZvnz5xo0bExMTMzIyCB/jgQMHjhw5gjyP169fLy0tLSsrq6qqqq+vJ8ra0NCAfcqyqDlEnCtWrJDL5bDow6ggk8mQ6YkgAHfuWA3VFYlEOTk5yIbTt29fgjwmT57szro9yr2gQGPHjkVqMPjue0J1ibo+7ju24P6VK1fOnDlz7NixkJAQfHpfX9+JEyc+ii654rfEWxELfVKpVCgU8vn89PT05OTk8PBwHx8fdFihoaFisdgVdXDFNUUiEUmNzmAwWCwWGp0H7rdsi3MD3FepVAUFBd7e3rD1rFmzZunSpdHR0Z9//jkoVgMDA8PCwjgcjnNJ710K9+GfA5top06dEEai1+sJ7wdMiTqdDsGOtIPise63rD4/dldzM9ynaRp+kv7+/hRFdenSZe3atcuWLZsxY8bYsWMR9hocHDxu3DhwajmozrSr4b5IJNJqtbm5ucnJyehPXn31Vb1ej+QYaIZIhaFQKKRSqaP1dxPcr6+vJ9ifUICXlZVdu3bt8uXL/4e9M4+L4kr3frGKezQxiXFuYoy7yYxZr7mTuc5MPjPJnWgmMS7RLDPZZjITTaK4A8qigoCCioqiAk030Pve1fvCJiq444ICsogsKqAssiivqd+lXi7SHUGqaU39/mia6uqqU6fPOfU9Tz3neQoKCs6fP0/j8l3+CAoKAu4jMhGiH/Tval2a+OFDjGcrAkocDmfSpEm0J+78+fN78TP0y1cwm1ywYAFd+U899dT3339PO/NERkayabbaH1rRna69vb2tra2xsbGuru7atWuVlZXFxcXnz5+fNm0acNnT03Pu3Ln90ggdnBShAAHciEEOaw2fz+dwOMhain43efJkZc8DBTo4NdMfbdy4ke50BEEsWbJk2bJlK1euDAgICA0NjY6O3rNnD4/HUygUBoPh4MGDR48ePXfu3KVLlxB3v7a2tqGhgX5KjttqO6v/WwNM475Op+Pz+RkZGfDOR/YS3Kfx43p5eX344YdyuTw3NxcBZHvarhjFfalUajQaLRYL7XS0cOHCXvg027soFvf/b3v8xf3nZNyXSCQHDx68G9wMZO/h4TFo0CAPD4+RI0eiPz711FP//Oc/BQKB1WrthXMd07ivVqv5fL5Op6MTcgcGBgoEAnv9qxfbnbFU1wHul5eXw6+g882Pxf1e/JC9+Io93F++fDmdVXfnzp0JCQl4tJKWlnb48OG8vLyCggJk1a2pqamvr2fT/bS7pFjc70WncM5XusX9VatW3b1XAff37t0L3DcajSzu9657MY37KpWKw+FIpdKpU6ciWSF9F5s2bdpXX30VGRkplUozMjJ0Ol18fHwvmhajuG8ymeB39O233z7//PPTp08PCwvrRYBCe9fF4n7v2u0j8y0n475QKNTpdOvWrZswYYKXlxcSlhME4eXl9corr/z4448cDken02E5aC/MQ0zjvs1m4/P5PB5v1qxZ48aNe+WVVzgcTkZGhr3+1Yvt/Yn7lZWVwP38/Hx6oGSt+734FXv3FQe47+fnt2HDhi1btuzatSsxMVEikZAkmZ6efuTIEeB+aWlpRUUFi/vtLiwW93vXL5zwrW5xH848YWFh27Zt27t3b3JyslKpBO4fO3bs/PnztHUfrpOsdd9x52Ma9/V6vVarPXTokEAgEAqFfD5fo9GkpaUhLA/ihEgkEh6PJ5VKkR+np02LUdxHHKHMzMwjR44gnaVer+9dPO9ur4vFfcft85H/1Mm4r1Kp0tPTSZLk8XhY4iWVStEftVotvGIEAkFycjKStHTbaB1sZBr3MW6cPHkS3jsCgSAtLa0P+2M/O/NUVlZeuXKlsLCQxX0HjYy5j+zh/ooVK/z9/Tdu3Lh169bdu3fDgqXVamncLywsLC0trayshFMBa91vd0mxuM9c33nAI3eL+2vWrFm/fv3mzZu3b9+ORUEqlcpkMmVnZwP3i4uLy8vLq6urWdy/nw7HNO4rFAosejOZTHDyVKvVAAsFJZPJZDab1VSE7F44D8CBTUKJy+XyeLwJEybA+44giPnz55MkqVQqSZLEwpWetkmz2SylhIW5KHkv0mnZOy+L+/fTSh/hfZyM+0j/jJWsWIIiEol0Op3NZkM/VavVFoslLS3NYDD0wvedady3WCwIN4/luUql0mAw9GF/7Gfcr6qqunLlSlFR0YULF2jrvpubG+vMY28A7dvt9nB/1apVAQEBmzZtioqKio2NTUpKQgKIjIyMnJycM2fOFBYWlpWVsbjv4iM1i/t921/68Gjd4v7atWsDAwPDw8N37Nixf//+1NRU3J+ys7OPHz+en59P4/6NGzeamppY677jDsg07iuVSovFgjRVKiqIjU6nw0alUsnn84VCIZ0Svhd4wTTuY1WMwWAwmUxYDa9SqXq3xqDbrsHivuP2+ch/6mTcBx+bTCaDwYBQlUpqQReiSymVSiz9kkqlWBTabaN1sJFp3NdqtXhgKJFIbDabTqdTKBR9uJam/3G/oqLi0qVLnXHf3d2dxX0Hba4PP7KH+/YihNC4X1RUVFZWVlVVBSsja91vd0mxuN+HnaVvD9Ut7vv5+QUFBUVERMTExBw4cADOIVar9dChQ8D9kpKSK1euXL16lcX9++lwTOO+TCbTarUikUihUMDdkSRJmUwmFAo1Gg2ww2AwWCyWXqfFYdSZB8ltQBUIO6FWq3sXQajb3sHi/v200kd4HyfjPpxhELaSju8il8tTU1OlUilJkoBpBFbuRegXpnEfPCaXy4H4cOPp3VPBbvtjP+N+dXV1Z9zHY0oW9+39VH2+3QHur1+/nvYh5vF4yNucmZmZm5t79uxZFvcfijGaxf0+7zJ9dcBucd/f3z84ODgyMnLnzp0HDhwQCAQkSQL3T5w4ceHCBRr3b968eevWLda677gbMo37sOUjQJ5WqyVJErGkkBJeq9VKpVLaxg+Xnp62H0ZxHzG8wUB41el0vVtj0O11sbjvuH0+8p86GfcNBgM6IHqiVqvFqtz09HS9Xo90SUjohOxy3TZaBxuZxn08AIT3kcFgwJDyCOL+xYsX6dDvLO47aHB9+5E93IcPcWfcR0DAzriPgICsdb/dhcXift/2lz48mj3cDwkJAe7Hx8cLBAKtVmuz2Q4dOtQZ969du8bi/v10OyfgPo/Hs1qtcrncZDLdDdEjEAgAHDKZDFlpDQYDwtv3bskdo7gPKhKJRGKxWKfTIbsW/B/6pKmzuH8/rfQR3sf5uC8SiSQSCTK00lnkJBIJSBrea72beMOzTqFQSKVSrL9PTk4mCOIur8JOHRwcrNFosMoWAXB62okwCdFoNDabjT5RHzrXOcm63xk72tvbW1tbGxsbb968ee3ataqqquLiYuA+3Pf70HffZDLJ5XKLxRIVFTVo0CDMKPz8/ORyOZZpp6amwudSKpUiq1e3vxB+RfyEyHIsl8tlMhnTcfex8Asp2fl8fnZ2Np71r169WqVSYS6r1+vFYnHvHLzQ+jvH3R8zZoyvry+cCuBDvG/fvpSUFCwZtBcQkHXmcfEh+/bt2y0tLY2NjTdu3KipqamoqCgtLb148eJLL72ETufh4TFv3rxuG7+DjegyaEVI1mO1Wv/xj39MmzZt6DRb6F0AACAASURBVNChQ4YMQRZDb2/v3//+999++y2Xyz1y5AiPxxMKhWKxODMz02AwoA92exbnxN3XarXIugLzD4LhrFixIjIy8scffwyi5Ofnt27duoCAgAMHDugoyWQyuVyORGDdFt7xxo0bN+ImgUHpxx9/XLFixbp16zZs2ID18QkJCVhnlpaWlpOTc/r06YKCAiyYYXG//f7ENO47/on75FNGcb9PSujgICzut/+y9YC4jzuL819xLyNJEqeG849KpcJMGDmXuNTSeRpZ73L/vbjv/JI7PiM9FYH/3pQpUxCr1M3N7eWXX166dOn69euDgoK2bt26Y8cO3IDg3dezrLr9hfsKhQJGi5UrVyL7iaen5yeffIKnPCqVSiwWA6nhxWhv5Oov3FcoFPHx8Wq12kQpLi5u9OjRBEGMGDFi9erViDJrs9ngheZguuLgujQaDYv7j/yYzBDuw2xJ9w7MCb/88ks64LG3tzem2QRBDBw4cNq0aatXr87OzjabzQqFQiAQgJjttU+mcZ82xsCTQUlJo9H8+c9/ph82wn7j4eGBTI3IQ2SxWJRKJQaNXviAqlQqFved0OlY3LfXs5yzncV9JzRyVz7FQ437XVhfpVIpFAqlUvlQ4z7uVo8m7vP5fLPZTJLk+++/j/u3p6fn9OnTjUYj3C5VKhV9y3dw26aBBvd45Bh3gnXfYDDQ68DUavWiRYuQM4IgCH9/fz0ltVotkUiUSiWL+6488PVv2ZyA+4jlR5Lkp59+ShCEt7f3G2+8sXjxYj8/vy+++OLFF1+EIWTixIl8Pl8kEpEkCRcCg8GgsiOmcZ/2t6ZPpNVqdTrdH//4Ry8vL4IgnnrqKbxB4d3d3b/44gu5XG4wGMRiMZ4D9KLfsbjvnO7A4r6djuWkzSzuO6edu+xZHhD3YVZ3/uu9dn10mM6++/dj3Xd+yR2fEbgLfxaFQjFlyhR3d3eA8aNg3RcIBLDbjR8/niCISZMmEQQxfPhwhGGC7R+hi/V6vQOPrv7CfYlEYrVaMWgmJCSMGDECVlJPT8+wsDA4eCHWm81m60U2RMxfWeu+yw6XfVUwhnCfduZB0HFMO+nm9MUXX9hsNsT42759+4svvjhw4EBvb+9PPvkkMTER2Q1tNhuekGI87fJKUzim4nC2EYvFfD6fw+Eg0zgGrMmTJzs4TpfD0v9icIBTpkql0uv18LSePHny4MGDx4wZExQUFBAQEBISsmHDhpCQkICAgKSkJCzNFIlEWJHZO59s1rrfzrxY3Keber+8YXGf+Tbu0md4SHH/Xrs+PHngwCmRSMRi8UON+8hCMHny5EcK92FxlEql3t7eBEH8/e9/h5UuNjYWw59Op9NqtQqFAq789sbE/sJ9jUYDO6JcLv/3v/9NEMQLL7yAS1i/fr1er5dIJFh1YDKZeoEdLO679GDZd4VjCPcRqxu9Q6lUisViuVw+d+5cdLcFCxYolUqhUKjX641G49KlSz09Pd3d3Z9//nmz2azRaBAYxEE8cqZxH174iDUOUz0CODz55JNDhgz53e9+h5hueIyL6Iq4WI1GAwsQHTTN3tBhbzuL+33Xuu0eicV9e83POdtZ3LfbNH8ZHzwg7junld57Fpr38JGyQ8hCjaWSSUlJPB4PpvG+Wqp7b0n6dgtCsyAxn1wunzRpEkr+iPju63Q6iUQSGRlJEMSgQYNiYmIAIkuWLIH3C+2475q4b7VakRJi3759o0aNIghi6dKlQ4cO9fb23rBhg1arlUgkMpkMa4i5XG5PGweL++2/DDGE+4gkgIVNarVaKpUqFIp58+a5u7sPGDDgo48+4nK5arVar9dbLBapVIqZKkEQFosF4ckdpzthGvc1Go1Op0PJsfBAo9HweDys8/noo4/0ej3IHh5H8NpUKpV4LCCTyRCxqqf9jnXmcU63Y3G/Fy2zD7/C4r5z2rnLnuUhxX24xKAjAPWpHNkKsVgslUpFlB523JfJZI8a7sPZYP78+QRBPPvss3K5fMyYMQRB/PGPf4RFHzGbFAqFazrzID2EXq//9ttvCYJ44403vvrqK4IgfHx8AgMDacCiU7r0dKRmcd9lB8q+LRhDuA+zN0mS9FMytVoNZx5PT8+PPvpIKpWmp6ejmZEkCT/4AQMGIBoPnkfR6Tzvbb1M4z7tzoc5M2Ip7t69G0uNfX19NRqNgsqgpNFoJBIJfB+1Wi0eTWCdMQJn3Vt4x1tY637ftvBuj8bivuNGyPSnLO532yx/ORsfEPc7rOrO/tvZrxvLNYH7iPIpEomEQuH94L6zy/1z58MNFxEmgPswwD0i1n1Y7F566SUPD48XX3xRp9Mh8uCkSZMUCoXFYuHz+VqtVqlUwshnb/ijH+44eakun883mUz79+9/8sknCYKIjIyEvzJBEAEBAViqiyHVsZXUwXWxkXl+CYMvQ7iP7oDU34jSQ5LkwoULschk7ty5iOTN4/GUSmVSUhIGl7feeovP52PlCebb9ton07gvk8kwUZHJZJgzC4XCqKgolHPLli30NEav12MfvV6PzKmw8atUquTkZHvld7CdxX0n9DsW9x20QCd8xOK+Exq5K5/iDiU6G2BLS0tTU1NdXV11dXVJSUlxcXFsbCxNnARB0KYfhIz8OXxl6nO6a+AEYH2FQgHcF1LicDg/68zDVPl6e1wa9zUajUwmmzhxIl35j8JSXZvNRpIkQRBDhw6dM2cOj8ebO3cuVrvCpRi0odVqsQiD/pm7vGEa9wETJpMpLS0NQyTSs2u1WrPZ/M4779xl/SFDhqjV6nnz5uEXCgkJwXoLrGJE9+hS7J/9l7Xut/8yxBDuYwETfMmA5iRJzpkzx8vLy9vb+7PPPhOJREqlMi0tTSwWz507d9iwYQRB+Pr6isVi9CmlUmkymew1VKZxXywW22w2LCGAzV4qlX799dcEQYwePZrH49EhvNRqNVboIhabSCSSyWRI2diLJcL2nHkCAgI2btwYHR0dFxfH5XKlUqler2fj7ve6j966dau+vr6xsbG2trampuby5cvnzp3Do5sBAwa4u7tv3LhRJBJZLBYsHMd46DqvKSkpiLsvEAji4+P5fP5zzz1HR7mdM2cOXFJTUlLgj+s6JUdJEAYjJSUFNrU5c+bg5oWH7StWrFi9enVgYGBERMT27dvj4uL4fD4SlmVnZx8/fvzcuXOXLl0qLy+/du1abW1tfX39rVu32tra7nSo1w2D/aJzagA/VGfcR7alq1evlpSUFBQUxMTEwH0c8Zp1Op1MJjMajVqtVigUSuxI1k9KoCQUCgUCQWJiYkJCgoeHB1a7wgKLx79isVgikZAkaaf4Pzlg94t4PB4MWHK5XKlUTpw4kV6qO3369O+//97Pzy8gICAyMnL79u2JiYl8Pl+hUJjNZuR5PH/+fElJSUVFRXV1dU1NTWNjY1tb270Nibhz507nrU5LsyUWi3fs2EEQxODBg319fc1ms7+/P4bLsLAwg8EgFApxm1c5FNO4T/sG4GdANEBE4UxNTR02bJiHh8e///1viUTy2Wef4Rdicb9zi2LfO64BJ+M+buofffRRYmKiVColSdLPzw8bn3zySSS5M5lMKSkpAAJ7nY9p3DcYDEajEWkLxWKxxWIxmUzz589HFwsNDY2Li5PJZDabLSEhAbhPu3UCEBWKnxw67ZXfwfZurfss7jtuxj39tLm5GbhfU1Nz7dq10tLSM2fOuFFCawwODsYTHqFQiKlpbw1njHzPSkmtVstkstTU1Lu5PCdMmODm5jZw4EAfH59FixZhFioWi0mSRPtkpBy9PSjmw2KxGBkhFy1a5OPjg/wVY8eOXbVq1dq1a0NCQqKionbt2pWQkEDjBYv7PW3qrrn/HUo/i/uenp5YVCkSiXg8nkAgQH+0h8uwrzv/VaVSpaam8ni8+Pj4PXv2xMbGAiZ9fHyGDRu2YcMGjUaj1WqB+4iQ3u0lOL/kOCOHw0lNTYUbUmpq6tixYz08PLy9vd3c3OzhvlwuN5vN2dnZJ06ccHXcVygUixcvdnNz8/T03LZtW3p6Ov3waMGCBUajsbMzj0ajUdkR07gP2wwiDGo0GqPRiDWCer0e3jujR48WCoV37XyzZs0aMmQIQRAs7rvmAOeapXIy7mMQ/O///u/IyMiAgIBf//rXnp6egwYNmjJlik6nA+VbLBaVSkWSpIOE0Ezjvl6vR5JsnU4nFApNJtNdy83UqVPxMA0rDYYNG/b2228nJiYKBAKk50OpjEYj/SDOzrDhaDOL+07oKS0tLQ2UkL790qVLp0+fxtNd4H5oaKjJZEpPT1epVLD7uJSBnI48Cxs/n89//vnnUXKCIObNm4ebMSyFIpHIpQqv0WjwEEwmk5nNZrlcTj+aJghi7Nixq1ev9vf337hx4/bt2/fu3cvlcoVCoVKptFgssCaeO3euuLj4ypUrrHXfCZ2FiVPcJ+57eHh4eXl5eHgAhBTUcimVSiWwI24/SSgUJiQkxMfHJyQkHDhwICYm5u4qSvRHT0/PNWvWyOVyvV4vEAi4XC6Hw7FT/J8+7RelUuLz+Qic/eKLL3p7ew8cOLAz7vv7+0dERGzbti0hISE1NbXL0zb0Rxe17huNxj/84Q8IyyMSidLS0tRqNXD517/+tV6vF4vFcKQxGAz9iPsqlQoDIqIBIuAJLP3u7u4+Pj6fffaZRCKx2WyzZ88GS7G4z8Tw9Kge08m4TxDEgAEDMA7CgWfw4MEffPCBUqncvXv3sWPHpFKp2WxOTk527ITGNO7DboqnDYi7n5iYOHPmTDoTMI1Wzz777OrVq5VKpdVqVSgUMpkMz2oxvqt6Lhb3ndDXWltbGxoa6uvrq6urKysri4qKTp06Rf+mAwYM8PX1RSNUqVQIzoanNy7ySj/1lUgkXC43Njb2pZdeAmEMGTJk/vz5eDpPkqTZbHbB8huNRqS51Ol0PB5v/vz5uPkSBPHcc8+tWrXKz88PuB8XF8fj8ZDk3mazHT58+OTJk+fPn2dx3wndhLlT3KH0s9Z9ZC4fMmTIrl27kpOTYdqXy+V8O0rqJ8Guv2/fvtjY2Ojo6HXr1mGVGtzFf/jhBw6HA7d4LPa1U3x+PxU/SSAQ8Pl8zDR27949depUOhAnbd339/cPDw+Pjo6Oj49PSUmBb1VWVtaxY8fOnj0L5zoXxX21Wo1QPC+88AIc9JVK5fjx4z08PEaNGoWn8EajEW64Dm7ZTFv3saQY6KDX62k7zT/+8Q+k9kT4Jz6fT6cOYHGfuUHq0Tuy83HfnZKPj8/gwYMBWF5eXuPHjydJEpC9a9euQ4cOmUwmROnptvcxjftaShKJRK1WWywWZAOIj48XCAQqlYrH43399dcTJ05EXM4xY8Zs2bIFXsiIyQP3D71e323hHW9kcd8JvQy4f/PmzaqqqoqKiqKiory8PJhL0CbHjh07efLkKVOmTJw4cdKkSVNcT88///wLL7zw3HPPPfvss2D9gQMHok+NHDly0qRJ48aNe/bZZydOnIgLcakrmDx58sSJE5999tlx48ZNmjRp5MiRcKyF7/7KlSvXrl27YcOGbdu27dmzJykpCR7PWKxy6tSp/Pz8kpIS1rrvhJ7C0CnuE/cHUEIi1BdeeGHSpEkTJkwYN27cZDua2E+aMGECzjx+/PgJEyZMnTrV3d198ODBeA48duzYcePGvfDCC08//fSECRPslP2nzf1U/IkvvPDClClTxo8fP27cuClTpsCNx8vLi7bur1271s/Pb/PmzVFRUfv3709OTpZIJAaDITMz8+jRo2fOnCkqKrp8+bKL4n5cXNxgSgsXLszMzISfzKJFiwYNGuTj4xMdHU074Op0Oixb7vYmzTTuKxQKrVYrEolIkpTL5WKx2Gq1pqSkPPHEEwMGDFiwYEFWVhZSH//lL39hffcZGpse4cM6GffBxx9//LHJZDpw4MCXX375X//1X3dTQcMwuW/fvqysLPQpxMDtttOpVCqmcR+BOLHeMT09HQsJMjMzTSaT1WqNj483GAy7d++eNm0a6HDWrFlcLheBR81mM5z+5XK5vfI72M7ivhO6W2tra319/Y0bN6qqqiorK0tLS/Pz8+E77ubm5u7uDuMWcuVgXMUP7SKvQ4YMcXNzA0zQRfL09MR2eguMo52nMZ0/6sf3nRcyohhubm4w8I8bN27t2rVYrALc53A4CFCRkZGRm5tL435FRQXrzOOEzsLEKe4T97s0cg8PD7pj9mPr7fbUXpS6fISFB5376YABAzDOdNmz3/8dMGAABorOw11n3F+7dm1YWNjWrVv37duHB256vR5dMi8vr7CwsKyszEVx39fX18vLa9iwYb6+vljorVarg4KC4Gnwr3/9i16nC6Odvdsz07gvkUh0Oh1MhmKxGJENv/nmG5j24+PjkSUgKyvrrbfeYn33mRiYHu1jOhn3gfULFizAOt309HQOhzNjxgyCIEaMGDFu3DiFQpGRkQFvOmSw6rbrMY37yAtmMBhMJpNWq5VKpQKBAJ6jMpnsyJEj9NNPDOgjR47cvn07VtIbjUaE9EE8/m7L72Aji/tO6HEtLS03b968ceNGNaXy8vJLly499thjHpQGDBjQhSqwitd1XgEH7u7uHh4enpToLJ7u7u7YgtJiT9cp+b2lQmkxxRo4cOC0adOCgoJCQkLCw8N37twJtsDzbZgST58+feHCBUQCYXHfCZ2FiVPcJ+5jvgoXynt7Zb8jcucCYG0rnlrfDe3l5eWFVPHwX8Uy+rtLK11w7t35KrA2GrdpVP706dOXLFmyZs2atWvXhoaGbtmyBdHhxGKxTqfLyMjIyck5ffp0QUFBaWmpi+L+okWLcJGzZs2aPXv2ggUL5s2bN2PGDIzy77//PpYsYD21Wq22d3tmGvcRDM5oNJpMJrlcbrPZhELhf/zHfwwaNOj3v/89wjJkZGRwudzPP/8cV8Q68zAxPD2qx3Qy7hMEgTRbcrk8MzMToSqNRiPSR9x9ABoREYE1u0jrba/fMY37QHaz2UwXxmKxqNXq5ORkOEPDpVsoFI4bNw42gs2bN8OjWqVSYQWCvcI73s7ivhP6Wmfcv3btWmVlZVlZ2RNPPEHfjD08PGhns863Qxd537lsWMvYZX6Ccnp7e3e2LLpI4VEMxOTtUqTHHnvslVdeCQ0NhdvAnj174uPjU1NT8awPuJ+Xl8fivhP6CKOnuH/cxy2DIAgYVrDeEh6h977217QWfbBzY8ZIgl6JVzA0TPv3lhxb+qv89Jo0mPZRYG9vb3d3dxr316xZExoaGhkZGRcXl5SUJBKJtFptenr6kSNHTp8+ffHixf7HfSybQ+ZLq9UKhrBYLOPGjev826Al0SPmmDFjjEajwWDgcrkHDx4UCoX27tBM475arTaZTAhlgHRF//znP318fIYOHfr000+PHTt2/Pjxv/rVr1566aXhw4cDOx5//PHnnnvuvffeg88DScle+e1t11BCGlRU1JgxY3x9ff38/IKCgsLDw3fs2LFv376UlBSsLjh48ODRo0cRDvny5ctVVVW1tbUNDQ3Nzc2tra23b99mdOxgD97rGnA+7hME8fHHHyN8jUQisVgsEolkwYIFo0ePJghi7ty58ODX6/VIfd1tE2Ua9+VyOeJsYuktDPw2m81oNCIjh1gsxoO1t99+28PDA551GAGxHTkHui28440s7ve6Md//F1taWpqbmxsbG2HgLysrKywszM/P//7777/99tu///3vCxcunDt37uzZs//0pz/NnDnzT3/609tvvz1z5szf/va3b7755owZM/7zP/9zxowZr7/++msdepXSK5Tw/sFf37Aj+sg43csdwr+vvPIKNkzv0G8o4T98RJezo/ivvU4JJ6SPz9CbV1555dVXX33ttZ9O+sYbb6AyZ8yYsXz5cj8/vw0bNiAGyJ49ezgcDp/PJ0mSDstz5swZsEVFRUVtbe2NGzcaGxtbWlrYu8z9t/9+37ML7jc3N9fV1V29erWqqqq4uPjixYuIk+7t7Q1K/uabb2bNmrVo0aLPP/989uzZ81xMCxcu/Oijj2bPnv3OO++8//77WEhJPSn0IAjivffe++STT/7617++//77c+bM+dvf/uZixZ/3wQcfzJ8/f86cOfPmzfvmm2/gtY/IPL/5zW8WL168mtLGjRvDw8NjY2O74P6pU6cuXrxYUlJy9erVmpqamzdv0nkwOrc0xuPuA/R1Oh0S06jVakTWA98PGTLktddee/nll6dOnTplypRnnnlmxIgRbm5uQ4cOxdN83LllMpnKjpjGfYRG0mq1JEli8eLHH3/ceaKC908//TS90cfHx83NbcqUKYmJiXpKDqYrdi5LxeJ+52b6CL93Pu57enrOnTsXvjF8Pl+n01mt1sDAQNgVXn/9dYvFghA3DnzfmcZ9kiSRURx+dMiYixi4Op0Osbywz7fffouu9/XXX0ulUiThRvdxsObHXr9j02w5p68B95uamm7cuHH16tXLly8XFRVduHDh+PHjhw8fttlsWGYtFou5XO6BAwciIyM3b958dyYWFBS0bt06f39/P0rLO+RLaVmH8O+Dv/5oR8uWLVvaIezyw//V95SWUFq8eDHeYCN2xLfsbX/wkjs+wsqVK1etWrV69eo1lJOAn5+fPyU/P7/g4GBk14qNjYVpHx6tNpvtyJEjJ0+ePHfuHDwHKisra2trb9682dTUxOK+czpOX53lPnEfkW28vb0Ri1yv1yNMs4Pxs18+QlZd5Frhcrm7du3q/FQtMDBQLpeDFSUSiYP7Wr8UHifV6/UwtN1NbjBt2jR6IdPDh/uIsYNlrwaDISwsjCAIHx+fBQsW4EGhVCq1WCwymWzmzJmw8W/ZsgXpdRQKhbr/nHlADEqlUqPRwJ8nODj4ww8/nD9//sKFCz/++ONPP/104cKF33zzzdSpU/H8aObMmQsXLlyyZAnco0mSdDBdsde8WNxv/2XI+bjv7e09e/ZsLpdrs9lUKpWQ0ubNmwHNY8eORepEkiT70bqPJ2kw5KMvaLVagUDA4XDMZrNSqbTZbGq1OjU19bPPPkPJEY4TDyUQSKR3wzpr3XdCz2ttbW1paWlqakIuz/Ly8uLi4oKCgry8vGPHjmVlZZnNZkRsS0lJSUhI2L17d0xMTFRUVHh4+MaNG4ODg4MohYSEBHcIWwIp4f2Dv66zo9UdWrVq1coOrVixYvny5eDsZZQ6ZgRLsRFzkxWU8CVAtr+/fwAl+mwPXnLHR6BPt379+sDAwKCgINTipk2bIiMjY2Ji4uLiEhISkpOTpVKpWq02Go0ZGRlHjx7Ny8vLz89HGJCqqqq6urr6+vqmpqbW1tYuKTud0IrYU/S6Bu4f97EohTa4gGfULiaxWAzKksvlAoEgLi6Ojjd9N7kT0mwZDAbkBoaPiUtdAZLZY2moUqlEhhnU/MOE+0hgZjabZTKZSCTSU/rb3/7m7u7u7e0dEhJiMpkQAVCj0SgUCl9fX1zkggULlEolCFvTf2m2TCaTSqUSi8VyudxgMFgsFo1GIxQK4UuAcRBPMP7617/isVdgYGBaWprVak1LS5PL5QqFwsGSR5Udsbjf64Hs4fqik3Hfzc1t+PDhn376qVAoxBp02On/8Y9/eHh4DB06dMaMGQKBQKPRWCwWo9Fop3kyHpkHOc+FQqHFYkEnIkkylZLJZELW7czMTLVaPWnSpMcee4wgiKioKJIkMcKkpqYCFu2V38F2Fved0IPa2tpaW1ubm5sbGhpqamoqKipKS0uLiooKCgrOnj2bm5ubmZlpsVjgC5qSkpKUlBQfH793715Af0RERHh4+ObNm2moBeWv7xD+ffDXEDsKpbSJ0kZKGyjRZ0RBOuN7x6wkGIfsvD+uAjvgU/o4DL1ByUNDQ8PCwjZv3hweHh5BKSoqCstzORxOcnIyEu3p9XqbzYb8nefOnbt48SKC7ldXV9+8ebOhoaGL5wDL/U7oQQ94ivvEfU9PT5hfkYZZQQmWIK0rCdmZkBAgKSlp7969Q4YM8fLy8vHxuRvUMigoCGEbdDqdVqu1Wq2uVPafyiKXy2HU1mq1CoVi2rRpiKHn5ub2MOE+UhsYDAa5XC4SiTC7QiSQuwn8EhISwMoGgyE1NZUkyf3797u7uw8aNOj5559Hmi1MBlR2xLQzDx6vwIEYs0P6V8EPg3IpFIoPPvgAHWPjxo3wOkDZHD+dsHNZrDNP+y9ETsZ9GMK/++47zEVTU1MNBsPdNf5vvvnmwIEDPT09lyxZgpi+mHDaa59MO/NgaaBYLDabzQhBYDAYsEhXp9OJxeLU1FSr1RodHY0rGj9+fFJSEkZznU4H3Get+y7biW7fvt3W1tbS0tLY2FhXV1ddXX358uWSkpKCgoIzZ87k5uZmZWVZrVbcL/h8Po/H43A4+/bt27Vr17Zt27Zu3RoZGRkRERFFaSulLZQiKeH9g79G29FmSmGUQju0adMmmulB8ID19evXd0Z8TA8A3Fu2bEHht27dGhUVRZ/twUvu+AgoOQ36kZGRKMmuXbv27duXlJSUmpoqFApx4zOZTFlZWbm5ufDaLyoqKi0traysvHbtWn19fWNjY3Nzc1tbG0359BuXbX5swe4T94E0BEEolUqZTCYUCuGVrXQxSaVSISWYBnbt2oX7Al79/PyA+2q1WiqVuljZfyoOVppJJJK7rC8UCukU3Q8Z7sO/FhEzkIc5MTFx9OjRbm5ujz32mNFoxA5WqzU5ORnZap988skhQ4bcXZIsk8n4fD5cmlR2xDTu0y0Dj35UKhXcmjE7lMlkWGNAkuS8efPg/RwYGAjzv1QqxTynF9jBWvd/ISOyk3F/6NChBEHMnz8fs1BEugwPDx8+fDhGxri4OJJKMdG/cffVarXBYIDTsEQiSU9P5/F4sPWazWaFQpGdnb19+/Y333wTSQM+//xzmUyGsQK7IVS/nWHDDFovaAAAIABJREFU0WbWuu+ErnebUmtrK+2+f+XKlbKyskuXLuXn5588eTInJyc7OzstLQ1O/AjUhmleUlJSYmJiPKXY2NjdlHZR2tkh/PvgrzvsiD4yThjTIZrXu8xD6O3bKG2ntGPHjujoaGzZtm3b9u3b6bPRx2foTRylffv27d+//8CBA/Hx8QkJCahVHo8HqlMoFMiHk5aWdvjw4RMnTpw/f76oqKikpKS8vBwh/xoaGu513Gdxv93ldYcSuuHt27cdLNWFi7LVakV0B41GYzAYlC4mLC246/UO9OJyucOHD3dzcxswYICPj09YWBge/CLkAzjTpa5Ap9ORJKnRaLBs6cUXX/Sk9JDhvlarxYwKKX+VSuW2bdvwnOK1116DG65er4fpDll1Xn/9dXDzzp074TjowIeYadzXUYI/DzyJjUYjfhuTyQRrol6vNxqN8+fPBzChbVmtVoyV8OBX9VAs7rv8gNk3BXQy7sNaM2vWLIlEkpaWJhKJlixZgiicXl5es2fP1mg0VqtVrVZjbbq9Zsu0dV+lUuERJ0mSKpXKYrEsXLjwyy+/jI+PV6lUycnJe/fufeutt9Djpk6dGhcXp9Fo8DwQK21QQnvld7Cdxf2+adkOj3Lnzh0Y+Jubm+vr669fv15ZWVleXl5aWgoD/8mTJ48ePXr48OH09HTERlOpVLAvpqamJlPidRKXUhIlDoeDfx/8NdGO9nUoLi5ub4f27NmDucfu3bt3Udr5f4WN2CeW0gFKmLokUMIJH7zkjo+As3A4nKSkJC6Xy+PxUKUCgYC+5+r1erPZnJGRcejQoaNHjyLYX0lJSVlZ2ZUrV65evVpbW9vY2Hjr1q0uwd9Y3G93ed2h9LO4jwGWIAhEK4GVE5YUpSsJJp7k5GQOpT179nRequvn5ycUCjF9ValULjhdgaFKrVZbrVaSJB9W675Op9NoNAKBQCaTwX8gNDSUIIghQ4Z88sknCLJBkmRycnJ2dnZKSopGo5k9ezZiuwYEBGi1WolEAgOPqjsxjfsqlQqLVEQiEdJs4XKUSiXS/UokEmQc/Pjjj5FyJTg4ODk5GTcnk8nE4r7LD339WUAn4z7W+z/22GOTJ08eN27cqFGj6Ajir732msFgSE9P12g0aLQOlpgzjfsymUypVCJftcFgUCgUdGTizqlShg8f/vTTT0dHR6elpWFmjv6IVQeYKnQ3bDjaxuK+E/oDaKOtrQ24X1NTU1VVBQN/UVHR+fPn8/LyTp06dezYsUOHDmVkZBiNRnhIwqlA2iEBJT4lLO1IoYQtD/4KDwF7r/bOnpKSkpyczOsQt5OwDWydkpJClxCHok9Eb2foDX063NckEglqFAFMjEajxWKxWq006x87duzMmTOFhYWlpaXl5eXIp1tXV9fU1ATc74z4nd87oS2xp+hFDaAD/izuw0Du7u4Oo61CoYBXtsrFJJfLhUIhWrVIJEpMTKSX6t5NVhUcHIzHxXq9vnfO1UxfrkKhEFGCw8ukSZPc3d2R1+xh8t3HcxPMq0wmU1JS0rx587y9vYcPHx4SEqJQKPCMHliMIHqBgYHDhg1zc3N79913RSIRVg3aq24n4H63p8bKXRggtVqtUCj829/+5uPjM2LECD8/P4VCwefz4V3Q7dd/dqOGEht3v/1RF0O4j4Ul6FByuTw9PT01NfXzzz/HczPaZuPp6Tlw4MAhQ4asXLkyPj7ebDabTCa1Wo30tA4CWTKN+4jMg6XwarU6NDT0d7/7HQqPVKYwGfz3f/93eHh4Zmbmz3ao+9+BxX0n9DmaNmh/nuvXr1dXV1+5coV24j9//vzp06dPnDhx7NixjIyM9PR0m82GFeSIv4TM6xgqnfyqpoRGpaSkoARollASU8JdHNtllOSUsD+Og8KTlLSUnHM5JEnqdDo8XTcajSZKFoslLS0tKyvr8OHDR48ePXHiBKJ6FxYWFhcX0248N2/erK+vb25ubmlpaW1tbWtru337Ngv6Tug7fXIKugOC+O058yBuCkEQtOkED37R8h/8tXNfgAu7RqOhz3X/x0c4B7FYLBAIEhMTuVwurEJ4mh0cHAxQxEJQGJLu/+DO2RPu+0DKyZMno+T20mwlJiYKhUKSJNPT03NycvLy8goLCy9fvtzPWXXhr48rgYVm9+7dS5YsWblypUKhSEtLQx4rnU4nkUiQSlMulwcEBKxcuTIqKkqv19Mhlrqt9P7CfYAIfhu9/qdgtAcOHFi6dOnKlSslEonNZoNrAUmSiAXebeEdbMRwz+J++6MuhnAfvs4wFYhEIjy+3LBhw5IlS/7+979/+OGHs2bNWrhw4apVq/bu3SuXyxMSEkiStNlsSqUSM1XHYy7TuK9Wq5FpC/l9jEajWCyOj49fsmTJZ599tmDBgsWLF8fExCiVSjwGddCVevoRi/tO6HM0bbS2tt66devmzZs1NTVXr16trKykbfwXLlw4e/bsqVOnTp48eeTIkcOHDx86dCgrKysjIwOhz6xWq7mfBDI2mUxGSgZKmISA2jGAg+ZBSOB4HSV9h3AcXISFkpWSEy4Lp7PZbGlpaenp6RmUMjMzs7KyDh06lJube+LEiby8vHPnzp0/f76wsPDSpUulpaW0G099fX1DQ0MLJRb3ndBl+vYUdAekcR8ZMKqrqzun2WIa92UyGezuVqvVZrMhTqMDM5O9wfyXgPtr164NDQ3dsmVLXFwch8MRCoXIqutCuE87w4jFYiy802q1YrGYJEmEdtJqtUajUalUAveFQmFmZibi+SgUCkTwdEAe/YX7MIrgCZdcLse/aItGo1GtViPZrUKhEAgEDgIa2mu+LO737ejmskdjCPeVSqVcLkfMSoFAgPeIs9EtjiCuNjLspqamokk76HdM475GowEeqVQqDOVIB2Y2m7GQRq1Wp6WlZWZmIkCnvX7Ui+0s7juhs4A27ty5A3+ehoaGuro6ED+8ehCX88KFC+fOnTt79mxeXt7p06dPnToFY39ubi4mAIf7SYcoZVM6SCmLUnqH0ijZOoTNNFKDqrOysnAEHA2XcoQS05d16NChw4cP41w5OTm5ublHKR07duz48eOnTp06c+ZMfn5+QUHBpUuXiouL4bJfXl5eVVVVU1Nz48YNLNJtpdTGmvad0Gf69BRdcL+lpYXGfQTIiomJwUNgmJnpe0HfWvfhoYco7SKRSCqVYtWWqod6VHHfzc1t+vTp33///VpKYWFhW7du3bdvH5fLRaDLjIyM3NzcvLw8pMLoZ+s+CAMxsBGrXqlUwuAtFAqR9B42ciTRlMlkSLvL4/FkMhnCqeLJfrcNoL9wX6PR4JEQ3kilUqT/hGspn8+Xy+V4WCEQCByUv9uLQtBxjUbDWvfbH3UxhPvId4G5tFQqxVzaarUKBAI6ArHBYIA9EnNLLECHayOMjhr7+S6Yxn25XK7Vak0mE7wtYSxA0kQkvMMSmuTkZJlMhuQY9rpST7ezuO+EPnfnzh2c5fbt2/Dnqa+vv3HjRk1NDbx6KioqysrKiouLCwsLCwoKLlLKz88/f/58Z/o/1U862aETlI536OjRo7mUciiBp48cOYKNnan6GKUTJ050HOnkqVOnTnfIOZeFs+Xl5Z3p0NmzZ8+dO0eDfmlp6eXLl8vLy69cuVJRUVFdXX39+nWw/q1btxB/E6zPevKgPT8sr/fiPhLeXb16lcZ9gD6juI9bD15hJFUqlax1n3bm6Yz7fn5+mzdvjoqK2r9/P4/Hw6LWzMzMo0ePnjlzxiVwH5FENRqNTqczmUx0rkStVqtUKumAPEi4q1KpYHrElAAsgtQJKjvqL9wHeSgUCqxnMhgMmPUiuBCWsSPGqEwmc4BNdi6Ljbv/sAybD1pOhnCfJEk6Nxz8+BGvBgCNlHYySgqFAs/WMGXFo1WLxQL/H3vtk2ncV3QIDp20kzE9nsALE53OwVJ+e+V3sJ3F/Qdt0/fxfRr329vb0QWampoaGhpu3rx548aN2traa9euwcx/+fJlcH9xcXFRURHo/8KFC/mUzveTMPE4f/78OUpnO5TXIZA0Te0dGH8an4Ouwdbwljl//jyu6AIlpi8L5+p8xgsXLlBTqosFBQVFRUXFxcVlZWVYlVtZWXn16tVr167V1tbSrA+X/duUwI6df9P7aALsLv1ZA11wv7W1lcb90tLSwsLCnTt3OgH3sfwG8c1hoVepVOB+VU/0yFv3/fz8/P39w8PDo6Oj4+PjU1JSEOvy4MGDx44dO3v2bFFREb2uprGxsa2t7d7mRXTpoq2trY2Njfjhq6qq4MWFZzrw4goKCgLRgh6wBtcBzgIssN4fJkNE9Var1Tqdzmw2kySJGElGoxEBNzUaTXp6OqJbAllgj+z21+8v3KejixoMhrS0NISKw8QUJVcqlSKRCCZ/B4FEu70o1rp/b0t9VLcwh/tICoF4mkhmJxQKgcskSRqNRjOlzjFPsLAethYMwfbaJ9O4jwdiMpkMD/0waAiFQpvNZjabOztJ9+LeYO+isJ3Ffef3NaTcunXrVlNTU2NjIyz9gP6rV69WV1eXUwL6l5SUFBcXX+pXdS5AEaVCSgWUwM0A985ITfM0dissLMR3i4qKcDXFHXLOxXWc7f//LSkpKS0t7Qz61ZTq6upu3LhBJ9VC5M07HWpn9bDVAH46arL200trayvi4V67do3GfYRGAPQz5MwD8y79ihARvfCG+IXgfkRExLZt2xISEuA/YjKZsrOzjx8/fvbs2UuXLvU/7sPsLe+QhBL+U6lUtFkR9I9Vd2Kx2GAwIPpvSkqKXq83GAwqO+ov3Md5wfcKSnK5XCKRYH2hQqGQSqUikQhLCemuYuciutkM5GKdedofdTGE+4iugy6G7BCIoQZfSbRVGv3h1YM0H7CaY/R0MI1nGvcRnwGPBK1Wq8ViweCACQBc5rCIX0slRe+mC/V2E4v7zu9zcOJvodTc3Hzr1q3O0F9bW3uVUnV1dVVVVWVlZQUleJjgvZNf6TJUVFRcoURPSC5TKqNU+n+FjdgBTjL4Fo6AS6ik5OTLoU+Hs1dVVcGcf/369Zqamtra2oaGhsbGxqampubmZpr1nd9O2DP2VQ10wf22tjYa98vKyoqKinbu3OkE3Ie/PgK6aCmBrFQ91C8B9wMCAiIjI7dv356YmCgQCJRKpcViOXTo0PHjx8+dO+cSuI+HNZi9yeVysViMUhoMBp1Oh0cEVqsVobVVKlVaWppQKFQqlUKh0Gg0ymQypOKy9+v3F+5j+QFW5SI8ORqryWRCy9Pr9TpKSABhr/z2trO43/7LEEO4L5fLYQVHRmdYTdBc1Z2E+QDmq0glYTabMbtG7Cl77ZNp3Ic7nEqlkkqlNNZbLBbY8mEdgGOSXC5PSUmxV85ebGdxv196HkyMrZQ6Ez/ce+oo1dbW1lC6fv36tX4V1hjQxcBsBA8iYA6vogR67vyK7diH/hbN1tcp1dTUMH1xOBFdfvp0dAFqa2vr6upuUqqvr0d8fZb1+6VrMHHSbnEfDQ+4v2vXLifgvsFg2L9/v6+v7/z58xcuXLh27drU1NTs7Oyejtu/NNwHJAP3T5w4wRTuh4SEqNVqOMvC/x4ob+/n6YQWjLzF2ekZIcztdM6FpKQkJCyAP9K8efOA0fe+MlK4BzgoPNjoTL0EQfzqV79avny5n59fUFBQeHj4jh079u3bB9AxmUwHDx48evQofvXLly9XVVXBJEMP0EwMGewxH7wGGMJ9e/2xr7Yzjft9Vc6eHkepVG7YsIF2X3R3d1+6dOmqVasCAgI2btwYHR0dFxfH5XKlUqler09LS8vJyTl9+nRBQUFZWVllZeW1a9du3rx569at2x3CbbWd1f3VwJ2ObLutra0tLS3gfnj4NHanBjsCpzL3iunHva837AhmcsxVQNL4LnMldHxkO9X209oJBNRH4B2sx21ubr6/X4/d66GpgS6439LS0tTUVFdXV11dDWe52NhYDIN94swDVkQwGbPZjLSq33///W9+8xvkw/Lx8fH29iYIYubMmWKxWNVDAfcRlILH4yUnJ9/NruXu7o7CP3jcfSweU1ASiUTBwcHvvPPOlClTpk2b9uWXXx44cMBgMCQnJ+OhulAo7GHxf9q927j7bm5uL7/88tKlS9evXx8UFLR169YdO3YkJCSIRCK1Wm2z2Y4cOXLy5Mn8/PySkhLcgOrq6rr47tMe+z323Ud+MjhXIZcyScke2d4L1n27BR4IsPnRrC+XywWUOBzOfeJ+35bqwY/G4n77L0Ms7vdiZGTuKyzu93u3A4i0tbXRxA/ov9Wdmuyou6lBX26r76EwC6BY+qfsVBA8ZPqyWPd9LDvV9tNq6c5+O1iP29ra2u+tgi1A39aAk3FfLBZbLJaMjAysaVSr1f/617+ee+452rBCv1m4cOHhw4dVPRTTuC+RSBAdns/nv/3228OGDSMIwsvLC8m8nn/++ejo6NTU1IyMDKFQCBzt4RW4Ku4jsz2i6NAL6ewBLiYDzL3Szjz04m54z/MpcTiciRMnYoZHEMS8efPsTUuYK2HvjgzcnzdvHt0NxowZw1r3+3bIc4Wjsbjf02GR0f1Z3HeFToEy0JZ+oD/8fLq8wt3/3tcuu/X5v/eeEVu6m5L8tA3OMPgUmWixf58X7D4P6KD8dPHo5Fm3b992nVbBlqRPasDJuE9naocNe/ny5T4+PmCbv/zlL3v27CFJMjk5OSIiIiYmphehTZjGfUSUIUlyzpw5gwcPJgji1Vdf/fDDD//85z/jKsaMGZOUlJSammqz2XoXKc5FrfvA/S6ReXoHtQ/+LXoipaTyCskoSaXSVEqJiYkTJkx4GHFfqVSqVKouuO/r68s68/TJYOc6B2FxX+VKYnHfdboGSgIusffa4TPV9S/TV2GvPG32hSLii0wX72eP37W+Ov5H8emi/uxx2B0e0hpAO+z42W8z7cwDsyyXy1UoFAkJCSNHjiQIYujQocHBwVwuFys8kWxLoVCkpaWpeiimcR8LTSMiIgD3f/jDH7AoTiqVLl68GBtnzpwpk8kQNa6Hxf9pd1fEfToQJ0JwIsKmPdO+E7bTaw1h1JdSkkgkKZQSEhI64/78+fPt/QxOKGqPToFME3PnzkVLIgjimWeeWbZsGYv77Y+WWNy31yX7ZTuL+49W93L21dibBji7HL09H+3m29sDsN97OGrAybgvEomsVqtIJBKLxe+++y5BEEOGDJk9ezbSsCKHutls1ul0crmctuGq7ltM475AILBYLNOnTwePpaamIlq6xWJRKBSTJk2CV09iYqJUKn10fPcDAwMRdx/ZN/Hb2POQ6cXPdt+/7//uSPvry2QyLNSQSCRisZhHKT4+fvz48TQxO8D9np6X6f2R/IjF/fZHXSzuM92VenR8Fvcf9Q7HXh9bA2wNtDsZ93U6HazXQqGQIIgBAwYMHTp07969AoEAhmNkXFWpVGKxuBeBy5nGfZlMxuFw4Kz//PPPa7VaHo8HjxK5XP7VV18RBOHp6fndd98hd42q53JF635gYCD89YH7MpkMrK+wIznDQjRx2rQP1heJRDxKBw4c6IL7SjtiuJg9Pjxw/6OPPqLnKqNHj2at++2PnFjcV7mSWNzv3x4GCrn3tX9Lde/Z7y0htty7J7bQ+9vbgd3O1oAzawAN0mnOPOnp6SKRSKFQLFu2DItcZ8yYYbPZtFotwkMj2jJimlutVlUPxTTuW61WX19fRCZdsGCBWCw2Go02m02tVptMpjVr1owaNYogiDlz5qSkpPTCGclFnXlo3Iddn8Z9ezwLZ3rmXnFe2rQvFotFlLiUDhw48MILL9DEPH/+fKUdMVfC3h0ZzbcL7i9dupR15nHmmOiEc7G438OBndndWdx3Qpt3cAqaP/Dmzs/J3qF+7nsP+nmbHdkrD3bvfFHY80HL0dvv2ytn5+2dj915O/v+EagB/Lh0d2Pad18qlZooPfnkk8OHDycIYuvWrbAUGwwGmUxGhxTXaDRSqVTVQzGN+0aj8YsvvoAP0vz583U6nUajEYvFJpNJKBSmpqbiowkTJuh0OkxaengFTvHdb2tro9317ty509LSUl9fX1dXV1VVdeXKlaKiovz8fBqX3dzcgoKC5HK5TqdDnH+FQsHn85EcV9KdxAwLDjygfKFQKBAI+Hx+amqqQCBISkravn376NGj8Uu4ubktXLgQ/kW0CxDt699d2X/axnDx7R5eoVDweLz33nsPle/u7v7MM88EBASsWbNm/fr1YWFh27Zt27t3L4/HUygUBoMhMzMzNzf37NmzRUVFiLuP8Kts3H3XHJrpWymN+zdv3qytrb127Vp5eXlBQcFLL71EEIS3t7eHh8ecOXMc+Mv1y0f3Zrqgp9x3Yyq/++67bm5uiKM8efLkpKSkfilkL04ql8tDQ0PR6RA7YsWKFatWrVq3bt2mTZu2bdu2b98+Ho8nk8kMBkN6enpOTs6pU6fouPvXr1+vr69vbm6m76P4oV2zEbKlYmuArYFfZg04GfeVSqXValWr1RhUPT09NRoN8jmq+kJM477FYnn//fdxX1iwYIFMJpNIJEqlks/np6WlaTQad3d3Hx8fNzc3hKfvxTV168zj7u7+6quvLlu2LCgoKDg4ODo6OiYmhsPh9DLufk9xPzg4GCFI+Xw+bvApKSkymUxoR1T4ewZfcFqa8pMp8Xg8DofD4/H2798/bdo0YBNBEO+99x5s7fdOEuwU/6f5Q79Iq9VKJJJPP/104MCBPj4+Xl5eI0eOXLJkyerVq7vgvlwu1+v1nXG/rKysqqqKxX1XHsft4X5ZWVkhpRdffJEOVTZ37txekCujX7GH+0iKjvBkiIg1ffp0PPRktDx9dXCpVBocHIxhffDgwe7u7mspIc3Wtm3b4uLieDyeVCqlcR9pti5fvlxZWcnivit3OrZsbA2wNYAacD7um0wmHo+HpFojRozA8lxVH4lp3JfL5Z9++inC7X/66acSicRqtZIkqVarhUKhxWLBLeOJJ55ATMVeXJYr4n5oaKhAIEDiepFIJBQKeTyeWCxOtiMew8JpeTwel8tNSkriUEpMTIyKioqJiYmIiJg4cSJWUXh6en700Ud4AkBPD1JSUuwU/H83M1x8u4fncrm7d++eNWsWmhFBEE888YSvr+/q1avXrVsXGhoaHR29Z88eLpcL3M/IyMjJyTlz5kxRURGL++0uL3u4j6SGRUVFY8eOHTRoEFY1LVq0SOmSwsoZTPsxhY6LixMKhXgqhenKhAkTsHrJJa+gm0IFBQVhSRa63g8//ODr60tb92ncR1bd3NzcvLy8wsJCFvddvs+xBWRrgK2B/62BO5Toh5BMO/MolUqdTrd161Y88h0/frxGo1H1nZjGfbFYvHnzZoIgRo4cOXbsWI1Gg0CcCoWCy+XabDaa00DtvbgyV8T9r7/+OiAgICQkxN/ff926dXAvCQwMXN3fWrVq1UpKKygtXbp02bJl//rXv8aOHQvrvqen5+9+9zt/Sn6U1q5du4ZSf5e9m/P7+fn5+vr+9re/dXNzwwKRUaNGLVu2bNWqVQEBAZs2bYqKioqNjU1KSpLJZDqdjsb9wsLCsrKyysrK2trahoYG1pmn3SWF0fbOnTtdnHmuX79eWVlZVlb27LPPPv744wRBDBw48He/+12Iqyo4ODiIUiCl9evX381Y/sYbbxAEAev++PHjw8PDXbX4XcsVFBT05ZdfjhgxwsPDw9PTc8CAAWvWrAkODl6/fn1oaOj27dvhzCOVSoH7x44dwxy7vLy8qqoK1v1bt27R91H80C7ZBtlCsTXA1sAvtAacjPuI7OLv7+/p6UkQxCuvvEKSJIhZ1RdiGvdJkhQIBLgdEwSRlJREkmQmJaPRuGzZMg8Pj8cee+zupSko9eKaXBH3MYnBb0ZPaMCj9L+u84Z2h0AJsUbEdYrnuCR0Jbu5uXl4eDz55JNLlixZsWKFv7//xo0bt27dunv3bg6HI5VKtVptenr6kSNHYGgsLS1lcd/FR3F7uF9WVlZeXl5aWjplypRRo0bBzOzl5eXmquq2Dbu5uXl5eeG5LZ6tuWrxu5bL09Ozs2nfw8Pjhx9+8PPzCw4ODg8P37lzZ3x8fEpKilwuNxqNGRkZx48fP3v27KVLl1jcd/EexxaPrQG2BugacDLuKymtWbPGw8ODIIjXXnuNJMleLMlV2RHTuK/T6UQi0V//+leCIHx8fN59910+n69SqbRabXBw8MiRI8GWU6dOFYvFvZvGuCjuu7m54aYI6527u3vnG2SX23/X22lf/9/ldPS/npRQwgEDBnRG526LQH+xy5tud3bCRnhx4MnXwIEDPTw8Ro0a9e233y5fvtzPz2/Dhg1btmzZtWtXYmKiRCIhSZLG/YKCgtLS0oqKipqaGqwabG1tZbOg08Oci7yxh/tXr169fPlyXl7eq6++2rkpOqHJ9eIUnUuI9/RQgK7n5uY2cOBAWPp7cXznfwVXQT9SGzJkyMqVK0NDQzdt2rR169bY2FgOhyMQCFQqlcViycrKOnHixLlz54qLi69cuVJdXc1a912kf7HFYGuArQEHNeBk3FdR2rhxI+4LU6dO1Wq1vYtgg0N1eWUa9/E4d8eOHePGjcM94uWXX37vvffeeecdgiCwQJQgiJdfflmj0SBHapcS/uy/roj7mJwhhRh9s3dg3Wf6hk2XocubwYMHg5Xporq7u9OF77Kzg3+ZLr+947u7u9NTFBQPcfeXL1++du3akJCQyMjInTt3JiQkiMVijUaTlpZ2+PDhvLy8goKCkpISFvfbXVv2cL+xsfHy5ctnzpz57LPP6GZJt2R6i8u+wfM0OkzBvc3YZUuOgj322GMeHh70pOXxxx9fvnx5YGBgeHg47cmDCbbNZjt06NDJkyfPnz+PHsfivmv3ObZ0bA2wNfC/NeBk3Fer1RqNJjY2FsPs6NGjtVqEjX5qAAAgAElEQVRt77BY1Z2Yxn2JRGKz2SQSycqVK8ePH48bxMCBA0eMGDFw4EAkExg0aNAf/vAHk8mkVqu7K+PPbHNF3KfJozM6Y8bW7Y3cHs721fZuT9p5I07Uecu97/ux/PbqAYVEJdO++999952vry+N+zExMQkJCQjJBNw/ffr0xYsXAR90kBDWut/uerKH+9XV1ZcuXaqsrNy3b9+oUaPQ3YYNG2avnfTXdroTdSkAvb3zGw8Pjy67uey/dLEHDx48atSoGTNmhIWF4WFaTEzMgQMHUlNTsVoGz9NOnTrF4r7rdS+2RGwNsDXgqAacj/tarTY5OZkgCHd392HDhmm12l4HsVHdI6ZxH777hw4d4nK5Bw4c+Prrr994443p06cvWrSIJMnly5fDczU0NBSLku8p4M9vcAbut3fozp07bW1tt27dqq+vv3HjBtYLnj9//uzZs/iFcCMMCgpSKpX4qfDYQkPp56+GyT0wd1Sr1QqFAiFRUyglJCRMmDCBpvl58+YxWYq+PLZSqVSr1QsWLKD546mnnvr+++9p3I+IiIiJiYmPjwfuw9Z46tQpGvdramoaGhqamppaW1vbO8R69XTUhKv8pftdQ0PDzZs3q6ury8vLL126dOHChTNnzhw9ejQjI8NkMqlUKpFIxOFw9u7dGxMTExUVFRYWFhISEhgYGBAQsHbt2pUrVy5fvtzXiVrWoaWUfqT0fYeWUFpM6bvvvsO/975ihyVLlnz//fc//PDDjz/+iKMxfR0oLc6F68AZV1FavXq1n5/f+vXrN2zYEBYWFhERsWPHjr1793K5XJFIpFQqjUZjVlYWMl1cvHgR7nPV1dU1NTWNjY1tbW2u0rzYcrA1wNYAWwP31ICTcR+UaDabCYIYNGjQgAEDtFotMumazWaDwSCVSsVisVQqJUny4MGDqh6KadxHwfR6vUKhSElJAQAjd5jZbH7rrbfAaYif3sOy/+/uLO7fb72xuM/ifvtDq7a2tubmZuD+1atXr1y5UlxcfPHixbNnzx4/fjwrK8tisWi1WrlcnpycHB8fD+LfunXr5s2bN27cCOj39/enI03Rb9YwrNWUgMhUWKyfphwQ6BkkvXTpUnv4TqP28uXLV6xYsXLlShyN4YKvoU+0atUqXAXOGEBp3bp1gYGBGzZs2Lx589atW7dt27Zr1679+/enpKRIpVKNRmM2m7Ozs48dO3bu3Dnk2KqoqKiurq6trWVx/6HtiGzB2Rr4pdSAk3HfarUmJCRYrdZnnnkGq1rXr1+v0WhgooXJMiMjw2g0Il2SqodiGveRRlcul2dlZaWnp6empgqFwmPHjolEIpIkfXx8hg0bNmHCBKFQqNVqSZLsYfF/2p3F/futNBb3Wdxvf2hFx+Ksr6+/du1aRUVFSUlJYWFhfn7+qVOnDh06lJaWZjabNRqNSCTi8XgJCQlxcXE7d+6Mjo7esmVLREREWFgYuD+YUkhISJCzFEhpPSVE5kWsW39/fz9Kaynh/b2v9Kf+/v4BAQHr1q1bv359YGAg08VHgVF4nAtVt5HSpk2bNm/eHBkZuW3btp07d8bGxu7bty8pKUkkEqlUKoTgPHLkyMmTJ/Pz84uKihCW5+rVq3V1dU1NTewztIe2L7IFZ2vgF1EDTsZ9i8XC5XK1Wu3HH38MQ/jMmTMtFovRaIQlS6VSmUwmkiQVCkUvsu0yjfsymSwzMzM1NZXL5VqtVtyRORyOVqv96quvhg4dShDE6tWrsaxLq9Wqei4W9++3zljcZ3H/4R2kgftNTU0NDQ01NTVVVVWXL18uLi4uKCg4e/bs0aNHDx48aLPZ9Hq9XC4XCATJycmJiYlxcXG7d++OiYnZvn17VFRUZGRkeIciIiI2O0VhlEIpbaK0oUMhlMDQP/saEhKyYcOGjRs3btq0CUdjuvihoaEofFhYGM6FyttCaevWrdHR0Tt27ADox8fH83g8oVAI1rdarQcPHjxGRdy/ePFicaewPDdu3EDQ/Ye3NbIlZ2uArYFHvgacjPsKhSItLU0gEOzYsQN5kJ566qmUlBSBQKChhFSMckp6vV7VQzGN+2KxWKFQiEQig8Gg1WpjY2PNZnNmZmZ8fPyTTz45ZMiQUaNGyWQys9lMz156eAWsdf++K4zFfRb32x8q3blzhy7vnTt3Wltbm5ubm5qaamtr4c9TVlZWXFx84cKFkydP5uTkZGZmms1mtVotkUiEQmFKSgqHw9m/f39cXNyePXt27doF7t++ffuOHTtiYmK2Ma9oSlGUtnYoklIEJQD0z4J7eHh4REREZGTkli1btm7digMyXXwUPjo6Gifa3qGdlHbt2rV79+69e/fGx8cnJSXxeDyJRKJSqYxGY1paWlZWVk5OzunTp/Pz8wsLC0tLS6uqqq5du1ZTU3Pz5s3m5ubOPy79K7Nv2Bpga4CtARepASfjvlgszs7OFolEYrF44sSJMPB/8sknGo3GarXCj58kSavVqtPpehGxh2ncNxqNIpFIr9fDtzY5Ofnw4cN3fZBef/31QYMG3U2/tXnzZrFYbLFYTCYTDEOqHoq17t9vhbG4z+K+iwyj91mMLkTY1tbW0tJy69atGzduILFueXl5WVlZUVERPPiPHDkC10aNRqNUKqVSKcz8PB4vKSkpISHhwIED+ykdoBTHvPZ2aA+lWEq7OgRujqG0w76ww86dO0HYsbGxOBrTxUfZcZZ9lFB78ZQSEhISExO5XG5qaqpIJJJIJBqNxmg0pqenZ2dn5+TkINx+YWFhcXFxeXn51atXa2pq6urq6uvrW1pa7rMNsLuxNcDWAFsD/VIDTsZ9jUaDgGYikWjDhg3A/UGDBq1atWr//v2IXCmVSkUikUKhsFqtqh7KCbivVCqzs7PxOEKlUu3YsWPs2LEEQXh5eb3zzjsmk0kkEmk0mt7l2GJ993vwg7O4z+J+vwyavT5pF9y/ffs2DPw3b96sqamprq6urKy8cuVKSUkJPPhPnz6dm5ubmZlptVpNJpNer1er1XK5HHGoRCKRQCDgUxIIBDD/pzCs5A7xeDxuhzgdSkxMTOhQfHw8JiH3vsbHx4OtORxOUlISl8vlUWK47P//8KmUUHV8Pl8kEgkpIUyEUqkkSVKn08Gun52dnZube/z48by8vAsXLhQXF5eUlFy5cuXatWu1tbU3btxoaGjoHAir182D/SJbA2wNsDXAXA04GfcNBgOfzzcajQKBQKlUfvjhhyNGjAD0v/zyy4sXLw4ODl68ePGcOXOWLl3ai2y7TOO+UqlMTU1NT09ft27dkiVL3nzzzZEjRxIE8fjjj//2t7+VSCRisVin06nVaqFQ2AtnJBb3VfcvFvdZ3GduZGTiyPZwv76+Hv48VVVVFRUVpaWlFy9eBFyePn06Jyfn4MGDmZmZaWlpJpNJp9PRcQAUCgWGPKVSqVKppM6ShJKYElhZ0CEwNHi6Y2rQ9S9N25il4GmvRCJxQvFlHZJTUlCixxy1Wq3Vag0Gg8VisdlsVqs1MzMzJyfn+PHjJ0+ePHv2LNJXIwTn9evX6+rqWNxnoqewx2RrgK2BPq8BJ+O+RqPR6XRKpVImkwkEAr1e/+qrr9LpWd3c3OASQxDEBx984ILWfYVCYTabhUIhEmzRWac+/vhjuB4plUo8AUawTlXP5Qxnnra2Npo87ty509LSUl9fX1dXV1VVdeXKlaKiovz8fEzCCIJwc3Prq7j72g6RJIl4TCqVCqTSo4rCd1FTIB6YPIEcHA5n0qRJdKuaP39+jw7ejzv/bNz9yMhINs1W+yOnpqamxsZG2PjRB0tLS0tKSs6ePXvmzJlTp04dP348JycnOzs7KysrIyMDJGqxWMxms8lkMhqNBoNBr9cb+kl6vZ6ehGg0GvQgpVIJmFZSwkY1JY1GQ1LCeKDrENPFN9qRyWQym81A/PT09MzMzKysrIMHDx49evTYsWMnT548c+bMhQsXioqKSkpKSktL4bJfV1fX0NDQ3Nzcxkbcf+S6JHtBbA08ejXgZNxHoHqFQqHRaO6yvlKpTExM3LZt27hx44DONO7/z//8j9FoVPVQTFv3cZOSSCRIp/XEE0/MnDmTw+H0sJiOdn/EcV+tVisUCqlUKpFIZDIZpkeO6qO7z35puL98+XI6q+7OnTsTEhLEYrFGo0FW3by8vIKCAmTVrampqa+vb25uZrPqtj88unXrVlNTE23jr6iouHz5cllZWUFBwcWLF/Pz82noz83NBfdnZ2cfPHgwKysrMzMzIyMjPT09LS0tvZ9ko2S1Wu3NQIDZpg5ZOmSlhK/bbDami59hRzTfHzp06PDhwzk5Obm5uUePHj19+nReXt65c+cuXrx46dKlsrKy8vLyioqKmpoauPE0NjayuP/w9DO2pGwN/KJrwMm4T5KkUqmUy+UkScIZVSwWJ/4/9t47Porrah8fNSRAIJptbHCMMWBcMCaOndiJ/SaOE7+vOxgbEyfOGzufbxJXMJgugRC99w4CtZW2l9m+q111DAJhUAGhhnrvWpXVan/2PF/ub78SKyOhsoL7/DEazc7OnHl25s5zzz33nDNnkpKSTp8+HRAQsH79+uDgYHzqgok4WZYVi8V6vf6bb745deqUSCTi8XjR0dFs3+FulvvQ92q1WsdBo9FA/feUvXtQ7q9evXrDhg07d+48dOjQmTNnkOo1Li7u/PnzkPsIMKByfyg2562trS0tLU1NTZizW1FRUVpaWlJSAtGfn5+fm5ublZWFctfp6emXOfzwww+XLl1KSUm5yOHC4CGZw/nz58+dO/f999+f5YDeCNzkSUlJ2Pg9h3M3cZ4Dvj4A5qc4wSUOP/zww5UrV1JTU9PT0zM4XL9+PSsrC0794uLisrKyysrKqqoqxPA0NjY2Nze3tbXZbLaheNdRmykDlIF7ioEBlvvw7stkMpVKZTQazWYzfPwKhQIuHoRmoMJuVFQU20P0t3dfxuHs2bMikejChQvIJtTrWbm3vLi7We4LBAJMyNByQOdPKpXekohuNt5rcv+7775bs2bNxo0bd+3adfjw4ZCQEIlEotFoiNxHZsCysrLa2loEGFDvvn3owGq1IkUPFH9NTU1VVVVlZWV5eTkm7xYVFeXn5+fl5eXk5GRnZ2dmZl7jcPXqVQjT9EFFWlpaKocrV65c5vADB8joS5cu4V98dPny5Ss3Afd5GocBuIKr3eLatWuZmZlZWVnZ2dk5HPLy8m7cuFFQUEC0fnV1dW1tbWNjY1NTU3NzM4bROjo6hs69Ri2lDFAG7lEGBljuYxorkutrtVoM7up0OolEolAoNBqNTqcjPt9eyOj+lvsIQ0pMTNTr9SqV6tixY0qlUqvVsn2Hu1nuI/WSXC6XSqW4CVQqlabn1cjuNbm/fPlyf3//TZs27d69+8iRI6GhochvFR8fn5ycnJ6enpOTU1hYSOX+EG3FbTYbScrZ1NTU0NBQV1dXW1tbwaGsrKy0tBQ5OhHTDzGKZTaHrEFFpgPQD7l27RrpimRkZEBm4yP0VfCN6xwGzHZH3rqu5+bmQt8j905+fn5hYWFRUVFJSUlZWVlFRUV1dTXCeJqbm1taWkjIHJX7Q/S5o2ZTBu4pBgZY7ut0OpVKBRc+wrYxadNsNkskEh6PJ5PJoJ5FHNgeor/lvtFoZFlWpVIhs35kZKTRaFQofsqK0Ve4m+U+puhptVoytw8dgJ5yd6/J/RUrVgQEBGzevHnPnj1Hjx4NCwuTyWQ6nY7I/dzc3MLCwvLy8rq6OsQTU+++fegArXB7ezvycjY3N1sslqampurqarj5KyoqkLSnhEOBE+QPEvKcAJI6lwPZ5caNG1i/wQEm44L62/xCJygoKMAnRRyKi4vBc1lZWXl5eUVFBZmbW19f39DQ0MYBjxjV+kPnOaOWUgbuaQY6ONhuoq2trbm5ua6urqKiIj8//8aNG0eOHGE4uLm5MQyjVqtZDkqlkqxjy+0sNRoNMjdA8cs4yDnodLro6Gi1Wo0UN+gG3M4xHffpb7mPkvZisVij0ajVakSm8Pl8RxvucP1ulvsmkwnDIsTBj85TTym7B+X+2rVrt2zZsnfv3mPHjoWHh0PuJyQkXLhwISMjg8p9+9BHR0cHMvG3tbUhmr+eAzz9NTU11RyqqqrKnaBskABxXFJSUvr/opgDPiWfYLAC/8JeXA3KDvTrFVQ4ATQ9PqzkUMWhtrYWYfoNDQ1NTU0WiwV+/fb2dhsHqvWH/mNHr4AycK8wMMByH1JexQG6VsEBuh+Zl+G11Ov1vZDR/S33JRKJXC5Xq9Uod4PQo7i4OLbvcDfL/W+++WbhwoUvvfTSY489NmXKlOeee+6dd9759NNPe8revSb3V65c2Unuy+VyvV7vKPeLioqod3+oN9tQ/HDzt7W1wcff1NTUyKGBA6bz1nRBbW1tl20DtAHimCzRLamuroZ0xvTWqqoqbMfMBLJew2W5qeXQ3+biLN0v6xxA9H1ra2tbW5vVam3nYLPZOjjYKSgDlAHKwBBhAK0W56n4adHf3n2RSCSXyxGjTzI1w1OOnoBer0fGeqlU2otAj/6W+xqNBlMOkCE9Pj4+KipKLBazfYeBkPudnFJWqxVpv+E4vHHjRlZWFsZ0+jbv/owZM4YPH84wDPKtenl5ubu7e3h4TJgwYe7cuWazGWNGuDO6mcI7WHJfq9XOnDkTNRc8PT1BEf51d3dfs2bNjztERkbKZDKlUmkymXp6V6AfvGDBAkL+pEmTlixZsnr16sDAwG3btu3fv//EiRM8Ho9lWaPRiNTgV69ezcvLg9ynU3WHSMN7W2ZaOcDZD39/MweLi6HJCdA/6bp0MfOdmkNi9InWh9C/rR+P7kQZoAxQBlyJgQGW+2w/o7/lfj+b/9Ph72a5/8gjjzAM4+7u/sc//nH+/PkffPDB9OnTIW3HjBkzb948gUCgVqvFHLrJwzpYcl+j0TzxxBO+vr7e3t6+vr6wHF2X0aNHr1u3zmAwoMciFArRf+3RHUPlvp3CgQH4komz31H3t7gS0AnpunTSC2hyJdu7s6WVA9H61KPvcG/SVcoAZWCIMUDlPutiuJvl/lNPPcUwzJgxYwIDA/V6fVJSUnBwsL+/P3Szm5vb4cOHtVqtXC4XiUTdDO4MltyXyWR+fn4Mw8yYMWMBh3feeWfevHl/+ctfPvnkk+PHj2PGiVqt5vP5vcs4pFKpqHd/iDWi/WYuWmdE+GAEFh0AeP1dZ9nmBJDLXZeuY3n3ljiG7vTbj0wPTBmgDFAGBoIBKvdZF8PdLPefeOIJhmE8PDxWr14tlUoNBgPiul555ZVhw4YxDPOvf/1LLpebTCaVShUREeHspxksuS8SiWDnp59+qlAo4uPj9Xq9moNQKFQqlUgwyrKsUCiMjY11Zr+z7dS7b6e4DQZIN8BFVkgwaKcVMjrRacVFzL5NM27jB6G7UAYoA5QBV2cALR5ppfs7dp/tZ9Bgnvz8/LKyMlR+tFgs7e3t5BYkEfsMWcNnAxa7/+yzzzIM4+Pjs3HjRqlUKhQKIfoXL14MB/+zzz4rFAr1HAQCgbO7ZbDk/saNG2HnypUrYTxyM5FSESKRCMlGhUJhL8oxULlPbla6chcw4ExP3wWXRi+BMkAZoAwMLQao3GddDHezd3/mzJmQy2vXrkVJXYVCIZVKd+7cyTCMl5fX008/rdFo4Cl3wdh9f39/Nze30aNHHzp0CE59xB2JxWKpVCoWi2G5RqNBPbae3lpU7g+t1pNaSxmgDFAGKAOUgSHBAJX7rIvhbpb7zz//vLu7+4/xPEFBQQaDQavV6vV6mUy2cuVKBPnMnTs3NjY2MjJSLpejpNktf53B8u5/8sknDMOMGjXq9OnTOp3OZDIZDAaJRIKETUjOipRSqCd3S+O72Ujlvp3CgQHiHXfYRlcHjgHCf6eVgbOAnokyQBmgDPQRA1Tusy6Gu1nuIzOPh4fH1q1b9Xq9Uqk0Go0qlepPf/oTqrh9/vnn0dHRIpFIq9UqnBcrHiy5/4c//IFhmCeeeEKpVIpEIoFAoNFojEYjQnpQLRhm63S6XuRnpXK/j5q1u+QwJMiyU/RdJ/U56P86o3vQDesrA8gPgRVn10u3UwYoA5QBl2UA7SFpzWjsPjvYuJvl/qRJk5DZZsOGDSaTSaFQGI3G9evXI8LnhRdeCA8P12g0kZGRKSkpyC5/y59jsOT+rFmzGIaZPXu2XC4Xi8UobftjdyUhIUGhUAiFQp1Op1AoZDIZXP63NL6bjT2V+99//31ycvLly5cLCgrq6+uzs7NbW1vr6+sbGhrsdntzc7OdQ1tbG1bokjJAGaAMUAYoA5SBIcoAcf10dHRYrVaSLNjZW95qtZIr7Sr3m5qaampqKioqCgsL8/Pz9+/fj1TpSC9uNptRYUrZKyj6GUqlUq/Xq1SqqKioiIiIU6dOISacYZjhw4ejDpJcLkeyR61W6+wi+tlMp4cXCAQGg0GtVotEIqlUOmPGDG9vb4Zhhg0b9rvf/W7FihVr1qxZv379oUOHDhw4wOPxhEIhy7Jms/n8+fNXrly5fv16QUFBWVlZTU1NfX29xWJpa2uz2Wzk58bKoE3VffLJJ318fPz8/AIDAyUSyfHjx9977z3cXg8//LBQKJRIJElJSUhdr1KpWCcYLLk/bty4UaNGYbbxww8//MYbbyxatEiv15tMJqlUKpfLo6Ojo6KiZDJZXFycSCRyYr7TzT2V+xcuXDh//nxmZubly5erq6urqqpqampQhJVofbvdDvVfU1Njp6AMUAYoA5QBygBlYIgwQEqtkxp/tbW1FovFmfnIitzS0oIdHPfs4EC8+y0tLc3NzfX19ZWVlfn5+QUFBadOnRo5ciSKqzIMExMTo9PpWJYViUQSiUTWQ0DP9N8yPDw8KioqMjKSx+OJRKLw8HDEikPur169GsYrlUoeB8y37LrsPwu7P7JYLEYcuMFg0Ov1TzzxBIJcGIaZM2fO4sWLV61aFRQUdPDgwQMHDoSFhWFqaExMzNCQ+0jEyTAMStIiqeXkyZPfeOONqKgokUh08eLFkydPsj+HwZL7GIUYM2aMj48P1n19fV9++eWDBw8qlUp0H8VisUKhSExMHAC5/8MPPyQmJhYWFl6+fLm8vLy2trasrMxutyMfk8Viqa6uxjMPlwCedmyhS8oAZYAyQBmgDFAGXJMBos7b29tRYxGlDIm1HR0d7e3txN9fVVXV1NREPnX062MjOSAUf1VVVUNDQ3Nzc2NjY1FRUW5u7sGDByFs3N3dPT095XK5UqmEZkXadE1PoOhnIOSbz+fzeDyBQBAcHPxjtVPYP3r06KVLl2IiZXR0tFqt7iZTYj+b6fTwJpPJaDQiIFyhUJBMNgzDPP/88998882qVavWr1+/b9++gwcPhoWFicVilUoVGxubnJycmpp6/fr1wsLC8vJyF/XuIxiGYRiMWYwfPx6/zfPPP//ll1/yeDydTqfX66Ojo+VyOZ/PZ51gsOT+rl27vvjii9WrV//73/+eNWsWrsLb2/v111+XSqXR0dHh4eFk/GsAymylpKTExcUVcygtLS0oKKisrCwoKNi9e/ff//73Xbt2wa9PsrHiIe+4CdIu0BXKAGWAMkAZoAxQBlyHgba2NvLuvk2rbDZba2trY2Oj3W5HXIfjEfDmJ9792tpahP7W19eXlZUVFhYSuQ+H7EcfffTee+/Nnz//Aw7ze4gP+xl//etf58+f/9Zbb7355pvvv/++Y31ShmFeeumlBQsWzJs3b+HChR999NHHH3/cz+b0+PAffPDBvHnz3n777fnz5y9cuBDubw8Pj2HDhr366qtLly719/cPCgras2fP0aNHIyIipFKpRqOJj4+/cOFCWlpaVlaWS8v9xx57DPr+L3/5y/r16wMCAl5++WVs8fHxmTdvHoJ5BAKBXq93QbmPomCYXqzX6//zn//AeC8vr4CAALPZzOfzzWYzIrEMBgPbQ6Ab7XjXTpo0acmSJatXrw4MDNy2bdv+/ftPnDiBWQ1GozE+Pv78+fM5OTlVVVUQ/XV1datWrXJzcxs1atSYMWPefffdtLQ0tBT19fWodkRE/222IHQ3ygBlgDJAGaAMUAYGngHE6MO739raSmL029vbm5ubLRZLa2srlD2J9oHEr66u7hTJ3Unu2+12i8VSWVlZVlZWWlpaUVFx6tQpd3d3Ly8vhPQgdNmTA6ROj5bu/QxHYzw8PMaOHYstCIkZPnw4ZiCQ3dycoJ/NdHp4YhjDMJjUSlzhf/jDH5YsWbJhw4bt27fv27fv5MmToaGhmCyakJCQkpKSnp6enZ1dVFTkut79OXPmTJgwYcSIEQEBARhnUSqV+/fvnzhxooeHx49B/OvXr5fJZDwe78KFC1KplHWCwfLuSyQSPp8vk8nEYjF8+f/4xz8Q2DNnzhwMTUilUj6fbzAYFM4zCzm5LFbF4fblvsFgyOCQl5dXXFzc1NRUV1eHWmZIbMowzJQpU+RyORopK4f29nbSLmA7XVIGKAOUAcoAZYAy4GoMtLe3O6p8Eqzbyc6Ojo7m5mYi9DFnr7W11XG3TnIf9VVra2vhLiwoKNi3bx80KDzNWPfy8kIggxO17HSzo5ztp3U3Nzdvb28vLy/H42NowsPDg4TykxXH3Vxh3dvbG9IXS2LSK6+88u23327fvv3AgQOHDh06w0GhUOj1+qSkpEuXLhG5X1FR4aLBPMS7HxAQoNPpjEajVqs9c+ZMQEAA8tmPHTvWaDQmJCRgwjLrBIMl9zETN4aDQCBAOk7yC0VFRWm1WpFIJJPJ9Hp9N90VJ5fVY7kfGxubnp6ekZFx9erV0tLSOg4rVqyAScOGDUNXxM3N7X//93/tdjsm8VitVqr4HRtBuk4ZoAxQBigDlAGXYoAE5cMqm80GH7/j9vLy8rNnz4aHh+/atWvVqlXvv//+7Nmz30O9JiAAACAASURBVHzzzdra2q7X0knuNzQ0tLS0IJtfAYfw8PAHH3wQ7vyRI0e6ubkR3U9WiOD52RWPfgYM8PLy8vHxIR59OMi9vLzItFdPT0/0B5z1S/rZTKeHJwS6ublhsgS2jB8//qOPPvL399+9e/eBAwcOHjwYGRkZFRXFsqzRaDx79uwPP/yQkZGRk5NTVFTkunJ/xowZSGuzYcMGlmXVarVKpYqOjpZKpTNnzoQ2DQwMFIlEZ86cccEyW3w+H70UjUaj1+s1Go1arZ40aRJGvo4ePcrj8bRarcFgEAgE3WQWYp2gp9795OTkCxcuZGVl5eTkVFZW5uTk1NfX22y2hQsXDh8+HPPrcd/7+vq+8sorcBJQud+1HaRbKAOUAcoAZYAy4GoMtLe3V1ZWpqSkREVFbdy48Ztvvpk/f/6rr746Y8YMX19fIhnhHvby8vLz8/uf//kfXEVDQ0M3sfv4yGq1lpeXX79+3WKxFBYWrlmz5le/+tW0adOeeeaZ6dOnz5o16z4OzzzzzEM9xMR+xuTJk8eOHTtu3LgHHnhgwoQJY8aMmTp1qp+fH047evRoX1/fcePGPfTQQ4888sgDztHPZjo9/KRJk8aOHTtmzJiHOTzyyCMTJ06cNm3aa6+9FhAQsGvXrr179+7atWvPnj1isVjJgcj9q1evurrcnzZtGtJubty4UaVSIRSJZVmdTvfqq6/ifv373/+Oqcqsc/S3d99oNMrlcgh6iURiMBhQ/AuFAmQymVQqNRqNarVap9PNmDED3begoCA+nx8dHS0UCjFh1/kV3PqTnsr9pKSkixcvXr16NS8vD1FctbW1mJu/d+/eyZMnk7bA19fXx8fn4YcfDg0Ntd8ERvqwrKiowLzemx/aHV0IZCNdoQxQBigDlAHKAGWgrxhAhH1jY6NOp+Pz+Vu3bv3666/ffvvtF154YebMmePGjSPvcRLb7bjFcR0iKiMjA/k3SaD/LU21Wq0tLS2NjY01NTWYqpuXl5eTk3PlypXk5OTY2FhkrOfz+adPnz569Oju3bt37NixefPm9evX+/v7r1q1auXKlStWrFjG4TsOSzksGSh8y2HRokXffPPN1xy++uorrHz99ddfcfiSwxdffIF/8ek3N7Fo0SIc5Ntvv4XVuISlS5f290WAsWXLlq1YsWLVqlWrV69es2aNv79/YGDgpk2bdu7cuX///qNHj545c0YgECgUiujoaMzTvXLlyrVr1/Ly8kpLS6urqxsaGpqamlpaWhzTNJFffNDy7r/wwgsYYfH391er1RqNBjmSfgxK+fDDDxHP8+GHH8bFxcnlcplMxjpBf8t9lmVJdwoFs0wmk06nUyqVqJUbFxenVqvDw8MlEsnMmTNxUYcPH1YoFCqVSqFQaDQapVLpxHynm/tK7kPxnzt3bs6cOQzDTJgwAS3C8OHDfXx8li9fbrfbsU97ezsKNNgdgPReDhvoKmWAMkAZoAxQBigD/cJAbW1tW1vb22+/DRXEMMyIESPc3d0hLfD6RrxHpzh1fER2YBjmnXfeqa6uJt46koC/q92o0tXU1FRbW1teXl5UVHTjxo3c3NzU1NQLFy7Ex8fr9XqlUikUCkNDQ0+cOHHw4MF9+/bt3Llzy5YtQUFB69atW7t2bUBAwBoOqzmsuomVA4UVK1YsX7582bJl3333HTR6J70ONb948WJHNU+kNtT2Cg4wGVewevXq/r4CMObv7/9jNPu6desCAwPXr18fFBS0efPmHTt2/Dip9ciRI6dOnQoPD5dKpWq12mw2JyYmXrx4MS0tLTMzMy8vDzW2IPdbW1sdR3LIzz1ocp/MIl23bh0C3wUCQWRkZHR09J///Gfk4//000/VajXLsnK5nHWC/pb76Iqo1WroexQz0+l0SISE2hNCoRB9FXS+PT09JRKJTqdD4D4S1jox3+nmvpL7dXV15IdftmwZ2gL0+zHX/rnnnispKUG6LvtNNDQ0wBnQaWLQzc/pX8oAZYAyQBmgDFAG+pIBMq5eUFDgxQGxuETKI/r8Z+eb4hVPMnPg/e5YZquT0Ujnb7FY6urqKioqiouLCwoKbty4kZGRcenSpaSkJJPJBAd/ZGRkSEjIyZMnjx07dvDgwT179mzfvn3r1q2bOWzksIFDEIf1A4VADuvWrQsICPDnAAc5eiBr1qxx7ITAfY4dILIDOOAgUNsQ3ANzFUFBQRs2bNi4ceOmTZu2bNmybdu27Rz27Nlz8ODB48ePnz59OiwsDNNEDQZDXFzc999/j8D9rKys/Px8VFtqbGx0VlLXbrcPmtzHVN0fp1Zs2bJFpVJBEyPL/i9+8Qvc3Lt27Tp9+nRMTMwgyn2VSoVYHbVarVAoBAKBXC5XKBQymQzpNaOioiQSSXR09ObNm2H2r3/9a9ShUCqVmHXQzegE6wR9Jffhs7ffRFhYGFQ+ya7l4+MzduxYHo+HhqayspJM4a+rq8P36uvrbx6A/qUMUAYoA5QBygBloO8ZwGw6VMWKiopiGOb+++9H3I63t/ewYcM8PT1/VutDh7z44otVVVV2u721tZW8yp1Z3N7ebrVaUVi3qqqqtLS0qKiooKAgMzMzNTX1/PnzCQkJJpNJo9FIpdKoqKjQ0NDTp0+fOHHi8OHD+/fv37Nnz24OOzns4ADBun379m0Dha1bt27ZsmXz5s2bNm3auHEjeh237HtAxOMjdFE2cdh6EzAZl7Bjx47+vgKcaOfOnQjQ37t37759+/bv33/48OETJ06EhIRERERERUVJpVKtVms2m5OSkpBx//r167m5uYWFhZWVlfX19U1NTc3NzW1tbTabretvPWhy/7nnnsNNvHr1apFIpFaroel/7Ffhbp40aZJcLo+IiMD8XdYJ+tu7z+fzlUolwnh0Oh1i9E+fPi2VSmUyWUREhNlsvnDhwtGjR3/7298i5WVAQACy8SCnkE6nG4Cqus5i9zF+19zcTH77vLw8lDh4+OGH0S5guXz5crJbCwfylVveOuRTukIZoAxQBigDlAHKQJ8w0NHRkZWVZbfbv/rqKwTzDB8+fNiwYfDZY9Kjp6dn9xlyTp8+jSH6trY2q9Xafey+zWZrb28n4fvl5eUlJSVFRUU5OTlXr169dOnSuXPnEhMTzWazRqORy+VRUVE8Hi8kJOTUqVPHjh07cuTIYQ4Hb+IAh/03sW9AsHfvXnQ8du3a1bXjAckOPU+6IuiZYGfMiIXUhtrev38/LqS/zQdPB7hUm4cPHz569OixY8eOHz8eHBwcGhoaGRkpFAoRPQ7XfnJy8uXLl69du5aTk5Ofn19SUlJdXd3Y2Njc3Nza2mq1WkkEl93+/8+9HDS5j2Aeb2/v7777Ti6Xnz17ViAQ7N27d8qUKYjk+cc//iGTyUwmE4Q16wT9LfclEolKpRKLxToOBoNBIpF8+umnwcHBiGZjWfbkyZPvvvsust+8+OKLKCMgFotNJpNMJjMajQOQiNOZ3K+oqMBzTsJ1ioqK7Hb7//k//4fk4ydJUX/zm99kZGTAH0D2h4egT1oxehDKAGWAMkAZoAxQBm7JADxuWOLFjUl3jo45KA1kbOy0nfw7ceLEqqoqx+gdEiZ0y/Nikl5raysq9qDeVklJSX5+flZWVlpaWkpKSnJyMqJ6dDqdXC6XSqVCoZDH44WFhYWEhJzhcJpDMIdTHE4OFE5wOH78+LFjx44ePYoeyKGbQDeEdELwLz5ER+Xw4cNHjhzBQU6cOAGrcQmnTp0amIs4derU6dOnQ0JCQkNDw8LCwsPDo6KiRCIRXOEqlUqv15MwnnSuulZ+fn5RUVFZWVltba3FYmlpaelagJlI/0GT+08++aQ7h5dffvmdd96ZO3cu0tpg9OrPf/7z0aNHRSJRTEyMTCbrZqprf8t9PQepVKrT6ViW1Wq1R48eve+++xiGmTlz5qxZs6ZMmUKi62bNmrVp0yadTqdQKBD0LxaLtVqtRqNhewgVh9svs+VM7tvtdlTQwEp1dTV6ezabLTIy8oEHHiBx/LiKcePGRURE2DlgSNFms/3sUCD2p0vKAGWAMkAZoAxQBnrNAJlQ29LSYrVak5OTSXgzUfM/u7J48WK73U4Ohbc/CdO9pW3I5W+xWOrr66urqysqKpCiJzc39+rVq1euXLl06VJycjKieoxGo16vR4SzRCIRi8UiDsKbEHDg30TUgCAyMpLH40VERISHh4dxCLmJM2fOoCty+vTp4OBgdE7OnDkDbR3KISwsLJIDjIXtuJABMT+Kz+fDiy+RSODmViqVWq3WaDSaTCaz2RwfHw+/fmpqKmboFhYWlpSUVFRU1NXVEdd+p3CMwZf7v/jFLzCvHOWOR44ciaA0Hx+fBQsWREZGqlQquNJNJtMgyn2NRqNQKPh8vkqlkkgker1+7969DMMQiY+ybcOHD3/qqaf4fD6GI1iWjYmJkUgkIpFIoVCYzWa2h+grud/U1ITfnjzq+O3hPygoKHj99dfRdowcOdLd3R3q//PPP4drgQr9W7aMdCNlgDJAGaAMUAb6lgEI9MrKSry16+rqrFbroUOH3NzcHCW+u7s7KXDruJ2sx8XFkSgOEslNNMAtbe7o6CDh+zU1NZWVleXl5cXFxXl5eZmZmenp6VeuXElJSTl79mxcXFxCQkJcXJzJZEKOcsgV4ntlOShuQj5QQGJ00v0QCoUCgeBmj4MPyU4EvaOav9lJEcpuAibjCpAtpl8vQiaTYVIoy/5UYlWj0Wg5REdHx8TEJCQkJCUlnT17Njk5GZk309PTr1+/np+fX1xcXFpaisB915X7ixcvfuWVV6ZOnTpr1qzZs2dPnz79tddeW7FiBW6U21+SO0yhUCBlJ35y/JYhISGPP/44mdry4Ycf3v6RsSfuY/Q3cHwph/fff/+ll16aOnXqk08+OW/evKCgoIiICJVK1dPjO9u/r+Q+Ark69fbsHJB/88dGISAgABShVIefnx/DMM8+++z58+ftdjtR/NXV1fD3k84iyfmDA9IlZYAyQBmgDFAGKAO9Y4CE3+Ali7yKdrv9k08+6ZRon2Th9PDwGDFiBJnC6+3tPXfu3F6cHXK/paWlqampvr6+trYWOfhLSkoKCwvz8vKysrKuXr2alpZ25cqVc+fOff/992fPnk1MTIyPj4+NjY2JiTGbzaZBQjQHjDnodDqEVCDCQuMckNQ6DlwYh97gBANzWWYOMRxiOcTHxycmJkLoX7p06cqVK+np6RkZGfn5+QUFBSUlJeXl5TU1NQ0NDRaLBT7cbn76QQvmMRgMQqEwKipKqVSqVCqh8Kd+VWxsLNtDDKTcJz0KqVR67tw5g8GAARe9Xh8TE2M0GrsZhejhZf3Uw1OpVHcezONM7pNIPszKZVkWU42RBwA+/pEjRx4/fhxRfRD9HR0d8BC0trbW1NR0c2PRjygDlAHKAGWAMkAZ6BEDCLglX4G/X6VSEQe/h4eHu7s74gvwpiazeBErIRAIyNdvf4WE71ssloaGhrq6OuTgLy0tLS4uzs/Pz8nJyczMzMjISE9P/+GHHy5dupSSknLhwoXk5GSi/pMGCYmJiQkJCfHx8XFxcaTvAfXczdJRWMdxiHeCgbmssxy+53COQ3Jy8oULF4jQz8zMzMrKys7OLiwsLCoqgl+/trYWk3QdY7du+bsPmtxHsQCtVosemMFgIDNf2Z5g4OU+fPxw5KOWFvqISqWyF1NynV1rf8t9u91OqmrDkfBjht333nuPYZjRo0czDOPl5QXp/+mnn0Lrt7a2WiyWjo4OMizws7fXLe85upEyQBmgDFAGKAOUgU4MkAwZHR0dZWVl+NTf33/s2LHjx48fMWIEwnWg9b28vLAFEcUoy/Xss89iEL7TkX/2X8j9tra25ubmpqamhoaG+vr6yspKBPEXFRVB8WdlZWXexLVr16D+U1NTr3D4YZBwiUNKSsrFixfRAzl/G0jmcIHDRQ4pTjAAl3X5JsBkKgf48q9du5aVlZWbm5ufnw+hX1JSUlpaWlFRUV1djfybLS0t3QdrDWbefblcrtPpNBqNSCRC3pveeccHTO7Dc6/gAMWPWCtsUavVRqMxJiaG7SMMgNy32+1tbW0VFRXE02+xWDZs2ODr64taHgzD+Pj4eHt7T5069dy5c9D65JYiot9OQRmgDFAGKAOUAcrAHTPQ0NBgs9kQmHH16tU//elPvr6+JOcm0mfDE0ci9eHjHz9+PMMwJNNGTw3p6Oiw2Wwor9vc3GyxWFBkt7q6Gol6iouLCwsLb9y4kZeXd4NDXl5ebm5udnZ2VlbWdQ7XBglXOaDvkZ6ensYBitnZEvukpaVBUmdwwHG6LgfgstCHAo1ZN5GdnZ2Tk5OXl4cMPCUlJWVlZeXl5ZWVlVVVVTU1NUTrI91q9z/6oHn3xWKxQqHQaDQ6nU6v12u12t55xwdS7jvG6kilUkwmNhgMKLiLSSFsH2EA5H4HB9wfTU1NJGpQrVajNUGRYLQpfn5+p0+fdszHb+My9XZ/e9FPKQOUAcoAZYAyQBm4HQYcnWhCofChhx4imn7cuHGTJk0i/44ZM4asQ+4zDDNhwgS73e54kNs5KdkHDn6r1drW1tba2trS0gIff21tLRH9paWlSMlfVFRUyKGgoCA/P/8Gh9xBQvZN3NTJ/7f7AfXsbImd8dWcbjEwl5XHAUzeuHEjn0NBQUFhYSGm5JaVlVVwqK2traurw9QOknzzllM0yY87mN59pVKJSJjo6GiTyYSMTr2Y6joAcl95K8hkMqRBNRgM6KvIObB9hAGQ+xUVFbgV2jnY7XYSjl9RUfHxxx+jNRk2bNioUaPgXXjvvfdyc3N/nN1LZus63kx0nTJAGaAMUAYoA5SB3jGAF2tHR8fy5cvx/vXw8PDiwDDMo48+Gh0dPXnyZKLvMWGXzNNdt26d3W7/2SmbzmyDBxCOvHauzq6FQ2NjY319fV1dXU1NTRWHcg5lZWWlHEo4wP2PPsAAL9HlgD7u0bKAwwBb2/V0RTdRzAF8kmVpaWl5eXlFRQWc+tXV1fDPklQ87e3t+O2c/bLYPmjefa1Wq1AoMNVVygHOfraH6G+5T6Q+9DdZRkdH63Q6pVJJVD4+6qH5Tnfvb7mPFsFms5FIHmTexNJut9fX12/duvWBBx4gLoRRo0Z5enpOmzYtJCTEzqG+vh4rdEkZoAxQBigDlAHKwB0ykJ2djbQZvr6+kPVIu/nNN9+gDFZiYiIpkenj48MwDJxxkydPzs3N7bXWJ2ZDOGIJHz9iexobG+HsxyxepO6pqampvomqqir4ngd+WeYAdEVIh8Thk86r2AfWVnIYeMvJGWEAelM3Ga2uqqrCek1NDTz69RwQqY8AHpvNdpvu10GT+yzLYpIuImTUarVKpVIoFGwPMTByn6h8sqJWq5GNFbW3dDodBih6aL7T3ftb7kPQk5T8mNzT2NiIkB5y98hksieffNLX19fb2xvzd93c3H4szhUUFESGAuwUlAHKAGWAMkAZoAzcGQPHjx+Hi23ixIlwtPn5+Y0aNSosLAxue6vV2t7e/vnnnw8fPnzkyJFuXD5+zNxdtGiR3W6vra29MxP+n2+3cYDoRzR/Yxc0OKBukEA0cU0PAQ0Nq5F+tPZWGLDLgponjNbX12MdrDdxsFgsEPrt7e23r/V7E8yzYcMGlUqFErNqtVoul0OYsoMEnJ3Mo8UkWplMhkj60NBQx7z7H3zwAdHrnVYGyfzuTqtSqT766CNSK/vBBx9ctGjRmjVr1q9fv2PHjgMHDpw8eTIyMlKpVEZHRzurqussEaf9NoBZuZWVlf/85z/h2ieefj8/v3feeSczMxOHQR4olO67ZaiPlcNtnJPucmsGHD0upDN2613p1jtgADx3cwD6Q3RDDv2IMkAZ6MSA1Wp1TGFHWpimpia05HCxtbS0fPPNN5DvDMOQZDuvvPIKAmgxDo+l1WqdN28ewzAjR44kL+XMzEyS2KeTDb3+lzR3iPDBexxXhIl8nZYWFwP0cdeli5np1JxmDvDlt7a2QuX3LvPS3SD3MSwAHz/LsgqFAoqfz6FTma0hJPcVCoVSqXSU+w899BCR+9u3b+8/ud/U1AShT2Z+VFZWHjp0CG4GkqnTw8PjhRdeEAqFjqOH9fX15F8bBzQ0tCBXrxtcfJE0u+RtcYcHpF+/JQOU3lvSQjdSBigDvWDA0flqtVqrqqog/S0Wi6NoO3fu3C9/+UsIdy8vLwTnuLu7f/vtt+gSOPrsEUN7/fr1GTNmMAyDBJ3vvvsu6Tb0oT+IvHccA/qRvaf1Vuik/gf9X8jlrstBN+w2DQDHGGPBwA430bK9F7dib+R+UFCQUqns5N0nAe4Dv6Lm0Enuy+XyKA4hISEzZswgPeYPPvhg4C3s3Rkh9xcsWODGgWEYyP3Vq1evX7/eUe6zLGs0GvvQu9/W1kaEflVVFbmx4uPjJ0+ePGLEiNGjR48aNQptk4+Pz7Zt2xDYY7PZOrkxMNgEf397eztJ4kmOSVd+lgEiQEnLOxRX0PfrunS1a4GFhPOf/XXoDpQBygBlwBkDRNPDNdtpN+jyPXv2kBK5w4cPRzj+/fffr1ar7XZ7YWGh3W7HGxmiHyP2drv90KFDZM6uUqnEwSENO52o1/+S9pk03ZCbzpbE/e8iK2Cj69JFzPtZM8AzIZ/8HL37QXscuw+5j4m2KpVKJpNBznaKjRmwf53J/UgOZ86cmT59+u3I/QEz+DZPJJPJWJb98MMPGYaB/Q899NDixYtXr14dGBi4ffv2/fv3nzhxgsfj9a3cR1hYc3Mzaafa29vJ/F273T537lyU8xgzZgwaJoZh5s+ff+nSJXILwhOAe5RstNvtjp0Bx+10vSsD5MF2FKBIjUwcLc7aXCRV+NmmZCB36NrgYstA2tCjc3VqZzv9Cl1/L7qFMkAZoAzckgGr1UoGve12u8VigR/NZrN99tlnbm5uKG1JtPtbb72VnZ1ts9mQPQ8hOlVVVah3abfb29vba2pqWltbFy1aBAe/xWIhTro+fM+S1xBWuurOTju42r/E4E4rrmanM3tueTv1emOP5f769esxORVpNCH3WZbtnQ/7zr/Vya8vk8mkHHgcTp8+7Sj3P/zwQ9YJ7tySvj2CVCqVy+UffPBBJ7m/atWqwMDAbdu27d+///jx4zweT6FQGAyGPvTuo/xWdXW145ggJCbuszNnzpB4QT8/P4j+xx57TKvV2u12+B7QQ+jo6HDsKvT6Nr0Hv3hLZQ/BiqTImD7lbEzQaTDgIH3QNXoSWwbJHKenJcO+INZxLJXMjsKYleMw/T14f9JLpgxQBm6HgZaWFlLTpq6ujiTF12g0U6dOJW/SsWPHwo+2ZcsWdAnw6oRHHxnx7XZ7cXExBsmLi4vtdntDQ8P8+fO3bduGPgDs6cNR9K4y9HYume7jmgz0Uu5rNBq5XO5YGEs+SECwvlwul8lkEolEzEEkEoVzCA4OnjZtGnmiupH7g2S+09NKJBKZTDZ//nxiPLz7q1atWrdu3datW/ft23f8+PGIiIj+kPu4WRF+g+YJDRZcFC0tLcXFxa+99hqxzc/PD8ORgYGBVquVJPdEMoG6ujoau9/T5x9yn/jpibgn9Q4xVb/BCQYsk8BtnqjGCW7z6wO2m2NiBDDc2NhIkhw3Nzc7ZkAjI2A9/XHp/pQBysC9w4DNZnOcRFtYWBgYGOiYPh8D+NOmTdPpdI60wONWXl5OBgeampo6Oe9TUlLg10dz1Nra6uinczxaL9aJ3O/Fd+lXXI2BHsv9wMBAJMjvJPfhUx+UpYSDWCwWCoUCDnw+P5zDqVOnOsl9hRMMiuXdnFQsFkul0vfff59Iasj9lStXdpL7crlcr9f3lXe/sbGRjBjabLbW1lbSTkGyY4n2ZcWKFaNGjSJDkEgm8Nvf/jYnJ4cE/dtsNszftdls1NN/m8+/o9ZH0AtJgnbLzMddtXSli6FzxuOb/7uYmT9VJq/mAEprbwIJ0RylP9z/t/mD0t0oA5SBe5AB8sojL8SzZ88igGfEiBEMw3h7e6M+7rx5827cuGG328meyHTn+C/xo8F/7zh4Dk8EhgX6kGeMYXbtP3Q4QR+emh6qKwOE9a4f3c6WO5L7LMtKJBIFB7jVB2spEomg9fl8flRUVGRkZBiHU6dOPfbYY0Qxf/jhh7C263KwLHd2XpFI9LNy/9ixYxEREX0r90mEvdVqJcOO5GmHX4Fsb2pqOn78+IMPPkgY9vb2HjVq1JgxY/R6PeYY3c5dSPfpxEAnuY9Ol6PQr+GKm1RVVTmTyzfltKv8LXYCV7Hvph0VNwFiq26ilgPqljuK/k4/HP2XMkAZoAw4MtDS0oIXaFtbm0Ag+N3vfkdelw888AASbe/ZswcJLZB1p729nbxkyTxdqP+GhgYcraWlpaGhAV5/fKsPY3iI/c7kvs0JOlwM5EI6rbiYmU7NcTQbqgDEO26//XUG1XfxBXQW4d+tqKgoLS3Ny8vLysoi4ePu7u6rVq2KiIgwGAwymQzZb4RCoVQqFToBv5+B0yLLfmRkJI/Hi+AgFAojIiIOHDgwefJkhmEQX/7RRx8h4Id0D3AJkZGR/Wxmjw8fHh7OsuzChQvRNHh5ed13331r1qxZvnx5QEDA5s2b9+zZc/To0bCwMKlUqtVqExISLly4kJGRkZubW1RUVF5eXldXZ7FY7iTv/m3eRteuXXv99ddR2w8OfgxN/vvf/ybDjh0dHWiSyHQix8kAt3mie2E3DMjW1dU1Nzc3Nja2tLS0tbXV1tZyHuefauxVVFSUl5eT6uU3XAyVlZXFxcU5OTlXr169du3ajRs38vPzr127luMELmb+T9ZWV1dnZmZWVFSkpqZWVFRkZGRUVVWhhnlVVVVNTU1dXR1R/CTE32q1knv7XrhR6TVSBigDnRhoaWkhYasYlbXb7ZWVldjtq6++Im9zkll/1qxZCFffdQAAIABJREFUFy9eROQ9DQ7sxCf9t28Z+Hm5f/36dUe5v3nzZoFAoNfrpVKpQCAQiURisZhIf6hnxyUy5PTfkrjzIfTDw8PDOOzdu/fUqVOHDx9+6qmnSGf6X//6l4JD11j//rOwd0c+c+ZMaGgo0uDA/jFjxixdutRR7h85cuSWcr+wsHDA5D4GK2tqapYsWYLwfTc3N3SuvL29f/Ob32RlZVksFtKrbG5udnRCVFZWkgHKvr2zh+jROjo6mpubIRxbW1vz8/MrKio6OjpKSkqKORQVFRUUFOTn59/gkOtiSElJycnJyczMTE1NzcnJycrKSktLy8rKuuoELmZ+bnZ2dl5eXlpaWkFBQVZWVkVFBXovhYWFRUVFJSUl5eXllZWV1dXVtbW16FFjGL2trY3c5EP03qNmUwYoA71mwPG9BtFPtuTm5r744ou+vr54lftwYBjmq6++glMfETukq9BrG+gXKQPdMOBU7peXl8O7D7mP29Td3X3Xrl08Hk8oFIaEhPxYsxYim8fjhTjB6X4GTnvmzJnTp08HBwefOnXqJIfw8PDg4OCgoKBnn33Wm4Ofn98bb7yBcYBOnYSIiIh+NrPHh4+MjDx06NDcuXNRH5thmPvvv385B39//82bN+/evfvIkSOhoaHw7sfHxycnJ6enp+fm5g6k3EcLheFFgUBw//33w2/x0EMPMQzj4eExYsQIhUKBmELi4K+rq6uvrydxjd3coPfORx0cyPVmZ2dv2LDhlVdemTlz5owZM+ZwePbZZ2fPnv3MM8/M4vD000/PdjFMmTLl+eeff+aZZ6ZPnz5nzpynnnpq2rRpL7744pNO4GLmz37yySenTp06Y8aMX//613/7298OHDhQWlpaUFCQnZ2dk5OTl5dXUFBQXFxcWlpaUVGBzmpjY6PFYmlpaaEOfnL30hXKwL3GgMViaWxsxKsQ+ayR404gEPj6+o4dO9bLy8vd3R1SauzYsVFRUXa7vb6+nkyWQ/mae403er0DxkB3cr+kpCQ3N9dR7iNIw9PTEysMw5Db18MJ3PsZOC1OQqzCE4WoOMd1Hx8fsmennfvZzB4f3tPTk0yB9fDwcHd3R5mtZcuW+fv7b9q0affu3YcPHw4NDZVIJBqNhsj9nJycwsLCsrKy2tpa1MftVxVitVpJa2W32y9duvTqq6/Cuz9s2DByCcuXL8duJCqdRD50dHSQPGUDdt+7zomg8klYXmtra3Nzc1lZ2ZdffomeHnnEcCe7+HLYsGHDhw/v9HCNGDHCzQlc7XL8/PyISZ6enr/85S9/+OGHy5cvZ2RkXL169fr16zk5Ofn5+fD04ylDQD8C56iD33WeLGoJZWDAGIAnC5nocFLU1Vq8eDFpTxiG8fLymjBhwpw5c9LS0rAbSXlHjjBgNtMT3WsMOJX7ZWVlJSUlGJd3vF/hsiVbyHvdidr3cPKW77PNjjqaHBTmubu7+/j4eHt7E2u7WSHfdZEVHx8fT09PLy8vTH51d3efMGHCZ599tmzZsjVr1mzcuHHXrl2HDx8OCQmB3I+Lizt//nxaWlpOTk5BQcFAyn1MIXJs6b788ktynyD/AMMwzz///Llz5zB2CRcIHjaSUfhee/bI5ds4tHMAM5WVlX/4wx/QnR4/fvywYcPIbdnNPexSH5GWAVZ5OoFL2UyMQRF7hmFGjhx57ty5lJSUK1eupKamZmRkXL9+PTc3l/j4SWBPY2Njc3MzKlI73t735l1Nr5oycK8x4DiJ1m63p6SkvPrqqwzD3HfffWhY4L754osvkEqfuAZIzI/j9Nx7jT16vQPAQHdyH0GrmZmZ5C2IFXht3d3dvb29MTVz2LBhjrLbcZ3IlH5aIefqdHwPj596GjDY3d195MiRMLLTtZB/O3190P8lhiE2Bt79r7/++rvvviNy/9ChQyEhIWKxWK1WE7mfnZ1dUFBQWlpaU1PT2Ng4AFN1S0pKcKei2YLbXqPRjB07Fn0t4jH19PQ8deoU2Z+MXd7LU5TIcIeVQ3V1NeLF/+u//svxHhgq62T+xogRI4hovs0ut4tc46hRozw9PckYhdls/v777y9cuJCSknL58uX09HSi+IuKisrKysrLy1HwEoNp5C0+AM03PQVlgDLgCgzg3YcRdbvdfurUqfHjxzv6vEZy0Gq1JDs+SvjB+Kamptra2nv5PegKP+Jdb4NTuV9aWgq5f+3ata6vYTc3Nw8PD/I6xzu+626DvgWGeXl5EcU56CbdvgGkuzJ8+HBvb+8HHnjgX//613fffbd69eqNGzfu3Lnz0KFDZ86cgdyPjY09d+5cWlpadnZ2fn7+gMl9TLRF7DJJ4onHpqCg4PXXX0dgz8iRI4nmW758OZIVNHK4l/PxO2p9ksmhra2tvLz82Wefxa3i7u4+Z86chU7wFxfDuxymT5/u5eUFX8CECRP+8pe/fOgELmb+X+bNm/fHP/6RJCdgGEahUJjN5oSEhKSkpPPnz1+6dCktLe3atWvZ2dm5ubkkjh+9a6TmIIFqeBDokjJAGbjrGSDTbf/5z39iYHbEiBF4/TEM8+KLLzY0NCDTWqdJa3V1dSSF3V3PEr3AQWSgO7lfVFSUnZ3dSe4vWrRozZo169ev38Rh9erVK1as2LRpU5ATBPYz1t9Ep/MHBgauWrXq888//8UvfoGXt5eX1+9//3tizs3v/d+/ZLuLrGzfvn3NmjW///3vSfdgwoQJS5YsgdzfsGHDLeV+ampqVlYW5H51dfXAePfJWCSp/Ac1Dy27du3aBx54AFcxbtw4SMDZs2fr9Xrc9+Trg/gYDNapO8n91tbWmpoai8VSVVU1Y8YMxHqOGTPmrbfekkqlsi6Qy+Wsi0EulysUinnz5pH7ds6cOWq1WukELmY+q1arN23axDDM8OHDvby8PDw8WJaNjo42mUwxMTEJCQmI7UlNTb169WpmZiZJ11NdXY3Xeb9OlRmsG5WelzJAGeiGAbi94uPjf/nLX6Lpc8xJHRAQYLfba2trHXPvIDk1Efqd+gDdnIt+RBnoHQMM+RpCqFtaWhobG+vr68vKygoLC69du5aRkeE4JZdU1VUoFCqVSi6XqziwgwqlUqlSqZRKpVwul0qlYrGYx+H06dPTp08nbvIPPvhgUM3swckVCoVSqVywYAGRTQ888MDXX3+9ZMmSVatWBQUFbd++/cCBA8HBwUKhUKlUmkympKSky5cvX79+/caNGyUlJdAfzc3NjkOEA+Z3tNlsRP2LxeJnnnkGI5vEx//ggw/u2LED9nR0dBDR39bWZrFYoIPtdy8cw7s7OjqsVmtLSwty7ZeWlpaVlc2ZM4f4mD/88MMe3DoDuGvX504ul/P5/Pnz55NG4/HHH1coFANo1B2dSiaTbdiwgQxXurm5nTlzRiaTicVilmUNBkNsbGxiYmJycnJqampmZiZi5yoqKmpra+vr61EqAfE8HbeCnYIyQBkYygy0tbV1CrKHjt+xYwcS03l5eY0bN2706NEMw0yePFkkEjm29nRK7lD+8Ye27VTus66Ju0DuoyAfno+LFy/+7W9/g+K/7777iJyaN29ednY29rFwQPIyeEFIgRLscDctHV8ANpsNct9isTQ0NJRyGLpyPyoq6v333x+icl8ulwcFBcEzh552cHCwSCQSCAQymUyr1ZpMpvj4+HPnzl2+fPnatWsYTCsvLyfltxDPcyup/9O2u+keptdCGbjXGEB+OeKkR/LNwsLCt95667777hvGgbQeCxYsuHTpEigizvtOXYV7jUB6vYPIAJX7rGtiqMt93NMtLS1lZWVYLygo2Lx5M9IUQO57e3v7+Pg88sgjLMva7Xa0g2T8AaGQ+O7dt3RUfpi90Nzc3NTUVF9fX8IBsfsYmBpC3n1U3EMwD1KIzpw5UzF0vPtd5f7x48fDw8MjIiIwjKbX681mc1JSUkpKSnp6emZmZl5eXllZWTVXeAtl7a1WK5X7d98zS6/oXmYAT7TdbidvKIj+2NjYp59+2jGnPsMwI0aM2LNnD3HkNzQ0NDY2gj0SvXMvk0mvfVAYoHKfdU0MdblPWjekBiI3t0KheO655xiGGTNmDKZ6Dxs2zNfXd9myZdgHrSGyEROPCPn6XbNC5D6C6FpbW+EoqqurKy4uLikpGaJyXyqV8ng8yH30VYaW3FcoFD/OAiL1In7Mo3fw4METJ04EBwdHRERIJBKVSmUwGJAI6/Lly1evXs3JySkpKamsrKypqamvr7dYLFTu3zXPKb2Qe5wB0m9HumSwQXT8j9VvMDMNDqxRo0YxDPPEE08kJiaS7kFrayvpISBu8x6nlF7+YDFA5T7rmhjqch/J+MmgZ1NTE/FqlJWV/ec//0GkhJ+fH6L5R4wY8fbbbyOwp7m52Waz3cWRPCg+gGeezJlpampqaGiora0tKioqLi6ePXv2UIzdF4vFERERc+fOJcYPLbnPsuyPk/cxLoHuyu7du/ft23fkyJHg4ODIyEipVKpSqaKjo5OSki5evJiWlpaVlVVUVIR0nMjE19bWRlRCp5XBaujpeSkDlIFeMIBZZDabjdRFwazcjIyM9957D28xqPyxY8cyDPPpp59WVVW1t7e3tbVhQhp5CeIIvbCBfoUy0CcMULnPuibuArmP+JzW1la4NJqbm9H8QccfPHhwwoQJaC5HjhyJlUcffVQul5O6XX1yi7v4QQg5jY2NdXV1NTU1hYWFRUVFmNw85IJ5RCJReHg4eREyDDNz5kzXfMScWbV+/XrQDtG/devWLVu27Nu37+jRoyEhIQKBQC6X63S6uLi4c+fOXblyJTMzE4Xt4OBHOqxOKp/86+J3IzWPMkAZcGTAMXkaSXohkUimTJlC0uozDINM30eOHEG0j8VigcrHvF6kP0E/AZPTHE9B1ykDA8MAlfusa2Koy/3GxsZOoTg2m81isZBhTbvdrtVqkW5y5MiR7u7uGA/9McJn3bp1zc3NJNxlYJ6EwToLCdyHa7+6urqgoKCwsBByH72gBQsWuOZd2jUzj1AoDAsLe/fdd2H5kJP7SqVy/fr1MB5yf+PGjYGBgTt37jxw4MCpU6d4PJ5YLFapVGaz+ezZsz/88MPVq1eRC6uiogLZb1taWoi+77QyWLcZPS9lgDLQUwYctT7qotTW1i5duhQBPB4eHki/g9K5KSkpRMqTZGtdz9je3k4iXbt+SrdQBvqPASr3WdfEUJf7uGXb29tRLJb4Rex2e2VlJbKXwBHy1VdfMQxDPP1QWvPmzUtNTe2/+951jgy5b7FY6uvra2trq6qq8vPzqdwfrKfSUe4jgj8oKMjf33/btm179+49fvx4WFgYSX2bmJh46dKljIyMvLy8kpKS8vJykn2/k8on/7rOjUctoQxQBrpnoJPcb21t/d3vfkfSyqGElqen59KlSx2FPiae4e3WSdm3tbWR2J7uT00/pQz0OQNOy2yVl5eXlJTk5uZmZmYSR52bm1tf5d1XKpUGg0Gv18s5GAyG6OholUrFsqxer0dSf41Ggx00Gg3rBEi3r1QqFQqFXC5HJSKpVMrnEBIS8vjjj8NLxzBMH2Y4kclkUOQsy+KkLPtTjR61Wq3X66OioqRSqVwuFwqFGo1GIpE4Md/pZmdy3wXLbNl7hfb2diTmr6+vP3nypJub24gRI0idZoZhHnvsscjISPj4yZgA8pqjFcboAWlAh2iCM0e5X1NTU1paWlBQkJWVNWvWLDx3Hh4e3dSLkMvlSqVSKpWaTCahUKjX6yUSSXR0tEgk0mg0YrFYoVDIZDI8Glqt1ukN18MP4NcnNTdkMplEIhGJRI7efYTEPPnkk3iue3iGnx4rPP54xtEa9PQgPd0fU3VJi+fp6bls2bKAgICgoKBt27YdPHgQEfxyudxoNCYkJCB8H+V1kY6zqampra0NE/uQi/YeGaeyU1AGhiADpORLXV0dUeoNDQ2kegamWh08eJCklRsxYgR8AQ8++OCJEyeG4EVTk+9FBgZN7hsMBoVCATmi44B/TSaTTqeT3oSjmGZvhcGS+zBQoVCo1WoDB7VarVAoRCKRXq/XaDRxcXFms1mhUGi1WqlUeivbu9vWjdxfs2bNxo0bd+3adejQoZCQELFYrFarY2Njz507l5aWlp2djaq6NTU1A1NV195DkDm7pJ0tKSm5cuXKE088wTCMNwcMkvr6+n711Vc4fGVlJanbhS9C7hNnCWLfe2jL4O9+h3If3WOlUpmQkKBUKtVqNY/Hg7w2GAwajUan02m1WnQJFH2XELO/5b7RaBSJRFKpVK1WG41GtVqNCnpsP6Or3P/uu+/8/f3Xr1/fVe7Hx8dD7ufk5BQXFxO5j1wcUPzw6w/+fUYtoAxQBm7FAKJ0yCd4rRAHk91uv3HjxldffUUmmJFI/eeffx5D0CQonxyErlAGXJCBQZP78IjrdDqz2axSqSIjIyUSSWxsrFwuFwgE0MeQFN3L5cGS+yaTSa1Wo/6OWCyGd1MgEISFhcGZqtFolEqlSCRSq9W98G46k/vLli1bs2bNpk2bdu3adfjw4ZCQEIlEgt7F+fPnIfcLCgpKS0uHhNx3FOt2ux0Ze4YPH45xUoZhhg8f/uabb16+fLnrw4MAIdSo6vrpUNlyh3Ifo2RyudxkMuGWEwgEOp1Oo9Go1WqdTqdSqdRqNcuyfaj1WZbtb7mP8TqWZXU6nVKpxOUIBAK2n9FJ7nt4eCxdunTNmjWBgYFbt24l4fsymcxgMMTHx1+4cCE1NTUnJwfJeRC7T+X+UHn6qJ33OANEqTc3NyOdDrxRVqsVTqXY2NhXX30Vw31eXl6enp4IFli6dClG7drb2x37Bvc4n/TyXZmBQZP7RqORZVmpVArdAImsVqsR0hMTEwOXJCITXDCYR6/Xw52PqB6NRmM0GtF1gbpSKpUsy8rl8t4pLWdyf/ny5f7+/ps3b969e/eRI0dCQ0OlUqlWq0Ui8LS0tJycHOQJQU5ApL13qfaIOPXb2tpqa2tJWD/qaoWFhY0bNw7NKwZPPTw8Jk6cGBoaarfbMdiKr5AYiZaWlqE7tffO5b5Go4mKipLJZEoOWq3WaDQqFAqhUGg0GnEHyuVytVo9hIJ5YLzBYDAajZGRkbjDexEUx/YQneS+u7v7kiVLVq9evW7dui1btuzfv//kyZMRERFSqVSv18fFxTnKfRTbwpAaDeZx5dcetY0yAAaQQd9qtZJY0NbW1traWrvd3traevDgwalTp0LlkwC/yZMni0QiOKo6OjqQaI7ySRlwfQYGTe7L5XLE6ysUCrjzEZur0Wjkcrlerw8PD4+MjAwODsYIAOsEg+XdF4lEZPqBUqmEqNJqtYjngb9fp9PB59oLx6ozub9ixYq1a9du2bJlz549R48exWCCTqeLj49PTk5OT0/PyckpLCwsKytzTbmPelJE4iPUoa2tDVOa0BO4dOnSyy+/DCfKpEmTGIbx9PT08PD48ssv6+vr0c5aLJa6ujoSF9TS0tKpnpfrP3uw8A7lPqLnBQIB0sWoVCq9Xn/kyBG5XB4REXH27FnE7ovFYqPRGB8f7+Qx6vHm/vbuGwwGkUh04sSJ+Ph4uVyu0WgMBoNQKOyxoT3/QlBQEHm1u7m5ffvtt6tWrVq7du3mzZv37dt34sSJ8PBwiUSi0+liYmKSk5OvXLmSnZ1dWFhYWlpaVVXV0NDQ0tJC5b6dgjIwFBhoaGggHijiF2tubv7ss89IO+Dp6Qkn1H//939XVFTY7XbST8CU3KFwodTGe52BQZP7eF8aDAaVSqXRaGJiYoxGIwmIN5vNIpEoKSkJ8bvdDOIPltxHnDTCJ6RSKfyOWq02KSkJoRSYqqvX65VKZS+8qs7k/sqVK9etW7d169a9e/ceO3YsPDwcvSMi93NzcwsLC8vLyzHxyAW9+0irT5Q6eQSh4zH1trq6evny5b6+vmhwPTw8EN7z5ptvXr9+nfj1q6qquh6HHHBIrNyh3MfscA0HnU6nVqulUinS3k+ePPno0aNarfb8+fNarVYul4eFhbF9hP6W+2+//faECRN8fX337NnD5/PFYjHLst2M8vXRZf10mA0bNpDXPMMwixcvXrFiRUBAwKZNm0hyHrFYrNVqzWYz5H5WVpaj3EedOBq7b6egDAwdBhC139LSotfrH3/8cU9PT0STPvTQQwzDjB49+rvvvrPb7eXl5ZD4UPytra0kImjoXCu19F5kYNDkfmJiolQqDQ4O5vF4Go1GJBKtXr36jTfemDJlyuzZs998881PPvnEbDYjZgYve/ZWGCy5r9PpMI1YrVabTCaz2axUKqOiooRCoUwmS0xMjI6Ohr18Ph/hPbcy3+k2Z3J/1apV69at27Zt2759+44fPx4REaFQKAwGQ0JCwoULFzIyMoaE3MdQqb0LyMCo1Wq12Wx8Pv+RRx4h3n2IsIkTJ0okkrq6OnybrFitVrTXXY7q0hvuXO6zLBsdHa3VapEVSiwWT5w4ceTIkTNmzAgNDUXWSMTDkHuSvWP0t9xHYiIPD4+wsDCNRkOSX92x4T9/gE5yf9GiRcuXLw8ICNi4ceOePXuOHTsWGhqKxEdms/n8+fNXrlzJysrChJnKysr6+noq9+0UlIGhwAC8S2QKmcVi2b59O+rjMgyDcrkMw0yfPp3H49lsNih78qKpqKggvqehcLnUxnuagUGT+zweT6fTnTt3TqlUfvvttyi3RJxqw4YNe/jhh6OiorQcWOcYLLnPsqxIJBKLxXq93mQyhYaG/uc///nNb34zfvz4V1999cCBA3BGqtVqgUDQh979VatWBQYGbtu2bf/+/cePH+fxeF3lPmYNuqZ3n4yWopUklcaR7Ix8ioeyqakpLy/vzTffZBgGsT0Mw7i5uXl7ewcEBEDoI+ayncNQfJTvUO6rVCqRSKTT6eRyuUQiwQxyT09PX1/fp59+GmltjEZjREQEEsU6f5J69kl/y/1hw4Z5e3vPnDlTr9cjYAn5eXpmZa/2vqXc9/f3d5T7QqEQ/fzz589fvnwZcr+kpITKfTsFZWBIMWC1WiH309PTFyxYAO8SwzBkbHnhwoX5+fnIrG+z2eDUd/RYEZfTkLpuauw9xwDTqW9qtVotFktDQ0NVVVV5efmNGzeysrKICu/DvPsRERGpqakqleqzzz4jUzPd3d2nTZv2xBNPjB8//qWXXgoJCfn+++8VCkU3g/j9LfcNBoNWq1WpVMjrD6c7/lUoFDweT6/XL168ePLkycgyzjDM888/Hx4erueQkJAgEol6kZkHEgetD/ifNGkSZg0SuX/ixAkej8eyrNFoTEpKunjx4tWrV/Py8iD3XTN2vxdPWFNT0/LlyzG0iuWYMWMYhnnppZfMZnNTUxNpf1GsCkEUOFFHR0djY2Onm7wXNvTfV+5Q7iNJDmLGZDIZj8cLDAxEIZj58+dj7rjRaAwPD3ecHK9QKGJiYpAmXygUms3m6OhoTKcJCwtDlLzBYEBwnUgkOnv2bEREhEqlkkqlKpVKJpNJpdKEhASWZfl8vkQiwfibVCqNiooKCQlBVV300GbOnIkJLQjBR2JQZNpBZQCWZcUcMCxmNptPnDiBH/q1117TarXIvg95jdA1vV4vk8lEIhHykCIBkcFg4PP5p0+fnjt37rRp03bs2IEqBImJiWKxWCgUmkwmuVwuEongRNDpdEaj0WQy8fl8oVCoUCgwZPdjGV3yLLu5uS1atAi5OCH3UWkLsYixsbHJycmpqamI3S8rK6Ox+/33pAzpI99N+VhxLUPuiogLv9ProLm52Wq1KhSK2bNnw68EjxICeLZv3w4nFEkDPaTvQ2r8vczAoMn9+Ph4sVj8ySefIJ2tl5fXp59+iomner0+IiIiJCTEbDYbDAYejyeTyVgn6G+5r9VqEaCv4MCyLDIbymQysVgcGxv70UcfkYy8jz/++Lx585YtW4Y0glKpNCYmRiKR9CKYh8p9PJakaQ4PD0e3EJN3GYYZO3asn59fSEgI4inJdCvyleLiYjTxrhzff4dyH/1PjUajUqlQS+uLL77w9PT08/NbunQp0u3HxMRERUUhb6xKpeLz+ajJdeHCBZZlsY5ug0wmU6lUEolELpdD/pKEmCzLJiYmGo1GdAMwPR0xLdDQKpWKx+M5k/tyLkUV7mocEw8UsglhJq5cLsdclB07dqACwxdffAFjMJtfp9NhhaS9It1vBNMrlcqZM2eit8Pn8zHNV61W8/l89BNwIqQtYlkWEVBSqdSxzB+V+/fyG7Gfrp1O5OgnYm/zsHgFILEbJo9hui0C8TE7383NDU0H/BQvvPBCcnJyR0cHXiLwhN7m6ehulAEXZGDQ5L5QKDx69OjYsWPhSPv222+joqKSk5MlEoler0eKG6VSiVKd3QTD9Lfcx/FJMk0yQxcO/iVLlsD1/uCDD27YsEEgECDCx2w2C4VCPp8fHR0t7XmNLXQqVCoV9e7jmUGs5I0bNzAJlWEY1N/FeOtf//pXq9UK7wuab7vdTpwxZMUFHz9M+Wpra8O4RO+q6mLsSKPRIKzr9ddf9/Dw+DGYB3eg2Wzm8/mYWxIXF8eyrNlsRih/cHCwyWSSSqXwsuv1eqlUevnyZaVSGRsbGxYWxufzUagrLCxMwZXoksvlmDhrMpnEYrFUKo2Li5PL5VFRURqNJiwszJncR4cEqWkRiI/cu3q9Hg8X8lxhosvChQvxE2/btk0mk8XGxiJ/l0AgiI6OjomJQZE+hUKBMTRcOIYd0J48+uij5CzoG6jV6kgOBoNBIpEolUqyAypjYAvLslTuu+aTgng/OJVddkkyMnVaQcQIcrSTWssueBUu+9PfuWFw0lssFsR/Yky4srLytddeYxhmzJgxjjXdP//8c4To4NVDgvXv3Ax6BMrAYDEwaHJfq9V+/fXXDMN4eHj86le/iouLU6vVEonEbDbDF46MPUg2MohTdeGDhNZBvLJarYbiD+5PAAAgAElEQVQ82rt3L5qJRx99NDg4GJk6DAYDAqah+w0GA1QF20NQ7z4eCSLWScb9nTt3Dh8+nGEYDKpg+dhjj6Wnp+MrFouFJPrEFuL4x78utbxD775cLofMRZfYaDROnTrVzc3Nz88PI0tyDqj4hjIXcrlcp9MhkyxyXsGpr9Fo+Hy+SqWKiorS6XTQ0BKJRKVS4QHk8/kJCQkCgSA5OVkqlep0OkxckUqlCCoTCoXO5D7ibTD+oFAoMESGvrTJZIqJiRGLxejeG43G2bNnDxs2zN3dPTw8XKvVmkwm1JLT6/Wow43sojqdLi4uTqfT8Xg8OO8jIiLGjx/PMMy8efOEQiHG5dA3QFFelUoVHx+PuCCBQMDn8xUKRWJiIiY2IDyJyn2XekBgDFHP7RysrgqUaO26bOHQygGfuuYVgF7CNumQuOAt0VOTmpqaqqur7XZ7e3s7nP1nzpwZM2aMu7s7nPokaHb//v3oW9rt9paWFqL1yeBAT09N96cMuAIDgyb3TSaTn58fpsWcPHkS0flQxiEhIch9oVAojBwGUe4jqgGhDgg8IMuJEyd6eXm5ublFRkYiHyLMRgke+BQxTAH/K9sTULlPHo+ysjKsNzY2ooauUqmcPn36iBEj4Mr19PR0c3N76KGHNm/ejBlUeKGS1pn0GcgxXWflDuU+ollkMhkpS4e+0KxZs3AfhoWFnTt3buXKlRs3bty8eTMy28bGxmq1WplMtnHjxq+//vrjjz/esGHD8ePHExISMNl369atGzduXLt2LZLMIuo9KioqNjb2888/DwwMXLlyJUrLIeEswt/h5r9l7D7MQ006FAIzGo2omMuybHh4+IoVKz7++OOFCxeuXbt2ypQp3t7e9913H1IJhf5/7H13fBRV9/5sdjc9IRSlitIJKCCggCiWlxdFpUlRKSIvKKAoqIBggCSQAAEJJSGAJJC6vfe+2VRQQFCk9xYgQHoP2V+++/y4n/0CiQmk+X7n/LGZ7M7O3Ll778xzz3nOcxIShELhgQMHQOJft27dzJkzP/7449mzZy9ZsmT37t3p6ekRERHr1q2bPn06ntmff/75xo0bg4KCtm/fDpqTVqs9cOCARqPZuXNnQEDAuHHjpkyZsnjx4pCQEEzSavKuVCqlvfstYWoAZd6/fx/oE+VOkdYP3FzisOKWZ0U1WIHDCh2GXVpe2/+nRWRZ4rwmqaysxC/SEsbGE7cBnBwUc6zOu/3pp58g7ow0IYjw9OjR49SpUzhFbm4u4YXa7faioqKHvEhP3BL6i3QPNEsPNBvcDwwMpCiqVatWQ4cOhWo4CPoWiwUpdMQnh6e1qgZrbDKPs18fCB4eygULFjCZTIqivvnmG5FIlJKSIhQKMzIygBiMRiOgDNAYGAs1XMHj36bhvt1hxLOCDTyN7HZ7VlbWW2+9Ba003K+B87766qujR4/iu6DKtHBR5KeE+2QlCUZKREQE+uGjjz4CUUcqlU6dOhVvjhkzBrhZoVDs2bPn1Vdf7dixIz6iKKpPnz67du0C6QX+dYqijEajWCwGnUYul0dERCCcMnHiRIFAUL3uSkpKQniBz+dLpdKavPvgGiGMgPrTCCCoVKqFCxf27NkTj16Kojp06ODiMNwZRCIRkmS4XO7s2bOfe+45NNjLywsLm9deey0qKqpv375QbYKkhoeHB5aCo0eP5vF4hw4dslqte/bs+fDDD5EB4u4wTOHPP/88JiYmPT0d2cy0d59Mn6bfIBAfurplZWWY8uBgFBUVFRYWFhQU5Ofn5zWr5dZgOTXY3bt37z2wnJwc8u1mvYjHnLygoICsSYqLi0tKStD/iEWAjOQMgpt+hDzZGfH4gN/n0qVLL7/8MrKDoKmPO8nixYudaf12uz0nJwdfuX37dksOET9Zn9Df+r/WA80G9ydMmNCmTRs2mz1r1qxffvnFZDLB2wdaLcRwkA4rl8ubUZmHEHi0Wi3SE6HyAdZ4ly5dFApFampqbGwspEJQY0utVoOsjDUMnar7NPOqsrKysLCQ3G1LSkrAdLfb7REREe7u7i4uLsB2QG+vvfaaUqkEfR/fImuGp2lGI333KeE+YDRYK1qtliSTLFq0KCMjQyAQbN682d3dnclkDhkyhEDzyMjIrl27Ajf37NmzR48e2B47dqxEIhEKhcOHD6cois1mQ40H/DSr1Tpr1izksX3//fcymUwul/N4PCw58MWa4L5WqwUDB4cCmyguLu6bb75p164dRVHt2rXr2LHjoEGDyPJjxowZIkcZXZvNVl0h+L333nN3d2exWG3btu3duzdp/8cff5yamkrC8d7e3oSD6+vrO2XKFJFIlJqaumnTpsGDB+Pg7du37927N8mwDwkJ0Wg0NpstISGB9u430jiv42Hhwi8rK8M0B74vLCwk+D4nJ+fevXt3796906yWXYPdqsFuOgwf3nYYDtCsF/GYk9+7dw+rkby8vPz8fKD/oqIiZ68/8hCQgVDHn7XZd0MsxW63x8XFgVZA7hJeXl7u7u4JCQmg7pDcXBIHyM3NJUHjZr8QugF0DzxxDzQb3B8+fDicsqtXrz506BCXy0UNXZ1OB1VBCIPodDpoeqhqsMb27oNkjPgDkvlAUPb19aUoatasWXw+n5TORV4j0gqVSqVWqwU9CYqBNVzB49+mvft2J0OWFbz1RGanoKCgtLS0mpMNjMhkMhkMBm7i7dq127p1K2KvSMxyOljL2nxKuA8fOcJHWq32s88+A6JNTEyUyWRisRgLIQ8Pj19++SU5OVmlUu3atevVV18lMnNIXQW+f/bZZzUajclkIjniEolEp9NB2EckErVv397Nza1r164qlSotLQ2LAYXDoPlTE9zHsgSZBmhzXFzc9u3b0Tx/f/+kpCRQ6uF4q76KoKAglUqVmpoqk8kmTZqECpfTp0/ncrlWq3X+/Plubm7e3t5z586VOozL5bZr187T07NVq1YpKSkQ9bI6LCwsDIOkbdu2wcHB6C7Uc2AymVu3bhWJRIRZRHv3m3GGAFaWlJQ85MiH0xxAPzs7+/bt2zXg6iZ6G/D90dcbNdh1h+HDLIc5LwCaqNF1OA1WAIhF5ObmAvTn5+cDLsPZX15eTjKPm3Go1PfUeXl5M2fOxH0P7nws+MeOHXvu3DlgfXJMPDXKysoQysAqlHxKb9A98E/sgWaD+x07dmQwGNVC+4mJiZDmAP1dVU9rbLgP9rBYLLZarQaDATT9Dz74AN7Ebdu2JSYmLliw4IUXXhg9evTcuXP37dv366+/AiQJBAIolNfzmv5ndxru2//O8vLy4Lb/9ddfJ02aRPy7pBTi5MmTr127ZrfbwecpKSkBfRMHrqqqIuT+vztVI37+9HBfo9FgZGZkZHTp0sXT09PDw0MqlVoslnbt2mH9s2HDBuB4oVD4n//8B0uCn3/+Wa/Xp6eny2SyqVOnIjsW4bUJEyZgev70008ajUYkEslksq1bt1IU5e7uPm/ePES9MEpRXhoiWjXBfaPRKBQKkT0sl8sNBsPevXvxk3Xv3n3Hjh02mw20veHDh2MNEBMTYzAY5HI5GPm+vr5z5swhRPx3330X/J+9e/fK5XKpVCqTydC8sWPHYgEAef7qNNxhw4Z5enqyWKzw8HDI8Gs0ms6dO7NYrHbt2qlUKh6PZ3AY7d1vxLH+vw9dWFiIN7Asv3PnTlFR0Z07d4qLi+/fvw+VKpR/uXnzpgMhZ924ceP69etXr169cuXKZYddrcGuNLJdvHjxzp07WVlZ165du3LlyunTp8+cOYMmnTx58ty5c9evX7906dL58+cvOex8DdbIzazx8OjPq1ev3rhxIzs7+8qVK+fPn8/Kyrp169bly5dPnz6NN69evZqXlwcWUm5ubn5+fmFhYUlJCYrRPtbBX1VVRbwz+H0b6RVEL+fT4bxEpQ3MHCQepKSkILjn4eFBnhTe3t7r1q2DF7+goABfJ8OykZpNH5bugebqgWaD+wioMRgMSG1A1/LJSC/InUUZLHjTZTKZwGHx8fF9+vQB/YCiqGnTpqnqaagHBIlueDGra/EMHToUAiBhYWG4fSBblKKovn37rlixgnCdkYegdIgY1uvMNNyv15QoLy8PDw+vlkNFyIjFYuGe/txzz8XExICFiQPCYdMSgD7a85RwXy6Xa7VaVNW12WwA94MGDTp27Ng777yDURoYGAihTLVanZCQ4OHhwWQyJ02axOFw1Gp1XFycTqcbN24c/F4KhUKr1c6bNw+HWr9+vVqthjz/yJEj3dzcGAwGl8utL9xHpMtoNCqVSolEYjKZZs+ezWazXVxcAgIC4G5PTU21Wq1g57u7u6empiYlJYlEIjab7eHh4e/vn5CQgEiaTqd76aWXAO6h3iOXy7EaYbFY8+bNIwEHvV6/atUq3G2mTp2KZqM6GDrnxRdfRJIuIng03K/XvGuQnXNycnAckMWLioqKi4tB4Ll3796NGzcA6QHxL126dPHixQsXLgA/n63BTjeynTlz5uLFi6dOnTpx4sSZM2eOHz9++PDh33///fTp0ycf2PHjx48ePXrkyJFDhw49eO/hv43czBoPf+zYsT/++OOvv/46derUuQd24cKF1NTU7OzsgoKCW7duoZ+vXr1669atO3fu3Lt3Lzc3t6CgoLi4uKysrCZKjzP+bpDh8diDFBUVwe8OpZ1yh5U4zG63FxYWFhcXQ4fHbrcHBweDMUj4e3hSi8ViwtghO9P5uI/tcPrN/4IeaDa4D5o1cgHlcjkk9kjeoarO1tje/WrXoFarBRwRCoUoskvYxj4+Pm5ublOmTJk0aVL79u3hNB0wYIBMJuPxeEqHWSyWJ1vG0Lr7dZlghNOfm5ubmprarVu31q1bozgi8Fznzp2//fZbu91OFH6guFxeXt4SeD5PCfdJjVidTicSiTACP/vss4CAAKx8xowZg8UAdDMXLlzo4uLi7u4eERGRkJCQmJiYkZGRmJgIkP3qq69iqK9cuRJf37RpEyAyYDebzR48ePCRI0fqC/chvonZhNmB+F7v3r3VanVmZqZQKNTr9VKpFHeGAQMGYM08bdo00HhWrFiRmZmJHAC9Xo/Kyj179pRKpZD9mTlzJsICYWFhiI/hpKDx+Pn5RUdH40Q6nS4iIsLNzY2iqKlTpyLagDsJDffrMumefh9nH2pOTk5lZWVZWdmmTZswgPHq6uqKHxR6zUwm0+VBlo7zbs2+7e7u7uPjw2azEW7CIhaJ43ADkato9qaSBjAd5urqiunGYrHQ+OHDh8fHx9+4cePixYtXr17Nysq6cuVKdnb2rVu3bt++fefOHWfEDx8/gd0YFU0D98lt3zlg6zws8f6vv/46ZswYZ5SPX2Ty5MkXL14kLQcvFF+vqKhomuiEc2vpbboHmqAHmg3uk/uOzWaTyWQWi0UoFLZAuA/yALySIpEI1YXQeB8fHy8vL7FYrNFo9u/fv2fPnv79+yPv58svv1QoFBaLBbLltaQaq2ow2rv/t6O/rKysuLgYt2xIRkAsec6cOWR0MRgM1E8ZP378pUuXyDGJQ5G801wbTwn3IcEJqLp27Vqsc6ZPn+7lsP79+3M4HKFQSArZAiV7eXmpVCpIW0ZHR3fo0AEyWcuWLTObzTKZDMCLzWavXLkSGP3rr78GS2rr1q3IDMYQxZwFnUYsFtdE5kGIQCaT6R22ZMkS/EbffPMN1Dmh+r9582ag8FmzZonFYqlUCq2e7t27w6+PNyUSCb7+wQcfIKNGr9e/+OKLwC4cDkelUplMJpVKheIYFEV9/vnnuMNAwn/p0qU4wpo1a+Ryuc1mQwkwGu43zUQA3AdoKykpqaiouHTpkqenJ9th+GmAkoljCG8+9ArY+ugro5ENEsykMWgqXr28vEg8GRsuNVsjN7PGw5OG4RJcXFwIJv7000//+OOPEydOnDp16sKFC+ApXbt27fr16zdv3gTiB6WntLQUPn7nMdM0cB9nLCkpIbgfDwIwwfCmXC7v0aMHruv555/HlbZt2zYkJIQsEgoLC+/du0fywaAHRZYBztdFb9M98E/vgWaD+7gzUhQF/W/o/anqb43t3TcajSKRCMhGqVTq9fpffvkF5QIoitq1a1dycjIcoiaTadmyZeCQdOnS5eDBgxkZGWieQqGo75XhjCRjkqKozp07//DDDwEBAcHBwZs2bYqIiIiOjkZ5I7PZnJmZeeTIkVOnTl26dOn69eu3b9/Ozc0tKipC1PW/z11BrohsIIYLgeTw8PBu3boRjiYc1c8995zZbMYOUFpoCbP3KeE+3NigykyYMAH8e6Jas2vXLoTOQIKHTKebm9uIESNWrVr18ccfIy/WxcWlbdu2s2bNEgqFoMMlJCRAqO6zzz5D2d2+fft6enr27NkzLS3tCcg8er1eLBYrFAqdTmexWPz9/XEH4PF4oN6lpqbK5fLFixf7+vq6urquXLlSo9FAaMjT03PBggUWi4XL5aJ63ebNm7GwWbJkCYoBK5VKrEZ8fX3lcrlCobBarRqNBiQlJpMZGxuLmgMqlcpoNE6YMAGFe/ft26dQKAj7job7TTMpMG1BusCiPScnB4AMbmaCpN3d3cnDgrxJNh4F+ninRpzbcB+QpwBRgAX/zXkl4Orq6ubm9tAVkcbjiw3Xonocyc3NzdXVFTdGtIcsq1577bXMzMyjR49mZmb+8ccf586dO3369IULFy5dunT16lUg/ry8PPx2SNt1xsdNA/erqqpwagzX0tLSe/fukZBRdV7W8uXLoUhGUZSnpyeYiv369ePxeKSEFqK7pPHQg2qa8U+fhe6Bpu+BZoP7YFxQFAVXnMphyifiuKsdplQqFQpFg3P3TSYT1ADVajUURTZs2ID7Y+fOnTUaDeBCenp6TEyMzWbDM4DBYBgMBoAnVAvGBdb9lYb79lqNMCzv37/vHIolKvvVIwFY9qFn7apVq8j9nRyk1lM17odPCfcVjpUkdG969+6N5zeBRyEhIVqtNiUlJS4uzmaz/fTTT15eXviUyWS2bt0aD8JOnTotW7aMx+NZrdbExEQkAwC7TJgwQSKR7N+/H07377//Xq/XP4F332QyIcigdmQC4OnbrVs3hUJRXUZXKpUiGgYUXh1q2Lp1q8Viefvtt+GGjIiIAB0fUl1g+Li5uYWHh1ssFoTXcF0vv/wywgUmk0kmk/n5+Xl5efn6+kqlUoPBYLValUpl9Rr+xRdfxBJa6iitBcV93H9oZZ7GHfGOo0POvLraUXl5OUQ28/PzGQwGm83GmPTw8MAGYGhNsL4mv7kzpG68bU9PTyaT6enpSeQBcC42m926deuH7jyN14ynObKbm5ufnx/B/W5ubt26dbNYLIcOHcrIyDh27NjZs2dPnDhx+vTps2fPXrx48dq1a7du3bp37x7SdsvKysrLy519LlUOa+whhHqLOEtpaSm57efm5h4/fnzMmDF4ELu5uWH8tGrV6pNPPjl//rzdbs/PzyeF25zbSVz+JGLg/Cm9TffAP70Hmg3u9+rVCzep8PBwnU4HWjywi6o+1tjefQApQHaTySSXy1etWsVisTw9PXv16pWQkHDgwAGRSKTX68GQ7tChA5J3d+zYsW/fPrFYDMH++lzT/+xLw3373xkKVWKvyspKhHGhxgAcf/369Tlz5jCZTCBXuKtZLNZ77713/PjxFuLgf3q4j8wQrVaLAlLe3t7vvfeet7e3p6dn9+7dIYYTHR2dmpo6e/Zs+Lr8/Px8fHy6dev29ttvb9myRSgUKhQKo9FoMpkwYg0GAzIfqiMAcrl8xowZFEU988wzMplMKBRaLJb6cvcRXkBBrr179+K3mDZtmlKpRDY8j8ez2Wy4LbBYLD6fr1aru3fvTlFUx44dEQSwWCworNuzZ09I9XM4HMTWQGSiKGr27NkSiUSj0ahUKsQoGAzGiBEjxGKx0WhMTk6GTm6rVq1YLNbgwYMx10jZbNq7/3fTrmE+Ly4uBrqCjsqtW7euXr2K3GsXFxc3N7cZM2Zs3rx5zZo1P//8c1hYWLDD1j5igTXYmka2devWLV++PDQ0dPXq1cHBwd9++22PHj28vb2Bm0eOHLlmzZr169eHhoZu2bJl7dq1NTQzsJGbWePh165du2XLltDQ0PXr169Zs2bkyJHAxy4uLl27drU4LDU1NSMjIzk5OS0tjST1Xr58OSsrC5Se/Pz80tLSsrIyqN9gZDQN3Cf1sOx2O8myvXv3rlar7dOnD1l0QXCzQ4cOGzduRPMA5UnWFlSGkIRA2k8+bZixTh+F7oGW0QPNBvdJyZvAwECDwZCUlGSz2eRyuaqe1thwH/L/RqORx+MBaqxcuRJumyFDhhw8eBCIf//+/ZmZmdV6hcgL9PT0XL16tVarNZlMJNO3XldGw/26TJD79++XlZVBygP7E68h2di3bx+46T4+PvAXUhTl7+8fHR1dl1M09j5PCffVarXJZILwK/Rn/P39xWLxp59+6uLiwmKxEhMTJRJJenp6Nd4lD3WxWIxQFRJ8VQ6DUA/83wKBoHPnzhRFffHFF1qtFh04depUaO2LRKL6wn2tVgtYL5VKq0EGFmCBgYEZGRl8Ph/Em7S0NPh0+/Tpo9frlUolVgV9+vQ5dOgQ1gNYeLu7u/v6+vbs2RNraZFItGjRIrjxAgMDkb4sFot3796NX/zbb79Vq9UikUgqlWq12l27dmHZ8/bbbyMzARk4WCTQ3v3GHvM4PsT1c3JyqqqqCgsLb9y4QSolUxS1atWqzMxMiUSCmK1D9eD/v2C44hX3yUdfnfdpjG2bzVZdjQ5JWUajce/evQMGDCD0nsmTJyOIpFKpIJKLlJVHXxujbXU5JikXY3KkuEyZMgVl9SiK6tGjh06nS0hIMBgM6enpNpvtzJkzf/75JzSILl68eP369ezs7JycnLy8PLDnmwXug7qD6K7dbr979+66devAj0JIEKD/lVdeMRgMQPnOUQhElsg7EBXF6sVOG90D/4090Gxwf9q0acihmTlzpl6vj42NNZlMGRkZWq2Wz+fLZDKgf41Go9frZTKZqgZrbLiv0Wi4XC7yidVqtdVqNZvNuI8MHTpUq9UqFAq1Wi2VStPS0gQCQZ8+fUB7+Oabb4xGo8FgqL39NVwW7d1/qtkG/mhlZSVSr8rKyoYOHQrFDPh7KIry8vL6+uuvwfgnsWA8FRChRgvIk+z+A0ORRSLleefOnadp61PC/fT09ISEBJPJFBoaimG5aNEi8HaAlefPn5+cnIxqcT179sTgBLXGYDBYLBbgexS7lUgkUqnUZDJV19UaNmwYg8GYOHFicHAwisoJhUKpVAodm/rCfUxqMHbee+89rExCQ0MtFotMJsOsj4mJcXFxYbPZkyZN0mg0UVFRAOsfffSRQqFApW21Wv39998/++yz1aJeI0eOhCyPTqd74403UOh6165dOp0OGUHLli0Da2jdunV8Ph9xCalUOnXqVAyDpUuXEqkfLM5p7/7TDOZ6fff+/ftA/Hl5ebdu3crKykI+BrBaaGgoCbyoWp6RKooymUwkEgkEgh49ehD6+7Rp0zCusDrFMrJFXYRGo8HSFxcCdhywco8ePTgcjkAgQPK60WjMdNiRI0dOnjyJSgKE0lNUVAQHOcHN9RoDddmZ+NqJZg4JDQHl2+32S5cuoVAg7hhImaAo6quvvmrJJdXrcvn0PnQPNFQPNBvcj4mJoSgKj+3k5GSTycThcMxmM4Tq+Xy+QCAwm806nS4pKakWkk9jw324P61WK8oPwZsI9ENRFJICtVqtxWKJjY01GAyQAycCo/Hx8XCjqupptHf/aYb4Q3DfIcpc/tlnnwFJsFgsoN7q1JHevXtDoLOwsLDMYQ+VV4QTiCSBAeWjumSD0IGeEu5j/Gs0mrlz5wLub968WaVSJScnQ1vzxRdfVCgUyDJH6InNZqelpdlsNkjgKxQKuMMtFovBYOBwOHK53GQy/etf/6IoatCgQVOnTgW2xnHUajVEcohLtS5ltlJTU00mE1D79OnTfXx8mEzmihUr+Hw+cLxWq122bBme1jNmzDh69OiaNWsoivLx8Zk2bRqHw5HJZCkpKWazuXfv3pDmnDdvHoCURqMh5ECZTIalSPU1vv3220CQq1atSktLw2JDqVRiGCBDoLqMhkqlkkqlIpGI5u4/zaSr73dBwCsqKsrLy0MhrX8u3Ofz+f81cL9bt27x8fFJSUkymQwyVqmpqenp6YcOHfrrr7/OnTsHjc5bt27dvXu3seE+7rcVFRUE9ENFp6CgoLy8HCFcDocDbh5ugF5eXiwWy8/Pb+/eveD80Ii/vnOT3v+/sgeaDe4rFIo2bdpAO2XBggVwGXK5XJlMZjab5XI5GAgQ9EhJSVHVYI0N94lwEG58UqlUIpGAFOHm5rZ27VqLxZKSkpKYmIhms1gspAZC2g9JjYAUNVzB49+m4b796cwZ8ZOU3MTERKwwieqcu7u7p6dnXFwcyrUQH1V5eXlOTg5B+WgLefbg35s3b9rtdrw+MWP1KeE+xGEVCsV7772HcLxAIBCJRNUD8o033gB+ioiIgCP/nXfeQcmIH374AVKVmD7IPME+ULq0Wq3QtOncuTN0fkJCQpRKJcA0dO7rBfeVSqXZbEZuAI7s5+e3fft2SOJUBxO0Wu0LL7yAB3ZYWFhsbOyGDRvAhP7ggw+OHTsWExNjMpm2bt3q6+vLZDI7deoUGBiIWalSqeBY7d+/f2ZmZlJSEhSr/vOf/3Tq1KmaYhESEmIwGHQ6nVwunzdvnq+vL+hAqARMrgsJuzSZ5+lmXl2/XVFRgXJaubm5N2/evHHjxj8I7isUCo1GA0AsEon+a+A+RVFdu3bdu3fvvn37+A5DMn1KSsrBgwf//PNPqPRcuXIFEj3Q5ykrKyN3zrr+/HXe7+7du4D1pIw6oD9yP7755hss/pFchHz9119//cqVK6SeenbCeC8AACAASURBVOO1rc4XQe9I90Dz90Bzwv1x48Z5eXl16tSJxWIhepicnIwHsNVqNZlMGo0GvkZVzdbYcB94HXogkBCRy+VEtPvzzz+HnolerzeZTBDtadu27YgRI6BDcvDgQZlM9mQ5CXSZraeZH4D79+/fr3RYYWEhfDzHjx8fPXo0WLbAvuB1LF++HKcrLy/Py8tzPjWeK3a7HXAfzB88gch6AEwfgH6i/ON8kJq2nxLu6xzG5XLhy2/fvj10deRyeWBgYJs2bRgMxoIFCzCbvvvuOyCqGTNmQM8KKap6vT4uLg6+bTB/JBIJ0nPB2u/ZsyfYOEKhEATq+pJ5wG2Qy+VisTggIAAimP/617/2799vNpsFAgHJtaUoCrkBO3bsQGv/9a9/HThwAJWtO3fu7OvrC/f8jh07kBIQGBiIx3x18rHNZvv111+h2rlw4UKKory9vVeuXLlv375Dhw7t3r27ffv2WBu4u7vr9Xoul4ugARYDNJmnpoHasO9DSLGoqKigoCAnJycrK+v69ev/ULgvFAp5PF737t1J1OifS+ahKKpTp06RkZE7d+6Mj49PSEiADrXFYsnIyPj9999Pnjx59uzZS5cu3bhxA/V3i4qKSktLyU2yYceJM6/SbreXlJQQ4uWRI0eQlQupVrgGWrduvWrVKrvdfv/+fbAuEURq2FbRR6N74J/YA80G9yUSiclkIloigwYNCg8PT0hIQB0rpVIpEolSU1NBKa6lKm1jw30cH45Mm82GXIKkpKSOHTu2adOmOrNw06ZNBw4cQJrjkCFDkIMYEBCAGlsymUypVPL5fFU9jfbuP+V0IsibAPHS0lI8AKofBqtXr0ZkCbwsgNoRI0YcOXIE583LyyNybM6ibyQDmMhBHD58GJEBlPpCylfdG/+UcF+lUkF30sfHx93d/cMPPzQYDED8UVFRDAaDxWK99tprWq02Pj5+z549cJ+7urrOnj179+7dqamp0dHRU6ZMQYRNIBBkZGTo9Xo+n//TTz8xmUwoDC5atAhyN0qlUq1WSySS+sJ9i8WiUCgkEolQKNy9e3ebNm2YTGarVq1iY2N1Ot2sWbPYbLaPjw/490DeOp2uTZs27u7uXl5eERER1TkwgwYNYrFY48aNQ4gGxGilUrlx40YXFxdvb++2bdtGRUXJZDKkGGJdQVFUz549eTxeYmIim83u1KnTuHHjGAxG165dDxw4ANIg5ilN5qn7uH3KPVFGt6CgID8//969ezdu3Lh27do/CO7L5XKkbEkkEoFA8F8D911cXDp06LDFYfDxc7lciNjabLZDhw4dP34cDn5Ud4EAf4mjUFq93Bx1HD/En1JeXk6KYVVWVkZGRhItbyRisVistm3bCgQCSG3i7p2Xl0eWB3U8I70b3QP/rT3QbHDfarWKxWISr4dQxjvvvPPJJ5+MGzdu2LBhr7/+ukQiUalUcCuqarAmgPvwgFanA5LUApPJBGIxRVG9evWaN29eUFBQv3794GDo06cP1ieI9mo0GrqqbjPOH0KzqaqqcnZBqVSqLl26kIr3wMHPPPPMzp078aiorKzMy8vDM6ysrOzevXtVVVVIF0MSsN1uP3z4MHRjKhwGxF+vx95Twn2FQiESiZAJQ1HUvHnzUECXx+Oh0Cyui8vl6vX69PT0jz76CJI7Li4urq6uJLlw7Nix0K4hsp6bNm3CePb29k5MTET2fHJyslarJfx4LEqx5EBcrqaqukDS0LaKjY0dNGgQXKEQuWrVqtVrr702efJkDw+Ptm3bQhWUw+GMGTMGCwCQr9q0abNgwQLEKCiKSk1NTUpKAp8HFwX50VatWiH9tzoVAUR/iqIADrp27VpdFRhZfb169bJYLJjdCQkJSqXSarXS3v2mmaoVFRWlpaVQ3L979+7169chxOnisGpaWgtP1X0I7nO53G7duiHERFHUP9e7z2az27dvv3HjxvXr10dFRf3yyy8JCQkoR22xWA4cOHDs2LGTJ0+eO3cO2bq5ubn5+fnFxcUVFRX1uu/VfZiBinP//v38/Hy73X758uVFixYRbWVXV1fk/Y8cORK8SsRmKyoqAPTJIqHuZ6T3pHvgv7IHmg3uKxQKmUymUCjWr19PhHJBsWCxWC4uLp07dxYKhWC918J9b2y4r9frVQ6DCA/IAwaDgc/njxs3ztfXFw5UoBY2m/3iiy9GRkZarVZkHoNEUUv7cfBHXwGk6Kq69gYy4tcnzp6SkpLTp0+PGjUKgBiaMNiePXs2EH9VVVVOTg6qMJIvOjNB27dv7+XlNWPGDGQDo6R8vRz8Twn3k5OTxWLxqlWrmEymn5/f119/LZPJkpOTeTxeSkrK119/jfDFsmXLRCIRmD/Tp0+Hpj4GrZeX14ABA5YvXw7tS3jxTSbTl19+Cfgyc+ZMrcPMZjN0651DXhqHwr1cLq8d7huNRrlcrtFozGbzoUOHqsX++/fvj96mKGrGjBkJCQnICR46dKharZbJZGlpafv37+/YsSO8d9DZkMlkM2fOBFsXKodwry5evNjDwwMPfoqiNBpNdHS00WjcsWMHLpaiqO7du0dERHC5XGgmvvLKK/Hx8bgoJOJjTUJz9xtoztV2GMjt5+fn5+bm3rlz59q1a1euXPkHefchFieRSMRicbUg238N3Hdzc2vfvn1oaOjatWsjIiJ2794dFxfH4/GgKwo+z19//XX27FnQ93NycgD3y8vLGwPuk/s2BpPRaHzzzTfJfQOgvzoIuWXLFlB9EHQlbp3s7OzGaFVtI5v+jO6BltoDzQb3weVFemtCQsL8+fMHDx7s7u7OZrNZLNZLL700btw4rAcgK66qwRob7kOWGC5APp+vVCrlcjl8hyqVau3atUiIhFzxJ598wufzMzMzExISfvvtN4QmdDpdfHx8Dc2v8W0a7tsb2pB9C+zuzM7/7rvv8Nho1aoVELC3t3evXr1sNptzE/DYKC0tJTIRRAynU6dO4Jg2PdxXq9V6vV4qlcpkMhScAv5OTU2VSCTwxCPKhCwUUlw2KCgoJCQkMjISRHlErrRarVwuhzQnZHy8vLySkpJUKhUSV9RqNRbh9SXz4MgKhQJqmAcPHty7d+/+/fsDAgJSUlJQm8JisZjNZiiCC4VCiPFbrdZdu3bNnz//wIEDOp0uIyODw+GkpaXFxcVpNBpU70LlLIvFsnTp0sjISDQYXH+z2SyRSDZv3hwaGiqRSPh8vk6nMxgMkAmSOQzyoxaLBWt7Gu47D/tG2oasSl5eXm5ubnZ29tWrV/+5cJ/P53O5XJJo/o/27nt4eHTo0CEkJCQoKGj79u27d++OjY3lcrlyuVyv16elpR0+fPj48eNnzpwhcD8vL6+oqOih2roNOGxwry4tLV2/fr2fnx8ECRgMBuJ+ffr0MRqNRDIBUjylpaXEKUPL8jTgb0Ef6h/dA80G91UNZI0N9xuomfU+DA337U1iEO1RKpVQcvRwGJzHvr6+4eHheH4QHj8aVVhYqFQq8bzBzhs2bCgtLS0vL4dqBJ4xdXEsPaV3v94Dq4YvgFvP5XLBZV+xYgUeqzNnztyzZ09KSgo0snQ6ncViAYMfQ7SO3v0aTtsS36bhvr3xraKiorCwsKSk5O7duyDunz9/nsFguDis7mQeJFOZzWZEX6GmSkKyjTq8IB8nkUgSExOTkpJ69er1BGQenU5ntVqTkpIOHDjA5/PT0tJQT7q+LUcNO61WSx6ItR+hFt39zp07//jjj2vXrl2/fv327dtjYmI4HA6cAsnJyb/99tsff/xB4P6dO3dycnIKCgqQrVuXO579cUZyosiH5eXlFRUVuPFevnx58uTJcOoTFWw2mz158mSSOuXswSEHoTfoHqB7gPQADfdVLdNouE/GaGNvZGVl2e3227dvo7QkqlPh0eLq6jpjxgykFaIZ4OhfuXLF3d0dkj6Q8H/ppZdIRi84pna7PTs7+28b30LgPrz1Op1Oo9FU5+n5+Piw2exu3brFxsYajcb09HT49dVqtVarFYvF9fXuq/45RsP9vx20T79DQ8F9JKVoNBqLxSKXy202G7JZmmC4NQjcR6xYKBTKZDKUvzA4rL7tB92uAeF+cHBwaGjotm3boqOjk5KSRCIRqnn8+uuvjQH3oXZAShbCXZKfn19aWsrj8Z555hnckNu3b49aYK1bt964cSOk0qDydP/+fZqm//QTkz7Cf3EP0HC/vvfVJtqfhvtNM+sQ8y0qKoIERGRkJLxHSMlgMpkMBqNLly6pqakg8aNVL7/8MoR94ALHo0gikeBTEj4mev+1XEsLgfsQvTWZTFFRUR07dvTy8vLz81u/fn1qairSc1FPFwr9tHcfnKiUlBRolZw/fx6Zi3fv3oWn80EJ5vskU7yWMfB/8KOGgvt6vd5sNotEIoPBIBKJUlJSEIBSNb41CNxPSUmRy+U6nU4oFBqNRpSnEDgq2tbrCvC8IK59tVpd+9dr8e536tRp+fLlwcHBISEhW7du3bt3b2JiolAodIb7p0+fJtL7DeLdz8/Px62YOOmRd1vdEsRMfHx8oJ/m5eXVt29fm81GbsjkNvvEsQU7bXQP/B/oARruq1qm0XC/yWYfecCAh1NdCuqll15yc3NDhVcvLy8fHx9XV9eoqCioT0AZxt3dHcI1pDj0sGHDSJ3d4uJiHO1vr6KFwH2Ut1u+fDmbze7YsaOLi8snn3xiMpm0Wi0o7zKZTKfToQIuNPsJwqiLMk/LnGWPbRXt3f/bQfv0OzQU3EeCuFarNZlMZrNZLBZLJBK5XP7YX7Zh32wQuK/X65OSkiQSiV6vh7CsRqN5gvZjSpLXv73SmuA+dPeXL18eFBS0bt268PDwX375JT4+HgU3rFbrwYMHjx07dvr06cuXL2dlZTUUmQcukvLy8srKSjjpr1+//uGHHxJNLbhUWCzW7NmzSSYuGYdg/pB/6Q26B+geeLQHaLivaplGw/1HB2tjvEPk8wk7/+bNmxcvXnz33XcRNcZjhs1me3t7jx49etOmTa6urtCFBHefgH6Kov78809IScBTRdxOtbS8hcB9gUCAS0ZwY9GiRb///jtydiUSCbA+aDwCgeAJhDhb5ix7bKtouF/LcG2ojxoK7qPKhMViWbZs2c8//xwWFmaxWGqp0/LYX/zJ3mwQuG80Gg0Gg16v//3331etWrVixYotW7agIvuTtcr5W7X4+GuB+x07dly2bFlgYODatWt//vlnZOsKBAIo1QLunzp1qmHhPirgEoFjiURCCDy4A/v4+Dz//PO7d++GG4W49sECQlFFmsxjp43ugZp7gIb7qpZpNNyvedA28CeVlZWkmEtZWRmeGYWFhbGxse0chucN1Hs8PDyA8vEvlCIgIAhFDjQOpFKi3VlLi1sI3Ldare+///6zzz7r4eGxZs0aDoeD8jpIASQcHpCMDQYDzd03GAw0maeWgV37Rw0F91Fjbv369ajcMm3aNKPR+ARkGFX9rUHgPofDqa4fJ5PJEhIS3N3dXV1d33nnnScoy4ha13jFpcDTX9Nl1Q73ly5dumbNmuDg4M2bN0dFRe3bt08gECgUCkjvHz169NSpUyis21DefQROoYtQHVsgThaEWNls9rBhw/744w/cUYl3v6yszDmISlw2dtroHqB74JEeoOG+qmUaDfcfGauN9QYRhSgpKSksLCQeJrvdnpKSgrKyAPSA+AAWqBGBstCenp5I2GUwGGfPnrXb7bm5uSi59beNbiFwX6lURkdHjx49euvWrUajUa1WGwwGqVSq0WiQBQgJWkjdW61WGu7TcP9vx3YtOzQU3FcoFDabjVReCwoKSktLQ31GVSNbg8B9oVBoMpn0en1gYCAw7rx581JTU+vbdsUDUyqV+O5Twv3Vq1cHBQWFhYXt3LkzJiaGz+c7w/2TJ082LNyHw+X48ePDhg2jKIrI71AU1aZNmzlz5hD9g8dmRhE3jZ02ugfoHqihB2i4r2qZRsP9GkZsA7/9aPyXCDYT3/wXX3zh4eGBKrAURUGbnyTpEjlOLACCg4Ph2ofA/982t4XAffCGtVqt2WESiQRlpJGVq1QqQYmGsx9FqTBEaSHO48eP06m6fzvOH9qhoeC+yWQyGAzvvvsu4my7du1CJErV+NYgcB+raLlcDqFJT0/PgICAJ1iuyB2mUCiIg/+J4X6HDh2WLl26evXqwMDAsLCwyMjI6Ojoxob7drs9MjISNfWgjQbCZKdOnXbs2EEGT2lpaVVVFTz6VVVVxQ6D5D+dp0t6id6ge+CxPUDDfVXLtJrgfnX91HXr1v3888+RkZExMTE8Hk+tVlsslszMzCNHjiDGev369du3b+fm5hYVFZWVlVVUVBAI+9hBQL/5aA8gfxfPlVu3bn311VdEVBtOuEdfCb0Hnqo6Pn4egvu3b9++evXqmTNnXnzxRZyRyWROnjz50WA9xi1JzmviDWiAqFQqUnhO8sCSkpImTJhA+qdfv35ardYZfOBa4I5s4mb/7elUKtVD3P3FixeDyrx+/fqtW7fu2bMnPj5eIpEYjca0tDTIkJ87d+7q1avIXMzPzy8pKaGVeR6dU87vlJeXFxYWFhQUZGdn37p16/LlyydOnGAymS4Oq7vuvkwmq84wGTJkCEVRrq6uwLs6nU4sFlssFoPBoFQqwe9Xq9Xp6elKpTI2NjYtLc1qtaJ6lE6nQ0U2tVrN5XJRu02pVEJ8SaPRmEwmmUyGuJZIJEpMTAS3vl5wXy6XGx2GNFyr1Wo2m1GuUSQSmc3mESNG4AYilUoVCoVer5fL5SKRKDU1NSkpCT57XAhq56HNGo0mOTn5rbfe8vX1bdeuHYJyKKiHEtp6h0E/12QyKZVKsVgMvU6pVIpil1qtdtq0aWTCdujQ4YcffiBw/1Hv/u+//37y5MmLFy/euHGjFjJPZWUl8cTjp8eNsbKysqysjBBysDF37lwESL28vCBwzGQy33vvvScuX+g82OhtugfoHrDb7TTcV7VMo+F+S5if8P1nZ2c///zzFEUxmUzyUHxog81mw/3PZDKjo6NR0b0ul1BHuP/QKP1b2NrYO2B8qtVqAvelUqlEIhGLxQTuY7nSr18/7ExUAnEtAP2N3c76Hv9v4f7u3bvj4+PFYrHBYKDhfl1G+GP3aSi4r1arJRKJn58fm83u169feno6oLlCoZDJZEDMHA4HyeUCgUCn0wE6a7XapKQks9msVCrT0tLEYjFQMsYqQgRWq1Wv1yuVSqPRCNaQQqFAgAtqVFjhJtahzBYqXisUCo1GgwUGlrsImikUik6dOrFYrHbt2ikUCqPRKBKJIISFK0I7JRKJUChMTEw0m82oz4XlTevWrT09PV988UWVSiWRSHCBRqMRCxKBQKDVag0GA4/H4/P5BoPBYrHUwt1vELgPVuSjP/2VK1fImxUVFeXl5SaTacCAAdBFIJHSVq1aLVq0qKSkpNxhT1CtnJyF3qB7gO4B9AAN91Ut02i43+xTFHyDoqKiSZMmAcrD7fQQ0Me/5EFFURQUOZ0LuddyLXWE+w8h5vqi2AbfnxT0USqVgFaA+0KhMCEhAd59wH1/f384F/GVh0B/gzfsKQ+oVCpDQkKcf2J499esWRMaGrp169bdu3fHxcUB7qemptLe/VrGdi0fNRTcV6lUUVFRFEW1bdt24sSJZrMZGjKotouccrlcrtVqdTqdVCqt9oUnJycLhUKtVqvX6w8fPowaUmq12mq1pqSkAMcjbCUWi/FdqHzC6Q59qvrCfUBwtUMOXywWo5E2m02v16ekpEgkEtxhRowYAXRusVhMJhOfzxeLxUKhEKsUi8WCgnfJyclJSUl6vV4kEm3fvh0Mw08++QSkf61WK5fLzWazVCq12Wwmk8loNOr1ekxDLDYaG+4Tv35BQUF+fn5hYWFRURHezMvLKygouH//fllZ2a5du7y9vUkNE8Q3unbtKhAIMHhQ1hB5UFVVVbWMKPojugfoHqi9B2i4r2qZRsP92gduE3wKSU0iE0Fydp2xINkGtKUoysPDg8FgmEwmu91Onnm1tLaOcJ9gZQKXnxLXPuXXCZlHoVDI5XJgfSj0x8fHjx8/nqgV+fv7q1Qq5PtiVOPUmHdP2YwG/7pCoVi3bh35WSmKcob74eHhu3btiouLQ10nGu7XMrBr/6ih4L5UKl25ciVFUV5eXkuWLImLi4Mj32AwGI1GAGutVqtQKCQSidVqxTLAZDJJpVIUslWr1SkpKcnJyTweDyr+JodpNBqxWKxSqUCnUalU8fHxmZmZcrkcqL1eZB7EsmQymVQq1el0ycnJer1eKBTGOiwyMhJDbvr06QKBQK/XY1oJBAKj0ZiZmanVajkcjk6nQ3wAJBylUikSiebMmcNkMlu1avX999+rVCoOh6NUKvl8vk6nk8lkGKg4b1pamsViEYlESqWyseE+fv1Kh5FtEvOsqKi4cOHCZ599RlFUq1atyCvEzc6fP2+320GnxBFAjaPhfu1ziv6U7oHae4CG+6qWaTTcr33gNvanEIJQqVTw6Nfi1yfQEJpxeHpNnDixji2sI9zHeCAgG95HeNbBCmjiVzSA+PXFYrFIJBIKhRwOJzY2FnAf3Cd/f3/AC7JQwYxzZvA3ceNrOZ1cLl+7di35TQncX716dUhICOB+bGysSCSCX5b27tdxnD+0W0PBfbVaPXnyZIw0KMRnZmYKhcIffvhh8uTJn376aVhYGBItjEajVqvdv3//+++//8orr/To0WPZsmWRkZGHDh3icrm7d+9+//33p0yZEhAQAMe/SqVSKBRSqXTjxo1Tp06dOHFidHQ0ctaxDKgX3E9NTZVKpVwuV6fTpaSkcLncpUuXfvjhh6NGjRo+fPgHH3yAIRcQEIAdBAJBWlpaRkaGQCD4+eefp0yZ0r9//x49erz66qsTJkzYsGGD0WicO3fu/PnzUWvW1dX13XffnThx4uTJk7dt2wbSjkqlOnz4cFxc3Ny5c4cOHfr888/37t17zJgxCxcubAK4T7Q17XY7fPl2ux30/QMHDrzwwgsURTmL6/v5+W3atAlUflL68L7Dqh7YQ6OI/pfuAboH6t4DNNxXtUyj4X7dB3Ej7Xnjxg1Q9pEF6AwBH7sNoE/EOo8fP16XhtUR7sOhSEC2XC6XOUzaTEbODrKBQCDg8/k8Hi8xMXHfvn3jxo2DThGDwejbt69CoSDrEyxR5A+smZpf22mDgoKcf1949wH3t2zZEhUVFRsbC35FSkoKDffrMsgf3aeh4H41e6dfv374vYxGo8lkysjICAwMbNu2LUVRAwcO3LVrl8lkOnDggEQimTdvHiYpVuYsFuu5556LjY01GAxr1qwBJWbChAlSqVQul4vFYqVSyePxBgwYAKqeTCaLjY212WwcDqe+ZB6r1apSqXQ6nUajCQoK6t+/P9qMIn0Q+3J1dY2MjETVrcTERLFYvH79+t69eyNy6Oxx+M9//rNnzx6iCIxDQcqGzWYvXbrUYrFYrVYej/fee+/hYgnbkM1mMxiMJoD7RPQMOdkYA9VulMDAQC8vL0LggaTS0KFDzWZzZWUl4fxgf+D8R8cP/Q7dA3QP1LcHaLivaplGw/36DuWG3T83N/ejjz7CcxTPS3jR8M6jrywWizzA8HheunRpXZpUR7hPUDLi8kiKhU9d1BxG3PkCgYDH43E4nCSHxcfHx8TEPAr3Ae/JIgFwWyKRNEfbazunRCJ5FO4vX74ciliA+/v37wfct9lsNNyvyyB/dJ+GgvtarRYa7X369DGbzcnJyWFhYUOHDqUo6oUXXvj+++8NBkNGRkZ8fPyUKVMYDIaLi8srr7wyceLEt956C1q6X331lUqliomJwb8TJkxApVuNRmOxWKKjoz08PJhM5tChQ9PT0+Vy+dGjR7H2rpd3XyqVWiwWnU4XEBAAJ4K7u/ubb775/vvvQ2meoqh27dpBaQ1aPUFBQa+88gow/YgRI6ZOnfryyy8D069bty4yMtLf379Hjx6urq5+fn5t27YdNmzYwIEDhw4dumnTpoMHD0ZERHzyySe4L/Xq1eujjz4aN25chw4dXF1du3fv3gRwnxTAIpzGo0ePvv7661i3sFgssuiaP39+aWlpUVERfP+kWhZRNH50/NDv0D1A90B9e4CG+6qWaTTcr+9Qbtj9AwIC8KCFVwxBZwLoH4X7UJHDzkwmk8Vi9ejRgyj319K2OsJ9ApdBLwZzRigUCprJcGp49DkcTmJiYoLD4uLiCNyHH7Fv374g9xOIT9YqoFY30xU8/rQSiYQUPMKvvHjxYhru1zKAn+yjhoL7XC6X6bDJkyfz+XyhUAgcT1HUypUrUXNXq9V+99138CKPGjUKysVisRjvDB8+HDQbxKPGjh2LSJRcLtfr9d9//z0kubZv3y4Wi9VqNQZzfb37crncZrNFRkbCr9+7d+/Q0NDk5GSlUhkVFdWuXTuKorp164YyAjKZLDQ0tEuXLhRF9e7de9++fenp6UlJSe+//z5FUd7e3hwOBxm9P/30E+IVn376aWJiYnJyckJCgkqlslgsIAix2ewffviBx+NpNJpdu3aRnZsA7pPCWHa7vaqqSiwWd+nSBRnJ0OGhKKpz5847d+6sqqqCVDRR5ywoKKioqCAFEJ9sjNHfonuA7gHnHvhfcL+qqqqioqK0tLS4uPjSpUvXrl27efPmyZMnwYzEwzsoKAh6vdCmMBgMCHo6V9kkPGPC1m3wjLqHDqhymDMbWCQSIbmqd+/epDTSjBkzHvpii/3XZDKpVKpJkyYh5ZHJZL7wwgsrV65ctWpVSEgI0f8WiURardZqtR44cOD3338/ffr05cuXIYcM/e/y8vLKykrnJCdyb3UeB/9ntx/qmdLS0ry8vLt37/r6+hJwz2azCUUHEBD+ewL6yTMMvje8z2KxNm7cCN4qurewsBCcVBSLIX1eWVlZXFyM8964cSMrK+vMqP0YvwAAIABJREFUmTNDhw5FoJ/BYLz//vvwSAsdBuYMoDa3BktqZCPufAD9+Pj4OIfFxMRs27btrbfeIl00aNAgLpf7eHAtENTQfG4jN7/GwwuFwlWrVqHxcEMuXLjwxx9/XLVq1dq1azdv3vxQvYuDBw8eO3bs7NmzV65cycrKunv3bkFBQWlpKT3v7LVafeE+FCcNBgO0NaFAz+PxgoKCPD09WSzWd999p9PpPv/8c8y+6dOn22y22NhYUPABnXv16oUjqNXq5ORk0McHDBiAAtIURbVu3fqFF16AxiVurd27d6coqkePHgqFwmAwKBQKHo8HcZt6efc5HI7FYnn77beB7Ldv3y6VSvV6vdVqXblyJYpzL1iwAM1TKBRt27Z1c3Nr3769WCzm8XhyudxisfTs2ZOiqPbt26vVap1OFxcXt2zZMrgYvvnmG4PBAK5RSkrKV199hX6YO3euSCQymUwajSYwMBCRkPnz5zc23IcXA3i9tLT0xx9/dL434nbq7+9vNpsJob/W8UJ/SPcA3QNP2wM1wv3CwsJ79+7duHHj7NmzuHEA04SHh2s0GqPRiLuVXq9HCUAobzi/osyHoqmMuD9BGBAKhRKJJCoqatCgQe7u7n5+fl5eXuPGjWuq5jzteUQiEY/Hmzp1qo+PDzzHzzzzzOLFi2uB+0ePHj1z5gwN9+s1Jx4qQFZeXl5UVJSXl5eWliaVSrdv375s2bIZM2a8+eab3bp18/Hx8fLycnV1dXFxYTKZrq6ubm5uWAwzGAwWiwX1HsB0iqJef/11yPvcv3+/qKiooqICbSsrK3NeZjjD/aysrKtXr54+fXrIkCFkFTF48OCpDpvisMmTJ3/0wCbVYBObxCY8sPFO9sEHH4CuANDcoUOHOXPmTK7Bamj+pCZp/mNO8umnn44aNQp3PHd3dxaLtXTp0uDg4ICAgIfgvkqlMpvND8H9O3fu0HC/LhPwCeA+MC4ka3Q6HfR2CL7fvn37li1bgCPffPNNPp+PJ5RKpVqyZAluoStXroTWPr7br18/BoPx4YcfonKWr68vk8ns0aMHKsimpKRs3rwZOQBz5szRaDQ2mw0al5D2rxfc12q1wcHBCBKOHj1aLBbr9Xr4xRYuXAhay3fffQfhoCVLlgAcL1myRC6XC4VCm822Z88erAoGDRoE/71MJpsyZQrGanR0tNFoTE5O1mg0fD4fTq4uXbrEx8drtVqhUCiXy+E8oihqz549jQ33iWv/5MmToCS5urp6eXkhS4HJZFavorEYyMnJqcuAofehe4DugafsgRrhPqp7nj179uLFiyT0RlFUmzZtBjqsW7duffv29ff37969u7+/fx8n6+1k/RvZXnpgLzoMZ+vXr1/37t0HDhz40ksvOftl27Vrh90efX1wmIf/NnLzazz8wIEDR44c+eyzz+JuTlHUs88+u3LlytWrV0P/G9U94YKyWCwHDx4E3IeX8c6dO7R3314HezT0UV5eTpLMysvLCUavqqoqKSm5fPnywYMHeTze5s2bf/jhh48//vjVV1/t2rUrg8EguXQuLi4E8UdHRxO1aTQHAeua4P6tW7cuXLhw4sSJwYMHk3nn5+fHcDIyJFrUBhpI2oz1T4tqYb0a4+bm5u7u7unpuWDBgkWLFgUEBAQHB2/atCkiIiI6OprL5RK4T8+7Osyzh3epL9wHtUbt0K0n9bBQjBY/a1RUVKdOnUCJiYuLy8zM3L9/v9Vqlclk4M8899xzer3ebDar1Wqz2Tx9+nSKonx9fWfNmmV1WLdu3SiKGjx4sEQiUSgU6enpI0eOZDAYfn5+SUlJQNh6vZ4U2a0X3LdarSNHjkRTY2Ji9Ho90nZlMtn48eMZDIarq2toaKharZZKpV27doVqjcFg0Gg0cO0jmZjBYMycOVMmkxmNRp1OB3+/l5cXWEYpKSkajebrr7/GiRYvXowTIRmA5DRjmdHYVXXLy8vPnTvHZrOJTwStevbZZ+Pi4ux2e3Fx8b1795zjnw+PEvp/ugfoHmi4HqgR7ufk5GRlZV28ePHatWsuLi7VNyPMWxCaCYZ2cXFhMBhYsmMyN/ErGkCgxqNnxw4uLi5w8Dy6A95xQlP/a7Om/ZvgfdLJ8JJ27do10GEbNmzYvn373r17ExISUBHdarX++uuvf/zxx9mzZ69evZqVlUXD/TrOkYfgPr5V5TDgfpJnZrfbCbUUVA1yitLS0oqKitzcXLPZvG/fvuDg4C+//PLjjz/29/ffunUrGPzIP6t0FJAHmZV83dm7n52dfebMmePHjw8aNKiOikBNMBRrPwUyIF0c5ubmhuGKxiPNsfavt6hPmUwmg8Hw9PTE7YLBYMyZM2fhwoU//fRTUFBQWFjYjh079u7dC3VzSL4A7iOqlp2dTS+zycCuZaO+cF+hUJhMJqjOYwOovUOHDgwGY4DDKIqqrk0bEhKSlpYG77VcLo+KigIrb/z48VKpVKFQxMfHT506Fb9vly5duFwuyl0NGTKEoqj+/fvjyFwuF/uMHz/eZrMhqqDVai2OjNv6cveFQqGfn5+Li0vXrl2NRiOS1FGyd+DAgeARxcXF6fV6ogO7aNEik8mEIIBYLF66dCnW0ps3b4Z2UHVaOeYOKtmJHKbX67FuefbZZ/V6PZ/PR1TEZrO1atXK09MTDWhs7z5ud1KplCgCIbIxatSoEydO2O123BWrqqru3r1byzihP6J7gO6BhuqBGuF+WVlZdnb2+fPnjxw5Qp7H8F+CvUDeZDAYbm5ueNiTJz35tLE3cF4C+snpvL29cbPG85vJZCIxi+zw0Mb/wvhO/zy0W1P+6+bm5qz30rdv38DAwLVr127atCkyMnLfvn0cDgcBa5vNdujQoT///PPcuXM03K/X3Hgs3K/lCPD333cy553v3LmDHfC0Ky8vv337NtYJJEqAWjM1efcB9//880+AAIzhWkYdGf9NvIEpgpM6UiX/JzuZxDTQYFdXV8D9Wm4LTdzsvz0dWg6mFkVRbm5uX3755aJFi1asWBEYGLhx48bt27f/8ssvSUlJCoXCaDQ+lDOTnZ2dl5dXXFxMc/ed58Wj208A981ms0wm0+l0BO4LhUII2sBPT1HU+PHjsY/RaLRarXK5HCx2V1fXwYMHf/7553CxY6C+8cYbERER0Mc0mUxjx47FGhXFaL/77jusEyIjI3U6HapiabVa7F9fuB8cHIxaYPPmzZNIJCiAhTAF2PzIGTAaje+88w4GoVwuh06/Xq+vVgSaOHEi3hcIBCqVSiaTQYvTxcXl3//+t9FohGYX3mSz2aNGjcrIyCBFx6rzHOCqGz16dGpqamPDfXhGMjIy0ObWrVtTFLVkyRIQeOx2e0VFBSFSEg2fR8cJ/Q7dA3QPNFQP1Aj37969e9lhv/3225AhQ4in+SGsj8lMIvjkX7LhhJwbZRNQg8lk4kGOc0BSjbQBG4QJ/dD7+LdRGvd0B3Vup7u7+6hRo0JCQjZs2BAeHg4mDzimZrM5LS3t8OHDx48fP3/+PBKs4d2nYcffzpP79+87I2+yP6q+l5SUlJWVEac++ZRsPPQRYQGBukoU5QjWx7lqSdW9ffv2+fPnjx8/DriP4d2pU6deDwxEOUKd69vchpYQ+l6PHj1eeuklMJ5x03Bxcenfvz/Z4aGN5m7+w+d/6aWXOnfujPx4FxcXDw+Pr7/++ttvv/3xxx/XrFmzYcOGbdu27dmzJzExUS6XGwyGzMxMpMhfunTp+vXrt2/fpuE+mR21bNQX7qtUKpIwptPpULgtLCyM5NNXU9I7duzo5uZmMpnAXRGJREaj8d///jckd8iSwNXVtWPHjhMmTIiNjeXxeL/99ltSUpJSqZw+fTqOplarq8n9gwcPdnd379evH+QokpOTAfRFItETcPcnT56Mp+SuXbsSEhLAulGr1UlJSXikvvHGGzabTS6Xt2rVisFgdO/e3WKxCIVClUplMBjMZnP79u2RLKRWq0HRqY44QTVo3rx5aGRKSsqsWbPYbLaLi8uKFSsMBoPVakVIZP369XigzJ07F5m7jUrmKS8vxz2wOtgyevToF154wWg0kghnfn4+sH5JSQnEN2sZKvRHdA/QPdAgPVAj3M/Pz79y5UpBQUFWVlZSUtK33347Z86cKVOmzJw5c9KkSeMdNmbMmLfffvutt95644G9/vrrI0eOfO2110aMGDF8+PBhw4YNaRIb7LCXH9igQYNeffXVIUOGoDHDhw9/+eWXe/Xq5e/vP6AGe/DVh/82SfMfc5IRI0YMGjRo4MCBQ4YMeeWVV955550vvvhiw4YNmzdv3rFjR0xMTFJSklgs1mg0ycnJmZmZR44c+euvvy5cuEDD/XpNDPB2nF/xdWevPz6t5bD3798vLCwscRh2IxUlc3JyysvLiR8rPz8fiN95jeFM5rl58+aVK1f++usvwH2Kojw8PN566y3VAyMSWEiLV9dgzknzjbet0WigfEKkNuPi4mJjY8eOHctgMAA7Xn75ZS6XW0Mza3y78dpc+5F1Ot2aNWuQcg14hPz4H3/8cfXq1evXr9+6devu3bsTEhJkMpler8fUO3XqFIH7ubm5KBXkPIRA3yLDoJax9H/ko/rCfWBcqVQK7RqNw+bNm+fp6enq6tq1a9e5c+fi91q5cqVOp5PJZFwuV6vV+vv7UxTl5+fn7+//6quvLliwIDAwEJPIbDbrdDoMTrFYvGjRIqTM6vX6PXv2IHljxYoVer2ekIjUarXCUWq3vt79AQMGANZLpVI+n0/gfmhoKJo9b948o9G4d+9exJTGjx+P1YVcLjebzUlJSbgVDBo0SK/XozcmTJiA74aHhyPfwGq1jhgxgsVieXl5JSQkIKEZS6OPPvoIy++IiAiJRNLY3n0MYzAhkYxLYH1lZSVxi9DE/f8j852+zJbQAzXC/crKygsXLmRnZ1+7du327dvp6emHDh1KTU3V6XQCgYDjqKqzZ8+ebdu2bd68OSQkZNWqVQEBAT/99NPKlStXrFixfPnyZU1iSx/YDw773mHffffdN998s2DBgqVLl3711VeLFi1asmTJ/Pnz165du7gG+64Ga5KLePxJlixZsmLFiqCgoDVr1kAVZMuWLeHh4Tt37ty/fz+Px5NKpai4fvDgQQL3r1+/fvPmTdq7X/fZBWXSygf2qL+/qqoKHwKjl5SU5OXl1fTEIlx/Z5RfWFiIkjEE8NUE97Oysm7cuHHixImBAwciHuXt7T1jxgylw1QqFQCyRqMBbFXVYMBDjfeq1WoJ1kcpACjxx8XFSSQSlNkCFundu3dycnJNuL6G5qsar+W1H1mlUq1atQotb9eunYuLy4IFCxYuXLh8+XIC9+Ggxeyj4X7dJ5rznvWF+xjwgPsikQhAlgyzuLg4rVZLUVSrVq3GjBkjkUikUumBAwf4fD7UbPr27Qu1zcTERLDhIeWpUqm0Wq3ZbDaZTIGBgUDkfD5/+fLlFEW1bdvWaDQKBAKTyZSYmGg2mwG+1Y6M4Xql6nbs2LFt27aenp5g5qBqr06nI4qZa9euVSqVYWFhiEV8++23SqUSbYZYJ5YB06dPN5lMEL8mqbdyuZzP52dkZEilUrCVOnbsKBAIQEAymUxqtZqoPmRmZspksqaB+3l5eSDqIAqKeyYR7SGBUxL8dB4h9DbdA3QPNGwPUM6Hc9bdLyoqQrbu5cuXz58/f/Lkyd9///3gwYPQCpDJZDweb//+/VFRUdu2bduyZcumTZs2btwYGhoaHBwcGBi45oEFNLKtchhO8pPDVjrsxwe23GEEUGNV8Ogrdli+fPmPP/64YsWKlStX4miN3PwAtL+m19WrV4OvD78+sP7evXsTExNFIpFCodDr9ampqQcPHjx16tSZM2cuXrx4/fp1QiB2hqTOPzS93ew9QBYVVVVVgD737t27ffv2jRs3Ll68eOLECfIsZ7FYU6ZMUbUwI+sNgH7AF6FQyOVy4+Lixo8fDz4MRVH+/v4trO21NUehUISEhDAcBtAPZ0FNcD8tLe233347ceLEhQsXrl69euvWLdq7b6+D1Rfuc7lcg8FgNBrBoVIoFCKRqE+fPkwms3Xr1shGfeONN9zc3Dw9Pblcrl6vF4vFcrkceSPDhw9PTEw0mUwWiwUcd71ebzQawcWXyWRarRYlq1xdXffv39+9e3cGg/HJJ5/UMlbqBfeRsdqnTx+r1SqRSFB1qzpnd8CAAcD3PB7PbDYvWLAAoy4kJESpVPL5fJlMJpFIPvjgA0Scli9fbrFYeDyexWJBMkDr1q0NBgPiFYmJiQhQvP766wD0SHgAcZ+iqAEDBqjV6ibz7tdhINC70D1A90AT9cDfwH1QCy5cuHD69Oljx4799ttvVqsVzD+JRJKUlBQTE7Nr167IyMht27aFh4dv3rx5w4YNoaGhIQ4D+g9uTFv7wHCSoAeG5cZqhz26JACUd34NCPj/yBsIG4dpzIb//2Ovq8FIB27YsGHTpk3h4eE7duzYuXPn3r174+PjhUKhQqHQ6XQosHXkyJHTp0+fPXv20qVLpMZWcXExDfebaBrV/zQ03Fe1SKsL3AeZB979tLS0Q4cOAe5fu3aNhvt1nAr1hfs2m03jMKVSCed6UlKSt7e3i4vLG2+8odFoRCLR4sWLwWVfu3atWq222WwikQhZuZ06dcrIyEAVZ41Gk5GRYTabRSKRXq+32WwCgcBms4Eww2azf/zxR4DmqKioWgZpveA+Vr9Dhw7lcDgqlSojIyMuLm7//v0QD/Xx8ZFIJFqtdubMmRCRW7JkCW7vHA5Hr9eT7Lj4+HilUqnT6RISErAwGDFihFwuT09Pl8lkCoWiQ4cOPj4+nTt35nA4Go1GqVRmZGS88847KLD15ptvarVaUIkalbtfx2FA70b3AN0DTdYD/wvuQ0KkrKyspKSkuLg4Nzf31q1b165du3Tp0tmzZ48fP37kyJHqe0dKSorZbNZoNBKJhMPhxMXF7du3b/fu3VFRUREREcD9WxwWHh6+qZHt559/3vzANm3aFPbANjyw9evXhz6wkJCQGtD1upCQkNDQ0PXr12/YsGHjxo1hYWGN3PD/f/ifa7CtD2z79u2RkZF79uyJiYnZv39/YmKiUChEnNdqtaanpx85cuT48ePnzp27cOGCc2lPpJk22UiiT1SvHqDhvqpFWk1wvybuPoH70CymU3XrOAvqC/fVanVcXJxcLjcajSCj//LLL/Dcz549W6fTSaXSuLg4F0f9u1GjRoH2o1Qqe/ToAb0dpVLJ4XDUarVYLEZFKqFQyOfzsS2XyzMzMwGgocg5cOBARK5qGqf1gvvw7j/zzDMWh44nJHcWLlzIZDJZLFb//v1xXaQSVlhYmFarlclkGRkZSPPFSkalUonFYtB7vL29GQzGZ599ptPpYmNjQezEJfj7+6empopEovT09K1bt1IU5ePjw2KxZs2aheBG05B56jgY6N3oHqB7oAl64GG4j9rX1VWvS0pK8vPzs7Ozb9y4cfXq1QsXLpw6deqPP/749ddfMzMzU1JSTCaTSqWSSCTVNfw4HE5sbOy+ffv27t0L3B/lsF27dkU0skU+MJxnxwPb5jBg5nCHYQXyYGnw8F/Q4sPDw7du3bpt27bt27fv2LGjkdv+P4d/0PyH/+55YHv37t23b198fHxSUhKPxwOHB5ILaWlpKOp58uTJixcvXr58GdogOTk5hYWFpaWlhEfeBCOJPkW9eoCG+6oWabXAfaLMs3v37sTERKTqpqenHz58GBOQVuap+xSoL9zX6/XVxHSj0Wg2m8HkCQgIQO7pmjVrQE+vvjcOHjzY29u7TZs2IOibzWbw+5lM5hdffKFQKGw2G9LPBAIBogRKpdJisXA4HJ1O99xzz4EiX13laufOnbWP0HrB/d69eyPOsH37diTa7t+/H9Ccoqj333/fYDCoVKpFixZBe3fixImoEhAdHU1RFBL3O3XqJJPJkELw4Ycf4vLHjh0Lcg7iFZD1/H/snXdAFHf6/wcWEMUzMUbPxDOJURNrjEku7S7lm8tdLsn30iyJ5nLJ75JLuRhjrKAUC6io2BWQXpbtu1N3drbvsmAUS+wNg4JBQJGOCgI/s88xX464K0sYWPDz/gOXmdmZZ575jLzmmefzPMOHDxeLxRzH0TQ9fvx4eObx8fH56quv4OU8wv2Oj1W0JfJA3/DAf03VhfIRjY2N0GCopqamvLy8tLS0uLi4sLAwPz//+PHj+/bt27t3b25urtVqhf+hcBxXqVQSiSQrKysjIyM1NTUlJSU5OTklJSU1NTVRYCW1KjExMaFVu3btio+Pj3Mq1qmdrWqP1a2/w/rY2Ni4uLj4+Phdu3bBzgQ2P7HV/Pb/prcqIyMjKytLJpOpVCr4AwAveR0Ox+7du6Hc/qlTp4qKivhJujBBCuG+N9+iCPdpr5Qr3A8ODg4PD1+7dm27Qpw87kNlHtRmq4M3nae4bzKZIP4NYXscxz/44IN+/foFBARkZWWZTCa1Wi2VSr/77juIgs+bN4+iKIIgVq1axddZmjFjxrJly2JiYt59991x48Z9++23FEVB0Eqr1crl8rFjx0LSy9ChQw0GA+Cyq3HqEe6/9tprAPcvvfTSihUrvvrqK39//4kTJwKyz5kzB549bkaaoET9qFGjVq5cCRN5n3rqKYj6T5o0SaPR5ObmyuXyDz/8EHb4yCOPrFixYsOGDXa7XalUvvHGG7B81qxZq1atmjJlSv/+/Tds2AC+WrBgAfQUQ7jfwYGKNkMe6DMeaI/7kM/T2Nh4/fr12traK1euXLp0qbS09KeffiooKDh9+vShQ4cOHjyYl5eXm5trs9mMRiM0AycIArgf3pDKZDK5XA5T9yRCStoqOEhWqzKdynAKyDnNqRQXSktLg80yMjIyMzPFYnFWVpaQhv9n363mt/9X2Sqe8rVaLXR7gRyePXv27Nu374cffjhx4kR+fn5xcXFJScmlS5cqKipqamrq6+uvX7+OKh547Y2KcJ/2SrnB/XZttmDOaG5u7oEDB6AQZ3FxMcL9Dt5xnuI+9JGVSCRKpdLhcJAkCW2nBw4cSNM0lKBhGAaaTGEY9uKLLx48eBCmur755ptQlyYoKAiq9wAQf/7555DZAtlB2dnZI0aMgOav//73vwmCAAR3NU49wv3169dDs1vIq/H19R02bJhCoYBaQOHh4VqtFgrtT548Gd4DwPyB4cOHSySSKVOm+Pn5jRkzRq1WcxzHsmxcXBzfsHbgwIHwJGAymfimvHCOGIZ9+OGHUFdUJBKFh4ffjPfLZDKE+x0cqGgz5IE+44Fb4H5TU9ONGzcaGhrq6uoqKyvLy8svXboEc3ahRM+xY8cOHz584MCBPXv25OTk2O12q9UK0Rf4n0jrFMuyOp2OFliMU3AQyinSKbxVGqfUrWql6Pb/wnqNRoPjOEEQJEnC3gQ2/z91FeEs2v5k24jjOJPJZLVa7XZ7dnb2999/f+DAgUOHDh05cuTEiRNnz54tLCwsLS0tKysrLy+vrKyEGvDQ3rUFySs9gHBf6Durc/t3hfshISHtcB+66rbD/cuXL1dXV8OLNVR3382d5ynua7VaKL8DtXRUKtUrr7zy8MMP/+1vf+PrcppMJplM9tJLL7344osjR47MyMhQKpU//PCDWq3+6KOPoNRVYGDgvffeO2XKlEWLFpnNZofDodFoGIaBJMnBgwcHBgaOGDECUvw1Go2bUeQR7hsMhrVr106YMEEkEg0ZMmTWrFksyyoUikmTJv3+979ft26dVquFSXFRUVHvvfeeSCTy9/d//vnndTrdzZqhzzzzzMSJE19//XWKonAcNxqNLMu+/fbbU6dOheSfjz76KCUlhSAIs9k8Z86cYcOGBQYGDh06dMmSJSRJrlmzZtSoUVOmTNm2bRvM+0K472ZwolXIA33SA7fAfagy3tjYCLN1y8vLL1++DHN2CwoKzp49e+bMmZMnTx49evSHH37Yt2/fnj17du/enZub63A4AP0tTlmtVpvNZhJYZqfgIEanDE5xrdI5xcNzW6Ru+xk2gPA5VHyDvQlsvgns/+VP8KHZbLZYLDabDVJ39jgFc3NPnDhx6tSp/Px8mJ5bVlZ2+fLlK1eutM3kadfztU+O4F56Ugj3aa+Ue9yPjo7esmXLrl27xGIx4P5uZ4e7U6dOnT9/Hopi1dTUINy/7V3pKe4zDEMQBJSUSUhIsFqtUGmer0yfnZ0NKJyTk3MT+i3OCnJGozEjI8NmsykUCpZl9Xq92WyGmI5Wq4XIDpTwZxhmzpw5vr6+QUFBs2fPhsQYyFZ1NU49wn3o1EtRlEql0ul08PbbarWqVCqlUqnRaMAeiqLy8vJSU1PhSYNhGBzH4YUGy7KwkCRJlmUNBgPMWMjIyDAajXzrLpifIJfLHQ4HQRBGoxGeAdLT0+EFglqtNhgMCPdvO0TRBsgDfcwD7afq8qcHMf7r16/X19dXV1dXVFRcvny5rKzs3LlzBQUF+fn5J0+ePHbsGOT27N+/f1+r8pza26rdPaQcpxxOZTtld8rmQrAWtoRvwR56yPzd3zu1Z8+evXv37tu3b//+/QecOnnyJFB+QUFBUVFRcXExxPUrKioqKyurq6vr6uquXbvGd3XlLyj64FUeaG5u5u1p21W3rKysqKjo9OnTkyZNgsIjIpFo2rRpdBdJJpMxDAN/70mSBAqBuCn8SpKk1WplWRZw1tVhoc43vMejaRq66qpUKplMlp6eDv0+fX19MQwbN24cRf2cIe2R9Hq9XC6nKAqKo1POPGxIsyYIAnYIAAeBWI927mZjiqJWrVrFJ0JgGDZ37tyFCxeGhIQsX7583bp127ZtS0xMlEqlDMOYzea9e/ceOnTo9OnTgPtQmaeurq6pVc1OtfRR1dfXdy5j0FPcd3PJPFoFSUEURbEs63A4JBIJDN24uLiHHnoIw7DCy/cOAAAgAElEQVRHHnkELm5SUpL7PXuE++531f1rEe63ICEP3GEecIn7EONvaGior6+vqamBrJ7Lly8XFxf/9NNPhYWFBQUFEOY/fvz4UaeOOHXYqUOtAkjt/p/7nYJnkLZPIBAg/+VPeDyBLeFbsIfutxyOePDgwR+cOnz48JEjR44ePXrMqdOnT585c+bHH3+EOjwlJSUQ16+srKyqquKz9tslEtxho7oXnG5P4b7NKSikC4nLJEnSTlFOQW4DMJCbQoRC477dbofmQZBWBxXESZLMyckxm80QCoU+viRJmkwmOIVf/9MV7i9dunTFihWA+0lJSUCEFosFcP/MmTOFhYWQu19VVVVfX9/UqmanWvqQbty40Rbx4S+Fp+fXU7hvNptNJpNKpYKuWwRBWCyWm927pk6dCs94cXFxMpkM3iR04VTdXz8yu3YPCPc9HbFoe+SB3u4Bd7jf1NTU2Nh47dq1urq66urqysrKiooKyO0pKyu7ePHihQsXzp8/X1BQ8OOPP55tVX5+/plWnT59+mQP6YRTx50CUD527NjRo0fhmeSXP3mePnbsGHwL9tBD5v8cwj/t1JkzZ/Lz88+ePfujUwUFBefOnSssLIQ6PJcuXSovL79y5Up1dXVNTU1dXd3Vq1cbGhoQ7nv5ndlTuG80GpVKZWZmpkql0jtFEIRcLoeeOzqdzmAw6FoFedL0rSQ07mu1WqPRCCUXYS4mGMNnYkCRAJhPabFYbmVjZ5a5wv1ly5atWLFi/fr127dvT0pKgsmOdybuX79+Hf6faWpqaumsegr3YbRbrVZ4KWQ2m2Uy2YgRI/jJu1arFSb+GgwGHMfdjCEU3YfsNSgOce3aNfRHp7N3A/oe8kB3eMAl7kNRzhvOObtXr16tq6urqampdqqqqorP7SkpKYF4/4VWFTlV6NT58+fP9ZAKWgWUDA8j+W4F2/BUDTvoIfPPnXeqsLAQ/Ane/cmp4uLiixcvQlC/wpnDA/n69fX10FqrsbGRTw3vjkGEjuG5B3oK95VKJUEQJpPJ4XAYDAaVSgWpvTAdHBJ4lEoljuMMw1Cuk3CExn2ZTKbX6ymnIGsZUpahAACgf9v3EnQXyRXuh4aGrly5csOGDTt27EhOTpbL5SzLWq3WvLy8w4cPnzlzpqio6OLFizBVt29H9z0f7Lf4Rk/hvsVioSgqPT0dOtF++eWXDz30EGSdQXdemUxmNptZloUprW6GFcJ9hPu3GNloEfKAt3rAHe63tLRAgB/K8Nc7BdAPxF/uLNpTVlZW6lRJqy5evFjcKiDUHvnZ+gByoe0TCDyHuPrZlq0vXLjQI2bDQcF/F1vV6tqfS21evny5vLy8oqICsndqa2shX//69esNDQ2NjY0oyuKtt9v/2dVTuA89eiCcr9VqYVa6yWQyGo0cx2VlZeXk5BAEAQF12rWExn0cxy0Wi06nMzu7kEqlUoj3w3MITdM4jut0upycHIvF4r6CiuuTuMUaV7gfFhZ2s4J7TEzMzp07U1NTFQoFNDEF3M/Pzy8qKiopKQHcv3r1amsuT1OzUy19RbW1te2C+s3NzbW1tZ6eX0/h/s0qNyzL5uTk0DQ9d+5cKGuDYdhrr70GM2g5joPZtJDff4sh0roI4T7CfU+HPdoeeaAHPXAb3G9uboY5u9B7C4rx19bWAvRDes8Vp8pbddmpS06VeYHaPYrw3OzqA2zf44aDG3/5s6qqCvJ2gPIhog9zc284BXH9tjTZg8MLHdqVB9peoO6cqgvxe5vNZjAYMjIy5s+fP3nyZAzDBgwYMHTo0MmTJyckJCiVSpPJlJ2dbTAYaBcSGvcpijIajdDxFGL5e/bsoWlaoVBkZGTs2LFj/fr127Ztk0gkMM/YhZkeL3aF++Hh4ZGRkRs3boyNjU1LS1MqlRzHZWdnQ5+7s2fPXrhwoaSkpLy8HCrz9FXcb3Gqqampvr6eH8NXr16F5R3/2VO4D5O/VSqV2WwmSRKaas2ZM0cqlcJ0EcjXJwhCpVLxr4/oWwnhPsL9jg94tCXyQI974Da4D/bx0H/jxo1rTl29erW+vr7OqVqnalpV7VRVqyp7SK3Hr4LjVzh15coV+PDLn/wq2L7d17v/JMCNv/wJ71iuXr0KFwIi+g0NDc1t1ILk9R7gUQka29XX11dVVZWXlwtdmUehUED5v08++eTee++FlGXo9YNh2ODBg1NTUymK0ul0JEmKxWLahYTGfY1Go9PpYEYBSZIWi8VqtX711VePPfbYPffcA2YPGDAACqi7sLEzi13hfkRERFRU1KZNm+Li4tLS0mDmwx2I+3v37i0vL2/5b7UdzP+9xuVvPYX7Op0OmmdBUan169enpKRAiaf4+Pi8vLysrCyHwwElON3PCUG4j3Df5fhGK5AHvM8DHcJ9yONvC/0Q7G9oaLjuFKBn2ycBoFJ4HuiRn2BAu2cSiIjf0h54aOE3aPf1W35F0IVX/1u8Pe0ov9EpVF/f++6s21jUlpC6M7rvcDjUavUXX3xx1113YRg2aNCgJ5544vnnn//oo4+ef/75yZMnq9VqqM6p1+vdtMkTGvcZhrHZbNBcSS6Xcxy3a9cuf3//wMBAYP2AgAD4MGLEiE8//ZTuIrnB/dWrVwPup6enq1Qqg8HgcDj27dt39OhRiO6Xlpb2+eg+hmFffPHFyZMnIdWzvr6+c//59BTuKxQKo9Go1+txHDeZTFBhSavVisXivLw8pVIJoK/T6YDm3QwrhPsI92/zvzxajTzgTR7oKO7zNrcJIv/XR+B+7//53xT9f795m+UNLsRfCPShb3igqakJyt1Cd4uSkpKioqL8/HzIscEwTCQSzZgxg/ZQUJ7SaDSq1Wqapk0mE0mSKpUKx/HIyEgMw4KCgvr167dkyRKpVNqJ3PduwH0cx/na/zabLS0tbfTo0ePGjVu2bFloaGhYWNgjjzwCxP/AAw9AsyGGYeB8s7OzJRJJ5wp0RkVFQccDDMN8fHzmzZu3aNGiiIgIwP34+Pj09HToVXQH4n7//v0xDBs6dOi6desuXrzYbpoQFOXky3Rev37d1U3a2NhYV1dXW1t76dKl0tLSc+fOHTt2DKbMgvOjoqLgsRPC8IxTcBNQTpFOwece+YnjuMqpzMxMsVg8duxYH6cwDHv//ffhUZnjOIIg4JUCnEK7nz1iOby+g/k5arWaJMnp06fDreTj43P//fcvWrQoPDwcGk3s2LEDSlHBfynff//9wYMHT5w4UVBQ8NNPP12+fBlV5nE1yNFy5AGv8kCX4T6EmdHPrvIAJOL/8qdXjR5kzK/3gHC4r9frgTZomgb4oChKJpM99NBDAG3//Oc/pVIpTdOU6wo8tAsJjfscx0ERHqgcCtMrt2/fnp6ebjabLRYLx3GpqakjR4708/PDMOybb75pO73YaDTK5XKj0ejCfHeLEe63uJafn9/AgQMBDZ977jmapqFuW0NDA8T7+WD/tWvXXO+mpSO4T9M0y7Lt+BiuHE/J8Gv3/yRJUqPRKJVKlUqVkZEh/m/cnzlzJtxxOp0O5pS3Owv+1+63HI7IP41oNBqSJGfMmHFL3I+OjuZxHyp67d69G+F+CxLyQC/0QJfhPj81zcs/uLpG3mZ2swu5sh8t76UeEAj3KYqCsCi0yiJJUqvVchy3bNkyDMP8/f1HjRpFkqTD4bBYLG7aadEuJDTuQ4K1TqezWq04jkulUpPJZLFYHA4HhPzlcrnBYHj//fchGPz4449Dgg0fSQXMcmG+u8UI91tcCx4UMQz7zW9+A4D417/+9fDhwy0tLUD8LS0tNTU1UKuHD/P/cn+3xf3IyEiapvmR6SrG7+5CCrkOx3G1Wq1wKj09PTMzc8yYMeAQDMNmzpwJpTyhhizkpPGI3/aDkDa62zeYx3GcRqOhKIq/j9pF96Ojo7dv3w5tpNvi/vHjx1F0vwUJeaBXeaDLcL9XnTUyFnnAWzwgEO4DLpMkCbnIarVap9PdbEb7+OOPA5RERkaazWaCIGw2G2xMeyKhcZ9lWaiOAp2/VCqVVCpVq9UqlUosFlutVo1Gc7NBUkJCAuQ7jRw5Evge0AoCw514a0HTNMJ9N/eGv1M81wYFBQ0YMADDsNmzZ585c6alpaWysrK+vt7NHmBVR3Cfoiho/sA/uwIowzjlA/w98kGtViuVSplMJpfLb6aZZWRkjB49mnfLjBkzWJYlSZLPLmuL+G0/94jx4E+SJGE2POC+r68vPDnfd999CxcuDAsLi4iIWLt2LY/7OI4bjcbc3NwDBw4cP378xx9/vHDhAkrmue1QRxsgD3iJBxDue8mFQGbcoR4QDvcZhoG/0DRNA+5nZmZC+Z1BgwZBNn9KSorZbPZC3Dc7y+0rlUq5XK7X66HzkcViMTgFa9Vq9ebNm2EewssvvwxtuYCxOI4zGo3uu6LSLoRw382tCETr7+/PV6yHxy1fX9+77rorLCysLevX1NS42pUr3PdxCsOwyMhIqINJOsVfK4qiYAlJkkTPCVhfIpFIpdKUlJT09PSHH364Le5rtVroX6FUKtvazBsPH3rqDCiK0mg00FqYJMmZM2e6wv1t27YlJCRIJJK2uH/s2DGE+67GNlqOPOCdHrjjcL/Jhbzz8iCr+rwHBMJ9SN3RaDRQO58gCK1WGxUVBUTy6quvQnoPwDSfMkF3WEJH9+G9BLTQIgjCYDBwHJebm6vT6ViWlUqlJEmazeY//vGPkF6ydOlSeFkB4VLY3n3ddFfninDfzU3HEy3MY/b39w8ICIDpEwEBAUFBQU8//XRWVtZtG2/dFvdXrVpFkiRFUe2AGHdK0yp1D0kul0skErFYnJWVlZycnJqaOmrUKN4506dPZxgG0uLlcjlBEK32tv+3h8z/+bAKhYIkSei4x0/VxTBs+PDhCxYsCA0NDQ8PX7NmDY/78J9JTk7O/v37jx07dvbs2aKiIhTdd3OzoFXIA17lgTsO973K+26MaXYhN19Bq3qjB4TDfbPZjOM4tA3SarUURf3rX//iJ7ZCRUIofgLb0J5IaNxXqVQURe3evVuv1wM2KRQKhmEUCgWO41BIcfPmzdAmaciQIVKplOM4aM4FtVAIgujEeaFkHvc3kb+/v4+Pj5+f34ABA9oG+PmcfgzDAgMD3377bbvd7mZXHcF9giBIkgS+57EYiuEoWyXvIUmlUrFYDJN0k5KSUlNTH3roIR73p02bRtO0RqMhCEImk+E43mpv+397yPyfDyuRSNRqdVZWlkqleu+993jj2+H+1q1bd+3alZWV1Rb3ofgswn03IxytQh7wNg8g3Pe2K/Ife1y8hGjyUnORWZ31gHC4b7PZCIKAlrR6vZ4giHfffbdfv34ikWjRokU2mw3y42mahvx+2hMJjfsWi0WtVptMJqiAzrIsjuOsUxqNhuO4uXPn+vr69uvXb8CAAVu2bLFYLHCyOTk5MPtQLpdbrVZPzuk/26LofotrYRgWEBDA92Xz8/Pr378/lOvx9fWFtQCODz744GeffeZqTx7hvkajUalUQMowO5anZGkPCUL7MEk3MTExJSXll7ivVqsJgoBCt7zB7T70kPk/H1YsFiuVyszMTIVC8e6777bF/fnz50Ot2zVr1iDcdzWG0XLkgd7lAY9xv3edHrIWecDLPSAQ7kMVS5iNB1nOLMuOHz8eovvBwcEMw9jtdsjf7UQUXGjcp10oMjLy6aefHjRokK9TQ4cOjYmJIQhCIpEYjUaYemixWFiWzcrKMpvNLnbjbrEr3F+zZs2mTZtg5qJcLtfpdDab7fDhw0ePHj116lRBQQF0Haqqqqqtrb3RR8VDYbsPIpEIov7wJCASifz9/TEMg5YIUKOzrq6usbERivG7wn3YbWBgYGhoKMyC5dNmxJ4oU2AlJCTs2rUrOTl5y5Yt27ZtW7NmzYgRI4KCgjAM8/X1fe+999LS0uDJhKIoeAlwS/MFNtPd7uFJQ6FQxMXFvfPOO1Bf1cfHZ9iwYd98883ixYuXLVsGuB8XF5eRkaFUKjmOczgc+/fvR5V5WpCQB3qbBxDu97YrhuztWx4QCPehDg8EvPmZuI8++ijQWEREBE3TRqORcsoLo/u0C61btw4KiQIXvvDCC7GxsSanoLYgwzAwZ1etVnfivFwl8yxYsGDdunWbNm3auHGjWq3eu3dvYmLiW2+9NX78+AkTJkycOHHSpEmTJ0+eMmXK431a7Sif/3Xw4MH8Z0BeKPMCC5966imWZZuamqAq//Xr1wH3a2pqoM1WQUEBtNkKDAyEIfroo49OnTp1/PjxEydOnDx58hgPNVpgTZo0aeLEiWPHjh01atSjjz761FNPwZnCQ87999//7LPPTpw4ccyYMRMmTBg1apQr8wU20+XuH3300bFjx44ePXrSpElTpkwZNmwYf9WGDRs2Z84c97h/7NgxVIizb/0hQmfT9z2AcL/vX2N0ht7sAeFwH4pvwJxdqP89btw4X1/fm5HXqKgomMbKcRyO4zCdl/ZEPRXd37Rp0/vvv//666/ffffdUAIyKChozpw5NpsNpnVyHAezJKEWpyfn9J9tbxndDw8Pj4qKWrdu3c6dOyHj+cMPP/Tz84NKMuBVmLfazylY3vd+tmX6tp95uA8MDLzrrruCgoJgCi+/HMOwTz/99OTJk1euXGlp+bnNVm1tLeB+SUlJQUHB0aNH274fAG7mDwEvczr+U2jPAxzz5kFc/2ZBIXh75ufnFxgYyK+FjW9pvNB2utk/bx5kYcGvEN2fM2fOokWLli1btnr16i1btsTGxkJ0X6fTZWdn79u3DyrzoK66LUjIA73HAwj3e8+1Qpb2RQ8Ih/tQDwSi+Hq9XqlUQtF9f39/KHuiVquhWmUnouA9hftQmcdkMslkstmzZwOjPPjgg9u3b6coCpqwUhQFM321Wi3tuW6J+6udio6O3rlzZ2Zm5oYNG1544QUemNAHINrAwEDg3V86BHJF/va3v1VUVEBPLsD9srKytrgPBX/8nMIwDGYABwQE3JKVe3Ah/4oJLGzH9wDZ4ASYYdKDpt7y0EFBQfwEjLYXqy3uL126NCoqavPmzTt37kxPT1coFDzuHz169EdUd78v/j1C59SHPYBwvw9fXHRqvcADAuE+zG2F2iZGoxFw/5VXXgFM+e6774CJDQYDSZK9KHdfJpNBhZA9e/aIxeJ33303ICAAw7C//OUvBEFYrValUgnRfbVaDdOUaQ91S9wPCQnZuHHj5s2b169fn5WVRVHUnDlzgG4hbb0tM92Zn4OCgviQPAT1fXx8hg4d6uvr6+/vfzP+vXz5ckjiB9yvqamprq4uKyu7ePHijz/+eOTIkbZ+g5AzxMjbRcrbbtaDn+FkoTyRn59f2zpF7axys6rdlt32a1vW56P7IpHI19cXknkWLVoUEhISGRkJ81XS09PlcjnLsna7PS8vDyrzoDZbveAPDDIReaDVAwj3Wz2B/kUe6AkPCIT70OWHYRioR6nT6XAc//vf/w75BlAXHLqWsizbiSh4T0X3ob4hx3EymSwnJycjIwPaPPXv318sFttsNplMptPpSJLUaDSdOC9XufshISHR0dHbtm2LjY2VyWQsy9489PLlyz/55JP/9//+36effvqvf/3riy+++Oqrr/79739//fXX3/RRueFRHmqDgoJ+85vf8Fvefffdn3/+eVlZWUtLS3V1dUtLS3l5+fXr1wH3S0tLf4n7/fv3f/nll995550PPvjgrbfemjlz5gceapbAmjFjxuzZs999991Zs2a9+eabr776KqS/w1uOcePGTZs2bfbs2e+999706dPd2C6wmS53/84770yfPv2dd96ZNWvW7NmzJ0+eLBKJ4C0K4P7ChQsB92NiYrZt25aWltYW948cOYLq7vfEnwt0TOSBznsA4X7nfYe+iTzw6z0gEO7TNA2dqqD2DoDvokWLAI5///vfsyxrMBig2CVFUbSH6incdzgcu3btslgsDMNkZGTgOD5x4kQgy61bt3IcB2U6KYoC6PfwtH7e/JbR/RVObdmyRexUSkoKwzAnTpw4fPjwsWPHzpw5U1hYeOnSperq6mvXrjU2Njb1UfEQ/8sPfMCYj/EPGzbs008/NZvNEM5vceratWstLS3Xr1+vrq6uqqoqLS0tLi4+e/bs4cOH+X0OGjQoMjKSZVl4bPtls612vbd++SspsBiGoWmaIAi1Wi2RSDZv3gwTY6AU6YwZM3Act9vt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" } }, "cell_type": "markdown", "id": "7b9f4819-7a3c-4cbc-8ca5-583d0c6ef131", "metadata": {}, "source": [ "**groupby常分为分布:分割、应用累计、组合**\n", "![image.png](attachment:10f9ee33-54bc-4ccd-b693-976f24bc1748.png)" ] }, { "cell_type": "code", "execution_count": 27, "id": "45427875-870a-443a-9aeb-1142fb579ad6", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
keydata
0A0
1B1
2C2
3A3
4B4
5C5
\n", "
" ], "text/plain": [ " key data\n", "0 A 0\n", "1 B 1\n", "2 C 2\n", "3 A 3\n", "4 B 4\n", "5 C 5" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "df = pd.DataFrame({'key': ['A', 'B', 'C', 'A', 'B', 'C'],\n", " 'data': range(6)}, columns=['key', 'data'])\n", "df" ] }, { "cell_type": "code", "execution_count": 28, "id": "c5418014-f17c-405d-9c7a-9974ce173850", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby('key') # 返回的是GroupBy对象!" ] }, { "cell_type": "markdown", "id": "b7991a21-3592-43d0-aa8f-1cb212def000", "metadata": {}, "source": [ "GroupBy对象\n", "- 魔力:可以看作是特殊形式DF,但是只有在累计函数计算时候,才会计算、显示。(**延迟计算**)" ] }, { "cell_type": "code", "execution_count": null, "id": "7e97c422-e700-4022-b4fb-e2e0da992a15", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 29, "id": "630c0456-08e0-4816-a7ac-ff9c0a168ea8", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
data
key
A3
B5
C7
\n", "
" ], "text/plain": [ " data\n", "key \n", "A 3\n", "B 5\n", "C 7" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby('key').sum()" ] }, { "cell_type": "code", "execution_count": null, "id": "b057fc9a-1522-461b-9288-039971d2c02f", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "2251f44b-3b99-4cd6-9590-33f1f8228458", "metadata": {}, "source": [ "1. 基本操作:按列取值,类似df \n", "- 可以看作是DF集合,可以按照列取DF\n", "- 比如说从在a列中找出b特征最多的个数" ] }, { "cell_type": "code", "execution_count": 30, "id": "87dbf30f-b792-40c1-81d0-c759aa0e9fef", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "planets.groupby('method')" ] }, { "cell_type": "code", "execution_count": 31, "id": "6ca1c8b8-c97e-4f6a-a553-bed7a0a70e04", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "planets.groupby('method')['orbital_period']" ] }, { "cell_type": "code", "execution_count": 32, "id": "35696b5e-b52a-444f-9421-b9574ba2c654", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "method\n", "Astrometry 631.180000\n", "Eclipse Timing Variations 4343.500000\n", "Imaging 27500.000000\n", "Microlensing 3300.000000\n", "Orbital Brightness Modulation 0.342887\n", "Pulsar Timing 66.541900\n", "Pulsation Timing Variations 1170.000000\n", "Radial Velocity 360.200000\n", "Transit 5.714932\n", "Transit Timing Variations 57.011000\n", "Name: orbital_period, dtype: float64" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "median1 = planets.groupby('method')['orbital_period'].median()\n", "median1" ] }, { "cell_type": "code", "execution_count": 33, "id": "b4355ae3-f5f9-4722-b7f3-0f74fa9ac30f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['Astrometry', 'Eclipse Timing Variations', 'Imaging', 'Microlensing',\n", " 'Orbital Brightness Modulation', 'Pulsar Timing',\n", " 'Pulsation Timing Variations', 'Radial Velocity', 'Transit',\n", " 'Transit Timing Variations'],\n", " dtype='object', name='method')" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "median1.index" ] }, { "cell_type": "markdown", "id": "bc1ee271-2989-4e26-a927-c332bd0abc3a", "metadata": {}, "source": [ "可以看到分组后index是groupby, 如果要默认整数索引,通过`.reset_index`.\n", "- 方便后续通过列名进行操作 sort等\n", "- name参数为前面操作函数 重新设置列名" ] }, { "cell_type": "code", "execution_count": 34, "id": "7b7f917a-70ee-4047-9d62-f6d5a065f83e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
methodorbital_period_median
0Astrometry631.180000
1Eclipse Timing Variations4343.500000
2Imaging27500.000000
3Microlensing3300.000000
4Orbital Brightness Modulation0.342887
5Pulsar Timing66.541900
6Pulsation Timing Variations1170.000000
7Radial Velocity360.200000
8Transit5.714932
9Transit Timing Variations57.011000
\n", "
" ], "text/plain": [ " method orbital_period_median\n", "0 Astrometry 631.180000\n", "1 Eclipse Timing Variations 4343.500000\n", "2 Imaging 27500.000000\n", "3 Microlensing 3300.000000\n", "4 Orbital Brightness Modulation 0.342887\n", "5 Pulsar Timing 66.541900\n", "6 Pulsation Timing Variations 1170.000000\n", "7 Radial Velocity 360.200000\n", "8 Transit 5.714932\n", "9 Transit Timing Variations 57.011000" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "planets.groupby('method')['orbital_period'].median().reset_index(name = 'orbital_period_median')" ] }, { "cell_type": "code", "execution_count": 35, "id": "024ce919-8021-48d7-86cf-1b439d10f4fd", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
methodorbital_period
0Astrometry631.180000
1Eclipse Timing Variations4343.500000
2Imaging27500.000000
3Microlensing3300.000000
4Orbital Brightness Modulation0.342887
5Pulsar Timing66.541900
6Pulsation Timing Variations1170.000000
7Radial Velocity360.200000
8Transit5.714932
9Transit Timing Variations57.011000
\n", "
" ], "text/plain": [ " method orbital_period\n", "0 Astrometry 631.180000\n", "1 Eclipse Timing Variations 4343.500000\n", "2 Imaging 27500.000000\n", "3 Microlensing 3300.000000\n", "4 Orbital Brightness Modulation 0.342887\n", "5 Pulsar Timing 66.541900\n", "6 Pulsation Timing Variations 1170.000000\n", "7 Radial Velocity 360.200000\n", "8 Transit 5.714932\n", "9 Transit Timing Variations 57.011000" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "planets.groupby('method')['orbital_period'].median().reset_index()" ] }, { "cell_type": "code", "execution_count": 36, "id": "96a97ca8-ef9f-4e6d-b1d6-df200c4d2f7f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
methodsize
0Astrometry2
1Eclipse Timing Variations9
2Imaging38
3Microlensing23
4Orbital Brightness Modulation3
5Pulsar Timing5
6Pulsation Timing Variations1
7Radial Velocity553
8Transit397
9Transit Timing Variations4
\n", "
" ], "text/plain": [ " method size\n", "0 Astrometry 2\n", "1 Eclipse Timing Variations 9\n", "2 Imaging 38\n", "3 Microlensing 23\n", "4 Orbital Brightness Modulation 3\n", "5 Pulsar Timing 5\n", "6 Pulsation Timing Variations 1\n", "7 Radial Velocity 553\n", "8 Transit 397\n", "9 Transit Timing Variations 4" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "planets.groupby('method').size().reset_index(name='size')" ] }, { "cell_type": "markdown", "id": "d092b252-e162-441c-92b4-d398d29b5887", "metadata": {}, "source": [ "一起分组多个,比如item_name和对应价格经常对应。" ] }, { "cell_type": "code", "execution_count": null, "id": "84f60e6b-0988-4d53-a5c7-75695b4cd773", "metadata": {}, "outputs": [], "source": [ "# chipo.groupby(['item_name', 'item_price']).size()" ] }, { "cell_type": "markdown", "id": "ef91aa26-026a-45b3-b043-a68bc25f52e4", "metadata": {}, "source": [ "**2. 按组迭代**" ] }, { "cell_type": "code", "execution_count": 42, "id": "be4097b1-bd86-4778-96fd-d8870d4eb435", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "planets.groupby('method')" ] }, { "cell_type": "code", "execution_count": null, "id": "94764e38-b162-4652-935f-fa556787bb80", "metadata": {}, "outputs": [], "source": [ "# 查看某个分组数据" ] }, { "cell_type": "code", "execution_count": 41, "id": "24110bcc-22e0-4d4d-895a-23cb74c070da", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
methodnumberorbital_periodmassdistanceyear
113Astrometry1246.36NaN20.772013
537Astrometry11016.00NaN14.982010
\n", "
" ], "text/plain": [ " method number orbital_period mass distance year\n", "113 Astrometry 1 246.36 NaN 20.77 2013\n", "537 Astrometry 1 1016.00 NaN 14.98 2010" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "planets.groupby('method').get_group('Astrometry')" ] }, { "cell_type": "code", "execution_count": 46, "id": "fd2447fc-b9a4-45c6-9f8a-1e6920ba62be", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Astrometry shape=(2, 6)\n", "Eclipse Timing Variations shape=(9, 6)\n", "Imaging shape=(38, 6)\n", "Microlensing shape=(23, 6)\n", "Orbital Brightness Modulation shape=(3, 6)\n", "Pulsar Timing shape=(5, 6)\n", "Pulsation Timing Variations shape=(1, 6)\n", "Radial Velocity shape=(553, 6)\n", "Transit shape=(397, 6)\n", "Transit Timing Variations shape=(4, 6)\n" ] } ], "source": [ "for (method, group) in planets.groupby('method'):\n", " print(\"{0:30s} shape={1}\".format(method, group.shape))" ] }, { "cell_type": "code", "execution_count": 47, "id": "0b69f4b8-ad6d-4cef-b5b9-9bcbcc65643a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanstdmin25%50%75%max
method
Astrometry2.02011.5000002.1213202010.02010.752011.52012.252013.0
Eclipse Timing Variations9.02010.0000001.4142142008.02009.002010.02011.002012.0
Imaging38.02009.1315792.7819012004.02008.002009.02011.002013.0
Microlensing23.02009.7826092.8596972004.02008.002010.02012.002013.0
Orbital Brightness Modulation3.02011.6666671.1547012011.02011.002011.02012.002013.0
Pulsar Timing5.01998.4000008.3845101992.01992.001994.02003.002011.0
Pulsation Timing Variations1.02007.000000NaN2007.02007.002007.02007.002007.0
Radial Velocity553.02007.5189874.2490521989.02005.002009.02011.002014.0
Transit397.02011.2367762.0778672002.02010.002012.02013.002014.0
Transit Timing Variations4.02012.5000001.2909942011.02011.752012.52013.252014.0
\n", "
" ], "text/plain": [ " count mean std min 25% \\\n", "method \n", "Astrometry 2.0 2011.500000 2.121320 2010.0 2010.75 \n", "Eclipse Timing Variations 9.0 2010.000000 1.414214 2008.0 2009.00 \n", "Imaging 38.0 2009.131579 2.781901 2004.0 2008.00 \n", "Microlensing 23.0 2009.782609 2.859697 2004.0 2008.00 \n", "Orbital Brightness Modulation 3.0 2011.666667 1.154701 2011.0 2011.00 \n", "Pulsar Timing 5.0 1998.400000 8.384510 1992.0 1992.00 \n", "Pulsation Timing Variations 1.0 2007.000000 NaN 2007.0 2007.00 \n", "Radial Velocity 553.0 2007.518987 4.249052 1989.0 2005.00 \n", "Transit 397.0 2011.236776 2.077867 2002.0 2010.00 \n", "Transit Timing Variations 4.0 2012.500000 1.290994 2011.0 2011.75 \n", "\n", " 50% 75% max \n", "method \n", "Astrometry 2011.5 2012.25 2013.0 \n", "Eclipse Timing Variations 2010.0 2011.00 2012.0 \n", "Imaging 2009.0 2011.00 2013.0 \n", "Microlensing 2010.0 2012.00 2013.0 \n", "Orbital Brightness Modulation 2011.0 2012.00 2013.0 \n", "Pulsar Timing 1994.0 2003.00 2011.0 \n", "Pulsation Timing Variations 2007.0 2007.00 2007.0 \n", "Radial Velocity 2009.0 2011.00 2014.0 \n", "Transit 2012.0 2013.00 2014.0 \n", "Transit Timing Variations 2012.5 2013.25 2014.0 " ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "planets.groupby('method')['year'].describe()" ] }, { "cell_type": "markdown", "id": "52759afc-ad24-4df4-a68a-92e41cb36b6a", "metadata": {}, "source": [ "**3. 高级操作**:aggregate()、filter()、transform() 和apply()\n", "- 累计:一次性多个统计操作\n", "- 过滤\n", "- 转换 \n", "apply() 对一行或者一列的每个元素操作 \n", "transform() 对整个df或者列操作,确保形状不变!" ] }, { "cell_type": "code", "execution_count": 4, "id": "8d044e33-0dad-4c8f-8761-958bae34bf7e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
keydata1data2
0A05
1B10
2C23
3A33
4B47
5C59
\n", "
" ], "text/plain": [ " key data1 data2\n", "0 A 0 5\n", "1 B 1 0\n", "2 C 2 3\n", "3 A 3 3\n", "4 B 4 7\n", "5 C 5 9" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "import numpy as np\n", "rng = np.random.RandomState(0)\n", "df = pd.DataFrame({'key': ['A', 'B', 'C', 'A', 'B', 'C'],\n", " 'data1': range(6),\n", " 'data2': rng.randint(0, 10, 6)},\n", " columns = ['key', 'data1', 'data2'])\n", "df" ] }, { "cell_type": "code", "execution_count": 9, "id": "cb0c68aa-5cea-44db-900a-617d9a775354", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
keydata1data2
minA00
maxC59
\n", "
" ], "text/plain": [ " key data1 data2\n", "min A 0 0\n", "max C 5 9" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.aggregate(['min', 'max']) # 直接使用" ] }, { "cell_type": "code", "execution_count": 3, "id": "a28acee6-ddff-4431-8575-e04c3bd65efb", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
data1data2
minmedianmaxminmedianmax
key
A01.5334.05
B12.5403.57
C23.5536.09
\n", "
" ], "text/plain": [ " data1 data2 \n", " min median max min median max\n", "key \n", "A 0 1.5 3 3 4.0 5\n", "B 1 2.5 4 0 3.5 7\n", "C 2 3.5 5 3 6.0 9" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby('key').aggregate(['min', 'median', 'max']) # 可以自定义一次统计的操作" ] }, { "cell_type": "code", "execution_count": 50, "id": "08296e0c-d321-4abc-a24d-7262e6caf0bf", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
data1data2
key
A2.121321.414214
B2.121324.949747
C2.121324.242641
\n", "
" ], "text/plain": [ " data1 data2\n", "key \n", "A 2.12132 1.414214\n", "B 2.12132 4.949747\n", "C 2.12132 4.242641" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby('key').std()" ] }, { "cell_type": "code", "execution_count": 51, "id": "f1fd0670-6220-4d4f-a7ba-008602653f1a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
keydata1data2
1B10
2C23
4B47
5C59
\n", "
" ], "text/plain": [ " key data1 data2\n", "1 B 1 0\n", "2 C 2 3\n", "4 B 4 7\n", "5 C 5 9" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def filter_func(x):\n", " return x['data2'].std() > 4\n", "df.groupby('key').filter(filter_func)" ] }, { "cell_type": "code", "execution_count": 52, "id": "998e3790-900b-4cf8-a660-8ec4c802ae6b", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
data1data2
0-1.51.0
1-1.5-3.5
2-1.5-3.0
31.5-1.0
41.53.5
51.53.0
\n", "
" ], "text/plain": [ " data1 data2\n", "0 -1.5 1.0\n", "1 -1.5 -3.5\n", "2 -1.5 -3.0\n", "3 1.5 -1.0\n", "4 1.5 3.5\n", "5 1.5 3.0" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby('key').transform(lambda x:x - x.mean()) # 标准化每个元素减去每组的平均值" ] }, { "cell_type": "code", "execution_count": 73, "id": "2d595bc4-d3b7-4cdc-92c0-2ce68b0dee8b", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
data1data2
key
A0-1.51.0
31.5-1.0
B1-1.5-3.5
41.53.5
C2-1.5-3.0
51.53.0
\n", "
" ], "text/plain": [ " data1 data2\n", "key \n", "A 0 -1.5 1.0\n", " 3 1.5 -1.0\n", "B 1 -1.5 -3.5\n", " 4 1.5 3.5\n", "C 2 -1.5 -3.0\n", " 5 1.5 3.0" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby('key').apply(lambda x:x - x.mean()) # 标准化每个元素减去每组的平均值\n" ] }, { "cell_type": "code", "execution_count": null, "id": "24d0cbf0-6d76-4e26-bef0-476a518c8f3e", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "434da7db-240e-4f92-bc05-64827ec8d5d0", "metadata": {}, "source": [ "4. 键分割" ] }, { "cell_type": "markdown", "id": "097672a4-abf5-4723-a594-31e7f26e3d69", "metadata": {}, "source": [ "下面例子中,decade并不是planets中的一列, 但也可以传入进行分组" ] }, { "cell_type": "code", "execution_count": 74, "id": "aceadfda-c168-403a-ab54-650e54d8df03", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
decade1980s1990s2000s2010s
method
Astrometry0.00.00.02.0
Eclipse Timing Variations0.00.05.010.0
Imaging0.00.029.021.0
Microlensing0.00.012.015.0
Orbital Brightness Modulation0.00.00.05.0
Pulsar Timing0.09.01.01.0
Pulsation Timing Variations0.00.01.00.0
Radial Velocity1.052.0475.0424.0
Transit0.00.064.0712.0
Transit Timing Variations0.00.00.09.0
\n", "
" ], "text/plain": [ "decade 1980s 1990s 2000s 2010s\n", "method \n", "Astrometry 0.0 0.0 0.0 2.0\n", "Eclipse Timing Variations 0.0 0.0 5.0 10.0\n", "Imaging 0.0 0.0 29.0 21.0\n", "Microlensing 0.0 0.0 12.0 15.0\n", "Orbital Brightness Modulation 0.0 0.0 0.0 5.0\n", "Pulsar Timing 0.0 9.0 1.0 1.0\n", "Pulsation Timing Variations 0.0 0.0 1.0 0.0\n", "Radial Velocity 1.0 52.0 475.0 424.0\n", "Transit 0.0 0.0 64.0 712.0\n", "Transit Timing Variations 0.0 0.0 0.0 9.0" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "decade = (planets['year'] // 10) * 10\n", "decade = decade.astype(str) + 's'\n", "decade.name = 'decade'\n", "planets.groupby(['method', decade])['number'].sum().unstack().fillna(0)" ] }, { "cell_type": "markdown", "id": "56ed6263-9819-4e00-b9b0-69b91f1d4c27", "metadata": {}, "source": [ "series直接操作:`value_counts()`" ] }, { "cell_type": "code", "execution_count": 82, "id": "ee65ad97-c50f-4992-b39b-10accc76d2c5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "method\n", "Radial Velocity 553\n", "Name: count, dtype: int64" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "planets['method'].value_counts().head(1) # 统计一列" ] }, { "cell_type": "markdown", "id": "4370f51a", "metadata": {}, "source": [ "## Reshaping and pivot tables" ] }, { "cell_type": "markdown", "id": "a1566451", "metadata": {}, "source": [ "### cut\n", "- 生成区间分组, 分类" ] }, { "cell_type": "code", "execution_count": 84, "id": "9035fbc2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(9.95, 20.0], (9.95, 20.0], (9.95, 20.0], (9.95, 20.0], (20.0, 30.0], (20.0, 30.0], (20.0, 30.0], (50.0, 60.0], (50.0, 60.0]]\n", "Categories (5, interval[float64, right]): [(9.95, 20.0] < (20.0, 30.0] < (30.0, 40.0] < (40.0, 50.0] < (50.0, 60.0]]" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ages = np.array([10, 15, 13, 12, 23, 25, 28, 59, 60])\n", "pd.cut(ages, bins=5)" ] }, { "cell_type": "code", "execution_count": 85, "id": "e4f27ae4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(0, 18], (0, 18], (0, 18], (0, 18], (18, 35], (18, 35], (18, 35], (35, 70], (35, 70]]\n", "Categories (3, interval[int64, right]): [(0, 18] < (18, 35] < (35, 70]]" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.cut(ages, bins=[0, 18, 35, 70])" ] }, { "cell_type": "markdown", "id": "7593fea7", "metadata": {}, "source": [] }, { "cell_type": "code", "execution_count": 81, "id": "1b956a18", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCD
00111
10101
21010
30101
40111
\n", "
" ], "text/plain": [ " A B C D\n", "0 0 1 1 1\n", "1 0 1 0 1\n", "2 1 0 1 0\n", "3 0 1 0 1\n", "4 0 1 1 1" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = ['peter', 'Paul', None, 'MARY', 'gUIDO']\n", "names = pd.Series(data)\n", "full_monte = pd.DataFrame({'name': names,\n", " 'info': ['B|C|D', 'B|D', 'A|C', 'B|D', \n", " 'B|C|D']})\n", "full_monte['info'].str.get_dummies('|')" ] }, { "cell_type": "markdown", "id": "57d8ea18", "metadata": {}, "source": [ "### stack 和 unstack\n", "- stack 把列索引变成行索引" ] }, { "cell_type": "markdown", "id": "a0c407a6", "metadata": {}, "source": [ "### melt\n", "宽表人类看,长表分析好" ] }, { "cell_type": "code", "execution_count": 3, "id": "922a8f36", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
namemathenglish
0ming9030
\n", "
" ], "text/plain": [ " name math english\n", "0 ming 90 30" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame({\n", " 'name':['ming'],\n", " 'math':[90],\n", " 'english':[30]\n", "})\n", "df" ] }, { "cell_type": "code", "execution_count": 4, "id": "4bb9bd98", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
namesubjectscore
0mingmath90
1mingenglish30
\n", "
" ], "text/plain": [ " name subject score\n", "0 ming math 90\n", "1 ming english 30" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.melt(\n", " id_vars = ['name'], # 那几列不变\n", " value_vars = ['math', 'english'], # 这几个类名合成一列\n", " var_name = 'subject', # 合成列的名字\n", " value_name = 'score' # 剩余数值列名字\n", ")" ] }, { "cell_type": "markdown", "id": "d6864ef5", "metadata": {}, "source": [ "### get_dummies()\n", "- 默认识别 `object`(str)或者`categorical` 类型\n", "- 我们也可以指定这两种类型的列" ] }, { "cell_type": "code", "execution_count": 5, "id": "01fb3cd1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "key str\n", "data1 int64\n", "dtype: object" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame({\n", " 'key': list('abcdef'),\n", " 'data1': range(6)\n", "})\n", "df.dtypes" ] }, { "cell_type": "code", "execution_count": 10, "id": "d4bcf581", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
keydata1
0a0
1b1
2c2
3d3
4e4
5f5
\n", "
" ], "text/plain": [ " key data1\n", "0 a 0\n", "1 b 1\n", "2 c 2\n", "3 d 3\n", "4 e 4\n", "5 f 5" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 7, "id": "61893a41", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
abcdef
0TrueFalseFalseFalseFalseFalse
1FalseTrueFalseFalseFalseFalse
2FalseFalseTrueFalseFalseFalse
3FalseFalseFalseTrueFalseFalse
4FalseFalseFalseFalseTrueFalse
5FalseFalseFalseFalseFalseTrue
\n", "
" ], "text/plain": [ " a b c d e f\n", "0 True False False False False False\n", "1 False True False False False False\n", "2 False False True False False False\n", "3 False False False True False False\n", "4 False False False False True False\n", "5 False False False False False True" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.get_dummies(df['key'])" ] }, { "cell_type": "code", "execution_count": 11, "id": "a06669f8", "metadata": {}, "outputs": [], "source": [ "dummies = pd.get_dummies(df['key'], prefix='key')" ] }, { "cell_type": "code", "execution_count": 12, "id": "44fed939", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
data1key_akey_bkey_ckey_dkey_ekey_f
00TrueFalseFalseFalseFalseFalse
11FalseTrueFalseFalseFalseFalse
22FalseFalseTrueFalseFalseFalse
33FalseFalseFalseTrueFalseFalse
44FalseFalseFalseFalseTrueFalse
55FalseFalseFalseFalseFalseTrue
\n", "
" ], "text/plain": [ " data1 key_a key_b key_c key_d key_e key_f\n", "0 0 True False False False False False\n", "1 1 False True False False False False\n", "2 2 False False True False False False\n", "3 3 False False False True False False\n", "4 4 False False False False True False\n", "5 5 False False False False False True" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[['data1']].join(dummies)" ] }, { "cell_type": "markdown", "id": "03dacb3d", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "b88502bc-e00f-4c1a-8dca-51a2c10382b8", "metadata": {}, "source": [ "### 3.10 数据透视表\n", "- 数据透视表是多维的GroupBy操作,比如二维分割 很方便\n", "- titantic 示例\n", "- " ] }, { "cell_type": "markdown", "id": "fe0524cb-64b1-4399-9f3e-65bd7be0ce68", "metadata": {}, "source": [ "### 3.10.1 示例:titantic" ] }, { "cell_type": "code", "execution_count": 1, "id": "b541d922-5d70-45ff-973f-6f6a15bf110e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
survivedpclasssexagesibspparchfareembarkedclasswhoadult_maledeckembark_townalivealone
003male22.0107.2500SThirdmanTrueNaNSouthamptonnoFalse
111female38.01071.2833CFirstwomanFalseCCherbourgyesFalse
213female26.0007.9250SThirdwomanFalseNaNSouthamptonyesTrue
311female35.01053.1000SFirstwomanFalseCSouthamptonyesFalse
403male35.0008.0500SThirdmanTrueNaNSouthamptonnoTrue
\n", "
" ], "text/plain": [ " survived pclass sex age sibsp parch fare embarked class \\\n", "0 0 3 male 22.0 1 0 7.2500 S Third \n", "1 1 1 female 38.0 1 0 71.2833 C First \n", "2 1 3 female 26.0 0 0 7.9250 S Third \n", "3 1 1 female 35.0 1 0 53.1000 S First \n", "4 0 3 male 35.0 0 0 8.0500 S Third \n", "\n", " who adult_male deck embark_town alive alone \n", "0 man True NaN Southampton no False \n", "1 woman False C Cherbourg yes False \n", "2 woman False NaN Southampton yes True \n", "3 woman False C Southampton yes False \n", "4 man True NaN Southampton no True " ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import seaborn as sns\n", "titanic = sns.load_dataset('titanic')\n", "titanic.head()" ] }, { "cell_type": "markdown", "id": "705c531c-25c5-4f39-b80e-bfba25e7d35e", "metadata": {}, "source": [ "### 3.10.2 手工制作数据透视表" ] }, { "cell_type": "markdown", "id": "fac042d6-e8ba-4b3f-a48b-cae7ca8896f1", "metadata": {}, "source": [ "比如:现在要不同性别乘客生存率, 不同性别、船舱等级的生存率" ] }, { "cell_type": "code", "execution_count": null, "id": "305025db-40e5-4fd4-ba45-0ab165a2e3c3", "metadata": {}, "outputs": [], "source": [ "titanic.groupby('sex')['survived'].mean()" ] }, { "cell_type": "code", "execution_count": null, "id": "c1417dd3-505c-48c0-8acc-dc04fb0cfcec", "metadata": {}, "outputs": [], "source": [ "titanic.groupby(['sex', 'class'])['survived'].aggregate('mean').unstack()" ] }, { "cell_type": "markdown", "id": "299f6813-cfae-45d8-8477-724661925428", "metadata": {}, "source": [ "### 3.10.3 数据透视表语法\n", "pivot_table来实现上面等价效果" ] }, { "cell_type": "code", "execution_count": null, "id": "4a4bab03-714f-4a22-b91f-44ae18b79bc8", "metadata": {}, "outputs": [], "source": [ "titanic.pivot_table('survived', index = 'sex', columns = 'class')" ] }, { "cell_type": "markdown", "id": "0292678a-c12d-4df7-bb53-0589ab0e2f0c", "metadata": {}, "source": [ "结果表明:一等舱的女性几乎全部生还,而三等舱的男性只有10之1生还。" ] }, { "cell_type": "markdown", "id": "3e01b640-87e3-40c0-9959-da1bff41c572", "metadata": {}, "source": [ "**1. 多级数据透视表**\n", "- 层级索引效果" ] }, { "cell_type": "markdown", "id": "e9c4f74b-7056-4889-b591-678effe8e00e", "metadata": {}, "source": [ "制定了 三层索引,索引侧[sex, age] ,列名侧class" ] }, { "cell_type": "code", "execution_count": null, "id": "238e8dc3-49ed-40bc-ad41-a5035319a4c7", "metadata": {}, "outputs": [], "source": [ "age = pd.cut(titanic['age'], [0, 18, 80]) # 分段\n", "# print(age)\n", "titanic.pivot_table('survived', ['sex', age], 'class')" ] }, { "cell_type": "markdown", "id": "d313baf4-4cc9-4748-adfe-16d2efbb4217", "metadata": {}, "source": [ "2. 其他数据透视表选项" ] }, { "cell_type": "code", "execution_count": null, "id": "248d744e-cf96-4209-9329-78f0664eec3f", "metadata": {}, "outputs": [], "source": [ "titanic.pivot_table('survived', index = 'sex', columns = 'class', margins=True) # margins计数分组" ] }, { "cell_type": "markdown", "id": "9141d6c3-d663-4315-bf65-342d1d176255", "metadata": {}, "source": [ "### 3.10.4 示例:美国人的生日" ] }, { "cell_type": "code", "execution_count": null, "id": "b3b75abd-a2f4-4ee4-98f5-9680b246799c", "metadata": {}, "outputs": [], "source": [ "births = pd.read_csv('births.csv')\n", "births.head()" ] }, { "cell_type": "markdown", "id": "2749e91c-9799-4acf-801b-305af0b3c5dd", "metadata": {}, "source": [ "🗼1. 增加一列,看各年代出生男女比例" ] }, { "cell_type": "code", "execution_count": null, "id": "6e907298-4cbf-4c5d-b216-00138ead9942", "metadata": {}, "outputs": [], "source": [ "births['decade'] = 10 * (births['year'] // 10)\n", "births.pivot_table('births', index = 'decade', columns = 'gender', aggfunc='sum') # aggfunc设置累计函数,默认是均值\n" ] }, { "cell_type": "code", "execution_count": null, "id": "33f47a49-21c0-4241-8970-ce65904ff7c7", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "sns.set() # 使用Seaborn风格\n", "births.pivot_table('births', index = 'year', columns = 'gender', aggfunc='sum').plot()\n", "plt.ylabel('total births this year')" ] }, { "cell_type": "markdown", "id": "21d079a7-7810-43ed-b396-f94804467920", "metadata": {}, "source": [ "🗼2. 不同年代不同日期的日均出生数" ] }, { "cell_type": "code", "execution_count": null, "id": "b6ea8dc2-c4da-4ae8-8d76-d746fa60216f", "metadata": {}, "outputs": [], "source": [ "births[births['day'] > 30]" ] }, { "cell_type": "markdown", "id": "9d20eda7-b568-44f1-b631-a0b7c3db6f26", "metadata": {}, "source": [ "发现,day中有NaN" ] }, { "cell_type": "code", "execution_count": null, "id": "ffff4e3a-8f2e-4b01-ba6c-0cfa00491303", "metadata": {}, "outputs": [], "source": [ "births.dropna(inplace = True) #原地修改" ] }, { "cell_type": "code", "execution_count": null, "id": "110fca91-4e06-4569-abf7-63b31c03725c", "metadata": {}, "outputs": [], "source": [ "births.isnull().any()" ] }, { "cell_type": "code", "execution_count": null, "id": "992dbcad-0a18-4f60-b88b-770a67d35da9", "metadata": {}, "outputs": [], "source": [ "births['day'].dtype" ] }, { "cell_type": "code", "execution_count": null, "id": "9c4c3e08-11a4-4dfa-98cc-f65fdc45c892", "metadata": {}, "outputs": [], "source": [ "births['day'] = births['day'].astype(int)" ] }, { "cell_type": "code", "execution_count": null, "id": "8ffe8ec2-d96b-44de-9faa-f1abd86fabcd", "metadata": {}, "outputs": [], "source": [ "births['day'].dtype" ] }, { "cell_type": "markdown", "id": "b2fd5925-f4ad-4b3b-bacb-21ec4d2b2028", "metadata": {}, "source": [ "剔除异常日期,如0199 ???" ] }, { "cell_type": "code", "execution_count": null, "id": "e2de2990-be82-4a0c-9adf-91d514b93a57", "metadata": {}, "outputs": [], "source": [ "births = births.query('1 <= day <= 31')\n", "births" ] }, { "cell_type": "code", "execution_count": null, "id": "6a547aa9-5fbe-484c-a1b9-9064a77992cb", "metadata": {}, "outputs": [], "source": [ "quartiles = np.percentile(births['births'], [25, 50, 75])\n", "mu = quartiles[1] # 均值\n", "sig = 0.74 * (quartiles[2] - quartiles[0]) # 标准差估计值" ] }, { "cell_type": "code", "execution_count": null, "id": "47a587cf-8bdf-497b-a7fa-45432f85af9b", "metadata": {}, "outputs": [], "source": [ "births = births.query('(births > @mu - 5 * @sig) & (births < @mu + 5 * @sig)')" ] }, { "cell_type": "markdown", "id": "34205732-c2c4-4f9b-8a6b-d36db68ac203", "metadata": {}, "source": [ "创建一个日期索引" ] }, { "cell_type": "code", "execution_count": null, "id": "c05f8ced-2a28-4597-95b1-e81d4fbb35f0", "metadata": {}, "outputs": [], "source": [ "births.index = pd.to_datetime(10000 * births.year +100 * births.month +births.day, format=\"%Y%m%d\")\n", "births['dayofweek'] = births.index.dayofweek\n", "births" ] }, { "cell_type": "code", "execution_count": null, "id": "249e6e50-1708-4b5b-a6c2-cfc3667bf281", "metadata": {}, "outputs": [], "source": [ "births.pivot_table('births', index = 'dayofweek', columns= 'decade', aggfunc = 'mean')" ] }, { "cell_type": "code", "execution_count": null, "id": "279e272e-8d47-429a-9677-07ec0d52413f", "metadata": {}, "outputs": [], "source": [ "births.pivot_table('births', index = 'dayofweek', columns= 'decade', aggfunc = 'mean').plot()\n", "plt.ylabel('mean births by day')" ] }, { "cell_type": "markdown", "id": "93f6a7bf-b9f2-4cb7-a00e-1504b6708dc6", "metadata": {}, "source": [ "🗼3. 各年份平均每天出生人数,按照月和日两个维度分组.时间索引" ] }, { "cell_type": "code", "execution_count": null, "id": "6d21fb04-d4d7-4f68-9a7d-0d270ebd757c", "metadata": {}, "outputs": [], "source": [ "births" ] }, { "cell_type": "code", "execution_count": null, "id": "939c6fb3-7994-49a9-b380-b56b7d972fe5", "metadata": {}, "outputs": [], "source": [ "births_by_date = births.pivot_table('births', index = [births.index.month, births.index.day])\n", "births_by_date" ] }, { "cell_type": "code", "execution_count": null, "id": "25993b90-c138-4889-88f6-83fc4b79e2fd", "metadata": {}, "outputs": [], "source": [ "births_by_date.index =[ pd.to_datetime(f\"2012{month:02}{day:02}\") for (month, day) in births_by_date.index]\n", "births_by_date.plot()" ] }, { "cell_type": "markdown", "id": "2fe8af5f-4a49-4466-8e45-5dbf2949451a", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "ab5bf3e1", "metadata": {}, "source": [ "## Time series / date functionality" ] }, { "cell_type": "markdown", "id": "5bd2be21-f0fe-469d-b20b-a5b12c9d5dd6", "metadata": {}, "source": [ "### 3.12 处理时间序列\n", "三种时间:时间戳,时间间隔(天),持续时间(s)" ] }, { "cell_type": "markdown", "id": "2571e677", "metadata": {}, "source": [ "## Time deltas" ] }, { "cell_type": "markdown", "id": "41eb0d27", "metadata": {}, "source": [ "## Categorical data" ] }, { "cell_type": "markdown", "id": "6b4fe87d-8693-43f3-bc0b-f869cb9d6f5e", "metadata": {}, "source": [ "### 3.12.1 Python的日期与时间工具" ] }, { "cell_type": "markdown", "id": "2c506368-941d-41dd-88c4-27dd7bbab626", "metadata": {}, "source": [ "1. 原生Python的日期与时间工具:datetime(标准库)与dateutil(三方)" ] }, { "cell_type": "code", "execution_count": 1, "id": "618d631c-5f7e-4ebf-968a-b1bae9070d98", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "datetime.datetime(2015, 7, 4, 0, 0)" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from datetime import datetime\n", "datetime(2015, 7, 4)" ] }, { "cell_type": "code", "execution_count": 2, "id": "fc48d7f8-4d8c-4810-b67b-8ef238b3f7e6", "metadata": {}, "outputs": [], "source": [ "from dateutil import parser\n", "date = parser.parse(\"4th of July, 2015\")" ] }, { "cell_type": "code", "execution_count": 3, "id": "867f644d-bba0-499d-a900-0de655b5041e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Saturday'" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "date.strftime('%A') # 星期" ] }, { "cell_type": "markdown", "id": "eda00801-65dd-4b60-835d-ceccbf7b3ea7", "metadata": {}, "source": [ "2. 时间类型数组:NumPy的datetime64类型\n", "- 是64位整数" ] }, { "cell_type": "code", "execution_count": null, "id": "275fd0c9-4a77-4fc8-8f9f-8e8a00de4acb", "metadata": {}, "outputs": [], "source": [ "date = np.array('2015-07-04', dtype=np.datetime64)\n", "date" ] }, { "cell_type": "code", "execution_count": null, "id": "121e23d4-237b-4840-9557-d5dfcb11f522", "metadata": {}, "outputs": [], "source": [ "date + np.arange(12)" ] }, { "cell_type": "markdown", "id": "42afeb43-6294-4228-bf88-82c847665a9d", "metadata": {}, "source": [ "3. Pandas的日期与时间工具:理想与现实的最佳解决方案\n", "- 自己的TimeStamp对象实现\n", "- 可以使用一组TimeStamp对象创建时间索引" ] }, { "cell_type": "code", "execution_count": 38, "id": "0a5fe283-6e34-4dbb-b87a-3106ff40b367", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Timestamp('2015-07-04 00:00:00')" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "pd.to_datetime(\"4th of July, 2015\")" ] }, { "cell_type": "code", "execution_count": null, "id": "7d5919d7-81f0-4f1c-bae8-982df4c4ac2e", "metadata": {}, "outputs": [], "source": [ "几列合并一列" ] }, { "cell_type": "code", "execution_count": null, "id": "89f6d3dc-d914-40d0-8f16-022daa23c22b", "metadata": {}, "outputs": [], "source": [ "# data['date'] = pd.to_datetime(data[['Yr', 'Mo', 'Dy']])" ] }, { "cell_type": "markdown", "id": "a85760a3-3d92-4977-912a-e8f767d9b0f0", "metadata": {}, "source": [ "### 3.12.2 Pandas时间序列:用时间作索引" ] }, { "cell_type": "code", "execution_count": 15, "id": "abe403ea-5dbb-40e3-b3ea-56cc03d19e38", "metadata": {}, "outputs": [], "source": [ "index = pd.DatetimeIndex(['2014-07-04', '2014-08-04',\n", " '2015-07-04', '2015-08-04'])" ] }, { "cell_type": "code", "execution_count": 16, "id": "dcc5e403-1d18-4a03-9b47-03d27dfd5c63", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2014-07-04 0\n", "2014-08-04 1\n", "2015-07-04 2\n", "2015-08-04 3\n", "dtype: int64" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = pd.Series([0, 1, 2, 3], index=index)\n", "data" ] }, { "cell_type": "code", "execution_count": 17, "id": "8b87e1b8-6339-4b18-91ef-7eff0ed92600", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2015-07-04 2\n", "2015-08-04 3\n", "dtype: int64" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['2015'] # 可以直接获取一年的" ] }, { "cell_type": "markdown", "id": "bcbe9153-5ddc-42af-8b03-3f078a6a2be2", "metadata": {}, "source": [ "### 3.12.3 Pandas时间序列数据结构\n", "TimeStamp, Period, Timedelta 时间结构即系列索引\n", "DateTimeIndex,PeriodIndex,TimedeltaIndex\n" ] }, { "cell_type": "code", "execution_count": null, "id": "b8ab9977-e445-4069-8932-29c57fa691c5", "metadata": {}, "outputs": [], "source": [ "df['日期'].dt.year # dt保证把序列对象转为datetime处理" ] }, { "cell_type": "markdown", "id": "8e678053-2561-46f2-8a98-2d9acf8fccb2", "metadata": {}, "source": [ "to_datetime都是时间格式" ] }, { "cell_type": "code", "execution_count": 42, "id": "7505d794-a79c-4d84-8b31-d757199b65f3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Timestamp('2020-01-01 00:00:00')" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d = pd.to_datetime('2020',format='%Y')\n", "d" ] }, { "cell_type": "code", "execution_count": null, "id": "83e0716e-7b55-42cb-bed0-8cd25bb1792c", "metadata": {}, "outputs": [], "source": [ "plotdf['date'] = pd.to_datetime({\n", " 'year': plotdf['year'],\n", " 'month': plotdf['month'],\n", " 'day': 1 # 用每月第一天作为默认\n", "})\n" ] }, { "cell_type": "code", "execution_count": 47, "id": "14eb944f-dae1-412d-b9ee-6efc7b416240", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2020" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d.year" ] }, { "cell_type": "markdown", "id": "064e5d2a-df33-40ca-ab90-f384c490f445", "metadata": {}, "source": [ "支持replace修改" ] }, { "cell_type": "code", "execution_count": 46, "id": "ad03a899-d3ef-4ac5-86ce-62e20e2810c9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Timestamp('1920-01-01 00:00:00')" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d.replace(year=d.year - 100)" ] }, { "cell_type": "code", "execution_count": 1, "id": "d4cb0e8f-e521-44de-9493-af15a93af74d", "metadata": {}, "outputs": [], "source": [ "from datetime import datetime" ] }, { "cell_type": "code", "execution_count": 2, "id": "fa98eb7b-686f-4ead-9f0d-c1a7a23ac632", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'pd' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[2], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m dates \u001b[38;5;241m=\u001b[39m \u001b[43mpd\u001b[49m\u001b[38;5;241m.\u001b[39mto_datetime([datetime(\u001b[38;5;241m2015\u001b[39m, \u001b[38;5;241m7\u001b[39m, \u001b[38;5;241m3\u001b[39m), \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m4th of July, 2015\u001b[39m\u001b[38;5;124m'\u001b[39m,\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m2015-Jul-6\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m07-07-2015\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m20150708\u001b[39m\u001b[38;5;124m'\u001b[39m])\n\u001b[0;32m 2\u001b[0m dates\n", "\u001b[1;31mNameError\u001b[0m: name 'pd' is not defined" ] } ], "source": [ "dates = pd.to_datetime([datetime(2015, 7, 3), '4th of July, 2015','2015-Jul-6', '07-07-2015', '20150708'])\n", "dates" ] }, { "cell_type": "code", "execution_count": 12, "id": "e8c5d7a6-8878-47be-8c68-3c9507d91466", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "PeriodIndex(['2015-07-03', '2015-07-04', '2015-07-06', '2015-07-07',\n", " '2015-07-08'],\n", " dtype='period[D]')" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dates.to_period('D')" ] }, { "cell_type": "code", "execution_count": null, "id": "cfa9692f-37d0-4270-9e3c-a5dd6e93bf9c", "metadata": {}, "outputs": [], "source": [ "dates - dates[0]" ] }, { "cell_type": "markdown", "id": "ed4b34ce-ec8a-42e7-9e83-f86bc160bfb6", "metadata": {}, "source": [ "创建有规律时间序列" ] }, { "cell_type": "code", "execution_count": 43, "id": "b96c6a54-0837-4c98-b622-a723064fd8d9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DatetimeIndex(['2012-01-01', '2012-01-02', '2012-01-03', '2012-01-04',\n", " '2012-01-05', '2012-01-06', '2012-01-07', '2012-01-08',\n", " '2012-01-09', '2012-01-10',\n", " ...\n", " '2012-12-23', '2012-12-24', '2012-12-25', '2012-12-26',\n", " '2012-12-27', '2012-12-28', '2012-12-29', '2012-12-30',\n", " '2012-12-31', '2013-01-01'],\n", " dtype='datetime64[ns]', length=367, freq='D')" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.date_range('20120101','20130101')" ] }, { "cell_type": "code", "execution_count": null, "id": "b5df72fd-874a-4032-a5b8-608987e971c2", "metadata": {}, "outputs": [], "source": [ "pd.date_range('20140202', periods=8, freq='h')" ] }, { "cell_type": "code", "execution_count": 44, "id": "8e944bad-3230-4f22-84a3-7942d194a6cf", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "PeriodIndex(['2017-01', '2017-02', '2017-03', '2017-04', '2017-05', '2017-06',\n", " '2017-07', '2017-08'],\n", " dtype='period[M]')" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.period_range('201701', periods=8, freq='M')" ] }, { "cell_type": "markdown", "id": "a883f5b9-dc92-4d25-ace2-6eb57fdc3b78", "metadata": {}, "source": [ "!常常要实现类似POWERBI钻取,按照年月季度聚合。\n", ".dt类型检查了,不加也行" ] }, { "cell_type": "code", "execution_count": null, "id": "315d2883-8aa6-4a0b-885b-5d313563db06", "metadata": {}, "outputs": [], "source": [ "df['year'] = df['date'].dt.year # 提取年份\n", "df['month'] = df['date'].dt.month # 提取月份\n", "df['day'] = df['date'].dt.day # 提取日\n", "df['quarter'] = df['date'].dt.quarter # 提取季度\n", "df['weekday'] = df['date'].dt.weekday # 提取星期(0=周一)\n", "df['week'] = df['date'].dt.isocalendar().week # 提取周(注意版本要求)" ] }, { "cell_type": "markdown", "id": "994dae0e-3eef-4d14-990e-780d88123c4b", "metadata": {}, "source": [ "### 3.12.4 时间频率与偏移量" ] }, { "cell_type": "code", "execution_count": null, "id": "46b618f5-0c61-4c43-8880-09f5a41f64db", "metadata": {}, "outputs": [], "source": [ "pd.timedelta_range(0, periods=9, freq='2h30t') #间隔2消失的偏移量" ] }, { "cell_type": "markdown", "id": "ae74f8d9-6e12-4eaa-b0d7-6fe249984ec2", "metadata": {}, "source": [ "### 3.12.5 重新取样、迁移和窗口" ] }, { "cell_type": "code", "execution_count": null, "id": "f8aac2cb-5f2e-4698-8364-b7166d720275", "metadata": {}, "outputs": [], "source": [ "from pandas_datareader import data\n", "goog = data.DataReader('GOOGL', start='2019-1-1',data_source='stooq')\n", "goog.head()" ] }, { "cell_type": "code", "execution_count": null, "id": "041eecbf-91d5-4508-8b0f-51ab7bd5c543", "metadata": {}, "outputs": [], "source": [ "goog['Close']" ] }, { "cell_type": "code", "execution_count": null, "id": "5bb69d06-f710-4049-b6d6-d0c0cb1f1574", "metadata": {}, "outputs": [], "source": [ "goog['Close'].plot()" ] }, { "cell_type": "markdown", "id": "e2c18ae2-2511-4cf9-b07f-a6efac09a287", "metadata": {}, "source": [ "resample以数据累计基础\n", "asfreq以数据取样基础" ] }, { "cell_type": "code", "execution_count": null, "id": "6bae4a6b-87f3-41db-a87f-369162d5f70e", "metadata": {}, "outputs": [], "source": [ "goog['Close'].plot()\n", "goog['Close'].resample('BA').mean().plot(style = ':') # 上一年的均值\n", "goog['Close'].asfreq('BA').plot(style = '--') # 年末最后工作日值" ] }, { "cell_type": "code", "execution_count": null, "id": "83bec598-0f65-46c6-b7cb-960418a433fe", "metadata": {}, "outputs": [], "source": [ "goog_close = goog['Close']\n", "data = goog_close.iloc[:10]\n", "data.asfreq('D').plot(style = '-o') # 生成时间序列,包含休息天\n", "data.asfreq('D', method='bfill').plot(style = '--') # 向后填充" ] }, { "cell_type": "markdown", "id": "73e2e4e8-34d3-4c05-9d1e-033f5850cd17", "metadata": {}, "source": [ "时间迁移:" ] }, { "cell_type": "code", "execution_count": null, "id": "d0c92f49-a576-451a-81f8-4fdbc9245b99", "metadata": {}, "outputs": [], "source": [ "data = goog_close.asfreq('D', method='bfill')" ] }, { "cell_type": "code", "execution_count": null, "id": "0cfabb37-d864-42fb-a2ba-f90893c8f568", "metadata": {}, "outputs": [], "source": [ "data.plot()\n", "data.shift(120).plot() # 向后迁移\n", "\n", "# 设置图例与标签\n", "local_max = pd.to_datetime('2007-11-05')\n", "offset = pd.Timedelta(120, 'D')" ] }, { "cell_type": "markdown", "id": "8c2a8f6e-6c96-4bb8-92ef-4277ae92cda2", "metadata": {}, "source": [ "3. 移动时间窗口" ] }, { "cell_type": "code", "execution_count": null, "id": "6665bdc6-21ac-4431-94e7-efe1e60f704c", "metadata": {}, "outputs": [], "source": [ "rolling = goog_close.rolling(365, center=True)\n", "data = pd.DataFrame({'input': goog_close,\n", " 'one-year rolling_mean': rolling.mean(),\n", " 'one-year rolling_std': rolling.std()})\n", "ax = data.plot(style=['-', '--', ':'])\n", "ax.lines[0].set_alpha(0.3)" ] }, { "cell_type": "markdown", "id": "56744961-78ba-4293-8c40-2168b5b8acc2", "metadata": {}, "source": [ "### 3.12.7 案例:美国西雅图自行车统计数据的可视化\n", "弗莱蒙特桥每小时通行的自行车数量" ] }, { "cell_type": "code", "execution_count": 18, "id": "fac676cb-d913-4f66-b73e-c54c6065c380", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\63517\\AppData\\Local\\Temp\\ipykernel_15928\\361130387.py:2: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", " data = pd.read_csv('Fremont_Bridge_Bicycle_Counter.csv', index_col='Date', parse_dates=True)\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Fremont Bridge Sidewalks, south of N 34th StFremont Bridge Sidewalks, south of N 34th St Cyclist West SidewalkFremont Bridge Sidewalks, south of N 34th St Cyclist East Sidewalk
Date
2012-10-02 13:00:0055.07.048.0
2012-10-02 14:00:00130.055.075.0
2012-10-02 15:00:00152.081.071.0
2012-10-02 16:00:00278.0167.0111.0
2012-10-02 17:00:00563.0393.0170.0
\n", "
" ], "text/plain": [ " Fremont Bridge Sidewalks, south of N 34th St \\\n", "Date \n", "2012-10-02 13:00:00 55.0 \n", "2012-10-02 14:00:00 130.0 \n", "2012-10-02 15:00:00 152.0 \n", "2012-10-02 16:00:00 278.0 \n", "2012-10-02 17:00:00 563.0 \n", "\n", " Fremont Bridge Sidewalks, south of N 34th St Cyclist West Sidewalk \\\n", "Date \n", "2012-10-02 13:00:00 7.0 \n", "2012-10-02 14:00:00 55.0 \n", "2012-10-02 15:00:00 81.0 \n", "2012-10-02 16:00:00 167.0 \n", "2012-10-02 17:00:00 393.0 \n", "\n", " Fremont Bridge Sidewalks, south of N 34th St Cyclist East Sidewalk \n", "Date \n", "2012-10-02 13:00:00 48.0 \n", "2012-10-02 14:00:00 75.0 \n", "2012-10-02 15:00:00 71.0 \n", "2012-10-02 16:00:00 111.0 \n", "2012-10-02 17:00:00 170.0 " ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "data = pd.read_csv('Fremont_Bridge_Bicycle_Counter.csv', index_col='Date', parse_dates=True)\n", "data.head()" ] }, { "cell_type": "code", "execution_count": null, "id": "ac2b2934-996f-40b4-88da-9b723620473c", "metadata": {}, "outputs": [], "source": [ "data.columns = ['total','West', 'East']" ] }, { "cell_type": "code", "execution_count": null, "id": "6107ca8c-6dd5-4326-9f50-8f0d86a71cd6", "metadata": {}, "outputs": [], "source": [ "data.dropna().describe()" ] }, { "cell_type": "code", "execution_count": null, "id": "0eb7166f-e2bf-492b-9e3f-f808863b4785", "metadata": {}, "outputs": [], "source": [ "data.plot() # 每hour自行车数量" ] }, { "cell_type": "markdown", "id": "20a0df04-af23-4e69-bed4-c76d5c30520f", "metadata": {}, "source": [ "--- \n", "> `resample()`用于对时间序列数据(即索引DatetimeIndex)重新采样,可以指定时间间隔聚合数据。\n" ] }, { "cell_type": "code", "execution_count": 1, "id": "590b8589-76f0-41fd-b24b-9414653a1bbf", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
value
2000-01-0190
2000-01-0231
2000-01-0351
2000-01-0431
2000-01-0570
......
2002-09-2266
2002-09-2329
2002-09-2440
2002-09-2594
2002-09-2627
\n", "

1000 rows × 1 columns

\n", "
" ], "text/plain": [ " value\n", "2000-01-01 90\n", "2000-01-02 31\n", "2000-01-03 51\n", "2000-01-04 31\n", "2000-01-05 70\n", "... ...\n", "2002-09-22 66\n", "2002-09-23 29\n", "2002-09-24 40\n", "2002-09-25 94\n", "2002-09-26 27\n", "\n", "[1000 rows x 1 columns]" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "import numpy as np\n", "\n", "# 创建示例数据\n", "dates = pd.date_range(start='2000-01-01', periods=1000, freq='D')\n", "data = pd.DataFrame({'value': np.random.randint(1, 100, size=1000)}, index=dates)\n", "\n", "# 1. 按月求和\n", "data.resample('ME').sum()\n", "\n", "# 2. 按季度求均值\n", "data.resample('QE').mean()\n", "\n", "# 3. 按 10 年聚合\n", "data.resample('10YS').sum()\n", "\n", "# 4. 重新采样,并前向填充缺失值\n", "data.resample('D').ffill()\n" ] }, { "cell_type": "markdown", "id": "91c53eff-702e-4f3e-a7c5-d514c646c500", "metadata": {}, "source": [ "---" ] }, { "cell_type": "code", "execution_count": 19, "id": "31ee017a-1992-41bd-9d45-21487ba5070e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "weekly = data.resample('W').sum()\n", "weekly.plot(style = ['-','--',':'])" ] }, { "cell_type": "code", "execution_count": null, "id": "f16b805a-4dd2-4e48-b72d-54d723d5a9b2", "metadata": {}, "outputs": [], "source": [ "daily = data.resample('D').sum() #日\n", "daily.rolling(30, center=True).mean().plot(style=[':', '--', '-']) # 30日移动平均" ] }, { "cell_type": "markdown", "id": "72404a3b-7438-4653-ba53-a4adc419d96e", "metadata": {}, "source": [ "平滑" ] }, { "cell_type": "code", "execution_count": null, "id": "cf8d6e76-d141-457d-b23b-07ed2ccb470a", "metadata": {}, "outputs": [], "source": [ "daily.rolling(50, win_type='gaussian').sum(std=10).plot(style=[':', '--', '-']);" ] }, { "cell_type": "markdown", "id": "725d52d2", "metadata": {}, "source": [ "## Enhancing performance" ] }, { "cell_type": "markdown", "id": "d2b51adf-eb25-47dd-941b-b77740030f2d", "metadata": {}, "source": [ "### 3.13 高性能Pandas:eval()与query()\n", "直接运行c语言" ] }, { "cell_type": "markdown", "id": "4c9a3d95-7a97-48aa-8108-d4b07a94a994", "metadata": {}, "source": [ "### 3.13.1 query()与eval()的设计动机:复合代数式" ] }, { "cell_type": "code", "execution_count": null, "id": "ab001c97-1adf-48eb-8994-0328583fcda2", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "rng = np.random.RandomState(42)\n", "x = rng.rand(100000)\n", "y = rng.rand(100000)\n", "%timeit x+y # %timeit单行代码" ] }, { "cell_type": "markdown", "id": "f810eaee-2b18-45bd-a8af-76986654d1ce", "metadata": {}, "source": [ "但处理复合式子很慢, 这样情景对于大数组应该采用更高效的方式" ] }, { "cell_type": "code", "execution_count": null, "id": "44957a75-83f1-4553-81e1-4bf93f11d499", "metadata": {}, "outputs": [], "source": [ "mask = (x > 0.5) & (y < 0.5)" ] }, { "cell_type": "markdown", "id": "d6c90100-c960-4658-a6d6-4392728ed8c7", "metadata": {}, "source": [ "### 3.13.2 用pandas.eval()实现高性能运算\n", "用字符串的代数式 代替了 运算表达式" ] }, { "cell_type": "code", "execution_count": 32, "id": "53fbab7c-3241-4516-9fed-97c55a24c9e9", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "nrows, ncols = 100000, 100 \n", "rng = np.random.RandomState(42) \n", "df1, df2, df3, df4 = (pd.DataFrame(rng.rand(nrows, ncols)) \n", " for i in range(4))" ] }, { "cell_type": "markdown", "id": "e664cd68-f6d2-46bc-987b-a27a548fa1a4", "metadata": {}, "source": [ "普通方法计算和" ] }, { "cell_type": "code", "execution_count": 33, "id": "68531214-913f-4a6d-890a-446c94cce07c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "46.3 ms ± 5.12 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], "source": [ "%timeit df1+df2+df3+df4" ] }, { "cell_type": "markdown", "id": "3a3d8fd3-3907-49ec-ba91-2328ccc5648b", "metadata": {}, "source": [ "eval字符串代数式计算" ] }, { "cell_type": "code", "execution_count": 34, "id": "3ff93b60-1818-4a80-b689-75e39daeff9d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "16.6 ms ± 595 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n" ] } ], "source": [ "%timeit pd.eval('df1+df2+df3+df4')" ] }, { "cell_type": "markdown", "id": "7fb40162-9d57-4408-b274-5d8c88bbac7d", "metadata": {}, "source": [ "!明显eval速度快一倍" ] }, { "cell_type": "markdown", "id": "0739031d-fc9f-4d00-b589-969b9d558c52", "metadata": {}, "source": [ "**pd.eval()支持的运算**" ] }, { "cell_type": "code", "execution_count": 35, "id": "bfa413d5-df14-4464-8c30-bc99c903a2a0", "metadata": {}, "outputs": [], "source": [ "df1, df2, df3, df4, df5 = (pd.DataFrame(rng.randint(0, 1000, (100, 3))) for i in range(5))" ] }, { "cell_type": "markdown", "id": "1f981791-ded7-4553-b0c9-7192b0418695", "metadata": {}, "source": [ "1. 算数运算" ] }, { "cell_type": "code", "execution_count": 36, "id": "71a70d86-7dc4-473c-a36d-197df833c5fd", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result1 = -df1 * df2 / (df3 + df4) - df5 \n", "result2 = pd.eval('-df1 * df2 / (df3 + df4) - df5') \n", "np.allclose(result1, result2) # 检查是否近似相等" ] }, { "cell_type": "markdown", "id": "6f7381c8-a4d6-488a-b763-b2bbf09ab4b7", "metadata": {}, "source": [ "2. 比较运算" ] }, { "cell_type": "code", "execution_count": 37, "id": "dc6e19d9-fe7a-4207-b141-1fab1ebb5755", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result1 = (df1 < df2) & (df2 <= df3) & (df3 != df4)\n", " \n", "result2 = pd.eval('df1 < df2 <= df3 != df4') \n", "np.allclose(result1, result2) " ] }, { "cell_type": "markdown", "id": "0f0fc65f-9163-45fe-8f24-2f0efbf8b06d", "metadata": {}, "source": [ "3. 位运算" ] }, { "cell_type": "code", "execution_count": 38, "id": "3d41874e-61c6-4f59-8f35-2e5f1d730416", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result1 = (df1 < 0.5) & (df2 < 0.5) | (df3 < df4) \n", "result2 = pd.eval('(df1 < 0.5) & (df2 < 0.5) | (df3 < df4)') \n", "np.allclose(result1, result2) " ] }, { "cell_type": "code", "execution_count": 39, "id": "9f5d9b8c-cced-48d1-99cd-174199744a73", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result3 = pd.eval('(df1 < 0.5) and (df2 < 0.5) or (df3 < df4)') \n", "np.allclose(result1, result3) " ] }, { "cell_type": "markdown", "id": "77bed152-84e6-41e9-af17-881f3f9d13a2", "metadata": {}, "source": [ "4. 对象属性与索引" ] }, { "cell_type": "code", "execution_count": 40, "id": "d34cc526-3af3-457a-85f4-55ec96bac5ec", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 841\n", "1 729\n", "2 937\n", "dtype: int32\n" ] }, { "data": { "text/plain": [ "True" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result1 = df2.T[0] + df3.iloc[1] \n", "print(result1)\n", "result2 = pd.eval('df2.T[0] + df3.iloc[1]') \n", "np.allclose(result1, result2) " ] }, { "cell_type": "markdown", "id": "c0fba928-8f01-4600-9920-7bfddca08ec4", "metadata": {}, "source": [ "### 3.13.3 用DataFrame.eval()实现列间运算\n", "eval可以直接用列名计算!" ] }, { "cell_type": "code", "execution_count": 42, "id": "fb137d94-319c-479e-ba29-7ba018e5e171", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABC
00.3755060.4069390.069938
10.0690870.2356150.154374
20.6779450.4338390.652324
30.2640380.8080550.347197
40.5891610.2524180.557789
\n", "
" ], "text/plain": [ " A B C\n", "0 0.375506 0.406939 0.069938\n", "1 0.069087 0.235615 0.154374\n", "2 0.677945 0.433839 0.652324\n", "3 0.264038 0.808055 0.347197\n", "4 0.589161 0.252418 0.557789" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame(rng.rand(1000, 3), columns=['A', 'B', 'C']) \n", "df.head() " ] }, { "cell_type": "markdown", "id": "5dccb409-cff9-4e1f-88de-8b87122d726d", "metadata": {}, "source": [ "正常的eval写法, 通过.引用列(属性)" ] }, { "cell_type": "code", "execution_count": 43, "id": "206f33a8-cd23-4cac-86b8-e0da05dad9ad", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result1 = (df['A'] + df['B']) / (df['C'] - 1) \n", "result2 = pd.eval(\"(df.A + df.B) / (df.C - 1)\") \n", "np.allclose(result1, result2) " ] }, { "cell_type": "markdown", "id": "bc47ebe4-4667-4029-816e-d978ca51f030", "metadata": {}, "source": [ "更加简洁的,通过df调用eval" ] }, { "cell_type": "code", "execution_count": 44, "id": "0a18c8d6-850a-40f0-9ac3-6712e7f7b96e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result3 = df.eval('(A + B) / (C - 1)') \n", "np.allclose(result1, result3) " ] }, { "cell_type": "markdown", "id": "8bdd2e81-e6aa-48f4-bd9a-9848487606bb", "metadata": {}, "source": [ "其他常见使用:\n", "1. 使用df.eval增加列" ] }, { "cell_type": "code", "execution_count": 45, "id": "b5079244-666c-468a-8f97-57308e1b42a9", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCD
00.3755060.4069390.06993811.187620
10.0690870.2356150.1543741.973796
20.6779450.4338390.6523241.704344
30.2640380.8080550.3471973.087857
40.5891610.2524180.5577891.508776
\n", "
" ], "text/plain": [ " A B C D\n", "0 0.375506 0.406939 0.069938 11.187620\n", "1 0.069087 0.235615 0.154374 1.973796\n", "2 0.677945 0.433839 0.652324 1.704344\n", "3 0.264038 0.808055 0.347197 3.087857\n", "4 0.589161 0.252418 0.557789 1.508776" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.eval('D = (A + B) / C', inplace= True)\n", "df.head()" ] }, { "cell_type": "markdown", "id": "de426ea8-49e4-4401-8bfa-0161674f9ff5", "metadata": {}, "source": [ "2. df.eval通过@使用局部变量, 而不仅是上面的列名" ] }, { "cell_type": "code", "execution_count": 46, "id": "bd76dea6-fc85-4b7b-ad7d-182ade9f3cf0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "column_mean = df.mean(1) \n", "result1 = df['A'] + column_mean \n", "result2 = df.eval('A + @column_mean') \n", "np.allclose(result1, result2) " ] }, { "cell_type": "markdown", "id": "cbe27d3a-4484-4f5b-a2b0-3e53262e1fd8", "metadata": {}, "source": [ "### 3.13.4 DataFrame.query()方法\n", "更加简化之间的eval查询过滤运算" ] }, { "cell_type": "markdown", "id": "705da147-6f90-4feb-9a49-9636294e839a", "metadata": {}, "source": [ "eval过滤写法" ] }, { "cell_type": "code", "execution_count": 51, "id": "4ad7a2b7-aefd-4216-bda8-753716fc3c95", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result1 = df[(df.A < 0.5) & (df.B < 0.5)] \n", "result2 = pd.eval('df[(df.A < 0.5) & (df.B < 0.5)]') \n", "np.allclose(result1, result2) \n" ] }, { "cell_type": "code", "execution_count": 52, "id": "baa8e466-c0a4-40c5-93cb-bf158a71f20e", "metadata": {}, "outputs": [ { "ename": "AttributeError", "evalue": "'Series' object has no attribute 'query'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[52], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[43mdf\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mA\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mquery\u001b[49m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m<0.5\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", "File \u001b[1;32md:\\miniconda3\\Lib\\site-packages\\pandas\\core\\generic.py:6299\u001b[0m, in \u001b[0;36mNDFrame.__getattr__\u001b[1;34m(self, name)\u001b[0m\n\u001b[0;32m 6292\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\n\u001b[0;32m 6293\u001b[0m name \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_internal_names_set\n\u001b[0;32m 6294\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m name \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_metadata\n\u001b[0;32m 6295\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m name \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_accessors\n\u001b[0;32m 6296\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_info_axis\u001b[38;5;241m.\u001b[39m_can_hold_identifiers_and_holds_name(name)\n\u001b[0;32m 6297\u001b[0m ):\n\u001b[0;32m 6298\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m[name]\n\u001b[1;32m-> 6299\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mobject\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__getattribute__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mname\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[1;31mAttributeError\u001b[0m: 'Series' object has no attribute 'query'" ] } ], "source": [ "df.A.query('<0.5')" ] }, { "cell_type": "markdown", "id": "710f12d4-5a2f-4df6-b1f2-7db40fdb7dab", "metadata": {}, "source": [ "query写法" ] }, { "cell_type": "code", "execution_count": 48, "id": "4b1616bf-fe2c-4863-bd2d-2784590d3521", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Cmean = df['C'].mean() \n", "result1 = df[(df.A < Cmean) & (df.B < Cmean)] \n", "result2 = df.query('A < @Cmean and B < @Cmean') \n", "np.allclose(result1, result2) " ] }, { "cell_type": "code", "execution_count": 49, "id": "fae6edaf-6b5e-4622-a58c-e21f294449a3", "metadata": {}, "outputs": [ { "ename": "ValueError", "evalue": "operands could not be broadcast together with shapes (235,4) (231,4) ", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[49], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m result2 \u001b[38;5;241m=\u001b[39m df\u001b[38;5;241m.\u001b[39mquery(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mA < 0.5 and B < 0.5\u001b[39m\u001b[38;5;124m'\u001b[39m) \n\u001b[1;32m----> 2\u001b[0m \u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mallclose\u001b[49m\u001b[43m(\u001b[49m\u001b[43mresult1\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mresult2\u001b[49m\u001b[43m)\u001b[49m \n", "File \u001b[1;32md:\\miniconda3\\Lib\\site-packages\\numpy\\_core\\numeric.py:2329\u001b[0m, in \u001b[0;36mallclose\u001b[1;34m(a, b, rtol, atol, equal_nan)\u001b[0m\n\u001b[0;32m 2243\u001b[0m \u001b[38;5;129m@array_function_dispatch\u001b[39m(_allclose_dispatcher)\n\u001b[0;32m 2244\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mallclose\u001b[39m(a, b, rtol\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1.e-5\u001b[39m, atol\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1.e-8\u001b[39m, equal_nan\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m):\n\u001b[0;32m 2245\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 2246\u001b[0m \u001b[38;5;124;03m Returns True if two arrays are element-wise equal within a tolerance.\u001b[39;00m\n\u001b[0;32m 2247\u001b[0m \n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 2327\u001b[0m \n\u001b[0;32m 2328\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m-> 2329\u001b[0m res \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mall\u001b[39m(\u001b[43misclose\u001b[49m\u001b[43m(\u001b[49m\u001b[43ma\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mb\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrtol\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrtol\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43matol\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43matol\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mequal_nan\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mequal_nan\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[0;32m 2330\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m builtins\u001b[38;5;241m.\u001b[39mbool(res)\n", "File \u001b[1;32md:\\miniconda3\\Lib\\site-packages\\numpy\\_core\\numeric.py:2447\u001b[0m, in \u001b[0;36misclose\u001b[1;34m(a, b, rtol, atol, equal_nan)\u001b[0m\n\u001b[0;32m 2444\u001b[0m y \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mfloat\u001b[39m(y)\n\u001b[0;32m 2446\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m errstate(invalid\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mignore\u001b[39m\u001b[38;5;124m'\u001b[39m):\n\u001b[1;32m-> 2447\u001b[0m result \u001b[38;5;241m=\u001b[39m (less_equal(\u001b[38;5;28mabs\u001b[39m(\u001b[43mx\u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[43my\u001b[49m), atol \u001b[38;5;241m+\u001b[39m rtol \u001b[38;5;241m*\u001b[39m \u001b[38;5;28mabs\u001b[39m(y))\n\u001b[0;32m 2448\u001b[0m \u001b[38;5;241m&\u001b[39m isfinite(y)\n\u001b[0;32m 2449\u001b[0m \u001b[38;5;241m|\u001b[39m (x \u001b[38;5;241m==\u001b[39m y))\n\u001b[0;32m 2450\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m equal_nan:\n\u001b[0;32m 2451\u001b[0m result \u001b[38;5;241m|\u001b[39m\u001b[38;5;241m=\u001b[39m isnan(x) \u001b[38;5;241m&\u001b[39m isnan(y)\n", "\u001b[1;31mValueError\u001b[0m: operands could not be broadcast together with shapes (235,4) (231,4) " ] } ], "source": [ "result2 = df.query('A < 0.5 and B < 0.5') \n", "np.allclose(result1, result2) " ] }, { "cell_type": "code", "execution_count": 50, "id": "0a9145de-0a2b-4034-8fa0-a58ffbd47783", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (1951995059.py, line 1)", "output_type": "error", "traceback": [ "\u001b[1;36m Cell \u001b[1;32mIn[50], line 1\u001b[1;36m\u001b[0m\n\u001b[1;33m df[]\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" ] } ], "source": [ "df[]" ] }, { "cell_type": "code", "execution_count": null, "id": "f30b8e1d-fea8-4c76-b4d2-446183a02e3e", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "13719d0f", "metadata": {}, "source": [ "### iloc 和loc\n", "- loc操作的行列名字。 `loc[行名或者过滤行条件,列名]`\n", " - 过滤条件就是一个series bool值\n", "- iloc操作的是位置" ] }, { "cell_type": "code", "execution_count": 46, "id": "603a8b0d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TARGETNAMEAMT_INCOMEDAYS_BIRTH
SK_ID
1010Alice200000-15000
1021Bob150000-10000
1030Charlie300000-20000
1041David120000-9000
\n", "
" ], "text/plain": [ " TARGET NAME AMT_INCOME DAYS_BIRTH\n", "SK_ID \n", "101 0 Alice 200000 -15000\n", "102 1 Bob 150000 -10000\n", "103 0 Charlie 300000 -20000\n", "104 1 David 120000 -9000" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "import numpy as np\n", "\n", "data = {\n", " 'SK_ID': [101, 102, 103, 104],\n", " 'TARGET': [0, 1, 0, 1],\n", " 'NAME': ['Alice', 'Bob', 'Charlie', 'David'],\n", " 'AMT_INCOME': [200000, 150000, 300000, 120000],\n", " 'DAYS_BIRTH': [-15000, -10000, -20000, -9000]\n", "}\n", "\n", "df = pd.DataFrame(data)\n", "# 为了演示 loc 的行名功能,我们把 SK_ID 设为索引\n", "df.set_index('SK_ID', inplace=True)\n", "df\n" ] }, { "cell_type": "code", "execution_count": 50, "id": "e093e331", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "TARGET 0\n", "NAME Alice\n", "AMT_INCOME 200000\n", "DAYS_BIRTH -15000\n", "Name: 101, dtype: object" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.loc[101, :]" ] }, { "cell_type": "code", "execution_count": 52, "id": "6cc5fe57", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "SK_ID\n", "101 Alice\n", "103 Charlie\n", "Name: NAME, dtype: str" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.loc[df['TARGET']==0, 'NAME']" ] }, { "cell_type": "code", "execution_count": 55, "id": "c14cb7a0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "SK_ID\n", "101 Alice\n", "103 Charlie\n", "Name: NAME, dtype: str" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.loc[(df['TARGET']==0 )& (df['AMT_INCOME'] > 180000), 'NAME']" ] }, { "cell_type": "markdown", "id": "eafee3f5", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "4771d3ac", "metadata": {}, "source": [ "### replace\n", "- `Series`和`DF` 对象都支持\n", "- 一对一\n", "- 多个值统一" ] }, { "cell_type": "code", "execution_count": 3, "id": "0672478c", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": null, "id": "2518e91d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 1\n", "1 2\n", "2 3\n", "3 None\n", "dtype: object\n", "0 NaN\n", "1 2\n", "2 3\n", "3 None\n", "dtype: object\n", "0 1\n", "1 NaN\n", "2 NaN\n", "3 None\n", "dtype: object\n", "0 a\n", "1 4\n", "2 NaN\n", "3 None\n", "dtype: object\n" ] } ], "source": [ "s = pd.Series(np.array([1,2,3, None]))\n", "print(s)\n", "# \n" ] }, { "cell_type": "code", "execution_count": 24, "id": "54c286ee", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 NaN\n", "1 2\n", "2 3\n", "3 None\n", "dtype: object\n" ] } ], "source": [ "s1 = s.replace(1, np.nan)\n", "print(s1)\n", "\n" ] }, { "cell_type": "code", "execution_count": 25, "id": "db0effb7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 a\n", "1 4\n", "2 NaN\n", "3 None\n", "dtype: object\n" ] } ], "source": [ "# 多对多,映射替换\n", "s3 = s.replace({1: 'a', 2: 4, 3:np.nan})\n", "print(s3)" ] }, { "cell_type": "code", "execution_count": 27, "id": "3516d7ea", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 1\n", "1 NaN\n", "2 NaN\n", "3 None\n", "dtype: object\n" ] } ], "source": [ "# 多换一\n", "s2 = s.replace([2, 3], np.nan)\n", "print(s2)" ] }, { "cell_type": "code", "execution_count": null, "id": "1847f9b6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " population area\n", "California 2 3\n", "Texas 2 3\n", "New York 3 1\n", "Florida 6 5\n", "Illinois 4 2\n" ] } ], "source": [ "area_dict = {'California': 3, 'Texas': 3, 'New York': 1,\n", " 'Florida': -1, 'Illinois': 2}\n", "area = pd.Series(area_dict)\n", "populations_dict = {'California': 2, 'Texas': 2, 'New York': 3,\n", " 'Florida': -1, 'Illinois': 4}\n", "populations = pd.Series(populations_dict)\n", "states = pd.DataFrame({'population': populations, 'area': area})\n", "print(states)" ] }, { "cell_type": "code", "execution_count": 36, "id": "fba526e9", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
populationarea
California23
Texas23
New York31
Florida65
Illinois42
\n", "
" ], "text/plain": [ " population area\n", "California 2 3\n", "Texas 2 3\n", "New York 3 1\n", "Florida 6 5\n", "Illinois 4 2" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 全局替换\n", "states.replace(-1, np.nan)" ] }, { "cell_type": "code", "execution_count": 37, "id": "c4b60acf", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
populationarea
California2233
Texas2233
New York311
Florida665
Illinois42
\n", "
" ], "text/plain": [ " population area\n", "California 22 33\n", "Texas 22 33\n", "New York 3 11\n", "Florida 66 5\n", "Illinois 4 2" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 对不同列 不同值 \n", "states.replace({\n", " 'area':{\n", " 3: 33,\n", " 1: 11\n", " },\n", " 'population':{\n", " 2:22,\n", " 6:66\n", " }\n", "})" ] }, { "cell_type": "code", "execution_count": null, "id": "bc35076c-dc57-4bd0-9fd2-a44aa3e72375", "metadata": {}, "outputs": [], "source": [ "apply 计算长度\n", "#data['文本长度'] = data['新闻'].apply(len)" ] }, { "cell_type": "code", "execution_count": 3, "id": "cba3269c-bd6f-4556-a672-92b2e6d59801", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
count
name
GOGO122
papa3
jkjk4
\n", "
" ], "text/plain": [ " count\n", "name \n", "GOGO 122\n", "papa 3\n", "jkjk 4" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "names =pd.DataFrame(\n", " {\n", " 'name': ['GOGO','papa','jkjk'],\n", " 'count':[122,3,4]\n", " }\n", ")\n", "names.set_index('name')" ] }, { "cell_type": "code", "execution_count": 5, "id": "2b0471dc-9864-48fe-9585-e9dcdf9e50a7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "names['count'].idxmax() # 不好用! 只能返回一个索引" ] }, { "cell_type": "markdown", "id": "6b1fc164", "metadata": {}, "source": [ "## Sparse data structures" ] }, { "cell_type": "markdown", "id": "53d0bc8f-be76-4a94-be5c-a015571ee0e6", "metadata": {}, "source": [ "## Chart visualization" ] }, { "cell_type": "markdown", "id": "6c067f50-2d68-4927-ae81-c34d03f3359d", "metadata": {}, "source": [ "### 3.14 绘图接口\n", "pandas 的绘图功能通过 `plot()` 方法实现,底层依赖 matplotlib,适用于 Series 和 DataFrame。\n", "- Series:单列数据,索引自动作 x 轴,值作 y 轴。\n", "- DataFrame:多列数据,可指定 x 和 y 列,或默认用索引作 x 轴。\n", "\n", "通过 `kind` 参数指定:\n", "- `line`:折线图(默认)\n", "- `bar`:柱状图\n", "- `pie`:饼图\n", "- `scatter`:散点图(DataFrame 更常用)\n", "- `area`:面积图\n", "- `box`:箱线图\n", "\n", "通过参数设置样式:\n", "- `title`:图表标题\n", "- `color`:颜色\n", "- `figsize`:大小\n" ] }, { "cell_type": "code", "execution_count": null, "id": "eae93a21-6fb0-45a7-95b7-dfadbb38bcb5", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "38750ae1-25c6-4826-8351-ede4705bb207", "metadata": {}, "outputs": [], "source": [ "df['col'].nunique() # 返回唯一值个数" ] }, { "cell_type": "markdown", "id": "449bfef6-b40d-4e36-8c54-fd3286571d1f", "metadata": {}, "source": [ "skew()衡量偏态分布程度, 如果是1,对称分布" ] }, { "cell_type": "markdown", "id": "61236c1f-6abd-44e4-9d33-acc89065b07a", "metadata": {}, "source": [ "## Table Visualization" ] }, { "cell_type": "markdown", "id": "e8f48a04", "metadata": {}, "source": [ "## cookbook" ] }, { "cell_type": "markdown", "id": "862a44de", "metadata": {}, "source": [ "## computation" ] }, { "cell_type": "markdown", "id": "1b23a85f", "metadata": {}, "source": [ "相关性" ] }, { "cell_type": "code", "execution_count": 67, "id": "86d39798", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123
00.9642370.573508-1.109884-1.506903
1-1.3617961.311485-0.3617051.636924
2-1.122803-2.2524491.261629-0.575619
\n", "
" ], "text/plain": [ " 0 1 2 3\n", "0 0.964237 0.573508 -1.109884 -1.506903\n", "1 -1.361796 1.311485 -0.361705 1.636924\n", "2 -1.122803 -2.252449 1.261629 -0.575619" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame(np.random.randn(3,4))\n", "df" ] }, { "cell_type": "code", "execution_count": 68, "id": "84bd8280", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123
01.0000000.230549-0.677053-0.789277
10.2305491.000000-0.8722020.415529
2-0.677053-0.8722021.0000000.082491
3-0.7892770.4155290.0824911.000000
\n", "
" ], "text/plain": [ " 0 1 2 3\n", "0 1.000000 0.230549 -0.677053 -0.789277\n", "1 0.230549 1.000000 -0.872202 0.415529\n", "2 -0.677053 -0.872202 1.000000 0.082491\n", "3 -0.789277 0.415529 0.082491 1.000000" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corr = df.corr()\n", "corr" ] }, { "cell_type": "code", "execution_count": 70, "id": "63092c27", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123target
00.9642370.573508-1.109884-1.5069030.348507
1-1.3617961.311485-0.3617051.6369240.449459
2-1.122803-2.2524491.261629-0.575619-0.157774
\n", "
" ], "text/plain": [ " 0 1 2 3 target\n", "0 0.964237 0.573508 -1.109884 -1.506903 0.348507\n", "1 -1.361796 1.311485 -0.361705 1.636924 0.449459\n", "2 -1.122803 -2.252449 1.261629 -0.575619 -0.157774" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['target'] = np.random.randn(3)\n", "df" ] }, { "cell_type": "code", "execution_count": 71, "id": "d7e96638", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(0.9991318029867298)" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['target'].corr(df[1])" ] }, { "cell_type": "markdown", "id": "bc987f36", "metadata": {}, "source": [ "###  案例:食谱数据库" ] }, { "cell_type": "markdown", "id": "c732f615", "metadata": {}, "source": [ "数据清理" ] }, { "cell_type": "code", "execution_count": null, "id": "d49217d7", "metadata": {}, "outputs": [ { "ename": "FileNotFoundError", "evalue": "File recipeitems-latest.json does not exist", "output_type": "error", "traceback": [ "\u001b[31m---------------------------------------------------------------------------\u001b[39m\n", "\u001b[31mFileNotFoundError\u001b[39m Traceback (most recent call last)\n", "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\63517\\miniconda3\\envs\\data-analysis\\Lib\\site-packages\\pandas\\io\\json\\_json.py:948\u001b[39m, in \u001b[36mJsonReader._get_data_from_filepath\u001b[39m\u001b[34m(self, filepath_or_buffer)\u001b[39m\n", "\u001b[32m 947\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n", "\u001b[32m--> \u001b[39m\u001b[32m948\u001b[39m \u001b[38;5;28mself\u001b[39m.handles = \u001b[43mget_handle\u001b[49m\u001b[43m(\u001b[49m\n", "\u001b[32m 949\u001b[39m \u001b[43m \u001b[49m\u001b[43mfilepath_or_buffer\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 950\u001b[39m \u001b[43m \u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mr\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n", "\u001b[32m 951\u001b[39m \u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mencoding\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 952\u001b[39m \u001b[43m \u001b[49m\u001b[43mcompression\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mcompression\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 953\u001b[39m \u001b[43m \u001b[49m\u001b[43mstorage_options\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mstorage_options\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 954\u001b[39m \u001b[43m \u001b[49m\u001b[43merrors\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mencoding_errors\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 955\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[32m 956\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mOSError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n", "\n", "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\63517\\miniconda3\\envs\\data-analysis\\Lib\\site-packages\\pandas\\io\\common.py:926\u001b[39m, in \u001b[36mget_handle\u001b[39m\u001b[34m(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)\u001b[39m\n", "\u001b[32m 924\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m ioargs.encoding \u001b[38;5;129;01mand\u001b[39;00m \u001b[33m\"\u001b[39m\u001b[33mb\u001b[39m\u001b[33m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m ioargs.mode:\n", "\u001b[32m 925\u001b[39m \u001b[38;5;66;03m# Encoding\u001b[39;00m\n", "\u001b[32m--> \u001b[39m\u001b[32m926\u001b[39m handle = \u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\n", "\u001b[32m 927\u001b[39m \u001b[43m \u001b[49m\u001b[43mhandle\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 928\u001b[39m \u001b[43m \u001b[49m\u001b[43mioargs\u001b[49m\u001b[43m.\u001b[49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 929\u001b[39m \u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[43m=\u001b[49m\u001b[43mioargs\u001b[49m\u001b[43m.\u001b[49m\u001b[43mencoding\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 930\u001b[39m \u001b[43m \u001b[49m\u001b[43merrors\u001b[49m\u001b[43m=\u001b[49m\u001b[43merrors\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 931\u001b[39m \u001b[43m \u001b[49m\u001b[43mnewline\u001b[49m\u001b[43m=\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n", "\u001b[32m 932\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[32m 933\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n", "\u001b[32m 934\u001b[39m \u001b[38;5;66;03m# Binary mode\u001b[39;00m\n", "\n", "\u001b[31mFileNotFoundError\u001b[39m: [Errno 2] No such file or directory: 'recipeitems-latest.json'\n", "\n", "The above exception was the direct cause of the following exception:\n", "\n", "\u001b[31mFileNotFoundError\u001b[39m Traceback (most recent call last)\n", "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[80]\u001b[39m\u001b[32m, line 2\u001b[39m\n", "\u001b[32m 1\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n", "\u001b[32m----> \u001b[39m\u001b[32m2\u001b[39m recipes = \u001b[43mpd\u001b[49m\u001b[43m.\u001b[49m\u001b[43mread_json\u001b[49m\u001b[43m(\u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mrecipeitems-latest.json\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n", "\u001b[32m 3\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", "\u001b[32m 4\u001b[39m \u001b[38;5;28mprint\u001b[39m(\u001b[33m\"\u001b[39m\u001b[33mValueError:\u001b[39m\u001b[33m\"\u001b[39m,e) \u001b[38;5;66;03m# 数据断行\u001b[39;00m\n", "\n", "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\63517\\miniconda3\\envs\\data-analysis\\Lib\\site-packages\\pandas\\io\\json\\_json.py:829\u001b[39m, in \u001b[36mread_json\u001b[39m\u001b[34m(path_or_buf, orient, typ, dtype, convert_axes, convert_dates, keep_default_dates, precise_float, date_unit, encoding, encoding_errors, lines, chunksize, compression, nrows, storage_options, dtype_backend, engine)\u001b[39m\n", "\u001b[32m 826\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m convert_axes \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m orient != \u001b[33m\"\u001b[39m\u001b[33mtable\u001b[39m\u001b[33m\"\u001b[39m:\n", "\u001b[32m 827\u001b[39m convert_axes = \u001b[38;5;28;01mTrue\u001b[39;00m\n", "\u001b[32m--> \u001b[39m\u001b[32m829\u001b[39m json_reader = \u001b[43mJsonReader\u001b[49m\u001b[43m(\u001b[49m\n", "\u001b[32m 830\u001b[39m \u001b[43m \u001b[49m\u001b[43mpath_or_buf\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 831\u001b[39m \u001b[43m \u001b[49m\u001b[43morient\u001b[49m\u001b[43m=\u001b[49m\u001b[43morient\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 832\u001b[39m \u001b[43m \u001b[49m\u001b[43mtyp\u001b[49m\u001b[43m=\u001b[49m\u001b[43mtyp\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 833\u001b[39m \u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[43m=\u001b[49m\u001b[43mdtype\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 834\u001b[39m \u001b[43m \u001b[49m\u001b[43mconvert_axes\u001b[49m\u001b[43m=\u001b[49m\u001b[43mconvert_axes\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 835\u001b[39m \u001b[43m \u001b[49m\u001b[43mconvert_dates\u001b[49m\u001b[43m=\u001b[49m\u001b[43mconvert_dates\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 836\u001b[39m \u001b[43m \u001b[49m\u001b[43mkeep_default_dates\u001b[49m\u001b[43m=\u001b[49m\u001b[43mkeep_default_dates\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 837\u001b[39m \u001b[43m \u001b[49m\u001b[43mprecise_float\u001b[49m\u001b[43m=\u001b[49m\u001b[43mprecise_float\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 838\u001b[39m \u001b[43m \u001b[49m\u001b[43mdate_unit\u001b[49m\u001b[43m=\u001b[49m\u001b[43mdate_unit\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 839\u001b[39m \u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[43m=\u001b[49m\u001b[43mencoding\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 840\u001b[39m \u001b[43m \u001b[49m\u001b[43mlines\u001b[49m\u001b[43m=\u001b[49m\u001b[43mlines\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 841\u001b[39m \u001b[43m \u001b[49m\u001b[43mchunksize\u001b[49m\u001b[43m=\u001b[49m\u001b[43mchunksize\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 842\u001b[39m \u001b[43m \u001b[49m\u001b[43mcompression\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcompression\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 843\u001b[39m \u001b[43m \u001b[49m\u001b[43mnrows\u001b[49m\u001b[43m=\u001b[49m\u001b[43mnrows\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 844\u001b[39m \u001b[43m \u001b[49m\u001b[43mstorage_options\u001b[49m\u001b[43m=\u001b[49m\u001b[43mstorage_options\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 845\u001b[39m \u001b[43m \u001b[49m\u001b[43mencoding_errors\u001b[49m\u001b[43m=\u001b[49m\u001b[43mencoding_errors\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 846\u001b[39m \u001b[43m \u001b[49m\u001b[43mdtype_backend\u001b[49m\u001b[43m=\u001b[49m\u001b[43mdtype_backend\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 847\u001b[39m \u001b[43m \u001b[49m\u001b[43mengine\u001b[49m\u001b[43m=\u001b[49m\u001b[43mengine\u001b[49m\u001b[43m,\u001b[49m\n", "\u001b[32m 848\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[32m 850\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m chunksize:\n", "\u001b[32m 851\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m json_reader\n", "\n", "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\63517\\miniconda3\\envs\\data-analysis\\Lib\\site-packages\\pandas\\io\\json\\_json.py:931\u001b[39m, in \u001b[36mJsonReader.__init__\u001b[39m\u001b[34m(self, filepath_or_buffer, orient, typ, dtype, convert_axes, convert_dates, keep_default_dates, precise_float, date_unit, encoding, lines, chunksize, compression, nrows, storage_options, encoding_errors, dtype_backend, engine)\u001b[39m\n", "\u001b[32m 929\u001b[39m \u001b[38;5;28mself\u001b[39m.data = filepath_or_buffer\n", "\u001b[32m 930\u001b[39m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m.engine == \u001b[33m\"\u001b[39m\u001b[33mujson\u001b[39m\u001b[33m\"\u001b[39m:\n", "\u001b[32m--> \u001b[39m\u001b[32m931\u001b[39m data = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_get_data_from_filepath\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilepath_or_buffer\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[32m 932\u001b[39m \u001b[38;5;66;03m# If self.chunksize, we prepare the data for the `__next__` method.\u001b[39;00m\n", "\u001b[32m 933\u001b[39m \u001b[38;5;66;03m# Otherwise, we read it into memory for the `read` method.\u001b[39;00m\n", "\u001b[32m 934\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m.chunksize \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m.nrows):\n", "\n", "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\63517\\miniconda3\\envs\\data-analysis\\Lib\\site-packages\\pandas\\io\\json\\_json.py:957\u001b[39m, in \u001b[36mJsonReader._get_data_from_filepath\u001b[39m\u001b[34m(self, filepath_or_buffer)\u001b[39m\n", "\u001b[32m 948\u001b[39m \u001b[38;5;28mself\u001b[39m.handles = get_handle(\n", "\u001b[32m 949\u001b[39m filepath_or_buffer,\n", "\u001b[32m 950\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mr\u001b[39m\u001b[33m\"\u001b[39m,\n", "\u001b[32m (...)\u001b[39m\u001b[32m 954\u001b[39m errors=\u001b[38;5;28mself\u001b[39m.encoding_errors,\n", "\u001b[32m 955\u001b[39m )\n", "\u001b[32m 956\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mOSError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n", "\u001b[32m--> \u001b[39m\u001b[32m957\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mFileNotFoundError\u001b[39;00m(\n", "\u001b[32m 958\u001b[39m \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mFile \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfilepath_or_buffer\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m does not exist\u001b[39m\u001b[33m\"\u001b[39m\n", "\u001b[32m 959\u001b[39m ) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01merr\u001b[39;00m\n", "\u001b[32m 960\u001b[39m filepath_or_buffer = \u001b[38;5;28mself\u001b[39m.handles.handle\n", "\u001b[32m 961\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m filepath_or_buffer\n", "\n", "\u001b[31mFileNotFoundError\u001b[39m: File recipeitems-latest.json does not exist" ] } ], "source": [ "try:\n", " recipes = pd.read_json('recipeitems-latest.json')\n", "except ValueError as e:\n", " print(\"ValueError:\",e) # 数据断行" ] }, { "cell_type": "code", "execution_count": null, "id": "648e9dfc", "metadata": {}, "outputs": [], "source": [ "with open('recipeitems-latest.json') as f:\n", " line = f.readline()\n", "pd.read_json(line).shape" ] }, { "cell_type": "markdown", "id": "c920df85", "metadata": {}, "source": [ "每一行都是json对象,[]组成json格式。\n", "解析到dataframe" ] }, { "cell_type": "code", "execution_count": null, "id": "a5714b87", "metadata": {}, "outputs": [], "source": [ "with open('recipeitems-latest.json', 'r', encoding='utf-8') as f:\n", " data = (line.strip() for line in f)\n", " data_json = \"[{0}]\".format(','.join(data))\n", "recipes = pd.read_json(data_json)\n", "recipes.iloc[0]" ] }, { "cell_type": "code", "execution_count": null, "id": "5c361c09", "metadata": {}, "outputs": [], "source": [ "recipes['ingredients'].str.len().describe()" ] }, { "cell_type": "markdown", "id": "7dbc4f3f", "metadata": {}, "source": [ "!这个字段最长居然有9000多个字符, 看看是哪个" ] }, { "cell_type": "code", "execution_count": null, "id": "2db70744", "metadata": {}, "outputs": [], "source": [ "recipes.iloc[np.argmax(recipes.ingredients.str.len())]" ] }, { "cell_type": "code", "execution_count": null, "id": "40880a21", "metadata": {}, "outputs": [], "source": [ "recipes['description'].str.contains('[Bb]reakfast').sum() # 一共有3524个早餐" ] }, { "cell_type": "markdown", "id": "92ce6e61", "metadata": {}, "source": [ "美食推荐系统\n", "根据用户有的食材取搜索" ] }, { "cell_type": "code", "execution_count": null, "id": "7f44eb1b", "metadata": {}, "outputs": [], "source": [ "spice_list = ['salt', 'pepper', 'oregano', 'sage', 'parsley',\n", " 'rosemary', 'tarragon', 'thyme', 'paprika', 'cumin']" ] }, { "cell_type": "code", "execution_count": null, "id": "5232a928", "metadata": {}, "outputs": [], "source": [ "import re" ] }, { "cell_type": "code", "execution_count": null, "id": "fdf5e761", "metadata": {}, "outputs": [], "source": [ "spice_df = pd.DataFrame(dict( (spice, recipes['ingredients'].str.contains(spice, re.IGNORECASE))for spice in spice_list)) # 构建bool数组\n", "spice_df" ] }, { "cell_type": "code", "execution_count": null, "id": "4338fbe5", "metadata": {}, "outputs": [], "source": [ "selection = spice_df.query('parsley & paprika & sage')\n", "selection.index" ] }, { "cell_type": "code", "execution_count": null, "id": "3fa59acd", "metadata": {}, "outputs": [], "source": [ "recipes['name'][selection.index]" ] } ], "metadata": { "kernelspec": { "display_name": "data-analysis", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.15" } }, "nbformat": 4, "nbformat_minor": 5 }