{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Inference: Log priors\n", "\n", "This example notebook illustrates some of the functionality that is available for `LogPrior` objects that are currently available within PINTS." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from __future__ import print_function\n", "import pints\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The uniform prior, $U\\sim(a, b)$, here with $a=-10$ and $b=15$. When this function is called, its log density is returned." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "U(0|a=-10, b=15) = -3.2188758248682006\n" ] } ], "source": [ "uniform_log_prior = pints.UniformLogPrior(-10, 15)\n", "\n", "print('U(0|a=-10, b=15) = ' + str(uniform_log_prior([0])))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To plot the density, we take the exponential of its log density." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "values = np.linspace(-20, 20, 1000)\n", "log_prob = [uniform_log_prior([x]) for x in values]\n", "prob = np.exp(log_prob)\n", "\n", "plt.figure(figsize=(10,4))\n", "plt.xlabel('theta')\n", "plt.ylabel('Density')\n", "plt.plot(values, prob)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To specify a multidimensional uniform prior, use the same function. Here we specify, $\\theta_1\\sim U(2, 4)$ and $\\theta_2\\sim U(-7,-5)$." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "uniform_log_prior = pints.UniformLogPrior([2, -7], [4, -5])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot $p(\\theta_2|\\theta_1 = 3)$." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "values = np.linspace(-10, -4, 1000)\n", "log_prob = [uniform_log_prior([3, x]) for x in values]\n", "prob = np.exp(log_prob)\n", "\n", "plt.figure(figsize=(10,4))\n", "plt.xlabel('theta[2]')\n", "plt.ylabel('Density')\n", "plt.plot(values, prob)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you have a prior constrained to lie $\\in[0,1]$, you can use a beta prior." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "beta_log_prior1 = pints.BetaLogPrior(1, 1)\n", "beta_log_prior2 = pints.BetaLogPrior(5, 3)\n", "beta_log_prior3 = pints.BetaLogPrior(3, 5)\n", "beta_log_prior4 = pints.BetaLogPrior(10, 10)\n", "\n", "values = np.linspace(0, 1, 1000)\n", "prob1 = np.exp([beta_log_prior1([x]) for x in values])\n", "prob2 = np.exp([beta_log_prior2([x]) for x in values])\n", "prob3 = np.exp([beta_log_prior3([x]) for x in values])\n", "prob4 = np.exp([beta_log_prior4([x]) for x in values])\n", "\n", "plt.figure(figsize=(10,4))\n", "plt.xlabel('theta')\n", "plt.ylabel('Density')\n", "plt.plot(values, prob1)\n", "plt.plot(values, prob2)\n", "plt.plot(values, prob3)\n", "plt.plot(values, prob4)\n", "plt.legend(['beta(1, 1)', 'beta(5, 3)', 'beta(3, 5)', 'beta(10, 10)'])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Specifying a value outside the support of the distribution returns $-\\infty$ for the log density." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "beta(-0.5|a=1, b=1) = -inf\n" ] } ], "source": [ "print('beta(-0.5|a=1, b=1) = ' + str(beta_log_prior1([-0.5])))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each prior has a `mean` function that allows you to quickly check what parameterisation is being used." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mean = 0.375\n" ] } ], "source": [ "print('mean = ' + str(beta_log_prior3.mean()))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each prior also has a `sample` function which allows generation of independent samples from each distribution. Using this we can sample from a Student-t density, with input dimensions `(location, degrees of freedom, scale)`." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "n = 10000\n", "student_t_log_prior = pints.StudentTLogPrior(10, 8, 5)\n", "samples = student_t_log_prior.sample(n)\n", "\n", "plt.hist(samples, 20)\n", "plt.xlabel('theta')\n", "plt.ylabel('Frequency')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For models with multiple parameters, we can specify different distributions for each dimension using `ComposedLogPrior`." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-13.25607355949521" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "log_prior1 = pints.GaussianLogPrior(6, 3)\n", "log_prior2 = pints.InverseGammaLogPrior(5, 5)\n", "log_prior3 = pints.LogNormalLogPrior(-1, 1)\n", "composed_log_prior = pints.ComposedLogPrior(log_prior1, log_prior2, log_prior3)\n", "\n", "# calling\n", "composed_log_prior([-3, 1, 6])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Functions like `sample` and `mean` also work for `ComposedLogPrior` objects." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mean = [6.0, 1.25, 0.6065306597126334]\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEKCAYAAAAIO8L1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3Xl4FGW69/HvHQIGAVkDMgRZRkdEAiQ2AiIKRIcoCugBBgc1IOqogIgLLqMzHg++A+oIoo47soyOKMgqo7K6MAIHQgirCogSRAwoQUVE4Hn/6EqfQIqkIel0B36f68pF1VNPVd9dSfdNPVV1lznnEBEROVJctAMQEZHYpAQhIiK+lCBERMSXEoSIiPhSghAREV9KECIi4ksJQkREfClBiIiILyUIERHxFR/tAEqiTp06rnHjxtEOQ0SkXFmxYsVO51xicf3KdYJo3Lgxy5cvj3YYIiLlipl9GU4/DTGJiIgvJQgREfGlBCEiIr7K9TkIkZPVr7/+Sk5ODvv27Yt2KBLDEhISSEpKomLFise1vhKESDmUk5NDtWrVaNy4MWYW7XAkBjnn2LVrFzk5OTRp0uS4tqEhJpFyaN++fdSuXVvJQY7KzKhdu3aJjjKVIETKKSUHKU5J/0aUIERExJfOQYicAEbP/axUtzfs0t8V22fHjh0MGzaMJUuWULNmTSpVqsTw4cO56qqrSjWWIy1fvpyJEycyduzY41rfOUdaWhrTp0/ntNNOY/fu3dx4442sWbMGM2PcuHG0b9/+qOvPmDGDhx56iLi4OOLj4xkzZgwXXnghubm5XHfddbz77rvH+9ZijhLESe4fWf8o1e3d1vq2Ut2exCbnHD179iQjI4PXX38dgC+//JKZM2dG/LUDgQCBQOC4158zZw6tWrXitNNOA2Do0KGkp6czZcoU9u/fz969e4tcPy0tje7du2NmZGdn06dPHzZs2EBiYiL169dn8eLFdOjQ4bjjiyUaYhKRY7ZgwQIqVarELbfcEmpr1KgRQ4YMAWDLli107NiR1NRUUlNT+c9//gPAokWLuOKKK0LrDB48mPHjxwNw33330bx5c1q2bMndd98NwFtvvUWLFi1o1aoVF110UaFtLFu2jPbt25OSksIFF1zAp59+CsD48eO5+uqrSU9P56yzzmL48OGh13zttdfo0aMHAHl5eXz44YcMHDgQgEqVKlGjRo0i33vVqlVDY/s//fTTYeP8PXv25LXXXjuWXRnTdAQhIsds7dq1pKamHnV53bp1mTt3LgkJCXz++edcc801RdZN27VrF9OmTWPDhg2YGbt37wbgkUce4b333qNBgwahtoKaNWvGRx99RHx8PPPmzeOBBx5g6tSpAGRlZbFy5UpOOeUUzj77bIYMGULDhg1ZvHgxL7zwAgBffPEFiYmJDBgwgFWrVnHeeefx1FNPUaVKlSLf/7Rp07j//vv59ttveeedd0LtgUCABx98sMh1yxMdQYhIiQ0aNIhWrVrRpk0bIHgj30033URycjK9e/dm3bp1Ra5fvXp1EhISGDhwIG+//TannnoqAB06dKB///689NJLHDx4sNB6eXl59O7dmxYtWjBs2DDWrl0bWpaWlhbabvPmzfnyy2B9uu+++45q1aoBcODAATIzM7n11ltZuXIlVapUYeTIkcW+36uuuooNGzYwffp0HnrooVB73bp1+frrr4tdv7xQghCRY3buueeSmZkZmn/22WeZP38+ubm5AIwePZp69eqxatUqli9fzv79+wGIj4/n0KFDofXyr9GPj49n2bJl9OrVi9mzZ5Oeng7A888/z4gRI9i6dSvnnXceu3btOiyOhx56iM6dO7NmzRpmzZp12DX/p5xySmi6QoUKHDhwoFAMSUlJJCUl0bZtWwB69ep12PsqzkUXXcTmzZvZuXNn6P1Urlw57PVjnRKEiByzLl26sG/fPp577rlQW8GTu3l5edSvX5+4uDgmTZoU+t9/o0aNWLduHb/88gu7d+9m/vz5APz444/k5eVx+eWXM3r0aFatWgXApk2baNu2LY888giJiYls3br1sDjy8vJo0KABQOhcRnHOPvtsNm/eDMDpp59Ow4YNQ+cu5s+fT/PmzQF45plneOaZZwqtv3HjRpxzAGRmZvLLL79Qu3ZtAD777DNatGgRVhzlgc5BiJwAwrkstTSZGdOnT2fYsGE89thjJCYmUqVKFUaNGgXAbbfdxn/9138xceJE0tPTQ2P6DRs2pE+fPrRo0YImTZqQkpICwA8//ECPHj3Yt28fzjmefPJJAO655x4+//zz0KWprVq14oMPPgjFMXz4cDIyMhgxYgTdunULK/Zu3bqxaNEizjzzTACefvpp+vXrx/79+2natCmvvvoq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cXGce+65oZLdb775JqmpqaSkpLB27VrWrVtXKJbvvvuOatWqlWAvhC9SZbpLixKEiMSEBx54gFGjRhFuhZ2CZcGh+FLcX3zxBU888QTz588nOzubbt26FSrBDRAfH8+hQ4cAePbZZ2ndujWtW7eOyBd5pMp0lxYlCBEpNRdccAFvvPEGEBzL79ixIxAs8T116lSA0PIjNWvWjObNmzNr1iwAqlevTs2aNUNDMJMmTQodTRyPPXv2UKVKFapXr86OHTv497//7dvv7LPPZvPmzUCwhHj+cyd+85vfFLn9tLQ0tm3bdkwxRapMd2nRZa4iJ4BoVNHdu3fvYecT7rzzTp5++mkGDBjA448/TmJiIq+++ioAY8aM4dprr+XRRx8lPT2d6tWr+27zz3/+MykpKaH5CRMmcMstt7B3716aNm0a2t7xaNWqFSkpKTRr1oyGDRvSoUMH337dunVj0aJFnHnmmYWWffPNNwQCAfbs2UNcXFzoMatVq1Zl48aN1KpVq9A6Y8eO5bHHHuObb76hZcuWXH755bz88stAsEz33/72t+N+T5EWsXLfZUHlvktO5b7Lp/JW7nvv3r1UrlwZM+ONN97gX//6FzNmzCh+xSjYvn07119/PXPnzg17nTVr1jBu3LjDnq1dnB07dvDHP/6R+fPnH0+YYStJuW8dQYhIxK1YsYLBgwfjnKNGjRqMGzcu2iEdVf369bnpppvYs2eP770Qflq0aHFMyQHgq6++4u9///vxhFhmlCBEJOI6duzIqlWroh1G2Pr06RPx12jTpk3EX6OkdJJapJwqz8PDUjZK+jeiBCFSDiUkJLBr1y4lCTkq5xy7du0iISHhuLehISaRcigpKYmcnBxyc3OjHYrEsISEBN8718OlBCFSDlWsWJEmTZpEOww5wWmISUREfClBiIiILyUIERHxpQQhIiK+lCBERMSXEoSIiPhSghAREV9KECIi4ksJQkREfClBiIiILyUIERHxpQQhIiK+lCBERMSXEoSIiPhSghAREV9KECIi4ksJQkREfClBiIiILyUIERHxpQQhIiK+IpogzKyGmU0xsw1mtt7M2ptZLTOba2afe//W9PqamY01s41mlm1mqZGMTUREihbpI4ingHedc82AVsB64D5gvnPuLGC+Nw9wGXCW93Mz8FyEYxMRkSJELEGYWXXgIuAVAOfcfufc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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "print('mean = ' + str(composed_log_prior.mean()))\n", "\n", "n = 10\n", "samples = composed_log_prior.sample(1000)\n", "plt.hist(samples[:, 0], alpha=0.5)\n", "plt.hist(samples[:, 1], alpha=0.5)\n", "plt.hist(samples[:, 2], alpha=0.5)\n", "plt.legend(['Gaussian(6, 3)', 'InverseGamma(5, 5)', 'LogNormal(-1, 1)'])\n", "plt.xlabel('theta')\n", "plt.ylabel('Frequency')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We also have multivariate priors in PINTS. For example, the multivariate Gaussian." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEKCAYAAAAfGVI8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzsnXd4VNXWh98zmcmk90Z6AgkQeg8gHaQqTQSsWLH33q6KDSvWq6KigtJEadJ77wESIAkhvfc2yfT9/RH08ypIzmRCy3mfJ08gc/Y6O5Nk/85eexVJCIGCgoKCQstFdaknoKCgoKBwaVGEQEFBQaGFowiBgoKCQgtHEQIFBQWFFo4iBAoKCgotHEUIFBQUFFo4ihAoKCgotHAUIVBQUFBo4ShCoKCgoNDCUV/qCTQGPz8/ERkZeamnoaCgoHBFcfjw4VIhhP+FrrsihCAyMpJDhw5d6mkoKCgoXFFIkpTVmOsU15CCgoJCC0cRAgUFBYUWjiIECgoKCi0cRQgUFBQUWjiKECgoKCi0cBQhUFBQUGjhKEKgoKCg0MJRhEBBQUGhhaMIgYKCgkILRxECBQUFhRaOIgQKCgoKLRxFCBQUFBRaOIoQKCgoKLRwFCFQUFBQaOE0mxBIkvSdJEnFkiQlneO1JyVJEpIk+TXX/RUUFBQUGkdz7gi+B0b9/YuSJIUB1wLZzXhvBQUFBYVG0mxCIITYAZSf46WPgGcA0Vz3VlBQUFBoPBf1jECSpPFAnhDi2MW8r4KCgoLC+blorSolSXIBXqDBLdSY6+8F7gUIDw9vxpkpKCgotGwu5o6gNRAFHJMkKRMIBY5IkhR0rouFEF8LIXoKIXr6+1+w97KCgoKCgo1ctB2BECIRCPjj/2fFoKcQovRizUFBQUFB4Z80Z/joQmAv0FaSpFxJku5qrnspKCgoKNhOs+0IhBDTL/B6ZHPdW0FBQUGh8SiZxQoKCgotHEUIFBQUFFo4ihAoKCgotHAUIVBQUFBo4ShCoKCgoNDCUYRAQUFBoYWjCIGCgoJCC+eiZRYrKCicH0O9gZryWmor66it1KGrqkOvM6DX6THUGTEZTA0fRjMWswVhFQjRUMDXQe2AWqPGQa3C0dkRJxctWhctTq5aXD1dcPV0wc3LFQ8/d1zcnZEk6RJ/twqXG4oQKCg0I2aTmZKcMoqySijKKqEkp4yy/HLKCiooL6igsriaqpJq9HUGWXZVKgnOLuhWi7XR4zRaDV4BHvgEeeEf5odfiA8BYX4ERQcS3Lrhw9nNWdZcFK58FCFQUGgiQggqiirJSckn+2Qu2afyyD2dT97pQoqySv6xUHv4uuMb7I1PK29C2wbj5eeBp78n7j5uuHu74urliouHM86uWpxcnXBy1aLRatBo1agd1Tg4OPzj/hazBbPJglFvxFhvRF9nRF+rR1dVh66qjpqKWqpLa6gsrqKipIrygkpykvM4suk4ddX1/2PPP9SXiA6hRMSFEdUpnJju0YS3D0GtUZaLqxXlJ6ugIANDvYH049mkHUknIzGbjKRsMpNyqK3U/XmNs5sTobGtiO0ZzZBp/WkVHUhAhD+BEX74h/ri6ORo1zlJkoRao0atUePkopU9vrZSR0F6EflnishPKyQ7OZfMpByOb1+PUW8CGnYSUZ3Cade7DR36taV931iCIgMUN9NVgvSHn/FypmfPnuLQoUOXehoKLQyr1UrWyVxO7U3l1L5Ukg+mkX0q788nfFdPF6I6hRPZIYyIuDBC2wYTEReKX4jPVbFAWiwWclMLOJOQQVpCBqePpJN8IA29rsGN5R/qS7fhneg+rDPdhnXEJ8j7Es9Y4e9IknRYCNHzgtcpQqCg0EB9bT0n9qRyck8KJ/c1LP5/uE08fN1p16cNMd2jz35E4R/md1Us+HKwmC1kJGVzck8qR7clcXRLEjXltQDE9mxNnzHd6TOuB7E9olvce3M5ogiBgsIFMBlNnNidQsLmRI5uO0HKgTQsZguSJBHVKZy4vrHE9W1wg4S0CVIWtnNgtVo5czSTg+uOsn/NEU7tTUUIQWCEP4Nu7Mfgqf1o0y1Kee8uEYoQKCj8DSEEuan5HFx3lCObjnNs2wn0OgMqBxVte7Wmy6AOdB7cgbi+sbh6uFzq6V6RVJZUcWBNAtuX7uHwhuNYzBbC2oUwcsYQRtw2UHEfXWQUIVBQoCF889i2E+xdeYgDaxMoSC8CIDS2Fd2GdabnyC50GdxBWfibgeqyGnYu28emBTtI2pWMykFF7zHdmPDQaLoP76zsEi4CihAotFjqdXoOrk1gz8qD7F99hNpKHU4uWroO7Ujv0d3oNbobQZEBFzakYDdyUvJYP28r67/fRmVxFZEdwpj46FiG3zLA7lFUCv+PIgQKLYp6nZ69Kw+xc9k+Dq5NwFBvxN3Hjb7X96T/hN70GNEZrbP80EoF+2I0mNi2aDe/fvw7Z45m4hfiw7TnJjL6rqGKIDQDihAoXPWYTWYObzzO1oW72P3bAfR1BnxaeXPNxN4MmBxPpwHtcVA7XNiQwkVHCEHC5kTmv76UpF3J+IX4cNMLkxhzz3DlZ2ZHFCFQuCoRQpCWkMHGH7ezdeEuKkuqcfd2ZeANfRl68wA6XtMOlUqppXilIITg6NYkfnx1CUm7komIC2XmB7fTa2TXSz21qwJFCBSuKmoqatn8007WzN1ERmI2Gkc18df3ZPgtA+k1qisaR82lnqJCExBCsHfVIb566kfy0wrpPaYb9390B6ExrS711K5oFCFQuOIRQnBybyqrvlzPzl/2YdSbiOkRzeg7hzJoaj88fNwv9RQbjcVipbxCR3lZLZVVdVRV1VFVVY9OZ6BWZ0CnM6DXmzAazQ0fJjPC2vAeCMBBJeGgVqF2cMDR0QFnZ8c/Pzw9nPE4++Hj44q/vzu+Pm6or0AXi9FgYsVn61gwaylmo5k73pjOxEfH/KO+kkLjUIRA4YrFUG9g68LdrPh8HWkJGbh4ODPs5oGMvmsoMd2jL/X0zktVdT052WXk5JaRX1BFYWElBQWVFJfUUF5ei9X6z781SQIXZy2urlqcnTVoHNU4OqrRqFWoVCokqaGWkMVqxWK2YjZbMRhN6PUm6utN1NUZMBjM57Tr6+tOSLAXISE+hIZ4ExnpR3RUAP7+7pd96GZZQQUf3/81e1ceIq5vLE/Pe5DQ2OBLPa0rDkUIFK44SnLLWPnFen7/eiM15bVEdgxj/IOjGXbzNZdVaeT6eiNpZ4pITy8hI7OEjIwSsrLLqP5LFU+VSiIwwIOgIC8CAz3w83PHz9cdX183vLxc8PJ0wdPTGRcXbUNJ6SZgMJiorq6nsqqO8nIdJaU1lJbUUFRURV5+JXl55VRU1v15vZubljZtAmnXNpj27VoR1z4EX1+3Js2hORBCsPmnnXzx6HeYDGYe+2omw24ecKmndUWhCIHCFUNaQgaL31vBjqV7EVZBvwm9mPjwGDoPirvkT64Wi5WMjBJOnMzj5Kk8UlMLyc4p448/G1dXLVGR/kRG+hEa4k14uC9hYb4EBnhcVq6Z2lo9mZmlnEkvJj29mNTThaSdKcZytoBeWJgP3btG0q1bBN27R+Dm6nSJZ/z/lOaX89b0OSTuPMX1D4xk5ge346hVzoQagyIECpc1QggStiSx+N3lHNl4HBd3Z0bfNZTxD4+mVVTgJZuX0WjmVHI+xxNzOH48h5On8qmvNwLg4+NK29hWxMYGERsTROvoK8PNcj6MRjOn04pIOpFLQkIWxxNz0OtNODio6NI5jH79YrimXywBAR6XeqqYTWa+e+Fnln6wivbxMby2/Fm8Azwv9bQuexQhULgsEUJwcN1R5r++lOT9p/EO9GTSo2MZd9+1uHm5XpL5pKcXc/BwJocPZ3A8MQeTyYIkQVSUP506hNGxYwgd4kIIDPS8Yhf9xmAyWTiVnM++/WfYs+c02TllSBJ06RzOiOEdGDCg7SXfKexcto/Zt32Kb7A3b655UYkqugCKEChcVgghOLA2gQWvLyX5QBoB4X5Me24iI2cMvugZpfX1Ro4kZLJv/xn27T9DWVlDGeXISD96dI+ka5cIOnUMxcPj8jmXuBRk55SxfXsyGzclkZtXgaOjmsGD2jFpQk9iY4Mu2bxO7T/Ny9e9DcCba16kbc/Wl2wulzuKEChcNhzbdoLvXlrIyT0pBEX6M/2FyYy4beBFjf2vqdGzZ+9pdu5K4eChDEwmCy4ujvTsEUV8n9b06BGFv9+VE456MRFCkJxSwLr1iWzclIReb6JDXAhTbujFNf3bNvmw2xZyTxfw/MhZ1FTomL3hZdr2anPR53AloAiBwiUn9fAZvn3+J45sSsQvxIdbXr6BkXcMuWi9b+vqDOzec5otW09x6HAGFouVAH8PrukfQ79+MXTqGIZGc/kc6F4J1Or0rFufyPIVh8nPryQy0o9bb+7PoIHtLrogFGeX8OSQV6mt0PHe5v/QplvURb3/lYAiBAqXjIKMIua9tJCtC3fj6efO9Ocncd39114UF5DFYuXQ4QzWb0hkz940jEYzAQEeDB3cnoED29E2VmkwYw8sFivbtiez4Oc9ZGWV0jo6gAcfGEbXLhEXdR6FmcU8MegVLCYLn+57i4Bw/4t6/8udSy4EkiR9B4wDioUQHc9+7T3gOsAInAHuEEJUXsiWIgRXBroqHT+9sYzln65F5aBi8uPjuPGZ8Rel1n9ubjlr1h5j46YTlJXX4uHhzJDB7Rk2NI649iGXxH0hhKBab6C0Rkd5bT1ltToqdHpq9AZq9AZ0BiN6kxmj2YLRbMYqBCpJQpIkVJKEk0aNs6MGJ40adyctXi7OeLk64evmQpCnO0GebjiqL87u6nxYrYKt207yzXfbKSqqZuCAttw3cyhBgRcvoicjKZvHrnmJwAh/Pto5S+kt8RcuByEYCNQCP/5FCK4FtgghzJIkzQYQQjx7IVuKEFzeWK1W1s/byncvLqSqpJprbx/MjFlT8Qvxbdb7mkwWdu1OZfXvR0k4moVKJRHfpzUjr+1EfJ82F8XtI4SgsKqWjJJyMksryCqtIKu0koKqGvIrqqkzms45zlHtgJvWESeNBke1A45qByRJ4o+/R4vVit5kRm8yU2c0UX8eO75uLkT6eRPl702Uvw9tW/nRPjgQL5eLG91jMJhYvGQ/CxfvQ5IkZt4zhOuv63bRdl+HNhzjxbFv0W98L15Z+qSy6zvLJReCs5OIBFb/IQR/e20icIMQ4uYL2VGE4PIl5WAanzz4DamHztChf1semHMHsT2aN4qjvELH6tUJrFydQHm5jqAgT8aO7sKokZ2bNUPWYrWSUVJBUm4hJ/KKSSko4XRhKdV6w5/XuDhqCPf1IsTbg1Ze7rTy8sDf3RVfdxd8XV3wcnXGw0mLVuY5idFsoapeT6WuntJaHYWVtRRU1VBQWU1maQUZJRVU6P4/sznMx5OOoUH0ig6hV1QYUf7eF2VxLCyq4sOP1nHocAa9ekbx9JNj8LtIh/BL31/J18/M54E5dzDxkTEX5Z6XO1eCEKwCFgshFlzIjiIElx+1lTq+e+FnVn+1Ee8gL+5991aG3nRNsy42mVmlLF6yny1bT2IyWejdK5qJE3rQq2d0s7h+dAYjx3MKOJKZz5HMPI7nFP75hO/iqCG2lR9tg/yJCfSjdaAPUX7e+Lm7XrKn0QpdPckFxZzIK+ZEbhFHs/MprtYBEODhysC2UQyLa0Of1mGyhUgOQghWrkrgy6+3oNVqePnF8fToHtls9/vrfV+ZMJtD647y+cHZRHe+uOcVlyOXtRBIkvQi0BOYJM4zAUmS7gXuBQgPD++RlZXVbPNUaDxCCHb8so8vHv2OyuIqxj80mttfn9qsftnEpBwWLt7Hvn1ncHLSMHJEJyZO7EF4mH1dT2aLlcTcQvamZbMvLZtj2QWYrVZUkkRskB9dI4LpFBpIx9Agovy9cbjM+x4IIcguq+JAeg5707LYmZJJndGEi6OGIe1bM6FHHH1ahzXb95GdU8arr/9GdnYZD9w3jIkTejS7SFaX1XBX3GMERPjzyZ43W3yTm8tWCCRJmgHMBIYJIerOPfJ/UXYElwdlBRV88sBc9qw4SEz3KB77amazuYGEECQczeLH+bs5npiDh4czkyb0YPz4HnjaMdGrul7PzpRMdqRksDMlk6p6PZIEccGB9G0TTq/oULqGt8LN6cpvc2k0m9l/JoeNJ9LYmHiaar2BIE93JvfswLT4Lvi42V/M6+uNvPXOKnbvOc2E8d156IERzX5wv23xbt6cPof7P5zBpMfGNuu9LncuSyGQJGkU8CEwSAhR0lg7ihBcWoQQbFqwgy8enYdRb+T216Yy+fFxzfa0dSQhkx9+3EViUi6+vm5Mu7EPY8d0xcnJPglolbp6Np88w4ak0+w7k43ZYsXb1ZkBsZEMahdFfJuIi37YerExmMxsS07nl4NJ7DmdhZNGzaSeHZkxoDsh3vaN+LFaBV/N3crSXw5w7YiOPP3kGBwcmm83JYTghTFvkrw/jR/SPr2i+lbYm0suBJIkLQQGA35AEfAf4HlAC5SdvWyfEOK+C9lShODSUVlSxZyZX7F7+UE69G/LU98+0Gx14ZNTCvjm220cScjCz8+d6VPjGTumC46OTfdn1xtNbD2VzuqEU+w+nYXZaiXU24MRnWIYHteGTmFBl72rp7k4U1zGvB2HWXX0FEIIxneP45Fr++Pvbr/aT0IIFvy0h3k/7GT4sA4898y4Zt0ZZCRmcV+3p5n46Fju++D2ZrvP5c4lFwJ7ogjBpeHA2gTev/Nzait03PHGdCY9PrZZOkXlF1Qy95ttbN+RjKenMzff1I/rx3VrsgAIIUjMLeKXg4msPZZCndFEkKcbY7q0Y0yXtrRr5a+EGf6Fwqoa5u04zKL9x9Cq1TwwLJ6b+nbF0Y47v/k/7Wbe9zuZNjWee+8ebDe75+K9Oz9n26LdLMj8b4utVKoIgYLNGA0m5j4zn+WfriWyYxgv/PQoUZ3sH4Gh0xn46ec9LPvtEA4OKqZM7sWNU/rg6to0f7zOYGTlkVMsOXCc1MJSnDVqRnVuy/Xd29MzMrRZn0StQlCqr6Wwvobi+lqK62uoMNZTZdRTbdSjMxsxWi0YLWbMwooKCQeVCrWkwlmtwV2jxUPjhKejM0HO7rRy8SDIxZ1gF0/UF2nHkllSwezft7MjJYNofx/enDKSzmH2KTInhGDOJxtYtTqBxx8dyXXjutnF7rnITc3nzvaPMfWZ8dz19gWj1K9KFCFQsIn8M4W8MfVDTh/JYMLDo7ln9i12Lw0hhGDDxiS+nruVyqo6rh3RibvuGNjkePOs0koW7jvKb4dOUGswEhccwJTenRjTpa3dD3uNFgsZNWWkVBWTXFlMek0ZWbUVZNdWoLf8s3Wks4MGD0ctbmotjg4OaFQOqCUHBAKz1YpZWKg3m6kxGagx6TFaLf8z3lHlQKS7D208/GjnFUA331C6+ATjqmm+sh3bk9OZtWILJdU6HhvZn9uv6WEXEbVYrLz0yjIOH8ngkzm30q5t85WSfn3K+xzdeoJFeV+3yGY2ihAoyGbXb/t5747PUalUPD3vQfqN72X3e2RklDDn0/UkJuYS1z6Yhx8cQdsmLgTHcwr5dvtBNp9Mw0FSMbJTLLf060rncPstMHm6Kg6V5HC0PI/jZfmcrCz6c7FWSyoi3X2IdPMmws2HMDcvglzcCXR2J8DJDW+tC1qHxru5hBDUmU0U1ddQUF9Nga6a9Joy0qpLOV1dSnZtBQAqSaKdZwD9g6IYFNSanv5haFT2dd1V1et5ZdlGNp1IY2DbKN6+cZRdDtKrq+u59/55ODio+Pq/dzR5F3g+Dm88xnMj3+DFhY8xeGr/ZrnH5YwiBAqNxmKx8P1Li1g0ezlte7XmpcVPEBQZYNd7GI1mfpy/m8VL9+Pq4si99wxh1MjOTXrC3H8mhy+37OdAeg4eTlqmxXdhet8uBHg0Pbu43FDHzoJ09hRnsL84mxxdQ0ksZwcNnXxa0dknmA7egbT1DCDK3RfHZjg7OR/VRj1Hy/I4UpbLwZIcDpfmYLJa8dA4MTK0LTdEdaGHX6jdzj+EECzcd4x3f99BuK8nc++cTKBn09/jpKRcHnvyJ8aN7cpjj4y0w0z/idVq5dboB4nsGMabq19olntczihCoNAoqstrePvmjzm0/hhj7x3BAx/fYfctdFJSLu99uIacnHJGjujIfTOH4ulpe8z64YxcPt20l4Ppufi7uzJjQA+m9O6Eq9Z2N4kQgtSqEjbkpbC94AxHy/IQgKejE739w4kPiKSPfzgxnv4XzVffWHQmI7uK0tmQm8qGvGTqzCai3H2YEtWVaa274ulon7yLA+k5PPTjSrxcnJh752Qi/LyabPOzzzfy24rDfPHp7U3eGZ6P/z7+Pau+3MCykm9xdmtZzYYUIVC4INnJebx8/TsUZ5Xw8Gd3M+ae4Xa1bzSa+e77HSz95QABAR488dhoevW0vWZ8amEpH6zdya7UTPzcXbhnUG+m9O7UpHIJp6tKWJ19kjU5p0ivKUMCOvsEM7hVawa3akNHn1aorqDIIp3JyNqcU/ySeYyDJTm4qR2ZEdubu9r2wcOx6S6dpNxCZs77DY2DAz/dP7XJOQe1Oj0z7pxLqyAvPplzS7NEcR3bdoKnhr7Kq78+Tf8Jve1u/3JGEQKFf+XwxmPMuvFDNFoNr/76NB36tbWr/TPpxbz19ioyMku4blw3Zt4zGBcX2/zAJdW1fLpxL78dPoGbkyP3Du7NtPguONvY4azcUMfq7BP8mpFIYkUBKkmit384Y8Lac21IW/ydm69w3cXkVEURn5/cxdrcZNw1Wh7uMIDbYno2+RzhdGEpt321BD93V366fyoezk0TmBWrjvDxJxt4b/a0ZqlJZDKamOB1O+NmXsv9H82wu/3LGUUIFM7Lmrmb+PiBuUTEhTJr5XMERtivmYcQgt+WH+aruVtxc3Pi6SfHEN/HtjIURrOFH3Yd5qutBzBZLNwU35WZQ/vYdFgphOBIWR4LTh9iXW4yRquFOK9AJkV25rqIOPycro7F/1ycqiji3eNb2FGYTqynPx/0uZ4476aFgx5Mz+Xu75YR3zqc/94+oUlnPUajmZtv+5KwUB8+fP+mJs3rfDw97FVqK+v47+F3m8X+5UpjheDSdrVQuKgIIZj/2lLmv76UXqO78dKix3Fxt5/PtLZWz+z3f2f37tPE92nNM0+NxcvLtrOA/WdyeGPFFtJLyhkW15qnxgwk3Fe+T9posbAq+wTfpx7gZGURbhot01p3Y2p0V9p5Bdo0tyuN9t6BfDdwGpvyU3nl0DombZrHE50Gc0/beJtdMb2iQ3l+3GBmrdjCz3uPckt/2/MBHB3VTJrQk7nfbiM7u4zwcPv3sWjXO4ZfPlyFyWi6qL2yrxQUIWghWCwWPr5vLmu/3czIGUN47Kt77do7OC2tiP+89ivFJTXcP3MoN0zuZdMiU1mnZ/bqbaxMOEWotwdf3D6eQe2iZdvRmYwsSk/gu5T9FNbXEOPhz6weoxkf0bHZYu+NVgOVxhKqTCXozNXUWWqpM9dgshqwYsYiGsJNNZIWjUqLVuWEm8YLT40vHhpfvDT+qFXNs0hJksSIkLb09AvjpUNrmX1sC8fL8vkgfrys0Na/MrVPZ3YkZ/Dhup30i4kgOsDH5vmNHNmJ777fwe9rjnL/fcNstnM+ojpHYDZZyD6VR+sukXa3f6WjCEELwGwyM/v2z9i2aDc3vTCJGbOm2fVQbsvWk7z3wRrc3Z2Z8+HNdIgLscnO1lNnePW3TVTq9Mwc0od7h/TGSaZY1ZtN/JR2mK+S91JuqCM+IIK3eo1lYFC03b5nk9VIQX0GBfpMivRZFOmzKTXkU2s+d9dVteSIg+SAg6Q+m0BmxCSM/7hOhQo/bQhBzpG0cook2q0Twc5RqCT7haZ6a134rN8kvknZzzvHNlO1U8+X/afYJI6SJPHa5BFc9+EPvPv7dr68Y6LN8/LxdqV3r2i270zhvplD7X5oHN6+4XcyP61QEYJzoAjBVY7RYOKt6R+xe/lB7nr7ZqY9O8Futq1WwbfztrNw0T46dQrlPy9PxMdbfqGyGr2Bt1ZuZWXCKWKD/PhyxkTaB8vLYzBZLSw6k8DnJ3dRotcxICiaRzoMoLtfqOz5/B2j1UB6bSLptYlk1yWTX5+BRTRkD2tVLgQ5hdPWvQfejoH4OAbg6eiPq4MHLmp3nB1cz7mQW4UVk9VAjbmCalMZVaYySg35FNZnkq07xfHKnQA4O7gR7dqRDp7xxHnGo1E1fTcjSRL3tIvHR+vCcwdXM2P7Qr4fNN0mMfB3d+XeIb35YO1O9qVlE98m3OZ59esbw959aaRnlNA62r55LAFhfgCU5JRd4MqWiSIEVzFGg4lZN37AvlWHefDjO5nw8Gi72TYYTLw9ezU7dqZw3bhuPPTAcJt6BCfmFPL0ojXkV1Zz39A+zBzSR3aRsx0FZ3gjYSNnasro7R/Op/0m0cvf9gUJoMpYyonq/aRUHyJTdxKzMKGWHAlxbk0/v3GEu7Ql2DkaT42fTU+vKkmF1sEZrYMzftp/VnOtMVWQXpvImdpE0mqPcqJ6H875bnT3HkJv35HnHCOXyVGdcVFreGTvbzx3cDWf9J1o0/dyc9+uLNidwLfbDzZJCPr0bnABHknItLsQuPu4oXFUU15YYVe7VwuKEFylmIwm3pj6IftWHeaRz+/muvvtl7lZVVXHS68s4+SpPO6/byg3TJJ/HiCE4IddR/ho3S783F35/p4pdI+U51LKrCnnzaMb2ZKfRoSbN19dM4VhwTE2uxVqzZUcq9hJUtUesutSAPDXhtLHdxSx7t2IcI2zyxN5Y3DXeNPFeyBdvAdiFVbSaxM5WL6RfWVr2VO6ms5e1zAscBq+2qYlYY0Oa89TtZW8e3wLnXxacW+7vrJtaDVqpsZ35pMNe0gvLrf5rMDPz50Afw9SUgptGv9vSJKEs7szdTV6u9u+GlCE4CrEYrHw7u2fsXflIR769C67ikBJSTVPP7uYgsJKXnlpAoMGtpNtQ2cw8tIvG9iQdJrhHdrw2qQRskJCzVYr36XuZ052oxd9AAAgAElEQVTSDjSSiue6DOO2mJ42HXpahZWM2iQOlm/gZPUBLMJMkFMkwwNvopNXP7s8eTcVlaSijXsX2rh3odZcye6SVewtXUNS1V4G+k9icMDkJh0y39sunuPl+bx/fCuDW7Uh1lN+OPENvTrxxaZ9rDhyksdHXWPzXGJiAzmdZn8hAHBy1aKvU4TgXChCcJUhhOCT++eybfEe7n7nFsY/OMputnNzy3nq2UXU1up5952pdOks3w2QU17JI/NXkVZUxlOjBzBjgLw+timVxTx7YDWJFQUMD4nl9R6jCHSWX7XUZDWQULGdPaWrKDHk4ezgRrzvaHr6DCfAKUy2vYuFm9qLka1upa/fWNYV/MjW4iWk1hxmWviT+Ghtyw2QJIlZPUeztziT146sZ8Hgm2XvqnzdXOgRFcK25PQmCUFIsDcHD2YghLD7gbEQApV0eZUHuVxQhOAq44dXFrPmm81Mf34iU58Zbze72dllPP7Uz1itVj587yZiY+UvOkcy83h4/kqsQvDVHRPpF9P4HgdCCL4/fZDZxzbjoXHm036TGB3aTvZiYbTq2Ve6hl2lq9CZqwh2juaGsEfo6Nnvorl97IGHxocbwx+jg2c8v+Z+zhdpz3B71MuEucTYZM9H68KTnQbzyuF1bMk/zbCQWNk2BrWL5t3ft5NfWU2wl4dN8wgM8MRoNFNRWWdT4MG/YTFbkZq5X/KViiIEVxHr5m3lpzeXMerOodzxxnS72c3OKeOJp38GIfjog5uJjPCTbWND0mmeXbyWYC8P/jtjgqzksHJDHc8eWMWW/DSGBcfwTu9x+GjlJaqZrSYOlm9gW/Eyas2VxLh1ZVDAZCJd467oLmUdPONp5RTJvIzX+C79P9wW+SJRbh1ssjU1uhv/PbWHH04fskkIukU0uNFO5BbZLATu7g0uQp3OYHchqKuqw83LvjavFpR90lXCsW0nmDPzK7oP78Sj/73HbotbQUElTz69EKtV8P57020SgSUHjvPEz6uJCw7gp/umyhKB42X5XLf+G3YVZvByt2v56popskXgZNUB5qQ8zOr8b/HXhnBv67eYEf0KUW4drmgR+AMfbRD3tH4TT40f8zPfosxQYJMdtUrF9Nbd2F2UQWZNuezxsUF+OKgkkgtKbLo/gLNzw66svu6feRZNwWgwoa8z4GZncblaUITgKiD/TCGv3fA+wW2CeGXpk3bLGK6srOPZ5xdjMJh4/91pREXKP0Scv/sIr/22mYGxUXx79w14uTa+pMXKrBNM2zoftUrFL8NnMCNWXnRSpbGEBZnv8FPWOzg6ODEj6mXuin6dCFf5B9yXOx4aH2ZEvYIkqViW8ylWYbnwoHMwPqIjANsKzsge66RR4+/uRkFljU33buBs7TM763NJTikAfiG2Zz9fzShCcIVTV1PPy9e/A8Cslc/i6mmfJx693sTzLy2luKSGt2ZNITpKflz39zsP887q7Qzv0IY5t1zX6CxhIQQfJW7n8X3L6eITzK/D76CDjCJpQgj2lq7h49RHSas5xqig23gw5n1i3LtdFTuA8+Hl6Md1wXeTVZfMntLfbbIR6upFpJsPOwvlCwE0HBqX1uhsGgtgMp0twyEzl+RCFGYUAxBkw+9xS0A5I7iCEULwyQNzyU3J550NLxPSxj6NPaxWwVvvrCI1tYDXX51Ex47ys3OXHDjOe2t2MLJTDLOnjkbTyA5eFquVlw+vZXH6UaZEdeH1HqNldf/SmatZlvMZKTWHiHXvzvUh9+LtaP8/fiEEWEvAfBrMpxGWfLBWNHyIWpAcQXICyRlUrZDUMaBuA+oYJJXtTXkuRBevgSRUbGdHyW/08R1l0wF4d79Qdhel23R/V60j9SaTTWMBamsNDXbs3Loy+1QeACExzdcf+UpGEYIrmPXztrL5p53c/tpUug3tZDe733y7jV27U3nw/mH07yf/0HDt8RReX76ZgW2jeOfGxouAyWrhiX0rWJNzigfi+vNEx0GynuAzak+wOPsj6izVjA2+i76+Y+y6AxCWYjBsRxh3gXE/WP/iR5dcQeUNkheo3EAYwVoDog4smxH84fPWILT9kJzGg9NIJMm+ReYkSWJgwES+S/8Pxyp30tNHfgG3SHdvfs2spc5sxEUtT0gEAqkJfp2y8loAfHzs68tPP5aJV4Anvq287Wr3akERgiuU7OQ8Pn/kO7oN68T0F2wv9vV3tu9IZtGS/Vw3rhuTJl6wjPk/OJKZx/NL1tM9IoSPbh7X6HIRFquVp/avZE3OKZ7tMlR2huuh8s2syP0Sb8cAbot6h2Bn+RVLz4UQetCvR9T/0rD4A6gCwXEAkqYTqGMbnvIdzl86WQgLWHIadg7Gg6DfiDA8ATWB4P4cONlXsKJdO+KvDSGxcrdNQvBHXkaZvg4XN3lCYDCZcWtCy9DCgkp8fdxQ29k1lHwwjTbdIq9q12BTUITgCsRoMPHWTXPQujjy7I8P42Cnxul5eRW898Ea2rcL5qEHhsv+o8kpr+SRBasI9nLnk1uvb/SZgFUIXjj0O6uzT/JMZ3kiIIRgU9FCthX/Qhu3LkyPeAonh6Y/TQpLAUL3DdQvB1EDDmFIbo+Adjio28p6byTJAdSRoI5EchqBcH8OjDsQNZ8gqh4H/TrwfA1JZZ+DTEmSiHbrTELFVizCgoPM6qWOZzuYmW04cC6rrSPChr4Rf5CZVUpEhH37EdRW6shMymHwjf3tavdqQhGCK5AFry/lzNFMZq18zm5bXZPJwqw3V+DgoOLll8bLLiCnN5l5dMFqLFYr/50xQVbJiI+TdvBLxnEe6TCAme0bLwJWYWV1/rfsL1tLD+9hjA+diYPUtF9pYa1B6L4E3Q+AAKfRSM43gGNvJDtlpUqSCrSDwfEa0H2LqP0EUZ4NPguQVPKzpM9FmEsb9petpdxQiL+TvBpOVhu7FpotVoqrdfh72NbtzWSykJlVyrixXW0afz6SdiUD0KG/fduxXk0oQnCFceZYJkveW8m1MwYTP66H3ezO+2EnqacLef3VSQQFym9I/taqraQUlPDljAlE+DVenFZmJfHZyV1MierCIx0GNHqcEIJV+XM5ULaeAf4TGBl0a5O2/UIIqP8NUfMOiEpwGo/k/hiSg229FRqDJKnBbSZo2iMq7kNUPQFeX9vFfeHi0JDQpbfKj+Ap1TeM8dXK21lllVVgsliICbTtiT4trQiDwUzHDk0vHf5XDq0/ipOLljg79+W+mvhXIZAk6XgjbJQIIezfUkjhH1itVubc9zXuPm7MfP82u9lNOpHL4iX7GDe2K9f0l384vO54CssOJnHv4N4MaBvV6HGnKop49sBq+viH83qP0bIWwM1Fi+0nAtYaRNVzYNgImu5IHq8gaeJsticXSTsQ3J9D1LwBhq3gNLTJNh1VDTsyo0V+kbWCumqcHNS4a+RF7pzKawjRjG1lWw/so8eyAehkQ5Ta+RBCcGBtAp0Hx+GoVVpUno8L7QgcgDH/8roErLTfdBT+jXXfbiF5/2me+eEhPHzs40IwmSx8OGcd/v4e3D9T/gJUUqNj1ootdAwN5MHhjXfr6ExGHtn7G97ahrpBckJEj1XsZGvxErp7D226CJiSEZUPgSUfyf1ZcLnDbi4gWbhMh9pPEIYNSHYQgjpLQ1KXs1r+78mJykLaeQbIfl8PpOfi4aS1eUewZ+9pYmIC8fGxzbV0LtISMihIL2L68/YLqLgauZAQzBRCZP3bBZIkPWDH+Sich+qyGr55bgGdB8Ux/JaBdrP7y7KDZGaW8uasG/5M75fDGyu2UG808faUUagdGr+AvnV0Exk1ZSwYcgu+To13QeTXZ/Br7mdEusYxPmRm00TAeAxRMQMkVySf+UiO9nO1yUWSNAjtQDBst4u9KlNDJy4PjbwzJJPVwomKQiZHdpE1TgjBnrQsercOw0ElX0jLymo5eSqPGbc13j3YGLYt2o2D2oH+E3vb1e7Vxr/+xIQQuy5koDHXKDSdn95Yhq6qjoc+vctuIXDl5bX8tHAP/fq2oW98G9njd6VmsulEGvcPi5fVjORgSTaL0hO4u1088QGNr0BqshpZmj0HZwc3bop4ukk1+IU5HVFxD6h8kHx/uaQi8CcOQWCDT/9c5OhScFd74+og77znQHE2dWYT/YMiZY07nlNIQWUNg9vbFra7cfMJhIBBg+xX/sNkNLHhx+30GdvdbjvoqxWb98CSJK29wOvfSZJULElS0l++5iNJ0kZJkk6f/axkdzSCgowiVn6xjpF3DCWqY9NaMP6Vb+ftwGg0c/9M+Uc8JouFt1dtI8LXi9uv6d74cVYLLx1aS6irp6zDYYCtRUsoNuQwKexBXNXyD7T/QFgrEOV3geSA5P0dkoNtdfztjtA3ZCQ3EauwckaXSGu3zrIfGjbkpeDsoGFAoLwF/fejyTiqHRjRQf4DhRCCjRuTiIsLITzMfqGje1YcorK4ijH3DLebzauVfxUCSZK6n+ejB3ChGK/vgb93RXkO2CyEiAE2n/2/wgVY+NZvSCoVt712o91s5uSWs35DIhPG9yAkRL4erzhykszSCp4aMxBHdeODz5ZlHCetupSXuo2QlbVaYSxmV+lKunkPJta98cJzLkT122AtQvL+Cknd+B1Js2NKBIemC31a7VF05iraesjb5dSbTazMOsGwkBic1I3fbekMRlYmnGJYXBvcnOSXhkhMyiUjs4RRI+2XHS+EYNlHqwiKCqDnSHlurpbIhf6CDwLbOXctwH/NGhFC7JAkKfJvXx4PDD777x+AbcCzF5hDi6Y4p5SNP25jzD3D8Qu2X+XE+Qt24+ioZvrUeNljjWYLX205QKfQIIbIcAUYLGY+PbGTbr4hDA+WF520uWgREhLDA2+SO93/QRgPgX45uN6HpOncJFv2RFgKwXQMye3xJts6ULYBVwcP4jz6yBq3MiuJapOeW9vIyyhfeeQUNXoDt/SzLf7/198O4eHuxPChtvVROBcn96Zyat9pHvr0LrslXF7NXEgITtFwYHz67y9IkpRjw/0ChRB/FEsvBALPd6EkSfcC9wKEh9vPHXKl8dvHa7BaBTc+bb9uY0XFVWzZepLJk3rhbUN99g2JqeRXVvPy+KGyXA+rsk9QWF/D7N7jZI2rNpVzrGIH8X5j8HKU3w/hr4i6BQ3nAm73N8mOvRG6rwAVOI1ukp3C+kySqw8yMGCSrDMUk9XCl8l76eAVSA+/xodvGs0W5u08ROewILqEyy/olpVVys5dKUybGo+Tk/3COxe/uxx3b1eunTHYbjavZi50RvDqv1zzcFNuLIQQ/Fl8/Jyvfy2E6CmE6Onvb1tc8pWOrkrHmrmbGHRjXwIj7PcerFiZAMDECfIPSIUQzN+TQKSfN9fERsobd/oQbTz86B/Y+FwDgMPlm7FiJd63aYukEIaGqBztcCSp8X0RmhthPAp1P4PLTUjqyCbZWl+4AK2DCwP85D04/JJxjOzaCh7rJK/Q3/IjJ8irqOaBYX1tCmL4ccFutFoNN95gv6ieM8cy2bvyEJMeG4eza+Mz3FsyF4oa+kUIkXKe15bbcL8iSZJaAZz9XGyDjRbD+u+3UVdTz5Qnr7ebTbPZwtp1x+jXN8amDOLkghKScou4qW9XVDL6v6ZWlZBUUchNrbvLXjCOVe4g2rUjvtomlhA2JYPQIWntG6LYFISlAFH5CKiCkNyeaJKtE1X7SK05wmD/yTirGx+LX2WsZ07SDrr5hjCkVeMPe3UGI19s2kfX8FZcEyv/rCUlpYBt208xaUJPPD3tV5r7+1cW4eLhzISHm/bg0JK40GHxuAsZaMw1f2ElcPvZf98OrJAxtkUhhGDN3E206xNDTHf7VNIE2H8gnaqqepsP5n4/loxapWJsF3np+hvyUpCAMWHtZY2rNpVTYsgj1qNpB8QAiPqGz5LtRdHsibBWIsrvBFHbcHCtsj2RqtZUyYrcL2nlFEU/fzl/kvDusa1UGOp4rccoWSL93y37KKnR8ey4wbLFXQjBZ19swsvThenT5J9TnY9j20+wb9Vhpj07UelPLIMLnRG8J0lSHv/eOO4tYPXfvyhJ0kIaDob9JEnKBf4DvAMskSTpLiALsF8YzFVG8oE0sk7m8sTc++xqd+OmJLy9XOjdS764CCHYkHia/jERslpOAmzNT6Orbwj+zvIWuyxdQ8GwKNeOssadG8vfPl86hDkXUfkAWLIbQlg1tsfPW4SZJTlzMFjrmRL+qKzCe7sLM1iUnsBdbfvI6gKXXFDC/F0JTOrZgc5h8sNvN285yYmTeTz1xGi7NaGxmC18+cQP+If6MumxfyuIoPB3LvQbUwR8eIFr/nGQDCCEmH6e65W6RI1g26LdaLQaBk6RV5f/3zAazRw4mM6I4R1tqveeXVZFXkU1dw6UF1VisJg5WVnInbHyolgAqkwNjdD9tMGyx/4DTUfAAWHcg6Tt13R7NiL0WxFVzwAWJO8vkbTy35c/bQnB6rxvOVN7nMmhDxPo1PjAilJ9LU/uX0EbDz8e7zio0eOMZgvPL1mHl6sTT46S72arrq7niy83075dMCOvtV/I6Mov1pOWkMFLix5H62zfDmdXO/8qBEKIwRdpHgp/QQjBzmX76DWqK64e9vOdJhzNQq830b9fjE3j959pKAoW31peFFdKVTEmq5XOPvIX8xpTBRrJEa2q6Ye7ksoT4dgL9GsRbo8g2SF5Sw7CWouo/Qjq5oO6PZLXp0jqpkXE7SxZzoHy9Qz0n0h3nyGNHmeyWnh83wqqTQZ+GHQTzjLyBj7btIfUwlI+u+162TtDgC++3ExNjZ73Zo/CQUZZkn+jrKCCH/6zmB7XdrHrw1NLodF7SEmSxgIdgD+P4YUQrzfHpFo6GYnZlOSWcdur9vWcHT2WjVqtokvnMJvGn8wvxtPZiQg/eT72PF0VABFu8hPXJEmFALuV1ZBc70JU3IOofh08Zl2UjlVCmKB+KaL204b2li63Irk/jSQ1LaJlV8lK1hfOp5Nnf0YE3SxjPoJZRzawpyiT2b3H0dar8T2dtyen8+32Q9zQqyND2reWPeet206xYWMSt97cj9bR9usl/dnD32LUm3jokzuVLmQ20CghkCTpS8AFGAJ8A9wAHGjGebVoDq0/CkDPUfZt0JGYmEPb2FZobSzHm1pQSmwrP9l/aMX1DX1o5Z4PAGhVzpiFEbPV1KTaQn8gaQchXO8D3ZcISQPuzzZ5QT4fQtRD/RqE7muwZICmV8OhcBMT2YQQbC1eyuaiRXT07MeU8EdRyaiYOi/1AD+dOcK97fpyQ1Tjs25zy6t4bsk62rXy5/nrGr/7+IPCoio++ngdce2Due3Wa2SPPx87l+1j16/7ueutmwiNtYMLsQXS2N+efkKI24AKIcRrQF9AfuF6hUaRuPMUYe1C7JpJbLFYSTtTTLt2todg5lVWEe4jP+LGYDUD4CLD/fAH3o4NT40lhlzZY8+H5PY4uMyAup8QpRMaso3thBACYTqOteoVRHF/RPXzIDkieX2J5LOgySJgEWZ+y/2CzUWL6Oo1iBvDH5d1OLzoTAJvHt3EqNB2PN258Yt5jd7AAz8sBwEf3jSu0W1I/8BoNPParOUIKzz/3HV2cwmV5Jbx0cyviOkRzQ1PXmcXmy2Rxv40z8bdUSdJUjBQBjQxqFvhXFitVk7uTaXvdfIbx/8bhYVVGI1moiJtS0yzWK2U19bj5y4/JE999mnVbLXKHhvh2hBumqk7SStneYlo50OSJCSPFxDaQYiqFxDlNyE03ZGcJ4PTMFm9g4UQYC0D0xGEYQ8YtoE1H3ACp1FILlNA09Mu7opaUyWLcz4ivTaRIQFTGBY4TZbd3zITeenQGga3as1H8RNQNXKsyWLhiZ9/J6u0kq/unCjbNQjw5ddbSEkp4NVXJhISbJ9akxaLhXdu/QSTwcQLPz+GWqY4Kfw/jX3nVkuS5AW8BxyhISP4m2abVQsm/0wR1WU1dm+rl59fAUBYmG27jDqjCasQeNgQjeF2ttNVlVGPh6M8N4y3YwB+2hCOVuwg3neMXf2/krY/+P0O9b8i6uYjql+E6hcRqhDQxIA6BknlD5ITSFpABdZKhLWywddvSQdTKoiKswZdwLEvkvYhcBppt/7DAGk1R1ma8wl6i44bwh6mm7c818xPaYf5z+F19A2M5PN+kxvdCMhitfL8kvXsOZ3FrMkjZAcKAKxclcDyFUeYMrkXAwfY7/f6p1nLOL79JE/Pe5DQGOW5tCk0VgjeFUIYgGWSJK2m4cBYfg88hQuSfiwTgDbdIu1qt7SswU/v62vb4iTONjS3ZSEOP3tInF1bQZib/KfJvr5jWJU/l+y65D93CPZCUrmB623gciuYT4FxP8J0HMxpYNiNwHSuUSB5gjoSnIYjqWNB0wE0ne0eiWS2mthctIgdJb8RoA3jjqj/EOTc+CxeIQSfndzFnKQdDA1uw6d9JzW6sqgQglkrtrD2eApPjh7ApJ7yczkOHsrgk882EN+nNffeI/9c4XwkbElkwaxfGHHbIK69fbDd7LZUGisEe4HuAGcFwSBJ0pE/vqZgPzKTcpAkicgOtkX2nI+qqjoAvL1sC0f9o+uUxQb3TrR7wy7kVGUR/YPku3e6+wxhc9Ei1hZ8zz2t38JBsn81SUmSQBMHmrg/syeFMIPQNfQJEHrACiovkDyQmmEOf+dMbSIrc7+i1JhPL58RjAm+E0dV43dkBouZFw7+zvKsJCZGduLtXmPRqBo3b6tV8MbKLSw9kMi9g3vLzh0BSD1dyKuv/0ZkpB8vvXC93c4FCjKKeHPaR4S2Debhz+6yi82WzoWa1wcBIYCzJEnd+P8MYw8aoogU7ExhZjF+IT44Otn3ydJobDiwdXS0zY/q4qhBq3agvLZO9tgAZ3ei3X3ZXZTB3e3klxNwVDkxLvhuluR8xK6SFQwKmCTbhi1IkrrhyR/bm+DYQo2pgnUFP3K0cjs+jkHMiHqFGHd5EWQl9bXcv/sXEsryeLzjIB6M69/o3ZzFauWVXzey/PBJ7h7Ui0eulZ98l5dXwfMvLMHd3Ym337wRFxf7JHjV1dTzyvjZWMxWXl/+DM5ul0/xwCuZC60KI4EZQCj/m2FcDbzQTHNq0RRllRAQ0bRSy+fCbGl4kpdTKO6vSJKEv7srhVW1No0fEBTNovQEaox63GWeEwB09rqGk9X72Fy0iGDnKGLcu9k0j8uZeouOnSXL2VOyGisWhgRMYVDAJDQydgEAuwrTeXL/SnQmI1/0n8zI0MaXr9CbzDy7eC2bTqTx4LB47h8WL9sdWFhUxVPPLsRiFXz09lT8/exzVmKxWHjrpjlkn8rj7bUvKqGiduRCmcU/AD9IkjRZCLHsIs2pRVNdVkNIMxx8OZ3NHTCZLDbvCloH+pJaWGLT2ImRnfjh9EGWZSYyI7aX7PGSJDEh9AFKz7zM/My3mR7+FO09r46G5HqLjn1la9lZsgK9RUdnz2sYFjRNdlkNk9XCnKQdfHVqD609/Phx0E2yksUqdfU8NH8lR7PzeXbsIG6T0YL0D4qKq3jyqZ/R6Qy8P3s64eH2az355eM/sP/3Izzy+d10H375NBW6GmjsirBbkqRvgWAhxGhJkuKAvkKIb5txbi2S2god7s1QNdHJuUEIdDqDzUIQFxzAzpRMdAYjrlp5rqtOPq3o5hvCD6kHmN66G1oH+XNwdnDlrujX+D5jFj9nvcuoVrfTz09ek5vLiUpjKXtLf+dg+UYM1jpi3bszIuhmgm0Ik02pLOa5g6s5Xl7A1OiuvNztWlllI9KKynh4/koKq2r4YPpYRnaSnyaUX1DJ088spLpGz3uzpxEba79e0EvfX8nyz9ZywxPXcd39I+1mV6GBxp7ezAPWA388oqQCjzXLjFo4JoMJjZ3PBwD8fBuyesvKbHPtAPSKDsMqBHvTsm0a/0iHAWTrKpmXantSuovanTujX6WtR0/WFMxjfuZbVBpt26VcCqzCQkr1ERZkvsMHyfexp3QVse5deaDNe9we9ZJsETBaLHyStIPxG78lp7aST/pO5K1eY2WJwOYTaUz/YiE6g5Fv75pskwhkZJTw6GML0OkMvDd7Gu3a2m9X+/vXG/n6mfkMurEvd89ufCkNhcbT2McyPyHEEkmSngcQQpglSbr0tXyvQqwWq81+/H8jKKghbLOgsJI2bc7bIfRf6R4ZjIeTlq2nzjC8Q+MbmPzBwFatGRESy2cndjEmrP2fYaVycXJw4eaIZ9lXtob1BfOZk/IIA/zH08//OpwdLr8a9EIICvQZJFXu4VjlDipNpbiqPenvfz19fEf9mT0tl/3FWbx6ZD2pVSVcF96Bl7uNwNep8d+/2WLl8817+XrrATqEBPLJrdcR5Cnfn590IpcXX/4FR0c1H314s81Ji+di66LdfHz/XHqP6cazPz6s9B9uJhorBDpJknw521pSkqR4oKrZZtWCUTuqMZ+N8LEnYaE+qFQSZ9KLGXCNbUk9GgcHRnSMYc3xFJ4bNxh3J/mRIK90u5ax67/hgd2/sHTYDFlPrn9FkiT6+o2lnUcv1hZ8z5biJewp+50e3kPp5TMCf6fG991tDizCTJYumdSaI5yo2ke5sRAVKqLdOjOq1Qzae/SyuXZSnq6Kd45tZk3OKYJdPPj6mikMC5H3FJ9fWc0zi9aSkJXPpJ4deOn6oWhtyMzdtj2Zt2evIjDAg9lvT6VVK/s1/dm+ZA/v3PoJHQe04+UlT6JxtF9PY4X/pbE/+Sdo6C7WWpKk3YA/DYXnFOyMs7szdbX1F75Qrl1nRyLC/UhOLmiSnWnxnVl2KInlh09wa3/5h4nBrp581Hc8d+9YzAsHf+eD+PGNLnVwLrwdA7gp4hny69PZXryMvaVr2F26ikjXODp49iXWvRu+jq2a/RzBbDVRoM8gW5dCpu4kZ2qPY7DW4yCpiXLtyED/icR59sFV7Z+Do5oAACAASURBVGHzPaqM9cxN3sd3qQeQgMc6DuTutvGyxXRD0mn+8+tGzBYrs6eOZlxX+U1xhBAsXnqAr+dupUNcCG+8Ptmu7Sa3L9nDW//X3n3HR1Xl/x9/ndRJH9IbIRAChE4ooYuAKIKAIrtYv6hr17WsuuiurmtZ9eeudd21wbJiWRXXQu+9hxoIJQQISUhCek+mnd8fCbaVlsxkkszn+XjweGSSe3PPTci87z3nns+56U16De/Oi4uexGCnx0/FL7uoINBa71ZKXQZ0p2EuwRGt9S9NuRTNFBjsT3lRpUO+d+9eMaxak47ZbMXTs2m32D1jIhgYH8PcDalcP7gPPk24ShsT1ZVH+4zhb2nr8HBz56XBk/Bwa95ko2ifLtzQ6XGqzGXsLl3LntJ1LD49h8WA0TOUzv59iPbpTKQhnkhDJ3w9mvZIo1VbKTcXUVpfQEF9NgV1WeTXZpFfdxJL459EB89w+hpH0i0gmQT/vni7N+9Z90pzPfOO7mDOke1UmuuZEteLx/uNJdr30kKlrLqWF75by9L9R+gVE86rMyc1qW5Qfb2Z195YxspVB7lsdA9mPzGpyRVtf8nKj9bz19vfoefw7ry4+EmZK9ACLuVecAgQ37hPslIKrfVHDmmVCwvrGMLJg/artPljKSkJLFy8l337TzFoYNMLuD105Qhufe8L/rVxF/eNa9p6s/cmDceqbbxxYAM1FhOvDZ3apCeJfs7f08jo8GsZFTaNYlMemVVpZFbt42jFLvaUrv1+O4ObL4GeIQR6BuPnEYSXmzeebt54KC80NqzaglVbqbfWUGOtpNZaSaW5jApzMTZ+mF3t6x5IpCGOlJCriPPrQZxvdwI97VM1trS+hvkZqfw7I5UyUy3jY7rxSO/R9DBe+hjPqoPHeO6b1ZTX1vHA+GH8ZsxgPJvQ315wppw/Pfs1RzPymXXrSG6+aYRdx7QW/nM5b93/Icnj+/Ds10/g4+eYEuHipy52PYL5QAKwlx8WfNWABIGdRXQKZ/vi3VitVrsPjCUPiMdg8GTdukPNCoKB8TFM6J3Ih+t2MKF3Il0jLv1ZcaUUD/YahZ+HFy/uXcXpNeW8Pfw6Yv3s08eslCLUO5pQ72hSQhoeN6wyl5FXd5KCuizKTIWUm4upMJdQbMrHbKvHbDNh0SYUbrgrd9yUO95uPvh6BODrHkiIXzRGrzA6eIXTwSuCcO9Y/D2Mdu92OlFZwr+P7uDLE/uos1oYH53I/T1H0jfk0idQ5ZaW85eF61h36Dg9osJ4//br6BHVtMHcbdszefmVhVisNp7/8/Qmr3T3S7TWzP/zl8x/7kuGTh7I0188avfZ9eLcLvYSbBDQU5+tPCYcpnOfOEx1Zk4fy6dj9xi7fm+DwZPLxySxZt0h7r1nXLMWDX9qyuXsPJHD7C+W8em9M/FqwhrIALd3TyHWz8jjOxYyadkHPJ08genxfR3Sp+/vaSTRs/8ll2toCVabjbV5x/j42C425h/H082NqZ16c0f3oXQLuvQ3bpPFwryNu3lv7XaUUvxu4ihuGTGgSXcBFouVufM28p/Pt5HQJZw/PT2N2Fg7rpVhsfLmvR+wdM5qJswawyPv3S0lpVvYxf60DwCRQPNGGsUFdenXUFkyY/cJuwcBwOSr+7N02X6Wr0zjumlNX/MgLMCP5667ggfnf8fLi9bx9NSxTX7znhDbnZ4dInh8+0J+v2MR32Yd4JkBE0hswhtgW3Osooj/ntjPt1kHyK+tJNIngId7j2ZmlwFNWtFNa82KAxm8vmwT2SXlXNG7K7+fNIYoY9PGRLJzSvjLyws5ciSPayb15757x9l1PKC6vJoXZr5O6vJ93PjUdcx6/tLWWBD2caGicwtp6AIKANKVUjuA+rNf11pPcWzzXE/n3nH4BviQtiGdsTfYbzm/s5KSounTJ5b/fL6dyVf3b/IsY4CxPRO4ffQg5m5IJS7EyKxRA5v8vWL9jHw85iY+zdzNa2nruXr5B0yJ682DvUYSH2C/q8/WIKe6jGXZh1mcnc7+kjzcleKyqASeSZ7AuOhuTR4435N1mr8u2cDeU3l0iwzl/duuY0S3iy9Z/WNaaxYu2su776/By9OdZ5+ZxuhRl/500fmczszn6Skvk5uRzyPv3c3Vd4636/cXF+9C7wJ/peEpoVeAaT/6/NnPCTtz93Cn14ju7N+Q7rBj3HLTCJ6Y/TmLluxt1l0BwCNXjiSnpJxXl2zAx8uDX6dc/Bq4P+fu5sYtiYOYFNeT9w9vZX5GKgtPHWBixyRuSEhmSFhcsx41dRab1qSX5rMuL5NVuUdJK224se7VIZI/9B/PlE69CDVc+tX/WQdzC3hn5VbWHzlBWIAfz0+/gqnJPb8vHX6p8vPL+Nvry9i1+yQDk+N54vFJdiscd9bu1Wm88OuGOpavrHiafmN62fX7i0tzoaJz6wGUUp5nPz5LKSXPdDnIoAn9+eej88g7XkBUl6bNAj6fgcnxDEyO51/zNjLmsiSCOzR9Nq6bm+LlX11FvcXCc9+sobymnjvHDG7W7X2wty+z+43jjm4pfHBkG18c38uiU+l09DMyvXNfronr1ervEk5Xl7PtTBbbzmSxIT+TwrpqAPoGR/FE37FM7NijyTOrz0rLzuf9dTtYk55JoI83D185gpuGD8C3iROvrFYb3y7czYdz1qOU4uHfXsk1k/vbtatGa81Xry/igyfmE5cUy7NfP05MV1ldzNnU+cZ/lVL3AvcBXYDMH30pANistb7Zsc1rMGjQIJ2aar8Fxlu7vOMF3Nr1Ae7+661c/6hjFuQ+lV3Mb+6aw+hRPfjjU83v4TNbrfxxwQoW7T3MTcP689jVo5s8gPxzdRYzK3KP8OWJfWwpOAlAYmAoo6MSGBXZhf4hMQR4Om/CUb3VwqGyAvYWn2ZfcS57inPJri4DwOjlw/CIeC6P6sroqC7NuvKHhjfSbZmnmLM+la3HThFo8ObWkcncMmIA/k2Y6X3W0Yx83nhrOYcP5zFkcBceefhKIsLtuw5DbVUtr9/9Hms/28yo6Sk8Nvd+fAPketKRlFK7tNYXvO2/UBAEAR2Al4DZP/pSpda6pNmtvEiuFgQA9w3+PVazlXf3vOqwwbOP5m9i3kebeGr2NYwf1/xbc5tN8+qSDXy0eTd9O0by1xuuJqaDfd9MTleXsyL3KGtOZ7Cz8BQmmxUFJAaFMSAkhh7GcLoGhpEYGEqowc9uPzutNRXmOrIqS8mqLuVkZQlHyws5UnaGk1UlWBv/jiJ8/OkXHENKeCeGhsfRLSjcLt1ZdWYLi/ce5pOtezmSV0hogC+3jkjm1yl9mxUAVVV1zJ23ge8W7iEo0Id77xnHuLE97f9IbFoWz//qNXIz8pj1/A3MnD1NBoVbgF2CoLVwxSA4O7Hm79tfovvgSy/wdjGsVhuPPvYpxzLP8M93/o+4jvapHb887SjPfLUSpRTPTBvHxL7dHPJHX202sac4hz3FuewuymFfyWnKTT8spe3r4UmkTyCRvgGEGwII8jIQ4OmNn6cXPu6eeLi54aEa+tHNNismm416q4VKcx0VpjrKzXUU1lVzpraSgtpKaiw/nUwf52ekmzGc7kFh9DRG0i8kmqhLnO17IaeKy1iwM40FOw5QXltHt8hQbh4+gGsG9MDLo+kD/VarjSVL9zF33gYqK+uYcs0Abp81Gn9/+07g0lqzdM4a3vntHPyNfjz16cMyHtCCJAjauOryam7oeA9DrxnIU584ruL3mTMV3HP/PHx8vPj7m7fQoRnjBT+WXVLG458tJS0nn+GJnZg9+TISwu23SMkv0VpTWFdFRkURGeVF5FSXkV9TQX7jG3mFuZ4qcz2KxuqJ5+Ch3AhsDI1Qgx8RPgGEG/yJ9A2kk3+H7/9d7CLwl6rebGHVwWMs2HmAHcezcVOKsT0TuHn4AAZ1jmlWqGqtSU09wbvvr+XEyUL69InlwfuuaHJF2vOpKK7kjXveY+NX20ke34fZ839Lhwj7FaUTFyZB0A588MR8Fry2kLmH33TogFp6ei6PPv4ZCV3C+durN2Aw2OcNzmK18dm2vbyzahu1JjM3DuvP3WNTMPo6r2yA1WajxmKi3mbFqm1YbTY04OXmjpe7O55u7vi4e7Z4t4XNpkk9mcOiPYdZnnaUqnoTMR0CmT64N9cO7EV4YPPGFgAOHT7NB3PWsXfvKaKijNx95xhGjezukHNNXbGPV297h4qiCm574Qau/901uDWznpS4dBIE7UBxXim3JtzPyOtSePLjhxx6rI2bjvDsc1/Tv18nXnhuOj4+9pveX1JVw1srt7BgZxoGT09+NaQPt45MblLt+/bEarOx++RpVhzIYNXBDM5UVOPr5ckVvRO5ZkAPUrrE2aWOT2ZmAf+ev5lNm49iNPpy843DmTypeXNIzqWmspYPf/8xC99dQVxSDE9+/BBdBzS9nIlonlYdBEqpR4Df0HCHngbcprWuO9f2rhoEAHP/8CmfvfQ1f9/xMt0HJTj0WCtXHeCVVxeT1COal16cYff+4oz8Ij5cv5Ol+4+glGJSvx7MHNqPPrERLjNwWFVXz5Zjp1h/+Dgbj5ykuKoGbw93RnXvzJV9unF5UpcmVXT9JRnH8vno481s3pyBn683M64fzPXTB+ProJLOu1ft57U73+XMqSKue3gSt70wE28fKR/tTK02CJRSMcAmGmoX1SqlvgCWaK3nnWsfVw6C6ooaZiU+SFRCBK9vfN7hKzSt33CYF1/6jtjYYF547nqi7bjQyFm5peXM27ibr1MPUGu20DUihKnJPbmqbzeijfYdbHU2i9XGwdwCth47xbZjp9hz6jQWq41AgzcjusVzRe+ujOwWf8lrQJ+L1pr9+7P5zxfb2b4jEz8/b6ZfN4jp1w4mIMAxXXIVJZV88Ph8lv1rLbHdonhs7v30Gt60xY+EfbX2INgG9AMqgG+At7TWK861jysHAcCqjzfwyq1vc/+btzPtwYkOP97uPSf58/PfNDz188epJA+Id8hxqurqWbLvCN/uTmfvqYbZtj2jwxnbM4ExSV3oHhnmkGU7Ham63sSBnAJ2n8xld9Zp9p3Ko7rehFKQFBXOsMQ4LuvemX5x0Xi426/P3Gq1sXnLUT7/YgeHDp/GaPTlummDmDY12e53dmdprVn18Qbef+wjKkqqmPG7a7jlTzPkLqAVabVBAKCUegh4EagFVmitz7sitasHgdaaP0x+ibQN6fwj9RWHFKP7udzcUv74zAKyc0q48YZh3HrzCDzsNEHsl2QVlbE6/RirDx5jX3YeWoPR18CgzrEM7hxLn46RdI8Kw9CKqlKWVtdyNL+Io/mFpOee4UBuAScKS9AalILEiFAGdIpmSJdYUhLi6OBn/8lTlZV1LFm2j2++3UVBQQVRUUZ+NWMIV03oY9ficD+XdSiHvz/wIXvXHqRHSiIPv3sXCf3iHXY80TStNgiUUh2Ar4BfA2XAl8ACrfXHP9vuLuAugLi4uIFZWVkt2s7WpjCnmHsGPE5IdAfe3vaXFrnqqq018dbbK1i+8gDdEiN58veT6dQp1OHHLayoYsuxU+w4ns3O4znkllYA4O6m6BoRSreIEDqHB9M5LJhOIUYijQEEGrztPs5gs2mKq2vIK6skr6yC3NIKThaVcqqojBNFJRRV1ny/bYi/L71jI+gdG0mf2Aj6xUUR6OO4K/HDR/JYvHgva9Ydoq7OTL++Hbnu2kEMH5aIux3vNH6uqqya+X/+km/fWYZvgIHbXryRSXeNlyeCWqnWHAQzgKu01nc0vr4VGKq1vu9c+7j6HcFZO5bu4Q+T/sKEWWN4bM59LTbAumHjEV57Yxm1tSZm/iqFG2YOs9sjphcjv7ySgzkFHMgt4GBOAZlnSsgv/+lynj5enoQH+BEa4IfR14DRz4cAgzcGTw8Mnh54e3igFI2zfBUWmw2TxYLJYqXWbKaqzkRVXT3ltfWUVNVQXFVDaXUtFpvtJ8cJ8fclLsRIp1AjiRGhdIsMJTEylFB/X4f/PioqalmzNp0lS/dxLPMMBoMnY8ckMW3qQIfMA/gxq8XKsrlrmPf0fygvqmTiHWO57cUbMIbZd+a4sK/WHAQpwFxgMA1dQ/OAVK312+faR4LgBx89+wXzn/uSO/5yIzNnX9tixy0preaf765m9Zp0wsICuPvOy7l8TJLTnvapMZnJKirlVHEZeWWV5JdXUlhRTXF1DWXVtZTW1FJdb6bObOZC/8W9PNwJMHgTYPDG3+BFiJ8voQF+BPv7EB7oT7QxkChjANEdAgloRjmHprBYrKTuOsHyFQfYsjUDs9lK14RwJk3qz/ixvZq1uNDF0FqzY8luPpz9CScPZtN7ZA/ue+M2EpO7OPS4wj5abRAAKKX+TEPXkAXYA/xGa11/ru0lCH6gteblW95izaebeOrTh7l85ogWPX7agWzefmcVx44VkJgYwf/dMpJhQ7u22sc/tdaYLFbqLJaGQNAam9Z4uLvh5eGBl7t7qxuQtlptHDiQw+q16WzYcJiKyjqCgnwYN7YXV03o4/Cr/7MO78jgw9mfsG/dQaK7RnLHX25k1PShrfZ3Lf5Xqw6CSyVB8FOmejOzr3ye9C1HefqLRxkxbUiLHt9qtbFq9UE+mr+JvPxyuiaEM/PXQxk9qrtDB5TbM4vFyt59p9i46SibNh+ltLQag8GTEcMTGXNZEkMGd8HTs2V+tsf3ZzHvmf+w9btUjGGB3PzMDCbdNV6Wj2yDJAjaueqKGp686gWOph7nj58/wshrU1q8DRaLldVr0vnks63k5JQQEuLPlMkDuHpiP0JCml8Sob0rK6thx85Mtm7LJHXXCaqr6zEYPEkZksDoUd0ZmpJg1xneF5J1KIePn1/A+s+34Bvow4zfTeHah66WUtFtmASBC6gur+bJiS9yZMcxHnznTibffYVT2mGzaXbsPM7X36SyM/UEbm6KQQM7c8X4Xgwfltiib2atmdlsJT09l9RdJ0jddYKjGfloDSHB/qQM6cKwYV0ZNLCzQx/7/CUnD2bzyQsLWP/FVrx9vZj2wERmPD6FwGDXLgHSHkgQuIjaqlpemPk6O5bs4YYnr2XW8zOd+ihfdk4Jy5ensWrNQc6cqfj+CnfE8ERShiQ4bHZra1Rba+LQ4dPsT8tmf1o26emnMZksuLkpeibFMGhgPENTutK1a4RTxinStx3li//3DVu+TcXg583UByZy/aOTCQptX7O7XZkEgQuxWqy8ee8HLJ2zmmFTBvHEvAfwN9qnnHRT2WyatLRsVq9NZ8vWDEpKqr9/A0we0IkBAzqR1CPaIYXPnMFqtXEqu5iMjHwOHc7jYHoux4+fwWbTuLkpEhLC6dunI/36xtG/fxz+fs4JRJvNxs6le/j81W9J23CIgA5+TLn/Kq57aBKBIXIH0N5IELgYrTVfv7WE9x+fT0SnUJ7+8nd07d86qj7abJrDh0+zddsxUnefJCMjH5tN4+XlQWLXCJKSoknqEU3XrhFERxkdOiGqubTWFBVXkZ1dzMmTRZw4WciJE4UcP1FIXV3DwjUGgydJPaLp3SuGnj1j6NUrxmlv/GfVVtWyfN46vnl7KbkZeYTFhnD9o9cw8Tdj8fGXMYD2SoLARR3ccoTnf/U3KkuquOOlm5j24MRWN+uzqqqOfftPsW9/NocOnSbjWAEmkwUAb28P4uPDiOsYTMfYEGJjOxAd1YHw8ECCgnxa5NHFmpp6ioqqKCqqJL+gnLy8Mk7nlXH6dCmnskuorTV9v21goA9dOofRpXMY3bpF0a1bJB1jg1tNmOUcPc13/1jO8nlrqamoJWloItf+dhKjpqfIU0AuQILAhZWeKedvd/yD7Yt303tkD3435z5iEx23sE1zWSxWjp8oJDPzzPdX2Fmniikq+unsYU9Pd0JDA+jQwY+gQB8CA30IDDDg4+OFj68XBoMnnh7ueHi44eHhjlIKrTVaa6xWjclswVRvwWSyUFNrorq6nprqeioq6ygvr6GsvIayshpqakw/Oa67uxvh4YFERxmJiwuhY2wwHTuGEN8plOBg+62LbC8Ws4Xti3ez6L0VpC7fh4enO6NnDGPag1eTlJLo7OaJFiRB4OK01qz8aD3/ePhfWEwWbn5mBtc9PAmvFn4ipTlqa03fX4kXFlVSVFhJYVElZWU1lJfXUFFRR0Vl7fddMpdCKfD19cbPz5sAfwNGoy+BgT4Yjb6EhQYQGhpAaKg/kRFBhIUFtpor/PM5nZnP0g9Xs3zeWkoLygmJ7sDkuydw9Z3jCI7s4OzmCSeQIBAAFOUW8/YDc9jy7U6iEyK469VbGT51cKu7im0Om01TX2+mpsaE2WLFarFhsVjRNNQWUm4KN6Xw8vbAy8sDL093DIaWX47SEarLq1n/xVZWzl/PgU2HcXN3I2VSMlf/ZjyDr+qPu0zwc2kSBOInUlfs473f/ZuTB7Ppf3kvbnvxRnoO7ebsZokmMNWb2bFkN2s+28T2Rbsw1Znp2COGCbdexvhbRhMaE+LsJopWQoJA/A+rxcri91fx0bOfU15UyeCr+nPzMzMkENoAs8nMntUH2LhgK5u+3kFVWTXG8CAumzGM8beMpvvg1lvvSTiPBIE4p9qqWr77xwq+/Ou3lBdVkjy+D9MfuYZBV/ZrdU8YubLaqlp2LtvLlu92sm3hLqrLa/AN9GHYlEGMu2k0yeP6SNePOC8JAnFBZwPhv28upiSvlI7do5n6wETG3TTK6RPSXFVhTjE7l+5h66JUdq3Yj7neTECwP8OnDGbU9BQGjO/bpgb8hXNJEIiLZjaZ2fDlNr5+azFHdmbiZfBk1PShXHnb5fQb00vuEhyovraetI2H2bNqPzuX7+VE2ikAwuNCGT51MCOvTaH3yB5y5S+aRIJAXDKtNcf2nGDpnDWs+XQj1eU1hMYEc9mMYYyZOUL6oe3AarGSsfs4e9ceZO/aA6RtSMdUZ8bD053eI3swZGIygycOoFPPWPlZi2aTIBDNUl9bz5ZvU1n3+WZ2Lt2D2WQhrGMIQycNJGVSMv3H9m6RdZPbuuqKGo7sOMbBLUdI33qE9C1HqamsBaBTz1iSx/dl0JX96TM6CR8nl6EQ7Y8EgbCbqrJqNn+zg63f7WTXyv3UVdfjZfCk98geDBjXl+TxfUjoH4+7u2t3X1jMFk4dyuVoaiaHth0lfdtRsg7moLVGKUXnPnH0HNaN/pf3pu9lPekQYXR2k0U7J0EgHMJUb2b/+nR2Lt3D7tX7OXkgGwDfAB96pHSl57DuJA3tRtcB8e12NqvWmrLCCrIOZnPyQDYn0rI4vj+LzH1ZmOsbZjn7G/1IGppIjyGJ9BrRnR5DuuIXJAPwomVJEIgWUZJfyt41BziwuaHr48T+LGy2hv9TwZFGuiZ3Jr5XHPG9OtKpVywde8S0mS6Q+tp68o6fITcjj9yMPHKO5pF1KIfsQzlUllZ/v11AsD9d+nYiMbkLicmdSRzYhZjEKBlkF04nQSCcoqaylozdx8ncc5KMPcfJ3HuS7MO5WMzW77cJjjQSlRBBVJcIwmJDCOsYSmhMMMGRRoLCAjGGB2Hwddz4g6nORHlRJeVFFZQXVlBaUE7x6VKKT5dQnFfKmaxC8k8WUnam/Cf7GcMCiesZS8fuMcT1iKFTr1jie8cRHGmUgV3RKkkQiFbDYraQeyyfrIPZ5BzNIy8zn9PHC8g7XkDx6VJsVtv/7ONl8MQvyBd/ox9+Qb54+3rj7euFl8ELL4Mn7p7ueHh44ObuBo0VRrVuOJa53ozZZMFUa6Kupp666nrqquqoLq+hqqwa0zmK1PkG+BAS3YGwuFAiO4UR3imMqC4RxCRGEdM1UuZWiDbnYoNACpILh/Pw9KBTUiydkmL/52tWq5XSgnKKcoopLSinvLCCsjPlVBRXUl1eQ3VFDdXlNdTXmCgtKMdcZ8ZUZ8JitmJtLDCnFA1X5Erh6eWBp7cHHl4eeBm8MPh50yEiCJ+ECPyD/PBrDJag0ACCwgIJCg2kQ0QQwVEdZJF24bIkCIRTubu7ExodTGh0sLObIoTLktEsIYRwcRIEQgjh4iQIhBDCxUkQCCGEi5MgEEIIFydBIIQQLk6CQAghXJwEgRBCuDinBIFSyqiUWqCUOqyUOqSUGuaMdgghhHDezOI3gWVa6+uVUl6Ar5PaIYQQLq/Fg0ApFQSMBmYBaK1NgKml2yGEEKKBM7qGOgOFwL+UUnuUUh8qpf6nrKNS6i6lVKpSKrWwsLDlWymEEC7CGUHgASQD/9RaDwCqgdk/30hr/b7WepDWelBYWFhLt1EIIVyGM4IgB8jRWm9vfL2AhmAQQgjhBC0eBFrrfCBbKdW98VPjgPSWbocQQogGznpq6EHgk8Ynho4DtzmpHUII4fKcEgRa673ABZdPE0II4Xgys1gIIVycBIEQQrg4CQIhhHBxEgRCCOHiJAiEEMLFSRAIIYSLkyAQQggXJ0EghBAuToJACCFcnASBEEK4OAkCIYRwcRIEQgjh4iQIhBDCxUkQCCGEi5MgEEIIFydBIIQQLk6CQAghXJwEgRBCuDgJAiGEcHESBEII4eIkCIQQwsVJEAghhIuTIBBCCBcnQSCEEC5OgkAIIVycBIEQQrg4CQIhhHBxEgRCCOHiJAiEEMLFSRAIIYSLc1oQKKXclVJ7lFKLnNUGIYQQzr0jeAg45MTjCyGEwElBoJSKBSYBHzrj+EIIIX7grDuCN4AnAJuTji+EEKKRR0sfUCk1GTijtd6llBpznu3uAu5qfFmvlDrQEu1zklCgyNmNcKD2fH7t+dxAzq+t634xGymttaMb8tMDKvUScAtgAQxAIPBfrfXN59knVWs9qIWa2OLk/Nqu9nxuIOfX1l3s+bV415DW+kmtdazWOh6YCaw5XwgIIYRwLJlHIIQQLq7Fxwh+TGu9Dlh3EZu+79iWOJ2cX9vVns8N5PzaOO8GJwAABUlJREFUuos6vxYfIxBCCNG6SNeQEEK4uDYTBEqp55VS+5VSe5VSK5RS0c5uk70opV5VSh1uPL+vlVJGZ7fJnpRSM5RSB5VSNqVUu3lCQyl1lVLqiFLqmFJqtrPbY09KqblKqTPt9bFtpVRHpdRapVR64//Nh5zdJntRShmUUjuUUvsaz+3PF9ynrXQNKaUCtdYVjR//Fuiptb7Hyc2yC6XUBBqenrIopV4B0Fr/3snNshulVBINkwffAx7TWqc6uUnNppRyB44CVwA5wE7gBq11ulMbZidKqdFAFfCR1rq3s9tjb0qpKCBKa71bKRUA7AKmtYffn1JKAX5a6yqllCewCXhIa73tXPu0mTuCsyHQyA9oGwl2EbTWK7TWlsaX24BYZ7bH3rTWh7TWR5zdDjsbAhzTWh/XWpuA/wBTndwmu9FabwBKnN0OR9Fa52mtdzd+XElD3bMY57bKPnSDqsaXno3/zvt+2WaCAEAp9aJSKhu4CXjG2e1xkNuBpc5uhLigGCD7R69zaCdvJK5GKRUPDAC2O7cl9tNY3XkvcAZYqbU+77m1qiBQSq1SSh34hX9TAbTWf9BadwQ+AR5wbmsvzYXOrXGbP9Aw4/oT57W0aS7m/IRobZRS/sBXwMM/63Vo07TWVq11fxp6F4Yopc7bvefUeQQ/p7Uef5GbfgIsAf7kwObY1YXOTSk1C5gMjNNtZeDmRy7hd9de5AIdf/Q6tvFzoo1o7D//CvhEa/1fZ7fHEbTWZUqptcBVwDkH/lvVHcH5KKUSf/RyKnDYWW2xN6XUVTRUY52ita5xdnvERdkJJCqlOiulvGgol/Kdk9skLlLjgOoc4JDW+jVnt8eelFJhZ588VEr50PBAw3nfL9vSU0Nf0VBJzwZkAfdordvFFZhS6hjgDRQ3fmpbe3kiCkApdS3wNhAGlAF7tdZXOrdVzaeUupqGkuruwFyt9YtObpLdKKU+A8bQUJ2zAPiT1nqOUxtlR0qpkcBGII0fyuE/pbVe4rxW2YdSqi/wbxr+X7oBX2itnzvvPm0lCIQQQjhGm+kaEkII4RgSBEII4eIkCIQQwsVJEAghhIuTIBBCCBcnQSCEEC5OgkC4FKWUUSl1X+PHY5RSiy5x/1kXUwJdKbWusUT1lMbXv1hqXCk1qrEUcrss9yzaBgkC4WqMwH3N2H8WcLFrYdyktT4723gl0Ftr3ZeG8tVPAmitNwJXN6M9QjSbBIFwNS8DCY2VGV8F/JVSCxqv1j9pLD2AUmqgUmq9UmqXUmq5UipKKXU9MAj4pHGBJB+l1DNKqZ2NBfbeP7v/z7X3UuOibZMgEK5mNpDZWJnxcRrKDz8M9AS6ACMai5G9DVyvtR4IzAVe1FovAFJpuNLvr7WuBf6utR7cuHiLDw2FAy9ESo2LVqVVVR8Vwgl2aK1zABrvEuJpqIfUG1jZeIHvDuSdY//LlVJPAL5AMHAQWHiug7XlUuOi/ZIgEK6u/kcfW2n4m1DAQa31sPPtqJQyAP8ABmmts5VSzwKG82w/izZcaly0X9I1JFxNJRBwgW2OAGFKqWHQULdeKdXrF/Y/+6Zf1LjAyfXn+oZSaly0ZnJHIFyK1rpYKbW58XHNWhpKLP98G1PjwPBbSqkgGv5O3qCh22ce8K5SqhYYBnxAw4If+TSsUXAuf6eh1PjZ7qZ2VWpctG1ShloIB1BKrQMe01qnXsS28cCixgFnIVqcdA0J4RglwLyzE8rORSk1iobB5aIWaZUQv0DuCIQQwsXJHYEQQrg4CQIhhHBxEgRCCOHiJAiEEMLFSRAIIYSL+/+oPSebHqAceAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "two_d_gaussian_log_prior = pints.MultivariateGaussianLogPrior([0, 10], [[1, 0.5], [0.5, 3]])\n", "\n", "# Contour plot of pdf\n", "x = np.linspace(-3, 3, 100)\n", "y = np.linspace(4, 15, 100)\n", "X, Y = np.meshgrid(x, y)\n", "Z = np.exp([[two_d_gaussian_log_prior([i, j]) for i in x] for j in y])\n", "plt.contour(X, Y, Z)\n", "plt.xlabel('theta[2]')\n", "plt.ylabel('theta[1]')\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.15+" } }, "nbformat": 4, "nbformat_minor": 2 }