{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Bootstrap Sampling" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "remove-print" ] }, "source": [ "[Click here to run this notebook on Colab](https://colab.research.google.com/github/AllenDowney/ElementsOfDataScience/blob/v1/12_bootstrap.ipynb)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "tags": [ "remove-print" ] }, "outputs": [], "source": [ "from os.path import basename, exists\n", "\n", "def download(url):\n", " filename = basename(url)\n", " if not exists(filename):\n", " from urllib.request import urlretrieve\n", "\n", " local, _ = urlretrieve(url, filename)\n", " print(\"Downloaded \" + str(local))\n", " return filename\n", "\n", "download('https://raw.githubusercontent.com/AllenDowney/ElementsOfDataScience/v1/utils.py')\n", "\n", "import utils" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the previous chapter we used resampling to compute sampling distributions, which quantify the variability in an estimate due to random sampling.\n", "\n", "In this chapter, we'll use data from the General Social Survey (GSS) to estimate average income and the 10th percentile of income.\n", "We'll see that the resampling method we used in the previous chapter works for the average but not for the 10th percentile.\n", "To solve this problem, we'll use another kind of resampling, called bootstrapping.\n", "\n", "Then we'll use bootstrapping to compute sampling distributions for correlations and the parameters of linear regression.\n", "Finally, I'll point out a problem with bootstrap resampling when there are not enough different values in a dataset, and a way to solve it with KDE resampling." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Estimating Average Income\n", "\n", "As a first example, we'll use data from the General Social Survey to estimate average family income.\n", "We'll work with an extract that contains just the columns we need, as we did in Chapter 8.\n", "Instructions for downloading the extract are in the notebook for this chapter." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "try:\n", " import empiricaldist\n", "except ImportError:\n", " !pip install empiricaldist" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "download('https://github.com/AllenDowney/ElementsOfDataScience/' +\n", " 'raw/v1/data/gss_extract_2022.hdf');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can load the data like this and display the first few rows." ] }, { "cell_type": "code", "execution_count": 4, "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", "
yearidageeducdegreesexgunlawgrassrealinc
01972123.016.03.02.01.0NaN18951.0
11972270.010.00.01.01.0NaN24366.0
21972348.012.01.02.01.0NaN24366.0
31972427.017.03.02.01.0NaN30458.0
41972561.012.01.02.01.0NaN50763.0
\n", "
" ], "text/plain": [ " year id age educ degree sex gunlaw grass realinc\n", "0 1972 1 23.0 16.0 3.0 2.0 1.0 NaN 18951.0\n", "1 1972 2 70.0 10.0 0.0 1.0 1.0 NaN 24366.0\n", "2 1972 3 48.0 12.0 1.0 2.0 1.0 NaN 24366.0\n", "3 1972 4 27.0 17.0 3.0 2.0 1.0 NaN 30458.0\n", "4 1972 5 61.0 12.0 1.0 2.0 1.0 NaN 50763.0" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "gss = pd.read_hdf('gss_extract_2022.hdf', 'gss')\n", "gss.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The column `realinc` records family income, converted to 1986 dollars.\n", "The following figure uses the Seaborn function `kdeplot` to show the distribution of family income.\n", "The argument `cut=0` cuts off the curve so it doesn't extend beyond the observed minimum and maximum values." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "\n", "sns.kdeplot(gss['realinc'] / 1000, label='GSS data', cut=0)\n", "\n", "plt.xlabel('Family income ($1000s)')\n", "plt.ylabel('PDF')\n", "plt.title('Distribution of income')\n", "plt.legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The distribution of income is skewed to the right; most household incomes are less than $60,000, but a few are substantially higher.\n", "Here are the mean and standard deviation of the reported incomes." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "32537.399981032493 30883.22609399141\n" ] } ], "source": [ "mean_realinc = gss['realinc'].mean()\n", "std_realinc = gss['realinc'].std()\n", "print(mean_realinc, std_realinc)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The average family income in this sample is $32,537.\n", "But if we ran the GSS survey again, the average might be higher or lower.\n", "To see how much it might vary, we can use this function from the previous chapter to simulate the sampling process." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "def simulate_sample_mean(n, mu, sigma):\n", " sample = np.random.normal(mu, sigma, size=n)\n", " return sample.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`simulate_sample_mean` takes as parameters the sample size and the mean and standard deviation.\n", "It generates a sample from a normal distribution and returns the mean.\n", "\n", "Before we call this function, we have to count the number of valid responses." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "64912" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n_realinc = gss['realinc'].count()\n", "n_realinc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, if we call `simulate_sample_mean` once, we get a single value from the sampling distribution of the mean." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# set the random seed so we get the same results every time\n", "np.random.seed(18)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "32573.420195135117" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "simulate_sample_mean(n_realinc, mean_realinc, std_realinc)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we call it many times, we get a random sample from the sampling distribution." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "t1 = [simulate_sample_mean(n_realinc, mean_realinc, std_realinc)\n", " for i in range(1001)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the sampling distribution looks like." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.kdeplot(t1)\n", "\n", "plt.xlabel('Family income (1986 $)')\n", "plt.ylabel('PDF')\n", "plt.title('Sampling distribution of mean income');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This distribution shows how much we would expect the observed mean to vary if we ran the GSS survey again.\n", "We'll use the following function to summarize the sampling distribution." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "def summarize(t, digits=2, label=''):\n", " est = np.mean(t).round(digits)\n", " SE = np.std(t).round(digits)\n", " CI90 = np.percentile(t, [5, 95]).round(digits)\n", " data = [est, SE, CI90]\n", " columns = ['Estimate', 'SE', 'CI90']\n", " table = pd.DataFrame([data], index=[label], columns=columns)\n", " return table" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EstimateSECI90
32533.8120.7[32331.4, 32724.2]
\n", "
" ], "text/plain": [ " Estimate SE CI90\n", " 32533.8 120.7 [32331.4, 32724.2]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "summary1 = summarize(t1, digits=1)\n", "summary1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result shows the mean of the sampling distribution, the standard error, and a 90% confidence interval.\n", "The mean of the sampling distribution is close to the mean of the data, as we expect.\n", "The standard error quantifies the width of the sampling distribution, which is about $121.\n", "Informally, that's how much we would expect the sample mean to change if we ran the survey again.\n", "And if we ran the survey many times and computed the average income each time, we would expect 90\\% of the results to fall in the range from 32,331 to 32,724." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "text/plain": [ "32537.399981032493" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_realinc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this section, we used a normal distribution to simulate the sampling process.\n", "The normal distribution is not a particularly good model for the distribution of income, but it works well enough for this example, and the results are reasonable.\n", "In the next section we'll see an example where the normal distribution is not good enough and the results are not reasonable.\n", "Then we'll see how to fix the problem." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Estimating Percentiles\n", "\n", "Suppose that, instead of estimating the average income, we want to estimate the 10th percentile.\n", "Computing percentiles of income is often relevant to discussions of income inequality.\n", "\n", "To compute the 10th percentile of the data, we can use the Pandas method `quantile`, which is similar to the NumPy function `percentile`, except that it drops `NaN` values.\n", "Also, the parameter of `quantile` is a probability between 0 and 1, rather than a percentage between 0 and 100." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5730.0" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gss['realinc'].quantile(0.1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The 10th percentile of the sample is $5730, but if we collected another sample, the result might be higher or lower.\n", "To see how much it would vary, we can use the following function to simulate the sampling process: `simulate_sample_percentile` generates a sample from a normal distribution and returns the 10th percentile." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "def simulate_sample_percentile(n, mu, sigma):\n", " sample = np.random.normal(mu, sigma, size=n)\n", " return np.percentile(sample, 10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we call it many times, the result is a sample from the sampling distribution of the 10th percentile." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "t2 = [simulate_sample_percentile(n_realinc, mean_realinc, std_realinc)\n", " for i in range(1001)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what that sampling distribution looks like." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.kdeplot(t2)\n", "\n", "plt.xlabel('Family income (1986 $)')\n", "plt.ylabel('PDF')\n", "plt.title('Sampling distribution of the 10th percentile');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that something has gone wrong.\n", "All of the values in the sampling distribution are negative, even though no one in the sample reported a negative income.\n", "To see what happened, let's look at the distribution of reported incomes again compared to the normal distribution with the same mean and standard deviation." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "from scipy.stats import norm\n", "\n", "xs = np.linspace(-50, 150)\n", "ys = norm(mean_realinc/1000, std_realinc/1000).pdf(xs)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.kdeplot(gss['realinc'] / 1000, label='GSS data', cut=0)\n", "plt.plot(xs, ys, color='0.7', label='normal model')\n", "\n", "plt.xlabel('Family income ($1000s)')\n", "plt.ylabel('PDF')\n", "plt.title('Distribution of income')\n", "plt.legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The problem is that the normal model extends past the lower bound of the observed values, so it doesn't produce sensible results.\n", "Fortunately there is a simple alternative that is more robust: bootstrapping." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bootstrapping\n", "\n", "Bootstrapping is a kind of resampling, based on the framework we saw in the previous chapter:\n", "\n", "![](https://github.com/AllenDowney/ElementsOfDataScience/raw/master/figs/resampling.png)\n", "\n", "The idea is that we treat the original sample as if it were the entire population, and simulate the sampling process by choosing random rows with replacement.\n", "`DataFrame` provides a method called `sample` we can use to select a random sample of the rows." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(64912, 9)" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bootstrapped = gss.sample(n=n_realinc, replace=True)\n", "bootstrapped.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The argument `n=n_realinc` means that the bootstrapped sample has the same size as the original. \n", "`replace=True` means that sampling is done with replacement -- that is, the same row can be chosen more than once.\n", "To see how many times each row appears in the bootstrapped sample, we can use `value_counts` and the `id` column, which contains a unique identifier for each respondent. " ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "id\n", "90 55\n", "373 49\n", "322 47\n", "190 46\n", "975 46\n", "Name: count, dtype: int64" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "repeats = bootstrapped['id'].value_counts()\n", "repeats.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Several of the rows appear more than 40 times.\n", "Since some rows appear many times, other rows don't appear at all. To see how many, we can use `set` subtraction to count the values of `id` that appear in the original dataset but not the bootstrapped sample." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "228" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "unused = set(gss['id']) - set(bootstrapped['id'])\n", "len(unused)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can use bootstrapping to generate a sampling distribution.\n", "For example, the following function takes a `DataFrame`, generates a bootstrapped sample, and returns the average income." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "def bootstrap_mean(df, varname):\n", " bootstrapped = df.sample(n=len(df), replace=True)\n", " return bootstrapped[varname].mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we run it many times, we get a sample from the sampling distribution of the mean." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "t3 = [bootstrap_mean(gss, 'realinc')\n", " for i in range(1001)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's a summary of the results, compared to the results based on the normal model." ] }, { "cell_type": "code", "execution_count": 27, "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", "
EstimateSECI90
normal model32533.80120.70[32331.4, 32724.2]
bootstrapping32540.97120.44[32345.43, 32735.15]
\n", "
" ], "text/plain": [ " Estimate SE CI90\n", "normal model 32533.80 120.70 [32331.4, 32724.2]\n", "bootstrapping 32540.97 120.44 [32345.43, 32735.15]" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "summary3 = summarize(t3)\n", "table = pd.concat([summary1, summary3])\n", "table.index=['normal model', 'bootstrapping']\n", "table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The results from bootstrap sampling are consistent with the results based on the normal model.\n", "Now let's see what happens when we estimate the 10th percentile.\n", "The following function generates a bootstrapped sample and returns the 10th percentile." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "def bootstrap_income_percentile(df):\n", " bootstrapped = df.sample(n=len(df), replace=True)\n", " return bootstrapped['realinc'].quantile(0.1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use it to generate a sample from the sampling distribution of the 10th percentile." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "t4 = [bootstrap_income_percentile(gss)\n", " for i in range(1001)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the results from bootstrapping compared to the results from the normal model." ] }, { "cell_type": "code", "execution_count": 30, "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", "
EstimateSECI90
normal model-7036.41206.15[-7377.72, -6709.54]
bootstrapping5687.1291.42[5512.5, 5827.5]
\n", "
" ], "text/plain": [ " Estimate SE CI90\n", "normal model -7036.41 206.15 [-7377.72, -6709.54]\n", "bootstrapping 5687.12 91.42 [5512.5, 5827.5]" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "summary2 = summarize(t2)\n", "summary4 = summarize(t4)\n", "table = pd.concat([summary2, summary4])\n", "table.index=['normal model', 'bootstrapping']\n", "table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The results from bootstrapping are more sensible -- the mean of the sampling distribution and the bounds of the confidence interval are positive and consistent with the 10th percentile of the data." ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "text/plain": [ "5730.0" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gss['realinc'].quantile(0.1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In general, bootstrapping is robust -- that is, it works well with many different distributions and many different statistics.\n", "However, at the end of the chapter, we'll see one example where it fails." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Working with Bigger Data\n", "\n", "As sample size increases, errors due to random sampling get smaller.\n", "To demonstrate this effect, we'll use data from the Behavioral Risk Factor Surveillance System (BRFSS) to estimate the average height for men in the United States.\n", "\n", "First, let's read the 2021 data, which I have stored in an HDF file.\n", "Instructions for downloading it are in the notebook for this chapter." ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "download('https://github.com/AllenDowney/ElementsOfDataScience/raw/v1/data/brfss_2021.hdf');" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(438693, 10)" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "brfss = pd.read_hdf('brfss_2021.hdf', 'brfss')\n", "brfss.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This dataset contains 438,693 rows, one for each respondent, and 10 columns, one for each variable in the extract.\n", "Here are the first few rows." ] }, { "cell_type": "code", "execution_count": 34, "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", "
SEQNOHTM4WTKG3_SEX_AGEG5YR_VEGESU1_INCOMG1_LLCPWT_HTM4G10AGE
02021000001150.032.66211.02.143.0744.745531140.072.0
12021000002168.0NaN210.01.28NaN299.137394160.067.0
22021000003165.077.11211.00.712.0587.862986160.072.0
32021000004163.088.4529.01.655.01099.621570160.062.0
42021000005180.093.44112.02.582.01711.825870170.077.0
\n", "
" ], "text/plain": [ " SEQNO HTM4 WTKG3 _SEX _AGEG5YR _VEGESU1 _INCOMG1 _LLCPWT \\\n", "0 2021000001 150.0 32.66 2 11.0 2.14 3.0 744.745531 \n", "1 2021000002 168.0 NaN 2 10.0 1.28 NaN 299.137394 \n", "2 2021000003 165.0 77.11 2 11.0 0.71 2.0 587.862986 \n", "3 2021000004 163.0 88.45 2 9.0 1.65 5.0 1099.621570 \n", "4 2021000005 180.0 93.44 1 12.0 2.58 2.0 1711.825870 \n", "\n", " _HTM4G10 AGE \n", "0 140.0 72.0 \n", "1 160.0 67.0 \n", "2 160.0 72.0 \n", "3 160.0 62.0 \n", "4 170.0 77.0 " ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "brfss.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `HTM4` column contains the respondents' heights in centimeters." ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "height = brfss['HTM4']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To select male respondents, we'll use the `SEX` column to make a Boolean `Series`." ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "203760" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "male = (brfss['_SEX'] == 1)\n", "male.sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use `notna` and `sum` to count the number of male respondents with valid height data." ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "193701" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n_height = height[male].notna().sum()\n", "n_height" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is the mean and standard deviation of these values." ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(178.14807357731763, 7.987083970017878)" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_height = height[male].mean()\n", "std_height = height[male].std()\n", "mean_height, std_height" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The average height for men in the U.S. is about 178 cm.\n", "To see how precise this estimate is, we can use bootstrapping to generate values from the sampling distribution.\n", "To reduce computation time, I set the number of iterations to 201." ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EstimateSECI90
178.1480.018[178.121, 178.176]
\n", "
" ], "text/plain": [ " Estimate SE CI90\n", " 178.148 0.018 [178.121, 178.176]" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t5 = [bootstrap_mean(brfss[male], 'HTM4')\n", " for i in range(201)]\n", "\n", "summarize(t5, digits=3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Because the sample size is so large, the standard error is small and the confidence interval is narrow.\n", "This result suggests that our estimate is very precise, which is true in the sense that the error due to random sampling is small.\n", "\n", "But there are other sources of error.\n", "For example, the heights and weights in this dataset are self-reported, so they are vulnerable to **social desirability bias**, which is the tendency of people to represent themselves in a positive light. \n", "\n", "It's also possible that there are errors in recording the data.\n", "In a previous year of the BRFSS, there are a suspicious number of heights recorded as 60 or 61 centimeters.\n", "I suspect that many of them are six feet tall, or six feet and one inch, and something went wrong in recording the data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And that brings us to the point of this example: \n", "\n", "> With large sample sizes, variability due to random sampling is small, but with real-world data, that often means that other sources of error are bigger. So we can't be sure that the estimate is accurate.\n", "\n", "In fact, there is another source of error in this example that we have not taken into account: oversampling." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Weighted Bootstrapping\n", "\n", "By design, the BRFSS oversamples some demographic groups -- that is, people in some groups are more likely than others to appear in the sample.\n", "If people in these groups are taller than others on average, or shorter, our estimated mean would not be accurate.\n", "\n", "We encountered this issue in Chapter 7, where we used data from the National Survey of Family Growth (NSFG) to compute the average birth weight for babies in the United States.\n", "In that example, we corrected for oversampling by computing a weighted mean.\n", "\n", "In this example, we'll use a different method, **weighted bootstrapping**, to estimate the mean and compute a confidence interval.\n", "The BRFSS dataset includes a column, `_LLCPWT`, that contains sampling weights.\n", "The sampling weight for each respondent is the number of people in the population they represent.\n", "People in oversampled groups have lower sampling weights; people in undersampled groups have higher sampling weights.\n", "Here's what the range of values looks like." ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 438693.000000\n", "mean 560.851529\n", "std 1136.781547\n", "min 0.545800\n", "25% 95.573000\n", "50% 248.677287\n", "75% 592.546811\n", "max 49028.547000\n", "Name: _LLCPWT, dtype: float64" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "brfss['_LLCPWT'].describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The lowest sampling weight is about 0.5; the largest is about 49,000 -- so that's a very wide range!\n", "We can take these weights into account by passing them as an argument to `sample`.\n", "That way, the probability that any row is selected is proportional to its sampling weight." ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "n = len(brfss)\n", "bootstrapped = brfss.sample(n=n, replace=True, weights='_LLCPWT')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we saw with unweighted bootstrapping, the same row can appear more than once.\n", "To see how many times, we can use `value_counts` and the `SEQNO` column, which contains a unique identifier for each respondent." ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "SEQNO\n", "2021000019 144\n", "2021001348 132\n", "2021000044 129\n", "2021003808 127\n", "2021000091 124\n", "Name: count, dtype: int64" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "repeats = bootstrapped['SEQNO'].value_counts()\n", "repeats.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some rows appear more than 100 times.\n", "Most likely, these are the rows for people from undersampled groups, who have the highest sampling weights.\n", "\n", "To see how many rows don't appear at all, we can use `set` subtraction to count the values of `SEQNO` that appear in the original dataset but not the sample." ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "14616" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "unused = set(brfss['SEQNO']) - set(bootstrapped['SEQNO'])\n", "len(unused)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are thousands of rows that don't appear in this sample, but they are not dropped altogether -- when we repeat this process, they will appear in other samples.\n", "\n", "Now we can use weighted bootstrapping to generate values from the sampling distribution of the mean.\n", "The following function uses `sample` and the `_LLCPWT` column to generate a bootstrapped sample, then returns the average height." ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [], "source": [ "def weighted_bootstrap_mean(df):\n", " n = len(df)\n", " sample = df.sample(n=n, replace=True, weights='_LLCPWT')\n", " return sample['HTM4'].mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I'll test this function with a `DataFrame` that contains only male respondents.\n", "If we run it once, we get a single value from the sampling distribution of the weighted mean." ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "177.569630553049" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "male_df = brfss[male]\n", "weighted_bootstrap_mean(male_df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we run it many times, we get a random sample from the sampling distribution." ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EstimateSECI90
177.5410.018[177.513, 177.573]
\n", "
" ], "text/plain": [ " Estimate SE CI90\n", " 177.541 0.018 [177.513, 177.573]" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t6 = [weighted_bootstrap_mean(male_df) \n", " for i in range(201)]\n", "\n", "summarize(t6, digits=3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The mean of the sampling distribution estimates the average height for men in the U.S., corrected for oversampling.\n", "If we compare it to the unweighted mean we computed, it is a little lower." ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "177.54149968876962 178.14807357731763\n" ] } ], "source": [ "print(np.mean(t6), mean_height)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So it seems like people in the oversampled groups are taller than others, on average, by enough to bring the unweighted mean up by about half a centimeter.\n", "\n", "The difference between the weighted and unweighted averages is bigger than the width of the confidence interval.\n", "So in this example the error if we fail to correct for oversampling is bigger than variability due to random sampling." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Correlation and Regression\n", "\n", "Bootstrap resampling can be used to estimate other statistics and their sampling distributions.\n", "For example, in Chapter 9 we computed the correlation between height and weight, which is about 0.47." ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.4693981914367917" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "var1, var2 = 'HTM4', 'WTKG3'\n", "corr = brfss[var1].corr(brfss[var2])\n", "corr" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "That correlation does not take into account oversampling.\n", "We can correct it with this function, which generates a weighted bootstrapped sample and uses it to compute the correlation of the columns specified by `var1` and `var2`." ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "def weighted_bootstrap_corr(df, var1, var2):\n", " n = len(df)\n", " sample = df.sample(n=n, replace=True, weights='_LLCPWT')\n", " corr = sample[var1].corr(sample[var2])\n", " return corr" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** Use this function to draw 101 values from the sampling distribution of the correlation between height and weight.\n", "What is the mean of these values? Is it substantially different from the correlation we computed without correcting for oversampling?\n", "Compute the standard error and 90% confidence interval for the estimated correlation." ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EstimateSECI90
0.454920.00125[0.45244, 0.45678]
\n", "
" ], "text/plain": [ " Estimate SE CI90\n", " 0.45492 0.00125 [0.45244, 0.45678]" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "t7 = [weighted_bootstrap_corr(brfss, 'HTM4', 'WTKG3')\n", " for i in range(101)]\n", "\n", "summarize(t7, digits=5)" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# Solution\n", "\n", "# The estimated correlation with weighted bootstrapping is\n", "# slightly smaller, but the difference is not enough to matter \n", "# in practice.\n", "\n", "# The error due to oversampling, although small,\n", "# is bigger than variability due to random sampling,\n", "# which is small because the sample size is so large." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** In Chapter 9 we also computed the slope of the regression line for weight as a function of height.\n", "Here's the result." ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9366891536604244" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from scipy.stats import linregress\n", "\n", "subset = brfss.dropna(subset=['WTKG3', 'HTM4'])\n", "res = linregress(subset['HTM4'], subset['WTKG3'])\n", "res.slope" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The estimated slope is 0.94 kg/cm, which means that we expect someone 1 cm taller than average to be about 0.94 kg heavier than average.\n", "\n", "Write a function called `weighted_bootstrap_slope` that takes a `DataFrame`, generates a weighted bootstrapped sample, runs `linregress` with height and weight, and returns the slope of the regression line.\n", "\n", "Run it 101 times and collect the results. Use the sampling distribution to compute the mean of the slope estimates, standard error, and a 90% confidence interval." ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# Solution\n", "\n", "def weighted_bootstrap_slope(df):\n", " n = len(df)\n", " sample = df.sample(n=n, replace=True, weights='_LLCPWT')\n", " subset = sample.dropna(subset=['WTKG3', 'HTM4'])\n", " res = linregress(subset['HTM4'], subset['WTKG3'])\n", " return res.slope" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EstimateSECI90
0.905250.00307[0.90018, 0.90964]
\n", "
" ], "text/plain": [ " Estimate SE CI90\n", " 0.90525 0.00307 [0.90018, 0.90964]" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "t8 = [weighted_bootstrap_slope(brfss)\n", " for i in range(101)]\n", "\n", "summarize(t8, digits=5)" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# Solution\n", "\n", "# In this example, again the value we get with weighted resampling is a little\n", "# different, but not enough to matter in practice.\n", "\n", "# Because the sample size is large, the standard error is small and \n", "# the confidence interval is narrow, but there might be sources of error,\n", "# other than random sampling, that have a bigger effect." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Limitations of Bootstrapping\n", "\n", "One limitation of bootstrapping is that it can be computationally expensive.\n", "With small datasets, it is usually fast enough that we can generate a thousand values from the sampling distribution, which means that we can compute standard errors and confidence intervals precisely.\n", "With larger datasets, we can cut the computation time by generating fewer values.\n", "With 100-200 values, the standard errors we get are usually precise enough, but the bounds of the confidence intervals might be noisier.\n", "\n", "The other limitation, which can be more problematic, is that bootstrap sampling does not work well with datasets that contain a small number of different values.\n", "To demonstrate, I'll select data from the GSS for one year, 2018:" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [], "source": [ "one_year = gss['year']==2018\n", "gss2018 = gss[one_year]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And I'll use bootstrapping to generate values from the sampling distribution of the 10th percentile." ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [], "source": [ "t9 = [bootstrap_income_percentile(gss2018)\n", " for i in range(1001)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the results." ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EstimateSECI90
5155.46223.92[5107.5, 5107.5]
\n", "
" ], "text/plain": [ " Estimate SE CI90\n", " 5155.46 223.92 [5107.5, 5107.5]" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "summary9 = summarize(t9)\n", "summary9" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The estimate and the standard error look plausible at first glance, but the width of the confidence interval is 0, which suggests that something has gone wrong!\n", "The problem is that `realinc` is not really a numerical variable -- it is a categorical variable in disguise.\n", "Using `value_counts`, we can see that there are only 26 distinct values in this column." ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "26" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(gss2018['realinc'].value_counts())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The reason is that the GSS does not ask respondents to report their incomes.\n", "Instead, it gives them a list of ranges and asks them to pick the range their income falls in. \n", "Then GSS analysts compute the midpoint of each range and convert to 1986 dollars by adjusting for inflation.\n", "As a result, there are only 26 distinct values for each year of the survey.\n", "When we generate a bootstrapped sample and compute the 10th percentile, we get a small subset of them.\n", "Here are the values that appear in our sample." ] }, { "cell_type": "markdown", "metadata": { "tags": [ "remove-print" ] }, "source": [ "Details of the methodology are in available [here](https://gss.norc.org/Documents/reports/methodological-reports/MR101%20Getting%20the%20Most%20Out%20of%20the%20GSS%20Income%20Measures.pdf)." ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5107.5 955\n", "5221.0 1\n", "5448.0 1\n", "5561.5 1\n", "5675.0 1\n", "5902.0 2\n", "6015.5 1\n", "6129.0 2\n", "6242.5 37\n", "Name: count, dtype: int64" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.Series(t9).value_counts().sort_index()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are only four different values, and one of them appears more than 95% of the time.\n", "When we compute a 90% confidence interval, this value is both the 5th and the 95th percentile.\n", "\n", "Bootstrapping works well for most distributions and most statistics, but the one thing it can't handle is lack of diversity in the data.\n", "Fortunately, this problem can be solved.\n", "The cause of the problem is that the data have been discretized excessively, so the solution is to smooth it.\n", "Jittering is one option.\n", "Another is to use kernel density estimation (KDE)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Resampling with KDE\n", "\n", "We have used KDE several times to estimate and plot a probability density based on a sample.\n", "We can also use it to smooth data that have been discretized.\n", "\n", "In Chapter 8 we saw that the distribution of income is well modeled by a lognormal distribution, so if we take the log of income, it is well modeled by a normal distribution.\n", "Here are the logarithms of the income data." ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [], "source": [ "log_realinc = np.log10(gss2018['realinc'].dropna())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what the estimated density looks like." ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZMAAAEICAYAAACavRnhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAAuJAAALiQE3ycutAABHZklEQVR4nO3dd1yT1/4H8E8S9t47LJlhK24ctWq1bsVdxQpab7nV/nrr7bCt1no7rnZfa111Vmur1tLa1lorTlQcqIgisgOorLADGef3BzWVghAg4Qn4fb9eeRWSJ08+OdJ8c55znvPwGGMMhBBCSCfwuQ5ACCGk+6NiQgghpNOomBBCCOk0KiaEEEI6jYoJIYSQTqNiQgghpNOomBBCCOk0KiZELUuWLMErr7zCdYxHkkgk4PF4yMnJ6dD2mn5/D+8vJycHPB4PEolEY/t/9913MXv2bI3trz2Ki4sxYsQIWFhYYPr06c0e//rrrzFo0CAOkhEu8eikxZ5r+PDhSEpKgr6+vuo+IyMjlJSUtPq8VatWISUlBYcOHdJywkaJiYmYPHlypz5sJRIJrK2tkZ2dDU9PT41v/8CCBQtgZWWFTz75RO3n5OTkwMvLC+Xl5bCyslL7eQ9s374dn3zyCVJSUtr9XG1Ys2YNTpw4gSNHjoDPp++jpBH9JfRwH3zwAaqrq1W3tgoJ6Ty5XM51BK3Kzs5GUFAQFRLSFCM91rBhw9jHH3/c4mNKpZL9+9//Zo6Ojszc3Jz5+vqyH3/8kX3//fdMX1+fCQQCZmpqykxNTRljjMXExLBly5YxxhjLzs5mANjWrVuZl5cXMzU1ZcuXL2eFhYVs5MiRzNzcnA0dOpQVFRWpXm/58uXM3d2dmZmZscDAQPbtt98yxhgrKSlhRkZGDIDq9U6ePMkYY+zo0aOsb9++zNLSkolEIvbDDz+o9ieVStmSJUuYtbU18/T0ZJs3b2YAWHZ2dovvt63tH35/UqmUPfvss8zW1pZZWFiwoKAgduHCBfbpp58yPT09pq+vz0xNTZlIJFK18/Lly9moUaOYiYkJS0hIaLG9Nm3axDw8PJiNjQ37xz/+werr6xljjG3bto2FhYU1yRsWFsa2bdvGLl++zAwNDRmfz1e1T25uLlu5ciWbNGmSavuMjAw2evRoZm1tzby9vZv8uz/Y/+rVq5m9vT1zcHB45N/Fg7+NdevWMW9vb2Ztbc2eeuoplpmZyRhjLDo6ukkbbNmypdnz//5+PDw82AcffMD69+/PzMzM2NChQ1leXp7q8aKiIjZ37lzm5OTELC0t2ZAhQ1htba3a7+vNN99ktra2zNHRkX3zzTfs9OnTLCgoiFlYWLCFCxcyhUKhes6lS5fY8OHDmbW1NevVqxfbtGnTI9uBtA8Vkx6stWJy5MgR5ubmxgoKChhjjOXm5rL09HTGGGv2QcVYy8XkmWeeYdXV1ezGjRvMwMCARUVFsdTUVCaVStnIkSPZCy+8oHr+7t272b1795hcLmd79+5lhoaGLCsrizHG2PHjx5mlpWWT17t69SqzsrJix44dYwqFgp06dYpZWFiwW7duMcYYe/PNN1lYWBgrKChg5eXlbOzYsa0Wk7a2f/j9bdy4kfXu3ZuVl5czpVLJ0tPTVR9+D2/3cDvb29uz8+fPM6VSyWpra1tsr7Fjx7Ly8nJWUFDAwsLC2KpVqxhjrReTRz3+8L+RTCZj/v7+bPny5ayuro5dvXqVOTs7s6+//lr1fD09PbZu3TrW0NDAjh8/zvT09NidO3dabKsdO3YwFxcXdu3aNVZXV8deeuklJhKJmEwme2QbPKylYhISEsKysrJYXV0dGzt2LIuJiWGMMaZQKFhkZCSLiYlhZWVlTCaTsVOnTjGpVKrW+xIIBOzTTz9lMpmMbdmyhVlYWLDp06ezkpISVlBQwBwcHNiBAwcYY41Fy8bGhu3bt4/J5XJ2/fp15uzszH7//fdHvheiPuqn9nCvvfYarKysVLdRo0YBAPT19SGVSnHjxg3IZDK4u7vDz8+vXft+4403YGpqCpFIhLCwMERFRSEoKAiGhoaYMmUKLl++rNp27ty5cHBwgEAgwKxZsxAQEICzZ88+ct8bN27EggULMGLECPD5fERFRWH8+PH49ttvATQO8r7++utwcXGBlZUVVq5c2WrW9myvr6+Pqqoq3Lx5E4wx+Pn5QSgUtrr/OXPmoF+/fuDxeDA2Nm5xm1WrVsHKygouLi547bXXsGvXrlb3qa7z58+jqKgIa9asgZGREUJDQ/HPf/4T27dvV21jZ2eHf/3rX9DX18fw4cPh6en5yDGYXbt2YenSpQgJCYGRkRHeffdd5Ofn48KFCx3O+Pzzz8PLywtGRkaYO3cuLl26BABITk7GzZs3sWHDBlhbW0NPTw9RUVEwNDRU633Z29tj6dKl0NPTw+zZs1FZWYnY2FjY2trCxcUFw4YNU/0d7tq1C0OHDsWMGTMgEAgQHByMZ599Fnv27Onw+yJ/oWLSw7333nuQSCSq29GjRwEATzzxBN5++228+eabsLOzw7Rp05Cdnd2ufTs6Oqp+NjExafZ7dXW16vePP/4YQUFBsLS0hJWVFVJTU1sdv8nJycGXX37ZpBD+8MMPKCwsBAAUFhbCw8NDtf3DP7ekPdvPmzcPCxYswJIlS2BnZ4cFCxa0Odbk7u7e6uN/f00PDw8UFBS0+Rx1iMViuLi4wMDAQHWft7c3xGKx6veH/20AwNTUFFVVVY/c38OTEgwNDeHi4tJkf+3l5OTU4mvn5ubC1dW1xQLc3vdlYmLS4n0P/g5zcnLw888/N/mb+uyzz1BUVNTh90X+QsXkMfb888/j3LlzyMvLg6GhIZYuXQoAGh9YPX36NFatWoWdO3eivLwcEokEwcHBYH9OJGzp9YRCIZYtW9akEFZXV2PDhg0AABcXF+Tm5qq2z8vLazVDe7bX09PD66+/jqtXr+LmzZvIy8vD22+//cisrd3/sL+/vqurKwDAzMwMtbW1Tba9e/eu2vt2c3NDYWEhZDKZ6r6cnBy4ubm1melR+3t4inVDQwMKCws7vL/WPCiqUqm0xRyafF9CoRBTpkxp8jdVVVWFn3/+ucP5yV+omDymkpOTcfbsWTQ0NMDY2BimpqbQ09MD0PjNLjc3V2OzkiorKyEQCGBvbw+lUomvvvoKqampqscdHR1RVVWF+/fvq+577rnnsG3bNhw/fhwKhQL19fVISkrCzZs3AQCzZ8/G+++/j8LCQkgkEqxevbrVDO3Z/o8//kBKSgrkcjlMTU1hZGTUpG2ysrJUhbA9Vq9eDYlEgsLCQrz33nuYO3cuACA8PBxZWVk4deoU5HI5/vvf/6K0tLRJ+xQVFaGurq7F/fbr1w+Ojo546623UF9fj9TUVHz++eeIiYlpd0YAeOaZZ/C///0PaWlpqK+vxxtvvAFXV1f069evQ/trTd++feHv74/nn38eEokEcrkcp0+fRn19vcbf17x58/DHH3/gwIEDkMlkkMlkSElJQXJysobf1eOJikkP98orr8DMzKzJrbS0FJWVlXj++edha2sLJycnFBYW4tNPPwUATJ8+HRYWFrC3t+/QeRF/N2bMGERHRyMkJAQuLi64ceMGBg8erHrc398fsbGxEIlEsLKywunTpxEREYG9e/fijTfegL29PVxdXfHmm2+ivr4eQON4TWRkJIKDgxEeHo7Jkye3mqE929+7dw+zZ8+GlZUVvLy8YGlpqRpjiYuLQ0FBAWxsbBAaGtqudpg0aRLCw8MRHByM/v374/XXXwcA+Pj44L///S+io6Ph7OyM+vp6BAUFqZ43YsQIDBgwAK6urrCysmrWq9LX18dPP/2ES5cuwcnJCRMnTsRLL72EOXPmtCvfA/Pnz8cLL7yA8ePHw8nJCVevXsWPP/6oKqiaxOfz8eOPP6K2thb+/v6ws7PDG2+8AaVSqfH35erqiiNHjmDjxo1wdnaGo6Mj4uPjUVlZqeF39XiikxYJIYR0GvVMCCGEdBoVE0IIIZ1GxYQQQkinUTEhhBDSaZqfntEFLCwstDLnnRBCSHNisbjNWW/dspi4ubkhLS2N6xiEEPJYEIlEbW5Dh7kIIYR0mlaLybJly+Dm5tbqyU6JiYkICgqCj48P4uLioFAotBmJEEKIFmi1mEyfPh0XL1585ONKpRJxcXH47rvvcOfOHVRWVmL37t3ajEQIIUQLtFpMoqKimqwW+nfJyclwcXFRHY+LjY3FgQMHtBmJEEKIFnA6AC8Wi5tcJ8Ld3R35+fnNtlu/fj3Wr1+v+r28vLxL8hFCCFEPpwPw6i4LFh8fj7S0NNXN2tpay8kIIYS0B6fFRCgUNumJ5OXl0fkjhDxm6uUKpBZUoFBS16Gl/Ylu4PQwV2RkJMRiMdLS0iASibB161ZMnTqVy0iEkC5SUl2Pdw/fxE/XitCgUAIAXCyN8K/R/pja2xU8Ho/jhKQ9tNozee655+Dm5gaFQgE3NzfEx8fj4sWLePrppwEAAoEAW7ZsQXR0NHr16gUzMzPMmzdPm5EIITrgYk4ZnvzwBL5PKcCYYCf8Z0owlj/lD2MDAf713VUs2nkRUhmdJtCddMvrmYhEIjoDnpBu6lJuOeZvPQ8zIz18+UwfRLj/NQbaIFfis2MZ+N/xOxjia4fN8yNhpC/gMC0B1PvMpTPgCSFdpqiiDrE7kmFqqIdvFg9sUkgAwECPj5ef8serYwNwKqMEb/94g6OkpL2omBBCuoRcocSyvSmoqZdjS0wkvOxMH7ntkmG9MLufEHsv5OPgZXEXpiQdRcWEENIltpzOxoWcMrwyJgChblZtbr9yQhACnS3w5qFU3K2Qaj8g6RQqJoQQrSuU1OGzYxno62mN2CgvtZ5jpC/A2uhQ1MkUeOcnGiPVdVRMCCFa95/DN1EvV2L1pOB2TfkNdrXEgkFeOHy9CCduF2sxIeksKiaEEK26nFeOw9eLMG+ABwKdLdr9/JdG+8HOzBDv/XwTSmW3m3z62KBiQgjRqnVH0mFqIMDSJ3079HwzQz0sfdIHt+5W4cdrhRpORzSFigkhRGvO3CnB2cxSxA7xho2pQYf3M6uvO4Q2xvjwt9uQ/Xm2PNEtVEwIIVrz2bEMWBrrI26IeoPuj2Kgx8eLT/ohr6wWCSnUO9FFVEwIIVpxNV+C89llmDfAAxZG+p3e38RwF7hZG2PDiUwaO9FBVEwIIVqx6WQWDPT4iBnkqZH96Qv4eG5YL9y5X43f0u5pZJ9Ec6iYEEI0Lq+0Fr+kFmFab1fYmxtqbL/T+7jBzswQm05mamyfRDOomBBCNG7L6SwwAHFDvDW6XyN9Aeb2d8flPAlSCyo0um/SOVRMCCEaVVbTgG8v5mNkoCN62ZtpfP9z+rtDj8/DjrM5Gt836TgqJoQQjdp9LhdSmRLPDdVsr+QBRwsjjA1xxg9XC1Fe06CV1yDtR8WEEKIxDXIldiblIsLdCpGeNlp7nZiBHmiQK/FNcn7bG5MuQcWEEKIxv964i5LqeizQ0AyuR+njYQ2RswV2n8uFgqYJ6wQqJoQQjdmVlAM7MwOMDXbW6uvweDwsGOSJAkkdfr9J04R1ARUTQohG3CyqRHJOOWb1dYeBnvY/WiaGu8DKRB87k3K0/lqkbVRMCCEasTMpF3xe42yrrmCkL8C03m44c6cU+WW1XfKa5NGomBBCOq2iToZDVwowSuQIFyvjLnvd6D5uAICDlwu67DVJy6iYEEI67cAlMepkCswf6NmlrxvobIFgVwvsv5xP63VxjIoJIaRTGGPYfS4X3vamGNTLtstfP7q3G/LL6nAhp6zLX5v8hYoJIaRTztwpRVZJDeYN8GjXJXk1ZVK4K/QFPOy/JO7y1yZ/oWJCCOmUnUk5MDEQYNqf4xddzdrUACMDHfHz9SLU1Ms5yUComBBCOuHBeR6TI1w1cs2Sjoru44baBgV+Sb3LWYbHHRUTQkiH7TmfCyUD5g3w4DTHUD972JkZ4ruLtLwKV6iYEEI6pF6uwDcX8tHX0xqBzhacZtEX8DE53AXns8tQIKnjNMvjiooJIaRDfk29i9KaBszr4unAjzIx3AUA8Mv1Io6TPJ6omBBCOmRnUi7szAwxJsiJ6ygAgBBXS7hZG+Ona1RMuKDVYpKYmIigoCD4+PggLi4OCoWi2Tbr1q1DUFAQQkNDMWbMGNy7R4u2EaLrUgsqcCm3HLP7CbtkHS518Hg8jAt1Rkq+BOJyWl6lq2ntr0CpVCIuLg7fffcd7ty5g8rKSuzevbvJNhkZGdiwYQMuXryIa9euITw8HOvWrdNWJEKIhuw4mwM9Pg9z+3M78P5340MeHOqiWV1dTWvFJDk5GS4uLhCJRACA2NhYHDhwoMk2jDHIZDLU1dWBMYbKyko4O2t36WpCSOeU1TTgh6uFGBPsBCdLI67jNBHsagGhjTF+onGTLqe1YiIWiyEUClW/u7u7Iz+/6bQ9Pz8/vPDCCxAKhXB2dsaNGzewbNmyZvtav349RCKR6lZeXq6t2ISQNuy9kIcGuVLrF8DqCB6Ph3EhLriaL6GVhLuY1ooJY20vulZaWoqDBw/izp07KCgogLe3N9auXdtsu/j4eKSlpalu1tbW2ohMCGmDXKHE7nO5CHa1QB8P3fz/cHxo49GNX1Kpd9KVtFZMhEJhk55IXl4e3NyaLrfwxx9/wNvbG87OzhAIBJg+fTrOnj2rrUiEkE76Le0eiiqkiBnoyck6XOoIcrGAu40JDtOsri6ltWISGRkJsViMtLQ0AMDWrVsxderUJtt4eHjg/PnzqKysBAAcPXpUNcZCCNE928/mwMbUABPCXLiO8kgPZnVdFVfQoa4upLViIhAIsGXLFkRHR6NXr14wMzPDvHnzkJCQgLi4OABAv379EBMTg379+iEkJAS5ubl49dVXtRWJENIJaYWVuJBdhtn9hDDSF3Adp1UPzn05RteH7zI8ps7gho4RiUSqHg8hpGu8sv8a9l8W4/QrT8DZsuuuptgRSiVDv3ePQeRigZ0L+3Edp9tT5zNXN842IoTotPKaBhxKKcCYICedLyQAwOfzMNzfHucyS2lZ+i5CxYQQ0qZvkvNRL1diwWBPrqOo7ckABzQolDhzp4TrKI8FKiaEkFbJFErsSspBkIsFInV0OnBLonztoC/g4Xj6fa6jPBbUKibPPvsskpKStJ2FEKKDfr5ehMIKKZ4d7KWz04FbYm6kj76eNjh+q1it895I56hVTEaPHo0VK1YgODgYH3/8MUpLS7WdixCiAxhj2HwqC44Whpiow9OBH2VEgAPuVkqRVlTJdZQeT61iMnv2bPzxxx/44YcfUFxcjIiICMyaNQuJiYlajkcI4VJSVilSCyrx7GAvnVkduD2eCHAAABy/RYe6tK1dfx1ZWVnIyMiAqakpAgIC8M477yAmJkZb2QghHNt0MgumBgLM7ufOdZQO8bYzhaetCY5RMdE6PXU2euedd7Br1y6Ehobiueeew6hRo1SP+fr6ai0cIYQ76XerkJhejLgoL1ga63Mdp0N4PB6eCHDA9rM5KK2uh62ZIdeReiy1igmfz8fJkyfh5NT8impHjhzReChCCPe2nMqCgM/Ds1FeXEfplBEBDth2JgcnM4oxJcKt7SeQDlHrMFdGRkazQrJgwQIAgLe3t8ZDEUK4db9SikMpBRgf6gxXK90/SbE1fT1tYKDHx5k7NHFIm9QqJteuXWt236VLlzQehhCiG7afzYFMwbBoSPf/smikL0CkhzWSMktpirAWtVpMPv/8c/j6+uLmzZvw8/NT3ZydndGnT5+uykgI6ULV9XLsPpeLQb1sEexqyXUcjRjobYsCSR3yy+q4jtJjtTpmMn/+fEyYMAEvvfQSPv74Y9X95ubmsLGx0Xo4QkjX+zY5H5VSORYP7f69kgcG+djiw6NAUlYJ3G2758w0XddqMbG0tISlpSUOHjzYVXkIIRySK5TYejob/o7mGOZnz3UcjQl1s4KJgQBnM0sxsy8VE21otZhMnjwZhw4dgq+vb5NlFBhj4PF4uH37ttYDEkK6zi+pd1EgqcPa6NButXRKW/QFfPT1tFGNm/Sk96YrWi0mGzZsAAD8/vvvXRKGEMIdxhg2ncyCg7khJoZ3v6VT2jKwly1O3C5GZnENfBzMuI7T47Q6AO/s7Kz6r4eHBzw8PMAYQ1paWrPruRNCurdzWWW4XlCBBYM9Yain21dS7IhBvWwBNC4RQzRPranBgwYNQlVVFYqLizFs2DB8+umneO6557SdjRDShTafalw6ZW5/D66jaEWQiyXMjfSQlEnXN9EGtYqJQqGAubk5EhISEBsbi19//RUXLlzQdjZCSBfJuFeFP27dx8y+7t126ZS2CPg89PeywbmsMiiVdL6JpqlVTORyOerr63H48GGMHj0aAGgAi5AeZMup7MalU7rRlRQ7YmAvO5TVNCD9XhXXUXoctYpJfHw8fH19oVQqMWDAAGRnZ8PSsmeczETI4+5+lRTfXynA0yHOENqYcB1HqwZ6/zlukknjJpqmVjFZsmQJ8vLycOjQIQCAh4cHzfAipIfYcTYHDQolFveApVPaEuBkDisTfZzPpmKiaWqtGtzQ0IADBw4gOzsbcrlcdf9bb72ltWCEEO2rqZdj97k8DPS2RYhbzz/awOfz0MfdGpfzJHS+iYap1TOZMmUK9uzZA7lcDoFAoLoRQrq37y7mo6JO1qOWTmlLbw9rFFfV0zpdGqZWzyQnJwc3btzQdhZCSBdSKBm+OpMDHwezHrV0Slv6eFgDAC7llcHdtmePEXUltXom4eHhyM3N1XYWQkgXOpp2F3lltYiL8gKf//gc7glzs4Ien4dLueVcR+lR1OqZ5ObmIjg4GL1794ah4V+Xvfztt9+0FowQol2bT2XD1tQAkyNcuY7SpYwNBAhyscDFHCommqRWMfnPf/6j7RyEkC50Oa8cl3LL8eJIXxjpP37jn709rLH9bA6qpDKYG/XMkzS7mlrFZNiwYZBIJMjKykLv3r21nYkQomVbT2fDQI+PZwb0zKVT2hLpYYNtZ3KQki/BEN/HZ7xIm9QaMzl48CD69euH6OhoAEBKSgqefvpprQYjhGhHflktfrlehKkRrrAzM2z7CT1Qbw8rAKBxEw1Sq5isWbMGycnJqrPew8PDkZeX1+bzEhMTERQUBB8fH8TFxUGhUDTb5t69e5g0aRICAgLg7++Pn376qZ1vgRDSHtvP5kDJgNgoL66jcMbZ0hiuVsZUTDRIrWJiYGDQbPkUPr/1pyqVSsTFxeG7777DnTt3UFlZid27dzfbLiYmBnPnzsWtW7dw48YNDBw4sB3xCSHtUSmVYV9yPob728PX0ZzrOJzq42GNK3kSKGjRR41Qq5h4eXnh999/B4/HQ2VlJVatWoWwsLBWn5OcnAwXFxeIRCIAQGxsLA4cONBkm/T0dNy7dw8zZswAAOjp6cHW1rYj74MQooZ9F/JRXS9HXNTjc5Lio/TxsEZ1vRy3adFHjVCrmHzxxRfYtWsXxGIxevXqhaysLHz22WetPkcsFkMoFKp+d3d3R35+fpNtbt26BQcHB8yePRsRERGYP38+ysrKmu1r/fr1EIlEqlt5OXVNCWkvmUKJbWeyEeBkjsE+9KXtwcmLF+lQl0aoVUysra2xY8cO3L9/H8XFxdi5cyesra1bfQ5jbXcd5XI5Tp48iRUrVuDKlSvw9PTE8uXLm20XHx+PtLQ01a2t1yaENPdr6l0UVkgRN8Sb1qRC46KPJgYCXKZiohGtTg1+9913W33y66+//sjHhEJhk55IXl5es0v9CoVCiEQiBAcHAwBmzZqFOXPmtBmaENJ+O5NyYGtqgAlhzlxH0Ql6Aj7ChVY0CK8hrfZMZDIZZDIZ0tLSsHXrVpSUlKCkpARfffUVbt682eqOIyMjIRaLkZaWBgDYunUrpk6d2mybhoYGVdE5evQogoKCOvN+CCEtuFFYgeSccszu594jr+/eURHuVsgrq0VpdT3XUbq9VnsmK1euBNB40uLly5dVM7pWrlyJiRMntrpjgUCALVu2IDo6GvX19Rg2bBjmzZuHhIQEJCQkYMuWLeDz+fjiiy8wadIkyOVyuLq64quvvtLQWyOEPLDjbA4EfB7mDnDnOopOiRA2HjJPyZfgyUBHjtN0b2qdAX/37l2Ym/81jdDU1BR3795t83kjRoxQ9UwemDhxYpNCNGTIEFy+fFndvISQdiqvacAPKYUYE+QEZ0tjruPolHB3KwDAlTwqJp2lVjEZN24cnnzyScycORMA8O2332L8+PFaDUYI0Yx9F/NRL1ciZpAn11F0jp2ZIdxtTHAln8ZNOkutYvLRRx/h0KFDOHnyJABg2bJlmDRpklaDEUI6T6Fk2JWUiwAnc/T1pFmQLYlwt8Kxm/ehUDIIHqOl+DVNrWICAJMnT8bkyZO1GIUQomnHbt5DgaQO708NoenAjxAhtMIPKYW4c78a/k6P96oAnaHWeSaEkO5pR1IOLI31MSn88bpmSXtEuDf22K7k0aGuzqBiQkgPlXGvCmfulGJmXyGMDWg68KMEOlvAQI+PK3kSrqN0a2oVk5qaGm3nIIRo2M6kXPB4wLzH9Jol6jLQ4yPE1ZIG4TtJrWISEBCAxYsX48KFC9rOQwjRgEqpDAcui/FkgCOENiZcx9F5EUIrZNyvRqVUxnWUbkutYnL79m1ERUXh5ZdfRnh4OP73v/9BIpFoORohpKMOXhKjtkGBmEHUK1FHhLs1GAOu5VdwHaXbUquYGBsbY/78+Th58iS++OILvP/++3BxccGCBQuQk5Oj5YiEkPZQKhl2JuXC294UUT52XMfpFiJUJy/Soa6OUnsAPjExEXPmzMGCBQuwePFipKWl4YknnsCYMWO0mY8Q0k5nMkuQVVKD+QM8aDqwmpwtjeBoYYgr+RKuo3Rbap1n4u/vDz8/PyxevBi7d+9WXWXR09MTv/76q1YDEkLaZ8fZXJgaCDCtj1vbGxMAAI/HQ7jQCheyy8AYoyLcAWoVk82bN2Po0KFN7svLy4O7uzv27t2rlWCEkPbLL6vFsVv38Ex/D5gb6XMdp1uJcLfGkRv3kFtaC087U67jdDtqHeZ68cUXm91HZ8MTont2n88FY8D8gTTw3l4RQisAoCnCHdRqz0QsFiM3Nxc1NTU4e/as6v6KigrU1tZqPRwhRH1SmQL7kvMxqJctfB1pWZD2CnGzhIDPw5U8CaZE0CHC9mq1mBw7dgzbt29HYWEhVqxYobrf3Nwc77//vtbDEULUl3C1EJJaGeYP9OQ6SrdkYqCHACdzOhO+g1otJjExMYiJicGePXvocrqE6DDGGHYm5cDF0ggjAx24jtNtRbhb4ZsL+ahrUNASNO3UajG5du0aQkND4enp2eQw1wODBg3SWjBCiPqu5EuQWlCJ5U/5Q09AS+51VITQGrvP5SG1sAJ9PW24jtOttFpMPv/8c2zevLnJIa4HeDwe/vjjD60FI4Sob8fZHBgI+JjZV8h1lG7t4ZMXqZi0T6vFZPPmzQCA48ePd0kYQkj7FUrqcPhaESaGu8DOzJDrON2al50pLI31adykA1otJi0d2noYHeYihHvbzmRDrmRYPNSb6yjdHo/HQ4S7FRWTDmi1mLR0eOsBOsxFCPcq6mTYcz4Pw/zsEeBkwXWcHiFCaI3E9GIUVdTB2dKY6zjdRqvFhA5vEaLb9pzPQ02DAs8No16Jpvw1biKBcwgVE3WpNZvrUYe76DAXIdyplyvw1ZlshLhaYqC3LddxeoywB2fC55Xj6RBnbsN0IzSbi5Bu6ocrhSiuqsfKCSJamFCDLI314eNgRuMm7USzuQjphpRKho0nMyG0McaYICeu4/Q4EUIrJFwtRINcCQM9Om9HHWq1klwuxxdffIGZM2di5syZ2LBhA2QyurwlIVz56XoRMotrsHiIN52kqAUR7taolytxo5CuvKgutZagX7RoEaqqqjB//nwAwO7du3H+/Hls375dm9kIIS2QK5T45PfbcLUyxgw6SVEr+ns3nrB4PrsMEe7WHKfpHtQqJklJSbh165bq9wkTJiAwMFBroQghj/ZDSiGyimvw/tQQGOrR+lHa4G1nCjszQ5zPKsWSYb24jtMtqNU/FgqFuHv3rur3+/fvw93dXWuhCCEtk8oU+PC3dHjamtCVFLWIx+Ohv7cNLuaUQ65Qch2nW2i1Z7Jo0SLweDwYGxsjKCgII0eOBI/Hw++//47Bgwd3VUZCyJ+2nMpCYYUUXz7TB/o0VqJVA7xtcfhaEdKKKhHqZsV1HJ3XajGJiopS/Txt2jTVz2PHjlVr54mJiYiPj0d9fT2GDx+OjRs3QiBouVs+btw4pKen486dO2rtm5DHzb1KKb5IzER/Lxs8FeTIdZweb4DXn+MmWWVUTNTQ5vVMOkqpVCIuLg4JCQkQiUSYMWMGdu/e3eI+v/76a9jY0AqdhLRmVcIN1MuVeIvOK+kSPg5msDU1wLmsUiyidc/apFY/uby8HCtWrMDEiRMxevRo1a01ycnJcHFxgUgkAgDExsbiwIEDzbYrKSnB+vXrW10HjJDH3W837uKX1LuIjfJCkIsl13EeCzweD4N97JCUVYoGOY2btEWtYhITEwM7OzvcunULS5cuhampKXr37t3qc8RiMYTCv6Yturu7Iz8/v9l2L774ItasWQMjI6N2Rifk8VBW04A3DqXCzdoYL4705TrOY2WYnz1qGxS4mFvGdRSdp1Yxyc/Px//93//ByMgI48ePx/79+9s8K54x1uZ+f/nlFwgEAowYMaLV7davXw+RSKS6lZeXqxObkG6PMYZXDlxDcXU91k0Pg4mBWrP5iYYM8bMDAJxIL+Y4ie5Tq5gYGBgAAMzNzZGTkwOpVIri4tYbVygUNumJ5OXlwc2t6VTGkydP4tixY/D09ERUVBRyc3MRGhrabF/x8fFIS0tT3ayt6SQi8njYcTYHR9Pu4fnhvTCAFnPscg7mRghyscCJ21RM2qJWMZk8eTLKy8vx6quvIjIyEu7u7oiNjW31OZGRkRCLxUhLSwMAbN26FVOnTm2yzXvvvQexWIycnBycPn0aHh4euHbtWgffCiE9S1JmKd45fBN9Pa3x4kg/ruM8tob52ePW3SrcrZByHUWnqVVMXnvtNVhbW2PChAkoLCxEdnZ2mwPmAoEAW7ZsQXR0NHr16gUzMzPMmzcPCQkJiIuL00h4Qnqq7JIaxO+5DAdzQ3wxl84p4dJwfwcAwLFb9zhOott4TI3BDblcjk2bNuHEiRMAgOHDhyMuLg76+vpaD9gSkUik6vEQ0tMUV9Vj2oazKK2ux77nBiLYlWZvcUmhZBjw3jH42Jth7+IBXMfhhDqfubTQIyE6RFLbgHlbz6NQUodtz/alQqIDBHweng52wq5zubhfJYWDOc08bQkt9EiIjqiUyjBv6wXcvleFz2ZHYIivPdeRyJ/Gh7lgR1Iufrl+FzGDPLmOo5NooUdCdEB1vRwLvrqA1MIKrI0Ow/hQF64jkYf0cbeGk4URfrxayHUUnUULPRLCMalMgUU7LuJyngTvTgmh1YB1EJ/Pw6QIF2w8kYX0u1XwdzLnOpLO0epCj4SQ1imUDMu+uYKkrFK8OV6EOf2px6+r5g3wwJZT2fjqdDY+iG5+Ptzjrl0LPUqljfOsaekTQjqPMYYV31/HkRv38M8nfBAb5cV1JNIKN2sTjAl2wvcpBVg+xh92ZoZcR9Ipao2ZZGRkYMCAAXBzc4ObmxsGDRqEjIwMbWcjpEf78Lfb+CY5H7P7ueNfo+mkxO4gNsoLDXIlNp/K4jqKzlGrmCxatAj//ve/UVJSgpKSEixfvhyLFi3SdjZCeqzvr4jxv+N3MCbICWsmB9OS8t1Eb3drjAx0wNZT2UgrrOQ6jk5Rq5hIJJImS6FMmTIFEolEW5kI6dFSCyrw6oHrEDlb4OOZ4RDwqZB0J+9MDoaRvgCvHrwGqUzxyO0qpTJcyi3HzaJKKJRtL3zb3al1nomFhQUOHz6McePGAQB+/vlnWFhYaDUYIT1RlVSG+D2XYWIgwMZ5fWBs0PKVR4nucrY0xhvjAvHqweuYu+U8Ns+PhI1p42K45TUNOHy9CN9fKcCl3L9WNzc30sOKpwMxs6+wx/ZC1SomX375JZ555hksXLgQQON5J7t27dJqMEJ6ord+uIHc0lpsmR8JoY0J13FIB83q5w65kuGtH1Ix4N1j6O1hhdoGBW4WVUKmYHC2NMLCwV4IdrVAZZ0M+y+L8erB60jJl+C9qSE9sqC0WUwUCgWOHj2Ky5cvo7KyEjweD+bmNMeakPb6+c9vrDEDPTBSRNdw7+6eGeABP0dzfHcxH8k5ZbA0McDUCDdMCndBf2/bJocvZ/d3x5uHUvFNcj6CXC0xb4AHh8m1Q62FHvv27Yvk5OSuyKMWWuiRdDflNQ0Y9fEJmBvp45dlQ2CkT4e3HjcyhRIzNibhRmElEv45GAFO3WeoQJ3PXLUG4EeOHIlVq1YhIyMDhYWFqhshRD1rDt9ESXUDPpgWSoXkMaUv4OOzWREQ8Hh47+dbbT+hm1FrzOSbb74BAOzYsUN1H4/HQ1YWzbUmpC2X88px4LIYs/u5o5+XDddxCIeENiaYP8gDG09k4VJuOfp49JyrxqpVTLKzs7Wdg5AeSalkePvHNJgb6eFlOjGRAHhuaC/sSsrFJ7/fxq7Y/lzH0ZhWD3NlZ2djypQpCAkJwbx583DvHl1pjJD2OJRSgKv5Eix70he2tPwGAWBjaoD5Az1xKqMEt+72nBMfWy0mCxcuhL+/P9auXQtzc3O8+OKLXRSLkO6vpl6OD369BW87U8wf6Ml1HKJD5vZ3B48H7EvO5zqKxrR6mKukpATvv/8+AOCpp55C7969uyQUIT3Blycyca+yHltjQmCgR9dwJ38R2pggyscO318pwCtjAnrEpIxW/8IfvsY7j8frkSfaEKIN9yul2HQyC0N87TAiwIHrOEQHzewrhKRWht/SesbwQas9k5SUFBgYGKh+l8vlMDAwAGMMPB4PDQ0NWg9ISHf05Yks1MuV+PdTAfQljLRolMgRVib6OHBJjIlh3f/Kmq0WE6VS2VU5COkx7ldK8fX5XIwMdESImyXXcYiOMtQTYEyQE/ZfEqOiVgZLE/22n6TD6EAuIRq24UQm6uVKvDjSl+soRMeNDXGGXMlw9Gb3P9RFxYQQDbpXKcXX5/MwSuSIYFfqlZDWDeplC0tjffxyvYjrKJ1GxYQQDdqQmIkGuRLLnqReCWmbvoCP0SJHnMooQaVUxnWcTqFiQoiG3K2QYs+FPIymXglph7EhTmhQKJGYXsx1lE6hYkKIhnx54s9eCY2VkHYY1MsOhnp8JN66z3WUTqFiQogGPOiVPBXkiCAX6pUQ9RnpCzColy0SbxdD2Y0v70vFhBAN2JB458+xElrMkbTfiAAHlNU04FpBBddROoyKCSGdVFRRh70X8jEmyAkil+5zwSOiO4b7N66S8Ec3PtRFxYSQTvrieCYaFDRWQjpOaGMCHwczJKZTMWlRYmIigoKC4OPjg7i4OCgUiiaPp6SkYPDgwQgKCkJwcDA+++wzbcYhROMKJXXYl5yPp0OcEOhMvRLScSMCHHBNXIHiqnquo3SI1oqJUqlEXFwcvvvuO9y5cweVlZXYvXt3k21MTEzw1Vdf4caNGzh79iw+//xzpKSkaCsSIRr3v+N3IFMqsZTOKyGdNNzfHgC6be9Ea8UkOTkZLi4uEIlEAIDY2FgcOHCgyTZ+fn7w9/cHAFhYWCAwMBD5+T1nfX/Ss+WX1eLb5HyMC3FGgBP1SkjnRHrYwMxQr9ueb6K1YiIWiyEUClW/u7u7t1ooMjMzcfHiRQwePLjZY+vXr4dIJFLdysvLtZKZkPb47FgGlIzhxZE0g4t0noEeH0N87XDydjFkiu63yK7Wiglj6s+XlkgkmDx5Mj799FPY2Ng0ezw+Ph5paWmqm7W1tSajEtJu2SU1OHilAJMjXOHjYMZ1HNJDPOHvgKp6OS7ldr8vzForJkKhsElPJC8vD25ubs22q62txbhx47Bo0SJMnz5dW3EI0ahPf78NALQGF9GoB+Mmx7vhFGGtFZPIyEiIxWKkpaUBALZu3YqpU6c22UYmk2Hq1KkYNWoUli5dqq0ohGhUxr0q/HC1EDMi3eBha8p1HNKDOFgYIdjVoluOm2itmAgEAmzZsgXR0dHo1asXzMzMMG/ePCQkJCAuLg4A8O233+Lo0aM4dOgQwsPDER4ejv3792srEiEa8f4vt6DP5+OfI6hXQjTvCX8HpN+rQoGkjuso7cJj7Rnc0BEikUjV4yGkK528XYz5X13AkmG98OrYAK7jkB7oUm45pm04i/9MCcbc/h5cxwGg3mcunQFPiJrkCiXe+SkNdmaG+OcIH67jkB4qXGgFKxP9bjduQsWEEDV9fT4PGfer8e+n/GFmqMd1HNJDCfg8DPOzx5k7pZDKFG0/QUdQMSFEDZLaBnz8+20Eu1oguk/zWYmEaNIT/g6okylwIbuM6yhqo2JCiBo+/O02JLUyvDU+CHw+j+s4pIcb6mcPHg843o2WVqFiQkgbknPKsOtcLiaFu6CfV/OTagnRNBtTA4QLrbrVFGEqJoS0QipT4JX912BraoCVE4K4jkMeI0/4OyC7pAbZJTVcR1ELFRNCWrHmcBqySmqwelIwbEwNuI5DHiMjAhovmNVdZnVRMSHkEX65XoTd5/IQ3ccN40KduY5DHjMiZws4mBvi95v3uI6iFiomhLQg414V/r3/GrztTbF6Eh3eIl2Pz+dhdJAjzmeXoaymges4baJiQsjflFbXY+GOZIAHbJoXCRMDOqeEcGNMkDMUStYteidUTAh5SEWtDPO2XkChRIr1c3rT8vKEU/29bWBloo8jqXe5jtImKiaE/KmspgHzvzqPm3cr8dGMMAz1s+c6EnnM6Qv4GBnoiFMZJaiSyriO0yoqJoQAyCquxtQvziC1sBJro8MwKdyV60iEAADGBjuhQaHE0TTdPtRFxYQ81hhjOHhZjAmfn8b9qnpsiYmk5VKIThnqZw9rE318f6WA6yitopFF8tjKKq7G2z+m4cTtYgQ4mePz2RHwdTTnOhYhTegL+JgQ5oLd53Jxr1IKRwsjriO1iHom5LHCGENKvgQv7UvByI9OICmzFC+M8MGh+MFUSIjOmhLhCiUDElIKuY7ySNQzIT0eYwxZJTX4NfUuDl4WI7O4BgI+D9N6u+GfI3zo0rtE54ULreBlZ4r9l8SIG+IFHk/3FhulYkJ6HMYYcktrkZRViqTMUpzLKsX9qnoAgJ+jGV4bG4BJ4a5wstTNwwWE/B2Px8OsvkK898stXMguQ39vW64jNUPFhPQIdyukOHOnBGcyS5CUWYqiCikAwMRAgL6eNlgYZYshvnYQOVvo5Lc6QtoyI1KIj47exs5zuVRMCNGUBrkSZzJLcCK9GKfvlODO/WoAgJE+H309bfDMAA8M7GWLEFdL6AtoaJB0f9amBpgY5oLvrxTo5EA8FRPSbTTIlTh9pxiHr93F0bS7qJTKwecBYUIr/PMJHwz2sUNvDysY6gm4jkqIVsQM8sR3l8T46nQ2Xns6kOs4TVAx0aLaBjl+v3kfpzOKkVlcg5LqehjrC+BsaYQ+HtYYJXKCvxPNIGqNVKbA6YwS/JxahKNp91AllcNAwMdQP3uMC3XCiABHWBrrcx2TkC4R7GqJ4f722JmUi0VDvWFnZsh1JBUqJlpwv0qKDYmZ2H9RjKr6xg8/X0czeNmZoq5BgbSiShxPL8a6324j/M9v1U8GOnTrY/lVUhluFFYit7QG5bUyyORKWBjrw9rUALamBnCxMoarlTEM9Fo/5KRUMuSW1eJiThl+v3kPJ2+XoE6mgIEeH8P87DEuxBlPBjrA3IgKCHk8/d9IP0xafwYbT2RixTgR13FUqJhoUINciY0nMvFFYibqZAoM97fH3P4eiPKxg7HBX4deHsw2+v5KAb4+n4e4nRcR6WGNNVOCEeBkweE7aJ/7VVL8cKUQh68X4ZpYAiVrfXs+D3C2NIbQxhhu1iawNtGHoZ4AciVDeU0D8spqkVpYgSqpHABgbqSHUSJHjBQ54gl/eyoghKDxsO6TAQ7YmZSLeQM84W5rwnUkAACPMdbGR4DuEYlESEtL4zpGE1fyyvHqgetIv1eFgd62eP3pQIS4Wbb5vLoGBXYk5eCzYxlokCsRO8QLy5701ellz7NLavD5Hxn48WohZAoGdxsTjAhwQB8Pa3jZmcLOzBD6Ah4qpXKU1dSjpLoBBeV1yCurRX5ZLfLKaiEur0OdTKHap5E+H86Wxgh2tUSoqyVC3SwR4W7dZk+GkMdRZnE1xn5yCv29bbBzYT+tH9VQ5zOXikkn1TbIse7IbWw7mw0LI328OV6Eab1d2/2PWyCpw6qEGziadg9u1sb4z5QQDNOxVWvvV0rxybEM7EvOBw/A+FBnzB/kiQihVYf+mBvkSjQolNDj82Cox+/Wh/kI6Wqf/H4bn/yegY9mhGFqb+2uJ0fFRMuOp9/Hm4dSIS6vw/hQZ6ycEAR7884NiB25cRdv/ZCKe5X1mBrhijfGizi/9nhFnQwbT2TiqzPZkMqUmBjmgn+N9qMzxwnhUL1cgYmfn0FeWS0OPj8Igc7aO0ROxURL7lZIsfqnG/j5+l04Wxph9aRgjBI5amz/lVIZ/vvrLew+lwcbUwO8NV6ESeEuXf7NXSpTYGdSDr5IzISkVoahfvb491P+CHZt+/AdIUT7ckpqMPF/p2Fpoo8DSwbBQUvnnlAx0bAqqQw7k3Kx4c8B9mcHeeLFUX4wM9TO+EZyThlePXANmcU1GOBtg3+N9kdfTxutvNbDahvk+PpcHjadykJxVT3ChFZ4ZYw/BvWy0/prE0La58TtYsTtSIazpTG+jusPoY3mB+SpmGhIRZ0MO87mYOvpbFTUydDHwxqrJwUhyEX739Dr5QpsPJGFTSezUF0vxxBfO7wwwhd9Pa013lPJLa3BgcsF2JWUg/JaGYJcLPDCCB88FeRE4xmE6LATt4vx3K6LMNYX4N0pIRgb4qzR/XNeTBITExEfH4/6+noMHz4cGzduhEDQ9Ozkb7/9Fm+88QYUCgVmzZqF//znP23utyuKSW2DHKcySvDL9SL8knoX9XIlIj2ssWykL6J87Lr8w1VS24DNp7Kw7UwOahsU8HUww9Mhzhjmb48wNysI+O3PwxhDZnE1kjJLkXC1EMk55QCAPh7W+OcTPhjub09FhJBu4ppYghe/SUFWSQ0G+9gifrgPBnjbgt+Bz4a/47SYKJVK+Pn5ISEhASKRCDNmzMC4ceMQExOj2qaiogIhISE4f/487O3tMXToULz33nsYNmxYq/vWVDFhjKG6Xo67FVIUSOpQIKlDakElruZLkH6vCgolg4EeH08FOWFOP3cM8Lbh/MO1rKYB313Mx/5LYmT8uR6VpbE+woVW8LY3hbe9GVytjGBqoAdTQz0Y6vEhlSkhlStQLZVDXN44NTe7pBaX88pRVtMAAHC0MMTkCFdM6+0GP7quByHdUl2DAuuP38G2M9moaVDA2dIIw/zsEelpg1Gijq8WwWkxOX/+PJYvX46TJ08CAI4cOYL169cjISFBtc2+fftw+PBh7Ny5EwCwceNG3LhxA5999lmr++5MMdl1LhdfJmaiSipDdb282Yl2BgI+Al0sEO5miQHethjiZ6+1MZHOyi+rxcmMYpxIL8bNu5UQl9dB3X9NB3NDhAmt0M/TBv28bBDsatmh3g0hRPdIahuQcLUQP10rQkqeBA0KJU4sH97hGZjqfOZq7VNSLBZDKBSqfnd3d0d+fn6b2/z666/N9rV+/XqsX79e9XtWVhZEovYtI1BeXg5ra+sm9z1q3kPGn7fv2vUK2tNS9pYYt2Of1QDO/HnTJnWz6yLKzo3unB3Qvfx6f97GJrS15aOzi8VitV5HK9Tp8KjbKYqPj0d8fHyn8nA9nbgzKDs3KDs3unN2oHvn70x2ra1VIRQKm/RE8vLy4Obm1u5tCCGE6D6tFZPIyEiIxWJVldu6dSumTp3aZJsxY8bg+PHjKCoqglwux44dO5ptQwghRPdprZgIBAJs2bIF0dHR6NWrF8zMzDBv3jwkJCQgLi4OAGBpaYm1a9di6NCh8Pf3x7Bhw/DEE09oJU9nD5NxibJzg7JzoztnB7p3/s5k75YnLRJCCNEttL43IYSQTqNiQgghpNN6VDHJz8/Hk08+icDAQAQFBeG1115rcbvExEQEBQXBx8cHcXFxUCgULW7XldTN7unpiaCgIISHhyM8PBzXr1/v4qQtGz16NMLDwxESEoLo6GhUVlY220YX2x1QL7uutvsD8fHx0NNreaa/rrb7A61l19V2VyeXrra7Otk71O6sByksLGTJycmMMcbq6+tZVFQUO3ToUJNtFAoF69WrF7tx4wZjjLHp06ez7du3d3nWv1MnO2OMeXh4sPz8/K6O1yaJRKL6edmyZWzlypVNHtfVdmes7eyM6W67M8bYyZMn2fz585lAIGj2mC63O2OtZ2dMd9u9rVy63O7qtGlH2r1H9UycnZ0RGRkJADAwMEBERATy8vKabJOcnAwXFxfVGfSxsbE4cOBAl2f9O3Wy6zJLy8YVlJVKJaRSabM1zHS13YG2s+uy+vp6vPrqq1i3bl2Lj+tyu7eVvTvT5XbXlh5VTB5WVlaGQ4cOYdSoUU3uV2eZF649KvsDEyZMQHh4OFasWAGZTNbF6R5typQpcHBwQHp6Ov71r381eUzX27217A/oYruvXr0asbGxsLdv+RLPutzubWV/QBfbHWg9ly63O6Bem7a33XtkMWloaEB0dDSWLVuGgICAJo8xHZ8J3Vp2ADh16hSuXLmCM2fOID09Xae+1X3//fcoLCyEm5sb9u/f3+QxXW/31rIDutnu165dw/nz5/Hss88+chtdbXd1sgO62e5A27l0td0B9dq0I+3e44qJQqHAnDlzEB4e3uI3TF1ewqWt7ABU33ZMTU0RFxeHs2fPdmXENhkYGGDWrFn4/vvvm9yvy+3+wKOyA7rZ7mfOnEFaWhq8vLzg6ekJhUIBT0/PJhMIdLXd1ckO6Ga7A23n0tV2B9Rr0460e48rJosXL4a5uTk+/PDDFh9XZ5kXrrSVvaamRvU/m0KhwIEDBxAaGtqVEVtUVVWFoqIiAI3jDgkJCQgKCmqyja62uzrZdbXd//GPf6CwsBA5OTnIycmBQCBATk4OLCwsVNvoarurk11X212dXLra7upk73C7d3RGgC46ffo0A8CCg4NZWFgYCwsLY59++ilLTk5mY8eOVW137NgxFhgYyLy9vdmzzz7LZDIZh6kbqZM9MzOThYWFsZCQECYSiVhsbCyrqanhODljBQUFLDIykoWEhLCgoCC2cOFCVlNT0y3aXZ3sutruf/dgRlR3aPe/aym7rrb7o3J1h3ZXJ3tH252WUyGEENJpPe4wFyGEkK5HxYQQQkinUTEhhBDSaVRMCCGEdBoVE0IIIZ1GxYRozKNWftU1W7duVZ3Ls2rVKqxZs6bD+7p06RL69+8PQ0PDZvtJTU1Fnz594Ovri8mTJ6O6urrFfcyYMQP29vbw8fFpcn9BQQHGjBmDsLAw9OnTB0lJSarHjhw5gt69eyM8PByRkZFNHrt9+zZGjBgBkUiEgIAAXLp0qc33sWDBAuzevbvVbbZv3666SurDP3dWXl4exowZo5F9Ee5QMSGPFaVSiY8//hhLlizRyP6cnJzwxRdf4OWXX2722JIlS/Dee+8hIyMDfn5+jzwZdcmSJThy5Eiz+1966SWMGzcOV69excGDBxEfH69apmPhwoXYu3cvUlJSsGbNGixdulT1/mbMmIF33nkHaWlpSElJaVakuCKXy1u8393dHfb29jhx4kQXJyKaRMWEaIWenh5Wr16N8PBwhIaG4vbt2wAaP+xWrFiBkJAQhIWF4aWXXgLQuDDemDFjEBoair59++LcuXMAGq8JMWjQIMyYMQN+fn6YMWMGzp49i6FDh8LT0xPffvut6jW/++479O/fHxEREZg2bRoqKiqa5UpMTERgYCBMTU2bPVZRUYGZM2eqsv3444+qx/773//C19cX/fv3x+LFi1Xfyl1dXdGnTx/o6+s32de9e/eQl5eH0aNHA2h91dgRI0bAxsam2f2pqamqb+weHh7Q09PDxYsXm+QFAIlEAmdnZwDA0aNH4eXlhcGDBwMAjIyMVKsiP0wqlWLevHkICAjAU089heLiYtVjN27cwJAhQxAaGoqhQ4ciPT29xdwPXLp0CYMHD0ZERATCw8Px22+/qR7T09PDG2+8gYiICBw8eBBffvklgoODERYWht69e0MqlQIApk2bhh07drT6OkS3dY/jEqTbUSgU8PPzQ0pKCtatW4e1a9di8+bN2Lp1K65cuYJLly7BwMAApaWlAIAXXngBTz/9NJYuXYrk5GRMnz4dGRkZABoXBdyzZw/c3d3Rv39/fPzxxzh+/DjS09Mxbtw4zJgxA+np6di8eTNOnjwJQ0NDrF27Fu+++y4++OCDJrlOnTqlWur/71atWgUXFxfs27cPOTk5GDhwIK5duwaxWIxt27bhypUrMDAwwPDhw1VLiz+KJlaNjYiIwN69e/HWW28hNTUVqampyM/PR9++fbFz506MGTMGZmZmUCgUOHPmDADg1q1bMDY2xvjx41FQUICoqCisXbsWRkZGTfa9YcMGKBQK3Lx5E2KxGMHBwZg9ezYA4JlnnsHbb7+NiRMn4sCBA5g/fz7Onz//yJy+vr5ITEyEvr4+CgoKMHToUGRmZgJo/Dvw9vbGlStXADSu+XT79m0YGxujoqICBgYGAIC+ffti+fLl7WofoluoZ0K0gsfjYdq0aQAaPyiys7MBNB7r/8c//qH6ELG1tQUAnDhxAgsXLlRtb2VlpSomERER8PT0BJ/PR0hICEaOHAmBQACRSISioiIolUocPXoU169fR//+/REeHo7t27cjNze3Wa7CwkI4ODi0mDkxMVHV4/D09ET//v2RnJyMkydPYsKECTAzM4OBgQFmzpzZ5vvXxMISH330EW7evInw8HC88847iIqKgkAgAAB88sknOHjwIPLy8vDOO++oDtvJ5XL88ccf2LhxIy5evIjq6mqsXbu22b5PnjyJZ555BjweD0KhECNGjADQ2NsRi8WYOHEigMYeQ0ZGBmprax+Zs7q6GnPnzkVwcDDGjRuH/Px8lJSUqB6fM2eO6ueIiAjMmTMHW7ZsQX19Pfj8xo8gBwcHFBYWdrLFCJeoZ0K0gs/nqw79CAQC1fHy1j5kH74o1cM/GxoaNtnvw78DjYfOGGOYOXMmPvnkk1ZzGRsbqw6ttPb6Lf3e1v0Pc3Nz6/SqsQ4ODti7d6/q97CwMAQEBKC4uBiXL1/G8OHDAQCzZs3Ciy++CKDxm//gwYPh6uoKAJg+fTo2bdqk9mt25MJgK1asQO/evbFv3z7weDzY2tqq2lggEDTpFR06dAjnzp3D0aNHERkZicTERHh7e0MqlcLY2Ljdr010B/VMSJcaM2YMNmzYgIaGBgBQHeYaPnw4tm3bBqDxGLxEIoGvr6/a+x05ciS+//57iMViAEBtbS1u3brVbLugoCBVj+fvHs6Ql5eHCxcuoF+/fhgyZAh++ukn1NTUQCaTNRmneRQnJycIhULV+EFHVo0tKSlRXTd83759cHR0hL+/P6ytrVFXV4dr164BaBwneXDYbcyYMbh165ZqPOXo0aPNVkEGgGHDhmHPnj0AGmeNHT9+HABgYWEBoVCIn376CUDjdV78/PxgYmLyyJwVFRVwdXUFj8fD/v37UVZW1uJ2crkcOTk5GDRoEFauXInAwEDcvHkTQOMMtODg4Ha1D9Et1DMhXSo2NhbZ2dmIiIiAvr4+Ro4ciXXr1uGzzz5DXFwcNm3aBENDQ+zZs6fZoHZrAgMD8dFHH2HixIlQKBRgjGHlypXNLjD29NNPY8OGDS3uY+XKlVi8eDFCQkLA5/Px5Zdfws7ODnZ2dpg/fz7Cw8NhY2ODgIAA1aB2eno6nnzySVRWVoLH4+HLL7/EiRMn0KtXL2zYsAExMTGIj49HYGAgvv766xZfd9y4cbh8+TKKi4vh5uaG+Ph4vPbaazh9+jRefvll6Onpwc/PDzt37gTQOKi9fft2zJ07F3w+H6ampqreh4WFBVavXo2oqCgAjcVz8+bNzV5zyZIlWLRoEQICAuDh4aEasAeAXbt2YcmSJXj99ddhZWXV5sD4a6+9hvnz5+PDDz/EkCFD4O7u3uJ2CoUCMTExkEgkABoPZz6YoHDs2DFMmDCh1dchuo1WDSaPnVmzZuHll19+5EB8S6qrq2FmZgaZTIbJkydj/vz5ao2dkLYplUoMHjwYhw8fbnFWG+ke6DAXeex88MEHTabCquOFF15AREQEQkJC4O3tjenTp2sp3eOnsLAQr7/+OhWSbo56JoQQQjqNeiaEEEI6jYoJIYSQTqNiQgghpNOomBBCCOk0KiaEEEI6jYoJIYSQTvt/sIlRLsS56MkAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.kdeplot(log_realinc)\n", "\n", "plt.xlabel('Income (log10 1986 dollars)')\n", "plt.ylabel('Probability density')\n", "plt.title('Estimated distribution of income');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To draw samples from this distribution, we'll use a Scipy function called `gaussian_kde`, which takes the data and returns an object that represents the estimated density." ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [], "source": [ "from scipy.stats import gaussian_kde\n", "\n", "kde = gaussian_kde(log_realinc)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`kde` provides a method called `resample` that draws random values from the estimated density.\n", "As we've done in previous examples, we'll generate a resampled dataset with the same size as the original -- which is stored as `kde.n`." ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [], "source": [ "sample = kde.resample(kde.n)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can compute the 10th percentile and convert from a logarithm to a dollar value." ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5235.936465561343" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "10 ** np.percentile(sample, 10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is a random value from the sampling distribution of the 10th percentile.\n", "The following function encapsulates these steps." ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [], "source": [ "def resample_kde_percentile(kde):\n", " sample = kde.resample(kde.n)\n", " return 10 ** np.percentile(sample, 10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can generate a sample from the sampling distribution." ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [], "source": [ "t10 = [resample_kde_percentile(kde)\n", " for i in range(1000)]\n", "\n", "summary10 = summarize(t10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following table compares the result to the previous result with bootstrapping." ] }, { "cell_type": "code", "execution_count": 68, "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", "
EstimateSECI90
bootstrapping5155.46223.92[5107.5, 5107.5]
KDE resampling5097.59246.25[4692.62, 5485.93]
\n", "
" ], "text/plain": [ " Estimate SE CI90\n", "bootstrapping 5155.46 223.92 [5107.5, 5107.5]\n", "KDE resampling 5097.59 246.25 [4692.62, 5485.93]" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "table = pd.concat([summary9, summary10])\n", "table.index=['bootstrapping', 'KDE resampling']\n", "table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The means and standard errors are about the same with either method.\n", "But the confidence interval we get from KDE resampling is sensible." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Summary\n", "\n", "There are ten examples in this chapter, so let's review them:\n", "\n", "1. First we used resampling based on a normal model to estimate average family income in the GSS and compute a confidence interval.\n", "\n", "2. Then we used the same method to estimate the 10th percentile of income, and we found that all of the values in the sampling distribution are negative. The problem is that the normal model does not fit the distribution of income. \n", "\n", "3. To solve this problem, we switched to bootstrap sampling. First we estimated average family income and confirmed that the results are consistent with the results based on the normal model.\n", "\n", "4. Then we used bootstrapping to estimate the 10th percentile of income. The results are much more plausible." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "5. Next we used data from the BRFSS to estimate the average height of men in the U.S. Since this dataset is large, the confidence interval is very small. That means that the estimate is precise, in the sense that variability due to random sampling is small, but we don't know whether it is accurate, because there are other sources of error.\n", "\n", "6. One of those sources of error is oversampling -- that is, some people are more likely to appear in the sample than others. In the BFRSS, each respondent has a sampling weight that indicates how many people in the population they represent. We used these weights to do weighted bootstrapping, and found that the error due to oversampling is larger than the variability due to random sampling.\n", "\n", "7. In one exercise you used weighted bootstrapping to estimate the correlation of height and weight and compute a confidence interval.\n", "\n", "8. In another exercise you estimated the slope of a regression line and computed a confidence interval.\n", "\n", "9. Then I demonstrated a problem with bootstrap sampling when the dataset has only a few different values,\n", "\n", "10. And presented a solution using KDE to smooth the data and draw samples from an estimated distribution.\n", "\n", "In the exercise below, you can work on one more example.\n", "It is a little more involved than the previous exercises, but I will walk you through it." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** In Chapter 10 we used logistic regression to model support for legalizing marijuana as a function of age, sex, and education level.\n", "Going back to that example, let's explore changes in support over time and generate predictions for the next decade.\n", "\n", "To prepare the data for logistic regression, we have to recode the `grass` column so `1` means in favor of legalization and `0` means not in favor." ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "grass\n", "0.0 25997\n", "1.0 12672\n", "Name: count, dtype: int64" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gss['grass'] = gss['grass'].replace(2, 0)\n", "gss['grass'].value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As explanatory variables we'll use `year` and `year` squared, which I'll store in a column called `year2`.\n", "Subtracting 1990 from `year` before squaring keeps the values of `year2` relatively small, which makes logistic regression work better. " ] }, { "cell_type": "code", "execution_count": 111, "metadata": {}, "outputs": [], "source": [ "gss['year2'] = (gss['year'] - 1990) ** 2.0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can run the model like this:" ] }, { "cell_type": "code", "execution_count": 112, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 0.585064\n", " Iterations 5\n" ] } ], "source": [ "import statsmodels.formula.api as smf\n", "\n", "formula = 'grass ~ year + year2'\n", "results = smf.logit(formula, data=gss).fit()" ] }, { "cell_type": "code", "execution_count": 113, "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", "
Logit Regression Results
Dep. Variable: grass No. Observations: 38669
Model: Logit Df Residuals: 38666
Method: MLE Df Model: 2
Date: Wed, 08 May 2024 Pseudo R-squ.: 0.07506
Time: 14:15:47 Log-Likelihood: -22624.
converged: True LL-Null: -24460.
Covariance Type: nonrobust LLR p-value: 0.000
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err z P>|z| [0.025 0.975]
Intercept -42.0901 2.372 -17.746 0.000 -46.739 -37.441
year 0.0205 0.001 17.203 0.000 0.018 0.023
year2 0.0016 6.3e-05 25.436 0.000 0.001 0.002
" ], "text/latex": [ "\\begin{center}\n", "\\begin{tabular}{lclc}\n", "\\toprule\n", "\\textbf{Dep. Variable:} & grass & \\textbf{ No. Observations: } & 38669 \\\\\n", "\\textbf{Model:} & Logit & \\textbf{ Df Residuals: } & 38666 \\\\\n", "\\textbf{Method:} & MLE & \\textbf{ Df Model: } & 2 \\\\\n", "\\textbf{Date:} & Wed, 08 May 2024 & \\textbf{ Pseudo R-squ.: } & 0.07506 \\\\\n", "\\textbf{Time:} & 14:15:47 & \\textbf{ Log-Likelihood: } & -22624. \\\\\n", "\\textbf{converged:} & True & \\textbf{ LL-Null: } & -24460. \\\\\n", "\\textbf{Covariance Type:} & nonrobust & \\textbf{ LLR p-value: } & 0.000 \\\\\n", "\\bottomrule\n", "\\end{tabular}\n", "\\begin{tabular}{lcccccc}\n", " & \\textbf{coef} & \\textbf{std err} & \\textbf{z} & \\textbf{P$> |$z$|$} & \\textbf{[0.025} & \\textbf{0.975]} \\\\\n", "\\midrule\n", "\\textbf{Intercept} & -42.0901 & 2.372 & -17.746 & 0.000 & -46.739 & -37.441 \\\\\n", "\\textbf{year} & 0.0205 & 0.001 & 17.203 & 0.000 & 0.018 & 0.023 \\\\\n", "\\textbf{year2} & 0.0016 & 6.3e-05 & 25.436 & 0.000 & 0.001 & 0.002 \\\\\n", "\\bottomrule\n", "\\end{tabular}\n", "%\\caption{Logit Regression Results}\n", "\\end{center}" ], "text/plain": [ "\n", "\"\"\"\n", " Logit Regression Results \n", "==============================================================================\n", "Dep. Variable: grass No. Observations: 38669\n", "Model: Logit Df Residuals: 38666\n", "Method: MLE Df Model: 2\n", "Date: Wed, 08 May 2024 Pseudo R-squ.: 0.07506\n", "Time: 14:15:47 Log-Likelihood: -22624.\n", "converged: True LL-Null: -24460.\n", "Covariance Type: nonrobust LLR p-value: 0.000\n", "==============================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "------------------------------------------------------------------------------\n", "Intercept -42.0901 2.372 -17.746 0.000 -46.739 -37.441\n", "year 0.0205 0.001 17.203 0.000 0.018 0.023\n", "year2 0.0016 6.3e-05 25.436 0.000 0.001 0.002\n", "==============================================================================\n", "\"\"\"" ] }, "execution_count": 113, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To generate predictions, I'll create a `DataFrame` with a range of values of `year` up to 2030, and corresponding values of `year2`." ] }, { "cell_type": "code", "execution_count": 115, "metadata": {}, "outputs": [], "source": [ "years = np.linspace(1972, 2030)\n", "df_pred = pd.DataFrame()\n", "df_pred['year'] = years\n", "df_pred['year2'] = (years - 1990) **2\n", "\n", "pred = results.predict(df_pred)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I'll use `groupby` to compute the fraction of respondents in favor of legalization during each year." ] }, { "cell_type": "code", "execution_count": 116, "metadata": {}, "outputs": [], "source": [ "grass_by_year = gss.groupby('year')['grass'].mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following function plots the data and decorates the axes." ] }, { "cell_type": "code", "execution_count": 117, "metadata": {}, "outputs": [], "source": [ "def plot_data():\n", " grass_by_year.plot(style='o', alpha=0.5, label='data')\n", " plt.xlabel('Year')\n", " plt.ylabel('Fraction in favor')\n", " plt.title('Support for legalization of marijuana')\n", " plt.legend(loc='upper left');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the predictions look like, plotted along with the data." ] }, { "cell_type": "code", "execution_count": 118, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(years, pred, label='logistic model', color='gray', alpha=0.4)\n", "plot_data()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The model fits past data reasonably well and makes plausible predictions for the next decade, although we can never be sure that trends like this will continue.\n", "\n", "This way of representing the results could be misleading because it does not show our uncertainty about the predictions.\n", "Random sampling is just one source of uncertainty among many, and for this kind of prediction it is certainly not the biggest.\n", "But it is the easiest to quantify, so let's do it, if only as an exercise." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Write a function called `bootstrap_regression_line` that takes a `DataFrame` as a parameter, uses `sample` to resample the rows, runs the logistic regression model, generates predictions for the rows in `df_pred`, and returns the predictions.\n", "\n", "Call this function 101 times and save the results as a list of `Series` objects.\n", "To visualize the results, you have two options:\n", "\n", "1. Loop through the list and plot each prediction using a gray line with a low value of `alpha`. The overlapping lines will form a region showing the range of uncertainty over time.\n", "\n", "2. Pass the list of `Series` to `np.percentile` with the argument `axis=0` to compute the 5th and 95th percentile in each column. Plot these percentiles as two lines, or use `plt.fill_between` to plot a shaded region between them." ] }, { "cell_type": "code", "execution_count": 119, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# Solution\n", "\n", "def bootstrap_regression_line(df):\n", " n = len(df)\n", " sample = df.sample(n=n, replace=True)\n", " results = smf.logit(formula, data=sample).fit(disp=False)\n", " pred = results.predict(df_pred)\n", " return pred" ] }, { "cell_type": "code", "execution_count": 120, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# Solution\n", "\n", "t11 = [bootstrap_regression_line(gss)\n", " for i in range(101)]" ] }, { "cell_type": "code", "execution_count": 121, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZEAAAEICAYAAACeSMncAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAAuJAAALiQE3ycutAABRQklEQVR4nO3de3xT9f0/8Fdyck+aNE3vbUppS2lTsOWqU+QyQKcOVIZXRNyofjdx8zv9urmxnzg33b7qdLpHde4LTl29IuKqDq+sArohIiBQ0HIpbVp6T5PmfnLO5/dHzVlDL6Sl6fX9fDz6gDQnJ59PA+fVz/XIGGMMhBBCyCDIR7oAhBBCxi4KEUIIIYNGIUIIIWTQKEQIIYQMGoUIIYSQQaMQIYQQMmgUIoQQQgaNQoSMqNtuuw0JCQlITU0dkvM999xzKCkpGZJzDfS9ioqK8Pbbbw/5++zcuROZmZlDft5oDfVnNFC1tbUwGAxwOp0AgB/+8If4+c9/PiJlIT1RiIwRX331FZYtW4bExEQYjUYUFBTgf//3f0e6WH26//77cdVVV/V7zK5du/D666/j5MmTaGxsHJ6CxdDhw4fx3e9+95zOUVNTA5lMho6ODul7F198Mex2+zmWbnBGw2eUlZUFt9sNk8kEAPjzn/88qv/tTzQUImPEFVdcgeLiYtTW1sLhcGDLli3IyckZ6WL1iuf5qI47efIksrKypItDrN6HDN65fkbnij7jMYCRUa+lpYUBYLW1tX0eA4Dt27dPevz444+zBQsWRDz/xz/+keXn5zOTycSuvfZa1tHRwRhj7OTJkwwA+8tf/sImTZrEEhIS2I9+9CMWCASk17/33nuspKSEGY1GNmPGDPbBBx9Iz61Zs4b94Ac/YNdccw2Li4tjDzzwAFMqlYzjOKbX65ler+9R3ieeeIKp1Woml8uZXq9na9asYYwxtmfPHnbhhRcyk8nECgsL2UsvvSS9ZsOGDeyKK65gP/zhD5nZbGZ33XVXj/P+9a9/ZcXFxdLjzs5Otm7dOma1WllSUhJbvXq1VG/GGPv444/ZtGnTmMFgYFdffTX7wQ9+IJWFMcZWrVrF0tLSWFxcHJs5cybbvn17n+81adIktnXrVsYYYzNnzpTqrtfrmVwuZxs2bGCMMfaHP/yB5eXlMYPBwHJyctif/vQn6RxJSUkMgPS68vJy9s9//pOZTCbpGJfLxW699VaWmprKUlNT2X/9138xt9sd8Vm+8MILLDc3l5lMJrZmzRoWDAZ7/KzC+vps+/qMugu/36ZNm9jkyZOZXq9n99xzD2toaGBLlixhcXFxbP78+ez06dPSa+655x6WlZXFDAYDKywsZK+99pr0XLiuTz31FLNarWz27NnSezgcDsZY17+3O++8M+L47q688krpZ93Z2cmWL1/OkpKSmNFoZBdffDHbv3+/dOyGDRvYd7/7XbZu3TpmMpmY1Wplr7zySsTPZtasWcxoNLLU1FT2ox/9iHm93j5/lhMRhcgYIIoimzp1Klu8eDF79dVXWU1NTY9jogmRWbNmsfr6euZwONjSpUvZLbfcwhj7z4XgsssuYw6Hg9XX17Pi4mJ2//33M8YYq66uZhqNhm3ZsoXxPM82b97MtFotO3HiBGOs6z+1Vqtl7777LhMEgXk8HrZhwwZ25ZVX9luvMy/CDoeDWSwW9uSTT7JgMMgqKyuZXq9nu3btYox1/YfnOI799a9/ZTzPM4/Hc9ZzXnPNNeyGG25gDoeDud1udv3117ObbrqJMcZYe3s7M5lMbNOmTYznefbOO+8wtVodcbF89tlnWUdHBwsGg+zhhx9mCQkJzOVy9fpe3UOku+3btzOz2SxdvF5//XVWW1vLRFFk27dvZxqNRqrjmRdMxnpeKL///e+zRYsWsdbWVtbS0sIWLFjAbr311ojX33DDDczlcrH6+nqWmZnJ/vrXv/b6GZztsz2zjmcKv99NN93E3G43O3z4MFOpVGzevHns0KFDzO/3syVLlrAf//jH0mvKy8tZU1MTC4VC7OWXX2ZqtVp6v3/+859MLpez//qv/2Iej4d5PJ5zChGn08leeeUV5na7mc/nYz/5yU9Yfn4+E0WRMdb1b0qpVLJXX32VhUIh9vzzzzODwSB9xjt27GBffPEFC4VC7Pjx46ygoID99re/7fPnMRFRiIwRp0+fZnfddRez2WxMLpezwsJC9v7770vPRxMir776qvT43//+N1OpVEwQBOk/6e7du6XnX3nlFZabm8sYY+y3v/0t+853vhNRnqVLl7IHH3yQMdb1n/rMwBhMiJSXl7OCgoKIY2699VbpArlhw4Z+L2hnnrO5uZnJ5XLW3t4uPf/1118zpVLJQqEQe+GFF1hRUVHE6y+//PJef+MOi4+Ply740YTI0aNHWWJiInvrrbf6POeVV14pXZjOFiKCIDCVSsX+/e9/S89/8sknTK1WR3yWR44ckZ4vLS1ld9xxR6/vfbbPNtoQOXr0qPS9OXPmsHvvvVd6XFZWxi666KI+z1FcXMzKy8ulup5Z/3MJkTM5HA4GgNntdsZY17+p888/X3peFEWmUqnY559/3uvrH3/8cbZkyZI+6zIR0ZjIGJGamoo//OEPOHz4MFpaWnDZZZfh6quvRnt7e9TnmDRpUsTfg8EgWlpa+ny+vr4eAGC325GdnR1xrpycnIjB3qysrIFWqYehfp+amhqIoojJkycjPj4e8fHxmDNnDuRyORobG9HQ0ACr1Rrxmu7nF0UR69evx5QpU2A0GhEfHw+n04nW1tao3r+trQ1XXHEFfvWrX0UMuL/44ouYOXMmEhISEB8fj3/84x9Rn7OlpQXBYDDi55STk4NAIBBxju4zqfR6PTo7O3s9XzQ/82ikpKRIf9fpdD0eu91u6fHjjz+OoqIimEwmxMfH49ChQxFlj4uLQ3x8/IDevy8+nw+33347srOzYTQapbr29bOSyWTQarXSz2vPnj1YsmQJUlJSYDQa8ctf/jLqz2qioBAZgxISEnD//ffD4/Hg5MmTALouFF6vVzrm9OnTPV536tQp6e+1tbVQqVRISkrq8/mMjAwAQGZmJmpqaiLOVVNTEzHtVC6P/Kd05uNoDOZ9+mO1WiGXy9HQ0ICOjg7py+/3IyMjA+np6airq4t4TW1trfT3l156CS+99BLeeecdOJ1OdHR0wGQygUVx94RgMIirr74al156Ke68886I869ZswYPP/wwmpub0dHRgcsvv1w659nql5SUBJVKFfFzqqmpgVqtRmJiYjQ/lgjR/MyH0q5du3D//ffjhRdegMPhQEdHB6ZNmxbxMx3IZ2wwGODz+SJe3/3f/h/+8Afs3bsXu3btgsvlkuoazWcIADfccAMWLVqEEydOwOVy4aGHHor6tRMFhcgY4HA48Ktf/QpHjx6FIAjwer147LHHkJCQgIKCAgDAzJkz8be//Q2hUAj79+/H3/72tx7neeSRR6QL6n333Yfrr78+4j/sAw88gI6ODjQ0NOB3v/sdVq1aBQC47rrrUFlZib///e8IhUJ44403sGPHDlx//fV9ljklJQWnTp1CKBSKup6XX345mpub8dRTTyEUCmHnzp148cUXcfPNN0d9ju5SU1Nx1VVX4Y477pB+e2xsbMTWrVsBdM14q6urw3PPPYdQKIR3330X27dvl17vcrmgUqmQmJiIYDCIBx54oM/f6M+0du1a6PV6PPnkkxHfd7vdYIwhOTkZcrkc//jHP/D+++9LzyclJUEul+P48eO9nlcul+PGG2/E+vXr0d7ejra2Nvzyl7/E6tWrBxXcg/lsz4XL5QLHcUhKSoIoinj22Wdx6NChQZ8vPz8fSqUSL730EgRBwMsvv4x9+/ZFvJ9Go4HZbIbb7cYvf/nLAZc3Pj4eer0eR44cwdNPPz3oso5XFCJjgEqlQn19PS6//HKYTCZkZWXhk08+wbZt26DX6wEAf/rTn/Cvf/0L8fHx+PnPf441a9b0OM9NN92ERYsWYdKkSYiLi8MTTzwR8fyVV16JkpISTJs2Deeff770Hy4vLw9vvPEGNmzYgISEBDzwwAPYunVrv1OMr7nmGhiNRiQlJUXdNWE2m7Ft2zaUl5fDYrHgtttuw9NPP4158+ZF+ZPq6bnnnpO6sYxGIy6++GLs3bsXQFeL7s0338Sjjz6K+Ph4/OUvf8E111wDtVoNAFizZg2KioowadIk5OTkQKvVRv0benl5OSorK2EymWAwGGAwGPDQQw/BZrNh/fr1+Pa3vw2LxYJXX30Vy5cvl16n1WqxYcMGXHbZZYiPj8dLL73U49xPPPEEsrOzYbPZUFRUhLy8PDz22GOD+vkM5rM9F9/5znewcuVKTJ8+Henp6Th8+DAuuuiiQZ/PaDTi//7v/3DvvffCYrHgk08+waWXXio9f9ddd4HjOKSkpGDatGn41re+NaDzP/PMM3j00UdhMBjwwx/+MGbhOpbJGLXNJgSZTIZ9+/b1upq7pqYGkydPhsPhGLK+6LHq0ksvxfz587F+/fqRLgrpw+rVq5GWloaHH354pItCQC0RMsG9//77aG1tRSgUwiuvvILt27djxYoVI10s0gee51FVVYXc3NyRLgr5hmKkC0DISNq7dy9WrVoFr9eLyZMn4+WXX0ZhYeFIF4v0IhAIIDExERdeeCFuvPHGkS4O+QZ1ZxFCCBk06s4ihBAyaGOyO8toNI7o1tiEEDKR2O12uFyuXp8bkyGSmZmJqqqqkS4GIYRMCDabrc/nqDuLEELIoFGIEEIIGbQx2Z11NhNlwplMJhvpIhBCJrhxFSI8z6Ourg6BQGCkizIs1Go1rFYrlErlSBeFEDJBjasQqaurQ1xcHLKzs8f9b+mMMbS1taGurm7U3iaXEDL+jZsQYYwhEAggOzt7ULuZjjUymQwWiwWtra1gjI370CSEjE7j7mo7kS6mE6muhJDBYV13sI3Z+WMaIpWVldJW1aWlpRAEoccxGzZsQFFREYqKivDrX/86lsUhhJAJhTEGURQRCoViFiQxCxFRFFFaWorNmzfj2LFjcLlcKC8vjzhm27Zt+OCDD/DFF1/gyy+/xIEDB7Bjx45YFalXvCDC6eXBC2LM3qOyshJLlizp95gHHnggZu9PCJlYGGMQBAGCICAYDMLj8cTsvWIWInv27EF6erq00nHt2rXYsmVLxDGHDh3CokWLoFarwXEclixZgldffTVWRYogigyVXzXj129V4YG3D+PXb1Wh8qtmiOLITA+mECGEnKtw15UoihAEAZ2dnWhoaMDJkydjNms1ZiFit9thtVqlx1lZWT3uZz1jxgxs27YNTqcTfr8ff//733scAwBlZWWw2WzSl8PhOOfy7ahuwdZ99dCpOGSaddCpOGzdV48d1S3nfG4AePHFF5Gfn49Zs2bh73//O4CubccvuugizJgxAyUlJdJtUX/6059CEASUlJRILZYf//jHmDNnDqZPn46bbrppwkxbJoQMTveuq0AggPb2dtjtdjQ1NcHj8cDv98fkfWMWItH0vy1ZsgSrVq3CwoULsXTpUkyfPh0cx/U4bt26daiqqpK+zGbzOZWNF0R8eKQZKUYNtMqu99MqOaQYNfjoSPM5d201Njbinnvuwccff4zPP/8ctbW1AIApU6agsrIS+/btwzvvvIMf/ehHAIDHH38cHMdh//79+PDDDwEA999/P/bs2YODBw8iISEBzz333DmViRAyfnVvfXg8HjQ0NMBut6OjowNutxs8z8dsIk7MQsRqtUa0Kmpra3vdeffuu+/Gvn37sHPnTmRkZKCgoCBWRZJ4AwJ8wZAUIGFaJQdvMARvoOcEgIHYvXs35s2bh7S0NMhkMtx8880AALfbjVWrVmHatGm44oorUFdXh9bW1l7P8fe//11qibz55ps4ePDgOZWJEDL+hMc+QqEQ/H4/WlpaUFdXh7a2Nni9Xvj9fsjlcqjV6pgtSo7ZOpHZs2fDbrejqqoKNpsNmzZt6nHbUVEU0dbWhqSkJJw+fRp/+ctfsG3btlgVSaJTc9CqFPDxQkSQ+HgBOpUCOnXP1tBQWL9+PWbOnIlXX31VWufRWxOzpqYG999/P/bu3YukpCT86U9/woEDB2JSJkLI2NS99eH1etHW1ob29nb4/X7puqJQKKDRaGA0GiGKsZk8FLOWCMdx2LhxI1auXInc3FwYDAasXr0aFRUVKC0tBQAIgoAFCxagqKgIl156KR555BFkZ2fHqkgSJSfHksJkNLn88PFdrQ4fL6DJ5cfiwmQouXP7sZx//vn45JNP0NjYCMaYNCvN6XQiIyMDMpkMr7/+Otrb26XX6HQ6aQaFy+WCVquF2WyG1+vF3/72t3MqDyFk/OgeHsFgEB0dHbDb7WhtbUUgEEAgEIBcLodGo4FOp0NKSgoyMjKg0+liUp6Yrlj/9re/3eO+H8uXL8fy5csBAEqlcsTuCzJ/ShIA4KMjzWhzB6BTKXD1jAzp++ciNTUVDz/8MObPn4+4uDgsWLAADocDv/jFL3DzzTfjD3/4Ay6++GJkZWVJr7njjjswa9YsZGZm4sMPP8TChQtRUFCApKQkzJ07N2aDYoSQsaP74Lnf74fD4UB7ezu8Xi98Ph9kMhk4joNWq4XBYIDFYkF8fDxUKlXMdvIYk/dYt9lsPcKHMYajR4+ioKBgQANIvCDCGxCgU3Pn3AIZboOtMyFk7Dmz+6qlpQUdHR3w+XwIBoMQRREajQZqtRqJiYkwmUwwGo1QKpXnfH3o7ZobNm72zhosJSeHSTe2woMQMnGE136EB9Db29vR0tKCQCAAn88HQRDAGIPBYIDRaJRaH0qlEhzHxfwXzAkfIoQQMlqd2X3V3t6OtrY2+P1++Hw+AF2D5waDAWazGQkJCUPW+ojWuAuRibSj7RjsiSSERKl795Xf70dbW5sUIN0Hz7VaLRITE2GxWKTdP4bzGjhuQkQmk0GtVqOtrQ0Wi2XcB0n4fiJqtXrc15WQiaZ7gDidTjQ2NsLn88HtdoMxJgWI0WhEYmIizGYzlErliNwGY9yECPCfBY59LeAbb8J3NiSEjB+MMYRCIfA8L41/uN1ueL1eyGQyqFQq6HQ6xMfHj0j31ZnGVYgolUrk5ORMmG4eaoEQMn70Nv7R2toqjX90X/uRmJiIxMTEEem+OtO4CpEwurgSQsaSMwOkra0NDodDWn3OcRx0Op209sNisYxY99WZxmWIEELIWHFmgDQ2NsLpdEasPtfpdDCbzUhMTBzx7qszUYgQQsgI6e3eHx6PRxpAVyqV0Ol0SEhIgMViQVxcHBQKxagJEIBChBBCRkT3AGlpaZEG0MN76Gm1Wmi1WqSkpCAxMREqlWrExz96QyFCCCHDLBwg4QH05uZmaev28OpzvV6PpKQkaf3HaBj/6A2FCCGEDKPwFN5AIICWlha0trZK+18BQFxcHIxGI5KTk2EymUb9WjAKEUIIGSaMMfA8L83ACm/fHg6Q8PhHUlLSqBtA7wuFCCGEDIPwDCyfzyftgeX1esHzPABAr9fDYrEgKSkJBoNh1A2g94VChBBCYqx7gLS2tkr3Pg+FQtIUXovFgpSUFOh0ulE5gN6XmI7UVFZWoqioCHl5eSgtLYUg9Lx3+aOPPoqioiKcd955+M53voOmpqZYFokQQoaVKIrgeR5erxfNzc1oa2uD0+kEz/PgOA4GgwGpqanIyMiAXq8fMy2QsJiFiCiKKC0txebNm3Hs2DG4XC7pNrFh1dXVePrpp/H555/jyy+/RElJCR599NFYFYkQQoZVOEB8Pp90E6nOzk4Eg0EoFArExcUhLS0NycnJ0Gg04DhupIs8YDELkT179iA9PR02mw0AsHbtWmzZsiXimPAgk8/nA2MMLpcLaWlpsSoSIYQMm3CAeDweNDY2wuFwwOl0IhgMQq1WIy4uDikpKUhKSoJGoxm1U3jPJmZjIna7PWKH2aysLNTV1UUck5+fjx//+MewWq2Ii4vD1KlT8ac//anHucrKylBWViY9djgcsSo2IYScs+4Bcvr0abjdbrhcLvA8D71eD4PBIC0iHO1TeM8mZtEXzU66bW1teOONN3Ds2DHU19cjJycHjzzySI/j1q1bh6qqKunLbDbHosiEEHLOzgyQzs7OHgGSlpY2LgIEiGGIhO/tEVZbW4vMzMyIY7Zv346cnBykpaWB4zhcc801+PTTT2NVJEIIiakzu7C6B4hOp4PRaERGRoa0Cn2sBwgQwxCZPXs27HY7qqqqAACbNm3CihUrIo6ZNGkSdu/eDZfLBQD44IMPpDEUQggZS84MEJfLFdECMZvNSE9Ph9lshkqlGhcBAsQwRDiOw8aNG7Fy5Urk5ubCYDBg9erVqKioQGlpKQBg7ty5WLNmDebOnYvp06fj1KlTuPfee2NVJEIIiYnuAdLU1ASXy4XOzk4pQCwWC1JTU8ddgACAjI3B2wDabDaphUMIISOpty6szs5O+P1+GAwGJCYmIjk5GfHx8WNiG5Pe9HfNpRXrhBAySOGV6N1nYbnd7ogASUlJgclkGrMBcjYUIoQQMgjh3Xjdbrc0C8vj8cDn8/UIEJVKNdLFjRkKEUIIGaBwgHi9XrS0tKCzsxNutxuBQGBCBQhAIUIIIQMSDhC/34+mpiZ0dHREzMKaSAECUIgQQkjUGGMQBAE+n6/HViZxcXETLkAAChFCCImaKIoIBAJobm6Gw+FAR0cHeJ6HwWCQpvGGB9EnirG54xchhAwzQRCkLqy2tjY4HA4EAgGpC2siBghAIUIIIWcVboG0tLRIAdK9C2uiBghA3VmEENIvURQRDAbR0tKC5uZmtLe3IxQKTbhZWH2hlgghhPQhHCCtra1obm5GR0cHQqEQtFotzGYzkpOTpa1MJioKEUII6UV4OxOHw4HGxkY4nU4EAgFoNBqYTCakpaUhISFhQgcIQCFCCCE9hAOkra1NChCPxyMFSGZmJgXINyhECCGkm/Btu10uF1paWtDe3g632w2O42A0GilAzkAD64QQ0k0oFILT6cTp06fR1tYGj8cDmUyGxMREWK1WWCyWCTkLqy/UEiGEkG+EQiH4fD60tLTA7XbD6XRCFEUkJiYiIyMDZrMZSqUSIZHB6eXBC+JIF3nExTREKisrUVRUhLy8PJSWlkIQhIjn9+/fj5KSEukrISEBP/3pT2NZJEII6ZUoivB6vaivr4fT6URTUxMYY7BYLMjMzERiYiJUKjU+/roFv36rCg+8fRi/fqsKlV81QxTH3G2ZhkzMQkQURZSWlmLz5s04duwYXC4XysvLI44pKSnB/v37pS+LxYJrrrkmVkUihJBehQMkvA6kra1N6sLKzMxEUlIS1Go1dh5rxdZ99dCpOGSaddCpOGzdV48d1S0jXYURc9YQEQQBixcvHvCJ9+zZg/T0dOme6WvXrsWWLVv6PH737t1gjOHCCy8c8HsRQshghdeCNDY2oq2tDR0dHQgGgzCbzUhNTUVycjJUKhUEBnx4pBkpRg20Sg4AoFVySDFq8NGR5gnbtXXWEOE4TuonHAi73Q6r1So9zsrKQl1dXZ/Hl5eX46abbhrQexBCyLnoHiAOhwPNzc0IBAJSgKSlpUGj0YDjOHgDAnzBkBQgYVolB28wBG9A6ONdxreoZmdZrVbMnTsXy5cvh16vl77/y1/+ss/XDOTW7aFQCK+99ho++eSTXp8vKytDWVmZ9NjhcER9bkII6U14LUhLSwtaW1vR2toKQRBgNBqRnJyM9PR06HQ6cFxXaOjUHLQqBXy8EBEkPl6ATqWATs319VbjWlRjIlOmTMHKlSuhUqnA87z01R+r1RrR8qitrUVmZmavx7733nvIyclBXl5er8+vW7cOVVVV0pfZbI6m2IQQ0idBENDR0YHGxka0trYiGAxCp9MhJSUF6enp0Ov1UoAAgJKTY0lhMppcfvj4rlaHjxfQ5PJjcWEylNzEnOwaVUtkw4YNAz7x7NmzYbfbUVVVBZvNhk2bNmHFihW9HlteXo7Vq1cP+D0IIWQwwgESXgvS2dkJo9GIlJQUpKWlwWg0RgRI2PwpSQCAj440o80dgE6lwNUzMqTvT0RRRWdzczOuv/56pKamIjU1FTfeeCOam5v7fQ3Hcdi4cSNWrlyJ3NxcGAwGrF69GhUVFSgtLZWOc7vd2LZtG6677rpzqwkhhERBEAR0dnaiqakJzc3NcLlcUKvVUhdWfHw8FIref7+Wy2VYODUZ9y2z4b7vFuG+ZTYsnJoMuVw2zLUYPWQsisGLZcuWYdGiRVi7di1kMhk2bdqEjz76CG+//fZwlLEHm82GqqqqEXlvQsjYJYoi3G43Ghoa0NjYiKamJqhUKmRkZGDy5Mkwm819BshE1t81N6qWSF1dHe666y6YTCYYjUb89Kc/hd1uH9JCEkJILIXXgjQ1NaGlpQUtLS1QKBRISUlBVlYWTCYTBcggRBUiSqUSBw4ckB5/+eWXtHcMIWTMYIzB7/fj9OnT0s2lGGNISUlBdnY2EhIS6Jo2SFHF7uOPP45ly5YhLS0NjDE0NTXhpZdeinXZCCFkSAQCAZw+fRrt7e1obm5GKBRCamoqrFYrEhMToVQqIZNN3HGNcxFViMybNw/Hjh3D0aNHIZPJMHXqVNoGmRAy6vGCCJc3gM72rnUgTU1NEAQB8fHxyMzMREpKCgXIOYoqRG666SbcdNNNWLp0aa/T3gghZDQRRYYd1S344HAjnB4feJ8HORoPslQ+mONNyMrKQkpKCtRqNQXIOYpqTOSqq67CX/7yF0yePBl33HEH/vWvf8W6XIQQMmg7qlvwxhd2KBCCQRaEEPDh04YQ6kMGZGRkIDMzEzqdjgJkCEQVIitXrsQbb7yBgwcPYubMmfh//+//9bm6nBBCRhIviPiwqgkJGhl4vw9udydE3g+LVoHjAT2SU9Og0+kgl0/MFeZDbUA/xbq6OlRXV+PEiRPIzs6OUZEIIWTwPIEQXN6AFCBerw8KhQLJFhM4lRZKrYG65YdQVGMiv//97/HSSy9BrVbjxhtvxCeffIK0tLRYl40QQgaEMQa5yEPkfWj3exHwer65N3oclBo9THIl4rQ0KWgoRRUiXq8XmzdvxtSpU2NdHkIIGbRAIIDmxtMojOPxQaMPRpUcZmMcNHoTOoLA92alTtiNEmMlqhB54IEHAADt7e3w+/3S99PT02NTKkIIGSBBEKSV6JZQK2YmyHFKMMIr00HDKfG96akTeqPEWIkqRD788EP88Ic/hN1uh8FggMPhQFZWFk6ePBnr8hFCyFkJggCHwyHticVEAd+abMZNefmIS0iESa+BSkHjILEQVbvuZz/7GXbs2IHCwkK0trbi1VdfxfLly2NdNkIIOStBEOByuVBfX4+mpia4XC5YLBZMmjQJGempSDTqKEBiKKoQkclkSE9PRygUAtA15Xfnzp0xLRghhPSGF0Q4vTx4QQRjDJ2dnbDb7airq0NHRwfMZjMyMjJgtVqhUqloLUiMRdWdpdVqIQgCbDYbHn74YWRkZESMjRBCSKyFV6F/eKRZutf5vBwjMrhOKUDi4uKQnZ2N7OxsaDQaCpBhEFVL5Mknn4TP58Mf//hHHD16FFu3bsULL7wQ67IRQohkR3ULtu6rh07FIdOsg5pjeHV3Dd7bfwrt7e3QarXIyclBdnY2rUYfRv2GyNq1awEAu3fvhsFgQFpaGp599lm8/vrrmD179llPXllZiaKiIuTl5aG0tBSCIPQ4pqmpCVdeeSUKCgowderUEbvRFSFk9OIFER8eaUaKUQOtkoMgCAj6PFALXnxW74eMUyArKwtWqxV6vZ4CZBj1GyK7d+9GKBTC//3f/w34xKIoorS0FJs3b8axY8fgcrlQXl7e47g1a9Zg1apVOHr0KA4fPoxvfetbA34vQsj45g0IUheWKIrweNzo7OxEwOtBCHKkZGQhNzcXJpOJVqMPs35DZNmyZTCZTDhw4ABUKpX0pVQqz7oV/J49e5Ceng6bzQagq1WzZcuWiGO++uorNDU14dprrwUAKBQKWCyWc6kPIWQc0qk5aFUKeIMheL1eOJ0uuFydCDEZEox62KbkwGg00n5YI6Dfn/jvfvc7eDweLF26FMFgUPrieR7BYLDfE9vtdlitVulxVlYW6urqIo45evQokpOTccMNN2DGjBm4+eab0d7e3uNcZWVlsNls0pfD4RhIHQkhY5ySk2Px1CTUtbrQ3N4Bl8sFPy8gqNDhuzMnISnRAo7jqBtrBEQV2+++++6AT8wYO+sxoVAIO3bswPr167Fv3z5kZ2fjnnvu6XHcunXrUFVVJX2ZzeYBl4cQMnYxxlCcqsLcJKDd5UazR4BKF4eVs6y4rGQyFAoFBcgIidld6a1Wa0TLo7a2FpmZmT2OsdlsmDZtGgDg+uuvx4033hirIhFCxiDGGNxuN+x1dUgINmJBXBtM2cmYXpiDvJzJdGfCERazDsTZs2fDbrejqqoKALBp0yasWLGixzHBYFAKmw8++ABFRUWxKhIhZAzy+Xw4deoUamtr0dHRgcQEM6ZPzUVO9iQKkFEgZi0RjuOwceNGrFy5EoFAAAsWLMDq1atRUVGBiooKbNy4EXK5HE899RSuvPJKhEIhZGRk4Nlnn41VkQghY0wwGJRWozc3N8NoNCIvLw/Z2dl0a9tRQsaiGLw4duwYHnnkEZw8eVLa+gQAtm/fHtPC9cVms0ktHELI+MTzPOrq6vD111/DbrcjLi4O+fn5mDJlCq0FGWb9XXOjaomsXLkSq1evxqpVq2gONiEk5kKhEFpaWnDixAnY7XZotVpMnjwZeXl5tBp9lIkqRGQyGe6+++5Yl4UQQiCKIlpbW/H111+jtrYWCoUCubm5mDp1KvR6Pa0FGWWi+jRWrFiBzZs397ptCSGEnKvwzrzBkIC2tjYcO3YMdrsdAJCXl4f8/HzExcVRC2QUivrOhoIgQC6XQy6XgzEGmUx21gWHhBDSn+4783qDIcgFHvkGP/SddgQCAeTk5GDKlCkwmUyQyWQUIqNQVCHC83ysy0EImYDCO/OmGDUwKEQ0NHXiH6dcsOkFXJyXjoKCAiQmJkIul1OAjFLUuUgIGRHdd+ZVQITD4YDP7YKG+VErmDC1wIakpCQKkFGu3xCZO3cuAEgbLp75JyGEDFZ4Z16ljMHhaEdHhxNerxcmgw5agwlGSxLthzUG9Nud9dlnnwGg7ixCyNDTqTmoOaC5rR1upxOdnZ0wGAyIizdDrTfBqKPFhGMBdWcRQkaGKKA4icPJJifaOjqh0+mgN8YjwOmw1JYKlYLWpI0FFCKEkGEXCoVw+vRp6Fy1mCxrgkypRkhtgjYuHt+bacX8/KSRLiKJUsz2ziKEkN6EQiE0NTXhyJEjqLfXYXqiDisLszApNx8JRj21QMYYChFCyLARBAEtLS2oqqpCTU0NNBoNCgoKYCssgE6no9XoY1BUIfLvf/8b9913H2pqahAKhaTFhidOnIh1+Qgh4wRjDG1tbaiqqsLJkyehVCpRWFiIwsJCCpAxLKoQueWWW/Dggw9izpw5tAEjIWTAwgFy5MgRHD9+HHK5HIWFhSgoKKD9sMa4qEIkLi4O3/ve92JdFkLIONXR0YHq6mpUV1cDAKZOnYqCggLaD2sciCr+L7/8cjz88MM4efIkGhoapC9CCDkbp9OJ6upqHDlyBIIgIC8vDzabjfbDGieiaom88MILAICnn35a+l40YyKVlZVYt24dAoEAFi5ciGeeeaZHd5hMJkNxcbH0+KOPPoLFYom6AoSQ0cvlcuHrr7/GkSNHEAwGkZeXh+LiYpjNZgqQcSKqEDl58uSATyyKIkpLS1FRUQGbzYZrr70W5eXlWLNmTcRxHMdh//79Az4/IWR06+zsxLFjx3DkyBF4vV5MnjwZJSUlFCDjTNSjWe+99x7uvfde3Hvvvfjggw/OevyePXuQnp4Om80GAFi7di22bNky+JISQsaMzs5OVFdX49ChQ/B4PMjOzsasWbOQkJBAATLORBUiv/nNb3DfffchLS0N6enpuO+++/Dggw/2+xq73Q6r1So9zsrKQl1dXY/jRFHEnDlzMGvWLDz22GO9nqusrAw2m036cjgc0RSbEDLMGGPo7OzE8ePHcfDgQbjdblitVsyePRsWi4UCZByKqjtr8+bN2LNnD9RqNQDgtttuw9y5c7F+/fo+X8MYi6oAp06dgtVqRVtbG6666iqkpaXhhhtuiDhm3bp1WLdunfQ43LohhAwvXhDhDQjQqTkoucjfQRlj8Hq9OH78OPbv3w+Px4NJkyZh7ty5FCDjWFQhwhiLmMcdvrthf6xWa0TLo7a2FpmZmb0eBwAWiwWrVq3Cp59+2iNECCEjq/sdCH3BELQqBZYUJmP+lCTI5TIpQKqrq6UAycjMwtTpM2AyUxfWeBZViFx99dVYtGgRVq1aBQB46aWXzrpuZPbs2bDb7aiqqoLNZsOmTZuwYsWKiGMcDge0Wi00Gg38fj8qKipw9dVXD7IqhJBY6X4HQoteBR8vYOu+egDAgvwkeL1enDhxAgcOHIDb7UGnwYoTnhTs2N0MnbIdS2wpUuCQ8SXqe6zPmjULH3/8MWQyGX72s59h2bJl/b6G4zhs3LgRK1euRCAQwIIFC7B69WpUVFSgoqICGzduxNGjR3HbbbdBLpcjFArhu9/9LtauXTskFSOEDI3udyDUKrum6GuVHFKMGnx4pAklaVrYa09h//79cLvdcMdZcVJMwiSTHjqVAj5elAJn4dTkkawKiQEZi3bwYhSx2Wyoqqoa6WIQMiE4vTweePswMs26M55hqGnpxA1Tlaiu+hIulwvpGVbs9KbC8k2AAF0tDx8vwBcUcN8yW4+xFDL69XfN7bclcvvtt+Opp57C0qVLe+3PfP/994emhISQUUun5qBVKeDjBaklAjC4PH7wPg+OHq6Fp9MFq9WKqdNnYOdnrREBAnS1XNrcAXgDAkw6CpHxpN8QCXct/epXvxqWwhBCRh8lJ8eSwmRpTESrlMPl8eN4YzuyxNPw+F3SNN6ExCToVB3w8WK3wOlqiehUCujUtIHreNPvrwSzZs0CABw8eBALFiyI+Dp48OCwFJAQMvLmT0nC1TMy4A2GUNPSiaY2B6yhBqSKDmRlZWHOnDlISUmBWqnAElsKmlx++HgBQFeANLn8WFyYTF1Z41BUn+izzz4b1fcIIeOTXC7Dgvwk3L1oEq7Jk2Om7CTSZR2YNCkLc+fORXJyMuRyOWQymRQ4vqAAu8MLX1DA1TMyMH8K3fJ2POq3O+utt95CRUUF6urqcNttt0nfd7lcUCqVMS8cIWR0YIzB7Xbj5PFj+OrgPvDBICZNmoTZs2cjMTFRChCgK3AWTk3GRXmJfS5MJONHvyGSlZWFefPm4f3338dFF10kfT8uLg7f/va3Y144QsjIE0URLpcLx48fx759+8DzvNSFZbFYIgKkOyUnp0H0CaDfECkuLkZxcTG+973vwWAwDFeZCCGjAGMMoijC6XRKASIIArKysnD++efDbDb3GSBk4ojq14QrrrgiYtPD9vZ2LFq0KGaFIoSMrHCAdHR0oKqqCnv27IEoisjOzsaFF15IAUIkUa1YdzqdMJvN0uOEhATaSZeQcSocIG1tbTh8+DAOHz4MtVqNnJwczJ49GwaDocfN5cjEFVVLRCaTobm5WXrc2NgYswIRQkZOOEBaWlqwb98+HD58GBqNBkVFRZg7dy4FCOkhqpbIL37xC1xwwQXSpotvvPEGfv/738e0YISQ4cUYgyAIaG5uxueff45Tp07BYDCgqKgI06ZNg0ajidjNmxAgyhC59tprMX36dGzfvh2MMbzzzjsoKCiIddkIIcNEFEWEQiGcPn0ae/bsgd1uh9lsRklJCfLz86FWqylASK+iChEAKCwsRGFhYSzLQggZZowxMMbA8zyOHz+OAwcOoKmpCcnJySguLkZOTg40Gg0NoJM+RfWrxf79+3HhhRfCaDRCpVJJX4SQsSscIF6vF0ePHsXnn3+O1tZWpKWl4fzzz0deXh4FCDmrqFoiP/rRj/DUU0/hBz/4AXbu3Ik///nP4Hk+1mUjhMRIOEBcLheqq6tx4MAB+Hw+ZGVlYebMmUhLSwPHcRQg5KyiaokEg0HMmDEDoVAIBoMB//M//4MtW7bEumyEkBjoPoX3yy+/xO49n8MdEJCTm4cLLriAAoQMSFQhEu66mjRpEl577TV88skncDqdZ31dZWUlioqKkJeXh9LSUgiC0OexV1xxBfLy8qIsNiFkoMLhIYoimpub8cW+fXhz91f4Z4cFn4UmodKVhENtIuRyChASvahCZMOGDXA6nXj00Ufx5z//GXfeeSeefPLJfl8jiiJKS0uxefNmHDt2DC6XC+Xl5b0e++KLLyIhIWHgpSeERCXcfRUKhXDy5El89tlneHf/KVTzCUhNSkBxXgbi47So+LIRO6pbRrq4ZAw5a4gIgoCvvvoKJpMJBQUF2L59Oz7//HNcdtll/b5uz549SE9Ph81mA9B1g6veusBaW1tRVlaG9evXD7IKhJD+dB9A//rrr/Hvf/8bJ2pOoR4W5KZZMCkjFUqlCjqVEilGDT460gxeEEe62GSMOGuIcByHF198ccAnttvtsFqt0uOsrCzU1dX1OO6///u/8dvf/hYajabPc5WVlcFms0lftOUKIWcXDo/wJopHjx7Fp59+CpfLhcTUDBjNFmSkJkOhUErdV1olB28wBG+g765nQrqLqjtr8eLFuP/++1FdXY2Ghgbpqz+MsbOed9u2beA47qzbyq9btw5VVVXSV/d9vAghPXUPkObmZhw4cAB79uwBYwzZ2dlYcOEFSE6IR1BExPgH3caWDFRUU3xfeeUVAMDzzz8vfU8mk+HEiRN9vsZqtUa0PGpra5GZmRlxzI4dO/DRRx8hOzsboVAITU1NOO+88/Dll18OqBKEkP/oPv5RV1eHI0eOoKamBjqdDrm5uSguLkZcXBwumab85r7pMmiVnHQb26tnZNBNpEjUZKyfJsPHH3+MBQsWDOrEgiBgypQpePvtt2Gz2XDttdfisssuw/e///1ej6+pqcGSJUtw7Nixs57bZrOhqqpqUOUiZLwKhwcAeDwenDx5ElVVVWhpaYHZbEZhYSGmTJkCvV4PjuMgigw7qlvw0ZFmeIMh6FQKLC5MxvwpSZDLaXYW+Y/+rrn9tkR++tOf4osvvgAAzJ07F5999lnUb8pxHDZu3IiVK1ciEAhgwYIFWL16NSoqKlBRUYGNGzcOoAqEkP50775qbW3F18eOY9/BKsiEIDLS01FQUIDJkydDrVZLu/DSbWzJUOg3RLo3UgazQv3b3/52j/Ravnw5li9f3uPY7OzsqFohhExUvCD2erHv3n11qrYWFbu/xs4TTojyeJiNemSkZSMnJwdqtarXTRTpNrbkXPQbIt0H3GjxESFDr69g6C7c7fThkWb4giFoVQosKUzGxXmJCP+39Hg8OHXqFDbvOozPmgGLVomkBBOM5kRU1vhgsbiwcGryMNaMTBT9hsj+/ful1eqhUEj6O2MMMpkMwWAw9iUkZBzqKxh6G4/YUd3yzQC4Bha9Cj5ewNYv7GAiw/z8RLS3t+PYsWM4cPAQDrQYkBynRXqyBfHxZiiVCqg1DB8dacZFeYnUXUWGXL8hIoq04IiQWOg1GPbVA0BEi4EXRHx4pBkpRg20Sg4Ag0YhR7JRg/erTiNRbEPdqRqcOnUKAqeGxmBCTlYStFodFAoFZDIZtEqgzR2ANyBQtxUZclHfT4QQMjR6BkPXIr/wavHuLQZvQIAvGIJFrwLAwNg3Y5WhAE43O/Cpqx6CrxMmkwnpmVacatSDU2ugVCoAdLVoaO0HiSX6tYSQYRYOhnCAhPW2Wlyn5qTvMwaIogCnswO19afhbGtGyO9BRkYGiouLMWfWTFx2XgZa3EH4+K5ehPDaj8WFydSVRWKCWiKEDDOdmoNWpYCPFyKCpLcWg0Iuw+KCZGzdXw+zGvB73Djd3IoWD4+ZCQKKCgswdepUmEwmaDQaLJyqh1wux0dHmtHmDkCnUuDqGRmYPyVpJKpKJgAKEUKG2NlmXCk5OZYUJktjIr2tFu++cPCCbBOampvw/qHTaHE4oYCI+VYtlp6Xian5+dBqtRH3/6C1H2Q4UYgQMkQGMuMq3DI4s8VwcV5ixMJBl8uFmpoayBqrMQNt4FJ1yM5Mw/QiGywWCzQaDa39ICOKQoSQIRLtjCug99XiCrlMCpBAIIC6ujqcOnUKNTU1EAQB1ox0ZGZmIi8vDwaDge4+SEYFChFChsBAZlx1p+TkMGplEavOHQ4H6urq8NVXX8HlckGv1yM1NRVTp05FUlJSn60PQkYChQghQyByKu5/aJVcn2s0uo97AIDb7UZdXR1qa2ulHbDT09NhtVoxefJk6PV6KJVKan2QUYVChJAhMJAZV+HgCP8ZCARw+vRpNDQ04Pjx4/D5fDAajUhOTkZBQQESEhKo9UFGLQoRQoZANDOugMjWB8/zaG1tRUNDA06cOAGHwwGNRoOsrCxYrVZkZ2dDo9FIK88JGY0oREZANJvukbGnrxlX86ckRYSHKIpwu904deoUamtrpbuEJicnIz09HdnZ2TCZTFCr1dT6IKMehcgwGsgUUDL29D/jqis8fD4f7HY7mpqacOLECfA8D6PRiNTUVGRnZyMlJUUKD2p9kLEgpiFSWVmJdevWIRAIYOHChXjmmWekG+IAXdtXL1q0CMFgEDzP46KLLsJTTz0FhWJ8ZttApoCSsevMGVeMMfj9ftTX16O5uRm1tbVwuVwwGAxIT09HVlYW0tPTodfrqeuKjDkxayuLoojS0lJs3rwZx44dg8vlQnl5ecQxWq0W27dvx/79+3Hw4EG0trb2OGa8ONsUUF6gHZNHM14Q4fTyZ/2cwosEw7dLCAQCqKmpwf79+7F3714cOnQIwWAQGRkZKCgowJw5c5Cbmwuj0Ugzr8iYFLNf+ffs2YP09HTYbDYAwNq1a1FWVoY1a9ZIx8jlchgMBgBd9ysJBAJj9j/R2cY5BjMFlIy8aLsgz5yuGwgE0NjYiObmZpw6dQqdnZ1gjCE1NRVpaWnIysqS9ruSyWRj9t89ITELEbvdDqvVKj3OysqS5r6f6fzzz8fRo0dx+eWXY9WqVT2eLysrQ1lZmfTY4XAMfYEHKdqLzECmgJLR42xdkN3DgzGGYDCIhoYGtLS0oK6uDi6XC6IowmKxIDExEdnZ2UhISIBaraauKzIuxOxX3+6/lZ3N7t27UV9fj/b2dlRWVvZ4ft26daiqqpK+zGbzEJb03IQvMjoVh0yzDjoVh6376rGjuiXiuPAU0CaXHz6+a6tv2qZ7dOu7C1KND480IcCHpO4rn8+HkydP4sCBA9i7dy8OHz4Mp9OJ+Ph45OXloaSkBDNmzEBaWhotGiTjSsxaIlarNaLlUVtbi8zMzD6PNxgMWL58Od566y0sWbIkVsUaUgPd6qK/KaBk9OnZBdn1i5FGwaHVHUCnLwgVQjh9+jRaW1tht9vhdrvBGENCQgLMZjOsVissFgsMBgO1PMi4FLMQmT17Nux2O6qqqmCz2bBp0yasWLEi4pjm5maoVCrEx8cjEAjgH//4B6688spYFWnIDXSco7cpoNQCGb3+0wUZgkbRbVZhgIdcDKGh9iQcba1oampCZ2cnACAhIQEWiwWZmZkwm80UHmTci1mIcByHjRs3YuXKlQgEAliwYAFWr16NiooKVFRUYOPGjWhoaMD3v/99CIIAQRBw+eWXo7S0NFZFGnKDHeegbbpHj74mRDDGum4INTUJW/fXI8WohkoOdHR6UdfaieL4AA596YDb7YZKpYLFYkFCQgKsVivMZjNN1yUThowNZPBilLDZbKiqqhrpYgAAKr9q7nOrC1r7MXr1NSHi4rxEyL9ZIAgAPB/CR1X12PZlPVwePxgfQJbCiSylB1qtBvHx8UhMTER6ejri4+Oh0+koPMi40981d3yu6juL8Bz+oUDjHGNT5KwrJXy8gDe+sIOJDBdPsYDneTidTrS0tEDnbMPFujY0B5yQy3kkxJsQH29FYmIiMjIyEBcXR7OtyIQ14UKk+0KwoZifH+txDtpna+jxgogPq5qQYlRDo5CDMUCjkCPJoMK2g3akcS64OhxobW1FW1sbfD4fFAoF0hPjER8fj6SkJKSkpMBoNILjOAoPMqFNuBABuhY2hrdfkclk0iZ353IhGOpxDtpna+iFu6jcfh5ePoQEvQqiKCIUCiEYDMLj8cDe7sVn4kmEvC7wPI+4uDhkZGQgPj4eaWlpSEhIgF6vh1wup/2tCMEEDJFgMIhgMAi5XA6FQgG5XA5RFKVWyVAEylCgfbaGxpn37gAAjUIGpYyh3dmJUMAHn88Hv98Pty8APy+CN/qQYDbDZDIhISEBqampiIuLg0qlkvZ1G+l/H4SMFhMuRLxeLxwOB4xGI2QymXRhkMlk4DhOuth0b6kMt8HeapV0OTM4wgsC/X4/3G43WlpakCXvwPYTHmiYH3ImIMRk8EGNi7NVKMqdhJSUFMTHx0vb8lCXFSG9m3Ah4nQ60d7eDpfLJc2k0el0UCqVEVtwcxwn/T3853BdRGifrYHrHhi8IMLt56FRyBAKBqTgcDqd6OjogNPphMLnR75aixN+PaDUIU6rwmV5Ziydnol4kwkKhYJaHYREYcKFSDAY7LqIKBTo7OyESqUCx3FSkOj1eql1Et6aguM4cBwXMRgfy5sFDcc+W2N9wL631gbPh7CjugXvHWyA2x8EhCCKTALSuU54PW54vV4olUpotVpkZKTDZjLBYDRBZzQjNdEMnUZNwUHIAE24EJHJZFAoFGCMSTsHM8akRWMOhwMqlQoajQYqlQparRZKpTLiHtfhsZTuLZShvOhEe6vVwRirA/bdxzSke3QEeXT6gpAJQYSCAbz3ZR0+qHbCIA8BAg+PP4h3TwMl5iDOS1IhOTkZer0eCQkJ0gC5VquN+AWBEDIwEy5EzGYz/H4/eJ5HIBAAz/Pw+/1gjEnbdcvlcilEZDIZ9Ho9OI6DVquFRqORur7CLZJwf/lQhkqs1p+MhQH7MwMj/KcgCBBFEZ1uN3Z+3RWEnf4gOCYgR+3FwXYGucDDJ2ddrUqNCgaDCs1yJYpnTILZZITpm64qml1FyNCYcCESFxcHjuPA8zx8Ph+8Xi88Hg9CoRCUSiV8Ph8AwOfzwePxQCaTobW1Vermksvl0liKSqWCXq+HTCaDVquVLk69dX8BA+siicX6k9E4YH/mhgnhVoYoihBFEYFAAMFgEF6vF+3t7XC73dhd24md9iAMMr6rxRFi+BfUCDAOBZau8FeplNBqu7ooW30iktIyYYnTAqCuKkKG0oQLEaVSKc24MZlMCAaDCAQCCIVC8Pl8cLvd8Pl84HkeoijC4/FAoVDA4/HA7XZDJpOhqakJOp1OGogP75MUDhiNRgOFQgG1Wi0FSjhcehtP6e+iNpTrT0Z6wP7MwBDFrrsEhvdO43keoVAIHo8HHR0dcLvd0owqr9cLr9cLXyCIna1G6JQcVAoOKq0BCSoVeMhxpJ3BaImH2aCDQsEBkCEgiDBAgEmvofAgJAYmXIiEuzGArouYQqGARqORfgMOh4ooivB6vXC73XC73QiFQtIYCgD4/X54PB4AQFtbG+RyuRQaKpUKOp1OWs2sVqulLrHwl0ajkcKlv9lfQ3nhG44B+962Ygu3KsJdUuGADgQCcLlc8Hg88Hq98Pv90p9ut1ta06NSqaBWq6HRaKA3J0EXUCDdpJJaGiqVEgqFAk7mhJPnYJTJoZLL4eNFNLkC5zyORAjp24QLke4X5fC6kPCaEFEUoVQqodPpIIoi4uPjIQgCgsGgNHbi8/ngcnvQ7vKAYyHwAT+CwSBEUYTT6ZTeIxwM4dlfHMdBrVZDp9NJz6tUKhgMBqhUKiiVyoiusPDMMKVS2WvZ+6tXX4ZiwL63Ae7wz677V3j8gud5dHZ2wufzIRAI9PjT7/fD7/dLExzCPxe1Wi2t0zAYDFAqlUhISACnUGEv34Q4rQpapUKaDODjBeQkG7CoIBmVX7WgzR2kfcwIGQYTLkTO1FuodP97uCXRdWEUsfNYKz464YHbr4JKpsS3shJRaJWB/6bfXhAE6SIZ7poRBAEymQyiKEKlUiEUCkGtVksD9+GACa9NCLdQuvr2VVJLJjyAHw6hcPh1X8/SvatMJpMhJDJ4gwJ0qq4xlXm5FjCR4aOjTWjt9EOn4rD8vFRcONmMUCgEAD2CIfy9cLdT+Pvh7UK6B6wgCFJ3YPhx93GN8JYz4fKq1WoYjUappREOVbPZLE25Ds+QC7/msulKbN1nR4qJg1Yu/yYIA9LOyfPzk8b09GVCxpIJHyJn6h4q4b+Hf0P+5HgL3j7YhGSjBslGLXy8gB11fpjNaZhXmIBgMIhQKCRdUL1erzQDLBAIIBAISBfZ8PPhgJHJZBCErtvmhsdXurdOwmGjVCojBu27t3TCocJxHOQch30Nfuy2exEQGDQKOb41yYC5WXHIUsmxepoOnkAIGoUMnMyFEyec0oC2IAhSQHStv+ClVoXf75eOCX8/vBo83CIL/8zCoRcO4uTk5G+6n7q6+3Q6HQwGA7RaLbRaLdRqtfQ8gB6BGDY/PwmQ9T1zje7XQsjwoRCJgkwm65rZdLQZKSatNJ6gU8mQFq9F5bE2zC9IgUGlAmMMJpOpz1lGgUBACo/whTd88Q3/3e/3S+MvPM9L5QiFQtLFNBQKRVywgf+0SBQKBY571TjYqUUcJ0ApB3xMhldOy1FV5UeePiids3uXlEwmQygUiih7eMfjcEsk3NrpPgMt3AVoNpulVlV4UV+4dREOknCLQ6lUSgv7BjLRoOt4ukMkIaNFTEOksrIS69atQyAQwMKFC/HMM89Ivy0DwP79+7Fu3Tp0dHRAJpPhtttuw09+8pNYFmnQep/ZJINWqUCbOwhfUIRJ1zV+0dvgslqtlv5+ZncRz/MRYy/hLqBwayA80B8OjvAspu7jD90fB/gQTrSrEa8SoZR/0zoBEC8Hjnm1mGIUoeQiB/O7/737bLLwOphw6yjcxRYOgnDrqPukgnDXXPdW1JnBMBQTBqjFQcjIi1mIiKKI0tJSVFRUwGaz4dprr0V5eTnWrFkjHaPT6fDss89i6tSpcLlcmDVrFubPn4+SkpJYFWvQBjKz6WyzrLq3HABI3TdnPh/WPSzCz4dbBuHwCK/AF0URTm8Qu/wNSIlTfnOu/5yvsZPHjDkpMKj+ExLh8Yaw7q2M7rsdh8scbu30t/ULTaclZGKIWYjs2bMH6enpsNlsAIC1a9eirKwsIkTy8/OlvxuNRhQWFqKurm5EQuRse0kN5VYkZ7vAnvl8+GId7Z2MkwQRiYfcUKm4HoGXrBRQOCVHKu9AyxJrY31PL0ImmpiFiN1uh9VqlR5nZWWhrq6uz+OPHz+Ozz//HM8991yP58rKylBWViY9djgcQ1bOgewlNdK3wo32gq5ScFhiS+kReM2dXTOY1MqBfezDcWEfq3t6ETLRxSxEov2tGQA6Ojpw1VVX4YknnkBCQkKP59etW4d169ZJj8Otm6EwkL2kxtKA7lAE3mAu7IMNnLGwpxchpKeYhYjVao1oedTW1iIzM7PHcV6vF1dccQVuvfVWXHPNNbEqTq8Gu5fUWBjQHYrAG8iF/VxaEqNxTy9CSHRi9j9z9uzZsNvtqKqqAgBs2rQJK1asiDiG53msWLECS5cuHZFZWeEZV93HDYCuC5g3GII3IAx7mYZaV+ApB3wRPtuF3RsMwenlwQtd04zDgaNTccg066BTcdi6rx47qlvO+l4T4XMgZLyKWYhwHIeNGzdi5cqVyM3NhcFgwOrVq1FRUYHS0lIAwGuvvYYPPvgAb775JkpKSlBSUoLXX389VkXqofuMq+6Gci+psaqvC7tGIceJFjfurziMB94+jF+/VYUPjzTiw6qmqAMnjBdEOL08lAoZfQ6EjFEyNpDBi1HCZrNJLZxzVflVc58zriZyXzwviPj1W1XQnTHD6+umThw57cISWwr031z469q9cPl5zJ4UOZ7FGMPeUw5kmLUQRCZ1cc3LTcSu460RXV8pcSpUN7uR+s1iTvocCBk9+rvmTvgV6yM942q06m1KsycQwpHTLhSmGaFXdf3T0So5ZMRrcbzaDU8wJH0fAKqb3ajv8KEw3SgFztZ99Tho78CxFk/EWEt1sxtTkg1o7gzS50DIGDLhQ2QszbgabmcGLCeXIcOsxZRkQ8RxerUCSQY1Ghw+ZCbo+g2cJIMab315GvPzkyK6vlJNWjR3BvGLywvAhxh9DoSMERM+RMLGwoyr4XZmwCoVMjz0j6Pwh8QeixgnJ+q7bcPed+Bwchn8vADFGWtewjfG4kNM2j6GEDL6UYiQs+oesP2t2u++DXtfgSOIDBolhxBjUHd7DxpEJ2Rsol+9yYDMn5KEq2dkwBcUYHd44QsKvWzDroTum0H0JpdfmnXl4wW0uANYdl4aWjoDEd9vcvmxuDCZurAIGWOoJUIGZCBjSH1NWgjPzqLJDISMfRQiZFCiGUPqL3BoMgMh4wOFCIm5vgKHJjMQMvbR/2BCCCGDRiFCCCFk0ChECCGEDNqY3DvLaDT22Fbe4XDAbDaPUIlii+o29ozXegFUt7HoXOtlt9vhcrl6fW5MhkhvhnJTxtGG6jb2jNd6AVS3sSiW9aLuLEIIIYNGIUIIIWTQxk2IdL8H+3hDdRt7xmu9AKrbWBTLeo2bMRFCCCHDb9y0RAghhAw/ChFCCCGDNmpD5M4770RmZiYUiv9s7+VyuXDddddh+vTpOO+881BRUSE9t3z5cpSUlKCkpAR5eXkRc6Jfe+015OfnIzc3F+vXrx/WevRmoHXbu3cvLrjgApSUlKC4uDjiubFet507d2LOnDmYPn06Lr30UjQ1NUnPjaa61dXVYfHixSgsLERRURF+8YtfSM/de++9yMvLQ35+PrZs2SJ9/9ChQ5g1axamTJmCq666Cm63+6yvGQmDqdvvf/975ObmQiaTwW63R5zviSeewJQpU5CXl4eysrJhq8eZBlovr9eLZcuWYerUqZg+fTrWrl2LYDAovWa01AsY3Gd2yy234LzzzkNxcTEuueSSiM/tnOrGRqmdO3ey06dPM47jpO/97Gc/Y3fddRdjjDGHw8GmT5/OOjs7e7z2N7/5Dbv11lsZY4x1dHQwq9XKGhoaGM/z7Fvf+harrKwcnkr0YaB1u/DCC9l7773HGGPsyJEjLDExkTE29usmiiLLyMhgX3zxBWOMsTfeeIN9//vfZ4yNvro1NDSwPXv2MMYYCwQCbN68eezNN99kH3zwAbv44otZKBRidrudWa1W6XO76KKLpM/tnnvuYffffz9jjPX7mpEwmLp99tlnrKamhk2aNInV1dVJ5/r6669Zfn4+6+zsZC6Xi+Xl5bETJ06MiXp5PB724YcfMsYYEwSBXX/99eyPf/zjqKvXYOrGWNf/qbDHH3+crVmzhjF27nUbtS2RefPmITU1NeJ7hw4dwne+8x0AQHx8PAoKCrBt27Yer33xxRexevVqAMC7776LhQsXIi0tDQqFAmvWrBnx3/wGU7eOjg7pz7S0NABjv26tra1gjGHGjBkAgEsvvRSvvfYagNFXt7S0NMyePRsAoFKpMGPGDNTW1mLLli245ZZbwHEcMjIycNFFF+H9999HU1MTamtrcckllwAA1q5dK5W/r9eMlboBwJw5czBp0qQe53rjjTdw3XXXwWAwIC4uDitXrsTWrVuHtT5hA62XTqfD4sWLAQByuRxz5sxBbW3tqKvXYOoGACaTSXq9x+OB7JtbVJ9r3UZtiPRmxowZeO211yCKIurr67Fr1y7U1dVFHLN37174/X7MmzcPQNdyfavVKj2flZXV4zWjQX91e+qpp3DXXXchKysLl112GZ599lkAY79uiYmJUCgUqKysBAC88sor8Hg8aG9vH9V1a29vx5tvvomlS5f2Wc7+yj/W69af0Vq3gdYrEAjg+eefx+WXXw5g9NYLGFjd1q1bh/T0dLz88sv4/e9/D+Dc6zamQuQXv/gF5HI5Zs6cidtuuw0LFiwAx0Xek7u8vByrVq2SUpaNkRnM/dXtmWeewUMPPYTa2lq8/vrruPnmm8EYG/N1k8lk2LJlCx544AHMmjUL1dXVSExMBMdxo7ZuwWAQK1euxJ133omCgoI+y9lf+cd63fozGus20HoxxrB27VrMnz9fapmMxnoBA69bWVkZ6uvrsWzZMjz99NMAzr1uYypE9Ho9nnnmGezfvx/vvPMOvF4vCgoKpOcFQcArr7widWUBgNVqjUjV2traHps3jgb91e3555/H9ddfDwBYvHgxWltb4XA4xkXdZs+eje3bt2Pv3r34n//5H6hUKphMplFZN0EQcOONN6KkpAR33303gL7/fWVmZvZZ/rFet/6MtroNpl533XUX/H4/nnjiCel7o61ewOA/M5lMhptuuknqsjrnup3D2M6w6D5A29HRwfx+P2OMsV27drHp06czQRCk59999102Z86ciNd3dHSwzMzMiAHa7du3D0/hzyLauhUWFrK3336bMcbYF198wdLT06XXjPW6NTY2MsYYE0WR3X777ezBBx+UXjPa6vaDH/yA3XLLLUwURel777//fsRAZmZmJnO5XIyxyAkR99xzD7vvvvvO+pqRMtC6hZ05sP7VV1/1GKQ9fvz4sNXjTAOt169//Wt2ySWXsEAgEHGe0VYvxgZWN0EQWHV1tXTcb3/7W3bDDTcwxs69bqM2RG677TaWkZHBALCMjAx2++23s927d7O8vDxWUFDAFi5cyI4ePRrxmtWrV7Mnnniix7lefvlllpeXx3Jycti99947XFXo00Dr9sknn7BZs2ax8847j82YMSPiYjrW63bvvfey/Px8NmXKFPbf//3fjOd56bnRVLddu3YxAGzatGmsuLiYFRcXS//W7rnnHpaTk8Py8vLYa6+9Jr3mwIEDrKSkhOXl5bFly5ZFXID7es1IGEzdfvOb37CMjAzGcRxLTU1ly5Ytk5577LHHWG5uLsvJyWFPPvnksNcnbKD1qqurYwBYfn6+dPzPf/5z6XyjpV6MDbxuwWCQXXjhhayoqIhNmzaNfe9735N+gWPs3OpG254QQggZtDE1JkIIIWR0oRAhhBAyaBQihBBCBo1ChBBCyKBRiBBCCBk0ChFChsAll1yC8vJy6fFXX32FyZMnw+l0jmCpCIk9muJLyBA4efIkFi1ahC+++AIJCQlYuHAhfvKTn2DFihWDOl8oFIrYTp+Q0Yr+lRIyBCZPnow77rgDd999N+bPnw+z2QxBEHD++ecjGAwiJycHzz77LEwmEx566CFs3boVwWAQVqsVzz//PCwWC5577jm8/vrr4Hkep06dwtGjR0e6WoScFbVECBki4dBoampCeXk5HnzwQbz11ltQq9V45JFH0Nraiv/93/9FW1sbLBYLAOCxxx5DS0sLfve73+G5557DPffcg0OHDiElJWWEa0NIdKglQsgQ4TgOt99+O3bt2oWDBw/i4MGDOP/88wEAPM9j+vTpAIBPP/0Uv/vd79DZ2QmfzxexieiSJUsoQMiYQiFCyBCSy+WQy+VgjOG6667DH//4x4jnA4EAbrnlFnz22WfIzc3FW2+9FbFbrF6vH+YSE3JuaHYWITGwZMkSbN26VbqPtdfrxdGjR+H3+yGKIpKTkyEIAjZt2jTCJSXk3FCIEBIDhYWFeOyxx7B8+XIUFxfjggsuwOHDh2EymXDXXXfhvPPOwwUXXID8/PyRLioh54QG1gkhhAwatUQIIYQMGoUIIYSQQaMQIYQQMmgUIoQQQgaNQoQQQsigUYgQQggZNAoRQgghg0YhQgghZND+P9GxkGzCG76hAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "for pred in t11:\n", " plt.plot(years, pred, color='gray', alpha=0.01)\n", "plot_data()" ] }, { "cell_type": "code", "execution_count": 122, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "low, high = np.percentile(t11, [5, 95], axis=0)\n", "plt.fill_between(years, low, high, \n", " color='gray', alpha=0.4, label='model')\n", "plot_data()" ] }, { "cell_type": "code", "execution_count": 123, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# Solution\n", "\n", "# In this example, the width of the CI is quite narrow, which might suggest that\n", "# the predictions are nearly certain. But remember that the CI only quantifies\n", "# uncertainty due to random sampling. In this example, there are many other sources\n", "# of uncertainty; one of the big ones is that there is no guarantee that the trends\n", "# we see in the past will continue in the future." ] }, { "cell_type": "markdown", "metadata": { "tags": [ "remove-cell" ] }, "source": [ "*Elements of Data Science*\n", "\n", "Copyright 2021 [Allen B. Downey](https://allendowney.com)\n", "\n", "License: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Tags", "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.14" } }, "nbformat": 4, "nbformat_minor": 2 }