{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "d28d89a7",
   "metadata": {},
   "source": [
    "### <img src='./fig/vertical_COMILLAS_COLOR.jpg' style= 'width:70mm'>\n",
    "\n",
    "<h1 style='font-family: Optima;color:#ecac00'>\n",
    "Máster en Big Data. Tecnología y Analítica Avanzada (MBD).\n",
    "<a class=\"tocSkip\">\n",
    "</h1>\n",
    "\n",
    "<h1 style='font-family: Optima;color:#ecac00'>\n",
    "Introducción al Análisis Estadístico con Lenguajes de Programación para Machine Learning (IAELPML). 2023-2024.\n",
    "</h1>\n",
    "    \n",
    "<h1 style='font-family: Optima;color:#ecac00'>\n",
    "03 Basic Probability\n",
    "<a class=\"tocSkip\">    \n",
    "</h1>  "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "905c03ea",
   "metadata": {},
   "source": [
    "## <span style='background:yellow; color:red'> Remember:</span>\n",
    "\n",
    "+ Navigate to your `IAELPML` folder in the console  \n",
    "+ Execute `git pull origin main` to update the code\n",
    "+ **Do not modify the files in that folder**, copy them elsewhere"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "349ec85d",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Standard Data Science Libraries Import\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import scipy as scp"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1c85b7a9",
   "metadata": {},
   "source": [
    "# Populations and Samples"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "265492f8",
   "metadata": {},
   "source": [
    "+ The main goal of Statistics is to obtain reliable and useful information about a **population** of interest using **samples** from that population. The term population is used here in a broad sense to refer to any collection of individual entities, not just living creatures. A population can be the set of vehicles with license plates from year 2015, the buying orders received by a company a given month or the hummingbirds that visit a bird feeder during a certain week somewhere in Costa Rica.  \n",
    "\n",
    "+ Trying to get all the information of interest from all the individuals in a population is often impossible or pointless: too difficult, too expensive, too time consuming or in many cases, too harmful for the individuals in the population if the sampling process causes some degree of damage. That is where Statistics comes into play. Can we use some samples from the population to *infer* or *predict* what we want to know? In that sense a related question is: is the sample a good representation of the population?\n",
    "\n",
    "+ **Inference** is the part of Statistics dealing with those questions, making them formal and providing answers with a mathematically sound basis.\n",
    "\n",
    "![](fig/011-inferencePopulationSample.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c81a5039",
   "metadata": {},
   "source": [
    "## Simple Random Samples with Python"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b5a5ab5f",
   "metadata": {},
   "source": [
    "+ In the study of a population we are usually interested in certain properties or characteristics of the individuals, that may be different from one individual to another. These properties are the *variables of interest to us*. When sampling a population we get the values of those variables in a sample of some individuals from that population. \n",
    "\n",
    "+ In order for the sampling process to provide us with a representative sample, we often take what is called a **simple random sample**. That is, we choose individuals from the population at random so that:\n",
    "    + All individuals in the population are *equally likely* to be chosen for the sample.\n",
    "    + We sample with *replacement*. That is, an individual can be chosen twice for the same sample. "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "563516a9",
   "metadata": {},
   "source": [
    "+ Let us see a very simple example, using synthetic data. In the following code we create a `Population` data set of `N = 158000` individuals. The example is loosely inspired by the number of passengers at the Madrid airport some days and the variable `Ages` represents the (entirely fictitious) ages of those passengers. This example is unrealistic in that we have the whole set of ages for each and every passenger. The blue dashed line represents the *population* age. In this case we can ask Python to tell us the value, but where would be the fun in doing that? Instead, let us try to come up with a good guess of that mean."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "ab03c822",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   Ages\n",
      "0    62\n",
      "1    52\n",
      "2    29\n",
      "3     7\n",
      "4    31\n",
      "5    13\n",
      "6    31\n",
      "7    15\n",
      "8    30\n",
      "9    17\n"
     ]
    },
    {
     "data": {
      "image/png": "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CAgAAACACAgAAACACAgAAACACAgAAACACAgAAACACAgAAACACAgAAACACAgAAACACAgAAACACAgAAACACAgAAACACAgAAACAJA3VbgCg1hV7rE/TPmvajQEAQFciIIAaVVdXSF1dodpt7JL6+rqK2+3VdAdXHv1QtVsAAIAdEhBADaqrK6Sp374p1NVXu5XdUizuW+0WAADgHUNAADWorq6QQl19tjxzXcprl1a7nbevkPSor8vmltak/BYlB45Mw5DJSfc8SQIAALocAQHUsPLapSmXFlW7jbetUEjSUJ9saUn5LQKC9Bq0N1sCAICa130W8QIAAACdRkAAAAAACAgAAAAAAQEAAAAQFykE6HRL1x6QDVt6VIz1bNicg3u/WqWOAACgPQEBQCe76z/GZdHqARVjQ/q+nBuO/VaVOgIAgPYsMQAAAAAEBAAAAICAAAAAAIiAAAAAAIiAAAAAAIiAAAAAAIiAAAAAAIiAAAAAAIiAAAAAAIiAAAAAAIiAAAAAAIiAAAAAAIiAAAAAAIiAAAAAAIiAAAAAAIiAAAAAAIiAAAAAAIiAAAAAAIiAAAAAAEjSUO0GAGrdWYN/krWbe1aM9e6xoUrdAABAxwQEAJ3sA03Lqt0CAADskCUGAAAAgIAAAAAAEBAAAAAAERAAAAAAERAAAAAAERAAAAAAERAAAAAASRqq3QBArbvz1+OybN0BFWODer2aKcMeq1JHAADQnoAAoJMtW3dAFq0eUO02AABguywxAAAAAAQEAAAAgIAAAAAAiIAAAAAAiIAAAAAASBcICJ588smcc845GTVqVI488sh85CMfyQ033JA1a9ZU1M2bNy+nnnpqhg8fnnHjxuWBBx7ocH+zZ8/OiSeemOHDh2fixIl56qmn2tWsXbs2V199dUaOHJkRI0bkwgsvzEsvvdSubsmSJZk0aVKOPvrojB49OjNmzMiGDRv2zIEDAABAF1L1gGD16tUZMWJErrvuusyePTvnn39+HnrooVx66aVtNU8//XSmTp2aYcOG5e67785pp52WGTNmZM6cORX7mj17dmbOnJmzzz47s2bNysEHH5zJkyfnN7/5TUXdZZddlscffzxXXXVVZs6cmd///vc5//zzK978l0qlnHfeeVm3bl1uvfXWXH755fnBD36Q6dOnd+43BAAAAKqgodoNjB8/PuPHj2/7euTI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N2zIB/Zf9tZ36kbHt8tq/BgLra1pSLKltCTl0qJqt7Pn/eF1xr83tc3vFdQC85hasLvzuFjcd6fOPujyAcGgQYPSo0ePvPDCCxUXFly8eHGStL1Z33rb3NycYcOGtdU1NzenV69eOeigg9rqfvrTn7Y7E2Dx4sUVb/wHDx7c7loDmzZtyrJly9pdm2BXbNnSuS9OLS2tnf4YNaGcdLP3zjul8CfHVC6Xu+Exvtnw9nrfeozldP3n8JvNH8yi1QMqxob0fTnDm946IOhOx7er3gnHuFUtHt/W58+/N+8MnmdqgXlMLejsedzlzz1ubGzMqFGjMnfu3Irxhx9+OAceeGBbGHDMMcekT58+eeSRR9pqWlpaMnfu3IwdO7YtDBg7dmxKpVKefPLJtrrly5dn4cKFbR97mCRjxozJggULsnLlyraxxx57LJs2baqoAwAAgFpQ9TMI1q9f3/axgS+99FLWrl2bRx99NEly3HHHpampKRdddFHOOeecTJ8+PRMmTMjChQszZ86cXHvttW0fk9jY2JgpU6Zk5syZaWpqyrBhwzJnzpy8+OKLufnmm9se76ijjsoJJ5yQL37xi7niiivSu3fv3HLLLRk4cGBOO+20trozzzwz999/f6ZOnZqpU6fmtddey4033pgJEybs9hIDAAAA6GqqHhC89tprufTSSyvGtn597733ZuTIkRkxYkTuuOOO3HzzzXnooYfSv3//TJ8+PWeccUbF/T71qU+lXC7nvvvuy6uvvpohQ4Zk1qxZGTp0aEXd1772tdx000255pprsnnz5owcOTK33XZbxScgFIvF3HPPPZkxY0Yuvvji9OzZM+PHj8+0adM66TsBAAAA1VP1gOA973lPfvOb3+ywbuzYsTs8tb9QKOSCCy7IBRdcsN263r1757rrrst111233bpDDjkks2fP3mFvAAAA0N11+WsQAAAAAJ1PQAAAAAAICAAAAAABAQAAABABAQAAABABAQAAABABAQAAABABAQAAABABAQAAABABAQAAABABAQAAABABAQAAABABAQAAABABAQAAABABAQAAAJCkodoNANS6Cw9/LBu29KgY69mwuUrdAABAxwQEAJ3s4N6vVrsFAADYIUsMAAAAAAEBAAAAICAAAAAAIiAAAAAAIiAAAAAAIiAAAAAAIiAAAAAAkjRUuwGAWnfDL07NC2ve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MmRIJk6cmOnTp+fRRx/NaaedliR54403cu6552b16tWZNm1aDj744Dz55JP53Oc+125/CxYsyAUXXJCjjjoq//AP/5A+ffrkkUceyec+97ls2LAhp59+epLkhhtuyPe///189rOfzeGHH57169dn0aJFWbVq1d48fADoNgQEAECnevTRR7NmzZp8/OMfT5KcfPLJuf766/Od73ynLSB48MEHs3Tp0tx9990ZM2ZMkuRDH/pQ1q9fn3/913+t2N8111yT973vfbnnnnvS0PDmrzLHH398Vq5cmZtvvjmnnnpq6urq8vTTT+eDH/xgPvnJT7bdd+sSBwCgPUsMAIBO9d3vfjc9e/bMKaeckiTp1atXPvaxj+X//b//l//8z/9MkvzsZz9Lr1692sKBrbb9xIOlS5fmhRdeyIQJE5IkW7ZsaftvzJgxWbFiRZYsWZIkGT58eObPn5+vfvWreeqpp7Jhw4ZOPlIA6N6cQQAAdJqlS5fmZz/7Wf7yL/8y5XI5pVIpSfKxj30s3/ve9/Ld7343l112WVatWpUDDjig3f3333//iq9fffXVJMlNN92Um266qcPHXLlyZZJk+vTp6d+/fx555JHcfffd2WefffKhD30oX/jCF/Lnf/7ne/AoAaA2CAgAgE7z3e9+N+VyOT/60Y/yox/9qN32Bx98MJ/97Gez33775dlnn223fWsgsFW/fv2SJH/7t3+bcePGdfiYhxxySJLkXe96Vy655JJccsklefXVVzN//vx87Wtfy4UXXphHH310dw8NAGqOgAAA6BQtLS158MEHM2jQoMyYMaPd9ieeeCLf+MY3Mn/+/Bx77LGZO3du5s2bl7Fjx7bV/PCHP6y4z6GHHpo///M/z/PPP5+/+7u/2+leDjjggJx++ul5/vnnc88992T9+vXZd999d/3gAKAGCQgAgE4xf/78/P73v8+0adMycuTIdtvf97735f777893vvOdfOUrX8k999yTL3zhC7n00ktz8MEHZ/78+fnxj3+cJKmr++Nlk6655ppMnjw5kyZNymmnnZaDDjooq1evTnNzc371q1/l1ltvTZKcccYZOeGEEzJ06ND07ds3zc3N+d//+39nxIgRwgEA6ICAAADoFN/5znfSo0ePTJw4scPtTU1NGTduXH70ox/ljTfeyD333JPrr78+X/nKV1IoFPKhD30oX/rSl/LpT386ffr0abvfqFGjMmfOnNx11125/vrrUyqVst9++2Xw4MH5q7/6q4q6xx9/vO2MgYMOOiinnnpqLrzwwk4/dgDojgrlcrlc7SYAADpy11135X/9r/+VJ554Iv379692OwBQ05xBAAB0Cffff3+SN68zsHnz5ixYsCD33Xdf/vqv/1o4AAB7gYAAAOgSevbsmXvuuSe/+93vsnnz5vzZn/1ZJk+enClTplS7NQB4R7DEAAAAAEjdjksAAACAWicgAAAAAAQEAAAAgIAAAAAAiIAAAAAAiIAAAAAAiIAAAAAAiIAAAAAAiIAAAAAASPL/ATQ9TxevVREfAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1200x850 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.set(rc={'figure.figsize':(12, 8.5)})\n",
    "\n",
    "rng = np.random.default_rng(2022) # seed for reproducibility\n",
    "\n",
    "N = 158000\n",
    "Ages = np.rint(2 * rng.chisquare(df = 13, size = N)).astype(int)\n",
    "Population = pd.DataFrame({'Ages':Ages})\n",
    "\n",
    "print(Population.head(10))\n",
    "\n",
    "sns.histplot(data = Population, x = 'Ages', bins=15, color = \"orange\")\n",
    "getPlot = plt.axvline(x = Population.Ages.mean(), linewidth = 4, linestyle='--')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "56410afc",
   "metadata": {},
   "source": [
    "+ Guesing the population mean is just the type of question that we expect Statistics to answer. So we will take random samples from the population in order to make our guess. Let us begin by taking a sample of 20 individuals ages."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "be617a7b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "        Ages\n",
      "112031    30\n",
      "87747     53\n",
      "84458     33\n",
      "43231     42\n",
      "122826    13\n",
      "93717     24\n",
      "51518     18\n",
      "36356     36\n",
      "71485     26\n",
      "45449     22\n",
      "126797    27\n",
      "30217     22\n",
      "75464     26\n",
      "4398      30\n",
      "35343     17\n",
      "8810      57\n",
      "109881    43\n",
      "124932    29\n",
      "66740     24\n",
      "153307    20\n",
      "\n",
      "\n",
      " Sample mean =  Ages    29.6\n",
      "dtype: float64\n"
     ]
    }
   ],
   "source": [
    "n = 20 # sample size\n",
    "\n",
    "sample = Population.sample(n)\n",
    "\n",
    "print(sample) # The index reflects the row lines in the original data set\n",
    "\n",
    "print(\"\\n\" * 2, \"Sample mean = \", sample.mean())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "73c550e5",
   "metadata": {},
   "source": [
    "+ Execute the above cell a few times. Every time you will get a different sample and a new sample mean:  \n",
    "\n",
    "$$\\bar x = \\dfrac{x_1 + x_2 +\\cdots + x_{20}}{20}$$\n",
    "\n",
    "+ How different can these sample means be from one another and from the population mean? How *bad* can a sample be? Recall that we are sampling with replacement. Therefore, since there is a passenger with `age = 2` the following sample is a perfeclty legit sample:\n",
    "\n",
    "$$x_1 = 2,\\, x_2 = 2,\\,  \\ldots \\, , x_{20} = 2$$\n",
    "\n",
    "+ This sample would make us guess that the population sample is 2, which is way off from the true value (look at the histogram). In that sense this is a very, very bad sample (as bad as they get).   \n",
    "\n",
    "+ But remember, *we are taking random samples (with replacement)* How probable is it that we get this particularly bad sample **at random**?\n",
    "\n",
    "+ Which leads us to one of the more crucial steps in understanding the inner workings of Statistics. To answer the question at the end of the last paragraph we need to answer this two questions:\n",
    "    + how many different samples exist?\n",
    "    + how is the *sample mean* distributed over those samples? In other words, how many *good* and *bad* samples exist when it comes to guessing the mean of the population?\n",
    "    \n",
    "  Let us begin with the first question. The number of different samples is this unconceivably large number:\n",
    "  \n",
    "  $$158000^{20} \\approx 9.4003005\\times 10^{103}$$ \n",
    "  \n",
    "  To put this in pespective the number of stars in the universe is estimated to be less than $10^{40}$. "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d8e86b3c",
   "metadata": {},
   "source": [
    "+ Now let us consider the question about the **distribution of the sample mean** in that huge sample space. There are too many samples in this example to check one by one the mean of every sample and decide if they are good or bad samples (meaning how close they are to the true population sample). But we can look at a large number of samples (a big *sample of samples*) and look at the distribution of the sample mean.  \n",
    "\n",
    "+ We already did this in an exercise Session 02 (we told you then it was a very important exercise), so you want to take a look at that exercise to recall what happened there. The difference between both situations is that in Session 02 we were sampling from a population where all the values had the same probability. Here our starting point is the population described by the histogram above, where obviously not all values are equally likely.\n",
    "\n",
    "+ The code to analyze that *sample of samples* is this:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "5d75699f",
   "metadata": {},
   "outputs": [],
   "source": [
    "n = 20 # the common size to all samples\n",
    "\n",
    "n_samples = 10000 # we take a large number of samples with replacement, each of size 20"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "f0bfea67",
   "metadata": {},
   "outputs": [],
   "source": [
    "# %%timeit\n",
    "sample_means = pd.DataFrame([Population.sample(n, replace=True).mean() for item in range(n_samples)], \n",
    "                            columns=['Ages'])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ea18a8ef",
   "metadata": {},
   "source": [
    "+ Now let us look at the first sample means:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "64328473",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Ages</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>27.20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>24.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>24.35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>22.80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>25.90</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>26.10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>29.15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>28.20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>31.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>26.60</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Ages\n",
       "0  27.20\n",
       "1  24.30\n",
       "2  24.35\n",
       "3  22.80\n",
       "4  25.90\n",
       "5  26.10\n",
       "6  29.15\n",
       "7  28.20\n",
       "8  31.00\n",
       "9  26.60"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sample_means.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7d6b1007",
   "metadata": {},
   "source": [
    "+ To understand their distribution and answer the question about the proportion of good and bad samples we use a density plot. And to get a deeper insight we also plot the density curve for the original population (blue for the samples, orange for the population): "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "9cc29bfb",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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AAB0hmEYcruya7v3detWS5J+8YufSfpZk+cOHjygQ4cOqkePnqqoKG92bnn54SYfFxb6dNZZZ+v6629odqzT2bBb8oQJZ2vChLNVXX1UGze+pYcf/m8tWvQz/frX/5uEzyh1LA/clZWVTWp4Ynw+n44cSX4t08qVK+V2u3XRRRc1ebywsFDXXXedxo8fL7fbrY0bN+qpp55SWVmZHnvssU69pt1O98VcELvPmXq/HY7MHFe2yvT7jeTifueWVN7vaDQLa0da4Pf7tWHDep177lRdeeWcJs9VVFTov/7rLr388lqNGDFSR49WafPmf2rMmLGSpOrqo/rnP99tkv/OOONMrV27WoMGDZbX6z3u6+fnF+iCCy7U1q0f6KWX/tauMdvtRovfC9Ox87vlgbs1pmkmtFq2LdFoVKtWrdLUqVOb1fyMHDlSI0eOjH88ceJE9e7dW3fffbe2bNmi0aNHJ/y6Pt/x/+Gg68ik+22zGfG3RUX5Fo+ma8qk+43U437nllTcb7/froMHba2Gv2zx1luvqba2RnPmXK1x48Y3e37Zst9r3bo1euqp32v48FP0s5/9RPPm/acKCgr1+98vVUFBgWw2W/zv4Nvf/o7WrVujm2+eq29842r16XOCKirK9eGH76tnz166+upv64UXntf772/RxImT1KNHT33++V6tXbtaZ501oc2/y2jUkM1mU7dueZZVLVgeuH0+nyorK5s9XlVV1Wb9diI2bdqk/fv3a9asWe06fvr06br77rv1wQcfdCpwV1bWKhKxri4L6WG32+TzeTPqfkejZvxteXm1xaPpWjLxfiN1uN+5JZX3OxgMKBqNKhIxFQ5n77+l1atXqU+fvho9emyLn8e0aZfowQfv086du7Ro0QP61a9+oUWL7lFhYaG+/vU52rWrVGVlpfFz8/N9euyx3+qJJ/5XjzyyWJWVR1RUVKyRI7+ic86ZqnA4qsGDh+q11zbooYceUGXlERUX99BXvzpN119/Q5t/l5GIqWg0qiNHalRbG2n2fLdu3oTXBbaX5YG7pKSkWa12MBjU7t27m9V2d9aKFStUWFioKVOmJPW6xxOJRLP6iwodk4n32zSz+z/2TJaJ9xupw/3OLam435GImdTrWeW++9reo2T27Ks0e/ZV8Y9/9atfx98PhUL65je/rtNPH9vknB49euquu37a6jW/8pXR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BpnhBgAgUZ36Tr58+XJNnjxZl1xyib797W9r586dkqTvf//7evbZZ5MyQCAXhTKgJaDUsGiSGW4AABKXcEnJ6tWrddddd2nq1KmaPHmy7r777vhzp556qlavXq2rrroqKYMEck18wWQnWwIuvO6sTp3PokkAADov4emzxx9/XF/72tf06KOP6hvf+EaT54YMGaIdO3Z0enBArooF3M4umPS6HfE/iXCxaBIAgE5L+Lt5aWmpLrnkkhaf6969uyoqKhK9NJDzGnaZtK4lYN3r189wU1ICAEDCEg7cXq9XVVVVLT63b98+devWLeFBAbkuFI7tMmltDXcs8IfCUUWjpqVjAQAgWyX83fz000/XM888I9Ns/k34z3/+s84888xODQzIZcFQ/Qx3JwP3397ereWvlelvb+9O6Hx3oxn2YJiyEgAAEpHwosmbbrpJ3/zmN/X1r39ds2bNkmEYWrt2rR5++GG98847eu6555I5TiCnxMJtZ0tK1v5jj8qrAioqdGvamQM7fH7jGfZgKCqPq1PDAQAgJyU8fTZq1Cg98cQTqqmp0b333ivTNPXYY49p586devzxx3XyyScnc5xATknWDHdn2QwjPgYWTgIAkJiEZ7glacKECVq9erV2796tgwcPqqioSIMHD07W2ICc1dAW0NrALdXNsgfDUXpxAwCQoIQC9+HDh7Vs2TK988472r9/vySpd+/eOuuss3TVVVepqKgoqYMEck1s0aSrk324k8HltEm1zHADAJCoDgfut956SzfffLOOHj0qu92uoqIimaapnTt36s0339RTTz2lRx55ROPHj0/FeIGcEKgPt26X9YE7tnCSwA0AQGI69Pvqw4cP69Zbb1VhYaEeeughvfPOO3r99df1xhtv6J133tF///d/y+v16pZbblF5eXmqxgx0ef5gfeC2uA+31DDLHghRUgIAQCI6FLiff/55RaNR/fGPf9TFF18sr9cbf87r9WrGjBn6wx/+oHA4rOeffz7pgwVyRWw22e3MhBpuFk0CANAZHfpu/vrrr2v27Nnq27dvq8f069dPX/va1/Taa691enBArorNJrtdnVrXnBSx1oT04QYAIDEdCtxlZWUaN27ccY8744wzVFZWlvCggFwXCGbQDHd9pxRKSgAASEyHps8qKytVXFx83OOKi4tVWVmZ8KCAXJesRZOD+hSquNCtwrzEd6yJjYGSEgAAEtOhwB0MBuV0Oo9/UYdDoVAo4UEBuS5ZiyZv+froTo8ltmiSwA0AQGI6XCBaVlYmu73tEEA5CdA5sXDryYQuJbFFk2x8AwBAQjocuH/0ox8d9xjTNGUYRkIDAtAww+3KoD7cAWa4AQBISIcC96JFi1IyiJ07d2rhwoV699135fV6dckll2j+/PnyeDzHPfeFF17QY489pr1792rQoEG66aabNH369Pjzf/7zn1v9IeGcc87RkiVLJEmbNm3Sd7/73WbHzJgxQw8++GCCnxmQmEAmzXA7aAsIAEBndChwX3HFFUkfQGVlpa655hr169dPixcv1uHDh7Vo0SJVVFTo/vvvb/PcNWvW6K677tLcuXM1adIkvfTSS7rttttUWFioc845R5I0depU/elPf2py3q5du/TDH/5QkydPbnbNRYsWaciQIfGP2aYeVogvmuxk4F78/BZV1QRVmOdKuJ67YadJSkoAAEiE5U1+ly1bpsrKSi1fvjzeAcVut2v+/Pm68cYbVVJS0uq5v/71r3XxxRfrjjvukCRNmDBBO3fu1OLFi+OBu7i4uFlnlddee012u10zZsxods1hw4Zp1KhRyfr0gA6LRk2F6uulO1tS8um+KpVXBVRU6E74Gi5KSgAA6BTLm/xu2LBBEydObBKKp02bJpfLpfXr17d63p49e1RWVqaZM2c2eXzmzJnasmWLDh8+3Oq5K1eu1IQJE9SrV6/OfwJAkjUOthlRUsKiSQAAOsXywF1aWtpsFtvlcmngwIEqLS1t9bxYJ5TG5R+SVFJSItM0W+2U8v7772vXrl3NgnrM3LlzNWLECE2ePFm//OUv5ff7O/LpAJ0WC9yGJKfD8i9R2gICANBJlpeUVFZWyufzNXvc5/PpyJEjrZ4Xe+7Yc7t169bk+WOtXLlSbrdbF110UZPHCwsLdd1112n8+PFyu93auHGjnnrqKZWVlemxxx7r0Od0LLvd+tCE1Ivd587e70jUlFS34YwziTPcjgTDu9dT999EMBxN+BpdUbLuN7ID9zu3cL9zSzoa61keuFvT3taCxx5jmmaLj0tSNBrVqlWrNHXqVBUUFDR5buTIkRo5cmT844kTJ6p37966++67tWXLFo0enfgGIj6fN+FzkX06e7/La8KSJK/boaKi/E5dy2Yz4m8TvVbP4lpJUjhidno8XRFf37mF+51buN9IFssDt8/na3Eb+KqqqjYXTDaeye7Zs2f88di1Wpo137Rpk/bv369Zs2a1a2zTp0/X3XffrQ8++KBTgbuyslaRCPWvXZ3dbpPP5+30/T5w6KikunZ85eXVnRpTtH62PBo1E75WwF+3a2xtINTp8XQlybrfyA7c79zC/c4t3bp5ZbOl9rcZlgfukpKSZrXawWBQu3fv1uzZs1s9L1a7XVZW1iSYl5aWyjCMZrXdkrRixQoVFhZqypQpSRp9+0QiUYVZcJYzOnu/a2rrAq7LaU/qv5tEr2WvnyUPBCP8O24BX9+5hfudW7jfuaG+OCKlLC9Omjx5sjZu3Kjy8vL4Y+vWrVMwGGwzGA8YMEBDhgzRqlWrmjy+cuVKjR49ulkrwGAwqHXr1umiiy6Sy+Vq19hefPFFSaJNINIq3oM7A3aZlCR3fZeSAH24AQBIiOUz3HPmzNHTTz+tefPmad68eTp06JDuvfdezZo1q8nM9YIFC7R8+XJt3bo1/tgtt9yi2267TQMHDtTZZ5+tl19+WW+88YaefPLJZq+zfv16VVZWtlpOMn/+fA0aNEgjR46ML5r83e9+pwsuuIDAjbSKbeve2U1vksXjqvtvIhyJKhyJysEiIgAAOsTywO3z+bR06VItXLhQN998szwej2bOnKn58+c3OS4ajSoSadqWbPr06fL7/Xr00Ue1ZMkSDRo0SA8++GB805vGVqxYoV69eumss85qcRzDhg3TihUr9NRTTykUCql///664YYbNHfu3OR9skA7BJO0y6QkXTR+gGoDYXndiX+pexrNtAdCEQI3AAAdZJhmOipXclt5eTU1YDnA4bCpqCi/0/d79aZP9dzfSzXx1L66ftbI45+QBnN/9XeFI6bun3e2in0eq4eTEZJ1v5EduN+5hfudW4qL81PeApKpKiDDBIKZVcMtNcy21wbZ/AYAgI4icAMZJr5o0pk5X56xOu4AgRsAgA6zvIYbQFO1gbpQ25m664ZrhePvJ6OOOxAMH+dIAABwLAI3kGH89aHW6+r8l+dPntyk8qqAigrdeuCmSQlfJxa4/cxwAwDQYZnzO2sAkhpmuD3uDKrhjgXuEIEbAICOInADGaY2iTPcyRKr4WaGGwCAjiNwAxnGX193nYwa7mSJdSlh0SQAAB1H4AYyTCaWlMTG4mfRJAAAHUbgBjJMLNTmZdAMt8fJokkAABJF4AYyiGmaDTPcGVTD7aZLCQAACSNwAxkkGIoqapqSJG8mlZTENr6hSwkAAB1G4AYySKxDiaGGhYqZIN6HO0ANNwAAHUXgBjJIbGdIj9shwzAsHk2D+E6TzHADANBhmVMkCiBeI52scpKbZ49SOGLKYe9ceI/NttdSww0AQIcRuIEMEpvhTtamNyf19SXlOvEZbgI3AAAdRkkJkEEysQe3xKJJAAA6g8ANZJBkz3AnS3zRJBvfAADQYZn1XR3IcTX+kCQpz5OcL83NOw4qFI7K6bBpzNCeCV+ncR9u0zQzakEnAACZjsANZJCj9YE73+tMyvV+/7ePVV4VUFGhu1OBOzbDbZpSMBzNqJaFAABkOkpKgAxSXVtXslHgSU7gThZXo4DNwkkAADqGwA1kkKO1dTPcBUma4U4Wm2E0KiuhjhsAgI4gcAMZpDpeUpJ51V4eZ0MdNwAAaD8CN5BBMnWGW6rb/VIicAMA0FEEbiCDxGq48zOshluS8up7g9cEKCkBAKAjCNxABol1KcnEGW5v/Qx3rZ/ADQBARxC4gQwRjkTjHUCS1RYwmWKBmxluAAA6hsANZIjq+vptQ1KeO/MWTcZnuAncAAB0CIEbyBCxBZN5HodstuTs5Oh22uVx2ZOyUU0egRsAgIRk3jQakKOq62ujk1m//Yu5E5J2LQI3AACJYYYbyBCxGe5MrN+WqOEGACBRBG4gQ1RncA9uicANAECiCNxAhoi1BMz3ZGalF4smAQBITGZ+ZwdyUCpKSp59ZYeq/SHle5y66vyhnbpWnicWuNlpEgCAjmCGG8gQsV0mk1lSsmnbPr225Qtt2rav09di0SQAAIkhcAMZIlbDnYnbukuSN7a1OztNAgDQIQRuIENUZ/C27lJDDXcgFFEkGrV4NAAAZA8CN5AhGmq4M3NphbfR7pfUcQMA0H4EbiBDHM3wtoAOu00uZ91/GdRxAwDQfgRuIEPEd5rM0BpuidaAAAAkgsANZIBAKKJQuK4uOlN3mpQaOpWwcBIAgPYjcAMZINahxG4z5HHZLR5N65jhBgCg4wjcQAaIL5j0OGQYhsWjaR3buwMA0HGZ2Q4ByDGx+u1kl5OMLumh6tpQ0q7LDDcAAB1H4AYyQHWKOpRcc/EpSb1eHjPcAAB0GCUlQAY4muG7TMbke1g0CQBARxG4gQyQ6btMxuTVB+7YeAEAwPERuIEMkOm7TMbk1c/AM8MNAED7ZfZ3dyBHVNfWb3qT5Bnun/3uH6qsDsqX79L/+d74Tl8vPz7DTeAGAKC9CNxABmiY4U5u4K6sDqq8KpC06+XFa7gpKQEAoL0oKQEyQLyGO+MXTdaNjxluAADaj8ANZIBUzXAnWx5dSgAA6DACN5ABqhvtNJnJYjPcgVBE4UjU4tEAAJAdCNyAxUzTjJdoZHxbQHfDDwTMcgMA0D4EbsBiwVBUkagpqaFkI1PZbIa8brskdpsEAKC9CNyAxWILJu02Q26n3eLRHF+eO7Zwkk4lAAC0B4EbsFisNCPP45BhGBaP5vjY3h0AgI4hcAMWi80UN66PzmRs7w4AQMdkx3d4oAtrmOFO/oLJK6eWKBiOyuVI3s/W+WzvDgBAhxC4AYvFOpSkoiXghFP7Jv2aeWzvDgBAh1BSAlgstk16pncoiWmY4aakBACA9iBwAxZrmOHO7B7cMcxwAwDQMdkxpQZ0YY27lCTbF4eqFY2astkMndAjPynXpEsJAAAdQ+AGLFYdiG3rnvwZ7vuXbVZ5VUBFhW49cNOkpFwzj5ISAAA6hJISwGKpnOFOhXxKSgAA6BACN2CxWD/rVHQpSQVmuAEA6BgCN2CxVPbhTgVmuAEA6BgCN2CxmhT24U6FWOmLPxhRJBq1eDQAAGQ+AjdgsdhMcbZt7S7RqQQAgPbIiMC9c+dOXXvttRozZowmTpyohQsXyu/3t+vcF154QRdffLFGjRqlmTNnavXq1c2OGT58eLM/kyY179hw4MAB3XrrrRo7dqzOOOMM3XnnnaqoqOjspwe0KhiKKBypmyXOlpISu80mj8suicANAEB7WD6lVllZqWuuuUb9+vXT4sWLdfjwYS1atEgVFRW6//772zx3zZo1uuuuuzR37lxNmjRJL730km677TYVFhbqnHPOaXLsd77zHc2cOTP+sdPZNNyEw2Fdd911CoVCuu+++xQOh/WrX/1K8+bN0zPPPCPDMJL3SQP1YrPbhiF53HaLR9N++R6H/MEIddwAALSD5YF72bJlqqys1PLly1VcXCxJstvtmj9/vm688UaVlJS0eu6vf/1rXXzxxbrjjjskSRMmTNDOnTu1ePHiZoH7hBNO0JgxY1q91tq1a/XRRx9p5cqVGjZsmCSpd+/euvrqq/Xaa69p8uTJnfxMgebi27q7HbJl0Q91eR6nDlUG6FQCAEA7WF5SsmHDBk2cODEetiVp2rRpcrlcWr9+favn7dmzR2VlZU1mrSVp5syZ2rJliw4fPtyhcaxfv17Dhw+Ph21JGjt2rPr379/mOIDOqA1EJEneLKnfjqFTCQAA7Wf5d/nS0lLNnj27yWMul0sDBw5UaWlpq+eVlZVJkoYMGdLk8ZKSEpmmqbKysiYh/vHHH9d///d/y+v16pxzztGdd96pfv36NRlHS7PpQ4cObXMcQGfUBlO7YPKn15wR39o9mejFDQBA+1keuCsrK+Xz+Zo97vP5dOTIkVbPiz137LndunVr8rwkXX755Zo6dap69uyp7du363//93/1zW9+U3/5y1/ix1dWVqqwsLDFcXQ2cNvtlv8iAWkQu88dud/BcN2CSa/HIYcj+f9Oenb3Jv2aklTgrQvctcFISsadDRK538he3O/cwv3OLemo6LQ8cLfGNM12LVQ89hjTNJs9/stf/jL+/vjx4zVu3Dh97Wtf07PPPqvrr7++1Wt1ZBxt8flSE3qQmTpyv22OuoWShfluFRXlp2pISVdcH+QjMrJq3KnA13du4X7nFu43ksXywO3z+VRZWdns8aqqqjYXTDaeye7Zs2f88di1Wpo1jznllFM0ePBgffjhh+0aR1vXao/KylpFImwQ0tXZ7Tb5fN4O3e9D5dWSJIdNKq9/Pxs46n8GPVxRk1XjTqZE7jeyF/c7t3C/c0u3bl7ZbKn9bYblgbukpKRZyUYwGNTu3bub1XY3FqvdLisraxLMS0tLZRhGs9ruY8VmwhuPY9u2bc2O27Fjh84777zjfh5tiUSiCof5gs0VHbnf1bV1Ndwepz0l/0Ze3bxXgWBEbpddU8f0T9p13c66mfmjNaGc/7fN13du4X7nFu53bjgmEqaE5cVJkydP1saNG1VeXh5/bN26dQoGg5oyZUqr5w0YMEBDhgzRqlWrmjy+cuVKjR49usmCyWNt27ZNu3bt0qhRo+KPTZkyRdu3b28S/jdv3qy9e/e2OQ6gM2oD9YE7RYsmV7yxS396ZYdWvLErqddt6FLCokkAAI7H8hnuOXPm6Omnn9a8efM0b948HTp0SPfee69mzZrVZOZ6wYIFWr58ubZu3Rp/7JZbbtFtt92mgQMH6uyzz9bLL7+sN954Q08++WT8mCVLlmjPnj0688wzVVxcrE8++USPPvqo+vbtqyuvvDJ+3EUXXaThw4frlltu0e23365IJKL77rtP48aN07nnnpuevwzkHH+wvi2gK3s2vZEadymhLSAAAMdjeeD2+XxaunSpFi5cqJtvvlkej0czZ87U/PnzmxwXjUYViUSaPDZ9+nT5/X49+uijWrJkiQYNGqQHH3ywyaY3gwcP1tq1a7Vq1SpVV1erqKhIU6ZM0a233tqkNtvhcOiJJ57QPffcox/84AcyDEPnn3++FixYwC6TSBl/fVtAj8vyL8UOoQ83AADtlxHf5QcPHqwlS5a0ecy9996re++9t9njV1xxha644opWzzv//PN1/vnnt2scvXv31q9//et2HQskQ2zjm2za1l2S8uoDd02AkhIAAI7H8hpuIJfFNr7xZt0Md30f7kBE0WgaVpsAAJDFCNyAhfz1iyazbWv32Ay3JNUEKCsBAKAtBG7AQrFFk54sWzTpsNvirQHpVAIAQNsI3ICFUt0WMJXiddwsnAQAoE0EbsAipmlmbVtAiV7cAAC0V/ZNqwFdRCgcVaR+wWGqarj7FHnldTvky3Mm/dr04gYAoH0I3IBFYrPbkuRO0Qz3nd8cm5LrSg0z3ARuAADaRkkJYJFYS0C3yy5bFm6ulEdJCQAA7ULgBiziD2Rv/bbU0IubGW4AANpG4AYsUpulPbhj8tjeHQCAdsnO7/RAF9DQgzt1X4aP//VDVdWGVOh1au6lpyb12g0z3JSUAADQFgI3YJFYDXcqN735eE+FyqsCKip0J/3azHADANA+lJQAFsnWbd1j6FICAED7ELgBi9Rm8aY3UkMfbrqUAADQNgI3YBF/MHu3dZeY4QYAoL0I3IBFagOxRZPZPcNdGwgrapoWjwYAgMxF4AYs0lVquE01tDgEAADNEbgBi2R7DbfDbpPLWfdfCJ1KAABoXXZOrQFZyoyEFT30qSKH9uj0I5t1esEhDf34VVV/Eqw7wLDJcOfLKOwhm6+P7H1Plr3PUBnO5Lf1S4Z8j1PBUKC+F7fX6uEAAJCRCNxAikWPfKnwrn8qvOd9RfaVSpG6cD1aklySqqTosSft+6ThfZtdjgGj5TxlsuwDRsuwZc6MeJ7HofKqADPcAAC0gcANpIAZrFFox0aFtq1X9NCnTZ4z3AWy9TpJb31m06fVHp0/6VSdeGIfyTAkMyqztkrm0YOKHNqjyBcfy6w+rPCn/1L403/JKOwp97gr5Bg6UYbt+BVhk0/rp9pAOGV14vluOpUAAHA8BG4gicJHy1Xzxv+nwIevSOFA3YOGXfZ+p8gx6HTZ+4+QrXs/GYahFx95XRWBoC4YOFaOvoUtXs80TUXL9yr08WsKf/KmzKqD8r/6hGzvrZZnyr/J3rukzfFcds7gZH+KTdCLGwCA4yNwA0lgBmtV84+Vqnh/ncxwXcmIraifnKdMlXPY2TI8Bc3OiS2a9LhbLxExDEP24hNln3i1zPFfU/CDdQpuXqVo+Weq+ctCuU6bIde4y2XYnan5xI6DXtwAABwfgRvoBNM0Fd7xlgIb/ySz9ogkyd6nRK7TL5N9wCgZhtHieVHTVCDepaR9X4aGwy33mJlynTJV/jefUXjHWwpuflHhvVvlvfA/ZSvokZxPqgOY4QYA4PgI3ECCojUV8m/4nSK7N0uSbN36qNdF/6ZAzxGKRNreCCYWtqWOb3xjeArkPf8/FBpyhgLrf6vogZ2q+fP/leer8+ToN6LDn0dnMMMNAMDxEbiBBIQ/3azaV5+QAtWSzSHXuMuUN3aG8nt2V7C8WnXbwbQutlGM3WbI6UisHb7zpHGy9xio2rUPK3pot2pfvF/uc74j14ip8WPu+J83VF4VUFGhWw/cNCmh12lLXn3gpksJAACtI3ADHWBGowq++4KC/1ohSbL1GCTPedfJXjxAhr39wTlev+2yt1p20h62wl7Ku+zH8q//rcKlGxV47XeKVnwh91nfaFcXk87Kj5WU1FJSAgBAawjcQDuZIb9qX/qNInu2SJKcp14g94SrZdg7/mXkD9bNCHvaWb/dFsPhluf8/1Cw+wkKvvuCQu//TdEj++S94IZOX/t48r0EbgAAjofADbRDtOaIatc8qOjBXZLdJc/k78k57OyEr+cP1C+YbKNDSUcYhiH3uMtk69ZH/vVPKrJ7s2r+eo8UvSgp129NYV5d4D7KokkAAFpF4AaOI3r0kGpW/lJm5X4ZnkJ5p31f9j5DO3XNWA23J8kb0jiHTpCtsKdq1y5W9NAeRWsrlcot12Mz3EdrCNwAALQm9UWeQBaLVpc3hO36eunOhm1J8jeq4U42e5+hyrv8p7IVnSiZdZvGx3qDJ1thfeAOhqMKhiLHORoAgNxE4AZaEa2paBq2Z90lW7e+Sbl2bX0Nd3t7cHdUbDGl4agLxKb/qAL/WinTbLt7Skd5XHbZbXWLPo9Sxw0AQIsI3EALzFBAtX/7tcwjX8oo6KG8mXcmdWMZf31JSbJquFtiuLwy3A07XAb/8bz8L/2PzGBt8l7DMBrKSgjcAAC0iMANHMM0o/L//XFFD+yU4S5Q3iV3ylbYK6mv0VBSkuJlFPUtBw13vmSzK7zzHdW88DNFDu9N2ksUErgBAGgTgRs4RvDt5xXe9a5kc8gz7RbZuvVJ+mvUprCGuyWG0628WT+SkV+k6JEvVbP8Zwrt2JiUazPDDQBA2+hSAjQSKvuHgu+tkiR5pl4rR9+TU/I6sT7c3iR3KTnW9TNHKhyJymG3yd6nSHlf+5n8rzyqyN6tdW/3fZJwL/EYZrgBAGgbgRuoF634Uv71SyRJztHT5Rw6MWWvFevDneoZ7lMGFTX52Ob1yTt9fny3zNCHLytyYJe8X71JtoLihF6D1oAAALSNkhJAdW3zal96RAr5Ze97stxnfj2lr1cbSM8Md0sMm03u8bPlnXar5MpTdH+pav78fxTeuzWh6xUwww0AQJsI3ICkwMY/KXr4MxlenzxfnSfDltqZ51T24W4vx6Axyv/a/5Wtx0CZ/irVrvqVgu+v7fB14oGb3SYBAGgRgRs5L7z7PYW2vixJ8ky9Xra87il/zVgf7lR3Kfno03J9UHZIH31a3uLzNl9v5V32EzmHnyuZpgJv/UGBTc/KrN8wpz0KKCkBAKBN1HAjp0VrKxvqtr9yoRwDRqXldf1pKil5YuVWlVcFVFTo1gM3TWrxGMPhknvyv8vo1kfBt59X8L1VitZUyDPl32XYjj++gjxKSgAAaAsz3MhZpmnKv36JzNpK2Yr6y33mlWl77UwoKWnMMAy5x8yUZ8q1kmFT+JM36zb+aceW8NRwAwDQNgI3clZo26uK7H6vrt/2+TfIcLjS8rrhSFTBcF3JhhWLJtviHH6uvNO+Lzlciux5v12hm8ANAEDbCNzISdGqAwpsXCZJcp/5ddl7DEjba8dmt6XMmeFuzDHwNHlnzJccbkX2flgfugOtHh8L3P5gROFI+2u/AQDIFQRu5BzTNOXf8DspHJC978lyjroora8f2/TGYbfJYc/ML0FH35PlnXGH5PTUh+7FrYbuPI8jtoM8s9wAALQgM7/bAykU+mi9Ins/lOzOuoWBRnq/DGKb3njdmTe73Zij78nyTr+9IXSve0RmJNzsOJthKN9DWQkAAK0hcCOnRI8eaiglGT9btm590z6GWEtAb4pbAiZDPHTX13T7X32yxZaBtAYEAKB1BG7kDNM05X/td1LIL1vvEjm/kt5SkphM61ByPI6+J8t74X9Khl3h0o0KvPkHmabZ5BgWTgIA0DoCN3JG+JM3FNnzvmR3yDPlWhk2a/75x7Z192RYh5K2OAaMlue86yRJoQ9fUvBfK5o8T+AGAKB1BG7khGh1ufxv/kGS5Bp3uexF/SwbS2yG25slM9wxzqET5T77W5Kk4Dt/VnDrK/HnCNwAALQue6bYgE4IvPmMFKyRrddguUZPt3Qs/jTOcLe2u2SiXF+5UKa/SsF//lWB138vw1Mo55Dx7DYJAEAbCNzo8sKfblZ45zuSYZNn8r/JsFk7s1ybpTPcMa5xV8isrVJo29/lf+UxGZ4CFXjzJElVLJoEAKAZSkrQpZmhgPxv/F6S5Bw1TfYeAy0eUXbWcDdmGIbck74jx+AzpGhYtX/7tXqbByRJVbXH3woeAIBcQ+BGlxZ4d7nMo4dkFPSQe9zlVg9HUvZ1KWmJYbPJc95c2U8YLoX8Kvl4qXrYqpjhBgCgBQRudFmRQ7sVev9vkiTPpO/IcLotHlEdfxr7cP/l9Z1a9vIn+svrO5N+bcPhknfa92XrMUCOYJVuLHxJkZojSX8dAACyHYEbXZJpRut6bptROQafIcegMVYPKS6dM9wb3vtca/+xRxve+zwl1zdcefJOv0Nmfg/1sldpjlYrGqhJyWsBAJCtCNzokkLbXlV0f5nk9MRb2WWKWA23N0truI9ly+su10W362jUrQGOQ6pZ+3CLW8ADAJCrCNzocqI1FQq8/Zyk+u3b84ssHlFTDYsms7eG+1ieXv21pPZCBUyHzC+2yf/qEy1uAQ8AQC4icKPLCbz5BylYK1uvwXKOvMDq4TQTC9x5bqfFI0muI+5+WlI1VaZhU7h0kwJv/bHZFvAAAOQiAje6lPCeLQqXvS0Zhjznfs+y7dvbUhML3J6uUVIS48t36uNwP+0bMUeSFPpgXbMt4AEAyEWZl0aABJnhgPyv1/fc/spFsvccZPGImotGTdUG6hZN5nWRGu6YwjyXJOmLwq/IPfFqSfVbwL+32sphAQBgOQI3uozgP1fIrDogI79Y7jOusHo4LaoNNiwm7CqLJmMK67d3r6oJyjVqmlxnfE2SFNj0JwU/WGfl0AAAsBSBG11C5PBn8ZlU96Rvy3B6LB5Ry2r8dYHb5bDJ6ehaX36++hnuyuq6zW/cYy+V6/RZkqTAm88ouPXvlo0NAAArda3v+MhJDT23I3KcNFbOk8ZaPaRWxQK3t4vVb0sNJSWNt3d3nfE1OUdPlyQFXl+q0EcbLBkbAABW6nrf9ZFzQh9tUHTfjozsuX2s+ILJNJWTDB/QXVW1IRV6U98RJV5SUt0QuA3DkPusq6RoWKEP1sm/4beSzS7nyZNSPh4AADIFgRtZLVpzRIFNz0qS3GdcIVtBD4tH1LbYDHe6OpTMvfTUtLyOJPny62e4a0JNHjcMQ+6J35SiEYW2viL/+iclm03OoRPTNjYAAKxESQmyWmDjMilYI1uPQXKe+lWrh3NcXbUHt9Qww11ZE2z2nGEYck/6tpynTJFMU/6/P65Q6aZ0DxEAAEtkRODeuXOnrr32Wo0ZM0YTJ07UwoUL5ff723XuCy+8oIsvvlijRo3SzJkztXp10xZkO3fu1M9//nPNmDFDY8aM0XnnnacFCxbowIEDTY7btGmThg8f3uzPbbfdlrTPE8kV/uwDhXe8Vddze/L3ZNgyf+fGrtqDW2pYNFlVE2pxwxvDsMl97jVyDp9cF7pfeUyhsn+ke5gAAKSd5d/1Kysrdc0116hfv35avHixDh8+rEWLFqmiokL3339/m+euWbNGd911l+bOnatJkybppZde0m233abCwkKdc845kqQ33nhDb7/9tq666iqNGDFCX375pR555BF94xvf0IoVK5Sfn9/kmosWLdKQIUPiHxcVZda24KhjhoMNPbdP/arsvQZbPKL2qfHXlVt0tR7cUsMMdyRqqjYQVp6n+Sy+Ydjknvw9mWZU4e2vy//yo5Jhk3PwuHQPFwCAtLH8u/6yZctUWVmp5cuXq7i4WJJkt9s1f/583XjjjSopKWn13F//+te6+OKLdccdd0iSJkyYoJ07d2rx4sXxwD1jxgx961vfkmEY8fOGDx+uyy67TGvXrtUVVzTt1zxs2DCNGjUq2Z8mkiz43mqZlftk5HWXu77fczaIzXCnqwf3fX/4pyprQvLlOXXnN1PbvcXpsMvjsssfjKiyJtRi4JbqQrdn8r/Lb0YV/uRN+V/6jXThTRndXQYAgM6wvKRkw4YNmjhxYjxsS9K0adPkcrm0fv36Vs/bs2ePysrKNHPmzCaPz5w5U1u2bNHhw4clScXFxU3CtlQXuO12u/bv35/EzwTpEq06oODmlZIk98RvynB5LR5R+9WmedHkvvJafX6wWvvKa9Pyeg1lJc3ruBszbDZ5plwnx9AJkhmR/6X/UfjTzWkYIQAA6Wd54C4tLW02i+1yuTRw4ECVlpa2el5ZWZkkNSn/kKSSkhKZphl/viX/+te/FIlEWpw9nzt3rkaMGKHJkyfrl7/8ZbtryZE+gbeWSZGQ7P1GyDFkvNXD6ZB0twVMt/jCyerQcY6sD91Tr5djyJlSNKLadY8o/NkHqR4iAABpZ/l3/crKSvl8vmaP+3w+HTlypNXzYs8de263bt2aPH+sUCikX/ziFxo8eLCmTp0af7ywsFDXXXedxo8fL7fbrY0bN+qpp55SWVmZHnvssY5+Wk3Y7Zb/XNNlhHZvUXjXu5JhU/7k78juzJyFkrH73Nb9jnUpKchzypHmnSbT8Xq+groZ7mp/qJ2vZ5PjohtVvc5UqPQfql27WIWX/lCOvsNSO9AkaM/9RtfB/c4t3O/cckwhREpYHrhbY5pms1KQlhx7TKw7Qmvn/vznP9cnn3yip59+Wg5Hw6c/cuRIjRw5Mv7xxIkT1bt3b919993asmWLRo8encinIUny+bKn5CGTmeGQPnvzGUlSt/Ez1KNkuMUjallb9zsQjkqS+vQsVFFRfqvHJYvNZsTfpuP1ehXlSzqokKkOvV7RlXfoy2d/qdqyf6l61YPq95275eo9KHUDTSK+vnML9zu3cL+RLJYHbp/Pp8rKymaPV1VVtblgsvFMds+ePeOPx67V0qz5I488oueff14PP/xwuxZGTp8+XXfffbc++OCDTgXuyspaRSLRhM9HHf8/Vyp0+AsZ3m4yRs1UeXm11UNqwm63yefztnm/Y7swRsPhtIw/GjXjb9Pxeh5HXcDfd/Boh1/PfcE8BWvuU+TLT7T3mZ+p8Iqfyt6tdyqGmRTtud/oOrjfuYX7nVu6dfPKZkvtbzMsD9wlJSXNarWDwaB2796t2bNnt3perHa7rKysSTAvLS2VYRjNarufeeYZPfzww7r77rt1wQUXJPEzOL5IJKpwmC/Yzoj6q1T77gpJkvvMryti90gZ+nfa1v2O7TTpctjS/m8iHa8X223ycGWg469nOOWddqtqVixS9PBnqvrrL5V32Y9ly+ue/IEmEV/fuYX7nVu437mhha0jks7y4qTJkydr48aNKi8vjz+2bt06BYNBTZkypdXzBgwYoCFDhmjVqlVNHl+5cqVGjx7dpOvJiy++qIULF+qWW27RN77xjXaP7cUXX5Qk2gRmgODmF6VQrWw9Bshx8iSrh5OQqGk27DTZSsu8bNct3y1JqjgaSOh8w50v74z5Mny9ZVYdUO2L98v0H03mEAEASDvLZ7jnzJmjp59+WvPmzdO8efN06NAh3XvvvZo1a1aTmesFCxZo+fLl2rp1a/yxW265RbfddpsGDhyos88+Wy+//LLeeOMNPfnkk/Fj3n77bf3whz/UGWecoUmTJmnz5s3x54qLizVw4EBJ0vz58zVo0CCNHDkyvmjyd7/7nS644AICt8WiRw8r9OFLkiT3+K/LMCz/OTEh/kBEsR+i89yZs9gzmboX1s1wH0kwcEuSLa+78mb8QDV/vUfR8s9Us+ZB5V1ypwynO1nDBAAgrSwP3D6fT0uXLtXChQt18803y+PxaObMmZo/f36T46LRqCKRSJPHpk+fLr/fr0cffVRLlizRoEGD9OCDD8Y3vZHqtmwPhUJ6++23m81uX3HFFbr33nsl1W14s2LFCj311FMKhULq37+/brjhBs2dOzdFnznaK/jPv0iRsOx9T5Z9QOK19FY7Wr/LpMtpk9PRNQN3UUFshjuoqGnKluDSb5uvl7wz5teVl+wvVe3axfJefKsMe9f8zQAAoGszTDMdlSu5rby8mhqwBEUrvlT1cwskMyrvpQvk6Huy1UNqlcNhU1FRfqv3e+cXlfr50ndUVOjWAzelpyzm1c17FQhG5HbZNXVM/5S/XjgS1dxfvSpJeuiWc+Ib4SQqsm+Hal78lRQOyDH4DHkumCcjxQtb2ut49xtdC/c7t3C/c0txcX7KW0BmxncuoBWBd/4smVHZB56W0WG7Papr62a4C7zpm6WdOqa/pp05MC1hW5Icdlt885uKqsTLSmLsfYbKe9HNks2u8M53FHj9d2KOAACQbQjcyFiRg7sULntbkiH3+K9bPZxOO2pB4LZC9/qykiPVbW/v3l6OE78iz/k3SIah0EcbFNi4jNANAMgqBG5krMDbz0uSHEPPkr3HAItH03mxwJ3vsXzpRErFAncyZrhjnEPGy33u9yRJoff/psCG38qMRto+CQCADNG1v/Mja4U/36bIZx9Ihl3uM75m9XCSorq+B3c6Z7grjgYUjZqy2Yx4EE617vXbuyfaGrA1rlPq2oQGXvudQh9vkBmoluf8/5Dh6FydOAAAqcYMNzKOaZrx2W3niCmy+TJ3t8GOiM9wpzFw/3zpO5r/mzf186XvpO01uzXqVJJsrlOmyPPV/5RsDoV3vavaNQ/KDNYm/XUAAEgmAjcyTuTTzYruL5XsLrnGXmr1cJLGikWTVihK0Qx3jHPwOHln3CE5PYp8vk01L96naG1lSl4LAIBkIHAjo5jRqAL/qJvddo26MOO39e6IWB/u/C66y2RMvIY7RYFbkhz9Rihv5l0yPIWKHtip2hWLFD16KGWvBwBAZxC4kVHCO95StHyv5MqT67QZVg8nqXJlhrvY55EkHTriT+nr2HudpLxLF8jIL1a04gvV/OUeRSu+SOlrAgCQCAI3MoYZCSvw7guSJNeYGTLc+RaPKLlypS1gz+51gbuyJqRAKLWdRGzdT1DeZT+WrVtfmdWHVfPXXyhycFdKXxMAgI4icCNjhLa9KrPqoIy87nJ95UKrh5N01bV1XUryvV27OVCe2yGPq27r+sOVqZ3lliRbQQ95L10gW89BMv1Vqllxr8Kff5Ty1wUAoL0I3MgIZsiv4L/+Kklyjb1UhiM9LezSJRKNqiYQC9xde4bbMAz17FY3y30wxWUlMTavT3kz75L9hOFSyK/a1Q8ovPu9tLw2AADHQ+BGRgi+v1ZmbaWMwl5yDp9s9XCSLtaDW+r6G99IUs9uXknpC9ySZLi88k6/Q/aBY6RISLVrFytU9o+0vT4AAK0hcMNypv+ogltWS5Lc478mw971AunRmrr67Ty3Q3Zb1/+y6+GLzXCnt0e24XDJe9F/yjHkTCkakf/l3yi0/Y20jgEAgGN1/e/8yHjB91ZJwVrZigfIUXKW1cNJicrquk1gfPm5sStij27p6VTSEsPmkOf8G+Q4+VzJNOV/9UkFt/497eMAACCm600lIqtEq8sV/GCdJMl95mwZRtf8GbCyxprAPX/OmPjW7unU08LALUmGzSbPlH9TwOlS6MOXFXh9qRQOyjV6miXjAQDkNgI3LBV8d7kUCcneZ5jsA06zejgpE5/hzkvvgskTeljTWrFX97oa7n3l1m27bhg2uc/+tgyHW8H3Vimw8Y8yw365Tr9UhpHeH0AAALmta04nIitEKj5X6OMNkiTXWVd16RBUWV/DnSslJb2L6gL30dqQqut32LSCYRhynXmlXGd8TZIUfOcFBd9+TqZpWjYmAEDuIXDDMsG3n5dMU45Bp8vRd5jVw0mphhnu3AjcXrdD3QvqPtcvD9dYOhbDMOQee6ncE66WVLdmIPDm0zLNqKXjAgDkDgI3LBH58hOFd/1Tqp+B7Oqq6mu4C9M8w73xwy+14b3PtfHDL9P6upLUtzhPkrTP4sAd4xo9Te5zvyfJUOjDl+Vf/1uZUUI3ACD1qOFG2pmmqcCmZyVJzuHnyl7Uz+IRpV580WSaZ7ife7VU5VUBFRW6NeHUvml97b7Fefpod4XlM9yNuUZMleFwyf/qkwpvf03+UK08582V4ciN3zwAAKzBDDfSLvLpZkX2fSLZXXKNu8Lq4aRFQ1vArr3LZGN96me4vzxs3cLJljiHnS3PV+dJNofCO99R7ar7ZfqPWj0sAEAXRuBGWpnRiAJvPydJco26SLb8IotHlB65tmhSyrySksacg8+Qd8YdksuryJfbVfPXXyhaddDqYQEAuigCN9IqtP11RSs+l9z5cp023erhpEUgFFEgGJGUO4smJalvj4bAHc3AriCOfiOUd+lPZOQXK1rxuWqW/1yRg59aPSwAQBdE4EbamOFAXd9tSe7TL5XhtqZHdLpV1ZeTOOw2eVx2i0eTPj27eWS3GQqGo6qoClg9nBbZi/sr7/KfylZ8oszaI6pZsUjhzz6welgAgC6GwI20CW75m8zqchkFPeQ89Xyrh5M2FfWBu1u+q0v3Gj+W3WaL9+P+IgPLSmJs+UXKu3SB7P1GSCG/alc/qND2160eFgCgCyFwIy2iNRUKbn5RkuQ+80oZ9txZPFheP7tb5HNbPJL0i9Vxf3Gw2uKRtM1w5ck7/Q45hk6QzIj8rz6pwD//ygY5AICkIHAjLYLv/FkKB2TrPUSOkrOsHk5axQJ3cWHuBe5+PevKhj7P8MAtSYbdIc95c+U6bYakun+zgdeWyoyGLR4ZACDbEbiRcpHDexT6+DVJkmfC1TlVViFJ5VV+SVL3gtwL3P3rA/feLAjckmQYNrnPukruSd+WZCj00auqXfUAbQMBAJ1C4EZKmaapwFvL6rZwHzJe9i6+hXtLrJzh9uW7VFTotqwdYWyGe++B6qwqz3Cd+lV5p90iOT2KfL5N1ct/rkjF51YPCwCQpdhpEikV2fO+Ins/lGwOuXNgC/eWHI7XcHvS/tr/53vj0/6ajZ3QI0+GIdUEwqo4GlRRFpXVOAadrrzLfqzav/1aZuU+1Sz/ubxT58px0ulWDw0AkGWY4UbKmNGIApuWSZKcX/mqbL7eFo/IGrGWeNkUNpPF6bCrT1HdwslsqOM+lr14gPIu/y/Z+54sBWtVu/bX8r/1R5kR6roBAO1H4EbKhD7aoGj55zLcBXKfPsvq4Vgiapo5vWhSyr467mPZvD55L7lTzlHTJEmh9/+mmr/eo0jlAYtHBgDIFgRupIQZrK3rTCLJNe6ynNnk5lhVNSFFoqYM5da27o01dCrJ3oWHht0hz8Sr5b3o+5I7X9EDO1X5px+r8l/rsqo2HQBgDWq4kRLBzS/K9FfJ6NZXzpHnWT0cy8Q6lPgKXHLY0//z7dI1H6m6NqR8r1PXXHxK2l9fkvr3yu4Z7sYcJ52u/J53y//yo4rs+0QHVz0qx4mvy33u92Qr7Gn18AAAGYoZbiRdtOqggu+vkSS5z7pKhi13f647WFEXuHtasGBSkraUHtI7Hx/QltJDlry+1LQXd1eYDbYV9JB31o/knfRNGQ6Xwp99oOrnf6Lg1r93ic8PAJB8BG4kXeAfz0uRsOwnnCLHoNzu6LC/olaS1Kt+i/Nc1Lc4T3abodpAJF7Pnu0Mm02e0y7Widc/IMcJJ0shvwKvL1Xtyl8qeuRLq4cHAMgwBG4kVWR/mcI7Nkoy5J44J+c2uTnW/vK6wN27e+4Gbofdpt71P3B0hbKSxpzF/VRw+QK5z/6WZHcp8sVHqn7+Jwr8ayU7VAIA4gjcSBrTNBXYWNcG0DHsbNl7nmTtgDLAgdgMdw4HbqlRp5IDXStwS3W7U7q+cqHyr1woe/9TpUhYwX88r5o//0yR/WVWDw8AkAEI3Eia8M53FPlyu2R3yT1+ttXDyQjxGe4cLimRGu04mcWdSo7H5ust74z58ky9Xoa7QNHDe1Tzl5/L/+YzMkN+q4cHALAQgRtJYYYD8dlt12nTZSsotnhE1guFozpcWRe0etdv/pKrBvQukCTt2d91A7ckGYYh58mTlHfVL+QYOlEyTYU+WKfq536s8O4tVg8PAGARAjeSIrh5lcyjh2TkF8s1ZobVw8kIB4/UypTkdtrly3NaPRxLDepTKKmupCQUjlo8mtSzeX3ynv8f8k6/Q0ZBD5lHD6l2zX+r9uVHFa2ttHp4AIA0I3Cj06JVBxR8b5Uk1S2UdOTmjorHipWT9OruzfnFoz26eZTvcSgSNbNyi/dEOQaMUv6V99TtUmkYCpduVPWzP1Jo++u0EASAHELgRqcFNv5JioTq2gAOHm/1cDJGLFj265nb5SRSXanFwPpZ7k/3VVk8mvQynB55Jl6tvMt+KluPAVKgWv5Xn1TtqvsVKf/c6uEBANKAwI1OCe/dqvDOdyTDkHvSt3J+Jrexz+o7cvTvVWDZGM4a0Ufnjj5BZ43oY9kYYgb1rQ/cX+ZW4I6x9x6ivCv+j1xnXinZnYrs/VA1z/9Y/vVPKXr0sNXDAwCkUO5uAYhOMyNhBd58WpLkHHm+7MUDLB5RZol15DixvkOHFa46f6hlr32sgX3qfvDYnWMz3I0ZNofcYy6Rc/AZCmz6k8K7/qnQxxsU2vGWnKdeINfo6bLldbN6mACAJCNwI2HB91YpWv65DE+h3OOusHo4GSUaNfX5wRpJUv9e1gXuTBJbOLln/1FFolHZbbn7CzZbtz7yXnSLIl9+osDbzyny5XaFtqxR6MOX5Rw+Wa4xM2Qr6GH1MAEASZK73/HQKdGKLxX8118lSe6JV8vwWFc2kYn2V9QqHInK5bCpZ45vehPTpzhPbpddwXC0S26Akwh732HyzvqRvBffJlvvEikSUmjry6r+452qfXWJohVsEw8AXQEz3Ogw0zTlf32pFAnLfuJX6voNo4nP6vtNn9AzXzbq2iVJNsNQST+ftu4q1469R+KLKHOdYRhyDDxN9gGjFfl8m4KbVyqyd6vC219TePvrcgwZL9fpM2XvMdDqoQIAEkTgRoeFtr2qyOfbJLtLnnO+y0LJFuyqXxg4yOJQueDxjao4GlD3Ard+MXeCpWORpGEndtfWXeX65LMjOn/siVYPJ6MYhiFH/5Fy9B+pyL4dCvxrpSK7Nytc9rbCZW/LPvA0ucfMlL3vMKuHCgDoIAI3OiR6ZJ8CG/8oSXKP/5psvt4Wjygz7fyibnOTwSdYG7gDoYj8wYgCoYil44g5+cS6BYGffFZh7UAynL3PUOVdfKsih/Yo+K8VCpf9Q5Hd76lm93uy9z1ZrjEzZB9wGj/sAkCWIHCj3cxoRLWvPiGFg7KfcIqcoy6yekgZKWqajQK3z+LRZJYh/brJZhg6XBnQoSN+9ejmsXpIGc3eY4C8X51Xt2ZiyyqFtr+hyJfbVbtmu2zFJ8p12gw5Ss6SYbNbPVQAQBtYNIl2C25eqei+HZLTK8/U62QY/PNpyReHauQPRuRy2OhQcgy3y65BfesW2G7fU2HtYLKIrXtfeSb/u/Kvvl/O0RdLTo+ihz+T/++Pq3rZnQp+8JLMcMDqYQIAWkFiQruEP/tAwXeWS5I8k74tW2FPaweUwcr2HpFUt9FLLre+a80pA4skSR/sZLOXjrLlF8kzYY4KvvmAXONny/AUyjx6SIE3n1b1H+Yr8M+/yPQftXqYAIBjkAZwXNGjh+R/5TFJppzDJ8t58iSrh5TRtn1aLkka2p8NTFoyakhdf+kPdh5S1DQtHk12Mtz5cp8+S/nffEDuSd+RUdhLpr9KwXde0NE/3C7/G79XtHK/1cMEANSjhhttMsNB1a77H5n+Ktl6DJJ70retHlJGM01T23bVBe4RJxVZPJrMNPTEbvK47KqqCenTL6uoc+8Ew+GS69QL5BwxVeGyfyj43ouKHtqj0IcvK7T1FTlOGifXadNl711i9VABIKcRuNEq04zK//fHFT1QJrny5L3wJhkOl9XDymhfHqrRoUq/7DZDw/p3t3o4Gclht+nUwcV69+MDem/HQQJ3Ehg2u5xDJ8hRcpYie7cq+P4aRfa8r/DOdxTe+Y7sfYbJedrFcgw8XQZlTgCQdgRutCqw6VmFd74j2RzyXnQLLQDbYcuOA5Kkkn4+uV10jmjN6JIeevfjA/rn9gO6/NwhVg+nyzAMQ44TT5XjxFMVObxHwS1/U3jHW4rs+0SRtZ/I6NZHrlMvlHPYRBluFvQCQLow1YEWBTavUmjLGkmSZ+q1cvQ7xeIRZYdNH9ZtxX3q4GKLR5LZxp7cSw67oc8OVMd35URy2YsHyDv1OuVffb9cY2ZK7nyZR/Yp8ObTOvr0rar9++MKf/GxTOroASDlmOFGM8H3/6bg289KklxnXiknW7e3S20grH99XDfDPXZ4Zvw24DvThisUjsrpyKyfrfM9To0u6al/bj+gtz78Ulf2Hmr1kLosW36R3Gd+Xa7TZyr08esKbXtV0fLPFP7kTYU/eVNGQQ85hoyXc8iZsvUazGY6AJACBG40EfxgnQJv1e0k6Rp7mdxjLrF4RNnjvR0HFY5EdUKPPPXrkWf1cCRJY4ZmbvvGiaf21T+3H9BrW77QpecMlttJCU4qGU6PXF/5qpynXqDogTKFtq1XqOxtmUcPKbRljUJb1sjIL5bjxK/IPuArcvQbKcNTYPWwAaBLIHBDUl13jeC7yxX8518kSa4xl8g17nJrB5VlXt/yhSTpjFN6M0vYDmOG9VDPbh4dPOLX61u+0AXjTrR6SDnBMAzZe5fI3rtE7knfVnjP+wqXva3wp5tlVh9W6OMNCn28QZIhW1F/2XsPlq13iey9BstWfCK7WgJAAgjckBmNKvDmMwptfVmS5Bp3hVxjLyU0dsDBilq9X3pIkjT5tH4WjyY72G02XXzWQD29drtWvrlLE07to3yP0+ph5RTD4ZJz8Dg5B4+TGQ4q8sXHCn/2gSKffaBo+V5Fyz9TtPwz6ePX6k6wu2TrMUD2noNk73mSbL1Okq2onwwb30oAoC38L5njzGCNal9+VJE9WyQZck/6llynftXqYWWdv729R6ak04b1VJ/iPIXDUauHJEna9WWlwhFTDruhk/pmXvu9c0f300vvfKYvD9foqRe36aYrRslm4wc9KxgOlxwDRskxYJQkKVpToej+nYrsL1XkwE5F9pdJoVpF95cqur9UodiJdodsxQNl7zlItl4nyd5riGxF/Wk/CACNELhzWPTIl6pdu1jR8s8lu0ue866Tc8iZVg8r6+w7XKP17+2VJF15wckWj6aph/+/91VeFVBRoVsP3JR5O4Q6HTb9+yUjdN8f/ql/fXJQDz73nq6fNVK+PPq9W82W1122k06X46TTJdX15TeP7FPk4C5FDuxS9OCnihz8tC6EHyir69e/rf5kh1v2XifJ1muI7L2HyN67REZ+Eb81A5CzCNw5KlS6Sf4Nv5VCfhl53eWddqvsvU6yelhZJxCK6H9eeF/hiKlTBxdr9NCeqqiosXpYWWVo/2664bKv6PG/fqgPdx7WwqXv6PtfH63+vViwl0kMwyaj+wmydT8h3rnINKMyK/crcmCXIgc/VfTgLkUO7JRCfkW++FiRLz6Oz4Qbed1l6zlI9h4D698OklHYkxAOICcQuHOMGaxR4K1l9YuiJPsJw+U5/wbZ8tmGvKNM09Tv//axPjtQLV++S3MvPZXwkKCxJ/fST757hh758/vaX1GrXy3brP+65gwV+zxWDw1tMAybjG59ZevWV86hEyTVrQmJVnyh6P5SRQ6UKbK/TNHDn8msqVBkd4Uiu99ruIDLWxfAewySvWddELd178fCTABdDoE7h4R3b5b/tf8ns/qwJMl1+iy5xl3ON7cErX/vc735wZcyDOmGS09VUaHb6iFltRN7F+gn15yh+/7wT312oFpPrNiqO795Oj/EZBnDZpO9uL/sxf3lPGWyJMkMBRQ59KmiBz9V9NBuRQ7urluMGaxtNhMuu0u2ngNl7zW4fmHmYNm69aUmHEBWI3DngMjhvQpsWqbInvclSYavtzxTrpXjhOEWjyx77fqyUn9Yt12SNHtKiU4ZxG8IkqHA69R/zh6t/1qySR/vqdBrW76g60sXYDjdcvQ9WerbsMbBjIQVrfi8rhb80O74W4X8iu7boei+HQ0h3OmRrai/bN36yNatb8Pbgh6SO58fygBkvIwI3Dt37tTChQv17rvvyuv16pJLLtH8+fPl8Rz/18kvvPCCHnvsMe3du1eDBg3STTfdpOnTpzc5JhQKafHixXrhhRdUVVWl0aNH68c//rFOOaXpduUHDhzQPffcow0bNshms+n888/XggUL1L1792R+umkTOfipgu+tVrhsk2Saks0u51culPuMK2Q4mI1N1NHakH7zwgcKR0yNGdpT088aaPWQupTe3b26/JwhevbvO/TsKzs0uqSHuhfw77WrMewO2XsMlL3HQMWaQZpmVNEjXyp6oK4WPHpglyKHPq0L4fXdUZpxuGUrKJaRX9zobQ8ZBcUy8opkeAtluAuYIQdgKcsDd2Vlpa655hr169dPixcv1uHDh7Vo0SJVVFTo/vvvb/PcNWvW6K677tLcuXM1adIkvfTSS7rttttUWFioc845J37cokWLtHz5ct11113q37+/nnzySX3ve9/TihUr1KtXL0lSOBzWddddp1AopPvuu0/hcFi/+tWvNG/ePD3zzDNZM4NihgIK7/yHQh+/psgXH8cfd5w0Tu6zrpKtWx8LR5f9olFTT6zYqoNH/OrV3aPrZo7Imn8b2eTC8Sdq07Z9+vTLKj2zbrtuumKU1UNCGhiGTfbu/WTv3k/OYWdLitWEf17358i+ukB+ZJ/MI/tk+qukcEDRii+kii8Uaf3CMjyFMry+uj/ufBmuPMmVJ8OdJ6PRW7mO+djh4mscQKdZHriXLVumyspKLV++XMXFxZIku92u+fPn68Ybb1RJSUmr5/7617/WxRdfrDvuuEOSNGHCBO3cuVOLFy+OB+59+/Zp2bJl+vGPf6yrrrpKknTaaafpggsu0NKlSzV//nxJ0tq1a/XRRx9p5cqVGjZsmCSpd+/euvrqq/Xaa69p8uTJKfs76AzTNGVWHVTki48U/vRfCn/2gRQO1j1p2OQoOVOu0dNl7znI2oF2AaZp6o8vfaL3yw7J6bBp3uWjlMdGLSlht9n0b9NP0c+XvqN3Pz6gDe99TmlJjqqrCT9R9uLmO5Ga4aDM6sOKHj0s8+ghRasPyzx6uP7tIZk1lTIDRyXTlFlbKbO2MoEB2OvCtztPNXkFitg9ktMrw90onDcO6O6mj8nhJrADsD5wb9iwQRMnToyHbUmaNm2aFixYoPXr17cauPfs2aOysjLdfvvtTR6fOXOmfvSjH+nw4cMqLi7W66+/rkgkoksuuSR+TEFBgc4//3ytX78+HrjXr1+v4cOHx8O2JI0dO1b9+/fX+vXrMyJwm9GIzKoDilZ8oUj5F4oeKFNk3w6ZNRVNjjN8veU8+Rw5T55UV+OITqsNhPXHlz7R6+/Xbd9+/cyRGtS30OJRdW0D+xRq1tknafnrO7V0zUfa9UWlhp3YXVHTVDAUUSBUt7nQ4BMKNaRfNzkdlAzkGsPhindJaY0ZDcv0H5VZW1Ufuo/IDNTIDNb9UbCm/uPauscCDY/JjEhmRKa/Sqa/SoEj+xIYpE1yumXYnZLNIdmdMuwOyV7/vq3ufcPurHvM1uj92LGtnueU7HYZtmOOtzsaPdb42k5KawCLWB64S0tLNXv27CaPuVwuDRw4UKWlLdTr1SsrK5MkDRkypMnjJSUlMk1TZWVlKi4uVmlpqXr27NmsDrukpEQrVqxQNBqVzWZTaWlpi+F+6NChbY7jeKJBv4Kl/1AkcuzOg2bTd6NhmSG/FArIDPllhgNS0C/TX6VoTYXM+j+KtvBLU5tdtp6D5BhwmhyDxsjWY2BaZ1RqA2Ht2X9Upmk2eTz2oXnMA7GPGx6PvWk4wWx6Svyg5tdsfm7sTWvnHnNqfNzRqCl/MKLaYFi1gYj8gbBqAmFVVgf1yd4jCgQjMgzpO9OG64xTerf4d4HkmjXpJB2pCerv/9yrVzd/rlc3f97icS6nTcMHFOmUQd3Vs5tXeW6HbIZkGIaM+rfJZrfbVFjuV1WVv4Wv78R53Q6d2IuFgMli2Bwy8rpLed07dJ5pmlI4GA/h9kit8p1RVR4+rEjt0XhoP35gj0rBWpmqbbh2cj/FjjFszcJ+Q1A/5jGbve54w6h/2/R9I/a+zSbJqHtbf4zR5Hij7nmp5Y9l1H9o1P+7b/g4/r4R+0Gh0XPxYxtfSzJijzV7nUbXOfZ1jvk4arep+qBXoaMBRaJtfX0f7+u0jeeP+yXe1rmd+f/hOOd25tqpGleq/z/sNkqyp3atkOWBu7KyUj5f8y2nfT6fjhw50up5seeOPbdbt25Nnq+srFRhYfOZyG7duikUCqmmpkYFBQWtHufz+ToVuCPVR1T9t4cTPr8Zh0v27n1l695Pjp4DZO97shy9B8twWLcz3z1PvqvPD1Zb9vrp0rc4T9+9eLi+MqTl3xrY7bYmbzPBvTdMjL/vyNIZ4H+bMULjT+mttz74UuVVARmGIbfLJrfTrmAoqu17KnSkOqj3yw7p/bJDVg83Ka6fNVLnUkJjPadX8nol9ZDdblOez6twZW27fsBqEtiDfpmRkBQJS9GQzEhYioTjj8XfRlt+XJFG50RDLZ/b+LhGr6FI6JiBRevKDsPBJsHf0h8CMlTX/66GmOiA38juSu0aN8sDd2tM02zXDM+xx8RmKxs/3tJ1jp2Nbeu4zsw0GQ6nPANGHPtCzY+zO2W4PLK5PLI5PXXvOz2y5fnkKCiSvbBIjsJi2QuL62YOMsik0/rpzS2fq252ou6xhk/RaPJx7OFj/04bnm848NhzGmYvWj+ntddoGFfrr2sYUp7HoTyPU3luh7z173fLd2nQCT4NPbG7bLbj/1vw+bzHPSZdukqzwnPH5evccS13gzFNU7u+qNTm7Qf08aflKq/yq8Yflmmaipp1v7nIpjjh9Tj1lWG9VVSUb/VQ0IKOf30XH/+QFDJNU4pGZEZCMsN1Ab3u/bpQXve27o+OfT4akaLRumuYUcmMyoxGj3nflGlGpfrHzfrnmp5n1h0X//Wl2ejXldH6d+u/Tps9X3/9+vcbH2M2usax55mm2XD8Mdc1zfY91uzXos3/do/zd5/4ucd/7UTPTfxzOv6Q2jggZZ9Pchj21O9HYnng9vl8qqxsvpClqqqqzQWTjWeye/bsGX88dq3YzHdr16+srJTT6VReXt5xx9HSDHx7OQqLVXD5jxP+lXNUUjD2QURSRW3rB1tk1sRBmjWx6y/KPHKk7S3b7XabfD6vKts5A4bk6e51aOppJ2jqaSek7TVTfb/Ly5lfyyRd4+vbJsld98euuj9J+OWo0cr72axr3G+0l60g9RNllgfukpKSZiUbwWBQu3fvblbb3VisdrusrKxJMC8tLZVhGPHnS0pKdOjQIVVUVDSp4y4tLdXgwYNlq19AUlJSom3btjV7nR07dui8885L+POTpEgkqnCYL9hcwf3OLdzv3ML9zi3c79yQhkl0WV6bMHnyZG3cuFHl5eXxx9atW6dgMKgpU6a0et6AAQM0ZMgQrVq1qsnjK1eu1OjRo+NdT8455xzZbDatXr06fkx1dbVeeeWVJtefMmWKtm/f3iT8b968WXv37m1zHEAm+9vbu7X8tTL97e3dVg8FAICcZfkM95w5c/T0009r3rx5mjdvng4dOqR7771Xs2bNajJzvWDBAi1fvlxbt26NP3bLLbfotttu08CBA3X22Wfr5Zdf1htvvKEnn3wyfkyfPn00Z84c3X///XI4HOrXr5+eeuopSdI111wTP+6iiy7S8OHDdcstt+j2229XJBLRfffdp3Hjxuncc89Nw98EkHxr/7FH5VUBFRW6Ne1MdsQEAMAKlgdun8+npUuXauHChbr55pvl8Xg0c+bMeH/smGg0qkikaUu86dOny+/369FHH9WSJUs0aNAgPfjgg012mZSku+66S3l5eXrooYdUVVWl0047TUuXLo3vMilJDodDTzzxhO655x794Ac/kGEY8a3dac8FAACARBlmS+06kFTl5dXUgOUAh8OmoqL8jLrfd/zPG/EZ7gdummT1cLqUTLzfSB3ud27hfueW4uL8lLf0tbyGGwAAAOjKCNwAAABAChG4AQAAgBQicAMAAAApROAGAAAAUojADQAAAKSQ5X24AaTOoD6FKi50qzDPZfVQAADIWQRuoAu75eujrR4CAAA5j5ISAAAAIIUI3AAAAEAKEbgBAACAFKKGG+jCFj+/RVU1QRXmuajnBgDAIgRuoAv7dF+VyqsCKip0Wz0UAAByFiUlAAAAQAoRuAEAAIAUInADAAAAKUTgBgAAAFKIwA0AAACkEIEbAAAASCECNwAAAJBChmmaptWD6OoikajVQ0Ca2O22jLrfhyr9ikZN2WyGevg8Vg+ny8m0+43U4n7nFu537rDZDBmGkdLXIHADAAAAKURJCQAAAJBCBG4AAAAghQjcAAAAQAoRuAEAAIAUInADAAAAKUTgBgAAAFKIwA0AAACkEIEbAAAASCECNwAAAJBCBG4AAAAghQjcAAAAQAoRuAEAAIAUInCnwM6dO3XttddqzJgxmjhxohYuXCi/32/1sNBJq1ev1rx58zRlyhSNGTNGs2bN0h/+8AdFo9Emx61fv16XX365Ro0apQsvvFDPPPOMRSNGMlVXV2vy5MkaPny43n///SbPcc+7jueee06XXnqpRo0apYkTJ+qGG25o8jz3uut46aWXdOWVV2rs2LE6++yz9Z//+Z8qKytrdhz3PPt8+umn+q//+i9ddtllGjlypGbOnNnice29t0uWLNH555+vUaNGafbs2dq0aVOHx0TgTrLKykpdc801qq6u1uLFi/XDH/5QK1as0E9+8hOrh4ZO+u1vfyuXy6U777xTjz76qL761a/qnnvu0a9+9av4Mf/61780b948jRw5Uk888YSuuOIKLVy4UM8995yFI0cy/OY3v1EkEmn2OPe863j44Yd17733atasWVqyZInuvvtu9e7dO/4897rrePPNN/Wf//mfGjx4sB5++GH99Kc/1c6dO/Vv//ZvOnr0aPw47nl2+uSTT7R+/XoNGjRIJSUlLR7T3nu7ZMkSPfjgg/rWt76lxx9/XIMGDdL111+vjz/+uGODMpFUjz32mHnaaaeZhw4dij/217/+1Tz55JPNHTt2WDgydFbjexrzi1/8whw1apQZCARM0zTNa6+91vz617/e5Jif/OQn5qRJk8xIJJKWcSL5duzYYY4ZM8b84x//aJ588snmli1b4s9xz7uGHTt2mCP+//buLqTJNowD+D99fRh+zJplUSTkbKa2k2K1QWQ2LMrsoCIExdiBgUpakYQVhMsiT/RARSKTsA8ow5MihQ5q1YEdOJKoJJzCdAe2SfZMXdPV8x75vK3Z+05y9e7h/wMZXveFu+E/57Wv26ws6cWLFz/tYdbKce7cOSkvL0/69u2bXBsYGJB0Op307NkzucbMo9P32Zw9e1YqKCgI6QknW7/fL23dulVqaGiQewKBgLRv3z7p5MmTi9oTn+FeYs+fP4fJZIJGo5Fre/fuhSAIsNlsf3Bn9Ku+z3ReVlYW/H4/JicnMTs7i76+PhQUFAT1FBYWwu124927d79rq7TELl++jKKiImzYsCGozsyVo7u7G+vXr8eOHTsWXGfWyhIIBJCQkIBly5bJtaSkpKAeZh69YmL+fbwNN1u73Q6v1xv0lpTY2Fjs378fNpsNkiSFv6dF7J/C4HA4Ql6+EAQBaWlpcDgcf2hXFCn9/f1Yvnw5UlJS4HQ6MTc3h/T09KCejIwMAGD+Uaq3txeDg4OorKwMWWPmyjEwMACdTofW1laYTCZs3rwZJSUleP/+PQBmrTRHjhzB8PAwbt26BVEUMTY2hoaGBmi1WphMJgDMXMnCzXb+8sc+rVaL6elpjI+Ph32dHLiXmCiKUKvVIXW1Wo3Pnz//gR1RpLx58wbd3d04duwYYmNj5Xx/zH/+e+YffXw+H65evYrTp08jMTExZJ2ZK4fb7cbLly/x8OFD1NXVobm5GT6fDxaLBaIoMmuFMRgMaGlpQVNTEwwGA8xmM0ZHR9HR0QFBEADw91vJws1WFEUIggCVShXUl5ycDACYnJwM+zo5cP8mkiQFvXRF0c3tdqOqqgp6vR5lZWVBaz/LmflHn7a2NqSkpODQoUP/2sfMo58kSZiZmUFzczP27NmDvLw8tLW1YXp6Gvfu3ZP7mLUy2O121NTU4PDhw7h58yZaWlqgUqlQVlYW9KFJgJkrWTjZLtQz/1aSxdwGOHAvMbVaDVEUQ+per3fBZ74p+ni9XpSVlUGlUqGtrQ1xcXEA/nnE++OzHvO3B+YfXVwuFzo6OlBVVYWpqSmIooiZmRkAwMzMDKanp5m5giQnJ2PlypXYuHGjXEtNTUV6ejqGhoaYtcLU19fDaDTi/PnzMJlMyM/Px/Xr1zEyMiKfUsHMlSvcbNVqNfx+P/x+/4J98z8nHBy4l5hWqw15X9fs7CycTudPj6ah6OH3+1FeXg6Px4P29nasWLFCXktLS0NcXFzIOa5DQ0MAwPyjzNjYGObm5nD8+HEYDAYYDAb5TObS0lJYLBZmriA/y0qSJMTExDBrhXE4HNi0aVNQTaPRIDU1FU6nEwDv05Us3GznL3+c6xwOBxISErB69eqwr5MD9xLbuXMn+vr68OnTJ7n25MkTzM7OIjc39w/ujH5VIBBAdXU1BgcH0d7ejnXr1gWtC4IAo9GInp6eoPqjR4+watUqZGdn/87t0i/KyspCZ2dn0FdtbS0AoK6uDhcvXmTmCrJr1y54PB58+PBBro2Pj2N4eBiZmZnMWmHWrl2Lt2/fBtXcbjc+fvwo37czc+UKN9stW7YgKSkJjx8/lnu+fv2Knp4e5ObmLuotJX8tzdZpXlFREW7fvo2KigpUVFRgYmJC/kcKfDQc3axWK54+fYqamhp8+fIFr1+/ltcyMjKQmJiIyspKlJSU4MKFCygsLITdbkdXVxesVut/HlNE/y9qtRrbt29fcC0nJwc5OTkAwMwVIj8/Hzk5OThx4gSqq6shCAJaW1uh0Whw9OhRAMxaSYqLi3Hp0iVYrVaYzWaIoohr164hPj4eBw8elPuYeXTy+XzyUcwulwtTU1Po7e0FAGzbtg0ajSasbAVBQHl5OZqamqDRaJCdnY2uri6Mjo6isbFxUXtaJi3mEEEKy8jICOrr69Hf3w+VSoUDBw7gzJkzIZ9ypeiye/duuFyuBdc6Ozvl4cxms6GxsREOhwNr1qyBxWJBcXHx79wqRcirV69QWlqKBw8eQK/Xy3VmrgwTExO4cuUKbDYbAoEADAYDamtrg44EY9bKIEkS7t+/j7t378LpdCI+Ph56vR6nTp1CZmZmUC8zjz5jY2Mwm80Lri3277UkSbhx4wbu3LkDj8cDnU6HmpoaGI3GRe2JAzcRERERUQTx9RAiIiIiogjiwE1EREREFEEcuImIiIiIIogDNxERERFRBHHgJiIiIiKKIA7cREREREQRxIGbiIiIiCiCOHATEREREUUQB24iIiIiogjiwE1EREREFEEcuImIiIiIIogDNxERERFRBP0NiP5aIyVMwn8AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 800x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.set(rc={'figure.figsize':(8, 8)})\n",
    "sample_means.plot.density()\n",
    "Population.Ages.plot.density()\n",
    "plt.axvline(x = Population.Ages.mean(), linewidth = 2, linestyle='--')\n",
    "getPlot = plt.xlim((0, 100))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f4f89c81",
   "metadata": {},
   "source": [
    "+ **Exercise:** rerun the above cells changing the sample size $n$ and see how it affects the results. Try e.g. with larger sample sizes, such as $n = 150$ and with small samples for $n = 10$."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d18990d7",
   "metadata": {},
   "source": [
    "+ The above graphic is possibly **the most important graph in the whole course**. Note these three things:\n",
    "\n",
    "    + The *mean of the sample means* is equal to the population mean. Make sure you understand this!\n",
    "    + There are very few *really bad samples*. The height of the blue curve is almost equal to zero if you move away from its maximum in either direction. In particular, the probability of randomly choosing and being misled by one of those very bad samples is *extremely* low.\n",
    "    + The distribution of the sample means is a bell-shaped curve and it is only non zero in a narrow interval centered at the mean. The spread of the sample means is much smaller than the spread of the original population.\n",
    "    \n",
    "+ The blue bell-shaped curve contains a very precise and useful answer to our second question about the distribution of the sample means. And the important thing here is that the same kind of bell shaped answer appears for any choice of the initial population. This is the content of the **Central Limit Theorem**, one of the most important results in Statistics. But to make  these ideas precise we need the vocabulary of Probability. "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e8f618b0",
   "metadata": {},
   "source": [
    "+ **Exercise:** \n",
    "    + Use the following commands to generate a new population:\n",
    "    ```python\n",
    "    rng = np.random.default_rng(2022) # seed for reproducibility\n",
    "    N = 100000\n",
    "    x = np.concatenate((1.5 * rng.normal(loc = -2, size = N), rng.normal(loc = 0.5, size = N)))\n",
    "    Population2 = pd.DataFrame({'x':x})\n",
    "    ```\n",
    "    + Plot the density curve of this population.\n",
    "    + Repeat the above steps: take a large number (tens of thousands) of size-20 samples (with replacement) of this population. Compute the sample means for all those samples and use graphs to study the distribution of the sample mean. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "1251a65a",
   "metadata": {},
   "outputs": [],
   "source": [
    "# %load \"./exclude/S03-001.py\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a98bc083",
   "metadata": {},
   "source": [
    "# Basic Probability"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c86dc388",
   "metadata": {},
   "source": [
    "+ To understand or even state the Central Limit Theorem we need to learn a minimal amount of the language  of Probability Theory. \n",
    "\n",
    "+ And the first step as we enter this world of Probability is the realization that our intuition of probabilities is usually quite poor. We will begin using examples from simple gambling games such as cards, dice, etc. because historically this is also the context where Probability was born."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "26ad1c48",
   "metadata": {},
   "source": [
    "## The problems of the *Chevalier de Méré*\n",
    "\n",
    "+ [A. Gombaud, Chevalier de Méré](https://en.wikipedia.org/wiki/Antoine_Gombaud) was an amateur mathematician from the 17th century who became interested in understanding gambling and applying Mathematics to it. He himself made no major contributions to solving the problems he raised, but he managed to get the attention of well known mathematicians such as Pascal, Fermat and later Laplace. In particular he got them thinking about the solution of these two famous seminal problems. When playing dice, what is more likely?\n",
    "\n",
    "  + To get at least one six in four rolls of a single dice or\n",
    "  + to get at least a double six in 24 rolls of two dice.\n",
    "  \n",
    "+ The gamblers of that time reasoned that:\n",
    "\n",
    "  (a) The probability of rolling a six in a single dice roll is 1/6. Therefore, in four rolls the probability is\n",
    "  $$\\dfrac{1}{6} + \\dfrac{1}{6} + \\dfrac{1}{6} + \\dfrac{1}{6} = \\dfrac{4}{6} = \\dfrac{2}{3}$$\n",
    "  (b) The probability of rolling a double six in a two dice roll is 1/36 (because there are 36 diferent results). Therefore, in 24 rolls the probability is\n",
    "  $$\\dfrac{1}{36} + \\dfrac{1}{36} + \\cdots + \\dfrac{1}{36} = \\dfrac{24}{36} = \\dfrac{2}{3}$$\n",
    "  \n",
    "  Thus it would seem that both bets are similarly likely. These kind of reasoning was being used in gambling salons to establish the amount that the gamblers should win or lose in these games. Legend has it that Gombaud kept track of the results of these games for a long time and became aware that the results did not match the above reasoning. The probabilities of winning and losing seemed wrong to him.\n",
    "\n",
    "+ Instead of having you discover Probability by losing your money at gambling, let us use Python.\n",
    "![](https://media.giphy.com/media/3ohjUS2N88LGAjLypO/giphy.gif)  \n",
    "\n",
    "+ **Exercise:** Let $N = 100000$. \n",
    "\n",
    "  (a) Simulate $4\\cdot N$ results of the first de Méré games and obtain a table of the relative frequencies for win or lose in this game.  \n",
    "  (b) Do the same for the second de Méré game, but this time simulate $24\\cdot N$ results of this game.  \n",
    "  (c) Compare the relative frequencies of winning in (a) and (b) with our naive estimate of $2/3$.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "f362093e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# %load \"./exclude/S03-002a.py\"\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "c5591a90",
   "metadata": {},
   "outputs": [],
   "source": [
    "# %load \"./exclude/S03-002b.py\"\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "87eddf0a",
   "metadata": {},
   "source": [
    "## The Birthday Paradox\n",
    "\n",
    "+ This is another experiment that illustrates how bad our probabilistic intuition usually is. If we have a room (a large hall) with 367 or more people in it, then we are certain that there are two people in that room whose birthdays coincide. However if the number of people present is less then the probability of birthdays coincidence decreases. What is the smallest number of people in a room that leads to a coincidence probability bigger than 50%?\n",
    "\n",
    "+ Let us use Python to answer the question. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "00bcfd8a",
   "metadata": {},
   "outputs": [],
   "source": [
    "# %load \"./exclude/S03-003.py\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fb2e0e9e",
   "metadata": {},
   "source": [
    "## Laplace's Method \n",
    "\n",
    "+ This was historically the first result that made it possible to address the systematic computation of probabilities. But as we will see, its practical application is not always simple and it is also lacking from the theoretical perspective.\n",
    "\n",
    "+ We need some language to state the rule:\n",
    "\n",
    "  (a) We will consider a random experiment with $n$ **elementary possible results** (two of them can not simultaneously occur)     $$a_1, a_2, \\ldots, a_n$$ \n",
    "  which *must occur with the same probability*. That means, in an informal approach, that their relative frequencies are the same when the experiment is conducted a very large number of times. For example, when throwing a honest dice, the set of elementary possible results with the same probability is the set of numbers from 1 to 6.  \n",
    "  (b) A **random event** is any subset $A$ of the set of elementary results. In the dice example, $A$ could be \"obtaining an even number\", which means $A = \\{2, 4, 6\\}$.\n",
    "\n",
    "+ **Laplace's Method:** To compute the probability of $A$ using this method we form a fraction. The numerator is the number of events that belong to $A$ (or where $A$ occurs) and the denominator is the total number $n$ of elementary events.\n",
    "$$\n",
    "\\quad\\\\\n",
    "P(A) = \\dfrac{\\text{number of events that belong to }A}{n} = \\dfrac{\\#A}{n}\n",
    "\\quad\\\\\n",
    "$$\n",
    "In the example of the dice this implies $P(A) = P(\\text{even result}) = \\dfrac{3}{6} = \\dfrac{1}{2}$.\n",
    "\n",
    "## Applying the Laplace's Method\n",
    "\n",
    "+ Using Laplace's Method and Combinatorics (don't panic) to count the number of events in $A$ \n",
    "  ![](https://media.giphy.com/media/l0XtbC8EniiuwAEOQn/giphy-downsized-large.gif)  \n",
    "  it is possible to answer questions such as:\n",
    "    + What is the probability that the sum of the results when throwing two dice equals 7?\n",
    "    + What is the probability of getting exactly one six when throwing three dice?\n",
    "    + If a box contains 20 cards with the numbers 1 to 20 printed on them and we choose two cards at random: what is the probability that those cards are precisely the cards with numbers 1 and 20? Does the probability depend on whether you pull the two cards at once or one after the other (without replacement in the second case)? And what happens if there is replacement?\n",
    "\n",
    "+ Problems like these illustrate the fact that in order to make an effective use of Laplace's method you need to get *good at counting*. And believe me, counting is one of the hardest things to do in Mathematics.\n",
    "\n",
    "+ It is also important to understand that the Laplace's Method can not be considered a *definition* of Probability. For starters, it would be a circular definition. And more importantly it fails to provide the answer to situations where the intuition leads to a clear solution, such as the following:\n",
    "+ Pick a real number $x$ in the interval $[0, 1]$. What is the probability that $1/3 \\leq x \\leq 2/3$? What is your intuition telling you (shouting, actually)? But now try to apply our method. How many possible values of $x$ do we have? An infinite number. And how many of those belong to $[0, 1]$? Again, an infinite number. Thus we are left with $\\infty / \\infty$, which in this context is useless. However our intuition is clear, and we can use Python to check that it is good.\n",
    "\n",
    "+ **Exercise:** use NumPy to select tens or hundreds of thousands of points $x$ at random in the $[0, 1]$ interval. Now find the relative frequency of the event $1/3 \\leq x \\leq 2/3$.  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "c3daa038",
   "metadata": {},
   "outputs": [],
   "source": [
    "# %load \"./exclude/S03-004.py\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b15ca359",
   "metadata": {},
   "source": [
    "+ Laplace's Method was not designed to deal with continuous variables and phenomena. Thus, we need a more general definition of Probability."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9097e1d7",
   "metadata": {},
   "source": [
    "## Axiomatic Theory of Probability \n",
    "\n",
    "+ The theoretical details quickly become involved. But keeping things informal but simple there are three basic ingredients in our vision of Probability:  \n",
    "\n",
    "  (a) First we need a *sample space* $\\Omega$ which is the set of all possible results of an experiment. You may also think that $\\Omega$ is the *population of interest* in the same sense that we have been using that term until now.   \n",
    "    \n",
    "  (b) A *random event* is  (almost) any subset of $\\Omega$ (we exclude those subsets which are *too weird* in a mathematically precise sense).   \n",
    "    \n",
    "  (c) A *probability function* that we denote with the letter $P$. this function must assign a number $P(A)$ to every random event $A$ in $\\Omega$. And to be a probability the function $P$ should have these three properties (the *axioms of probability*)\n",
    "    \n",
    "    1. $P(\\Omega) = 1$\n",
    "    2. For every random event $A$, we have $0\\leq P(A)\\leq 1$.\n",
    "    3. If $A_1$ and $A_2$ are two random events then \n",
    "    $$P(A_1\\cup A_2) = P(A_1) + P(A_2) - P(A_1 \\cap A_2)$$\n",
    "\n",
    "+ Here $A_1\\cup A_2$ is the *union* of the random events while $A_1 \\cap A_2$ is their *intersection*, as illustrated by the Venn diagram below (exchange probabilities with areas and imagine that the area of the rectangle is 1).\n",
    "![](fig/03-fig02-DiagramaVennInterseccionSucesos.png)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a9e9728a",
   "metadata": {},
   "source": [
    "## Further Properties of Probability \n",
    "\n",
    "+ In the next session we will see concrete and useful examples of how to construct those probability functions, both for discrete and continuous problems.\n",
    "\n",
    "+ The probability of the *empty or null event* $\\emptyset$ is $0$; that is $P(\\emptyset)=0.$  \n",
    "+ Two events $A_1$ y $A_2$ are said to be *disjoint or mutually exclusive* if they have an empty intersection; thus they can not occur simultaneously. If that is the case:\n",
    "$$P(A_1\\cup A_2) = P(A_1) + P(A_2)$$\n",
    "+  If $A$ is a random event, the *complementary event* $A^c$ id defined as $A$ ``does not occur''. And we always have:\n",
    "$$P(A^c)=1-P(A)$$\n",
    "\n",
    "+ If $A\\subset B$ (that is, $A$ is a subset of $B$) then\n",
    "$$P(A)\\leq P(B)$$ \n",
    "\n",
    "+ **Exercise:** Find the probability that a four digit number (like a pin) has some repeated digit (two or more digits are equal). Use Python to check your result."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "0137c2cd",
   "metadata": {},
   "outputs": [],
   "source": [
    "# %load \"./exclude/S03-005.py\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b11ca757",
   "metadata": {},
   "source": [
    "# Conditional Probability and Independence\n",
    "\n",
    "## Conditional Probability\n",
    "\n",
    "+ The idea of *conditional probability* tries to capture the fact that *additional information* may alter our estimation of the probability $P(A)$ of an event.  \n",
    "\n",
    "+ *Example.* What is the probability of getting an even number as the result of a single roll of a dice? The answer is clearly 0.5. But what if I told you, without giving out the result,  that the outcome is a number greater than 3? Would you still think that the probability is 0.5?\n",
    "\n",
    "+ In situations like this we want to update the probability assigned to $A$ *using the knowledge that  another event $B$ has certainly occurred*. This updated probability is called the **probability of $A$ conditioned on $B$ (or given $B$)** and it is denoted by $P(A\\,|\\,B)$. The definition, that can be justified through Laplace's method is this:\n",
    "$$P(A\\,|\\,B) = \\dfrac{P(A \\cap B)}{P(B)}$$\n",
    "\n",
    "+ **Example (continued):** In the example of a single dice roll:\n",
    "$$P(\\text{even result}|\\text{result > 3}) = \n",
    "\\dfrac{P(\\text{even result and also result > 3})}{P(\\text{result > 3})} = \n",
    "\\dfrac{2/6}{3/6} =\\dfrac{2}{3} \n",
    "$$\n",
    "\n",
    "+ **Example:** The [Monty Hall Problem (link in Spanish)](http://docentes.educacion.navarra.es/msadaall/geogebra/figuras/azar_monty.htm) is a well known example of how additional information alters our estimation of probabilities, and it is also used to illustrate that probabilistic intuition tends to be weak in most of us ([see also](https://www.geogebra.org/m/wa5qtjpp))."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "071c2195",
   "metadata": {},
   "source": [
    "## Independence\n",
    "\n",
    "\n",
    "+ Random events $A$ and $B$ are **independent** if knowing for certain that $B$ has occurred does not affect our estimation of the probability of $A$ happening. That is, independence means that $P(A\\,|\\,B) = P(A)$. There is another expression for this that makes the symmetry of the definition apparent:\n",
    "$$\n",
    "A\\text{ and }B\\text{ are independent means }P(A\\cap B) = P(A)\\,P(B)\n",
    "$$\n",
    "\n",
    "+ **Make sure that you see the difference between \"independent\" and \"mutually exclusive\"** Mutually exclusive events can never be independent (for Spanish speakers, remember that *incompatible* is mutually exclusive). \n",
    "\n",
    "+ This notion of independence is a mathematical abstraction. Real world phenomena almost always fail to be independent in this strict mathematical sense. Later in the course we will discuss how to deal with the problem of independence in the practice. "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a96ea664",
   "metadata": {},
   "source": [
    "# Bayes Rule"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b3df4b9a",
   "metadata": {},
   "source": [
    "## Total Probability.\n",
    "\n",
    "+ This result can be used to obtain the probability of an event that can occur due to one of several mutually exclusive mechanisms or pathways, as illustrated in the following example.\n",
    "\n",
    "+ **Example:** a factory has three different machines producing the same component of a product, under these conditions:\n",
    "  \n",
    "  (a) Each component comes from precisely one of the machines.\n",
    "  (b) Each one of the machines outputs a known and fixed fraction of the total component production.\n",
    "  (c) Each one of the machines has a known rate of defective components.\n",
    " \n",
    " If all of this information is known, what is the total rate of defective components for the factory as a whole?\n",
    " ![](./fig/03-fig03-ProbabilidadTotal.png)\n",
    "\n",
    "\n",
    "+ Let $A$ be the event \"the component is defective\". We are trying to obtain $P(A)$. And let $M_1, M_2, M_3$ be the events \"the component comes from the machine $M_i$ for $i= 1, 2, 3$ respectively\".\n",
    "\n",
    "+ We assume (from (b) above) that the probabilities $P(M_1), P(M_2), P(M_3)$ are known. Similarly (from (c)) we assume that the *conditional probabilities* $P(A|M_1), P(A|M_2), P(A|M_3)$ are known as well.\n",
    "\n",
    "+ In a situation such as this one the **Total Probability Theorem** says that:\n",
    "$$\n",
    "\\quad\\\\\n",
    "P(A) = P(A\\,|\\,M_1) P(M_1) + P(A\\,|\\,M_2) P(M_2) + P(A\\,|\\,M_3) P(M_3)\n",
    "\\quad\\\\\n",
    "$$\n",
    "Note that the sum contains one term for each machine / pathway."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "110821bf",
   "metadata": {},
   "source": [
    "## Bayes Theorem\n",
    "\n",
    "+ This theorem applies to situations just like the one we have seen for the Total Probability, but its mission is to answer the *reversed question*:  \n",
    "\n",
    "  Knowing that the component is defective, what is the probability that is comes e.g. from machine $M_1$?\n",
    "  \n",
    "+ The goal now is therefore to obtain $P(M_1 | A)$, and Bayes Theorem provides the answer:  \n",
    "$$\n",
    "\\quad\\\\\n",
    "P(M_1\\,|\\, A) = \n",
    "\\dfrac{P(A\\,|\\, M_1) P(M_1)}{P(A\\,|\\, M_1) P(M_1) + P(A\\,|\\, M_2) P(M_2)+ P(A\\,|\\, M_3) P(M_3)} =\n",
    "\\dfrac{P(A\\,|\\, M_1) P(M_1)}{P(A)}\n",
    "\\quad\\\\\n",
    "$$\n",
    "Please note the last expression: thanks to *Total Probability*, the denominator is $P(A)$."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cb8822a4",
   "metadata": {},
   "source": [
    "+ **Example / Exercise:** the hardest part when using Bayes theorem tends to be retrieving the required information from the data we are provided with.  \n",
    "Suppose that a hospital has to operating theaters or rooms. In the first one $OR_1$ there have been incidents in 20% of the procedures, while in the second one $OR_2$ the incident rate is just 4%. Assume that the number of operations is the same in both operation rooms. When evaluating the hospital performance we choose at random the report describing one procedure and discover that there was an incident during that procedure. What is the probability that the report corresponds to a procedure conducted in $OR_1$?"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "72028796",
   "metadata": {},
   "source": [
    "+ **Example / Exercise:** we will be using a [data set called *spam*](https://raw.githubusercontent.com/mbdfmad/fmad2223/main/data/spam.csv), a classical example containing information about a sample of email messages. The table contains information about thousands of messages. Each row shows (corresponding to a message) the relative frequency of appearance in the body of that  message of the words from a certain set. That set of words appears as header of the first 57 columns in this table (that is, there is a column for each word).  The last column classifies the message as spam / no spam. \n",
    "\n",
    "  Use Python to read the data and answer this questions:\n",
    "\n",
    "  + What is the probability that a message picked at random is spam?\n",
    "  + What is the probability that a message picked at random contains the word *order*?\n",
    "  + Knowing that a message is spam, what is the probability that it contains the word *order*?\n",
    "  + Finally, using Bayes Theorem, knowing that a message contains the word *order*, what is the probability that is indeed spam?\n",
    "  \n",
    "  This is a very simple approach to the problem of detecting spam. But combined with the *Naive Bayes* method of Machine Learning, methods like this one were the basis of the first generation of antispam filters. \n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5fbd6f1c",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.17"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}