diff --git a/!kursach.ipynb b/!kursach.ipynb new file mode 100644 index 0000000..d6c49fa --- /dev/null +++ b/!kursach.ipynb @@ -0,0 +1,10495 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "2c1426ca", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "9085d8a1", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.metrics import mean_squared_error\n", + "from sklearn.metrics import r2_score\n", + "from sklearn.metrics import mean_absolute_error\n", + "from sklearn.model_selection import GridSearchCV\n", + "from sklearn.ensemble import RandomForestClassifier\n", + "from sklearn.metrics import roc_auc_score\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.manifold import TSNE\n", + "from sklearn.cluster import KMeans\n", + "from sklearn.decomposition import PCA\n", + "from sklearn.ensemble import RandomForestRegressor" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "c4697627", + "metadata": {}, + "outputs": [], + "source": [ + "#%matplotlib inline\n", + "%config InlineBackend.figure_format = 'svg'\n", + "plt.style.use('fivethirtyeight')" + ] + }, + { + "cell_type": "markdown", + "id": "475d292b", + "metadata": {}, + "source": [ + "# Загрузка данных" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "84f8f88d", + "metadata": {}, + "outputs": [], + "source": [ + "train_df = pd.read_csv('kursach_dir/train.csv').set_index(['Id','DistrictId'])\n", + "test_df = pd.read_csv('kursach_dir/test.csv').set_index(['Id','DistrictId'])" + ] + }, + { + "cell_type": "markdown", + "id": "fe02de91", + "metadata": {}, + "source": [ + "Вывод информации о данных" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "40da78cb", + "metadata": {}, + "outputs": [], + "source": [ + "colours = ['#000099', '#ffff00']\n", + "sns.heatmap(train_df.isnull(), cmap=sns.color_palette(colours))" + ] + }, + { + "cell_type": "markdown", + "id": "3d4aff40", + "metadata": {}, + "source": [ + "Процентная потеря данных и типы данных " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a2ba185e", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Пропуск данных\n", + "\n", + "Rooms - 0% float64\n", + "Square - 0% float64\n", + "LifeSquare - 21% float64\n", + "KitchenSquare - 0% float64\n", + "Floor - 0% int64\n", + "HouseFloor - 0% float64\n", + "HouseYear - 0% int64\n", + "Ecology_1 - 0% float64\n", + "Ecology_2 - 0% object\n", + "Ecology_3 - 0% object\n", + "Social_1 - 0% int64\n", + "Social_2 - 0% int64\n", + "Social_3 - 0% int64\n", + "Healthcare_1 - 48% float64\n", + "Helthcare_2 - 0% int64\n", + "Shops_1 - 0% int64\n", + "Shops_2 - 0% object\n", + "Price - 0% float64\n" + ] + } + ], + "source": [ + "print('Пропуск данных\\n')\n", + "for col in train_df.columns:\n", + " pct_missing = np.mean(train_df[col].isnull())\n", + " print('{:15} - {:3}% {}'.format(col, round(pct_missing*100), train_df[col].dtypes))" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "6c8bc095", + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
RoomsSquareLifeSquareKitchenSquareFloorHouseFloorHouseYearEcology_1Social_1Social_2Social_3Healthcare_1Helthcare_2Shops_1Price
count10000.00000010000.0000007887.00000010000.00000010000.00000010000.0000001.000000e+0410000.00000010000.00000010000.00000010000.0000005202.00000010000.00000010000.00000010000.000000
mean1.89050056.31577537.1996456.2733008.52670012.6094003.990166e+030.11885824.6870005352.1574008.0392001142.9044601.3195004.231300214138.857399
std0.83951221.05873286.24120928.5609175.2411486.7759742.005003e+050.11902517.5326144006.79980323.8318751021.5172641.4936014.80634192872.293865
min0.0000001.1368590.3706190.0000001.0000000.0000001.910000e+030.0000000.000000168.0000000.0000000.0000000.0000000.00000059174.778028
25%1.00000041.77488122.7698321.0000004.0000009.0000001.974000e+030.0176476.0000001564.0000000.000000350.0000000.0000001.000000153872.633942
50%2.00000052.51331032.7812606.0000007.00000013.0000001.977000e+030.07542425.0000005285.0000002.000000900.0000001.0000003.000000192269.644879
75%2.00000065.90062545.1288039.00000012.00000017.0000002.001000e+030.19578136.0000007227.0000005.0000001548.0000002.0000006.000000249135.462171
max19.000000641.0651937480.5921292014.00000042.000000117.0000002.005201e+070.52186774.00000019083.000000141.0000004849.0000006.00000023.000000633233.466570
\n", + "
" + ], + "text/plain": [ + " Rooms Square LifeSquare KitchenSquare Floor \\\n", + "count 10000.000000 10000.000000 7887.000000 10000.000000 10000.000000 \n", + "mean 1.890500 56.315775 37.199645 6.273300 8.526700 \n", + "std 0.839512 21.058732 86.241209 28.560917 5.241148 \n", + "min 0.000000 1.136859 0.370619 0.000000 1.000000 \n", + "25% 1.000000 41.774881 22.769832 1.000000 4.000000 \n", + "50% 2.000000 52.513310 32.781260 6.000000 7.000000 \n", + "75% 2.000000 65.900625 45.128803 9.000000 12.000000 \n", + "max 19.000000 641.065193 7480.592129 2014.000000 42.000000 \n", + "\n", + " HouseFloor HouseYear Ecology_1 Social_1 Social_2 \\\n", + "count 10000.000000 1.000000e+04 10000.000000 10000.000000 10000.000000 \n", + "mean 12.609400 3.990166e+03 0.118858 24.687000 5352.157400 \n", + "std 6.775974 2.005003e+05 0.119025 17.532614 4006.799803 \n", + "min 0.000000 1.910000e+03 0.000000 0.000000 168.000000 \n", + "25% 9.000000 1.974000e+03 0.017647 6.000000 1564.000000 \n", + "50% 13.000000 1.977000e+03 0.075424 25.000000 5285.000000 \n", + "75% 17.000000 2.001000e+03 0.195781 36.000000 7227.000000 \n", + "max 117.000000 2.005201e+07 0.521867 74.000000 19083.000000 \n", + "\n", + " Social_3 Healthcare_1 Helthcare_2 Shops_1 Price \n", + "count 10000.000000 5202.000000 10000.000000 10000.000000 10000.000000 \n", + "mean 8.039200 1142.904460 1.319500 4.231300 214138.857399 \n", + "std 23.831875 1021.517264 1.493601 4.806341 92872.293865 \n", + "min 0.000000 0.000000 0.000000 0.000000 59174.778028 \n", + "25% 0.000000 350.000000 0.000000 1.000000 153872.633942 \n", + "50% 2.000000 900.000000 1.000000 3.000000 192269.644879 \n", + "75% 5.000000 1548.000000 2.000000 6.000000 249135.462171 \n", + "max 141.000000 4849.000000 6.000000 23.000000 633233.466570 " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train_df.describe()" + ] + }, + { + "cell_type": "markdown", + "id": "cf2cefc6", + "metadata": {}, + "source": [ + "Номинативные переменные" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "344c8435", + "metadata": {}, + "outputs": [], + "source": [ + "object_titel = train_df.select_dtypes(include='object').columns.tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "6b9ab32f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "B 0.9903\n", + "A 0.0097\n", + "Name: Ecology_2, dtype: float64\n", + "\n", + "B 0.9725\n", + "A 0.0275\n", + "Name: Ecology_3, dtype: float64\n", + "\n", + "B 0.9175\n", + "A 0.0825\n", + "Name: Shops_2, dtype: float64\n", + "\n" + ] + } + ], + "source": [ + "for obj in object_titel:\n", + " print(train_df[obj].value_counts(normalize=True), end = '\\n\\n')" + ] + }, + { + "cell_type": "markdown", + "id": "6bc37e56", + "metadata": {}, + "source": [ + "# Работа с данными" + ] + }, + { + "cell_type": "markdown", + "id": "51d90268", + "metadata": {}, + "source": [ + "По параметру Healthcare_1 слишком большой процен утери данных, поэтому убираю его из выборки" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "be39737c", + "metadata": {}, + "outputs": [], + "source": [ + "train_df.drop (columns='Healthcare_1', axis= 1 , inplace= True )" + ] + }, + { + "cell_type": "markdown", + "id": "c202d79b", + "metadata": {}, + "source": [ + "заполнение LifeSquare средним" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "5b757f89", + "metadata": {}, + "outputs": [], + "source": [ + "train_df.loc[train_df['LifeSquare'].isnull(), 'LifeSquare'] = train_df['LifeSquare'].median()" + ] + }, + { + "cell_type": "markdown", + "id": "b3539be9", + "metadata": {}, + "source": [ + "Устранение выбросов по LifeSquare, Rooms, Square, KitchenSquare" + ] + }, + { + "cell_type": "markdown", + "id": "22b27ea8", + "metadata": {}, + "source": [ + "До устранения выбросов" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "90a9f85d", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2023-02-28T19:40:33.637692\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.0, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize = (10, 8))\n", + "\n", + "plt.subplot(221)\n", + "#train_df['LifeSquare'].hist()\n", + "sns.kdeplot(train_df['LifeSquare'], fill=True, legend=False)\n", + "plt.ylabel('count')\n", + "plt.xlabel('LifeSquare')\n", + "plt.title('среднее {:.4}'.format(train_df['LifeSquare'].median()), loc='left')\n", + "\n", + "plt.subplot(222)\n", + "#train_df['Rooms'].hist()\n", + "sns.kdeplot(train_df['Rooms'], fill=True, legend=False)\n", + "plt.ylabel('count')\n", + "plt.xlabel('Rooms')\n", + "plt.title('среднее {:.4}'.format(train_df['Rooms'].median()), loc='left')\n", + "\n", + "plt.subplot(223)\n", + "#train_df['Square'].hist()\n", + "sns.kdeplot(train_df['Square'], fill=True, legend=False)\n", + "plt.ylabel('count')\n", + "plt.xlabel('Square')\n", + "plt.title('среднее {:.4}'.format(train_df['Square'].median()), loc='left')\n", + "\n", + "plt.subplot(224)\n", + "#train_df['KitchenSquare'].hist()\n", + "sns.kdeplot(train_df['KitchenSquare'], fill=True, legend=False)\n", + "plt.ylabel('count')\n", + "plt.xlabel('KitchenSquare')\n", + "plt.title('среднее {:.4}'.format(train_df['KitchenSquare'].median()), loc='left')\n", + "\n", + "plt.subplots_adjust(wspace = 0.3, hspace = 0.3)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "6db869c3", + "metadata": {}, + "outputs": [], + "source": [ + "train_df.loc[train_df['LifeSquare'] > 300, 'LifeSquare'] = train_df['LifeSquare'].median() \n", + "train_df.loc[~train_df['Rooms'].isin(range(1,6)), 'Rooms'] = train_df['Rooms'].median()\n", + "train_df.loc[train_df['Square'] > 500, 'Square'] = train_df['Square'].median()\n", + "train_df.loc[train_df['KitchenSquare'] > 60, 'KitchenSquare'] = train_df['KitchenSquare'].median()\n", + "train_df.loc[train_df['KitchenSquare'] < 2, 'KitchenSquare'] = train_df['KitchenSquare'].median()" + ] + }, + { + "cell_type": "markdown", + "id": "528a8ebb", + "metadata": {}, + "source": [ + "После устранения" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "8d4958cf", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2023-02-28T19:40:43.799821\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.0, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize = (10, 8))\n", + "\n", + "plt.subplot(221)\n", + "#train_df['LifeSquare'].hist()\n", + "sns.kdeplot(train_df['LifeSquare'], fill=True, legend=False)\n", + "plt.ylabel('count')\n", + "plt.xlabel('LifeSquare')\n", + "plt.title('среднее {:.4}'.format(train_df['LifeSquare'].median()), loc='left')\n", + "\n", + "plt.subplot(222)\n", + "#train_df['Rooms'].hist()\n", + "sns.kdeplot(train_df['Rooms'], fill=True, legend=False)\n", + "plt.ylabel('count')\n", + "plt.xlabel('Rooms')\n", + "plt.title('среднее {:.4}'.format(train_df['Rooms'].median()), loc='left')\n", + "\n", + "plt.subplot(223)\n", + "#train_df['Square'].hist()\n", + "sns.kdeplot(train_df['Square'], fill=True, legend=False)\n", + "plt.ylabel('count')\n", + "plt.xlabel('Square')\n", + "plt.title('среднее {:.4}'.format(train_df['Square'].median()), loc='left')\n", + "\n", + "plt.subplot(224)\n", + "#train_df['KitchenSquare'].hist()\n", + "sns.kdeplot(train_df['KitchenSquare'], fill=True, legend=False)\n", + "plt.ylabel('count')\n", + "plt.xlabel('KitchenSquare')\n", + "plt.title('среднее {:.4}'.format(train_df['KitchenSquare'].median()), loc='left')\n", + "\n", + "plt.subplots_adjust(wspace = 0.3, hspace = 0.3)" + ] + }, + { + "cell_type": "markdown", + "id": "a71736bd", + "metadata": {}, + "source": [ + "Избавляюсь от нольэтажных домов, и домов из будущего" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "0ebe3090", + "metadata": {}, + "outputs": [], + "source": [ + "train_df.loc[train_df['HouseFloor'] == 0, 'HouseFloor'] = train_df['HouseFloor'].median()\n", + "train_df.loc[train_df['HouseYear'] >2023, 'HouseYear'] = train_df['HouseYear'].median()" + ] + }, + { + "cell_type": "markdown", + "id": "7649bd26", + "metadata": {}, + "source": [ + "Преобразую в бинарные призника" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "bc444cc0", + "metadata": {}, + "outputs": [], + "source": [ + "for obj in object_titel:\n", + " train_df[obj] = train_df[obj].replace({'A':0, 'B':1})" + ] + }, + { + "cell_type": "markdown", + "id": "750b1f05", + "metadata": {}, + "source": [ + "Избавляемя от случаев неправильного указания этажей и площадей" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "a8851004", + "metadata": {}, + "outputs": [], + "source": [ + "train_df.loc[train_df['HouseFloor'] < train_df['Floor'], 'Floor'] = \\\n", + "train_df.loc[train_df['HouseFloor'] < train_df['Floor'], 'HouseFloor']" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "609b46c3", + "metadata": {}, + "outputs": [], + "source": [ + "train_df.loc[train_df['Square'] < (train_df['KitchenSquare'] + train_df['LifeSquare']), 'Square'] = \\\n", + "train_df.loc[train_df['Square'] < (train_df['KitchenSquare'] + train_df['LifeSquare']), 'KitchenSquare'] + \\\n", + "train_df.loc[train_df['Square'] < (train_df['KitchenSquare'] + train_df['LifeSquare']), 'LifeSquare']" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "d85c604b", + "metadata": {}, + "outputs": [], + "source": [ + "Y_train = pd.DataFrame(train_df['Price'])" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "b43159db", + "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", + "
Price
IdDistrictId
1403835184966.930730
1505341300009.450063
476553220925.908524
580958175616.227217
1078399150226.531644
\n", + "
" + ], + "text/plain": [ + " Price\n", + "Id DistrictId \n", + "14038 35 184966.930730\n", + "15053 41 300009.450063\n", + "4765 53 220925.908524\n", + "5809 58 175616.227217\n", + "10783 99 150226.531644" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Y_train.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "ff3e49c6", + "metadata": {}, + "outputs": [], + "source": [ + "x_train_df = pd.DataFrame(train_df.loc[:, train_df.columns != 'Price'])" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "5d62cca8", + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
RoomsSquareLifeSquareKitchenSquareFloorHouseFloorHouseYearEcology_1Ecology_2Ecology_3Social_1Social_2Social_3Helthcare_2Shops_1Shops_2
IdDistrictId
14038352.047.98156129.4427516.079.019690.0890401133797650111
15053413.065.68364040.0495438.079.019780.00007011461030911161
4765532.044.94795329.1976126.0812.019680.049637113477590131
5809582.061.73151252.7315129.0817.019770.437885112357353051
10783991.039.64919223.7761697.01112.019760.012339113557761241
\n", + "
" + ], + "text/plain": [ + " Rooms Square LifeSquare KitchenSquare Floor \\\n", + "Id DistrictId \n", + "14038 35 2.0 47.981561 29.442751 6.0 7 \n", + "15053 41 3.0 65.683640 40.049543 8.0 7 \n", + "4765 53 2.0 44.947953 29.197612 6.0 8 \n", + "5809 58 2.0 61.731512 52.731512 9.0 8 \n", + "10783 99 1.0 39.649192 23.776169 7.0 11 \n", + "\n", + " HouseFloor HouseYear Ecology_1 Ecology_2 Ecology_3 \\\n", + "Id DistrictId \n", + "14038 35 9.0 1969 0.089040 1 1 \n", + "15053 41 9.0 1978 0.000070 1 1 \n", + "4765 53 12.0 1968 0.049637 1 1 \n", + "5809 58 17.0 1977 0.437885 1 1 \n", + "10783 99 12.0 1976 0.012339 1 1 \n", + "\n", + " Social_1 Social_2 Social_3 Helthcare_2 Shops_1 Shops_2 \n", + "Id DistrictId \n", + "14038 35 33 7976 5 0 11 1 \n", + "15053 41 46 10309 1 1 16 1 \n", + "4765 53 34 7759 0 1 3 1 \n", + "5809 58 23 5735 3 0 5 1 \n", + "10783 99 35 5776 1 2 4 1 " + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x_train_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "f0b07d39", + "metadata": {}, + "outputs": [], + "source": [ + "scaler = StandardScaler()" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "93e5547e", + "metadata": {}, + "outputs": [], + "source": [ + "X_train_scaled = pd.DataFrame(scaler.fit_transform(x_train_df), columns=x_train_df.columns)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "c82473ea", + "metadata": {}, + "outputs": [], + "source": [ + "X_train, X_valid, y_train, y_valid = train_test_split(X_train_scaled, Y_train, train_size=0.70, random_state=42)" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "id": "f8708c7a", + "metadata": {}, + "outputs": [], + "source": [ + "model = RandomForestRegressor(n_estimators=500, max_depth=12, random_state=42)" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "id": "b717feb0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
RandomForestRegressor(max_depth=12, n_estimators=500, random_state=42)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "RandomForestRegressor(max_depth=12, n_estimators=500, random_state=42)" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.fit(X_train, y_train.values[:, 0])" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "f6b7d304", + "metadata": {}, + "outputs": [], + "source": [ + "y_train_preds = model.predict(X_train)\n", + "y_valid_preds = model.predict(X_valid)" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "8e10fdde", + "metadata": {}, + "outputs": [], + "source": [ + "check_valid = pd.DataFrame({\n", + " 'Тестовые данные valid': y_valid.values[:, 0], \n", + " 'Предсказание valid': y_valid_preds})\n", + "\n", + "check_train = pd.DataFrame({\n", + " 'Тестовые данные train': y_train.values[:, 0], \n", + " 'Предсказание train': y_train_preds})" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "id": "aca3138f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.7032729770876911" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "r2_score(check_valid['Тестовые данные valid'], check_valid['Предсказание valid'])" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "id": "f23ebaf1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.8985500168372904" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "r2_score(check_train['Тестовые данные train'], check_train['Предсказание train'])" + ] + }, + { + "cell_type": "markdown", + "id": "0ae392d3", + "metadata": {}, + "source": [ + "# Работа с тестовыми данными" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "id": "212b516a", + "metadata": {}, + "outputs": [], + "source": [ + "test_df.drop (columns='Healthcare_1', axis= 1 , inplace= True )\n", + "test_df.loc[test_df['LifeSquare'].isnull(), 'LifeSquare'] = test_df['LifeSquare'].median()\n", + "test_df.loc[test_df['LifeSquare'] > 300, 'LifeSquare'] = test_df['LifeSquare'].median() \n", + "test_df.loc[~test_df['Rooms'].isin(range(1,6)), 'Rooms'] = test_df['Rooms'].median()\n", + "test_df.loc[test_df['Square'] > 500, 'Square'] = test_df['Square'].median()\n", + "test_df.loc[test_df['KitchenSquare'] > 60, 'KitchenSquare'] = test_df['KitchenSquare'].median()\n", + "test_df.loc[test_df['HouseFloor'] == 0, 'HouseFloor'] = test_df['HouseFloor'].median()\n", + "test_df.loc[test_df['HouseYear'] >2023, 'HouseYear'] = test_df['HouseYear'].median()\n", + "for obj in object_titel:\n", + " test_df[obj] = test_df[obj].replace({'A':0, 'B':1})\n", + "test_df.loc[test_df['HouseFloor'] < test_df['Floor'], 'Floor'] = \\\n", + "test_df.loc[test_df['HouseFloor'] < test_df['Floor'], 'HouseFloor']\n", + "test_df.loc[test_df['Square'] < (test_df['KitchenSquare'] + test_df['LifeSquare']), 'Square'] = \\\n", + "test_df.loc[test_df['Square'] < (test_df['KitchenSquare'] + test_df['LifeSquare']), 'KitchenSquare'] + \\\n", + "test_df.loc[test_df['Square'] < (test_df['KitchenSquare'] + test_df['LifeSquare']), 'LifeSquare']" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "id": "ba5724aa", + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
RoomsSquareLifeSquareKitchenSquareFloorHouseFloorHouseYearEcology_1Ecology_2Ecology_3Social_1Social_2Social_3Helthcare_2Shops_1Shops_2
IdDistrictId
725582.049.88264333.4327826.0614.019720.310199111127481001
15856742.069.26318332.9250871.011.019770.07577911614373021
54801901.027.94824615.94824612.025.019090.0000001130753887551
15664472.073.04660951.9408429.02222.020070.101872112345833331
14275271.047.52711143.3875691.01717.020170.0721581126291000
......................................................
8180113.067.13391150.8097976.059.019730.000170113659920111
469511.040.19847221.80706110.01217.020170.0071221112640011
5783123.077.84217848.2826259.02222.019890.09079911741908325151
4780622.081.30522232.9250870.0412.019770.0721581126291000
12504302.060.55569332.9250871.01017.019770.000078112263981413231
\n", + "

5000 rows × 16 columns

\n", + "
" + ], + "text/plain": [ + " Rooms Square LifeSquare KitchenSquare Floor \\\n", + "Id DistrictId \n", + "725 58 2.0 49.882643 33.432782 6.0 6 \n", + "15856 74 2.0 69.263183 32.925087 1.0 1 \n", + "5480 190 1.0 27.948246 15.948246 12.0 2 \n", + "15664 47 2.0 73.046609 51.940842 9.0 22 \n", + "14275 27 1.0 47.527111 43.387569 1.0 17 \n", + "... ... ... ... ... ... \n", + "8180 11 3.0 67.133911 50.809797 6.0 5 \n", + "4695 1 1.0 40.198472 21.807061 10.0 12 \n", + "5783 12 3.0 77.842178 48.282625 9.0 22 \n", + "4780 62 2.0 81.305222 32.925087 0.0 4 \n", + "12504 30 2.0 60.555693 32.925087 1.0 10 \n", + "\n", + " HouseFloor HouseYear Ecology_1 Ecology_2 Ecology_3 \\\n", + "Id DistrictId \n", + "725 58 14.0 1972 0.310199 1 1 \n", + "15856 74 1.0 1977 0.075779 1 1 \n", + "5480 190 5.0 1909 0.000000 1 1 \n", + "15664 47 22.0 2007 0.101872 1 1 \n", + "14275 27 17.0 2017 0.072158 1 1 \n", + "... ... ... ... ... ... \n", + "8180 11 9.0 1973 0.000170 1 1 \n", + "4695 1 17.0 2017 0.007122 1 1 \n", + "5783 12 22.0 1989 0.090799 1 1 \n", + "4780 62 12.0 1977 0.072158 1 1 \n", + "12504 30 17.0 1977 0.000078 1 1 \n", + "\n", + " Social_1 Social_2 Social_3 Helthcare_2 Shops_1 Shops_2 \n", + "Id DistrictId \n", + "725 58 11 2748 1 0 0 1 \n", + "15856 74 6 1437 3 0 2 1 \n", + "5480 190 30 7538 87 5 5 1 \n", + "15664 47 23 4583 3 3 3 1 \n", + "14275 27 2 629 1 0 0 0 \n", + "... ... ... ... ... ... ... \n", + "8180 11 36 5992 0 1 1 1 \n", + "4695 1 1 264 0 0 1 1 \n", + "5783 12 74 19083 2 5 15 1 \n", + "4780 62 2 629 1 0 0 0 \n", + "12504 30 22 6398 141 3 23 1 \n", + "\n", + "[5000 rows x 16 columns]" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test_df" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "id": "3d36776b", + "metadata": {}, + "outputs": [], + "source": [ + "X_test = test_df\n", + "X_test_scaled = pd.DataFrame(scaler.transform(X_test), columns=X_test.columns)" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "id": "aeff24bd", + "metadata": {}, + "outputs": [], + "source": [ + "y_test_preds = pd.DataFrame({\n", + " 'Price': model.predict(X_test_scaled)})\n" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "id": "18e11f42", + "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", + "
Price
0161932.138440
1200353.954987
2234677.142834
3313861.119272
4132044.356213
......
4995246670.219320
4996124478.913625
4997322968.655279
4998218297.686478
4999262240.260899
\n", + "

5000 rows × 1 columns

\n", + "
" + ], + "text/plain": [ + " Price\n", + "0 161932.138440\n", + "1 200353.954987\n", + "2 234677.142834\n", + "3 313861.119272\n", + "4 132044.356213\n", + "... ...\n", + "4995 246670.219320\n", + "4996 124478.913625\n", + "4997 322968.655279\n", + "4998 218297.686478\n", + "4999 262240.260899\n", + "\n", + "[5000 rows x 1 columns]" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_test_preds" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "c523dcdd", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2023-02-28T19:50:08.700927\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.0, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize = (10, 8))\n", + "\n", + "sns.kdeplot(train_df['Price'], fill=True)\n", + "sns.kdeplot(y_test_preds['Price'], fill=True)\n", + "plt.xlabel('price')\n", + "\n", + "plt.suptitle('Распределение цены')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "id": "b7790d5c", + "metadata": {}, + "outputs": [], + "source": [ + "y_test_preds.to_csv (r'!price_predict.csv', index= False )" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/!price_predict.csv b/!price_predict.csv new file mode 100644 index 0000000..0ea94ff --- /dev/null +++ b/!price_predict.csv @@ -0,0 +1,5001 @@ +Price +161932.13843985458 +200353.95498658431 +234677.1428339539 +313861.11927230086 +132044.35621325116 +175941.2685891259 +177619.65389090558 +212430.59555349214 +296077.0892610105 +206154.99059919402 +270218.0850023872 +228113.57475133459 +154119.21612655328 +183098.18636606593 +106462.5044520809 +176541.65058798614 +379076.6168404083 +171013.40831354278 +228991.23772685183 +237917.26605923113 +177042.35698512584 +149783.74660771244 +230396.55699192782 +155418.49390522297 +164595.5943375933 +184077.93979739118 +275414.70982409886 +110121.28383349827 +191876.61195661192 +269147.99553899036 +182019.5825766808 +264361.4982474169 +184793.11369352674 +166303.51948071722 +178430.2148157798 +233848.1611418961 +218436.38573147517 +192408.57117449393 +184745.8414553816 +119135.49928657303 +189211.57952796543 +178050.6078849245 +201580.67835046738 +145610.13921104703 +180911.84694342336 +205196.26765568097 +199391.23895315957 +259519.83380889668 +251577.6415358834 +169892.722310284 +126995.57898618499 +384305.37037254364 +242396.17185320318 +183386.8879476936 +188123.24652130672 +136591.0548688166 +174601.5190650877 +369331.3145422908 +123629.56387323438 +113727.45288040704 +262495.2749334639 +333073.97960005456 +262589.93226922234 +345824.0729821921 +241807.0383442819 +195677.43094169628 +381109.40451527707 +299011.6816103636 +189429.15621572378 +234461.3177799155 +251971.96358140797 +385467.06401759165 +372200.48683451867 +204530.42374788638 +148818.26125527444 +178410.6093851074 +250324.4416926296 +284390.8392012164 +487917.995180977 +177125.79087793146 +205065.70678524717 +257843.88573070674 +174926.21367123534 +309972.0551876646 +285289.9676766001 +331939.3772662329 +244961.64766519042 +198799.81600703706 +178380.10294956938 +187340.04791295694 +192859.76103204332 +166303.36843500484 +224244.9169342798 +154858.8372416212 +215480.93821255298 +175764.33902974415 +254306.49101764715 +228791.0778466009 +129897.41837600552 +142869.7854726765 +174784.76783925126 +187308.711522883 +183340.44901096562 +189135.3581703298 +155049.39186822527 +176860.55678876865 +179459.65126601237 +188930.65355953257 +172834.24904490352 +124729.03440334948 +251569.18825546873 +127570.68279491593 +252090.28835019353 +142330.28426704876 +293559.34791565133 +222725.86418063586 +170308.02052086397 +90810.72434398225 +165912.0329792488 +244287.07967998862 +107268.17118302175 +126890.48860614227 +274171.09227628366 +105020.37800074105 +158183.61952787574 +227064.20286324678 +544056.2954931818 +172915.2965048849 +126855.14125630804 +175988.0971269846 +130771.12496301762 +169195.87711145892 +166454.86736569979 +175344.5572392339 +131073.77937687453 +265414.9698130745 +211350.58216916682 +213248.92174920408 +200110.90783444207 +348168.3115858119 +157502.1098002078 +265832.77053768304 +268842.95136892836 +174699.15721294354 +199545.03736588065 +461667.03328188 +162209.8463971532 +180671.85605076814 +179076.12906967627 +434738.5170507336 +193268.93426078674 +244172.64714490125 +156978.95976960086 +447253.28235437575 +173242.97768920998 +221358.95199171046 +179966.67215760544 +140723.78477570077 +163019.87955430127 +176724.08306776654 +101459.31465349403 +424063.7944627796 +367076.76043361815 +192089.38815574942 +99146.30317630539 +154905.61450201523 +189727.8155623348 +86749.92560543393 +180330.10205815133 +199011.061213473 +234899.5350881842 +122937.39467363631 +194424.32907584155 +195677.82999672534 +65796.64012392181 +242680.10126748378 +175139.37651081797 +241328.4599938918 +295490.9533304997 +280267.72289267054 +241628.0075386149 +174672.8472112564 +263156.3897347058 +319288.5697473729 +383895.73666395596 +163567.19634499206 +273602.0055738335 +150876.98843530996 +404103.84097113024 +179569.18073262376 +178814.49999788144 +168130.7315152286 +112042.83984392587 +174885.1792314497 +216181.2744392942 +402385.7761795567 +232333.97132012655 +201810.73890541994 +259652.377738483 +243636.692974568 +238196.6844211576 +299878.85816325876 +213037.93024128926 +379571.81117715104 +170731.93220343682 +256456.97947481123 +244907.16570278144 +181669.9736169708 +146211.56810552004 +221177.53540005724 +193085.35810401317 +138292.02456395957 +177869.38488390492 +179713.43417437217 +129297.84744504066 +296072.0426110308 +173216.08875320968 +179508.68176832332 +224648.70592338167 +180521.22608443946 +178913.04307119088 +186002.30743969005 +200034.76029437242 +189804.39266592593 +224796.4810322381 +451821.13029750943 +394927.2132558642 +189079.5228319103 +202291.48471169206 +278467.7494446594 +238578.50206255843 +160587.15399242178 +121276.28689842821 +215017.69758626717 +197582.46784298835 +221470.77803049996 +295281.28266162536 +243949.5802078967 +171235.6195949961 +261942.25766964295 +165228.88653462866 +121470.13592655922 +174754.89920090386 +202786.07933252267 +273897.4240631818 +184188.89857551892 +306903.81834100117 +419653.6994543211 +323384.47290726454 +212863.6359911249 +265753.5106159763 +273988.6280590443 +191079.73564000556 +284741.2319408315 +198530.5981557977 +409673.9981745778 +400661.5644806757 +254583.840143471 +154853.12544031022 +229734.2506123505 +391288.85851523746 +186731.49984337835 +201083.52795248342 +199212.06049466532 +262095.20519930965 +172730.46618906414 +178312.07125193908 +331810.6136635103 +189658.0045496186 +288977.57843059325 +405099.53094414587 +404089.1481989824 +197729.13423671311 +187554.14409933952 +223634.2864551509 +447244.77002487855 +201708.19667468368 +219003.32841609177 +473793.8007595184 +187978.35025352097 +237407.19372899688 +320083.30930170417 +132471.79500213108 +211446.67895042078 +127054.81701773906 +193299.15740004907 +218333.91741007063 +249402.96298653778 +185422.4525008475 +256002.05659809217 +201576.5067193776 +159867.3503272236 +149320.2656571095 +140857.2652496584 +257006.7650470637 +185315.96389892808 +189653.51225897582 +67640.00282690214 +239721.75324199197 +170524.8414361239 +199079.90873412674 +147825.18622245087 +206276.63499195428 +179529.14962636546 +314418.39626710064 +228500.70955633564 +214513.19179943932 +229848.48773689877 +231986.41654862204 +122546.92193689203 +178863.00419800816 +219822.09190141846 +173602.42226325447 +217733.02466391737 +182503.50013895964 +184743.94604732454 +181195.42447300526 +475077.9248544271 +182446.54004792043 +86344.82332164269 +126847.27161818171 +287981.6320662595 +212488.9223802515 +175063.40160202968 +185109.20278204326 +133706.79241410294 +203723.27564159385 +157570.3184841645 +137498.73216231572 +241538.86274563085 +153480.86294772784 +275973.62453275616 +224552.20252105224 +179246.05929100513 +181136.35932404464 +218638.66355428487 +203904.87378738294 +84954.82721853207 +187496.37641501977 +200227.360041426 +151549.61906911185 +216806.34191290734 +389666.6536256551 +212734.30440650688 +175520.7504493741 +325894.4893876567 +154651.36968021316 +147211.9222311231 +212662.92663513756 +134449.0839360874 +164715.34467055099 +178693.3644278335 +137089.33871637934 +184242.60974632934 +222699.99872519114 +196665.35968851426 +181088.4256566278 +166969.24843063863 +218270.3867906355 +202765.95902582383 +153694.2768725655 +347454.08558184543 +178091.0129589631 +261028.47825953286 +173632.3494726706 +132664.35160917934 +74403.14512943514 +188663.5526491199 +266083.77329084394 +196217.46294582327 +159166.609824734 +150603.27681480872 +169082.2144481007 +163564.1213605476 +395560.96278079826 +234713.43695406054 +237706.4738806432 +212006.88225237082 +152756.5591806355 +190221.0596141449 +131503.9641794093 +179539.86313776224 +220464.77482297295 +176682.87321905102 +147319.1056005344 +400928.74987288646 +154155.15510618134 +247242.96235173446 +169621.66530857567 +232310.84416407184 +284585.54847595876 +172542.4613701902 +161485.03130888744 +135592.21001235506 +260872.25398345056 +304914.4385683101 +198995.6301826393 +160625.23799806868 +153143.4697108974 +321530.55534943944 +380602.0998061983 +341818.12822852004 +238978.57801823862 +237464.38608052826 +169134.3238819575 +180434.99025172344 +190002.14103243116 +170498.00719337887 +146067.01545053395 +396316.60040724 +181554.5819587722 +129217.09216124528 +211574.38076481444 +184017.7237750813 +227742.40391881097 +200049.946029783 +179103.86012239504 +143881.52282855063 +295530.01498355676 +286366.13877079636 +253632.16005540235 +218270.62320903034 +123254.47519801301 +353730.1699158085 +190952.92490103564 +169252.41256665616 +145562.50005902126 +174620.15764573234 +223149.65557695748 +338547.0057655211 +158644.05694915328 +211017.2677238034 +271994.39689014386 +158815.2165436466 +179614.60695379073 +132048.04803307314 +249742.8757423443 +189015.71598313304 +198386.4255666622 +219444.57376891474 +234551.58862077867 +165630.2647431263 +278428.93145018903 +100721.68673934996 +295098.3687403971 +317186.18409561954 +187268.35700794135 +124031.4211249376 +269421.35786269396 +205090.4210706494 +195557.4798333393 +163895.56805327948 +327237.13802187354 +178777.57077853705 +164121.69953074018 +176255.55066180634 +218091.34139109892 +190332.422363279 +261848.68427648672 +214678.87794518028 +281824.4284497958 +277135.54941022384 +145201.81169831633 +164044.50078131983 +231266.46471407588 +142840.6462338514 +389932.184652191 +274841.94679375953 +148437.15098541704 +243756.06672823138 +183406.15141318255 +298473.4874447095 +181122.37803900233 +175472.35743941064 +437315.8041905266 +200612.2385425309 +243252.0059144595 +213345.352227957 +212423.0363455815 +264264.8490429036 +207549.2743878215 +227352.25330700423 +156167.55590975768 +139357.0903538975 +99653.29373243696 +256327.06440465897 +180416.11872424098 +212905.56895308662 +196937.44261591596 +279107.3563768698 +132951.70016893788 +173336.34321025354 +259003.30352453038 +190506.97351146545 +201056.98026859175 +317577.0579313303 +365649.8975750776 +74165.18756478274 +225378.0773745679 +425419.3201251431 +234186.5715340764 +214369.7998142836 +289294.6853948189 +253917.89000124045 +202720.56431513416 +304965.9079806556 +204770.96333145638 +241331.54427889583 +186376.01087304784 +264088.8933084098 +243033.46576703683 +188182.07548150083 +116453.90589694638 +211333.88974301246 +466944.4931128143 +246311.38561912454 +261930.02473502926 +304855.09976290364 +170141.15741051015 +171758.54680173172 +179461.56532155033 +98663.96357088667 +348736.17751384486 +415183.34454374434 +315639.83757344185 +194815.65048661627 +206376.69568274144 +228415.19799746785 +411127.46326459653 +157740.17855139065 +158441.80057544852 +167063.6513063385 +150527.7585292089 +142555.79861969466 +277780.64650106773 +202534.65928895073 +153139.1362288873 +250167.57251615723 +172176.53106130174 +130432.85230865687 +187313.04333015584 +175785.03191832997 +474546.59226190794 +101005.99844377181 +190645.1383795209 +121735.18002172596 +173529.9212480755 +146790.08713952568 +423498.4078013321 +167747.33269986848 +304530.00090430287 +210524.93319068916 +147631.97360529494 +362622.98121632193 +180946.22296369815 +234380.2764999031 +185487.19111663167 +131091.62609396302 +171262.278471305 +214826.73731555344 +197425.28089630243 +184328.52998289833 +135254.90019993932 +517171.20368548046 +212632.75421102915 +144086.5736116208 +191215.16965138336 +181079.079701792 +145397.26700165565 +492426.17011665204 +91308.70409248563 +358556.0499720733 +153523.40323183764 +354435.86303336354 +154306.14281385374 +343365.9055849898 +174747.99589599625 +228501.7051019446 +264918.2361939227 +118950.89565133033 +184774.7504600217 +164436.08567007625 +324147.01361952454 +146278.81698414576 +381045.26464293577 +233304.20262791833 +300088.6157632992 +180982.09422797017 +232211.80818164864 +199860.0584565313 +168414.88318451052 +230057.83914150225 +181076.23383606455 +202178.23271162555 +209949.3338073423 +197737.28816312377 +193828.96369103037 +243518.01565799562 +179951.27198764138 +183648.0026044508 +259961.92059744202 +300957.65896339325 +172097.08107686148 +123851.07955298579 +198018.2950456392 +120287.53410914043 +193352.39409227006 +237717.8581421242 +363742.84324807266 +155162.50068996687 +221580.53666783727 +187444.58756512078 +201787.1559576207 +167570.9551900851 +196479.3973472977 +179533.57974009466 +159777.77233609502 +225547.85568152674 +214280.5707693581 +329584.5373770138 +220068.67443070267 +222550.99065323896 +262026.41634830667 +477133.60407571436 +157660.9360509834 +184807.27695920452 +154951.0217653855 +131882.6104550564 +143126.11943267513 +253042.98369575667 +167507.87754766422 +198710.73396162307 +92256.74638357104 +178218.39506458535 +176913.0359550618 +228129.05437210642 +153261.52206835593 +381762.5286619973 +123092.16410764398 +215803.34055187946 +154766.66566980793 +131489.18114231882 +157417.19818429687 +230205.19789850002 +133343.2903074691 +160488.56638021767 +157054.6693974026 +370938.05162869324 +140394.75069999875 +183759.86338597472 +132878.38714950698 +169961.3162360179 +143832.5775360621 +234278.46618579526 +246873.13067378278 +173244.6987646645 +174871.1407318021 +100411.63741509448 +231036.50509626762 +129968.6204055118 +149272.9026583808 +272542.94389578234 +229605.36523640883 +103301.32038893945 +321380.23789139144 +146799.53760494327 +189285.37630041418 +295021.5138668741 +133453.3135200729 +178704.1391323754 +180127.03802135974 +259918.4533171644 +206346.92130157986 +225393.47980107364 +171677.83717777728 +110394.64882060568 +416278.87858926714 +178356.11689889667 +145140.18479292968 +265381.2939178033 +361290.8409113221 +189142.59697043124 +204850.0736877599 +146558.29662165648 +171793.94845751402 +214441.55149691764 +188547.72321173936 +180401.75748135592 +177420.3829696015 +205275.99552415631 +447963.82558776817 +246434.6430968885 +151888.56504285106 +201023.31807853314 +132192.91797896905 +208883.3033416188 +193476.75533553245 +158576.46440554428 +128441.29556133933 +120500.6377717639 +240974.4062026675 +151816.52351555106 +294832.06678319507 +223540.8108531911 +187028.87574775025 +176844.5914110995 +201894.48870288132 +267583.66633096454 +151036.30676807757 +352710.9650831986 +304869.34862065583 +183219.1085090604 +334081.6734284861 +117569.78481111025 +220099.99069135383 +65767.74610839687 +175052.66497696843 +215775.97686821525 +327751.8838964215 +323049.43279084505 +500519.68354424724 +154938.88561221192 +160657.70636273932 +119661.08706713206 +197537.8476583951 +483186.66906123195 +179151.55267456887 +153877.99085532496 +422820.85462784074 +179589.38480084357 +103110.56535738507 +242122.82633944156 +189681.98518777115 +211844.55664501688 +202023.9301303771 +211240.61281343087 +122969.50903167302 +170411.40036771298 +180539.7473658884 +166751.39169205964 +370598.6495984454 +197858.47939501776 +239683.12973210955 +190470.2282915452 +222643.24086169107 +380919.7970000182 +314988.6202387072 +203087.17086251703 +227435.14053751968 +202919.60298316594 +438398.9434375153 +154200.8298948424 +343281.36438403645 +118149.94837242576 +294844.8258401977 +133705.5469336533 +166785.8970776768 +194480.08438196636 +313965.04925196985 +165464.88173018862 +142004.36625046056 +380343.40986882756 +293107.17035626416 +244598.6147727653 +355464.8000456879 +197656.3192427629 +198569.9227833843 +127440.06578460043 +357213.6753980473 +195403.90952833436 +346843.7758647289 +321681.9325224671 +285664.40114286117 +179130.84013489235 +268121.85410910373 +217023.24842112683 +147639.640752933 +249885.26112163957 +288739.3101123652 +178320.82991350157 +174318.75419219077 +127222.46842374706 +226850.3422556779 +208200.62876507125 +156756.0638130754 +155675.4521638092 +200827.023656487 +240341.5975761427 +190633.26166858885 +219204.79169158128 +197992.14449511626 +328002.4883315021 +162129.55191702975 +180764.8193598822 +224806.16053928775 +88921.17112295529 +190863.37668590812 +196065.67555801498 +230547.99570930385 +281900.48824438645 +174195.06081365893 +228629.75116907895 +175283.1445243951 +206862.62850495017 +186305.37109172298 +224874.36291845268 +274198.22013759904 +194592.4092675016 +129962.16793409525 +214268.08169161226 +228533.0658527601 +198581.69998762658 +180072.26658870355 +229043.1784406807 +188781.30559289438 +181529.836943017 +167631.62864869717 +207369.190652427 +116636.13115405518 +168924.7810055939 +168730.57207839028 +177423.03738778448 +81140.05784518787 +162665.61301442786 +189408.51367562189 +129616.90816249806 +196877.15276286443 +198204.1593434876 +128554.02969572204 +156810.51547783043 +421397.38263134897 +188803.39554182935 +165276.7949463211 +172991.97739482526 +138365.09794526958 +408390.2324915224 +461435.42926433944 +116877.59998061202 +200497.59736227614 +333919.999710829 +165480.2919519919 +207929.96649426586 +251959.31326983665 +182843.52788087365 +143301.8702933991 +186669.240421113 +188860.29165945464 +204038.3041327448 +121618.04673767496 +168070.58236565796 +176715.30438709128 +258333.3518887889 +228223.43762850994 +144219.3434919652 +198720.19352898592 +394956.28960895224 +106129.84816588768 +260501.86708790957 +214832.60594121102 +173881.2894596666 +179063.96054898947 +380710.5519362361 +261014.9559892772 +210033.35349854903 +91556.31897764752 +306042.84331444313 +181448.50162288378 +154693.43973742242 +215351.46939943815 +172245.4526129654 +177442.96352754327 +168316.78523841425 +173773.96221001193 +328753.85985460866 +178161.41751310957 +135338.5359048219 +259748.41808279624 +276374.2946767146 +301774.17573121755 +335530.48444945266 +265489.29562550946 +210426.83408818394 +207893.84078911872 +200123.24981599158 +390552.2771323913 +142946.06685728542 +259829.3685453382 +227478.25523045144 +264794.29547697795 +179931.36456886918 +253021.40501847083 +210597.76870018197 +242465.77663898317 +330648.6134435722 +179149.78481528527 +180141.7450152217 +153529.56956117784 +205582.14421432224 +437695.1912131186 +397244.2288645283 +189316.11573258514 +242650.9495736908 +139615.69580209456 +186865.9469140552 +304331.40494905197 +156407.7958861709 +174703.42465863022 +188588.8422054357 +146615.50091183005 +167366.6464516793 +188010.32155172166 +261115.7765134639 +174550.61331563318 +251482.86916636268 +316409.1960373911 +221922.84209228208 +370094.9696970094 +170705.26773492328 +117462.9669711471 +157386.73418356062 +222867.32082667173 +90978.91132732801 +324573.0247153831 +221638.18098879163 +313544.48041672516 +203520.55694114536 +332465.3571797959 +404990.6425685537 +178275.11412064178 +192844.0638936967 +226005.76991252342 +81639.89658925855 +180384.74015026924 +128606.25116387937 +192912.6657910385 +186265.33050751314 +191474.2382681953 +222677.8874926326 +174488.06262351526 +114378.8217701255 +319478.7706408286 +220996.526382291 +175228.57881927615 +187349.13649291376 +329619.44267354195 +237527.35857189388 +462195.28106133454 +176708.78890832927 +205955.77561620844 +124596.17750665646 +263233.85382192687 +192305.39940526144 +358458.3167068627 +332833.9745065398 +212492.51576773552 +228662.38397693489 +163343.83820771312 +196550.38568726956 +194996.0699494512 +285961.9163825545 +154594.2852621947 +343489.3355403862 +106545.744033644 +230764.2177363482 +189131.3084140514 +153538.1216188206 +240924.604276886 +307953.3966472535 +409971.05336323334 +211848.15780689416 +178668.93321282268 +488071.1808841289 +346687.7622748963 +94418.62582540627 +127931.24278187493 +276024.1848722975 +126946.0142862244 +130146.47612996504 +183200.09526438208 +146673.62568969675 +130618.6857684528 +273948.0283711998 +256356.69400845535 +222069.65351597415 +167843.47714096442 +161944.56262249968 +219355.34166096317 +195505.18988682027 +153838.76254120044 +461302.83244536316 +202487.45646546202 +168447.17991502475 +178288.33086613182 +149604.3368171928 +155956.11740669137 +200265.77478948038 +213237.53519638954 +263021.7244401149 +256686.94598199654 +195469.44329843696 +229520.36892800897 +358543.82493852463 +172604.25666569843 +177272.71664443382 +147531.1367971774 +183482.99543114981 +174030.7309914857 +145450.00571598703 +336918.71071908413 +176368.7491227803 +302084.4231533337 +137527.63591710728 +158102.36707075842 +155324.37511652344 +153900.04158664815 +197009.16435629298 +135558.5431113533 +411284.7213995035 +144238.36915801564 +238103.0396679928 +174728.5158345318 +513613.309871187 +151331.1542634822 +99883.89225316688 +182569.1898082316 +242915.33373934205 +175705.61101178423 +384212.23492624564 +242206.0669242055 +300743.53926824045 +423497.65238626214 +231138.31644311396 +224760.58962327012 +179597.42682157256 +175095.61696054085 +205079.27154336963 +262015.57614132168 +339735.3034105704 +129458.6078658592 +373436.2823212175 +497944.6458415067 +173248.75342002857 +111275.357037187 +306787.74817567266 +175370.42887354273 +186594.5120968107 +188721.1691705173 +166149.48820533193 +196809.36253060855 +176453.80958759296 +227339.9209290891 +233044.82114012487 +156517.67172706462 +227742.3659862451 +276858.52266773395 +212810.26890031304 +206558.7359412631 +239815.67240273755 +170846.27441224796 +188446.5649322296 +178298.58263248377 +257661.80997686155 +162319.78483154427 +415193.62059536175 +204351.39008694244 +156178.2080426634 +157493.26214694596 +150861.83489253 +223775.11630000247 +200271.2266705568 +220358.95520745483 +199178.37632748188 +144781.23797545314 +124031.4211249376 +180169.5855155753 +282193.72109060746 +307439.87857751414 +252411.4048117717 +71303.36994476266 +204711.69653744163 +191529.48769034544 +162736.60851985923 +331527.8555861286 +172048.94761497073 +114402.91117625091 +221122.7609208533 +164994.5734917084 +399739.8064818462 +257621.3155732908 +258364.4640735854 +239383.92527280323 +172849.54287778246 +189308.0870472462 +194443.40577611557 +209664.28871493117 +168672.18393718914 +109822.69550453877 +149051.72090725947 +236178.12575974755 +177731.23966473836 +193549.8583784745 +253420.16501441118 +326806.988192991 +217081.07442115268 +370016.7664250526 +110084.28453793464 +209835.5664834948 +179586.06440658233 +216622.52762715434 +183421.46184528415 +187382.0106358233 +210859.32304557113 +177786.4011070365 +179522.39365610437 +176654.84180330497 +294766.05614083126 +192292.10360472984 +200426.77529426492 +204059.83993563527 +141746.23407028452 +206697.2080321265 +266924.75985362596 +299513.2164698088 +264676.1648507396 +233561.79713631357 +165215.71612549096 +179249.84247615494 +182444.57520212352 +500993.7969569166 +106077.3057272675 +277136.9384700659 +246902.145442748 +417860.2075821557 +183490.52379636467 +272910.7387834956 +322329.76750694215 +183337.18020169815 +241084.26299995318 +194108.05532169645 +180122.05937962077 +507179.6143462527 +64670.66879527495 +146302.08223185322 +253416.3885537944 +227315.98959151265 +209544.68513552187 +210956.29206607045 +237832.8842865225 +181875.07849869333 +140365.36388862107 +201580.44304482575 +169058.87605128865 +236351.9352762222 +252103.628756721 +367208.119045245 +224491.3789982726 +407719.68718505657 +191602.63930539877 +175645.24045246086 +127574.01292474629 +261730.06525444146 +253936.5908758717 +172868.13241313686 +259783.24266132835 +100415.90570917094 +114716.86750616485 +286705.6090172401 +152585.49319125587 +297253.7529233363 +126562.74948428382 +196528.7030104978 +319286.7741226255 +167458.9191233988 +248781.79518211004 +204131.48362887258 +197386.84353497386 +210559.94608091534 +255356.9143731909 +317932.1500305755 +440150.25592643494 +155558.84134181056 +197099.11334452327 +173973.09016880605 +231143.23455876985 +111196.57957284198 +191504.93950615948 +194748.9576445454 +241345.40497728178 +132549.27271200862 +202789.979814441 +178600.8632899173 +178418.17169854406 +157317.00392348936 +234987.42283947728 +139769.21371664008 +132936.5912088935 +141686.03466312203 +520650.0314730067 +212643.6699884582 +122155.43349509616 +244814.0961946146 +124974.53136187162 +419302.0907725263 +151900.80453423984 +155522.83772097362 +83778.7035519073 +256173.58826691445 +135499.91760769096 +203630.98224284887 +322586.4241453505 +446640.05426469236 +166736.1515388498 +176477.04274145397 +231778.06904643818 +146472.3408683322 +124265.22473326793 +153263.87567598588 +198023.06231686228 +264316.7404452 +233106.79836721977 +216698.21830317474 +174782.1936998455 +269796.1728877571 +181160.99701352496 +130938.48935969376 +211280.0060068793 +172766.72000732488 +175829.95572688218 +439750.66865131736 +162520.31269013762 +190613.076954893 +131593.68945943643 +178397.28233551024 +275226.612943958 +175869.76509010766 +193059.40682188995 +243514.21301594947 +132535.41067021427 +132000.46510298218 +397892.12805065216 +192667.04895265427 +284292.8427611736 +156337.70908966963 +117218.21670140016 +181983.38865737844 +127257.4334238866 +187400.31876383393 +317934.8614043004 +232401.12199876766 +117064.1708902374 +179955.33474485652 +136212.94762851964 +177873.19680308749 +132522.30541717238 +193147.6673978852 +267573.19501989917 +303474.3503365777 +130531.66094534144 +232924.79989063196 +198965.4813822013 +184889.5632683974 +309269.34380490286 +168977.0445383645 +315583.18644235516 +419958.41750216176 +140581.14854489735 +497085.6724885199 +313422.79172344296 +203367.5507621738 +262856.0577383203 +170769.92885819 +368947.57700842916 +198733.13891076276 +165351.2384266499 +385261.057293742 +91677.42977535739 +143592.03318225977 +169171.65868575874 +185953.73522501113 +160398.75830515588 +432440.5552259123 +155891.81371280988 +182059.2374064167 +171612.23502170187 +290200.0330440106 +237188.3397866185 +236905.3979705782 +187501.75730770695 +171666.52321714396 +204828.28946451933 +488460.7347539689 +178622.9672846855 +180170.54193599464 +196079.73596928624 +154492.18016726314 +230984.828929157 +233169.3262122146 +284845.26319376304 +169055.2447734456 +204437.48816305058 +117795.15807923561 +236506.96045403206 +126913.42318297837 +284527.57757734274 +249893.12396523607 +258292.53841256714 +251907.9876424014 +320290.06691344175 +175791.6623439032 +301244.4414561042 +193432.3056087071 +164425.7202730809 +131460.54734337787 +242951.77815909393 +331179.8588357893 +381541.7768610974 +181080.82127897514 +201746.68897693744 +211178.55644870808 +144993.84228894836 +232415.74411898275 +191447.82339714083 +236001.00262697073 +164458.64543599752 +175145.1140697777 +132474.98421513525 +270447.7710900672 +287479.9807575277 +178861.19759370992 +199617.40509966516 +187188.31094889823 +371049.8615082459 +169119.91542211198 +144554.83945223957 +205609.74775422184 +301317.9050196375 +186955.56727768775 +130113.7232569859 +192155.69343056565 +117100.3133112393 +129665.18069207903 +246100.1276603321 +158261.3833266883 +202241.39393334644 +176410.6981047596 +190331.0838160534 +111820.45943631663 +206897.50092917078 +131409.530343423 +263776.6214452475 +348832.78302560735 +230987.08954709236 +273512.74259802036 +220318.76293079962 +182846.25691449677 +212805.14282056433 +182242.5696804047 +168851.0217988929 +133313.33312944497 +154697.0924756041 +203373.10659885636 +183099.83830771863 +406530.19267204223 +271223.77806323173 +166887.88927027403 +128155.99887839626 +330643.265158014 +146058.26842969938 +117317.53810858916 +194947.83932480632 +175571.47446185598 +193710.15731516722 +265857.2071993133 +228013.64223772165 +162008.63774456247 +187437.2522561923 +304750.9500078618 +242101.21080967065 +274310.72086174967 +200787.37580314412 +202621.7881533731 +140997.33925892581 +285218.2395329188 +252213.41242136588 +253789.68811956138 +445859.7592585173 +163087.66274582897 +263940.637521526 +263049.71842859057 +239825.3646896271 +224903.18060992492 +140160.2597980643 +245283.14559514794 +402469.2079897052 +267444.15751151345 +325348.8615695392 +151000.24892656863 +235212.37377392288 +256050.45585751178 +245530.66140866495 +312791.89177221264 +145565.95343871549 +262311.363700989 +197713.61255399644 +176356.13832961643 +242883.74487195106 +152411.90604003266 +153673.98393846359 +167107.2318570227 +156282.33247632487 +134929.55585861925 +190557.89998945122 +192193.24665211077 +173323.97755860994 +407177.2381527251 +156711.03528535212 +189002.35002733395 +253564.98732574115 +200628.8523407239 +418949.06719174696 +143536.53587645348 +160608.47954810885 +235627.0654294815 +177807.33348863554 +182941.84186843294 +131014.6503171281 +277791.81747508707 +256332.59683008993 +315529.9628721943 +170935.90559993038 +248310.90488533993 +192049.8024231684 +264178.1349540732 +187474.02746042903 +198293.90341931477 +169214.76741257223 +99965.9678403899 +74159.50908394257 +359820.91792824137 +177718.1288702388 +226752.9425330859 +130903.82299331356 +292194.52252206375 +145795.438981964 +338250.3072193026 +200728.64220890426 +425743.72011238243 +171676.96939397973 +111448.26023212235 +215217.51530460094 +162044.8947917789 +312062.40443194145 +215048.49569774047 +197960.957960801 +175979.27777349917 +200277.24369880647 +339773.08176804555 +147480.25409838455 +281571.0706657967 +192828.37087979694 +193323.4584234291 +140309.6267475564 +208594.24309288373 +230182.39586857855 +197969.4121009786 +150479.07061941444 +142890.728665505 +344314.70480960474 +227760.23774848878 +107650.32689237368 +436144.01784893376 +156314.46250420413 +159277.58054071374 +183388.82530748183 +270526.3890858655 +393788.5625250115 +228154.92273551234 +128484.63014382658 +204453.12559595934 +161451.37617317622 +213545.2793926812 +370391.4354898529 +288853.8234696616 +238226.71529662257 +194348.61443965568 +258264.16693290145 +219279.37589223843 +400705.8857722 +178605.2303949194 +236168.51378285672 +209013.0674256935 +92785.49628933196 +155564.60032864206 +160205.8232666754 +199208.1619969726 +185214.9155613764 +286638.3413151851 +269140.83063182293 +227224.8617753001 +363249.8068904744 +233401.80127309743 +208207.82254799077 +232248.02500567393 +311439.24019229936 +208484.6359417487 +127434.62443182334 +165050.45985225227 +162295.54487335222 +171754.88615569373 +191260.91325384815 +156277.3824622739 +193179.16178522163 +177590.0693002398 +248236.41898269585 +170965.5414844892 +239106.19770824214 +257352.5422764084 +269337.12935871154 +177584.57796295686 +150112.6075296349 +156546.35357444952 +216607.13260537473 +139617.35638886894 +154823.32619371513 +157618.61274595078 +179014.09243925312 +380003.25827377697 +179700.29353876814 +394655.20755458873 +157961.4522863656 +295066.1630270055 +380447.6852471012 +174526.13609504024 +219036.10086378732 +153235.1179111407 +189995.77958219365 +319596.64259586204 +178535.0291122029 +272885.0998681466 +347438.08586498693 +187498.277467766 +110436.73295545348 +166477.60727077586 +98401.5389703272 +164219.70321927857 +260657.9040458178 +413036.222705436 +183826.8040920598 +231484.79642853243 +167616.04747585437 +103453.69886626267 +214626.52537963126 +316413.16865383467 +111048.62575998149 +245249.93924680943 +196380.1048409694 +166604.03457213164 +173959.7685680899 +207565.86915644654 +223641.52276830975 +223954.86277977607 +199667.76064136665 +198608.80354509727 +272429.06786074705 +174837.05454102054 +275515.64333674975 +329369.0332276265 +210679.87642177346 +273515.0841183053 +139395.0208135468 +181503.35053107524 +229556.6235483198 +119041.75341445385 +135651.73150547114 +183259.10942478766 +189717.19696526925 +311125.4734412172 +179638.9760434867 +392090.48771724035 +199729.0705992412 +178700.3922628635 +277248.46010907565 +261225.46076250775 +231040.27508885454 +182513.3387857928 +253117.8437654053 +331211.84907050035 +365003.2640257565 +196087.5601412243 +194562.3961221881 +177893.71549566253 +153950.48595808374 +178375.18687580826 +179854.08751742967 +211453.65708498465 +236304.8212569001 +122912.01446164 +193519.95152593212 +329175.6166952787 +237104.62768257761 +169769.0739556636 +203173.32165824925 +208777.5056215433 +111118.56331214534 +174641.22191425491 +282811.5309084123 +192247.52220404032 +233632.89999914967 +209431.1634864598 +317736.38804236666 +202733.9800935823 +418676.06484047306 +147395.74757817123 +260220.70653771414 +197872.35879207985 +208542.5719508968 +332807.97897999553 +221898.61507907516 +384840.48565401643 +180276.65395675992 +174744.7282081094 +260418.32171751643 +400197.83207551716 +283505.8758758025 +177374.22041263035 +142414.4515693653 +195416.32199838746 +176831.5267867046 +240031.16435277203 +167297.51933347367 +154324.78283223085 +175588.1253479159 +166606.20680231918 +237734.92742081822 +388687.13970657607 +180335.94651225387 +342884.5795990565 +238388.9497161157 +228589.3876961424 +213669.53440182467 +254193.02189276408 +155094.7560466638 +468161.29757576203 +225639.35178945283 +398547.3593584166 +179560.5903143464 +282310.5765858791 +425005.96418719937 +131055.82957377723 +119824.64034579284 +164155.83293326723 +301831.37382978684 +167048.41712440853 +111482.4764274171 +130982.62136242764 +149788.39266848154 +207552.1986823199 +133688.45553236493 +278596.2528455784 +273819.03388767113 +186669.04311858636 +219253.2478767158 +193182.25252991365 +192204.75006279684 +334680.8353796352 +173687.34435171736 +182829.63165001804 +202238.28771588733 +192569.6313258385 +194062.87597846636 +208117.0276784277 +217707.0994401457 +167695.41352732334 +207984.38266201966 +179211.46050281238 +456158.9140792327 +183881.84194757591 +399972.65307727206 +257579.43875683055 +177784.80172984058 +155093.29709462886 +185199.90756172303 +316267.14910188987 +247368.6790232478 +280169.2624117285 +203835.73927797755 +327086.68317061366 +370147.2449845562 +146060.93733420878 +243927.8387066546 +183425.69279788242 +177612.07021623506 +490463.16025267035 +170498.01192851376 +186332.07481212832 +352246.43631831015 +291970.81235829124 +226759.70116761656 +125838.0466068746 +177894.5974506552 +150651.97700898044 +142578.75523068671 +304780.25274029095 +316551.77879467624 +194838.45264113875 +246292.64852226846 +181228.7837634893 +172011.72473968397 +174396.28933816368 +142770.9713545624 +175523.14375081897 +169728.9691168631 +265807.59211936913 +181565.55688346922 +199339.37507154245 +202850.0966220675 +228070.0196466191 +321327.1161059257 +171721.947730222 +201374.06114067897 +176091.84743645185 +110821.04444161244 +280983.9225775386 +213078.75649585947 +91032.10813487186 +341753.1131692918 +298102.59181769646 +370514.2507664658 +137824.5925675558 +327277.4259546022 +170343.1702264454 +168547.8853987167 +179824.68035698312 +279356.0972133571 +145099.6761972631 +264276.5450913994 +414820.0538787517 +189206.31382364949 +184344.0104159349 +132556.12221243282 +193729.63423417247 +226841.082994567 +267854.40375611576 +262450.5746493507 +164320.67425579956 +180188.2218262813 +243447.634509749 +180023.3278602068 +191335.44832609236 +187262.48207692552 +190674.59912360428 +227647.20554840568 +154423.9313775927 +226948.95396600605 +202611.72968638162 +200637.06134382903 +190449.36817480568 +182612.15691725502 +340001.85849586973 +301709.8401029563 +182184.79230087748 +251666.02289562422 +132003.29468159098 +198199.6074434431 +212590.89685726102 +209500.59001500742 +314095.270277034 +127222.46842374706 +127188.55450892869 +195224.9516551967 +257056.7951659733 +154646.58314517085 +180118.94593265653 +470792.45535807544 +186455.9681518973 +214540.7749621772 +267710.83005617344 +265806.6482379385 +66934.02912154798 +244366.30837557695 +314704.0054204172 +181959.75985301664 +238863.4241377801 +361124.0711147607 +321772.53704240406 +174859.8022009131 +188235.1918254377 +136481.72154119945 +218327.79008401535 +173783.61137339668 +215374.18745414735 +128388.4105534477 +191259.5011446419 +196368.95343669158 +189253.30829972736 +255727.95211299602 +235568.43345536635 +166467.95923409957 +190174.15471807012 +167175.17625917922 +203640.33972147614 +153795.37464747077 +225172.98162734683 +226524.51943446638 +375960.1369242079 +420895.8903010286 +268496.45328956033 +66163.84289922523 +358458.27286002046 +209986.5141578405 +202280.18361746302 +164563.0777307143 +126931.06066095241 +199318.1654052334 +127387.45455341347 +82291.89858062562 +429245.0960823033 +126641.66134120522 +294055.5950063315 +186693.05617422314 +201533.51194410605 +128066.79831678615 +367257.362868325 +169148.56911916236 +293333.535279871 +198715.81818794872 +175644.83501849597 +179531.13057806127 +210101.7477292141 +256528.40500698294 +172799.10186323794 +185202.584489495 +199188.795910925 +110212.1908653167 +450439.101209949 +100414.45045656254 +407290.56008745095 +219490.00029540202 +166209.4175143197 +206166.42622330197 +257990.40276224393 +283215.8774235244 +300121.8700664749 +171032.2124190406 +237069.93152284803 +247655.3065823812 +161606.79098223514 +180870.09914455155 +130184.59435228296 +232551.9501469792 +189493.40406410737 +180923.05485985556 +235194.84565151212 +462163.6644920627 +203475.26951991516 +126948.3515888085 +195512.98799035753 +178861.66694300438 +258119.92608029663 +171515.3092108054 +197255.52995451997 +389382.8018817527 +235782.89809270648 +235358.10283437124 +201213.98989458865 +342248.4326687395 +154458.48586657443 +304855.0560646703 +123373.43754829382 +175834.9223923672 +235271.01921861814 +181471.28673298983 +183590.6256783682 +168656.353146617 +259206.65514176968 +359172.01006697054 +180353.63554362362 +292956.21114197397 +86573.21760244963 +341144.99732536 +154226.49782034804 +147288.2515598982 +264404.96992321603 +175922.107632412 +216681.20614023434 +265532.7295025041 +254104.5039671786 +190975.72255213317 +319803.7966991164 +222306.89034547002 +270787.5784887401 +286713.24401826836 +197450.34056432114 +189991.42430524097 +259474.9233333864 +192996.04619922413 +169069.6845603552 +177118.69850712572 +349895.3864191972 +149492.30327050085 +272605.8054736557 +358956.4413032581 +198924.19129173795 +152463.02745517105 +181424.0591657846 +234185.17088942337 +195094.35260786698 +149880.2456620207 +154353.35468886033 +295066.74230370973 +148147.6021962448 +153364.48764608434 +292312.67302283674 +207363.6587699298 +166739.26138148006 +343992.84154851973 +256614.13665671766 +190196.6005793567 +173957.71227291384 +253397.57956061413 +164249.40542163915 +252728.3117241703 +200842.43458416138 +189307.51638135518 +179056.78813937207 +192947.24084636624 +181762.83671160167 +333383.80545031116 +126793.4577021125 +235019.754948493 +98277.52024231917 +176773.66515788774 +180330.94096451544 +270595.4675088732 +107010.84754292526 +227400.5390926954 +146325.54377153018 +209722.72433905638 +249119.96160600078 +195815.2173813684 +473551.2034028091 +200006.03506400753 +125041.66324610011 +212908.748280587 +139120.92488669272 +261459.19859019393 +179026.8660162239 +186105.29919041187 +201594.68329561234 +191304.1300421018 +127222.46842374706 +395508.55070457817 +136890.15681334378 +337601.60436279397 +181206.14977123513 +217161.49950526928 +189420.24066298665 +193566.66390162858 +144327.70577537778 +153708.5608870479 +85437.01176546898 +431908.74573311623 +230087.8344778839 +168362.61898246725 +184804.30445650013 +176446.99720103046 +246551.19373959405 +186773.03076025023 +228956.5523206872 +199739.8687697893 +356276.94456462056 +385127.93871900963 +145505.07027014895 +265668.7011119258 +165095.93299134832 +207297.8608747238 +188072.1912917713 +144369.08226349752 +198084.469368208 +203822.8135529248 +267688.2047365703 +157817.61559860987 +252213.5547378668 +73940.04641119503 +236458.97068886805 +155822.16971057584 +219474.55220087996 +326037.22001781233 +123937.77581102833 +208180.60328698374 +219092.4928733476 +300325.5694639987 +268630.01716077287 +134689.9315830892 +236268.16831284307 +225897.0785339391 +194028.20664909494 +261549.18983300097 +192228.32390626878 +261575.40016967178 +254721.8938477237 +392190.1320229987 +135508.21894958935 +289505.82248650334 +184256.7290476552 +240856.99584606948 +173263.13825685735 +138276.09957052112 +180253.64170664732 +160188.50516072055 +97497.75824670082 +288082.9324438632 +243686.81184735365 +214306.69262554962 +433868.0325937241 +169035.77285487205 +221162.1117836021 +193433.71071416765 +260044.9919334374 +229177.49727334589 +357144.6846843564 +190367.54922217148 +247636.22179505054 +216342.6681113502 +193092.16751800894 +113648.31034211657 +180923.51130392659 +405645.0598897116 +115901.40169074801 +170190.6713222565 +228970.03063967678 +66815.54556065335 +342826.3213742458 +211202.91801962943 +198080.17757973657 +232911.8428940271 +160557.5160732105 +144779.91419520642 +167324.58399852086 +423352.1318924857 +160897.79353743378 +271202.8541907217 +215178.5299476083 +282850.5056222616 +194924.80975623088 +203659.7147456755 +160898.595931819 +157066.4520268424 +190615.4919917467 +176045.42887956667 +197260.73525106785 +186264.8214516722 +216818.8197729915 +331085.9775391974 +255608.4262087944 +133885.38341602552 +274633.1413712477 +100548.97920542404 +172872.40520553922 +251569.18825546873 +111401.74779084463 +228582.17758928592 +350499.56674839364 +166323.24645274447 +262874.75727633585 +330262.4809701815 +301354.4688908862 +178924.90472257358 +180914.74915128772 +417081.0730766427 +190566.82412660983 +223995.14433084542 +193464.29081582272 +196122.71502378013 +163878.91359517066 +182529.88582786132 +281157.3853180624 +177735.80461750922 +164939.70302927887 +189965.720528009 +274301.12604091875 +262381.59436223604 +460946.4390391151 +150329.1537272536 +282275.33465839026 +301445.51726457296 +302638.6390797869 +386530.379687604 +317671.33577431063 +240752.42164300324 +242716.8864035405 +238404.79153817563 +127069.59037779049 +203120.9442147228 +190777.75637099007 +221347.34302540787 +220532.02819356302 +207146.11457522557 +264037.94517676067 +198509.46563837427 +157190.73397855644 +245262.06985413062 +109776.81155083167 +145135.0102645534 +222395.63899608224 +173094.01390364382 +204399.69377315763 +152238.23941655213 +89468.69583460667 +413965.2128957062 +131181.74935730154 +236618.19139315072 +315180.7188239107 +246231.51097096378 +227084.31548305092 +540246.9593437591 +201925.75844137828 +300121.77144050616 +195897.7184082972 +216148.4780136804 +174559.4900244809 +291444.8068820084 +315424.2023593866 +201750.15743513516 +159827.29283876668 +134871.97091695358 +222882.3544571907 +214149.9201832919 +228086.92830573578 +233614.42508917168 +227490.60277451837 +125538.18109968814 +266932.08541933354 +178427.47660351382 +115528.07662771591 +200523.90282704754 +141509.22546927328 +390536.0053371405 +171781.66257409944 +206726.82783497742 +369729.7513415995 +241528.01014310535 +218942.25530388925 +235076.9818021423 +141909.09410013352 +188843.8356009286 +215581.30125280394 +179023.32352186806 +192608.60806904253 +262584.8460343919 +200076.27367081709 +152660.40164299964 +375367.2977097241 +118412.36760412634 +276857.40685671265 +134159.01621429465 +161016.1830376367 +389021.31415804336 +115702.86479053546 +174455.96025297302 +199869.5202004104 +302030.39021363016 +167891.63437321672 +149984.15015231367 +178369.94281446913 +164555.59272692655 +208623.49412461877 +202128.6061463301 +210496.18383446056 +248850.1111253837 +126811.5091271018 +324685.6194964965 +180528.78654802238 +429083.6735659143 +196947.92244910746 +254670.5834311322 +172429.3907429968 +196201.01040378472 +315316.9793680883 +150756.15894138292 +132608.37600324693 +323854.86306379345 +184925.5134850842 +284474.89963114297 +186454.83292690365 +367740.5026785117 +297486.4083640257 +148317.8844089725 +185126.43888069523 +179852.47807001875 +205609.67968182362 +193216.0065380121 +223277.80352183504 +181045.80633996468 +180906.73407676403 +180012.9180531181 +187121.297392239 +275919.8228452206 +408563.88909225 +304061.6448918515 +112092.11586020133 +207454.0523363044 +251177.82186737613 +392586.5209846208 +256804.90968563082 +193081.5183782047 +174717.1264558092 +70468.81705868038 +192460.98446576612 +224331.46163255483 +304552.03120446444 +463305.6960474775 +135933.80638663578 +165036.5835533006 +191457.1905912171 +262666.8602569976 +377791.0804173816 +270176.8966196352 +190226.14866196812 +221918.09905579334 +222420.54300181332 +175850.80078724283 +162992.0577128562 +141234.67719606042 +179463.2408851637 +239966.37195050227 +235214.01342443598 +282801.2574504304 +122594.08326133848 +123598.19028234182 +274580.1009471091 +201657.49880673323 +126855.14125630804 +214645.42868592928 +190581.31322062918 +235041.34347589474 +244195.31302638198 +238142.8220421116 +179620.15750003554 +108164.5594450886 +203495.2275434282 +195815.2173813684 +257277.5833343981 +215854.66002693234 +172549.9228332806 +204832.71487277598 +319017.7035628827 +241496.5931172284 +202932.13321688716 +202117.83216526374 +188211.90116542394 +262238.4479034816 +252985.94001432369 +162636.46044271844 +441740.2965234314 +186983.67541420413 +326686.1629705698 +262971.86161517847 +315700.2777510478 +201078.4858019427 +266803.78806263785 +128423.71292756406 +442366.34487161355 +160424.50038615667 +160210.05305882002 +122380.20676287176 +207838.0244841956 +181114.69200593777 +121558.69818273821 +243000.33048624775 +151505.18595908856 +158023.44282798318 +382745.80361700634 +181529.86133409906 +260887.64317724333 +189633.48153695892 +361681.69004205364 +224402.84433967 +179521.3130710327 +165703.3185061944 +193877.2766411179 +180283.00783483576 +304135.2640680353 +323938.7892328567 +323590.33871575 +336813.68197878916 +366202.7882133027 +181116.4311168595 +143596.34127577813 +157513.79597787865 +157408.0014554147 +222041.94248464456 +378845.94142564194 +263562.9100788972 +216121.24063177194 +346071.9678041303 +307052.72999698133 +227456.93818075277 +323490.8354181959 +304768.212533815 +131624.74044375616 +184162.80347990163 +104504.79369800272 +287041.026524409 +396842.26118576236 +306790.4015788572 +249114.41105732086 +178675.8668796671 +179326.83285090778 +239158.28203975045 +234889.62409772386 +182140.22928704877 +285923.20332139585 +240042.97865835964 +201249.89283243605 +179378.2041858911 +296643.30769070477 +196465.52041797418 +230514.26030737048 +211213.14339521906 +221159.62283376453 +200704.01283875504 +195503.84251313767 +450558.11751806684 +104650.64083385553 +179181.5007506591 +189938.69335214738 +153086.67242312242 +392584.0394636119 +329469.2744596251 +190129.56917477425 +141076.2508881627 +156851.87925353297 +155519.78749476554 +171047.86898244565 +111137.7024018485 +215489.71624818558 +215064.5920957277 +153892.99119270965 +157932.38267307117 +227694.64403931054 +150457.22899465062 +292351.28589136247 +152275.60419573824 +117178.57611459444 +250370.5691260814 +244435.03600331428 +129435.33672080692 +163144.8153759645 +180966.84878623317 +411549.3726602179 +164761.0064637955 +261131.13139098533 +136245.21754038232 +225077.1414270692 +175807.2368772406 +198687.94523903038 +113078.94951799398 +166689.4313281611 +178121.04851011955 +122388.99117690716 +197137.1014163484 +173776.51226730048 +321287.48461336375 +113515.77348959987 +408161.7637069964 +129051.8271373205 +201216.05236971084 +316004.00328718335 +350635.0804502635 +240194.549203586 +275033.3341844016 +146107.86696568827 +99040.52510642176 +153119.00218729538 +180966.4445079152 +175549.67544966473 +138737.30332578698 +144794.225702057 +154823.93212775944 +175502.19181770858 +214348.67968162958 +257982.94178798262 +216219.567502338 +152491.3542748008 +297325.71140737477 +188321.6626724355 +208901.52908613713 +255139.57225003684 +474317.0029013759 +163772.58590518218 +342892.46232288383 +174319.7045256228 +310322.1665807139 +332608.3854255701 +177165.93322557246 +180514.04134353632 +240269.76317981776 +364929.22327337775 +179416.5821139842 +313569.1507983103 +232699.40193016955 +178620.30425386073 +302098.8405130361 +178425.2248525929 +191773.9921804397 +319632.2833071794 +184083.78760578195 +173511.5163021899 +189171.8064388124 +226469.01739681017 +128515.88941106625 +176728.62204468655 +87209.66938870784 +145124.86357317952 +202727.59191532803 +161264.5876833101 +178200.40116509894 +378788.5414236279 +169671.2527457897 +151343.17546322852 +128856.02354641528 +152773.6839329661 +182480.53793993674 +192637.10684118303 +128899.22955796134 +200783.16279406304 +170397.03279911226 +172146.0138944767 +68425.43673515448 +295615.3709585437 +425605.20936657663 +203102.98921312758 +229023.1892304559 +155934.9787038171 +162333.29945591788 +188447.69272915082 +458444.2762001296 +217233.83731214865 +176705.9736687196 +175492.30772611557 +140094.7797633263 +153880.29403453314 +162763.35070920075 +149891.4241584493 +149034.38244713296 +198076.20513278872 +214926.79623597322 +205562.0077131375 +182294.91211008892 +137254.22217714402 +186043.71382552973 +236316.84174193017 +177838.16608730901 +253309.2574694072 +200833.22664178084 +152065.38949315716 +126576.80345694677 +118123.40315739665 +119987.4322056816 +209803.56865015434 +250219.84784122583 +179465.5403111007 +186038.08305108696 +197145.66539592223 +147963.45036486955 +194475.1384615517 +176274.72208481515 +255064.99758837695 +200750.39490443136 +300656.57037482853 +305787.2542859092 +147767.23420937138 +175531.84635342725 +219989.37348102473 +184500.036379915 +175461.813010138 +171942.43348039608 +192934.24732253494 +184424.54942770005 +131806.29537282375 +181916.36189484043 +184634.25755979985 +156309.08923012792 +86870.4933699625 +179235.3061469284 +404390.4890435044 +197532.78546085305 +161091.87935128654 +281282.35431340465 +181261.91381260531 +184438.13851173106 +106561.61798800317 +126946.0142862244 +255797.94011942693 +404761.1635113921 +117648.23387846956 +175956.88672343094 +190867.40594148662 +300930.49579262646 +178218.5312301908 +272081.91795869207 +300740.00561080856 +154290.365645957 +175751.62518267287 +174585.20381749485 +154099.3865442856 +270419.509894267 +201358.64689881116 +189877.09137547654 +178009.73555314477 +139105.55438427452 +276651.1588485065 +182967.68618902733 +280269.3611410533 +195214.38812525643 +145049.57398320097 +126855.14125630804 +158482.5517658767 +146524.5741922059 +196983.70826424536 +221931.68536933453 +214935.0894360796 +364709.280853861 +191475.81298731305 +280811.1752081472 +276392.30158966646 +211556.0777230456 +171086.93506630452 +178598.9821649196 +170505.7261026503 +269809.71702454734 +174087.22432648749 +231435.41135114696 +274023.2135670778 +270825.2087382056 +263296.3561552241 +178149.3562951361 +190767.86877481337 +161713.75658198365 +205848.1319970384 +140591.46168627116 +336238.0970222528 +196652.84914086308 +352008.489480751 +301726.6383060583 +211860.8270751915 +328491.66716636444 +267012.58933798457 +244332.67203299497 +167016.01585454145 +224799.86399891198 +136576.9793321073 +171400.38153111382 +342218.1559144713 +148775.89739859378 +221368.03387369367 +397960.6712197052 +155350.86541476677 +65590.16724407265 +241514.10427643024 +142812.98696638958 +169189.39990521446 +156769.83520529838 +352643.6050151366 +205756.9037201126 +184592.30355424935 +183569.5803673881 +223602.40343730725 +380307.1931496249 +201069.18549737523 +220404.51410409657 +230342.84405835887 +241443.56300611005 +171928.07358946124 +132307.16929950292 +142787.5809878113 +245576.89023413046 +378610.859065841 +185608.5052949878 +228396.7789269078 +310641.7867042298 +424681.47035747906 +436337.470357636 +161787.32905303888 +337574.52685080894 +227994.77302222326 +230453.0584025436 +183672.08888672563 +169055.9398765507 +396418.68343149015 +167041.38325071803 +416241.72555106645 +283011.1692063221 +420606.063167142 +157830.78641083973 +232245.2696782174 +198670.40672004016 +270007.1434477998 +175441.6191349745 +196010.1653105741 +179442.71444313755 +126130.07319969834 +175567.07603858 +151206.56560767285 +317273.2644491056 +333034.0033823846 +192397.18866415392 +242115.36098005317 +108709.16456392666 +127737.55530202252 +137696.0852222444 +126743.71147249936 +168751.30568507555 +179018.17502996896 +241268.74667068565 +225991.611400833 +156437.57338953533 +370277.89810475445 +228189.11806368644 +152583.82115024317 +236451.01597508296 +202926.50289288233 +173118.9671937237 +277648.7456594088 +229746.13665517906 +178560.22359736497 +198160.16569848967 +325538.54580965656 +179105.55946921353 +204687.7304420393 +229002.57850823321 +175094.1378883162 +177120.7630189904 +153378.70998225696 +157234.84248307755 +198859.02293372172 +177851.48824790434 +145700.73980894536 +230087.46429917475 +180525.7024155689 +202367.37755953724 +284644.0895269281 +127339.5121171143 +404278.2813638509 +181076.400710213 +175736.766079261 +132871.11656005812 +205277.4199284446 +181210.01407746642 +194566.70989016202 +233985.3787372864 +146085.0622070585 +223303.39248273926 +162049.54067759507 +365262.25631014124 +191035.60810141894 +339566.71715457767 +221898.38741231422 +251849.6237207754 +113435.85259357878 +176447.0343245332 +190414.17521390502 +184475.83888524742 +282158.51675339683 +201089.90723598452 +238153.02374624807 +211403.2478435835 +136962.29172808412 +208313.4597982045 +195167.46628495734 +95972.0701644216 +318986.9133084428 +183377.33429255037 +272280.5105522588 +220070.46954071804 +161181.2876108331 +177718.9914805574 +159716.822916864 +177846.17081424844 +182668.22840403015 +145175.67096103975 +257985.14575224323 +227945.84141922137 +410155.70647273806 +369520.21126115887 +263144.94762287225 +220246.9643325204 +194928.7227374204 +339378.91789367393 +332150.23517567187 +341501.3202887922 +194639.15737056037 +172670.7157654876 +254297.03171995567 +165091.44710559078 +145783.48200044053 +204804.29480051144 +239849.56499196697 +241068.92012312904 +174159.96313482604 +265169.84659504506 +357208.803084659 +87478.79164247961 +134891.00841295414 +182340.89812296123 +199857.1015714627 +193340.81609639706 +190663.30680211325 +188089.97669199627 +148395.4692660018 +203680.84568430088 +205838.33600982453 +205575.06290064132 +204677.78661344698 +267117.0351838526 +97028.5574806752 +199783.88895072517 +279662.735399848 +170517.99078808734 +74403.14512943514 +233349.8029100458 +126855.14125630804 +248964.55080310395 +104975.75919279327 +244831.06957887864 +243274.39792517608 +116265.0378995444 +177077.62971752876 +180996.5851881374 +248599.75810027675 +86137.42986482527 +164767.6343331681 +210130.17545404338 +193222.5125840681 +184168.68058222742 +207681.4898919505 +146422.14604152914 +203300.79899405802 +155563.76129928778 +300208.5180452407 +358540.79264107865 +406273.70984337217 +220365.08135796944 +133437.86252121392 +175713.31018271213 +345571.3807422594 +214135.9560395302 +206502.31185925592 +185652.9897589695 +193095.34806323785 +204392.10604920078 +268721.4507965046 +157117.77471586977 +272941.122634205 +222494.92511199485 +117551.93076821469 +180858.55616570392 +205218.13823111367 +152703.91606808204 +317929.8637159463 +160072.40103342116 +192144.64911081278 +415106.04386364383 +488660.9437565888 +326749.56143423944 +169067.95901695534 +253293.12147451183 +245506.8250849166 +129551.81222599825 +323032.5394786483 +170554.3649886332 +266154.4030506755 +66524.28978495617 +191861.6457242861 +208370.18673352996 +241313.64789254987 +137624.62558172175 +200048.48160654312 +219356.1680582027 +196728.9496234138 +184504.70230711746 +370949.8322497363 +145865.47935727346 +194992.5074885037 +373785.70899558644 +111965.80571310208 +394459.7594501851 +205581.3603515085 +175203.81440228052 +120396.62838425065 +148141.80357695356 +263099.0578803859 +122234.64039809153 +130856.35947882921 +422866.15803529887 +285541.78584380756 +155705.49834174206 +379091.93218097824 +184417.23780448156 +252358.43133599233 +160537.36814247363 +223990.57044358054 +207642.51950244815 +145288.770981348 +341078.6267579511 +250478.46903091 +232178.19485702756 +215809.93694940268 +156962.8098220781 +241712.4191946992 +243488.63522330907 +221453.594237278 +342463.5895886538 +164947.87994975323 +269381.34605915745 +410623.315306219 +201153.56830273598 +259946.76317870783 +190405.82768910466 +189484.4491974557 +163067.1561526334 +180533.57035961316 +165751.92803271237 +261423.13536854504 +234236.80431958908 +121145.84549848367 +165598.3819347521 +365271.4044266572 +153634.1001942743 +252513.60665807305 +163514.3927851897 +131776.89483664773 +328718.39843844785 +217994.11382368964 +167281.88160650674 +339868.54107062315 +180944.05710901995 +281649.8542667032 +186992.951050946 +224550.1032087327 +163428.52877356572 +145450.8907123243 +176310.31124637884 +169559.668107895 +130567.41455616262 +190646.86184130132 +261643.7555696594 +214863.8160873192 +160532.75844924626 +200626.99392569353 +207536.55712373788 +182721.9885128907 +210455.52609134323 +255366.1438096553 +196544.68888060967 +418828.01668680075 +214046.39100763953 +190680.80894228 +353046.64098553953 +374670.91327563446 +176248.3215544144 +240394.71214335435 +296355.10751487786 +192271.24095386875 +256385.6201086095 +202798.21092724422 +245862.46445299007 +192160.82721419432 +182273.21772286075 +446183.1085872607 +200691.53663579925 +207085.05231893744 +212522.9948025023 +317823.751469394 +196708.69526406244 +227692.46696719844 +180448.4130918783 +243533.62457200402 +408139.1312921747 +380672.96737539076 +524089.7847197343 +413953.01373773254 +225815.1010637045 +306737.81914340676 +241143.1124148833 +129499.55057569861 +168261.8179165368 +156055.65235216042 +181005.10864819845 +318033.0101359239 +174859.67724215362 +154184.7296028365 +195540.54136328207 +94481.63507242323 +131078.76931353277 +161759.63698437152 +147082.99184530717 +165778.29925833846 +173826.32699622458 +159482.34040615847 +171138.40952652675 +127201.61756388994 +389772.99330332695 +216630.37208743618 +167970.43857078918 +179757.3626796917 +190419.96936607792 +176538.12585385086 +196565.39762675573 +190023.38077904898 +224967.6158823615 +295194.44393520604 +195328.00304753077 +248301.4031218966 +157414.31991016964 +175704.4590654303 +261314.04382084662 +264812.5389312179 +200322.25696710005 +437206.28506944847 +215927.51296260516 +194628.28006018 +109298.32090012805 +163389.31106313565 +199750.7603209249 +297852.4907119506 +161990.14758359097 +190294.29205296809 +180089.66521889082 +124463.42974311783 +212825.64244223706 +182220.06104541026 +107670.70993729294 +251732.53443974015 +182135.58605323694 +193934.24646095338 +228587.17690968176 +182457.9154225713 +134893.50542636943 +175922.49922065742 +170303.94692423005 +193394.55455963418 +146674.89360229045 +241981.9932554509 +180185.07588591293 +314104.1266281199 +240949.554223089 +172148.2657053211 +245985.74702000385 +167641.93752906699 +280245.31615243334 +176392.25592832247 +155415.2241055979 +239512.50674775164 +316269.7923276988 +397947.42236283957 +76898.68551051206 +388725.7011941562 +242453.1932074974 +256138.36799364528 +364113.46405770886 +315119.03188658773 +217127.13425030286 +225017.0233412499 +316007.08921542234 +189684.73438820595 +301598.1991285966 +195445.3680279134 +248869.66521046538 +267714.36385941994 +297735.38429850823 +119810.36855209019 +264183.01089601207 +403450.12010878656 +127927.18562329894 +182463.1076498525 +192666.40872402335 +263383.20624914265 +181653.65662810768 +212888.91143920826 +88903.61366104227 +171578.6231794334 +121733.22201703541 +167888.50264946194 +378298.73110259423 +173278.88431694644 +331226.44394740235 +314226.8982219349 +216330.0700113665 +197493.88421440296 +127821.492781941 +183375.6761639379 +297263.6583204297 +241414.0157319072 +146837.16340719842 +164967.84779722264 +236666.4260984811 +238665.1817166468 +121607.62949093479 +235705.74730923612 +221345.849721279 +326337.4967784449 +216416.55235192124 +101699.24087653082 +219651.64688868285 +168876.9381350531 +158246.1589464939 +499370.65883732203 +101804.76608546788 +74403.14512943514 +167439.26085047386 +178369.72735446892 +138997.42809149716 +330299.93301171163 +238165.65627149807 +209325.0437710181 +446686.94472443656 +236736.03623005227 +193293.89253233073 +230317.49959173307 +249755.79407297564 +94402.29381596732 +199162.01848984143 +317527.754084821 +309776.89554831653 +434912.3682046505 +206562.2385271909 +322089.5319827845 +124025.84492717288 +502323.19986047625 +290435.8289905211 +253243.9112542981 +236716.98838413003 +256878.53149650083 +179861.72787562732 +218090.52816445014 +143337.2248262942 +218153.4606533523 +400410.9336462115 +190577.00456003787 +156231.04840291344 +167345.6959217665 +284414.8162735481 +317951.96843407163 +197647.30106377628 +250150.11439339872 +174835.38700688188 +155844.77377525115 +239715.78609645792 +181363.42566227232 +148641.6449295365 +250373.6823127864 +137876.00362906602 +124118.31181870686 +234419.97417831153 +232261.26735974045 +139510.93423523215 +117412.35552324555 +139839.17462977394 +181249.2781176774 +213979.42174984072 +162052.63859445075 +131985.21863454438 +134777.0799222088 +145425.2252355278 +187267.35803086773 +117050.7512662539 +199181.65442201766 +189161.30597572285 +198369.51231003884 +305616.6546511618 +184201.08905138655 +181560.6906469594 +221825.5555569086 +254257.74604806906 +190429.95783779852 +110394.64882060568 +128264.81749159112 +155151.8390449397 +279281.8384964073 +179675.81005082693 +213601.16927958853 +477693.7007811632 +150027.26116997827 +155529.98800292896 +186833.63501035562 +200437.68804660934 +144711.29230613157 +179912.72638855857 +155667.7243928401 +166318.05016365933 +269156.55199213786 +200218.06014773843 +216928.9123303858 +223558.0893490245 +256576.27113465706 +251374.6566694786 +145374.5344471076 +176360.14661607245 +173053.65954329557 +270391.61144351226 +153012.8571287935 +350652.478063018 +133312.222494043 +205248.83637409232 +239458.88434648013 +167443.93322133203 +205382.1083321633 +165711.7315118393 +178450.39886045753 +341847.8369262502 +243455.7651437845 +201753.83044523952 +138202.68384907514 +200040.2380065123 +285321.9024507465 +153566.97818655713 +183244.6022842387 +246491.99599870836 +211037.78071582475 +210345.1032837257 +255251.88615701764 +254545.35853817043 +177653.02649109054 +188262.74866056378 +261005.87470464144 +126488.97420378934 +153195.19531424934 +250338.79189272257 +285763.8987233407 +188084.22213472342 +202525.18166746598 +231321.6273718385 +177533.16105814336 +318869.49951617495 +105951.94574700139 +167468.10546519497 +244121.65398041616 +279041.6901036172 +196980.96051321266 +394635.68473923963 +275334.1308960722 +141579.08130183196 +275995.91623766633 +150535.62445204906 +214936.4688900219 +226897.71445005073 +311910.4474194352 +142218.99319871474 +126591.87297978486 +267729.3534611628 +128449.36093943205 +296598.3480409202 +238115.54385053198 +307989.3329218289 +194389.8739451943 +182305.7040806715 +254876.17940573467 +161799.9362116705 +210213.66552989505 +396924.0261846949 +190754.2192143405 +221365.66107473438 +162053.72584479587 +202049.331580503 +226962.8656867111 +150814.39901651983 +155108.66286472115 +129884.12445199903 +122133.50795519803 +194660.04689523185 +244629.94034791237 +151345.17252908755 +171247.40319479877 +197716.2275815859 +328332.31048107735 +156428.94712464156 +161048.26311062506 +310795.12042931106 +180163.5475078031 +109529.11774284279 +178607.08508849374 +173246.32998312238 +258964.74107238915 +198046.45565558336 +209814.7152710583 +155126.4615637033 +189624.77804772183 +198970.58621331237 +365742.9752685915 +188864.93155279077 +164425.6975165542 +478459.5214950189 +170983.37572341433 +180017.67426951384 +464176.92432896956 +305518.85467728716 +200145.80718259103 +191559.76263245163 +112630.1812507877 +182088.55454974415 +176132.85243925854 +157422.49078578604 +106707.1140262323 +173956.54161043576 +246640.68661787262 +178881.470516235 +158354.2004546216 +209920.24347277463 +122680.53223887621 +282288.30360357213 +172504.231871256 +385787.3674876134 +233451.1604480001 +119312.5328317455 +279689.2941425477 +424785.79573735985 +194982.29935684122 +139755.24577888355 +166620.07703385473 +177972.09623129474 +180606.62315401967 +267818.61108293175 +155856.06131392223 +440264.2150818704 +168534.17776592934 +380648.6674532946 +333691.91227746784 +71464.20950862733 +176736.13081170374 +139031.70121833388 +149354.70346947838 +323931.21377581643 +108979.5511035604 +96630.33760898051 +179502.43593063543 +144171.42180460104 +201261.5264009803 +233767.56990167688 +201705.139928335 +95775.24616084424 +176185.43677639798 +357062.96333539305 +170993.10933664453 +280062.6808124405 +179442.18331935647 +213127.82073373263 +177251.02136009038 +329314.43571674277 +226499.99315986008 +213221.33154616304 +94592.80531140284 +292551.38893738796 +350740.8240985384 +241825.31720139054 +233722.08044207023 +281892.71685006825 +497262.00183776 +181088.42715674688 +393216.28187528613 +237713.71074551187 +248317.62654238218 +178405.34760959705 +127515.47765619801 +272012.8635022291 +237146.89051779092 +237348.18527744594 +179079.83260229827 +166455.21970533388 +210634.02118259048 +175450.97389636165 +175071.0214393515 +293465.27986081835 +287873.3407064669 +200124.81352397564 +325544.6975911433 +200872.14672307821 +160120.51754108007 +243861.74780279936 +252097.72864775744 +243303.35779490083 +433913.1421798705 +141270.27957264805 +148455.69381484707 +168922.79378936728 +129404.0109136994 +129533.04003081609 +288850.4667490469 +154021.99015653066 +195062.49466383862 +147498.99215498936 +341731.0955157722 +262495.4628574481 +147421.41532707255 +266342.936778032 +216541.77405112676 +343473.7385203768 +192277.75635645783 +145256.2028708817 +159499.73220995726 +377131.57385721034 +154097.9498094554 +136622.81243660464 +154210.22180169253 +134869.12608461938 +353957.332819127 +194796.70721473533 +186148.27093021668 +130423.40636725903 +145887.35811999723 +107507.8218889993 +129970.12292290249 +338795.45781678957 +244346.53307557403 +267617.7693041099 +315197.3294758066 +133118.24585396858 +181575.8409295934 +322310.35234162613 +168877.75364949479 +279736.51872699807 +207631.03231891437 +203748.71841727465 +234373.24256238574 +139853.92911116435 +181292.64313302856 +233023.3950136538 +235204.56919027728 +287129.15858241514 +113160.24117528572 +289189.5943274583 +188404.27112235193 +141134.2510726933 +151833.58665280553 +186151.71931147433 +76325.97355730475 +248483.44294796267 +165253.54612645358 +423020.029035176 +179652.43628988304 +170769.95952637997 +270285.40573066735 +200886.86056397163 +197404.18804312308 +386767.536555889 +192115.9564559535 +161645.88302153343 +264885.4527856831 +281129.66609494254 +163386.71489422073 +183834.53390733458 +207939.28532747377 +156640.12837081708 +278099.50098480453 +154588.41526751994 +511522.8562621273 +205159.99771514436 +198568.88548346507 +71176.20815774016 +173182.11586616669 +118908.29719211796 +222139.88669953958 +146051.87282393593 +159816.67858841273 +95492.90166208336 +392115.4742160836 +263725.02841017186 +369779.67807197577 +189393.62021351402 +279236.6287252901 +279080.969436197 +175991.3697638767 +213405.02566442828 +245862.57941408467 +188860.33210001411 +166983.9500754178 +159996.62948259458 +170045.1549678969 +187981.77529992157 +255659.5521634242 +116348.35035305159 +178274.40799984976 +187397.75658335214 +156275.8254300348 +168363.24265437626 +182817.27561781424 +210127.06058262294 +176269.3826041713 +127415.61012294238 +139153.05919535036 +236212.3202418425 +170643.06139041454 +254490.6480176072 +180969.93287632242 +229313.7283843666 +432247.65163430915 +245787.61533306143 +270624.22966382187 +229613.32127920262 +256314.439931492 +396443.7402530565 +179544.35414457464 +150716.84802039145 +258474.5986642722 +178951.37004838313 +181531.94535641634 +179362.75182641728 +97023.5550915458 +239173.5227180168 +190309.56073316617 +176038.76263664613 +178441.60196653203 +146532.1706009744 +192839.94466908628 +127350.27228449313 +156589.38813505726 +346354.1700129345 +257127.7424439713 +187625.9201761703 +208850.88827494608 +235995.32266362544 +158553.56802977255 +273060.2420186074 +268018.8619229844 +210412.20066250025 +209955.8173151435 +241650.07366794007 +262745.8723348775 +197808.0473820677 +155919.47905368826 +127762.5187699532 +220997.95880410675 +194270.34280543026 +206125.40314457548 +130997.52740664486 +204014.37750207388 +179342.3641312625 +325133.4471103145 +324150.5042732095 +140466.2890983633 +193241.98447834916 +235908.55103498464 +181406.20578605373 +239395.4274528921 +207385.4412261021 +106723.98232417235 +171721.58464429676 +231370.4730268449 +394694.79911663814 +437031.92118771013 +189986.76450776367 +236147.16709352375 +187242.5093210964 +173048.968258465 +264057.2752484281 +173075.43777896502 +211179.48712687625 +221531.15203906558 +200716.54728607656 +204847.42455726388 +323444.5095991327 +160461.86788044142 +174322.5813367872 +175317.06023600255 +459115.2869548769 +245443.66350071254 +257106.8978095335 +145068.00687991228 +186000.25786584016 +361773.4236665256 +157229.72046694733 +121609.06005175952 +233515.26952746548 +126168.65413542108 +157775.7922470759 +110349.72060618144 +224778.8751567218 +278708.3619260734 +214895.16510866568 +156500.92416454785 +70623.02453909602 +286191.89736193506 +141640.92001893974 +170145.38013528596 +321651.21245037 +381334.7050835397 +180855.7594989775 +233820.79793610153 +177208.24986610937 +173945.4279838111 +140077.8569443673 +180850.69795707194 +148351.87030258783 +188895.23736458537 +180337.04033022065 +221961.43090184111 +170821.3967429986 +180024.50924125567 +294245.04613704386 +169709.09128271794 +248158.12582472942 +198220.60103372895 +342091.44252723723 +232974.21961511765 +249380.81879743122 +371477.65261144645 +382438.1816526258 +231509.6670729371 +128987.97234611669 +189505.60585481935 +473951.5336352542 +100550.49477195127 +159521.90011319588 +224893.8857290082 +241506.06668280295 +253871.26466859315 +284148.3974309039 +408893.59563290735 +230177.88425256504 +146057.9101597693 +260692.1272734024 +161004.76380826085 +178705.7680904896 +247078.2029775849 +382947.89546160155 +148681.7079282832 +70365.20425812736 +144931.62984525936 +225457.6606752632 +181624.91909596557 +362532.14597285003 +189532.59069777446 +382829.8562275781 +198774.82283530638 +162037.94118432046 +234702.32112622916 +164342.82182471652 +259871.4777969636 +137634.19845664123 +195956.05546479957 +152769.88640054053 +187012.17718550458 +262277.78242509207 +216408.80417238717 +104925.87525318512 +182911.29999868947 +233415.6489685597 +136577.77367360538 +302173.7085554025 +201760.84499168547 +194828.8922528313 +259836.4123163085 +222305.38420258678 +530175.925468935 +231583.20456328444 +168189.3283073648 +266452.3642176717 +200708.6744552637 +153705.76092559577 +161231.7920111077 +384181.66159299033 +256060.95040978357 +216324.56620129762 +192653.9474333654 +191690.7321741008 +234869.49813109083 +154361.5501170126 +250580.3526917124 +132981.77930161 +152597.74432571276 +356138.3860746941 +288794.90696103644 +204406.45971231032 +259469.85103826105 +176920.59249002856 +277898.00881434727 +232407.07186539675 +178945.14006668577 +249788.60665908386 +190879.06082077295 +306138.0737798746 +477985.99053349736 +203161.87079210608 +153058.11037768703 +491799.4540692203 +179573.31297383583 +162313.76622243243 +183876.90086384775 +139847.1354439199 +397451.7143806417 +464991.8576582855 +166351.30313412973 +173871.35847802158 +190917.62753176814 +180037.23216324585 +152953.9328951417 +82673.7790082391 +121309.78057515324 +244954.50222336088 +381794.9441698821 +163967.57826843014 +216353.04609954802 +172734.850457646 +189926.52668920596 +206196.2523202084 +219696.46751721043 +172873.19638445927 +130339.66530124696 +180706.49149123603 +174983.7239171774 +176858.8236800406 +228973.02113170878 +210451.37524628078 +237423.88184405363 +177831.3745734775 +304377.58361890126 +201539.8137911574 +396394.4131841532 +283289.9345765852 +168690.3149174646 +342838.227092768 +192597.31556700874 +149301.7095593701 +179923.64295718732 +345349.1620986684 +170458.22180434022 +198441.66701982418 +139109.4550343454 +153167.34146217702 +328099.2500360027 +158838.15509144228 +201253.25096333673 +161553.26450865436 +191281.01347247272 +179357.87871124464 +276001.95344594854 +324080.1757176184 +189881.84403101457 +372060.7602023032 +171564.69152374342 +222675.4404270736 +189681.20885624358 +257997.01187958813 +225199.32586362472 +115040.0021326703 +299004.08246006607 +150945.49841357648 +257519.82044683144 +162523.87802684488 +228635.5627703141 +144491.4893788556 +226896.3676921346 +134582.33214590902 +386852.6481738248 +253175.66703445194 +132977.21780765455 +194758.5926212759 +199055.50317256863 +148710.6256471261 +484860.1221533176 +115992.98455932384 +223542.48124605397 +209089.01211672393 +173796.62283602255 +271449.38288098184 +113637.49309945999 +272037.4233461859 +274518.1864267762 +92908.3834656475 +175059.6137131738 +200233.03535822566 +148624.5285777688 +182533.05855745086 +197155.65635255084 +368857.92940281745 +176572.32968601355 +172193.67149544077 +132450.15400725463 +163414.2441571537 +165109.37444726648 +507448.032290658 +171733.85869439755 +277932.0297243256 +285256.52313370764 +112652.26297697709 +163634.6171192888 +147229.23091876906 +78129.65235541809 +172988.6737286693 +192810.7257884281 +370302.7444286723 +242054.42861603136 +421428.6186046257 +241868.28643901314 +230414.23382748073 +260946.15868731606 +355140.6123199638 +256954.15919674633 +240975.005562117 +174307.8847826274 +209259.45271224956 +239412.51585605682 +192204.45931735114 +217170.33564221542 +509452.52208024194 +171180.79041075622 +279697.25832780614 +163654.64174067977 +218140.36623426943 +125641.06178153519 +285661.72140281665 +158979.34256480326 +197322.86234863038 +238697.6512756997 +141265.85124368453 +194985.019826624 +356677.8981734121 +123591.91963440953 +179882.14771645473 +375294.8530693372 +274301.1456432809 +185995.90226606157 +139156.66845050547 +127219.63372384451 +149151.37564523873 +181038.2273587443 +185374.62099700706 +148867.70507500434 +146002.6669927376 +193719.05509438767 +270680.87566431914 +193210.35533653147 +259425.21528612587 +370464.3917073678 +250220.15663008718 +177594.93185869107 +231977.72360015684 +155923.07726919494 +267837.348809595 +199706.85565032632 +159150.72337304172 +157474.70911800867 +187235.42996041008 +184132.69576462716 +226827.51392049898 +181113.13040392974 +233568.031377493 +131641.69415523368 +132830.79839298365 +163725.24762934627 +278188.555511208 +238066.51202918563 +130491.9304649354 +220951.62501444021 +215469.04315363115 +152080.16547014745 +67715.73652698188 +262368.4466837559 +123839.26637195602 +349221.6485825577 +174384.93598917648 +71779.28975524646 +231094.89517009683 +121636.52762202933 +154563.73206707768 +172073.22111837604 +187142.5111279263 +169984.19565309773 +188183.15785076297 +401381.7109963246 +285654.56523167616 +147830.87509476295 +231187.88282698713 +268751.35327617166 +193809.5879851854 +127178.70559707559 +195550.31020856457 +198289.69814101636 +248858.25930957723 +241123.9293327222 +346049.9637403037 +220675.2501913293 +234170.07853719298 +155223.5430021596 +191693.72484992587 +189940.3265742999 +230028.67989011318 +261109.06090736928 +190511.41010219764 +223916.97613638904 +195679.12394718127 +159054.26098005322 +180429.75708694558 +179915.91637622294 +230001.3278520754 +221461.04071470315 +293056.1205399626 +247450.27354614434 +240961.88346793235 +191280.60739909715 +263599.1334588448 +220459.55410508544 +240878.23290389034 +202288.4645585554 +262370.9063901024 +263786.8259399796 +244984.673396699 +171829.8487311559 +119422.0051418141 +204005.41734467604 +435759.8763019332 +153235.51514062524 +170902.92647515718 +97840.51980701229 +192119.81457259777 +155126.64120416477 +280548.0957021232 +158878.58852324553 +147910.37901828496 +182461.86335769692 +130647.75076885003 +165955.56812411002 +244204.79021135485 +77360.86582653444 +221282.64655540753 +236532.2307353158 +150390.68014526877 +229226.30320002098 +143421.91509388317 +206866.96604822655 +179852.49450080216 +275964.6413752957 +301677.6573949258 +214233.97784612447 +167312.92799762264 +199928.06505402125 +187145.76544026833 +154446.4678503752 +108902.0419510804 +236079.16812810014 +145993.0319445087 +195120.21886832296 +117031.30705394514 +210879.1442634508 +201273.5904716427 +254506.90191337335 +200890.64723557417 +190332.52484097512 +98224.11153472248 +190420.27140419788 +181227.8200180358 +215234.58386562802 +69945.85466367495 +220482.52533528415 +191544.24546945663 +243729.93763168273 +143116.97187962945 +179022.30755276617 +120876.74880016086 +256025.1553781807 +170149.01015280295 +216000.87236906702 +272305.83535731747 +223823.10287235322 +152683.88064910716 +351089.9631853498 +201494.53397537943 +329790.74635405635 +225358.76689429182 +315751.7246984513 +196649.30750871604 +170018.40555512975 +177678.5130093103 +153954.95308237025 +384027.1059797375 +239383.68107212367 +267700.3873226668 +169126.79253408063 +210506.06071911307 +241223.72931653337 +408220.98428599804 +129968.58372228245 +262392.50360963517 +289451.4440374792 +177889.62268766382 +244370.33343423976 +217683.8198325423 +230371.7752676661 +327166.03828673804 +177873.01223869523 +154980.96132515898 +272489.2937544752 +409460.4898509855 +189305.46774298765 +133948.4452266154 +178739.57047126288 +143626.86098976876 +131014.6503171281 +324754.1566117973 +243355.48642816592 +205195.61786403714 +490774.4740705456 +154681.1409435044 +207934.85928931163 +248599.63435573792 +176453.34057496098 +306641.49197321926 +249392.4687843917 +359440.45694790356 +351632.75568741007 +139563.3010167352 +251168.381561325 +175504.7159261761 +251427.37641753966 +253909.31590268592 +225208.44443824285 +163313.76792582517 +254933.54345190583 +199341.79376536564 +191439.21319144897 +186177.73135984258 +198732.34523994368 +334777.85520747054 +361435.3005614319 +326200.8959661165 +294611.4391945192 +288399.119375613 +66934.02912154798 +390113.8688826178 +206461.67071231315 +107071.63041495344 +404552.9534113191 +291003.66327383375 +200614.3228212076 +383008.9263289897 +233662.2222838383 +250690.25667376275 +172476.1937634696 +64660.90022930132 +146421.77564115627 +330982.8054914805 +273424.34896990925 +256132.7445826166 +197939.98667421605 +180591.39833846077 +225024.0078228516 +202085.65702452342 +100301.80475139158 +368547.3336051899 +155902.3191082867 +133942.99581679085 +141270.0411315504 +189192.46249469873 +248863.1651385955 +99351.44425297824 +250930.51265790456 +179377.18743443454 +164972.4064437676 +261047.79937079415 +154192.40489717314 +164506.09715093006 +132637.72603810107 +198470.06813119017 +108496.54240635123 +252546.97968598086 +261356.53082420846 +235755.5300187699 +153524.98238259467 +228524.1291213832 +287014.9609286523 +200838.96119094768 +159254.43095599342 +220855.0437010667 +180375.8527771937 +213927.90663221804 +180448.03150374815 +124710.44425910941 +212625.80515991713 +250297.26861854058 +190602.86460267488 +199847.89637168622 +187241.56184972197 +238472.98787850817 +261612.69341872676 +208463.16628621417 +281695.661185726 +121391.02488533732 +129890.33810805115 +193750.8735242179 +285532.93822711066 +193991.19591923885 +205899.70292101172 +195782.64579525433 +310035.81776498485 +197497.58755663133 +262875.25350749324 +377014.07371317403 +347617.9730736922 +175533.8702750137 +261151.1202687273 +128445.76782378946 +278791.71121056954 +178100.0159503179 +219143.13223540643 +264649.3611806608 +140148.47395244293 +179268.52764542657 +189270.84068482055 +166091.57812366233 +202564.23670848878 +145055.9032043131 +337600.36559447675 +172301.36817755393 +232244.97089890792 +171978.03532733355 +192523.2230698053 +195169.13704453266 +182388.20045352876 +393273.90133627556 +184837.63457115958 +187834.34394564526 +205931.9671730341 +245550.07252296637 +197110.47207034443 +180161.83880594018 +169039.40194385432 +177940.8153725814 +181230.43686986723 +257688.01701663138 +414582.39887383557 +273927.6519041758 +353276.5999998846 +225817.82003797294 +186635.4337860648 +331241.6595289073 +145412.05845518858 +144159.9309912861 +181025.68641149966 +190358.34901996702 +158411.29910086546 +205509.12464638904 +138826.79468682368 +176294.61496884786 +197384.2592688496 +347467.24150243896 +187327.91851397557 +154918.11700127998 +179408.1610247354 +278284.0204480753 +118123.40315739665 +169050.21045292087 +279092.34566379845 +196702.4292587455 +193079.1329871864 +159581.5833369543 +178768.26911220868 +320172.5645480549 +198849.84750962377 +117256.31473107763 +299464.176361879 +260742.21336321367 +154163.36613105517 +167710.82694293073 +361578.0961604814 +191098.45228325613 +180221.52148013344 +102406.34359089559 +238959.57393522168 +153211.18953715582 +154553.225734596 +235311.52825142862 +396060.43707378075 +225811.45752621832 +161673.69880605603 +181142.56911832376 +218554.02701486822 +215567.91963950655 +178582.84583970526 +176088.0740695491 +201945.38212014988 +200994.18508366134 +184569.3738788763 +299591.05590571027 +196951.32469069934 +153073.6991519858 +126938.20731318588 +203827.9668489013 +187328.94942976043 +154953.95458626255 +201523.36556908648 +267016.74675359833 +117050.7512662539 +176603.95893639748 +453762.38138172723 +174449.94454098272 +224290.63168255336 +320857.2411636048 +126793.4577021125 +185214.7959127144 +170931.32535904858 +251077.767910602 +86867.87004983053 +222143.26519752905 +170229.234194031 +159869.29540165697 +383016.37116024806 +226845.10178076988 +127387.96309121413 +261877.1482545877 +163899.18678123978 +209056.79837643346 +133463.99082291435 +122528.49156693871 +117338.93420890746 +142431.57594608897 +255791.05578766874 +156009.28325507412 +177903.5298097137 +217815.0070798236 +377387.85725052544 +166824.22564807718 +282815.4144255527 +165194.65174138837 +180716.88567790855 +222258.61448428885 +168191.54647423644 +188688.95190547305 +153832.38772944766 +165474.35325897313 +246429.82386934164 +200354.56169350698 +330980.759366224 +137131.6307509224 +136461.43517574598 +178088.32619876193 +228708.5560518457 +175005.9972546695 +289643.72050145053 +339133.77655354014 +68425.43673515448 +174680.77051358044 +179393.63335624544 +216506.54984896042 +175194.8320827514 +127693.64631354572 +207576.20195867823 +370713.7507630686 +261590.34003737837 +193859.6753327647 +142900.85368733283 +154378.5037818811 +251940.262698216 +152040.501154527 +239581.6732523159 +237155.89754067376 +268828.4534317733 +211875.770213038 +327005.3825793547 +474169.9225189422 +180100.31734428578 +190285.5681601378 +153627.73461662183 +97022.78044596859 +130108.09366302784 +188045.76506648748 +296152.63200398965 +316187.91229641356 +181977.17512876578 +293605.719336674 +64611.9487015381 +139559.30442987187 +219685.9832412292 +145407.19547683588 +328075.5308865882 +238431.37571197673 +394101.92994675355 +66559.9180514689 +237821.6656723923 +191992.8466771971 +287476.5444093911 +145657.94859163786 +114041.87352886824 +244845.3010952724 +189773.86400504262 +132698.18331296105 +127001.79434157557 +195033.37896702683 +160681.34455983868 +131307.37752286362 +204406.89125964115 +268385.25696085225 +170052.5261062795 +180961.39262148418 +260747.09731962817 +195527.28732146288 +211104.26761000333 +113336.00155800395 +169949.2472701243 +122219.9521169443 +135794.6332685244 +288912.3142314821 +189942.28577906804 +140119.45937180604 +234198.9904414655 +191567.4742655516 +174409.43674004535 +163701.91149030734 +137232.60111333424 +202512.84097781664 +179401.48401787513 +278419.1370597912 +376393.5896192808 +240153.58631941702 +175462.8766622458 +290967.26796446746 +266528.9130149012 +385094.71859146655 +300950.0884522642 +156115.48209013153 +343060.25603137247 +242911.43622373216 +178509.18914970136 +237399.54348459022 +126913.42506938905 +165401.60154879536 +162512.68652613126 +380384.85110448586 +189680.2030132273 +167779.80580033435 +192600.9487058048 +345444.5680061901 +231306.9371326909 +196685.01181426595 +160064.33255956235 +203087.17086251703 +230751.71909805073 +192282.96298910852 +109598.28344091606 +229121.97170191546 +222829.29642656312 +153124.37348956143 +226335.90229585397 +111730.81574754084 +187411.79849238202 +267907.4138442095 +319963.6690373591 +372065.7425707296 +173105.08530918977 +197820.4635962677 +152315.00746584815 +416053.0140016465 +144210.21641844054 +173007.41732597415 +167793.16470218834 +113889.40531228468 +184392.1898173877 +142204.37380489815 +193335.7440367382 +133999.40538372638 +110047.14673484671 +123662.81661075965 +216927.0065347988 +275330.4232690015 +205885.92070171915 +193188.778323121 +360795.10013109964 +246907.19566172027 +195256.718430703 +167177.73118429753 +176366.67706451783 +98050.32244535936 +172780.64652656266 +177535.32178270872 +174162.31965816853 +165973.6485494334 +200519.211207981 +176794.61918875002 +270123.7592532158 +169291.6537148785 +118953.58307729998 +121848.30135749545 +146302.75984329457 +174129.59589745698 +148017.8118328885 +247451.57674467092 +266370.52537017595 +267377.08193616976 +190911.49361908826 +174556.35924718156 +377594.2782927283 +219066.76855965986 +205871.862494858 +212577.00377297134 +181153.902871307 +99578.89785349183 +205555.5837281235 +264089.16681620834 +298899.9284579514 +207258.3267021292 +179358.90500912146 +162324.03699802366 +514884.70363156695 +209484.5328160468 +267378.8703053381 +163828.7760857895 +178639.1022422607 +240270.62263817614 +160274.91772569928 +247683.77907697938 +229862.4910474353 +260484.56664435274 +179491.14542230894 +244533.11039726296 +154847.49180015005 +92113.63562663933 +178313.07629263416 +166109.71639848058 +205001.9980764782 +368538.91408412793 +241010.50904364878 +381530.85385034437 +189924.43481995544 +250291.0520868402 +287327.58090746345 +196899.29104323057 +74482.4148243041 +380025.9819875018 +166763.36135979908 +80279.86995539184 +185809.4972530864 +190366.48704078965 +262470.8579788562 +188146.52612138283 +144905.6124259202 +409422.77817060443 +199229.29638455462 +197975.79868344177 +242297.15630389244 +264289.9878603585 +134223.17664913755 +181332.89249629955 +160686.56269768951 +259498.05688376725 +272749.0566942106 +126627.60736854227 +157003.37486847438 +366375.4560221248 +484181.40613396 +144677.26642257496 +129349.4234254411 +126562.74948428382 +401134.0064873465 +322960.7945282788 +249053.7657089867 +140387.6872390796 +157725.0046677948 +175651.85520073172 +136347.50465962972 +215951.29667239255 +235546.25893289247 +155310.08409602358 +305743.45769196685 +195486.65585164676 +153612.43179889192 +126686.65212805057 +258795.54455958566 +403883.39375122567 +192485.95853552522 +166999.25947757676 +345582.24281544663 +142184.0573134615 +266226.3721289427 +185005.2841958572 +184025.40231147315 +168799.03658700865 +168092.10604008552 +338235.9233130511 +318536.18093849724 +175793.0348598562 +76374.08602379083 +160296.9847317529 +180748.26253227112 +266001.33918294107 +221989.91162560458 +127434.62443182334 +151109.43496777245 +156400.5272653887 +265161.8311352517 +280250.406617347 +237575.18674427737 +158107.03453633556 +225643.36336517736 +336428.9422228134 +130136.27120602719 +167388.86069142423 +370828.4878627317 +213800.08283297176 +152122.00155439458 +94189.51356667036 +157438.66009984937 +323331.21711120225 +173492.63041020982 +138864.9719750681 +180357.19651313362 +204482.4113593591 +273830.00676676625 +158815.1116823661 +194997.35467292008 +166957.39507902897 +210388.0766511609 +140719.30383664859 +228249.5659481968 +209871.83002499398 +226972.4012449323 +75459.29463537062 +196242.43176478602 +125196.27841374592 +248781.01834397874 +243296.38730377378 +167446.03761173945 +339120.560162986 +259385.51547565754 +160706.81621333418 +184182.23125910686 +223213.51991209813 +179030.7905180886 +228893.52078408017 +185951.18953683466 +196748.10068195843 +234869.35476852197 +175895.99836695852 +412122.1467388112 +154446.61228134553 +212200.2280129179 +181920.38707886657 +269174.79411273694 +221851.5519192441 +176863.39782972785 +186568.89648021443 +152987.82779804044 +330886.2030348428 +180571.31065485958 +190132.36200309542 +155075.39692439671 +236266.8097856425 +267209.69523507386 +299354.07587791304 +155768.07846003302 +482732.7750987069 +195449.2383128363 +253845.5045107864 +238940.4557087165 +312562.0787724133 +231095.8266415507 +153589.05306183736 +174183.18854733204 +132074.56093297896 +284611.05340664677 +175916.63298922576 +170498.05992498368 +192613.6700783594 +168926.78977822498 +247376.07020420572 +163697.8961255211 +189538.7744591918 +153785.67657926836 +305381.72119701013 +216319.24391483175 +248604.88275169051 +178016.37302728053 +161121.94194240362 +296290.2053937466 +181328.6168619772 +205008.9523526504 +262125.7212643105 +254454.74856600814 +310505.50048906135 +191272.52263772374 +110670.13800326634 +245269.55001272855 +117408.86688559182 +129623.53843590632 +257858.64299392517 +323811.8948269824 +233083.54040430364 +192395.70750787645 +92486.37097925818 +273010.20305331686 +193394.18618862503 +101401.90557363005 +147070.0436521162 +207163.2245488553 +278480.91580721893 +337960.02910469245 +278507.4440231322 +230490.3933627485 +127375.62591879684 +193866.0402184195 +200635.71207219947 +151693.393764789 +145757.5891177767 +198064.88273816623 +277336.7639690759 +226247.31255932536 +294002.98969135643 +144341.35670670058 +212433.24145214687 +214219.68680445186 +167918.2006560246 +127305.88320662496 +254389.640649759 +210305.56027388136 +218219.26658801103 +197500.50925824465 +345306.9515765752 +250628.53017736512 +218709.4544373395 +264419.0730824983 +185225.99498201135 +212203.55486619336 +222424.42398487063 +111002.18821487021 +164705.99096497748 +198159.298944281 +346066.52042301185 +312547.18628600205 +168624.2087744524 +181277.86966533537 +292251.6903855177 +187159.3148506486 +142606.16901130485 +182692.6811238612 +181080.53331432905 +127319.02211847111 +174142.25457691005 +126562.74948428382 +105295.3472599951 +323899.0411949394 +250569.71641415008 +111427.94629286286 +267860.0905095363 +152285.3967170403 +65388.02480817655 +391440.5280398486 +240477.66813721752 +453377.2636957584 +152057.29274808493 +242497.75192380822 +476855.09518055746 +244900.95437320496 +243181.37779084296 +159035.64209435662 +179838.78116427767 +194529.37726040668 +146483.11261958457 +274139.28997124743 +366182.760144383 +325238.75533198396 +180681.63847678647 +150126.87447707186 +256531.78868055737 +141458.19757142777 +104066.7217543591 +130934.78679197004 +155508.3078311567 +200336.02257172918 +432053.8913163966 +285457.1780787378 +198676.93227847555 +321982.8555363175 +248519.6115106322 +177430.50509021056 +349538.3447147101 +152416.93277210486 +153265.0585226442 +179033.3205914889 +201332.86629451698 +66214.18187263631 +246489.74138481592 +253346.19975065993 +138397.74370454781 +196003.8119979107 +254531.1127713034 +144219.3434919652 +285778.98880621576 +325712.33170146175 +179609.005739481 +210295.95871925753 +240574.15245523685 +236598.22437754134 +65767.74610839687 +376089.71876643604 +150735.45836933813 +250693.88842567414 +229615.83163915397 +176603.5048114023 +198972.38034400897 +260991.0855970167 +291137.0032439356 +196041.87661671103 +244688.9731434468 +204459.13805834058 +182673.64488393927 +157608.27250874267 +151722.91660158904 +241003.09631357575 +166200.81005012925 +186349.68657701797 +151184.01784288164 +188962.92932477072 +174059.83927460367 +180738.91540382733 +266544.6267285394 +126855.14125630804 +168544.95134657557 +171125.30147964662 +203984.94091599534 +200626.90081320217 +283354.2213212675 +132167.97410116124 +200275.1787877686 +227766.47525784746 +197781.04938730403 +377578.86501901684 +209651.58384313816 +221126.42759467987 +171704.0565371663 +191410.59048056515 +328080.8625737825 +230407.23043774735 +207747.85865074833 +182155.08255083903 +405763.64604132535 +211572.02462911682 +191085.85527749913 +207436.12782937393 +163431.40621295664 +173998.68576407948 +245617.92144587752 +179711.47599591807 +378250.7943864049 +254349.44289203023 +420287.90666665917 +211931.33763803344 +70768.64087670256 +168996.0985196238 +222388.3909762546 +330682.8412036622 +137913.1158971137 +124488.5567780238 +250344.83617599815 +231894.0445585945 +175641.7787997875 +231183.73885235065 +237460.83322449573 +185860.0958104101 +143778.1555161166 +140119.0369223041 +160996.1893515986 +145735.40618350854 +122357.64114145019 +133660.69349772832 +185788.7331821124 +138660.63782723155 +168619.8231495909 +209310.31909590386 +175832.36932876558 +187813.85161544778 +145535.04175540418 +196031.84160099959 +108406.45083516305 +317908.7946658831 +170768.3496411853 +164668.36531035998 +196397.21607681073 +116302.73988092486 +223595.04421091275 +214915.02958002914 +186334.60693903535 +219763.1867566218 +107174.1079230352 +228070.5742948734 +199530.42257109986 +397699.16178408795 +256504.43407653816 +279505.8046932191 +245542.35754503697 +175356.47983372817 +113717.84115789518 +245194.26166399103 +155500.21287868905 +173281.82323066515 +92907.59175609957 +297188.4874763094 +182330.50347241588 +128125.81896746357 +194142.10181167195 +336784.65690927906 +131576.665176131 +212445.83363110825 +273969.30589889246 +189440.63111649363 +193025.66712415218 +259612.79592950453 +70988.0405803407 +257256.73038642982 +153443.24904701737 +180137.63643036628 +133842.49578904893 +215876.51954165084 +451157.26045939355 +134739.6794893529 +179830.77115140355 +296915.00358199986 +272339.79087424517 +182379.1473623154 +255645.26782934624 +178845.5330209928 +278663.62672736327 +177017.29509470693 +184146.43117978697 +204013.74993600912 +126855.14125630804 +183021.7390512142 +174773.62840986502 +259366.23584889577 +298529.42710972496 +159492.87347543603 +236346.6480385029 +160157.11521063079 +196675.76968787305 +209459.37868272857 +197301.56444091414 +321988.40875048155 +241682.7452272124 +180422.60508220308 +372195.0201359382 +150995.38632420168 +187911.90110867328 +169826.16912062274 +133338.3161138769 +193880.63476535954 +224887.31312707975 +185044.58207350003 +261548.26986169277 +147622.41979031332 +232732.51763521234 +190363.28046383325 +224332.47961131032 +168973.35460177838 +185249.3746087483 +105360.31474237089 +227862.26333983152 +172350.36769208245 +165602.13002681473 +319405.97483705875 +326457.0172306393 +292501.767840397 +391012.11473288434 +200953.5954287339 +248973.8583866998 +206575.02347533457 +149603.9915492714 +325813.807134705 +252166.5018181398 +179006.94862723426 +254953.6539339151 +228857.65133086944 +190032.832099935 +126924.15334052291 +443867.1088554844 +178410.1021540808 +207384.75681549226 +240163.59314438739 +263386.54656087066 +377572.008580319 +189483.98957345137 +177086.57082712732 +76287.57792067959 +153791.6368011678 +196105.59869240742 +126924.15334052291 +183874.41316415105 +144590.67412314072 +171675.13511506963 +179986.57665279444 +190752.3928827951 +196704.0032361481 +179457.91515177107 +200170.9528909567 +256081.70020260915 +144352.40948323943 +125772.18677041301 +243793.1961813157 +210003.2373066147 +65942.29321743174 +201643.30361980677 +197782.8429729531 +203230.77237608942 +149602.6677748424 +182335.52467336998 +407921.741961918 +174487.507465295 +207647.5423101895 +291381.75720470527 +181227.35592706708 +147938.3726687317 +171670.6715844878 +160443.18510809154 +273849.53928018146 +124856.75162490984 +179488.07963362767 +176645.7115088086 +205643.03407053376 +126725.16915778547 +251198.77551832423 +149073.28347875865 +189732.26062024213 +357354.60258425126 +157654.95830711361 +185978.73800800776 +224862.32125591784 +194289.1595303489 +178549.8176389081 +154258.62579652664 +364343.0399817954 +240922.2104443172 +232917.42316003234 +325441.25550225854 +146275.8641622631 +401860.7442554066 +149954.45065731084 +183132.88059959546 +279315.09882854816 +179051.34205520814 +184138.5797596969 +117738.48926576272 +218513.83360461055 +127341.83939573215 +171111.86498336834 +286257.94855960604 +183711.84291535665 +460015.7264020464 +284869.9497346415 +228792.8646796134 +246012.04307070674 +259533.9701603163 +275267.0692451222 +202503.72179060985 +194508.92328711267 +234481.6624323464 +334518.1884466357 +176759.1104696104 +180442.59675492617 +263167.7973933793 +186382.05207964734 +262081.5023973419 +188792.44199042182 +145049.57398320097 +151111.28991906415 +189810.04094095482 +268324.93543163134 +200009.79411056783 +197622.0440146638 +216164.53707910032 +168805.71871497322 +180491.01335707898 +382346.6092644537 +232515.39915039428 +318907.37253005756 +198044.42229918056 +137318.77737119715 +171795.4411481831 +169087.22157221995 +169732.6964486531 +224160.78578331086 +260258.73714972913 +174377.51558112958 +227699.90862666385 +257319.28580252678 +223943.02037248036 +174348.35597230203 +289509.9110376346 +268924.2188614462 +149815.9752845057 +199889.44081242662 +328624.15455226885 +355232.81545470643 +256387.03592112463 +156020.08336668386 +183932.5651605596 +106614.63718483773 +170096.38448829038 +163749.610592017 +176147.8199072072 +168670.0711807759 +242311.02316048095 +206580.09535152273 +364285.10233680584 +168930.9522044272 +199969.09221005058 +381603.2238853473 +155644.33659691375 +190075.71564693967 +250296.4111953137 +372305.449846679 +344364.2800319369 +101285.76693248599 +168172.83559181087 +179914.56241328325 +291129.67177376064 +171413.49820328792 +149152.81653207226 +97517.64705813388 +193425.43427557137 +238029.8947952611 +233119.60444843912 +173986.50940254977 +311382.5306237302 +155533.56668704952 +258645.45548424195 +111088.43524147426 +246080.28048773186 +300804.15506052016 +407434.7548022283 +181101.23607697664 +253942.2519193583 +223234.8379955783 +268696.2448715941 +228136.02654223552 +194466.4998364173 +266530.19595707295 +285003.4190094245 +224741.84465115838 +141886.62167294722 +163205.68035492333 +265708.41420466016 +166845.56733344644 +179853.24335296484 +166411.01823074248 +178899.30650213792 +190154.03662060987 +145783.48200044053 +322996.74227958824 +125559.68375378642 +168606.57601467925 +370399.0016278991 +165478.64608506812 +215493.7415689709 +248497.20941030336 +183922.89459725018 +146396.88708849595 +200911.20399721357 +265560.964310026 +234991.35224695734 +106250.80409285305 +208817.80683153874 +316836.0786427753 +259163.42338110576 +322740.02218703023 +299138.74197795475 +156153.83231818545 +216911.47672909885 +176123.25417386988 +235322.57762243797 +210218.57601064024 +341251.24047075416 +251261.54992234596 +239242.82556392637 +195503.76711210608 +159237.70934486174 +101921.64686894251 +110185.08472913053 +130013.00653002285 +449893.0117198127 +363418.2569730059 +155765.9018603321 +172962.0392358917 +166378.89400373408 +287026.06912354974 +182282.45652446404 +77440.36546557196 +127132.2074032688 +170523.26223564267 +145584.37427769345 +405728.1278981616 +371486.78816599434 +283251.52433485404 +188247.64338472203 +195018.988499505 +211298.65149015494 +321022.7346352402 +189530.4690523632 +187289.0723907453 +246670.21931995745 +124478.9136248579 +322968.65527946403 +218297.6864776638 +262240.2608987086