{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "# Quandl: S&P 500 Volatility Index (VIX)\n", "\n", "In this notebook, we'll take a look at data set , available on [Quantopian](https://www.quantopian.com/data). This dataset spans from January, 1990 through the current day. It contains the value for the index VIX, a measure of volatility in the S&P 500. We access this data via the API provided by [Quandl](https://www.quandl.com). [More details](https://www.quandl.com/data/YAHOO/INDEX_VIX-VIX-S-P-500-Volatility-Index) on this dataset can be found on Quandl's website.\n", "\n", "To be clear, this is a single value for VIX each day.\n", "\n", "## Notebook Contents\n", "\n", "There are two ways to access the data and you'll find both of them listed below. Just click on the section you'd like to read through.\n", "\n", "- Interactive overview: This is only available on Research and uses blaze to give you access to large amounts of data. Recommended for exploration and plotting.\n", "- Pipeline overview: Data is made available through pipeline which is available on both the Research & Backtesting environment. Recommended for custom factor development and moving back & forth between research/backtesting.\n", "\n", "### Limits\n", "One key caveat: we limit the number of results returned from any given expression to 10,000 to protect against runaway memory usage. To be clear, you have access to all the data server side. We are limiting the size of the responses back from Blaze.\n", "\n", "With preamble in place, let's get started:\n", "\n", "\n", "#Interactive Overview\n", "### Accessing the data with Blaze and Interactive on Research\n", "Partner datasets are available on Quantopian Research through an API service known as [Blaze](http://blaze.pydata.org). Blaze provides the Quantopian user with a convenient interface to access very large datasets, in an interactive, generic manner.\n", "\n", "Blaze provides an important function for accessing these datasets. Some of these sets are many millions of records. Bringing that data directly into Quantopian Research directly just is not viable. So Blaze allows us to provide a simple querying interface and shift the burden over to the server side.\n", "\n", "It is common to use Blaze to reduce your dataset in size, convert it over to Pandas and then to use Pandas for further computation, manipulation and visualization.\n", "\n", "Helpful links:\n", "* [Query building for Blaze](http://blaze.readthedocs.io/en/latest/queries.html)\n", "* [Pandas-to-Blaze dictionary](http://blaze.readthedocs.io/en/latest/rosetta-pandas.html)\n", "* [SQL-to-Blaze dictionary](http://blaze.readthedocs.io/en/latest/rosetta-sql.html).\n", "\n", "Once you've limited the size of your Blaze object, you can convert it to a Pandas DataFrames using:\n", "> `from odo import odo` \n", "> `odo(expr, pandas.DataFrame)`\n", "\n", "\n", "###To see how this data can be used in your algorithm, search for the `Pipeline Overview` section of this notebook or head straight to Pipeline Overview" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# import the dataset\n", "from quantopian.interactive.data.quandl import yahoo_index_vix as dataset\n", "# Since this data is provided by Quandl for free, there is no _free version of this\n", "# data set, as found in the premium sets. This import gets you the entirety of this data set.\n", "\n", "# import data operations\n", "from odo import odo\n", "# import other libraries we will use\n", "import pandas as pd\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "dshape(\"\"\"var * {\n", " open_: float64,\n", " high: float64,\n", " low: float64,\n", " close: float64,\n", " volume: float64,\n", " adjusted_close: float64,\n", " asof_date: datetime,\n", " timestamp: datetime\n", " }\"\"\")" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Let's use blaze to understand the data a bit using Blaze dshape()\n", "dataset.dshape" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "6651" ], "text/plain": [ "6651" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# And how many rows are there?\n", "# N.B. we're using a Blaze function to do this, not len()\n", "dataset.count()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
open_highlowclosevolumeadjusted_closeasof_datetimestamp
019.75000021.16000019.54000120.980000020.9800002016-02-232016-02-24 08:01:58.351899
122.28000122.87000120.26000020.719999020.7199992016-02-242016-02-25 08:02:33.397136
220.54000121.26000019.10000019.110001019.1100012016-02-252016-02-26 05:01:23.226761
" ], "text/plain": [ " open_ high low close volume adjusted_close \\\n", "0 19.750000 21.160000 19.540001 20.980000 0 20.980000 \n", "1 22.280001 22.870001 20.260000 20.719999 0 20.719999 \n", "2 20.540001 21.260000 19.100000 19.110001 0 19.110001 \n", "\n", " asof_date timestamp \n", "0 2016-02-23 2016-02-24 08:01:58.351899 \n", "1 2016-02-24 2016-02-25 08:02:33.397136 \n", "2 2016-02-25 2016-02-26 05:01:23.226761 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Let's see what the data looks like. We'll grab the first three rows.\n", "dataset[:3]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's go over the columns:\n", "- **asof_date**: the timeframe to which this data applies\n", "- **timestamp**: the simulated date upon which this data point is available to a backtest\n", "- **open**: opening price for the day indicated on asof_date\n", "- **high**: high price for the day indicated on asof_date\n", "- **low**: lowest price for the day indicated by asof_date\n", "- **close**: closing price for asof_date\n", "\n", "We've done much of the data processing for you. Fields like `timestamp` and `sid` are standardized across all our Store Datasets, so the datasets are easy to combine. We have standardized the `sid` across all our equity databases.\n", "\n", "We can select columns and rows with ease. Let's go plot it for fun below. 6500 rows is small enough to just convert right over to Pandas." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0EAAAHZCAYAAABAVzDeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XegVNW59/HfnEpHQIqioiYqYkFEJRI1SizReyXR18Qo\nijfXGL3RJBoSW9RYYw9qbMQSY0RFQ1SsgKhgoUkRFOm9Hg7tcDh9Zr9/zNlz9szsPbNnZk//fv7h\nzJ62mJldnrWe9SyfYRiGAAAAAKBIlGS7AQAAAACQSQRBAAAAAIoKQRAAAACAokIQBAAAAKCoEAQB\nAAAAKCoEQQAAAACKCkEQACCnXXTRRXr55Zejto8bN04XXXSRhg0bprlz58owDF188cX6xz/+Efa4\na6+9Vvfee2+mmgsAyAMEQQCAnHb++edrwoQJUdsnTJig888/P3Tb5/PpL3/5i8aMGaN169ZJkqZO\nnapvv/1Wo0aNylh7AQC5jyAIAJDTzj77bC1ZsiQU2EjS+vXrtWjRIp199tlhjz3wwAN11VVX6ZZb\nbtGePXt055136p577lFFRUWmmw0AyGEEQQCAnNapUyedfvrpYaNBb7/9ts444wx16tQp6vGXXXaZ\nmpubddFFF+m0007Tcccdl8nmAgDyAEEQACDnRabEvf322zrvvPNsH+vz+XTuuedq6dKlOuOMMzLV\nRABAHiEIAgDkvCFDhqipqUkLFizQwoULVV9frxNPPNH2sdu2bdOYMWM0atQo3X333Wpubs5wawEA\nuY4gCACQ80pKSvTjH/9Y77zzjt577z395Cc/cXzs7bffrosuukhXXHGFDjjgAI0ZMyaDLQUA5AOC\nIABAXjj//PM1ZcoUTZkyJawqnNXbb7+tdevW6Ze//KUk6bbbbtNLL72k5cuXZ7KpAIAcRxAEAMgL\nBxxwgHr37q2ePXtq//33j7p/69atuvfee3X33XertLRUktS7d29dc801uvnmm2UYRqabDADIUT4j\njWeFxYsX65prrtEvfvELjRgxQps2bdL111+vQCCgnj176oEHHlBFRYUmTJigF198USUlJfrZz36m\nCy64IF1NAgAAAFDk0jYSVF9fr/vvv18nnXRSaNtjjz2mSy65RGPHjlW/fv00fvx41dXV6cknn9QL\nL7ygf/3rX/rnP/+pXbt2patZAAAAAIpc2oKgiooKjRkzRnvvvXdo26xZszRs2DBJ0mmnnabp06dr\nwYIFOuqoo9SpUydVVlZq0KBBmjt3brqaBQAAAKDIlaXrhUtLS0M52ab6+nqVl5dLkrp3766qqipV\nV1ere/fuocf06NFDW7duTVezAAAAABS5rBVGcJqKxMRVAAAAAOmUtpEgOx06dFBTU5MqKiq0ZcsW\n9erVS7169VJ1dXXoMVu2bNGgQYNivs6cOXPS3VQAAAAAeW7w4MG229MeBFlHdoYOHaoPPvhAw4cP\n16RJk3TKKado4MCBuuWWW7R7926VlJRo7ty5+tOf/hT3dZ3+Q+kyZ86cjL8nMoPvtjDxvRYuvtvC\nxPdamPheC1eufLeL12zXHx/7VJL09sM/Drsv1sBJ2oKg+fPn69Zbb9W2bdtUWlqqV199Vc8++6xu\nuukmjRs3Tn379tV5552n0tJSjRo1Spdffrl8Pp9+85vfqFOnTulqFgAAAIAil7Yg6JhjjtHbb78d\ntf3555+P2nbWWWfprLPOSldTAAAAACAka4URAAAAACAbCIIAAAAAFBWCIAAAAABFhSAIAAAAQFEh\nCAIAAABQVAiCAAAAABQVgiAAAAAARYUgCAAAAEBRIQgCAAAAUFQIggAAAAAUFYIgAAAAAEWFIAgA\nAABAUSEIAgAAAFBUCIIAAAAAFBWCIAAAAABFhSAIAAAAQFEhCAIAAABQVAiCAAAAABQVgiAAAAAA\nRYUgCAAAAEBRIQgCAAAAUFQIggAAAAAUFYIgAAAAAEWFIAgAAABAUSEIAgAAAFBUCIIAAAAAFBWC\nIAAAAABFhSAIAAAAQFEhCAIAAABQVAiCAAAAABQVgiAAAAAARYUgCAAAAEBRIQgCAAAAUFQIggAA\nAAAUFYIgAAAAAEWFIAgAAABAUSEIAgAAAFBUCIIAAAAAFBWCIAAAAABFhSAIAAAAQFEhCAIAAABQ\nVAiCAAAAABQVgiAAAAAARYUgCAAAAEBRIQgCAAAAUFQIggAAAAAUFYIgAAAAAEWFIAgAAABAUSEI\nAgAAAFBUCIIAAAAAFBWCIAAAAABFhSAIAAAAQFEhCAIAAABQVAiCAAAAABQVgiAAAAAARYUgCAAA\nAEBRIQgCAAAAUFQIggAAAAAUFYIgAAAAAEWFIAgAAABAUSEIAgAAAFBUCIIAAAAAFBWCIAAAAABF\nhSAIAAAAQFEhCAIAAABQVAiCAAAAABQVgiAAAAAARYUgCAAAAEBRIQgCAAAAUFQIggAAAAAUFYIg\nAAAAAEWFIAgAAABAUSnL5Jvt2bNHN9xwg2pqatTU1KRrrrlG3/nOd3T99dcrEAioZ8+eeuCBB1RR\nUZHJZgEAAKTNl99uUZeOFTr0gG7ZbgqAVhkNgt544w0dfPDB+v3vf6+qqiqNHDlSgwYN0iWXXKKz\nzjpLo0eP1vjx43XRRRdlslkAAABpc8ezMyRJbz/84yy3BIApo+lwPXr00M6dOyVJu3btUvfu3TVr\n1iwNGzZMknTaaadp+vTpmWwSAAAAgCKT0SDo7LPP1qZNm3TmmWdq5MiRuvHGG1VfX6/y8nJJUvfu\n3VVVVZXJJgEAAKTFtl312rG7IdvNAGAjo+lwb731lvbZZx8988wzWrx4sW655Rb5fL7Q/YZhZLI5\nAAAAafM/d07KdhMAOMhoEDRv3jyddNJJkqT+/ftr8+bNat++vRobG1VZWaktW7aoV69erl5rzpw5\n6WxqzrwnMoPvtjDxvRYuvtvCVOjfa6H//5wU6/+7GOTCd7uuujH0dyLtyWgQ1K9fP3311Vc688wz\ntWHDBnXs2FFDhgzRxIkTNXz4cE2aNEmnnHKKq9caPHhwmlsbbs6cORl/T2QG321h4nstXHy3hanQ\nvtemZr/08vqwbYX0/3Or0L5XtMmV77bjmu3SpK2SovexWEFRRoOgCy+8UDfffLMuvfRStbS06M47\n79TBBx+sG264QePGjVPfvn113nnnZbJJAAAAnttT35ztJgCIIaNBUIcOHfTII49EbX/++ecz2QwA\nAIC0qm9syXYTAMSQ0epwAAAAxYBST0BuIwgCAADwGBVvgdxGEAQAAACgqBAEAQAAeIyBICC3EQQB\nAAAAKCoEQQAAAACKCkEQAAAAgKJCEAQAAACgqBAEAQAAeIwS2UBuIwgCAAAAUFQIggAAADzGOBCQ\n2wiCAAAAABQVgiAAAACvMRQE5DSCIAAAAABFhSAIAADAYwwEAbmNIAgAAABAUSEIAgAA8BjrBAG5\njSAIAAAAQFEhCAIAAABQVAiCAAAAABQVgiAAAAAARYUgCAAAwGPURQByG0EQAAAAgKJCEAQAAOAx\nSmQDuY0gCAAAAEBRIQgCAADwGONAQG4jCAIAAABQVAiCAAAAvMZQEJDTCIIAAAAAFBWCIAAAAI8Z\nDAUBOY0gCAAAAEBRIQgCAADwGMsEAbmNIAgAAABAUSEIAgAAAFBUCIIAAAA89uBLX2a7CQBiIAgC\nAADwUHNLQJu31WW7GQBiIAgCAADw0HtfrMp2EwDEQRAEAADgoS3bGQUCch1BEAAAAICiQhAEAAAA\noKgQBAEAAHjIl+0GAIiLIAgAACAD5i6uynYTALQiCAIAAMiAPz8zPdtNANCKIAgAAABAUSEIAgAA\nAFBUCIIAAAC8RGUEIOcRBAEAAHjIRxQE5DyCIAAAAABFhSAIAAAAQFEhCAIAAABQVAiCAAAAABQV\ngiAAAAAP+aiLAOQ8giAAAAAARYUgCAAAAEBRIQgCAAAAUFQIggAAAAAUFYIgAAAAAEWFIAgAAABA\nUSEIAgAAAFBUCIIAAAAAFBWCIAAAAABFhSAIAAAAQFEhCAIAAPCQz+fLdhMAxEEQBAAAAKCoEAQB\nAAAAKCoEQQAAAACKCkEQAAAAgKJCEAQAAOAhyiIAuY8gCAAAwEMUhwNyH0EQAAAAgKJCEAQAAACg\nqJRl400nTJig5557TqWlpfrd736nQw89VNdff70CgYB69uypBx54QBUVFdloGgAAAIACl/GRoB07\nduiJJ57QK6+8ojFjxmjKlCl67LHHdMkll2js2LHq16+fxo8fn+lmAQAAACgSGQ+Cpk+frqFDh6pD\nhw7q2bOn7rzzTs2aNUvDhg2TJJ122mmaPn16ppsFAAAAoEhkPB1uw4YNamho0P/93/+ppqZG11xz\njerr61VeXi5J6t69u6qqqjLdLAAAAABFIuNBkGEY2rlzp5544glt2LBBl156adT9AAAAhcgwDPmo\noQ1kXcaDoL333luDBg1SSUmJ9t9/f3Xs2FHl5eVqbGxUZWWltmzZol69esV9nTlz5mSgtdl/T2QG\n321h4nstXHy3halQvtfNW3Y53vflnDkqKbIgqFC+V0TLhe92XXVj6O9E2pPxIOj73/++brrpJl1x\nxRXauXOn6uvrddJJJ2nixIkaPny4Jk2apFNOOSXu6wwePDgDrW0zZ86cjL8nMoPvtjDxvRYuvtvC\nVEjf68JN30iLdtved9TRx6hdRVaK82ZFIX2vCJcr323HNdulSVslRccHsYKijO+FvXv31llnnaWf\n/exnkqRbb71VRx55pG644QaNGzdOffv21XnnnZfpZgEAAKRdY5O/qIIgIFdlZS+88MILdeGFF4Zt\ne/7557PRFAAAAE/FmvPT2OTPYEsAOMl4iWwAAIBi9fXK6mw3AYAIggAAADLm9SnLst0EACIIAgAA\nyJi+PTtluwkARBAEAACQMScN3DfbTQAggiAAAAAARYYgCAAAwEOx1kI1MtcMADEQBAEAAHjIiBHp\nGLHuBJAxBEEAAAAeihXoBAIZbAgARwRBAAAAGbJ1Z322mwBABEEAAAAZ8/LExTIMQ3c/P1NvTl2e\n7eYARStuELR+/Xr99re/1aWXXipJeu2117R69ep0twsAACAvxZv209wS0MxvNuu5Cd9kpkEAosQN\ngm699VYNHz5cgdYk1oMOOki33npr2hsGAACQj+KVPqA0ApB9cYOglpYWnX766SopCT70+OOPT3uj\nAAAA8lW8CnBUiAOyz9WcoJqamtDfy5YtU2NjY9oaBAAAUMiIgYDsK4v3gKuvvlo//elPVV1drXPP\nPVc7duzQgw8+mIm2AQAA5J14QQ4jQUD2xQ2Cvve97+mtt97S0qVLVVFRoYMOOkiVlZWZaBsAAEDe\nMeLM+iEGArIvbjrc7Nmzddttt+noo49W//79deWVV2rWrFmZaBsAAEDe8ckX835iICD74gZBDz/8\nsK6++urQ7bvuukt//etf09ooAACAfFVWGicIYigIyDpXhRH69esX+nv//fdXaWlp2hoEAACQzwIR\nMU77yjJdf+lxbfdHPgBAxsWdE7TPPvvowQcf1AknnKBAIKBPP/1Uffr0yUTbAAAA8k70SI+hnt3a\nW+7PbHsARIs7EnTvvfeqQ4cOeuWVVzRu3Dj16dNHd999dybaBgAAkHcCEVFOwJD69+suSSorLSEd\nDsgBjiNBhmHI5/OpoqJCV111Vdh9Pl/sXFcAAIBiFRnjmOlv++7dUQ1NLVFBEoDMcwyCRo4cqX/9\n618aMGBA1H0+n0/ffvttWhsGAACQjwyHOT8+n08Bg3Q4IBc4BkH/+te/JEmLFi1SSYmr+gkAAABF\nz2mkp6QkmGnDSBCQfTGjG8MwNHLkyEy1BQAAIO85xzg+BQKMBAG5IGZ1OJ/PpwEDBujRRx/VoEGD\nVF5eHrrvxBNPTHvjAAAA8k3kSI95s8QnSUZYYYSmZr9++/DH6t2jo27/5feYdw1kSNwS2ebcny+/\n/DJsO0EQAABANDPGGXr0PvpiwabQdnNOkDVIeuezVdqwdY82bN2jbbsatPde7SNfDkAaxA2CzLlB\nAAAAiM8c6Ykc1Snx+WQYRlg63K7axtDfzBUCMsdxTtDmzZv129/+Vueee67uuOMO7dmzJ5PtAgAA\nyEtmMFMSCoJagxtfa2EES/U4Ah8gOxyDoNtvv11DhgzRQw89pL322kujR4/OZLsAAADykhnklESN\nBAVT5axzgqwBkYiHgIxxTIerra3ViBEjJEmHHXaYLrnkkow1CgAAIF+ZMY4voqvZbp0gv8OaQgDS\ny3EkKDKPlWolAAAA8UWnwyl0O3KdIOtIEOEQkDkxCyMEAgFJbcO25m1JLKAKAABgo60kdkQHcuuc\noMmz1oY2WQMig/lBQMY4BkGzZ8/WgAEDwraZt30+X6h0NgAAANoEQtXhwrcHR4Kktz9dGdrm9zvM\nDwKQVo5B0OLFizPZDgAAgIJgjuiUBFdHbZsj5Ise7QkbCcpM8wAoxpwgAAAAJM4pHc4sjGBlHf3Z\nubtRADKDIAgAAMBDZmATNSXIpsaUNQh6eSJZOECmEAQBAAB4KHIkyAxzogolSPJb0uEWLK9Od9MA\ntIobBDU2Nuqll17SQw89JEmaP3++GhsZrgUAALATKoxQEpkOZ/NYiiEAWRE3CLr99tu1du1azZgx\nQ5L0zTff6MYbb0x7wwAAAPKREVEdzox9fIqOggiCgOyIGwStWrVKN998s9q3by9JGjFihLZs2ZL2\nhgEAAOQjp3Q4u5EglgYCsiNuEFRaWhp2u66ujnQ4AAAAB+boTlR1uJLoKGje0qqMtAlAOMd1gkw/\n+tGPdNlll2n9+vW66667NG3aNI0YMSITbQMAAMg7gYh1gkx2hRGaWwIZaROAcHGDoEsvvVQDBw7U\nzJkzVVlZqdGjR+vII4/MRNsAAADyjnVx1LANSJphGPLZ5RMCSYqbDrdz505VVlbqiiuu0IEHHqhP\nPvlEW7duzUTbAAAA8k5oJMgXfyQI8b343iIN/8ME1TU0Z7spKCBxg6A//vGPqqqq0urVq3X//fer\nW7du+tOf/pSJtgEAAOQdwzBU4pNKW9PhykqDl1vEQMl5fcoySdLqTTVZbgkKSdwgqKGhQSeffLI+\n+OADXXLJJRoxYoSam4nEAQAA7BiG5PP5dO7JB+vYw3rpL7/+vqToOUJIjF2JcSBZcYOg+vp6bd++\nXRMnTtSpp54qwzC0a9euTLQNAAAg7wRa56906lChO351og7r193V804Y0CfNLctvjKTBS3GDoHPP\nPVdnnnmmhgwZon322UePP/64hgwZkom2AQAA5B0zHS4Sc4KA3BG3Otxll12myy67LOx2ly5d0too\nAACAfNTY7NfStTtt74sXAwWoIgdkTNyRoBUrVmjkyJEaNGiQjj32WF133XVas2ZNJtoGAACQV2Z+\nvcnxPkaCgNwRdyTozjvv1P/+7//q+OOPl2EYmj59um6//Xb94x//yET7AAAA8kYg1mAOI0GpIYaE\nh+KOBBmGoVNPPVUdO3ZUp06ddMYZZ6ilpSUTbQMAACgY8UaC5i6u0o6ahgy1xplhGGpu8We7GVGI\ngeCluEFQS0uLvv7669DtBQsWKBAIpLVRABDP7EWb9buHP9HuuqZsNwUA2sQYzXGTDXfzU5972Jjk\n3P7MDJ1/wzs5GQgBXombDnfDDTdo1KhR2r59uySpZ8+euv/++9PeMACwEwgYMgxDdz43U5L08Zfr\nNPyU72S5VQAQFDMbzkUUtL6qVvOWVGnQYb28a1SC5i6pkiTV1jWrW5fSrLUjkvn5GYahv7+5UMcP\n6KNjs/g5Ib/FDYIGDhyoiRMnavfu3cGa9506ZaJdAGDrutFTtXqTZa0y8iPylmEY2rytTr27d2AR\nSRQFt3URPpy1NqtBUK5bvalG73y2Su98tkpvP/zjbDcHecoxCPrjH//o+CSfz6cHHnggLQ0CgFhW\nbgxfrJkVxPNTbX2zbnriM63eVKOf/vAQjTxnQLabBHgiVm2DDVW1mWtIAWtqJk0PqXMMgk488UT5\nfD4ZNnuzm+FcAMgEDkf56YV3vtHqTTWSgimNBEEoHM5R0OI1O1J8heJmHu9b/HxCSJ1jEHT++edr\n3bp12n///UPb6uvrtXnzZh100EEZaRwAxEMMlJ+27qxvu0EkiyLRq1t7Ve2oj//AHJGroUYgZh1y\nwB3H6nDTp0/XRRddpN27d4e2rV27Vr/85S+1cOHCjDQOAKxenrg4201AGjAdCMXi9xcPznYTEmKX\nDZRNZvpzi58qxUidYxD0t7/9Tc8//7w6d+4c2nbYYYfp6aef1iOPPJKRxgGA1SuTlkRt83EFnfdI\nsUYhiRU3dO1UkbmGFDA/I0HwQMx1gg499NCobYcccoiamliXA0Bu4PLZe80tft3x7AzNXrQ5I+8X\nbwFJIJ/ECoIqynOn3HReaj1U+BkJggccg6A9e/Y4Pmnnzp1paQwAIPvmLq7Sl99uCa3FlG7EQCgW\nlQRBKTEPFYwEwQuOQdAhhxyil19+OWr73//+dw0cODCtjQIA17iCznukw6GwOF+gt6+MuzxjTsmx\nKUGh9vipDgcPOO6N119/va6++mq99dZbOuqoo+T3+zVv3jx17NhRY8aMyWQbAcARl8/ey/TCpSUx\nE7OB/OJFOlyuFSTIFdc9MlVvPThc/gDpcEidYxDUq1cvvfbaa5o+fbqWLVumsrIynXPOOTr++OMz\n2T4AiIlBBO9lOgiKHAn68tstOqxfN3XuwCRyFJ599+6ojdXOUw5ySS7GYrvrmhTIxYYh78Qcl/X5\nfBo6dKiGDh2aqfYAQIKIgryW6fQ0a2GEBcu36o5nZ+i7+++l0df+IKPtADKhrIyhz1Rsr2nIdhNQ\nINgTAeQ1RoK8l+mq49bvcMPWYA/58nUU4EF+ijdGkU/VEI0cXC51dx0ViuENgiAAeY2Vw73ny/Do\nmnXkqbGpJaPvDXgtXqZWHsVAOckISGQAwAsEQQDyWlOzP9tNKDjrqnZn9P2sI0/1jXyfKGyZ7mQo\nNLk4OoX8RBAEIK81tVAlyGtj3liY9vcwLCN41pEgFkFE/os3FJSZVhSqgCHVNzRnuxkoAARBAPIa\nI0H5yVrdyZoe1EIQhDwXLx0u03PuUpKLgy6G9HQGOmpQ+LISBDU0NOj000/XG2+8oU2bNunSSy/V\niBEjdO2116qpiQlvANxzu+4Gcov1QtGaHsRK8Ch4NpOCfv3/jg67/dWyrZlqTZSvV1Rn7b3doDw2\nvJKVIOipp55St27dJEmPPfaYLrnkEo0dO1b9+vXT+PHjs9EkAHkqr3pVEWINdswc/527GxnZQ8GL\nPGb179dNZw89SL26dwht212XvXSvm578PPQ34QYyYfxHy/T+9NUZf9+MB0ErVqzQypUr9YMfBNd/\nmDVrloYNGyZJOu200zR9+vRMNwlAHmNOUH4yLL255p+X3v6B3vtidXYaBHgkXuDgtA5Xlw7l3jem\nAFERtPC88O4iPfnvrzL+vhkPgh588EHddNNNodv19fUqLw/u+N27d1dVVVWmmwQgjzFykJ8CYSNB\nQOEw4qRrRYZAoaAoB2tnx/u/ZAPpcPBKRoOgN998U8cdd5z23XdfSdE7Vy7ubAByWzMjQXkp7ELG\nMDRxxuqstQXwUvx1guyDnY7tytLQmsLDSBC8ktE9burUqVq3bp0mT56szZs3q6KiQh07dlRjY6Mq\nKyu1ZcsW9erVy9VrzZkzJ82tzY33RGbw3eavDRs3a86cRtv7+F5Tl67PsLZ2T9vfe+r0+OvRqRCx\n3pvvtjAVwve6dm1t6G+7/0993Z6w27W1tZozZ45OPbxMm7eWa8vOZsfnZtr8rxaqZ9fU0/S8/L98\nOntx2l4bifPy80/2tdZVt10DJPIaGQ2CRo8eHfr78ccfV9++fTVv3jxNnDhRw4cP16RJk3TKKae4\neq3Bgwenq5m25syZk/H3RGbw3eaRl9dHbdqrWw8NHjwoajvfawosn3O6PsP20z6Rtu+SJHVo30Ha\nsSvqMU7vzXdbmArle11Ts1zSTkn2v+F358/Q6qotodvfG9hPgwcPkCQNOb5JF9/6viRp0KBjVZKN\nyi+W/f/Qww7XwX27pvRynnyvljZ9tih8MedC+M3kK8/22dbvN9nX6rhmuzRpq+1rxAqKsrpOkM/n\n029+8xu9+eabGjFihGpqanTeeedls0kA8kxTM+lw+YiUFhSqsrLYgUv7imD/c+/uHXT3lUN18Vn9\nQ/d17lChA/fpIkn6cvEW2+dnEnMuUciyloB6zTXXhP5+/vnns9UMAHmuqYWTdD4K2JTIBgpBjy7t\nJUk/+cF3bO/v2rlSkrRle50GHtoz6v5unSu1epN013Mz9fq9/6V2FdmbK9RIEIQCltWRIABIFYUR\n8lMgvC4CUDDMoL6PZd0fq0P23yvm860pcH5/dncOjq8oZARBAIAwpx9/QNrfwzoSRMlbFBLDjBsc\nqsB1qIw9suNUPS4bGAlCISMIAuCJxma/Ppi+WnvqM7vSOaX1vVdWlv5Tg/V7y3ZvN+AlcyTIKZYZ\nfHhvfX/gvrrjihNt7y+1jARN+HSl5+1LBHOCUMgIggB4YtzkJXri31/pyfGZXfWZy2fv+f3pT4Gx\nxq4USUAhMX/bTuM5ZaUlunHk8Tq2v/2SINZ0uJcnLrZ9TKbQQYFCRhAEwBPrq4JrY0ybt0EfzlqT\nuTfmHO25TKSnWYsh+APMO0DhMH/Zyaa17dxtv+5ZNjDSjkJGEATAc8++9XXG3ouTtPf8GR6ZyfT7\nAelkHpOSndrz7ertHrYmNeyZKGQEQQA8l8kTJydp7wUynAJDEIRC0tYvkzsFDpKV651MvR0q8AFu\nEAQB8ETWTpa5fY7OS/4Mf5e5lP4DpC64/5TkfwykXO+fyPUgDbmNIAiA5zJ5XmKhTe9lolABgQ8K\nlTnFLYcqXSct14OM3G4dcl1RB0FTZq/Vui27s90MoODUN7ZkuwlIQSYqQjU0UXoXhSpUGiGrrfDC\nU+MXaM7iLdluhiMj14eqkNOKNgjasLVWj7w6T79+4CNXj29qCWj6wo3krgMOspYNxy7pOWt1uFzv\nCQZyzeQ7SJxgAAAgAElEQVRZayUlPxI0/JSDPWxN6u58dka2m+DIvCTbuLVWDXS+IUFFGQT5/QEt\nWZNY9ZWZS2r1lxdmZ71mP5APjh/QOy2v26l9eVpeF+Gs6wRlcw0fRhSRb5au3aFFq4LXF8mWyD7v\nB9/1skkpq6woy3YTHO2ua9KO3Q268r4punb01Gw3B0nIZkdbUQZBT7+xUKNfmZfQcxatq5ckrdyw\nKx1NAgpKl44VGXsvBiq8Zx0Jyubo9+Ovzc/aewPJqNnTFPo72ZGg0hyrqNCuojTbTXDU3BLQ9l0N\nkoIZPsg/2UywKsogaMrstQk/J7QCdG4dm4CclK7AxJB0QJ/OEduIgrxmDXzSMRLkNrCqbWj2/L2B\ndLJeI2zZXpfUa5RYgqDuXdql2qSUtavM3ZEgiY6wvMdIUGYl83mbzykhCgKyxjCMqF5SToDesxZG\nuOHxz/T5go0ev34g/oOU3VQ8IBnWFLjdllGhRJSWtl2a5cI+kOtXPf6Au+MJclM2f+FFGQQl85Gb\n6SElOTZMDRQTw5B8OX9Kzn/WdLiVG3fpvn/O9vT1WwiCUKCsRye3v/NI1o6eOubFxUUMlN+y2ZFZ\nlEFQSiNBBEFAFhlR3ZLfrNyWnabkiYXLq7V8/c6EnpPueUAtLktwx2rH0rU7VFuXXE87kC7WbJFk\nM0fKStue19TsV0NTdgOhQI4Pt1//+KfZbgJSQGGEPGB+R6WkwwG2MtFBYBjMy0vUzU99rusSrJoU\nSPM6QW57yJ3S5rbXtmjUo9OoBoWc47NeVSV5rCopCb80q0kyrc4rVdvr9PDYOareWZ/Vdrgx65vN\n2W4CEkQ6XIYl84GbPSHJlrwECp01CEpHz85NT36mhiY/+2AGpLvn1ykIilwfxWkkqGZPcKHVLdvr\n9Ni4xCp9AulkPT6VliR3iRXZn1TXkO2RIOmTuev19H8WZLUdbtz1/MxsNwEJYiQo0xw+8Gnz1jtW\ncwmE0uHS1Sggv1lHSdNxSPt6RTDtzS4EYkFPb6V7ovHC5dW22yPTh5ats0/js1YENBemBHKB9Rec\nbKnryI6eZOcWeY11u5AWzAnKLLvPe9XGXXrwpTn69f1T7J/DnCAgpnSO0FiDHLu3yZWLhELhT3M6\n3DNvLrTdXlri052/OjHu8yNjXoJg5ArrcdCrQyLBR2I4HuSXbM45K84gyObz3lXbKElqarG/mDJ3\nKkpkA/ZKLZN5ve7Zse6zdtXh6hv93r5hmmysrtVHX67LdjPisjspvfjeIs9ev6zM/tTz1rSVGnRY\nL9048viYz49s3bufr9JV901RHesKIcuslwjWUteJeuCakzXkiD6SpJuf/DzVZnkiX2ILqkrCraIM\ngpKxuz4YHDESBNizdhB4XV3M+mp2/RANedJTeuW9UzT6lblas6km202Jye77e33KMs9e3ynbzhzR\nK3cIkkyRF2Nj3lioDVtr9TWVApFl1uNgKlcLhx/UXYtWbU+9QR7Kl4Wpm8kMyCuUyM4jBEGAPeu+\n4Xl6muUouXjNjqi7J85cE7Vtd73f80U+vVKT46Wd050OFy9dpXf3DnGeb7+dkXpknc/h7yTsthwn\nmh2yVBAt3ccveMv6bWU6lZEgKEGUyAbsWYMgr0/YTofF4w7vLUl67cOlUfeN+WCL7vvnbC1Zk1u9\nqZIyNhH0iX9/ldTz0p2j3adH7CDngD6dY97vdKK0rq8CZEP4SJB3v8cduxtUtaNOTc3ZS/3Nao99\nAh8lc0TzjOWHlenfGEFQgnyMBAG2rLtGc4u3J2qnA+Oh++/l+Jza1hTW7TWNnrbFC5maCPrB9NVJ\nPS/dPaknH9M35v0+n0/f3X8vVZSX2t7v1DpG6pFt1n7SM4f08+x1R78yV5ffPbloFwZNpPAOQVB+\nsWZfZzrOJghKEOkWgL10jgQ5HRpr6/NzInyuVy8KpLlEtlOe0KVnHx76u2ZPk5qa/bbFDpw+PiZE\nwyszv96kjVtrE36edfSnZ7f2nrXHXCJgxfpdnr1mPknkmEk6XH4xwkaCSIfLCrefOzEQYC+dQVDk\nte0Lt52px0adqhUb4l8QmJUfc0mOx0BpH6lyOtH17dkp9HdV65ptYz9YbPN8+9f1uiAHitOO3Q26\n+x+zdOV99ktmxOJl8YALhh3i2Wvlu0R2bUaC8hfpcFnidoQn2cXPgEJnXR3d6yBoxfrwRTN7dG2v\ng/bt6upkl+y8mHTy6kDf2OzXJ3PXq6EpfnW8VRvd9yA79aR6NdLiFGTZLUa9dWe96+dvrt6TUrsA\nSdq5O/mOEy8v4oYdt793L+aBXB/BNhEE5ZfwnxUjQVlhzT0f9+ESx8eRcw7Ys54gvQ6C5iyust2e\nr+lPf35muv7x9jcpv87YDxbr4bFz9OJ730bdF3nBsmB5tavX9PsDjuuleTVC5PQydnn/e2xSHp2y\n9Z5+w34RViARdQ3Jl9z/eI5364Dt3zt2gZBMy2YMtPde7lMLGRHOL9ZzVaa/OoKgVtaT+0vvL9bm\nbfY9iswJAuxZT5Be98Q59UCeM/TAqMc98+ZCfbVsa9j2q+77UNU2IwrZ9J9Plqf8Gis3BEfIlq/b\nGXVfS8RoTucOFa5e05xnZVdpzauLC6eUIbtOpgXLq7V4dXiFv2yuMI7CV5/CumMLXXY2pOLp/ywI\npYsWjdZ9vszFArSUE88v1qP5hGkrMvreBEGtIk+qDKcCiUnnSNAnc9fbbj/9hH7q3KEiNAF51cYa\nTfh0pW55+ouwx23YukfvfLbS0zblAnPkxC5I9Cd5DDODoF7dostYJ/uakczmdu/SLmy7UyfTH/8W\nXhGLGAjJ2FXbqFuf/kJL14avNba9pkEfTF8dCvJTCYIy4d3PV+mhsXOy3YyMChjSPj066o0HzlWX\njrE7dCiMkF+s5y+7rIZ0IghqFZlW89wE+1QVeiABe4E0BkFbdziP4nRqXx7af4ut88IMGewOSy0R\nxzS3g9hm+tkJR/TRNT8dqHNPPjh0n1epCkbrC40acaxG/Kh/aHusdON3PlsZmhvGURhONm6t1T3/\nmGk78vufj5dr/rKtuv2ZGWHb//z36Xri31/p0/kbJOVWOtXAQ/a23b69piHm87bXNHi+VEF2GaED\n3uD+vSRJ+/XqZPvIYjsPIHkEQZJuefpz3fOPWWHbvvx2S5ZaA+Qn80K8rNSnFn/mTr4+X1tPUqyJ\nu+M/Tj39LJvmLq6KSnsz1y2zSy9LdtTGDCjLSkt01vcO1N5d23Lx6zwqSW5eY/p8vrDgLNZi1GPe\nWKhrR08N3mh9/g+Pz62J48i+R16dpxlfb9azE76Ous9caDTyOLF6U40kafuu1sAphc7ORNazSdfr\n1TU067I7Jur3j0zztC3ZZLTFQLr6p8fo7quG6rTB9vv/o+PmZa5hSFnaV2SIgSBI0lfLql0Pf+fr\nRGwg3cyRoIry0tBI0PylVZq/1L6ogVd8Pl/oorqQB2r//Mx0XffI1LBtsUaCPl+wMey228/G/B7b\nrr3anrgygQpzsZgXoT6Fp8C5KTzT4g+EWtSlY2XU/blYEh2Z09ga6JgBj1WLJcC343UA44Vk5iGb\nhR3M4M4r2awOZ6jt+6ksL9XAQ3o6Hi+2bK/zLHUX6edlWflEEQQB8IR5fqwoL1WL31AgYOjWMdN1\n65jpnr7PYf26hd0uKfGFOifinaNzKc3FC+ZFwbJ1O6PKZD81fkHYbbcXMObDSkLzjdru8yrNxHxJ\nn8+XcBD09zcWhtrUrXN0ELRwRfonpiN3mT8hu5+7eWFsV/RDavv9pXKUMFO1vFooNZm4zE3xgGRk\n8+hpGEbUZ0Gx3gKRxR8WQVCCCrmnGUiFeZFtTkrdkqbqRT8/47Cw2yXWdLg4R9NANsfdbaQyahEZ\n1Pz0pncTerwTM6AMFV2wuS9VZltKfL6w3vf2lWVxnztt3vpQq/ayCYJYy63IxSgW0twaBJU6jgSp\n9bnJv705T+XiM/vHeaQ7uTQ6FW8eUjoZhl1A6PzZcKmWP7L5XREEJYjCCIA98wJ5d12TJOm+F2en\n5X0i00N8PvcjQZFlo7Pt4zn2Ve/cuPjW9xOau+h2ECcQClBs7vMoCGpqDjbGVxJ+YdOja1u1uN9d\neIztc/c0tGjrruCol8/nU2VFadj9pXYrrqJohFJEbe5raYkzEuRBwGHuIl6tKejUplh7YrrSi2IV\nqElGIul1wYeGfxaxdnUu1fJHNtMsOVsA8ETkcWzD1trQ317OpYtKiSjxaU9Di6tFCnNtbY1Urtdr\nEyxS4LYDJzRKUxLdo/6vDxYn9J5O3mpdC8Kn8N+JdS2j9u3KHZ+/ZEN96Pl3/WqoThjQJ3QfC1oX\nN1+MKMgfZ06Q+dt574tVSb+/eazz6mfoJi4zDCP8QjIPAoC5S6o0/A8TtGD51vgPliRFp8PFGgnK\niw8BkrIbsBIEJYiRIMBe5L7R2NQ2MbnJw1KtkRe55s2/vjw3brrGNQ99bNvrlK2eqFjV0JzUNTTr\nhXfsS/jH4jodzlK5LZLXQWTke1i/20P238vxebvq2n5Phx/UXbdePiR0+45nZzApuoiZvym7c7VZ\nsMVptPDT+Rvk9we0ZM0O2/vdiOxESJWbQ8Ttz8zQqEfbKsF5dTTr1N65IyJVL08Mdqj8e8oyV483\njOhRsVgfMZdq+YPCCDku33pYgGyI1UGwq7bJs/eJvLiwXkjPWRw/PcyuEuSv7v1QD770pav39/sD\nmrN4iyejW24vlKzHoMfGzU+q3Lfb9oYqt3kwPyJeO0oiCiNY9erWQU/88TSH1wj+O+ubzbb3r7eM\nLqG42BQ1DDGD45Ubd+mf7y6Kuv/rFdv0fBIdDFaRc+pS5TSN0frqc5dUaVlr+fzGZr9nnTrdu7ZL\nayAkub+ksv0/xfiI6bDOI4wE5Z6Olh3fWhGJHQuwZ8TofP/lPZO1sdqbC9Oo3kBLIDFldltKXEWZ\nQy69zS68eVudps3bELW9uSWg2rrwAO7fHy/T7c/M0NiJqaeGlbjMh7PGL5Glr91auKJaDS6WAmhL\n53FegygVfstVnc8ndY6x+nuHGClxkrTVZkFMSaqt82Y9I+QfX4zfrbU65L8/sh+B+Gx+9HHASUNj\ni/7z8XLV7Gk7Rvg9Hgk67bj9bLfbFRGZtWizLrjxnbDjYKoBUYd2be/jZaZprGDVTrBEdvi2mHO4\nuFTLGxRGyEWWA0djs+Xqjh0LsBXvZDt/qdvc79isJ2XJ+UTYey/7C+jIdsYaIbn6wY900a3vh108\nrdwQXCtn+sLEghG73He3lWwTrez22VfRF3JfLNikv74y18V7Bf81LyY7xglEEvXKpCWhv0tKfDrv\n1O86PjZeZ7p1bkf3Lm2V4vZ4tKgr8s+3q7dLsu/s8KrEu+mlDxbrH+98o7+/sTC0LbLEfKpOGthX\nr959TtT2jjYjNJNnrpEkvTm1baQ41WUBDtq3q+U9nTssEpXoSFlwsdSILIBYj0+iTciObK6/SRDk\nwPqVWBddY8cC7MUbJfUqJe7AfbqE3XY6lzqVSo483sa6SNhUvSf4HMvoRbfOwQpm22sSK29tl/vu\nPh3O3XuY/5f7X7RP7Zv59aa4rxGI6Mk+c0g/HX5gd3cNcOF1y+fg8/liptvE+3xKLVW+Tjxq39Df\nzcwJgg03+1Eix6kVG4IpaNW72kYkvS6MINkHPHYjQeb+Yq2CmUrgZxjhHQ3ZzYQxoqKefXt2cn40\nWTsFzx8w9LuHP9FrHy5N+jUIghxY9x9rGVrS4QB78XaN2vrUg6D/+a8BUT2ITr1ITmlckSdHv4u1\ngwJG8ID71PivQiNBXvQqu1kXR3J/Qo/3fykrK415v/W9zIu4ivJS/eq8o1y9f6LaVcRuT7zedOsF\nWnlZ298URoDdLmM3HzBSIiMnZtqlNZD3ujCC6abLjg+7XV5WIr8/oOtGfxLaZh4brf9Pf0rLAoRX\nZEtHj73bdNtgYYTwbccc2lMjzznc8zYhs5INWLftqtfKjbv0r/e/Tfq9CYIkHdCnc9Q265cSVi6T\nGAiwFbeDwIN9x26Rw8UOlZycmhPZzvoGd/NkVqzfqfe+WB0z3SZd3Ha+xLtIcXNdZlcdLl3pCvHm\n/MRLmbEGPtbRKq/TnpB/7PYZr38XexqCQZB1pMbvcWEE09Cj99Xwkw8O3W7xB7Rle52Wr98V2mb3\njqn+n60dEdbPdE99sxqa4h8743F7HA3YTAry+Xw64Yg+to+nvzp/RH5Vf35muj6ctSbmcybNXBNa\naiEVeRsE7ahp0Ir1Oz15rSt+fGTUNuuXYi6wJjESBDiJ15vjxZ7jtMih7fs5vOHcxVWq2hEs9fzy\nxMUaecdE28ft3N2W7mYYRvS+n+CxwO6iyMUgVEJvFS9YcXNhFjkSJAVHg7wQeUFmjoQ9NupUjbnx\nh1GPj9ebPrh/r9DfQ4/eV6cff0Dr+3CcLnbrtuzWHx6bpnVbdoe2eZ0iVdc698w6TzEyndRLB/dt\nm5/j9xuu9ufI41Zzi1/jJi9xtfCpYTh3hvz8lvf005veddNsbxiGbZDnuJgs12r5I+Krmru4So+O\nmx/zKX97bb4mTFuZ8lvnbRA08o6Junb01LD5Osk64uC9o7ZZ9592LlNWgGKWiXOO3UiQE6f2PPLq\nPF1+92RJ4ZP0I31uKS4QCBiuJjpv3FqrVRt3xX2c9XXdcJ8OZ4RVqorkaiTI7Mm2PLifzWh5Mqwd\nSlLbSM5B+3a1ze+P114z6DEdc2hPSaTDQarZ06Qla3bouQlfh7Z5Xu699QWt6w6Z75HMGmDxWAOr\nFn8gaj6kfUdL+H/6/emr9dIHi3XnczPivp9hSD7LIdcuVXD6wvjzDL1gVx1OEduevH5Y2ONRmDZ6\nuARC3gZBplSHevfv3UnlZSV68c9n6YXbztRjo07VQft2CbvoGHbc/qG/s1nFAshlmRglPSiiKIIk\n/f7iY20fm2pp53LL6EfAcPf/u/K+Kfrtw5+4fg/XaW4JFEYwR7lsueo5Dv5rDfp8Pp++u1/XuHN4\n4r926qNnppISX1RQbM4RYiQIpkxP7G/rRPD+tUsjgiA3/53I0Wazk2T1phpX72ndA+2uf2a4KLZi\n+7oJxoh21eGk8OPU/r0768Sj9gk9Hvkh0a/qyvumePbeeR8EpRqTNLSuat+tSzv16NpeB+3bVR3a\nlau5JWBJC/G+RwcoNHGnBKVwVurSupZMf5sqZWUOo0PJtOfTeRvacvot2wMBI2qCsRfnWNcXZW5H\ngvzRI1a/u3BQ6G83I0Fti6WGP3j1pprQ8TJZ1ouoffbumNJrVZRFf+9mtTg3xS5QHKxFApzWj0o2\n3bOtnHzbtkAarxusI0F+v02Kro3Ix5Rbjpebt+2J+/zId/CqIzi0npPrlzMcRoK8SYf7atlW/eKu\nSa4+E3grm6mLeR8EpZr2sHfX9lHbzJNrc2vqxo6wuQEpvR1QsMyT7Z9/+T3PX7uyolS9ukXvq5Lz\nATTevnr93z6N2vbAS1/q9SnBcptdLIt4GoaR0Mnf9rE252q3r+l+JCj6eNg3LM0suTlBUtvoipsK\nW87ta/uPuJnfFWvkqdym0h0jQYi0YHl16O9ap/WjYhwsEl1nJ5CmwghSeGDVEghEZcLYvWPkMcZa\nTOSKv3wY8/18vuhFsHfXNenzr5JbsDkVAcP+M41OCQz+m+i12kNj56h6Z31YCX8UvvwPglLslbjq\n/KOjtpm9Qk1mEFTTELqPwghAkGEYWrO5JrQPGq3/Djxkb/Xv183mCc6vNW3eer1vqcIYCIQHHYZT\nQricA4RNO2IvmOlUVe7rFdVR2wKGERVgxDoUPPPmQj034Wut2rgr5rxFtykp8XrKThnUN9jOgBF1\nYdRiaXeJiyO+uTh0ecRIS8/WINTu/zNp5hp99OXauK8dCAuC4jfG5/PpiIN72N4X2T6pLV2IOUFI\nRKy9a72lsIKb55m/cad1ylJRGjES1Bg5MmvX0RJx7HCz35lKSnxRacVX3TdF9704u+0tk/xvms9L\ndTQ8csStorVzpHpn/MIPVt27mOu/NcR5JLyWzcvqvA+CUp0T1LVT9ArIoSCo9WTvRRlIoNBMm7dB\n1zz4sZ7+zwJJ1tQQn9pVRBcTiXWce/ClOXpy/ILQ7asf/EiX3zPZ8mT7ykDBu2IfQW8YeZx6dG0X\n8zFWZrnbessFRiBg1+Hi/L7vfL5Kb05dod8+/ImufvCj1teIfvybU1do8ZrtcdsU70LBLDXtDxih\nEWyTdcX3XbVNcUefauuCcwY6dQg/Ng44MBiMXPLnD3TuqLe0aNW20H1/e22+Rr8yL87/Qnrh3UWh\nvxMpciEFizP06t4hdLuiPPr55gUei6UiEbF2rxsejx4xlqSFy6tDQYh1hMIuRc4r1nS41ZtqNOrR\naWH3282ZiTUSFPf9fD59vWJb2DbH0bQEJZou6NgPFrFtzuLguo43P/VZQq9vrvW0x6P/H/JD3gdB\nqean2u2I5sm1LQiyXAwxEgRICuZQS9IH01dLats3fD6f2lVGpyol0jO6vqo2rCevocnvmBplF3BZ\nnTSwr677uX3xBDuVrZ0g1rSv4EhQxJwgl4eCzduChQrqGuxPrms2Ofc0u32v0AhIwIiqwNYpYrX5\nzxfETmXZ3TpvonOH8OdFXjw9ZQla3froy3Vtr5dgENSlY6XuvnJo6HZUL7gsc4JIh0MCYnWk7HFY\nR+yf77UF9Nbnm9cN6SiRHW9dranz1kdti7xGSqTzoaTEF9WpEsku8HIjNBLkukKmQ4phxNPN41d9\nY2LzF5n6nT3MCUpBqulwdgcqczjVPJhZL4Yi82OBYhU5gmEex0p8bfuQVbIXBYGAodr6Zsdg54Qj\n+uikgfvGfI2Bh/bU2UMPdPV+ZrnbBut+bxiqqXUuPe3G0rX265pZ5x45iXeSMIOgmj2NcUdB1ldF\nlxet2dOkXbXBuY9vfLJcktQ5YiQoMghym8rnJJEeaZM1kLbO1TS1zQniQF2sEr2Y/ee7i2JeRzgV\n8KhrCO8kMb3zeTCtt9RN7mmC7DJX4omXDhfr/370d/fWacftl/B7umF2QLsJgmKlt0Y+O5FRfysz\nwKKjO5xhGFq4vDqtx9RsfuJ5HwSl+sXY9Sy0pcMFX9t6MdTsT31dIqAQrNsSfjFtHQkqtZn0nmy1\npP+0XpQvWWs/h6e0xKf/+e8j4r6O2/c3H1a9q20kKhAw9Oi48HSvRA7cO1LMM49X7Mz8bG5/Zoaa\nW2Ifo+wCqhG3va9L/vxB2LbOHWMHQan69QUDXT0uNNFZhu3vysq8wEu1cwz5aeHy6oTnF/z7I+eJ\n8F07VTgW8DDTRiX7C/l0zAnq3b1jwvthvHS4WAHGyHMOT1t1XHMdMjdBh5lG+83KbXEeKf3mZ8dI\nkk4Y0Md1Wxav2a75S4OZDSwwFG7ukird/NTneuilOel7E+YEJS/ldDi7kaDWdLjGZr/mL63S4jU7\nZHZsf7EgMwuDAblsx+7oi3rDMEIVxewm3yZ7LrUuWurEzWu7OYFKbccE62rUqfYOzltaFXb7lz8+\nMqHXjrfm0drNwVGZ5pZA3PSVZevsR6QiRabeVKa4RlCkvjaLo8YTr3fdDJIYCSpOD7z0paev55PP\nsQNid5wgKB3pcOVlJfrP/ecm9Jy6xpawBZQjgzrbtvukww/srvKy0rhV7pI9rpvBlZtUqC9ipPBG\nPr/nXsECLrMWbXbdlj8+1jbvi5GgcEtaCwjFS6NORapr+qUi74Ogdz5bFf9BMdgdp8yRoOYWv24d\nM711KwmjgBQ8+Y+8fWLUdmvOtpsLgBZ/QDc9+Zkmz1wT83Fulnxxk5dulwZmx67n86YnPo9+YMTJ\nctk6+5EqSaraEV6p6IeWBZjNNLRY4s1xsea/xwuCvvx2S9z3k6J7srt0rAy73bYoYeZOYK5HgpgT\nVJQSqXzWs1t720qQVsFDgf1v6eC+bQVHMj3yeOgBe7l+7M1Pfq4Rt73v2Ea77YbajuHpWnMrlA7n\n4qOLPH7GUpbiiDVHjnArN+zKdhPSKu+DoEkz16R0ErZNh2vdiZosFxPlZdbqL+wmKF4X3/q+7faA\nYbQFQTb7VeTJbvXGGn29Ypsee21+aFvkvhUIuFsQ0E36fcDlybykxBeVIrLTJlCJ/P/EOlGP/WBx\n2O32lW3zm9wUGGi0KUt96dmHh/7+0YkHhl63KU4QFMusb4K9p3ZrMkXORzB7XFdtbJsbdNOTiVVk\ncsMMcA0jushDJDNwYySoOLlZe8q0dUe9bnrSpnOjVWVFcBTE6SL95GP6hv7eUdMYdexK52+wh836\nhvFs3BrsBIo8nNoGQZZNdgVIrJId8Uq0MIITc8TavG5LtlCDafm6nVzjWcz8xv2IWrLcfNyBgKEH\nX/pSn86zzwxJdr5+3gdBUlv1JdN9L87W+Bh5vn16tJVZtduBS0O9iW2fqvXYykJ8QDRrOpzdeai5\nxR92crHrYQwY4SdFfyDg6oTkZmHCWOdaa6pXSYnPNuiw8/lXGzXuwyX6xZ0T1T5OlTrTOUMPTLg8\ntN3aPNYS0b/47wGSpMMP6h53TpAkbdnedsy0VuG76/mZkuwDusi5BBurgyurX/fI1NC2yHK6gYCh\nT+dt0O66Jk+WGvD5fDryO8FS3TdednzU/WbxDJY1KD6GYURdC6TitsuHBBcLjTj+GIahv7+5UHMX\nt6W4zlq0WeM+XBr2uP16dfasLZHqIyrWfWe/rg6PbGMGM9FBUOT6Z+bcztb3ap0T7TTK1qtbB9vt\n8ZjXXqkGHF06Vuih356sZ285Q1J4B1OyZrscLUfmbN62R9PmbXBMeU12Ee+CCILe/qwtd7+x2a/P\nv9oYth5FpL06taV12HVilLVu/MsLbQuCdelQqqO+s7ckehkzzTAMjXljQagkM3JTwGib7GoXkrzz\n2Sq9OrntQsFuYCYQCF+UtMXvbiTIGgOZ6ayRfnb6oY7Pf/A3J4e9ltsgaOGKar30/mJV72rQJ3PX\nxa7fAl0AACAASURBVH+C2kZtTMcP6B33OXa9sdbPr7L14r+lJRBWInvEj/pLki45u3/Yc7dZij78\n4q5Jcd9fkvbpEV4l6+sV1Vq+fmfMntxp84Mnrfv+OVuTZ7YtpvrMzae7ek/JWnAjePsPIwbrgu93\n19DWdDyrju2Dn0NdPUFQJhmGoU/mrAv7XWVaQ4wRi2QutH0+n3w+nzZvq9N8y5y+9VW1evvTlZq3\nNPx89PanK8PS67wuJGJ1wQ8PCf198/+coJFnD4j7HHM/ipx/Ebn/htY5aj2Km0sGHHFwd9vXfffz\nVXrk1bmOSwA4aVssNaGn2TqsX3d16xysCrdX50rHc4BbK9YXdgpYrnGzf8YbcSzuIOjTlaHAxFqx\nxc47n60MWyneLm2nxKbHo31lSegE+9yEr2OuAg9vLV+/U+98tkq3PP1FtptS1JpbAloXa/V0y0iQ\n08jMyxPb0sLsKi0GjPDFPlv8gYTnBHVoZ98TOOKs/nr17nN07GG9wrafccIBYbcNo60yZDzW3tGP\n50Sv0RFpv16ddOA+XSRJ1/58kCRp9qL4vY52QZn1xFFa4lOJL/h5mZ/fHb86UT8/4zBJ0oWnH6Zf\n/eQo23a71bt7eI9vQ5Nf142eGvU4ayU88/fy9YpqjbV893162JcdtmOe3Mwe3h5d2+vIfh1sf2Pl\nZaUqLyvRngQvyJCahSuq9fDLc/WHiMU7MynWJZLbGOjuq9rWoSrx+ULHs7a5wQorMmDV2OzXhq17\n3L1RiqxpoScetY/KbRYOjnT7M8H/Q9RIUERmi3nL3L0uPedwnTmkn353of1aa9trGjRl9jpd+Kf3\nwrYvXbtDm7c5fx6JlMhO1EGtx9hEA7MQ0uFi8vsDev+LVdpps0xBMtx82vHOWcn+jgoiCJLaJm85\nHaBMY95YGHbb7kRaZpci5/OFvoSJM9borWkrkm0qEuT2ghTp9circ/XrBz4K22bmYRuGoUCgbU6Q\n0wWJ9UBm13P70ey1YemmLf6AZyNBJSU+dWxfru5dwteRmDxrbdgq6EbAcN3JkWhv7/eO3Cf0Gf3w\n+APiPLqNGQQNPCQ4Gn3Zfw2w/Vyqd9aHgqCKiLade/LBob+TGc2udJnuZw1AzFGpstKSpDP1zdQf\nt2kuHduVJ3/xg6Rs2xUMfKt3pVYKPhWxjhOG3PU2DzykZ9htu7TQv702L2qbFBytzdRcko4Rc+PM\n+XmxmIuIRl5xRn1uESOv3Tq3029+dox6dmuv7x3ZVnbarmferFIpSaMenaYr/vKhY3sSqQ73/aNj\nrwMXyVzeIDIwc2tbiksaFLpJs9bqyfELdM8/ZmbsPeNdB7QkWcAjr4OgXpaeSbO3cE99ckOyVnb5\n+s1+I+yizZpTj/SiZGVumGYzIXHAwcH5GS3+QFh1OHNyfucO5aE5HFJ4D2ajzYreT45fEDYXz+83\nXF3Qhp2Q4/xePpy9Nuz2wX27asCB3fXd1rz6qfPWu06Hi7XGiJ3IwMQcFYo3h8VMhzv5mP309sM/\n1gXDDgltsx7DqnbUh46FdgHasNaqdH6/oXNHvaVfxbhIieQ24LN+/OaJqbS0RO0dRujiMb+LyJLd\nTtpVlsZMjUJhitUTbBiGtiZQYUyK/r2brx9rtCdTVeIig6A+PTqqb093o6uR6XCRbTZv2hUYaGfp\niLA7HmxPIHgoSWCdoL1bg7zv7u+uKl6q67JFzrlCuKrW69/l690ttxCXi90m3s8k2YqgeR0EWS+W\nGpv8+mrpVr33xWrXz3/m5tPtR4JsKszsqG0JKy07ccYafbWUOSqZQKWW3GWOoJx/wzvyB4xQ7545\nTL73Xu1148i2CezWEsdOF/4Pv9y2KFuLP6BdtbFHd6XwkSdrdbQXbjsz7nPPP/W7Ki0t0e8vHiwp\n2GM6Y2F61gOL/CWv3hTsOR3zn4XRD7YwR6YqLWkvkWliZa2LmZnrl5SXRY+I7bN38ELJrPizKUa6\nip07rjgxocebJ6ay0pKkT1I3jDxOh+y/l35+hvOcLqvystKkRo+Z65m8XDhExwpANm/bo8vvmZzQ\n60UtKtoa0A+zlLePlEh1ulR0aN3nD963rSDC7S73zciPKaoSppniZPNfsY7G2qUnVZYH73dXzMa+\nPabmFn9U267+f+4WWLZ2ZO+OM0XCTjrWeCokXq+fa/5cYhX4iJfulmwHRJ4HQW3/6Xv/OVu3jPlC\nn86Pv7CiySkv3W4kqGvH6AuKW8YwRyUT0pEzDG8styy86fcHQiWKzbVvunVuF7bejPVvp9GWr5a1\nTS52e2CzdmZYfy9uSsmavarWE98XC9OzMNxuh3TdyNGpSOZnZU31M4MgsyKa2RP8RWsAZ9dTa37+\nyabzHtu/l+66MvbFVuScLil4IZLseiMDDuqhv177A9dlgSvKS+JWyHt9ylLd+MRnod/K1h31Ou/6\nt/XCO98k1UZk/xgd67r7y2+rnO9sNWrE4LDbketkmb/rnjbl402dO1Q43uel0tISvXr3OXr42lNC\n2/r06KgXbjtT1/z0GMfnbdtVH/VBRa4rdsMTwYVDIys9SlL/ft1Cf9sFfGYn14ezYh/PpLZjtlPA\ndP4N74QCV3O0yG1wYn1UotlBUS8AR151fpijk/36dInxXvGCoCJMh2tX2XZB4GUvnt2coHOO62bz\nSGQCMVDuam/ZBzdW7wmt1/N//+9o9e3ZSVf85MiwE1epZUEfN6XmW/yBUFWyW35xguPjrD1T8S6A\nf2qprCRJ/Q8MVj2yFklZt8XdwqqJspbijjTq0amOAb/ZI2pdCNBM+TK/A3O9HjNNzj4ISv2Qf8yh\nvWLeb73osF5gmVWmDnGZ0pKsirLSuGslvfjet/pm5TbVtQaSXy0LXiSP/3h5WtuG9ImVVlUZUTjg\n1xdEjyiceux+Ybcjs0RCx6sYh61Mpm53bF8eNRrTo2v70CiRnev/9mlU8zdHpPabaYN211SnDbYu\n8hzdodPiDxbPsa795sQMMo0YJ3hzrpl5XHQbBHWxVACOt3i0HTpe2ww4KHh+tC7QGwpgJc1eVqvX\nIsrDJ8rcbWIVP4jXIVqU6XDWFZvtJPPjl+xHgnrv5S4fHd7jgJS6uobmmD0pC1dU67Fx86LSD+KJ\n7J03A4nv7LeXnr7xh9qvV+ewiwnrSczN4qV+v6H2lWVqX1mmIUdGl0Q2tbNM2m+MkwplbfMNI48L\nzVPKdgrE0rU7Hct8micAa6A24kf91a9PZ113kX3VJrsgyKt0nbO+18/xvhpL+on1QsqcZH7RmYd5\n0gYn5WUlwVLrre+9bVe97n5+ptZX2VQ2bN0nXpuS2NwuhMuFdDi780SPrsEiKJHFUsojzvEn2pRb\n9/mkM4e0/c7N31Os/6oZKF2c5t94LGUx5u5V7aiP+q7Wx6j4GSneemxu5nAahqHn3/5GC5YHR/zd\nBI6hIMjl4ct6LP/1Ax8lPIc72QvqQmR+57YFhwxD787eqX+9/60n7xXr/BR/JKgIg6B4P9SN1cn1\n5kYOg5sih8vT4dm3vvbsB1UomBOUml21jbrwT+/pwZfm2N5vGIZufvJzTZ611jYFYufuRk2bZ1/+\n+dj+4aMCdoGEdZv1HOpmJGjRqm0KGEbcAMV6f78+sRcptJZ6tk7+tTu/H7Sv8/B8MuL9P+w6bppb\n/HrxvW+jnt+3Zyc9/sdhOqyf/foddr1qiS7S6mTQYc6jQdaUP7veZK/a4MTs2TbTKp+b8I1mfrNZ\nj7/+VdRjzd/gpurMlDZG+tgFQeaFW+QIbGQHgbkGoFWJz6ezLWt6NZtBUIzz0dS5wePkVIfjZSZU\nxCmXHdn+ZNdXsdPY7NcncZYK2LC1Vm98sjwUmLi5dk0lHU6S4/nLyQFxziFOmlv8+mbltoLquA3Y\ndMClq7vQbh6ryfqz7WhTZMdNp6qdvA6CmuP0Wif7Q3QakjOHBdPprWkrUh5aLDSFdEDxyvqq3ara\n4a53a9XGYPl4p/lyf7eUjfe1/vSXr9+ppWuD62ndOuYLxwDqf/4rfJE+u5Ky1oPn+qpa7dgdTHFw\n03NT39gSDIJczMQ0e5HMyf97d7FPC7FewPft1Sn0d6f20aO9ZoqZ6cnrh8VtRyrsgqD3LcVezLlW\nbthdMDh18CTKLmXYZP5uJKmlJfo7TvfkcbNy0Z+fmS6/PxD6zOwuXpPNI7f6/KuN2rA1PemTcM9u\nRMFMwYwc+Yk8x1uDpIvPPEy9urVXr+4dwiZquxkdMIsnZWq9IDvxqji++/mqsNuJZswcdkBwaoBd\nZ9NLH3yrdyJeP1Lkcd9NJ2ei6XCRnS+x0pDtRK6J5tbT/1moG5/4TJ/MzV4QnC5uzsHJMn8Dsc4N\n1v07YEQ/1k2nqp28DoJa4uy8yV48lzp8EV5dQDhhAVZ7xEDR/u/+j3T53e6qHdXblKKWpIkzVmvM\nGwvCTlolPp9efG+Rrhs9VaMenaa6huZQBTM75WWlYbnCdspKfWETaq+8N1iW2U3qXYs/uP6Qm6ks\nL991jsbeeXbopO50QC0t8empG4bp1suHhEpUS+5KMO/tYj2OWLpactXt2C0ga00vi3WMiPwe3Fa+\nTEas0ZzJlknRdvOzklmoNVljJy4OVcBrZzNXwjxxmj2/iR7jt+2q130vztZV901JsaX5LRcG62MF\nQZH3RJ7j21kuki86q7+eu+XM4NpWPp9+1DoaZF5Y53qnXHlp2//F7ti8bF14WeMJn65M6PXvvDK4\nCPOvzjsq6r4V63fFfX7kxbSbz9MuHTiWuogS1+1crnGWSJvsTG8tSrNkzfaknu+FR1+dp0dftV/L\nKhmhINX60bf+7dWeYL5OrHOD9TsxDEMlERcFRZkOF68YQrKTFCsdFlu0+4JqE6w88vR/Fujhsfa9\n6uMyOAJUtb0uY2sapIp1glJjLUVtrmuzdO0OPf76V3rns/Beu5ue/FyvW+ZHhBbYi+EHg/aLeb/P\n59ODv22rYmQGZW5+fy3+QDAIcnHya19Zpi4dK1zlj+/Xq7NOGNAnantkkPOrnxwVlgvttBCrW9b0\nGkm67+qTwm5PmrEm6jnWdJVYJ+d7rvp+2OvZ/f+7dIwdhLkVa1Tc2ntuN1qf7iDoih8fGfr79SnL\nQhO929n0BpuBuFnVa8BBPaIeE4t12YTilv1jdKx0uMjRhsjfYKyLZLPjIJHiS5cPP8L1Y73Wb5+2\nEZpLzz7c1XM2J1Aqv0O7co34UX/H6rqJinca2F3XFPpu3RZ2iUzxqygv1VPjv9K3q6KDE7uRqFSv\nOeLNnUqnD2evjVttNBF2H8X21oIV1vu8mLYQ63OzfieGojus8qo63AMPPKCf//znuuCCCzR58mRt\n2rRJl156qUaMGKFrr71WTU3u6rrHDYKSvMg302lM5toYdkOxF92S2IrE736+ynGoNFNpcMvX7dTl\n90zW6JfnZuT9UsWcoNQ0WhaO/Oe7izR3cZVGPTrN1XPf/MS5Wpa5RkWXjomXhb1tzBeu8ub9rYuw\nJlK0INRxlcSJ6K+/OyXsdp8eHcIunq0H3kd/f2rc17s6ogpVZBB1xME9wuZVjf94uabOXR+6KNm6\no17rNrdNXN6rczvH92pXWaYjDm67iLf7zLp3cX5+ImKNmllTSexG69M9on6gwzyujVv3BEsEW7RE\nzPNI9CdjN8+oGOXCIdrufG+mQUVeH0WOiDp1fEptF97vT18twzBUY5nzZlbAjHRsjDlz6WbdN2Pt\np9YAKZnFhXt166A///J7GnRoT/3iv90HfZEBRrxd7uJb3w9dMyVb3HLBsuAaktc//qkmzlgT9lux\nu45MNrUqFzoDPGfzBU22KYE+/A8TVJvEmkySEl4s1QgYUeeRcZOTu37OeBA0Y8YMLV++XK+++qqe\nffZZ3XPPPXrsscd0ySWXaOzYserXr5/Gjx/v6rXi/VCTTfe2HjhOPGofHXNoz9D2o78bPYEyHdLZ\nw7hodXDyezYnbybCKII1DAMBQ9eN/kSvTl7i6rEm8+KtxmH9GTt/fma668fGyu9+6Hcnu36dSPOW\nbnW1gnuzPyC/i8IIVoEkL2glqVOH8IsGn8+n26/4nspKfbrkR/3D7uvTIzxvvFP7cr14+1mh27/5\n2TGhY0cscxeHr2Hy0Ng5uuIvwZTB/717kuZZFmUeckT06JUTu2DDrJYV6UcRI1SJGHr0PjryO23B\nl3WOQTZGgqq22/+uVm+q0a0Ra7uZo5FtgXNam1awciGpwK4N5vyYyAvvyLTUWHNGzDlu73+xWl9+\nuyV0Adi9Szs9ef0wDT/5O1HP6WgzvzAbYv2/rB0yiVYFNR13eG/deeVQfSdOpV6ryGDVboTWqePT\n7Xkgcr0m60X746/PD6WtSW3Hq749O+m/TzpIUnTniFt2mWNuJVvNON1K4qznZLV4zY64j7FjrhMU\nefy1BqjW301TSyDhLCwnGQ+Cjj/+eD3yyCOSpM6dO6u+vl6zZ8/WsGHBCcennXaapk93d5EWb6TH\nizSqm//nhNCOV1ri0z3/9/2EX2PVxl0J/8DveHZGaEK71xoc5ojkKn8udDOm2e66Ji1fv0tjP1gs\nKfYBx5pG9vZnKzVp5hqNuO19xwXq0vXpmZVcku81C4ocebVqaQmmwyUyqmN+dskMOETmGZf4fDpk\n/25644HhuvCM8LK3kb3H7duVhW07/fgDwk7aD0eMMpms86Xit8/9f8ouhbCbw0iQ3YWIW0OO2Ef3\n/vokPfHH0yRJsxcFO3Bq9jTZzhFI994cax2idVtqw/at0DwPIzwYQmKSrczkbRuCX96PTjxQ1196\nnH5+xmGhi93IC6YD9+mikwbuG7odq6y0NZ3Yujj0Zf91uOP+WJngHBSvXX3BQP1g0H7qEWPk11pF\nLtXU+PI4FemsIgtM2KUYOzXH7ZygB35zUth8z0hbd9Zp3pIqvfT+t6FrswP6dNbg/r0lBav0Vu+s\n1/A/TNCbU90vLB1qdoLnntmLNuv8G94OVRe0U1vfrEkz18RdB89r5kfu5tiY7HqdTsGjdQ5suqZF\nZDwIKi0tVYcOwR7Uf//73/rBD36guro6lZcHe066d++uqqr4qztL8SPTZ95a6LqCVio2Vtfq1clL\nbA8kc5dU6bcPf6LHX4+/eFik7TUNMe9/fcpSfTzn/7N35oExnP8ff+9u7khIIveFIK64giAkqKPU\nraquVktLW3UU3ypKW6Wq9FC9tIo6ezmL1lHUzy1C3JHDGSKHSCSRa+f3x2Z2Z2Zndmc3Gxubz+uv\nZHdmdmafnWeez/X+3DL5uMZ0/Ksa1SEdjusdP5+cif7TtyMhKUN02zSOEtXJi/e0xs/BM+K/hcou\n5PWUiC4I4UZJuARxFNqE7DqqSUFRmWAEscaZvZ3pVpBwTSP2sZNeaIlZY9rqiQM4Oah4D2mlUsGL\nxjQMETd2Kkt6X8pwXD23p95rQkUpOUbRx+M7ol0TP0SXLya9PXSRseTbORg5d7fofpV9P3sZEa/o\nP3279u+yMgYlpWptDcHTUidZ1agK3xu7SHK0V6Fzy0CM5ERuT168x9tWoVBgUJf62v8NRSe5BhT3\nnjck52tIPfFJ8GyHOpg+KhI1XBzwYo9wTB3eSm8bB849X9Fm8w4GvgsuaZmPeEYlID7HSs0RclNp\ng3zc8PX0rgj0Fn+2qNUM5q44hl/3JeJmeZ8ktZrhpUku3aCp3V65/YKsz+Riair2rnIF0CUS9eIA\n8PVv8fj6t7MmGWWWQNsYlTMk3CbpXMyOZrHHFnxvj4vLUFJahsPxdyrNeW81YYR9+/Zh8+bNmDt3\nLu91uQ/IxnU8jVqGybcfYrmgczFbv/DjrO4mnK00Hm6OmPXtEaz/+4qoFv3V8vDgv6dNN1bsRBJg\nGYZBatpDlJWp8cuuy/jcjLqeqhp2laKqq/FYAu4V/lqeErdu9xXRbb/bnKD9W6lQ6OoZJNxP5qY6\nyKWVjJQvAPCQqGcRpi4IkasOxzJhcHO0b+aHvm3lR1hYhA8vMc9jj6hQdIjQLPzdOOlzjvYqPdUp\nOZEbPy9X9OtcT+91c8dt6eQYzBgVKfnZwga3gP6CTo5SXouG3nh/bJQ2+sX9vClfHJLcrzKlVgFN\nWqJcKfPSMjXGLdiLm+V1V5a4V3b+Xwpe+uBvrRR8daBKGEFq6TRYsfRy7u/Q0OKaWzvDXSRz93n/\n1SjePlIKs9Zg5LON0K1NiN7rdnbcdLjKjwTduJeL8Z/sx4JVJ3mvi2USSK0DTU2lHfpMA9HXuT/X\nn8uNnBMX7/HmQVNSzLWY6eARGoZisFHI2/efrBw/e59w19uhfuJRNlOM6XV/X8aQmX/xrl2h4Dfi\nLiouw+/7r2HxutP4aft5scNUGKvEbA8fPowffvgBK1euRI0aNeDi4oLi4mI4ODggPT0dPj7GiwoH\ntHHC6v3GOx1n5zxEXJzOuvaqoUBuPnAz5TLuXJeeqKYN8odCAd6+3L9ZiopLUFCkGfhzF5PgDn4U\n6/wVXfNJY8cSkpx8DaV5/BSn3/8vCxdvFsKnpm7o5ByLy527urxNU/e1BqmpOuWayjpfa38PhcW6\nyaMgXzPJ5eTmiZ7XxRTdbyovLxePS8rrgvJyRbe/flN+R3C5CO8NLqZ+lwV5hvOICx8XQ6UoM+m4\nzza3M+tchFxLStS7B3nnxlEhKi4qRHy8Tpo0Li4OBRzvlaFzuZ2mr1p04pT+9nKvxxVAXJz8usLi\nR/x5y1Fl2vdtChl3EpGZVvFFoiXO76fNp5Gdq+u9lJWju+cYxnAapnChFhcXh/zHZfh+iyYFa8P2\n42jfyLymi08bNzhzTEXHhbv/jftFuJNVjI6NjX+PtzI145hxPx1xcZq/GwU54cptfWM0Li4O9x7o\nFrlXLl/C/dviyyHucm/VX5e0fycnJ8OxRDPWQr/42bPxlW7sV5Qb11OhUgJlauDS5asofshXpvSt\nZS97LLPzpBfx7DGOnNQ474SpiQWFj/U+p1jCUZuQcNYkYZWbN8QzgW7f1jmskzgpu0nXdMX1N++Z\n/psuLW9xcP/+fZPug+wHujYUUvuxgmGZmVmS23ANFUvN348eab6HvDzd3PjokbiaYFJyqt4aWIpf\n92rGYM/BU3hcohnvtDtpiI1wR1amK04n5SP+3HnEX9KMz610feOvf5QH4pIe4U4W/zdlyrU/cSMo\nLy8Pixcvxpo1a+DurpleOnbsiL///hv9+/fHnj17EBMjnjvPJbpDW4TUy8Oqvy5qc9DFqFXTHZGR\nkfjn+HU0C6sNN7fHQHoR2kRKe0rFiIuLQ2RkedrKBs3gBfnUQE5eEQDNAPr7ByAyUlc3UFhUig82\n7NT+HxkZqd1XeywuG/iRpNp+IahXvzbPg/7Bhm0AgPsPdZOO6LEMcOhqHIB8s/a1BpklN4ATmoVy\nZZwvb2ytRG5+MfBHGgDA06MWkHYPjo7ORn8nHh61NPtmFqOmu7vo9ik5iUC85erLXh8YgVbh3gjy\n0S1MxuXXwk/bNB41Q99loyP5esWTYXWDcPwqP+o1eVgrfPWrxqB4XMLAx0viuzCA2ePK+X7Dw8NF\nu8mzlHK2re1ZC23bRML7n2y0bOCNyMhWmgf+n5qFkqFzuZJxBfHJfFGM8MbNAKTxXrPY71Qw1zRr\n0hAvD/bF/QcF+H5zAl7t15Q3vnJx/vOe0Q70bdq0Mfm4QmSN7Qbjwi/J9/jNZzMeliKieUsolQqM\nnLsbsa2D8OaQFqL7lqkZYKOuAXFkZCSu3MgGoBnvwKBgREbyi+avXM+Gq7M9gn1tyzjizjEV+Y0K\nx/WDaZrn3ZjBHY1GjJ1Ts4A9GQgI8EdkpKaJ8/m7F3Hltr7CZWRkJG7czQV2axZsLVpEwMfDQINM\nkd9SvXphiOTUFXG3aWuB37jFEVxDvXr1MMYrACu3X0BQaF1ENg/gbefiIn/OzXpYCOy4J/peZGSk\nZlxbNMHGQ4f13s8rVCOwDl9y+//O3YFw7gOAdm1N+14LlHeAY/oOJn//AOCcfv+7iGZNgD36i3i5\n34Pyz3sASuHr64PISP0+SlI4HDgAoMTgZzn+vRfIL4Cnl6fkNiWlZdo5yVLPis0njwDpRXB1raE9\n5sYj/wFZ+pGyoKBgREbWlXfg8t9Z48aN8KigBPg3E4GBmjV0QtpFnE5KQlj9hjh/Jxm4rf9bAIDX\nXohB2Omb+GIjvy+S8NoNGUVPPB1u165dyMnJweTJkzF69Gi89NJLmDBhArZu3YqRI0ciNzcXgwYN\nknWsYF83zB3b3uA2DKMRJlj++zlMWLS/QspRLD/N7oEfZj4DBzuVwZQ8Q40N5aT9fbYuDi998I/F\nBRLkau1XFapDnyBz6yR46XASP2pLp6r061xPb4E8ICYM74xojeXTuxrc97WB+g+GPh31J83u7fjp\nG9byqpryqc3r14ZCocDK2T0waZh+Dr4hxNI2hJ3d3x8bpbeNuax6vyeim+sWcGxxso+HC+aObW+W\nAQTouslXBdo09jVrv/TsAjx8VISCx6XYXZ6rL4ZofxHevab//oyvD+PNxf/aXIpvZafDybkPdf3B\ndFvvMjB+XCeosTSrYd0b6n+eYPx7RoXqbVOVeF0w9yoUQEi5MZ58O0dsF9kYqo+Sw9pdl3n/38mw\nTMqXUiItUernKqyNNMbDR0WIu6LvhBemphu73+Wkw7G/N0PPwoqKFInB/sx5v3eJjzFnHlBAoSco\nwaoaFpWUGb03m9armGLzE18NDxs2DIcPH8batWuxdu1a/PLLLwgICMDPP/+M9evXY/HixVCpKnZD\ncUlIysSkpQe1/19I1qQSVaSZla+nCwK8a0CpNH/yN2W3D348Vv5QtoygwdPmhbS1BYMxTlwU96iJ\noVQqdGnIEj9pQ0Z0oLdlGt4BQNfIYIQaUOQBxB8y7q4O2PxpP72+O9wmrKZEbS2JsXmie1uNsfZS\nn8YYGBumt4+rkx2eaRuMKS8aNooc7FUYL+jAzm1a2yHCX7S5q7nUruWMmS+31f5vqE+KKUwfXPPh\n2wAAIABJREFUVXUiywEc1UFhvyZDPMh7LKtuUmxe4r5mSDDtaWlPIJeK1pQYw9Aj4FZ6HtbsvKQd\nM+5cYUhJi5tWZSzFylssSiQ4J0v14Kos+nWuxxOLUECBED/NWiA9Sz9tTKrGVAwHGcaDwV+I4KNy\ncovEtzMRqXGVWlNwn0+uTrpEKbH6oDsZjzBq3t/44MfjWhl1satc/vtZDJixHUUGnOJyiv51DWOl\nx4Vb02gpARpWvlrO8eSuq3n9hBTQfm3sb44V5ikqljaCxjynifZy+9KZw9MVEpBg8UTz+5VUBJVS\nye/ZInjf0OKdfe/arQeIv2o4hzI7twij5v2NYbNNa8wqRUnZUyaRXQXkVysbsfnl+t1c7DicAoZh\nwDAMft13lTPZalAqdV4UsemnpFSNowl3Rd7RFJB/+U4Xk3rEcIsWzSFEwgC3t1OiXmBNTBsZqW28\n5+aqK863lhFkzDiY+EJLrJzTA0OfaainFgdoHgpTXmyNZ9rqFyYL6dupHt5+oaXoe5V9/RWRyOYi\n7L9SFXB1ssOzHepg5ZwesrZ/VFDCazAshViEmtfVXPA+9/+UO5XT/sAa5BUUa/ubKZUK5OYXY+3u\nywYXfaZiaAE2fdl/+OPfa1rDkrsQ+9/otlK7mRQJEotMMIInPqtyKVcoxho4O3IqIBQ6yfz/zt7R\nX6+YMOUY6kekxcAaWji/GepPZwpSlyD2e2pevzbvd5D/WBed0aTn8ZmwaL/277uZ+eXHLf9czgf/\nc1xTa5WVI90Xr2YN4w3H2fERa1TKwo0EWcp3rI0EyTigsBm1FF9u0qWvcceI/d7Y5+7j4jLJTCAP\nd92zpncF+tzZhBFU0830jvWWQKlU8CJBl1KykHQrB1sPJYFhGINpXOx773z5H+auOGbwgcHtKG8J\nSkrEG1BVVSx5jsUlZVj++9lK68FkLsIHKsuKredxISULt+8/wrrdVzDtq/947ysVCq33h5vm+OFP\nx/HVpnicvsyPKnEfgus+6g0nBzu8NkC/47kUUvURchEzFLh0aR2EwV010rXX7+pytq2lOGvs4a5S\nKgzXEphIz6hQnnQvy5Fz4jnRFeWLqbEY27/pUxcdloPwjpI7To8KS1AoSE95VFCsXeiwiM1L3AhS\nviByz93cllJ81+7WpTLZKRX4ZM1J/LYvUatyaQkMPQMKyherjwo03zc321ss0s1GP7gLb2NOAJ7n\nupwGwfzUz84tAzHz5bb430vShpe1ceHM/0oFX8J/5NzduJyqXz8jB4VCge1L+mNsf+lnicFG4Iwm\n9enHrec1tVoWIueRuMKb2P03d1x7yXQ4Y5Eu9r43JdrFwjAMbtwzLl4kZ87gNxe1jPOYvffKeA5/\n8XPhZi8Y4totnTNXoVDoHc+REwmSijJzUzDdZRiRUtiEEWStGhelUsGbnOMTMzD1y0NYuf0iUu48\nxJ7jNyT3nfvDUew4nKL9P5+jmMINwwJAfoH8NLiCxyWY/d0RnDEQXeIqryRVMBf4SWDJVIsDcbfw\nz/EbmLT0oGgur7UwNL/l5RdLRgIU0C0CXJztyo/F4PTldOw7dZM3cU16oSUvXYl9ABrzgnIlYi0R\nkZArT/+Q8wB7ZMI9UFF6cOqRxBr5VTYvP9fkiUW+6gfVwsDY+hVKDzaFWm5PLlLUpbUmnfKl8rQJ\nQHMPGOP2/Ud4IOjRtuiXU3j9k328CI7YPcuNIAlTjHhZA7ZjA/HqpopL1dr6kopGgriNSa/eNN6J\nnv1OuTUTwiao3doE48PXOgAAatd0RpfIILz3sn7PLyFi1yJs8qxUKhDdPAA1nI3Ly1sL7nXaCepl\nHhWW4H/LdcIFL/VpDFNQKBSiUv9s1CXuivSaRK1m8M/x69h+OAUTlxww6XMNIdUrTsyodrRXSRpB\nxmqeimU0MJVKL5Tr5JWzHdcIsnSdniXnL+49qlDoH4997uY8KpKs3+capqb0EdQ7F7P3rEIIb+Yn\nhaHczNIyNf74V9oqvpSajRVbdbrnJaVqbTid7VrMIucBwPJf/B0kJGVi3opjktuUcCb0ijZJexJY\n8mYu5kTBPvjxuMWOW1EMpXswMFAMqdA1v2W9fNwHNjea0jDEA44ik7lSqcCnEzuJpnH0aBeCF0SK\ngiuCn5crFr3Vyeh23OtIyxSX5KwMuL83BxM6oVsKlcC5Aliur5k14NYyffR6hyf2uQ1DPLBlcT+e\n8EYPGcXrWw4mYeHqU9r/tx9OxrlrmQCAyZ8fxIkLd3ExJUvUM8t1MGUI0l+421syul3VmkkXltc3\nGFNzM8aNe7q5S9hbRgz2++U+l+0F9cWTXmiJ2uXNdJVKBaaNiERHjkCIFJaeA60FtwDfmPNYqheM\nIVRKBSYO5Tsa3vnqP9HfKFcM5r+zd0xy9sqlS+tgBPvqN0yVumWkHIIO9ipM/+o/zPr2iOj73/2p\nkf9mnSBix5d6hMtd38jZLpkj961WM3j4qIi3BjAH9r6SE62SjcSXwTrjWKNzzc5Lks3UuYZpRZyG\nNmEEWQtDKh1pmfl6WveGijSLiku1XlJZ+bUSyHkgcs/LGp5uU7GkEST0DD4VMIbrorSRoPIGl9yo\niUbCXYNSqYBC4vKb1PWCj6DA8MPXO2D84ObmnrVBGtfxNLrN4yLuA/vJOTpG9tIVD1tKMKAi9Gof\nypOPreoM6apL5/tmRlfMeqWd9v+6ATWf6LnIaa7YN9qwpOuPW/kd4z9edRIzv/k/niHDzqPcFBSh\ng4lbtMy9LyvC38euo//07cg0UG9gLSoaXDQ1OnnluiaVi1frI4gEGIv4SCE0CExVEasqcJsglxpJ\nlzJ3/Hq1D8WitzqhYUgtAJqI3ocb9WtqQnzdeEXtRxIsn/KrVCowdXhrvdedncS7w0jNFyl3HuLq\nzQc4n5wpuY7jGpiGmi6Xlalx/W6udq0m1yFS8Ni4gtyiX3TOG7Wawasf78XbSw7IUp+ThHN6xtof\nAPLWa9x1qoLX8F0D1/kotR7mrgmqvRHE1jmE+rlhSNf6kl2CLY2U/CIAfL7hjN5ryQaKYR9z0ihM\nKVQXIud24i6or17PRnZu5Xc2z80v5qX8mYKlhBEePirC4Xj9ybgqYMx2lZooE28+0E46LuUTex4n\nf539zr1qOiHIp4ZBw71TC75HtHW4j9YIWPRWJ3w/8xnDJ2kCSqUCY/s3Myj7zFVLe5Id6bnGoLWc\nBANidP1l/jGQVlsVGc4xIkP83KFSKjCiVyN0bhloxbPSsXRyDIY+0wAb5/fGrDFtRWuw5MCN7JSV\nqVFWphYUJvN/s9wmkRk54k0cTeWbP84BAP6vkmrGjGGoDUTijYqlWpu6CGe/X67xVFHpZi6v9muq\n/fun2fJENqoa3uVRMIBfH2RpmtbzQlRTf4PbqJRKvPuSru9P1kP9dYi/BZw/YoaNk4P4tUstprlR\nSW42CZe8fN39beh59eO2C3h7yQGt0WewVqoClKkZ7f0pR31OCu48Jqf2yZAByMIzgjivs7cu18kg\ntfxTcdbfFQmGP/FmqZWBi5M9Vs/tCTcXBzjYq5DxoFB2gVZFMLV3iSEjoOBxiXYgG1ag14acHwN3\nQf39lvP4fst57Fg6wOzPlMPIubsBwKzP4Z7vn/9ew5Bu5hm57317BLfSLRjStSCGJHlz8h5j/2lx\nRZh7nLoDezslsh4W8uQ82cXR6wMjoFAoDHpXWzb0wa8L+mD30et6UtdN63nJug5TYCWlpYhpFYT0\n7AL8Iugh8SSIbh6A+MT7siIJlUFapmX6ZFgDR3sVAr1r4OEjXbRjeM9wA3s8WRqGeGjn2A4RGsN/\n0gstEeLnhunL9Js5SsGda8vUDAb+bwfv/YLCUjAMo73nxn68V/ueuX2YpCgqqYCntwKILVxZTl6S\nL/Uvhpyn670s/TRZXk2QBVPla9fUGRBVXQ5biiZ1PfFK36ZwtFeiWXkT6A4R/jh2Xl9B1FHCUJCL\nsVRilUqBEE6ErUAQZejTsQ4upmRp/1/4RrRZ5yFWU2yqaIAHp5ZRSqBg9zGdop1YmQG7G9v/7Wxi\nBjq1CMSfB/Sb+VoCnpNGrUbB4xJeJFAMsW2ucWrz5NYlGXMeCr9+4VEdOM4LKSc499lckbIOm4gE\nAYBXTWftF+/t4Yw3TegLYS5yU3Sa19dMNleuS9f25AtCnbU5Hhtj/PHvNfy6r9ybIMMKetoUp7mT\n2Oqdl8w6xt4TN6qsAcQwDN74dL/k+99vOY9Tl4yLOJy7lokxH+3BD1sS9N5jH9rs76p2TfGHuIuT\nPYZ0a2B2o0lLY61yh5kvt8Wmj/tY58MhX8msqvLdu92wYX5va5+GbHpEhSI81HiKJhdjC4K7Wfn4\n6td40ff+PX3LpM+Sgn0Erdt95YlGS1kyZUrimoURJ2NeQTFeW7hP73VudMqSkSBDmR9PCwqFAoO7\n1sdznXQCBrPGtBPdtqKRoueMpJmqlApeurHwfiopVWsVFVuH+yCivnlNMcWUwwyllkU11e/Hxs3U\nyXhQKNo3iOt4F7sXhcaTnPS2VTsuot+0bXiQZ3q2Dvf73HE4BcNm78IZA+IUh8/ewbDZu7D6r4uS\n22gNEgMP5vzCUvxz/LrB1Dnu96NmGAi7pXKNKKkGsNxIUEWymWzGCBJSEd1wueQ8kpfXzWqnGwp7\n/lkuoiAWDjTGmp2XsG73FRQ8LsGl68YlLp8medYzV+/j7LUMyfdPX07H9K/+46WacHlcVIqV2y9g\n2W9nK+sUK8xv+xItsoA5fVljKN1K148i1A3U1GL4erpg8cTO+FLQmLSqYo2FHcuTUkwTg6vMVFUM\nUlMwFnWsqpiS/ihnHt1/SmPsGEsRKSktM0upk3t7HJCIFlcmcmoEzMXYr0eo4MeSnq2LjquUCtQx\n0sBZLqUyGujaEhVVqLS3U4kaFHIpKVNr06YqEpH38XDBNzO68upQpdYLAPDOCP0aIm4Wz+TPD2oz\nW6QQjz7xX5PKJOJ+1uaDmijR8QumR1W5z84t5ceRyigBoFUr5kamhK1EWIPE0My3cscFLP/9HNYY\ncFhzU/bVakZXE1T+lbhwarYSksTXf9wUP0PjaQybNYIA4O0XWqJDhOG81IpQ8FjeFy9nHXftVg4u\npmRpDWxzbvrc/GL8J6Pm5WnoDQQAF1OyMG/FMYONBT/86Tiu3nyAg3HintXth1Ow9VByZZ2i2ZxP\nytTWeuy0UGM4KRQKfoF/47qeVbKppRjVoVGuGNyUhFf6NjGwJWFJGgTXkr2tKbLtWQY8lVkPCzH4\n3b8w9YtDOFqB4vCTl9JNchr8tO0Cftx23viGBmAq8VlizIaW+uTeHevw/pejRCkHc7zx1R1uLY2Q\na+VGv9T8VlKq1lscm0uInzvmjWuvrRfPE4nksLg42euJBMmJ2nARE50QilZJiRRduaHvyL5mgkIw\nC3edpyxXAjTUBFrM6P1sXRzvfzlpZ6y0/U2ZanJlal2XIHaca3CUJS8kZ+nvBPC8JEI5d1MaU9u0\nEdQzKhQzRrUxvqGZlJbqT8PTR0bqvRYeak6Nj/6x2f4lwv4ELIbqSv49fRO/7NJY5uZEgn7adgGr\ndkiHSSuDmd/8n+jrq/+6yPP2AdI3d6Wma1SAWd8dwfLfz0KtZvDAQkpRUlirj5YlYL1lzpVYxFtV\nmf1KO4zq3cgmG5lWVbiF2saY/PlBWdut2HqeVw8khJXXBYBP1pyS3M4Yx87fxU9b5Rs12/5Lxvb/\nUpDxwPw5sjKzCoweWuJ94VxhqZ5b7HHrm2AoPy30lCEdbw73sqQFQLq3DTH42SUlatzJ0NR8nbhY\nsfoyAHB1tteKs+QJmt8KZZh/fI/fkqCgSNzhEd0iQDS1XMzRLHxJKhIkVp8lXO9w2X00VdSZwT0H\ntjbOkEqcWHlHkWB7do2pMFB3x6rnyTVc+etWzU6yUjE532dA7Ro8EY3+07fjj3+vIel2jtF5+uld\nHcmkMqUs2a7i3KI5sWaA5jT7ZB0Jjet4wsfDGTNGReKNIc2x8I1oLJ/eVXQfoZXO7bz8xcZ4bc6q\nKZGgnLwibNp7Fdv+S9aGZi3FsfNpOCkxuT00kGr454EkfLKG3zdCqjFfohkelCeJ0HPbo12ItobM\nUjwNvaCkeC66Llo29MZH459cf5mqQvtm/hjWPfypTCt7WvFwc9I6mcQcWmJI9bFg4TbF5sLOw2L1\nBebyl8yoMtdT+urHe8zODniSgVq55yg0etisioo2Me3eLhSvD4x4or2unhQTBjfHzJfaPtHPZGX/\n7SVSUOU0IDUVdj3IGkEdIvzRIcIf88d35G0n/A1x++9wYRgGHiIiGeLCCPJ+v+z3wo08CtPSuHz7\nZwK2/6c/x3DT2th7wJBKnJhRJrwOthEy91rC/Phr3uxczdotISlTnpBCqVrP4SHHcVFTUOsV1Yyf\nerlm5yVM/eKQ0ePYvBFUmbD50LHlnckBICxQvw+GOYtQ1sPm7eGMlXN6IqZVEOztVIioXxsO9iqM\n7q3fzfnqDf6Cf+KSA3p502VqxqSUieW/n8X6v6/w9rcEDMNg4epTmP/zCdH3t/1nOIWN7cbOTmpS\nUq0RYZY1KOSy+9h1TFi0D6lpD3HfgBdHWCswfnBzLHgj+qmsA6kMatZwxPzxHdHIxKJ1gjCXJZNi\nsGxaF8S2DpKlZmluD6c7GdZTABQ6jcyN6FRmarVw0ShMjZX7yfZ2Svw4q3uFZa1VSgX6da5X4Saw\nVRF7OyWiWxhvGmsqY/s3M7qNVOr/g9zH2joeYbqTubA1f0nlRk2wrxtmjWlnkhAVl7z8EriKKK6J\nrZOEr0kZRWxkZC1HFTVPIvWWW5MnPN6eE7rWCuz9bigSJOZrYw0a3XlojEeGcys6OUibEYvXnhZ9\nvT3HYIm7el9bB2WKvy9E0LvL3F6C1cIIqkjfHUOwKVjc8LuzyA1hb0Z9DzueUov7F7o3xPMCqWi2\nZwSX9AcFeMQJ/ZaWqU164KVl8iVIj523TD8KY43RxB6uPh66iYothGMnNalIkLeH+OTWLMwLCkXl\nRUm+/eMc7mTkY9LSgxi7QDoVRjgxOmqbLupf/+RhrXj/t2tiftEpQRDiuLs6mNTU1c3FvAjD/lOa\nImVrCNUI2zWYa8yUVeK5C+d0Ybq31CJS7Fr8vFzhWsFIUHVi1LONjG8kA2dHfpSHdVpyleOkFq9p\nmfmYN649Vs7ugaHPNLTI+QibX3tJqKTKJa+gWLQBu5gQijCaxED8t8qmk8kRHcnipPszjHRNI3vv\nSK2TAH70RUrIhc1q4s5ZhmToxdZ5N+7m8oQethxM0qpoViTnwdy012phBHGL4FbP7Ym1Hzxr0eM7\nOdihT8c66B9Tj3dDj+rdCJOHtcKYvk0N7C3O2y+0gquTHYb3lJ6M5ISLy8oYjJr3t/b/0lK1Vibx\n04nGC0aFE1R2eV+IuT8cxRJB0ZwpHDHQ3O/jn0+IaueLeYwc7dlIkPhNKzbJzBrTDm4uDmAYw72b\nngRSRtiZq/pSlsG+urSbLq2D8NbQypeBJ4jqzudTYgzOlUI5c64KlSHYOc5Qw9HKQjjv7TtlnrKc\nsRSf2d8dwWMzFeS8a/G/18Nn5TW6flqEf6oin7wZjRG9GmFYD8v09Ypq6g9nRzt0buqGUD83fDqx\nE3YsHYAJg5tL7tM63AeApk2Bq7O+SEFFEJZHdI0Mltx2/KAIow6Oh4+KtKqsABBTXnMkFglat1vQ\n744Rd4CwaxmpGm/umowrDc0wjNHaWUOZPNy062KJz75Z3maEexyVUoFxA6Qjfmo1g7OJ93HkXBoy\nHhRi4pID0icow47p3jYEK0WiuuYqCFYLI4grt+dV01m0bqciODvZ4Y0hLfDaAE2H+xe6N8TwnuEY\n1j0c3duFwNvDGfPGtdfbz1AuedN6Xti04DnUE0mvYymRWPgL4f5gueHQhiEeqBugCSl+tUm8n4VK\nYOWzevnxiRk4FH9b1ucLefioyGCHc1OKINk+ENzQLxcxwYQOEf7aZlzWrpe5KrNmqUtkEE++t3vb\nEL3iwRA/KqAnCEvTINgDTep6oWNzndIo19ARS6Ux1NixX2ddj5aCxyVITZNW0KosLqXyFajMLTwX\nGhzcZy2gqQu4LKNtgxjCYy3//ZwsA8fc9EQCaBZW26KNjWu5OeK3hc/hmRY1sXxGNzQINi4S9cFr\n7bFj6YBKyXQQRoIMGQ19O9XDhvl99GpPuIQKUrJmjG4DpVKhi5hwfq/ChsYMw39/cJf6AHROEal7\nkut4mP3dUe3fcmx/QzLvvhxjU8oxw/Y3466bVEpgQEwY3F3Fv6e8gmK8/8MxLPrlFC6lSii9sceS\nkQ/XpXWQqGFM6XAGCLVQnwAh3dpovAjN6nnxXh/duzFG9OJHcNo09kVMq0Deay0aeGv/NscwYw2Y\nZ9pKezOEfLJapz6kVCi0uu9cT+DuY9fxdXlfHWFnbGFO6ZB3d+BoQhomLT2Au5n63bvF+PvYddnn\ny0WYmgfwVVPSRHLspfTjHYxEkCoLhmF40uqfrNYJPHDDynPHRvH2e7VvU94Ebmen5BlF3doE48up\nsdr/3+fsb0rvE4IgxBnSVZd+zF0olpaptcqdAODkoKnd5BpNXLgFyMNm79J7X8xbezDulmgNUaC3\nYVEGKYSp02LLh8fFpUZTcoRGiZiIh7lpKmJBJmNRs59m97CYGhzx5OAaGpUpBKMyI1rw8JG0cMlr\nA5th/Ue90SHCHzNf1ghLqJQKlKnVePioCKs4jUeLBGuNwqJS3M3SrWkGxoYBAK7fNewUkTJ2GIYx\nqqhoSEGYuwYtLlFLKtJlPSzkpcs52GnGSyqFbgtHUOuKEYcId3ymvNhKdJta7uJrZXPv+2qhO9s1\nMhj/HL+O0b0t229Dk+rWBB5u8vJKR/duzOvj81KfxvDxcIavpyuahXnx0tbk0DMqFF61nNG8fm0c\nO39XVMte+JDiRh6USoXoD/3b8gfkm0Oa63k5f99/jReCLS5Va2Vd1/99BdNH6SsqCc/B3EV5TKtA\n3vcnfEA/FkR9rlzP1usRxCo/sXm8laFAIwbDMFAoFFiyPo53DdxuyNyC24iw2mgYUgu92tdBxwh/\n1HBxQFmOLv9XpVLwbnrvWs6wt1Nh6vBWCPSuwatpWCwj7ZEgCMOEcKTKufdqYVEpJg1rhcvXs3H7\n/iM4l0cwZr7UFv2nb+cdw8FehUFdwgwKv6jVaqiUujnyyo1sLN1wBm4u9tgwv4/29WW/xpstrmCn\nUvDmHrFUktHz/sbj4jKD4hDCdB6xZYih3iSGYESkD1LSHqJJXY3TUWgsdojwh7eZBe6EdRk3IAJL\n15ufXm8t2OL8WWPaaV9j7635K0/w1lu1azrhYoouEnLy0j00raeLKHu4O8HHwxmXr2fjXpZhhzK7\nnuCiZhij9YUlEobKiq3neSqWxaVlkkZNSamaFwlihRFeH9QcX2w8o7f9Fs4azJh6JTea0zBEPGoo\njL7p9qV0OEncXR3w7f+esXjjVKVSIdsAAjRhelbVrV5ATbg42WNw1waIbhFgVvNKlUqJdk384ORg\nJ5kPmVtgWH6V61kT5neXqhlReW+2C7r++Yhb4sLokVCqtESmISIsLBQ+XIXH+XyD/g35Xrm3hk2H\n+2pTPPbE8zu1bz+cjJ+2XZB1TnLJKq+lMtTMdu5YXcqkk6Mdlk6ORc+oUG3jMEcHTiRIMN6sQdSt\nTQjCQz15uc8uImIdBEGYBrcAmtsrhpW0Z51QLo6a+03Mo13D2R5eNZ3RMES61wzXOMl6WIg95U2V\nuQpRx87fxd6TptXxHE1IQ3x5reHgrnxRHbHibtapZCgFTZjWLBY5Srqdo/eaudzLKsCCVSdw5sp9\nvcj/rDHtKAr0lNKldRBWzumB1XN7VvpnxbYKMr6RDKRaWaiUSqjVjF6q+/0HhXq9D1f9pend2LI8\nK+h+ec+uuT8cM/jZYrfk3B+O6fU/EiLlkBDK+BeXlPEyeyZy6o/Tswp4qnEh3pq1K5sZpXeuJtTo\ncSNBQgf85k/7YcvifpL7mru+rxaRoKrE890aoG+nuhZfmEr1mlhkpPke1yNYUqrmRWnKytSyDRRA\nk+Zx5up9hAXW5Bl1wgiNkwP/Z7du9xW80s+4eISTQGlGmBrBfQCXlal5oWYAaBTqoY2QsOlw127l\n4Jrgc37cqjGADBX7mUpufrFBGc4QPzejTfi4Y+PkwP8uhAsufjOzauHrIIhKxU6lxIevd9CqVG5d\n3A+5+cXaPiGsIWGohoBV3Uq8qW8YRDX1w4mL93ge2DEf7RE9jpjH1RhsxH7H0gF6aTFS3lVAk9Mv\n5aQ7m5ih/XvZtC6YtPSg3jYZDwpx5FwamoV5meTsE3Nqn7h4F8cv3OOpSxG2gVBgpLKYPioS9QJr\n6tWcmQo3+sNFqVQYNUaECEslhGsXIf+euqlXFyO39u7Hbee19etS5OQV4eNVulT9Hu1Csfx3TYbQ\nnB90dUhfT++KrDThCsp8uCUBzo52mDaiNZZuOIMmdT2N9vxks3xMhVZHTxilUiFpAMW2CkJTQX1R\nZfPDTF1nZKEXr6RUbTCHVEjq3YeYt+IY3l3O93YIjyvs9yBXHMBfUPAqFDVYyon8ZOTod0F34hRB\nsoIKhpAKBwv5+rezeHPxfoMeD2MpIW1l9AVy4EwCwgikIQdoZTYMJojqROtwHwT5aNLiVColr1Hi\nrJfbon0zPwzhtC6YN649z7nRIyoUAETnedZAuJSajX+O38D55EzJ8zC3CBjQGFBbBI2vDc1d55ON\nNz0cN6CZnqw469U/duEuFv1yCvN+NOzdlkOhSMo3QZjK4K71K9Q6ZerwVpKS67n5xdrMD7lElEeV\nuM94sfYerFDWst/OYs73R/Xel8P2/1J4inZiCNd9SqWCl4nCUsfC9fbClLYukcH4ZV4vLHyz8lL6\naXVUhZg+KhKL3qr4YJvSGdvH0wW92msezMIbt7Co1KCKm5CM8lCuME9d+OAqFaTYCcVgFEDrAAAg\nAElEQVQXpJgyvDXv/4NnbvPSH3LydCFaYfQJAK+pmdAwEJN63XX0OmZ+83+8iNOdjEf4YXOCNkL2\n7R/nsOfEDdxKf4Rfdl3SfgfCCfLgmVsGleh6d6wr+R6LQqFAiJ8bwoJqao//zojWcLBTikp9zh/f\nAaOebWRxNUSCIPQJC6qF2a9E8eqF2jT2xRdTYjG2fzMM667rdTLzpbZ6+7MpMfN/PoHlv5/FrG+P\nSH6WUPCFLap2dlSJCitsPaQzeliFJy5CxxSXT385jQ3/XJF8H9AofgphHU2sHLcwndkYYnNyPCfy\nRBBPAu765I9FffHt/7qhW5sQA3uYjldNjcHDTYnPeFAId1cHnuBRTQkFNi7czA9vD2dMFaybAOPi\nVDki9/MQQQqtGBWVMxcrqfBwd5Lt9GnbxPQm82QE2Qjf/q8b3n6hJdbM64XOLQONbj+ka33t36wH\n78a9XF704+a9PIuc2+zvdQ/zowlpeg9cuWFpR3sVdiwdoJVy3LjnqqSH8pFIOJrrkXUQGEEnReQo\nV2w9j4spWYi7ko7ikjKcuHAXExbtx19HUrHnhCYff/ex69rt/zyQhPGL9uFeVr5eH45dR6/reV+5\nSMlLCln2ThcsnRSj/b9rZDD+/LSf6OTTsqGPxfo9EARhPgNjwzCqt67rvVjKnFRjZy437+Vq63q4\njOzVCA2Ca6GwqAyvzuen0JWUlmHl9ot6+3ARSmYL+XVfosH3xQQJKAJN2AJLyp+3b7/QEo72KgT7\nGm5F8fYLLU06vp1Kqb1XAgRqj7n5xbwIqxwnQGmZGrPGtMNHr3fAT7N6QExsz5gk/l//l6L3mnDN\nJMbQbsYNJUNUNHX/XRHn0o+zuotsqYNmKRsh2NcNPaNC4enuhIFdwvTe71mehsHCbeDKRo4+33CG\nFw2yREGrWs3wVOs+WXMK18v7YrCFhWkZ8qS1WYR1SuwEwqaYPCoswQNO4Z69nRJjnmuCATG6/hzC\naJShlLyFq09hyMy/eDmyjwrFc35LStX44Mfj2v/ffF5XUChlVDo72hltcsaiUinNkvkkCKLqoFAo\n9DqtyzEa3vrsAOau0E8rUyoVWo81V70TAP45Lt5DDdAogALAxZQso41PWbIeFmLql4dwMSVLWx/V\nQ/B8AeQtmgxBLU+JqoC3hzN2LB2gt4aSontb06JE3AwRtlaZC5vt4uSgEk3BE5Pi7xDhj1bhPlAq\nFfCqKZ5pc+6atEHF7V3Gfr4cVV9zJfuFn2Uu9oK10ZQXWxntG0arKRskoHYNnopG/8718FIfnRdS\n+EPjLsDHLtir/TtRZq0Oi9gztEikr8OD8rQ1tr/R+eRMMAyjjd64OtnB0UGFn+eIK8WUlPI/iL3x\nXJ3swTAMhs/ZhcXrTmvf/3FWdwzp1oBXB/Qgj79Q+H3/NRwxIfXv6Lm7kjVD3HRAbk+QW/fFjSBj\nvTgIgrA9fl3wnLbBceeWgQYbYxtDoVBopaMBIDVNl3omJZoDAK3CfbR/G5uH+k3bhtV/XcSOwylI\nupWDmd/8HxwdVHB3ddB6cMf2bwpPdyesntsTKpVS71nzIO+xXvQ+/up9HDsvMveaYAVR1ImoKiiV\nCtHoixykfsffvdsNy6Z1xTxOuhxLsI/hyFREWG1MebEVfp7Tk3f8eSuO4WhCmmQ/IJZnylXf5BhB\nzcK8MLxnOEb0DMdz0cZT/IUEmCluwKJUKvDR6x3w7f+6YcfSAXhGhkFKM4eNwg0rRrcI4OWpuwqE\nGaSs77gr+mkXYrCNA7mKKAWPS/D95gRRvXs2isI9j9cW7sPw93fjyvVsMAACa9eAt4czXhuor9Am\nlINnz7+ktEy0WFCs5uh5kbDt95sTcNlIWgiLq7M9vtucYHS7wiJdWpypOfEEQdguDvYqvDu6DZrX\nr41xA5pBoVBg/Ue9zTqWUqmAJ8fjO2npQfSbtg3f/nnOYF2ns6MdolsEABB3WAn580ASbzF0K/0R\nz5M9MLY+1szrpa1xEBo8L33wD6+BJADMXXEMC1frq5iK9Qnioir3cs98qS2+f/cZo+dOEE8KmUFV\nPaQMjSAfN/jXdkXjup7Y9HEf3nvG0vMUCgWeaRsCbw9nrJzdQ/t6mZrBJ2tOYRzH8W2IiDDjol0K\nhQIjejXC8F6NMGFwc9FthEp4XIxFbeTQKtzH6HfChYygakDjOp5QKhVY8V53uLs64N3RbXjvN6rj\nKbGnjlA/6R8Vt+CXZfqyw9h5JFVUMvXcNY3qETeti/VG/Hf2jmYCKbfL2jb2EzkXviIJ+xDOyClE\nQpK+opJYvw4xqdacR0X4dK1hSXGW88mZBtNMAGD8oAhZ6noVLSYkCOLpJMTPHQveiNY6atxdHbBh\nfm+tY0kuSoWmZlLI7qPX4ewo7cF1crTTRrR/338Ny36Nx72sfL32A1xOCZSlxJp0G4LbwJptzK05\nTgmu3imUlZY3f3wHbP2sP1bP7YXoFgE0hxJVit7lynMhgnUTV7Rq+khNY/mukbq+RXJqYoQpceGh\n4k1FxTBHJIm9HQO8a2DjfNOcNJOHtdJ7LbKR6eIFlQkZQTbM890aaD2MgEZHff1HvdGioTdvuxrO\n9gab900e1hLLZ3QT3eaZtsGiNSq30o2LKtipFLwmXICmaVdhUak2nOxf2xUv9WmMz97urN1m+shI\nXsOzgselsLdT4vZ987qnczFV2lIKDzdH9O1UD31kqL7VlsjZJQii+uHm4oCIMH4jRm46MwvXI6xQ\nKCTlatmeRH5e+oaCo71KW2y943AK9p68idcW7sOQmX9Jnl/SLcs1P+UKywybvQsbD2Vh056rAHSL\nL7H+Hy0b+ui9RhBVhTeGNMe6D5/Fl1O7YGR5bzCAr+oY2zoIO5YOwDsjInn7znxZV9z/Sl/x/okf\nvKZJiwuo7Qo/L1fMGKU7xgYDhoqYQ9gY3P6MNVzkCTixdG8XghmjIjEwNkzrSPeVcFhwv6cnCTVL\ntWFefq6J7G3FmvexdG+nKQic/UoUdh1J1SoFRbcIwMShpimhcGEY6ZuKe6sOfYYfafJwd8L0UZFw\nc7HHX0dSkV9YYlI/I0uz6eM+yMwpxMQlB7SvtSnv++PqbI8N83tjxPu79fZb+EY01u6+jGkjI/Xe\nIwii+iJMCxHreyb0CBtrFvjR6x3x+if79PY31sOsMvjn+A1tawYhv+1PxIs9w3HjrqY4u2tkMAZ1\nCUN27mOM/2S/1RZLBCEXhUKhzTZ5sUc41v+tk5h/Z0Rrg2qw0c0DtH9LKf1GNvLF1sX9tA7omPIe\nk0XFZbzSBzEmDm2J5b+flXUdXSKDMLIX/34b3jMcG/dcNdrcnSWmVRBiWgUh62EhEm8+QJO6nlj0\nVie4ONlhxteHUVRchm//182kFDZLQpEgAgDwxZRY0de5HklPdye8yEnTeLlPE5MkDdleFiz+tV1F\nUzgAQE5loVv5RGKooFesHwfLx+M7inpYTcXV2R6h/u482XFunZWbi4NeWBzQNEhb/HbnJ9YpmyCI\npwOuXLazowrZggi1WAoyAHwzo6vkMX08XdC3ky4yvfp9jfBMVFP9lGOWETLS8pxEmigaY/nvZ7F0\nfZzoe6VlDAb9bwd+3HYBgOZR4ORgh4DaNbBj6QC8SLL/xFNM18hgoylhK97rjikvtjIomy/MwPGq\n6awnsS1Ghwh9NTkxurQOwrQRkXqO6hG9GmHp5BgsmNBR1nG459chIgAKhQJN63mhbkBN/PFJX2xf\n0t9qBhBARhBRTv3gWti+pD/qB9XEC5wHrDCFgmv0uHG8GaveF1dy4x5nUJf6gtdcRSUhAaCo2Hie\nuZymsGLykSwtGnqjWxv9JqNCmtevjc2f9hPNrQ8L0ik6cY0xYd8hbjofQRCEXD6d2Bltm/ANlb6d\n6oluG+InnhLXprEvVEoFTxDGqVwV1FAk2sPdyaAh1KSuJzYKCrW5rJ7bU7JPx8EztyX3E2v4ShBP\nK33LldIcZToM/Gu7ylI2MwdD5zDq2UYYU55BNH5QhOR2DUM84OJkfP0lB3NS9CwJGUGEFoVCgS+m\ndsHo3o2xbFoXPBddF+MG6KuzsbhwpLXFFNgWvhmNsf01+z8XXZcnz/j1dI3HMi+/RG8/wLCsK0vH\n8rDx6wMj9KJMANCnYx2jNxhXNpsLW6czqncjLHgjGvZ2SnzwWgc0FohIcCNo3CiZMKffyYGfeWpK\nMSNBENWPET3DUT+4FkJ83dA6nF8DwxY4Tx8ZqRfNbiWo+QSA0+ViBu6ujrBTKXmpaIZ6lHm4OWJ4\nr0bYvqS/3nujnm2ERW91MpgN4FXTGX5ertp6JVMFHwDI7hZPEFWVV/o1Ra/2oVg80frOUEd7Fd4f\nGyX6XvsIfwzp1gA7lg4wuf7naYVqgghR6gbUlJQ4bF6/Nm7fz+OlfCmVCnw5NRZTvjikfS0irDaa\n1vVCy4beCPF146n+sA/F5g34xgLLw0fGjaDatZyxfUl/raHTr3M9xF+9j8fFZejfuZ4sD4O7qwMG\ntvdAUHAovv3jLFgH5OdTY+HsYKf1lgJAk7peWPx2Z/Sbtg0AMLp3Y95neLg5Yd2Hz2L3sevo35nv\nqRXKkFNfC4IgDDG8XGoW0KTHbV/SH1sOJvPUpGJbB+nt9/7YKHy5MR52dkr8e/oW7z17OyU2f9pX\ntvfVr7zOSLh9/5h6GGZCWtrnU2JRWFSKnSKd6I3hYYaiFUFUJRzsVRWqn7Y07ZqIp8BWtNnp0wgZ\nQYTJLHgjWvT1sCBdodzo3hrvpFLJVS1S4LNJnXmFe24uDmjRoLZWNttUuA9nHw8X9Gpfx+RjtKzn\nisjIUPRqH4qk2zlIvp0DDzdpxbYZoyJFDR1AI70tJ2f9redbGN2GIAiCRaFQYHDX+ka3s7dTYcbo\nNkhIytAzgtjjyGHu2CheO4Kpw1th1Y5LWDolxuQ6Rns7JeztHNCrQx1sKFd/k4unu3RdBEEQ5tG+\nmR+OX9Cl7f/w3jMm1XjbCtXviolK5beFz2HC4OY8kQAujUI99bwN3P9ZGe7atazz4KsfVMuoIRXT\nKgifvNmJFyWSw+q5urqpICNdngmCICoC19gx1h9kxXvdMX1kJFycdHOasA6pW5sQrP3w2QoJuXi6\nO2HFe93RpK4nGslMCa7hYpnaA4IgdMx+JQqfTuyk/d+YqpytQpEgwqI4O9rhuWjjvXG4cOty2Fqg\nJjIauD5teNV0xqwx7UT7dRAEQViSZvV0Hd6XTeticFv/2q7wr+2K6BYBWLIuDrGtpbu6VxT/2q74\ndGJnfPfnOVy58cDo9t5WcogRhK3TpK4XPnkzGtfv5pIRRBDWwk6l81g+F10PK7dfQPd2laOMYm3k\nylMSBEFUBIVCgR1LB4BhGNkpcHYqJa9ZY2US1cwfu45eR5O6nriUmo2JQ1tCVXQPX23XpOjU8XdH\nxwh/eIiI7hAEYRmahdVGszDx2uzqABlBhNVJTdM0xfP3ckX/zvXQNTJI22iMIAiCMB9rS9BK0Trc\nB59PiYG/lytcne2hUCgQF5eJL6bEwtnJrloWaRME8WQhI4iwOvmFGpns1o18oFQqyAAiCIKoBjQI\n1q8LktuJniAIoqKQMAJhdaaPikTPqFC8XN6kiyAIgiAIgiAqE4oEEVbHz8sVb79QdTT0CYIgCIIg\nCNuGIkEEQRAEQRAEQVQryAgiCIIgCIIgCKJaQUYQQRAEQRAEQRDVCjKCCIIgCIIgCIKoVpARRBAE\nQRAEQRBEtYKMIIIgCIIgCIIgqhVkBBEEQRAEQRAEUa0gI4ggCIIgCIIgiGoFGUEEQRAEQRAEQVQr\nyAgiCIIgCIIgCKJaQUYQQRAEQRAEQRDVCjKCCIIgCIIgCIKoVpARRBAEQRAEQRBEtYKMIIIgCIIg\nCIIgqhVkBBEEQRAEQRAEUa0gI4ggCIIgCIIgiGoFGUEEQRAEQRAEQVQryAgiCIIgCIIgCKJaQUYQ\nQRAEQRAEQRDVCjKCCIIgCIIgCIKoVpARRBAEQRAEQRBEtYKMIIIgCIIgCIIgqhVkBBEEQRAEQRAE\nUa0gI4ggCIIgCIIgiGoFGUEEQRAEQRAEQVQryAgiCIIgCIIgCKJaQUYQQRAEQRAEQRDVCjKCCIIg\nCIIgCIKoVpARRBAEQRAEQRBEtYKMIIIgCIIgCIIgqhV21j4BloULFyIhIQEAMHv2bERERFj5jAiC\nIAiCIAiCsEWqRCTo5MmTuHnzJjZt2oQFCxZgwYIF1j4lgiAIgiAIgiBslCphBB0/fhzdu3cHAISF\nheHhw4fIz8+38lkRBEEQBEEQBGGLVAkjKDMzEx4eHtr/PT09kZGRYcUzIgiCIAiCIAjCVqkSRpAQ\nhmGgUCisfRoEQRAEQRAEQdggCoZhGGufxPLly+Ht7Y1hw4YBALp3747t27fDxcVFdPu4uLgneXoE\nQRAEQRAEQTyFREZGir5eJdThoqOj8fXXX2PYsGG4ePEifH19JQ0gQPpiCIIgCIIgCIIgjFEljKBW\nrVqhadOmePHFF6FSqTB37lxrnxJBEARBEARBEDZKlUiHIwiCIAiCIAiCeFJUSWEEgiAIgiAIgiCI\nyoKMIIIgCIIgCIIgqhVkBBEEQRAEQRAEUa0gI4ioFuTl5Vn7FIhKhEobCeLpIT09HQDdtwTxNGDL\n6ycygsrJy8tDamqqtU+DsDB5eXlYsmQJ1qxZg+LiYmufDmFBcnNzsXLlSqSkpCA/Px8ALapsgdzc\nXHz99dc4dOgQsrOzAdC42gp5eXn44osv8Pzzz+Pu3bvUFN1GoPWTbVId1k9kBAEoLS3FmDFjsGLF\nCty+fdvap0NYiA0bNuDll1+Gu7s7XnvtNTg4OFj7lAgLcfToUbzxxhvIyMjArl27sGjRIgCgRdVT\nzv79+/Hmm2+ioKAAR48exZIlSwDQuNoCmzZtwoQJEwAAw4YNg1KpJOPWBqD1k21SXdZP1doIYifg\nW7duwdnZGfb29rh8+bLNWrzViczMTMTHxyMqKgqvv/46HB0dkZubq32fHr5PJ2q1GoAmnaZt27aY\nOXMmJk6ciLi4OOzZs4e3DfH0UFpaCgC4c+cOBg0ahHfffRc9evRAvXr1tNvQPfv0kpSUhPv372PJ\nkiWYOnUqzp07h+LiYigUChrXp5y0tDRaP9kYaWlpSEhIqBbrJ9UHH3zwgbVP4kmTmJiIVatWIT09\nHQ0bNoRKpULnzp3BMAzOnDmDkJAQeHp6Wvs0CRNJTEzEzz//jIyMDLRs2RJOTk5IT09HZmYmVq9e\njUOHDuHEiROIiYkhz/JTBveeDQ8PR3x8PBQKBQICAuDm5obExET8/vvvGD16NI3tU0RiYiJWrFiB\n1NRUNG7cGPfu3UP79u1RUlKCKVOmwN7eHunp6WjevDmN61NGYmIifvjhB6SmpqJDhw6Ijo6Gm5sb\nAOD27duwt7dHnTp1aFyfMm7evIkDBw6gUaNGADQOjJiYGACg9dNTDHdc3dzcoFAokJ6ejuzsbKxa\ntcpm10/VxghiGAYKhQJXrlzBRx99hM6dO+PcuXM4d+4c6tSpg9DQUISGhuLAgQNgGAaBgYFwcnJC\nWVkZlMpqHTCr0oiNa3x8PK5cuYL69evj/v372Lx5M3r37o2XXnoJv/zyC9LS0tCuXTuo1Wqbuplt\nDamxTU5Ohp+fH65du4Zjx47hzJkzCAwMxK1bt1BQUICWLVtq9yWqHuzYpKam4oMPPkBMTAwSEhJw\n5swZxMbGIjg4GJmZmfDy8kK/fv2wYsUK3LlzB1FRUXTPVnGkxvb48eMIDAyEl5cXSktL8e+//yI8\nPByBgYH0jH0K4M6nc+bMwdGjRxEUFITg4GCoVCp4eXlp109qtZrWT08JYuMaGBiIkJAQuLi4IDEx\nEVu3brXp9VO1+XWWlJQA0HinateujYEDB2LatGlITU3FwYMHkZubCxcXF3Tt2hVnz57Fw4cPAVBq\nTVVHalyvXLmCS5cuoXXr1nj77bfx3HPPoVatWvjwww+xc+dOFBUV0eRcxREb2+nTp+P8+fPIzs7G\n888/j6ioKNSoUQOjR4/GuHHjkJaWZjOTs63CjmtSUhI8PT0xaNAgzJ49G05OTjh48CCys7MRHByM\noUOHom7duvjwww+xZ88ePH78mO7ZKo7Y2M6aNQvu7u44fPgw7t+/Dzs7OwQGBmLNmjUAAJVKZc1T\nJmTAjmtKSgocHBwwaNAgbNu2DWq1Go6OjigtLYWzszOtn54yDI2rn58funbtivHjx6Nv3742u36y\n+UjQsWPH8OWXX+Ly5cvw8PBAcHAwDhw4gPr16yMwMBDnzp3DjRs34O/vj4CAANSrVw+XLl3C/v37\nsXTpUjg5OaFZs2bWvgxCgKFxDQoKQnx8PG7duoWmTZuiY8eOKCwshIODAy5evAilUokuXbpY+xII\nCeSMbUpKCiIiItC5c2eEh4fDyckJu3btgo+PD1q2bGntSyBEOH78OD799FPEx8ejRo0aaNCggTb9\nws/PD0qlEhcuXIC9vT3UajWys7Ph6emJhIQEMAyDrl27knFbRZE7to6Ojqhbty7CwsKwd+9eBAYG\nws/PjyK3VRTuuLq6uqJp06YIDw9HWFgYzpw5gwcPHqBJkyZQq9VQKpWoV68eLl++TOunKo6hcY2P\nj0d2djaaNm0KT09PNGjQwKbXT3bWPoHK5ObNm/jqq6/w5ptvIj8/Hzt37kSdOnXQvXt3zJkzBw0b\nNtQq1CQnJ6NNmzbIz8/HkSNHkJ+fj2nTpqFHjx7WvgxCgNxxLS0tRWpqKjw9PbFhwwZcu3YNKpUK\nY8eOtfYlEBLIHVsAuHLlCurUqYOVK1fixIkTsLe3x9SpU618BYQY9+/fx5dffok33ngDubm52LZt\nG/z9/RETE4N///0XYWFhiIqKwsmTJ5GRkYGysjLs3bsXWVlZKCsrw6uvvkqL5CqKKWN769YtABoP\ndMOGDREfH4+WLVvS2FZBuOOal5eHLVu24Pr163j++edRUFCA2NhY7NixA507d4avry8AoLi4GIcP\nH0ZBQQGtn6oocsc1JiYGvr6+OHfuHHbv3o1Lly7Bzs7O5tZPNhcJUqvViIuLg5eXFxITE5Gfn4/R\no0cjJCQEN27cwMGDBzFp0iS0a9cOnp6eeO211+Do6Ii1a9fi+eefx7Fjx+Dr64tFixYhLCzM2pdD\nlGPOuDo4OGDTpk0YO3YsmjdvDm9vb0ydOhUhISHWvhyCg7n37Lp16zBixAhERUXB398fkydPhr+/\nv7UvhyinrKwM33zzDRITE5GSkoKQkBAMHjwYoaGhqFWrFjZu3IimTZvi3r17UKlUCAoKQnFxMTZu\n3Ijp06ejU6dO8Pb2xuTJkxEaGmrtyyE4mDO2paWlWLduHYYOHQpnZ2eEhIRoC+qJqoGhca1ZsyZ+\n/vlndOvWDe7u7nB0dMTNmzeRnp6OFi1aIDk5GRcvXoS/vz+tn6oY5ozrvXv30KJFCzx69AidOnWC\nj4+PTa6fbCOpj8P8+fPx+eef4/z586hTpw6OHj2KixcvwtHREYCm38TatWvRoEEDuLq6AgBu3LiB\n2NhYAEDnzp0xevRoq50/IY4543rz5k107NgRDMOgVq1a6N69uzUvgZDA3Hs2JiZGm0YTHR1tzUsg\nBKSnp2PKlCnIy8uDk5MTPv74Y2zfvh0FBQVwcnJCy5Yt0bZtW8TFxSEiIgLffPMNiouLkZubi2bN\nmqGwsBDOzs60SK6CmDu2OTk5iIyMRFFREQAgICDAyldCcDE0ro6OjoiMjETz5s2xcuVKAEBQUBCe\ne+45rF+/HtHR0Th//jw6deqEUaNGWflKCC7mjuuGDRvQqVMnxMfHw9PT02bXTzYVCSooKMCmTZsQ\nERGBzMxMdOnSBQzDYN++fVi1ahXKysrQpUsXpKamIiYmBhs3bsT69euRkJCAcePGwcvLi8LyVZCK\njOtrr70GLy8va18CIYEl7lmi6nH79m3s3bsXX3zxBZo2bYobN27g9OnTyMrKQteuXbWOiXPnzmHk\nyJFIS0vDjh07cPz4cUyYMEGbXkNUPSo6tj4+Pta+BEIEOePq5eWFY8eOoXnz5sjLy8OkSZPg7++P\n+fPnIzY21maK5W2Jio5rt27drH0JlYpN1QS5uLhg+vTpKC0txbZt27B//36MHj0axcXFSEpKQpMm\nTZCQkID9+/cDAKZMmYIHDx7QA7eKQ+Nqu9DY2iaenp6YMGECysrKwDAMgoODsWLFCsycORMXLlxA\ns2bN4OrqCjs7O7i6umLy5MkoKCiAu7u7tU+dMAKNrW0iZ1xr1KgBR0dH1K5dGzk5ORg/fjz69etn\n7VMnDEDjahibigQBgLe3N3x9fXHjxg1cv34d7u7u8Pf3R1JSEnJzc/Hff/+huLgYnTp1goODA2rU\nqGHtUyZkQONqu9DY2h6urq4ICQmBUqnU5qOPGTMGrq6u2LRpE7y9vREXF4eUlBR069YNjo6O2vRH\nompDY2ubyBnX06dPIzk5GV26dEGtWrUQHh5u7dMmjEDjahibigRxiY6Oxu+//47r16+jadOmSEpK\nQnJyMrKzs/H+++/DwcHB2qdImAGNq+1CY2ubXLt2DQzDoGbNmhg9ejScnZ1x4sQJ3L9/H/PmzYOL\ni4u1T5EwExpb28TYuJIj6umExlUfBcMwjLVPorI4fPgw/vzzT1y7dg2dOnXCO++8Qx4pG4DG1Xah\nsbU9Dhw4gLt376J79+6YO3cumjdvjjfeeIPqL20AGlvbhMbVNqFx1cdmI0EAsHnzZpw/fx4TJkzA\n0KFDrX06hIWgcbVdaGxtj5ycHCxcuBD79u3DwIED0b9/f2ufEmEhaGxtExpX24TGVR+bjQTdvXsX\n//zzD0aMGEFpNDYEjavtQmNrm5w8eRKXLl2icbVBaGxtExpX24TGVR+bNYIIgiAIgiAIgiDEIFF3\ngiAIgiAIgiCqFWQEEQRBEARBEARRrSAjiCAIgiAIgiCIagUZQQRBEARBEARBVD8S3xEAAAhBSURB\nVCvICCIIgiAIgiAIolpBRhBBEARBEARBENUKMoIIgiCqIffv30ezZs2wYsUKix1z8uTJGDx4MNLT\n03mvN2rUCKNHj8bo0aMxfPhwzJs3Dzk5OUaPt2PHDpjaxWHLli34+OOPTdrHELm5uejbty8mTpwo\ne5/p06djy5YtBrc5dOgQHj58KPn+7du3MWLECOTn58v+XIIgCEI+ZAQRBEFUQ7Zu3Yp+/foZXayb\nwt69e7Fp0yb4+vrqvbdmzRqsXbsW69evR2BgIMaOHQu1Wm3weMuXLze6DZe7d+9ixYoVmDlzpsnn\nLkViYiJcXFywfPly2fsoFAooFAqD26xZs8agERQUFISBAwfis88+k/25BEEQhHzsrH0CBEEQxJPn\nzz//xLfffosZM2YgPj4erVq1AgAsWbIEJ06cgIODA3x9fbFo0SJed/GysjIsXLgQFy9ehEKhQPv2\n7TF58mTMnj0barUaY8eOxeLFi+Hv7y/6uUqlEq+//joOHDiAw4cPIyYmBnPnzkVycjLKysoQERGB\nOXPmYNmyZbhx4wbGjBmD5cuX4/Lly/jmm28AAHZ2dpg/fz6CgoJ4x165ciWGDRsGOzs7MAwjetz8\n/HxMmzYNeXl5KC0tRdeuXTFhwgRkZmZi9uzZKCgoQElJCcaNG4eOHTti/vz5uHPnDiZNmoRly5aJ\nXpNarcbs2bORmJiIwMBAFBQUaN/76quvcOzYMSiVSvj6+uKzzz7Db7/9htOnT2PGjBlYuHAhSkpK\nsHjxYpSUlKC0tBRz585F48aNMWjQIHz99deYNGkSPD09KzTeBEEQhACGIAiCqFacPHmSGTBgAMMw\nDPPjjz8yc+bMYRiGYXJycphWrVoxarWaYRiG2blzJ5OWlsbbd8eOHcz48eMZhmGYsrIyZujQocyp\nU6cYhmGY8PBwpqysTO/zxF5ftGgRs2LFCiYnJ4f55ZdftK8/++yzzLVr13j7FRQUML169WIePnzI\nMAzD7N27l3n77bf1PqdXr15MUlKS9lqEx01MTGT27NnDjBs3jmEYhlGr1cyqVasYtVrNvP/++8zK\nlSsZhmGYrKwsJjo6msnPz2dOnDjBDB8+3OD3efjwYWbYsGEMwzBMYWEhEx0dzWzZsoUpLS1lfvjh\nB6a0tJRhGIZ59dVXmQMHDjAMwzBdu3Zlbt68yTAMw/Tt21f79+XLl5lBgwZpjz1p0iRm586dBj+f\nIAiCMB2KBBEEQVQz/vjjD/Tp0wcA0KdPHwwYMABz5sxBzZo10alTJ4wcORI9evRAnz599FLbEhIS\n0LFjRwCaqE5kZCQSEhLQpk0bk84hLy8PPj4+cHNzw7179/Diiy/C3t4eGRkZePDgAW/ba9euISMj\nA2+99RYATeRFqdTP5r537x78/PwAQPS4OTk5iIyMxLJlyzBlyhTExsZi2LBhUCgUSEhIwIgRIwAA\nnp6e8PX1RUpKiqyapMTERG0kzcnJCS1atAAAqFQqKJVKjBo1CnZ2dkhJSdGrhcrKykJqaipmzZql\nfY1bBxQQEIDbt28bPQeCIAjCNMgIIgiCqEY8evQIe/bsQUBAAHbt2gVAk+L2999/Y8CAAVi2bBlS\nU1Nx8OBBjBo1Cl9//TUaNWqk3V+hUPAMA4ZhRA0SQzAMg3PnzqF///7466+/cOHCBWzYsAFKpRJD\nhgzR297BwQEBAQFYu3at7M+QOq6npye2b9+O+Ph47N+/H0OGDMGWLVv0anhMvS7u/mVlZQCAuLg4\nbN68GZs3b4aTkxMmTZokem0ODg4mXRtBEARRcUgYgSAIohrx119/ISoqCjt37sTWrVuxdetWfPTR\nR9i8eTNu3bqF1atXo27dunjllVfQo0cPXLlyhbd/ixYtcPToUQBAaWkpTp06pY18GII1nBiGwfLl\ny+Hm5oZ27dohOzsbdevWhVKpxIULF3Djxg0UFRUB0BgWJSUlqFOnDh48eIBr164BAE6dOoXffvtN\n7zP8/Pxw7949AJA87pEjR3DgwAG0bt0aM2bMgIuLC7KystCiRQscPnwYAJCeno6MjAzUrVtX1nca\nFhaGc+fOAdAYmQkJCWAYBtnZ2QgMDISTkxPu3LmDs2fPaq9NqVSiuLgYbm5uCAwMxKFDhwAAqamp\n2tonALhz545e7RNBEARRcRSMnFg/QRAEYRMMHToUEydORGxsrPa14uJidOvWDevWrcN3332HlJQU\nuLq6ombNmli0aBGcnZ212zIMg4ULF+LChQtQq9VaYQEAaNy4MS5evKgXQWnUqBHatm0LAMjJyUFE\nRATee+89bcrahAkT4OrqipYtW8LV1RU7duzAr7/+iunTp+Pu3bv49ttvcfv2bXzxxRdwdHQEAMyf\nPx916tThfc6CBQsQGBiIMWPGSB535cqVePfdd7UpdZGRkZgyZQqys7Mxa9Ys5Ofno7i4GG+++SZi\nY2Nx8uRJfPXVV1i//v/buUNUVYM4jMOvQQSbYLK6AF2DoBtxDQqCYDEJYrOJllss8m3CbBGzILiJ\nDz35wr3pHDjg9zx1YObPTPqV+fPfO329XplOp7nf7+l0OinLMsPhMKPRKOPxOO/3O91uN/1+P9vt\nNvv9PofDIefzOavVKo1GI8vlMrVaLWVZZjabpdfrpSzLDAaDFEWRVqv1rXcH4G8iCICP8Hw+Mx6P\nUxRF6vX6b4/zbcfjMbfbLYvF4rdHAfg4IgiAj3E6nXK9XjOfz39038vlkvV6/c+1zWaTdrv9o+c9\nHo9MJpPsdrs0m80f3RsAEQQAAFSMjxEAAIBKEUEAAECliCAAAKBSRBAAAFApIggAAKgUEQQAAFTK\nF8ydTTX8xfwpAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Convert it over to a Pandas dataframe for easy charting\n", "vix_df = odo(dataset, pd.DataFrame)\n", "\n", "vix_df.plot(x='asof_date', y='close')\n", "plt.xlabel(\"As of Date (asof_date)\")\n", "plt.ylabel(\"Close Price\")\n", "plt.axis([None, None, 0, 100])\n", "plt.title(\"VIX\")\n", "plt.legend().set_visible(False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "#Pipeline Overview\n", "\n", "### Accessing the data in your algorithms & research\n", "The only method for accessing partner data within algorithms running on Quantopian is via the pipeline API. Different data sets work differently but in the case of this data, you can add this data to your pipeline as follows:\n", "\n", "Import the data set here\n", "> `from quantopian.pipeline.data.quandl import yahoo_index_vix`\n", "\n", "Then in intialize() you could do something simple like adding the raw value of one of the fields to your pipeline:\n", "> `pipe.add(yahoo_index_vix.close, 'close')`" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Import necessary Pipeline modules\n", "from quantopian.pipeline import Pipeline\n", "from quantopian.research import run_pipeline\n", "from quantopian.pipeline.factors import AverageDollarVolume" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# For use in your algorithms\n", "# Using the full dataset in your pipeline algo\n", "from quantopian.pipeline.data.quandl import yahoo_index_vix" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we've imported the data, let's take a look at which fields are available for each dataset.\n", "\n", "You'll find the dataset, the available fields, and the datatypes for each of those fields." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Here are the list of available fields per dataset:\n", "---------------------------------------------------\n", "\n", "Dataset: yahoo_index_vix\n", "\n", "Fields:\n", "low - float64\n", "high - float64\n", "adjusted_close - float64\n", "volume - float64\n", "close - float64\n", "open_ - float64\n", "\n", "\n", "---------------------------------------------------\n", "\n" ] } ], "source": [ "print \"Here are the list of available fields per dataset:\"\n", "print \"---------------------------------------------------\\n\"\n", "\n", "def _print_fields(dataset):\n", " print \"Dataset: %s\\n\" % dataset.__name__\n", " print \"Fields:\"\n", " for field in list(dataset.columns):\n", " print \"%s - %s\" % (field.name, field.dtype)\n", " print \"\\n\"\n", "\n", "for data in (yahoo_index_vix,):\n", " _print_fields(data)\n", "\n", "\n", "print \"---------------------------------------------------\\n\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we know what fields we have access to, let's see what this data looks like when we run it through Pipeline.\n", "\n", "\n", "This is constructed the same way as you would in the backtester. For more information on using Pipeline in Research view this thread:\n", "https://www.quantopian.com/posts/pipeline-in-research-build-test-and-visualize-your-factors-and-filters" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Let's see what this data looks like when we run it through Pipeline\n", "# This is constructed the same way as you would in the backtester. For more information\n", "# on using Pipeline in Research view this thread:\n", "# https://www.quantopian.com/posts/pipeline-in-research-build-test-and-visualize-your-factors-and-filters\n", "pipe = Pipeline()\n", " \n", "pipe.add(yahoo_index_vix.open_.latest, 'open')\n", "pipe.add(yahoo_index_vix.close.latest, 'close')\n", "pipe.add(yahoo_index_vix.adjusted_close.latest, 'adjusted_close')\n", "pipe.add(yahoo_index_vix.high.latest, 'high')\n", "pipe.add(yahoo_index_vix.low.latest, 'low')\n", "pipe.add(yahoo_index_vix.volume.latest, 'volume')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nOdM/LZPjUpP+mLNy9Y/jMm/0X036ozz0e9Mr3DeHWmPiDDz2lxl47C9L0nZr7I/alLKP5tWc+rgl\nx90YzZlPbSV3i6A1Hivz7ty1tfmL8miN48H8MHctYX5oK31ZBK3xWJkH5q5UfdRW+qetaY3HxTie\nu5Y0jpsilrZyXMqlNfafcT53LeF1e0O0lX5vSQr3zaHWaFpVVblDaPFaax81d9wzKuwmU5iz1jqn\nNCd9RFHJ/bnTR7R1cnzu9BEtnRydu5bURy0pFloPeTN3+gjFoVbgoTP+UO4QWrzW2ketNW5o64zN\nudNHFJXcnzt9RFsnx+dOH9HSydG5a0l91JJiofWQN3OnjyjcZeUAAAAAAACKrEV+c2jmm0vNcOWx\nR2aPzTZJknzrh4fknY8/SfLN5bHuff6F/P3f/8l/XxqRLydPzqq9l87R39+5+jm1eW/06Bxx3oW5\nf9jwdJmvc7Zea82cdchBWXTBBWus99FnY/Obq67N7U89nY/HjUvPhRbK9uutm1/vs2cW79690es2\ntC9mvhTYzMvfvPSCeu3HiHffy3H/uiwPvzgi7du1yxb91shZhxxU57Y/Hjsuv7nq2vznyafy8bhx\nWazbQvnOgHVyyr57ZYmFu88Wx8wx/mnwTfnlZVfWGntD9jlJDv7OtvnHYT9Jkrw/ekyWP+DgGu3W\n1kdNGVdDcqshfVyfY1uf5eMmfpHfXn1t/v34Uxn56afpOl/n9OnVKxuuunJ223TjDOiz0mzPn/Hz\ngdtunQsOP7R6eX2OeWP2tSEmTa7MOUOG5vqHH8nrH3yYqdOmZdnFe2bzNfrmB1ttmfVX6TPXNuo7\nDuvbdw3tm9bIvFt7X5h3yzPv1veYzrzNF/5xdo6+6JI89vKrmVZVlc1WXy1/OuiArLLM0jXaru9Y\nbszxbqvMD7X3hfmhPPOD1wnlYR6ovS/MA+WZB+pSn2M9axy3nHxivrveukmS8269PYf/88K88I+z\ns2rvZZIkV93/YA7489lNEl+5Gce194VxXN5xXJ98mdMN6Gfu/3YVFdlglZXz54MPTL9Dj5hjPPXN\n09bGOK+9L4zz5h3nDY0jmffjPy+fsb5z+UX5+T8vyt3PPp9OHTvkuwPWzV8O+VHGTpiQn59/cR4c\n/mK6dO6c7dbpnz//+Ifp3rVrjW239vcBLfKbQ5W33pQ7f39KkmTJRRbOF7cMrjEpnbjHbtl+wDo1\nDuq3f3VK2rdrl5cvPDcjLjg3Pbp1y75/Oit3Pft8ndv51aVX5g8H7Je3L7sou26yca5+4KEce/Fl\nNdb56LOx2egXx+a2J5/OJUcekVHXXJ5/HXl4hj7+ZDY+8riMGju2Ues2pC/mtnzm/dh5ow1r3Y83\nR36UzY85MS+8+XZuPumEvH3ZhTlip0H56d/+UWv7o8aOzUZHHpshjz2RC3/+s3x87RW56rgjc89z\nz2fTo0/I2IkTq+P45//9NEnSuWPHPPXa60mSHTdcPz27L5T7Tju1wS+gK2+9KbtsvGGS5Njddqme\nQJJk6R6L5jf77pX9t9qiut3a2m/KuOqbWw3t4/oc2/os/+Ffzsk5Q27N4Tt+N6OuuSzvXfGvXPzz\nn+Wtj0ZloyOPq/X5lbfelMpbb6pRGKrvMW/MvtbX+C+/zMDjTsxp19+YQ7/7nbx28Xn56JrL8o/D\nDsnDL47IJkcfP9c2GjIO69t3Demb1sq8W7Mv5rbcvFu6ebchx3Tm9g7523n55Z67590rLs5NJx2f\n5/73ZjY75sS8M+rj6nUaMpYberzbMvNDzb6Y23LzQ+nmB68Tysc8ULMv5rbcPFDa92e1qe+xrrz1\npnxvg/WSJH8++IfVhaEkufze+5MkV97/YPWyfbbYPJcedcRs+d0aGcc1+2Juy43j5hnH9cmXutqc\ntf/fveLi/Gqv3fOTv5831+fWZ7utkXFesy/mttw4L804b2gcTXH85+Uz1hMvuSK/3W/vvH3ZRdlj\n801zxX0PZP8z/5KjL7okfzxwv7x16YXZaaMNcvm99+f4f11eo5228D6gRRaHkmTLNful3/LLZeSn\nn+Xahx6u8djfhv4nh+84aLbn/PngA9OjW7f0XqxH/nrIj5Ikf7zuhjq3cdC3t8kqyyydhbp2ybG7\nTa8Y3jPL5HfKldfkvdGj84cD98sWa66RBeefP1uu2S+/P2C/vPPxJ/nNVdc2at2mNPN+HPP9nWrd\nj99efV3GTpxYI7ZNV18tP95+u1rb/M1V1+adjz/JqT/YJ9v0XysLzDdfNum7Ws48+Id5e9So/PnG\nW77Z/nbb5JDtv52vKiuz2+9Pz8vvvpcdf/OH/PHA/bPp6qs1ap+O2XXnJMn5t92Rz7/4onr5l5Mn\n5x+33p6jv97POWnKuOqTWw3t46bywAsvJkmWWnTRdJ1vvnTq0CF9lu6Vs3968FyeWVNDjnmp9vW3\n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\nOtlk20Hp03etem/ziYfuSpJ8a7V+TdIfffquWd3urH3QVN5577OM/Ojz/PX8h3PG3x/Iisstmh/s\nuW72+v5a+dbyPUqyzYaQEzU1R060BvKiJnkhJ2YlJ+TErEqZE19NnpLb73kll1/3TP5z18upnDIt\nFUmmVVWlcsrUJt3WvJIXNZUyL4a9+GGuuen5XHrNUxn1yYR07NgxU6dOzbvvvtuk2wGgdVIcAoAy\nmTp1+hv1x556J088824OOfLGrL/OMtlz57Wyz65rp8eiXcsS10mH7p0NBm6XC255OF9N+jLn/PaY\nnHHiYVmg20JZe8PNq9cb+sx7c7wm+9hPR+eo/Qdl8leTcuTvzs6q/dbJ/159KWeddESef/LhnH3V\nHem6YLckyV9+/fM88cBdOfjoU7LtTnulQ4eOGfXhu7nsb6flqP0HVbc/t20myf9eeSlJ0nPJpZuk\nPxb7up03v263VNq1r0hl5fSc+N/bY3Lqn+/JyafdmW+t0CP77No/++62dtkKRXKipubKiZZOXtQk\nL+TErOSEnJhVU+fE5MlTM+T2l3LptU/nngdfy5Qp01JRkUydWpUkqWqSrTQ9eVFTU+fFsy98kMuu\nfTqDh7yQkaM+T8eO7atfY1ZWVqZz585Nsh0AWj+XlQOAMquqqsrUqdNSVVWVp559L0edfGuW7Pvb\nfGePi3L5dc9k4heTmz2mg486Jd26L5LFluiVQ479bZLk+ovPaVAbV/3zz/l45PvZ/2fHp/8Gm2W+\nLl3Tt/96+dFRv86oD97LTZf/s3rd4U89miRZdLElMt/8XdKhY8f0WnbF/OS4Uxsc+5hPPkqSdF2g\nW4OfW5sFui00vd2PP2qS9upr8tdv4t94c3R+f9a9WWnA6Vlz87Ny9vkP56OPxzdrLImcmFm5cqIl\nkhffkBfTyYlvyInp5MQ3miInpkyZlqF3jsh+P70mi3zr5Ox+0BW5+/5XM3ny1EybVlVdGGrp5MU3\nmiIv3nhrdE75011ZacDpWWfLv+a8Sx7LyFGfJ0l1YQgAZuWbQxTSBRdcUO4QgAL78ssv63xs6rSq\nzPg7z7vufy133PtqDjv25qy39jJ1PqepzfpXkkv1Xj5J8u6brzeonScfujtJss7GW9RYvvra61c/\nvt9hxyZJNtpq+9zz7+tz2nE/SY/Fl0r/DTfL2htslg0GfrvOv9qsy1eTpvdvh44dG/S8unTs0LFG\nu03pgssfT5K88vrHc1xvxr0Cho8YmSNPGpqjf31rtt68T5PHUxc5UVMpc6I1kRc1yQs5MSs5ISdm\nNS85UTn5q7z47kdZrv8f8sHIcenQvl2mTJ3++qCyld1TSF7U1Oi8qJr+nmHTHf6RR594O6lIpk2b\nvmxOBaGqqqo89dRTPheBFuyZZ54pdwgUhOIQhdKrV6+0b98+hxxySLlDAQqsYz3fSM54czdh4le5\n7+E3ShlStYnjP8+Nl52Xx+6/I6M/HplJX0ysfmz8uM8a1Na4T8ckSX6w3Tq1Pj7y/Xeqfz785DMz\nYNOt8+Adt+SFpx7J3bdcm7tvuTaLLdErvzrr4qywct96b7fzfPNn0hcTM6WyMh07dWpQzLWpnFJZ\n3W5T6bXkQmnfvl0OOfLG6mUdOsz9C91VVdPf0FdVVeWOe1+ZvmxaaT8QkhOzK0VOtDbyYnZFzws5\nMTs5ISdmNS858cmokXnztW/+mGRGYag+ei2xUIO3VyryYnaNzYsJE6Z/M+i/j7+VioqkqgEvCYcM\nGZIhQ4Y0aHtA8+rdu3e5Q6AAFIcolI033jhTpkwpdxhAwS299NL54IMP5rhOhw7tMmXKtPRYpGv2\n3rV/lly8W0743W0lj+20436S5594OHv9+BcZtNcPs2C37klq3py3vrov2iNjPv4o19z/YvXlMupS\nUVGRjbb8Tjba8jupmjYtI4Y9nesvPifPPvZgzv7NUTn76jvqvd1FF1siH7zzv0yc8Hm6LzLv9+iZ\n8Pm46e32XGKe25ph4/WXy5RRp1f//uNf3JBLrnlqjs9p375dpk2rSudO7bPr9/pl953WzPf2uSQV\n7Up7lWA5MbtS5ERrIy9mV/S8kBOzkxNyYlbzkhNLLbNcVu09JZtuuEIuuuKJvPHWmHTq2L76MrRz\nctLRWzd4e6UiL2bX2LxYYMHp+3z9xfvl0mueyp33v5ZUVaUq3/yRWW0qKipy6qmn5pe//GWjYwag\nbXDPIQBoITp0aJeKiqRrl045cO8BefjWQ/PRyyfn7D/smBWWXaRk2535zfjLw55Okuy834+r36xX\nTq77nkcz/sJxypQp+WrSl9l7izWqH9tg4HZJkuHPPDbb81567skc/YPv1Yhh9KiRSZKKdu3St/96\nOfa085Ik771V8xIjc9pmkqy4yvS//Px45Pt1xt0Qn3zdzgorr9Yk7TVERUVF2rerSPv27bLtFn1y\n3UX7Zswbv80V5+2VQduVLh45MWflzIlykhdzVsS8kBNzJifkxKzmNSe6dOmU4w7fIq8/dXxe/O/R\nOeEXW2bppaYXCDp1bN8kMZaCvJizec2L3Xbsl/9ce1A+fuXX+dff9shmG66Qior6fSsdgGJzpgCA\nMmrffvqH/507dcjuO62ZIVcemNGv/yYXnLVrNtlg+bRv37yn6r7910uSDP7XuZk4/vOM/3xsLj/3\ntDrXX26lVZMkr7/0XJ586J6ssua61Y/t85OjslTv5fPP036ZR+75T8aP+yxffjEhTz18T/7y65/n\ngMNPrNHW3353TN7932upnDw5Yz8dnRsv/UeSZO0NN6/3NpNkvc22SZK8MeKFxnTBbF57aViSZP3N\ntm2S9upjRqFwsw2Xz7/+tkc+fuXXue3ag7Lbjv3SZf6mub59fcmJ2ZUjJ1oaeTG7oueFnJidnJAT\ns2rKnOi7yuI55dht887zv8zDtx6aQw7YMAt3n17UaMlFAXkxu6bKi0UW7pL991gn9w/5Sd55/pc5\n8zc7ZED/6YW5ji24eAhA+VRUVVXV/V1TAKDJLbPMMnn//fdTUVGR9dfpnf12Xzu77bhmFlu0a53P\nuf6WYdnjR1c26Ia5Dbk8x4x2x306Ohf/9dQ8+9iDmTh+XHr1XiF7HnxETj/+0NnWTZLXR7yQv/3u\nmHz47ltZbqVV84vf/CW9ll2h+vEJn4/LdRefncfuvyNjRo3MAt26p8/q/bP7D3+WlddYu3q9l4c9\nlTtvuibDn30sn378UTrPN396LrVMNtlmh+y4949qXIN9btucUlmZg3fcOD2XXDqnX3xTvfulrr49\n+oAdM+bjkblwyCMNvvHwoHWWyXUX7Zvdd1pzjuv9+Bc35MIrnkiSLN97key3xzrZa5e1sspKPef4\nvIoex+S40/6RTbYZVO946ktOlCYnTj/up1my67u5/uL9GvS8+tr9oCsycmLvHHf6efV+jrwob178\n9+6hOf34Q1M1+ox6P6chnD9aX07M2FZ9zh+N5fxRv222pJyoz/njy0mVufXOl3PVDc/mtnteSeXX\nl5x7f/iv0mvJOV92zfmj9eVFfc8fzwx7P1ff+FyuHPxCPv5kbJK4rBwASTJYcQgAmtnpp5+eioqK\n7Lnnnund9fp6PacxH+4V2VP/vTe/+/mBOeYP52bTbev3wVdtHrj95px10hE56a+XZMAmWzX4+fX9\n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\nAAAAANAsHv9/Sncg66PocaMAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The show_graph() method of pipeline objects produces a graph to show how it is being calculated.\n", "pipe.show_graph(format='png')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
adjusted_closeclosehighlowopenvolume
2013-11-01 00:00:00+00:00Equity(2 [AA])13.7513.7514.0213.2813.830
Equity(21 [AAME])13.7513.7514.0213.2813.830
Equity(24 [AAPL])13.7513.7514.0213.2813.830
Equity(25 [AA_PR])13.7513.7514.0213.2813.830
Equity(31 [ABAX])13.7513.7514.0213.2813.830
Equity(39 [DDC])13.7513.7514.0213.2813.830
Equity(41 [ARCB])13.7513.7514.0213.2813.830
Equity(52 [ABM])13.7513.7514.0213.2813.830
Equity(53 [ABMD])13.7513.7514.0213.2813.830
Equity(62 [ABT])13.7513.7514.0213.2813.830
Equity(64 [ABX])13.7513.7514.0213.2813.830
Equity(66 [AB])13.7513.7514.0213.2813.830
Equity(67 [ADSK])13.7513.7514.0213.2813.830
Equity(69 [ACAT])13.7513.7514.0213.2813.830
Equity(70 [VBF])13.7513.7514.0213.2813.830
Equity(76 [TAP])13.7513.7514.0213.2813.830
Equity(84 [ACET])13.7513.7514.0213.2813.830
Equity(86 [ACG])13.7513.7514.0213.2813.830
Equity(88 [ACI])13.7513.7514.0213.2813.830
Equity(99 [ACO])13.7513.7514.0213.2813.830
Equity(100 [IEP])13.7513.7514.0213.2813.830
Equity(106 [ACU])13.7513.7514.0213.2813.830
Equity(110 [ACXM])13.7513.7514.0213.2813.830
Equity(112 [ACY])13.7513.7514.0213.2813.830
Equity(114 [ADBE])13.7513.7514.0213.2813.830
Equity(117 [AEY])13.7513.7514.0213.2813.830
Equity(122 [ADI])13.7513.7514.0213.2813.830
Equity(128 [ADM])13.7513.7514.0213.2813.830
Equity(134 [SXCL])13.7513.7514.0213.2813.830
Equity(149 [ADX])13.7513.7514.0213.2813.830
........................
2013-11-25 00:00:00+00:00Equity(45864 [CDX])12.2612.2612.9112.2412.690
Equity(45865 [XNCR])12.2612.2612.9112.2412.690
Equity(45866 [ZU])12.2612.2612.9112.2412.690
Equity(45867 [EROS])12.2612.2612.9112.2412.690
Equity(45873 [IR_WI])12.2612.2612.9112.2412.690
Equity(45874 [ALLE])12.2612.2612.9112.2412.690
Equity(45875 [HFIN])12.2612.2612.9112.2412.690
Equity(45880 [CACQ])12.2612.2612.9112.2412.690
Equity(45882 [TKF_WD])12.2612.2612.9112.2412.690
Equity(45883 [IIF_WD])12.2612.2612.9112.2412.690
Equity(45885 [EGF_WD])12.2612.2612.9112.2412.690
Equity(45891 [OXFD])12.2612.2612.9112.2412.690
Equity(45892 [TLOG])12.2612.2612.9112.2412.690
Equity(45893 [VTL])12.2612.2612.9112.2412.690
Equity(45894 [RTGN])12.2612.2612.9112.2412.690
Equity(45895 [EMSH])12.2612.2612.9112.2412.690
Equity(45896 [AMZG])12.2612.2612.9112.2412.690
Equity(45902 [WBAI])12.2612.2612.9112.2412.690
Equity(45903 [GOMO])12.2612.2612.9112.2412.690
Equity(45904 [IPWR])12.2612.2612.9112.2412.690
Equity(45905 [GFIS])12.2612.2612.9112.2412.690
Equity(45906 [VNCE])12.2612.2612.9112.2412.690
Equity(45907 [RITT_W])12.2612.2612.9112.2412.690
Equity(45914 [EVGN])12.2612.2612.9112.2412.690
Equity(45915 [NVGS])12.2612.2612.9112.2412.690
Equity(48504 [ERUS])12.2612.2612.9112.2412.690
Equity(49010 [TBRA])12.2612.2612.9112.2412.690
Equity(49131 [OESX])12.2612.2612.9112.2412.690
Equity(49259 [ITUS])12.2612.2612.9112.2412.690
Equity(49523 [TLGT])12.2612.2612.9112.2412.690
\n", "

134806 rows × 6 columns

\n", "
" ], "text/plain": [ " adjusted_close close \\\n", "2013-11-01 00:00:00+00:00 Equity(2 [AA]) 13.75 13.75 \n", " Equity(21 [AAME]) 13.75 13.75 \n", " Equity(24 [AAPL]) 13.75 13.75 \n", " Equity(25 [AA_PR]) 13.75 13.75 \n", " Equity(31 [ABAX]) 13.75 13.75 \n", " Equity(39 [DDC]) 13.75 13.75 \n", " Equity(41 [ARCB]) 13.75 13.75 \n", " Equity(52 [ABM]) 13.75 13.75 \n", " Equity(53 [ABMD]) 13.75 13.75 \n", " Equity(62 [ABT]) 13.75 13.75 \n", " Equity(64 [ABX]) 13.75 13.75 \n", " Equity(66 [AB]) 13.75 13.75 \n", " Equity(67 [ADSK]) 13.75 13.75 \n", " Equity(69 [ACAT]) 13.75 13.75 \n", " Equity(70 [VBF]) 13.75 13.75 \n", " Equity(76 [TAP]) 13.75 13.75 \n", " Equity(84 [ACET]) 13.75 13.75 \n", " Equity(86 [ACG]) 13.75 13.75 \n", " Equity(88 [ACI]) 13.75 13.75 \n", " Equity(99 [ACO]) 13.75 13.75 \n", " Equity(100 [IEP]) 13.75 13.75 \n", " Equity(106 [ACU]) 13.75 13.75 \n", " Equity(110 [ACXM]) 13.75 13.75 \n", " Equity(112 [ACY]) 13.75 13.75 \n", " Equity(114 [ADBE]) 13.75 13.75 \n", " Equity(117 [AEY]) 13.75 13.75 \n", " Equity(122 [ADI]) 13.75 13.75 \n", " Equity(128 [ADM]) 13.75 13.75 \n", " Equity(134 [SXCL]) 13.75 13.75 \n", " Equity(149 [ADX]) 13.75 13.75 \n", "... ... ... \n", "2013-11-25 00:00:00+00:00 Equity(45864 [CDX]) 12.26 12.26 \n", " Equity(45865 [XNCR]) 12.26 12.26 \n", " Equity(45866 [ZU]) 12.26 12.26 \n", " Equity(45867 [EROS]) 12.26 12.26 \n", " Equity(45873 [IR_WI]) 12.26 12.26 \n", " Equity(45874 [ALLE]) 12.26 12.26 \n", " Equity(45875 [HFIN]) 12.26 12.26 \n", " Equity(45880 [CACQ]) 12.26 12.26 \n", " Equity(45882 [TKF_WD]) 12.26 12.26 \n", " Equity(45883 [IIF_WD]) 12.26 12.26 \n", " Equity(45885 [EGF_WD]) 12.26 12.26 \n", " Equity(45891 [OXFD]) 12.26 12.26 \n", " Equity(45892 [TLOG]) 12.26 12.26 \n", " Equity(45893 [VTL]) 12.26 12.26 \n", " Equity(45894 [RTGN]) 12.26 12.26 \n", " Equity(45895 [EMSH]) 12.26 12.26 \n", " Equity(45896 [AMZG]) 12.26 12.26 \n", " Equity(45902 [WBAI]) 12.26 12.26 \n", " Equity(45903 [GOMO]) 12.26 12.26 \n", " Equity(45904 [IPWR]) 12.26 12.26 \n", " Equity(45905 [GFIS]) 12.26 12.26 \n", " Equity(45906 [VNCE]) 12.26 12.26 \n", " Equity(45907 [RITT_W]) 12.26 12.26 \n", " Equity(45914 [EVGN]) 12.26 12.26 \n", " Equity(45915 [NVGS]) 12.26 12.26 \n", " Equity(48504 [ERUS]) 12.26 12.26 \n", " Equity(49010 [TBRA]) 12.26 12.26 \n", " Equity(49131 [OESX]) 12.26 12.26 \n", " Equity(49259 [ITUS]) 12.26 12.26 \n", " Equity(49523 [TLGT]) 12.26 12.26 \n", "\n", " high low open volume \n", "2013-11-01 00:00:00+00:00 Equity(2 [AA]) 14.02 13.28 13.83 0 \n", " Equity(21 [AAME]) 14.02 13.28 13.83 0 \n", " Equity(24 [AAPL]) 14.02 13.28 13.83 0 \n", " Equity(25 [AA_PR]) 14.02 13.28 13.83 0 \n", " Equity(31 [ABAX]) 14.02 13.28 13.83 0 \n", " Equity(39 [DDC]) 14.02 13.28 13.83 0 \n", " Equity(41 [ARCB]) 14.02 13.28 13.83 0 \n", " Equity(52 [ABM]) 14.02 13.28 13.83 0 \n", " Equity(53 [ABMD]) 14.02 13.28 13.83 0 \n", " Equity(62 [ABT]) 14.02 13.28 13.83 0 \n", " Equity(64 [ABX]) 14.02 13.28 13.83 0 \n", " Equity(66 [AB]) 14.02 13.28 13.83 0 \n", " Equity(67 [ADSK]) 14.02 13.28 13.83 0 \n", " Equity(69 [ACAT]) 14.02 13.28 13.83 0 \n", " Equity(70 [VBF]) 14.02 13.28 13.83 0 \n", " Equity(76 [TAP]) 14.02 13.28 13.83 0 \n", " Equity(84 [ACET]) 14.02 13.28 13.83 0 \n", " Equity(86 [ACG]) 14.02 13.28 13.83 0 \n", " Equity(88 [ACI]) 14.02 13.28 13.83 0 \n", " Equity(99 [ACO]) 14.02 13.28 13.83 0 \n", " Equity(100 [IEP]) 14.02 13.28 13.83 0 \n", " Equity(106 [ACU]) 14.02 13.28 13.83 0 \n", " Equity(110 [ACXM]) 14.02 13.28 13.83 0 \n", " Equity(112 [ACY]) 14.02 13.28 13.83 0 \n", " Equity(114 [ADBE]) 14.02 13.28 13.83 0 \n", " Equity(117 [AEY]) 14.02 13.28 13.83 0 \n", " Equity(122 [ADI]) 14.02 13.28 13.83 0 \n", " Equity(128 [ADM]) 14.02 13.28 13.83 0 \n", " Equity(134 [SXCL]) 14.02 13.28 13.83 0 \n", " Equity(149 [ADX]) 14.02 13.28 13.83 0 \n", "... ... ... ... ... \n", "2013-11-25 00:00:00+00:00 Equity(45864 [CDX]) 12.91 12.24 12.69 0 \n", " Equity(45865 [XNCR]) 12.91 12.24 12.69 0 \n", " Equity(45866 [ZU]) 12.91 12.24 12.69 0 \n", " Equity(45867 [EROS]) 12.91 12.24 12.69 0 \n", " Equity(45873 [IR_WI]) 12.91 12.24 12.69 0 \n", " Equity(45874 [ALLE]) 12.91 12.24 12.69 0 \n", " Equity(45875 [HFIN]) 12.91 12.24 12.69 0 \n", " Equity(45880 [CACQ]) 12.91 12.24 12.69 0 \n", " Equity(45882 [TKF_WD]) 12.91 12.24 12.69 0 \n", " Equity(45883 [IIF_WD]) 12.91 12.24 12.69 0 \n", " Equity(45885 [EGF_WD]) 12.91 12.24 12.69 0 \n", " Equity(45891 [OXFD]) 12.91 12.24 12.69 0 \n", " Equity(45892 [TLOG]) 12.91 12.24 12.69 0 \n", " Equity(45893 [VTL]) 12.91 12.24 12.69 0 \n", " Equity(45894 [RTGN]) 12.91 12.24 12.69 0 \n", " Equity(45895 [EMSH]) 12.91 12.24 12.69 0 \n", " Equity(45896 [AMZG]) 12.91 12.24 12.69 0 \n", " Equity(45902 [WBAI]) 12.91 12.24 12.69 0 \n", " Equity(45903 [GOMO]) 12.91 12.24 12.69 0 \n", " Equity(45904 [IPWR]) 12.91 12.24 12.69 0 \n", " Equity(45905 [GFIS]) 12.91 12.24 12.69 0 \n", " Equity(45906 [VNCE]) 12.91 12.24 12.69 0 \n", " Equity(45907 [RITT_W]) 12.91 12.24 12.69 0 \n", " Equity(45914 [EVGN]) 12.91 12.24 12.69 0 \n", " Equity(45915 [NVGS]) 12.91 12.24 12.69 0 \n", " Equity(48504 [ERUS]) 12.91 12.24 12.69 0 \n", " Equity(49010 [TBRA]) 12.91 12.24 12.69 0 \n", " Equity(49131 [OESX]) 12.91 12.24 12.69 0 \n", " Equity(49259 [ITUS]) 12.91 12.24 12.69 0 \n", " Equity(49523 [TLGT]) 12.91 12.24 12.69 0 \n", "\n", "[134806 rows x 6 columns]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# run_pipeline will show the output of your pipeline\n", "pipe_output = run_pipeline(pipe, start_date='2013-11-01', end_date='2013-11-25')\n", "pipe_output" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Taking what we've seen from above, let's see how we'd move that into the backtester." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# This section is only importable in the backtester\n", "from quantopian.algorithm import attach_pipeline, pipeline_output\n", "\n", "# General pipeline imports\n", "from quantopian.pipeline import Pipeline\n", "from quantopian.pipeline.factors import AverageDollarVolume\n", "\n", "# Import the datasets available\n", "# For use in your algorithms\n", "# Using the full dataset in your pipeline algo\n", "from quantopian.pipeline.data.quandl import yahoo_index_vix\n", "\n", "def make_pipeline():\n", " # Create our pipeline\n", " pipe = Pipeline()\n", "\n", " # Add pipeline factors\n", " pipe.add(yahoo_index_vix.open_.latest, 'open')\n", " pipe.add(yahoo_index_vix.close.latest, 'close')\n", " pipe.add(yahoo_index_vix.adjusted_close.latest, 'adjusted_close')\n", " pipe.add(yahoo_index_vix.high.latest, 'high')\n", " pipe.add(yahoo_index_vix.low.latest, 'low')\n", " pipe.add(yahoo_index_vix.volume.latest, 'volume')\n", "\n", " return pipe\n", "\n", "def initialize(context):\n", " attach_pipeline(make_pipeline(), \"pipeline\")\n", " \n", "def before_trading_start(context, data):\n", " results = pipeline_output('pipeline')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now you can take that and begin to use it as a building block for your algorithms, for more examples on how to do that you can visit our data pipeline factor library" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "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.11" } }, "nbformat": 4, "nbformat_minor": 0 }