Files
MachLePublic/PW-4/pw4-linear-regression-stud.ipynb
Joachim Bach 9f8c3ba910 forgot to save
2025-10-11 12:13:01 +02:00

1236 lines
452 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "markdown",
"id": "18bdba27",
"metadata": {},
"source": [
"# PW4 - Linear Regression"
]
},
{
"cell_type": "markdown",
"id": "3629bfdf",
"metadata": {},
"source": [
"## Imports"
]
},
{
"cell_type": "code",
"execution_count": 454,
"id": "d6eb2aab",
"metadata": {},
"outputs": [],
"source": [
"import random\n",
"import pandas as pd\n",
"import numpy as np\n",
"from numpy.linalg import inv\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"id": "e69e5d68",
"metadata": {},
"source": [
"## Load data"
]
},
{
"cell_type": "markdown",
"id": "ba14bf9f",
"metadata": {},
"source": [
"Define the path to the file containing the data"
]
},
{
"cell_type": "code",
"execution_count": 455,
"id": "5f3f924f",
"metadata": {},
"outputs": [],
"source": [
"datafile = \"lausanne-appart.csv\""
]
},
{
"cell_type": "markdown",
"id": "adfab574",
"metadata": {},
"source": [
"Read the data"
]
},
{
"cell_type": "code",
"execution_count": 456,
"id": "5108e239",
"metadata": {},
"outputs": [],
"source": [
"dataset = pd.read_csv(datafile)"
]
},
{
"cell_type": "markdown",
"id": "5a97d4cc",
"metadata": {},
"source": [
"Display first rows"
]
},
{
"cell_type": "code",
"execution_count": 457,
"id": "34222aff",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>living_area</th>\n",
" <th>nb_rooms</th>\n",
" <th>rent_price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>69</td>\n",
" <td>3.0</td>\n",
" <td>1810</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>95</td>\n",
" <td>3.5</td>\n",
" <td>2945</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>21</td>\n",
" <td>1.5</td>\n",
" <td>685</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>20</td>\n",
" <td>1.0</td>\n",
" <td>720</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>33</td>\n",
" <td>1.5</td>\n",
" <td>830</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" living_area nb_rooms rent_price\n",
"0 69 3.0 1810\n",
"1 95 3.5 2945\n",
"2 21 1.5 685\n",
"3 20 1.0 720\n",
"4 33 1.5 830"
]
},
"execution_count": 457,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dataset.head()"
]
},
{
"cell_type": "markdown",
"id": "2ec4b8eb",
"metadata": {},
"source": [
"## Exercise 1 - Visualize the data"
]
},
{
"cell_type": "markdown",
"id": "dbf6b9cf",
"metadata": {},
"source": [
"a) Plot a histogram to visualize the distribution of the renting price"
]
},
{
"cell_type": "code",
"execution_count": 458,
"id": "ad07d4cd",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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zc1VcXGxhg4dquDgYAUHBys7O1vPPPOMgoODFRMT06rm4+siIyN100036dixY63ufSFJcXFx6t+/v19bv379fF+3tcbP0D//+c/avn27vv/97/vaWuN741IIMtdYYmKiYmNjlZWV5WsrKyvTvn375PV6JUler1clJSXKzc31jdmxY4fq6uo0cuRI35jdu3erpqbGN2bbtm3q06ePOnbseI2O5vKMMZo9e7Y2btyoHTt2KDEx0a9/2LBhCgkJ8ZuLgoICnTx50m8ujhw54vehtG3bNkVERPg+7Lxer98+Loy5sI9AVldXp6qqqlY3F2PHjtWRI0eUl5fn24YPH66pU6f6/t2a5uPrKioq9NFHHykuLq7VvS8k6bbbbrvoZxr+9Kc/qXv37pJa12foBatXr1aXLl00YcIEX1trfG9cktNnG1+PysvLzcGDB83BgweNJLN06VJz8OBB8+c//9kY8+Wlg5GRkebll182hw8fNvfff3+9lw4OGTLE7Nu3z7z11lumd+/efpcOlpSUmJiYGPPd737X5Ofnm/Xr15u2bdsG1KWDDz30kPF4PGbXrl1+lxB+/vnnvjGzZs0yCQkJZseOHWb//v3G6/Uar9fr679w+eA999xj8vLyzJYtW0x0dHS9lw/+5Cc/MR988IFZvnx5QF4++Nhjj5ns7Gxz/Phxc/jwYfPYY48Zl8tl3njjDWNM65qL+nz9qiVjWs98PPzww2bXrl3m+PHjZs+ePSYpKcl07tzZFBcXG2Nazzxc8M4775jg4GDzs5/9zBw9etT8z//8j2nbtq154YUXfGNay2eoMcbU1taahIQE8+ijj17U19reG5dCkGkBO3fuNJIu2qZNm2aM+fLywQULFpiYmBjjdrvN2LFjTUFBgd8+PvvsMzNlyhTTvn17ExERYWbMmGHKy8v9xhw6dMjcfvvtxu12m27dupklS5Zcq0NskPrmQJJZvXq1b8z58+fNv/7rv5qOHTuatm3bmn/6p38yZ86c8dvPiRMnzPjx4014eLjp3Lmzefjhh01NTY3fmJ07d5pbbrnFhIaGmp49e/q9RqB48MEHTffu3U1oaKiJjo42Y8eO9YUYY1rXXNTn74NMa5mPyZMnm7i4OBMaGmq6detmJk+e7PebKa1lHr7u1VdfNQMHDjRut9v07dvX/PrXv/brby2focYYs3XrViPpouMzpnW+N+rjMsYYR5aCAAAArhLnyAAAAGsRZAAAgLUIMgAAwFoEGQAAYC2CDAAAsBZBBgAAWIsgAwAArEWQAQAA1iLIAGj1XC6XNm3a5HQZAJqAIAOgSaZPny6XyyWXy6WQkBAlJibqkUceUWVlZbO+zqJFi3TLLbc06z7/3pkzZzR+/PgWfQ0ALSPY6QIA2GvcuHFavXq1ampqlJubq2nTpsnlcuk///M/nS6tQaqrqxUaGqrY2FinSwHQRKzIAGgyt9ut2NhYxcfHa+LEiUpKStK2bdt8/XV1dcrIyFBiYqLCw8M1ePBgvfTSS77+Xbt2yeVyKSsrS8OHD1fbtm116623qqCgQJK0Zs0aLV68WIcOHfKt/qxZs6beWqZPn66JEydq8eLFio6OVkREhGbNmqXq6mrfmG984xuaPXu25s2bp86dOys5OVnSxV8t/eUvf9GUKVMUFRWldu3aafjw4dq3b5+v/+WXX9bQoUMVFhamnj17avHixfriiy+aY0oBNBIrMgCaRX5+vt5++211797d15aRkaEXXnhBK1euVO/evbV792498MADio6O1l133eUb9/jjj+uXv/yloqOjNWvWLD344IPas2ePJk+erPz8fG3ZskXbt2+XJHk8nkvWkJWVpbCwMO3atUsnTpzQjBkz1KlTJ/3sZz/zjVm7dq0eeugh7dmzp959VFRU6K677lK3bt30yiuvKDY2VgcOHFBdXZ0k6c0339T3vvc9PfPMM7rjjjv00Ucf6Yc//KEkaeHChU2fQABN4/TttwHYadq0aaZNmzamXbt2xu12G0kmKCjIvPTSS8YYYyorK03btm3N22+/7fe8mTNnmilTphhjjNm5c6eRZLZv3+7r37x5s5Fkzp8/b4wxZuHChWbw4MENqicqKsqcO3fO15aZmWnat29vamtrjTHG3HXXXWbIkCEXPVeS2bhxozHGmOeee8506NDBfPbZZ/W+ztixY83Pf/5zv7b//u//NnFxcVesEUDzY0UGQJONHj1amZmZOnfunJYtW6bg4GClpKRIko4dO6bPP/9cd999t99zqqurNWTIEL+2QYMG+f4dFxcnSSouLlZCQkKj6hk8eLDatm3re+z1elVRUaFTp075VoqGDRt22X3k5eVpyJAhioqKqrf/0KFD2rNnj98qT21trSorK/X555/7vT6AlkeQAdBk7dq1U69evSRJzz//vAYPHqxVq1Zp5syZqqiokCRt3rxZ3bp183ue2+32exwSEuL7t8vlkiTfVzktUfPlhIeHX7a/oqJCixcv1qRJky7qCwsLu6raADQeQQZAswgKCtJPf/pTpaWl6Z//+Z/Vv39/ud1unTx50u98mMYKDQ1VbW1tg8YeOnRI58+f94WRvXv3qn379oqPj2/w6w0aNEi//e1vdfbs2XpXZYYOHaqCggJfgAPgLK5aAtBsvv3tb6tNmzZavny5OnTooB//+MeaP3++1q5dq48++kgHDhzQs88+q7Vr1zZ4nz169NDx48eVl5env/71r6qqqrrk2Orqas2cOVPvv/++Xn/9dS1cuFCzZ89WUFDDP+qmTJmi2NhYTZw4UXv27NHHH3+s//u//1NOTo4k6cknn9Tvfvc7LV68WO+9954++OADrV+/Xk888USDXwNA8yHIAGg2wcHBmj17tp566imdO3dO//7v/64FCxYoIyND/fr107hx47R582YlJiY2eJ8pKSkaN26cRo8erejoaL344ouXHDt27Fj17t1bd955pyZPnqxvfvObWrRoUaOOITQ0VG+88Ya6dOmie++9VzfffLOWLFmiNm3aSJKSk5P12muv6Y033tCIESM0atQoLVu2zO9qLQDXjssYY5wuAgCu1vTp01VSUsKtBoBWhhUZAABgLYIMAACwFl8tAQAAa7EiAwAArEWQAQAA1iLIAAAAaxFkAACAtQgyAADAWgQZAABgLYIMAACwFkEGAABY6/8BLH2YBDueK+8AAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Your code here\n",
"\n",
"plt.hist(dataset[\"rent_price\"])\n",
"plt.xlabel(\"Rent price\")\n",
"plt.ylabel(\"Count\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "602770ae",
"metadata": {},
"source": [
"b) Plot a histogram to visualize the distribution of the living area"
]
},
{
"cell_type": "code",
"execution_count": 459,
"id": "ac0c9f07",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAj0AAAGwCAYAAABCV9SaAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAJEpJREFUeJzt3XtwVPX9//HXYkK4hN2QAEnQhARELnJREHFtpQqRgJQBia3StCKD1wZUUIupIuLYgdEWqBbFVi46FbG04A3EgWCCl0AhchGUjDBBqJBEpckmaC6Sz/eP/tifK0Fz2eTs8nk+ZnaGPefsyXtzJstzTs5uXMYYIwAAgHNcG6cHAAAAaA1EDwAAsALRAwAArED0AAAAKxA9AADACkQPAACwAtEDAACsEOH0AC2trq5Ox44dU6dOneRyuZweBwAANIAxRhUVFerevbvatAnOOZpzPnqOHTumpKQkp8cAAABNcPToUV1wwQVB2dc5Hz2dOnWS9L9vmtvtdngaAADQED6fT0lJSf7/x4PhnI+e07/ScrvdRA8AAGEmmJemcCEzAACwAtEDAACsQPQAAAArED0AAMAKRA8AALAC0QMAAKxA9AAAACsQPQAAwApEDwAAsALRAwAArED0AAAAKxA9AADACkQPAACwAtEDAACsQPQAAAArRDg9ANAQKQ+ud3qERju8YJzTIwAAvoMzPQAAwApEDwAAsALRAwAArED0AAAAKxA9AADACkQPAACwAtEDAACsQPQAAAArED0AAMAKRA8AALAC0QMAAKxA9AAAACsQPQAAwApEDwAAsALRAwAArED0AAAAKxA9AADACkQPAACwAtEDAACsQPQAAAArED0AAMAKRA8AALAC0QMAAKxA9AAAACsQPQAAwApEDwAAsALRAwAArBAy0bNgwQK5XC7de++9/mVVVVXKyspSXFycoqOjlZGRoZKSEueGBAAAYSskomfHjh167rnnNGjQoIDlM2fO1BtvvKE1a9YoLy9Px44d06RJkxyaEgAAhDPHo6eyslKZmZn629/+ps6dO/uXl5eXa9myZVq4cKFGjhypoUOHasWKFfrggw+0bds2BycGAADhyPHoycrK0rhx45SWlhawvKCgQLW1tQHL+/btq+TkZOXn5591f9XV1fL5fAE3AACACCe/+OrVq/Xhhx9qx44dZ6wrLi5W27ZtFRMT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BwAAWIHoAQAAViB6AACAFYgeAABgBaIHAABYgegBAABWIHoAAIAViB4AAGAFR6Nn69atGj9+vLp37y6Xy6VXX301YL0xRo888ogSExPVvn17paWl6dNPP3VmWAAAENYcjZ6TJ09q8ODBWrJkSb3rn3jiCT311FNaunSptm/fro4dOyo9PV1VVVWtPCkAAAh3EU5+8bFjx2rs2LH1rjPGaPHixXr44Yc1YcIESdKLL76o+Ph4vfrqq7rppptac1QAABDmQvaanqKiIhUXFystLc2/zOPxaPjw4crPzz/r46qrq+Xz+QJuAAAAIRs9xcXFkqT4+PiA5fHx8f519Zk/f748Ho//lpSU1KJzAgCA8BCy0dNU2dnZKi8v99+OHj3q9EgAACAEhGz0JCQkSJJKSkoClpeUlPjX1ScqKkputzvgBgAAELLRk5qaqoSEBOXk5PiX+Xw+bd++XV6v18HJAABAOHL03VuVlZU6ePCg/35RUZF2796t2NhYJScn695779Xjjz+u3r17KzU1VXPmzFH37t01ceJE54YGAABhydHo2blzp6655hr//VmzZkmSpkyZopUrV+p3v/udTp48qdtvv11lZWX66U9/qo0bN6pdu3ZOjQwAAMKUyxhjnB6iJfl8Pnk8HpWXlwf9+p6UB9cHdX8A7HB4wTinRwBCXkv8/x2y1/QAAAAEE9EDAACsQPQAAAArED0AAMAKRA8AALAC0QMAAKxA9AAAACsQPQAAwApEDwAAsALRAwAArED0AAAAKxA9AADACkQPAACwAtEDAACsQPQAAAArED0AAMAKRA8AALAC0QMAAKxA9AAAACsQPQAAwApEDwAAsALRAwAArED0AAAAKxA9AADACkQPAACwQoTTAwCAbVIeXO/0CI12eME4p0cAmo0zPQAAwApEDwAAsALRAwAArED0AAAAKxA9AADACkQPAACwAtEDAACsQPQAAAArED0AAMAKRA8AALAC0QMAAKxA9AAAACsQPQAAwApEDwAAsALRAwAArBDh9AAAgNCX8uB6p0dotMMLxjk9AkIMZ3oAAIAViB4AAGAFogcAAFiB6AEAAFYgegAAgBWIHgAAYAWiBwAAWIHoAQAAViB6AACAFYgeAABgBaIHAABYgegBAABWIHoAAIAViB4AAGAFogcAAFghwukBAABoCSkPrnd6hEY7vGCc0yOc0zjTAwAArED0AAAAKxA9AADACkQPAACwAtEDAACsQPQAAAArED0AAMAKfE4PAAAhgs8Walmc6QEAAFYgegAAgBWIHgAAYIWwiJ4lS5YoJSVF7dq10/Dhw/Xvf//b6ZEAAECYCfnoeeWVVzRr1izNnTtXH374oQYPHqz09HSVlpY6PRoAAAgjIR89Cxcu1G233aapU6eqf//+Wrp0qTp06KDly5c7PRoAAAgjIf2W9ZqaGhUUFCg7O9u/rE2bNkpLS1N+fn69j6murlZ1dbX/fnl5uSTJ5/MFfb666q+Dvk8AAMJJS/z/+t39GmOCts+Qjp4vv/xSp06dUnx8fMDy+Ph4HThwoN7HzJ8/X/PmzTtjeVJSUovMCACAzTyLW3b/FRUV8ng8QdlXSEdPU2RnZ2vWrFn++3V1dTpx4oTi4uLkcrkcnMxOPp9PSUlJOnr0qNxut9PjWI1jEVo4HqGDYxE6vnssOnXqpIqKCnXv3j1o+w/p6OnSpYvOO+88lZSUBCwvKSlRQkJCvY+JiopSVFRUwLKYmJiWGhEN5Ha7eTEJERyL0MLxCB0ci9Bx+lgE6wzPaSF9IXPbtm01dOhQ5eTk+JfV1dUpJydHXq/XwckAAEC4CekzPZI0a9YsTZkyRZdddpkuv/xyLV68WCdPntTUqVOdHg0AAISRkI+eG2+8UV988YUeeeQRFRcX65JLLtHGjRvPuLgZoSkqKkpz584941eOaH0ci9DC8QgdHIvQ0dLHwmWC+V4wAACAEBXS1/QAAAAEC9EDAACsQPQAAAArED0AAMAKRA+a7dFHH5XL5Qq49e3b17++qqpKWVlZiouLU3R0tDIyMs74wEk03datWzV+/Hh1795dLpdLr776asB6Y4weeeQRJSYmqn379kpLS9Onn34asM2JEyeUmZkpt9utmJgYTZs2TZWVla34LM4NP3YsbrnlljN+VsaMGROwDcciOObPn69hw4apU6dO6tatmyZOnKjCwsKAbRry2nTkyBGNGzdOHTp0ULdu3fTAAw/o22+/bc2nEvYaciyuvvrqM3427rzzzoBtgnEsiB4ExcUXX6zjx4/7b++9955/3cyZM/XGG29ozZo1ysvL07FjxzRp0iQHpz23nDx5UoMHD9aSJUvqXf/EE0/oqaee0tKlS7V9+3Z17NhR6enpqqqq8m+TmZmp/fv3a9OmTXrzzTe1detW3X777a31FM4ZP3YsJGnMmDEBPysvv/xywHqORXDk5eUpKytL27Zt06ZNm1RbW6vRo0fr5MmT/m1+7LXp1KlTGjdunGpqavTBBx/ohRde0MqVK/XII4848ZTCVkOOhSTddtttAT8bTzzxhH9d0I6FAZpp7ty5ZvDgwfWuKysrM5GRkWbNmjX+ZZ988omRZPLz81tpQntIMuvWrfPfr6urMwkJCebJJ5/0LysrKzNRUVHm5ZdfNsYY8/HHHxtJZseOHf5t3nrrLeNyucznn3/earOfa75/LIwxZsqUKWbChAlnfQzHouWUlpYaSSYvL88Y07DXpg0bNpg2bdqY4uJi/zbPPvuscbvdprq6unWfwDnk+8fCGGN+9rOfmXvuueesjwnWseBMD4Li008/Vffu3dWzZ09lZmbqyJEjkqSCggLV1tYqLS3Nv23fvn2VnJys/Px8p8a1RlFRkYqLiwO+/x6PR8OHD/d///Pz8xUTE6PLLrvMv01aWpratGmj7du3t/rM57rc3Fx169ZNffr00V133aWvvvrKv45j0XLKy8slSbGxsZIa9tqUn5+vgQMHBnwYbnp6unw+n/bv39+K059bvn8sTnvppZfUpUsXDRgwQNnZ2fr666/964J1LEL+E5kR+oYPH66VK1eqT58+On78uObNm6errrpK+/btU3Fxsdq2bXvGH32Nj49XcXGxMwNb5PT3+PufYP7d739xcbG6desWsD4iIkKxsbEcoyAbM2aMJk2apNTUVB06dEi///3vNXbsWOXn5+u8887jWLSQuro63XvvvfrJT36iAQMGSFKDXpuKi4vr/dk5vQ6NV9+xkKRf/epX6tGjh7p37669e/dq9uzZKiws1Nq1ayUF71gQPWi2sWPH+v89aNAgDR8+XD169NA//vEPtW/f3sHJgNBy0003+f89cOBADRo0SL169VJubq5GjRrl4GTntqysLO3bty/gWkM442zH4rvXrQ0cOFCJiYkaNWqUDh06pF69egXt6/PrLQRdTEyMLrroIh08eFAJCQmqqalRWVlZwDYlJSVKSEhwZkCLnP4ef/8dKd/9/ickJKi0tDRg/bfffqsTJ05wjFpYz5491aVLFx08eFASx6IlTJ8+XW+++abeeecdXXDBBf7lDXltSkhIqPdn5/Q6NM7ZjkV9hg8fLkkBPxvBOBZED4KusrJShw4dUmJiooYOHarIyEjl5OT41xcWFurIkSPyer0OTmmH1NRUJSQkBHz/fT6ftm/f7v/+e71elZWVqaCgwL/Nli1bVFdX53/hQcv4z3/+o6+++kqJiYmSOBbBZIzR9OnTtW7dOm3ZskWpqakB6xvy2uT1evXRRx8FhOimTZvkdrvVv3//1nki54AfOxb12b17tyQF/GwE5Vg04cJrIMB9991ncnNzTVFRkXn//fdNWlqa6dKliyktLTXGGHPnnXea5ORks2XLFrNz507j9XqN1+t1eOpzR0VFhdm1a5fZtWuXkWQWLlxodu3aZT777DNjjDELFiwwMTEx5rXXXjN79+41EyZMMKmpqeabb77x72PMmDHm0ksvNdu3bzfvvfee6d27t5k8ebJTTyls/dCxqKioMPfff7/Jz883RUVFZvPmzWbIkCGmd+/epqqqyr8PjkVw3HXXXcbj8Zjc3Fxz/Phx/+3rr7/2b/Njr03ffvutGTBggBk9erTZvXu32bhxo+natavJzs524imFrR87FgcPHjSPPfaY2blzpykqKjKvvfaa6dmzpxkxYoR/H8E6FkQPmu3GG280iYmJpm3btub88883N954ozl48KB//TfffGN++9vfms6dO5sOHTqY66+/3hw/ftzBic8t77zzjpF0xm3KlCnGmP+9bX3OnDkmPj7eREVFmVGjRpnCwsKAfXz11Vdm8uTJJjo62rjdbjN16lRTUVHhwLMJbz90LL7++mszevRo07VrVxMZGWl69OhhbrvttoC34BrDsQiW+o6DJLNixQr/Ng15bTp8+LAZO3asad++venSpYu57777TG1tbSs/m/D2Y8fiyJEjZsSIESY2NtZERUWZCy+80DzwwAOmvLw8YD/BOBau/zcQAADAOY1regAAgBWIHgAAYAWiBwAAWIHoAQAAViB6AACAFYgeAABgBaIHAABYgegBAABWIHoABIXL5dKrr77a4O1TUlK0ePHiFpsHAL6P6AHQILfccosmTpx41vXHjx/X2LFjG7y/HTt26Pbbbw/CZA0zf/58nXfeeXryySdb7WsCCC1ED4CgSEhIUFRUVIO379q1qzp06NCCEwVavny5fve732n58uU/um1NTU0rTASgtRE9AILiu7/euvLKKzV79uyA9V988YUiIyO1detWSWf+esvlcun555/X9ddfrw4dOqh37956/fXXA/bx+uuvq3fv3mrXrp2uueYavfDCC3K5XCorK/vB2fLy8vTNN9/osccek8/n0wcffBCw/tFHH9Ull1yi559/XqmpqWrXrp0kqaysTLfeequ6du0qt9utkSNHas+ePf7HHTp0SBMmTFB8fLyio6M1bNgwbd68uTHfNgCtiOgBEHSZmZlavXq1vvv3jF955RV1795dV1111VkfN2/ePP3yl7/U3r17dd111ykzM1MnTpyQJBUVFemGG27QxIkTtWfPHt1xxx166KGHGjTPsmXLNHnyZEVGRmry5MlatmzZGdscPHhQ//rXv7R27Vrt3r1bkvSLX/xCpaWleuutt1RQUKAhQ4Zo1KhR/pkqKyt13XXXKScnR7t27dKYMWM0fvx4HTlypKHfKgCtKSh/Nx7AOW/KlClmwoQJZ10vyaxbt84YY0xpaamJiIgwW7du9a/3er1m9uzZ/vs9evQwixYtCnj8ww8/7L9fWVlpJJm33nrLGGPM7NmzzYABAwK+5kMPPWQkmf/+979nnau8vNy0b9/e7N692xhjzK5du0x0dLSpqKjwbzN37lwTGRlpSktL/cveffdd43a7TVVVVcD+evXqZZ577rmzfr2LL77YPP3002ddD8A5nOkBEHRdu3bV6NGj9dJLL0n631ma/Px8ZWZm/uDjBg0a5P93x44d5Xa7VVpaKkkqLCzUsGHDAra//PLLf3SWl19+Wb169dLgwYMlSZdccol69OihV155JWC7Hj16qGvXrv77e/bsUWVlpeLi4hQdHe2/FRUV6dChQ5L+d6bn/vvvV79+/RQTE6Po6Gh98sknnOkBQlSE0wMAODdlZmbq7rvv1tNPP61Vq1Zp4MCBGjhw4A8+JjIyMuC+y+VSXV1ds+ZYtmyZ9u/fr4iI//9yV1dXp+XLl2vatGn+ZR07dgx4XGVlpRITE5Wbm3vGPmNiYiRJ999/vzZt2qQ//vGPuvDCC9W+fXvdcMMNXAgNhCiiB0CLmDBhgm6//XZt3LhRq1at0s0339ys/fXp00cbNmwIWLZjx44ffMxHH32knTt3Kjc3V7Gxsf7lJ06c0NVXX60DBw6ob9++9T52yJAhKi4uVkREhFJSUurd5v3339ctt9yi66+/XtL/Qunw4cMNf1IAWhXRA6DBysvL/Rf5nhYXF6ekpKQztu3YsaMmTpyoOXPm6JNPPtHkyZOb9bXvuOMOLVy4ULNnz9a0adO0e/durVy5UtL/zgjVZ9myZbr88ss1YsSIM9YNGzZMy5YtO+vn9qSlpcnr9WrixIl64okndNFFF+nYsWNav369rr/+el122WXq3bu31q5dq/Hjx8vlcmnOnDnNPjMFoOVwTQ+ABsvNzdWll14acJs3b95Zt8/MzNSePXt01VVXKTk5uVlfOzU1Vf/85z+1du1aDRo0SM8++6z/3Vv1fT5QTU2N/v73vysjI6Pe/WVkZOjFF19UbW1tvetdLpc2bNigESNGaOrUqbrooot000036bPPPlN8fLwkaeHChercubOuvPJKjR8/Xunp6RoyZEiznieAluMy5jvvKQWAMPKHP/xBS5cu1dGjR50eBUAY4NdbAMLGM888o2HDhikuLk7vv/++nnzySU2fPt3psQCECaIHQNj49NNP9fjjj+vEiRNKTk7Wfffdp+zsbKfHAhAm+PUWAACwAhcyAwAAKxA9AADACkQPAACwAtEDAACsQPQAAAArED0AAMAKRA8AALAC0QMAAKzwf/Dp0EQ29BBXAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Your code here\n",
"\n",
"plt.hist(dataset[\"living_area\"])\n",
"plt.xlabel(\"Living Area\")\n",
"plt.ylabel(\"Count\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "b9a954dd",
"metadata": {},
"source": [
"c) Plot a scatter plot of renting price as a function of living area"
]
},
{
"cell_type": "code",
"execution_count": 460,
"id": "6d015af9",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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yJAhpj5du3YN999/P7Zv344jR44gLS0NI0aMQElJidgfFRF5kkBE5CGTJk0SRo4cafU8AOHzzz8XBEEQysvLhSZNmgi7d+82nddoNEJWVpbpebt27YSlS5eavf6FF14wPb927ZoAQNiyZYsgCIKQlZUlJCUlmb3n888/LwAQrly5YrVfOp1OCA8PFwoKCgRBEIQjR44IkZGRwtWrV01tFi5cKISEhAjl5eWmY998842gUCiEqqoqs+t16NBBePfdd62+35133in885//tHqeiLyHI05EJEktW7bEsGHDsHbtWgC3R4vy8vIwfvz4Rl/Xo0cP058jIiKgUChQXl4OADh16hT69u1r1r5fv342+7J+/Xp06NABd911FwCgZ8+eaNeuHf773/+atWvXrh1atmxpen706FFcu3YNMTExiIyMND2Ki4tx9uxZALdHnJ5++ml069YNUVFRiIyMxHfffccRJyKJauLtDhARWTN+/Hj8+c9/xj//+U+sW7cO3bt3R/fu3Rt9TUhIiNlzmUwGg8HgVD9WrVqFEydOoEmT335lGgwGvP/++5gyZYrpWEREhNnrrl27BrVajZ07dza4ZlRUFADg6aefRm5uLv72t7+hY8eOCA8Px5gxY5hcTiRRDJyISLJGjhyJ6dOnIycnB+vWrcPEiROdul6XLl2wefNms2OHDh1q9DXHjx/Ht99+i507dyI6Otp0vKKiAr///e9x8uRJdO3a1eJrk5OTodVq0aRJE7Rv395im7179+Kxxx7Dgw8+COB2sHXu3DnxN0VEHsXAiYg8SqfTmRKnjWJiYtCmTZsGbSMiIjBq1CjMnz8f3333HcaNG+fUe//xj3/Em2++iaysLEyZMgUFBQVYvXo1gNsjU5asWrUK/fr1w6BBgxqc69u3L1atWmW1rlNKSgo0Gg1GjRqFJUuWoHPnzrh48SKys7Px4IMPok+fPujUqRM2bNiAESNGQCaTYf78+U6PkBGR+zDHiYg8aufOnejVq5fZY9GiRVbbjx8/HkePHsW9996Ltm3bOvXeCQkJ+Oyzz7Bhwwb06NEDy5cvN62qs1Q/6ubNm1izZg0yMjIsXi8jIwMfffQRampqLJ6XyWTYvHkzBg0ahMmTJ6Nz584YO3YsfvzxR8TFxQEA3nzzTTRv3hx33303RowYgdTUVCQnJzt1n0TkPjJBqLPWl4gowPz1r3/FihUrcP78eW93hYh8AKfqiCigLFu2DH379kVMTAz27t2LN954A7NmzfJ2t4jIRzBwIqKAcvr0abzyyiuoqKhA27Zt8dRTT2HevHne7hYR+QhO1RERERGJxORwIiIiIpEYOBERERGJxMCJiIiISCQGTkREREQiMXAiIiIiEomBExEREZFIDJyIiIiIRGLgRERERCTS/wfyUY9ut+UUuwAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Your code here\n",
"\n",
"plt.scatter(dataset[\"living_area\"], dataset[\"rent_price\"])\n",
"plt.xlabel(\"Living Area\")\n",
"plt.ylabel(\"Rent price\")\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "9c787c4b",
"metadata": {},
"source": [
"## Exercise 2 - Normal equations for linear regression"
]
},
{
"cell_type": "markdown",
"id": "859bbd89",
"metadata": {},
"source": [
"a) Implement the closed form solution to this problem using the following normal equation:"
]
},
{
"cell_type": "markdown",
"id": "cf1d5eda",
"metadata": {},
"source": [
"<div><div style=\"display: table-cell; width: 100%;\"><center>$\\theta = (X^{T}X)^{-1}X^{T}\\vec{y}$</center></div><div style=\"display: table-cell; width: 100%;\">$(3)$</div></div>"
]
},
{
"cell_type": "markdown",
"id": "c3c8e4c1",
"metadata": {},
"source": [
"Assuming $x$ is the living area and $y$ is the renting price. Use `numpy` for the vector operations. Plot the computed line on top of the scatter plot of exercise 1."
]
},
{
"cell_type": "code",
"execution_count": 461,
"id": "19ffbbd9",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Theta : [240.07710727 26.33242457]\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAk4AAAGwCAYAAABfKeoBAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAbgtJREFUeJzt3XlcVFX/B/DPgOzK4AYDbuAuIW65TJqVoqhkWtaT5J5ZGrZgJVm5tZn6K582tXKr3J4sy9ww3FPHJRQVSVPDcGFJEHBjkbm/P8YZucwM3Blm5/N+vXg9ce6ZO+cyj/L1nO/5HpkgCAKIiIiIqEpu9h4AERERkbNg4EREREQkEQMnIiIiIokYOBERERFJxMCJiIiISCIGTkREREQSMXAiIiIikqiWvQfgDNRqNa5cuYI6depAJpPZezhEREQkgSAIuH79OkJCQuDmZpm5IgZOEly5cgVNmjSx9zCIiIjIDBcvXkTjxo0tci8GThLUqVMHgOYH7+/vb+fREBERkRSFhYVo0qSJ7ve4JTBwkkC7POfv78/AiYiIyMlYMs2GyeFEREREEjFwIiIiIpKIgRMRERGRRAyciIiIiCRi4EREREQkEQMnIiIiIokYOBERERFJxMCJiIiISCIGTkREREQSsXI4EZEDKVMLOJyeh5zrRQis441uYfXg7sbDxYkcBQMnIiIHkZiaidkb05BZUKRrC5Z7Y+bgcAyICLbjyIhIi0t1REQOIDE1E5NWHhUFTQCQVVCESSuPIjE1004jI6LyGDgREdlZmVrA7I1pEAxc07bN3piGMrWhHkRkSwyciIjs7HB6nt5MU3kCgMyCIhxOz7PdoIjIIAZORER2lnPdeNBkTj8ish4GTkREdhZYx9ui/YjIehg4ERHZWbewegiWe8NY0QEZNLvruoXVs+WwiMgABk5ERHbm7ibDzMHhAKAXPGm/nzk4nPWciBwAAyciIgcwICIYi0Z2hkIuXo5TyL2xaGRn1nEichAsgElE5CAGRASjX7iClcOJHBgDJyIiB+LuJoOyRX17D4OIjOBSHREREZFEDJyIiIiIJGLgRERERCQRAyciIiIiiRg4EREREUnEwImIiIhIIgZORERERBIxcCIiIiKSyK6BU2hoKGQymd5XXFwcAKCoqAhxcXGoX78+ateujWHDhiE7O1t0j4yMDMTExMDX1xeBgYF44403cOfOHVGf3bt3o3PnzvDy8kLLli2xYsUKWz0iERERuRC7Bk5HjhxBZmam7ispKQkA8NRTTwEA4uPjsXHjRqxbtw579uzBlStX8MQTT+heX1ZWhpiYGJSUlODAgQP49ttvsWLFCsyYMUPXJz09HTExMXjkkUeQkpKCV199Fc899xy2bdtm24clIiIipycTBEGw9yC0Xn31VWzatAlnz55FYWEhGjZsiNWrV+PJJ58EAJw+fRrt2rWDSqVCjx49sHXrVjz66KO4cuUKgoKCAACLFy9GQkIC/v33X3h6eiIhIQGbN29Gamqq7n2GDx+O/Px8JCYmShpXYWEh5HI5CgoK4O/vb/kHJyIiIouzxu9vh8lxKikpwcqVK/Hss89CJpMhOTkZpaWliIqK0vVp27YtmjZtCpVKBQBQqVRo3769LmgCgOjoaBQWFuLUqVO6PuXvoe2jvYchxcXFKCwsFH0REREROUzg9MsvvyA/Px9jx44FAGRlZcHT0xMBAQGifkFBQcjKytL1KR80aa9rr1XWp7CwELdv3zY4ljlz5kAul+u+mjRpUt3HIyIiIhfgMIHT0qVLMXDgQISEhNh7KJg2bRoKCgp0XxcvXrT3kIiIiMgB1LL3AADgn3/+wfbt27F+/Xpdm0KhQElJCfLz80WzTtnZ2VAoFLo+hw8fFt1Lu+uufJ+KO/Gys7Ph7+8PHx8fg+Px8vKCl5dXtZ+LiIiIXItDzDgtX74cgYGBiImJ0bV16dIFHh4e2LFjh67tzJkzyMjIgFKpBAAolUqcPHkSOTk5uj5JSUnw9/dHeHi4rk/5e2j7aO9BREREJJXdAye1Wo3ly5djzJgxqFXr3gSYXC7H+PHjMWXKFOzatQvJyckYN24clEolevToAQDo378/wsPDMWrUKBw/fhzbtm3DO++8g7i4ON2M0cSJE/H3339j6tSpOH36NBYuXIgffvgB8fHxdnleIiIicl52X6rbvn07MjIy8Oyzz+pdW7BgAdzc3DBs2DAUFxcjOjoaCxcu1F13d3fHpk2bMGnSJCiVSvj5+WHMmDF49913dX3CwsKwefNmxMfH49NPP0Xjxo2xZMkSREdH2+T5iIiIyHU4VB0nR8U6TkRERM7Hpes4ERERETk6Bk5EREREEjFwIiIiIpLI7snhREREVHOVqQUcTs9DzvUiBNbxRrewenB3k9l7WEYxcCIiIiK7SEzNxOyNacgsKNK1Bcu9MXNwOAZEBNtxZMZxqY6IiIhsLjE1E5NWHhUFTQCQVVCESSuPIjE1004jqxwDJyIiIrKpMrWA2RvTYKgekrZt9sY0lKkdr2ISAyciIiKyqcPpeXozTeUJADILinA4Pc92g5KIgRMRERHZVM5140GTOf1siYETERER2VRgHW+L9rMlBk5ERERkU93C6iFY7g1jRQdk0Oyu6xZWz5bDkoSBExEREdmUu5sMMweHA4Be8KT9fubgcIes58TAiYiIiGxuQEQwFo3sDIVcvBynkHtj0cjODlvHiQUwiYiIyC4GRASjX+sGuPDxQvzTuj18OnZg5XAiIiIigzZtgvvgwWgBoEVkJHD8uL1HVCUGTkRERGRbxcVAo0ZAbu69tkcftd94TMAcJyIiIrKdNWsAb29x0LRnD/DBB/Ybkwk440RERETWd/MmUKcOIJQ7RqV3b2DXLsDNeeZxnGekRERE5Jy++gqoXVscNP3xh2amyYmCJoAzTkRERGQt164B9SoUsXz8ceCnnwCZ4+6cq4xzhXlERETkHObP1w+aTp0C1q932qAJ4IwTERERWVJODhAUJG4bOxZYvtwuw7E0zjgRERGRZbz9tn7Q9PffLhM0AZxxIiIiouq6eBFo2lTcNmUK8PHH9hmPFTFwIiIiIvPFxQELF4rbLl8GQkLsMx4r41IdERERme6vvzRJ3uWDpnff1ZQccNGgCeCMExEREZkqNhZYu1bcdvUqUL++fcZjQ5xxIiIisoAytQDV+VxsSLkM1flclKmFql/kbE6c0MwylQ+aPv1UM8tUA4ImgDNORERE1ZaYmonZG9OQWVCkawuWe2Pm4HAMiAi248gsRBCAgQOBbdvE7QUFgL+/fcZkJ5xxIiIiqobE1ExMWnlUFDQBQFZBESatPIrE1Ew7jcxCDh7UHItSPmhatkwTTNWwoAngjBMREZHZytQCZm9Mg6FFOQGADMDsjWnoF66Au5uTVctWq4Hu3TVnymn5+QH//gv4+NhvXHbGGSciIiIzHU7P05tpKk8AkFlQhMPpebYblCXs2AG4u4uDph9/BG7cqNFBE8AZJyIiIrPlXDceNJnTz+5KS4G2bTXVvrWaNAHOnQM8Pe03LgfCGSciIiIzBdbxtmg/u9qwQRMclQ+aEhOBjAwGTeVwxomIiMhM3cLqIVjujayCIoN5TjIACrk3uoXVs/XQpCsq0hSsvHbtXluHDkBysma5jkQ440RERGQmdzcZZg4OB6AJksrTfj9zcLjjJoavXKnJWSofNP3+O5CSwqDJCAZORERE1TAgIhiLRnaGQi5ejlPIvbFoZGfHrON044amkOWoUffaHnlEs5OuVy/7jcsJcKmOiIiomgZEBKNfuAKH0/OQc70IgXU0y3MOOdO0aBHw4ovituRkoHNn+4zHyTBwIiIisgB3NxmULRz42JG8PP1jUYYNA9at08w+kSR2X6q7fPkyRo4cifr168PHxwft27fHH+XqRgiCgBkzZiA4OBg+Pj6IiorC2bNnRffIy8vDiBEj4O/vj4CAAIwfPx43btwQ9Tlx4gQefPBBeHt7o0mTJpg3b55Nno+IiMjuPvpIP2j6809NbSYGTSaxa+B07do19OzZEx4eHti6dSvS0tLw8ccfo27duro+8+bNw2effYbFixfj0KFD8PPzQ3R0NIqK7tXEGDFiBE6dOoWkpCRs2rQJe/fuxfPPP6+7XlhYiP79+6NZs2ZITk7G/PnzMWvWLHz99dc2fV4iIiKbysrSBEbTpt1re+45zXEpbdvab1zOTLCjhIQEoVevXkavq9VqQaFQCPPnz9e15efnC15eXsKaNWsEQRCEtLQ0AYBw5MgRXZ+tW7cKMplMuHz5siAIgrBw4UKhbt26QnFxsei927RpY/B9i4qKhIKCAt3XxYsXBQBCQUFBtZ6XiIjIZhISBEETIt37Sk+396hsqqCgwOK/v+064/Trr7/i/vvvx1NPPYXAwEB06tQJ33zzje56eno6srKyEBUVpWuTy+Xo3r07VCoVAEClUiEgIAD333+/rk9UVBTc3Nxw6NAhXZ/evXvDs1wBr+joaJw5cwbXym/BvGvOnDmQy+W6ryZNmlj82YmIiKwiI0MzyzR37r2211/XhE6hoXYblquwa+D0999/Y9GiRWjVqhW2bduGSZMm4eWXX8a3334LAMjKygIABAUFiV4XFBSku5aVlYXAwEDR9Vq1aqFevXqiPobuUf49yps2bRoKCgp0XxcvXrTA0xIREVnZxIlAs2bititXgPnz7TMeF2TXXXVqtRr3338/PvzwQwBAp06dkJqaisWLF2PMmDF2G5eXlxe8vLzs9v5EREQmOXNGP2fp/feBt9+2z3hcmF1nnIKDgxEeHi5qa9euHTIyMgAACoUCAJCdnS3qk52drbumUCiQk5Mjun7nzh3k5eWJ+hi6R/n3ICIicjqCAPznP/pBU24ugyYrsWvg1LNnT5w5c0bU9tdff6HZ3WnGsLAwKBQK7NixQ3e9sLAQhw4dglKpBAAolUrk5+cjOTlZ12fnzp1Qq9Xo3r27rs/evXtRWlqq65OUlIQ2bdqIdvARERE5jZQUwM1NU4dJ6/PPNcFUPQc+G8/ZWSzN3AyHDx8WatWqJXzwwQfC2bNnhVWrVgm+vr7CypUrdX0++ugjISAgQNiwYYNw4sQJYciQIUJYWJhw+/ZtXZ8BAwYInTp1Eg4dOiTs27dPaNWqlRAbG6u7np+fLwQFBQmjRo0SUlNThbVr1wq+vr7CV199JWmc1sjKJyIiMotaLQh9++rvmCsstPfIHI41fn/bNXASBEHYuHGjEBERIXh5eQlt27YVvv76a9F1tVotTJ8+XQgKChK8vLyEvn37CmfOnBH1yc3NFWJjY4XatWsL/v7+wrhx44Tr16+L+hw/flzo1auX4OXlJTRq1Ej46KOPJI+RgRMRubo7ZWrhwLmrwi/HLgkHzl0V7pSp7T0kMmT/fv2A6dtv7T0qh2WN398yQRAE+855Ob7CwkLI5XIUFBTA39/f3sMhIrKoxNRMzN6YhsyCe4WFg+XemDk43DEPqK2JysqAbt2Ao0fvtfn7awpc+vjYb1wOzhq/v+1+5AoREdlPYmomJq08KgqaACCroAiTVh5FYmqmnUZGOklJQK1a4qBp/XqgoIBBkx3wkF8iohqqTC1g9sY0GFp2EADIAMzemIZ+4Qq4u/E8M5srLQVatQL++edeW2go8NdfgIeH3YZV03HGiYiohjqcnqc301SeACCzoAiH0/NsNyjS+PlnwNNTHDT99huQns6gyc4440REVEPlXDceNJnTjyzg9m0gKAi4fv1eW5cuwKFDgLu7/cZFOpxxIiKqoQLreFu0H1XT998Dvr7ioGn/fuCPPxg0ORDOOBER1VDdwuohWO6NrIIig3lOMgAKuTe6hbGYolVdv67ZIVdev37Atm2aw3rJoXDGiYiohnJ3k2HmYM2xVxV/PWu/nzk4nInh1vTll/pB07FjmnwmBk0OiYETEVENNiAiGItGdoZCLl6OU8i9sWhkZ9Zxspa8PE1gNHnyvbb//AdQq4GOHe02LKoal+qIiGq4ARHB6BeuwOH0PORcL0JgHc3yHGearOTDD/UP4D19GmjTxj7jIZMwcCIiKqdMLdTIAMLdTQZli/r2HoZry8wEQkLEbS+8ACxebJ/xkFkYOBER3cWjR8hqpk4F5s8Xt124ADRrZpfhkPmY40REBB49QlZy4YIml6l80PTmm5rjeRk0OSXOOBFRjeeMR4/U1CVFpzJhArBkibgtMxNQKOwzHrIIBk5EVOOZcvSII+QBcUnRwZ0+DbRrJ26bM0cz00ROj0t1RFTjOdPRI662pFimFqA6n4sNKZehOp+LMrWheT8nIQjAk0/qB015eQyaXAhnnIioxnOWo0eccUmxMi41c3b0qOZMufIWLgQmTbLPeMhqOONERDWe9ugRY6GGDJpf6PY+esSUJUVH5zIzZ4IAPPKIftB0/TqDJhfFwImIajxnOXrEmZYUK1PVzBmgmTlz+GW7ffsANzdg9+57bStXaoKp2rXtNiyyLgZORERwnKNHKsv5cZYlxao4/cxZWZnmWJQHH7zXVq8ecPs2MGKE3YZFtsEcJyKiu+x99EhVOT/aJcWsgiKDszUyaAI9ey8pVsWpZ862bQMGDBC3bdgAPPaYfcZDNscZJyKicrRHjwzp2AjKFvVtGjRVlfPjLEuKVXHKmbPSUqBpU3HQ1KIFUFLCoKmGYeBERGRnpuT8OMqSYnU4SzK+zk8/AZ6ewMWL99qSkoBz5wAPD/uNi+yCS3VERHZmagFOey8pVpd25mzSyqOQAaKA0aFmzm7fBho2BG7evNfWtStw8KAmKZxqJH7yRER2Zk7Oj72WFC3F4WfOVqwAfH3FQZNKBRw+zKCphuOMExGRndki58cRz7ZzyJmzwkJALhe3RUcDW7dqDuulGo+BExGRnVl7t5wjV+jWzpzZS/mAMnL9dwh77y1xh+PHgchI+wyOHBLnG4mI7Myau+VcpkK3FSSmZqLX3J2Y9NlvGNKpsThoGj5cU8iSQRNVwMCJiMgBWCPnx2UqdFuBNqB8cstypHz2jOjaIxO+QuLbn9hpZFVzqYORnRCX6oiIHISlc35M3a1XU5SpBXy5ai/S5w4XtX/faRCm93/RoQ9LduRl15qCgRMRkQOxZM6PJSt0O2JyubmyJ8Rh47JForYHJi3DFf9AAI4bUGpnySrOL2mXXR1iN2INwMCJiMhFWWq3nsvMcqSnA82bI6Rc0xfK/+D/eo822N2RjnypatnVkWfJXA1znIiIXJQlKnS7THL5s88CzZuLmrpMXmk0aAIc68gXpz8Y2YUwcCIiclHV3a3nEsnlf/6pqb+0fLmuSf3RR1B+uB15fgEGX+JwR77AyQ9GdjEMnIiIXFh1dus59SyHIACPPw6Eh4vbr12DW0KC0x2W7JQHI7so5jgREbk4c3frOe0sR3IycP/94rbFi4EXXtB9qw0oK+ZuKRw0d8vaRVJJOgZOREQ1gDm79ZxulkMQgIceAn7//V6bmxtQUADUrq3X3SGPfDHCaQ5GrgG4VEdERAZZIrncZn7/XRMklQ+aVq0CysoMBk1aznRYssMfjFxDcMaJiIgMcopZjrIyoEMH4NSpe20NGgCXLgFeXvYbl5U40yyZq7LrjNOsWbMgk8lEX23bttVdLyoqQlxcHOrXr4/atWtj2LBhyM7OFt0jIyMDMTEx8PX1RWBgIN544w3cuXNH1Gf37t3o3LkzvLy80LJlS6xYscIWj0dE5PQcepZj61agVi1x0PTrr8C//7pk0KTlTLNkrsjuM0733Xcftm/frvu+Vq17Q4qPj8fmzZuxbt06yOVyTJ48GU888QT2798PACgrK0NMTAwUCgUOHDiAzMxMjB49Gh4eHvjwww8BAOnp6YiJicHEiROxatUq7NixA8899xyCg4MRHR1t24clInJCDjfLUVIChIYCmeVqSLVpA6SmagIpIiuSCYJgtwIcs2bNwi+//IKUlBS9awUFBWjYsCFWr16NJ598EgBw+vRptGvXDiqVCj169MDWrVvx6KOP4sqVKwgKCgIALF68GAkJCfj333/h6emJhIQEbN68Gampqbp7Dx8+HPn5+UhMTJQ0zsLCQsjlchQUFMDf37/6D05EROZZtw74z3/EbTt3Ao88Yp/xkEOzxu9vuyeHnz17FiEhIWjevDlGjBiBjIwMAEBycjJKS0sRFRWl69u2bVs0bdoUKpUKAKBSqdC+fXtd0AQA0dHRKCwsxKm7U7cqlUp0D20f7T0MKS4uRmFhoeiLiIjs6NYtwMdHHDT16KHJcWLQRDZk18Cpe/fuWLFiBRITE7Fo0SKkp6fjwQcfxPXr15GVlQVPT08EBASIXhMUFISsrCwAQFZWliho0l7XXqusT2FhIW7fvm1wXHPmzIFcLtd9NWnSxBKPS0RE5li2DPDzA4rK1Ys6eBBQqTQ76copUwtQnc/FhpTLUJ3Pdeyq5uSU7LoYPHDgQN1/R0ZGonv37mjWrBl++OEH+Pj42G1c06ZNw5QpU3TfFxYWMngiIrK1ggKgwj+eMWgQsGmT5hiVClzmMGJyaHZfqisvICAArVu3xrlz56BQKFBSUoL8/HxRn+zsbCgUCgCAQqHQ22Wn/b6qPv7+/kaDMy8vL/j7+4u+iIjIhv77X/2g6cQJYPNmo0GTSxxGTA7PoQKnGzdu4Pz58wgODkaXLl3g4eGBHTt26K6fOXMGGRkZUCqVAAClUomTJ08iJydH1ycpKQn+/v4Iv3s+kVKpFN1D20d7DyIiciBXr2oCo/j4e20jRmiqgrdvb/AlLnEYMTkNuwZOr7/+Ovbs2YMLFy7gwIEDePzxx+Hu7o7Y2FjI5XKMHz8eU6ZMwa5du5CcnIxx48ZBqVSiR48eAID+/fsjPDwco0aNwvHjx7Ft2za88847iIuLg9fdGh4TJ07E33//jalTp+L06dNYuHAhfvjhB8SX/0NJRET2N3s20LChuO3sWWDlykpf5tSHEZPTsWuO06VLlxAbG4vc3Fw0bNgQvXr1wsGDB9Hw7h+cBQsWwM3NDcOGDUNxcTGio6OxcOFC3evd3d2xadMmTJo0CUqlEn5+fhgzZgzeffddXZ+wsDBs3rwZ8fHx+PTTT9G4cWMsWbKENZyIyKmVqQXHqatUXZcvA40bi9smTwY+/1zSy532MGJySnat4+QsWMeJiByJSyVBx8dr8pnKu3hRP5CqhOp8LmK/OVhlvzUTeph80DE5N5es40RERNK5TBL0+fOaXKbyQdP06ZpcpsaNTSor4FSHEZPTY216IiInUVUStAyaJOh+4QrHXrYbMwb47jtxW06OLr/J1Bk1pziMmFwGZ5yIiJyE0ydBnzqlmWUqHzT93/9pZpnKBU3mzKg59GHE5FI440RE5CScNglaEIDHHtMUrizv2jVRrabqzqg53GHE5JIYOBEROYnAOt5VdzKhn00cOQJ06yZu++Yb4Lnn9LqaMqNmLMnb3U3GBHCyKgZOREROQpsEnVVQZHBWRgbN0pRDJEGr1UDv3sD+/ffaPDw0s0x+fgZf4rQzalSjMMeJiMhJaJOgAejtIHOoJOg9ewB3d3HQtHYtUFJiNGgCnHRGjWocBk5ERE7EoZOg79wBwsOBhx++1xYUBBQVAU8/XeXLWVaAnAGX6oiInIxDJkFv3gw8+qi4bdMmICZG8i1YVoCcQbUqhxcVFcHb2/WnTFk5nIjIiOJioGlTTR0mrXbtgBMngFrm/dvcpSqjk11Z4/e3yf+vVqvV+OCDD7B48WJkZ2fjr7/+QvPmzTF9+nSEhoZi/PjxFhkYERE5uP/9Dxg+XNy2ezfw0EPVuq1DzqgR3WVyjtP777+PFStWYN68efD09NS1R0REYMmSJRYdHBEROaBbtwBPT3HQ1LMnUFZW7aBJS1tWYEjHRlC2qM+giRyGyYHTd999h6+//hojRoyAu7u7rr1Dhw44ffq0RQdHREQOZskSzc640tJ7bYcPA/v2AW7cb0Suz+SlusuXL6Nly5Z67Wq1GqXl/yAREZHrKCgQVfkGAAweDGzYoDlGhaiGMPmfB+Hh4fj999/12n/88Ud06tTJIoMiIiIH8vHH+kHTyZPAr78yaKIax+QZpxkzZmDMmDG4fPky1Go11q9fjzNnzuC7777DpornEBERkfP6918gMFDcNno08O239hkPkQMwecZpyJAh2LhxI7Zv3w4/Pz/MmDEDf/75JzZu3Ih+/fpZY4xERGRr06frB03nzzNoohqvWnWcagrWcSKiGuPSJaBJE3HbK68A//2vXYZDVB3W+P1t8ozTkSNHcOjQIb32Q4cO4Y8//rDIoIiIyA5eflk/aLp0iUETUTkmB05xcXG4ePGiXvvly5cRFxdnkUEREZENnTunSfL+/PN7bTNnAoIANGpkv3EROSCTk8PT0tLQuXNnvfZOnTohLS3NIoMiIiIbGTUKWLlS3Pbvv0CDBvYZD5GDM3nGycvLC9nZ2XrtmZmZqGXmuURERGRjJ09qZpnKB02ffKKZZWLQRGSUyYFT//79MW3aNBQUFOja8vPz8dZbb3FXHZGdlakFqM7nYkPKZajO56JMzb0fVIEgAIMGAZGR4vb8fCA+3i5DInImJk8R/d///R969+6NZs2a6QpepqSkICgoCN9//73FB0hE0vBEearS4cNA9+7itqVLgWeftc94iJyQWeUIbt68iVWrVuH48ePw8fFBZGQkYmNj4eHhYY0x2h3LEZCjS0zNxKSVR1HxD7O2pvOikZ0ZPDmYMrWAw+l5yLlehMA63ugWVs96B9mq1cADDwDld0T7+ABXrwK+vtZ5TyIHYI3f36zjJAEDJ3JkZWoBvebuFM00lScDoJB7Y19CH54w7yBsOju4axfQp4+47YcfgKeesuz7EDkga/z+lrRU9+uvv2LgwIHw8PDAr7/+Wmnfxx57zCIDIyJpDqfnGQ2aAEAAkFlQhMPpeVC2qG+7gZFBxmYHswqKMGnlUcvNDt65A9x3H/DXX/faQkKA9HTA07P69yeqoSQFTkOHDkVWVhYCAwMxdOhQo/1kMhnKysosNTYikiDnuvGgyZx+pGGNpbQytYDZG9P0giZAE+DKAMzemIZ+4YrqvdemTcDgweK2LVuAgQPNvycRAZAYOKnVaoP/TUT2F1jH26L9yHpLaVafHSwu1hSszM291xYRAaSkAO7upt+PiPSYVI6gtLQUffv2xdmzZ601HiIyUbewegiWe8PY/IQMml/63cLq2XJYTku7lFYxwNEupSWmZpp9b6vODq5ZA3h7i4OmPXs09ZoYNBFZjEmBk4eHB06cOGGtsRCRGdzdZJg5OBwA9IIn7fczB4czMVyCqpbSAM1Smrn1sawyO3jzJuDmBjzzzL223r2BsjLN/xKRRZlcAHPkyJFYunSpNcZCRGYaEBGMRSM7QyEX/8JVyL1ZisAEpiylmcPis4Nffw3Urq0paqn1xx+amSY3k/96JyIJTC6AeefOHSxbtgzbt29Hly5d4OfnJ7r+ySefWGxwRCTdgIhg9AtX2K42kAuydqK9dnZw0sqjkAGimS2TZgfz84G6dcVtjz8O/PST5hgVIrIakwOn1NRU3SG/f5Xf5grNrjoish93NxlLDlSDLRLttbODFZPPFVKTz+fPB6ZOFbedOgWEh5s9JiKSzuTAadeuXdYYBxE5IZtWv7YB7VJaVkGRwTwnbTHR6ibamzU7mJMDBAWJ28aNA5Ytq9ZYiMg0JgdO5V28eBEA0KRJE4sMhoichyuejWexpTSJ7yV5dvDtt4EPPxS3/f03EBZW7XEQkWlMzh68c+cOpk+fDrlcjtDQUISGhkIul+Odd95BaWmpNcZIRA7Gmlv27c2hEu0vXtTkLJUPmqZM0SSDM2gisguTZ5xeeuklrF+/HvPmzYNSqQQAqFQqzJo1C7m5uVi0aJHFB0lEjsNm1a/tyCES7WNjgbVrxW2XL2uOTSEiuzF5xmn16tVYsWIFXnjhBURGRiIyMhIvvPACli5ditWrV5s9kI8++ggymQyvvvqqrq2oqAhxcXGoX78+ateujWHDhiE7O1v0uoyMDMTExMDX1xeBgYF44403cOfOHVGf3bt3o3PnzvDy8kLLli2xYsUKs8dJVNNZe8u+o9AupQ3p2AjKFvVtFzQdOqSZZSofNL37rmaWiUETkd2ZPOPk5eWF0NBQvfawsDB4mnlw5JEjR/DVV18hMjJS1B4fH4/Nmzdj3bp1kMvlmDx5Mp544gns378fAFBWVoaYmBgoFAocOHAAmZmZGD16NDw8PPDh3ant9PR0xMTEYOLEiVi1ahV27NiB5557DsHBwYiOjjZrvEQ1WU05G88uie9eXkBJibjt6lWgPndKEjkKk2ecJk+ejPfeew/FxcW6tuLiYnzwwQeYPHmyyQO4ceMGRowYgW+++QZ1y9UlKSgowNKlS/HJJ5+gT58+6NKlC5YvX44DBw7g4MGDAIDffvsNaWlpWLlyJTp27IiBAwfivffew5dffomSu3/5LF68GGFhYfj444/Rrl07TJ48GU8++SQWLFhg8liJnFWZWoDqfC42pFyG6nyu2ZWvgZpxNl5iaiZ6zd2J2G8O4pW1KYj95iB6zd1pvdytpCTNLFP5oOmZZzSzTAyaiByKyTNOx44dw44dO9C4cWN06NABAHD8+HGUlJSgb9++eOKJJ3R9169fX+X94uLiEBMTg6ioKLz//vu69uTkZJSWliIqKkrX1rZtWzRt2hQqlQo9evSASqVC+/btEVRui250dDQmTZqEU6dOoVOnTlCpVKJ7aPuUXxKsqLi4WBQYFhYWVvkcRI7K0rvfbLVl3160ie8Vn02b+G7RBHFBMFzhOycHaNjQMu9xl6uVjiCyF5MDp4CAAAwbNkzUZm45grVr1+Lo0aM4cuSI3rWsrCx4enoiICBA1B4UFISsrCxdn6AKdU2031fVp7CwELdv34aPj4/ee8+ZMwezZ88265mIHIk1ggBbbtm3NZsmvv/4I/DUU+K2l18GPv20evc1wBVLRxDZi8mB0/Llyy3yxhcvXsQrr7yCpKQkeHs71pT+tGnTMGXKFN33hYWFrFVFTseaQUC1q187KFMS382u0F5WBtQy8FdvQQHg72/ePSth0xk0ohqgWgUwqyM5ORk5OTm641sATbL33r178cUXX2Dbtm0oKSlBfn6+aNYpOzsbCoUCAKBQKHD48GHRfbW77sr3qbgTLzs7G/7+/gZnmwBNAryXl1e1n5HInqwdBDjEln0Ls3ri+5IlwIQJ4rb33gPeece8+1WhJpSOILI1uwVOffv2xcmTJ0Vt48aNQ9u2bZGQkIAmTZrAw8MDO3bs0C0NnjlzBhkZGbr6UUqlEh988AFycnIQGBgIAEhKSoK/vz/C757bpFQqsWXLFtH7JCUl6e5B5KpssfvN1c7Gs1rie0mJZsdcRbdvA1accbfJDBpRDWPyrjpLqVOnDiIiIkRffn5+qF+/PiIiIiCXyzF+/HhMmTIFu3btQnJyMsaNGwelUokePXoAAPr374/w8HCMGjUKx48fx7Zt2/DOO+8gLi5ON2M0ceJE/P3335g6dSpOnz6NhQsX4ocffkB8fLy9Hp3IJmrC7jdL0ya+G5t7kUGTG2RS4vv8+fpB05dfahLDrZymUFNKRxDZkt1mnKRYsGAB3NzcMGzYMBQXFyM6OhoLFy7UXXd3d8emTZswadIkKJVK+Pn5YcyYMXj33Xd1fcLCwrB582bEx8fj008/RePGjbFkyRLWcCKX5+q738xV2e4yiya+37wJ1K6t315aajjHyQoYPBNZnkwQBJMKunz33Xd4+umn9XKASkpKsHbtWowePdqiA3QEhYWFkMvlKCgogL8VkjeJrEWbGAwYDgJqWmKw1N1l1d6F9uabwNy54rZVqzS1mWyoTC2g19ydVQbP+xL6MMeJXJI1fn+bHDi5u7sjMzNTl1OklZubi8DAQJSVlVlkYI6EgRM5M25F1zC2u8xYEGlq3aMytYCjx86j6/2tDFwsQxlkdkmkZ/BMNZk1fn+bPF8sCAJkMv0/7JcuXYJcLrfIoIjIclxx95upzNldZkrie2JqJkrHPovByYmi9uQvv0OXF0fZNXh11dIRRPYiOXDq1KkTZDIZZDIZ+vbti1rl1ujLysqQnp6OAQMGWGWQRFQ9rrb7zVTW3F22a+cxDOjbWa89bOpGIEOG57ek4eu96Xato8TgmchyJAdOQ4cOBQCkpKQgOjoatcslPXp6eiI0NFSvojgRkSOw1u4y4dHBeGTzJlHbkyPm4o/G9+m+/+Z3/aAJsH0dpZoePBNZiuTAaebMmQCA0NBQPP300w5X7ZuIyBiL7y47fx5o2VJUtuBf3wB0fWmlXtfKzlNmHSUi52NyjtOYMWMAaHbR5eTkQK1Wi643bdrUMiMjIrIQi5Zm6N4dqHBiwaCxnyEtqLnZ42MdJSLnYXLgdPbsWTz77LM4cOCAqF2bNO6Ku+qIyLlZpD7TyZNAZKSo6Wa79rjvsTnVHh/rKBE5D5MDp7Fjx6JWrVrYtGkTgoODDe6wIyJyNNXaXda4MXD5srjtr7/g3aIlgiupkwQAbjJNkXAWISVyDSbXcfLz80NycjLatm1rrTE5HNZxInIdJtVnOnAA6NlT3BYdDSTeKztQVZ2k53uH4eu96Uavs44SkfU4RB2n8PBwXL161SJvTkT2ZWqRR1cgaXeZIADu7pr/Le/SJaBRI1GTlJmsTk3rso4SkYswecZp586deOedd/Dhhx+iffv28PDwEF13xRkZzjiRK2JFcSO2bQMq1qQbPRr49ttKX1ZVEFoTg1Qie3OII1fc3Nw0L6yQ2+TKyeEMnMjVmHr8SI0gCMDdv99Erl4F6rNUAJEzcoilul27dlnkjYnIPsw5fsSS7+2Qsy4//AA8/bS4bcoU4OOP7TMeInJYJgdODz30kDXGQUQ2Ys3jRypjytKgzQKsO3eACukGAIDCQpT51cbh87mOF+QRkV2ZHDgBwO+//46vvvoKf//9N9atW4dGjRrh+++/R1hYGHr16mXpMRKRBVnr+JHKGFsaNHRem81yr77+GnjhBXHbhx8C06bdHcNh5n8RkR4DC/qV++mnnxAdHQ0fHx8cPXoUxcXFAICCggJ8+OGHFh8gEVmWxY8fqUJVS4OAZmmwTC3oAqyKM2LaACsxNbP6AyouBmQy/aDp9m1d0GT1MVSiTC1AdT4XG1IuQ3U+F2WVndlCRDZncuD0/vvvY/Hixfjmm29EO+p69uyJo0ePWnRwRGR52uNHjC06yaCZXbFUUUapS4MH/86VHGCZbc4coOI5m4sXaxLDvb1NCvKsITE1E73m7kTsNwfxytoUxH5zEL3m7rR6sEZE0pkcOJ05cwa9e/fWa5fL5cjPz7fEmIjIirTHjwDQC54kHz9iAqlLfqrzuZJzr0x244Zmlumtt8TtpaWimSdT8r8szd4zXUQkjcmBk0KhwLlz5/Ta9+3bh+bNzT/kkoiqZqllHG3RRoVcPPuikHtbvBSB9CU/ac9icu7V668DdeqI29au1cwy1RKnedoj/wswbTmTiOzL5OTwCRMm4JVXXsGyZcsgk8lw5coVqFQqvP7665g+fbo1xkhEsHzS9ICIYPQLV1h995p2adDYeW7a89qUzRvgi13nq7yf5EAsNxdo0EC/Xa3WzD5V496WPpTXXjsdich0JgdOb775JtRqNfr27Ytbt26hd+/e8PLywuuvv46XXnrJGmMkqvEq25U2ceVRPNszFP3CFSYHPpKOH6km7dLgpJVHIYPh89pmDg5Hjxb1JQVYknKvxo7Vr/S9dat+RfAKpAZ5lj6U114zXURkOpOX6mQyGd5++23k5eUhNTUVBw8exL///ov33nsPt2/ftsYYiWo0Kcs4y/ZfcOhEYilLgxbJvbp8WTObVD5ocnPTzDJVETQBts//0rLXTBcRmc7kI1cMKS4uxpdffol58+YhKyvLEuNyKDxyhexJdT4Xsd8clNTX0Y9MkVLY0uwlyYEDgcREcdv+/cADD5g8Tluf41emFtBr7s4qZ7r2JfRhEU4iE9j1yJXi4mLMmjULSUlJ8PT0xNSpUzF06FAsX74cb7/9Ntzd3REfH2+RQRHRPaYsz1j7yJTqkrI0aHLu1dmzQOvW4rZGjYBLl8weZ/kxZBUWIe9GMer5eULu44mSO2ok/3PNonlhUpczHe3zJKqJJAdOM2bMwFdffYWoqCgcOHAATz31FMaNG4eDBw/ik08+wVNPPQV3d3drjpWoRjJ1ecYVEokl51517gwcOyZuO34ciIy0yBgKbpdgXuJp0cyTmwwov7nNUjNR2uXMijNdClYsJ3IokgOndevW4bvvvsNjjz2G1NRUREZG4s6dOzh+/DhkRnaoEFH1VZWwbIxLJxKnpACdOonb7r8fOHLEYm9hLCG/YkUAQ8fGmMtWOx2JyHySk8MvXbqELl26AAAiIiLg5eWF+Ph4Bk1EVlZZwnJlXDaRODhYP2g6d86iQVNlCfkVWbrOkna2bUjHRlC2qM+gicjBSA6cysrK4Onpqfu+Vq1aqF27tlUGRURixnalGWLpI1OswaxCnvv2aXbMld+AEhOjKWTZooVFx1dVXaWKrFlRnIgci+SlOkEQMHbsWHh5eQEAioqKMHHiRPj5+Yn6rV+/3rIjJCIA4mWc7WlZWLr/gl4fZ0gkNnnHmiBoSgpUdPkyEBJilTGau8zp0sujRATAhBmnMWPGIDAwEHK5HHK5HCNHjkRISIjue+0XEVmPdhln+uD7sHhkZwTb4MgUSzJ2Hlvm3UKeW05UqEG1ZYt+0DRunCaYslLQBJi/zOmyy6NEpGOROk6ujnWcyFFJqYvkKO+nrVVU2RKYmwz4IrYTBkUoAEO7dHNzgXrWX4Ksqq5SRayzROSY7FrHiYgcjy2OTNGqblFIKXlDagFIfOe/GLRxvvjC1KnA3LlmjdscldVVqsgZlkeJyHIYOBFRlSo7K0/qVvyq8n/c1WU4P3+I/oXr1wE7bEQxVlepYh0n1lkiqlkYOBHVYFUtvZWpBRw8n4s3fzpp9Kw8qZXKK8v/GXlsC97/baGo7cIbMxA6b7aJT2RZhuoqdWlW1+KVw4nIeTBwIqqhDC29Bfh4YFzPMEzu0xJJaVl61w2RWqlcW8iz/P287pTgzMdP6PVt/drPeL5vO7xu+mNZnKHlUGetyE5E1cfAiagGMrb0ln+7FAu2/4Wv9p7HrZIyk+5Z5VLc3byhiSuPAgAmH1iL139fKerzZvRkrO044O53+nNctk6Gt4ea8IxEzoyBE1ENI6UqtqlBEwA0qO1VZZ8BEcF4QxmMuKFd9K41f2MD1G73dtIpmzcQXa9ucrozqAnPSOTsJNdxIiLXYGpVbMmk7NuPj9cLmiYNeROhCZtEQVOArwd6lFsOM1b/SZucnphaof6TE6oJz0jkCjjjRFTDWKu69dWbxZVcvAo0bKjXHDp1o+YYlQo+eqK9bnmqshkyU5LTHVlNeEYiV2HXGadFixYhMjIS/v7+8Pf3h1KpxNatW3XXi4qKEBcXh/r166N27doYNmwYsrOzRffIyMhATEwMfH19ERgYiDfeeAN37twR9dm9ezc6d+4MLy8vtGzZEitWrLDF4xE5JGtVtzZ631Gj9IOm335D4skremfvKfy9sLhCaYOqZshc4Zy4mvCMRK7CrjNOjRs3xkcffYRWrVpBEAR8++23GDJkCI4dO4b77rsP8fHx2Lx5M9atWwe5XI7JkyfjiSeewP79+wFoDh6OiYmBQqHAgQMHkJmZidGjR8PDwwMffvghACA9PR0xMTGYOHEiVq1ahR07duC5555DcHAwoqOj7fn4RHpskRjcLaweFP7eyCq0zMyTtmq23qHCly4BTZqI2zw9gWLNzNQAQG+rv6HnlTpD5sznxNWEZyRyFXYNnAYPHiz6/oMPPsCiRYtw8OBBNG7cGEuXLsXq1avRp08fAMDy5cvRrl07HDx4ED169MBvv/2GtLQ0bN++HUFBQejYsSPee+89JCQkYNasWfD09MTixYsRFhaGjz/+GADQrl077Nu3DwsWLDAaOBUXF6O4+N6yQ2FhoZV+AkT32CoxOCktC0V3TE/+NsRo1ex+/YDt28WdVSqgRw9Rk5TK51JnyJz5nLia8IxErsJhksPLysqwdu1a3Lx5E0qlEsnJySgtLUVUVJSuT9u2bdG0aVOoVCoAgEqlQvv27REUFKTrEx0djcLCQpw6dUrXp/w9tH209zBkzpw5ooOLm1T8VzORhdkqMVj7Pvm3SiX19/MUnxdXcfJL71Dhv/7S5CyVD5qaNdMcylshaDKkTC1AdT4XG1IuQ3U+F2VqQVf/ydi8mwyaAFNvxsuM97IXaz0jEVme3ZPDT548CaVSiaKiItSuXRs///wzwsPDkZKSAk9PTwQEBIj6BwUFISsrCwCQlZUlCpq017XXKutTWFiI27dvw8fHR29M06ZNw5QpU3TfFxYWMngiq7FVYrCUMgQV1fGuha9H34+rN4qrrprdvj2Qmiq+wcmTQESEpPeqbMbN2Llx5p4T52jb/is7G49n4RE5FrvPOLVp0wYpKSk4dOgQJk2ahDFjxiAtLc2uY/Ly8tIlrGu/iKzFVonB5pQhyCoshptMhiEdG0HZoj48a7lB2aK+7nt3Nxlw7Jhmlql80NS9u2aWqYqgSTvr8+7GU5hYyYwbACwa2Vk/mVzujVejWqP4jlryrJGjbvvXno1n6BmlnAVIRLZh9xknT09PtGzZEgDQpUsXHDlyBJ9++imefvpplJSUID8/XzTrlJ2dDYVCAQBQKBQ4fPiw6H7aXXfl+1TciZednQ1/f3+Ds01EtmaJxGApSeXmJhZX+rqGDTWlBsr7+28gLKzK8Uk50kUbBr25/iS+jO2MPW88opvxunD1JlYfysCC7X/p+iv8vTHrMeOzRo6+7d/Q2XisHE7kWOweOFWkVqtRXFyMLl26wMPDAzt27MCwYcMAAGfOnEFGRgaUSiUAQKlU4oMPPkBOTg4CAwMBAElJSfD390d4eLiuz5YtW0TvkZSUpLsHkb1VNzFY6rKTuYnFBl+3dy/w0EPitiFDgF9+kTS+AF8PyXlWAJB/qxQjlh7SPZdXLTcs2H5Wr19WYREmrjyK+KjWCG3gqxd4mDK71y2snl0CGCkJ80RkP3YNnKZNm4aBAweiadOmuH79OlavXo3du3dj27ZtkMvlGD9+PKZMmYJ69erB398fL730EpRKJXrcTTLt378/wsPDMWrUKMybNw9ZWVl45513EBcXBy8vzfEPEydOxBdffIGpU6fi2Wefxc6dO/HDDz9g8+bN9nx0Ih1tYnBWQZHBmRCj2/1h/Mw57bJT+SWeqt5H0vsKAuBmYIU/MxO4O8srZXymBE3lZRVoAqOKSesVlZ+FKh9ESp11256WhSk/pDhMDhQROQ675jjl5ORg9OjRaNOmDfr27YsjR45g27Zt6NevHwBgwYIFePTRRzFs2DD07t0bCoUC69ev173e3d0dmzZtgru7O5RKJUaOHInRo0fj3Xff1fUJCwvD5s2bkZSUhA4dOuDjjz/GkiVLWMOJHIY2MRiA3q6qyhKDq1p2AjTLTtq8n8repyKD77tpk37QNGGCJpgyEDSZk4xeFe29bppwll753CWps25L919wuBwoInIMMkEQ7LcH10kUFhZCLpejoKCAieJkNabu9FKdz0XsNwervO+aCT1ESz+G3sdNBpTPqxa9r1oNuBuY4cnLA+rWNfq+UsdnC9rZsz1vPIKH5u+qdHZPVuFnYeg++xL6MO+IyAlY4/e3w+U4EdVUpiYGm5tUbuh9jJYZWLUKGDlSfMNp04C7lflNeV970uYuJf9zrdJt/wI0E2hV3edweh7zkIhqKAZORA7ElMTg6iSVG3of0felpYC7p/7NbtwA/PwsOj5byrlehEcjQ/BqVGss35+O/Nv3cq0Ucm8MjFBg2f4Lku5DRDWT3es4EZF5rFZt+osvNGfKlZMaPx2qc1dR5uNr8vgsTYaqc7SMuXD1JnrN3YkF2//SBU0BPh6Ij2qFfQl90C9cP1fLEEcMConINhg4ETkpc5PKjbp9W5Pg89JLouZWr/+MRz27I/abg+g1d6fk5Gh3Nxke62DZHWjaJ3m+d1il/Qy9rq6vBxZsP6uX9F1wuxT/3X4WSWlZPPqEiKrEwInIiVms2vS77wK+4tmkqQNfRmjCJpS6e+jatDvLtpzIrPKctzK1gF+PW3YHmva5pg0Kx+KRnVHX16PqF+Fu7lIl1wDNDkQAlg1GicjlcFedBNxVR45OSuVwgwoLAblcr7nn+9tw+brxWkuV7sK7y5xddRXvq/D3Qmy3pght4GfwuX5KvoTX1h2v8r4DIoKQmJpdZT/tDkRHO8uOiMzDXXVEZJBZ1aZffhn4/HNx208/QdXhIVyuIuCpOMGUebcw5cJnOmNQpCawMCeBWi0A02PaoUEdL0kBYP6tEkn39a5VecFMLe2YefQJERnDwImopsnJAYKC9NvVakAmQ07KZbNvPXnNUXyBThgUGWJ2AvWV/NsY/2BzSX3r+RnY+WdASIDpOxB59AkRGcIcJ6KaJDZWP2javl1TvEimmU2pzo4xtQC8uPoYElMzq0y0Nmbp/guSE9AVcmkHdfds0ZBJ30RkEQyciAwoUwtVJj87lYwMTWC0du29Nh8fTcDUt6+o67WbxajuilRVidZSXi/lZy6l5EGw3Bs9WtRn0jcRWQQDJ6IKElMz0WvuTsR+cxCvrE0xeRu+w+nTB2jWTNx26BBw65Ze18TUTMStPmb0yBGpMguKsGJ/OorvqBETGaydzDL59VUFT9qSDJXNJGkDIovtQCSiGo276iTgrrqaIzE1E5NWHtXbuq79xexUv2BPnwbatRO3tWgBnDtnsHuZWkCvuTv16hzZk9SdbKbsgjN7ByIROR1r/P5m4CQBA6eaoarAwakOeG3XThM4lXfqFBAebrB7mVrAiv3peG/znzYYnHSmBKwMiIioIpYjIKqmyn65Hk7Pq3S2xSkOeE1OBu6/X9zWqxfw++9GX2JotqYy4x5ohm9V/1R7OU8KAZrgafbGNPQLV1QaCHEXHBHZAgMnqjGqWs6RWnfIYQ94DQgACgrEbenpQGio0ZcYW5qsTFS4Al1D6+HF1cfMGaXJnCJgJaIag8nhVCNoA4SKsyraI0QSUzMlb8N3uANed+/W7JgrHzQNG6bZMVdJ0FSmFjB7Y5pJQRMAQAAGRYbg2Z7G720NDhuwElGNwhknckqm5LNUFiCUXwra88YjCJZ7I6ugyGBfbY6Tw9T6EQTAzcC/fbKy9Go1Gfp5VbU0aczVm8UAgH7hCizbf8GckZvF4QJWIqqRGDiR0zH1HDGpuUvJ/1zDzMHhmLTyKGQQHwortdaPNkDJKixC3o1i1PPzhELuIzlRWXJA+OuvwJAh4raJE4FFi/S6Gvt5DYpQVDkeQ7QBjLaGkrFA01IcLmAlohqNgRM5FWM5OdolN0O7r0zJXRrSsREWjeysF2goJGyLryzJWsq2ekkBoVoNuOufu7Z57ynUCwlCN7UgCrSM/bwyC4qw1MTZoooBjLaGkqFAsyrBcm881iEYvx7PrDSoZXFKInI0LEcgAcsROAZzywWozucitopDawFgzYQeuuRjU7e2S0mylsH4tnpJ9aOOJgFjxoiuL3tkJN7tNlz3fflAq0wtoOdHO5FVaLncoPKH+JYfe8WAz00mPghY4e+F2G5NEdrAT/TzLP9zvnD1JtYczkBWYbHB5yEiMhXLEVCNZm65gKqWlAwtBZmytV1qkrUAw9vqq8rB8ii7gwHtQ/SutZvyI257iPN+ys+8ncm6btGgCQDe+vkkzubcwOQ+LXXPMCAiGP3CFaJAs0uzukj+51qVgWfFn/PkPq1Yi4mIHBoDJ3Ia5pYLqGxJyRJLQaYkWRsK7Cp7/bNHNmDGzm9EbepPPkHPokjcNvAabbL7tPUnce1WqeRnkCr/dikWbP8Lyw+k46Mn2utmggwFmuaUDmAtJiJydCxHQE6jOuUCrHlOmanb5Cv2N/R6r9JiXJj7qF7QhJISHHpsdJUzb9YImsrLv1WKiXfLOBAR1SSccSKnYc6SW3mGlpQssRRk6jb5iv0rfh//+yq8cmCNqO21QfF48rO3ofTwcKh6RlIqehMRuRIGTuQ0LLHkZo2lIFO25QffDezKJ0U38POCwt8bN//Nxcn/Pq33mrCpv0IR4It5dwNCR6pnxIreRFTTMHAip6JdcjOnXIC1lA/oKiODJrBLSsvSG/+HOxbjmT82ifpPeOIdJLXqAQB4rEOwLiC0Vf0kqRxpBoyIyNpYjkACliNwPKaWC7AFKXWcAIjKDjS4eQ1/fDFKr3/o1I2aY1TuquvrgT/e6ad7Rm35AsDwzJvc1wMFt0ptEljFR7XCK1GtbfBORESmscbvbwZOEjBwIqkqqxwOQFSHauHPH2LQXwdEr48d/iFUzSIN3nvVc93Rs2UD3feVFcwEYDCwqsywzo2w7+xVZF8vrrpzBYurmWBPRGQNDJzspKYGTo44q+PMtIU4GxXkYP/iZ0XXrnv6oH38ukpfP/mRlng9uo2orbLPqLIZMGPKF6q8cPUmlu1PR8HtO5W+xljhUSIie2MBTLIZU8+Dc1SOFPzlXC/C/1YloPulU6L2waMX4GRwKwl3uPdvnIrP9WhkiN5zld9FuD0tS9IRK9mFxfjv9rNYNLIzXolqjcl9WiHhxxP48eilSkfFJHEiqikYOJEec86Dc0QOFfylpWFIp/tETefrNUbfCYsl30Lu44EytWAwudzYc2l3ESpb1EfXsHqY9esp0ZEmFWk/8/JlBh5s3aDSwEmLSeJEVBOwACaJVHX8B6D5pVqmduwVXm3wV3GZShv82bRwY+vWwH3ioKnvc4tMCpoA4IMtp9Hl/SRMNPO5BkQEY/+bfTE9pl2V75VZUIQvdp4FUL3Co0REroaBE4mYch6co3KY4O/IEc3OuLNndU0XIu5HaMIm/F2/iVm3zDdSEVzqc7m7ydCgjpek91qw/SwSUzN15Q+MLXDKcK8+FRGRq2PgRCLmngfnSBwi+KtdG+jWTdT0wKRleDhmFgBRpQEAgCXSrqQ8V5lawFUTds3N3pgGALqdehWHaYmz/oiInAkDJxJxhWUZuwZ/O3dqoqKbN3VNm9o+iNCETbjiH6hr004KjXsgFNNj2sGSk1/GnisxNRO95u7Ee5v/lHwvbSBmzbP+iIicCZPDSaS658E5AmsGf0Z36QkC4Kb/75BBb61DWpmP0ft9q7qAMcpmJo+jMoaey1jCvxTaQMxaZ/0RETkTBk4kYonz4OzNWsGfsV16X/r+g86vjhd3njwZqldnIe2bg5XeUy0Ayw/8Y9I4jDH2XJXlfElRPhCzxll/RETOhEt1pMfZl2W0wR9guZwcQ7v03NRlUL0VpR805ecDn39u0lJgdePQyp6rqpyvyu7JpG8iIjG7Bk5z5sxB165dUadOHQQGBmLo0KE4c+aMqE9RURHi4uJQv3591K5dG8OGDUN2draoT0ZGBmJiYuDr64vAwEC88cYbuHNHXO149+7d6Ny5M7y8vNCyZUusWLHC2o/n1AZEBGNfQh+smdADnw7viDUTemBfQh+HD5q0pAZ/ZWoBqvO52JByGarzuQZ3pBmasYn+6wD+nj9E1E89Y4ZmyU4uBwA0qC1t9xoAk3OcAnw9RN9XFtSak8vlLLOLRES2Zteluj179iAuLg5du3bFnTt38NZbb6F///5IS0uDn58fACA+Ph6bN2/GunXrIJfLMXnyZDzxxBPYv38/AKCsrAwxMTFQKBQ4cOAAMjMzMXr0aHh4eODDDz8EAKSnpyMmJgYTJ07EqlWrsGPHDjz33HMIDg5GdHS03Z7f0Tn7skxVOTlSC2SWn7FxV5fht6UvokXeZdF7tZnyE1aMfgjK8o1WqnYQH9Uak/u0lJxrZE4ul8IJq8QTEdmCQ51V9++//yIwMBB79uxB7969UVBQgIYNG2L16tV48sknAQCnT59Gu3btoFKp0KNHD2zduhWPPvoorly5gqCgIADA4sWLkZCQgH///Reenp5ISEjA5s2bkZqaqnuv4cOHIz8/H4mJiVWOq6aeVefKjCVLa0OP8rM3G1Iu45W1Kehz7jCW/fSuqP+MqBfwXZfBAIBPh3fEo5EhuoDmbPYNfLHrnEXHrfD3wv43+5o0C1SmFtBr7s5Kc76C/L3w8X864uqNYiZ9E5HLcPmz6goKCgAA9eppciqSk5NRWlqKqKgoXZ+2bduiadOmusBJpVKhffv2uqAJAKKjozFp0iScOnUKnTp1gkqlEt1D2+fVV181OI7i4mIUF9+rdVNYWGipRyQHUFWBTBnER44EecqQ/NkzqH/73v8P/mwYipixn0Lt5q5ru3D1JnrN3WlWPpFUsx67z+SARkrC/6zH7kPPlg0sNUwiIpflMMnharUar776Knr27ImIiAgAQFZWFjw9PREQECDqGxQUhKysLF2f8kGT9rr2WmV9CgsLcfv2bb2xzJkzB3K5XPfVpIl5VZ7JMZlUIHPNGvS4r5EoaPrPMx9h4LNf6IImGYC6vh5YsP2sVYOmh1o3NHvpzNkT/omIHIXDzDjFxcUhNTUV+/bts/dQMG3aNEyZMkX3fWFhIYMnFyIlWdqnpAg9WgcCarWu7VCTCMTGfgi17N6/N7QzNrZY7+5lxoxQxbpTe954BMn/XGMdJiIiMzlE4DR58mRs2rQJe/fuRePGjXXtCoUCJSUlyM/PF806ZWdnQ6FQ6PocPnxYdD/trrvyfSruxMvOzoa/vz98fPSLE3p5ecHLS/qOKGdjtIhjDVFVsnRsSiLmbPtC3PjHH7jmFYKgCsnkCrk3hndtigXb/7LGUEXaBtUxqX9lye9DOjay9PCIiGoEuwZOgiDgpZdews8//4zdu3cjLCxMdL1Lly7w8PDAjh07MGzYMADAmTNnkJGRAaVSs39JqVTigw8+QE5ODgIDNUdaJCUlwd/fH+Hh4bo+W7ZsEd07KSlJd4+aROpOMldVphagVgsI8PFA/m3xgbn+RTdw4tPh4hc8/jjw00+ATIYBgN4uvS7N6uKzHWchxdCOIfD38UBm/m0k/Zlj8tjzbpdI7mss+T2roAiTVh7l8hwRkZnsuqvuxRdfxOrVq7Fhwwa0adNG1y6Xy3UzQZMmTcKWLVuwYsUK+Pv746WXXgIAHDhwAICmHEHHjh0REhKCefPmISsrC6NGjcJzzz0nKkcQERGBuLg4PPvss9i5cydefvllbN68WVI5AlfZVWfKTjJXZCho1Hr+0E94a/dyceOpU8Dd4LuiMrWAL3aew7L96SioEIBZy5oJPSSVh9DuojOWb6WtML4voU+NmmkkoprH5XbVLVq0CADw8MMPi9qXL1+OsWPHAgAWLFgANzc3DBs2DMXFxYiOjsbChQt1fd3d3bFp0yZMmjQJSqUSfn5+GDNmDN5999628bCwMGzevBnx8fH49NNP0bhxYyxZsqRG1XAydSeZo7DUsqKxoLH+zXwkfzFS1Pa/9v3w39gE7GvbDu4V+msCprP4au/fuFVSZvI4zGHqETGmJL87c50uIiJ7sPtSXVW8vb3x5Zdf4ssvvzTap1mzZnpLcRU9/PDDOHbsmMljdGblg46r14ud7peppZYVjQWNr+39Hi+p/idq6/XCElwKUAAFRfhi51m8EtVaNJ43159E/i3bzDAB5lXwllop3JyK4kRENZ1DJIeT5VW2LFWZ/eeumj2rY8mkc0vm6FScgQku/BeqReNEfb7pOhQf9HlO1LZg+1m0UdTBgIhgo+OxNnMqeEutFG5ORXEiopqOgZMLqs4v+S92ncNPRy+Z/Mvakknnll5W3J6Wpfvvd39bhNHHNouud3vxW+TUMTzLNntjGvq0DTI6nsrc36wu/vjnmomv0gjw8cCXIzqjR/P6Jgef3cLqIVjuXWmlcFOW/oiI6B6HKYBJllFZ0CGVdlYnMTVTUn9toFZxdsvU+2iZVKBSwtiW7r+A0LzLuDD3UVHQ9HGvEQhN2GQ0aMLd9/ledcGswpZetcz/45V/uxRuMplZM3baSuHAvaU+LR7eS0RUPQycXExVQYcU2qBr9sY0lKkrD8Gqmh0y5T6q87nYkHIZ+89dlTTOqnJ0tGP79Nf52P3NC6JrHV9ejc97xkp6n3/ybknqV9H+87moTmxSnRwkVgonIrIOLtW5GEsl/EpNFrfEDi5z87GqytFJ3fo7VG+Jzyic1fd5rLj/MZPep1k9X5P6l1dFvFip6uYgDYgI1qs7VdOKnRIRWRoDJxcj9Zft0I4h+CXlSpX99p+7Wukv3eru4DInH6uyHJ0ytYDDf+ei+Zgn0eHAHtG1iFd/wA0v6UGQ9n1GKUOxZF+60ZwhKdxk4iCq4veG3tcSOUjubjKH2SVJROQKGDi5GKmJwU91aSIpcPpi1zndfxtK9q7ODq7q5GMZytFJTM3Ej1/+iCWLXxa1vzYoHj+172vS/WXQzJYNjFAg+Z9rmB4TjrjVR80YqYZaAKbHtEODOl4IrOONazeLEbdaUx6j/PMzB4mIyLExx8nFSE0M7tGiPoLl3np9KmMo2VsbqBm7jwyagMvQ7Im5+VivRrXWy9FJPHEZwf0fEgVNNz280WbKTyYHTQAgu/tAy/ZfQOw3B/He5jTERFYvL6hBHS8M6dgIyhb1MSgyhDlIREROiDNOLkibGFwxb6hiTaCZg8MxaeVR3exKVQyVAtAGaobuU9Xsibn5WKENxMttZdt3YEA/cS7TxKHTkNimp1n3B/SX0bIKirDphGm7AyuqOOvGHCQiIufDwMlFSfmlbCzAqoyhZG+pgVpF5iY/61535w7Qti3cz5/XXbtcpyEefuFrlLp7mHVvY6pT3qGynCXmIBERORcGTi5Myi/ligHW2ezr+GLX+UpfA+jPFpkze9ItrB4CfD0kH2EiCkB+/RUYMkR0ffRTs7G3eRdJ97IV5iwREbkWBk4kCrBU53MlBU62Pq5DG3LM7t8c7g3qA9fuVeS+2a492j/6PtRuFY/kte54DM1CyX1qoeD2Hd335hyZQkREjouBE4mYe1yHOUeuHE7PkzzbpJB7YzH+RIf7HxVf2LcP3soHEDR3Z7ULf/Zu1QB7z1ZdfPPVvq3wvz8uGnxW5iwREbk2Bk4kYk6yt7kH8kpNDv9P2wDMG9dL3PjII8COHYBMBnfcS3SvTi6S1CNSuobWw0t9WxkNkJizRETkuliOoAYof5yJ6nxulcefmHJcR3WOXJGy3Dfi2Bb9oOnoUWDnzns1A8qNOcDX/KRwPy9p/464erNYt7ypLS/AWSUiopqBM04uzpwlNEB6srcpR650C6snul/HJgGo5+eJvJsleq/zL7qBE58OF7Vtaf0A8MM61K3thZyUy3pj0o75i51nsXz/BeTflrYMqNUuuA5+Sam6n63zu4iIyHEwcHJh5i6haUnZlSd1uW17Wham/JAiCrKMHTsy8eCPeHPPClFb3+cW4Xz9JpCtPQah3GsqBoHubjK8EtUak/u0MnmnYGAdb7Pyu4iIqObgUp2Lqs4SminvcfV6saS+S/df0JuZqvjWDW5ew4W5j4qCpjWR/RGasAnn6zcBAFHQBBiuZg5AtJTWs2VDSWNUyH0kVV3nshwRUc3FGScXZcoSmjnJzIaWAI2RUpl86p4VePHgj6K2XhOX4pI8qNLXGapmXpEpOwXd3WRmFfMkIqKagYGTi5K6hGbOsSfGlgCNqaxfSGEODix6VtS2uPswfPTwOMnjqSoINHWnII9CISIiYxg4uZAytaD7ZS91Cc3UROfKlgBN9cG2LzAiJVHU1jXue/xbu65Z96ssCDT1WBgehUJERIYwcHIRhpbOjCVfA+YnOle1BChFWN5l7PrmBVHb/AdH4csHnq7WfasKAgdEBKNP2yB8r7qAf/JuoVk9X4xShsJTYv0mIiIiBk4uwNjSWWVBE2BeorM5S3vlfb5hLgaf/l3U1uHlNSjwqVOt+wbfDQLLz7pVXGIzFFwu2ZfO3CUiIpKMgZOTk7J0VnHmqTqJzubWMGqX8ze2Ln9Z1DYj6gV812WwWferaObgcCSlZRmtWQWgWqUZiIiIAAZOTk/K0plaAKbHtEODOl7VTnSuaoeaHkHA9/+bjgf/SRE13/fqD7jp5WvWGCp6snMjAMYDo4krjyLA18NoaYaqduURERFpMbnDiRg6OkXq0lmDOl4WOR5Eu0MNMFzrSAYgwNcDMgCdL/2JC/MGi4KmKTHxCE3YZLGgSQbgvaHtq6xZVdlhwuV35REREVWGM05OwtjRKcO7NpH0ekseE1LVDjWUlaFR9MNon32vWnehlx+6Tv4exbU8LTYOAHi+dxhSLuZXO2EdqH7+FhERuT4GTk6gsqNTFmw/iwBfDxTcKrXpMSFGax3t3AH06yfq+/zjb+O31koEy70xMEKBZfsvVPv93WTAhAfDMG1QODakXK72/QCeQUdERFVj4OTgqjo6pfxymZTijpYkqnVUWgq0bAGkp+uuX5QH4ZEJX6F2bR/E9wzVnR8nJXDy83LHzeIy3fdBdTzxYKuG8PWqpVdGoLoBD8+gIyIiqRg4OTgpR6fk3ypFfFRrrD2SYdFjQirb2i/yyy/A44+Lmkb+5z3sC+sEACi4XYr/bj+LNoo66NM2qNL6UlpzhkSgodxHUuVuKUeqyO/OygG2DS6JiMi1MHBycFLzbkIb+GJfQh+LHRNiLKdKFIgVFQFBQUBhoa7PCUVLDB31MdRu7rq28jvX6nh7VBk0AcCszWk48nY/SeOXcqTKR0+0B+6OgWfQERGRuRg4OTipy1CBdbwtdkxIZTlVuppHx7YDo0eLrj8xYj6ONm5n8J7anWuq87mSxpB3s9SkA4ilHqnCM+iIiKg6GDg5OCnLUJbMz6kqp6p28S0MaB8iat8b2gmj//MuIJMSgEg/5S7nepH05UJIO5yXZ9AREVF1MHBycFKWoSyZn1NZTtWoo5vwXtJiUdugsZ8hLai55PsrmzfA6sMXkXezpMq+F67eRK+5OytfLqyAgREREVkTC2A6Ae0ylEIuXraT+3rg1ajW6BeusNh7Gcqpkt++jgtzHxUFTRvbPojQhE2SgyYZNEFPjxb18f6QiCr71/X1wILtZ/WCOO1yYWJqpqT3JSIisiQGTg7IUIXwARHB2JfQB/FRrRDg4wFAs5tuwfa/0GvuTosFEhVzql5U/YDjn8WK2vo8txgvDUmQfM+KM2ODIoPxQu+wSvsbW9DTts/emIYyKVnmREREFsSlOgdT2W42APjv9rNWPahWm1N153Imjnw5SnRtVccBeDt6ssn3NLRzbdqgcHRoHIB3NqQi7+a941A01dCbYsH2v4zer/wRKVyWIyIiW2Lg5EAq281mjYNqjSVerzr7E5ovXyTq23PiMlyRB0p+FimHCg+KDEF0RLDeGDaduCLpPXhEChER2RoDJwdR1W42QPpBtdpZmJI7anyvuoB/8m7pVds2NLPVqSwfP//fSJTPWlrY40nMe2gsAM1s0PSYcLy3Oc3oLj9AcxxKsNwbgyJDjPS4x1AytyklGIiIiGzJrjlOe/fuxeDBgxESEgKZTIZffvlFdF0QBMyYMQPBwcHw8fFBVFQUzp49K+qTl5eHESNGwN/fHwEBARg/fjxu3Lgh6nPixAk8+OCD8Pb2RpMmTTBv3jxrP5rJqqoQLpV2FmbOljS0nb4V723+E9+p/sF7m/9E2+lbMWdLGracyMTElUdF7zdn62f4+f9Giu416M3/ofS9D/Dp8I5YM6EH9iX0waDIYN2yoTFqAXhx9TFsOWFe3pV2udDYvJk20ZxHpBARka3ZNXC6efMmOnTogC+//NLg9Xnz5uGzzz7D4sWLcejQIfj5+SE6OhpFRfd+4Y8YMQKnTp1CUlISNm3ahL179+L555/XXS8sLET//v3RrFkzJCcnY/78+Zg1axa+/vprqz+fKSy17BRYxxtztqThq73pehW61QLw1d50vLj6qK6tRe5FXJj7KGJP/KZr++ihsQhN2IQ/BT/8d/tZeNVyg7JFfd1y24CIYHz5TGdUtSI4ec1RbJG47FaetgQDAL3giUekEBGRPckEQXCIrUkymQw///wzhg4dCkAz2xQSEoLXXnsNr7/+OgCgoKAAQUFBWLFiBYYPH44///wT4eHhOHLkCO6//34AQGJiIgYNGoRLly4hJCQEixYtwttvv42srCx4enoCAN5880388ssvOH36tMGxFBcXo7i4WPd9YWEhmjRpgoKCAvj7+1vl+VXncxH7zUGzX68thLnztYdx38zEqo81EQQs/GUOBv11QNQc+cpaFHrX1rvvvoQ+okDl0+1/YcF28eyfMYvNTFqXdOwLERGREYWFhZDL5Rb9/e2w5QjS09ORlZWFqKgoXZtcLkf37t2hUqkAACqVCgEBAbqgCQCioqLg5uaGQ4cO6fr07t1bFzQBQHR0NM6cOYNr164ZfO85c+ZALpfrvpo0aWKNRxSpankKAHw9Nee/VTYLs/rQP1UGTfdln8eFeYNFQdM7/V9EaMImUdAEiHOntBJTMyUHTYD5pQO0JRjWTOghWi5k0ERERPbisIFTVlYWACAoKEjUHhQUpLuWlZWFwEDxTq9atWqhXr16oj6G7lH+PSqaNm0aCgoKdF8XL16s/gNVobLlKa1bJWWa6xU6KOTeulIEv5/91/ibCAJWr3kLm1e8ImoOj1+HlZ0GVTo+7VKiNondFBUDL1Nok8eHdGwkWi4kIiKyB+6qM8DLywteXl42f19jB9VWpJ28Gd8zFFHhCt12/8TUTOz+66rB13S5lIafVk0Vtb3y6GvYcN8jksZ24epNAOYnsbN0ABERuQKHDZwUCs0xItnZ2QgOvrc0k52djY4dO+r65OTkiF53584d5OXl6V6vUCiQnZ0t6qP9XtvHXgzVUdIeVHvw71y8uOooCm4bLkEgA7AlNQtvxWiSpI3NBLmpy7Dp21cRnpOua7vmXQc94r5FcS1Pvf7GLNh+Fm0UdVB8R23ycwIsHUBERK7BYZfqwsLCoFAosGPHDl1bYWEhDh06BKVSCQBQKpXIz89HcnKyrs/OnTuhVqvRvXt3XZ+9e/eitPReAJKUlIQ2bdqgbt26NnoafYmpmeg1dydivzmIV9amIPabg7qjU9zdZPjjQp7RoAnQzz0yNBPU++9k/D1/iChoeu6J6ej0yhqTgiat2RvT0KC2aTNxLB1ARESuxK4zTjdu3MC5c+d036enpyMlJQX16tVD06ZN8eqrr+L9999Hq1atEBYWhunTpyMkJES3865du3YYMGAAJkyYgMWLF6O0tBSTJ0/G8OHDERKiKb74zDPPYPbs2Rg/fjwSEhKQmpqKTz/9FAsWLLDHIwOovEL4pJVH8XzvMHy1N93gayvSLoGVXwqrVXYHe76agEbX7+U7pdcNRr/xi3DH3fyPXBOo5SJY7l1pAUwtlg4gIiJXY9fA6Y8//sAjj9zLsZkyZQoAYMyYMVixYgWmTp2Kmzdv4vnnn0d+fj569eqFxMREeHvfW/ZZtWoVJk+ejL59+8LNzQ3Dhg3DZ599prsul8vx22+/IS4uDl26dEGDBg0wY8YMUa0nW5JSIfyb36UFTcC9JTDt/0afOYCvfvlQ1OeZp9/HgdCOZoxW36c7zuGF3mH4em96pYfxAobPqCMiInJmDlPHyZFZsg5Edes1lRdcrr5S2c1bKK5XH74l92aeUoJb4fFRH0OQWXZFtvzRK+WXBxX+Xojt1hShDfwqPaOOiIjIFqxRx8lhk8NdlSV3l+mWwL79Fu5jx8K33LXHR/4fjjVqa7H3Ki+zoAh1/TyxL6GPwUOCiYiIXBUDJxuz1O6yJzs3Qll+ASATH6T7b8+H0a/fm8i/fUfSfbSVwafHhOOtX05WepBweTnXiwwe0EtEROTKHHZXnauSUiHcTWa8CCagueb3zWLEPNhOfOH4cTTctwvJ0/sjPqoVAnw8Kh1L+eTtQZHBSH6nH57s3FjCU7C8ABER1UwMnGysqgNsZQAmPBhm8DoABNwuRPrcRzF7+1e6tg3tHkJowiZsQUPde7wS1RrJ0/thzYQeWPB0RzzZuRHk3uIJxvIVx7Wvm/tkJBT+xksOsLwAERHVZEwOl8AayWVVHWBr6PrLB9Zgyu+rRPd5eMJXuFCvEQDNTNUXsZ0wKFK8fKdlqOCmoZwkbbkEQLxrTttzkZmH9hIREdmSNX5/M3CSwBo/eKDqQEZ7vfD8BURH3y967bedYzCz3ySD911sgcCmqsCOiIjI0TFwshNrBU6SvP468PHHoiblpOXI9G9o9CXlyxRUh9QZKiIiIkfEcgQ1SXo60Ly5qOkL5X/wf71HV/lS7VEs1d3xxl1zREREYkwOd0Tjx+sFTWWZWVg1WHq1c0vWiyIiIiINBk6O5M8/AZkMWLbsXtvcuYAgwF0RpNuNJwXLBRAREVkeAydHIAjA448D4RUCo2vXgKlTdd8OiAjGwmc6o7I0I5YLICIish4GTvaWnAy4uQG//HKv7auvNMFUQIBe90GRwfgitpPBW5UvaMkkbiIiIstjcrg9lZYC95crM+DuDhQUAH5+lb5sUGQIFrvJ9MoFKFgugIiIyKoYONlTrVpAnz7Azp3A6tVAbKzklw6ICEa/cAXLBRAREdkQAyd7ksmAHTvMfjnLBRAREdkWc5yIiIiIJGLgRERERCQRAyciIiIiiRg4EREREUnEwImIiIhIIgZORERERBIxcCIiIiKSiIETERERkUQMnIiIiIgkYuBEREREJBEDJyIiIiKJGDgRERERScTAiYiIiEgiBk5EREREEtWy9wCcgSAIAIDCwkI7j4SIiIik0v7e1v4etwQGThJcv34dANCkSRM7j4SIiIhMdf36dcjlcovcSyZYMgxzUWq1GleuXEGdOnUgk8nsPZwap7CwEE2aNMHFixfh7+9v7+HUePw8HAc/C8fBz8KxaD+PjIwMyGQyhISEwM3NMtlJnHGSwM3NDY0bN7b3MGo8f39//oXkQPh5OA5+Fo6Dn4VjkcvlFv88mBxOREREJBEDJyIiIiKJGDiRw/Py8sLMmTPh5eVl76EQ+Hk4En4WjoOfhWOx5ufB5HAiIiIiiTjjRERERCQRAyciIiIiiRg4EREREUnEwImIiIhIIgZO5DBmzZoFmUwm+mrbtq3uelFREeLi4lC/fn3Url0bw4YNQ3Z2th1H7Dr27t2LwYMHIyQkBDKZDL/88ovouiAImDFjBoKDg+Hj44OoqCicPXtW1CcvLw8jRoyAv78/AgICMH78eNy4ccOGT+Eaqvosxo4dq/fnZMCAAaI+/CwsY86cOejatSvq1KmDwMBADB06FGfOnBH1kfL3UkZGBmJiYuDr64vAwEC88cYbuHPnji0fxSVI+TwefvhhvT8fEydOFPWp7ufBwIkcyn333YfMzEzd1759+3TX4uPjsXHjRqxbtw579uzBlStX8MQTT9hxtK7j5s2b6NChA7788kuD1+fNm4fPPvsMixcvxqFDh+Dn54fo6GgUFRXp+owYMQKnTp1CUlISNm3ahL179+L555+31SO4jKo+CwAYMGCA6M/JmjVrRNf5WVjGnj17EBcXh4MHDyIpKQmlpaXo378/bt68qetT1d9LZWVliImJQUlJCQ4cOIBvv/0WK1aswIwZM+zxSE5NyucBABMmTBD9+Zg3b57umkU+D4HIQcycOVPo0KGDwWv5+fmCh4eHsG7dOl3bn3/+KQAQVCqVjUZYMwAQfv75Z933arVaUCgUwvz583Vt+fn5gpeXl7BmzRpBEAQhLS1NACAcOXJE12fr1q2CTCYTLl++bLOxu5qKn4UgCMKYMWOEIUOGGH0NPwvrycnJEQAIe/bsEQRB2t9LW7ZsEdzc3ISsrCxdn0WLFgn+/v5CcXGxbR/AxVT8PARBEB566CHhlVdeMfoaS3wenHEih3L27FmEhISgefPmGDFiBDIyMgAAycnJKC0tRVRUlK5v27Zt0bRpU6hUKnsNt0ZIT09HVlaW6Gcvl8vRvXt33c9epVIhICAA999/v65PVFQU3NzccOjQIZuP2dXt3r0bgYGBaNOmDSZNmoTc3FzdNX4W1lNQUAAAqFevHgBpfy+pVCq0b98eQUFBuj7R0dEoLCzEqVOnbDh611Px89BatWoVGjRogIiICEybNg23bt3SXbPE58FDfslhdO/eHStWrECbNm2QmZmJ2bNn48EHH0RqaiqysrLg6emJgIAA0WuCgoKQlZVlnwHXENqfb/m/aLTfa69lZWUhMDBQdL1WrVqoV68ePx8LGzBgAJ544gmEhYXh/PnzeOuttzBw4ECoVCq4u7vzs7AStVqNV199FT179kRERAQASPp7KSsry+CfHe01Mo+hzwMAnnnmGTRr1gwhISE4ceIEEhIScObMGaxfvx6AZT4PBk7kMAYOHKj778jISHTv3h3NmjXDDz/8AB8fHzuOjMhxDB8+XPff7du3R2RkJFq0aIHdu3ejb9++dhyZa4uLi0Nqaqoo75Lsx9jnUT6Xr3379ggODkbfvn1x/vx5tGjRwiLvzaU6clgBAQFo3bo1zp07B4VCgZKSEuTn54v6ZGdnQ6FQ2GeANYT251txp1D5n71CoUBOTo7o+p07d5CXl8fPx8qaN2+OBg0a4Ny5cwD4WVjD5MmTsWnTJuzatQuNGzfWtUv5e0mhUBj8s6O9RqYz9nkY0r17dwAQ/fmo7ufBwIkc1o0bN3D+/HkEBwejS5cu8PDwwI4dO3TXz5w5g4yMDCiVSjuO0vWFhYVBoVCIfvaFhYU4dOiQ7mevVCqRn5+P5ORkXZ+dO3dCrVbr/uIi67h06RJyc3MRHBwMgJ+FJQmCgMmTJ+Pnn3/Gzp07ERYWJrou5e8lpVKJkydPioLZpKQk+Pv7Izw83DYP4iKq+jwMSUlJAQDRn49qfx5mJrMTWdxrr70m7N69W0hPTxf2798vREVFCQ0aNBBycnIEQRCEiRMnCk2bNhV27twp/PHHH4JSqRSUSqWdR+0arl+/Lhw7dkw4duyYAED45JNPhGPHjgn//POPIAiC8NFHHwkBAQHChg0bhBMnTghDhgwRwsLChNu3b+vuMWDAAKFTp07CoUOHhH379gmtWrUSYmNj7fVITquyz+L69evC66+/LqhUKiE9PV3Yvn270LlzZ6FVq1ZCUVGR7h78LCxj0qRJglwuF3bv3i1kZmbqvm7duqXrU9XfS3fu3BEiIiKE/v37CykpKUJiYqLQsGFDYdq0afZ4JKdW1edx7tw54d133xX++OMPIT09XdiwYYPQvHlzoXfv3rp7WOLzYOBEDuPpp58WgoODBU9PT6FRo0bC008/LZw7d053/fbt28KLL74o1K1bV/D19RUef/xxITMz044jdh27du0SAOh9jRkzRhAETUmC6dOnC0FBQYKXl5fQt29f4cyZM6J75ObmCrGxsULt2rUFf39/Ydy4ccL169ft8DTOrbLP4tatW0L//v2Fhg0bCh4eHkKzZs2ECRMmiLZWCwI/C0sx9DkAEJYvX67rI+XvpQsXLggDBw4UfHx8hAYNGgivvfaaUFpaauOncX5VfR4ZGRlC7969hXr16gleXl5Cy5YthTfeeEMoKCgQ3ae6n4fs7mCIiIiIqArMcSIiIiKSiIETERERkUQMnIiIiIgkYuBEREREJBEDJyIiIiKJGDgRERERScTAiYiIiEgiBk5EREREEjFwIiKHIZPJ8Msvv0juHxoaiv/+979WGw8RUUUMnIjIZsaOHYuhQ4cavZ6ZmYmBAwdKvt+RI0fw/PPPW2Bk0syZMwfu7u6YP3++zd6TiBwLAycichgKhQJeXl6S+zds2BC+vr5WHJHYsmXLMHXqVCxbtqzKviUlJTYYERHZGgMnInIY5ZfqHnjgASQkJIiu//vvv/Dw8MDevXsB6C/VyWQyLFmyBI8//jh8fX3RqlUr/Prrr6J7/Prrr2jVqhW8vb3xyCOP4Ntvv4VMJkN+fn6lY9uzZw9u376Nd999F4WFhThw4IDo+qxZs9CxY0csWbIEYWFh8Pb2BgDk5+fjueeeQ8OGDeHv748+ffrg+PHjutedP38eQ4YMQVBQEGrXro2uXbti+/btpvzYiMiGGDgRkUMaMWIE1q5di/LnkP/vf/9DSEgIHnzwQaOvmz17Nv7zn//gxIkTGDRoEEaMGIG8vDwAQHp6Op588kkMHToUx48fxwsvvIC3335b0niWLl2K2NhYeHh4IDY2FkuXLtXrc+7cOfz0009Yv349UlJSAABPPfUUcnJysHXrViQnJ6Nz587o27evbkw3btzAoEGDsGPHDhw7dgwDBgzA4MGDkZGRIfVHRUS2JBAR2ciYMWOEIUOGGL0OQPj5558FQRCEnJwcoVatWsLevXt115VKpZCQkKD7vlmzZsKCBQtEr3/nnXd039+4cUMAIGzdulUQBEFISEgQIiIiRO/59ttvCwCEa9euGR1XQUGB4OPjI6SkpAiCIAjHjh0TateuLVy/fl3XZ+bMmYKHh4eQk5Oja/v9998Ff39/oaioSHS/Fi1aCF999ZXR97vvvvuEzz//3Oh1IrIfzjgRkUNq2LAh+vfvj1WrVgHQzBapVCqMGDGi0tdFRkbq/tvPzw/+/v7IyckBAJw5cwZdu3YV9e/WrVuVY1mzZg1atGiBDh06AAA6duyIZs2a4X//+5+oX7NmzdCwYUPd98ePH8eNGzdQv3591K5dW/eVnp6O8+fPA9DMOL3++uto164dAgICULt2bfz555+ccSJyULXsPQAiImNGjBiBl19+GZ9//jlWr16N9u3bo3379pW+xsPDQ/S9TCaDWq2u1jiWLl2KU6dOoVate39lqtVqLFu2DOPHj9e1+fn5iV5348YNBAcHY/fu3Xr3DAgIAAC8/vrrSEpKwv/93/+hZcuW8PHxwZNPPsnkciIHxcCJiBzWkCFD8PzzzyMxMRGrV6/G6NGjq3W/Nm3aYMuWLaK2I0eOVPqakydP4o8//sDu3btRr149XXteXh4efvhhnD59Gm3btjX42s6dOyMrKwu1atVCaGiowT779+/H2LFj8fjjjwPQBFsXLlyQ/lBEZFMMnIjIpgoKCnSJ01r169dHkyZN9Pr6+flh6NChmD59Ov7880/ExsZW671feOEFfPLJJ0hISMD48eORkpKCFStWANDMTBmydOlSdOvWDb1799a71rVrVyxdutRoXaeoqCgolUoMHToU8+bNQ+vWrXHlyhVs3rwZjz/+OO6//360atUK69evx+DBgyGTyTB9+vRqz5ARkfUwx4mIbGr37t3o1KmT6Gv27NlG+48YMQLHjx/Hgw8+iKZNm1brvcPCwvDjjz9i/fr1iIyMxKJFi3S76gzVjyopKcHKlSsxbNgwg/cbNmwYvvvuO5SWlhq8LpPJsGXLFvTu3Rvjxo1D69atMXz4cPzzzz8ICgoCAHzyySeoW7cuHnjgAQwePBjR0dHo3LlztZ6TiKxHJgjl9voSEdUwH3zwARYvXoyLFy/aeyhE5AS4VEdENcrChQvRtWtX1K9fH/v378f8+fMxefJkew+LiJwEAyciqlHOnj2L999/H3l5eWjatClee+01TJs2zd7DIiInwaU6IiIiIomYHE5EREQkEQMnIiIiIokYOBERERFJxMCJiIiISCIGTkREREQSMXAiIiIikoiBExEREZFEDJyIiIiIJPp/TtKyS+CAe7MAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Your code here\n",
"X = dataset[\"living_area\"].to_frame()\n",
"X.insert(0, \"x0\", 1) # add the column full of ones at the start, this represents x0\n",
"X = np.array(X)\n",
"\n",
"y = np.array(dataset[\"rent_price\"])\n",
"\n",
"theta = np.linalg.inv(X.T @ X) @ X.T @ y \n",
"\n",
"print(f\"Theta : {theta}\")\n",
"\n",
"\n",
"plt.scatter(dataset[\"living_area\"], dataset[\"rent_price\"])\n",
"plt.xlabel(\"Living Area\")\n",
"plt.ylabel(\"Rent price\")\n",
"\n",
"y_regr = theta[0] + theta[1] * X[:,1]\n",
"plt.plot(X[:,1], y_regr, color='red', label='Regression line')\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "ccc5d7b9",
"metadata": {},
"source": [
"b) Compute the overall cost value according to the following equation:"
]
},
{
"cell_type": "markdown",
"id": "31a38211",
"metadata": {},
"source": [
"<div><div style=\"display: table-cell; width: 100%;\"><center>$J(\\theta) = \\frac{1}{2N} \\sum_{n=1}^{N} (h_{\\theta}(\\mathbf{x}_{n}) - y_{n})^{2}$</center></div><div style=\"display: table-cell; width: 100%;\">$(2)$</div></div>"
]
},
{
"cell_type": "code",
"execution_count": 462,
"id": "db65a2fa",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Overall cost : 138034.95779787414\n"
]
}
],
"source": [
"# Your code here\n",
"def cost_J(y_pred, y):\n",
" return (1/(2*len(y))) * np.sum((y_pred - y)**2)\n",
"\n",
"y_pred = X @ theta\n",
"# print(y_pred)\n",
"# print(X)\n",
"closed_form_cost = cost_J(y_pred, y)\n",
"print(f\" Overall cost : {closed_form_cost}\")"
]
},
{
"cell_type": "markdown",
"id": "38fed9aa",
"metadata": {},
"source": [
"## Exercise 3 - Gradient descent for linear regression"
]
},
{
"cell_type": "markdown",
"id": "d946ac48",
"metadata": {},
"source": [
"Implement the _full batch_ gradient descent algorithm for the previous problem. As seen in the\n",
"theory, the update rules are:"
]
},
{
"cell_type": "markdown",
"id": "9d1618d6",
"metadata": {},
"source": [
"<div><div style=\"display: table-cell; width: 100%;\"><center>$\\theta_{0} \\leftarrow \\theta_{0} - \\alpha \\frac{1}{N} \\sum_{n=1}^{N} (h_{\\theta}(\\mathbf{x}_{n}) - y_{n})$</center></div><div style=\"display: table-cell; width: 100%;\">$(6)$</div></div>"
]
},
{
"cell_type": "markdown",
"id": "6c0049d3",
"metadata": {},
"source": [
"<div><div style=\"display: table-cell; width: 100%;\"><center>$\\theta_{1} \\leftarrow \\theta_{1} - \\alpha \\frac{1}{N} \\sum_{n=1}^{N} (h_{\\theta}(\\mathbf{x}_{n}) - y_{n}) x_{n,1}$</center></div><div style=\"display: table-cell; width: 100%;\">$(7)$</div></div>"
]
},
{
"cell_type": "markdown",
"id": "3e0f8c42",
"metadata": {},
"source": [
"**Remark** You need to iterate several times over the training set. If you have problems of convergence, you need to use a smaller value of $\\alpha$. Values such as $0.000001$ are common."
]
},
{
"cell_type": "code",
"execution_count": 463,
"id": "9ca79a3d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Theta = [240.07710713 26.33242457]\n",
"Cost = 138034.95779787414\n"
]
},
{
"data": {
"image/png": "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KI888ogaN26s8ePHKycnp9Tz+/fv1yuvvCJJuuGGGySp1JkmL730kiRpxIgRks7tmj//G/F5ffr0kSTPbvnzZ4Lk5uZWqM4bbrhBmzdvVnp6uqetsLBQc+bMUfv27dW9e3dPe5MmTRQXF6f33ntPqampCgwMVHx8vNf6brnlFqWnp2vVqlWltpWbm6vi4uIK1VUR568F8uPXGhcXJ5fLpWeffbbM4yiOHz/+k+s+v0fih/NtjPH8nVWkjrLWef311+vDDz/0umpsTk6OFi5cqEGDBnm+4quoirwngNqqVu0ZuZCsrCzNnTtXWVlZatWqlSTp4Ycf1sqVKzV37lw9++yzOnDggDIzM7V48WItWLBAJSUleuihh3TzzTdr3bp1ll8BaqtOnTpp4cKFGjNmjC6//HKvK7Bu2rRJixcv9txnpXfv3kpMTNScOXOUm5urIUOGaPPmzZo/f77i4+M1bNgwSdL8+fP12muv6cYbb1SnTp1UUFCg119/XS6XyxNoGjZsqO7du2vRokXq0qWLmjVrph49eqhHjx5l1jl58mS9++67Gj58uO6//341a9ZM8+fP18GDB/X++++X+vpizJgxuuOOO/Taa68pLi7OcwDleX/84x/197//Xb/85S81btw4RUVFqbCwUDt27NCSJUt06NAhr691LkafPn3k7++v559/Xnl5eXI6nbr22mvVsmVLzZw5U2PHjtWVV16pW2+9VS1atFBWVpY++ugjDRw4UH/9618vuO5u3bqpU6dOevjhh3XkyBG5XC69//77nmM1figqKkqSdP/99ysuLk7+/v669dZby1zv008/rTVr1mjQoEH6/e9/r4CAAM2ePVtFRUV64YUXfJ6DirwngFrL4pk8F0WSWbp0qefx8uXLjSTTuHFjryUgIMDccsstxhhjJkyYYCSZPXv2eMZt3brVSDJffPFFTb8E1DF79+41EyZMMO3btzeBgYEmJCTEDBw40Lz66qteFzQ7e/aseeKJJ0yHDh1MgwYNTGRkZKmLnm3bts3cdtttpm3btsbpdJqWLVuaX/7yl2bLli1e29y0aZOJiooygYGBPl30rEmTJiYoKMj069fP66JnP5Sfn28aNmxoJJl33nmnzD4FBQUmOTnZdO7c2QQGBprmzZubmJgYM3XqVHPmzBljjPdFzyrqx6f2GmPM66+/bjp27Gj8/f1L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zZpVV5l1QmXn+sknn1TLli1111131USZtV5l5vnvf/+7oqOjlZSUpLCwMPXo0UPPPvusSkpKaqrsWqcy8xwTE6OtW7d6vso5cOCAVqxYoRtuuKFGaq4vbHwW+nzX3trixIkTKikp8dxN+LywsDB98cUXZY7Jzs4us392dna11VnbVWaef+xPf/qTWrVqVerND2+VmesNGzbozTffVEZGRg1UWDdUZp4PHDigdevW6fbbb9eKFSu0b98+/f73v9fZs2c1ZcqUmii71qnMPP/mN7/RiRMnNGjQIBljVFxcrHvvvVePPvpoTZRcb5T3WZifn69vv/1WDRs2rPJt1tk9I6gdnnvuOaWmpmrp0qUKCgqyXU6dUlBQoLFjx+r1119X8+bNbZdTp7ndbrVs2VJz5sxRVFSUxowZo8cee0yzZs2yXVqdkpaWpmeffVavvfaatm3bpg8++EAfffSRnnrqKdul4SLV2T0jzZs3l7+/v3Jycrzac3JyFB4eXuaY8PBwn/qjcvN83tSpU/Xcc8/pX//6l3r16lWdZdYJvs71/v37dejQIY0cOdLT5na7JUkBAQHas2ePOnXqVL1F10KVeU9HRESoQYMG8vf397Rdfvnlys7O1pkzZxQYGFitNddGlZnn//qv/9LYsWM1fvx4SVLPnj1VWFiou+++W4899pj8/Pj9uiqU91nocrmqZa+IVIf3jAQGBioqKkpr1671tLndbq1du1bR0dFljomOjvbqL0lr1qwptz8qN8+S9MILL+ipp57SypUrddVVV9VEqbWer3PdrVs37dixQxkZGZ7lV7/6lYYNG6aMjAxFRkbWZPm1RmXe0wMHDtS+ffs8YU+S9u7dq4iICIJIOSozz6dPny4VOM4HQMM9X6uMlc/Cajs09hKQmppqnE6nmTdvntm9e7e5++67TZMmTUx2drYxxpixY8eayZMne/pv3LjRBAQEmKlTp5rPP//cTJkyhVN7K8DXeX7uuedMYGCgWbJkiTl69KhnKSgosPUSag1f5/rHOJumYnyd56ysLBMSEmImTpxo9uzZY5YvX25atmxpnn76aVsvoVbwdZ6nTJliQkJCzLvvvmsOHDhgVq9ebTp16mRuueUWWy+hVigoKDDbt28327dvN5LMSy+9ZLZv324yMzONMcZMnjzZjB071tP//Km9f/zjH83nn39uZsyYwam9F+vVV181bdu2NYGBgaZfv37m008/9Tw3ZMgQk5iY6NX/vffeM126dDGBgYHmiiuuMB999FENV1w7+TLP7dq1M5JKLVOmTKn5wmshX9/TP0QYqThf53nTpk2mf//+xul0mo4dO5pnnnnGFBcX13DVtY8v83z27Fnz+OOPm06dOpmgoCATGRlpfv/735uTJ0/WfOG1yMcff1zmv7nn5zYxMdEMGTKk1Jg+ffqYwMBA07FjRzN37txqrdFhDPu2AACAPXX2mBEAAFA7EEYAAIBVhBEAAGAVYQQAAFhFGAEAAFYRRgAAgFWEEQAAYBVhBACAemr9+vUaOXKkWrVqJYfDoWXLlvm8DmOMpk6dqi5dusjpdKp169Z65plnfFpHnb1RHgAAuLDCwkL17t1bv/3tb3XTTTdVah0PPPCAVq9eralTp6pnz5765ptv9M033/i0Dq7ACgAA5HA4tHTpUsXHx3vaioqK9Nhjj+ndd99Vbm6uevTooeeff15Dhw6VJH3++efq1auXdu7cqa5du1Z623xNAwAAyjRx4kSlp6crNTVV//73vzV69Gj94he/0JdffilJ+sc//qGOHTtq+fLl6tChg9q3b6/x48f7vGeEMAIAAErJysrS3LlztXjxYg0ePFidOnXSww8/rEGDBmnu3LmSpAMHDigzM1OLFy/WggULNG/ePG3dulU333yzT9vimBEAAFDKjh07VFJSoi5duni1FxUV6bLLLpMkud1uFRUVacGCBZ5+b775pqKiorRnz54Kf3VDGAEAAKWcOnVK/v7+2rp1q/z9/b2eCw4OliRFREQoICDAK7Bcfvnlks7tWSGMAACASuvbt69KSkp07NgxDR48uMw+AwcOVHFxsfbv369OnTpJkvbu3StJateuXYW3xdk0AADUU6dOndK+ffsknQsfL730koYNG6ZmzZqpbdu2uuOOO7Rx40ZNmzZNffv21fHjx7V27Vr16tVLI0aMkNvt1tVXX63g4GBNnz5dbrdbSUlJcrlcWr16dYXrIIwAAFBPpaWladiwYaXaExMTNW/ePJ09e1ZPP/20FixYoCNHjqh58+YaMGCAnnjiCfXs2VOS9PXXX+u+++7T6tWr1bhxYw0fPlzTpk1Ts2bNKlwHYQQAAFjFqb0AAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACs+v8h63+BToASGwAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Your code here\n",
"\n",
"def gradient_descent(X, y, max_iter, alpha):\n",
" theta = np.zeros((2))\n",
" costs = []\n",
"\n",
" for i in range(0, max_iter): # we could also use a delta on the cost function with a while to stop when the cost is not improving but we wanted to see the curve after x iterations\n",
" y_pred = X @ theta\n",
" theta[0] = theta[0] - alpha * (1/len(y)) * np.sum(y_pred - y)\n",
" theta[1] = theta[1] - alpha * (1/len(y)) * np.sum((y_pred - y) * X[:,1]) \n",
"\n",
" c = cost_J(y_pred, y) # to plot the costs over iters\n",
" costs.append(c)\n",
"\n",
" y_pred = X @ theta\n",
" print(f\"Theta = {theta}\")\n",
" print(f\"Cost = {cost_J(y_pred, y)}\")\n",
"\n",
" plt.plot(range(0, len(costs)), costs)\n",
" plt.title(\"Cost over iterations\")\n",
" plt.show()\n",
"\n",
"gradient_descent(X, y, max_iter = 1000000, alpha = 0.0001) # i got the best results with those parameters"
]
},
{
"cell_type": "markdown",
"id": "da5121b6",
"metadata": {},
"source": [
"a) Plot the cost value (Equation 2) as a function of the iterations. What do you observe?"
]
},
{
"cell_type": "code",
"execution_count": 464,
"id": "5a34ad43",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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KI888ogaN26s8ePHKycnp9Tz+/fv1yuvvCJJuuGGGySp1JkmL730kiRpxIgRks7tmj//G/F5ffr0kSTPbvnzZ4Lk5uZWqM4bbrhBmzdvVnp6uqetsLBQc+bMUfv27dW9e3dPe5MmTRQXF6f33ntPqampCgwMVHx8vNf6brnlFqWnp2vVqlWltpWbm6vi4uIK1VUR568F8uPXGhcXJ5fLpWeffbbM4yiOHz/+k+s+v0fih/NtjPH8nVWkjrLWef311+vDDz/0umpsTk6OFi5cqEGDBnm+4quoirwngNqqVu0ZuZCsrCzNnTtXWVlZatWqlSTp4Ycf1sqVKzV37lw9++yzOnDggDIzM7V48WItWLBAJSUleuihh3TzzTdr3bp1ll8BaqtOnTpp4cKFGjNmjC6//HKvK7Bu2rRJixcv9txnpXfv3kpMTNScOXOUm5urIUOGaPPmzZo/f77i4+M1bNgwSdL8+fP12muv6cYbb1SnTp1UUFCg119/XS6XyxNoGjZsqO7du2vRokXq0qWLmjVrph49eqhHjx5l1jl58mS9++67Gj58uO6//341a9ZM8+fP18GDB/X++++X+vpizJgxuuOOO/Taa68pLi7OcwDleX/84x/197//Xb/85S81btw4RUVFqbCwUDt27NCSJUt06NAhr691LkafPn3k7++v559/Xnl5eXI6nbr22mvVsmVLzZw5U2PHjtWVV16pW2+9VS1atFBWVpY++ugjDRw4UH/9618vuO5u3bqpU6dOevjhh3XkyBG5XC69//77nmM1figqKkqSdP/99ysuLk7+/v669dZby1zv008/rTVr1mjQoEH6/e9/r4CAAM2ePVtFRUV64YUXfJ6DirwngFrL4pk8F0WSWbp0qefx8uXLjSTTuHFjryUgIMDccsstxhhjJkyYYCSZPXv2eMZt3brVSDJffPFFTb8E1DF79+41EyZMMO3btzeBgYEmJCTEDBw40Lz66qteFzQ7e/aseeKJJ0yHDh1MgwYNTGRkZKmLnm3bts3cdtttpm3btsbpdJqWLVuaX/7yl2bLli1e29y0aZOJiooygYGBPl30rEmTJiYoKMj069fP66JnP5Sfn28aNmxoJJl33nmnzD4FBQUmOTnZdO7c2QQGBprmzZubmJgYM3XqVHPmzBljjPdFzyrqx6f2GmPM66+/bjp27Gj8/f1L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zZpVV5l1QmXn+sknn1TLli1111131USZtV5l5vnvf/+7oqOjlZSUpLCwMPXo0UPPPvusSkpKaqrsWqcy8xwTE6OtW7d6vso5cOCAVqxYoRtuuKFGaq4vbHwW+nzX3trixIkTKikp8dxN+LywsDB98cUXZY7Jzs4us392dna11VnbVWaef+xPf/qTWrVqVerND2+VmesNGzbozTffVEZGRg1UWDdUZp4PHDigdevW6fbbb9eKFSu0b98+/f73v9fZs2c1ZcqUmii71qnMPP/mN7/RiRMnNGjQIBljVFxcrHvvvVePPvpoTZRcb5T3WZifn69vv/1WDRs2rPJt1tk9I6gdnnvuOaWmpmrp0qUKCgqyXU6dUlBQoLFjx+r1119X8+bNbZdTp7ndbrVs2VJz5sxRVFSUxowZo8cee0yzZs2yXVqdkpaWpmeffVavvfaatm3bpg8++EAfffSRnnrqKdul4SLV2T0jzZs3l7+/v3Jycrzac3JyFB4eXuaY8PBwn/qjcvN83tSpU/Xcc8/pX//6l3r16lWdZdYJvs71/v37dejQIY0cOdLT5na7JUkBAQHas2ePOnXqVL1F10KVeU9HRESoQYMG8vf397Rdfvnlys7O1pkzZxQYGFitNddGlZnn//qv/9LYsWM1fvx4SVLPnj1VWFiou+++W4899pj8/Pj9uiqU91nocrmqZa+IVIf3jAQGBioqKkpr1671tLndbq1du1bR0dFljomOjvbqL0lr1qwptz8qN8+S9MILL+ipp57SypUrddVVV9VEqbWer3PdrVs37dixQxkZGZ7lV7/6lYYNG6aMjAxFRkbWZPm1RmXe0wMHDtS+ffs8YU+S9u7dq4iICIJIOSozz6dPny4VOM4HQMM9X6uMlc/Cajs09hKQmppqnE6nmTdvntm9e7e5++67TZMmTUx2drYxxpixY8eayZMne/pv3LjRBAQEmKlTp5rPP//cTJkyhVN7K8DXeX7uuedMYGCgWbJkiTl69KhnKSgosPUSag1f5/rHOJumYnyd56ysLBMSEmImTpxo9uzZY5YvX25atmxpnn76aVsvoVbwdZ6nTJliQkJCzLvvvmsOHDhgVq9ebTp16mRuueUWWy+hVigoKDDbt28327dvN5LMSy+9ZLZv324yMzONMcZMnjzZjB071tP//Km9f/zjH83nn39uZsyYwam9F+vVV181bdu2NYGBgaZfv37m008/9Tw3ZMgQk5iY6NX/vffeM126dDGBgYHmiiuuMB999FENV1w7+TLP7dq1M5JKLVOmTKn5wmshX9/TP0QYqThf53nTpk2mf//+xul0mo4dO5pnnnnGFBcX13DVtY8v83z27Fnz+OOPm06dOpmgoCATGRlpfv/735uTJ0/WfOG1yMcff1zmv7nn5zYxMdEMGTKk1Jg+ffqYwMBA07FjRzN37txqrdFhDPu2AACAPXX2mBEAAFA7EEYAAIBVhBEAAGAVYQQAAFhFGAEAAFYRRgAAgFWEEQAAYBVhBACAemr9+vUaOXKkWrVqJYfDoWXLlvm8DmOMpk6dqi5dusjpdKp169Z65plnfFpHnb1RHgAAuLDCwkL17t1bv/3tb3XTTTdVah0PPPCAVq9eralTp6pnz5765ptv9M033/i0Dq7ACgAA5HA4tHTpUsXHx3vaioqK9Nhjj+ndd99Vbm6uevTooeeff15Dhw6VJH3++efq1auXdu7cqa5du1Z623xNAwAAyjRx4kSlp6crNTVV//73vzV69Gj94he/0JdffilJ+sc//qGOHTtq+fLl6tChg9q3b6/x48f7vGeEMAIAAErJysrS3LlztXjxYg0ePFidOnXSww8/rEGDBmnu3LmSpAMHDigzM1OLFy/WggULNG/ePG3dulU333yzT9vimBEAAFDKjh07VFJSoi5duni1FxUV6bLLLpMkud1uFRUVacGCBZ5+b775pqKiorRnz54Kf3VDGAEAAKWcOnVK/v7+2rp1q/z9/b2eCw4OliRFREQoICDAK7Bcfvnlks7tWSGMAACASuvbt69KSkp07NgxDR48uMw+AwcOVHFxsfbv369OnTpJkvbu3StJateuXYW3xdk0AADUU6dOndK+ffsknQsfL730koYNG6ZmzZqpbdu2uuOOO7Rx40ZNmzZNffv21fHjx7V27Vr16tVLI0aMkNvt1tVXX63g4GBNnz5dbrdbSUlJcrlcWr16dYXrIIwAAFBPpaWladiwYaXaExMTNW/ePJ09e1ZPP/20FixYoCNHjqh58+YaMGCAnnjiCfXs2VOS9PXXX+u+++7T6tWr1bhxYw0fPlzTpk1Ts2bNKlwHYQQAAFjFqb0AAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACs+v8h63+BToASGwAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Your code here\n",
"plt.plot(range(0, len(costs)), costs)\n",
"plt.title(\"Cost over iterations\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "63917be0",
"metadata": {},
"source": [
"In this scenario, we can clearly observe a plateau of the cost function. This means that we have reached a local minimum while trying to minimise the cost."
]
},
{
"cell_type": "markdown",
"id": "c5903f37",
"metadata": {},
"source": [
"b) Imagine a stopping criterion, i.e. when do we stop iterating on the training set?"
]
},
{
"cell_type": "markdown",
"id": "93905b85",
"metadata": {},
"source": [
"The stopping criterion can be a small delta between each calculations of the cost. Like if the cost did not change of at least delta, this means we are in a plateau and should stop."
]
},
{
"cell_type": "markdown",
"id": "7667bec1",
"metadata": {},
"source": [
"c) Plot the computed line $h_{\\theta}(\\mathbf{x})$ on top of the scatter plot of exercise 1."
]
},
{
"cell_type": "code",
"execution_count": 465,
"id": "e80c04b3",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(dataset[\"living_area\"], dataset[\"rent_price\"])\n",
"plt.xlabel(\"Living Area\")\n",
"plt.ylabel(\"Rent price\")\n",
"\n",
"y_regr = theta[0] + theta[1] * X[:,1]\n",
"plt.plot(X[:,1], y_regr, color='red', label='Regression line')\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "d1fdf27b",
"metadata": {},
"source": [
"d) Compute the final cost value according to Equation 2 and compare it to the one of exercise 2. What can you conclude?"
]
},
{
"cell_type": "code",
"execution_count": 466,
"id": "5e594f32",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The best cost value is inf, the exercice 2 cost value is 138034.95779787414\n"
]
}
],
"source": [
"# Your code here\n",
"\n",
"print(f\"The best cost value is {best_cost}, the exercice 2 cost value is {closed_form_cost}\")"
]
},
{
"cell_type": "markdown",
"id": "cd10b91b",
"metadata": {},
"source": [
"We took some time to experiment with the alpha and max_iter values to try to get the best possible result. It seems that the closed form formula is the best one but we can get really close by tweaking those two values. "
]
},
{
"cell_type": "markdown",
"id": "54727ff1",
"metadata": {},
"source": [
"## Exercise 4 - Stochastic gradient descent for linear regression"
]
},
{
"cell_type": "markdown",
"id": "32a00957",
"metadata": {},
"source": [
"Implement the stochastic gradient descent algorithm for the previous problem. As seen in the theory, the update rules are:"
]
},
{
"cell_type": "markdown",
"id": "636920d2",
"metadata": {},
"source": [
"<div><div style=\"display: table-cell; width: 100%;\"><center>$\\theta_{i} \\leftarrow \\theta_{i} - \\alpha (h_{\\theta}(\\mathbf{x}_{n}) - y_{n}) x_{n,i}$</center></div><div style=\"display: table-cell; width: 100%;\">$(8)$</div></div>"
]
},
{
"cell_type": "code",
"execution_count": 467,
"id": "3f693388",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Theta = [ 0.33101883 28.20026525]\n",
"Cost = 145028.5077448914\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGzCAYAAAD9pBdvAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAASBlJREFUeJzt3Xl4U1X+BvD3Zu+WdN9oS9lkkR1ZCiio1YqMQ90GGBzAEVwGFMRxqTMjLuPUGcVlHEVxRkAdBFFBRQT6A4FByg5KQUC2lqUL0DZp0zZNk/P7I20g0JamTXqb5v08Tx7JzV2+OY3N23PPPVcSQggQERERyUQhdwFERETk3xhGiIiISFYMI0RERCQrhhEiIiKSFcMIERERyYphhIiIiGTFMEJERESyYhghIiIiWTGMEBERkawYRoiozUlOTsbUqVPlLsMtkiTh+eefl7sMIp/EMELkIceOHcNDDz2Ezp07Q6fTQa/XY8SIEXjrrbdQWVnp8eNVVFTg+eefx8aNGz2+77bm4MGDeP7553Hy5ElZ61i9ejUDB5EXqOQugKg9+Pbbb3HvvfdCq9Vi8uTJ6N27N6qrq7FlyxY8+eSTOHDgABYsWODRY1ZUVOCFF14AAIwePdqj+5bb4cOHoVBc/Fvp4MGDeOGFFzB69GgkJyfLVtfq1avxzjvv1BtIKisroVLxVypRc/D/HKIWOnHiBCZMmICOHTtiw4YNiIuLc742Y8YMHD16FN9++62MFbY9NTU1sNvt0Gg09b6u1WpbpQ6z2YygoCCP7Eun03lkP0R+SRBRizz88MMCgPjhhx+atL7VahUvvvii6Ny5s9BoNKJjx44iIyNDVFVVuay3c+dOceutt4qIiAih0+lEcnKyuP/++4UQQpw4cUIAuOIxd+7cRo997Ngxcc8994iwsDAREBAghg4dKlatWuV8vaCgQCiVSvH8889fse2hQ4cEAPH22287l5WUlIhZs2aJhIQEodFoRJcuXcQrr7wibDabc526Wl999VXxxhtviM6dOwuFQiH27t3bYJ0dO3YUU6ZMEUIIsXDhwnrf6/fff+9cf/Xq1WLkyJEiMDBQBAcHi9tvv13k5OS47HPKlCkiKChIHD16VIwZM0YEBweLcePGCSGE2Lx5s7jnnntEYmKi0Gg0IiEhQcyePVtUVFS4bF9fHXXqa/89e/aI2267TYSEhIigoCBx0003iezsbJd16t7fli1bxOOPPy4iIyNFYGCgSE9PF0VFRS7rNvaZIPJl7BkhaqFvvvkGnTt3xvDhw5u0/rRp07B48WLcc889eOKJJ7B9+3ZkZmbi559/xooVKwAARUVFuPXWWxEVFYVnnnkGoaGhOHnyJL788ksAQFRUFObPn49HHnkEd955J+666y4AQN++fRs8bmFhIYYPH46Kigo89thjiIiIwOLFi/HrX/8an3/+Oe68807ExMRg1KhR+OyzzzB37lyX7ZctWwalUol7770XgOM00ahRo3DmzBk89NBDSEpKwtatW5GRkYH8/Hy8+eabLtsvXLgQVVVVePDBB6HVahEeHt6k9rrhhhvw2GOP4Z///CeeffZZ9OzZEwCc//34448xZcoUpKWl4e9//zsqKiowf/58jBw5Env37nU5rVNTU4O0tDSMHDkSr732GgIDAwEAy5cvR0VFBR555BFERERgx44dePvtt3H69GksX74cAPDQQw/h7NmzyMrKwscff3zVug8cOIDrr78eer0eTz31FNRqNd5//32MHj0amzZtwtChQ13Wf/TRRxEWFoa5c+fi5MmTePPNNzFz5kwsW7YMwNU/E0Q+Te40ROTLjEajAOD8C/tq9u3bJwCIadOmuSz/4x//KACIDRs2CCGEWLFihQAgdu7c2eC+zp0716TekDqzZ88WAMT//vc/57KysjLRqVMnkZyc7OzNeP/99wUAsX//fpfte/XqJW666Sbn85deekkEBQWJI0eOuKz3zDPPCKVSKfLy8oQQF3tG9Hr9FX/pN+TSnhEhhFi+fPkVvSF19YeGhorp06e7LC8oKBAGg8FleV3PxjPPPHPF8S7tAamTmZkpJEkSubm5zmUzZswQDf3avPxnkZ6eLjQajTh27Jhz2dmzZ0VISIi44YYbnMvqekZSU1OF3W53Ln/88ceFUqkUpaWlQoimfSaIfBWvpiFqAZPJBAAICQlp0vqrV68GAMyZM8dl+RNPPAEAzrEloaGhAIBVq1bBarV6olSsXr0aQ4YMwciRI53LgoOD8eCDD+LkyZM4ePAgAOCuu+6CSqVy/kUOADk5OTh48CDGjx/vXLZ8+XJcf/31CAsLw/nz552P1NRU2Gw2bN682eX4d999N6KiojzyXupkZWWhtLQUEydOdKlBqVRi6NCh+P7776/Y5pFH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448/CgBi4cKFzvVqamrEo48+KqKiooQkSU2a9CwtLU0EBweLwMBAceONN4qtW7e6rFN3ae/ll+x+//33Lu+zqZ8JIl8kCXFZv5+PkCQJK1ascHYdL1u2DJMmTcKBAweuGAgWHByM2NhYzJ0794ru3MrKSgQGBmLdunW45ZZbWvMtEBEREdrRaZoBAwbAZrOhqKgI119/fb3rjBgxAjU1NTh27Jhz4NuRI0cA4IqBg0RERNQ6fKpnpLy8HEePHgXgCB+vv/46brzxRoSHhyMpKQn33XcffvjhB8ybNw8DBgzAuXPnsH79evTt2xdjx46F3W7H4MGDERwcjDfffBN2ux0zZsyAXq/HunXrZH53RERE/smnwsjGjRudA/wuNWXKFCxatAhWqxV//etf8dFHH+HMmTOIjIzEsGHD8MILL6BPnz4AgLNnz+LRRx/FunXrEBQUhDFjxmDevHlNvk8GEREReZZPhREiIiJqf9rVPCNERETkexhGiIiISFY+cTWN3W7H2bNnERIS4vYU2ERERCQPIQTKysoQHx9/xcSKl/KJMHL27Nlm38eBiIiI5HXq1Kl675hdxyfCSEhICADHm3H3fg5EREQkD5PJhMTEROf3eEN8IozUnZrR6/UMI0RERD7makMsOICViIiIZMUwQkRERLJiGCEiIiJZMYwQERGRrBhGiIiISFYMI0RERCQrhhEiIiKSFcMIERERyYphhIiIiGTlVhiZP38++vbt65wJNSUlBd99912D6y9atAiSJLk8dDpdi4smIiKi9sOt6eATEhLwyiuvoFu3bhBCYPHixRg3bhz27t2La6+9tt5t9Ho9Dh8+7HzOu+4SERHRpdwKI3fccYfL85dffhnz58/Htm3bGgwjkiQhNja2+RUSERFRu9bsMSM2mw1Lly6F2WxGSkpKg+uVl5ejY8eOSExMxLhx43DgwIGr7ttiscBkMrk8vOE/W07g+a8P4HBBmVf2T0RERFfndhjZv38/goODodVq8fDDD2PFihXo1atXvet2794dH374Ib766it88sknsNvtGD58OE6fPt3oMTIzM2EwGJyPxMREd8tskm9/OotFW08i94LZK/snIiKiq5OEEMKdDaqrq5GXlwej0YjPP/8c//73v7Fp06YGA8mlrFYrevbsiYkTJ+Kll15qcD2LxQKLxeJ8bjKZkJiYCKPRCL1e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BoB/X9qr1WrFokWLxMGDB8WDDz4oQkNDXa44oIY98sgjwmAwiI0bN4r8/Hzno6KiwrnOww8/LJKSksSGDRvErl27REpKikhJSXG+XnfJ6a233ir27dsn1qxZI6KionjJ6VVcejWNEGxnT9mxY4dQqVTi5ZdfFr/88ov473//KwIDA8Unn3ziXOeVV14RoaGh4quvvhI//fSTGDduXL2XRg4YMEBs375dbNmyRXTr1s3vLzm91JQpU0SHDh2cl/Z++eWXIjIyUjz11FPOddjOzVNWVib27t0r9u7dKwCI119/Xezdu1fk5uYKITzTrqWlpSImJkb87ne/Ezk5OWLp0qUiMDCQl/a2xNtvvy2SkpKERqMRQ4YMEdu2bZO7JJ8BoN7HwoULnetUVlaKP/zhDyIsLEwEBgaKO++8U+Tn57vs5+TJk2LMmDEiICBAREZGiieeeEJYrdZWfje+5fIwwnb2nG+++Ub07t1baLVa0aNHD7FgwQKX1+12u/jLX/4iYmJihFarFTfffLM4fPiwyzoXLlwQEydOFMHBwUKv14v7779flJWVtebbaNNMJpOYNWuWSEpKEjqdTnTu3Fn86U9/crlUlO3cPN9//329v5enTJkihPBcu/74449i5MiRQqvVig4dOohXXnmlxbVLQlwy7R0RERFRK/PLMSNERETUdjCMEBERkawYRoiIiEhWDCNEREQkK4YRIiIikhXDCBEREcmKYYSIiIhkxTBCREREsmIYISIiIlkxjBAREZGsGEaIiIhIVv8PTHDD+rGMuKMAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Your code here\n",
"import random\n",
"def stochastic_gradient_descent(X, y, max_iter, alpha):\n",
" \n",
" theta = np.zeros((2))\n",
"\n",
" costs = []\n",
"\n",
"\n",
" for i in range(0, max_iter): # we could also use a delta on the cost function with a while to stop when the cost is not improving but we wanted to see the curve after x iterations\n",
" rand = int(random.random() * X.shape[0])\n",
" y_pred_stoch = X[rand] @ theta\n",
" theta[0] = theta[0] - alpha * (y_pred_stoch - y[rand])\n",
" theta[1] = theta[1] - alpha * (y_pred_stoch - y[rand]) * X[rand,1]\n",
"\n",
" y_pred = X @ theta\n",
" costs.append(cost_J(y_pred, y))\n",
"\n",
"\n",
" y_pred = X @ theta\n",
" print(f\"Theta = {theta}\")\n",
" print(f\"Cost = {cost_J(y_pred, y)}\")\n",
"\n",
" plt.plot(range(0, len(costs)), costs)\n",
" plt.title(\"Cost over iterations\")\n",
" plt.show()\n",
" return theta\n",
"\n",
"theta = stochastic_gradient_descent(X, y, max_iter = 1000, alpha = 0.000001)"
]
},
{
"cell_type": "markdown",
"id": "cb73d7c1",
"metadata": {},
"source": [
"a) Plot the computed line $h_{\\theta}(\\mathbf{x})$ on top of the scatter plot of exercise 1."
]
},
{
"cell_type": "code",
"execution_count": 468,
"id": "f73c6af3",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAk4AAAGwCAYAAABfKeoBAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAbF1JREFUeJzt3XlcVFUbB/DfgGyCMygKgzsupYQb5jJlVkqCkWnaommuLRpaaipZadpm2lu+lq9aaWq5VJZlbhjuqbiEoiJpLhimDOQCgwvbzH3/mGaYCzNwB2aYhd/38+Hzxrln7pzLvMrjOc95jkwQBAFEREREVCEPRw+AiIiIyFUwcCIiIiKSiIETERERkUQMnIiIiIgkYuBEREREJBEDJyIiIiKJGDgRERERSVTL0QNwBTqdDleuXEGdOnUgk8kcPRwiIiKSQBAE5OXloWHDhvDwsM1cEQMnCa5cuYImTZo4ehhERERUCZcuXULjxo1tci8GThLUqVMHgP4HL5fLHTwaIiIikkKj0aBJkybG3+O2wMBJAsPynFwuZ+BERETkYmyZZsPkcCIiIiKJGDgRERERScTAiYiIiEgiBk5EREREEjFwIiIiIpKIgRMRERGRRAyciIiIiCRi4EREREQkEQMnIiIiIolYOZyIyIlodQIOp19Hdl4+guv4omtYPXh68HBxImfBwImIyEkkpGZi9sY0ZObmG9tCFb54u184YiJCHTgyIjLgUh0RkRNISM3EuFVHRUETAKhz8zFu1VEkpGY6aGREZIqBExGRg2l1AmZvTINg5pqhbfbGNGh15noQUXVi4ERE5GCH06+XmWkyJQDIzM3H4fTr1TcoIjKLgRMRkYNl51kOmirTj4jsh4ETEZGDBdfxtWk/IrIfBk5ERA7WNaweQhW+sFR0QAb97rquYfWqc1hEZAYDJyIiB/P0kOHtfuEAUCZ4Mnz/dr9w1nMicgIMnIiInEBMRCgWD4uEUiFejlMqfLF4WCTrOBE5CRbAJCJyEjERoXgkXMnK4UROjIETEZET8fSQQdUyyNHDICILuFRHREREJBEDJyIiIiKJGDgRERERScTAiYiIiEgiBk5EREREEjFwIiIiIpKIgRMRERGRRAyciIiIiCRyaODUvHlzyGSyMl9xcXEAgPz8fMTFxSEoKAgBAQEYNGgQsrKyRPfIyMhAbGwsateujeDgYEydOhXFxcWiPrt370ZkZCR8fHzQqlUrrFixoroekYiIiNyIQwOnI0eOIDMz0/iVmJgIAHjqqacAAJMmTcLGjRuxbt067NmzB1euXMHAgQONr9dqtYiNjUVhYSEOHDiAlStXYsWKFZg5c6axT3p6OmJjY/Hwww8jJSUFEydOxPPPP49t27ZV78MSERGRy5MJgiA4ehAGEydOxKZNm3D27FloNBo0aNAAa9aswZNPPgkAOH36NNq2bYukpCR0794dW7duxWOPPYYrV64gJCQEALBkyRLEx8fjn3/+gbe3N+Lj47F582akpqYa32fw4MHIyclBQkKC2XEUFBSgoKDA+L1Go0GTJk2Qm5sLuVxux58AERER2YpGo4FCobDp72+nyXEqLCzEqlWrMHr0aMhkMiQnJ6OoqAhRUVHGPm3atEHTpk2RlJQEAEhKSkK7du2MQRMAREdHQ6PR4NSpU8Y+pvcw9DHcw5w5c+ZAoVAYv5o0aWLLRyUiIiIX5TSB088//4ycnByMHDkSAKBWq+Ht7Y3AwEBRv5CQEKjVamMf06DJcN1wrbw+Go0Gd+7cMTuW6dOnIzc31/h16dKlqj4eERERuYFajh6AwbJly9C3b180bNjQ0UOBj48PfHx8HD0MIiIicjJOMeP0119/Yfv27Xj++eeNbUqlEoWFhcjJyRH1zcrKglKpNPYpvcvO8H1FfeRyOfz8/Gz9KEREROTGnCJwWr58OYKDgxEbG2ts69y5M7y8vLBjxw5j25kzZ5CRkQGVSgUAUKlUOHnyJLKzs419EhMTIZfLER4ebuxjeg9DH8M9iIiIiKRyeOCk0+mwfPlyjBgxArVqlawcKhQKjBkzBpMnT8auXbuQnJyMUaNGQaVSoXv37gCAPn36IDw8HM899xyOHz+Obdu24a233kJcXJxxqW3s2LG4cOECpk2bhtOnT2PRokX4/vvvMWnSJIc8LxEREbkuh+c4bd++HRkZGRg9enSZa/Pnz4eHhwcGDRqEgoICREdHY9GiRcbrnp6e2LRpE8aNGweVSgV/f3+MGDEC77zzjrFPWFgYNm/ejEmTJmHBggVo3Lgxli5diujo6Gp5PiIiInIfTlXHyVnZow4EERER2Zdb13EiIiIicnYMnIiIiIgkYuBEREREDqP94zQgk+FK775IOn8NWp1zZxAxcCIiIiKHuPTkUHiGtwUANNyZgCFfHkSPuTuRkJrp4JFZxsCJiIiIqldGBiCTocmPa4xNrz72GgBAnZuPcauOOm3wxMCJiIiIqs/rrwPNmoma2k38DhvueRgAYFiom70xzSmX7Rxex4mIiIhqgOxsICRE1PTBQ6PwRbdBZboKADJz83E4/TpULYOqaYDSMHAiIiIi+5o7Vz/TZCJywmpcr60o92XZefn2HFWlcKmOiIiI7CMnB5DJxEHT9OlIOne1wqAJAILr+NpvbJXEGSciIiKyvc8/B8aOFbdlZABNmqCrTkCowhfq3HyYy2KSAVAqfNE1rF51jNQqnHEiIiIi27l1Sz/LZBo0vfQSIAhAkyYAAE8PGd7uFw5AHySZMnz/dr9weHqUvup4DJyIiIjINr79FggIELedOQMsWVKma0xEKBYPi4RSIV6OUyp8sXhYJGIiQu050krjUh0RERFVTWEhoFQCN26UtA0cCPz4Y7kvi4kIxSPhShxOv47svHwE19EvzznjTJMBAyciIiKqvC1bgNhYcduxY0DHjpJe7ukhc7qSA+Vh4ERERETW02qB8HDgzz9L2h58ENi1S5/j5KaY40RERETW+e03oFYtcdC0bx+we7dbB00AZ5yIiIhIKkEAHngA2L+/pO2ee4DjxwFPT8eNqxpxxomIiIgqdvQo4OEhDpq2bgVSU2tM0ARwxomIiIjKIwjAE08AGzaUtIWEAJcuAV5ejhuXg3DGiYiIiMw7fVo/y2QaNH3/PaBW18igCeCMExEREZnz/PPAsmUl33t6Anl5gJ+f48bkBDjjRERERCX++ku/M840aPryS6C4uMYHTQBnnIiIiMhg2jTgo4/Ebbm5gFzumPE4Ic44ERER1XRZWfpZJtOg6aOP9InhDJpEGDgRERHVZB9+qD9nzlR2NjBlimPG4+S4VEdERFQT5eQAdeuK2954A3j/fYcMx1UwcCIiIrIBrU7A4fTryM7LR3AdX3QNqwdPDyc9fmTJEmDcOHFbRgbQpIljxuNCGDgRERFVUUJqJmZvTENmbr6xLVThi7f7hSMmItSBIyvl1i0gIEDc9tJL+kCKJGGOExERURUkpGZi3KqjoqAJANS5+Ri36igSUjMdNLJS1q4tGzT9+SeDJisxcCIiIqokrU7A7I1pEMxcM7TN3pgGrc5cj2pSWAjUqwc8+2xJ25NP6nfMtW7tuHG5KAZORERElXQ4/XqZmSZTAoDM3HwcTr9efYMytXkz4OMD3LhR0paSAqxb55jxuAHmOBEREVVSdp7loKky/WxGqwXatgXOni1pe/hhYMcOfb0mqjTOOBEREVVScB1fm/azib17gVq1xEHT/v3Azp0MmmyAgRMREVEldQ2rh1CFLyyFIzLod9d1Datn/8EIAnDffcCDD5a0tWunn3267z77v38NwcCJiIiokjw9ZHi7XzgAlAmeDN+/3S/c/vWckpMBDw8gKamkLSEBOHFC3042w58mERFRFcREhGLxsEgoFeLlOKXCF4uHRdq3jpMgAI8/Dtx7b0lbaKh+J110tP3etwZjcjgREVEVxUSE4pFwZfVWDv/jDyA8XNy2bp2+1ADZjcNnnC5fvoxhw4YhKCgIfn5+aNeuHX7//XfjdUEQMHPmTISGhsLPzw9RUVE4a5rwBuD69esYOnQo5HI5AgMDMWbMGNy8eVPU58SJE3jggQfg6+uLJk2aYN68edXyfEREVDN4esigahmE/h0bQdUyyL5B0+jR4qCpVi3g9m0GTdXAoYHTjRs3cP/998PLywtbt25FWloaPv74Y9Q1OXRw3rx5+PTTT7FkyRIcOnQI/v7+iI6ORn5+ydbOoUOH4tSpU0hMTMSmTZuwd+9evPjii8brGo0Gffr0QbNmzZCcnIyPPvoIs2bNwhdffFGtz0tERFQlFy/qd8YtX17StnQpUFQE+Pk5bFg1iuBA8fHxQo8ePSxe1+l0glKpFD766CNjW05OjuDj4yOsXbtWEARBSEtLEwAIR44cMfbZunWrIJPJhMuXLwuCIAiLFi0S6tatKxQUFIje++677zb7vvn5+UJubq7x69KlSwIAITc3t0rPS0REVGlTpgiCPqup5Iu/l8qVm5tr89/fDp1x+uWXX3DvvffiqaeeQnBwMDp16oQvv/zSeD09PR1qtRpRUVHGNoVCgW7duiHp350DSUlJCAwMxL0miXFRUVHw8PDAoUOHjH169uwJb29vY5/o6GicOXMGN0yrqf5rzpw5UCgUxq8mPC2aiIgcRa3WzzL95z8lbf/5jz50kssdN64ayqGB04ULF7B48WK0bt0a27Ztw7hx4/DKK69g5cqVAAC1Wg0ACAkJEb0uJCTEeE2tViM4OFh0vVatWqhXr56oj7l7mL6HqenTpyM3N9f4denSJRs8LRERkZU++EC/S85Udjbw2muOGQ85dledTqfDvffeiw8++AAA0KlTJ6SmpmLJkiUYMWKEw8bl4+MDHx8fh70/ERHVcDdu6A/mNfXmm8B77zlmPGTk0Bmn0NBQhJfaStm2bVtkZGQAAJRKJQAgKytL1CcrK8t4TalUIjs7W3S9uLgY169fF/Uxdw/T9yAiInIKixeXDZouXWLQ5CQcGjjdf//9OHPmjKjtzz//RLNmzQAAYWFhUCqV2LFjh/G6RqPBoUOHoFKpAAAqlQo5OTlITk429tm5cyd0Oh26detm7LN3714UFRUZ+yQmJuLuu+8W7eAjIiJymFu39LlML79c0jZunD6XqXFjx42LxGyWZl4Jhw8fFmrVqiW8//77wtmzZ4XVq1cLtWvXFlatWmXs8+GHHwqBgYHChg0bhBMnTgj9+/cXwsLChDt37hj7xMTECJ06dRIOHTok7Nu3T2jdurUwZMgQ4/WcnBwhJCREeO6554TU1FTh22+/FWrXri18/vnnksZpj6x8IiIio9Wry+6Y+/NPR4/K5dnj97dDAydBEISNGzcKERERgo+Pj9CmTRvhiy++EF3X6XTCjBkzhJCQEMHHx0fo3bu3cObMGVGfa9euCUOGDBECAgIEuVwujBo1SsjLyxP1OX78uNCjRw/Bx8dHaNSokfDhhx9KHiMDJyJyd8VanXDg3FXh52N/CwfOXRWKtTpHD6lmyM8XBIVCHDA9/bSjR+U27PH7WyYIguDYOS/np9FooFAokJubCzm3fhKRm0lIzcTsjWnIzC0pLByq8MXb/cLte85aTbdpE9Cvn7jt+HGgfXvHjMcN2eP3t8OPXCEiIsdJSM3EuFVHRUETAKhz8zFu1VEkpGY6aGRuTKsFWrUSB029ewM6HYMmF8DAiYiohtLqBMzemAZzyw6Gttkb06DVcWHCZvbs0Z8rd/58SduBA8D27frEcHJ6DJyIiGqow+nXy8w0mRIAZObm43D69eoblLsSBKB7d+Chh0ra2rfXzz79u0ucXAMDJyKiGio7z3LQVJl+ZMHvvwMeHsC/x4ABALZt0+czefDXsKtxaOVwIiJynOA6vjbtR6UIgj6PafPmkraGDYGLFwEvL4cNi6qGoS4RUQ3VNaweQhW+sJRZI4N+d13XsHoWepBFaWn62STToOmHH4DLlxk0uTgGTkRENZSnhwxv99Mfe1U6eDJ8/3a/cHh6MGnZKiNHAvfcU/K9lxdw+zYwaJDDhkS2w8CJiKgGi4kIxeJhkVAqxMtxSoUvFg+LZB0na1y8qN8Zt3JlSduyZUBhIeDn57BhkW0xx4mIyIRWJ+Bw+nVk5+UjuI5+mcrdZ1xiIkLxSLiyxj23TU2ZAnz8sbgtNxdg0WS3w8CJiOhfNbmCtqeHDKqWQY4ehutRq4HQUv/f+PhjYPJkx4yH7I5LdUREYAVtqoT33y8bNP3zD4MmN8fAiYhqPFesoK3VCUg6fw0bUi4j6fw1pxqb27txQ5/L9NZbJW1vvaUvP1C/vuPGRdWCS3VEVONZU0HbGZazavKSosMtWgTExYnb/v4baNTIMeOhascZJyKq8Vypgra7LSm6zMzZrVv6WSbToOnll/WzTAyaahTOOBFRjecqFbQrWlKUQb+k+Ei40iV2xLnMzNnq1cCwYeK2s2eBVq0cMx5yKM44EVGN5yoVtN3pUF6XmDkrKNCXEzANmgYP1s8yMWiqsRg4EVGN5yoVtF1pSbE8LpGMv3Ej4OsL5OWVtB0/Dqxd67gxkVNg4EREBOepoF1ezo+rLClWxKlnzoqLgZYtgccfL2mLigJ0OqB9++ofDzkd5jgREf3L0RW0K8r5MSwpqnPzzc7WyKAP9By9pFgRp505270bePhhcduBA4BKVb3jIKfGGSciIhOGCtr9OzaCqmVQtQZNFeX8uMqSYkWcbuZMEIBu3cRBU4cOgFbLoInKYOBERORg1uT8OMuSYlU4VTL+kSOAhwdw+HBJ26+/Aikp+naiUrhUR0TkYNYW4HT0kmJVGWbOxq06ChkgChirbeZMEIDHHgO2bClpa9QISE8HvLzs977k8hhOExE5WGVyfhy1pGgrDp05S0vTzyaZBk0//qivAM6giSrAGSciIgerjpwfrU5wuhkqh8ycjRwJrFxZ8r2PD5CToy89QCQBAyciIgez9245Z67QbZg5s7v0dKBFC3HbV19BO2Lkv4HbNacJKMm5MXAiInIwe+b8GHbrlQ7IDLv1XCWhvEomTwbmzxe3aTRI+OsmZs/d6ZQBZXmccfawJpEJguCkJyo6D41GA4VCgdzcXMjlckcPh4jclK1nhrQ6AT1KBQamDDNZ++J7uecv3sxMoGFDcdv8+cDEiRYDSsNPwVkDSmeePXRG9vj9zRknIiInYeucH2t365XH5WY53nsPmDFD3Hb1KhAU5LKHJXP20DkwcCIiciK2zPmxVYVul5rluH4dCCr185sxA3jnHeO3tgwoq4urBnvuiOUIiIjclC1260mpaO40Fi4sGzT9/bcoaAKc+MiXcjj1+X41DAMnIiI3VdUK3dZUNHeomzcBmQyYMKGkLS5OX+SyUaMy3Z3uyBcJXDHYc1cMnIiI3FRVz7ZziVmOVauAOnXEbWfP6mefLHCqI18kcsVgz10xcCIicmNVqdDt1LMcBQX6gOm550raBg/WzzK1alXuS13xsGRXDPbcFZPDiYjcXGV36zntLMeGDcCAAeK2EyeAdu0k38IQUJZOelc6adK7U5zvRwBYx0kS1nEioprIUAeqoorm1VYHqrgYaN0auHixpO2RR4Bt2/Q5TpXgamUWXGqHoxOwx+9vBk4SMHAioprKsKsOMD/LUW21g3btAnr1ErclJQHdu9v/vZ2MqwV7jmSP398OzXGaNWsWZDKZ6KtNmzbG6/n5+YiLi0NQUBACAgIwaNAgZGVlie6RkZGB2NhY1K5dG8HBwZg6dSqKi4tFfXbv3o3IyEj4+PigVatWWLFiRXU8HhGRy6tKjpRN6HRA167ioKlTJ0CrrZFBE1BS66t/x0ZQtQxi0FTNHJ7jdM8992D79u3G72vVKhnSpEmTsHnzZqxbtw4KhQLjx4/HwIEDsX//fgCAVqtFbGwslEolDhw4gMzMTAwfPhxeXl744IMPAADp6emIjY3F2LFjsXr1auzYsQPPP/88QkNDER0dXb0PS0Tkgmxd0VyyI0f0QZOpxEQgKsq+70tUDocu1c2aNQs///wzUlJSylzLzc1FgwYNsGbNGjz55JMAgNOnT6Nt27ZISkpC9+7dsXXrVjz22GO4cuUKQkJCAABLlixBfHw8/vnnH3h7eyM+Ph6bN29Gamqq8d6DBw9GTk4OEhISJI2TS3VERNVIEIDYWGDr1pK2Jk2ACxeAWg7/9z65ELdbqgOAs2fPomHDhmjRogWGDh2KjIwMAEBycjKKiooQZfIvizZt2qBp06ZISkoCACQlJaFdu3bGoAkAoqOjodFocOrUKWOfqFL/OomOjjbew5yCggJoNBrRFxERVYNTpwAPD3HQtH49kJHBoImcgkMDp27dumHFihVISEjA4sWLkZ6ejgceeAB5eXlQq9Xw9vZGYGCg6DUhISFQq9UAALVaLQqaDNcN18rro9FocOfOHbPjmjNnDhQKhfGrSZMmtnhcIiIqz/DhQEREyfe+vsCdO8ATT0i+hVYnIOn8NWxIuYyk89ccX9Wc3I5Dw/e+ffsa/7t9+/bo1q0bmjVrhu+//x5+fn4OG9f06dMxefJk4/cajYbBExGRvaSnAy1aiNuWLwdGjrTqNtyqT9XB4Ut1pgIDA3HXXXfh3LlzUCqVKCwsRE5OjqhPVlYWlEolAECpVJbZZWf4vqI+crncYnDm4+MDuVwu+iIiIjuYNKls0KTRVCpocpnDiMmlOVXgdPPmTZw/fx6hoaHo3LkzvLy8sGPHDuP1M2fOICMjAyqVCgCgUqlw8uRJZGdnG/skJiZCLpcjPDzc2Mf0HoY+hnsQEZEDZGbqi1b+978lbfPn6xPDS589VwGXOYyY3IJDA6cpU6Zgz549uHjxIg4cOIAnnngCnp6eGDJkCBQKBcaMGYPJkydj165dSE5OxqhRo6BSqdD939odffr0QXh4OJ577jkcP34c27Ztw1tvvYW4uDj4+PgAAMaOHYsLFy5g2rRpOH36NBYtWoTvv/8ekyZNcuSjExHVXO+8AzRsKG67ehWYOLFSt3OJw4jJbTg0x+nvv//GkCFDcO3aNTRo0AA9evTAwYMH0aBBAwDA/Pnz4eHhgUGDBqGgoADR0dFYtGiR8fWenp7YtGkTxo0bB5VKBX9/f4wYMQLvvPOOsU9YWBg2b96MSZMmYcGCBWjcuDGWLl3KGk5E5NJcsnr09etAUJC4beZMYPbsKt3WqQ8jJrfDI1ckYB0nInImLpkE/dlnwCuviNsuXy4781QJSeevYciXByvst/aF7lC1DKqwH7kPt6zjRERE0rlcEvTNm/pcJtOgacIEfS5TOUGTNWUFuobVQ6jCF5bm22TQB5Zdw+pV7hmITLCaGBGRi6goCVoGfRL0I+FK51i2++YbfW0mU+fOAS1blvsya2fUPD1keLtfOMatOgoZzB9G/Ha/cOf4mZDL44wTEZGLcJkk6IICwN9fHDQ9+6x+lklC0FSZGTWHH0ZMNQZnnIiIXIRLJEFv2AAMGCBuO3lSXBHcgqrOqDnsMGKqURg4ERG5iOA6vhV3sqKfTRUXA61aAX/9VdIWHa0/c04mLXCxZkbNUpK3p4eMCeBkV1yqIyJyEU6bBL1zJ+DlJQ6aDh4EEhIkB02Ai8yoUY3HwImIyEUYkqABlAmeHJIErdMB994L9O5d0ta5M6DVAt26WX07p55RI/oXAyciIhfiNEnQhw8Dnp5AcnJJ2/btwO+/Ax6V+9XitDNqRCaY40RE5GIcmgQtCEDfvsC2bSVtTZsC588Dtar2K4VlBcgVcMaJiMgFGZKg+3dsBFXLoOoJJlJT9bNJpkHT+vX63KYqBk0GTjOjRmQBZ5yIiKhiw4YBq1eXfO/npz97ztf2+UYsK0DOjIETERFZduFC2aKVK1YAI0bY9W1ZVoCcFQMnIiIyb+JEYMECcZtGA9Sp45DhEDmDKuU45eezlgYRkdu5ckVff8k0aFqwQJ8YzqCJajirAyedTod3330XjRo1QkBAAC5cuAAAmDFjBpYtW2bzARIRUTWaPRto1EjcdvUq8MorjhkPkZOxOnB67733sGLFCsybNw/e3t7G9oiICCxdutSmgyMiompy/bp+lmnWrJK2WbP0s0xBzDUiMrA6cPr666/xxRdfYOjQofD09DS2d+jQAadPn7bp4IiIqBp8+mnZ4OjyZeDttx0zHiInZnVy+OXLl9GqVasy7TqdDkVFRTYZFBERVYO8PEAuF7e9+irw3/86ZDhErsDqGafw8HD89ttvZdp/+OEHdOrUySaDIiIiO/v667JB0/nzDJqIKmD1jNPMmTMxYsQIXL58GTqdDuvXr8eZM2fw9ddfY9OmTfYYIxER2Up+PlCvHnDnTknbsGHAN984bkxELsTqGaf+/ftj48aN2L59O/z9/TFz5kz88ccf2LhxIx555BF7jJGIiGzh55/1Fb9Ng6bUVAZNRFaQCYIgVNytZtNoNFAoFMjNzYW89NQ2kRPR6gQeU0FlFRcDLVoAly6VtMXEAFu26HfSEbkpe/z+tnqp7siRI9DpdOjWrZuo/dChQ/D09MS9995rk4ERkXUSUjMxe2MaMnNLCtOGKnzxdr9wHoxak+3YAURFidsOHgRK/R1ORNJYvVQXFxeHS6b/avnX5cuXERcXZ5NBEZF1ElIzMW7VUVHQBADq3HyMW3UUCamZDhoZWaLVCUg6fw0bUi4j6fw1aHU2nvzX6YDOncVB0733AlotgyaiKrB6xiktLQ2RkZFl2jt16oS0tDSbDIqIpNPqBMzemAZzv3YFADIAszem4ZFwJZftnITdZwcPHQK6dxe3bd8O9O5d9XsT1XBWzzj5+PggKyurTHtmZiZq1eKZwUTV7XD69TIzTaYEAJm5+Ticfr36BkUW2XV2UBCAPn3EQVOzZkBREYMmIhuxOnDq06cPpk+fjtzcXGNbTk4O3njjDe6qI3KA7Dxph21L7Ud69lhKq2h2ENDPDlbqvVJTAQ8PIDGxpO2nn4CLFwH+o5bIZqz+0/Sf//wHPXv2RLNmzYwFL1NSUhASEoJvuKWVqNoF1/G1aT+y31KaNbODqpZWnA83dCiwZk3J9/7++oN5ffmZE9ma1TNOjRo1wokTJzBv3jyEh4ejc+fOWLBgAU6ePIkmTZrYY4xEVI6uYfUQqvCFpewlGfS/9LuG1avOYbksey6l2Xx28MIFfTkB06Bp5Urg5k0GTUR2Uqn5W39/f7z44ou2HgsRVYKnhwxv9wvHuFVHIQNEy0CGYOrtfuFMDJfA3on2Np0dfOUV4LPPxG15eUBAgNXjIiLpJAVOv/zyC/r27QsvLy/88ssv5fZ9/PHHbTIwIpIuJiIUi4dFllleUrKOk1XstpT2L8PsoDo332xwJoP+Myt3dvDKFaBRI3Hbp58CEyZYPR4isp6kwGnAgAFQq9UIDg7GgAEDLPaTyWTQarW2GhsRWSEmIhSPhCtZObwK7J1oX+XZwVmzgNmzxW3XrunPniOiaiEpcNLpdGb/m4ici6eHrFIzIaRXHYn2lZodvHYNqF9f3PbOO8CMGZUeBxFVjlU5TkVFRYiJicGSJUvQunVre42JiFyEu52NZ5OlNAmsmh1csACYOFHcduUKEMrlVyJHsCpw8vLywokTJ+w1FiJyIe54Nl51JtpXODuYlweUPpR04kRg/vwqvzcRVZ7V5QiGDRuGZcuW2WMsROQi3PlsPMNSmlIhXo5TKnyxeFhk9QSFEyeWDZrOn2fQROQErC5HUFxcjK+++grbt29H586d4e/vL7r+ySef2GxwROR8asLZeA5LtL95E6hTR9w2bBjA4sJETsPqGafU1FRERkaiTp06+PPPP3Hs2DHjV0pKSqUH8uGHH0Imk2GiyVp+fn4+4uLiEBQUhICAAAwaNKjMOXkZGRmIjY1F7dq1ERwcjKlTp6K4uFjUZ/fu3YiMjISPjw9atWqFFStWVHqcRDVdTTkbz7CU1r9jI6haBtk/aPrgg7JB065dDJqInIzVM067du2y+SCOHDmCzz//HO3btxe1T5o0CZs3b8a6deugUCgwfvx4DBw4EPv37wcAaLVaxMbGQqlU4sCBA8jMzMTw4cPh5eWFDz74AACQnp6O2NhYjB07FqtXr8aOHTvw/PPPIzQ0FNHR0TZ/FiJnZMsk7ppyNl61Jb4XFJiv8q3T6auCE5FTqdLJj5cuXQKAKh21cvPmTQwdOhRffvkl3nvvPWN7bm4uli1bhjVr1qBXr14AgOXLl6Nt27Y4ePAgunfvjl9//RVpaWnYvn07QkJC0LFjR7z77ruIj4/HrFmz4O3tjSVLliAsLAwff/wxAKBt27bYt28f5s+fz8CJagRbJ3HXhLPxqi3x/YsvgJdeErf99BNQTr28ynK3HZBEjmL1Ul1xcTFmzJgBhUKB5s2bo3nz5lAoFHjrrbdQVFRk9QDi4uIQGxuLqKgoUXtycjKKiopE7W3atEHTpk2RlJQEAEhKSkK7du0QEhJi7BMdHQ2NRoNTp04Z+5S+d3R0tPEe5hQUFECj0Yi+iFyRPZK43f1svGpJfNdq9bNJpYMmrdYuQVNCaiZ6zN2JIV8exKvfpmDIlwfRY+5Ol07iJ3IUqwOnCRMm4IsvvsC8efOMuU3z5s3DsmXL8Morr1h1r2+//RZHjx7FnDlzylxTq9Xw9vZGYGCgqD0kJARqtdrYxzRoMlw3XCuvj0ajwZ07d8yOa86cOVAoFMYvHl5MrqiiJG5An8St1ZnrYZlhyz6AMsGTq5+NZ6+fmcgPPwC1Sk32f/UVIAiAh9V/JVfInXdAEjmC1Ut1a9aswbfffou+ffsa29q3b48mTZpgyJAhWLx4saT7XLp0Ca+++ioSExPh62SneE+fPh2TJ082fq/RaBg8kcux57lr7no2nl3PqrMUGBUWAl5e1t1LopqwA5KoulkdOPn4+KB58+Zl2sPCwuDt7S35PsnJycjOzkZkZKSxTavVYu/evVi4cCG2bduGwsJC5OTkiGadsrKyoFQqAQBKpRKHDx8W3dew6860T+mdeFlZWZDL5fDz87P4jD4+PpKfhcgZ2TuJ2x3PxrPbz2zHDqBUygDmzQOmTrXuPlay96HFRDWR1YHT+PHj8e6772L58uXG4KKgoADvv/8+xo8fL/k+vXv3xsmTJ0Vto0aNQps2bRAfH48mTZrAy8sLO3bswKBBgwAAZ86cQUZGBlQqFQBApVLh/fffR3Z2NoKDgwEAiYmJkMvlCA8PN/bZsmWL6H0SExON9yByV9WRxO1uZ+PZ5Wfm7Q2Uzv+8eRMoVQPPHmrKDkii6mR14HTs2DHs2LEDjRs3RocOHQAAx48fR2FhIXr37o2BAwca+65fv97iferUqYOIiAhRm7+/P4KCgoztY8aMweTJk1GvXj3I5XJMmDABKpUK3bt3BwD06dMH4eHheO655zBv3jyo1Wq89dZbiIuLMwZ1Y8eOxcKFCzFt2jSMHj0aO3fuxPfff4/Nmzdb++hELqW6zl1zJzb9mR05AnTtKm6bOlU/01RNasIOSKLqZnXgFBgYaJwBMrBX/s/8+fPh4eGBQYMGoaCgANHR0Vi0aJHxuqenJzZt2oRx48ZBpVLB398fI0aMwDvvvGPsExYWhs2bN2PSpElYsGABGjdujKVLl7IUAbm96jx3zZWUty3fZj+zFi2A9HRx2/XrQN26tnoMSRg8E9meTBCEKmwPqRk0Gg0UCgVyc3MhL31+FJGTc8fDeCtL6s+iMj8zrU7Aie2H0Cm6VBrA8OHAypUOq6Nk2FUHmA8Eq+38PSIHsMfvbwZOEjBwIlfH4oclAUTpv/AsBRDW/MwSUjOhfKwPOv6VKmrfteMoHu7VyeHBq6Pfn8hRGDg5CAMnItem1QnoMXenxR1mhiWrffG9rA4od2//HQ890kXUtrd5J4x45l0AwIs9w/DF3nTJAZu9MHimmsgev7+rdOQKEZErsNe2fN3Tz+Chdd+L2h564XNcrNfI+P2Xv5UNmgzvWZ11lNxtBySRozBwIiK3Z/Nt+VevAg0aiI5e+DOoKfo8v6hM1/KKjLOOEpHrsbq+/9dff42CgoIy7YWFhfj6669tMigiIluy6bb8V14BGjQQNcWOXGA2aJKKdZSIXIfVgdOoUaOQm5tbpj0vLw+jRo2yyaCIiGzJJgcT5+XpD+b97DNjU3FAHTSP34RTIS2rND7WUSJyHVYHToIgQCYr+9fP33//DYVCYZNBERHZUpUPJn7/faB0Yunu3ZDl5pYbkAGAh6zse5q+d4UBGxE5Fck5Tp06dYJMJoNMJkPv3r1Ry+R0b61Wi/T0dMTExNhlkEREVVWpg4kLCgBzh5DrdIBMBk+gwoKZLzyg31XHIqRE7kFy4DRgwAAAQEpKCqKjoxEQEGC85u3tjebNm5epKE5E5EysOpj488+BsWPFbT//DPTvX+aeFQVknZrWtS5gIyKnZXUdp5UrV+KZZ56Br7l/hbkp1nEid8XaPmZotUAtM/+m1GoBD8vZDRX9LPmzJqp+TlUAs7CwENnZ2dDpdKL2pk2b2mRgzoSBE7kjVpM2Y9064OmnxW3LlwMjRzpkOERUNU5RAPPs2bMYPXo0Dhw4IGo3JI1rtVqbDIyI7MfS8SPq3HyMW3XUbtWsnXbWRRDMzyYVFgJeXtU/HiJyWlYHTiNHjkStWrWwadMmhIaGmt1hR0TOS6sTMHtjWrVXs7ZmhqtaA6zERKBPH3HbRx9BO/k15wzyiMihrA6cUlJSkJycjDZt2thjPERkZ/Y6fqQ81sxwVesSoqenfoecqVu3kHAhF7NLnW1X45cxiQhAJeo4hYeH4+rVq/YYCxFVA5sfP1KBima4AP0Ml1YnGAOs0oGdIcBKSM20yZhw+LC+mKVp0DRtGiAISLiQWz1jsECrE5B0/ho2pFxG0vlr0JZ3ZgsRVTurZ5zmzp2LadOm4YMPPkC7du3gVWr9n8nTRM7NpsePSCB1huvghWvVs4QYFgZcvChuu34dqFvXYcuYBkzYJ3J+Vs84RUVF4eDBg+jduzeCg4NRt25d1K1bF4GBgahbt649xkhENmST40esIHXmKun8NclLiJXyxx/6WSbToGnkSH1i+L9/d1mzjGlr1TbbRkRVYvWM065du+wxDiKSwBZJ04bjR8qrdm3LatbSZ66kLUlVagmxRw9g/35x2+XLQMOGlbq3rQ/ldfRMFxFJZ3Xg9OCDD9pjHERUAVsu41Tq+JFKMsxwqXPzzQYGsn/fV9WiPhbuOl/h/axaQszIAJo1E7dFRwMJCVW6t60P5XVEwj4RVY7VgRMA/Pbbb/j8889x4cIFrFu3Do0aNcI333yDsLAw9OjRw9ZjJKrxytuVNnbVUYy+vzkeCVdaNQNl1fEjVSB1hqt7yyBJAZbkJcSnngJ++EHcdvYs0KqVxZdIDfJsfSivo2a6iMh6Vuc4/fjjj4iOjoafnx+OHj2KgoICAEBubi4++OADmw+QqKaTsivtq/0XMeTLg+gxd6dVuTCeHjKoWgahf8dGULUMstsykGGGS6kQz9QoFb7GUgSGAAtAmfwrq5YQ//lHn8tkGjRFROhzmcoJmgDYbgxWctRMFxFZz+ojVzp16oRJkyZh+PDhqFOnDo4fP44WLVrg2LFj6Nu3L9Rqtb3G6jA8coUcKen8NQz58qCkvoZf5/aq/F1VUnK0qrQkOWECsHChuO3YMaBjR6vGaW4MgbW9MOq+MIx7qCWS/7ph01k6rU5Aj7k7K5zp2hffizlORFZwirPqateujbS0NDRv3lwUOF24cAHh4eHIz3e/qWQGTuRIG1Iu49VvUyT3d4dfslYnweflAaX/bAYGAjduVGkMC3eexfL9F5Fzp8jY7iEDTEsr2apcgGE5FjC/nOmswTCRM7PH72+rl+qUSiXOnTtXpn3fvn1o0aKFTQZFRCWsXZ6x55b56mLVEuK775YNmvbsqVLQBACJaWr8d/tZUdAEiIMmwHblAqQsZxKR41mdHP7CCy/g1VdfxVdffQWZTIYrV64gKSkJU6ZMwYwZM+wxRqIaraKEZUvcPpG4oADwNRNU6nT6HKcqKC+vrDRblguoroR9Iqo8qwOn119/HTqdDr1798bt27fRs2dP+Pj4YMqUKZgwYYI9xkhUo5W3K608zpxIXOV6VIsXAy+/LG7bsAF4/HGbjK+i8gCl2bJcgGG2jYick9WBk0wmw5tvvompU6fi3LlzuHnzJsLDwxEQEIA7d+7Az8/PHuMkqtEs1V0yx15b5m2lSsnfWi1Qy8xfW1ot4GF15oFFlZ2tc/tZPiKyPsfJwNvbG+Hh4ejatSu8vLzwySefICwszJZjIyITMRGh2BffC2tf6I4x9zc328eeW+ZtwdKxIpn/1qPacqKcPKHvvisbNK1YoS8zYMOgCaj8bJ0zz/IRkW1InnEqKCjArFmzkJiYCG9vb0ybNg0DBgzA8uXL8eabb8LT0xOTJk2y51iJajzDMo6qZRC6hNWrlsrfpqqyxCYlb2j82qNYiE54tL3JUSiWAqPCQqDUIeO2Ym1embPP8hGR7UgOnGbOnInPP/8cUVFROHDgAJ566imMGjUKBw8exCeffIKnnnoKnp6e9hwrEZmo7kTiqh75IiVvSCcAL685hiUeMv09f/1Vf0SKqY8/BiZPrtQzSGVNXpmzz/IRkW1JDpzWrVuHr7/+Go8//jhSU1PRvn17FBcX4/jx45BVcQcLEVVOdSUSl3fky7hVRyVtl7cm/2f2xjTEtGtY9sKtW0Dt2pLvUxWW8spK13Gy9ywfETkXyYHT33//jc6dOwMAIiIi4OPjg0mTJjFoInJhUpbeKjryRepWfKn5Px2vnMHPc18TN77+OjBnjqTX25K5Wb3OzeravHI4EbkOyYGTVquFt7d3yQtr1UJAQIBdBkVE9mf2WBE/L4y6Pwzje7WCp4cMWp2AFfvTy11ik7oV35A3VN699i0ehcaaf8SNN27oq4A7iLlZPZYLIKq5JAdOgiBg5MiR8PHxAQDk5+dj7Nix8Pf3F/Vbv369bUdIRDZnaekt504R5m//E8sPpOOZexvjl+OZkusZVbQUZ8gbGvvvsSKmWl3NwPZl4rpMfz76JO7avE7UVuX6Ty6gJjwjkSuTHDiNGDFC9P2wYcNsPhgisj8pu9tybhfh873pVt1XylJcTEQoRt3XDMsP/GVs+/GbKeh85bSoX5e4r/HG6Idxl0lbVZPTXUFNeEYiVyc5cFq+fLk9x0FE1cTaqthSeMiAzs3qSurb555QLD/wFxrlZmP/ktGia7tadMaop2YDAJSKkmK6tkhOd3Y14RmJ3IFtq8YRkdOzR3VrnQAk/yXtUN2uYfXw1aa5ZYKmni9+aQyaQk1qIlWUnA7ok9O1pU/fdSE14RmJ3IVDA6fFixejffv2kMvlkMvlUKlU2Lp1q/F6fn4+4uLiEBQUhICAAAwaNAhZWVmie2RkZCA2Nha1a9dGcHAwpk6diuLiYlGf3bt3IzIyEj4+PmjVqhVWrFhRHY9H5JTsVd1aUkD2zz/w9PRAr1O/GZvSgsPQPH4TMurqZ1NkENdEqmiGzDQ53VXVhGckchcODZwaN26MDz/8EMnJyfj999/Rq1cv9O/fH6dOnQIATJo0CRs3bsS6deuwZ88eXLlyBQMHDjS+XqvVIjY2FoWFhThw4ABWrlyJFStWYObMmcY+6enpiI2NxcMPP4yUlBRMnDgRzz//PLZt21btz0tUEa1OQNL5a9iQchlJ56/ZZYaha1g9KOW2D54qDMji4oDgYFHTcxM+x6OjPjN+H6rwLbMkJXWGzJXPiasJz0jkLqw+5NeW+vXrJ/r+/fffx+LFi3Hw4EE0btwYy5Ytw5o1a9CrVy8A+jyrtm3b4uDBg+jevTt+/fVXpKWlYfv27QgJCUHHjh3x7rvvIj4+HrNmzYK3tzeWLFmCsLAwfPzxxwCAtm3bYt++fZg/fz6iS1ckJnKg6koMTkxTI79Ya7P7VXjciEYDKBTitnr1gGvXsELCDjKpM2SufE5cTXhGInfhNDlOWq0W3377LW7dugWVSoXk5GQUFRUhKirK2KdNmzZo2rQpkpKSAABJSUlo164dQkJCjH2io6Oh0WiMs1ZJSUmiexj6GO5hTkFBATQajeiLyJ4sHX5rSAxOSC3n8NtKvE/O7SKb3K/C40Zmzy4bNO3dC1y7BqCkRlL/jo2MtZFKz7gZ6j9Z2pAvgzgnyhXVhGckchcOnXECgJMnT0KlUiE/Px8BAQH46aefEB4ejpSUFHh7eyOwVOG7kJAQqNVqAIBarRYFTYbrhmvl9dFoNLhz5w78/PxQ2pw5czB79mxbPSJRuWxVmbsq72NJ6eNFJB83kp8PmPmzBZ0OsHDaQHkzbpbOjavKOXHOVC+pvLPxeBYekXNxeOB09913IyUlBbm5ufjhhx8wYsQI7Nmzx6Fjmj59OiabHCKq0WjQpEkTB46I3Jk1icFVqVhdmTIEOgGYEdsW9ev4SD9uZNEifT6TqV9+AUotzQMlwUtimhpf7b9Y5rrpVnxz58YpFb4Y3KUpCop1SDp/TXLw44z1kiydjcez8Iici8MDJ29vb7Rq1QoA0LlzZxw5cgQLFizAM888g8LCQuTk5IhmnbKysqBUKgEASqUShw8fFt3PsOvOtE/pnXhZWVmQy+VmZ5sAwMfHx1ghncjebJEYLGX2pLKJxfXr+KB/x0bG7y0Gb8XFgJeXmcFpoYUMh89fE40vMU1dJkgozTDz8vr6k/jfkEjsmfqwMXC7ePUW1hzKwPztfxr7K+W+mPV4+UGGM9dLMnc2HiuHEzkXhwdOpel0OhQUFKBz587w8vLCjh07MGjQIADAmTNnkJGRAZVKBQBQqVR4//33kZ2djeB/d+skJiZCLpcjPDzc2GfLli2i90hMTDTeg8jRqpoYLHX2pLKJxZJe9+23wJAh4raVK4Hhw82fiVfby6o8q5zbRRi67JDxuXxqeWD+9rNl+qk1+Ri76igmRd2F5vVrlwk8rFkWBeCQAMbc2XhE5DwcGjhNnz4dffv2RdOmTZGXl4c1a9Zg9+7d2LZtGxQKBcaMGYPJkyejXr16kMvlmDBhAlQqFbp37w4A6NOnD8LDw/Hcc89h3rx5UKvVeOuttxAXF2ecMRo7diwWLlyIadOmYfTo0di5cye+//57bN682ZGPTmRkSAxW5+ab/YVe3q41a2ZPKnofa97XSBAADzN7TAoLAS8vy2fiVTI5XZ2rD4z8vT3L7Wc6C2UaREpdFl248yy+PXLJqZbyiMg5OHRXXXZ2NoYPH467774bvXv3xpEjR7Bt2zY88sgjAID58+fjsccew6BBg9CzZ08olUrRIcKenp7YtGkTPD09oVKpMGzYMAwfPhzvvPOOsU9YWBg2b96MxMREdOjQAR9//DGWLl3KUgTkNAyJwQDK7KoqLzHY2mrT5b1PaZISkrdtKxs0ffKJPpjy8qpUMnpFDPe6VSi9nILpzkSpy5Xzt5+1+w5HInJNMkEQWMO/AhqNBgqFArm5uZDL5Y4eDrkpaxOWk85fw5AvD1Z437UvdBct/Zh7n9K75SqcXTG3M+72bdFOOqnjqw6G2bP/PNUBQ5ceqvJ99sX3Yt4RkQuwx+9vp8txIqqprE0MrmxSubn3kbRbDgAOHgRK5we+8Qbw/vuVHl91MCzBQYBVy5WW7lPVHY5E5LoYOBE5EWsSg6uSVG7ufSp838aNgcuXxW03bgClaq1ZO77qdPVWAWbEhuPlNUfLXCtdP6k8zhQUElH1cprK4URkneqoNq3VCUjZul+/NGcaNI0Zo89lshA0mY7P1mSoOEfLkotXb+HdzWlmrykVvpgUdZek+zhjUEhE1YOBE5GLqmxSuVQJqZn4o3k4Oj7aQ9S+c1cKtF98WeFhxJ4eMjzewbY70AxP8mLPMKtfV7e2l9mkb4MZsW0xvlcrHn1CROXiUh2RC7NXtendvx5BTHRXUdvOFvdizFOzICT8jcC9WaKSAuaSybU6Ab8ct+0ONNPn6tS0LqavP4kbEkobCCh/GU4G4N3NfyA6IpRHnxBRubirTgLuqiNnZ8tz14QnBkL280+itp4vfomMuhUHYYuejcSj7fX9KrOrrsxZeHIfDOnaFM3r+5t9rh+T/8Zr645XeN+YiBAkpGZV2M+wA9EZj2QhIutxVx0RmWWTatPZ2UBIiGiZ6lRwC8SO+lTyLcavPYqF6IRH2zesVAJ16bPxKgoAc24XSrqvb63yC2YaGMbMo0+IyBIGTkQEvPwysHixqClm1Gc4HWxdLpFOAF5ecwxLPGSVTqC+knMHYx5oIalvPX9vSf0aBlq/A5FHnxCROUwOJzJDqxMqTH52CxqNfsecSdB0W1EXzeM3WR00mZq9MQ2dm9UtN9HakmX7L0quzq1UmD+ou7T7WzZg0jcR2QRnnIhKqTH5LbNmAbNni5oOrvwJg9O8qnzrzNx8fJN0EX0jlPhq/0WrX//6+pOo4+OF7i2Dyl0eM5Q8KO/8uVCFL7q3DGLSNxHZBJPDJWByeM1h6VBaw69T00NzXVZ+vuhoFANtsRY95u0qNwipblICVkufGaD/3Ew/sxoTFBMRAPv8/mbgJAEDp5pBqxPQY+5Oi4GDW5xTtnAhMGGCuG3jRuCxx5zqbDkDqQGrNQGRLXcgEpFz4646oioq75fm4fTr5c62uPQ5ZcXFgJeZJTitFvDwgFYnYP+5q5JuNeq+ZliZ9BeqI+1LgD54mr0xDY+EKy0GONbsgmPSNxFVBQMnqjEqmpWo7KG5Tm/tWuDZZ8Vt33wDDBsGwPzPpTxR4Up0aV4PL685ZuuRmiU1YGVARETVgYET1QiW8mDUufkYt+ooFg+LrNKhuU5JEAAPMxtni4qAWvo/+uXlB1m+L/Bo+4YY/deNSiV+V5bLBaxE5JZYjoBckjXlArQ6AbM3ppkNDgxtUrbPu9SW9YSEskHTf/+rD6b+DZrK+7mU5+qtAgDAI+HKqo/TCi4TsBKRW+OME7kca3dGSc1dSv7rRpW3rDtF4rGs7Ptpb97CYfUdZKdcNo6rop+LJYYAxlAKQJ2bb3XwZQ1DUr5LBKxE5PYYOJFLkbLkVjp4siZ3qX/HRpU+NNdcQBfo54VR94dhfK9WkgIoawMv0/4tzp5Eu6f7iju8+SYSBsdh9qdJZQLNRyOsmzEqHcB4esgsBpoVqVvbCzduF1X4OtZYIiJnw3IEErAcgXOobLkAqdvsDQe8Gt7LmgCmolyhwNpe+HBgO5ttqS/d/+D/hkN587q4w40b2JJxBy+vOWr5oa1QuiZSeeOWclhvYpq6wtexxhIRVQXrODkIAyfnUJkACCgJuCwtKVW1PlNFAZ2pJRbqEVlbeNPQv/U/F/HrV+NFr/m2fR8Erl4BnU7A+LXHbFI2QCYDXu3VGhN6tzb7MyodaHZuVhfJf92oMPCs7OuIiKRgHSeq0SpbLqC8JSVbLAVZkytkrh5RRcnrpesYGfr/9PUkdMw8K+rfJe4bXA2oi8D1J3HjdlGlnsccQQD+u+MsVhy4aHbp0VwpACmlASr7OiIiR+GuOnIZVSkXEBMRisXDIqFUiK8pFb5VPkbFmm3yhnpEpqwpvAkAx39LQdIbUaKgaXvLLmgevwn/BNSFANg0aDKVc6cI87f/ic7vJUo+iJeIyJ1wxolcRkW7uCrafWVNdWlrWLtNvnSgZdVM2oABiNywQdT+wEtLcSmweksD5NwuwthVRy0uPRIRuSsGTuQybLHkZo/q0oaATupyXXAdX1Fuz9W8ggpfU//WDfTv1FjUdjKkJfqNXFCpMdtKRUehEBG5GwZO5FIMS26VKRdgL6YBXUVb65UKX9y4VVAmmVwm0+cRmfP+toUYmpIgahv2yhfY79ew6oOvIpc9u4+IqJIYOJHLsdeSW1XHtHhYJF5ffxI5ZvKLDCN7vEMo4tYcKxNgmQua6hTcwsn/PiNuDA4GsrIwLDUT+8uZeVPU9kLu7SK7FqY02J6mZuBERDUGk8PJJRmW3Pp3bARVyyCnWCqKiQhF8luPYFJUawT6eYmuKRW++N+zkfjleKakYGbSb6vKBE0nvt0EZGUZ36u8ZPcPB7YDAIvHx9jSsv0XmShORDUG6zhJwDpOZC1zBTQPp1+vsA6VT3Ehznw8sEx78/hNGP9wK0yJvrvC9zEEkeYKU1oikwETHmqF75P/hlpj/TEsoVWog0VEZC+s40TVyinOXasiRz2DuST0inbPjUjeiNnbPxe1jXzybexu2eXf70r+jVP6uR5r37DMc5kuaS797Tx2nP7H4nsLAvDprnNQyn0wKao1mtf3x8Wrt/DV/nTk3imu8HmZ60RENQUDJzLL2uM/nJGzPYOlsgWeOi3Of9S/THvzaRtFB/Yq/Lyg1Qlmjyqx9FyGAE7VMghztqThy9/Sy60krtYUYP72s1j0bCRejboL43u1xvg1ydiamlXh81lTz4qIyFVxqU6CmrZUZ+3xH87IGZ/B3NEvj6ftxqcb/yPq9+pjr2HDPQ+bvUdgba9yk88req7CYh1WHriI+Yl/4naR1mI/DxmwcEgnPNq+YaWPuiEicjR7/P5mcjiJVHT8B6Cv3aO1xQFoduKMz2BYWusbodQfoyIIuDj3sTJBU8upGywGTQDMBk2A9OfyruWBiEaKcoMmQH/Q7strjiEhNdNYp8rSAqcM+hkvS4VHiYjcCQMnErH2+A9n5GzPkJCaiR5zd2LIlwfx1f6LeOj870if10/UZ3bUi2gevwlaD89Kv4+U59LqBOw/d1XyPWdvTAOgLywKlN2lZ4uz/oiIXAlznEiksgfpOhNneobSS4YX5z5Wps+KxFNYvj3dZu9p6bms2WVnYAjEnLHwKBGRIzBwIpGqHKTrLOz5DNbs0jNdMoz8+w+sXz1VdP1T1TP474PPYcRtndXjKI+557KU8yWFIRBzxsKjRETVjYETiVT1IF1nYK9nsHaXnmHJ8PDC5xB864boWruJ3yHPxx8QgOUH/rJqHJZYeq7ycr6kMA3E7HHWHxGRK2GOE4kYzl0DXDefxR7PYJixKb3Mpc7Nx7hVR81Wzr5z9Bguzn1MFDSt6RCD5vGb9EGTiar+OMt7ropyvsq7J5O+iYjEHBo4zZkzB126dEGdOnUQHByMAQMG4MyZM6I++fn5iIuLQ1BQEAICAjBo0CBkZYlrymRkZCA2Nha1a9dGcHAwpk6diuJicdG+3bt3IzIyEj4+PmjVqhVWrFhh78dzWRUd5+EK+SxSn0GrE5B0/ho2pFxG0vlrZnekVWqX3r33otfTj4j63jv+G7wRM97seK3d4BdYu+yRLpY+m8rkcrlKkExEVN0culS3Z88exMXFoUuXLiguLsYbb7yBPn36IC0tDf7++n+RT5o0CZs3b8a6deugUCgwfvx4DBw4EPv37wcAaLVaxMbGQqlU4sCBA8jMzMTw4cPh5eWFDz74AACQnp6O2NhYjB07FqtXr8aOHTvw/PPPIzQ0FNHR0Q57fmfmDvksFT2D1KU3a3bpqTw0QIsWouuJrbrhhUEzbPZck6LuwvherSR/NpXJ5WLSNxGReU5VAPOff/5BcHAw9uzZg549eyI3NxcNGjTAmjVr8OSTTwIATp8+jbZt2yIpKQndu3fH1q1b8dhjj+HKlSsICQkBACxZsgTx8fH4559/4O3tjfj4eGzevBmpqanG9xo8eDBycnKQkJBQ4bhqWgHMmsCaApkbUi7j1W9TKrxnUtIChO5NFLX1eGkp/g5UVn3A/1LKfbD/9d5WBbDmCm+akgEIkfvg46c74urNApcMkomIzHH7Api5ubkAgHr19DkVycnJKCoqQlRUlLFPmzZt0LRpUyQlJQEAkpKS0K5dO2PQBADR0dHQaDQ4deqUsY/pPQx9DPcoraCgABqNRvRF7sPapbeKZmzq37qBi3MfEwVNx5Wt0Tx+k02DJgCY9fg9Vgc0UnK+Zj1+D+5vVR/9OzaCqmUQgyYiIgucJnDS6XSYOHEi7r//fkRERAAA1Go1vL29ERgYKOobEhICtVpt7GMaNBmuG66V10ej0eDOnTtlxjJnzhwoFArjV5MmTWzyjOQcrC2QWV7l7A8SPsPvC58TtfUZvRD9R8y34Yj1HryrQaWXztwhb42IyBk4TTmCuLg4pKamYt++fY4eCqZPn47Jkycbv9doNAye3Ii1BTINMzbjVh2FDPrAqk7BLZz87zPi/v510XX8NzYebYkerepb/ZrSdaf2TH0YyX/dcNm8NSIiR3OKwGn8+PHYtGkT9u7di8aNGxvblUolCgsLkZOTI5p1ysrKglKpNPY5fPiw6H6GXXemfUrvxMvKyoJcLoefn1+Z8fj4+MDHx8cmz+aMrCni6G60OgFX8wok9TVdojOtnN354K9Y+Ms8Ud+BQz/C0cZtbTrW0tqE1LGqf3nJ7/07NrL18IiIagSHBk6CIGDChAn46aefsHv3boSFhYmud+7cGV5eXtixYwcGDRoEADhz5gwyMjKgUqkAACqVCu+//z6ys7MRHBwMAEhMTIRcLkd4eLixz5YtW0T3TkxMNN6jJrG2iKM7sebIkbq1vcrUL4q5KwjRHz8D2bVrovbm8Zskvf+Ajg0h9/NCZs4dJP6RLX3g/7p+p1ByX0vJ74a6U1yeIyKqHIcGTnFxcVizZg02bNiAOnXqGHOSFAoF/Pz8oFAoMGbMGEyePBn16tWDXC7HhAkToFKp0L17dwBAnz59EB4ejueeew7z5s2DWq3GW2+9hbi4OOOs0dixY7Fw4UJMmzYNo0ePxs6dO/H9999j8+bNDnt2R3DFX6a2mh2z9siRMv22bAFiY0V5To+O/BRpIS1K97To55QrkvuaI7WsQEXJ7zLok98fCVfWmJlGIiJbcWjgtHjxYgDAQw89JGpfvnw5Ro4cCQCYP38+PDw8MGjQIBQUFCA6OhqLFi0y9vX09MSmTZswbtw4qFQq+Pv7Y8SIEXjnnXeMfcLCwrB582ZMmjQJCxYsQOPGjbF06VK3r+FkGnTU9/fBrF9c65eprWbHKnPkSM7tIn1dpuaBQHg48Oefxmt/R9yLBx59G4Ksen5O1h4RY1XdKR6fQkRkFaeq4+SsXLGOkzXLUqbWvtDdKX6ZWlNnqSJJ569hyJcHrR7DrMBrGDl9hKht5OiPsbvB3Vbfq7Iq87xS604tGNyRuU5E5Nbs8fvbKZLDybasXZYytf/c1Uovh9lqWc3WS01WHzkiCFi3Oh5dLqcZm262aI0Og/4DrYendfeqospU8Ja6pFeZiuJERDUdAyc3U5llKVMLd53Dj0f/tvqXtS2Tzm291HTx6i3J732P+hw2r5woaivauAmPnPSF1srZu4iGcqReqVzx1EA/L/xvaCS6t7C+GKWh7lR5lcKtWfojIqISTlMAk2yjoqBDCkOyeEJqpqT+hhmu0u9rzX1MD9vdf+6qpPeVMpOUkJqJ+dvPVnwzQcAX698TBU1XayvQespP+FrRtlI/08oGTQCQc6cIHjJZpWbspFQK5+G9RESVwxknN2P1spQZ1iyH2WJZrbL5WBUtNRnGVpGW1y5hx9Jxora4x+Oxue0DAIC/rt+2aly2UpXP0rTulOnPlYf3EhFVDQMnN2OrvBXDctiK/emoX8fHYs5SVZfVKpOPVd5Sk2me1dW8ggqDsQ+3forBJ341fq+DDOGT1yHfq+Tn2KxebStGZztV/SxjIkLxSLiyxhY7JSKyBwZObkZKfkuI3AeDIhvjf7vPV3i/dzf/YfxvczlL1h5fYqoq+VjmlpqsmblqlJuN/UtGi9pejx6PbzvGiNoCa3vhruA6UMp9kaUx/zOtDA8ZoLNwM1vmIHl6yJxilyQRkbtgjpObkZLfMuvxe9CjdQOr720uZ6kqO7gqm481MequMktNlvKszHl99/IyQVO7id+VCZoAfT2n55YfRn6xtspB0/iHW2LB4I5Y+0J3LBzSCTIwB4mIyNVwxskNSclv0eqEcmemzDGXs1SVHVyVzeFpXl+8dCZ15qr+rRv4feFzorYPHhqFL7oNqvA9c28XWTvMMu5v1UA0+7PYQ8YcJCIiF8PAyU1VlN9imJkat+ooZDBzxIgFpXOWyrtPRbMnlc3hKf06KTNXYw/+gNf3rBC1dR6/Ctf8AyW9Z1VmmywFj8xBIiJyPQyc3FhF+S2WZqakMJ0tquwOrq5h9RBY2ws5EmdzLAUg5c1cyfNv4sSCwaK2Rd2fxLwHR0p6z6qqKHhkDhIRkWth4FTDlZ71uJpXIEoIt6T0rE9MRCh6tQnBN0kX8df122hWrzaeUzWHdy3bpNGVF4BYmrl6NmUrPtj2P1GbatxyZMqtz++qLC69ERG5FwZOJJr10OoELN2XbnXOkrkdbUv3pZcbNBxOvy55tqm8AMSQZ2V4b7/CfPwx/0lRnzUdYvBGzHhJ7yWFpeXNhYM7IqiOL5feiIjcFHfVkUhlqk5XtnK41OTwAR0bYs/Uhy0GYIYxywD0S9tTJmh6+IXPJQVN7RtJOwByYu/WUCrEs1yhCl8sGRaJxzo2gqplEPr/+78MmoiI3AtnnGoAaw/ftSZnqSqVw6Umh/+ccgUHL1zHrMctz17F3BWEM4uHwVuTY2zbetd9GPfEG5LeAwBaNAjAicsVH5MS1sAf++J7MambiKgGYuDk5ip7+K7UHV/WVA7vGlZPdL+OTQJRz98b128VVvgcak0+xq46ikXPRqKuv7d4TFu3AI89Bm+T/s+8tAiHAptWeF9TbUPr4OeUivsF1/FlUjcRUQ3FwMmNWTrOxLCEtnhYZLnBU0XBgVYnSD6Qd3uaGpO/TxEFWeVVz7Ykbu1RCP++xkOnxe6vXkbTa5dLOjz4ILBrF9YIMAZpZ7PysHBXxVXSg+v4VromFRER1QzMcXJTFS2hAfolNK21kcu/ElIz0WPuTizcdU5S/2X7L5aZmarMWxuCpq6XUnHho/7ioGnfPmD3bkAmMwZ9/Ts2wv2tpO2iUyr8rM7vIiKimoWBk5uyZgnNWtYcb2JzgoAfv5mC79e8bmw6U78p7n9vG7Sq+8y+xLDrzlK4I4N++bJrWD1jflfp5G+lwrfCGToiInJ/XKpzU1U5fLc8VTmYt6oi1OewaeVEUduIp2ZjT4vOQF6RsZp5adZWN2dFbyIisoSBkxsx3T13Na9A0musPfaksgfzVokg4Mv17+GRc4eMTf/4B0I1bgWKPUv+L1xeEGhtdXMmfxMRkTkMnNyEud1z5SVfVzbRubIH81ZWy2uXsGPpOFHby/1fx5Y2Pcr0rSgItHd1cyIicn8MnNyApd1z5QVNQOUSnSt7MG9lzN2yAM+cTDR+r5V54J5J3yPfq+wYDDlK5dWsqkx1cyIiIlMMnFyclJyj0jNPVTk/zZBobWnLvi00ys3G/iWjRW3xMRPwXYdoi695u184EtPUFmtWAahSaQYiIiKAgZPLk5JzpBOAGbFtUb+OT5UTnaUkWitqeyH3dlGlAqvXd32FsYfXi9raTfwOeT7+Fl8zsXdrAJYDo7GrjiKwtlelqpsTERGZYuDkQswtQ0nNOapfxwf9OzayyTgqSrQGYDawMvD2lKFQK75S/9YN/L7wOVHb+w+NxpfdBpY7FoVfLbz8cCs8+NGucmtWlXeYsGlpBiaEExFReRg4uQhLR6cM7tJE0uttnZtU0ZZ9c4GVfrxNMX/7n6J7vZz0Pabt/VrUFjlhNa7XVlQ4jrmD2iP5rxs22elX3YnvRETkehg4uYDyjk6Zv/0sAstZGrPnMSGWtuxrdQIUft6YFn03rt8qRL0AHyjl+jFsOnHF2E+efxMnFgwWvXah6mn8p+fwCt9bKffBrMfvQUxEKDakXK6wvxTVmfhORESuiYGTk6vo6BTTjBwpxR3trbxDhT09ZKgf4AMAGHZsC977dZHotapxy5Ep1x+P4u/jiVsFWuM1pdwHQ7o2RfP6/mVmt6oa8PAMOiIikoqBk5OTcnRKzu0iTIq6C98eyZBU3FGq8rb2myPlUGGFthAX5z4mur66YwzejB4vaht9f3Pc17KBpPeuaKefDCUJ64Djg0siInJdDJycnNS8m+b1a2NffC+bHRNS3syRIRAzDazq+/tg1i/lz4wlvfsZZn8/R3TtoRc+x8V6ZZPWv0nKwMSouyWNX8pOvw8HtgMAyZXDiYiIzGHg5OSkLkMF1/G12TEhUmaOgLJBiCVe2iL8/tkwKApuGds2330/4gZMt/ianDuWz54zR+qRKjyDjoiIqoKBk5OTsgxly/wcKTlV09efxI1ytveb6nXuML768R1R29NjF+GwommFr83Oy7dquVDK4bw8g46IiKqCgZOTk7IMZcv8HCk5VVKCJg+dFjuWjkXYjUxj24Gm7SHbsQP3X7yBw6VKEphz8eot9Ji7s9zlwtIYGBERkT3xdFMXYFiGUirEy3aK2l6YGHUXHglX2uy9bFHLqFvGSVz4qL8oaBo09CO8NvYTdG0RhPG9WiGwtpfF18sA1K3thfnbz5YJ4gzLhQmpmeZfTEREZEcMnJyQVicg6fw1bEi5jKTz16DVCYiJCMW++F6YFNUagX76oCPndhHmb/8TPebutFkgUaWt/YKA9d+8hu/WluQuna7fDC2nbsDRxm2NM2OeHjJjsnZphnkzS8e1GNpnb0yD1tIpxkRERHbCpTonU95uNgD47/azdj2otrKH+Eaoz2HTyomituFPzcbeFp3NLq/FRIRiiYVkbnPVxU3xiBQiInIUBk5OpLzdbPY4qNZS4rVVh/gKApb++A6izh8x9vvHPxBr1/2GQaF1Ma6chG5Lydym1cXLwyNSiIioujl0qW7v3r3o168fGjZsCJlMhp9//ll0XRAEzJw5E6GhofDz80NUVBTOnj0r6nP9+nUMHToUcrkcgYGBGDNmDG7evCnqc+LECTzwwAPw9fVFkyZNMG/ePHs/mtUq2s0GSD+o1qCwWIdlv13AzA2pWPbbBRQW64zXElIz0WPuTgz58iBe/TYFQ748iPs/3IkF28+ioFiHiVF3IUQuXrZTKnyxeFikcZmt5dVLuDivnyhoern/6+gyfhU+2fMXvDw8oGoZVG4gZ0jm7t+xkbGvNSUYiIiIqpNDZ5xu3bqFDh06YPTo0Rg4cGCZ6/PmzcOnn36KlStXIiwsDDNmzEB0dDTS0tLg66v/pTl06FBkZmYiMTERRUVFGDVqFF588UWsWbMGAKDRaNCnTx9ERUVhyZIlOHnyJEaPHo3AwEC8+OKL1fq85aloN5tUhlmYOVvS8OVv6TBNA3p/yx94tF0oGgR4Y/mBv8q8Vq3JFy2RKeU+mBTV2uwxJ3tPf4MmG74z9i2WeeCeSetQ4OVjbBu/9igWohMebd/Qqmeo7hIMREREUskEQXCKDFuZTIaffvoJAwYMAKCfbWrYsCFee+01TJkyBQCQm5uLkJAQrFixAoMHD8Yff/yB8PBwHDlyBPfeey8AICEhAY8++ij+/vtvNGzYEIsXL8abb74JtVoNb29vAMDrr7+On3/+GadPn5Y0No1GA4VCgdzcXMjlcts/PIANKZfx6rcpVb7P2he6Y/eZLHy+N73K9zLME4lypy5eBMLCRP2mxbyC7zv0sXifJZXIvTIsWwLmlwttkc9FRETuzR6/v512V116ejrUajWioqKMbQqFAt26dUNSUhIAICkpCYGBgcagCQCioqLg4eGBQ4cOGfv07NnTGDQBQHR0NM6cOYMbN26Yfe+CggJoNBrRl73Z4qDaUIUvOjYJxJe/VT1oAszsYJsypUzQFDHx+3KDJtHrrWCpBINhuZBBExEROYLTJoer1WoAQEhIiKg9JCTEeE2tViM4OFh0vVatWqhXr56oT1ipX/aGe6rVatStW7fMe8+ZMwezZ8+2zYNIVNndbIC4EOaMn0/Clrv0BQDFlzPh6SmOsd97eDSWdi27vGpOZXfASakETkREVJ2cdsbJkaZPn47c3Fzj16VLl+z+nobdbEBJICSVYRYGAH44etmm44o78B2O/O85UVvkhNWSgyaDyu6AM5c8TkRE5ChOO+OkVOqrYWdlZSE0tGRZJisrCx07djT2yc7OFr2uuLgY169fN75eqVQiKytL1MfwvaFPaT4+PvDx8TF7zZZKlwN4JFxp9qBaSwL9vPC/oZHo3kI/k9Nj7k6bjU2efxMnFgwWN775JjY8OQ7XK5GLxR1wRETkDpx2xiksLAxKpRI7duwwtmk0Ghw6dAgqlQoAoFKpkJOTg+TkZGOfnTt3QqfToVu3bsY+e/fuRVFRyVb+xMRE3H333WaX6aqLuXIAhsBnX3wvPBnZqMJ75NwpgodMX4nbVrvyAGDY0c1lgqbu41Zgy9NxVgdAhtwr7oAjIiJ34NDA6ebNm0hJSUFKSgoAfUJ4SkoKMjIyIJPJMHHiRLz33nv45ZdfcPLkSQwfPhwNGzY07rxr27YtYmJi8MILL+Dw4cPYv38/xo8fj8GDB6NhQ/0W+GeffRbe3t4YM2YMTp06he+++w4LFizA5MmTHfTUJTvGLJ3DNi/hD8lLboYlMFsUg/QrzMfFuY/hvcTFxrZvOj2K5vGboJbXx/i1R3EtLx+hCl9Jy4n2OISYiIjIkRy6VPf777/j4YcfNn5vCGZGjBiBFStWYNq0abh16xZefPFF5OTkoEePHkhISDDWcAKA1atXY/z48ejduzc8PDwwaNAgfPrpp8brCoUCv/76K+Li4tC5c2fUr18fM2fOdFgNJymFLq3ZFWeYAarqUtjjabvx6cb/iNoeeuFzXKxXMvOlE4Dx36bgpZ5h+GJvepnK4qUpzRy1QkRE5Mqcpo6TM7NlHYik89cw5MuDNhlXqMIX++J7wdNDBq1OQI+5O61ervMuLsLvC4dBXnDL2LapzQMY3z++3PedERuOdzeXOmdO7oMhXZuaLZhJRERU3exRx8lpk8PdlS3PVzNdAjM9Y05qJNzr3GF89eM7oraYUZ/hdHCYhVfoZebmo66/N/bF92KpACIiqlEYOFUzW+0uezKyEQqKdUg6f80YsBiKRr6+/mS559p56LTY+eVYNM/JNLZldOyOh6LfhE5iMYTsvHxjqQAiIqKawml31bkrQ6HL8sITD1n5tZxk0NdrMt2Nl5CqD4JiIkKR/NYjmBTVGoF+XmVe2z3jBC581F8UNL340gI0Sj6Ahc9GSn4OlhcgIqKaiIFTNSuv0KXs368XHggze92g9FJcZm4+xq46ii0nMo3v8WrUXUie8QjWvtAdo+5rBggCfvr6NXy79g3j6043aI4W037BwPFPwdNDhkfbN8SiZyNR3mobywsQEVFNxuRwCeyRXJaQmlmm0GWoyS40c9c9ZCj3OBUPGbBwSCc82r6h+MLvvwNduoiannv6HZzreJ/ZXW9bTlzBy2uOlbk/D9glIiJXYo/f3wycJLDHDx4oWzm8dHK16fWreQV4d/Mfku67xBDYCALQrx+webPxWmFwCBI2HUSDenXKTeauKLAjIiJydgycHMRegZM1NqToc5qkCFX4Yl8/JTzbRYgv/PADMGiQ5PesKLAjIiJyZixHUINZk4z92po58Hyj5KgaeHkBubmAn59V78ldc0RERGJMDncRht145Wmcm4WLcx/Dk6kmQdOyZUBhodVBExEREZXFwMlFmO7GM+etHV9i35Ix4sbcXGD0aDuPjIiIqOZg4ORCYiJCy5QLaHDzBi7OfQzP/77B2Lbg0bHQanWAg/KxiIiI3BUDJxfzaPtQLBzSCQAQd+A7HPnfc6LrkRNW4+65M5nETUREZAdMDndBjzbxw8W5j4naPlU9g7X9XsAHLBdARERkNwycXM3//geMHy9q2rbtCLq0DEMcywUQERHZFQMnV3HrFhAQIG57+WXgf/9DtGNGREREVOMwx8kVrFpVNmg6e1Y/+0RERETVhjNOzqygAGjQAMjLK2l7+mngu+8cNyYiIqIajDNOzuqXXwBfX3HQdPw4gyYiIiIH4oyTsykuBu66C0hPL2nr3RtITARkTPwmIiJyJM44OZNdu/TnypkGTQcOANu3M2giIiJyApxxcgaCAHTvDhw+XNLWoQNw9CjgwdiWiIjIWfC3sqMdOaIPjkyDpl9/BVJSGDQRERE5Gc44OVJREdC1a8n3jRrpl+m8vBw3JiIiIrKIUxqOVKsW0KuX/r9//BH4+28GTURERE6MM06OJJMBO3Y4ehREREQkEWeciIiIiCRi4EREREQkEQMnIiIiIokYOBERERFJxMCJiIiISCIGTkREREQSMXAiIiIikoiBExEREZFEDJyIiIiIJGLgRERERCQRAyciIiIiiRg4EREREUnEwImIiIhIIgZORERERBLVcvQAXIEgCAAAjUbj4JEQERGRVIbf24bf47bAwEmCvLw8AECTJk0cPBIiIiKyVl5eHhQKhU3uJRNsGYa5KZ1OhytXrqBOnTqQyWSOHk6No9Fo0KRJE1y6dAlyudzRw6nx+Hk4D34WzoOfhXMxfB4ZGRmQyWRo2LAhPDxsk53EGScJPDw80LhxY0cPo8aTy+X8C8mJ8PNwHvwsnAc/C+eiUChs/nkwOZyIiIhIIgZORERERBIxcCKn5+Pjg7fffhs+Pj6OHgqBn4cz4WfhPPhZOBd7fh5MDiciIiKSiDNORERERBIxcCIiIiKSiIETERERkUQMnIiIiIgkYuBETmPWrFmQyWSirzZt2hiv5+fnIy4uDkFBQQgICMCgQYOQlZXlwBG7j71796Jfv35o2LAhZDIZfv75Z9F1QRAwc+ZMhIaGws/PD1FRUTh79qyoz/Xr1zF06FDI5XIEBgZizJgxuHnzZjU+hXuo6LMYOXJkmT8nMTExoj78LGxjzpw56NKlC+rUqYPg4GAMGDAAZ86cEfWR8vdSRkYGYmNjUbt2bQQHB2Pq1KkoLi6uzkdxC1I+j4ceeqjMn4+xY8eK+lT182DgRE7lnnvuQWZmpvFr3759xmuTJk3Cxo0bsW7dOuzZswdXrlzBwIEDHTha93Hr1i106NAB//vf/8xenzdvHj799FMsWbIEhw4dgr+/P6Kjo5Gfn2/sM3ToUJw6dQqJiYnYtGkT9u7dixdffLG6HsFtVPRZAEBMTIzoz8natWtF1/lZ2MaePXsQFxeHgwcPIjExEUVFRejTpw9u3bpl7FPR30tarRaxsbEoLCzEgQMHsHLlSqxYsQIzZ850xCO5NCmfBwC88MILoj8f8+bNM16zyechEDmJt99+W+jQoYPZazk5OYKXl5ewbt06Y9sff/whABCSkpKqaYQ1AwDhp59+Mn6v0+kEpVIpfPTRR8a2nJwcwcfHR1i7dq0gCIKQlpYmABCOHDli7LN161ZBJpMJly9frraxu5vSn4UgCMKIESOE/v37W3wNPwv7yc7OFgAIe/bsEQRB2t9LW7ZsETw8PAS1Wm3ss3jxYkEulwsFBQXV+wBupvTnIQiC8OCDDwqvvvqqxdfY4vPgjBM5lbNnz6Jhw4Zo0aIFhg4dioyMDABAcnIyioqKEBUVZezbpk0bNG3aFElJSY4abo2Qnp4OtVot+tkrFAp069bN+LNPSkpCYGAg7r33XmOfqKgoeHh44NChQ9U+Zne3e/duBAcH4+6778a4ceNw7do14zV+FvaTm5sLAKhXrx4AaX8vJSUloV27dggJCTH2iY6OhkajwalTp6px9O6n9OdhsHr1atSvXx8RERGYPn06bt++bbxmi8+Dh/yS0+jWrRtWrFiBu+++G5mZmZg9ezYeeOABpKamQq1Ww9vbG4GBgaLXhISEQK1WO2bANYTh52v6F43he8M1tVqN4OBg0fVatWqhXr16/HxsLCYmBgMHDkRYWBjOnz+PN954A3379kVSUhI8PT35WdiJTqfDxIkTcf/99yMiIgIAJP29pFarzf7ZMVyjyjH3eQDAs88+i2bNmqFhw4Y4ceIE4uPjcebMGaxfvx6AbT4PBk7kNPr27Wv87/bt26Nbt25o1qwZvv/+e/j5+TlwZETOY/Dgwcb/bteuHdq3b4+WLVti9+7d6N27twNH5t7i4uKQmpoqyrskx7H0eZjm8rVr1w6hoaHo3bs3zp8/j5YtW9rkvblUR04rMDAQd911F86dOwelUonCwkLk5OSI+mRlZUGpVDpmgDWE4edbeqeQ6c9eqVQiOztbdL24uBjXr1/n52NnLVq0QP369XHu3DkA/CzsYfz48di0aRN27dqFxo0bG9ul/L2kVCrN/tkxXCPrWfo8zOnWrRsAiP58VPXzYOBETuvmzZs4f/48QkND0blzZ3h5eWHHjh3G62fOnEFGRgZUKpUDR+n+wsLCoFQqRT97jUaDQ4cOGX/2KpUKOTk5SE5ONvbZuXMndDqd8S8uso+///4b165dQ2hoKAB+FrYkCALGjx+Pn376CTt37kRYWJjoupS/l1QqFU6ePCkKZhMTEyGXyxEeHl49D+ImKvo8zElJSQEA0Z+PKn8elUxmJ7K51157Tdi9e7eQnp4u7N+/X4iKihLq168vZGdnC4IgCGPHjhWaNm0q7Ny5U/j9998FlUolqFQqB4/aPeTl5QnHjh0Tjh07JgAQPvnkE+HYsWPCX3/9JQiCIHz44YdCYGCgsGHDBuHEiRNC//79hbCwMOHOnTvGe8TExAidOnUSDh06JOzbt09o3bq1MGTIEEc9kssq77PIy8sTpkyZIiQlJQnp6enC9u3bhcjISKF169ZCfn6+8R78LGxj3LhxgkKhEHbv3i1kZmYav27fvm3sU9HfS8XFxUJERITQp08fISUlRUhISBAaNGggTJ8+3RGP5NIq+jzOnTsnvPPOO8Lvv/8upKenCxs2bBBatGgh9OzZ03gPW3weDJzIaTzzzDNCaGio4O3tLTRq1Eh45plnhHPnzhmv37lzR3j55ZeFunXrCrVr1xaeeOIJITMz04Ejdh+7du0SAJT5GjFihCAI+pIEM2bMEEJCQgQfHx+hd+/ewpkzZ0T3uHbtmjBkyBAhICBAkMvlwqhRo4S8vDwHPI1rK++zuH37ttCnTx+hQYMGgpeXl9CsWTPhhRdeEG2tFgR+FrZi7nMAICxfvtzYR8rfSxcvXhT69u0r+Pn5CfXr1xdee+01oaioqJqfxvVV9HlkZGQIPXv2FOrVqyf4+PgIrVq1EqZOnSrk5uaK7lPVz0P272CIiIiIqALMcSIiIiKSiIETERERkUQMnIiIiIgkYuBEREREJBEDJyIiIiKJGDgRERERScTAiYiIiEgiBk5EREREEjFwIiKnIZPJ8PPPP0vu37x5c/z3v/+123iIiEpj4ERE1WbkyJEYMGCAxeuZmZno27ev5PsdOXIEL774og1GJs2cOXPg6emJjz76qNrek4icCwMnInIaSqUSPj4+kvs3aNAAtWvXtuOIxL766itMmzYNX331VYV9CwsLq2FERFTdGDgRkdMwXaq77777EB8fL7r+zz//wMvLC3v37gVQdqlOJpNh6dKleOKJJ1C7dm20bt0av/zyi+gev/zyC1q3bg1fX188/PDDWLlyJWQyGXJycsod2549e3Dnzh2888470Gg0OHDggOj6rFmz0LFjRyxduhRhYWHw9fUFAOTk5OD5559HgwYNIJfL0atXLxw/ftz4uvPnz6N///4ICQlBQEAAunTpgu3bt1vzYyOiasTAiYic0tChQ/Htt9/C9Bzy7777Dg0bNsQDDzxg8XWzZ8/G008/jRMnTuDRRx/F0KFDcf36dQBAeno6nnzySQwYMADHjx/HSy+9hDfffFPSeJYtW4YhQ4bAy8sLQ4YMwbJly8r0OXfuHH788UesX78eKSkpAICnnnoK2dnZ2Lp1K5KTkxEZGYnevXsbx3Tz5k08+uij2LFjB44dO4aYmBj069cPGRkZUn9URFSdBCKiajJixAihf//+Fq8DEH766SdBEAQhOztbqFWrlrB3717jdZVKJcTHxxu/b9asmTB//nzR69966y3j9zdv3hQACFu3bhUEQRDi4+OFiIgI0Xu++eabAgDhxo0bFseVm5sr+Pn5CSkpKYIgCMKxY8eEgIAAIS8vz9jn7bffFry8vITs7Gxj22+//SbI5XIhPz9fdL+WLVsKn3/+ucX3u+eee4TPPvvM4nUichzOOBGRU2rQoAH69OmD1atXA9DPFiUlJWHo0KHlvq59+/bG//b394dcLkd2djYA4MyZM+jSpYuof9euXSscy9q1a9GyZUt06NABANCxY0c0a9YM3333nahfs2bN0KBBA+P3x48fx82bNxEUFISAgADjV3p6Os6fPw9AP+M0ZcoUtG3bFoGBgQgICMAff/zBGSciJ1XL0QMgIrJk6NCheOWVV/DZZ59hzZo1aNeuHdq1a1fua7y8vETfy2Qy6HS6Ko1j2bJlOHXqFGrVKvkrU6fT4auvvsKYMWOMbf7+/qLX3bx5E6Ghodi9e3eZewYGBgIApkyZgsTERPznP/9Bq1at4OfnhyeffJLJ5UROioETETmt/v3748UXX0RCQgLWrFmD4cOHV+l+d999N7Zs2SJqO3LkSLmvOXnyJH7//Xfs3r0b9erVM7Zfv34dDz30EE6fPo02bdqYfW1kZCTUajVq1aqF5s2bm+2zf/9+jBw5Ek888QQAfbB18eJF6Q9FRNWKgRMRVavc3Fxj4rRBUFAQmjRpUqavv78/BgwYgBkzZuCPP/7AkCFDqvTeL730Ej755BPEx8djzJgxSElJwYoVKwDoZ6bMWbZsGbp27YqePXuWudalSxcsW7bMYl2nqKgoqFQqDBgwAPPmzcNdd92FK1euYPPmzXjiiSdw7733onXr1li/fj369esHmUyGGTNmVHmGjIjshzlORFStdu/ejU6dOom+Zs+ebbH/0KFDcfz4cTzwwANo2rRpld47LCwMP/zwA9avX4/27dtj8eLFxl115upHFRYWYtWqVRg0aJDZ+w0aNAhff/01ioqKzF6XyWTYsmULevbsiVGjRuGuu+7C4MGD8ddffyEkJAQA8Mknn6Bu3bq477770K9fP0RHRyMyMrJKz0lE9iMTBJO9vkRENcz777+PJUuW4NKlS44eChG5AC7VEVGNsmjRInTp0gVBQUHYv38/PvroI4wfP97RwyIiF8HAiYhqlLNnz+K9997D9evX0bRpU7z22muYPn26o4dFRC6CS3VEREREEjE5nIiIiEgiBk5EREREEjFwIiIiIpKIgRMRERGRRAyciIiIiCRi4EREREQkEQMnIiIiIokYOBERERFJ9H9+sWN1LG8rEAAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Your code here\n",
"plt.scatter(dataset[\"living_area\"], dataset[\"rent_price\"])\n",
"plt.xlabel(\"Living Area\")\n",
"plt.ylabel(\"Rent price\")\n",
"\n",
"y_regr = theta[0] + theta[1] * X[:,1]\n",
"plt.plot(X[:,1], y_regr, color='red', label='Regression line')\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "16e1eec7",
"metadata": {},
"source": [
"b) How many samples do you need to visit for reaching the convergence?"
]
},
{
"cell_type": "markdown",
"id": "fd7870eb",
"metadata": {},
"source": [
"The biggest improvements are made before the first 300ish iterations but smaller improvements still occur after that. If we were very limited in cpu time, we would tell that the convergence vas reached around 300 samples"
]
},
{
"cell_type": "markdown",
"id": "c185d7bc",
"metadata": {},
"source": [
"c) What kind of stopping criterion could we use here?"
]
},
{
"cell_type": "markdown",
"id": "235f3ac0",
"metadata": {},
"source": [
"We would use the delta of the global cost function. When we compute the cost function, we can stop the iterations when the result is not improving more than a set delta."
]
},
{
"cell_type": "markdown",
"id": "5e7ce003",
"metadata": {},
"source": [
"d) Compute the final cost value according to Equation 2 and compare it to the one of exercise 2 and 3. What can you conclude?"
]
},
{
"cell_type": "code",
"execution_count": 469,
"id": "dbcb6f22",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Theta = [ 0.33101883 28.20026525]\n",
"Cost = 145028.5077448914\n"
]
}
],
"source": [
"# Your code here\n",
"y_pred = X @ theta\n",
"print(f\"Theta = {theta}\")\n",
"print(f\"Cost = {cost_J(y_pred, y)}\")"
]
},
{
"cell_type": "markdown",
"id": "27a8e7fd",
"metadata": {},
"source": [
"The result is really close to both of the other methods but the stochastic is way faster because we dont loop trough the whole dataset for each update. The stochastic might have a slightly worse final result because it is harder to find the exact perfect values but its speed and efficency compensates this."
]
},
{
"cell_type": "markdown",
"id": "a8a85676",
"metadata": {},
"source": [
"## Exercise 5 - Review questions"
]
},
{
"cell_type": "markdown",
"id": "84f82d3d",
"metadata": {},
"source": [
"a) The linear regression has a mathematical _closed form_ solution. Then, in which conditions would we prefer a gradient descent algorithm to compute the regression model?"
]
},
{
"cell_type": "markdown",
"id": "eecbe019",
"metadata": {},
"source": [
"The closed form solution is great to have to best value possible, but it is very compute hungry. The inverse of a really big matrix is not something simple to do. So, the gradient descent is better when compute time is limited."
]
},
{
"cell_type": "markdown",
"id": "3696b258",
"metadata": {},
"source": [
"b) Outliers in a data set can be defined as values that are out of the \"usual\" range in comparison with other values. They typically come from noise or anomalies in the data capturing process. What is the impact of an outlier in the stochastic gradient descent process? What if we have many outliers? _Hint_: look at the equation of the MSE, and to the equation of the update rule."
]
},
{
"cell_type": "markdown",
"id": "4873219d",
"metadata": {},
"source": [
"Since for each iterations we update theta based on a random point, the outliers could significantly slow the congergence. If there is a lot of them, each update of the thetha values will not decrease the total cost value. This means that, if we are in a while loop searching to improve the cost value, it might either cause more loops to achieve the desired goal or cause the while loop to exit because the cost value is not getting smaller, but bigger."
]
},
{
"cell_type": "markdown",
"id": "22dce221",
"metadata": {},
"source": [
"c) In the case of stochastic gradient descent, what is the danger of having a too large or too small $\\alpha$ value? Could you think of a better (more advanced) strategy as the one stated in Slide 36?"
]
},
{
"cell_type": "markdown",
"id": "d1536554",
"metadata": {},
"source": [
"A too small alpha value would make the descent too slow and remove the speed advantage of this method. An alpha too big would cause the theta values to jump from an extreme to another. This would be highly susceptible to outliers. To mitigate this, we could apply the same logic, but pick a small number of samples (mini-batch) rather than a single one for each operations. This would reduce the impact of outliers while keeping the algorithm faster than the full one."
]
},
{
"cell_type": "markdown",
"id": "07bdad8b",
"metadata": {},
"source": [
"d) Let's assume we expect that the target variable $y$ has a dependency to the square and to the cube of one of the feature $x_d$ in our multi-variable training set $(x_1, \\ldots, x_d, \\ldots, x_D)$. How would you proceed? Do we need to take precautions in terms of numerical stability?"
]
},
{
"cell_type": "markdown",
"id": "d4f242c5",
"metadata": {},
"source": [
"If we have a dependency to the square and to the cube of the feature f1, we would augment the matrix to reflect this : h(f) = theta0 + theta1xf1 + theta2xf1² + theta3xf1³. Yes, we need to take precautions because f1³ could mean huge numbers and cause overflows. The solutions would be to scale down each value to keep the relations between them but reduce their overall values"
]
},
{
"cell_type": "markdown",
"id": "b7cf619b",
"metadata": {},
"source": [
"e) _Advanced_. Could we use a descent algorithm without computing the gradient? If yes, give a pseudo code of the algorithm to find $(\\theta_{0}, \\theta_{1})$ using a linear regression $h_{\\theta}(x) = \\theta_0 + \\theta_1 x$."
]
},
{
"cell_type": "markdown",
"id": "89317af1",
"metadata": {},
"source": [
"_Your answer here_"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2b0997fa",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "8ce59c65",
"metadata": {},
"source": [
"# Exercice 6 Optional Mini-batch gradient descent for linear regression"
]
},
{
"cell_type": "code",
"execution_count": 470,
"id": "8604ed56",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Stochastic : \n",
"Theta = [ 0.31909445 28.77358351]\n",
"Cost = 144217.6608921882\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"batch of 1 : \n",
"Theta = [ 0.30493246 27.72933782]\n",
"Cost = 147758.42400290794\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"batch of 10 : \n",
"Theta = [ 0.32782064 28.84157514]\n",
"Cost = 144303.73303813871\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"array([ 0.32782064, 28.84157514])"
]
},
"execution_count": 470,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def batch_gradient_descent(X, y, batch_size, max_iter, alpha):\n",
" theta = np.zeros((2))\n",
"\n",
" costs = []\n",
"\n",
" for i in range(0, max_iter): # we could also use a delta on the cost function with a while to stop when the cost is not improving but we wanted to see the curve after x iterations\n",
" batch_idx = np.random.choice(y.shape[0], batch_size)\n",
" y_stoch = y[batch_idx]\n",
" y_pred_stoch = X[batch_idx, :] @ theta\n",
"\n",
" theta[0] = theta[0] - alpha * (1/len(y_stoch)) * np.sum(y_pred_stoch - y_stoch)\n",
" theta[1] = theta[1] - alpha * (1/len(y_stoch)) * np.sum((y_pred_stoch - y_stoch) * X[batch_idx, 1])\n",
"\n",
" y_pred = X @ theta\n",
" costs.append(cost_J(y_pred, y))\n",
"\n",
"\n",
" y_pred = X @ theta\n",
" print(f\"Theta = {theta}\")\n",
" print(f\"Cost = {cost_J(y_pred, y)}\")\n",
"\n",
" plt.plot(range(0, len(costs)), costs)\n",
" plt.title(\"Cost over iterations\")\n",
" plt.show()\n",
" return theta\n",
"\n",
"\n",
"print(\"Stochastic : \")\n",
"stochastic_gradient_descent(X, y, max_iter = 1000, alpha=0.000001)\n",
"print(\"batch of 1 : \")\n",
"batch_gradient_descent(X, y, batch_size = 1, max_iter = 1000, alpha = 0.000001)\n",
"print(\"batch of 10 : \")\n",
"batch_gradient_descent(X, y, batch_size = 10, max_iter = 1000, alpha = 0.000001)"
]
},
{
"cell_type": "markdown",
"id": "35e0d314",
"metadata": {},
"source": [
"# Exercice 7 Optional multi-variable linear regression"
]
},
{
"cell_type": "markdown",
"id": "de60cd7e",
"metadata": {},
"source": [
"## A)"
]
},
{
"cell_type": "code",
"execution_count": 471,
"id": "928deeaa",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Theta = [2301.42126052 1049.63985381 62.36135978]\n",
"Cost = 134038.2148043482\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGzCAYAAAD9pBdvAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAARvNJREFUeJzt3Xl8VNX9//H3ZJJMEpJJCCELEHZlkVVUCKC4oCmiBRdEfipoBZUvqEirFdu61sa6W7+KYr8CrUUQLVgRWQoiIlEEQdkEWYNAAghZSMg2c35/JBkykEAmJHOzvJ6Px5XMvefO/cwlknfOPfdcmzHGCAAAwCIBVhcAAAAaN8IIAACwFGEEAABYijACAAAsRRgBAACWIowAAABLEUYAAIClCCMAAMBShBEAAGApwgiAOqdt27a68847rS7DJzabTU8++aTVZQD1EmEEqCE7d+7Uvffeq/bt2yskJEROp1MDBgzQa6+9phMnTtT48fLy8vTkk09qxYoVNf7edc2WLVv05JNPas+ePZbWsXDhQgIHUAsCrS4AaAg+/fRTjRgxQg6HQ6NHj1a3bt1UWFioVatW6eGHH9bmzZs1bdq0Gj1mXl6ennrqKUnS5ZdfXqPvbbVt27YpIODk70pbtmzRU089pcsvv1xt27a1rK6FCxfqjTfeqDCQnDhxQoGB/JMKVAf/5wDnaPfu3br11lvVpk0bLV++XAkJCZ5tEyZM0I4dO/Tpp59aWGHdU1xcLLfbreDg4Aq3OxwOv9SRm5urJk2a1Mh7hYSE1Mj7AI2SAXBO7rvvPiPJfPXVV1VqX1RUZJ5++mnTvn17ExwcbNq0aWOmTJli8vPzvdp9++235pprrjHNmjUzISEhpm3btuauu+4yxhize/duI+m05YknnjjjsXfu3Gluvvlm07RpUxMaGmr69u1rFixY4Nmenp5u7Ha7efLJJ0/b98cffzSSzOuvv+5Zd+zYMfPggw+aVq1ameDgYNOhQwfz3HPPGZfL5WlTVusLL7xgXnnlFdO+fXsTEBBg1q9fX2mdbdq0MWPGjDHGGDN9+vQKP+vnn3/uab9w4UIzcOBAExYWZsLDw821115rNm3a5PWeY8aMMU2aNDE7duwwQ4YMMeHh4WbYsGHGGGNWrlxpbr75ZpOYmGiCg4NNq1atzKRJk0xeXp7X/hXVUaai8//dd9+ZX/3qVyYiIsI0adLEXHnllSY1NdWrTdnnW7VqlXnooYdMTEyMCQsLM8OHDzeHDh3yanum7wmgPqNnBDhHn3zyidq3b6/+/ftXqf3YsWM1c+ZM3Xzzzfrtb3+rb775RikpKdq6davmzZsnSTp06JCuueYaNW/eXI8++qiioqK0Z88e/fvf/5YkNW/eXFOnTtX48eN1ww036MYbb5Qk9ejRo9LjZmRkqH///srLy9MDDzygZs2aaebMmfr1r3+tDz/8UDfccIPi4uI0aNAgffDBB3riiSe89p8zZ47sdrtGjBghqeQy0aBBg7R//37de++9at26tVavXq0pU6bo4MGDevXVV732nz59uvLz83XPPffI4XAoOjq6Sufrsssu0wMPPKC//e1veuyxx9SlSxdJ8vz5z3/+U2PGjFFycrL++te/Ki8vT1OnTtXAgQO1fv16r8s6xcXFSk5O1sCBA/Xiiy8qLCxMkjR37lzl5eVp/PjxatasmdasWaPXX39dP//8s+bOnStJuvfee3XgwAEtXbpU//znP89a9+bNm3XppZfK6XTqkUceUVBQkN5++21dfvnl+uKLL9S3b1+v9vfff7+aNm2qJ554Qnv27NGrr76qiRMnas6cOZLO/j0B1GtWpyGgPsvKyjKSPL9hn82GDRuMJDN27Fiv9b/73e+MJLN8+XJjjDHz5s0zksy3335b6XsdPny4Sr0hZSZNmmQkmS+//NKzLicnx7Rr1860bdvW05vx9ttvG0lm48aNXvt37drVXHnllZ7XzzzzjGnSpInZvn27V7tHH33U2O12k5aWZow52TPidDpP+02/MuV7RowxZu7cuaf1hpTVHxUVZcaNG+e1Pj093URGRnqtL+vZePTRR087XvkekDIpKSnGZrOZvXv3etZNmDDBVPbP5ql/F8OHDzfBwcFm586dnnUHDhwwERER5rLLLvOsK+sZGTx4sHG73Z71Dz30kLHb7SYzM9MYU7XvCaC+4m4a4BxkZ2dLkiIiIqrUfuHChZKkyZMne63/7W9/K0mesSVRUVGSpAULFqioqKgmStXChQt1ySWXaODAgZ514eHhuueee7Rnzx5t2bJFknTjjTcqMDDQ8xu5JG3atElbtmzRyJEjPevmzp2rSy+9VE2bNtWRI0c8y+DBg+VyubRy5Uqv4990001q3rx5jXyWMkuXLlVmZqZGjRrlVYPdblffvn31+eefn7bP+PHjT1sXGhrq+To3N1dHjhxR//79ZYzR+vXrfa7L5XJpyZIlGj58uNq3b+9Zn5CQoP/3//6fVq1a5fneKXPPPffIZrN5Xl966aVyuVzau3evpNr5ngDqinoVRlauXKnrr79eLVq0kM1m0/z5831+D2OMXnzxRZ1//vlyOBxq2bKlnn322ZovFo2C0+mUJOXk5FSp/d69exUQEKCOHTt6rY+Pj1dUVJTnB8+gQYN000036amnnlJMTIyGDRum6dOnq6CgoNq17t27V506dTptfdnljrJjx8TE6KqrrtIHH3zgaTNnzhwFBgZ6LgdJ0k8//aRFixapefPmXsvgwYMllVxWKK9du3bVrr0yP/30kyTpyiuvPK2OJUuWnFZDYGCgWrVqddr7pKWl6c4771R0dLTCw8PVvHlzDRo0SJKUlZXlc12HDx9WXl5epefb7XZr3759Xutbt27t9bpp06aSpGPHjkmqne8JoK6oV2NGcnNz1bNnT/3mN7/x+kfRFw8++KCWLFmiF198Ud27d9fRo0d19OjRGq4UjYXT6VSLFi20adMmn/Yr/xtwZds//PBDff311/rkk0+0ePFi/eY3v9FLL72kr7/+WuHh4edS9lndeuutuuuuu7Rhwwb16tVLH3zwga666irFxMR42rjdbl199dV65JFHKnyP888/3+t1+d6HmuJ2uyWVjBuJj48/bfupt9o6HA6vW4alkl6Mq6++WkePHtXvf/97de7cWU2aNNH+/ft15513eo5R2+x2e4XrjTGSrP+eAGpTvQojQ4YM0ZAhQyrdXlBQoD/84Q96//33lZmZqW7duumvf/2rZw6GrVu3aurUqdq0aZPnN5ba+G0Njct1112nadOmKTU1VUlJSWds26ZNG7ndbv3000+eHgmpZHBpZmam2rRp49W+X79+6tevn5599lnNmjVLt912m2bPnq2xY8eeNdBUdOxt27adtv7HH3/0bC8zfPhw3XvvvZ5LNdu3b9eUKVO89uvQoYOOHz/u6QmpTZV91g4dOkiSYmNjq13Hxo0btX37ds2cOVOjR4/2rF+6dGmV6zhV8+bNFRYWVun5DggIUGJiYrXqPdP3BFBf1avLNGczceJEpaamavbs2frhhx80YsQI/epXv/J05Zbd9bBgwQK1a9dObdu21dixY+kZwTl55JFH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PvHx8T61lySHwyGHw+F5XTashcs1AADUH2U/t882PNWnMBIcHKw+ffpo2bJlGj58uKSSAazLli3TxIkTK9wnKSlJy5Yt06RJkzzrli5dqqSkpCofNycnR5K4XAMAQD2Uk5OjyMjISrf7FEYkafLkyRozZowuuugiXXLJJXr11VeVm5uru+66S5I0evRotWzZUikpKZKkBx98UIMGDdJLL72koUOHavbs2Vq7dq2mTZtW5WO2aNFC+/btU0REhGw2m68lVyo7O1uJiYnat28fd+nUIs6z/3Cu/YPz7B+cZ/+ozfNsjFFOTo5atGhxxnY+h5GRI0fq8OHDevzxx5Wenq5evXpp0aJFnkGqaWlpCgg4ORSlf//+mjVrlv74xz/qscce03nnnaf58+erW7duVT5mQECAWrVq5WupVeZ0OvlG9wPOs/9wrv2D8+wfnGf/qK3zfKYekTI+zzPSkDB/iX9wnv2Hc+0fnGf/4Dz7R104z3XybhoAANB4NOow4nA49MQTT3jduYOax3n2H861f3Ce/YPz7B914Tw36ss0AADAeo26ZwQAAFiPMAIAACxFGAEAAJYijAAAAEsRRgAAgKUadRh544031LZtW4WEhKhv375as2aN1SXVWSkpKbr44osVERGh2NhYDR8+XNu2bfNqk5+frwkTJqhZs2YKDw/XTTfddNpDEtPS0jR06FCFhYUpNjZWDz/8sIqLi73arFixQhdeeKEcDoc6duyoGTNm1PbHq7Oee+452Ww2r2c7cZ5rxv79+3X77berWbNmCg0NVffu3bV27VrPdmOMHn/8cSUkJCg0NFSDBw/WTz/95PUeR48e1W233San06moqCjdfffdOn78uFebH374QZdeeqlCQkKUmJio559/3i+fry5wuVz605/+pHbt2ik0NFQdOnTQM8884/XQNM5z9axcuVLXX3+9WrRoIZvNpvnz53tt9+d5nTt3rjp37qyQkBB1795dCxcu9P0DmUZq9uzZJjg42Lz77rtm8+bNZty4cSYqKspkZGRYXVqdlJycbKZPn242bdpkNmzYYK699lrTunVrc/z4cU+b++67zyQmJpply5aZtWvXmn79+pn+/ft7thcXF5tu3bqZwYMHm/Xr15uFCxeamJgYM2XKFE+bXbt2mbCwMDN58mSzZcsW8/rrrxu73W4WLVrk189bF6xZs8a0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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def multivariate_batch_gradient_descent(X, y, batch_size, max_iter, alpha):\n",
" theta = np.zeros((X.shape[1]))\n",
"\n",
" costs = []\n",
"\n",
" for i in range(0, max_iter): # we could also use a delta on the cost function with a while to stop when the cost is not improving but we wanted to see the curve after x iterations\n",
" batch_idx = np.random.choice(y.shape[0], batch_size)\n",
" y_stoch = y[batch_idx]\n",
" y_pred_stoch = X[batch_idx, :] @ theta\n",
"\n",
" for j in range(0, X.shape[1]):\n",
" theta[j] = theta[j] - alpha * (1/len(y_stoch)) * np.sum((y_pred_stoch - y_stoch) * X[batch_idx, j])\n",
"\n",
" y_pred = X @ theta\n",
" costs.append(cost_J(y_pred, y))\n",
"\n",
"\n",
" y_pred = X @ theta\n",
" print(f\"Theta = {theta}\")\n",
" print(f\"Cost = {cost_J(y_pred, y)}\")\n",
"\n",
" plt.plot(range(0, len(costs)), costs)\n",
" plt.title(\"Cost over iterations\")\n",
" plt.show()\n",
"\n",
" return theta\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"# need to normalize the data or else overflows will occur\n",
"living = dataset[\"living_area\"].to_frame()\n",
"mean_living = living.mean()\n",
"std_living = living.std()\n",
"living_normalized = (living - mean_living) / std_living\n",
"\n",
"X_norm = living_normalized\n",
"X_norm.insert(0, \"x0\", 1) # add the column full of ones at the start, this represents x0\n",
"X_norm.insert(2, \"x2\", X_norm.iloc[:,1]**2) # add the squared value of column 1 to column 2\n",
"X_norm = np.array(X_norm)\n",
"\n",
"y = np.array(dataset[\"rent_price\"])\n",
"\n",
"theta = multivariate_batch_gradient_descent(X_norm, y, batch_size=10, max_iter = 10000, alpha=0.001)\n",
"\n",
"plt.scatter(dataset[\"living_area\"], dataset[\"rent_price\"])\n",
"plt.xlabel(\"Living Area\")\n",
"plt.ylabel(\"Rent price\")\n",
"\n",
"y_regr = theta[0] + theta[1] * X_norm[:,1] + theta[2] * X_norm[:,2]\n",
"plt.plot(dataset[\"living_area\"], y_regr, color='red', label='Regression line')\n",
"\n",
"plt.show()\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "64f2201b",
"metadata": {},
"source": [
"The convergence is still happening. We observed that we could use a way bigger alpha to achieve the same results"
]
},
{
"cell_type": "markdown",
"id": "a48af614",
"metadata": {},
"source": [
"## B)"
]
},
{
"cell_type": "code",
"execution_count": 472,
"id": "dcfa5986",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Theta = [ 1.06588497 0.32970238 28.86894189]\n",
"Cost = 144422.06094103807\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAk4AAAGwCAYAAABfKeoBAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAbO1JREFUeJzt3Xtc02X/P/DXQM6yISoMz6SWkke0dKXepSQqmt5qpWkeyzSw1Ey+Vmp28tB9Z5a3WmlSqXlnd2WK0s9DaioeUtEQNSUUDwxMZBOV4z6/P9YGH7bBZ2NjG7yejwePR7t27bPrw9K9va739b5kgiAIICIiIqIqeTh7AERERETugoETERERkUQMnIiIiIgkYuBEREREJBEDJyIiIiKJGDgRERERScTAiYiIiEiies4egDvQ6XS4fv06AgMDIZPJnD0cIiIikkAQBNy+fRtNmjSBh4d95ooYOElw/fp1NG/e3NnDICIiIhtcuXIFzZo1s8u1GDhJEBgYCED/i5fL5U4eDREREUmh1WrRvHlz4/e4PTBwksCwPCeXyxk4ERERuRl7ptkwOZyIiIhIIgZORERERBIxcCIiIiKSiIETERERkUQMnIiIiIgkYuBEREREJBEDJyIiIiKJGDgRERERScTAiYiIiEgiVg4nInIhpToBRzNykXO7ACGBvng4PBieHjxcnMhVMHAiInIRSalZWLg1DVmaAmNbmMIXC4ZEYECHMCeOjIgMuFRHROQCklKzMG39CVHQBABqTQGmrT+BpNQsJ42MiMpj4ERE5GSlOgELt6ZBMPOcoW3h1jSU6sz1IKKaxMCJiMjJjmbkmsw0lScAyNIU4GhGbs0NiojMYuBERORkObctB0229CMix2HgRETkZCGBvnbtR0SOw8CJiMjJHg4PRpjCF5aKDsig3133cHhwTQ6LiMxg4ERE5GSeHjIsGBIBACbBk+HxgiERrOdE5AIYOBERuYABHcKwamwklArxcpxS4YtVYyNZx4nIRbAAJhGRixjQIQxPRChZOZzIhTFwIiJyIZ4eMqhaN3T2MIjIAi7VEREREUnEwImIiIhIIgZORERERBIxcCIiIiKSiIETERERkUQMnIiIiIgkYuBEREREJBEDJyIiIiKJnBo4tWrVCjKZzOQnNjYWAFBQUIDY2Fg0bNgQ9evXx4gRI5CdnS26RmZmJmJiYuDv74+QkBC89tprKCkpEfXZu3cvIiMj4ePjgzZt2iAhIaGmbpGIiIhqEacGTseOHUNWVpbxZ+fOnQCAp556CgAwc+ZMbN26FZs3b8a+fftw/fp1DB8+3Pj60tJSxMTEoKioCIcOHcKXX36JhIQEzJ8/39gnIyMDMTExePzxx5GSkoIZM2bg+eefx88//1yzN0tERERuTyYIguDsQRjMmDED27Ztw4ULF6DVatG4cWNs3LgRI0eOBACcO3cO7du3R3JyMnr27IkdO3Zg8ODBuH79OkJDQwEAq1evRnx8PG7cuAFvb2/Ex8cjMTERqampxvcZNWoU8vLykJSUZHYchYWFKCwsND7WarVo3rw5NBoN5HK5A38DREREZC9arRYKhcKu398uk+NUVFSE9evXY9KkSZDJZDh+/DiKi4sRFRVl7NOuXTu0aNECycnJAIDk5GR07NjRGDQBQHR0NLRaLc6cOWPsU/4ahj6Ga5izaNEiKBQK40/z5s3teatERETkplwmcPrxxx+Rl5eHCRMmAADUajW8vb0RFBQk6hcaGgq1Wm3sUz5oMjxveK6yPlqtFvfu3TM7lrlz50Kj0Rh/rly5Ut3bIyIiolqgnrMHYLB27VoMHDgQTZo0cfZQ4OPjAx8fH2cPg4iIqPYTBGDHDiAiAmjVytmjqZJLzDhdvnwZu3btwvPPP29sUyqVKCoqQl5enqhvdnY2lEqlsU/FXXaGx1X1kcvl8PPzs/etEBERkVRnzwIeHkBMDFBu85crc4nAad26dQgJCUFMTIyxrVu3bvDy8sLu3buNbefPn0dmZiZUKhUAQKVS4ffff0dOTo6xz86dOyGXyxEREWHsU/4ahj6GaxAREZETTJ+un2UyePhh543FCk5fqtPpdFi3bh3Gjx+PevXKhqNQKDB58mTMmjULwcHBkMvlmD59OlQqFXr27AkA6N+/PyIiIvDcc89h6dKlUKvVePPNNxEbG2tcaps6dSpWrFiBOXPmYNKkSdizZw++/fZbJCYmOuV+iYiI6rQbN4CQEHHbF18AEyc6ZzxWcnrgtGvXLmRmZmLSpEkmzy1btgweHh4YMWIECgsLER0djZUrVxqf9/T0xLZt2zBt2jSoVCoEBARg/PjxePvtt419wsPDkZiYiJkzZ2L58uVo1qwZ1qxZg+jo6Bq5PyIiIvrbJ58AL78sbsvNBRo0cM54bOBSdZxclSPqQBAREdUZ9+4B/v7itvh4YPFih76tI76/nT7jRERERLVYYiIweLC4LT0duO8+54ynmlwiOZyIiIhqGZ0O6NJFHDQNGaIvP+CmQRPAGSciIiKyt5QUoGtXcduhQ4CZHe2lOgFHM3KRc7sAIYG+eDg8GJ4espoZpw0YOBEREZH9jBsHfP112eOWLfVLc56eJl2TUrOwcGsasjQFxrYwhS8WDInAgA5hNTFaq3GpjoiIiKrv2jVAJhMHTZs2AZcuWQyapq0/IQqaAECtKcC09SeQlJrl4AHbhoETERERVc+iRUCzZuI2rRZ45hmz3Ut1AhZuTYO5bf2GtoVb01Cqc72N/wyciIiIyDb5+fpZptdfL2t77z19AnhgoMWXHc3INZlpKk8AkKUpwNGMXDsO1j6Y40RERETW27wZePppcdvVq0DTplW+NOe25aDJln41iTNOREREJF1pKdCqlThoGjtWP8skIWgCgJBAX7v2q0kMnIiIiEiaw4eBevWAy5fL2k6cECeES/BweDDCFL6wVHRABv3uuofDg20eqqMwcCIiIqKqDR0qrsPUubN+9qlivSYJPD1kWDAkAgBMgifD4wVDIlyynhMDJyIiIrLszz/1CeA//VTWtnWrvsilh+1hxIAOYVg1NhJKhXg5TqnwxaqxkS5bx4nJ4URERGTe66/rSw2Ud/cu4Odnl8sP6BCGJyKUrBxOREREbuzWLSC4Qn7Rxx8D06fb/a08PWRQtW5o9+s6CgMnIiIiKrNuHTBpkrgtOxsICXHOeFwMc5yIiIgIKCoCGjQQB00vvaQvM8CgyYgzTkRERHXdL78AffuK29LSgPbtnTMeF8YZJyIiorpKEIDHHhMHTX36ADodgyYLOONERERUF509C0REiNt27zadeSIRzjgRERHVNdOni4MmhQIoLGTQJAFnnIiIiOqKGzdME72/+AKYONE543FDnHEiIiKqCz75xDRoys1l0GQlBk5ERES12b17+iNTXn65rC0+Xp8Y3qCB88blprhUR0REVFslJgKDB4vb0tOB++5zznhqAc44ERER1TY6HdClizhoGjJEP8vEoKlaOONERERUm6SkAF27itsOHgQeecQpw6ltGDgRERHZQalOwNGMXOTcLkBIoC8eDg+Gp4esZgcxbhzw9ddlj1u2BC5eBOrx695e+JskIiKqpqTULCzcmoYsTYGxLUzhiwVDIjCgQ5jjB3DtGtCsmbht0ybgmWcc/951DHOciIiIqiEpNQvT1p8QBU0AoNYUYNr6E0hKzXLsABYtMg2atFoGTQ7CwImIiMhGpToBC7emQTDznKFt4dY0lOrM9aim/Hx9mYHXXy9re+89fQJ4YKD9348AMHAiIiKy2dGMXJOZpvIEAFmaAhzNyLXvG2/ebBocXb0qDqLIIRg4ERER2SjntuWgyZZ+VSotBVq1Ap5+uqxt7Fj9LFPTpvZ5D6oUk8OJiIhsFBLoa9d+lTp8GFCpxG0nTpiWHiCH4owTERGRjR4OD0aYwheWig7IoN9d93B4cPXeaOhQcdDUubN+9olBU41j4ERERGQjTw8ZFgyJAACT4MnweMGQCNvrOf35pz4B/Kefytq2btUXufTgV7gz8LdORERUDQM6hGHV2EgoFeLlOKXCF6vGRtpex+n114HWrcVtd++anj1HNYo5TkRERNU0oEMYnohQ2qdy+K1bQHCFpb3ly4GXX7bPYKlanD7jdO3aNYwdOxYNGzaEn58fOnbsiN9++834vCAImD9/PsLCwuDn54eoqChcuHBBdI3c3FyMGTMGcrkcQUFBmDx5MvLz80V9Tp8+jd69e8PX1xfNmzfH0qVLa+T+iIiobvD0kEHVuiGGdmkKVeuGtgVNCQmmQVN2NoMmF+LUwOnWrVt49NFH4eXlhR07diAtLQ3//ve/0aBBA2OfpUuX4uOPP8bq1atx5MgRBAQEIDo6GgUFZVs7x4wZgzNnzmDnzp3Ytm0b9u/fjylTphif12q16N+/P1q2bInjx4/jgw8+wFtvvYXPPvusRu+XiIjIrKIifcA0cWJZ20sv6csMhIQ4b1xkSnCi+Ph4oVevXhaf1+l0glKpFD744ANjW15enuDj4yN88803giAIQlpamgBAOHbsmLHPjh07BJlMJly7dk0QBEFYuXKl0KBBA6GwsFD03g888IDZ9y0oKBA0Go3x58qVKwIAQaPRVOt+iYiITOzZIwj6EKnsJy3N2aOqFTQajd2/v5064/TTTz+he/fueOqppxASEoKuXbvi888/Nz6fkZEBtVqNqKgoY5tCoUCPHj2QnJwMAEhOTkZQUBC6d+9u7BMVFQUPDw8cOXLE2KdPnz7w9vY29omOjsb58+dx69Ytk3EtWrQICoXC+NO8eXO73zsREdVxggA89hjQt29ZW58+gE4HtG/vtGFR5ZwaOP35559YtWoV2rZti59//hnTpk3Dyy+/jC+//BIAoFarAQChoaGi14WGhhqfU6vVCKkwjVmvXj0EBweL+pi7Rvn3KG/u3LnQaDTGnytXrtjhbomIiP529qy+nMC+fWVtu3frH8tsLF1ANcKpu+p0Oh26d++O999/HwDQtWtXpKamYvXq1Rg/frzTxuXj4wMfHx+nvT8REdVi06cDK1aUPVYogJwcoNyqCLkup844hYWFISIiQtTWvn17ZGZmAgCUSiUAIDs7W9QnOzvb+JxSqUROTo7o+ZKSEuTm5or6mLtG+fcgIiJyqBs39LNJ5YOmL74A8vIYNLkRpwZOjz76KM6fPy9q++OPP9CyZUsAQHh4OJRKJXbv3m18XqvV4siRI1D9XXpepVIhLy8Px48fN/bZs2cPdDodevToYeyzf/9+FBcXG/vs3LkTDzzwgGgHHxERkUN88onp7rjcXPEuOnIPdkszt8HRo0eFevXqCe+9955w4cIFYcOGDYK/v7+wfv16Y5/FixcLQUFBwpYtW4TTp08LQ4cOFcLDw4V79+4Z+wwYMEDo2rWrcOTIEeHAgQNC27ZthdGjRxufz8vLE0JDQ4XnnntOSE1NFTZt2iT4+/sLn376qaRxOiIrn4iI6oC7d013zMXHO3tUdYYjvr+dGjgJgiBs3bpV6NChg+Dj4yO0a9dO+Oyzz0TP63Q6Yd68eUJoaKjg4+Mj9OvXTzh//ryoz82bN4XRo0cL9evXF+RyuTBx4kTh9u3boj6nTp0SevXqJfj4+AhNmzYVFi9eLHmMDJyIqLYrKdUJhy7+Jfx48qpw6OJfQkmpztlDcn/btpkGTenpzh5VneKI72+ZIAiCc+e8XJ9Wq4VCoYBGo4FcLnf2cIiI7CopNQsLt6YhS1NWWDhM4YsFQyJsP2etLtPpgMhI4NSpsrYhQ8QH9VKNcMT3t9OPXCEiIudJSs3CtPUnREETAKg1BZi2/gSSUrOcNDI3lZICeHqKg6aDBxk01SIMnIiI6qhSnYCFW9NgbtnB0LZwaxpKdVyYkGTcOKBr17LHLVsCxcXAI484b0xkdwyciIjqqKMZuSYzTeUJALI0BTiakVtzg3JH167pywx8/XVZ26ZNwKVLQD2nlkskB2DgRERUR+Xcthw02dKvTlq0CGjWTNym1QLPPOOc8ZDDMRQmIqqjQgJ97dqvTsnPBwIDxW3vvQe8/rpzxkM1hjNORER11MPhwQhT+MLSyWgy6HfXPRweXJPDcn2bN5sGTVevMmiqIxg4ERHVUZ4eMiwYoj/2qmLwZHi8YEgEPD146CwAoLQUaNUKePrpsraxY/UVmpo2ddqwqGYxcCIiqsMGdAjDqrGRUCrEy3FKhS9WjY1kHSeDw4f1id6XL5e1nTghTginOoE5TkRE5ZTqBBzNyEXO7QKEBOqXqWr7jMuADmF4IkJZ5+5bsqFDxXWYOnbU12vy4NxDXcTAiYjob3W5granhwyq1g2dPQzXkpEB3HefuG3rVmDwYOeMh1wCw2UiIrCCNlXw+uumQdPduwyaiIETEZE7VtAu1QlITr+JLSnXkJx+06XG5tZu3dIXs1y0qKxt+XJ9Arifn/PGRS6DS3VEVOdZU0HbFZaz6vKSokMlJAATJ4rbsrOBkBCnDIdcE2eciKjOc6cK2rVtSdElZs6KioDgYHHQ9NJL+lkmBk1UAWeciKjOc5cK2lUtKcqgX1J8IkLpFjviXGLm7JdfgL59xW1paUD79jXz/uR2OONERHWeu1TQrk2H8jp95kwQgMceEwdNffoAOh2DJqoUAyciqvPcpYK2Oy0pVsbpyfhnz+prMO3bV9a2e7f+scz1Z+rIuRg4ERHBdSpoV5bz4y5LilVx6szZ9OlARETZY4UCKCw0Xa4jsoA5TkREf3N2Be2qcn4MS4pqTYHZ2RoZ9IGes5cUq+KUmbMbN0wTvdeuBSZNst97UJ3AGScionIMFbSHdmkKVeuGNRo0VZXz4y5LilWp8ZmzFStMg6bcXAZNZBMGTkRETmZNzo+rLClWR40l49+7p89Zmj69rC0+Xp8Y3qBB9a5NdRaX6oiInMzaApzOXlKsLsPM2bT1JyADRAGj3WbOEhNNj0dJTzc9RoXISpxxIiJyMltyfpy1pGgvDps50+mArl3FQdOQIfpZJgZNZAeccSIicrKayPkp1QkuN0Nl95mzlBR90FTewYPAI49Ue6xEBgyciIiczNG75VyiQrcFhpmzahs3Dvj667LHLVsCFy8C9Sr/mnPFgJJcGwMnIiInc2TOj2G3XsWAzLBbz10Syi26dg1o1kzctmkT8MwzVb7UlQNKcl3McSIicgGOyPlxeoVuR1u0yDRo0molB03ueliySxyMXIdxxomIyEXYO+fH2t16biM/HwgMFLe99x7w+uuSXu7OhyVzlsz5GDgREbkQu+X8wL4Vul0mF2jzZuDpp8VtV66YzjxVwl0Dylq/7OomGDgREdVS9tqt5xKzHKWlQOvWwOXLZW1jx4oTwiVyx8OS3XmWrLZhjhMRUS1ljwrdLpELdPiwfndc+aDpxAmbgibAPQ9LdurByCTCwImIqJaq7tl2LpFcPnQooFKVPe7YUT/7VLFekxVq7MgXO3LHWbLaioETEVEtVp3dek6d5cjI0J8z99NPZW1btwKnTwMe1fvqcsfDkt1xlqy2Yo4TEVEtZ+tuPafNcrzxBvD+++K2u3cBPz+7vYUhoKyYu6V00R1qji6SStIxcCIiqgNs2a1X47Mct24BwRW++JcvB15+2T7Xr8CdDkuukYORSRIu1RERkVk1mguUkGAaNGVnOyxoMnCnw5IddjAyWYUzTkREZFaNzHIUFQFKpX62yeCll4D//Mf2a9Zi7jRLVls5dcbprbfegkwmE/20a9fO+HxBQQFiY2PRsGFD1K9fHyNGjEB2drboGpmZmYiJiYG/vz9CQkLw2muvoaSkRNRn7969iIyMhI+PD9q0aYOEhISauD0iIrfn0FmOX34BfHzEQVNaGoOmKrjTLFlt5PQZpwcffBC7du0yPq5X7iTrmTNnIjExEZs3b4ZCoUBcXByGDx+OgwcPAgBKS0sRExMDpVKJQ4cOISsrC+PGjYOXlxfe/zuxMCMjAzExMZg6dSo2bNiA3bt34/nnn0dYWBiio6Nr9maJiNyQ3Wc5BAF4/HFg376ytt699Y9lDALItckEQXDa6YBvvfUWfvzxR6SkpJg8p9Fo0LhxY2zcuBEjR44EAJw7dw7t27dHcnIyevbsiR07dmDw4MG4fv06QkNDAQCrV69GfHw8bty4AW9vb8THxyMxMRGpqanGa48aNQp5eXlISkoyO67CwkIUFhYaH2u1WjRv3hwajQZyudyOvwEiojrm3DmgfXtx2+7dQN++zhkP1WparRYKhcKu399OTw6/cOECmjRpgvvuuw9jxoxBZmYmAOD48eMoLi5GVFSUsW+7du3QokULJCcnAwCSk5PRsWNHY9AEANHR0dBqtThz5oyxT/lrGPoYrmHOokWLoFAojD/Nmze32/0SEdVZ06eLgyaFAigstGvQVKoTkJx+E1tSriE5/aZji3NSneTUpboePXogISEBDzzwALKysrBw4UL07t0bqampUKvV8Pb2RlBQkOg1oaGhUKvVAAC1Wi0KmgzPG56rrI9Wq8W9e/fgZ6YuyNy5czFr1izjY8OMExER2eDGDSAkRNy2di0waZJd38YlztSjWs+pgdPAgQON/92pUyf06NEDLVu2xLfffms2oKkpPj4+8PHxcdr7ExHVGitW6GeaysvNBRo0sOvbGM7Uqzi/ZDhTj9v1yV6cvlRXXlBQEO6//35cvHgRSqUSRUVFyMvLE/XJzs6GUqkEACiVSpNddobHVfWRy+VODc6IiGq1e/f0R6OUD5ri4/WJ4XYOmlziTD2qM1wqcMrPz0d6ejrCwsLQrVs3eHl5Yffu3cbnz58/j8zMTKj+PvBRpVLh999/R05OjrHPzp07IZfLERERYexT/hqGPqryh0YSEZH9JCYC/v76IMkgPR1YvNghb+fUM/WoznFq4DR79mzs27cPly5dwqFDh/DPf/4Tnp6eGD16NBQKBSZPnoxZs2bhl19+wfHjxzFx4kSoVCr07NkTANC/f39ERETgueeew6lTp/Dzzz/jzTffRGxsrHGpberUqfjzzz8xZ84cnDt3DitXrsS3336LmTNnOvPWiYiqxSWToHU6oGtXYPDgsrYhQ/QB1H33OextnXamHtVJTs1xunr1KkaPHo2bN2+icePG6NWrFw4fPozGjRsDAJYtWwYPDw+MGDEChYWFiI6OxsqVK42v9/T0xLZt2zBt2jSoVCoEBARg/PjxePvtt419wsPDkZiYiJkzZ2L58uVo1qwZ1qxZwxpOROS2XDIJOiVFHzSVd/Ag8MgjDn/rGj9Tj+o0p9ZxcheOqANBRGQLS0nQhrKRTkmCHjcO+PrrssctWuiX5urZ/m/zUp0gueBmqU5AryV7oNYUmM1zkkFf6fxAfF9W2a5jHPH97fTK4UREJE1VSdAy6JOgn4hQ1kyAcO0a0KyZuG3TJuCZZ6p1WWtn1GrkTD2iv7lUcjgREVnmUknQixebBk1arV2CpmnrT5jcp6GsQFJqltnXOfRMPaJyOONEROQmXCIJOj8fCAwUt733HvD669W+dHVn1Ox+ph6RGQyciIjchNOToDdvBp5+Wtx25YrpzJONrJlRU7VuaLaPp4fM4nNE9sClOiIiN/FweDDCFL6wNH8igz4X6OHwYPu+cWkpEB4uDprGjtWXGbBT0AS4yIwaURUYOBERuQlDEjQAk+DJYUnQhw/rd8ddulTWduKEeBednTh9Ro1IAgZORERupEaToIcOBcqfstCxo372qWK9Jjtx2owakRWY40RE5GYcngSdkWFa6XvrVnFFcAdgWQFyB5xxIiJyQ4Yk6KFdmkLVuqH9gok33jANmu7edXjQZMCyAuTqOONERETArVtAcIUlsOXLgZdfrvGhsKwAuTIGTkREdV1CAjBxorgtOxsICXHKcACWFSDXxaU6IqK6qrhYP8tUPmh66SV9mQEnBk1ErqxaM04FBQXw9eW2UCIit/PLL0DfvuK2tDSgfXvnjIfITVg946TT6fDOO++gadOmqF+/Pv78808AwLx587B27Vq7D5CIiOxIEIDHHhMHTb17AzodgyYiCawOnN59910kJCRg6dKl8Pb2NrZ36NABa9assevgiIjIjs6dAzw8gH37ytp27wb27wdkTLwmksLqwOmrr77CZ599hjFjxsDT09PY3rlzZ5w7d86ugyMiIjuZPl08o6RQAIWFpst1RFQpq3Ocrl27hjZt2pi063Q6FBcX22VQRERkJzdumCZ6r10LTJrknPEQuTmrZ5wiIiLw66+/mrR/99136OqgMvxERGSDFStMg6bcXAZNRNVg9YzT/PnzMX78eFy7dg06nQ7ff/89zp8/j6+++grbtm1zxBiJiMga9+4BAQH6RHCD+Hhg8WLnjYmolrB6xmno0KHYunUrdu3ahYCAAMyfPx9nz57F1q1b8cQTTzhijEREJFViIuDvLw6a0tMZNBHZiUwQyv/pInO0Wi0UCgU0Gg3kcrmzh0NkUalO4DEVdZVOB3TrBqSklLUNGQL89JPThkTkbI74/rZ6qe7YsWPQ6XTo0aOHqP3IkSPw9PRE9+7d7TIwIrJOUmoWFm5NQ5amwNgWpvDFgiERPBi1tktJASrmmB48CDzyiFOGQ1SbWb1UFxsbiytXrpi0X7t2DbGxsXYZFBFZJyk1C9PWnxAFTQCg1hRg2voTSErNctLIyOHGjRMHTS1a6I9SYdBE5BBWB05paWmIjIw0ae/atSvS0tLsMigikq5UJ2Dh1jSYW3M3tC3cmoZSHVflXUmpTkBy+k1sSbmG5PSb1n8+167pi1Z+/XVZ26ZNwOXLQD2e307kKFb/6fLx8UF2djbuu+8+UXtWVhbq8Q8rUY07mpFrMtNUngAgS1OAoxm5PG3eRVR7WXXxYmDuXHGbVgsEBtp5pERUkdUzTv3798fcuXOh0WiMbXl5eXj99de5q47ICXJuWw6abOlHjlWtZdX8fP0sU/mg6b339DvoGDQR1Qirp4j+9a9/oU+fPmjZsqWx4GVKSgpCQ0PxdfkpYyKqESGBvnbtR3qO2KFY1bKqDPpl1ScilKbvtXkz8PTT4rYrV4Bmzao1JiKyjtWBU9OmTXH69Gls2LABp06dgp+fHyZOnIjRo0fDy8vLEWMkoko8HB6MMIUv1JoCs1/IMgBKhf6Ln6Rx1A5Fm5ZVS0uBNm2AS5fKOo4dK85tIqIaY1NSUkBAAKZMmWLvsRCRDTw9ZFgwJALT1p+ADBAFT4Y5iwVDIljPSSLDUlrFINSwlLZqbKTNwZPVy6qHDwMqlfjJEydMSw8QUY2RFDj99NNPGDhwILy8vPBTFcXUnnzySbsMjIikG9AhDKvGRprMkihZx8kq1VpKk8CqZdVHHgGSk8saO3bU12vysDo1lYjsSFLgNGzYMKjVaoSEhGDYsGEW+8lkMpSWltprbERkhQEdwvBEhJKVw6vB0TsUpSyr9rlzBao2g8VPbN0KDB5s5hVEVNMkBU46nc7sfxORa/H0kLHkQDU4eodiVcuq//v6VURePy9+0d27gJ+fTe9HRPZn1ZxvcXEx+vXrhwsXLjhqPETkRqpdxNHF1MQORcOyqlJRdo3G+beQsWSwOGh69ll9mQEGTUQuxarkcC8vL5w+fdpRYyEiN1Ibz8arqR2K5ZdVQ+bHo/XGteIOf/4JhIdX6z2IyDGszjIcO3Ys1q5dW3VHIqq1auvZeIalNKBsR6KBvXcoehYVQtWmkThoatlSP8vEoInIZVldjqCkpARffPEFdu3ahW7duiEgIED0/Icffmi3wRGR63H0zjNnq5EdiuvWAZMmidv27QP69Kn+tYnIoawOnFJTU42H/P7xxx+i52Qy9/tLkoisUxfOxnPYDkVBMF9OQKfTH6VCRC7P6qW6X375xeLPnj17bB7I4sWLIZPJMGPGDGNbQUEBYmNj0bBhQ9SvXx8jRoxAdna26HWZmZmIiYmBv78/QkJC8Nprr6GkpETUZ+/evYiMjISPjw/atGmDhIQEm8dJVNfxbDwbHThgGjR9/rk+mGLQROQ2bKocbnDlyhUAQPPmzas1iGPHjuHTTz9Fp06dRO0zZ85EYmIiNm/eDIVCgbi4OAwfPhwHDx4EAJSWliImJgZKpRKHDh1CVlYWxo0bBy8vL7z//vsAgIyMDMTExGDq1KnYsGEDdu/ejeeffx5hYWGIjo6u1riJ3IU9z12rC2fj2T3xvU0bID1d3MYyA0RuSSYIglX7h0tKSrBw4UJ8/PHHyM/PBwDUr18f06dPx4IFC6w+ry4/Px+RkZFYuXIl3n33XXTp0gUfffQRNBoNGjdujI0bN2LkyJEAgHPnzqF9+/ZITk5Gz549sWPHDgwePBjXr19HaGgoAGD16tWIj4/HjRs34O3tjfj4eCQmJiI1NdX4nqNGjUJeXh6SkpLMjqmwsBCFhYXGx1qtFs2bN4dGo4FcLrfq/oiczd5BQKlOQK8le6rceXYgvq9b5jhZOnLFcCdWHbly+TLQqpW4LS4O+OSTao7Seo44tJjI1Wm1WigUCrt+f1u9VDd9+nR89tlnWLp0KU6ePImTJ09i6dKlWLt2LV5++WWrBxAbG4uYmBhERUWJ2o8fP47i4mJRe7t27dCiRQsk/30MQXJyMjp27GgMmgAgOjoaWq0WZ86cMfapeO3o6GjjNcxZtGgRFAqF8ae6M2pEzuKI3W81ufOsplWV+A7oE98l1asaP940aLp2zSlBU1JqFnot2YPRnx/GK5tSMPrzw+i1ZI/b7n4kciarA6eNGzciISEBL774Ijp16oROnTrhxRdfxNq1a7Fx40arrrVp0yacOHECixYtMnlOrVbD29sbQUFBovbQ0FCo1Wpjn/JBk+F5w3OV9dFqtbh3757Zcc2dOxcajcb4Y1iSJHIndg0CKjBXxBHQzzRV5xBcZ7Mm8d2i/Hx9ztJXX5W1de+uz2Vq0sR+g5WotpaOIHIWq3OcfHx80Kriv6IAhIeHw9vbW/J1rly5gldeeQU7d+6Er69r5UL4+PjAx8fH2cMgqhZH736rjWfjVTvx/aOPgJkzxW3HjukDJyeo7aUjiJzB6hmnuLg4vPPOO6IcoMLCQrz33nuIi4uTfJ3jx48jJycHkZGRqFevHurVq4d9+/bh448/Rr169RAaGoqioiLk5eWJXpednQ2lUgkAUCqVJrvsDI+r6iOXy+HHxEyqxWpi95vhbLyhXZpC1bqh23/52pz4bignUDFoEgSnBU2AnWbQiEjE6hmnkydPYvfu3WjWrBk6d+4MADh16hSKiorQr18/DB8+3Nj3+++/t3idfv364ffffxe1TZw4Ee3atUN8fDyaN28OLy8v7N69GyNGjAAAnD9/HpmZmVCpVAAAlUqF9957Dzk5OQgJCQEA7Ny5E3K5HBEREcY+27dvF73Pzp07jdcgqq3qwu43e7PpyJWffwYGDBB33LQJeOYZRw5VEpaOILI/qwOnoKAgYyBjYEvydGBgIDp06CBqCwgIQMOGDY3tkydPxqxZsxAcHAy5XI7p06dDpVKhZ8+eAID+/fsjIiICzz33HJYuXQq1Wo0333wTsbGxxqW2qVOnYsWKFZgzZw4mTZqEPXv24Ntvv0ViYqLVYyZyJzV17pq7qWx3mSHxfdr6E5ABot+b2cR3uRy4fVv8BkVFgJW7ix2FwTOR/VkdOK1bt84R4zBr2bJl8PDwwIgRI1BYWIjo6GisXLnS+Lynpye2bduGadOmQaVSISAgAOPHj8fbb79t7BMeHo7ExETMnDkTy5cvR7NmzbBmzRrWcKJaz+ogoA6QUppB0pEr584B7duLrq174w0cmTgTOWdyzOZ7OaMcAINnIvuzuo5TXeSIOhBENcXuxRzdlLX1mSwGOkOGANu2ia6x+9dUvPmr2uLv2JmfgeG+AfPBszvvgiSqiiO+vxk4ScDAidxdXS9+aCjaaSlRWlLRztxcoGGF3YfR0Uj617pKA7IpfcLx2f4M+xTUtBGDZ6qrGDg5CQMnIveWnH4Toz8/XGW/b17oab40w8KFwFtvidvOnEFpu/aVBmQA4CEDLJXKqskq63U9eKa6yRHf39U6q46IyB3YvLuspMQ00dvPT3/OHICj6TcrDZoAy0ETUP1aWtYwlI4gouqxuo7TV199JarhZFBUVISvylfKJSJyETbtLvvuO9OgKTHRGDQB9tvGz3IARO7D6sBp4sSJ0Gg0Ju23b9/GxIkT7TIoIiJ7Muwus7QwJYM+58e4u0wmA556StyppAQYNEjUZK9t/CwHQOQ+rA6cBEGATGb618/Vq1ehUCjsMigiInuSfDDxqRR90FTev/6lrwDu6Wly3aoCMkCf4yQ5YCMilyc5x6lr166QyWSQyWTo168f6tUre2lpaSkyMjIwoGL1XCIiF1FlfaYXhgOHKySQa7VAYKDFa0qplfVCb/2uOtbSIqodJAdOw4YNAwCkpKQgOjoa9evXNz7n7e2NVq1amVQUJyJyJWYPJvYrgmfTJuKOzz4LbNgg+ZpVFczs2qJB5QU1ichtWF2O4Msvv8QzzzwDX9+6sybPcgRUW9X5LeozZgDLl4vb/vwTCA+3+lJV/S7r/O+ayAlcqo5TUVERcnJyoNPpRO0tWrSwy8BcCQMnqo3qdFHEggJ9WYHyWrYELl1yynCIyDEc8f1tdXL4hQsX0Lt3b/j5+aFly5YIDw9HeHg4WrVqhXAb/pVGRDXPcAxHxRpEak0Bpq0/gaTULIe8b6lOQHL6TWxJuYbk9JsorazIkaOsW2caNO3bx6CJiCSxugDmhAkTUK9ePWzbtg1hYWFmd9gRkesq1QlYuDXN7KGvAvRJywu3puGJCKVdl5KcPsMlCICHmX8r6nSmO+nApTUiMs/qwCklJQXHjx9Hu3btHDEeInKwoxm5lVa7dkQ1a0sH7BpmuCQfsGurAweA3r3FbZ9/Djz/vMXx1tllTCKqlNWBU0REBP766y9HjIWIaoDNx4/YyNoZLrsHLW3aAOnp4ra7d02X6/5mbZBHRHWL1TlOS5YswZw5c7B3717cvHkTWq1W9ENErs2m40eqwZoZLrvmXl2+rF+CKx80xcXpl+wsBE1VBXmAPshzZG6WS+SBEZFFVs84RUVFAQD69esnajdUFC8tLbXPyIjIIQzVrtWaArMBggz6GkP2qmYtdeZKrS3A0qRz9sm9Gj8eqHh25rVrQJMm5vv/zRnLmOVxiZDI9VkdOP3yyy+OGAcRSWCP3B8p1a7tWc1a6sxVbn5h9YOW/HzTSt/duwPHjkkaQ00vY5bHJUIi92B14PSPf/zDEeMgoirYczZCSrVre5E6wxUc4C3pehaDlo8+AmbOFLcdO6YPnCSq6WVMA2ftdCQi61kdOAHAr7/+ik8//RR//vknNm/ejKZNm+Lrr79GeHg4evXqZe8xEtV5lc1GTF1/ApMebYUnIpRWzUCZPX7EAVvupc5wKfykBU4mQYtOZ/YAXthQ27emlzENnL1ESETSWZ0c/r///Q/R0dHw8/PDiRMnUFhYCADQaDR4//337T5AorpOSsLyFwcvYfTnh9FryR6rEqg9PWRQtW6IoV2aQtW6ocNmMwwzXEqFOOhRKnyNS1CGoMXSCGTQz7CJgpaffzYNmjZtsiloAsqCPMP7VXx/wDGH8jpziZCIrGP1jNO7776L1atXY9y4cdi0aZOx/dFHH8W7775r18ERUdWzEeW5cj5MVTNcVudeyeXA7dviNykqAry8qj3OmlrGNHDWEiERWc/qwOn8+fPo06ePSbtCoUBeXp49xkRE5Vgzy+Dq+TCGGS5LJAUt584B7duLX/jmm8A779htnOWDPLW2ALn5hQgO8IbCzxtFJTocv3zLrsubzloiJCLrWR04KZVKXLx4Ea1atRK1HzhwAPfdd5+9xkVEf7N2lsHd82EqnZkaMgTYtk38gr/+Ahra/z49PWTQ3CvC0qRzoiDOQwaUL61kj3IBNb3TkYhsZ3WO0wsvvIBXXnkFR44cgUwmw/Xr17FhwwbMnj0b06ZNc8QYieq0qnJ/LHHnfBiT3Ku8W/piluWDpuhofS6TA4ImwPJByBXrUdrrYGQpeWBE5HxWzzj93//9H3Q6Hfr164e7d++iT58+8PHxwezZszF9+nRHjJGoTqtsNqIytSYfZuFC4K23xG1nzgAREQ57y8oS8iuy5/JoTe10JCLbyQTBtu0nRUVFuHjxIvLz8xEREYH69evj3r178LNwlIE702q1UCgU0Gg0kMvlzh4O1VHm6jiZY8iHORDf12W/cCUV8iwpMU309vPTnzPnYMnpNzH688NWv+6bF3q65fIoUW3liO9vm+o4AYC3tzci/v4XX2FhIT788EMsXboUarXaLgMjIrHysxG70tRYe/CSSR93yIcxFwAG+Xlh4qPhiOvbRj/u774DnnpK/MLERGDQoBoZo63LnO68PEpE0kgOnAoLC/HWW29h586d8Pb2xpw5czBs2DCsW7cOb7zxBjw9PTGzYtVeIrIrQ+6PqnVDPBQeXKNb5oHqH/liqZBn3r1iLNv1B9YdykDKgmjTF5aUmC9y6SC2LnPWmuVRIrJIcuA0f/58fPrpp4iKisKhQ4fw1FNPYeLEiTh8+DA+/PBDPPXUU/Cswb/YiOq6ms6Hqe6RL1XlDT2YnY7EhFfEjf/6F/Dqq9UYtW2qKg9QEcsFENUdkgOnzZs346uvvsKTTz6J1NRUdOrUCSUlJTh16hRkMtdcEiCq7aqqi2Qv9jiAtrJCnt9//Soir58XtZXmaeCpcE5OoTUJ+e6wPEpE9iO5HMHVq1fRrVs3AECHDh3g4+ODmTNnMmgicmOlOgHJ6TexJeUaktNvorTiXntIO/Jl4dY0s68tz1z+T+P8W7i0ZLAoaPox4h9oFb8NR/8qtuZW7M5SeYCKsRHLBRDVLZJnnEpLS+HtXXYIZ7169VC/fn2HDIqIHE9KknapTkDCwQy7HEBbMf9n/q7PMOn4T6K2Xi+uwdUgJQBArXV+orW55dBuLRvYvXI4EbkPyYGTIAiYMGECfHx8AAAFBQWYOnUqAgICRP2+//57+46QiOxOSpL2M92b4adTWZLPyatqR5khbyj3phbn/z1c9NxVeWP0mrZO1JabXyjpfR3N3HIoSw4Q1V2SA6fx48eLHo8dO9bugyEix5NS3DHvbjE+3Z9h1XWr2lHm6SHDZyWn0fHfs0TtTz+7GEebdzDpHxzgbdJW3V197qAu3CORO5McOK1bt67qTkTk8ipL0raVhwzo1rKB5Q6CAHh4oGOF5lZztuqPUjFDqRAX063urj53UBfukcjdWX1WHRG5N0cUadQJwPHLt8w/eeAA4CH+q+b9YTPRKn6bxaAprMLWfkvnxtnrnDhXUBfukag2cGrgtGrVKnTq1AlyuRxyuRwqlQo7duwwPl9QUIDY2Fg0bNgQ9evXx4gRI5CdnS26RmZmJmJiYuDv74+QkBC89tprKCkpEfXZu3cvIiMj4ePjgzZt2iAhIaEmbo/IJTmqSKPZgKxNG6B3b3Hb3buIfOc1i4cWyyDe2m+vXX2urC7cI1Ft4dTAqVmzZli8eDGOHz+O3377DX379sXQoUNx5swZAMDMmTOxdetWbN68Gfv27cP169cxfHhZUmlpaSliYmJQVFSEQ4cO4csvv0RCQgLmz59v7JORkYGYmBg8/vjjSElJwYwZM/D888/j559/rvH7JXIFhiRtexMFZJcv62eT0tPL2uLi9Et2fn7Grf4VxxFmZmt/VUuL5Xf1uau6cI9EtYXNh/w6SnBwMD744AOMHDkSjRs3xsaNGzFy5EgAwLlz59C+fXskJyejZ8+e2LFjBwYPHozr168jNDQUALB69WrEx8fjxo0b8Pb2Rnx8PBITE5Gammp8j1GjRiEvLw9JSUmSxsRDfqmm1FRi8PbTWXhp4wm7XMvkUOHx44GvvhJ3unYNaNLE5LVS7ndLyjW8simlynEsH9UFQ7s0rcadOE9duEciZ3CpQ37trbS0FJs3b8adO3egUqlw/PhxFBcXIyoqytinXbt2aNGihTFwSk5ORseOHY1BEwBER0dj2rRpOHPmDLp27Yrk5GTRNQx9ZsyYYXEshYWFKCws2wqt1Wrtd6NEFtRUYnBSahbeSUyzy7VEVbPv3gECA8UduncHjh2z+PqKW/0NBTnLB1JSlxbd+Zy4unCPRLWF0wOn33//HSqVCgUFBahfvz5++OEHREREICUlBd7e3ggKChL1Dw0NhVqtBgCo1WpR0GR43vBcZX20Wi3u3bsHPz/xzh0AWLRoERYuXGivWySqkj2ONKnO+1gS5O+FvLtlFbw9ZPpEcAPjocK7vwUq/mPk2DF94GTF2MwFjvNi2ld6bpyt58S50rb/qs7G41l4RK7D6YHTAw88gJSUFGg0Gnz33XcYP3489u3b59QxzZ07F7NmldWa0Wq1aN68uRNHRLVZVYnBMugTg5+IUFbri11K/abyZAB863lgw/M98Fd+ofmq2S2D4Oll5q8RiRkAhuBlZ5oaXxy8ZPK8WlOA2I0nMaVPOD7bn2Fybpzh8cAO+ureUoMfV9v2X9nZeDwLj8i1OL0cgbe3N9q0aYNu3bph0aJF6Ny5M5YvXw6lUomioiLk5eWJ+mdnZ0Op1B/JoFQqTXbZGR5X1Ucul5udbQIAHx8f404/ww+Ro9gjMVjKmXPW1m8SAKi1hfCQyTC0S1OoWjeEdz0PqFo31D+++Jtp0LRpk+SgKSk1C72W7MHozw+bDZoMYxAA/Pe3q3ilX1uEysVLVYZqBl8cvITRnx9GryV7qty276rb/i2djcez8Ihci9NnnCrS6XQoLCxEt27d4OXlhd27d2PEiBEAgPPnzyMzMxMqlQoAoFKp8N577yEnJwchISEAgJ07d0IulyMiIsLYZ/v27aL32Llzp/EaRM4mta6SpX5SZ09srd9k9nVyOXD7tritqAjw8jJ7jYrLYrfuFCF2o/Qlw7y7xfho9wUo5T6YGdUW2nvFWHvwEirGh4bgZ0bU/WjVyN9kCa6mZvdsZe5sPFYOJ3ItTg2c5s6di4EDB6JFixa4ffs2Nm7ciL179+Lnn3+GQqHA5MmTMWvWLAQHB0Mul2P69OlQqVTo2bMnAKB///6IiIjAc889h6VLl0KtVuPNN99EbGys8Uy9qVOnYsWKFZgzZw4mTZqEPXv24Ntvv0ViYqIzb53IqDqJwdbkRtmaWCx63blzQPv24g5vvgm8847F15sL7CouR0mVrS3Esl0XEORvPkAzXHPZrj+MbeWDSGtm9x4OD3ZKAGPubDwich1ODZxycnIwbtw4ZGVlQaFQoFOnTvj555/xxBNPAACWLVsGDw8PjBgxAoWFhYiOjsbKlSuNr/f09MS2bdswbdo0qFQqBAQEYPz48Xj77beNfcLDw5GYmIiZM2di+fLlaNasGdasWYPo6Ogav18ic2xNDLZ29qSq96nyfYcMAbZtE3f66y+goeUveUuBna01UAyvK5+wXpXyQWRhiU7Sa3alqTHr2xSXyYEiItfhcnWcXBHrOJGjGQIMwHxisLkcl+T0mxj9+eEqr/3NCz2NMxiW3qci0fs28TENjqKjgSrqoJXqBPRassfu5+LZwhAE/uupzhiz5ojN1wDMfxZE5Joc8f3t9ORwIrItMdiW3ChL71NxBcr4vv/7zDRoOnOmyqAJcMxhwrYyLMFB0M8cVXbci6XVOB59QkSACyaHE9VV1iYG25obZe59TMoMNJfD08dbfCFfX+DePcn344jDhKvrrzuFmBcTYbZquiHvqrI5+PI5UMxDIqqbGDgRuRBrEoOrUzTR3PsYH3/3HdDmKfELEhOBQYMkjcvAFatcX/rrDjYdu2L2OaXCFwM7KC2WRijPFYNCIqoZXKojclOGookATJaebC6aKJMBT4mDpuTz2djSpLPF+lCWOOIwYdnfP5Z21VX2ugb+Xli264LF5cN5Me3xRIRS0vVcMSgkoprBwInIjdmtaOLJk2XVJP92bvZ8qN7fhdFfHMMrm1JEBSalFNz09JDhyc72TaI23Nfi4R0t5imZYyikaYkMwDuJZ9GtZYMqc6DCePQJUZ3GXXUScFcdubpqnbumUgGHxbvzdh7+A1N++MMk2DDkAVU8w87cVn177qqb/GgrREUoRfeVlJqF+P/9Ds29qksTDOgQiqTU7Cr7ffNCT2juFVm9w5GIXBN31RGRWYacJcPRKJKCJrVaP8tUPmh69lmUluowf0+mxfpQgGkdpSxNAaauP4Htp8uOK7HHrrowhS9Wj43EvCEPmtzXgA5hiHu8taTr+NbzlNQv53YBjz4hokoxOZyoLpoxA1i+XNz2559AeDiOpt+0OeCJ++YEVqArBnVqYnMC9aAOoYjuECZp5qxRfR9J12wSZN0ORB59QkSWMHAiqksKCoCKh1u3aAFcvmx8WJ0dYzoBeGnjSaz2kNmcQL09NRtP/j1zVhWlwvxB3RU92roxfjh53aodiDz6hIjM4VIdkRlSkp/dzrp1pkHTvn2ioAnQb9mvroVb06pMtK7q9VJ+51J27oUpfNGzdUP770AkojqJM05EFZg7lNatzykTBMDDzL+RdDqTnXRJqVlYtutCtd8yS1OAr5MvSa6LZO71CQczMOHR8EqDGUNJBnPn4QH6oMgQEBlylyp+tkp3/myJqMZxV50E3FVXd1g6lNZtd1QdOAD07i1u++wz4IUXTLq60tlyBlIDVmuC3WrtQCQit+KI728GThIwcKobqgocDHkwB+L7uscXbZs2QHq6uO3uXdPlOujvPeFgBt5JPFtDg5PGmoCVARERVcRyBETVVFnuUlXb58ufU+bSLl/WL8GVD5ri4vRLdmaCpqTULPRaskdy0DTxkZYWD8K1N2sO1rWpJAMRkZWY40R1RlXLOVJ3k7n0OWXjxwNffSVuu3YNaNLEbHdLS5OViYpQ4qFWwXhp40nbx2kFHqxLRK6EM05UJxgChIozSmpNAaatP4Gk1CzJ2+dd8pyy/Hz9LFP5oKlbN/0sk4WgqVQnYOHWNKuCJgCAAAzq1ASTHm1l62ht4tIBKxHVGQycyC1ZUy6gsgCh/FKQPc4pc0oZg+XLgcBAcduxY8Bvv1U6Llsre/91pxAAJB+Iay8uGbASUZ3DpTpyO9aWC5Cau3T88i3j1nbDmWwGUmr9mBtXkJ8XJj4ajri+bSTl3FiV4KzTAZ5mjhKpsN/D0u9rUAfbAh9DAGOooWSpqKS9mCtOSUTkLJxxIrciZcmtImtyl2w9p8zSuPLuFWPZrj/Q7d2dZsdW8Rq9luzB6M8P45VNKRj9+WH0WrLH/Ot+/tkkaIp7cg5U7+8S9bc0rixNAdZaWV+p4oyboYaS4TlrhCl88WKf8CqLV7I4JRG5GpYjkIDlCFyDreUCktNvYvTnh82+prxvXuhpTD62ZubHmvpHqy0EX1bVj1IoAK1W1K/N7B9R4llP1P+JCCUeXbwHaq39coNWPhuJQZ3E4zc3o+Uh0x+/YqCU+2D0wy3QqlGA6PdZ/vd86a87+OZoJtTaQuPr3LrwKBE5nSO+v7lUR27DmnIB5XdfVbWkVN1zyqzJFVq4NQ1PRChFQVhVOVgyw+s88uD5YITo+Y9Vz+DDPs+Z7X8uS2vXoAkAXv/hd1zIyRctPZo7ELdbywY4fvlWlYFnxd9zXN+2rMVERC6NgRO5DVvLBZQ/lsOW3CV7jQswH9hJCQjfWTsXnq8fE7V3eXkj8vxM/wVlCCA/2n1R8rikMiw9rjuUgcXDOxpngswFmraUDuDBukTk6pjjRG6jOuUCbM1dsue4DCoGWpUFXvKCfFxaMhhR6WVBU/Yj/0Cr+G1mg6aakne3GFMt5JQREdVmnHEit2HLklt55paU7LEUZBiX1OW6kEBfUW7PX7cLzfZ75cBGzDy4Udx45gz+9AkFJORs1QRzS49ERLUZAydyG/ZYcnPEUlD5cVW208IQ2N26U2iSTC6TlVUR8NSVIv2DoaLXFtTzhldhATw9ZHhYJ9RIGQApWNGbiOoaLtWRW3Hkkps9xhXk72X2eUMo92TnMMRuPGkyO2UImgaeO2ASNE0YuQDd5m4xPq6sDIAz5n12pamd8K5ERM7BcgQSsByB67GqUGQNj2vFngtYd/AS8u4VG9vDFL6YFxOBdxLTLC7pXVoy2KTtvte2QOehr9e04fkeeLRNI+NzlgpbGt6nJmekLJVZICJyJkd8fzNwkoCBE1nLXGB3NCPXbD2pB7PTkZjwiqjt3ccnYc3Dw0VtcY+3wezoB6p8H08PmbEuFADJwdOIyKY4cOEvZFvIuapMmJn6WUREzsY6TlSjXHVWxxrOugdzuVTmds99//WriLx+XtT24IxvccfH38xVy0Kgivc1uFMT0X0Zlg4rzkhV5n8nrkEp98HMqLZo1SgAl/66gy8OZkBzr6TK1zLXiYjqCgZOZJa158G5Ile7h/JlCxrn38Kx/zwnev7HiH9gxpDXLL5edZ9+mU7qfZXfRbgrTS3piBW1thDLdl3Aymcj8UrU/Yjr2xZxG49jR2p2la+1pp4VEZG7YnI4mbDlPDhX44r3YChbMH/XZyZBU68X11QaNPl76/Octp+27r4MM1/zhjyI1WMjoZT7SBpr3DcnsP30dXh6yDBOFS7pNdbWsyIickfMcZKgLuU42XoenCtx2XsoKAD8/ERNV+WN0WvaOsmXqHgGXHlS7qtUJyDhYAbeSTwr6f1W/33mXa8le6qsn+XK/08QUd3kiO9vzjiRiDXnwbkqV7wH3dovTIKmp59dbAyaGlgoY2BynUr+mSP1vm7dLa70+fIWbk0DgCrLH1TnyBoiInfCHCcSsfU8OFfiUvcgCICHh8m/UDrP34EnHgzD6LaNEBLog1e/TbHbW1q6L3O5UVUxBGKWks2Vbpb3RkRUXQycSKQ658G5Ckfeg1W79A4cAHr3FjX9X3QcNnUZABSW4rsTV7HrXDYmPtIKaq31JQAsMXdfhpwvW9blDYGYo46sISJyJwycSKS658G5Akfdg1W79Nq0AdLTRU0PzPofCr3Eydl5d4uxbNcFq8ZhiaX7KtUJWLg1zeZimOUDMUccWUNE5E6Y40QiUo7zcPV8Fkfcg+Rdepcv6w+eKxc0JUQORqv4bSZBkz1Vdl9V5XxVds0wFw+SiYhqmlMDp0WLFuGhhx5CYGAgQkJCMGzYMJw/Ly4GWFBQgNjYWDRs2BD169fHiBEjkJ0trimTmZmJmJgY+Pv7IyQkBK+99hpKSsRF+/bu3YvIyEj4+PigTZs2SEhIcPTtuS1XPQ/OGlLvoVQnIDn9JrakXENy+k2Umsm+rmzGxtC2cGsadOPGA61aiZ5/+KUv8dYTU+1wR2IVY77KPhtbcrncJUgmIqppTl2q27dvH2JjY/HQQw+hpKQEr7/+Ovr374+0tDQEBAQAAGbOnInExERs3rwZCoUCcXFxGD58OA4ePAgAKC0tRUxMDJRKJQ4dOoSsrCyMGzcOXl5eeP/99wEAGRkZiImJwdSpU7Fhwwbs3r0bzz//PMLCwhAdHe20+3dltSGfpap7kLr0VtWMjV/RPSS/XuGcuW7dcHBTEnLWHLHvTf1txeiuaBDgI+mzsSWXi0nfRETmuVQdpxs3biAkJAT79u1Dnz59oNFo0LhxY2zcuBEjR44EAJw7dw7t27dHcnIyevbsiR07dmDw4MG4fv06QkNDAQCrV69GfHw8bty4AW9vb8THxyMxMRGpqanG9xo1ahTy8vKQlJRU5bjqUh2nusJSsrQh9Cg/e7Ml5Rpe2ZRi9joTf9uCBbs/F7Wd/mEnMlq1R462AO9tP2fXcXvIgBWjIzGok/SAxlDXqrKcr1C5D/79dBf8lV/olkEyEZE5tb6Ok0ajAQAEB+tzKo4fP47i4mJERUUZ+7Rr1w4tWrRAcnIyACA5ORkdO3Y0Bk0AEB0dDa1WizNnzhj7lL+GoY/hGhUVFhZCq9WKfqj2kLr0Zli2MzdjIxN0uLRksEnQpHp/F548XIhXNqXYPWgC9DNN1gRNgLScr7eefBCPtmmEoV2aQtW6IYMmIiILXCZw0ul0mDFjBh599FF06NABAKBWq+Ht7Y2goCBR39DQUKjVamOf8kGT4XnDc5X10Wq1uHfvnslYFi1aBIVCYfxp3ry5Xe6RXIO1BTINu/QMoURE9p/IWPqk6DXxT81Fq/htNiVhSzWwgxKDOjWx6bW1IW+NiMgVuEw5gtjYWKSmpuLAgQPOHgrmzp2LWbNmGR9rtVoGT7WItQUyDTM209afwL8TP8SI1D2ifm1n/4iAQD/AiorctrivcYDVr6lYd2rfa4/j+OVbbpu3RkTkbC4ROMXFxWHbtm3Yv38/mjVrZmxXKpUoKipCXl6eaNYpOzsbSqXS2Ofo0aOi6xl23ZXvU3EnXnZ2NuRyOfwqHIMBAD4+PvDxcdzWcWezqohjLWRLgcwBDXTIWCJOAI97cg6O9+yPuIdaYNmuP+w6RnOC/KQdy2JQWfL70C5N7T08IqI6walLdYIgIC4uDj/88AP27NmD8HDxKezdunWDl5cXdu/ebWw7f/48MjMzoVKpAAAqlQq///47cnJyjH127twJuVyOiIgIY5/y1zD0MVyjLklKzUKvJXsw+vPDeGVTCkZ/fhi9luwpq0NUy5XqBOh0QpVBiKh+0eLFQLmAHgASD5zDmA/nYN9rj6O4VOeo4Yo0qi89mJdcd4qIiKzi1Bmn2NhYbNy4EVu2bEFgYKAxJ0mhUMDPzw8KhQKTJ0/GrFmzEBwcDLlcjunTp0OlUqFnz54AgP79+yMiIgLPPfccli5dCrVajTfffBOxsbHGWaOpU6dixYoVmDNnDiZNmoQ9e/bg22+/RWJiotPu3Rks7SQzfJnW9lwXa85qe7JzGDzv3gECA8VPvPsu8MYbGKATsGLPRUxdfxyae45dojNQKkxnR82pKvldBn3y+xMRyjo100hEZA9ODZxWrVoFAHjsscdE7evWrcOECRMAAMuWLYOHhwdGjBiBwsJCREdHY+XKlca+np6e2LZtG6ZNmwaVSoWAgACMHz8eb7/9trFPeHg4EhMTMXPmTCxfvhzNmjXDmjVr6lQNJ3f9MrXXsqK1Z7Xlr98ExLwjbrxyBaVNmmLFrj/w6f4/cbeo1Opx2MqaCt7WJL/z+BQiIus4NXCSUkLK19cX//nPf/Cf//zHYp+WLVti+/btlV7nsccew8mTJ60eozsrH3T8dbvQ7b5MrTobrhLWnNXmoSvFvs+moLmmXE7cs88CGzYgKTUL//fFTuQ5OAm8Ihmsq+BtbfI7ERFJ5xLJ4WR/1ixLlXfw4l82z+rYM+ncnsuKUs9q63rtHH5YP1vUdvDbn/HoU/2tnrGyF1sCRVuS34mISBoGTrVQdb7kV/xyEf87cdXqL2t7zQ4B9l9W3JWmrrLPZ9+/i/4XDhsfn23cCoMmfgzlRU/sK9FJnrEqr3vLBvjt8i0rX6UX5OeF/4yJRM/7rC9Gaag7VVmlcCUP7yUisonLFMAk+7BmWcoSa3de2WMHV/nDdhMOZlhVoLKqsa09eMni883y1Li0ZLAoaJo8Yh4GTloBQeaBLE0Bvk6+ZFNhS596tv/xyrtXDA+ZzKYZOymVwnl4LxGRbTjjVMtIXZaqjDWzOvaYHbJ1WbGqHB3D2CyZvf8rxCV/K2p7YNb/UOgl3vZ/OfeuVeMyOJh+Ex4yQGdjFFudHCRDpfCKv1ce3ktEVD0MnGoZeyX8Sk0Wr+4OruosK5rL0ZGSEC8vyMfp5aNEbW/1m4KE7k+a9AWAlsH+NoxOz9agCah+DtKADmF4IkJZp4udEhHZGwOnWkbql+2wLk3wY8r1KvsdvPhXpV+61dnBZeuyoqUcHSkzVyN/34V/bf9I1NYtbj1uBgSZ7R/k74X7QwKhlPsiW2s+Z0iKijNPlc1E2TMHydND5jK7JImIagMGTrWM1MTgp7o1lxQ4rfjlovG/zSV7V2cHl63LigJMc3SqmrmqV1qC31aMRVBBvrHt666DMK//S5W+V97dYjy37iiC/L2qlTemE4B5Me3RKNAHIYG+uHWnELEbTxrvx4A5SEREro3J4bWM1MTgnq0bIkzha9KnMuaSvQ2BmqXryGC5eKOty4qTHm0lCt6qmrnqmXkaF/81TBQ0RU1eWWXQVJ7GDrWbGgX6YGiXplC1bohBnZpg1dhIKBXigFKp8K31FdyJiNwZZ5xqIamJwQuGRGDa+hOQAZJmU8wlexsCNXPXqWr2xNYcnicilKLHFmeuBAGbvpmLnldSjU1Hmj2IZ55dDMism82xR/2mivfLHCQiIvfDwKmWkvKlbCnAqoy5ZG9bd3A9HB6MIH8vyZW4LeX+mJu5an3zCnavmSZqe/aZd3GoVRdJ72VPleUsMQeJiMi9MHCqxaR8KVcMsC5k38aKX9KrvHbFYMXRsyeVzV5VnMl5a+dqTDixzfhY6+2Pbi9vQLGnl13GYg3mLBER1S4MnEgUYCWn35QUONnjuI6jGbmSZ5sqm70y5FkVZmXjxCdjRM+9NvBlbO7Uv9pjrcjS8qbCrx4090qMj1k3iYiodmHgRCK2Htdhy5ErUpPD4x5vjZlPPGBxxsbTQ4a1tw8j4pM3Re2dXtkErW99Se8BAL3bNsSvF25W2W9Gv7b4729XzN4rc5aIiGo3Bk51gDWH79qS7G3rgbxSZ60094pRqhPMj7mgAAgIQIROZ2xa1WMkljw2QdK1xaQFOOGNA3Agvq/F3ylzloiIai8GTrWcLTNB1iR7W3PkCgBRsNGleRCCA7yRe6eo0nv4+nAmNhzJxAu9wzF3UETZE9u3AzExor57tx3Ekl9tO1i3ZbA/fpXQLyTQl0ndRER1FAOnWszWmSBAerK31CNXVuy5gE3HxMtb1pzjphOAT/dnQCcAfe9vjPZDHkfQ+TNlHQYPBrZuxWMAVre07ey7J9qFYve5HKuXKYmIqO6QCYJgjxI1tZpWq4VCoYBGo4FcLnf2cCQp1QnotWSPxeDBEAQciO9rcw5OqU7Asp1/iKqLO1pE9p/YnvCyqO3w11vQc6z4nLnyy5NSdwouH9UFPvU8MG39CQDmlylZnJKIyH044vublcNrKWsO37VFUmoWei3ZU6NB078Sl4mCpqvyxmjz2haMTvUUVTMHynYKDu3SFI+2aSzp+iGBvsZlSlb0JiIic7hUV0tV5/DdqlR1Lpy9hd7+C0dWThC1xT05B9va9wFgWs28Imt3CrKiNxERWcLAqRYpvzz11+1CSa+xth5TVefC2du0w5sRv+9LUduDM77FHR9/42Nz1czLs2WnIJO/iYjIHAZOtYS53XOVJV/bmuhc1RKgvfgX3UPasqdEbR/0fg7/eeQZi6+pbPbM1mNhiIiIymPgVAtYWjqrLGgCbDsGxJalPWsNOncAK7csFrX1nJYAtbxRpa8LCfSttGbVgA5h6NsuFF8nX8Ll3LtoGeyP51St4F2PqX5ERCQNAyc3J2XprOLMU3VmWexx1IolHrpS7PtsCpprso1tP0b8AzOGvFbla8MUvrh1p9BkJ2H5mlXmZuXWHMjgjBMREUnGwMnNSVk60wnAvJj2aBToU+1E56oSrW3V9do5/LB+tqgtZsJynAltLen1T3YOQ+zGkxZrVk3pE47P9mfYVNOKiIjIgGsUbqRUJyA5/Sa2pFxDcvpNlOoEyUtnjQJ9MLRLU6haN6zW7jBDojVgekCJ7O+fIH8viYeX6H32/buioOls41YIn/OT5KDp5b5t8NOpLIvVywUAn/9qGjQZngf0u/JKpVbjJCKiOoszTm7C0tEpox5qLun19lxiqyrRGoDFHWzlHzfLU+PAp8+Lrj15xDzsbtND8lgUfvXQI7whPt5TeT2pymKiqnblERERGTBwcgOVHZ2ybNcFBPl7QXO3uEaPCams1lGpTsCMqPux7mAG8u4VG1+jVPhiYAclvjh4CbP3f4W45G9F13xg1v9Q6OVj1TiWjOiEv+5IK71QlZpIfCciIvfGwMnFSTlE10BqjSJ7MVfryNzMWJCfFyY+2gpxfdvi+KkMzF8yWPSat/pNQUJ38ZEpAT6euFNYanxc8d6Uch+89eSDGNAhDMnpN+1yP45MfCciotqBgZOLk3J0St7dYsyMuh+bjmXatUZRZVv7zbE0M6a5V4yPdl1A38Pb8fC8maLnusWtx82AIJNrLRraAY0Vfsb37tayAY5fvmV2LFIS1j1kgCCAh/cSEVG1MHBycVKXj1o18seB+L52OybEUk6VpUCsspkxz9IS/LZiLIIK8o1tX3cdhHn9X7L4/m8lpuHYG0+Ixm8p/0hKZfAXeut31dX0rBwREdUuDJxcnNTlo5BAX7sdE1JZTlX5rfsVj3gxNzPWM/M0Nn3zuqgtavJKXGzUotIx5N4ptipZW0pl8K4tGrByOBERVQsDJxdn7QG11SUlp2rh1jTodALeSTxreRlRELDpm7noeSXV2HSk2YP49fPNuLj3T0ljybldYNVyYVWH8/LwXiIiqi4GTi7OlgNqq0NKTlWWpgAvbTxpsU/rm1ewe800Uduzz7yLQ626YEPrxth47Cpy7xRVOZZLf92ptBK4OVXNuvHwXiIiqg4WwHQDhmUopUK8bKfw98KMqPvxRITSbu9V3S35b+1cLQqatN7+aDv7ByS36oIwhS96tm6Id4d2qPI6Dfy9sGzXBZMgzrBcmJSaVa1xEhER2YKBkwsyVyF8QIcwHIjvi5lRbRHk5wVAv5tu2a4/0GvJHrsFErZuyQ++q8GlJYMx4cQ2Y9trA19Gp5nfosRTP17DzNigTmF4sU+4xWtVnFkrj5W+iYjImbhU52Iq280GAB/tuuDQ89ZsOYtu3PGteHvXp6K2Tq9sgta3PgDzCdhzB0Wgc7MgvLklFbl3yopk6quht8CyXX9YfD9W+iYiImdh4ORCKtvNNnX9CQT5e1WZtP1EhFJyvpOlxOvKcqrKP/YpKULahyPhKeiMbat6jMSSxyZgZGRT9L6/caUJ2IM6NUF0hzCTMWw7fV3S+Fnpm4iIappTl+r279+PIUOGoEmTJpDJZPjxxx9FzwuCgPnz5yMsLAx+fn6IiorChQsXRH1yc3MxZswYyOVyBAUFYfLkycjPzxf1OX36NHr37g1fX180b94cS5cudfStWa2q3WyAfmnOkvKzMAZFJTqs/fVPzN+SirW//omikrIAJyk1C72W7MHozw/jlU0pGP35YTy6eA+W77qAwhIdZkTdj1C5eNlOqfDFymcjEabwxePpx3D+38NFQVOfKZ9jyWMTAADfnbgGLw+PKg8VNiRrlz+A2JoSDERERDXJqTNOd+7cQefOnTFp0iQMHz7c5PmlS5fi448/xpdffonw8HDMmzcP0dHRSEtLg6+v/ktzzJgxyMrKws6dO1FcXIyJEydiypQp2LhxIwBAq9Wif//+iIqKwurVq/H7779j0qRJCAoKwpQpU2r0fitT1W42qQyzMIu2p+HzXzNEh9u+t/0sBnUMQ+P63lh36LLJa9XaAtESmVLug5lRbdGqUUDZzBEEPDqqPxRny8oM7Gr9EJ4fucDkenHfnMAKdMWgTk2suoeaLsFAREQklUwQBJfIsJXJZPjhhx8wbNgwAPrZpiZNmuDVV1/F7NmzAQAajQahoaFISEjAqFGjcPbsWURERODYsWPo3r07ACApKQmDBg3C1atX0aRJE6xatQpvvPEG1Go1vL29AQD/93//hx9//BHnzp2TNDatVguFQgGNRgO5XG7/mwewJeUaXtmUUu3rfPNCT+w9n41P92dU+1qGeSJj7lRKCtC1q6jP8DEf4ESz9pVeZ7UNuVeGZUvAfAkGe+RzERFR7eaI72+X3VWXkZEBtVqNqKgoY5tCoUCPHj2QnJwMAEhOTkZQUJAxaAKAqKgoeHh44MiRI8Y+ffr0MQZNABAdHY3z58/j1q1bZt+7sLAQWq1W9ONo1V12kkGfWN2leRA+/7X6QRMg3sGmGz9BFDRdlTdG69e2VBk0GV5v7Q44SyUYlApfBk1EROQ0LpscrlarAQChoaGi9tDQUONzarUaISEhoufr1auH4OBgUZ/w8HCTaxiea9Cggcl7L1q0CAsXLrTPjUgkZTebv7cn7haVVloIc+ORy7DnLv2Q238heckEUdubo97A+pYqydewdQccK30TEZGrcdkZJ2eaO3cuNBqN8efKlSsOf0/DbjagLBCq6G5Rqf75Ch3Kz8Ls/+OG3cY07fBmHFk5QdR2JCXDqqDJwNYdcOaSx4mIiJzFZWeclEp9Nezs7GyEhZUty2RnZ6NLly7GPjk5OaLXlZSUIDc31/h6pVKJ7OxsUR/DY0Ofinx8fODj42OX+6hMxXIAT0QozR5UW5FhRmnyo60QFaE0zsIkpWZh34W/qj0u/6J7SFv2lKjt0IQZeGTdMqhTrtl0Te6AIyKi2sBlZ5zCw8OhVCqxe/duY5tWq8WRI0egUulnPFQqFfLy8nD8+HFjnz179kCn06FHjx7GPvv370dxcdlW/p07d+KBBx4wu0xXU8yVA+i1ZA8A4EB8X8zo18bizBOgn5Xanqo2Bk2GcgbVNejcAZOgqee0BDwbGoXtp7OsDoAMuVfcAUdERLWBUwOn/Px8pKSkICUlBYA+ITwlJQWZmZmQyWSYMWMG3n33Xfz000/4/fffMW7cODRp0sS48659+/YYMGAAXnjhBRw9ehQHDx5EXFwcRo0ahSZN9Fvgn332WXh7e2Py5Mk4c+YM/vvf/2L58uWYNWuWk+66bMeYpXPYliadxUe7L1Zaubti3abqljPw0JXi19WTsXLLYmPbjxH/QKv4bVDLGwHQlxe4ebsAYQrfSoM6A0ccQkxERORMTl2q++233/D4448bHxuCmfHjxyMhIQFz5szBnTt3MGXKFOTl5aFXr15ISkoy1nACgA0bNiAuLg79+vWDh4cHRowYgY8//tj4vEKhwP/7f/8PsbGx6NatGxo1aoT58+c7rYaTlEKX1uyKM+QOVaeKdtdr5/DD+tmitpjxH+GMso2oTScAcZtS8GKfcHy2P6PSM+UA80etEBERuTOXqePkyuxZByI5/SZGf37YTiPT121StW5o83U//f5dRF8oe93Zxq0waOLHEGSWJyPDFL6YFxOBdxLFuVhKuQ9GP9xCXDCTM01EROQkjqjj5LLJ4bWVPc9XK587ZO3hvM3y1Djw6fOitskj5mF3mx5VvjZLU4AGAd44EN+XpQKIiKhOYeBUw+y5u2xgB32No4qH81Zl9v6vEJf8rajtgVn/Q6GX9J2EObcLjKUCiIiI6gqX3VVXWxlmhiqbl/GQWa7lVN4XBy8Zd+MlpWYZq22HKcwHZ/KCfFxaMlgUNC3sNwWq93dh2XgVgvy9JN8HywsQEVFdxBwnCey9RlrVOWxT/k6+rvh8VVY+G4lBncKM9aHU2gLk5hciM/cO7nz2Bf61/SNR/+5x63EzIMhYPLNUJ+CT3RewfPcFi+9rOGD3QHxfLssREZFLc0SOEwMnCRzxi09KzTIpdBlWbheauec9ZKj0OBUPGbBidFcM6tSkrLG4GAgNBcqdy/d110GY1/8l0fuVt/30dby08aTJ9XnALhERuRMGTk7iiF88YFo5vGJydfnn/7pdiHcSz0q67mpDYLN3L1Cu3AMApOw4iMvKllUmc1cV2BEREbk6Bk5O4qjAyRpbUq7hlU0pkvqGyX1w6P+9C9m+fWWNvXsD+/aZHnRXiaoCOyIiIlfGcgR1mNRk7NY3r2D3kmnixl27gH79rH5P7pojIiISY+DkJgy78So7VuWtnasx4cS2sobAQOCvvwBv7xoYIRERUe3HcgRuwlCnyZzguxpcWjJYFDRdXLQc0GoZNBEREdkRAyc3MqBDGFY+G4nyaUbPndiGE5+MEfXrP+8HhM+ZXsOjIyIiqv24VOdmBnUKwwp0xcyvjiDtw5HwFHTG51b1GImlj03AqqcjmcRNRETkAAyc3NCgqykY9O/horY+Uz5HcatwrGK5ACIiIodh4OROdDqge3fgZFlxytzH++PXD7/AEpYLICIicjgGTu4iJQXo2lXcdvAggh95BEOdMiAiIqK6h8nh7mDCBHHQ1KKF/iiVRx5x2pCIiIjqIs44ubJr14BmzcRtmzYBzzzjnPEQERHVcZxxclWLF5sGTVotgyYiIiInYuDkavLz9efJzZ1b1vbOO4Ag6CuBExERkdNwqc6VbN4MPP20uO3KFdOZJyIiInIKzji5gtJSIDxcHDQ9+6x+lolBExERkcvgjJOzHT4MqFTituPHgchI54yHiIiILGLg5Ex374qDpo4d9fWaPDgRSERE5Ir4De1Mfn5l//3TT8Dp0wyaiIiIXBhnnJxJJtPnMREREZFb4PQGERERkUQMnIiIiIgkYuBEREREJBEDJyIiIiKJGDgRERERScTAiYiIiEgiBk5EREREEjFwIiIiIpKIgRMRERGRRAyciIiIiCRi4EREREQkEQMnIiIiIokYOBERERFJxMCJiIiISKJ6zh6AOxAEAQCg1WqdPBIiIiKSyvC9bfgetwcGThLcvn0bANC8eXMnj4SIiIisdfv2bSgUCrtcSybYMwyrpXQ6Ha5fv47AwEDIZDJnD6fO0Wq1aN68Oa5cuQK5XO7s4dR5/DxcBz8L18HPwrUYPo/MzEzIZDI0adIEHh72yU7ijJMEHh4eaNasmbOHUefJ5XL+heRC+Hm4Dn4WroOfhWtRKBR2/zyYHE5EREQkEQMnIiIiIokYOJHL8/HxwYIFC+Dj4+PsoRD4ebgSfhaug5+Fa3Hk58HkcCIiIiKJOONEREREJBEDJyIiIiKJGDgRERERScTAiYiIiEgiBk7kMt566y3IZDLRT7t27YzPFxQUIDY2Fg0bNkT9+vUxYsQIZGdnO3HEtcf+/fsxZMgQNGnSBDKZDD/++KPoeUEQMH/+fISFhcHPzw9RUVG4cOGCqE9ubi7GjBkDuVyOoKAgTJ48Gfn5+TV4F7VDVZ/FhAkTTP6cDBgwQNSHn4V9LFq0CA899BACAwMREhKCYcOG4fz586I+Uv5eyszMRExMDPz9/RESEoLXXnsNJSUlNXkrtYKUz+Oxxx4z+fMxdepUUZ/qfh4MnMilPPjgg8jKyjL+HDhwwPjczJkzsXXrVmzevBn79u3D9evXMXz4cCeOtva4c+cOOnfujP/85z9mn1+6dCk+/vhjrF69GkeOHEFAQACio6NRUFBg7DNmzBicOXMGO3fuxLZt27B//35MmTKlpm6h1qjqswCAAQMGiP6cfPPNN6Ln+VnYx759+xAbG4vDhw9j586dKC4uRv/+/XHnzh1jn6r+XiotLUVMTAyKiopw6NAhfPnll0hISMD8+fOdcUtuTcrnAQAvvPCC6M/H0qVLjc/Z5fMQiFzEggULhM6dO5t9Li8vT/Dy8hI2b95sbDt79qwAQEhOTq6hEdYNAIQffvjB+Fin0wlKpVL44IMPjG15eXmCj4+P8M033wiCIAhpaWkCAOHYsWPGPjt27BBkMplw7dq1Ght7bVPxsxAEQRg/frwwdOhQi6/hZ+E4OTk5AgBh3759giBI+3tp+/btgoeHh6BWq419Vq1aJcjlcqGwsLBmb6CWqfh5CIIg/OMf/xBeeeUVi6+xx+fBGSdyKRcuXECTJk1w3333YcyYMcjMzAQAHD9+HMXFxYiKijL2bdeuHVq0aIHk5GRnDbdOyMjIgFqtFv3uFQoFevToYfzdJycnIygoCN27dzf2iYqKgoeHB44cOVLjY67t9u7di5CQEDzwwAOYNm0abt68aXyOn4XjaDQaAEBwcDAAaX8vJScno2PHjggNDTX2iY6OhlarxZkzZ2pw9LVPxc/DYMOGDWjUqBE6dOiAuXPn4u7du8bn7PF58JBfchk9evRAQkICHnjgAWRlZWHhwoXo3bs3UlNToVar4e3tjaCgINFrQkNDoVarnTPgOsLw+y3/F43hseE5tVqNkJAQ0fP16tVDcHAwPx87GzBgAIYPH47w8HCkp6fj9ddfx8CBA5GcnAxPT09+Fg6i0+kwY8YMPProo+jQoQMASPp7Sa1Wm/2zY3iObGPu8wCAZ599Fi1btkSTJk1w+vRpxMfH4/z58/j+++8B2OfzYOBELmPgwIHG/+7UqRN69OiBli1b4ttvv4Wfn58TR0bkOkaNGmX8744dO6JTp05o3bo19u7di379+jlxZLVbbGwsUlNTRXmX5DyWPo/yuXwdO3ZEWFgY+vXrh/T0dLRu3dou782lOnJZQUFBuP/++3Hx4kUolUoUFRUhLy9P1Cc7OxtKpdI5A6wjDL/fijuFyv/ulUolcnJyRM+XlJQgNzeXn4+D3XfffWjUqBEuXrwIgJ+FI8TFxWHbtm345Zdf0KxZM2O7lL+XlEql2T87hufIepY+D3N69OgBAKI/H9X9PBg4kcvKz89Heno6wsLC0K1bN3h5eWH37t3G58+fP4/MzEyoVConjrL2Cw8Ph1KpFP3utVotjhw5Yvzdq1Qq5OXl4fjx48Y+e/bsgU6nM/7FRY5x9epV3Lx5E2FhYQD4WdiTIAiIi4vDDz/8gD179iA8PFz0vJS/l1QqFX7//XdRMLtz507I5XJERETUzI3UElV9HuakpKQAgOjPR7U/DxuT2Yns7tVXXxX27t0rZGRkCAcPHhSioqKERo0aCTk5OYIgCMLUqVOFFi1aCHv27BF+++03QaVSCSqVysmjrh1u374tnDx5Ujh58qQAQPjwww+FkydPCpcvXxYEQRAWL14sBAUFCVu2bBFOnz4tDB06VAgPDxfu3btnvMaAAQOErl27CkeOHBEOHDggtG3bVhg9erSzbsltVfZZ3L59W5g9e7aQnJwsZGRkCLt27RIiIyOFtm3bCgUFBcZr8LOwj2nTpgkKhULYu3evkJWVZfy5e/eusU9Vfy+VlJQIHTp0EPr37y+kpKQISUlJQuPGjYW5c+c645bcWlWfx8WLF4W3335b+O2334SMjAxhy5Ytwn333Sf06dPHeA17fB4MnMhlPPPMM0JYWJjg7e0tNG3aVHjmmWeEixcvGp+/d++e8NJLLwkNGjQQ/P39hX/+859CVlaWE0dce/zyyy8CAJOf8ePHC4KgL0kwb948ITQ0VPDx8RH69esnnD9/XnSNmzdvCqNHjxbq168vyOVyYeLEicLt27edcDfurbLP4u7du0L//v2Fxo0bC15eXkLLli2FF154QbS1WhD4WdiLuc8BgLBu3TpjHyl/L126dEkYOHCg4OfnJzRq1Eh49dVXheLi4hq+G/dX1eeRmZkp9OnTRwgODhZ8fHyENm3aCK+99pqg0WhE16nu5yH7ezBEREREVAXmOBERERFJxMCJiIiISCIGTkREREQSMXAiIiIikoiBExEREZFEDJyIiIiIJGLgRERERCQRAyciIiIiiRg4EZHLkMlk+PHHHyX3b9WqFT766COHjYeIqCIGTkRUYyZMmIBhw4ZZfD4rKwsDBw6UfL1jx45hypQpdhiZNIsWLYKnpyc++OCDGntPInItDJyIyGUolUr4+PhI7t+4cWP4+/s7cERiX3zxBebMmYMvvviiyr5FRUU1MCIiqmkMnIjIZZRfqnvkkUcQHx8vev7GjRvw8vLC/v37AZgu1clkMqxZswb//Oc/4e/vj7Zt2+Knn34SXeOnn35C27Zt4evri8cffxxffvklZDIZ8vLyKh3bvn37cO/ePbz99tvQarU4dOiQ6Pm33noLXbp0wZo1axAeHg5fX18AQF5eHp5//nk0btwYcrkcffv2xalTp4yvS09Px9ChQxEaGor69evjoYcewq5du6z5tRFRDWLgREQuacyYMdi0aRPKn0P+3//+F02aNEHv3r0tvm7hwoV4+umncfr0aQwaNAhjxoxBbm4uACAjIwMjR47EsGHDcOrUKbz44ot44403JI1n7dq1GD16NLy8vDB69GisXbvWpM/Fixfxv//9D99//z1SUlIAAE899RRycnKwY8cOHD9+HJGRkejXr59xTPn5+Rg0aBB2796NkydPYsCAARgyZAgyMzOl/qqIqCYJREQ1ZPz48cLQoUMtPg9A+OGHHwRBEIScnByhXr16wv79+43Pq1QqIT4+3vi4ZcuWwrJly0Svf/PNN42P8/PzBQDCjh07BEEQhPj4eKFDhw6i93zjjTcEAMKtW7csjkuj0Qh+fn5CSkqKIAiCcPLkSaF+/frC7du3jX0WLFggeHl5CTk5Oca2X3/9VZDL5UJBQYHoeq1btxY+/fRTi+/34IMPCp988onF54nIeTjjREQuqXHjxujfvz82bNgAQD9blJycjDFjxlT6uk6dOhn/OyAgAHK5HDk5OQCA8+fP46GHHhL1f/jhh6scyzfffIPWrVujc+fOAIAuXbqgZcuW+O9//yvq17JlSzRu3Nj4+NSpU8jPz0fDhg1Rv359409GRgbS09MB6GecZs+ejfbt2yMoKAj169fH2bNnOeNE5KLqOXsARESWjBkzBi+//DI++eQTbNy4ER07dkTHjh0rfY2Xl5fosUwmg06nq9Y41q5dizNnzqBevbK/MnU6Hb744gtMnjzZ2BYQECB6XX5+PsLCwrB3716TawYFBQEAZs+ejZ07d+Jf//oX2rRpAz8/P4wcOZLJ5UQuioETEbmsoUOHYsqUKUhKSsLGjRsxbty4al3vgQcewPbt20Vtx44dq/Q1v//+O3777Tfs3bsXwcHBxvbc3Fw89thjOHfuHNq1a2f2tZGRkVCr1ahXrx5atWplts/BgwcxYcIE/POf/wSgD7YuXbok/aaIqEYxcCKiGqXRaIyJ0wYNGzZE8+bNTfoGBARg2LBhmDdvHs6ePYvRo0dX671ffPFFfPjhh4iPj8fkyZORkpKChIQEAPqZKXPWrl2Lhx9+GH369DF57qGHHsLatWst1nWKioqCSqXCsGHDsHTpUtx///24fv06EhMT8c9//hPdu3dH27Zt8f3332PIkCGQyWSYN29etWfIiMhxmONERDVq79696Nq1q+hn4cKFFvuPGTMGp06dQu/evdGiRYtqvXd4eDi+++47fP/99+jUqRNWrVpl3FVnrn5UUVER1q9fjxEjRpi93ogRI/DVV1+huLjY7PMymQzbt29Hnz59MHHiRNx///0YNWoULl++jNDQUADAhx9+iAYNGuCRRx7BkCFDEB0djcjIyGrdJxE5jkwQyu31JSKqY9577z2sXr0aV65ccfZQiMgNcKmOiOqUlStX4qGHHkLDhg1x8OBBfPDBB4iLi3P2sIjITTBwIqI65cKFC3j33XeRm5uLFi1a4NVXX8XcuXOdPSwichNcqiMiIiKSiMnhRERERBIxcCIiIiKSiIETERERkUQMnIiIiIgkYuBEREREJBEDJyIiIiKJGDgRERERScTAiYiIiEii/w8KBrsK0aWL2AAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"X = dataset[\"living_area\"].to_frame()\n",
"X.insert(0, \"x0\", 1) # add the column full of ones at the start, this represents x0\n",
"X.insert(0, \"x2\", dataset[\"nb_rooms\"].to_frame()) # add the column full of ones at the start, this represents x0\n",
"X = np.array(X)\n",
"\n",
"y = np.array(dataset[\"rent_price\"])\n",
"\n",
"theta = multivariate_batch_gradient_descent(X, y, batch_size=10, max_iter = 1000, alpha=0.000001)\n",
"\n",
"plt.scatter(dataset[\"living_area\"], dataset[\"rent_price\"])\n",
"plt.xlabel(\"Living Area\")\n",
"plt.ylabel(\"Rent price\")\n",
"\n",
"y_regr = theta[0] + theta[1] * X[:,1] + theta[2] * X[:,2]\n",
"plt.plot(dataset[\"living_area\"], y_regr, color='red', label='Regression line')\n",
"\n",
"plt.show()\n"
]
},
{
"cell_type": "markdown",
"id": "ed1e2d4f",
"metadata": {},
"source": [
"The algorithm still manages to converge, but no clear improvements is seen here"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"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.12.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}