{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Linear Fitting with statsmodels\n", "========================\n", "\n", "``````{admonition} Overview\n", ":class: overview\n", "\n", "Questions:\n", "\n", "* How can I fit a linear equation using statsmodels?\n", "\n", "* How can I fit a linear equation with multiple variables using statsmodels?\n", "\n", "Objectives:\n", "\n", "* Use statsmodels for linear regression.\n", "\n", "``````\n", "In this module, we are going to use statsmodels to fit our linear model. We are going to use an interface which allows us to use dataframes and text formulas to specify the equations we want to fit. To import statsmodels, use `import statsmodels.formula.api` as `smf`.\n", "\n", "First, we'll use pandas to load the data we cleaned in session 2." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "import pandas as pd\n", "\n", "import statsmodels.formula.api as smf" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "file_path = os.path.join(\"data\", \"potts_table1_clean.csv\")\n", "df = pd.read_csv(file_path)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 37 entries, 0 to 36\n", "Data columns (total 10 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 Compound 37 non-null object \n", " 1 log P 34 non-null float64\n", " 2 pi 37 non-null float64\n", " 3 Hd 37 non-null float64\n", " 4 Ha 37 non-null float64\n", " 5 MV 36 non-null float64\n", " 6 R_2 37 non-null float64\n", " 7 log K_oct 36 non-null float64\n", " 8 log K_hex 30 non-null float64\n", " 9 log K_hep 24 non-null float64\n", "dtypes: float64(9), object(1)\n", "memory usage: 3.0+ KB\n" ] } ], "source": [ "df.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we will use ordinary least squares (`ols`) to fit our equation. When you call `ols`, you give it a formula you would like to fit. The dependent variable goes on the left side, followed by a `~`. Then you put the independent variables you want to fit. To fit `log P` as a function of `MV`, we would expect put `log P ~ MV`. However, since our dependent variable has a space in it, we must group it using a special syntax - `Q('log P')`. Finally, we fit the model using `.fit()`." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "regression = smf.ols(\"Q('log P') ~ MV\", data=df).fit()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This performs a fit to your equation using ordinary least squares. You can get a summary of your model by calling `.summary` on the fit." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
OLS Regression Results
Dep. Variable: Q('log P') R-squared: 0.446
Model: OLS Adj. R-squared: 0.428
Method: Least Squares F-statistic: 24.98
Date: Wed, 12 May 2021 Prob (F-statistic): 2.16e-05
Time: 13:54:47 Log-Likelihood: -34.474
No. Observations: 33 AIC: 72.95
Df Residuals: 31 BIC: 75.94
Df Model: 1
Covariance Type: nonrobust
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err t P>|t| [0.025 0.975]
Intercept -7.2469 0.362 -20.002 0.000 -7.986 -6.508
MV 0.0271 0.005 4.998 0.000 0.016 0.038
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Omnibus: 21.287 Durbin-Watson: 1.639
Prob(Omnibus): 0.000 Jarque-Bera (JB): 28.520
Skew: 1.802 Prob(JB): 6.41e-07
Kurtosis: 5.783 Cond. No. 196.


Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified." ], "text/plain": [ "\n", "\"\"\"\n", " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: Q('log P') R-squared: 0.446\n", "Model: OLS Adj. R-squared: 0.428\n", "Method: Least Squares F-statistic: 24.98\n", "Date: Wed, 12 May 2021 Prob (F-statistic): 2.16e-05\n", "Time: 13:54:47 Log-Likelihood: -34.474\n", "No. Observations: 33 AIC: 72.95\n", "Df Residuals: 31 BIC: 75.94\n", "Df Model: 1 \n", "Covariance Type: nonrobust \n", "==============================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "------------------------------------------------------------------------------\n", "Intercept -7.2469 0.362 -20.002 0.000 -7.986 -6.508\n", "MV 0.0271 0.005 4.998 0.000 0.016 0.038\n", "==============================================================================\n", "Omnibus: 21.287 Durbin-Watson: 1.639\n", "Prob(Omnibus): 0.000 Jarque-Bera (JB): 28.520\n", "Skew: 1.802 Prob(JB): 6.41e-07\n", "Kurtosis: 5.783 Cond. No. 196.\n", "==============================================================================\n", "\n", "Notes:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "\"\"\"" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "regression.summary()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Intercept -7.246871\n", "MV 0.027056\n", "dtype: float64" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "regression.params" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Fitted values are stored automatically in `regression.fittedvalues`." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 -6.960075\n", "1 -6.659752\n", "2 -6.643518\n", "3 -6.383779\n", "4 -6.343195\n", "5 -6.105100\n", "6 -6.067222\n", "7 -5.910296\n", "9 -5.839950\n", "10 -5.829127\n", "11 -5.788543\n", "13 -5.623500\n", "14 -5.618089\n", "15 -5.553154\n", "16 -5.515276\n", "17 -5.512570\n", "18 -5.461163\n", "19 -5.461163\n", "20 -5.417873\n", "22 -5.417873\n", "23 -5.352939\n", "24 -5.325882\n", "25 -5.325882\n", "27 -5.290709\n", "28 -5.274476\n", "29 -5.236597\n", "30 -5.095905\n", "31 -4.998503\n", "32 -4.957918\n", "33 -4.722530\n", "34 -4.681945\n", "35 -4.433029\n", "36 -4.162467\n", "dtype: float64" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "regression.fittedvalues" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "df[\"predicted_values\"] = regression.fittedvalues" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Compoundlog PpiHdHaMVR_2log K_octlog K_hexlog K_heppredicted_values
0water-6.850.450.820.3510.60.00-1.38NaNNaN-6.960075
1methanol-6.680.440.430.4721.70.28-0.73-2.42-2.80-6.659752
2methanoicacid-7.080.600.750.3822.30.30-0.54-3.93-3.63-6.643518
3ethanol-6.660.420.370.4831.90.25-0.32-2.24-2.10-6.383779
4ethanoicacid-7.010.650.610.4533.40.27-0.31-3.28-2.90-6.343195
\n", "
" ], "text/plain": [ " Compound log P pi Hd Ha MV R_2 log K_oct log K_hex \\\n", "0 water -6.85 0.45 0.82 0.35 10.6 0.00 -1.38 NaN \n", "1 methanol -6.68 0.44 0.43 0.47 21.7 0.28 -0.73 -2.42 \n", "2 methanoicacid -7.08 0.60 0.75 0.38 22.3 0.30 -0.54 -3.93 \n", "3 ethanol -6.66 0.42 0.37 0.48 31.9 0.25 -0.32 -2.24 \n", "4 ethanoicacid -7.01 0.65 0.61 0.45 33.4 0.27 -0.31 -3.28 \n", "\n", " log K_hep predicted_values \n", "0 NaN -6.960075 \n", "1 -2.80 -6.659752 \n", "2 -3.63 -6.643518 \n", "3 -2.10 -6.383779 \n", "4 -2.90 -6.343195 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can make predictions using the fitted model by calling `regression.predict` and passing in values for which you want a prediction as part of a pandas dataframe with appropriate column names. Your column names **must** match the column names you performed the fit with." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on method predict in module statsmodels.base.model:\n", "\n", "predict(exog=None, transform=True, *args, **kwargs) method of statsmodels.regression.linear_model.OLSResults instance\n", " Call self.model.predict with self.params as the first argument.\n", " \n", " Parameters\n", " ----------\n", " exog : array_like, optional\n", " The values for which you want to predict. see Notes below.\n", " transform : bool, optional\n", " If the model was fit via a formula, do you want to pass\n", " exog through the formula. Default is True. E.g., if you fit\n", " a model y ~ log(x1) + log(x2), and transform is True, then\n", " you can pass a data structure that contains x1 and x2 in\n", " their original form. Otherwise, you'd need to log the data\n", " first.\n", " *args\n", " Additional arguments to pass to the model, see the\n", " predict method of the model for the details.\n", " **kwargs\n", " Additional keywords arguments to pass to the model, see the\n", " predict method of the model for the details.\n", " \n", " Returns\n", " -------\n", " array_like\n", " See self.model.predict.\n", " \n", " Notes\n", " -----\n", " The types of exog that are supported depends on whether a formula\n", " was used in the specification of the model.\n", " \n", " If a formula was used, then exog is processed in the same way as\n", " the original data. This transformation needs to have key access to the\n", " same variable names, and can be a pandas DataFrame or a dict like\n", " object that contains numpy arrays.\n", " \n", " If no formula was used, then the provided exog needs to have the\n", " same number of columns as the original exog in the model. No\n", " transformation of the data is performed except converting it to\n", " a numpy array.\n", " \n", " Row indices as in pandas data frames are supported, and added to the\n", " returned prediction.\n", "\n" ] } ], "source": [ "help(regression.predict)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "to_predict = pd.DataFrame()\n", "to_predict[\"MV\"] = [75, 90]" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 -5.217658\n", "1 -4.811815\n", "dtype: float64" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "regression.predict(to_predict)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "\n", "g = sns.lmplot(x=\"log P\", y=\"predicted_values\", data=df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Multiple Regression" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['Compound', 'log P', 'pi', 'Hd', 'Ha', 'MV', 'R_2', 'log K_oct',\n", " 'log K_hex', 'log K_hep', 'predicted_values'],\n", " dtype='object')" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.columns" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "multiple_regression = smf.ols(\"Q('log P') ~ pi + Hd + Ha + MV + R_2\", data=df).fit()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
OLS Regression Results
Dep. Variable: Q('log P') R-squared: 0.965
Model: OLS Adj. R-squared: 0.959
Method: Least Squares F-statistic: 150.4
Date: Wed, 12 May 2021 Prob (F-statistic): 7.87e-19
Time: 13:55:34 Log-Likelihood: 11.249
No. Observations: 33 AIC: -10.50
Df Residuals: 27 BIC: -1.518
Df Model: 5
Covariance Type: nonrobust
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err t P>|t| [0.025 0.975]
Intercept -4.4861 0.199 -22.501 0.000 -4.895 -4.077
pi -0.9319 0.220 -4.237 0.000 -1.383 -0.481
Hd -1.3037 0.185 -7.038 0.000 -1.684 -0.924
Ha -4.3756 0.371 -11.784 0.000 -5.138 -3.614
MV 0.0260 0.002 17.193 0.000 0.023 0.029
R_2 0.5135 0.177 2.900 0.007 0.150 0.877
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Omnibus: 0.688 Durbin-Watson: 1.300
Prob(Omnibus): 0.709 Jarque-Bera (JB): 0.200
Skew: 0.179 Prob(JB): 0.905
Kurtosis: 3.132 Cond. No. 835.


Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified." ], "text/plain": [ "\n", "\"\"\"\n", " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: Q('log P') R-squared: 0.965\n", "Model: OLS Adj. R-squared: 0.959\n", "Method: Least Squares F-statistic: 150.4\n", "Date: Wed, 12 May 2021 Prob (F-statistic): 7.87e-19\n", "Time: 13:55:34 Log-Likelihood: 11.249\n", "No. Observations: 33 AIC: -10.50\n", "Df Residuals: 27 BIC: -1.518\n", "Df Model: 5 \n", "Covariance Type: nonrobust \n", "==============================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "------------------------------------------------------------------------------\n", "Intercept -4.4861 0.199 -22.501 0.000 -4.895 -4.077\n", "pi -0.9319 0.220 -4.237 0.000 -1.383 -0.481\n", "Hd -1.3037 0.185 -7.038 0.000 -1.684 -0.924\n", "Ha -4.3756 0.371 -11.784 0.000 -5.138 -3.614\n", "MV 0.0260 0.002 17.193 0.000 0.023 0.029\n", "R_2 0.5135 0.177 2.900 0.007 0.150 0.877\n", "==============================================================================\n", "Omnibus: 0.688 Durbin-Watson: 1.300\n", "Prob(Omnibus): 0.709 Jarque-Bera (JB): 0.200\n", "Skew: 0.179 Prob(JB): 0.905\n", "Kurtosis: 3.132 Cond. No. 835.\n", "==============================================================================\n", "\n", "Notes:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "\"\"\"" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "multiple_regression.summary()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "df[\"MR_predicted_values\"] = multiple_regression.fittedvalues" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW8AAAFuCAYAAABOYJmxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAABJBklEQVR4nO3deZxcZZn3/89Ve/WeTtLZE7ISyMIWIopAQGQANWCCGnQcdX4zMC7gLiCIsqigMAw46gM6zsyjjyyasO8IMW5IAmTpkJCEhJBO0lu602vtdf3+qOqml6pe0tVdXdXX+/XqV3dVnTrnzunub07f577vS1QVY4wxucWR7QYYY4wZPAtvY4zJQRbexhiTgyy8jTEmB1l4G2NMDnJluwHD4cILL9Rnnnkm280wxph0ZKg7yMsr7/r6+mw3wRhjhlVehrcxxuQ7C29jjMlBFt7GGJODLLyNMSYHWXgbY0wOsvA2xpgcZOFtjDE5yMLbGGNykIW3McbkIAtvY4zJQRbexhiTgyy8jTFmhKzfWcvl973Mcdc+uXeo+8rLVQWNMWa0Wb+zlhsf247bKQANQ92fXXkbY8wIuHfDXtxOwePKTOxaeBtjzAg40NiO2yHEYpqR/Vl4G2PMCJhc4qMtHMvY/rIW3iJyi4hsFZHNIvKciExNs93bIrItud2mkW6nMcYMVX1riMtOnU40rgQimQnwbF55/1hVl6rqycATwI19bHuuqp6sqstGpmnGGJMZdS0hmgMRls8p58vnzWd8oRegfKj7zdpoE1Vt7vKwEMhMR5AxxowStS1BWoPRzsfL55SzfE45cyYWzRnqvrM6VFBEvg/8E9AEnJtmMwWeExEF7lXV+9Ls6wrgCoCZM2cOQ2uNMWZgVJW6lhCtoWj/Gx8jUR2+C14ReQGYnOKl61X10S7bXQf4VPW7KfYxVVUPiUgF8Dxwlapu6Ou4y5Yt002brHvcGDPyVJXalhBtfQT3nIlFQ64eP6xX3qp6/gA3/S3wJNArvFX1UPJzrYg8DCwH+gxvY4zJBlWlpjlEezh9cOf8DUsRmd/l4UpgZ4ptCkWkuONr4AKgcmRaaIwxAxePK9XNwT6Du6k9wtcf2pKR42Wzz/s2ETkeiAP7gX+DRDcJ8EtVvRiYBDwsIpBo629V9ZkstdcYY1KKJYM71MdV9eGmANes3UZVYyAjx8zmaJPVaZ4/BFyc/HovcNJItssYYwYjFlcONwUIR+Npt9lT28q167bR0BbuWNtkyGxhKmOMOUbRWJzDTUEisfTB/do7jdz46HbawzGKvC6+f+nijBzbwtsYY45BOBqnuilINJ4+uF/aWcsPn95JNK5MLPJy2+olzJ5QmJHjW3gbY8wghaIxqpuCxOLph1qvfa2Kn770FgCzxhdw+6olVJT4MtYGC29jjBmEYCRGTXP64I6r8osNe3lwUxUAS6aVcMsliynxuzPaDgtvY4wZoGAkccUdTzO5MRKL8+Nn3+SFHbUAnDlvPDdcfAJetzPjbbHwNsaYAQiEY1Q3B0k3K709HOV7j73Bpv2NAHxk6RSu/sB8nI7MjC7pycLbGGP60R6OUtMcShvcDW1hvv3wNnbVtALwufcdxz+eMZPkHJVhYeFtjDF96C+4Dx4NcM3arRw6GsQh8JXzF/DhpVOGvV0W3sYYk0Z/wb2rpoXr1m2jsT2C1+XgOx8+AZc4+NqDWzjcHGBKiZ81p89g+ZwhL9/di5VBM8aYFFpDfQf3prcb+OqDW2hsj1Dic3HHx5biEgd3v7ibI20hSnwujrSFuPvF3byyd8jF4nux8DbGmB5aghFq+7g5+cKOGq57uJJAJEZFsZd71pzCoqmlPLDxAC6H4Hc7ERKfXQ7hgY0HOt/rdmYmdq3bxBhjumgJRqhrCaV8TVV5aFMV927YC8CcCYXctnoJE4q8ABxuDlDi6x6rPreD6ubEYlR+j5NJxZmZqGPhbYwxSc3BCPVpgjuuyv/541v8/tWDAJw0vZRbLllMUZewnlLi50hbCH+Xcd3BSJzJJX5K/G7GF3oyNgLFuk2MMYbEWtvpgjscjfP9J3d0BvfZCyZw++ql3YIbYM3pMzorxCuJz9G48q9nzWZCkTejQwftytsYM+Y1tUc40vZucL+yt4EHNh7gcHOAiiIf7ZEob9W1AXDpyVP54rnzUk6+WT6nnC8znwc2HqC6OcDkUj+fP2cO/7A480MHLbyNMWPa0fYwDW3hzsev7G3g7hd343IIBW4HO2uaicQSNy7/v/cfxyeX9z35pqNCvNvpYFKJD49reDo4LLyNMWNWY1uYxvZwt+c6Row4RTjQGCCaXIBqxjg/n3rPrAHtt+PGpGOYpsaDhbcxZoxqaAtztEdwQ2LEiMeZCO6YggBTSr19FlzoqtTvZnxy9MlwsvA2xow56YIboNDtYt+RNhRwCkwt8wNQUdh3IIsI44s8lPgyu/RrOhbexpgx5UhriKZAJOVrz1RW83ZDMrgdwvQyH3GFaFxZc/qMtPt0OoRJJT58w7D0azoW3saYMaO+NURziuBWVe5/5QC//PM+AKaU+igv8HCkLcTkftYn8bgcTC7x4crQzMmBsvA2xowJ6YI7Fld++tIeHtl8CIBTZ5Zx08pFFHr7j8dCr4uJRd5hvTGZjoW3MSbv1bWEaAn2Du5wNM4Pnt7Bhl31AJx7/ESuuXDhgIb3lRV4KC/0ZLytA2XhbYzJa7UtQVqD0V7PtwajfOfRSrZUNQGw+tRpfH7FXBz9zIIUESYUeSgeoRuT6Vh4G2PykqpS1xKiNdQ7uOtaQly3bht76xOzJv/tnDl8fFn6G5IdsnFjMh0Lb2NM3lFValtCtKUI7v1H2rhm7TZqW0I4HcI1Fx7P+SdM6nef2boxmY6FtzEmr6gqNc0h2sO9g3v7oSauf7iS5mAUv9vJ91aeyOnH9V/lJps3JtOx8DbG5I14XKluDhKMxHq99te36rnliR2EonHGFbj54aolLJhU3O8+xxV4GJfFG5PpWHgbY/JCLK4cbgoQjvaexv7k1sPc9cIu4gpTy3zcvnop05IzJ9MRESYWeykawJDBbMh6542IfENEVEQmpHn9QhF5U0T2iMi1I90+Y8zoF43FOXS0d3CrKr/+237ufD4R3AsmFXHPmlP6DW6Xw8GUUt+oDW7I8pW3iMwAPgi8k+Z1J/DT5DZVwEYReUxV3xi5VhpjRrNoLM7hpmCvhaNiceWeF3fz+JbDACybNY6bVi7C7+l7pIjX7WRSsXfU3JhMJ9utuwv4FpC6yicsB/ao6l5VDQMPAJeMVOOMMaNbJE1whyIxbnr8jc7gPv+ECr7/0cX9BneR18XU0tEzoqQvWbvyFpGVwEFV3dLHwubTgANdHlcB7xnuthljRr9ILM7ho0Gi8e7B3RKMcMMjlWw72AwkSpP9y1mz+518k+0Zk4M1rOEtIi8Ak1O8dD3wbeCC/naR4rmUV+kicgVwBcDMmTMH0UpjTK4JR+NUN/UO7trmINes28b+I+0AfGHFXC47bXqf+xotMyYHa1jDW1XPT/W8iCwBZgMdV93TgddEZLmqVnfZtAroOu1pOnAozbHuA+4DWLZsWbpuGGNMjksX3Pvq27h27TbqWkO4HMK1Fy3kvIUVfe5rNM2YHKysdJuo6jag86yKyNvAMlWt77HpRmC+iMwGDgJrgE+OVDuNMaNLMBKjpjlILN79+mxr1VFueGQ7raEoBR4nN1+yiFNnjutzXx5XosakOwf6t1MZda0Wkaki8hSAqkaBLwHPAjuAh1R1ezbbZ4zJjmAkRnVT7+D+0+56vvn7rbSGopQXeviPT5zcb3AXeFxMLfXnbHDDKJmko6rHdfn6EHBxl8dPAU9loVnGmFGiPRylpjmEavfgfmzLIe75w27iCtPH+bl99RKmlPY9hnukakwOt1ER3sYYk05rKEpdS/fgVlX+569v8+uXE1NEFk4u5gcfXUxZQfrRIiNdY3K4WXgbY0atpkCEI62hbs/F4spdz+/iqcrE2Ib3zC7nxo+ciL+Pm465fGMyHQtvY8yodLQ9TENb9wrvwUiMm594g5f3NgDwD4sm8fUPLuhzUo3b6WByae7emEzHwtsYM+o0tIU52t49uJsCEa5/uJI3Dicm33zqPTP55zOPo49JfhR4XFQUj66lXDPFwtsYM6ocaQ3R1KNQcHVzkGt+v5UDjQEEuOq8eVx6yrQ+91PidzMhD25MpmPhbYwZNVIVCn6rrpVr127jSFsYt1P49sUncM6CiWn3ISKUF3oo9efHjcl0LLyNMaNCquDefOAo33mkkrZwjEKvk1svWcxJM8rS7sMhiRuT/S1AlQ8svI0xWZeqwvv6N+v44dM7iMSUCUUeblu1hDkTi9Luw+1MzJj0uPLrxmQ6Ft7GmKxJV+F93WsH+elLe1BgVnkBt61ewqQSX9r9+D1OKop9OPPwxmQ6Ft7GmKxIVShYVfmvP+/jt68kVoJeNLWE71+6mJI++q+LfW4mFHn6HHWSjyy8jTEjLh5XalqCBMLvFgqOxuLc+fwunt1eA8D75o7nhg+d0OfEmvGFXkoL8vvGZDoW3saYEZWqwnsgWfnmlX2JyTcfWjKFr5w/P203iEOEihIvBZ6xG2Fj919ujBlxsWRwh7oE99H2MNc9XMmb1S0A/NMZs/jM+2al7QYZazcm07HwNsaMiFhcOdzUvcL7oaMBrl23jarGAA6BL39gPh85aWrafYzFG5PpWHgbY4Zdqgrvu2tauHbdNhrbI3hcDm64+ATeP39C2n2U+N2MLxx7NybTsfA2xgyrVGXLXtvfyI2Pbac9HKPI6+L7ly5myfTSlO/Pt6VcM8XC2xgzbELR3tVv/rCjltuf2Uk0rkws8nLb6iXMnlCY8v35uJRrplh4G2OGRUfZsniXIgq/e7WKn69/C4Djxhdw++qlTCxOvXhUrteYHG4W3saYjAuEE4WCO4I7rsq9f9zL716tAmDJtFJuvXQRxWm6QvJ5KddMsfA2xmRUz3qTkVicHz3zJn/YWQvA++dN4PqLF+JN0xWS70u5ZoqFtzEmY3rWm2wPR/nuo9t59Z2jAKw8aSpXnTcv5VC/sbKUa6ZYeBtjMqI5GKG+5d16kw1tYa5bt43dta0A/POZx/Gp98xMOdRvLC3lmikW3saMEet31nLvhr0caGxnxrgCrjx7DisWVmRk303tEY60vRvcBxsDfGvtVg43BXEIfO2DC7h4yZSU77UZk8fGzpYxY8D6nbXc+Nh2aluClPnd1LYEufGx7axP9kMPRUNbuFtwv1ndwlX3v87hpiBel4NbLlmcNrh9bidTy/wW3MfAzpgxY8C9G/bidgoFHhciic9up3Dvhr1D2m99a6hboeCNbzfw1Yc2czQQocTn4s6PncR7545P+d4in4sppTbV/VhZt4kxY8CBxnbKetwI9LudVDW2H9P+UhVReP6NGn707JvE4sqkEi+3r17KzPKClO8fy0u5ZoqFtzFjwIxxBdS2BLstoRqIxJg+LnW49qVnEQVV5cFNVdyXvIqfO7GQH65aknK4ny3lmjnWbWLMGHDl2XOIxJT2cBTVxOdITLny7DmD2k88rhxuCnYGd1yVn61/qzO4T55Ryl2fODllcLudDqaU+Sy4M8TOojFjwIqFFdxMou+7qrGd6ccw2qTnkq7haJzbn9nJS2/WAXDOgolcd9HClDcffW4nk0qsfzuTLLyNGSNWLKw45qGBPZd0bQ1FufHR7Ww+cBSAj54yjS+eOxdHijHcRT4XE4u8tpRrhmU9vEXkG8CPgYmqWp/i9beBFiAGRFV12ci20JixLRJLLOnaEdxHWkNcu24bb9W1AfCvZ81mzekzUoaz3ZgcPlkNbxGZAXwQeKefTc9NFezGmOHVcy3udxrauWbtVmqaQzgdwjcuWMA/LJrc6312Y3L4ZfuG5V3AtwDtb0NjzMgKRmIcbgp0BveOw81cff/r1DSH8LkcfP/SxSmD2+10MLXMb8E9zLIW3iKyEjioqlv62VSB50TkVRG5oo/9XSEim0RkU11dXUbbasxYEwh3L6Lw8t4jfO2hLTQHo5T63dz58ZNYPru81/v8HpsxOVKG9b9GEXkB6P1fM1wPfBu4YAC7OVNVD4lIBfC8iOxU1Q09N1LV+4D7AJYtW2ZX8sYco0A4RnVzsHNlwKcrq7nzuTeJK0wp9XH76iUpx4dbjcmRNazhrarnp3peRJYAs4EtyW/0dOA1EVmuqtU99nEo+blWRB4GlgO9wtsYM3Rd1+JWVX77yjv815/fBmBeRRG3rVpCeaGn23tsKdfsyEqnlKpuAzrHLCVHlCzreVNSRAoBh6q2JL++ALh5JNtqzFjRdS3uWFz5z5f28OjmQwCcOrOMm1YuotDbPTJsKdfsGXV3FERkKvBLVb0YmAQ8nLw6dwG/VdVnstk+Y/JR17W4w9E4P3hqBxt2J66lzltYwTUXHt+rlqQt5ZpdoyK8VfW4Ll8fAi5Ofr0XOClLzTJmTDjaHqahLbEyYGswyg2PVrK1qgmAj502nSvPmdNr8o3NmMy+URHexpjsONIaoikQAaCuJTH5Zl99YvLNv50zh48vm9HrPTZjcnSw8DZmjKpvDdGcDO63j7Rx7dpt1LaEcDmEb114POefMKnXe2zG5Ohh4W3MGFTbEqQ1mFgZsPJgE9c/UklLMIrf7eSmlSey7LjuY7htxuToY98JY/LAQOtTqiq1LSHakkUU/rKnnlue3EE4GmdcgZsfrlrCgknF3d5jNyZHJ/tuGJPjBlqfsmMt7o7gfmLrYb772HbC0TjTyvzcc/kpvYK70Otims2YHJXsO2JMjhtIfcpoLM6hpgDBSAxV5X//+jb//vwu4grHTyrmnstPZlqZv9t+xxV4mFTiw2EjSkYl6zYxJsf1V58yHI1T05xY0jUWV+7+w26e2HoYgNOPG8f3PrKo2yQbEaGi2NtrQo4ZXey7Y0yO66s+ZSj67gJToUiMW5/cwV/eOgLAB0+cxDcvWICry+Qbl8NBRYkXn9tmTI52A+42EZEfiUiJiLhF5A8iUi8i/zicjTPG9C9dfcrPvm8Wh48mgrs5EOGbv9/aGdxrTp/BtRce3y24PS4HU8t8Ftw5YjB93heoajPwYaAKWAB8c1haZYwZsBULK7h55SIqin00BSJUFPu47qKFLJhcQlyVmuYgX35gM5WHmhHgi+fO5Yqz53SbZFPgcTG11N8tzM3oNphuk45OtYuB+1W1wWZYGTM6dK1P2bFOiaqyr76Na9Zupb41jNspXHfRQlYc330IYanfzfgU1d7N6DaY8H5cRHYCAeALIjIRCA5Ps4wxx6KxLUxje2Kdki1VR7nhkUraQjEKPU5uvmQRp8wc17mtiDC+yEOJz2ZM5qIBh7eqXisitwPNqhoTkXbgkuFrmjFmMOpaQrQEE9PdN+yq4/tP7SASU8YXerht1RLmVhR1bmtLuea+wdywLAC+CPw8+dRUwCq5G5NlmuzX7gjuRzcf5KbH3yASU6aP8/OTy0/pFtwdNSYtuHPbYO5O/DcQBt6XfFwF3JrxFhljBiweV6qbE7MmVZX/+vM+7v7DHhQ4YUoxP1lzCpNLfZ3b+9xWYzJfDKbPe66qfkJELgdQ1YDYHUtjsiaWDO5QJEYsrvz787t4ujJRRfCMOeV858Mn4u8y7M+Wcs0vgwnvsIj4SVRzR0TmAqFhaZUxpk/RWJzDTYlZk4FIjFueeIOX9zYAcNHiyXztgwu6FUooL/RQVuBJtzuTgwYT3t8FngFmiMj/A84EPjscjTLGpBeOxqluChKNx2lqj/DtR7ax43ALAP94xkw+977jOq+uRYSJxV6KbKp73hnMaJPnReQ14AxAgC/3LBhsjBlewUiMmubErMnqpiDfWruVqsYAAlz9gXlccvK0zm2djsSIEpsxmZ8GHN4icnbyy5bk5xNFBFXdkPlmGWN6ag9HqWlOTL55q7aVa9Zto6EtMfnm+otP4OwFEzu39bgSa3D3LBps8sdg/pbqOhXeBywHXgXOy2iLjDG9tIai1CVnTb7+TiM3PrqdtnCMIq+LWy9dxNLpZZ3bFnhcVBR7bSnXPDeYbpOPdH0sIjOAH2W8RcaYbjqmuwO8tLOW257ZSSSmTCjycPvqpcyeUNi5bYnfzQSb6j4mDOUuRhWwOFMNMcb0drQ9TENbYrr72teq+OlLbwEwq7yA21cvoaLk3THcVhx4bBlMn/dPSA4TJDG552RgyzC0yRgDHGkN0RSIoKr84k/7eGDjAQAWTy3h1ksXU5IswOBIjiix4gljy2C+25u6fB0lsbLgXzLcHmPy2kAKBasqda0hWoNRorE4dzy3i+feqAHgxCklOES48jevMqXEzyffM4NLTpmG12UjSsaawfR5/+9wNsSYfNdRKNjtlG6Fgm+GzgBPrFMSoj0cJRCO8b3Ht7Px7UYAlh9XzjsNbbidDkp8LhraQ/zkxT1UFPtSVoo3+a3f8BaRbbzbXdLtJUBVdWnGW2VMHupaKBggGlNqW4Jc+ZtXOXXmOP71rNksnFJCMBKjsT3Mt9dV8mZNYmTuZ983i9f3H8XtdOB3O3E4hBKfk0Akxr0b9lp4j0EDufL+8LC3wpgxoGuh4OZAhENNick1iWo3AW54pJKrz5vP9HI/16zdxsGjARwCXzl/Ph9eOpWnK1+mxOfC6ZDOijddCw2bsaXf8FbV/SPREGPyXddCwfWtIRwICHgcgtvpJBJTfvWXfdS1hmhsj+BxOfjOh07gzHkTAJhS6qepPYzP/e7Em45Cw2bsGcx63meIyEYRaRWRsIjERKT5WA8sIt8TkYMisjn5cXGa7S4UkTdFZI+IXHusxzMm27oWCg7H4ihKPK6MK/SgqsRU2V3bSmN7hGKfizsuW9oZ3E6H8Plz5hBTehUavvLsOVn+l5lsGMxok/8E1gC/I1GE4Z+AeUM8/l2qeke6F0XECfwU+CCJceUbReQxVX1jiMc1ZsStWFjBzST6vqsaA6DKxBIvhR4XzcEI1c2JiTgVxV5uW72E48YnJt+4nYmp7rPGF+J1OZPvb2d6mtEqZmwY1MBQVd0jIk5VjQH/LSJ/HaZ2dVgO7FHVvQAi8gCJ0msW3iYndRQKfnbbYb73xBs4RGhoD1PfmpiIM7nEx91rTmZicWKWpNftZHKJr3N5166Fhs3YNphVa9pFxANsFpEfichXgcL+3tSPL4nIVhH5lYiMS/H6NOBAl8dVyed6EZErRGSTiGyqq6sbYrOMGT6toSgLppRw1bnzCEbincE9e3wh9336tM7gLvK6mFrq67YutzEdBhPen05u/yWgDZgBrO7rDSLygohUpvi4hEQtzLkkZmoeBu5MtYsUz6Uatoiq3qeqy1R12cSJE1NtYkzWNQcj1DYHCUdjPLTpAHWtia6SUr+bfz7zOIp8rs7HFSU+q3pj0hpMt8mpwFOq2gzcNJA3qOr5A9lORH4BPJHipSoS/0l0mA4cGsg+jRltGtvCNLaHaQtF+eqDW9hT1wpAqd9FsdfJz/74Fm6ng4uWTqHUb2uUmL4N5sp7JbBLRH4tIh8SkSEtpCAiU7o8/ChQmWKzjcB8EZmd7LJZAzw2lOMakw31rSEak4tMffWhd4N7fKGHiiIvBR4Xbqew7vWDFtxmQAYc3qr6ORKjS34HfBJ4S0R+OYRj/0hEtonIVuBc4KsAIjJVRJ5KHjNKopvmWWAH8JCqbh/CMY0ZUYnp7kGaAxGqGtu56v7X2VObCO6KYg/jCz2ICCJCkdfF4aZAlltscsVgR5tERORpEv3OfhIjP/7lWA6sqp9O8/wh4OIuj58CnjqWYxiTTbF4IriDkRg7q5u5bl0lTYEIXpeDqaV+ovE4kKgz6XaKTbgxgzKYSToXisj/AHuAy4BfAlP6fJMxY1Q0FufQ0QDBSIxX9jXwtQe30BSIUOJzcefHTuLKs+cQjSuhaAyXIzFT0ibcmMEYzJX3Z4EHgCtVNTQ8zTEm93Wt7v7c9mp+/NwuYnFlcomP21YvYWZ54ur6Os9C7t94wCbcmGMiqilH3g1+RyJ/U9X3ZmRnQ7Rs2TLdtGlT/xsak2HBSIzqpiCxeJwHNh7gF3/aB8DciYXctmoJ45MlysYVeBhX6MlmU012DXkMaCZLb/j638SY/NVRJDgWj/Ozl95i3esHATh5Rhk3X7KIomSlmwnFXkp8NqLEDE0mwzszl/DG5KCm9ghH2kKEo3Fue3on63clZvmee/xErrlwIR6XA4cIFSXezvW8jRkK+ykyZog6ak22hqLc+Gglmw80AbDq1Gl8YcVcHCK4HA4mlXqtXJnJmEyGt83jNWOKqlLXEqI1FKW+NcS167axt64NgIsXT+atmlY+9cu/M63UzxfPncfeutZ+61caM1CZvGG5WFVTzZIccXbD0gy3eFypTo7hfudIO99au5XalhBOh3DZKdPYsKcel0Mo8DiJxOI0B6MIUOJ343c7O4cG3rxykQX42DT8NyxFpIU++rNVtST5eVQEtzGZkq7SezQWp7o5SDgaZ/uhJq5/uJLmYBSf28FNKxdx/98P4HIIhV4XLofgcTk51BQEhcmlfgAKPC7aw1GrP2mO2UDKoBUDiMjNQDXwaxL/a3wKKB7W1hmTJekqvX8nFuf4ySVE43H+9tYRbn7iDULROGV+Nz9ctYTjJxfz78/vYlyBG7fz3TlwsbjS869cqz9phmIwC1P9g6r+TFVbVLVZVX9OP0vCGpOrulZ6F0l8djrgp+vfIhqP89S2w3zn0UpC0ThTSn385PJTOH5y4lpmZnkBkVj3oHY6Ejctu7Lp8GYoBhPeMRH5lIg4RcQhIp8CYsPVMGOy6UBjO373uyNDYnHF5RAOH23n1y/v547ndhFXcDmE8gIPBxsDiAiTS318ccW8zlqVHbUmi7wuin0uqz9pMmYw4f1J4ONATfLjY8nnjMk7M8YVEIgkrk1icSUaixMIx4jG4b//8jYAXpeDWeV+moMR7n5xN7urWyjwuBK1KlcuoqLYR1MgQkWxjzsuO4kfX3ZSt+fsZqUZioyNNhlNbLSJGaqOPm8R8DiFQDhGfWuYYDSxEmCBx8m0Ul/ncq6RWIxJJX7uv+KMLLfc5IghjzYZzKqCC0TkDyJSmXy8VERuGGoDjBmNzjl+Il87fz7j/B6aAhEa2yPdgntqqbczuDv6xu3moxlJg+k2+QVwHRABUNWtJCrbGJPz1u+s5fL7Xub9t7/Imnv/xrrXqlg6o4xrLzqeAo+LtnCiC+Xz58xhQUUxoah2BreIrcVtRt5gZlgWqOorPQqiRjPcHmNGXNdhgaU+F4eaAtzx3C7WLJvBb/7+DnWtIVwO4dqLFnLewgpmlRdyz0u7icRiuJ0uu/losmIw4V0vInNJTtgRkctIVH03Jqd1DAv0uZ1EY4rP5SQYCXPPi3uIqVLgcXLzykWcOmscAB84cRKTSrzc96d9tha3yZrBhPcXgfuAhSJyENhHYqKOMTntQGM7JT4XkVgctGNp1zAKjCtwc9uqJcyflBjDXV7ooazAw7knTOLcEyZlt+FmTBtMeKuqni8ihYBDVVtEZPZwNcyYkbB+Zy1N7WEOHw3gcTnwOB00BRO9gV6Xg59cfgpTy/yICBOLvZ1rchuTbYO5YbkWQFXbVLUl+dzvM98kY0bG+p213PBIJT63AxSCkXhncLudwjcvOJ6pZX4cIkwu8Vlwm1FlIAtTLQQWAaUisqrLSyVY9RyTw/7zpT2IQJnfQ1s4TntyRIlT4DsXn8j7F0zA6RAmlfjwuW0dbjO6DORS4njgw0AZ8JEuz7cA/zoMbTJmWKkqda0hDjS2U+RNrPjXEdzFPhcFbgfvXzABl8PB5FIfHtdg/kA1ZmQMZFXBR4FHReS9qvq3EWiTMcMmHldqWoIEwjEmFnrZVdtKOJaYfFNe4KbA42RCUSKwJ5f4cDktuM3oNJifzH8TkbKOByIyTkR+lfkmGTM8orE4h5oCBMIxqpuD1LSEOoN7YpGHQq+LmMKn3zuTqaV+C24zqg3mDsxSVT3a8UBVG0XklMw3yZjMC0Vj1DSFiMbj7K1r5Zp12zjSGsbpEGaU+QlGY4wv9PKZ987i0lOn0WMymjGjzmDC2yEi41S1EUBEygf5fmOyIhCO8djmg9z/ygH2N7TRFIgQVyj0OLnl0sWcPKMMgCKfi4lFXgtukxMGE753An8VkY7hgR8Dvp/5JhmTOc3BCE9tPczdf9hNOBrnaHsEBRwC//L+2Z3BXeJ3M6HIm9W2GjMYA+7UU9X/S6JyTg1QC6xS1V8PV8OMGaqGtjD1LSEeeOUAgXCMI22JWZMepzCp2Msfd9UDUFbgseA2OWcg47xLVLU52U1SDfy2y2vlqtpwLAcWke+RGGpYl3zq26r6VIrt3iYxLDEGRFV12bEcz4wdqkpdS4jWUKJqze7als5VAX0uB9PK/DgcUN0cYHyhl9ICd5ZbbMzgDaTb5Lckxnm/Svcq8pJ8PJSl1O5S1TsGsN25qlo/hOOYMSIWV2qagwQjMaKxOHc+v6szuAs9TqaU+nAkl3CdUV5gwW1y1kDGeX84+dnWMTGjWjQW53BTkEgsTiAS46bH3+CVfYk/DP1uJ+MK3IgkCv8q8MUV8/rd5/qdtdy7YS8HGtuZYasHmlFkIN0mp/b1uqq+NoTjf0lE/gnYBHy9YyRLz0MAz4mIAveq6n1DOJ7JU12HAh5tD/PthyvZWZ1YgufTZ8zkxMklPLipiurmADPLC/nCirn9hnDXdb7L/G5qW4Lc+Nh2bgYLcJN1/dawFJGXkl/6gGXAFhJdJkuBv6vq+/t47wvA5BQvXQ+8DNSTCOdbgCmq+s8p9jFVVQ+JSAXwPHCVqm5Isd0VwBUAM2fOPG3//v19/rtM/giEY9Q0B4mrcrgpwDVrt1HVGMAhcPUH5rPypKkAiQWmSge+Tsnl971MbUuQAs+71zjt4SgVxT6rVWmGasjjUQfSbXIugIg8AFyhqtuSjxcD3+jnvecPpBEi8gvgiTT7OJT8XCsiDwPLgV7hnbwivw8SBYgHclyT+xJrb4cSNyZrWrju4Uoa2sK4ncINHzqRs+ZPAMDpSAS31zXwBaYONLZT5u/eJ+53O61WpRkVBjP/d2FHcAOoaiVw8rEeWESmdHn4UaAyxTaFIlLc8TVwQartzNh0tD1MbXMQVeW1/Y189aEtNLSFKfK6uOOykzqD2+VwMKXUP6jgBpgxroBAJNbtOatVaUaLwYT3DhH5pYisEJFzklfLO4Zw7B+JyDYR2QqcC3wVEt0kItIxZHAS8GcR2QK8Ajypqs8M4ZgmT9S3hmhoCwPw4s5arl23jfZwjIlFXu5eczJLppcC4HY6mFJ2bCsDXnn2HCIxpT2cGHJotSrNaNJvn3fnhiI+4PPA2cmnNgA/V9XgMLXtmC1btkw3bdqU7WaYFIY6ekNVqW0J0RZKFE34/atV/Gz9WwAcN76A21YtoaIkscx8JlYG7Giv1ao0GTbkPu8BhzeAiPiBmar65lAPPJwsvEenrqM3/G4ngUiMSEy5eeWiAQViLK5UNwcJRWLEVfnln/bxwMYDACyZVsqtly6i2Jfoo/a6nUwu8eF02DolZlQa8g/mgC9JRGQlsBl4Jvn4ZBF5bKgNMGNHR5X2Ao8LkcRnt1O4d8Peft8bjsY5dDRAKBIjEotz29M7O4P7/fMm8KPVSzqDu8DjYmqpBbfJb4NZmOq7JEZ6rAdQ1c0ictwwtMnkqWMdvREIx6htCRKLJ/qdv/fYG2zan5gS8JGTpnD1efM7g9pWBjRjxWDCO6qqTfZLYY7VjHEFvcZN9zd6ozkY4UhrGFWloS3Mtx/exq6aVgA+d+Zx/ON7ZnYGdVmBh/JCz/D+I4wZJQZzJ6dSRD4JOEVkvoj8BPjrMLXL5KHBjt440hqiPjmG++DRAFc/8Dq7alpxCHz9gwv49BmzOoN7fKHXgtuMKYMJ76tIVJEPkVisqgn4yjC0yeSpFQsruHnlIiqKfTQFIlQU+1LerFRNLC7VFIgAsKumhavvf51DR4N4XA5uWrmIDy1NTBMQESYW28qAZuwZ0GgTEXECzw50xmS22WiT3NV1RAnAxrcb+O5j2wlG4pT4XNx66WIWT0uM4RYRJpV4u3XDGJMjhn96PICqxkSkXURKVbVpqAc1JpVwNE5Nc2JVQIDn36jhR8++SSyuVBR7uX31EmaNLwQS65RMKvHh9wxu1qQx+WIwlyxBYJuIPA+0dTypqldnvFVmTOg6YWdaqZ/Vp05j2exyVJWHNlV1DiGcM6GQ21Yv6ax2M9gFpozJR4MJ7yeTH8YMWdcJOyVeF4eaAtz1h91cde48XjvQyO9fPQjASdNLueWSxRT5Ej+qx7LAlDH5aMDhrar/KyIeYCGJZVzfVNXwsLXM5LWOCTtel5NoLI7f7aQ9HOVHz77J0eSNyrMXTODbF53QuS6Jy+FgUqnXgtsYBhHeInIxcC/wFonO9tkicqWqPj1cjTP560BjO0WeRHBD4kblkbYwgUji8aUnT+WL587rnHzjcjiYXHpsC0wZk48G023y7yRqSe4BEJG5JLpRLLzNoMSTNyDrWkL43YkAP9gUJBRNBPe/vH82ly+f0TmG2+1MBLd7CAtMGZNvBhPetR3BnbQXqM1we0yei8biVDcH+fhpM7j7xd00ByPUt4aJxhNDVi87dTqffM/Mzu0zsTJgB6tHafLJYH4jtovIUyLyWRH5DPA4sFFEVonIqmFqn8kjoWiMQ0eDhKNxls8p56MnT6MuGdwOgc+99zi+cO7czu19bidTS/0ZC+4bH9tObUuwWz3K9Tvt+sPkpsFcefuAGuCc5OM6oBz4CIkbmOsy2zSTT9rDUWqbQ8STk8Je3nuEX/1lH7G4Uup384OPLuaEKSWd2xd4XEwqydwCU11XNOzYf3s4yr0b9trVt8lJgxlt8rm+XheR61T1h0Nvksk3TYEIR1pDnY+fqazmjufeJK4wucTH7auXMKP83cWphmNlQKtHafJNJu8AfSyD+zJ54khrqDO4VZXf/v0dfvRsIrjnTSziPz95SrfgLvW7qSj2ZXxJV6tHafJNJsPb1oo1neJxpbrp3cWlYnHlJy/u4Zd/3gfAqTPLuOsTJ3VbCbC80MP45CzKTLN6lCbfZHJFn4HXUzN5rWNESTg59C8cjfODp3awYXc9AOctrOCaC4/vNvRvQrGXEt/wrQy4YmEFN4PVozR5I5PhbVfehlA0Rk1TiGg8EdytwSjfebSSLVWJ9cw+dtp0rjxnDo5kt4iIUFHspdA7/CsDrlhYYWFt8saQfmNEpFBVOxap+l0G2mNyWM8RJXUtIa5dt4199YkfkSvPnsMnTp/Rub0t6WrMsRvQb42ITAOmAFtVNSwiFSQKMXwWmAqgqj8YpjaaHNBzRMn+I21cs3YbtS0hXA7hWxcez/knTOKVvQ08sPEA1c0BZpYX8oUVc+1q2Jhj0O8NSxH5Comq8T8BXk5O0NkB+IHThrNxJjfUdxlRAlB5sImrH9hMbXL6+w8+urgzuO9+cTcN7SHKCz0caQvZRBljjtFArryvAI5X1QYRmQnsAc5W1ZeHt2lmtIvHldqWEO3haOdzf9lTzy1P7iAcjTOuwM0PVy1hwaRiAB7YeAC3Uyj2uXGIUOBx2EQZY47RQMI7qKoNAKr6jojssuA2PUeUADyx9TD/8cIu4gpTy3zcvnop08r8na9XNwcoL/R03qwEmyhjzLEaSHhPF5F7ujyu6PrYKumMPT1HlKgqv355P//z1/0ALJhUxA8+uqTbGG6308Gs8YXUt4Yo8LzbW2cTZYw5NgMJ72/2ePzqcDTE5IaeI0piceWeP+zm8a2HAVg2axw3rVzUrbak2+lgSqmPz58zlxsf2057OIrf7SQQidlEGWOOUb/hrar/OxINMaNfU3uEI23v3pgMRWLc+tQO/rLnCADnn1DBN/+h++Qbj8vBlFI/TofYRBljMqjf8BaRx/p6XVVXZq45ZiQNZn3r+tYQzcmp7gDNgQg3PFJJ5aFmANacPoN/OWt2t/5sr9vJ5BJfZzUcsIkyxmTKQLpN3gscAO4H/k4GZ1KKyFXAl4Ao8KSqfivFNhcCdwNO4Jeqelumjj+WdS0A3HV965uhW7imGlFS2xzkmnXb2H8kcaPxCyvmctlp0ztff2VvAw+9eoCa5iAzywvt6tqYYTCQhakmA98GFpMI0Q8C9ar6R1X947EeWETOBS4BlqrqIuCOFNs4gZ8CFwEnApeLyInHekzzrq7rW4skPrudwr0b9nZuE43FOdQU6Bbc++rb+NL9r7P/SDsuh3DDh07oFdz3vLSbo+1hxhV4rOiBMcOk3/BW1ZiqPqOqnwHOIDHOe33yqnkoPg/cpqqh5HFS/XYvB/ao6t5kpfoHSAS+GaIDje343d2rsHcdtte16k2HbVVNfPG3r1HfGkaAWeUFFPWY2v67V6vwuRwUet1p/1MwxgzdgJaEFRFvstTZb4AvAvcw9Mo5C4CzROTvIvJHETk9xTbTSHTZdKhKPpeqjVeIyCYR2VRXVzfEpuW/vta3bgtFOXw02DkUEOBPu+v5+u+2EIzEcQjMGOcjHItz94u7eWVvAwDFPjc1LcFea5XYWG5jMm8g0+P/F/grcCpwk6qerqq3qOrBAbz3BRGpTPFxCYn+9nEkrua/CTwkvVfgT9W/nnLpWVW9T1WXqeqyiRMn9te0MS/d+tb/+J6Z1DQHO4cCAjy6+RA3Pb6daFxxOYRZ5QX43C78bicuh/DAxgOU+t1MLPZa0QNjRshAblh+GmgjcaV8dZd8FUBVtSTdG1X1/HSvicjngXWqqsArIhIHJpCojdmhCpjR5fF04NAA2mz60XPY3rQyP59cPpMTpr777VRV/vuvb/Obl98BwOUQZpT7cTve/T/f53ZQ2xLsLKJw5dlzbCy3MSNgIOO8M1ltp6tHgPNI9J8vADxAfY9tNgLzRWQ2cBBYA3xymNoz5nQM24vHlZqWIIHwu1fMsbhy1/O7eKqyGoD3zC6nPRTjaCCMu8tPRCSmzBpf2G2fNpbbmOGXzYWUfwX8SkQqgTDwGVVVEZlKYkjgxaoaFZEvAc+SGCr4K1XdnsU2551ILE51U5BI7N3+7WAkxs1PvMHLyb7sf1g0ia9/cAGv7T/K3S/uJhCJ4XM7iMaUuNLrqtrGchsz/EQ1/6qXLVu2TDdt2pTtZox6wUiMmuYgsfi7PwNNgQjXP7yNNw63APCp98zkn888rrMg8Ct7G3hg0wHqWoY+hnswk4SMyTNDni9j4T1GNQcjHGkN0/X7X90c5Nq123inoR0BrjpvHpee0n1wj9MhTCrx4esxzHCwuk4S6to3fvPKRRbgZiwYcngPV3+2GcUa2sLUt4S6Bfdbda1c9dvXeaehHbdT+O5HTkwZ3JNLhx7cMLBJQsaY9Kx44Biimpjq3haKdnt+84GjfOeRStrCMQq9Tm69ZDEnzSjrto3L4WByqQ+PKzP/3x9obKfM371avI0HN2bgLLzHiFhcqW4OEuoxBnv9m3X88OkdRGLK+CIPt69awpyJRd22cTsTwd11tcChmjGugNoeE3psPLgxA2fdJmNAOBrn0NFAr+Be99pBbnniDSIxZWZ5Af95+Skpg3tKhoMb0k8SsvHgxgyMXXnnuUA41mvGpKryyz/v4/5XEisPLJpawq2XLqa0RzdG17W4M83GgxszNBbeeawlGKG+x4iSaCzOnc/v4tntNQC8b+54bvjQCb1uQqZaizvTbDy4McfOwjtPNbSFOdoe7vZcIBLjpsff4JV9ick3H146hS9/YH6vgPYlg9sxjMFtjBkaC+88k25EydH2MNc9XMmb1YnJN//03ll85r2z6LkWmN/jZFKxBbcxo52Fdw7pb0ZiNBanurn7GtwAh44GuHbdNqoaAzgEvnL+fD68dGqv/Rd4XEwq8fYKdGPM6GOjTXJEx4zE2pZgt7JlHRVqgpHexRMAdtW0cNX9r1PVGMDjcnDTykUpg7vIa8FtTC6x8M4Rfc1IbAlGONzUvXgCwKv7G/naQ1tobI9Q5HVxx2VLOXPehF77Lva5qSjxWXAbk0Os2yRHpJuRuP9IG3UtoV7b/2FHDbc/8ybRuFJR7OW21Us4rsvSrR1K/e7OtbiNMbnDwjtH9JyRqKq0BCNUFPt6bfu7TQf4+R8Ta4TMnlDIbauWMLG4d0CXF3ooK/AMb8ONMcPCwjtHdK1Q43M5aAlFaQlGcTocXP6Ll5lS4ufjy6bz+oGj/O7VKgCWTCvl1ksXUexz99rf+CJvr0k5xpjcYUvC5pD1O2v5+R/f4p0jbfjdThoDib5sn9tBIByjvi1MMJLo9z5r/gSuv/iEXgtJiQgTijwpA90YM2KGfIPJrrxzyOmzy5k1oRBV5WsPbiESV/xuJ/G40tAW6QzulSdN5arz5vWafCMiVBR7KfTat92YXGe/xTniaHuYhrZ3Z0webg5Q4nMRjcc5eDRIKDlEsMjr5MsfmNdr5IiIMKnE220VP2NM7rLf5FFOValrDdEa7D5jckqJn+rmAEdaw0SSZczGFbiZVV7YK7gdkqh+4/cMvYiCMWZ0sHHeo1gsrhxuCvYKboAz542ntiVEJK4IMKHIg8/tZM3pM7pt55BE9RsLbmPyi115j1KhaIyaplCviTcAr+xr4L/+so+4JkqTlfpcTC8rYM3pM1g+p7xzu47gzkTZMmPM6GLhPQq1h6PUNoe6rcHd4bk3avjxs28SiyuTSrzcvnopM8t7V5+x4DYmv1l4jzI9b0x2UFUe3HiA+/60D4C5Ewv54aolTEgxO7KjULDXZcFtTL6y8B4l0t2YBIir8rP1b7HutYMAnDyjjJsvWURRiiF/mS4UbIwZnSy8R4FYXKlpDhLsUWMSEvUnb3t6J+t31QGwYsFErr1oYcpwHo5CwcaY0cnCO8vC0Tg1zUEisd43JltDUW58dDubDxwFYNUp0/jCuXNxpFj9r6NQsMuC25gxwcI7i4KRRHHgWLz3jckjrSGuXbeNt+raALjirNl84vQZKZdtHYl6k8aY0cXCO0tSFQfu8E5DO9es3UpNcwinQ/jmBQu4YNHklPuxsmXGjE0W3lmQqjhwhx2Hm7lu3Taag1F8bgff+8gils8uT7ltoddFRbFVvzFmLMpqeIvIVcCXgCjwpKp+K8U2bwMtQAyIquqyEW3kMUpVb/Kc4ydS1xKiNdR7RAnAy3uPcNPjbxCKxinzu/nBqsUsnFySctsinyvlWt7GmLEha+EtIucClwBLVTUkIhV9bH6uqtaPUNOGrKPepNspnfUmv/NoJV85fz6nzByX8j1PV1Zz53NvEleYUurj9tVLmD6u9+QbsOo3xpjsrm3yeeA2VQ0BqGptFtuSUT3rTfrcTkTg1397p9e2qspvXt7Pj59NBPe8iiJ+cvkpaYO7vNBjwW2MyWp4LwDOEpG/i8gfReT0NNsp8JyIvCoiV6TbmYhcISKbRGRTXV3dsDR4oA40tuNPTkuPx5VILI7X5aC6OdBtu1hcuecPe/jVX94G4LSZZfzHJ06ivDB1abLxRV4rW2aMAYa520REXgBSDZO4PnnsccAZwOnAQyIyR3sPvzhTVQ8lu1WeF5Gdqrqh5w5V9T7gPkhU0snkv2OwOupNel1Oosnx28FInMkl/s5twtE4P3hqBxt2J3qDPrCwgm9deHzaCTYTir2UWPUbY0zSsF55q+r5qro4xcejQBWwThNeAeLAhBT7OJT8XAs8DCwfzjZnwhVnzSYYidMSjKAogUiMaFw7l2ttDUb51tqtncH9sdOmc93FC9MG90QLbmNMD9nsNnkEOA9ARBYAHqDbTUkRKRSR4o6vgQuAypFt5uDE4srxU0q46tx5jC/00hKMMr7Qy5fPm8/yOeXUtYT48oOb2VrVBMC/nTOHz69IPWtSRKgo8Vm9SWNML9kcKvgr4FciUgmEgc+oqorIVOCXqnoxMAl4ODmO2QX8VlWfGeyBUg3bW7Gwr8EtxyYUjVHbHCISi7N8Tnm3tbUB9h9p45q126htCeFyCNdceDwfOGFSyn1ZvUljTF/yvnp812F7freTQCRGJKbcvHJRRgO8LRSlriX1GtwAlQebuP6RSlqCUfxuJzdfsojTZqUeNmj1Jo3Je0OeWZf3qxj1HLZX4HHhdgr3btibsWMcbQ9T0xxMG9x/2VPPN36/lZZglHEFbu76xEl9BvfkEp8FtzGmT3mfEAca2ynzd+8z9rudVDW2D3nffa3B3eGJrYf5jxd2EVeYVubn9tVLmFrmT7mtVb8xxgxU3od3x7C9rleygUgs7SSYgYrFldqWIIFw7zW4IRHs//dv+/nfv+0H4PjJxfzgo4sZl2actgW3MWYw8r7b5Mqz5xCJKe3hKKqJz5GYcuXZc455n5FYnENHA2mDOxZX7nphd2dwn37cOP79YyelDe6OsmUW3MaYgcr7K+8VCyu4mUTfd1VjO9OHONqkrzW4AUKRGLc+uYO/vHUEgAtOnMQ3LliQtkiCy+FgUqnX6k0aYwYl78MbEgGeiZElfa3BDdAciHD9I5VsP9QMwJrTZ/CvZ81Ou2Sry+FgSpmVLTPGDN6YCO9M6GsNboCa5iDXrt3G/oZ2BPjiuXNZder0tNtb2TJjzFBYePdDValtCdGWZg1ugH31bVyzdiv1rWHcTuG6ixay4vj0V/oel4PJJRbcxphjZ+Hdh2gsTk1LiFCKqu4dtlQd5YZHKmkLxSj0JCbfpFuzG6zepDEmMyy80whFY9Q0hYjGe1d177Bhdx3ff3IHkZgyvtDDbauWMLeiKO32vmRwW71JY8xQWXin0N9Ud4BHNx/knj/sQYEZ4/zcvnopk0vTlyXzexLBbfUmjTGZYOHdQ1N7hCNtobSvqyq/+svb/L+/J6rinDilmO9/dAml/vQr/1mhYGNMpll4Jw1kqns0FueuF3bzdGU1AGfMKefGD5/Y5+SaIp+LiUUW3MaYzLLwJjEjsqY5SLCPG5OBSIybH3+Dv+9rAOCixZP52gcX9HnjscTvZoLVmzTGDIMxH97haJya5iCRWPobk03tEa57eBs7q1sA+MczZvK59x3X59V0WYEnbS1KY4wZqjEd3oFwrM+lXAEONwW4Zu02qhoDCHD1B+ZxycnT0m7/yt4Gfv9aFdXNwWEt/GCMGdvG7CyR5mCE6n6Ce09tK1fdv5mqxgBup/DdlSf2G9w/eWkPje1hyvxualuC3PjYdtbvrB2Of4IxZgwbk+F9pDVEfUso7RolAK+908hXHtxMQ1uYIq+LH1+2lLPnT+xzv2tfq8Lndgxr4QdjjIEx0m3SUcPynYY2JpX4+PhpM3rVl+zqpZ21/PDpnUTjyoQiD7evXsrsCYV9HmNCsZfDzcFhK/xgjDFd5f2Vd0cNy5rmAIUeF3UtIe5+cTev7G1Iuf3a16q45ckdROPKrPIC/vPyU/oN7onFXkp8bmaMKyDQY8RKJgo/GGNMT3kf3vdu2IvTAW5nYiy23+3E5RAe2Hig23aqyn0b9vLTl94CYPHUEu5eczIVJelnTYoIFSU+in2Jq+3hKPxgjDGp5H23yf6GNgo9zm792z63g+rmQOfjaCzOHc/t4rk3agA4c+54bvjQCXj7mHyTqsJ7pgs/GGNMOnkd3o1tYSqKfBxpC+HvEsTBSJzJJYkiwIFwjO89vp2NbzcC8JGlU7j6A/P7nHzTV73JTBV+MMaYvuRtt0ltc5DG9jBrTp9BNK4EIjGUxOdoXFlz+gwa28N87aEtncH9ufcdx1fO7zu4rd6kMWY0yMsr71hcaU0WT1g+p5wvM58HNh6gujnA5BI/a06fwfRyP1ffv5mDRwM4BL5y/gI+vHRKn/vtCG6rN2mMyba8DO+eo7eXzynvNjRwV00LV93/Oo3tETwuB9/50AmcOW9Cn/t0ORxMLvXhceXtHyvGmBySl0m0p7aVrz24JeVwwE1vN/DVB7fQ2B6h2OfijsuWWnAbY3JOXqaRU+BIW+/x3C/sqOG6hysJRGJUFHu5Z83JLJ5W2ue+3M5EhXcLbmPMaJKniSS9xnM/tOkAP3hqJ7G4MntCIT+5/BRmje978k1HhXe3FQo2xowyWUslEXlQRDYnP94Wkc1ptrtQRN4UkT0icu1gjuFzOzjc1M7P1u/h//wxsb7I0uml3P2Jk5lY3Pc62x3BbRXejTGjUdZuWKrqJzq+FpE7gaae24iIE/gp8EGgCtgoIo+p6hsDOUYgHCMUVX7/6kEAzp4/gW9ffEK/XSAel4MppX6r8G6MGbWyPtpEEhUNPg6cl+Ll5cAeVd2b3PYB4BKgn/BW2sJR6lrChJNFFi45eSpfOndev4FswW2MyQVZD2/gLKBGVXeneG0a0HURkirgPf3tMBpXGtoincH9L++fzeXLZ/RbR9LrTlR4t+A2xox2wxreIvICMDnFS9er6qPJry8H7k+3ixTPpVyEW0SuAK4A8E+eSyASwyHw9QuO56LFqZrQndftZEqJD4cFtzEmBwxreKvq+X29LiIuYBVwWppNqoAZXR5PBw6lOdZ9wH0A3inz1edycONHTuSMOeP7bacvecVtwW2MyRXZ7jY5H9ipqlVpXt8IzBeR2cBBYA3wyf526nIId378JE6YUtJvA/yeRHD316VijDGjSbbHwa2hR5eJiEwVkacAVDUKfAl4FtgBPKSq2/vb6byK4gEFd4HHZcFtjMlJWb3yVtXPpnjuEHBxl8dPAU8NZr8DyeICj4tJJV4LbmNMTsp2t0lWFHpdVBRbcBtjcteYC+8ir4uJFtzGmBw3psK7yOeiojh9TUpjjMkVYya8i33uftczMcaYXDEmwrvU72Z8kQW3MSZ/5H14lxV4KC/0ZLsZxhiTUXkd3uMKPIyz4DbG5KG8De/yQg9lBRbcxpj8lO0ZlsPC6RALbmNMXsvLK+9MjOBev7OWezfs5UBjOzPGFXDl2XNYsbAiA3s2xpihy8sr76Fav7OWGx/bTm1LkDK/m9qWIDc+tp31O2uz3TRjjAEsvFO6d8Ne3E6hwONCJPHZ7RTu3bA3200zxhjAwjulA43t+N3Obs/53U6qGtuz1CJjjOnOwjuFGeMKCERi3Z4LRGJMH1eQpRYZY0x3Ft4pXHn2HCIxpT0cRTXxORJTrjx7TrabZowxgIV3SisWVnDzykVUFPtoCkSoKPZx88pFNtrEGDNq5OVQwUxYsbDCwtoYM2rZlbcxxuQgC29jjMlBFt7GGJODLLyNMSYHWXgbY0wOsvA2xpgcZOFtjDE5yMLbGGNykIW3McbkIAtvY4zJQaKq2W5DxolIHbA/zcsTgPoRbM6xsDZmTi6009qYGbnUxnpVvXAoO8rL8O6LiGxS1WXZbkdfrI2ZkwvttDZmxlhro3WbGGNMDrLwNsaYHDQWw/u+bDdgAKyNmZML7bQ2ZsaYauOY6/M2xph8MBavvI0xJudZeBtjTA7K+/AWkQdFZHPy420R2ZxmuwtF5E0R2SMi145wMxGRq5LH3y4iP0qzzdsisi35b9k0StuY7fP4PRE52OV7fnGa7bJ2LgfRxqyey2QbviEiKiIT0rye1Z/JZBv6a2PWzqOI3CIiW5Pn5zkRmZpmu8GfR1UdMx/AncCNKZ53Am8BcwAPsAU4cQTbdS7wAuBNPq5Is93bwIQsnbt+25jt85hsw/eAbwxgu2yey37bOErO5QzgWRIT3lKeq2yex4G0MdvnESjp8vXVwP/J1HnM+yvvDiIiwMeB+1O8vBzYo6p7VTUMPABcMoLN+zxwm6qGAFS1dgSPPVADaWO2z2M+GQ3n8i7gW8BoHtXQXxuzeh5VtbnLw0IyeC7HTHgDZwE1qro7xWvTgANdHlclnxspC4CzROTvIvJHETk9zXYKPCcir4rIFSPYPhhYG7N9Hjt8Kfmn6q9EZFyabbJ5LqH/Nmb1XIrISuCgqm7pZ9OsnccBtjHrP5Mi8n0ROQB8CrgxzWaDPo+uTDUwm0TkBWByipeuV9VHk19fTuqrbgBJ8VxGrzb6aiOJ78M44AzgdOAhEZmjyb+nujhTVQ+JSAXwvIjsVNUNo6iNw34eB9DOnwO3JI97C4musn9OsW02z+VA2pjtn8lvAxcMYDfZPI8DaWNWz6OqPqqq1wPXi8h1wJeA76bYdtDnMS/CW1XP7+t1EXEBq4DT0mxSRaLvrMN04FBmWpfQVxtF5PPAumQQviIicRIL2NT12Meh5OdaEXmYxJ+EGftFyUAbh/089tfOrkTkF8ATafaRtXM5wDZm7WdSRJYAs4Etid5GpgOvichyVa3usY+snMdBtDGrv9s9/BZ4khThfSzncax0m5wP7FTVqjSvbwTmi8hsEfEAa4DHRqx18AhwHoCILCBxY6Xb6mgiUigixR1fk7jiqBxNbST75xERmdLl4UdJcY6yfS4H0kayeC5VdZuqVqjqcap6HIkAPLVncGfzPA60jWT5Z1JE5nd5uBLYmWKbYzuPI3XXNZsfwP8A/9bjuanAU10eXwzsInFn+voRbp8H+E3yG/YacF7PNpK4W74l+bF9NLYx2+cxefxfA9uArSR+SaeMwnPZbxtHw7ns0o63SY6EGE3ncSBtzPZ5BNYmf2e2Ao8D0zJ1Hm16vDHG5KCx0m1ijDF5xcLbGGNykIW3McbkIAtvY4zJQRbexhiTgyy8zZglIq0Z2s//iMi+5Ipwr4nIezOxX2P6YuFtTGZ8U1VPBq4F7s1yW8wYYOFtxjxJ+LGIVCbXVP5E8nmHiPxMEuuXPyEiT4nIZf3sbgMwb/hbbca6vFjbxJghWgWcDJxEYr2WjSKyATgTOA5YAlQAO4Bf9bOvj5CYPWnMsLLwNgbeD9yvqjGgRkT+SGLlxPcDv1PVOFAtIi/1sY8fi8gNJBbq+v+GvcVmzLPwNib1sqF9PZ/KN1X195lojDEDYX3exiT6qT8hIk4RmQicDbwC/BlYnez7ngSsyGIbjenGrryNgYeB95JY1U2Bb6lqtYisBT5AYlW4XcDfgaastdKYLmxVQWP6ICJFqtoqIuNJXI2fqb3XjDZmxNmVtzF9e0JEykisZ36LBbcZLezK2xhjcpDdsDTGmBxk4W2MMTnIwtsYY3KQhbcxxuQgC29jjMlB/z/4JU1fbJJ0iAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "g = sns.lmplot(x=\"log P\", y=\"MR_predicted_values\", data=df)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "``````{admonition} Key Points\n", ":class: key\n", "\n", "* Statsmodels allows you to specify your equations using data frames and column names.\n", "\n", "* Calling `.summary`. on the fit gives you a summary of the fit and parameters.\n", "\n", "* You can use `.predict` to predict new values using the fitted model.\n", "\n", "* You must give the predict method a dataframe with the same column names as the original dataframe.\n", "``````" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10 (default, Nov 14 2022, 12:59:47) \n[GCC 9.4.0]" }, "vscode": { "interpreter": { "hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1" } } }, "nbformat": 4, "nbformat_minor": 4 }