{ "cells": [ { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false }, "source": [ "# Purpose\n", "\n", "After writing a ton of separate functions to act on stock data, I realized a much better approach was to make a class that could hold data and also had different functions for prediction, plotting, analysis and anything else that might be needed. Having already developed all of these functions separately, I thought it made a lot of sense to combine them into a single class. This notebook will build up the class, covering many data manipulation, plotting, and even modeling concepts in a single example! \n", "\n", "After completing the class in this notebook, I then moved it to a separate Python script, stocker.py, so I could import it from an interactive Python session or a Jupyter Notebook session. My development process was therefore: \n", "\n", "1. Write code to do each desired task once (in Jupyter Notebook).\n", "2. Encapsulate code in functions (in Jupyter).\n", "3. Write a class to group all functions together (in Jupyter). \n", "4. Export the finished class to a Python script (I use Sublime Text 3 for editing entire scripts).\n", "5. Import the class into a different Jupyter notebook and test out the functions.\n", "6. Fix the functions that do not work and update the Python script as required in Sublime Text. \n", "\n", "The work in this notebook falls under steps 2 and 3. Another notebook (Stocker Development) covered step 1. The result of step 4 can be found in stocker.py. Step 5 is documented in Stocker Analysis Usage and Stocker Prediction Usage. Step 6 was done in Sublime Text and the script shows the final result. \n", "\n", "Stocker is still a work in progress, and I encourage anyone to try it out and let me know what doesn't work! " ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true, "hideCode": false, "hidePrompt": false }, "outputs": [], "source": [ "# Quandl for financial analysis, pandas and numpy for data manipulation\n", "# fbprophet for additive models, #pytrends for Google trend data\n", "import quandl\n", "import pandas as pd\n", "import numpy as np\n", "import fbprophet\n", "import pytrends\n", "from pytrends.request import TrendReq\n", "\n", "# matplotlib pyplot for plotting\n", "import matplotlib.pyplot as plt\n", "\n", "import matplotlib" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "MSFT Stocker Initialized. Data covers 1986-03-13 to 2018-01-22.\n" ] } ], "source": [ "micro = Stocker('msft')" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "End Date exceeds data range\n", "Enter a new end date1990-01-01\n", "Start Date is before date range\n", "Enter a new start date1992-01-01\n", "End Date must be later than start date.\n", "Enter a new start date1986-01-01\n", "Enter a new end date2011-01-01\n", "Start Date is before date range\n", "Enter a new start date1990-01-01\n", "Maximum Adj. Close = 39.65 on 1999-12-27.\n", "Minimum Adj. Close = 0.40 on 1990-01-12.\n", "Current Adj. Close = 91.61 on 2018-01-22.\n", "\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAvsAAAHyCAYAAAB1ZgEbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4xLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvAOZPmwAAIABJREFUeJzs3Xd4U9X/B/D3TdKkizaUgmyKiCBY\nZIoKKqKyiwzZiCCKAqKI8hNkiPpVRGUIooAs2aMMQZChIHsIyFCgMqQCLVCaltKZpLm/P0pjs0eT\n5iZ9v57Hx+bec8896SXp5577OecI6enpIoiIiIiIKODIfN0AIiIiIiLyDgb7REREREQBisE+ERER\nEVGAYrBPRERERBSgGOwTEREREQUoBvtERERERAGKwT4RERERUYBisE9EREREFKAY7BMRERERBSgG\n+0RE5FNDhw6FWq1GbGysr5viksmTJ0OtVkOtVvu6KURENil83QAi8m/79u1DXFyc8XVwcDASEhIQ\nGRnp8NgmTZrg0qVLxtfTpk3DK6+8YrWsTqfDpk2bsHHjRpw6dQq3b9+GwWBAdHQ0oqOj8cADD6BF\nixZo0aIFHnzwQYvjly9fjuHDhzv9vmbPno2WLVvikUcecfoYW06dOoUaNWq4dEx6ejqWL1+OX375\nBWfPnkVaWhqUSiWio6NRoUIFxMbGokWLFnjiiSdQsWLFYrcx0BW9/rNnz0a/fv0cHjN06FCsXLkS\ngHvXkIhIChjsE5FH5ebm4scff8SAAQPsljty5IhJoG/PpUuXMGDAAPz1118W+65du4Zr167h5MmT\niI+PBwAcPXrUasDvL7Zv345hw4YhNTXVZLtWq0VmZiauXLmCo0ePYsGCBahQoQL+/vtvizo6duyI\nAwcOoEWLFtiyZUtJNZ08IDEx0XiT6eyNCRGRLQz2ichjgoODkZubi1WrVjkM9letWgUACAkJQU5O\njs1yaWlpiIuLQ1JSEgDg8ccfR69evVC3bl2EhoYiIyMDCQkJOHToEHbs2IGMjAyH7Rw/fjw6dOhg\nt0zlypURFhaGgwcP2izTvXt3JCcno1KlSli3bp3dupx16NAh9O/fHzqdDjKZDN26dUP79u1Rs2ZN\nyGQyaDQanDlzBrt378b+/fudrpc8b+zYsRg7dqyvm0FEZBeDfSLymA4dOmD9+vU4dOgQEhMTbaY9\n5OXlYcOGDcZj7AXK06dPNwb6o0ePxrhx4yzKtGzZEoMHD0Zubi7i4+MRERFht52VKlVCvXr1nHpP\n9sopFArj/52tz5Fx48ZBp9NBLpdj7dq1aN26tUWZ1q1b4+2330ZKSgo2btzokfMSEVFg4gBdIvKY\nFi1aoFq1ahBFEWvWrLFZ7ueff0Z6ejpUKhW6dOlit87CFJQKFSpgzJgxdssGBwejf//+fpvDnpyc\njBMnTgAAOnXqZDXQL6p8+fJ47bXXSqJpRETkpxjsE5HHCIKAnj17AgBWr15ts1zhoMe2bds6nMnk\n2rVrAIDq1atDLpd7qKXSVPheAaBmzZpu1VE4s82BAwcAAAcOHDDOGFP4n61ZbxISEvDuu++iadOm\nqFKlCipXrowmTZrgnXfewblz55w6f3Z2NubMmYOuXbuibt26qFChAmrXro2nn34a//d//4dDhw5B\nFEWX39fhw4dRo0YNqNVq1K9fHwkJCS7X4WnOzMazf/9+DBkyBA0bNkSlSpVQsWJFPPzww2jVqhVG\njx6Nn3/+2eT3oVarTQaFDx8+3OL6TZ482eI8oihi/fr16N27N+rWrYvy5cujZs2aaNOmDb7++mtk\nZWXZbOPy5cuNdScmJkKr1WLOnDlo06YNatWqhbJly2LMmDHYunWrsZy9p3GFvv76a2P5kydPOixP\nRN7BNB4i8qjevXtj6tSpuHjxIo4dO4amTZua7L99+zZ+/fVXY1lHVCoV8vLycPnyZeh0OgQFBXml\n3VKgVCqNP5d0MDtr1ixMmjQJ+fn5JtsvXbqES5cuYcmSJRg/fjzeeecdm3UcOHAAr7zyCm7evGmy\nPSUlBSkpKTh16hTmzZvn8sw2O3bswMsvv4ycnBzUrl0b69evR7Vq1Vx7gz4wfvx4fPPNNxbbiw4q\n//7773Hjxg0EBwe7fZ709HT069fPeINXKC0tDUePHsXRo0cxd+5crFq1Cg0aNLBbV1paGgYMGIBT\np05Z7Gvbti0qVaqE5ORkLFu2DN27d7db1/LlywEAsbGxaNiwoYvviog8hcE+EXlU7dq10aRJExw/\nfhyrV6+2CPbXrFkDvV6PcuXK4fnnn8fhw4ft1tegQQPs378fGo0GY8aMweTJk02C4kBSp04d4yDn\nbdu2YeXKlejTp49LdUyYMAEjRozA8OHD8ccff6BRo0aYPXu2SRnz39/ixYsxYcIEAAU9y2+//TZa\ntGgBoGDA8IwZM5CWloaPPvoIZcqUwauvvmpx3sOHD6NLly7GgcXdu3dHp06dUKNGDeh0Oly8eBG7\nd+92eWag1atXY/jw4dDr9WjYsCHi4+MRHR3tUh2+sH37dmOgX69ePQwaNAh16tSBWq3G3bt38fff\nf2Pv3r3Yvn27yXEHDx7EjRs30K1bNwDWB5OXL1/e+HN+fj769OmDQ4cOAQAeffRRvP7666hVqxZu\n376NtWvXYvXq1UhKSkLnzp1x4MABVKlSxWa7hw8fjrNnz6Jnz57o1q0bKlasiOTkZOTn50Mul6Nf\nv3746quvsGfPHly9etXmTdeRI0eMs0S99NJLLv72iMiTGOwTkcf17t0bx48fx7p16/DZZ5+Z9MYX\nzsLTvXt3p3rpX3/9deOsMwsWLMCmTZvQvn17NG/eHI0bN0adOnUgk7mWkZicnIyzZ8/a3F++fHmT\ngKqkBAcHY+DAgZgzZw5EUcTQoUMxffp0tG3bFs2aNUOjRo0c9mhXrlwZlStXRmhoKAAgNDTU7uBh\njUZjHPQcHR2NHTt24P777zfuf/TRR/HCCy+gTZs2uHXrFiZMmIDOnTujQoUKxjJ5eXl49dVXodPp\noFKpsHLlSovxBs2aNUOfPn2g0WgQEhLi1O9jzpw5GDt2LERRxJNPPokVK1agTJkyTh1rj6PrX+jO\nnTtun2P9+vUAgGrVqmHHjh0IDw832d+iRQsMGjTIOHalUL169RAWFmZ87Wgw+eLFi42BfufOnbF4\n8WKTz8Nzzz2HZs2a4b333kN6ejrGjBmDpUuX2qzvr7/+wvTp0zFo0CDjtqK98v3798fUqVNhMBiw\nYsUKvP/++1brWbZsGYCCJ3OFqX1E5BvM2ScijysM5DUaDXbs2GHcfu7cOZw+fRoAnO6xjouLw7hx\n4yAIAoCClJAlS5Zg+PDhePzxxxETE4MePXpg6dKldqfwLOp///sfnnjiCZv/zZ8/38V37DmTJk1C\nu3btjK///vtvzJo1CwMGDEBsbCweeughDBkyBDt37vTI+ZYtW2bM5540aZJJoF8oJiYGH3/8MQAg\nJycHS5YsMdm/evVq43iDsWPH2h1YHBUV5VSw/+mnn2LMmDEQRRGdOnVCfHy8RwJ9wPH1L/xv69at\nbp/j1q1bAIBHHnnEItAvSq1WG/9tu+P7778HAERERGDmzJlWb3xfffVVPPXUUwAKBrxfvXrVZn0t\nW7Y0CfTNxcTE4OmnnwYArFixwur4i6ysLOMsUZ06deIKw0Q+xmCfiDwuKioKzz//PADTgbqFA3Pr\n1KmDRo0aOV3f6NGjsXv3bnTv3t3YY10oIyMDO3fuxIgRI9C0aVPs3r3bA+/Ad4KDg7Fy5UosWbIE\nLVu2tAjekpOTsWbNGvTo0QPPP/88rly5UqzzFf6+wsLC8OKLL9os161bN+OUpua/423btgEo6MW1\ntQKyswwGA0aNGoUvv/wSQEEKyA8//GDS++0PCmeEOnjwIP755x+vnOPGjRs4f/48gIJefXtB9cCB\nAwEU/H737t1rs5wzvfAvv/wygILFv6zVtWHDBty9excAU3iIpIDBPhF5ReHg2+3btyM9PR0GgwFr\n164FAPTq1cvl+ho2bIgFCxbgn3/+wdatW/HJJ5+ge/fuqFSpkrHM9evX0aNHD+zZs8duXbNnz0Z6\nerrN/3y9UJIgCOjcuTN++uknXL58GatWrcL//d//oU2bNia927///jvat29vMSDWFYWz7Dz88MN2\nB4kqlUrj4E7zFJjCpzUPP/ywwzUO7MnPz8fgwYOxcOFCAMDbb7+NWbNmeXwWJkfXv/A/V8dLFFV4\nrEajweOPP45BgwZh6dKluHDhgqfehsl1aNasmd2yRcfO2EthsjVTU1EdO3Y0jpsoHIRbVOG26tWr\nG58CEJHvMNgnIq9o164dypYta1xAa/fu3UhOToZMJitWDq9KpcITTzyBESNGYMGCBTh79iw2btyI\nhx56CACg1+vx7rvvujW9oxSp1Wq0a9cOH3zwAdasWYMLFy5g1qxZxl7c5ORkfPrpp27Xn5aWBgBO\nDXq97777ABTkshf9/d6+fdtkv7uSkpKMi60988wz+Oijj4pVny899dRTmD59OsLCwpCbm4sNGzZg\nxIgRaNasGR588EEMGzYMR44cKdY5Cq8d4Pj6Fb02RY8z50zKjVKpNN7Mb9682WRsw6VLl4xjCPr2\n7VusFCUi8gwG+0TkFUql0jijyKpVq4wDc1u2bImqVat67DyCIKBVq1bYsGEDypYtCwC4ePEizpw5\n47FzSElwcDBeeuklLFiwwLht06ZNMBgMxarXmaDM0Q1UcQO7ChUq4LHHHgNQkCo0derUYtXna4MG\nDcLp06cxZcoU480vUJDPv2LFCrRt2xYjRowo9rUDiv+7L+TsYPcBAwYAKBjDUXTO/cKBuTKZDP36\n9fNIm4ioeBjsE5HXFPb+HTlyBJs2bTLZ5mkVK1ZEmzZtjK8vX77slfNIxbPPPmu8aUpPT4dGo3Gr\nnsIANCUlxWHZwkGnkZGRJsFluXLlABTkkBeHSqVCfHy8MeD/5JNPMH369GLV6WvlypXD66+/jlWr\nVuHy5cs4cOAAxo0bZ5zNaOnSpZg3b55bdRdeO8Dx9Sua6lX0OHc9+OCDePzxxwH8F+Dn5+cbb+pb\ntWrlF2shEJUGDPaJyGuaNWuGBx54AEDB9IyhoaHo3Lmz185XNH+/NKQPFA4CBSx7ZJ19/4XpT3/+\n+Sfy8vJsltNqtcbcfPOpIAtXfD1z5gwyMjKcOq8t4eHhWLt2LZo3bw4A+OijjzBjxoxi1SkVgiCg\nfv36GD16NHbs2GEcdFw4c03Rcs4oeh2OHTtmt+zx48etHlcchb37J06cwNmzZ7Fz504kJycDKJii\nk4ikgcE+EXlV3759oVKpoFKp0KVLF7vTEFrjSu79H3/8YfzZlRVapcKV95qdnW1cZTciIsKit7Zw\nsK1Wq7VbzzPPPAOgYLrEwrnhrdm4caMxkC88plDhVKFardYkvchdZcqUQXx8PB599FEABVOCzpw5\ns9j1SklMTAxiYmIAAKmpqSb7ig6Utnf9KlasiLp16wKwzJ0398MPPwAouCksnIazuLp06YLIyEgA\nBb37hT38ZcuWRceOHT1yDiIqPgb7RORVo0aNws2bN3Hz5k18++23Lh/foUMHrFq1ym6vMwAsWbLE\nOAtPtWrVjL3N/uT8+fPo2rUr9u3bZ7dcfn4+3nvvPeP0hh06dLDoDS4ckHnlyhW7NxH9+vUzLuI0\nadIkJCYmWpRJTEw0rrAbEhJi7NEt1KtXL+OqrFOmTMGuXbtsnk+j0Ti1HkKZMmWwbt06Y8A/ceJE\nzJo1y+FxUrF+/XpkZ2fb3H/lyhVjqpn5jWlUVJRxlWNH03a+9tprAApSuWwNTF+0aBF+++03AAUz\n6XgqvSYkJMQ42H7lypXG1YB79uzpd1OlEgUyrqBLRJKWkJCAN954A2PGjEGHDh3QvHlz1KpVC5GR\nkcjJyUFCQgI2btyIX3/9FUBBCsTnn3/ul2k8oihi9+7d2L17N2JiYtC+fXs0bdoUVatWRWhoKNLT\n03Hq1CksX77cOGWmWq02roBbVPPmzbF8+XKkpKTggw8+QK9evYzTYioUClSvXh1AQU75p59+ipEj\nR+LmzZt45plnMHLkSGM+9uHDhzF9+nTjmIBPPvnEZPVcoCDXft68eXjhhReQm5uLF198ES+++CLi\n4uJQrVo16PV6XL58Gbt378amTZtw8OBBp568FPbwd+/eHb///rvxhmPEiBFu/oZLzocffoiRI0ei\nffv2aNGiBR544AGEh4cjLS0NJ06cwLx586DT6QDAYm0ChUKBxo0b4/Dhw1i2bBkaNGiA2NhY44rT\nZcuWNT7JGThwIOLj43Ho0CHEx8fj+vXrGDJkCGrWrInU1FTEx8cb8+jVajU+//xzj77PAQMG4Pvv\nvzeZ4YcpPETSwmCfiCStSpUq0Gg0SE9Px4oVK7BixQqbZcuWLYuvvvrKb1MIQkNDoVarkZ6ejitX\nruC7776zW75OnTqYP3++1Z7abt26Ydq0acZ6itZVrVo1k9mKBg4ciIyMDHz00UfQaDSYOHGiRX1y\nuRzjx4/Hq6++arUtLVq0wLp16/DKK68gNTUVa9aswZo1a5x96zZFRERg3bp16NatG44dO4YJEyZA\nJpNh+PDhxa7b2zIyMrB69WqTheWKksvlmDhxIjp06GCx75133kHv3r2h0Wgsfufvv/++cS0IuVyO\nlStXol+/fjhw4AAOHTpknPqyqMqVK2PVqlXGJzCeEhsbi0aNGhlT6Bo2bOjUXP1EVHIY7BORpO3b\ntw+nT5/Gb7/9hiNHjuDChQtITk5GdnY2QkJCEBUVhXr16uHZZ59Fjx49nJonXKpiYmJw8eJFHDhw\nAPv27cPx48dx8eJF3L59G1qtFmFhYahcuTJiY2PRsWNHdOzY0djbay48PBw7duzAtGnTsHv3bly9\netVuWslbb72Ftm3bYu7cudi7dy+SkpIAFAx6fuqppzBkyBDjYF5bnn76aZw8eRKLFi3Ctm3bkJCQ\ngIyMDERFRaFSpUp4/PHH0b17d5fHU0RERGD9+vXGgH/cuHEQBAHDhg1zqZ6S9PPPP2P37t3Ys2cP\nzp07h1u3biEtLQ0hISGoXr06WrRogVdeecWYc2+ubdu2+PHHH/Hdd9/hjz/+QGpqqvFJgDm1Wo2f\nfvoJ69evx5o1a3Dy5EloNBqEhYXhwQcfRMeOHfHqq68a07U8rVevXsZgnyvmEkmPkJ6eHhgrzxAR\nEVGJe+utt7BkyRKEhITg3Llzfn3DTRSIOECXiIiI3JKZmWlc9TguLo6BPpEEMdgnIiIit8yfP984\nK9TgwYN93BoisoY5+0REROQUvV6Pf//9F3l5eThw4ACmTJkCoGCAduFCaEQkLQz2iYiIyCnXr19H\n48aNTbaFhobiyy+/9FGLiMgRpvEQERGRy6Kjo9G2bVts27YN9erV83VziMgGzsZDRERERBSg2LNP\nRERERBSgGOwTEREREQUoBvtERERERAGq1AX7aWlpvm4CeYlGo8HKlSuh0Wh83RTyAl7fwMdrHNh4\nfQMfr7E0lbpgXxQ5HjlQiaKIvLw8XuMAxesb+HiNAxuvb+DjNZamUhfsExERERGVFgz2iYiIiIgC\nFIN9IiIiIqIApfB1A4iIiIio+LKzs5GVleWz8+t0OjRu3Bh5eXlISUnxWTsCSVhYGEJDQ4tVB4N9\nIiIiIj+Xnp4OQRAQHR0NQRB80ga9Xg+lUgm1Wg2FgiFmcYmiiIyMDKSnp0OtVrtdD9N4iIiIiPyc\nTqdDZGSkzwJ98jxBEBAZGQmdTlesehjsExEREREFKL8J9j///HOo1WqcPXsWAHDp0iW0adMGTZo0\nQevWrXH+/Hkft5CIiIiISFr8Itg/efIkjh07hqpVqxq3jRw5Ei+//DKOHz+Ot99+GyNGjPBhC4mI\niIiIpEfywX5eXh5Gjx6Nr776ypiHlpKSglOnTqFXr14AgM6dOyMxMRGJiYm+bCoRERERedm+ffug\nVquRnp5u9bUnxcbG4ttvv/V4vSVJ8kOlP/vsM/Ts2RMxMTHGbdevX0elSpWMI70FQUDVqlVx7do1\n1KhRw2596enpXMY5QGk0GmRmZkKj0fi6KeQFvL6Bj9c4sPH6epdOp4Ner/dpG/R6PQwGg8vtOHr0\nKDp16oRWrVphzZo1Dsvn5+cb/6/X69GkSRP89ddfCAsLc+ncd+/excyZM7F582ZcvXoVkZGRqFu3\nLl555RV07NjR2MnsznvyJJ1Oh9TUVONrQRAQFRXl9PGSDvaPHj2KEydOYNKkSRb7zEebOxvA79q1\ni9NBBajMzEycPn0aABAeHu7j1pCn8fqWEFEEfDSbB69xYOP19a7GjRtDqVSabJPduVOibdCXKYPs\n7OyCc8ucTx5ZtGgRBgwYgDVr1uDs2bOoXLmy3fKZmZkAgDt37hjjP5VKhTsuvN+MjAz06tULd+/e\nxahRoxAbGwuFQoEjR45g4sSJaNCgASIiImAwGJCTk+OVpwbOun37Nk6cOGF8rVKp0KdPH6ePl3TU\ne+DAAVy4cAENGjQAACQlJaF79+6YMGECkpKSoNfroVAoIIoirl+/bpLTb0vr1q0RGRnp7aaTDxT2\nFrVt29alO17yD7y+3hd88CDKfvMNBL0eaUOHIueZZ0r0/LzGgY3X17vy8vIs5mKP7N69RNuQun07\nACAiIsLpjtWsrCz8/PPP2LlzJ9LT07FlyxaMHj3apMzOnTsxbtw4JCUloUmTJujduzcAIDIyEpGR\nkdi/fz+6dOmCS5cuOR3jffrpp0hKSsLhw4dRqVIl4/ZGjRqhf//+CA4OhkKhgEwmQ0hIiPF3e+3a\nNYwZMwb79u2DIAh49tlnMXnyZFSoUAEA8Oeff2LcuHE4efIkBEHA/fffj6lTp6JRo0YACjqyP/74\nY5w8eRJRUVHo2LEjxo8fj7CwMJtt1Wq1iIuLM752dXpVSQf777zzDt555x3j69jYWKxevRr16tXD\n8uXLsXr1avTr1w+bNm1C9erVHabwAIBareaXTAALDw9HVFQUypUr5+umkBfw+nqRwYDQxYsh5OUB\nAMovWoSszp0Bs55Cb+M1Dmy8vt6TkpJiGWCX8FO6wuBYoVA4Hexv2rQJtWvXxkMPPYTevXvj//7v\n/zBmzBhjQHvt2jUMHDgQgwYNwuDBg/HHH39g/PjxAAC5XA6FQgG5XG7y2hGDwYANGzagR48eqFat\nmsV+85umwvckiiIGDBiAsLAwbNmyBXq9Hu+++y5ee+01bNmyBQAwdOhQxMbGYvr06ZDL5Thz5ozx\nxuGvv/5Cz5498cEHH2D27Nm4ffs2Ro8ejbFjx9odFxAUFFSsz4ykg317ZsyYgWHDhmHatGkoU6YM\nvvvuO183iYjIbwlJSRCK5IQiKwuyxEQYatf2XaOIKOAtW7YMPXv2BAA899xzyMrKwp49e9CqVSsA\nwMKFCxETE4PJkydDEATUrl0bZ8+exYwZM9w+Z2pqKtLT01Hbxe+33377DX/99RdOnTplzCaZO3cu\nHnvsMZw4cQKNGzfGtWvXMGLECDz44IMAgFq1ahmPnzlzJl588UUMGzbMuG/KlCno2LEjpk2bhuDg\nYLffkz1+FeyfOXPG+HPt2rWxc+dOH7aGiChwCLm5FtvEoCAftISISosLFy7g+PHjWLp0KYCCJwPd\nunXDsmXLjMF+QkICmjZtapK60qxZs2KdtzDP39V0mISEBFSpUsUkbbxu3bqIjIxEQkICGjdujGHD\nhuGtt97C6tWr0apVK3Tp0gU1a9YEAJw6dQqXL1/G2rVrTdpiMBiQmJiIOnXqFOt92eJXwT4REXnJ\nvUF1RBQ4sjZu9HUT7Fq6dCn0ej0eeugh4zZRFBEUFIT09HSo1WqvzKAYHR0NtVqNv//+26XjRFG0\neoNQdPvYsWPRo0cPbN++Hb/88gsmT56MBQsWIC4uDgaDAQMHDsQbb7xhUYcz407dxWCfiIggK5rC\nc4/iyBHoikx7TER+xiz33OtcmJ5Sr9dj1apV+N///ofWrVub7CucmWfIkCGoW7euMR++0LFjx4rV\nTJlMhm7dumH16tV4//33TQboAgWDhlUqlUX+f926dXHt2jVcu3bNGJyfP38eGRkZJr3yDzzwAB54\n4AEMHz4cgwcPxvLlyxEXF4dHHnkE58+fx/3331+s9rtK8otqERGR9ynuzaJhsu3AAR+0hIhKg23b\ntiE9PR0vvfQS6tWrZ/LfCy+8YEztGTRoEP755x988MEHuHDhAtauXYsVK1bYrTspKQnNmjXD8ePH\nbZaZOHEiqlSpgueeew4rV67E+fPncenSJSxduhRPPvmkcXrPolq1aoX69evjtddew8mTJ3H8+HG8\n8cYbaNGiBRo1aoScnByMHj0a+/btw7///ovDhw/jxIkTxhuBt99+G7///jvee+89nD59GpcuXcLW\nrVstZh/yNAb7REQE3JuFpyh98+Y+aAgRlQZLly5Fq1atrE6VGRcXhzNnzuDkyZOoVq0alixZgm3b\ntqFly5ZYuHAhJkyYYLdunU6HCxcuGOf8t0atVmPnzp3o2bMnvvrqKzz11FNo37491q1bh48//thq\nuwRBwPLly6FWq9GxY0d06dIFMTExWLRoEYCC2YA0Gg2GDh2Kpk2bYtCgQXjuuecwduxYAMDDDz+M\nLVu24NKlS+jQoQOeeuopfPrpp6hYsaIrvzqXMY2HiIhgqF8f8j/+MN2oUvmmMUQU8FavXm1zX8OG\nDU0WsWrXrh3atWtnUqZ///7Gn7VaLQRBQGhoKACgRo0aTi2CFRkZiQ8//BAffvihzTJFJ4cBgGrV\nqmHlypVWyyqVSixYsMDuORs3bowNGzY4bJsnsWefiIggWpmbWnblSsk3hIjIBbdu3cLWrVtRq1Yt\nixWEqQB79omICEJ+vuU2K4N2iYikpEePHsjMzMTUqVN93RTJYrBPRESAwWCxSbAyQI2ISEr27Nnj\n6yZIHtN4iIgIsn/+sdx25gzknJGHiMivMdgnIiLIDx60ul01c2YJt4SIiDyJwT4REdkk3Lzp6yYQ\nkRMEQYDBSjoe+TeDwWB11V5XMNgnIiIi8nMRERFITU1lwB9ADAYDUlNTERERUax6OECXiIiIyM8p\nlUpERkZCo9FAFEWftEGn0+GFLqnSAAAgAElEQVT27dvQarUICgrySRsCiSAIiIyMLPaUogz2iYiI\niAKAUqlEdHS0z86fmpqKEydOIC4uDuXKlfNZO8gU03iIiIiIiAIUg30iIiIiogDFYJ+IiIiIKEAx\n2CciIiIiClAM9omIyCmykyeh2LEDyMnxdVOIiMhJnI2HiIgAhQLQ623uDoqPh/KbbwAAyho1kL1w\nISCXl1TriIjITezZJyIiIDjY7u6g5cuNPwuJiVBs3+7tFhERkQcw2CciIsDBIjxCWprJa/nvv3uz\nNURE5CEM9omIyGGwX+zyRETkEwz2iYjIfvBuZZ/AYJ+IyC8w2CciIruEf/+13Mhgn4jILzDYJyIi\nu8F76ODBLpUnIiLpYLBPRET2g3drU3Iy2Cci8gsM9omIyPXg3WDwTjuIiMijGOwTERF76omIAhSD\nfSIi4tSbREQBisE+EREx2CciClAM9omIiME+EVGAYrBPREQM9omIAhSDfSIicjl4F7KyvNQQIiLy\nJAb7RETkMtlff/m6CURE5AQG+0REpR1TcoiIAhaDfSKi0o7BPhFRwGKwT0RU2jHYJyIKWApfN8AZ\nXbt2xc2bNyGTyVCmTBlMmTIFDRo0QGxsLIKDg6FSqQAAo0aNQrdu3XzcWiIiP8Ngn4goYPlFsL9o\n0SKo1WoAwE8//YQ333wTe/fuBQD88MMPqFevni+bR0Tk3xjsExEFLL9I4ykM9AEgIyMDMplfNJuI\nyD8w2CciClh+0bMPAK+//jr2798PAIiPjzduf+211yCKIpo0aYIPP/wQ0dHRdutJT0+HyD9sAUmj\n0SAzMxMajcbXTSEv4PX1orw8BOv1Lh+Wmprq0WbwGgc2Xt/Ax2tcMgRBQFRUlNPl/SbYnzt3LgBg\nxYoVmDhxItauXYutW7eiWrVq0Ol0+N///oehQ4di7dq1duvZtWsXFAq/edvkgszMTJw+fRoAEB4e\n7uPWkKfx+nqPXKdDjzt3XD5u8+bNHm0Hr3Fg4/UNfLzGJUOlUqFPnz5Ol/e7qLdv374YNWoUNBoN\nqlWrBgAICgrC0KFD0bRpU4fHt27dGpGRkd5uJvlAYU9C27ZtXbrjJf/A6+s9Qm4u1D/84PJxcXFx\nHm0Hr3Fg4/UNfLzGJUMQBJfKSz7Yz8jIQFZWFipVqgSgoCcpKioKKpUK6enpxnz++Ph4xMbGOqxP\nrVbzH2AACw8PR1RUFMqVK+frppAX8Pp6SXY25G488fTGdeA1Dmy8voGP11h6/CLYHzBgAHJzcyEI\nAqKjo7Fq1SqkpKTgpZdeQn5+PgCgRo0amDNnjo9bS0TkhziOiYgoYEk+2K9atSp27dpldd++fftK\nuDVERAHI3WBfFAEXHycTEVHJ4hyWRESlXXGCfSIikjQG+0REpR2DfSKigMVgn4iotHM3aDcYPNsO\nIiLyOAb7RESlHXv2iYgCFoN9IiJyD4N9IiLJY7BPRFTKCUzjISIKWAz2iYhKO6bxEBEFLAb7RESl\nHXv2iYgCFoN9IqLSjj37REQBi8E+EVFpx2CfiChgKXzdACIi8jz5oUOQHz+O/GbNkN+8uf3CTOMh\nIgpYDPaJiAKM/NgxBI8dCwAIio9H7vTpyG/UyPYB7KEnIgpYTOMhIgowynnzTF6rPvvM/gFuBvtu\nT9lJREQlhsE+EVGAkf39t8lrISXF/gFM4yEiClgM9omISjsG+0REAYvBPhFRoAkKcq18fr532kFE\nRD7HAbpERIFGoQB0OovNQmIilEuWAEFB0L76KsTo6ILter1752HPPhGR5DHYJyIqDQwGhLz/PoQb\nNwAAsmvXkPPNNwX7rNwYOFsnERFJG9N4iIhKAfmpU8ZAHwBkf/4JaLUFL8x79kNCkP/YYyXYOiIi\n8hYG+0REpYBw65blxsKBueY9+woFch1N1wmwZ5+IyA8w2CciKgWEzEzLjfcG5prn7IsKBSCTIf/R\nR+1XymCfiEjyGOwTEZUCsnPnLDfe69kPWrHCdLuzs/lwUS0iIsljsE9EVAoofvnFYpuQkQEYDJAf\nP266/c6dgh9kDv5EMNgnIpI8BvtERKWUYt8+IDfXckdeXsH/BcF+BQz2iYgkj8E+EZG/0WoRtG4d\ngpYtA+7edbsa2fnz9hfUchDsCwz2iYgkj/PsExH5GdXnn0OxaxcAIGjLFmSvWGEamOfkOFWPYtcu\n6Dp3tl2APftERH6PPftERP7EYDAG+gAgJCdDduqU29UFT51qe6ejlXU5Gw8RkeQx2Cci8idWeu1V\nc+a4XZ1w9arNfXJHNxHs2ScikjwG+0REfkSwEuzLzp/3zsk4Gw8Rkd9jsE9E5E8c5eN7MAAXIyLs\nF2AaDxGR5DHYJyLyI9Z69k0UY3Yec9oBA+wXYM8+EZHkMdgnIvIjsr//trvfuCCWB+TXq2e/AHv2\niYgkj8E+EZEfUc2cabHNUKeO8WeHPf+ukMvt72fPPhGR5DHYJyLyJ1qtxSYxJOS/F9ZWxHUX59kn\nIvJ7DPaJiPxc0ZVsFfv2ea5iR7PxMI2HiEjyGOwTEfm7IsF+0Nq1nquXPftERH6PwT4Rkb/zcA97\nftOmBT846tknIiLJ4zc5EZG/83APu3bo0IIfHAT7AtN4iIgkzy+C/a5du+KJJ55Ay5Yt0b59e5w+\nfRoAcOnSJbRp0wZNmjRB69atcd5bq0gSEUmZh4NuQ61aAACxXDn7BZnGQ0QkeX4R7C9atAgHDx7E\n/v37MXz4cLz55psAgJEjR+Lll1/G8ePH8fbbb2PEiBE+bikRkQ94q4fdURoPg30iIslT+LoBzlCr\n1cafMzIyIJPJkJKSglOnTmHDhg0AgM6dO2P06NFITExEjRo1bNaVnp4OkX+gApJGo0FmZiY0Go2v\nm0JewOtbIFivt9imzctDamqqzf2uKqzLUX130tKQV6RscfEaBzZe38DHa1wyBEFAVFSU0+X9ItgH\ngNdffx379+8HAMTHx+P69euoVKkSFIqCtyAIAqpWrYpr167ZDfZ37dplPIYCS2ZmpjHFKzw83Met\nIU/j9S3Q28oKuWlXr2L75s0297tq8726HNV3YP9+JF+/XuzzFeI1Dmy8voGP17hkqFQq9OnTx+ny\nfhP1zp07FwCwYsUKTJw4EePGjYNgNi2cMz32rVu3RmRkpFfaSL5V2JPQtm1bl+54yT/w+hZQz59v\nsS2scmXExcXZ3O+KzA4djHU5qq/FE08gr3DmHg/gNQ5svL6Bj9e4ZJjHv474TbBfqG/fvhg1ahQq\nV66MpKQk6PV6KBQKiKKI69evo2rVqnaPV6vV/AcYwMLDwxEVFYVyjgYWkl/i9QXkVp5MygyGgt+J\nVmt1vyuUnTub/H7t1ac2GKD38LXgNQ5svL6Bj9dYeiQ/QDcjIwPJycnG15s3b0ZUVBTKly+P2NhY\nrF69GgCwadMmVK9e3W4KDxFRIBLupdIEbdlS/MrMgntd1642iwZt3Fj88xERkVdJvmc/IyMDAwYM\nQG5uLgRBQHR0NFatWgVBEDBjxgwMGzYM06ZNQ5kyZfDdd9/5urlERD6j/Prr4lcSFGTyUvfSS5Dd\nuAFZYiKEpCSTfbKEhOKfj4iIvErywX7VqlWxa9cuq/tq166NnTt3lnCLiIikxzwQt0WsXNluWdGs\nZ1+MikLu5MkAgLBWrdxuHxER+Ybk03iIiEq1zEzIjx2DcONGwevgYKvFVLNmOVefWc+9y/uJiMiv\nSL5nn4io1LpzB6FvvAEhORlQqZAzZYrNBbTkhw45VaUYGQm78zgw2CciCijs2ScikqignTsLAn0A\nyMuDasaMYq9aKzoK5rkOCRFRQGGwT0QkUUHr1pm8ll25YrNn31PMc/aJSMIyMiA/cgTC7du+bglJ\nGL/ViYgkSixT5r+e/UL5+cWrVOagj4dpPER+Qbh2DSFvvgkhPR0IDkbO1Kkw1K/v62aRBLFnn4hI\nosSwsJI/KYN9Ir+g+OWXgkAfAHJzLZ4EEhVisE9EJFFCdrbnK5XL7e931PNPRJJgvqidYtcuyC5e\nRPDIkQgZNgyykyd91DKSGn6rExFJlFcWrVIqkTdhgu39gt25eohIKqx8VoPHjoX85EnIzp5F8Ecf\nFT/tjwICg30iolJEVCigf/ZZ5MyYAahULh2b36SJaV3VqnmyaUTkiogIi01CSsp/P6elOb3YHgU2\nBvtERKWQoWFD6Dp3dukY/VNPmbwWIyM92SQicoHDaXQB9uwTAAb7RESliuLAAePPYnS0awebBxd6\nvQdaRERucTT+BoDAzyiBwT4RUemSl2f8UdepE6BUGl/rn3/e/rHmc/AzkCCSNPmxY75uAkkAg30i\notIqLAw5U6civ2VL6F94AXlvvWW/PIN9Ir+i2LPH100gCeCiWkREgSIsDMjKsl+mTBmTl4bYWOTG\nxjpVvWiWNsAUASJp0z/xhK+bQBLAnn0iIokSq1d37QBvB9/mOcIc/EdEJHkM9omIJEp0dYErJ4L9\n/Pr13WwNLOf1FkX36yIir5PduuXrJpAEMNgnIgoUTvS0a4cMcb9+8559BvtEvuPE50+xeXMJNISk\njsE+EZFUeWE1W8P997t/sHl7DAbLMnfuABkZ7p+DiIg8isE+EZFUuZrGYy401DPtKGTeHrOexaAV\nKxDWpQvCuneHYutWz56biExxgDw5icE+EZFUFbNnX/R2sF+0Zz87G8p58wpuAHQ6qL76ynrPPxF5\nhOzyZV83gfwEg30iIomSXbxYrOMNrs7m44idAbryhASzkxsg3Lnj2fMTUYHsbKeKiTVqeLkh5A8Y\n7BMRSVFmZrGr0A4YYNIbr+vdu1j1mc8OJBTpuRfNF9wCmGZA5C1arVPFhMRELzeE/AEX1SIikiDF\n/v3FrkOMjkbOtGkI2rQJYtWq0Pbv74GWFVHYc6/VIvizzyz3OxmQEJGLXEnxy8wEwsO91xaSPAb7\nRERS5IlpLeVyGBo2RF7DhsWvC7A6YFi4ehWyf/+FkJxsuS8vD5yck8gLXPh+CP74Y+R+8YUXG0NS\nx2CfiEiKzOe0d0dxZ/Nxoj7V3LmQXbhgtbj899+LN9UnERWb/OhRXzeBfIw5+0REUuSJOfY9Hexb\naZPs779tnkf53XeePT8RAQAELmhHLmCwT0QkRU4E6mL58sWuwyXWnjaIIqBUevY8RETkMQz2iYik\nyImefSElxX6BEujZh8EA5Od79jxEZB979skFDPaJiCRIdJCzb6hf33EdJZCzL6SmAllZnj0PEdnH\nYJ9cwGCfiMgPiUFBjgt5Iu/fifoEzqdPRCRZDPaJiKTIUaDuTJ68J2b0KcrWk4K8PM+eh4jsY88+\nuYDBPhGRFDn6Y+5MsO/hNB6baUFcPIuoZLkY7Dsc30MBjcE+EZEUhYTY3S36omefiPxS0IoVvm4C\n+RCDfSIiKXKUB69UIvfLL+2XKaE0HkOdOp49DxHZ52LPftCGDV5qiJ/IyoJq0iSovvwSyM72dWtK\nHFfQJSKSIMFRHnxQEPKbNbO521CvnueDfRvjCPKbN4csIcFyh0rl2fMTUQHm7BsJKSkFq3XXqmW9\n40EUEdaxo/GlYssWZP32W8k1UAIY7BMRSZGDYF9U2P/6zhs92pOtKWDr5sHWYGIGJETewc8WAEC4\nfRuhgwYBmZmATIbczz5D/mOPmZSR/f235XEaDcSoqJJqps8xjYeISIoc9ezfC7z1cXFWdxscra7r\nDltBvcFgfTsDEiLv4GcLABC0fHlBoA8ABgOCx4yxmDBA0GgsjhOuXy+J5kkGg30iIgkSHOWV3uvZ\n1w4YYH2/MwN4XWVrNh5bgQcDEqISZ2vBPeHGjRJuifcFbdtmsS1kxAiHefnBEyd6q0mSJOk0ntzc\nXLzyyitISEhASEgI7rvvPkybNg01atRAx44dce3aNZQpUwYA0KdPHwwfPtzHLSYi8oD8fCjnzrVb\nREhNBQCI5csj/+mnId+z57/DGzcu2WDfFgb7RN5h5bOVs3AhcPcuDPXrI+y55yz2CxkZECtWLInW\nlZycHItNsoQEKA4fhr51awCAosh3YyEhLc3rTZMSSQf7ADBw4EA8//zzEAQB8+bNw8iRI7Hh3qjy\nKVOmoF27dj5uIRGRZ8mPH3dYRrFvHwoTffKGDoXqzh3IT55EfqNGyP3iC+80zNXcfAb7RN5h5bNl\nqFLF/qD4UjQVr2LLlv+CfSu9/wAK0g89vBaJVEk62A8ODkabNm2Mr5s1a4bvvvuuWHWmp6dD5B+g\ngKTRaJCZmQmNlfw88n+l6fpGrVuHfAdTb+bL5Ui917uPoCBgwoT/dt6545V2ydLTobLSrqzMTJSx\n0V5jG51Qmq5xacTr6zlyjcbis5iq0Rif6AVb+TxqsrORf+/zKNy9i/DNm4GgIGTGxUEMDvZIu0r0\nGoui1fcJADlyOTT33qutMqk3bvjtjGGCICDKhQHGkg72zc2ZM8ekJ3/ixIn4+OOPUadOHXz44YeI\niYlxWMeuXbugcDCLBfmnzMxMnD59GgAQHh7u49aQp5Wm69vs6lXUchCwpwcFYdvmzSXUogKqrCx0\ntdKuc2fO4CEb7d28aZPtJwJmStM1Lo14fT2nTFoaOpp95rZs2QLDvfimt5XP485du5AVGQkAaLNs\nGUJv3gQA3NmyBXu6d/dIu0ryGsv0evS08b1zJiMDf937frT2uwCAn3/6CXpvpDuWAJVKhT59+jhd\n3m+i3qlTp+Ly5cuYPn06AGDu3LmoWrUqRFHE999/j169euHIkSMO62ndujUi7/1jp8BS2JPQtm1b\nl+54yT+Upusbcfs2yvz7r90yIbVrI87GTDzeIsvIgHrlSovtD9erhzJWprcDgNc2bMCtL7+EITra\nYf2l6RqXRry+niNPSoJ63TqTbR07dSp4ygcgctEiCPn5Jvuff/ZZ5FeqBEViIu7LzQXuxULqtDRE\nPvccRAerdjujJK+xLD0d6sWLre57JDYW99/7flTPn2+1TIc2bSDeG/fpbwQnO1AK+UWwP2vWLGze\nvBkbN25EaGgoAKBq1aoACt7wkCFDMGHCBGg0Gof/uNRqNb9kAlh4eDiioqJQrlw5XzeFvKC0XN+g\nChUgd/AEUqVWl/jvQRAEy3YplQhTqWy2V56Rgfu2b4f2rbecOodL11ivh3D7NkS1GvBQGgJ5V2n5\nDHubcPeuxWeuXIUKxhx0/UcfIXjSJJP9ZdVqiOXKQX7lisWxURERQESER9pWUtdYduOGze+d8JAQ\nKMuVg6DR2CwTpVYDarU3mygZkh+Z8M033yA+Ph4bN26E+t5F0ev1uHXrlrHMjz/+iPLlyzOIJ6LA\n4MTjb+0rr5RAQ0yJ1h555+dD0OnsHhe0fr3nG5OZiZARIxDauzdCX34ZgoMnIUSBRDDPQ5fLTQab\n5rdoYXlQ4XhFa+tiuNhT7FNaLYJ++KFgik1b8vMBUYTy229tFjF/8hHIJN2zf/36dYwfPx4xMTHo\n1KkTgII8pU2bNqFnz57QarUQBAHlypXDSiuPlomI/JHoxKwZVpeF9zZrNyH5+T4JtBX79kF27hwA\nQLh5E8qlS5E3blyJt4PIW4LWroVy4UKIERHIHT8ehtjY/3aa32DfS98xsha8B0iwr5w3D0Hx8fYL\n5edDdu4cFL/8YruMg0kQAomkg/0qVaogPT3d6r7ffvutZBtDRFRCBFsr0t5jiI312R9n7RtvQDln\njsk2+cmTJd4O1cyZJq8VO3dCyMtD7rhxfjvDBlEhIS0Nyu++AwwGCDk5UH33HXKK9lKbB/vmqSrW\nppQsDPatzUjo4DtHShwG+gCg1yNk2DD7ZUpRz77k03iIiEodB394nen59xZPTdFXbFbycOV79yIs\nLg5CUpIPGkTkAXfvAlotFDt2mHwPyM6eNSlmcYOdlweH7PXsBxpnAnkG+0RE5DMO/hjnP/FECTXE\nCik87s/NLQiKrNFqETJqFBf0IkkQrl6F/OBBqyu9GhkMUE2dirBWrRAWF4ewNm0gO3/eslx2tvFH\n5cKFpvvMe/rtfU6tfb8E2A1A0L3FV+1isE9ERD5jJzAQK1SAroSn3DTh7oqTHsqPlR84gLCuXe2W\nEW7csOgJJSpp8t9/R+hLLyH4gw8Q1r495DamB1ds3gyF2ZoZit27Leu7N0bFKVaCfcFOz77i4EHn\n6w4QytWrfd2EEsNgn4hIStLTLXvt7sn74ANkz58PeGA+bLe5GewL16555PSqb7+130taeL7MTI+c\nj8hdQZs2mbwOfv99wGwconDlClT31g9yyJlUHZPKzQJ+Ozn7qi++sLjhkCIhOdljdSl+/tljdUkd\ng30iIgkJsvMHV9+mjcfmwnabm2k8ylWrin9uUYRw/bpzZaWQbkSlmnzfPottwdOmmbxW2VjwySoH\nU9xaMP8M3OvRF2ykwKmmTnWtfh+Q2Vi8j+xjsE9EJCHKBQt83QT73OzZV2zbBuH27f+qOXcOil27\ngKws5ytxJdhhsE8SJN+71/T1/v1OH2sxt77DA6x/BsyfOPgTwYmnemSJwT4RETnP3Zx9AIotWwr+\nv307QoYOherjjxHWsSOCx42zSG+wRtBonD9ZgA04JP9jcy0Md/9tutqzb74I3r3UNn/uHbf6VEIm\nc2ohQquKMUhXdvEi5AcOAFqt23WUFAb7RER+QKxY0ddNKFCMYF92b/Et1eTJJtvlBw5ANXeuw+OF\nGzecP1kpWjCHJMrWjFC5ue7VVxhUZmQ4Vdxw330mr2X38t19OptXMVkbi6MdOtTtJ3myK1fcOk6x\nYwdCXnsNwePGIeT11yX/fcNgn4hISkJDrW7O/eSTEm6IDcXp2f/1VwgpKdb3OTFYTubKSr0uLqwl\nJCVBcPMPP5FVNnqNhaLBvo3Pu9Xj7tWn+v57p8qL0dGmx9+7SRDNe/z9idmNTn7z5tD16IG8N9+0\ne5h28GDrO9y88Qpat854Myf755+ClEQJY7BPRCQlRebSLspQu3YJN8SGYubCK+fNc//Y5cudLiuW\nKeNcwZwcBK1di9C+fRE6cCCUX3/tZuuICsh//x1hHTtCdumS9QJFP+M2Pu/WKL/+GsjIsDprjr5t\nWysNMVt8r3CArqvpQFKRlWUxf76hZk0AgL5lS/vH2pjBTHB1hiMAEEXIEhJMNgX9+KPr9ZQgyyUI\niYhIUvIbNvR1E4zEYvTsA4Bi5063jxVu3nS+sKNFtQwGqD79FIpffzXZHLRhA3R9+0IsX96NFlKp\nZzAgePRou0WE3FyIgFu53kHbt1vdrn39dcuN5qtM6/UQrl0ryDO3RacDgoJcbldJUK5YYbHNeFMf\nFmb3WP2jj8Lq8ww3evZlf/5psU1ITXW5npLEnn0iIqnz5bz6UuHqLBwOBkHKjx2zCPQLcUEucod8\n716EtW7tuOC93nx31oJQzp5tdbsYFWWlQaY9+8qFCxHav7/d+qW8PkWQlSd7zj7BE6tXt7rdnZ59\n5cqVlhvNb6wkhsE+EZHE6SU0oE5+5oxPzitzdVEuB8F+8IQJxWgNkRmDwenFsYw5+x6aMcrwwANW\nt4vmAaijp10A5IcO+ddMVk4E+3nvvmt7pzuz8Vj7PbqQjuULDPaJiCTOaj6uj9hakMfbgtavd+0A\nO7NjCDdu2F2NVPCnYIckQbhzB0JamnNlC8t56N+Zvn176zvcSLlTffEFQkaMKGaLSo7oxEB8fVxc\nwf+t/Z7cCPYN999vsU3rYICwrzHYJyKSErOUndxPPrGcL7sUkh875lJ5m4/nRRHKOXPsH+xEDyhR\nUc4G+kDB1LPCzZvFmuO9KP2jj1rfYT5A10myv/6CQuIDTo0cBftFev61r7xiud+NayC7fNnktaFB\nA+idSd/yIQb7REQSJpYt6+smmPLRyrSiWu3aAdYG3hkMUH3yCRS//Wb/WA8FYVR6yA8edKl8yKhR\nVm8qDXXrunxusVo1G41yL9gH4HRKkq85nEa0yJNIsXx5GOrXN93v5Pz48hMnENq/P0J79y5IdSra\nBncX9CpBDPaJiKTE/NG+xAZ+iQ5mvfAaFwcpK44csdgm/+MP5+bDZs8+uUi5aJFL5YXr163eVObM\nmgXta685XU/eqFG2dxYj2PcbRXr2xcqVLXbnjRxpusH8+9SZVCpRhOqLLyBcu2Z1YT/h1i2nmupL\nDPaJiKTEPP1EYn+wrc76URLndfH3oNi61WIBHmuzeVhjsBI0ENll52mQrZx683QQAIBcDl2/fshe\nvNi589q5+bYYoOvPbN2AF5kmNO+ddyx257doYVqN2feI4MRTPCE11e7q3WJkpMM6fM0rwf6RI0fQ\nvn17VK5cGbVq1cKQIUNw/fp1b5yKiChgWJ1HXmLBvjO93uJ99xn/b3PwoIvcSW8IsrL4kFOKuZYA\nlTJ25ssXq1a1+XQu+MMPLTfeS5MTY2KQM2uWw1OLwcHOtdHf2fjeEYukFeY3a2ayz/Dgg5brZZh/\nnzqTsudgEbI8PxjQ7NY32vfff49q1aphzJgxFvtOnjyJF154AUeOHEFOTg40Gg3i4+PRtm1bpLkw\ngIWIqLQJ7dXLYpso0QVu7MletAg5Cxcie9EiGKpU8UylbvRSypKT3TsXZ+MhFzgcnOvKOJciZQ0P\nP+y4vJ3PhdzK4k+uEJKToZo6FUErVvg+tc3J82f9+CN0fftC168fcr76yrKA+Y28M8G+g7n4xapV\nnWqbL7kV7O/duxdZWVno2rWrxb5JkyYhLy8PTz/9NH799Vds2rQJ9evXR1JSEr7mMuRERC5xdtGY\nEuPMzEChoQXT04WGOv9kwtH7tBKAawcPtnuI/Phx585tzteBDfkVhZ3BuYaqVaHr3Nm9igUB2rff\ndljGFtmFC+6d957QPn2g2LwZynnzEPbMMwXT3/rqs2HjBtxisazISGiHDCkY9xARYXmA+UJjK1c6\nvLkXHM2h7wfpUm4F++fOnUNERASaN29usv3WrVvYu3cvIiMjsXjxYjRu3BhPPvkkli5dCoVCge02\nlnkmIiIbJJbGo2vXzty4SqYAACAASURBVG6bdN26mW5wNiXGURBh1gOX//TT0HfqZHe2IsGsZ9+Z\n/FwA7NknlygXLrS5TztwoM1Fr5yRX6+e3f0lOWBeOXMmZOfOldj5TFj5ftC+9ZbrKXfmgXlGBuR7\n99o9RLCzere1QcFS5Fawf+vWLcTExFhsP3ToEERRROvWrRFZZMBCTEwMGjdujMTERLcbSkRUKkmt\n1ygiAnmjR9vcrTN/4uvszYqjANtsvxgcDLFsWeTMm2f/uCJT6zkbqHBRLXKW/PBhk+kdC+U/+ijy\nxo41jjXJXrfOYV3ZP/xgsU2MjrZZXixfHoaHHnKhtcUX4uhJg7dY+UzqH3/c5WqsDVoOnjTJ/kF2\ngv38hg1dboMvOP1XpEGDBhDuPS66e/cuEhIS8Mgjj5iUuXv3LgRBwK5duyz2paamIjc312T70KFD\n8cYbbxSn/UREgU1iPfsAoG/XDvI//4Tip58sd5r/MXW2/Y569s3/2N/r0RPLlbN7mOzCBWNAZHjg\nAcjOnnXcFkeP7YkAwGBAsJWxi7p+/Symz3T07xQAxBo1LLfZmXI2d8oUuz3bupdfRpCVG4hi0ekg\nP3IE+WaZHV5n7QbcnTU/bPw+5cePI79JE6v77PXsS64zxganW/ntt98CAERRRLdu3VCpUiXMnDnT\nuF8URXzwwQdIT0/HpEmT8IDZY6uvv/4a+/fvx+zZs43bqpvnWhERkSmJ/jHRxcVZD/bNgnvRnTQe\nUSwIuJXK/96/+c1A4Xkc1F/0D7UhJsapYF/IynKqyVS6yf75x+p2/TPPeO4kNmbb0b76asG4GDu0\nXbs6DPbzPvgAqs8+c61J77+P7A0bSnTBP6sBtxuzZomhoVa3B7/7LvJGjoT8zz+R/8QTpivi2rn5\nd3VKYF9x+q9Iy5YtjT/fd999uH79Oh588EFUqFABAJCeno7Lly8jJCQEffv2hdJsENesWbNQsWJF\nk3qIiOgeW6kjUp0G0tYfOfPtzva+3Xv/irw8VOnSBXKFAmJ0NHKnTIGhVi3L348bvXqKrVudKifc\nvl3wgyj6bMVgkj5Bo7G63VEQ7hIbn3+n0kfUauRNnAjVxx9b7BLLl0fuF1/AULOmy8E+ACjnz7eb\nzudpQZs2WW5047Npb4yDasYMAIDil19giIqC4d7v2G7Pvp8E+279FXnyySeh1WoxYMAAHD16FCdP\nnsSQIUOQk5OD9u3bWwT6BoMBx44dQzVbSzoTEZVy5kuwS52tWYLcWbSm4EAREEW8+M03/x17+zaU\n93omzfPone1Rk5844dz5i1DOm4fgd99FWJs2CJ440W7OLklQdjYUP/8Mxe7dpjeJeXmQ79njXCqX\nE+QHDlhs08fFuXWDrn39dds7w8NNXorlysFQv75T9eqfeMLq9uzVq2GoWdPp9plTbNni9rHusPqE\nwp2OECcHNKvuZbMAAHJzbReU6JNXc261cvTo0diyZQuOHj2Kdu3aAShI4wkLC7M69/7OnTuRlpaG\n5557rnitJSIKUEHr1/u6CS6x+Qjf7A+w6ELPftClSxabjTNl2MjZdyRo2TJoX33VuTYUPe+9aTvl\ne/dC8dhj0Hfo4HId5AMGA0LGjoXs1CkAgLJ6dWQvWVKwffhwyC5eBFCw2qq+c2cISUkFN67Wpml0\nIGjjRotteW4OYNXZWXwub9QoqD7/HNBqIZYti+w1a5zv1ba16JZUnxi6QHRmGmDzY2yk8ZiT/f23\n8eegX3+1XdBPgn23rvb999+Pbdu24bnnnkN4eDiCg4PRokUL/Pjjjxa5+gDw5ZdfQhRFvPDCC8Vu\nMBFRIHJ7TnhfsfWH1t00HlGEssgfWAvmTwiK1Kv18kQPQRs2eLV+8hz50aPGQB8AhH//RdCyZZAf\nOmQM9AFAuXgxgseNQ2i/fgjr0gXyfftcO5GttDt3gz87Nxv61q2RvXIlspcuRfb69S6njtib0QeA\n5Sqz/sLsiYdTiszO5QwhLQ3C1as291ub3UeK3G5lvXr1sGbNGqfK/vLLL+6ehoiI/Il5j6Gd2URM\nGAwQcnNhc04eOz37up49IYaEQJaYaPsJSTEWAxLu3HH7WCpZ8iKBfiHl/PnQP/usyTYhLQ3ywsWw\nDAYET5gA7ZAh0PXt69yJXAwaAUCsUgXC9esW2/ObNXPY0y6WKwc4MaOPVQ4C0py5cxFqvj6GxFj9\n3bmRsy8/c8al8kGrVzuoMIBz9omIyPu0b77p6ya4znw2HmeDfcB+wGMe7Bc9j0wG/QsvFCyy4+zx\nRVisDWBGuHXL7n4qQQYDFLt2QbFzp+XTHsDmvyFnxm4oFy2yOme+Ne7k/ecNH251e64bA2RdYXAw\nXlKMinLv6VhJrKYrilB+/bVFoO/oM2uzuiJrQDkStHgxglatsl+IwT4RERWHzh/HOZn3IrqwwqfS\nXgBV3Nl4dDrbuyTeq0n/UX32GVQffwzVp58i+MMPLQvYGBAupKU5rlyng9xeKlkRSiuLZJk/PTBn\ncwGsoCCnzuku80Be99JLFmV0vXtD1727S/XKXOwld4fszz+tptG5u3KtrYkFrFEuXuywjPyvv9xq\nR0ljsE9EJFX+OIjOLAjPr1XL6UNDjhyxvdNez74TVEVm+bFgaxAjSUtWFhRF0oLl+/cXTKdaJMAv\n7hoJyvnzgbw8+4VE0WqOv6PecWuD2h3l03uCoVYt5I0di/yGDaHr3h1aW6lKrjyFAyCzkpLkaSEj\nRljd7tITwyIEDz+N0Ldo4dH6vMUP/5IQEZUS/jjHu3mbXXhsbo9i1y7TDS7cCAm3bllfAAyAoWZN\n5x7tl0TKAtklWFncSPXFFwh+773/rk8xg33ZuXMI/vRT+2UuXLDcGBLi1kBXsUoVl49xh75tW+TO\nmAHtiBE2g3pXB5u6mv/uFIMB0Godft7EqCjPn9sN+Y8/7usmOMU/hhETEZVGfpIP6nXWAjhHva9F\nyE+etLrdUL8+8kaOdGoGFeHqVYhc9d15BgMUmzZBduUKIAgQIyMhFDctzca4C/kff0D2558wxMZC\nZmfmFGcZp3u1QZaQYLHN3RxySXHxSaLH1wa5cwchEyZAdvo0DLGxyPnkE5tFi7NGgKfouncv0VWE\ni4PBPhGRVPljGo8XyJKTLbYJKSnOH29l/n4AyJk92+k6hDt3bM8URBaCVq+Gcu5ck22V58+HMGiQ\n+5XaWdxMceQItPXrW+919zDFnj2WG93Mu9c3bVrM1niQi983hthYj54+aOtWyE6fLmjKmTMI2rnT\nZlnxvvs8em5XaIcOhaF6db/p1QeYxkNEJF2lLNg32FjwRrSSU28tpQMADI88YrnRicV39HFxdvc7\nNcCTjMwD/UK9Zsxwu04hI8PmPsUvv0D491+363aFtbQv0clFufLee++/F5GRknoiILi4UrSne7XN\n/80oZ8+2ncro5ndjfjGfCOh69oSuVy+/CvQBBvtERNIl8WBfO2SI6evBg4tVn8xGAK/6/nvLjTbS\neHTWVrq1MxNPIdHBrEHKJUsc1kHOEZyc3tLiOBsz7QAFC0Mp9u93t0nFpncy+NN36oTcL7+E9u23\nkb1woXsLQ3mJ/PffXTvAzvXwGA+Plcl/8sliHW+wsnCsP5D0X5Lc3Fz07dsXTZo0QcuWLdG9e3ck\nJiYCAFJSUtC9e3c0btwYjz/+OA55OneMiMjXJB7s69u1g+HBBwEUTCuoc9A77i65tbQJW0GAtfx7\nJ4J9R4quvkrFU7l/f5fGXBjZCS5lZ864PJuM7cocfO6s7HdlKsj8Zs2g69q1YKEsCdH17u1S+f9v\n777DoyjXv4F/Z2saYUlIAAmhCXLACAJB6QhIUESi6JGiiHhQERFsqL9XsIHHg4CgIPGAx4INQWkK\nSJOmIiAdxUYHIZAQMHXLzPtHkjWbnd2dSbZOvp/r8pKd8sy9++xu7n3mKUrWLgg7ej0KP/64yqfL\n3WWMBAH5S/Ljjz8iKysLb775JlatWoWSqnyoy4wcORK7du3Ctm3bkJGRgQkTJgAAXnjhBXTs2BG7\nd+/G3LlzMXr0aNirsKIdEVHYCvNkX0pIQNG8eShYsaK0/7vFInucv/v2AoBt+HD5HTKvmWC1+izP\nWxcRJw93HsKG1QrTnDmIHju2dOVPLwuJBVRens9DYjMy1Jfr42+87uhR9WWiUtcab/LzETV5cumC\nXhXYRoyo0nXDjf3661UdL5w5AxQXByiawJGuuALWkSOrdK7HtRLCnKoBuqdOncKiRYtgsVhwv8zt\n2sLCQowaNQpr16512Z6SkoIPP/wQ11xzjargoqKi0K9fP+fj9PR0zJs3DwCwbNky7CtbFrt9+/ZI\nTk7G999/j+4+btHk5eVB4hRqmpSbm4v8/Hzk5uaGOhQKAK3Xr8lggK7CH87sadNgy8kJYUQqeenT\nbr7lFtTds8dnEXaHA6LDAbuC7gHZjRsDMq9PVH4+EislhUUXLiBGJlHMqXC+xWpFrI9k8q8ffoBV\n5d+xYIpdsQJRn34KCYB+3z5cTEpCidwYhgCL2r4dUTKvZeX6vbRnD+wqZjiq/+9/w+Gljhzbt0NQ\n2eh38dFHYW3QAPUqnCcJgst7o1zcF18gauNGVH535lut+CuSPqteyNWbN0VffIHCCj/cqvM9reba\ncvWjysCBqLd8OQwqBvoDwAWdTvZ7J9gEQUCCiulHVSX7a9aswdSpU/Hwww/L7p84cSK+/vprAIBO\np0PdunVx/vx5nDx5EnfddRd27NiBWipWL6ssKysL/fv3R25uLkRRRN0Ki1Gkpqbi1KlTPsvYuHEj\nDCrnkqXIkJ+fj/1lI/njwqgfJPmH1uv3n+fPQ1ehJfabrVtxUeFqnuGu1sWLGHDpks/jRIcDhWWD\nBHVeph21G41YuWqV7L6Gv/+O7pWudfbAAdSXuf7KlSud/772t99wlY8Yv9u0CX+WdSUNR0NmzkTF\nNnXrc89hZaVxFcGQ8ttv6CbzWlauX/OIEfjujjtwrnFjn2VasrPR/8gR7wdVuubxVq3Q+PBhr6cs\nKixE7W++wU2Vzq343ig35I03IHfPYu+BAzgcod07Khui4HNa0f5t2/BzhTtn1fmeVnNtufpRKz06\nGs1VPl9/XNcfzGYzhg4dqvh4VVnvd999BwAYLLOk8rFjx/Dxxx9DEATccsstmDNnDuLj4/Hbb79h\n+PDh+P3337Fw4UKPPxR8mTFjBo4cOYLXX38dxcXFECqN0FbaWt+7d2/U9tMiLxReylsSMjIyVP3i\npcgQqfUr5OfDcOYM7Kmpnvt7iiISFixw2dSrXz9VrZ7hTHf5Miyff+7zuPIW3/jatWHwkuyLsbEY\n6GF8QNTOnbBs2uSyLbpBA5hlupZULMPYsiUsEyd6ja9b584oTk/3ekwoWSq9hywAHlqwALkTJqDo\nhhuCFkfc55/L/p2Vq9/b1q3D6eXL3QuRJER9/z0M586hsFcv1P7gA8So/Nutu+EGxMtM21oud8IE\nDLzhBhhOnIBl2TKXfXLvr8qvb7m2vXqhRe/eqmILV56eoyft2rXDlRVeq+p8Tyu99uUhQzx+/tWI\nv3QJtVTO4OSP6/pD5RzYF1XJ/uHDhxEbG4trr73Wbd+yZcsgSRISEhIwd+5cZwt+ixYt8O9//xt3\n3HEHvv766yol+2+++SZWrlyJZcuWISYmBjFl07NduHDB2bp/8uRJpKSk+CzLYrFEVKJA6sTFxSEh\nIQGJYTbwifwj0upX9+uviK7Qslr4xRfyKz9ardBXuuNoSUoKuwF8VWaxuD0/T3R6PQx6vdfj9VFR\nHt8D+jp13M6NEkXoZMpzKaNzZ58xxsfFITaM68RT/Elz5qBg4EDAbA5KHNF79si+3oB8/dYtKHBb\nsMw0axaMZQl4na++glS/vscyPYlNTobQoQN0ZV1+y9n79oX1wQcRk5SEGJTODlT5tUtMSHCb9tHT\n6xvbti2iw/h9oYbSz2m5uLg4mCs99yp9T0uS72ubzbB36QLTiBFIVDjVqTfG2rVVP99I+dtTmarR\nX+fPn0dTD3OUfvfddxAEAf369XPrqtOnTx9YLBb8IrPqnC9z5szBkiVLsGzZMlgqDP4aNGgQ5pdN\nx7Z7925kZ2ejc4TNe0pE2hZdqQuF8aOP5A+Umy2miov0hCW93n8zpQCQvLX6y3UJUTJFoCDA0a2b\n92OCMdVggFR18Koc/ebNiB4/HuZXXwVkBjaLTZq4bSvwskBS9BNPuDwWzpxxJvpA6RoHup9/Vh2n\nFB2NkkcfhdiqFaQGDVDy7LMo2LQJJc89BykpycfJysf2aeZHOYCS//s/t23WRx/1eLw/ViwG5Fcl\nrqxg8WKUPP884IdEv/Si6iZACKc1EdRS9ZMmLy/PY+t5+WBZTwNkGzZsiN9VTl12+vRpPPfcc2jS\npAluueUWAKX9lDZs2IAXX3wRDz74INq3bw+TyYSsrCz2xSeisGb8/HNYR48GKnfnkUv2FSwEFVH8\nObOQl2Rfql/f/dLHjikq1jp0KKK9zNUuVGd2G1GEedYsGFasAAAUvfMOxObNq16eWpX/PpaUwLhi\nBWCzwXbrrYrnexeysxH1wguAJJW2mBuNKKmYrEuS2wqz9t69vf54rbwasjkrS1EsPkVHQ2zeHEW+\nylPZJaIyycMsVJHI3q8fxORkGDdsgKNlS9hvuQXCyZPw9G1kWL0aJU8/Xa1rGlatgnnaNN8H+vvO\nlJfvkcrEli1hu+su/14/iFRlx7GxsTh79qzb9tOnTyM7OxuCIKCth5H/RqMRRpUtVQ0bNkSehym8\nkpOTsXTpUlXlEREFjYeWQcO6dW6rtQoyyb6ktcYLFX9Yq1uW/cYb3aZHVEL00RVUv3Mn7FXs+274\n5htnog8A0fffj4JKYwuqxcddB93vv7ssCBQ1dSr0W7aUxrZ5M4o8rHjrwmpFzD//6bLJsHLl38m+\nJCH60Ufdpigtb+kvbt8e+OYbj2WX/8Atj6u6JA8rMle5vDp13FZSFps18+97OwyI7dqhpF27vzcE\ncAZD4dgxZYk+4P+7nTL1JrZsCV2liRH8+jkNEVVNLS1atMC5c+ewd+9el+3r168HUNpPq3Xr1rLn\nnj17FsnJyVUMk4gownhYyEl2lU+td+OB9643qvkqS8FrJ3cHwNd5hlWrFHU3kA3piy/ctun++KNK\nZckx+EhIpIot9wUFLgm17pdfIPiaze7yZcRWmArbRdmUseaZM0sXt6qs7HUtuOkmj8VHP/aYc10A\nn11sFBIbNlR2oFzLvkyCK3dnxzpmjNqwIo7UoEHAyja9/77yg/297ohMHdt79vTvNcKEqleub9++\nkCQJTz/9NM6X3XY7duwYZs6cCUEQkJGRITtC+MyZMzh79iwaKv3gERFFOk8LOcnNyCN3rNa68QQz\n2VewiFbJY4+5b4yOlu1vXpF5xgyfZcvR/fab27aq3H3wxPzyy94PqJDY6LKz3XYLBQVeT4965RWP\n+2IHDADy82HwNC1h2XtZ9NLSrjt0CLG9eyPqiSfcuvV44ujRw+t+2R90chQm+5UXKSuaNQuOMJ6d\nyW9MJlgfeSQgRevOnVN0nENmYpjqknvP22++2WWwuMfF+yKMqvvEDzzwAObPn4+dO3eidevWSExM\nRHZ2NiRJgl6vx9ixY2XPW1F265IDaImopvC0aqtkMgEOBwxffw2hpAS2/v3dFwLS6cJ+9VzV/Jjs\n+7pLoFOQLDquu859oyCg5NlnYZ49G7DZZBP0yrf4ldDv2SP7A8SwYQMMa9aU9nt/6ik4OnVSXbZi\nZYmqkJOD6Pvuc9/v7f0mitBv3+55v8MBw44dHneXTzlra9HC549Y/Y8/et1fUfEzzyDWW5ef6rzn\n5JL9v/7yX/kRxnbHHRCys2H87DO/lqv76SdFxyle5ViN/Hy3TVLt2iicNw+G9eshWSw+f1BGClV/\nTerUqYPPPvsM9erVg91ux7lz55yJ/iuvvIJ2Fft4lZEkCe+++y4EQcANQZznl4gopEpKZDcbtm9H\n1DPPwDxtGkyzZyP2ppvcu/ForVUf8OuPF0Hmj7TLpaqxGJl41VUoeustFJXN9uYPnu4GCOfPQ8jL\ng3D+PMwzZwa0b3Q54+LF8js8dDsDAOH0aa9lSvXrQ791q+f9ZV2IJLMZG/75TxT6YU76grVrgZgY\nSHXqeD5I6XtOact+VcvXiFAORJYC0DNE9ntEpwNiY2EfNAiOnj2rPXg7XKgeAda+fXv8+OOPWLt2\nLY4ePYpatWqhb9++aOLh1ufFixfxr3/9C4IgoFMgWy2IiMKJh2Qff/0F/c6dLptMn3zieozWBucC\nfm0FVdrNI2BEUVWi57M/PADh7FmgoEDxrDiqlSWvxq++kt/vpeuT4Om9XF50TAx0Z8543l9hMay8\nevVwceBAxJ49W60fZeU/iIv//W9EP/RQ1csBlCV0MlOMavJHuTcaSXydgrTuRDio0l+UmJgYZGZm\nKjo2ISEBo0ePrspliIgiltwMO564zT6itT+qQFC7PNjuuAPGhQsDVn7sTTeVtlaLIsRWrVD89NOA\nP1o9K3fn8iOhvKW6cleUMvpDhyDK3J0H4ByA64nuyBGv+8UWLdyL/M9/EOOHectFfwwe9dWyX1yM\naJluJKJGVriuqax33glDhR+/9v79QxhNYNWse1BERMHiozXUKw8JWSSTgtjlwXH11YG9QEkJhJwc\nCBcvQv/99zB56hqjkqdxHm5EEYbly2H+z3+g/+EHZef46JZi+t//XI41rFgB0xtvQHf4sM+WfZ9i\nY93DqVMHhYsWVa9cwD+t6z6SfdO778rfhahBLcPe+Lsff7BITZrA+tBDkOrXh6NjR1jlxrJoBJN9\nIqIAUJy41RD+XMFV8jGNs6NDB6/7rf/6l99iAbysjKyWwqTa8OWXML/+OgyrVyPq6aeh27/f90mS\nJD8tZhmxUSPnv42ffQbzzJkwfvEFoh95RFE3JE/sGRmeQ6pXD2LLll7Ptw0e7P0CcrNbASieMsVn\nbF5VqAujP36UaIGHO46mt97yOubDI4UrUpc8+6z6shWyDRmCwk8/RfH06ZDq1QvYdUJNVTeehIQE\nRcfp9XrUrl0bLVq0QEZGBkaOHAmLhlaYIyLyicl+6PgY82AbNEhRMeKVV0KndOV3lf345QhWK5QM\n0TXPnOnyOPrRR32fVFCA6HHjPO6umHSbPvzw7x12O8yzZimISobRCJuXufUBQJJp9a/I+sgjQGws\njB984NxW8vjjfx/gIQF1eOqSpJB+/344unf3HFdN7J7spXuhcPkypMREdeUp+IEgNm3q9QcjKaPq\nm0mSJEX/2e125OTkYPv27XjppZfQuXNn7N69O1DPgYgo7PhzwSRyJVV3EGutWooOk+tr7km0p3nI\nFbZeAqha66hCZh8r5BrWrgWKikofVO5GVoVZgqQGDVA4f77ncQDlfCT7EARYR41C8YsvwtGpE0om\nTnRbgdrep4/7eWreIzJ3BwxbtpT+gPPw3G233668fK3wNpaoKj90fTSIFM+ciaKK3cuoylS17M+d\nO1fRcXa7HXl5eTh48CDWrFmDs2fPYtiwYfj+++9Rx9s0WUREGmHy49SNVImCZN06ciRM771Xrcso\nXoEVpfOFCzk57q2b1e3v7i8+Fs0CgOixY/2WXJU8/jgkHwuUAfD+Q6JCPTt69iydClGG9b77YPjm\nG+daAiVPPaUmVNnpOw3r1kHIzYWQlyd/UnS0qmtogp8nDnBbX6QCqV49ONq39+v1ajJVyf6wYcNU\nX+DChQsYPnw4du7ciXfeeQdPBmJhBCIiCmtS/fql00v6oyyj0ecxYuvW1b6O7a67YFqwQPHxwqlT\n7sm+mu5clVZoDTbdkSMQjh3zeZyjXTvo9+71fkzHjoquKcXHe9xXsGSJsjJSUlD01lswbNwIsWVL\n+Zb+KvC0wJft3nv9Un7E8ZLsS1X5IeBtbQeFK+uSMgEfoFu3bl3MmzcPkiRh7dq1gb4cEVHoVbM7\nhr1XL//EEUbEK6/0X2EKupVInmZpUTMFqNEI6/jxig+Xa6lUNVBbSbKvpEtNNVpgY0aO9H2QpwS9\nVi3YMjNLF7xSGIOn6SsLli9XNduN2KoVrA8/DHvfvgGfutY6YkRAyw9b3vrsV2VBOC+fDS0Plg2F\noMzG06xZMzRr1gy/ySw9TkSkOYWF1TpdTYIZKaz33OO/wpT0g/eQ7JeofG1tffsqP9huh+7gQegO\nHapwQZXdeCQJ+s2bYcrKci2njO7gQd9lKOiv7mtGI28cV16J4ldecdlW/NprKFi5EtYJE1RNhyk3\ngNc2fDhQYSGusBPENSPCircfUVW4K+VtIbaShx9WXR55FrRlGhMSEnDixIlgXY6IKGSEaiT7jg4d\nZPsQR7qKUztWl6JWRE8z8niYqlF1OXJFv/ii84ee7Y47YB0zBjFqfuSIIgzr18M8dSqA0ikwC//3\nP+hyc6HfswfWoUOVTWGqYJ0G25Ah0O/d676gmwK6c+dgGzECxS++CP3evXCkp8ORnq66HACAxQLb\nkCEwfvpp6WOjEdYhQ6pWFgWWn5N9w8aNbtukevVg79YNji5dVJdHngUt2c/NzUVcoJYBJyIKI4KC\nwZCe6H/6yY+RhBEF/ewVU5JYeLqe2lZZFcl+xTs6xiVL4Lj2WnXXEkVnol/+uGK3GuPChYoHhjo6\ndYJ+xw7P+1u2hCMtDdFVSPbtXbuWluFl0Kwa1ocegi0zE7pTp+Bo3RqIial2meR/XhfGq0I3HrmW\nfb8stEZugtKN5+jRozhy5AhaqJjGjIgoUgmXLlX95PLpD7VGTdLsi4JkX/KQMEqBTPYrMb37bpXP\n9Ujh+8Nx/fVe90v160Ns0aJKg1l9LVpWFeWrmIYs0Q/iCs+aVIWWfS3ewQxXAX935+Xl4eGHH4Yg\nCLjxxhsDfTkiopAzrFtX5XMlFdM9RhSZLgBiq1ZVK0vJAF1PA/zUJu/VGOypeEGuMoatW6t8rYqs\n990Hh4/GNals6fZH1QAAIABJREFUkcySSZPU33VRMXA2UpQ880yoQwh/3j4LVRmgW6k8mz/H9ZAL\nVd96n3zyiaLjHA6Hyzz7ly9fRlJSEv7l5yXKiYjCkWHNmiqfW6JkNVStMBohJSVBOH9e3XnVmaLS\nn92J/Mz4+ed+Kcc2bJjv7koVWrLt3bvL9p+uSez9+sFcadAxVeLt7kcVPpOV1zDwdDeOqk9Vsl/e\nQq+GJElITk7GRx99xAW1iIh8cHTqFOoQgsdu99haaLv9dhi/+EJ2X3VmkvFrd6JwVfaDxnbHHTAq\nmatexXg6+y23VDWqsCempUF34ECowwhffk72dfv2uW5QO3ieFFPdjUeSJJ//CYIAi8WCTp064bnn\nnsP27dvRUeECG0RENZWja9eAzxEeVhwOj89XTE31OAVpyf33V/mSUhh0QQlWlxHbXXfJbq/cxUlS\nkexbq/Hahzvb7bf7PqgmrpyrhD/67KtZk4JUUdXEcfHixUDFQURExcWhjiC4vPXz1elgu/lmmGbP\ndtkstmwJqXHjql+yfv0qn+sPtmHDYO/dG6b58yHk5AT0WpKHuepLxoxx3aAwybLdfbemB1Xau3aF\nsUkT6LysIuzpNa0R/Nxnv/IidKJWxyuFAQ4/JyIKgqI33/R9UFUGuUUySfKcQOj1sl1u7NWc6rF8\nYKoatttuq9Y1Xcq6/XbAZELR/Pl+K7Mie//+fz/wsLiVo0cPl8dKBhJLKSmwjhpVrdjCnsmEov/+\n1+shtgEDghRM+JG83NUw7N6tvsBKC85JdeuqL4MUYbJPRBQEYvPmCg6qxsDTSOSjZV/1OUpUYYpF\nR7t21btmBeUJjZSQ4LGbjRqVZzQqmTDB90mVXgNfd0oKNm5E4Ycf1ozpKb2s/ivVr+/XH36RxtGl\ni8duTKY33oBx6VKf32G6vXsRM3w4Ym67ze2OksQ++wFTAz65RETBVbnlVGrQQNFiToLGk32xZUv3\nx95a9uWE4u5HgAb1Ov7xj2qXUTxpEgo2bXL+V3mQY+X59u033+xWhrcVa63jxtWMJN+HkgkTUDRv\nnqrBzJpjMqH4xRc97549G/Effui1CPOsWRBOn4Yg1y2c4yEChp9gIqJq0u3dC+PSpRD+/BOA+4BH\ne9euipJ9+3XXBSS+cGHv3v3vB9HRsA4bpjrZ9zh/fiD5Kdl3pKe7bvDDYGxf6zIUv/KK80eWIz1d\ntuVfatBA9lxbZiZsgwdXO8ZIIzcuwZ6ZqenxCko5OnWClJrqcX+tzz9H1xUrYPztN/edouh9PARb\n9gOmBsxBRkQUOPrNmxH1/PMAANP8+Sh8/333W9k6naLWUdugQYEIMWzYhg0DYmMhnD4Ne+/ekBo1\n8pzwlr1e9owMGL7+unRbfDzsN9wQpGgrULvqrgduK88GY2Ygnc5nP3SgdDpTITvbZZt13LhARRXW\nxLQ06LdsCXUYYavksccQ9dhjHvc3+u03xD/3HKxfful6p8nXnUu27AcMk30iomqImjr17weFhTB9\n+GHplJIVKUz2Nd9FQK93n97QQ7Ivlb1eJY8/DrFBAwh5ebDdcYeqRbGso0bB9L//OR+XTJqkPmYA\nkpd+3KpU7itfhcHCFYlpadU636WsK66AvlKy768fOZFGTE5GzXzmyjiuvdbnMbriYhi++Qb2m276\ne6OvLnhhvOBdpGOyT0RUHZUGmem3bXP/Y1hDkyZFPLw2gs1W+g+zGbaRI6tUtG3oUAh2O3R//AFb\nRobbWAqlJIvF806dTvHA6srdu6SkpCrFU856zz3VOr+i6saiJba77ipd0K2sXl1mOCLFhMuXXTf4\nSvZr0hojQcZkn4jI3+S68ZAsKToacn/i/TLnttHol+ki5ZJ9qV49lEycCNOCBdD9/LOicsRKs95U\nd852sTorCVciJSb6raxIJyUloXjyZJgWL4bYoAGsDz4Y6pAiklSrVqUNNWxq4TDCZJ+IyJ8kCUKl\nbjwSW/Y98rR6a+UpJUMqLg6oVQv466/SxwYDChcsKN32wQfKy6k8ALG6PwL9OEuQbfBgGBctciZk\nLt0vaiBHr14o6tUr1GFENLcfkEz2Q4bNTURE/la5ZZ+3pz2LjXXbJBmN4fWa6XQoGTeudA52QYB1\nxIjSRB8ACgpUleNXfuzjLCUlofiFFyCmpcHety+sDzzgt7KpZtIfPOi6QeNTC4cztuwTEfmTJAGF\nha7bypMyFf27awopJsZ9WxjeCbH36wd7586l9RsfX6UypCr8gCmeNg2SyYRoucWy/Dyg0dGzJ4qq\nuUIx1Qy2e+6BceFCr8cYFy6E9f77/368Zo3HY30t7EbVw5Z9IiI/050+7fK4fB7z4pdf9jjdopIZ\nLjRJritKuI5xqFWryok+ANUDtaXkZDg6dYLYrp1L0uTcr/XZmyhsOVq3VnScYf360gYOqxWmN97w\neFyxl6k8qfrC9BuViCgCVJ5iEwDMZrdZKMS6dUsP79oVBYsXo3DxYrfTtL56rkfhmtgrJfce8ETl\nc604770tM7O0G1EZ+6BBLo+JgkrhAljmKVNgXLzY5yB2sW1bf0RFHkT4tywRUYiIIqJlWqOkuDj3\nrjoVW6/j4znNYUUyP3J0lbtBhTHBbld+sEyyb1e6kFqtWih66y3Yb7kF1gceQMmjjyq/LpGfSSoW\nwDLNmwf9Tz95PiA6OrzG6GgQ++wTEVWBfs8e6Pbvd9suxcW5t/Yq6b5RQ1v2dUeOhDqEahFOnlR+\nsEyyb8vMhGH5ckWni1deiZInn1R+PaIAkRS27Jczvf22551FRdWMhnxhyz4RURXot22T3xEby2Rf\nBSE/P9QhBI9Msi82bRqCQIiqycPYo6qwDR/ut7JIXtgn+xMnTkRaWhosFgt+qnAbKC0tDenp6ejW\nrRu6deuGL774IoRRElGN46n/tcyMO+E4uwyFgIf3QaGPWU2Iwo4fZ4KyDhvmt7JIXth34xk0aBDG\njx+P/jLLVb///vtorXBEOBGRX3noY6rfutV9o4LFjxzhtIhUMNWkhXY8vGekRo1QsGkTDMuXw/z6\n687tNiZBFKakhAS/lFOwbJnsWhvkX2Gf7Hft2tWv5eXl5UGqSX9capDc3Fzk5+cjNzc31KFQAIRb\n/cYXF6OWwsGZOaIIKSfHZVvxvffC8s47AEoXkTp3000QKx1TE+itVhjLXke7wwHR4YDd4UBOhLwW\nUSoG6OZcugTJS3ctoUMHJP7jHzAfOABbaipyevSAI0JeByXC7TNM1SP33q/4GVYiNz8fkpoZrQgA\nIAgCElT84Ar7ZN+b0aNHQ5IkdOjQAc8//zzqlk1v583GjRth8OMS4xQ+8vPzsb9swGQc55/WnHCr\n3y7ff4/US5cUHfvl2rUQZb53ml5/PeJzcnCsTRtc8jQGQONu/vNPxJe9jqLDgcKywXorV64MZViK\nDVH4HgCA1WvWwOZrYGN6Ooxt28JuMkHavr2a0YWXcPsMU/XIvfcrfoZ1Crovrli3jjPxVIHZbMbQ\noUMVHx+xWe+qVavQqFEj2Gw2TJkyBWPGjMFimbmrK+vduzdq164dhAgp2MpbizIyMlT94qXIEG71\n23DBAkDhd8mAQYPk+/jfeisAINWfgUWYeqtXw1DWslfeGhhfuzYGDhwYyrAUsyxYoPjYmwYMkF0x\nuKYIt88wVY/ce7/iZ9igINkfWPYdSOoIKn8gRWyy36hRIwCA0WjEmDFj0LFjR0XnWSwWfsloWFxc\nHBISEpCYmBjqUCgAwqZ+rVbold4h1OmQyHn1PTIZjRAqvJY6vR4GvT70dayQ4vcBgITERKAGJ/tA\nGH2Gqdo8vffLP8O+Phslzz3H90GQhP1sPHIKCgqQl5fnfLxkyRKkpaWFMCIiqlGquZASaZvYpo38\nDs7KRAQAKJk0Cfa+fUMdRo0R9i37Tz75JFatWoVz584hMzMTsbGxWLp0Ke655x44ym4XNW7cGFlZ\nWSGOlIhqDDUDytT8MCBNsN1+O8yHDrnv8OPc5EThxtGhAxw//wwoGMfiaN48CBFRubBP9qdPn47p\n06e7bd8qN70dEVGACX/+CdMHH4Q6DE2z16sX6hCqxd6nD3S//Qbjp586txX9978hjIgoCPR6lFx7\nLaBkVWne5QqqsE/2iYjChtWK6DFjIFToRkjVJDMVcsGAAYj0NnDrQw/B0a4d9D/8ANvdd0Ni32TS\nOkmC/vx5Zceye2NQMdknIlJI//33TPSDIP/WWyMm2bf36QPDhg2y+xzXXw/H9dcHOSKi0DFkZys7\nkMl+UPHVJiJSSHfqlOpzSv7v/wIQiYbILXIYQfNulzz9tMvjojlzQhQJUYiJImC1KjuWY5mCii37\nREQKSVVYCIgzTmicyYSCDRsgnDwJqU4dxWsvEGmRrqQk1CGQDLbsExEpVZXVt3m72ju5lv1Io9dD\natKEiT7VaI4uXSAoTPallJQAR0MV8a8QEZFCgtJb1GWK3norQJFohy0jw+VxcQ1fdIooUpRMnuxs\nzJDq14dtwABF59mGD4+ornpawG48RERKFRd73FXy2GMwbNoEoaAAjg4dYLvjDs7AooDttttg/Oor\nCOfPQzIY8EOfPlC2HjoRhZK9d2+IDRtCd+YM7OnpQFSUshM57WbQMdknIlJI8JLs2wcNgn3QoCBG\noxG1a6PwnXeg37MHufHx+HPfvlBHREQKiVddBfGqq5yPi9PTgfXrvZ5jT08PdFhUCbvxEBEppDt8\nONQhaFN8PBw9e8KemhrqSIioGv7KzPR5jNioURAioYqY7BMRKaD7+Wfof/hBdp+9Ur9zIqKayHr1\n1dh4550Qvc1cZjIFLyACwGSfiEiR6DFjPO6zjhwZvECIiMJYdmoq/vzoIzg8dddhsh90TPaJiKrB\n0aULpAYNQh0GEVF4MRrlt3OAbtAx2Sci8iUvT3670YjiF14IaihERBHBU7LPaTeDjsk+EZEPgodk\n33r33bwlTUQkp7Aw1BFQGSb7REQ+CAUFstvFVq2CHAkRUWTQ79zpts3RtWsIIiEm+0REPgj5+W7b\nHB06eB6ARkRU08l043F06BCCQIjJPhFpX2EhzDNmIHrsWBhWrgQkSdXpwuXLbtuKX37ZuVQ8ERG5\nsvfq5b6R/fVDgivoEpHmmT75pDTJB2A+dAhiq1YQW7RQfL5h61aXx1JyMhAT49cYiYi0xDZgAAzr\n1rlsk9hAEhJ81YlI84wLF7o8NmVl+T7p0iUIp08DkgT9li0uu4TsbH+GR0SkOZLF4r6RLfshwZZ9\nIqpxdOfPe92v/+EHRE2eDJSUwNGjR5CiIiLSEJn59AWHIwSBEFv2iajGEU6cAIqKPO6PevppoKQE\nANxa9QHAPmhQwGIjItKEuDi3TcK5cyEIhJjsE1GNFP3kk7LbdYcP+zxXTE31dzhERJoi1anjts3R\nrl0IIiEm+0RUI+kOHYJw9qzb9uiHHvJ5ruRpZUgiInIqfvFF57/F5s3huPbaEEZTc7HPPhHVWMZV\nq2AdNUr9iVw1l4jIJ0fPnij8+GPozp2Do1UrwGwOdUg1EpN9IqqxjB98AOPnnzsXerF37qzoPCkq\nKpBhERFphnTFFXBccUWow6jRmOwTUc1WUOAchCs3GFeO7JRyREREYYh99omIVGKyT0REkYLJPhGR\nShJvSRMRUYRgNx4i0iz9t9/C9N57/i+YA3SJiChCMNknIm0qLETUSy85F8fyF/Hqq/1aHhERUSCx\nGw8RaZJh0ya/J/oAYO/Uye9lEhERBQqTfSLSJKGwMCDl6hWssEtERBQumOwTkTYVFQWmXKs1MOUS\nEREFAJN9ItIk3blzHvfZ7r67yuXa7rijyucSEREFG5N9ItIc3c8/w/Dllx73W//1LxR+9hkcHTtC\nSk6GlJiouGyxcWN/hEhERBQUnI2HiDTHPGuWx33FM2YAAKTkZBRPn1660eFAbJ8+isqWkpOrHR8R\nEVGwsGWfiLTFZoPul1887pZq1XLfqNejYMUKONq3h71XLxQuXSqb1Ds6dgT0en9GS0REFFBs2Sci\nTREuXPC6X6pbV35HfDyKZ878+7HD4XZIyRNPVCc0IiKioAv7lv2JEyciLS0NFosFP/30k3P7H3/8\ngX79+qFDhw7o3bs3DnM6PKIaz7B2LWKGDvW439GjB6SEBEVlCXa72zapQYMqx0ZERBQKYZ/sDxo0\nCGvWrEGjRo1ctk+YMAH33nsvfvzxR4wfPx7jxo0LUYREFBYKC2Eu74Mvo+T551H8/PPKy5NJ9omI\niCJN2Hfj6dq1q9u28+fPY9++fVi6dCkA4NZbb8VTTz2F48ePo7GPmTLy8vIgSVJAYqXQys3NRX5+\nPnJzc0MdCgWAr/o1/vILorwspHXummuAvDzF1zMXFrq17ufk5Cg+n9TjZ1jbWL/axzoODkEQkKDw\nLjUQAcm+nNOnT6NBgwYwGErDFwQBKSkpOHXqlM9kf+PGjc7zSFvy8/Oxf/9+AEBcXFyIoyF/81W/\ndc+cQd9Llzyev3LlSlXXuzMvD/pKyb7aMkgdfoa1jfWrfazj4DCbzRjqpctqZRGb9QqC4PJYaWt9\n7969Ubt27UCERCFW3pKQkZGh6hcvRQZf9Wvevx+WVatkzy267joMHDhQ1fX0ej0sb7/tfPzXnXeq\nLoPU4WdY21i/2sc6Do7KObAvEZnsN2zYEGfOnIHdbofBYIAkSTh9+jRSUlJ8nmuxWPgG1LC4uDgk\nJCQgUcUiSRQ5vNWv4fJl6D3ctdM99pj698SgQRB27IDuwAGIV14J0913830VBPwMaxvrV/tYx+En\nIpP9pKQkpKWlYdGiRRg+fDhWrFiB1NRUn114iEi7TO+9J7tdSk2FpKAhwE18PIpmzwYKC4HoaM6v\nT0REESnsZ+N58skn0bp1a5w5cwaZmZm49tprAQCzZs3Ce++9hw4dOuD111/Hm2++GeJIiSiUhIsX\nZbfbBg2qeqE6HRAXx0SfiIgiVti37E+fPh3TZabTa9GiBdatWxeCiIgoUohXXgnbjTeGOgwiIqKQ\nCftkn4hIkfh44PJl50Pr/ffDdvfdgMqBTERERFoS9t14iIiUkGrVcnksNm7MRJ+IiGo8JvtEpAnC\n6dOuG8zm0ARCREQURpjsE1Hkk1tMy2gMfhxERERhhsk+EUU83YULbttETsVLRETEAbpEFFn058/D\n9OmnkOLiYLvrLiAqCpBZQVvigi5ERERM9okocggOB5KefhrGsm47+iNHUPzii4DD4Xogu/AQEREB\nYLJPRBGk+cGD0OfkAIbSry795s2I7dXL/UAdeygSEREB7LNPRBGk/rFjyg5ksk9ERASAyT4RRRCd\nKCo7sKgosIEQERFFCCb7RBQxrjhyJNQhEBERRRQm+0QUEfRnzoQ6BCIioojDZJ+IIkLc6tWhDoGI\niCjiMNknooig++svxceKbdoEMBIiIqLIwWSfiCJCyT/+ofzY8eMDGAkREVHkYLJPRJFBr1d8qNiy\nZQADISIiihxM9okoIghWq8tjsW1bWMeMCVE0REREkYHJPhFFBF1BgctjKSoKjquucjuueNq0YIVE\nREQU9pjsE1FE0F265PJYqlMHYloapKQk5zaxTRs4OnUKdmhERERhyxDqAIiIvJIkRD/8MKQDB5BX\ncbPFAuj1KHrrLRg//xySxQLb4MEhC5OIiCgcMdknorAW27s3IElwVN5hMgEApKQkWB96KOhxERER\nRQJ24yGisKXbuxeQJNl9AlfUJSIi8onJPhGFLXNWlsd99r59gxgJERFRZGKyT0RhS3f4sMd9juuu\nC2IkREREkYnJPhFFHPHqqwFBCHUYREREYY/JPhGFn5ISxA4Y4HF30axZQQyGiIgocjHZJ6KwY/jm\nG6DSIlrlTi9bBhg4kRgREZESTPaJKOyY//MfzzvZfYeIiEgxJvtEFH48TLf5Z5MmwY2DiIgowjHZ\nJ6KIsa9791CHQEREFFGY7BNRWNHv3u22TWzeHKeXL0decnIIIiIiIopcHOVGROHB4QCKihD1f//n\ntqv41VdDEBAREVHkY7JPRKHlcMA8dSoMGzd6PESKjQWKioIYFBERkTawGw8RhZRh40aviT4AICYm\nOMEQERFpDJN9Igop/a5dXveXyHTrISIiImWY7BNRSBnWrfO6396nT5AiISIi0h722Sei0JCk0n74\noujxEOuDDwJ6fRCDIiIi0hYm+0QUUMLFi4i5807AbgcAFM2eDf2vv8I0d67X8xwdOsA2ZEgwQiQi\nItKsiE7209LSEBUVBbPZDAB4/PHHcfvtt4c4KiKqKOq555yJPgBEjx/v9fji//wHUmIixGbNAEEI\ndHhERESaFtHJPgC8//77aN26dajDIKLK8vJg+ugj6A4dUnWa47rrAhQQERFRzRPxyb5aeXl5kCQp\n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\npQOMJQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "micro.plot_stock(start_date='1980-02-10', end_date='2019-01-01')" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "91.609999999999999" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "micro.stock.ix[len(micro.stock) - 1, 'Adj. Close']" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "hideCode": false, "hidePrompt": false }, "outputs": [], "source": [ "# Quandl for financial analysis, pandas and numpy for data manipulation\n", "# fbprophet for additive models, #pytrends for Google trend data\n", "import quandl\n", "import pandas as pd\n", "import numpy as np\n", "import fbprophet\n", "import pytrends\n", "from pytrends.request import TrendReq\n", "\n", "# matplotlib pyplot for plotting\n", "import matplotlib.pyplot as plt\n", "\n", "import matplotlib\n", "\n", "# Class for analyzing and (attempting) to predict future prices\n", "# Contains a number of visualizations and analysis methods\n", "class Stocker():\n", " \n", " # Initialization requires a ticker symbol\n", " def __init__(self, ticker):\n", " \n", " # Enforce capitalization\n", " ticker = ticker.upper()\n", " \n", " # Symbol is used for labeling plots\n", " self.symbol = ticker\n", " \n", " # Use Personal Api Key\n", " # quandl.ApiConfig.api_key = 'YourKeyHere'\n", "\n", " # Retrieval the financial data\n", " try:\n", " stock = quandl.get('WIKI/%s' % ticker)\n", " \n", " except Exception as e:\n", " print('Error Retrieving Data.')\n", " print(e)\n", " return\n", " \n", " # Set the index to a column called Date\n", " stock = stock.reset_index(level=0)\n", " \n", " # Columns required for prophet\n", " stock['ds'] = stock['Date']\n", " stock['y'] = stock['Adj. Close']\n", " stock['Daily Change'] = stock['Adj. Close'] - stock['Adj. Open']\n", " \n", " # Data assigned as class attribute\n", " self.stock = stock.copy()\n", " \n", " # Minimum and maximum date in range\n", " self.min_date = min(stock['Date'])\n", " self.max_date = max(stock['Date'])\n", " \n", " # Find max and min prices and dates on which they occurred\n", " self.max_price = np.max(self.stock['y'])\n", " self.min_price = np.min(self.stock['y'])\n", " \n", " self.min_price_date = self.stock[self.stock['y'] == self.min_price]['Date']\n", " self.min_price_date = self.min_price_date[self.min_price_date.index[0]]\n", " self.max_price_date = self.stock[self.stock['y'] == self.max_price]['Date']\n", " self.max_price_date = self.max_price_date[self.max_price_date.index[0]]\n", " \n", " # The starting price (starting with the opening price)\n", " self.starting_price = float(self.stock.ix[0, 'Adj. Open'])\n", " \n", " # The most recent price\n", " self.most_recent_price = float(self.stock.ix[len(self.stock) - 1, 'y'])\n", "\n", " # Whether or not to round dates\n", " self.round_dates = True\n", " \n", " # Number of years of data to train on\n", " self.training_years = 3\n", "\n", " # Prophet parameters\n", " # Default prior from library\n", " self.changepoint_prior_scale = 0.05 \n", " self.weekly_seasonality = False\n", " self.daily_seasonality = False\n", " self.monthly_seasonality = True\n", " self.yearly_seasonality = True\n", " self.changepoints = None\n", " \n", " print('{} Stocker Initialized. Data covers {} to {}.'.format(self.symbol,\n", " self.min_date.date(),\n", " self.max_date.date()))\n", " \n", " \"\"\"\n", " Make sure start and end dates are in the range and can be\n", " converted to pandas datetimes. Returns dates in the correct format\n", " \"\"\"\n", " def handle_dates(self, start_date, end_date):\n", " \n", " \n", " # Default start and end date are the beginning and end of data\n", " if start_date is None:\n", " start_date = self.min_date\n", " if end_date is None:\n", " end_date = self.max_date\n", " \n", " try:\n", " # Convert to pandas datetime for indexing dataframe\n", " start_date = pd.to_datetime(start_date)\n", " end_date = pd.to_datetime(end_date)\n", " \n", " except Exception as e:\n", " print('Enter valid pandas date format.')\n", " print(e)\n", " return\n", " \n", " valid_start = False\n", " valid_end = False\n", " \n", " # User will continue to enter dates until valid dates are met\n", " while (not valid_start) & (not valid_end):\n", " valid_end = True\n", " valid_start = True\n", " \n", " if end_date.date() < start_date.date():\n", " print('End Date must be later than start date.')\n", " start_date = pd.to_datetime(input('Enter a new start date: '))\n", " end_date= pd.to_datetime(input('Enter a new end date: '))\n", " valid_end = False\n", " valid_start = False\n", " \n", " else: \n", " if end_date.date() > self.max_date.date():\n", " print('End Date exceeds data range')\n", " end_date= pd.to_datetime(input('Enter a new end date: '))\n", " valid_end = False\n", "\n", " if start_date.date() < self.min_date.date():\n", " print('Start Date is before date range')\n", " start_date = pd.to_datetime(input('Enter a new start date: '))\n", " valid_start = False\n", " \n", " \n", " return start_date, end_date\n", " \n", " \"\"\"\n", " Return the dataframe trimmed to the specified range.\n", " \"\"\"\n", " def make_df(self, start_date, end_date, df=None):\n", " \n", " # Default is to use the object stock data\n", " if not df:\n", " df = self.stock.copy()\n", " \n", " \n", " start_date, end_date = self.handle_dates(start_date, end_date)\n", " \n", " # keep track of whether the start and end dates are in the data\n", " start_in = True\n", " end_in = True\n", "\n", " # If user wants to round dates (default behavior)\n", " if self.round_dates:\n", " # Record if start and end date are in df\n", " if (start_date not in list(df['Date'])):\n", " start_in = False\n", " if (end_date not in list(df['Date'])):\n", " end_in = False\n", "\n", " # If both are not in dataframe, round both\n", " if (not end_in) & (not start_in):\n", " trim_df = df[(df['Date'] >= start_date.date()) & \n", " (df['Date'] <= end_date.date())]\n", " \n", " else:\n", " # If both are in dataframe, round neither\n", " if (end_in) & (start_in):\n", " trim_df = df[(df['Date'] >= start_date.date()) & \n", " (df['Date'] <= end_date.date())]\n", " else:\n", " # If only start is missing, round start\n", " if (not start_in):\n", " trim_df = df[(df['Date'] > start_date.date()) & \n", " (df['Date'] <= end_date.date())]\n", " # If only end is imssing round end\n", " elif (not end_in):\n", " trim_df = df[(df['Date'] >= start_date.date()) & \n", " (df['Date'] < end_date.date())]\n", "\n", " \n", " else:\n", " valid_start = False\n", " valid_end = False\n", " while (not valid_start) & (not valid_end):\n", " start_date, end_date = self.handle_dates(start_date, end_date)\n", " \n", " # No round dates, if either data not in, print message and return\n", " if (start_date in list(df['Date'])):\n", " valid_start = True\n", " if (end_date in list(df['Date'])):\n", " valid_end = True\n", " \n", " # Check to make sure dates are in the data\n", " if (start_date not in list(df['Date'])):\n", " print('Start Date not in data (either out of range or not a trading day.)')\n", " start_date = pd.to_datetime(input(prompt='Enter a new start date: '))\n", " \n", " elif (end_date not in list(df['Date'])):\n", " print('End Date not in data (either out of range or not a trading day.)')\n", " end_date = pd.to_datetime(input(prompt='Enter a new end date: ') )\n", "\n", " # Dates are not rounded\n", " trim_df = df[(df['Date'] >= start_date.date()) & \n", " (df['Date'] <= end_date.date())]\n", "\n", " \n", " \n", " return trim_df\n", "\n", "\n", " # Basic Historical Plots and Basic Statistics\n", " def plot_stock(self, start_date=None, end_date=None, stats=['Adj. Close'], plot_type='basic'):\n", " \n", " self.reset_plot()\n", " \n", " if start_date is None:\n", " start_date = self.min_date\n", " if end_date is None:\n", " end_date = self.max_date\n", " \n", " stock_plot = self.make_df(start_date, end_date)\n", "\n", " colors = ['r', 'b', 'g', 'y', 'c', 'm']\n", " \n", " for i, stat in enumerate(stats):\n", " \n", " stat_min = min(stock_plot[stat])\n", " stat_max = max(stock_plot[stat])\n", "\n", " stat_avg = np.mean(stock_plot[stat])\n", " \n", " date_stat_min = stock_plot[stock_plot[stat] == stat_min]['Date']\n", " date_stat_min = date_stat_min[date_stat_min.index[0]].date()\n", " date_stat_max = stock_plot[stock_plot[stat] == stat_max]['Date']\n", " date_stat_max = date_stat_max[date_stat_max.index[0]].date()\n", " \n", " print('Maximum {} = {:.2f} on {}.'.format(stat, stat_max, date_stat_max))\n", " print('Minimum {} = {:.2f} on {}.'.format(stat, stat_min, date_stat_min))\n", " print('Current {} = {:.2f} on {}.\\n'.format(stat, self.stock.ix[len(self.stock) - 1, stat], self.max_date.date()))\n", " \n", " # Percentage y-axis\n", " if plot_type == 'pct':\n", " # Simple Plot \n", " plt.style.use('fivethirtyeight');\n", " if stat == 'Daily Change':\n", " plt.plot(stock_plot['Date'], 100 * stock_plot[stat],\n", " color = colors[i], linewidth = 2.4, alpha = 0.9,\n", " label = stat)\n", " else:\n", " plt.plot(stock_plot['Date'], 100 * (stock_plot[stat] - stat_avg) / stat_avg,\n", " color = colors[i], linewidth = 2.4, alpha = 0.9,\n", " label = stat)\n", "\n", " plt.xlabel('Date'); plt.ylabel('Change Relative to Average (%)'); plt.title('%s Stock History' % self.symbol); \n", " plt.legend(prop={'size':10})\n", " plt.grid(color = 'k', alpha = 0.4); \n", "\n", " # Stat y-axis\n", " elif plot_type == 'basic':\n", " plt.style.use('fivethirtyeight');\n", " plt.plot(stock_plot['Date'], stock_plot[stat], color = colors[i], linewidth = 3, label = stat, alpha = 0.8)\n", " plt.xlabel('Date'); plt.ylabel('US $'); plt.title('%s Stock History' % self.symbol); \n", " plt.legend(prop={'size':10})\n", " plt.grid(color = 'k', alpha = 0.4); \n", " \n", " plt.show();\n", " \n", " # Reset the plotting parameters to clear style formatting\n", " # Not sure if this should be a static method\n", " @staticmethod\n", " def reset_plot():\n", " \n", " # Restore default parameters\n", " matplotlib.rcParams.update(matplotlib.rcParamsDefault)\n", " \n", " # Adjust a few parameters to liking\n", " matplotlib.rcParams['figure.figsize'] = (8, 5)\n", " matplotlib.rcParams['axes.labelsize'] = 10\n", " matplotlib.rcParams['xtick.labelsize'] = 8\n", " matplotlib.rcParams['ytick.labelsize'] = 8\n", " matplotlib.rcParams['axes.titlesize'] = 14\n", " matplotlib.rcParams['text.color'] = 'k'\n", " \n", " # Method to linearly interpolate prices on the weekends\n", " def resample(self, dataframe):\n", " # Change the index and resample at daily level\n", " dataframe = dataframe.set_index('ds')\n", " dataframe = dataframe.resample('D')\n", " \n", " # Reset the index and interpolate nan values\n", " dataframe = dataframe.reset_index(level=0)\n", " dataframe = dataframe.interpolate()\n", " return dataframe\n", " \n", " # Remove weekends from a dataframe\n", " def remove_weekends(self, dataframe):\n", " \n", " # Reset index to use ix\n", " dataframe = dataframe.reset_index(drop=True)\n", " \n", " weekends = []\n", " \n", " # Find all of the weekends\n", " for i, date in enumerate(dataframe['ds']):\n", " if (date.weekday()) == 5 | (date.weekday() == 6):\n", " weekends.append(i)\n", " \n", " # Drop the weekends\n", " dataframe = dataframe.drop(weekends, axis=0)\n", " \n", " return dataframe\n", " \n", " \n", " # Calculate and plot profit from buying and holding shares for specified date range\n", " def buy_and_hold(self, start_date=None, end_date=None, nshares=1):\n", " self.reset_plot()\n", " \n", " start_date, end_date = self.handle_dates(start_date, end_date)\n", " \n", " # Find starting and ending price of stock\n", " start_price = float(self.stock[self.stock['Date'] == start_date]['Adj. Open'])\n", " end_price = float(self.stock[self.stock['Date'] == end_date]['Adj. Close'])\n", " \n", " # Make a profit dataframe and calculate profit column\n", " profits = self.make_df(start_date, end_date)\n", " profits['hold_profit'] = nshares * (profits['Adj. Close'] - start_price)\n", " \n", " # Total profit\n", " total_hold_profit = nshares * (end_price - start_price)\n", " \n", " print('{} Total buy and hold profit from {} to {} for {} shares = ${:.2f}'.format\n", " (self.symbol, start_date.date(), end_date.date(), nshares, total_hold_profit))\n", " \n", " # Plot the total profits \n", " plt.style.use('dark_background')\n", " \n", " # Location for number of profit\n", " text_location = (end_date - pd.DateOffset(months = 1)).date()\n", " \n", " # Plot the profits over time\n", " plt.plot(profits['Date'], profits['hold_profit'], 'b', linewidth = 3)\n", " plt.ylabel('Profit ($)'); plt.xlabel('Date'); plt.title('Buy and Hold Profits for {} {} to {}'.format(\n", " self.symbol, start_date.date(), end_date.date()))\n", " \n", " # Display final value on graph\n", " plt.text(x = text_location, \n", " y = total_hold_profit + (total_hold_profit / 40),\n", " s = '$%d' % total_hold_profit,\n", " color = 'g' if total_hold_profit > 0 else 'r',\n", " size = 14)\n", " \n", " plt.grid(alpha=0.2)\n", " plt.show();\n", " \n", " # Create a prophet model without training\n", " def create_model(self):\n", "\n", " # Make the model\n", " model = fbprophet.Prophet(daily_seasonality=self.daily_seasonality, \n", " weekly_seasonality=self.weekly_seasonality, \n", " yearly_seasonality=self.yearly_seasonality,\n", " changepoint_prior_scale=self.changepoint_prior_scale,\n", " changepoints=self.changepoints)\n", " \n", " if self.monthly_seasonality:\n", " # Add monthly seasonality\n", " model.add_seasonality(name = 'monthly', period = 30.5, fourier_order = 5)\n", " \n", " return model\n", " \n", " # Graph the effects of altering the changepoint prior scale (cps)\n", " def changepoint_prior_analysis(self, changepoint_priors=[0.001, 0.05, 0.1, 0.2], colors=['b', 'r', 'grey', 'gold']):\n", " \n", " # Training and plotting with specified years of data\n", " train = self.stock[(self.stock['Date'] > (max(self.stock['Date']) - pd.DateOffset(years=self.training_years)).date())]\n", " \n", " # Iterate through all the changepoints and make models\n", " for i, prior in enumerate(changepoint_priors):\n", " # Select the changepoint\n", " self.changepoint_prior_scale = prior\n", " \n", " # Create and train a model with the specified cps\n", " model = self.create_model()\n", " model.fit(train)\n", " future = model.make_future_dataframe(periods=180, freq='D')\n", " \n", " # Make a dataframe to hold predictions\n", " if i == 0:\n", " predictions = future.copy()\n", " \n", " future = model.predict(future)\n", " \n", " # Fill in prediction dataframe\n", " predictions['%.3f_yhat_upper' % prior] = future['yhat_upper']\n", " predictions['%.3f_yhat_lower' % prior] = future['yhat_lower']\n", " predictions['%.3f_yhat' % prior] = future['yhat']\n", " \n", " # Remove the weekends\n", " predictions = self.remove_weekends(predictions)\n", " \n", " # Plot set-up\n", " self.reset_plot()\n", " plt.style.use('fivethirtyeight')\n", " fig, ax = plt.subplots(1, 1)\n", " \n", " # Actual observations\n", " ax.plot(train['ds'], train['y'], 'ko', ms = 4, label = 'Observations')\n", " color_dict = {prior: color for prior, color in zip(changepoint_priors, colors)}\n", "\n", " # Plot each of the changepoint predictions\n", " for prior in changepoint_priors:\n", " # Plot the predictions themselves\n", " ax.plot(predictions['ds'], predictions['%.3f_yhat' % prior], linewidth = 1.2,\n", " color = color_dict[prior], label = '%.3f prior scale' % prior)\n", " \n", " # Plot the uncertainty interval\n", " ax.fill_between(predictions['ds'].dt.to_pydatetime(), predictions['%.3f_yhat_upper' % prior],\n", " predictions['%.3f_yhat_lower' % prior], facecolor = color_dict[prior],\n", " alpha = 0.3, edgecolor = 'k', linewidth = 0.6)\n", " \n", " # Plot labels\n", " plt.legend(loc = 2, prop={'size': 10})\n", " plt.xlabel('Date'); plt.ylabel('Stock Price ($)'); plt.title('Effect of Changepoint Prior Scale');\n", " plt.show()\n", " \n", " # Basic prophet model for specified number of days \n", " def create_prophet_model(self, days=0, resample=False):\n", " \n", " self.reset_plot()\n", " \n", " model = self.create_model()\n", " \n", " # Fit on the stock history for self.training_years number of years\n", " stock_history = self.stock[self.stock['Date'] > (self.max_date - pd.DateOffset(years = self.training_years)).date()]\n", " \n", " if resample:\n", " stock_history = self.resample(stock_history)\n", " \n", " model.fit(stock_history)\n", " \n", " # Make and predict for next year with future dataframe\n", " future = model.make_future_dataframe(periods = days, freq='D')\n", " future = model.predict(future)\n", " \n", " if days > 0:\n", " # Print the predicted price\n", " print('Predicted Price on {} = ${:.2f}'.format(\n", " future.ix[len(future) - 1, 'ds'].date(), future.ix[len(future) - 1, 'yhat']))\n", "\n", " title = '%s Historical and Predicted Stock Price' % self.symbol\n", " else:\n", " title = '%s Historical and Modeled Stock Price' % self.symbol\n", " \n", " # Set up the plot\n", " fig, ax = plt.subplots(1, 1)\n", "\n", " # Plot the actual values\n", " ax.plot(stock_history['ds'], stock_history['y'], 'ko-', linewidth = 1.4, alpha = 0.8, ms = 1.8, label = 'Observations')\n", " \n", " # Plot the predicted values\n", " ax.plot(future['ds'], future['yhat'], 'forestgreen',linewidth = 2.4, label = 'Modeled');\n", "\n", " # Plot the uncertainty interval as ribbon\n", " ax.fill_between(future['ds'].dt.to_pydatetime(), future['yhat_upper'], future['yhat_lower'], alpha = 0.3, \n", " facecolor = 'g', edgecolor = 'k', linewidth = 1.4, label = 'Confidence Interval')\n", "\n", " # Plot formatting\n", " plt.legend(loc = 2, prop={'size': 10}); plt.xlabel('Date'); plt.ylabel('Price $');\n", " plt.grid(linewidth=0.6, alpha = 0.6)\n", " plt.title(title);\n", " plt.show()\n", " \n", " return model, future\n", " \n", " # Evaluate prediction model for one year\n", " def evaluate_prediction(self, start_date=None, end_date=None, nshares = None):\n", " \n", " # Default start date is one year before end of data\n", " # Default end date is end date of data\n", " if start_date is None:\n", " start_date = self.max_date - pd.DateOffset(years=1)\n", " if end_date is None:\n", " end_date = self.max_date\n", " \n", " start_date, end_date = self.handle_dates(start_date, end_date)\n", " \n", " # Training data starts self.training_years years before start date and goes up to start date\n", " train = self.stock[(self.stock['Date'] < start_date.date()) & \n", " (self.stock['Date'] > (start_date - pd.DateOffset(years=self.training_years)).date())]\n", " \n", " # Testing data is specified in the range\n", " test = self.stock[(self.stock['Date'] >= start_date.date()) & (self.stock['Date'] <= end_date.date())]\n", " \n", " # Create and train the model\n", " model = self.create_model()\n", " model.fit(train)\n", " \n", " # Make a future dataframe and predictions\n", " future = model.make_future_dataframe(periods = 365, freq='D')\n", " future = model.predict(future)\n", " \n", " # Merge predictions with the known values\n", " test = pd.merge(test, future, on = 'ds', how = 'inner')\n", "\n", " train = pd.merge(train, future, on = 'ds', how = 'inner')\n", " \n", " # Calculate the differences between consecutive measurements\n", " test['pred_diff'] = test['yhat'].diff()\n", " test['real_diff'] = test['y'].diff()\n", " \n", " # Correct is when we predicted the correct direction\n", " test['correct'] = (np.sign(test['pred_diff']) == np.sign(test['real_diff'])) * 1\n", " \n", " # Accuracy when we predict increase and decrease\n", " increase_accuracy = 100 * np.mean(test[test['pred_diff'] > 0]['correct'])\n", " decrease_accuracy = 100 * np.mean(test[test['pred_diff'] < 0]['correct'])\n", "\n", " # Calculate mean absolute error\n", " test_errors = abs(test['y'] - test['yhat'])\n", " test_mean_error = np.mean(test_errors)\n", "\n", " train_errors = abs(train['y'] - train['yhat'])\n", " train_mean_error = np.mean(train_errors)\n", "\n", " # Calculate percentage of time actual value within prediction range\n", " test['in_range'] = False\n", "\n", " for i in test.index:\n", " if (test.ix[i, 'y'] < test.ix[i, 'yhat_upper']) & (test.ix[i, 'y'] > test.ix[i, 'yhat_lower']):\n", " test.ix[i, 'in_range'] = True\n", "\n", " in_range_accuracy = 100 * np.mean(test['in_range'])\n", "\n", " if not nshares:\n", "\n", " # Date range of predictions\n", " print('\\nPrediction Range: {} to {}.'.format(start_date.date(),\n", " end_date.date()))\n", "\n", " # Final prediction vs actual value\n", " print('\\nPredicted price on {} = ${:.2f}.'.format(max(future['ds']).date(), future.ix[len(future) - 1, 'yhat']))\n", " print('Actual price on {} = ${:.2f}.\\n'.format(max(test['ds']).date(), test.ix[len(test) - 1, 'y']))\n", "\n", " print('Average Absolute Error on Training Data = ${:.2f}.'.format(train_mean_error))\n", " print('Average Absolute Error on Testing Data = ${:.2f}.\\n'.format(test_mean_error))\n", "\n", " # Direction accuracy\n", " print('When the model predicted an increase, the price increased {:.2f}% of the time.'.format(increase_accuracy))\n", " print('When the model predicted a decrease, the price decreased {:.2f}% of the time.\\n'.format(decrease_accuracy))\n", "\n", " print('The actual value was within the {:d}% confidence interval {:.2f}% of the time.'.format(int(100 * model.interval_width), in_range_accuracy))\n", "\n", "\n", " # Reset the plot\n", " self.reset_plot()\n", " \n", " # Set up the plot\n", " fig, ax = plt.subplots(1, 1)\n", "\n", " # Plot the actual values\n", " ax.plot(train['ds'], train['y'], 'ko-', linewidth = 1.4, alpha = 0.8, ms = 1.8, label = 'Observations')\n", " ax.plot(test['ds'], test['y'], 'ko-', linewidth = 1.4, alpha = 0.8, ms = 1.8, label = 'Observations')\n", " \n", " # Plot the predicted values\n", " ax.plot(future['ds'], future['yhat'], 'navy', linewidth = 2.4, label = 'Predicted');\n", "\n", " # Plot the uncertainty interval as ribbon\n", " ax.fill_between(future['ds'].dt.to_pydatetime(), future['yhat_upper'], future['yhat_lower'], alpha = 0.6, \n", " facecolor = 'gold', edgecolor = 'k', linewidth = 1.4, label = 'Confidence Interval')\n", "\n", " # Put a vertical line at the start of predictions\n", " plt.vlines(x=min(test['ds']).date(), ymin=min(future['yhat_lower']), ymax=max(future['yhat_upper']), colors = 'r',\n", " linestyles='dashed', label = 'Prediction Start')\n", "\n", " # Plot formatting\n", " plt.legend(loc = 2, prop={'size': 8}); plt.xlabel('Date'); plt.ylabel('Price $');\n", " plt.grid(linewidth=0.6, alpha = 0.6)\n", " \n", " plt.title('{} Model Evaluation from {} to {}.'.format(self.symbol,\n", " start_date.date(), end_date.date()));\n", " plt.show();\n", "\n", " \n", " # If a number of shares is specified, play the game\n", " elif nshares:\n", " \n", " # Only playing the stocks when we predict the stock will increase\n", " test_pred_increase = test[test['pred_diff'] > 0]\n", " \n", " test_pred_increase.reset_index(inplace=True)\n", " prediction_profit = []\n", " \n", " # Iterate through all the predictions and calculate profit from playing\n", " for i, correct in enumerate(test_pred_increase['correct']):\n", " \n", " # If we predicted up and the price goes up, we gain the difference\n", " if correct == 1:\n", " prediction_profit.append(nshares * test_pred_increase.ix[i, 'real_diff'])\n", " # If we predicted up and the price goes down, we lose the difference\n", " else:\n", " prediction_profit.append(nshares * test_pred_increase.ix[i, 'real_diff'])\n", " \n", " test_pred_increase['pred_profit'] = prediction_profit\n", " \n", " # Put the profit into the test dataframe\n", " test = pd.merge(test, test_pred_increase[['ds', 'pred_profit']], on = 'ds', how = 'left')\n", " test.ix[0, 'pred_profit'] = 0\n", " \n", " # Profit for either method at all dates\n", " test['pred_profit'] = test['pred_profit'].cumsum().ffill()\n", " test['hold_profit'] = nshares * (test['y'] - float(test.ix[0, 'y']))\n", " \n", " # Display information\n", " print('You played the stock market in {} from {} to {} with {} shares.\\n'.format(\n", " self.symbol, start_date.date(), end_date.date(), nshares))\n", " \n", " print('When the model predicted an increase, the price increased {:.2f}% of the time.'.format(increase_accuracy))\n", " print('When the model predicted a decrease, the price decreased {:.2f}% of the time.\\n'.format(decrease_accuracy))\n", "\n", " # Display some friendly information about the perils of playing the stock market\n", " print('The total profit using the Prophet model = ${:.2f}.'.format(np.sum(prediction_profit)))\n", " print('The Buy and Hold strategy profit = ${:.2f}.'.format(float(test.ix[len(test) - 1, 'hold_profit'])))\n", " print('\\nThanks for playing the stock market!\\n')\n", " \n", " \n", " \n", " # Plot the predicted and actual profits over time\n", " self.reset_plot()\n", " \n", " # Final profit and final smart used for locating text\n", " final_profit = test.ix[len(test) - 1, 'pred_profit']\n", " final_smart = test.ix[len(test) - 1, 'hold_profit']\n", "\n", " # text location\n", " last_date = test.ix[len(test) - 1, 'ds']\n", " text_location = (last_date - pd.DateOffset(months = 1)).date()\n", "\n", " plt.style.use('dark_background')\n", "\n", " # Plot smart profits\n", " plt.plot(test['ds'], test['hold_profit'], 'b',\n", " linewidth = 1.8, label = 'Buy and Hold Strategy') \n", "\n", " # Plot prediction profits\n", " plt.plot(test['ds'], test['pred_profit'], \n", " color = 'g' if final_profit > 0 else 'r',\n", " linewidth = 1.8, label = 'Prediction Strategy')\n", "\n", " # Display final values on graph\n", " plt.text(x = text_location, \n", " y = final_profit + (final_profit / 40),\n", " s = '$%d' % final_profit,\n", " color = 'g' if final_profit > 0 else 'r',\n", " size = 18)\n", " \n", " plt.text(x = text_location, \n", " y = final_smart + (final_smart / 40),\n", " s = '$%d' % final_smart,\n", " color = 'g' if final_smart > 0 else 'r',\n", " size = 18);\n", "\n", " # Plot formatting\n", " plt.ylabel('Profit (US $)'); plt.xlabel('Date'); \n", " plt.title('Predicted versus Buy and Hold Profits');\n", " plt.legend(loc = 2, prop={'size': 10});\n", " plt.grid(alpha=0.2); \n", " plt.show()\n", " \n", " def retrieve_google_trends(self, search, date_range):\n", " \n", " # Set up the trend fetching object\n", " pytrends = TrendReq(hl='en-US', tz=360)\n", " kw_list = [search]\n", "\n", " try:\n", " \n", " # Create the search object\n", " pytrends.build_payload(kw_list, cat=0, timeframe=date_range[0], geo='', gprop='news')\n", " \n", " # Retrieve the interest over time\n", " trends = pytrends.interest_over_time()\n", "\n", " related_queries = pytrends.related_queries()\n", "\n", " except Exception as e:\n", " print('\\nGoogle Search Trend retrieval failed.')\n", " print(e)\n", " return\n", " \n", " return trends, related_queries\n", " \n", " def changepoint_date_analysis(self, search=None):\n", " self.reset_plot()\n", "\n", " model = self.create_model()\n", " \n", " # Use past self.training_years years of data\n", " train = self.stock[self.stock['Date'] > (self.max_date - pd.DateOffset(years = self.training_years)).date()]\n", " model.fit(train)\n", " \n", " # Predictions of the training data (no future periods)\n", " future = model.make_future_dataframe(periods=0, freq='D')\n", " future = model.predict(future)\n", " \n", " train = pd.merge(train, future[['ds', 'yhat']], on = 'ds', how = 'inner')\n", " \n", " changepoints = model.changepoints\n", " train = train.reset_index(drop=True)\n", " \n", " # Create dataframe of only changepoints\n", " change_indices = []\n", " for changepoint in (changepoints):\n", " change_indices.append(train[train['ds'] == changepoint.date()].index[0])\n", " \n", " c_data = train.ix[change_indices, :]\n", " deltas = model.params['delta'][0]\n", " \n", " c_data['delta'] = deltas\n", " c_data['abs_delta'] = abs(c_data['delta'])\n", " \n", " # Sort the values by maximum change\n", " c_data = c_data.sort_values(by='abs_delta', ascending=False)\n", "\n", " # Limit to 10 largest changepoints\n", " c_data = c_data[:10]\n", "\n", " # Separate into negative and positive changepoints\n", " cpos_data = c_data[c_data['delta'] > 0]\n", " cneg_data = c_data[c_data['delta'] < 0]\n", "\n", " # Changepoints and data\n", " if not search:\n", " \n", " print('\\nChangepoints sorted by slope rate of change (2nd derivative):\\n')\n", " print(c_data.ix[:, ['Date', 'Adj. Close', 'delta']][:5])\n", "\n", " # Line plot showing actual values, estimated values, and changepoints\n", " self.reset_plot()\n", " \n", " # Set up line plot \n", " plt.plot(train['ds'], train['y'], 'ko', ms = 4, label = 'Stock Price')\n", " plt.plot(future['ds'], future['yhat'], color = 'navy', linewidth = 2.0, label = 'Modeled')\n", " \n", " # Changepoints as vertical lines\n", " plt.vlines(cpos_data['ds'].dt.to_pydatetime(), ymin = min(train['y']), ymax = max(train['y']), \n", " linestyles='dashed', color = 'r', \n", " linewidth= 1.2, label='Negative Changepoints')\n", "\n", " plt.vlines(cneg_data['ds'].dt.to_pydatetime(), ymin = min(train['y']), ymax = max(train['y']), \n", " linestyles='dashed', color = 'darkgreen', \n", " linewidth= 1.2, label='Positive Changepoints')\n", "\n", " plt.legend(prop={'size':10});\n", " plt.xlabel('Date'); plt.ylabel('Price ($)'); plt.title('Stock Price with Changepoints')\n", " plt.show()\n", " \n", " # Search for search term in google news\n", " # Show related queries, rising related queries\n", " # Graph changepoints, search frequency, stock price\n", " if search:\n", " date_range = ['%s %s' % (str(min(train['Date']).date()), str(max(train['Date']).date()))]\n", "\n", " # Get the Google Trends for specified terms and join to training dataframe\n", " trends, related_queries = self.retrieve_google_trends(search, date_range)\n", "\n", " if (trends is None) or (related_queries is None):\n", " print('No search trends found for %s' % search)\n", " return\n", "\n", " print('\\n Top Related Queries: \\n')\n", " print(related_queries[search]['top'].head())\n", "\n", " print('\\n Rising Related Queries: \\n')\n", " print(related_queries[search]['rising'].head())\n", "\n", " # Upsample the data for joining with training data\n", " trends = trends.resample('D')\n", "\n", " trends = trends.reset_index(level=0)\n", " trends = trends.rename(columns={'date': 'ds', search: 'freq'})\n", "\n", " # Interpolate the frequency\n", " trends['freq'] = trends['freq'].interpolate()\n", "\n", " # Merge with the training data\n", " train = pd.merge(train, trends, on = 'ds', how = 'inner')\n", "\n", " # Normalize values\n", " train['y_norm'] = train['y'] / max(train['y'])\n", " train['freq_norm'] = train['freq'] / max(train['freq'])\n", " \n", " self.reset_plot()\n", "\n", " # Plot the normalized stock price and normalize search frequency\n", " plt.plot(train['ds'], train['y_norm'], 'k-', label = 'Stock Price')\n", " plt.plot(train['ds'], train['freq_norm'], color='goldenrod', label = 'Search Frequency')\n", "\n", " # Changepoints as vertical lines\n", " plt.vlines(cpos_data['ds'].dt.to_pydatetime(), ymin = 0, ymax = 1, \n", " linestyles='dashed', color = 'r', \n", " linewidth= 1.2, label='Negative Changepoints')\n", "\n", " plt.vlines(cneg_data['ds'].dt.to_pydatetime(), ymin = 0, ymax = 1, \n", " linestyles='dashed', color = 'darkgreen', \n", " linewidth= 1.2, label='Positive Changepoints')\n", "\n", " # Plot formatting\n", " plt.legend(prop={'size': 10})\n", " plt.xlabel('Date'); plt.ylabel('Normalized Values'); plt.title('%s Stock Price and Search Frequency for %s' % (self.symbol, search))\n", " plt.show()\n", " \n", " # Predict the future price for a given range of days\n", " def predict_future(self, days=30):\n", " \n", " # Use past self.training_years years for training\n", " train = self.stock[self.stock['Date'] > (max(self.stock['Date']) - pd.DateOffset(years=self.training_years)).date()]\n", " \n", " model = self.create_model()\n", " \n", " model.fit(train)\n", " \n", " # Future dataframe with specified number of days to predict\n", " future = model.make_future_dataframe(periods=days, freq='D')\n", " future = model.predict(future)\n", " \n", " # Only concerned with future dates\n", " future = future[future['ds'] >= max(self.stock['Date']).date()]\n", " \n", " # Remove the weekends\n", " future = self.remove_weekends(future)\n", " \n", " # Calculate whether increase or not\n", " future['diff'] = future['yhat'].diff()\n", " \n", " future = future.dropna()\n", "\n", " # Find the prediction direction and create separate dataframes\n", " future['direction'] = (future['diff'] > 0) * 1\n", " \n", " # Rename the columns for presentation\n", " future = future.rename(columns={'ds': 'Date', 'yhat': 'estimate', 'diff': 'change', \n", " 'yhat_upper': 'upper', 'yhat_lower': 'lower'})\n", " \n", " future_increase = future[future['direction'] == 1]\n", " future_decrease = future[future['direction'] == 0]\n", " \n", " # Print out the dates\n", " print('\\nPredicted Increase: \\n')\n", " print(future_increase[['Date', 'estimate', 'change', 'upper', 'lower']])\n", " \n", " print('\\nPredicted Decrease: \\n')\n", " print(future_decrease[['Date', 'estimate', 'change', 'upper', 'lower']])\n", " \n", " self.reset_plot()\n", " \n", " # Set up plot\n", " plt.style.use('fivethirtyeight')\n", " matplotlib.rcParams['axes.labelsize'] = 10\n", " matplotlib.rcParams['xtick.labelsize'] = 8\n", " matplotlib.rcParams['ytick.labelsize'] = 8\n", " matplotlib.rcParams['axes.titlesize'] = 12\n", " \n", " # Plot the predictions and indicate if increase or decrease\n", " fig, ax = plt.subplots(1, 1, figsize=(8, 6))\n", "\n", " # Plot the estimates\n", " ax.plot(future_increase['Date'], future_increase['estimate'], 'g^', ms = 12, label = 'Pred. Increase')\n", " ax.plot(future_decrease['Date'], future_decrease['estimate'], 'rv', ms = 12, label = 'Pred. Decrease')\n", "\n", " # Plot errorbars\n", " ax.errorbar(future['Date'].dt.to_pydatetime(), future['estimate'], \n", " yerr = future['upper'] - future['lower'], \n", " capthick=1.4, color = 'k',linewidth = 2,\n", " ecolor='darkblue', capsize = 4, elinewidth = 1, label = 'Pred with Range')\n", "\n", " # Plot formatting\n", " plt.legend(loc = 2, prop={'size': 10});\n", " plt.xticks(rotation = '45')\n", " plt.ylabel('Predicted Stock Price (US $)');\n", " plt.xlabel('Date'); plt.title('Predictions for %s' % self.symbol);\n", " plt.show()\n", " \n", " def changepoint_prior_validation(self, start_date=None, end_date=None,changepoint_priors = [0.001, 0.05, 0.1, 0.2]):\n", "\n", "\n", " # Default start date is two years before end of data\n", " # Default end date is one year before end of data\n", " if start_date is None:\n", " start_date = self.max_date - pd.DateOffset(years=2)\n", " if end_date is None:\n", " end_date = self.max_date - pd.DateOffset(years=1)\n", " \n", " # Convert to pandas datetime for indexing dataframe\n", " start_date = pd.to_datetime(start_date)\n", " end_date = pd.to_datetime(end_date)\n", " \n", " start_date, end_date = self.handle_dates(start_date, end_date)\n", " \n", " # Select self.training_years number of years\n", " train = self.stock[(self.stock['Date'] > (start_date - pd.DateOffset(years=self.training_years)).date()) & \n", " (self.stock['Date'] < start_date.date())]\n", " \n", " # Testing data is specified by range\n", " test = self.stock[(self.stock['Date'] >= start_date.date()) & (self.stock['Date'] <= end_date.date())]\n", "\n", " eval_days = (max(test['Date']).date() - min(test['Date']).date()).days\n", " \n", " results = pd.DataFrame(0, index = list(range(len(changepoint_priors))), \n", " columns = ['cps', 'train_err', 'train_range', 'test_err', 'test_range'])\n", "\n", " print('\\nValidation Range {} to {}.\\n'.format(min(test['Date']).date(),\n", " max(test['Date']).date()))\n", " \n", " \n", " # Iterate through all the changepoints and make models\n", " for i, prior in enumerate(changepoint_priors):\n", " results.ix[i, 'cps'] = prior\n", " \n", " # Select the changepoint\n", " self.changepoint_prior_scale = prior\n", " \n", " # Create and train a model with the specified cps\n", " model = self.create_model()\n", " model.fit(train)\n", " future = model.make_future_dataframe(periods=eval_days, freq='D')\n", " \n", " future = model.predict(future)\n", " \n", " # Training results and metrics\n", " train_results = pd.merge(train, future[['ds', 'yhat', 'yhat_upper', 'yhat_lower']], on = 'ds', how = 'inner')\n", " avg_train_error = np.mean(abs(train_results['y'] - train_results['yhat']))\n", " avg_train_uncertainty = np.mean(abs(train_results['yhat_upper'] - train_results['yhat_lower']))\n", " \n", " results.ix[i, 'train_err'] = avg_train_error\n", " results.ix[i, 'train_range'] = avg_train_uncertainty\n", " \n", " # Testing results and metrics\n", " test_results = pd.merge(test, future[['ds', 'yhat', 'yhat_upper', 'yhat_lower']], on = 'ds', how = 'inner')\n", " avg_test_error = np.mean(abs(test_results['y'] - test_results['yhat']))\n", " avg_test_uncertainty = np.mean(abs(test_results['yhat_upper'] - test_results['yhat_lower']))\n", " \n", " results.ix[i, 'test_err'] = avg_test_error\n", " results.ix[i, 'test_range'] = avg_test_uncertainty\n", "\n", " print(results)\n", "\n", "\n", " \n", " # Plot of training and testing average errors\n", " self.reset_plot()\n", " \n", " plt.plot(results['cps'], results['train_err'], 'bo-', ms = 8, label = 'Train Error')\n", " plt.plot(results['cps'], results['test_err'], 'r*-', ms = 8, label = 'Test Error')\n", " plt.xlabel('Changepoint Prior Scale'); plt.ylabel('Avg. Absolute Error ($)');\n", " plt.title('Training and Testing Curves as Function of CPS')\n", " plt.grid(color='k', alpha=0.3)\n", " plt.xticks(results['cps'], results['cps'])\n", " plt.legend(prop={'size':10})\n", " plt.show();\n", " \n", " # Plot of training and testing average uncertainty\n", " self.reset_plot()\n", "\n", " plt.plot(results['cps'], results['train_range'], 'bo-', ms = 8, label = 'Train Range')\n", " plt.plot(results['cps'], results['test_range'], 'r*-', ms = 8, label = 'Test Range')\n", " plt.xlabel('Changepoint Prior Scale'); plt.ylabel('Avg. Uncertainty ($)');\n", " plt.title('Uncertainty in Estimate as Function of CPS')\n", " plt.grid(color='k', alpha=0.3)\n", " plt.xticks(results['cps'], results['cps'])\n", " plt.legend(prop={'size':10})\n", " plt.show();" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "TSLA Stocker Initialized. Data covers 2010-06-29 to 2018-01-16.\n" ] } ], "source": [ "tesla = Stocker('TSLA')" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " Top Related Queries: \n", "\n", " query value\n", "0 tesla s model 100\n", "1 tesla 100\n", "2 tesla model 100\n", "3 tesla s 100\n", "4 model s price 10\n", "\n", " Rising Related Queries: \n", "\n", " query value\n", "0 model s p100d 145300\n", "1 tesla p100d 133950\n", "2 tesla model s p100d 131350\n", "3 model s p90d 87800\n", "4 model s 90d 37100\n" ] }, { "data": { "image/png": "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\nRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "tesla.changepoint_date_analysis(search='Model S')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "hide_code_all_hidden": false, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.0" } }, "nbformat": 4, "nbformat_minor": 2 }