Skip to content

Instantly share code, notes, and snippets.

@wrighter
Created November 15, 2019 14:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wrighter/c562170dd5a55ed50f29be1eb8b7fb13 to your computer and use it in GitHub Desktop.
Save wrighter/c562170dd5a55ed50f29be1eb8b7fb13 to your computer and use it in GitHub Desktop.
Demonstrates some ways to use IEX Cloud to fetch financial data
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To setup an environment for this notebook, install the following packages\n",
"* requests\n",
"* pandas\n",
"* matplotlib\n",
"* iexfinance\n",
"* jupyter"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import os \n",
"import requests\n",
"import pandas as pd\n",
"\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# set your token from the command line that launched this jupyter instance\n",
"# export IEX_TOKEN=<your iex token>\n",
"# if you want to use the sandbox environment, you'll need a second variable\n",
"# export IEX_API_VERSION=iexcloud-sandbox\n",
"# or, you can uncomment this if setting in code\n",
"#os.environ['IEX_TOKEN'] = '<your iex token>'\n",
"#os.environ['IEX_API_VERSION'] = 'iexcloud-sandbox'"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Using https://sandbox.iexapis.com/stable for API requests\n"
]
}
],
"source": [
"if os.environ.get('IEX_API_VERSION') == 'iexcloud-sandbox':\n",
" instance='sandbox'\n",
"else:\n",
" instance='cloud'\n",
"base_url=f'https://{instance}.iexapis.com/stable'\n",
"url=f'{base_url}/stock/aapl/chart?token={os.environ[\"IEX_TOKEN\"]}'\n",
"print(f'Using {base_url} for API requests')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can use the requests library to fetch the data. The JSON results can be read in as a dataframe."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"resp = requests.get(url)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"# if this raises an error, go back and ensure you have your API key set correctly in the environment.\n",
"# -did you properly set the environment variables?\n",
"# -did you mix up your production and sandbox keys?\n",
"# -if you're using a sandbox key, you need to set IEX_API_VERSION to 'iexcloud-sandbox'\n",
"# -does the key work from the command line using curl? (see http://www.wrighters.io/2019/11/14/3-ways-to-get-historical-market-data-from-iex-cloud)\n",
"resp.raise_for_status()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>date</th>\n",
" <th>open</th>\n",
" <th>close</th>\n",
" <th>high</th>\n",
" <th>low</th>\n",
" <th>volume</th>\n",
" <th>uOpen</th>\n",
" <th>uClose</th>\n",
" <th>uHigh</th>\n",
" <th>uLow</th>\n",
" <th>uVolume</th>\n",
" <th>change</th>\n",
" <th>changePercent</th>\n",
" <th>label</th>\n",
" <th>changeOverTime</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>2019-10-15</td>\n",
" <td>240.93</td>\n",
" <td>242.03</td>\n",
" <td>238.59</td>\n",
" <td>237.30</td>\n",
" <td>24120267</td>\n",
" <td>238.81</td>\n",
" <td>240.87</td>\n",
" <td>243.38</td>\n",
" <td>246.10</td>\n",
" <td>23363471</td>\n",
" <td>0.00</td>\n",
" <td>0.0000</td>\n",
" <td>Oct 15</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>2019-10-16</td>\n",
" <td>235.21</td>\n",
" <td>245.78</td>\n",
" <td>237.38</td>\n",
" <td>241.20</td>\n",
" <td>19310861</td>\n",
" <td>244.39</td>\n",
" <td>243.48</td>\n",
" <td>237.98</td>\n",
" <td>244.20</td>\n",
" <td>19828557</td>\n",
" <td>-0.96</td>\n",
" <td>-0.4067</td>\n",
" <td>Oct 16</td>\n",
" <td>-0.004095</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>2019-10-17</td>\n",
" <td>244.36</td>\n",
" <td>244.48</td>\n",
" <td>245.56</td>\n",
" <td>244.95</td>\n",
" <td>17848835</td>\n",
" <td>238.55</td>\n",
" <td>236.73</td>\n",
" <td>245.38</td>\n",
" <td>236.59</td>\n",
" <td>17280001</td>\n",
" <td>0.94</td>\n",
" <td>0.3904</td>\n",
" <td>Oct 17</td>\n",
" <td>-0.000180</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>2019-10-18</td>\n",
" <td>239.42</td>\n",
" <td>246.21</td>\n",
" <td>238.94</td>\n",
" <td>243.06</td>\n",
" <td>24914854</td>\n",
" <td>242.98</td>\n",
" <td>239.66</td>\n",
" <td>245.07</td>\n",
" <td>244.63</td>\n",
" <td>24859905</td>\n",
" <td>1.15</td>\n",
" <td>0.4865</td>\n",
" <td>Oct 18</td>\n",
" <td>0.004709</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>2019-10-21</td>\n",
" <td>242.63</td>\n",
" <td>249.73</td>\n",
" <td>245.92</td>\n",
" <td>245.72</td>\n",
" <td>22595609</td>\n",
" <td>238.30</td>\n",
" <td>244.17</td>\n",
" <td>242.37</td>\n",
" <td>238.94</td>\n",
" <td>22703684</td>\n",
" <td>4.10</td>\n",
" <td>1.7788</td>\n",
" <td>Oct 21</td>\n",
" <td>0.022999</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" date open close high low volume uOpen uClose \\\n",
"0 2019-10-15 240.93 242.03 238.59 237.30 24120267 238.81 240.87 \n",
"1 2019-10-16 235.21 245.78 237.38 241.20 19310861 244.39 243.48 \n",
"2 2019-10-17 244.36 244.48 245.56 244.95 17848835 238.55 236.73 \n",
"3 2019-10-18 239.42 246.21 238.94 243.06 24914854 242.98 239.66 \n",
"4 2019-10-21 242.63 249.73 245.92 245.72 22595609 238.30 244.17 \n",
"\n",
" uHigh uLow uVolume change changePercent label changeOverTime \n",
"0 243.38 246.10 23363471 0.00 0.0000 Oct 15 0.000000 \n",
"1 237.98 244.20 19828557 -0.96 -0.4067 Oct 16 -0.004095 \n",
"2 245.38 236.59 17280001 0.94 0.3904 Oct 17 -0.000180 \n",
"3 245.07 244.63 24859905 1.15 0.4865 Oct 18 0.004709 \n",
"4 242.37 238.94 22703684 4.10 1.7788 Oct 21 0.022999 "
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.DataFrame(resp.json()).head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Or, just use pandas to read the url directly."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>date</th>\n",
" <th>open</th>\n",
" <th>close</th>\n",
" <th>high</th>\n",
" <th>low</th>\n",
" <th>volume</th>\n",
" <th>uOpen</th>\n",
" <th>uClose</th>\n",
" <th>uHigh</th>\n",
" <th>uLow</th>\n",
" <th>uVolume</th>\n",
" <th>change</th>\n",
" <th>changePercent</th>\n",
" <th>label</th>\n",
" <th>changeOverTime</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>2019-10-15</td>\n",
" <td>243.60</td>\n",
" <td>241.03</td>\n",
" <td>248.11</td>\n",
" <td>244.30</td>\n",
" <td>23282468</td>\n",
" <td>242.91</td>\n",
" <td>241.16</td>\n",
" <td>238.95</td>\n",
" <td>237.83</td>\n",
" <td>23956648</td>\n",
" <td>0.00</td>\n",
" <td>0.0000</td>\n",
" <td>Oct 15</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>2019-10-16</td>\n",
" <td>234.41</td>\n",
" <td>238.42</td>\n",
" <td>237.47</td>\n",
" <td>235.00</td>\n",
" <td>19391037</td>\n",
" <td>242.73</td>\n",
" <td>245.65</td>\n",
" <td>236.83</td>\n",
" <td>234.40</td>\n",
" <td>19540042</td>\n",
" <td>-0.97</td>\n",
" <td>-0.4175</td>\n",
" <td>Oct 16</td>\n",
" <td>-0.004160</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>2019-10-17</td>\n",
" <td>243.62</td>\n",
" <td>243.56</td>\n",
" <td>241.81</td>\n",
" <td>233.97</td>\n",
" <td>17279879</td>\n",
" <td>241.34</td>\n",
" <td>238.72</td>\n",
" <td>246.66</td>\n",
" <td>241.74</td>\n",
" <td>17332084</td>\n",
" <td>0.93</td>\n",
" <td>0.3962</td>\n",
" <td>Oct 17</td>\n",
" <td>-0.000170</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>2019-10-18</td>\n",
" <td>244.33</td>\n",
" <td>242.69</td>\n",
" <td>238.81</td>\n",
" <td>244.94</td>\n",
" <td>24449972</td>\n",
" <td>242.80</td>\n",
" <td>246.24</td>\n",
" <td>245.87</td>\n",
" <td>239.39</td>\n",
" <td>24707247</td>\n",
" <td>1.15</td>\n",
" <td>0.4988</td>\n",
" <td>Oct 18</td>\n",
" <td>0.004695</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>2019-10-21</td>\n",
" <td>240.84</td>\n",
" <td>252.28</td>\n",
" <td>246.06</td>\n",
" <td>243.22</td>\n",
" <td>23146220</td>\n",
" <td>242.78</td>\n",
" <td>244.23</td>\n",
" <td>242.89</td>\n",
" <td>242.12</td>\n",
" <td>22648827</td>\n",
" <td>4.20</td>\n",
" <td>1.7454</td>\n",
" <td>Oct 21</td>\n",
" <td>0.022378</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" date open close high low volume uOpen uClose \\\n",
"0 2019-10-15 243.60 241.03 248.11 244.30 23282468 242.91 241.16 \n",
"1 2019-10-16 234.41 238.42 237.47 235.00 19391037 242.73 245.65 \n",
"2 2019-10-17 243.62 243.56 241.81 233.97 17279879 241.34 238.72 \n",
"3 2019-10-18 244.33 242.69 238.81 244.94 24449972 242.80 246.24 \n",
"4 2019-10-21 240.84 252.28 246.06 243.22 23146220 242.78 244.23 \n",
"\n",
" uHigh uLow uVolume change changePercent label changeOverTime \n",
"0 238.95 237.83 23956648 0.00 0.0000 Oct 15 0.000000 \n",
"1 236.83 234.40 19540042 -0.97 -0.4175 Oct 16 -0.004160 \n",
"2 246.66 241.74 17332084 0.93 0.3962 Oct 17 -0.000170 \n",
"3 245.87 239.39 24707247 1.15 0.4988 Oct 18 0.004695 \n",
"4 242.89 242.12 22648827 4.20 1.7454 Oct 21 0.022378 "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.read_json(url).head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you prefer, use CSV format. You can set the date to be the index column as well."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>open</th>\n",
" <th>close</th>\n",
" <th>high</th>\n",
" <th>low</th>\n",
" <th>volume</th>\n",
" <th>uOpen</th>\n",
" <th>uClose</th>\n",
" <th>uHigh</th>\n",
" <th>uLow</th>\n",
" <th>uVolume</th>\n",
" <th>change</th>\n",
" <th>changePercent</th>\n",
" <th>label</th>\n",
" <th>changeOverTime</th>\n",
" </tr>\n",
" <tr>\n",
" <th>date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>2019-10-15</td>\n",
" <td>244.73</td>\n",
" <td>245.86</td>\n",
" <td>247.90</td>\n",
" <td>242.24</td>\n",
" <td>24076123</td>\n",
" <td>246.64</td>\n",
" <td>239.91</td>\n",
" <td>239.44</td>\n",
" <td>243.08</td>\n",
" <td>23686256</td>\n",
" <td>0.00</td>\n",
" <td>0.0000</td>\n",
" <td>Oct 15</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2019-10-16</td>\n",
" <td>241.31</td>\n",
" <td>234.43</td>\n",
" <td>235.55</td>\n",
" <td>244.80</td>\n",
" <td>19524181</td>\n",
" <td>240.86</td>\n",
" <td>234.98</td>\n",
" <td>238.33</td>\n",
" <td>240.60</td>\n",
" <td>20106399</td>\n",
" <td>-0.99</td>\n",
" <td>-0.4122</td>\n",
" <td>Oct 16</td>\n",
" <td>-0.004147</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2019-10-17</td>\n",
" <td>236.23</td>\n",
" <td>239.68</td>\n",
" <td>237.96</td>\n",
" <td>243.95</td>\n",
" <td>17797193</td>\n",
" <td>240.82</td>\n",
" <td>243.51</td>\n",
" <td>236.34</td>\n",
" <td>239.10</td>\n",
" <td>17691507</td>\n",
" <td>0.93</td>\n",
" <td>0.4033</td>\n",
" <td>Oct 17</td>\n",
" <td>-0.000180</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2019-10-18</td>\n",
" <td>237.32</td>\n",
" <td>238.22</td>\n",
" <td>247.64</td>\n",
" <td>236.88</td>\n",
" <td>25390576</td>\n",
" <td>245.47</td>\n",
" <td>242.21</td>\n",
" <td>242.04</td>\n",
" <td>236.44</td>\n",
" <td>25492716</td>\n",
" <td>1.15</td>\n",
" <td>0.4846</td>\n",
" <td>Oct 18</td>\n",
" <td>0.004858</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2019-10-21</td>\n",
" <td>246.16</td>\n",
" <td>241.77</td>\n",
" <td>252.39</td>\n",
" <td>243.76</td>\n",
" <td>22523360</td>\n",
" <td>246.37</td>\n",
" <td>247.22</td>\n",
" <td>241.03</td>\n",
" <td>249.07</td>\n",
" <td>23257651</td>\n",
" <td>4.30</td>\n",
" <td>1.8103</td>\n",
" <td>Oct 21</td>\n",
" <td>0.022936</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" open close high low volume uOpen uClose uHigh \\\n",
"date \n",
"2019-10-15 244.73 245.86 247.90 242.24 24076123 246.64 239.91 239.44 \n",
"2019-10-16 241.31 234.43 235.55 244.80 19524181 240.86 234.98 238.33 \n",
"2019-10-17 236.23 239.68 237.96 243.95 17797193 240.82 243.51 236.34 \n",
"2019-10-18 237.32 238.22 247.64 236.88 25390576 245.47 242.21 242.04 \n",
"2019-10-21 246.16 241.77 252.39 243.76 22523360 246.37 247.22 241.03 \n",
"\n",
" uLow uVolume change changePercent label changeOverTime \n",
"date \n",
"2019-10-15 243.08 23686256 0.00 0.0000 Oct 15 0.000000 \n",
"2019-10-16 240.60 20106399 -0.99 -0.4122 Oct 16 -0.004147 \n",
"2019-10-17 239.10 17691507 0.93 0.4033 Oct 17 -0.000180 \n",
"2019-10-18 236.44 25492716 1.15 0.4846 Oct 18 0.004858 \n",
"2019-10-21 249.07 23257651 4.30 1.8103 Oct 21 0.022936 "
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.read_csv(url + '&format=csv', parse_dates=[0], index_col=0).head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also use one of the higher level APIs written for IEX Cloud. The ```iexfinance``` package mirrors the IEX Cloud documentation and takes care of some of the work for us. Check out the details [here](https://github.com/addisonlynch/iexfinance).\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"268.74"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from iexfinance.stocks import Stock\n",
"aapl = Stock('AAPL')\n",
"aapl.get_price()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"aapldf = pd.DataFrame(aapl.get_historical_prices())"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>date</th>\n",
" <th>open</th>\n",
" <th>close</th>\n",
" <th>high</th>\n",
" <th>low</th>\n",
" <th>volume</th>\n",
" <th>uOpen</th>\n",
" <th>uClose</th>\n",
" <th>uHigh</th>\n",
" <th>uLow</th>\n",
" <th>uVolume</th>\n",
" <th>change</th>\n",
" <th>changePercent</th>\n",
" <th>label</th>\n",
" <th>changeOverTime</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>2019-10-15</td>\n",
" <td>242.59</td>\n",
" <td>241.68</td>\n",
" <td>246.31</td>\n",
" <td>235.39</td>\n",
" <td>23780168</td>\n",
" <td>245.05</td>\n",
" <td>244.57</td>\n",
" <td>242.81</td>\n",
" <td>246.47</td>\n",
" <td>23920530</td>\n",
" <td>0.00</td>\n",
" <td>0.0000</td>\n",
" <td>Oct 15</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>2019-10-16</td>\n",
" <td>237.01</td>\n",
" <td>245.62</td>\n",
" <td>240.68</td>\n",
" <td>239.00</td>\n",
" <td>19499065</td>\n",
" <td>241.36</td>\n",
" <td>241.36</td>\n",
" <td>242.49</td>\n",
" <td>244.60</td>\n",
" <td>19663480</td>\n",
" <td>-0.97</td>\n",
" <td>-0.4143</td>\n",
" <td>Oct 16</td>\n",
" <td>-0.004234</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>2019-10-17</td>\n",
" <td>240.12</td>\n",
" <td>241.20</td>\n",
" <td>244.57</td>\n",
" <td>234.46</td>\n",
" <td>17777641</td>\n",
" <td>244.15</td>\n",
" <td>243.20</td>\n",
" <td>246.43</td>\n",
" <td>245.05</td>\n",
" <td>17658392</td>\n",
" <td>0.93</td>\n",
" <td>0.3897</td>\n",
" <td>Oct 17</td>\n",
" <td>-0.000170</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>2019-10-18</td>\n",
" <td>234.62</td>\n",
" <td>237.29</td>\n",
" <td>248.49</td>\n",
" <td>244.03</td>\n",
" <td>25121005</td>\n",
" <td>243.29</td>\n",
" <td>242.09</td>\n",
" <td>238.19</td>\n",
" <td>235.98</td>\n",
" <td>24574201</td>\n",
" <td>1.19</td>\n",
" <td>0.4878</td>\n",
" <td>Oct 18</td>\n",
" <td>0.004750</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>2019-10-21</td>\n",
" <td>249.22</td>\n",
" <td>248.16</td>\n",
" <td>241.42</td>\n",
" <td>241.57</td>\n",
" <td>22909561</td>\n",
" <td>237.62</td>\n",
" <td>250.68</td>\n",
" <td>241.94</td>\n",
" <td>248.22</td>\n",
" <td>22574025</td>\n",
" <td>4.20</td>\n",
" <td>1.7350</td>\n",
" <td>Oct 21</td>\n",
" <td>0.022696</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" date open close high low volume uOpen uClose \\\n",
"0 2019-10-15 242.59 241.68 246.31 235.39 23780168 245.05 244.57 \n",
"1 2019-10-16 237.01 245.62 240.68 239.00 19499065 241.36 241.36 \n",
"2 2019-10-17 240.12 241.20 244.57 234.46 17777641 244.15 243.20 \n",
"3 2019-10-18 234.62 237.29 248.49 244.03 25121005 243.29 242.09 \n",
"4 2019-10-21 249.22 248.16 241.42 241.57 22909561 237.62 250.68 \n",
"\n",
" uHigh uLow uVolume change changePercent label changeOverTime \n",
"0 242.81 246.47 23920530 0.00 0.0000 Oct 15 0.000000 \n",
"1 242.49 244.60 19663480 -0.97 -0.4143 Oct 16 -0.004234 \n",
"2 246.43 245.05 17658392 0.93 0.3897 Oct 17 -0.000170 \n",
"3 238.19 235.98 24574201 1.19 0.4878 Oct 18 0.004750 \n",
"4 241.94 248.22 22574025 4.20 1.7350 Oct 21 0.022696 "
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"aapldf.head()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": [
"/* Put everything inside the global mpl namespace */\n",
"window.mpl = {};\n",
"\n",
"\n",
"mpl.get_websocket_type = function() {\n",
" if (typeof(WebSocket) !== 'undefined') {\n",
" return WebSocket;\n",
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
" return MozWebSocket;\n",
" } else {\n",
" alert('Your browser does not have WebSocket support. ' +\n",
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
" 'Firefox 4 and 5 are also supported but you ' +\n",
" 'have to enable WebSockets in about:config.');\n",
" };\n",
"}\n",
"\n",
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
" this.id = figure_id;\n",
"\n",
" this.ws = websocket;\n",
"\n",
" this.supports_binary = (this.ws.binaryType != undefined);\n",
"\n",
" if (!this.supports_binary) {\n",
" var warnings = document.getElementById(\"mpl-warnings\");\n",
" if (warnings) {\n",
" warnings.style.display = 'block';\n",
" warnings.textContent = (\n",
" \"This browser does not support binary websocket messages. \" +\n",
" \"Performance may be slow.\");\n",
" }\n",
" }\n",
"\n",
" this.imageObj = new Image();\n",
"\n",
" this.context = undefined;\n",
" this.message = undefined;\n",
" this.canvas = undefined;\n",
" this.rubberband_canvas = undefined;\n",
" this.rubberband_context = undefined;\n",
" this.format_dropdown = undefined;\n",
"\n",
" this.image_mode = 'full';\n",
"\n",
" this.root = $('<div/>');\n",
" this._root_extra_style(this.root)\n",
" this.root.attr('style', 'display: inline-block');\n",
"\n",
" $(parent_element).append(this.root);\n",
"\n",
" this._init_header(this);\n",
" this._init_canvas(this);\n",
" this._init_toolbar(this);\n",
"\n",
" var fig = this;\n",
"\n",
" this.waiting = false;\n",
"\n",
" this.ws.onopen = function () {\n",
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
" fig.send_message(\"send_image_mode\", {});\n",
" if (mpl.ratio != 1) {\n",
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
" }\n",
" fig.send_message(\"refresh\", {});\n",
" }\n",
"\n",
" this.imageObj.onload = function() {\n",
" if (fig.image_mode == 'full') {\n",
" // Full images could contain transparency (where diff images\n",
" // almost always do), so we need to clear the canvas so that\n",
" // there is no ghosting.\n",
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
" }\n",
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
" };\n",
"\n",
" this.imageObj.onunload = function() {\n",
" fig.ws.close();\n",
" }\n",
"\n",
" this.ws.onmessage = this._make_on_message_function(this);\n",
"\n",
" this.ondownload = ondownload;\n",
"}\n",
"\n",
"mpl.figure.prototype._init_header = function() {\n",
" var titlebar = $(\n",
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
" 'ui-helper-clearfix\"/>');\n",
" var titletext = $(\n",
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
" 'text-align: center; padding: 3px;\"/>');\n",
" titlebar.append(titletext)\n",
" this.root.append(titlebar);\n",
" this.header = titletext[0];\n",
"}\n",
"\n",
"\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
"\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._init_canvas = function() {\n",
" var fig = this;\n",
"\n",
" var canvas_div = $('<div/>');\n",
"\n",
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
"\n",
" function canvas_keyboard_event(event) {\n",
" return fig.key_event(event, event['data']);\n",
" }\n",
"\n",
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
" this.canvas_div = canvas_div\n",
" this._canvas_extra_style(canvas_div)\n",
" this.root.append(canvas_div);\n",
"\n",
" var canvas = $('<canvas/>');\n",
" canvas.addClass('mpl-canvas');\n",
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
"\n",
" this.canvas = canvas[0];\n",
" this.context = canvas[0].getContext(\"2d\");\n",
"\n",
" var backingStore = this.context.backingStorePixelRatio ||\n",
"\tthis.context.webkitBackingStorePixelRatio ||\n",
"\tthis.context.mozBackingStorePixelRatio ||\n",
"\tthis.context.msBackingStorePixelRatio ||\n",
"\tthis.context.oBackingStorePixelRatio ||\n",
"\tthis.context.backingStorePixelRatio || 1;\n",
"\n",
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
"\n",
" var rubberband = $('<canvas/>');\n",
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
"\n",
" var pass_mouse_events = true;\n",
"\n",
" canvas_div.resizable({\n",
" start: function(event, ui) {\n",
" pass_mouse_events = false;\n",
" },\n",
" resize: function(event, ui) {\n",
" fig.request_resize(ui.size.width, ui.size.height);\n",
" },\n",
" stop: function(event, ui) {\n",
" pass_mouse_events = true;\n",
" fig.request_resize(ui.size.width, ui.size.height);\n",
" },\n",
" });\n",
"\n",
" function mouse_event_fn(event) {\n",
" if (pass_mouse_events)\n",
" return fig.mouse_event(event, event['data']);\n",
" }\n",
"\n",
" rubberband.mousedown('button_press', mouse_event_fn);\n",
" rubberband.mouseup('button_release', mouse_event_fn);\n",
" // Throttle sequential mouse events to 1 every 20ms.\n",
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
"\n",
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
"\n",
" canvas_div.on(\"wheel\", function (event) {\n",
" event = event.originalEvent;\n",
" event['data'] = 'scroll'\n",
" if (event.deltaY < 0) {\n",
" event.step = 1;\n",
" } else {\n",
" event.step = -1;\n",
" }\n",
" mouse_event_fn(event);\n",
" });\n",
"\n",
" canvas_div.append(canvas);\n",
" canvas_div.append(rubberband);\n",
"\n",
" this.rubberband = rubberband;\n",
" this.rubberband_canvas = rubberband[0];\n",
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
" this.rubberband_context.strokeStyle = \"#000000\";\n",
"\n",
" this._resize_canvas = function(width, height) {\n",
" // Keep the size of the canvas, canvas container, and rubber band\n",
" // canvas in synch.\n",
" canvas_div.css('width', width)\n",
" canvas_div.css('height', height)\n",
"\n",
" canvas.attr('width', width * mpl.ratio);\n",
" canvas.attr('height', height * mpl.ratio);\n",
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
"\n",
" rubberband.attr('width', width);\n",
" rubberband.attr('height', height);\n",
" }\n",
"\n",
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
" // upon first draw.\n",
" this._resize_canvas(600, 600);\n",
"\n",
" // Disable right mouse context menu.\n",
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
" return false;\n",
" });\n",
"\n",
" function set_focus () {\n",
" canvas.focus();\n",
" canvas_div.focus();\n",
" }\n",
"\n",
" window.setTimeout(set_focus, 100);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>');\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items) {\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) {\n",
" // put a spacer in here.\n",
" continue;\n",
" }\n",
" var button = $('<button/>');\n",
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
" 'ui-button-icon-only');\n",
" button.attr('role', 'button');\n",
" button.attr('aria-disabled', 'false');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
"\n",
" var icon_img = $('<span/>');\n",
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
" icon_img.addClass(image);\n",
" icon_img.addClass('ui-corner-all');\n",
"\n",
" var tooltip_span = $('<span/>');\n",
" tooltip_span.addClass('ui-button-text');\n",
" tooltip_span.html(tooltip);\n",
"\n",
" button.append(icon_img);\n",
" button.append(tooltip_span);\n",
"\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" var fmt_picker_span = $('<span/>');\n",
"\n",
" var fmt_picker = $('<select/>');\n",
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
" fmt_picker_span.append(fmt_picker);\n",
" nav_element.append(fmt_picker_span);\n",
" this.format_dropdown = fmt_picker[0];\n",
"\n",
" for (var ind in mpl.extensions) {\n",
" var fmt = mpl.extensions[ind];\n",
" var option = $(\n",
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
" fmt_picker.append(option);\n",
" }\n",
"\n",
" // Add hover states to the ui-buttons\n",
" $( \".ui-button\" ).hover(\n",
" function() { $(this).addClass(\"ui-state-hover\");},\n",
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
" );\n",
"\n",
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"}\n",
"\n",
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
" // which will in turn request a refresh of the image.\n",
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
"}\n",
"\n",
"mpl.figure.prototype.send_message = function(type, properties) {\n",
" properties['type'] = type;\n",
" properties['figure_id'] = this.id;\n",
" this.ws.send(JSON.stringify(properties));\n",
"}\n",
"\n",
"mpl.figure.prototype.send_draw_message = function() {\n",
" if (!this.waiting) {\n",
" this.waiting = true;\n",
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
" }\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" var format_dropdown = fig.format_dropdown;\n",
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
" fig.ondownload(fig, format);\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
" var size = msg['size'];\n",
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
" fig._resize_canvas(size[0], size[1]);\n",
" fig.send_message(\"refresh\", {});\n",
" };\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
" var x0 = msg['x0'] / mpl.ratio;\n",
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
" var x1 = msg['x1'] / mpl.ratio;\n",
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
" x0 = Math.floor(x0) + 0.5;\n",
" y0 = Math.floor(y0) + 0.5;\n",
" x1 = Math.floor(x1) + 0.5;\n",
" y1 = Math.floor(y1) + 0.5;\n",
" var min_x = Math.min(x0, x1);\n",
" var min_y = Math.min(y0, y1);\n",
" var width = Math.abs(x1 - x0);\n",
" var height = Math.abs(y1 - y0);\n",
"\n",
" fig.rubberband_context.clearRect(\n",
" 0, 0, fig.canvas.width / mpl.ratio, fig.canvas.height / mpl.ratio);\n",
"\n",
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
" // Updates the figure title.\n",
" fig.header.textContent = msg['label'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
" var cursor = msg['cursor'];\n",
" switch(cursor)\n",
" {\n",
" case 0:\n",
" cursor = 'pointer';\n",
" break;\n",
" case 1:\n",
" cursor = 'default';\n",
" break;\n",
" case 2:\n",
" cursor = 'crosshair';\n",
" break;\n",
" case 3:\n",
" cursor = 'move';\n",
" break;\n",
" }\n",
" fig.rubberband_canvas.style.cursor = cursor;\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
" fig.message.textContent = msg['message'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
" // Request the server to send over a new figure.\n",
" fig.send_draw_message();\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
" fig.image_mode = msg['mode'];\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Called whenever the canvas gets updated.\n",
" this.send_message(\"ack\", {});\n",
"}\n",
"\n",
"// A function to construct a web socket function for onmessage handling.\n",
"// Called in the figure constructor.\n",
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
" return function socket_on_message(evt) {\n",
" if (evt.data instanceof Blob) {\n",
" /* FIXME: We get \"Resource interpreted as Image but\n",
" * transferred with MIME type text/plain:\" errors on\n",
" * Chrome. But how to set the MIME type? It doesn't seem\n",
" * to be part of the websocket stream */\n",
" evt.data.type = \"image/png\";\n",
"\n",
" /* Free the memory for the previous frames */\n",
" if (fig.imageObj.src) {\n",
" (window.URL || window.webkitURL).revokeObjectURL(\n",
" fig.imageObj.src);\n",
" }\n",
"\n",
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
" evt.data);\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
" fig.imageObj.src = evt.data;\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
"\n",
" var msg = JSON.parse(evt.data);\n",
" var msg_type = msg['type'];\n",
"\n",
" // Call the \"handle_{type}\" callback, which takes\n",
" // the figure and JSON message as its only arguments.\n",
" try {\n",
" var callback = fig[\"handle_\" + msg_type];\n",
" } catch (e) {\n",
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
" return;\n",
" }\n",
"\n",
" if (callback) {\n",
" try {\n",
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
" callback(fig, msg);\n",
" } catch (e) {\n",
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
" }\n",
" }\n",
" };\n",
"}\n",
"\n",
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
"mpl.findpos = function(e) {\n",
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
" var targ;\n",
" if (!e)\n",
" e = window.event;\n",
" if (e.target)\n",
" targ = e.target;\n",
" else if (e.srcElement)\n",
" targ = e.srcElement;\n",
" if (targ.nodeType == 3) // defeat Safari bug\n",
" targ = targ.parentNode;\n",
"\n",
" // jQuery normalizes the pageX and pageY\n",
" // pageX,Y are the mouse positions relative to the document\n",
" // offset() returns the position of the element relative to the document\n",
" var x = e.pageX - $(targ).offset().left;\n",
" var y = e.pageY - $(targ).offset().top;\n",
"\n",
" return {\"x\": x, \"y\": y};\n",
"};\n",
"\n",
"/*\n",
" * return a copy of an object with only non-object keys\n",
" * we need this to avoid circular references\n",
" * http://stackoverflow.com/a/24161582/3208463\n",
" */\n",
"function simpleKeys (original) {\n",
" return Object.keys(original).reduce(function (obj, key) {\n",
" if (typeof original[key] !== 'object')\n",
" obj[key] = original[key]\n",
" return obj;\n",
" }, {});\n",
"}\n",
"\n",
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
" var canvas_pos = mpl.findpos(event)\n",
"\n",
" if (name === 'button_press')\n",
" {\n",
" this.canvas.focus();\n",
" this.canvas_div.focus();\n",
" }\n",
"\n",
" var x = canvas_pos.x * mpl.ratio;\n",
" var y = canvas_pos.y * mpl.ratio;\n",
"\n",
" this.send_message(name, {x: x, y: y, button: event.button,\n",
" step: event.step,\n",
" guiEvent: simpleKeys(event)});\n",
"\n",
" /* This prevents the web browser from automatically changing to\n",
" * the text insertion cursor when the button is pressed. We want\n",
" * to control all of the cursor setting manually through the\n",
" * 'cursor' event from matplotlib */\n",
" event.preventDefault();\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" // Handle any extra behaviour associated with a key event\n",
"}\n",
"\n",
"mpl.figure.prototype.key_event = function(event, name) {\n",
"\n",
" // Prevent repeat events\n",
" if (name == 'key_press')\n",
" {\n",
" if (event.which === this._key)\n",
" return;\n",
" else\n",
" this._key = event.which;\n",
" }\n",
" if (name == 'key_release')\n",
" this._key = null;\n",
"\n",
" var value = '';\n",
" if (event.ctrlKey && event.which != 17)\n",
" value += \"ctrl+\";\n",
" if (event.altKey && event.which != 18)\n",
" value += \"alt+\";\n",
" if (event.shiftKey && event.which != 16)\n",
" value += \"shift+\";\n",
"\n",
" value += 'k';\n",
" value += event.which.toString();\n",
"\n",
" this._key_event_extra(event, name);\n",
"\n",
" this.send_message(name, {key: value,\n",
" guiEvent: simpleKeys(event)});\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
" if (name == 'download') {\n",
" this.handle_save(this, null);\n",
" } else {\n",
" this.send_message(\"toolbar_button\", {name: name});\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
" this.message.textContent = tooltip;\n",
"};\n",
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
"\n",
"mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n",
"\n",
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
" // object with the appropriate methods. Currently this is a non binary\n",
" // socket, so there is still some room for performance tuning.\n",
" var ws = {};\n",
"\n",
" ws.close = function() {\n",
" comm.close()\n",
" };\n",
" ws.send = function(m) {\n",
" //console.log('sending', m);\n",
" comm.send(m);\n",
" };\n",
" // Register the callback with on_msg.\n",
" comm.on_msg(function(msg) {\n",
" //console.log('receiving', msg['content']['data'], msg);\n",
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
" ws.onmessage(msg['content']['data'])\n",
" });\n",
" return ws;\n",
"}\n",
"\n",
"mpl.mpl_figure_comm = function(comm, msg) {\n",
" // This is the function which gets called when the mpl process\n",
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
"\n",
" var id = msg.content.data.id;\n",
" // Get hold of the div created by the display call when the Comm\n",
" // socket was opened in Python.\n",
" var element = $(\"#\" + id);\n",
" var ws_proxy = comm_websocket_adapter(comm)\n",
"\n",
" function ondownload(figure, format) {\n",
" window.open(figure.imageObj.src);\n",
" }\n",
"\n",
" var fig = new mpl.figure(id, ws_proxy,\n",
" ondownload,\n",
" element.get(0));\n",
"\n",
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
" // web socket which is closed, not our websocket->open comm proxy.\n",
" ws_proxy.onopen();\n",
"\n",
" fig.parent_element = element.get(0);\n",
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
" if (!fig.cell_info) {\n",
" console.error(\"Failed to find cell for figure\", id, fig);\n",
" return;\n",
" }\n",
"\n",
" var output_index = fig.cell_info[2]\n",
" var cell = fig.cell_info[0];\n",
"\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
" var width = fig.canvas.width/mpl.ratio\n",
" fig.root.unbind('remove')\n",
"\n",
" // Update the output cell to use the data from the current canvas.\n",
" fig.push_to_output();\n",
" var dataURL = fig.canvas.toDataURL();\n",
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
" // the notebook keyboard shortcuts fail.\n",
" IPython.keyboard_manager.enable()\n",
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
" fig.close_ws(fig, msg);\n",
"}\n",
"\n",
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
" fig.send_message('closing', msg);\n",
" // fig.ws.close()\n",
"}\n",
"\n",
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
" // Turn the data on the canvas into data in the output cell.\n",
" var width = this.canvas.width/mpl.ratio\n",
" var dataURL = this.canvas.toDataURL();\n",
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Tell IPython that the notebook contents must change.\n",
" IPython.notebook.set_dirty(true);\n",
" this.send_message(\"ack\", {});\n",
" var fig = this;\n",
" // Wait a second, then push the new image to the DOM so\n",
" // that it is saved nicely (might be nice to debounce this).\n",
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>');\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items){\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) { continue; };\n",
"\n",
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" // Add the status bar.\n",
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"\n",
" // Add the close button to the window.\n",
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
" buttongrp.append(button);\n",
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
" titlebar.prepend(buttongrp);\n",
"}\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(el){\n",
" var fig = this\n",
" el.on(\"remove\", function(){\n",
"\tfig.close_ws(fig, {});\n",
" });\n",
"}\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
" // this is important to make the div 'focusable\n",
" el.attr('tabindex', 0)\n",
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
" // off when our div gets focus\n",
"\n",
" // location in version 3\n",
" if (IPython.notebook.keyboard_manager) {\n",
" IPython.notebook.keyboard_manager.register_events(el);\n",
" }\n",
" else {\n",
" // location in version 2\n",
" IPython.keyboard_manager.register_events(el);\n",
" }\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" var manager = IPython.notebook.keyboard_manager;\n",
" if (!manager)\n",
" manager = IPython.keyboard_manager;\n",
"\n",
" // Check for shift+enter\n",
" if (event.shiftKey && event.which == 13) {\n",
" this.canvas_div.blur();\n",
" event.shiftKey = false;\n",
" // Send a \"J\" for go to next cell\n",
" event.which = 74;\n",
" event.keyCode = 74;\n",
" manager.command_mode();\n",
" manager.handle_keydown(event);\n",
" }\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" fig.ondownload(fig, null);\n",
"}\n",
"\n",
"\n",
"mpl.find_output_cell = function(html_output) {\n",
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
" // IPython event is triggered only after the cells have been serialised, which for\n",
" // our purposes (turning an active figure into a static one), is too late.\n",
" var cells = IPython.notebook.get_cells();\n",
" var ncells = cells.length;\n",
" for (var i=0; i<ncells; i++) {\n",
" var cell = cells[i];\n",
" if (cell.cell_type === 'code'){\n",
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
" var data = cell.output_area.outputs[j];\n",
" if (data.data) {\n",
" // IPython >= 3 moved mimebundle to data attribute of output\n",
" data = data.data;\n",
" }\n",
" if (data['text/html'] == html_output) {\n",
" return [cell, data, j];\n",
" }\n",
" }\n",
" }\n",
" }\n",
"}\n",
"\n",
"// Register the function which deals with the matplotlib target/channel.\n",
"// The kernel may be null if the page has been refreshed.\n",
"if (IPython.notebook.kernel != null) {\n",
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
"}\n"
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAAPACAYAAABq3NR5AAAAAXNSR0IArs4c6QAAQABJREFUeAHs3Qe4XVWdMO5fcm96JY2QBimkAIEgoSRIlTagINUyn1iZj1ERyyDM8HcKMAjO+DGKM4xlFBQRBQERZxSpQhI6A4EEktwkkEZIr6Tnf/bBezj73JJ7c9s55777ecLZa+21917rXVt88mOVDrszRzgIECBAgAABAgQIECBAgAABAgQIEChLgY5l2SqNIkCAAAECBAgQIECAAAECBAgQIEAgKyAA6EMgQIAAAQIECBAgQIAAAQIECBAgUMYCAoBl3LmaRoAAAQIECBAgQIAAAQIECBAgQEAA0DdAgAABAgQIECBAgAABAgQIECBAoIwFBADLuHM1jQABAgQIECBAgAABAgQIECBAgIAAoG+AAAECBAgQIECAAAECBAgQIECAQBkLCACWcedqGgECBAgQIECAAAECBAgQIECAAAEBQN8AAQIECBAgQIAAAQIECBAgQIAAgTIWEAAs487VNAIECBAgQIAAAQIECBAgQIAAAQICgL4BAgQIECBAgAABAgQIECBAgAABAmUsIABYxp2raQQIECBAgAABAgQIECBAgAABAgQEAH0DBAgQIECAAAECBAgQIECAAAECBMpYQACwjDtX0wgQIECAAAECBAgQIECAAAECBAgIAPoGCBAgQIAAAQIECBAgQIAAAQIECJSxgABgGXeuphEgQIAAAQIECBAgQIAAAQIECBAQAPQNECBAgAABAgQIECBAgAABAgQIEChjAQHAMu5cTSNAgAABAgQIECBAgAABAgQIECAgAOgbIECAAAECBAgQIECAAAECBAgQIFDGAgKAZdy5mkaAAAECBAgQIECAAAECBAgQIEBAANA3QIAAAQIECBAgQIAAAQIECBAgQKCMBQQAy7hzNY0AAQIECBAgQIAAAQIECBAgQICAAKBvgAABAgQIECBAgAABAgQIECBAgEAZCwgAlnHnahoBAgQIECBAgAABAgQIECBAgAABAUDfAAECBAgQIECAAAECBAgQIECAAIEyFhAALOPO1TQCBAgQIECAAAECBAgQIECAAAECAoC+AQIECBAgQIAAAQIECBAgQIAAAQJlLCAAWMadq2kECBAgQIAAAQIECBAgQIAAAQIEBAB9AwQIECBAgAABAgQIECBAgAABAgTKWEAAsIw7V9MIECBAgAABAgQIECBAgAABAgQICAD6BggQIECAAAECBAgQIECAAAECBAiUsYAAYBl3rqYRIECAAAECBAgQIECAAAECBAgQEAD0DRAgQIAAAQIECBAgQIAAAQIECBAoYwEBwDLuXE0jQIAAAQIECBAgQIAAAQIECBAgIADoGyBAgAABAgQIECBAgAABAgQIECBQxgICgGXcuZpGgAABAgQIECBAgAABAgQIECBAQADQN0CAAAECBAgQIECAAAECBAgQIECgjAUEAMu4czWNAAECBAgQIECAAAECBAgQIECAgACgb4AAAQIECBAgQIAAAQIECBAgQIBAGQsIAJZx52oaAQIECBAgQIAAAQIECBAgQIAAAQFA3wABAgQIECBAgAABAgQIECBAgACBMhYQACzjztU0AgQIECBAgAABAgQIECBAgAABAgKAvgECBAgQIECAAAECBAgQIECAAAECZSwgAFjGnatpBAgQIECAAAECBAgQIECAAAECBAQAfQMECBAgQIAAAQIECBAgQIAAAQIEylhAALCMO1fTCBAgQIAAAQIECBAgQIAAAQIECAgA+gYIECBAgAABAgQIECBAgAABAgQIlLGAAGAZd66mESBAgAABAgQIECBAgAABAgQIEBAA9A0QIECAAAECBAgQIECAAAECBAgQKGMBAcAy7lxNI0CAAAECBAgQIECAAAECBAgQICAA6BsgQIAAAQIECBAgQIAAAQIECBAgUMYCAoBl3LmaRoAAAQIECBAgQIAAAQIECBAgQEAA0DdAgAABAgQIECBAgAABAgQIECBAoIwFBADLuHM1jQABAgQIECBAgAABAgQIECBAgIAAoG+AAAECBAgQIECAAAECBAgQIECAQBkLCACWcedqGgECBAgQIECAAAECBAgQIECAAAEBQN8AAQIECBAgQIAAAQIECBAgQIAAgTIWEAAs487VNAIECBAgQIAAAQIECBAgQIAAAQICgL4BAgQIECBAgAABAgQIECBAgAABAmUsIABYxp2raQQIECBAgAABAgQIECBAgAABAgQEAH0DBAgQIECAAAECBAgQIECAAAECBMpYQACwjDtX0wgQIECAAAECBAgQIECAAAECBAgIAPoGCBAgQIAAAQIECBAgQIAAAQIECJSxgABgGXeuphEgQIAAAQIECBAgQIAAAQIECBAQAPQNECBAgAABAgQIECBAgAABAgQIEChjAQHAMu5cTSNAgAABAgQIECBAgAABAgQIECAgAOgbIECAAAECBAgQIECAAAECBAgQIFDGAgKAZdy5mkaAAAECBAgQIECAAAECBAgQIEBAANA3QIAAAQIECBAgQIAAAQIECBAgQKCMBQQAy7hzNY0AAQIECBAgQIAAAQIECBAgQICAAKBvgAABAgQIECBAgAABAgQIECBAgEAZCwgAlnHnahoBAgQIECBAgAABAgQIECBAgAABAUDfAAECBAgQIECAAAECBAgQIECAAIEyFhAALOPO1TQCBAgQIECAAAECBAgQIECAAAECAoC+AQIECBAgQIAAAQIECBAgQIAAAQJlLCAAWMadq2kECBAgQIAAAQIECBAgQIAAAQIEBAB9AwQIECBAgAABAgQIECBAgAABAgTKWEAAsIw7V9MIECBAgAABAgQIECBAgAABAgQICAD6BggQIECAAAECBAgQIECAAAECBAiUsYAAYBl3rqYRIECAAAECBAgQIECAAAECBAgQEAD0DRAgQIAAAQIECBAgQIAAAQIECBAoYwEBwDLuXE0jQIAAAQIECBAgQIAAAQIECBAgIADoGyBAgAABAgQIECBAgAABAgQIECBQxgICgGXcuZpGgAABAgQIECBAgAABAgQIECBAQADQN0CAAAECBAgQIECAAAECBAgQIECgjAUEAMu4czWNAAECBAgQIECAAAECBAgQIECAgACgb4AAAQIECBAgQIAAAQIECBAgQIBAGQsIAJZx52oaAQIECBAgQIAAAQIECBAgQIAAAQFA3wABAgQIECBAgAABAgQIECBAgACBMhYQACzjztU0AgQIECBAgAABAgQIECBAgAABAgKAvgECBAgQIECAAAECBAgQIECAAAECZSwgAFjGnatpBAgQIECAAAECBAgQIECAAAECBAQAfQMECBAgQIAAAQIECBAgQIAAAQIEylhAALCMO1fTCBAgQIAAAQIECBAgQIAAAQIECAgA+gYIECBAgAABAgQIECBAgAABAgQIlLGAAGAZd66mESBAgAABAgQIECBAgAABAgQIEBAA9A0QIECAAAECBAgQIECAAAECBAgQKGMBAcAy7lxNI0CAAAECBAgQIECAAAECBAgQICAA6BsgQIAAAQIECBAgQIAAAQIECBAgUMYCAoBl3LmaRoAAAQIECBAgQIAAAQIECBAgQEAA0DdAgAABAgQIECBAgAABAgQIECBAoIwFBADLuHM1jQABAgQIECBAgAABAgQIECBAgIAAoG+AAAECBAgQIECAAAECBAgQIECAQBkLCACWcedqGgECBAgQIECAAAECBAgQIECAAAEBQN8AAQIECBAgQIAAAQIECBAgQIAAgTIWEAAs487VNAIECBAgQIAAAQIECBAgQIAAAQICgL4BAgQIECBAgAABAgQIECBAgAABAmUsIABYxp2raQQIECBAgAABAgQIECBAgAABAgQEAH0DBAgQIECAAAECBAgQIECAAAECBMpYQACwjDtX0wgQIECAAAECBAgQIECAAAECBAgIAPoGCBAgQIAAAQIECBAgQIAAAQIECJSxgABgGXeuphEgQIAAAQIECBAgQIAAAQIECBAQAPQNECBAgAABAgQIECBAgAABAgQIEChjgcoybpumFbHAli1bYubMmdkaDhw4MCorfYpF3F2qRoAAAQIECBAgQIAAAQIlKrBjx45YsWJFtvYTJ06Mrl27lmhLVLspAqIuTdFz714LJMG/o446aq/vdyMBAgQIECBAgAABAgQIECDQOIFnnnkmjjzyyMbdpHRZCJgCXBbdqBEECBAgQIAAAQIECBAgQIAAAQIEahcwArB2F7ktLJBM+60+kv8Csd9++1Un/RIgQIAAAQIECBAgQIAAAQLNJLBs2bLcDLz8v4s30+M9pkQEBABLpKPKrZr5a/4lwb9hw4aVWxO1hwABAgQIECBAgAABAgQIFJVA/t/Fi6piKtPiAqYAtzixFxAgQIAAAQIECBAgQIAAAQIECBBoOwEBwLaz92YCBAgQIECAAAECBAgQIECAAAECLS4gANjixF5AgAABAgQIECBAgAABAgQIECBAoO0EBADbzt6bCRAgQIAAAQIECBAgQIAAAQIECLS4gABgixN7AQECBAgQIECAAAECBAgQIECAAIG2ExAAbEX75557Lq655po47bTTsrvedunSJXr27Bljx46NT3/60/Hkk0/WW5uFCxdGhw4dGvXngAMOqPWZJ554YoOfU+sDZBIgQIAAAQIECBAgQIAAAQIECJSEQGVJ1LIMKnn88cfHE088UaMl27Zti7lz52b/3HrrrXHxxRfHD3/4w+jcuXONsnuTMW7cuL25zT0ECBAgQIAAAQIECBAgQIAAAQJlIiAA2EoduXTp0uybhgwZEhdeeGEcd9xxMWLEiNi5c2fMmDEjvv3tb8eSJUvipz/9aWzfvj3uuOOOGjUbOnRozJw5s0Z+YcY3v/nN3P2f/OQnCy+n0pMnT46f/OQnqTwJAgQIECBAgAABAgQIECBAgACB8hEQAGylvhw/fnxcf/31cf7550dFRUXqrcccc0x84hOfiGOPPTbmzJkTv/jFL+LSSy+NZNRg/tGpU6c45JBD8rNqnCcBxcceeyyb36tXrzj33HNrlMnP6NGjxx6fmV/eOQECBAgQIECAAAECBAgQIECAQGkJWAOwlfrrgQceiIsuuqhG8K/69QMGDMiOAqxO33333dWnjfp96KGHonq04QUXXBDdunVr1P0KEyBAgAABAgQIECBAgAABAgQIlJeAAGAR9edJJ52Uq01VVVXuvDEnyRTi6mNP03+ry/klQIAAAQIECBAgQIAAAQIECBAoXwEBwCLq261bt+ZqUzhNOHehnpMNGzbEfffdly2R7P5bOIW4nltdIkCAAAECBAgQIECAAAECBAgQKFMBAcAi6tjHH388V5sJEybkzht6kkwb3rx5c7Z4sqZghw4d9njra6+9FkcffXT07ds3unbtGsOGDYtzzjkntxnJHh+gAAECBAgQIECAAAECBAgQIECAQFEL2ASkSLpn165dccMNN+Rqk6wX2Ngjf/rvxRdf3KDbly9fHsmf6iPZiTj5c//998eNN94YSVBxb4KRixcvrn5krb/Lli2rNV8mAQIECBAgQIAAAQIECBAgQIBA8woIADav514/7aabbopnnnkme/95550XRxxxRKOe9eabb0b1CMKpU6fGmDFj6r2/Y8eO8YEPfCDOPPPMOOyww6J///6RTCF+4YUX4vvf/37Mnj07Zs2aFcm6hEm9RowYUe/zCi8OHz68MEuaAAECBAgQIECAAAECBAgQIECgDQQEANsAvfCVSeDuqquuymYPGjQobrnllsIie0zffvvtsXv37my5hoz+u+eee7LTfgsffNxxx8XnP//5uOSSS+K2227Ljg788pe/HEl5BwECBAgQIECAAAECBAgQIECAQOkJdMgEjd6NGpVe3cuixq+++mokQbc1a9Zk1+D7wx/+sFebdyTTdJP1/Lp06RJvvfVWrcG9xoDt2LEjDjnkkHj99deztyVTeocOHdrgRzRkCvBRRx2Vfd6iRYuyaw82+OEKEiBAgAABAgQIECBAgAABAg0SSP5+Xj1Lz9+/G0RWloWMAGzDbl2wYEGcdtpp2eBfsuvvnXfeuVfBv2SKbhL8S46zzz67ycG/5DmVlZXx2c9+Nr7+9a8nyez04o9//OPZ84b8I9lMxEGAAAECBAgQIECAAAECBAgQIND2AnYBbqM+WLp0aZxyyimR/Ca79f74xz/O7r67N9XZm80/GvKegw46KFcs2RjEQYAAAQIECBAgQIAAAQIECBAgUHoCAoBt0GcrV66MU089NebPn599+8033xwNWbevtqpu3749O3IwuZasH3jGGWfUVmyv8pLApIMAAQIECBAgQIAAAQIECBAgQKC0BQQAW7n/1q1bF6effnp2h93k1TfccEN84Qtf2Ota/O53v4tVq1Zl70+m6CZTd5vrSHYBrj6GDBlSfeqXAAECBAgQIECAAAECBAgQIECghAQEAFuxszZv3hxnnXVWvPDCC9m3Xn311XHllVc2qQb5038/+clPNulZ+Tcnm4Ak05Krj+OPP7761C8BAgQIECBAgAABAgQIECBAgEAJCQgAtlJnbdu2Lc4999yYNm1a9o2XX355XHfddU16++rVqyMZAZgcEydOjEmTJjXoeY8++misXbu2zrLJtOLPfe5zMXv27GyZD33oQ7kdg+q8yQUCBAgQIECAAAECBAgQIECAAIGiFGi++aJF2bziqdTHPvaxePDBB7MVOvnkk7M77L7yyit1VrBz584xduzYOq8nF5Jdg5PAYnI0ZvTfbbfdlt0tONkx+MQTT4xx48ZF7969Y+PGjfH888/HD37wg9wU5WRdwe985zvZd/gHAQIECBAgQIAAAQIECBAgQIBA6QkIALZSn91zzz25Nz3yyCNx6KGH5tK1ney///6xcOHC2i7l8qqn/1ZUVMRf/uVf5vIbcpIE++64447sn7rKJ6MKkyDjyJEj6yoinwABAgQIECBAgAABAgQIECBAoMgFBACLvIPqqt7cuXPj6aefzl5OdhQePHhwXUVr5CfrDibThWfMmJEd6bdixYpIphN36dIl9t1335g8eXJccMEF2SnLSXDRQYAAAQIECBAgQIAAAQIECBAgULoCHXZnjtKtvpqXqsDixYtz6wouWrQohg0bVqpNUW8CBAgQIECAAAECBAgQIFC0Av7+XbRd06oVswlIq3J7GQECBAgQIECAAAECBAgQIECAAIHWFRAAbF1vbyNAgAABAgQIECBAgAABAgQyAjt37Y5Xl66L5eu38CBAoIUFrAHYwsAeT4AAAQIECBAgQIAAAQIECKQFduzcFX/1s+fjkdfejg4dIm66aFJ8+PCh6UJSBAg0m4ARgM1G6UEECBAgQIAAAQIECBAgQIBAQwRum/FGNviXlE12Jvj737wS67dsb8ityhAgsBcCAoB7geYWAgQIECBAgAABAgQIECBAYO8E3s5M+f23P85J3bx+y4746fSFqTwJAgSaT0AAsPksPYkAAQIECBAgQIAAAQIECBDYg8A3/+e12LB1R41SP3pyQWysJb9GQRkECDRaQACw0WRuIECAAAECBAgQIECAAAECBPZG4On5q+LeF5fUeuvazdvj9qfeqPWaTAIEmiYgANg0P3cTIECAAAECBAgQIECAAAECDRDYntn44+9/82q9JX/4p/mxeVvN0YH13uQiAQJ7FBAA3CORAgQIECBAgAABAgQIECBAgEBTBW7LrPH3+vINqcd89MjhqfSqTdvijqffTOVJECDQdAEBwKYbegIBAgQIECBAgAABAgQIECBQj8DyZOOPh+amShy0X+/453MnxknjBqby//Px+bFl+85UngQBAk0TEABsmp+7CRAgQIAAAQIECBAgQIAAgT0IXP/fs2ts8HHthw+Oio4d4rIPHJi6e+XGrXHnM0YBplAkCDRRQACwiYBuJ0CAAAECBAgQIECAAAECBOoWmFG1Kn7zv0tTBS48YlgcsX+/bN77RuwTxx04IHX9lserjAJMiUgQaJqAAGDT/NxNgAABAgQIECBAgAABAgQI1CHw7sYfr6Su9u5aGVf+xfhU3uUFowCXr98adz2/OFVGggCBvRcQANx7O3cSIECAAAECBAgQIECAAAEC9QgkG3/MfXtjqsQVp4+LAT27pPImH9Avpozqn8q75dF5sW3HrlSeBAECeycgALh3bu4iQIAAAQIECBAgQIAAAQIE6hFINv646Y9zUiUOHtI7Pn70/qm86sSXCkYBLl23Je55wSjAah+/BJoiIADYFD33EiBAgAABAgQIECBAgAABArUK/PPvZsembendfK/98CHZjT9qu+GYUf3iqMxIwPzj3x+bF8k0YgcBAk0TEABsmp+7CRAgQIAAAQIECBAgQIAAgQKB6VUr4/6X0ht/fGTy8Eg2/Kjr6NChQxSOAly0+p2478Uldd0inwCBBgoIADYQSjECBAgQIECAAAECBAgQIEBgzwLvbvzxaqpgsvHH188Yl8qrLXHsmP5x+Ii+qUv/nlkLcIdRgCkTCQKNFRAAbKyY8gQIECBAgAABAgQIECBAgECdAj+ZtiDmFW78ccb46F+w8UdtD6htFODCVZvjgZeX1VZcHgECDRQQAGwglGIECBAgQIAAAQIECBAgQIBA/QLL1r0T//bQ3FShQ4ZmNv44akQqr77EiWMHxqHD+qSK3PzI3Ni5a3cqT4IAgYYLCAA23EpJAgQIECBAgAABAgQIECBAoB6BZOOPzYUbf5xT98YftT0qGQV42ckHpi5VrdgU/z3TKMAUigSBRggIADYCS1ECBAgQIECAAAECBAgQIECgdoHp81bWmKr70SOHZ9b0q3vjj9qfFHHKhEExYb/eqcvJKMBdRgGmTCQINFRAALChUsoRIECAAAECBAgQIECAAAECtQps27Er/v7+9MYffbp1ymz8Mb7W8nvKTEYBXv6BMalic5ZvjAdnvZXKkyBAoGECAoANc1KKAAECBAgQIECAAAECBAgQqEOgto0/kl1/+/XoXMcde84+7aDBMW7fXqmC33l4XuzebS3AFIoEgQYICAA2AEkRAgQIECBAgAABAgQIECBAoHaBZOOP7zyc3vgj2cTjo0c2fOOP2p7csWOH+OLJ6VGAs5etj4dmv11bcXkECNQjIABYD45LBAgQIECAAAECBAgQIECAQP0C1xVs/JGZvRvXNnLjj7recObE/WL0wB6py9/NBBuNAkyRSBDYo4AA4B6JFCBAgAABAgQIECBAgAABAgRqE3hy7sr43cvp3XmTjT8OG963tuKNzqvIjAIs3BF45pJ18dicFY1+Vnu9Yd0729pr07U7T0AAMA/DKQECBAgQIECAAAECBAgQINAwgXc3/nglVbhv905xxel7t/FH6kF5iQ8eul+MHJAeBfidh4wCzCOq9/T/PTin3usutg8BAcD20c9aSYAAAQIECBAgQIAAAQIEmlXgv55cEPNXbEo98+uZ4F9TNv5IPezPicqKjvH5E0enLv3vorXx5LyVqTyJmgK/f+Wt+MOry2tekNPuBAQA212XazABAgQIECBAgAABAgQIEGiawNK170SyFl/+cVhm44+PZKb/tsTx4cOHxvB+3VKPthZgiqNGYvWmbfH/3TezRr6M9ikgANg++12rCRAgQIAAAQIECBAgQIDAXgv8c2bjj3e278zdn2z8cU0zbfyRe2jeSafMKMAvnJjeEfjZhWviqfmr80o5zRf4xn2vxMqN1v/LN2nP5wKA7bn3tZ0AAQIECBAgQIAAAQIECDRS4Im5K+J3M9Mbf3zsqBHNtvFHXdU5733DYmjfmqMA6yrfnvN/+9LSGn3Unj20PUIA0FdAgAABAgQIECBAgAABAgQINEhg646d8Q+/eTVVdp9k44/TxqXyWiLRubJjXFqwFuCM+avimQVGAeZ7v71hS3zjN+nNWfKvO2+fAgKA7bPftZoAAQIECBAgQIAAAQIECDRaILvxx8r0xh9XnjE+9unRudHP2psbLpo8LAb37pq69eZH0msRpi62s8Tu3bvj6ntfibWbt7ezlmvungQEAPck5DoBAgQIECBAgAABAgQIECAQSzIbf9z88LyUxGHD+8ZFk1tm44/Ui/6c6FJZEZeeMCp16Ym5K+OFN9ek8tpr4t4Xl8QfZ6V3/T15/MD2yqHdeQICgHkYTgkQIECAAAECBAgQIECAAIHaBa57YFaNjT+uPefg6NgxswNIKx4fzaw3OLBXl9Qbby7YkTh1sZ0k3lq3Jf7h/vT07P6ZkZlXnN7y07PbCXFJN1MAsKS7T+UJECBAgAABAgQIECBAgEDLCzw+Z0X8zytvpV708Uwg7tBhfVN5rZHo2qki/u/x6VGAj76+Il5evLY1Xl+U70im/l7565djw5Ydqfr987kTM9Oz08HSVAGJdiMgANhuulpDCRAgQIAAAQIECBAgQIBA4wWSjT/+sWBkWXbjjzYcWfbxo0dEMrot//huwfTk/Gvlfv7LZxdFEqTNP86ZNCTOOGRwfpbzdiwgANiOO1/TCRAgQIAAAQIECBAgQIDAngR+9MSCWFCw8cdVfzE++nZPB+D29JzmvN69c2VcUjAK8KHZy+PVpeua8zUl8azFazbHdb+bnarroMwU6X86++BUnkT7FhAAbN/9r/UECBAgQIAAAQIECBAgQKBOgezGHwW77E7KbPxx4RGtt/FHXZX7xDH7RzISMf/43iPpTUryr5Xj+a5d70793bg1PfX3hvMntmmAthytS71NAoCl3oPqT4AAAQIECBAgQIAAAQIEWkjg2t/Oii3bd+We3iGz38d1Hz6k1Tf+yFUg76RHl8r47PtH5uVEdp3C19/akMor58TPn34jps1blWrihUcMi5PH75vKkyAgAOgbIECAAAECBAgQIECAAAECBGoIPPb62/H7V9Mbf/yfo/ePQ4b2qVG2rTIunnpA9O5amXr9zQUjFlMXyyjxxqpNcf1/v5Zq0X59usY3PnRQKk+CQCIgAOg7IECAAAECBAgQIECAAAECBFICtW380S+z6cbfnDYuVa6tE727dorPFIwC/N3MZTHv7Y1tXbUWfX8y9feKu16Od7bvTL3nxvMPzQRE09OiUwUk2q2AAGC77XoNJ0CAAAECBAgQIECAAAECtQv88E/zY+GqzamLV50xPvoUrLmXKtBGiU9PHRm9MtOBq4/duyP+/dHyXgvwJ9MXxjMLV1c3Ofub7Ix8/NiBqTwJAtUCAoDVEn4JECBAgAABAgQIECBAgACBWLR6c3yvIIB2+Ii+cUFmbbliPJKg5CczU4Hzj9/875IaOxfnXy/l86oVG+Nbv09P/R22T7f4uzMnlHKz1L2FBQQAWxjY4wkQIECAAAECBAgQIECAQCkJXPtAeuOPjpmNP649pzg2/qjLMdkMpHvnitzlzAzZshwFuDPTsL+566XYuuO9jVmSRv/LBYdFz7xRkDkIJwT+LCAA6FMgQIAAAQIECBAgQIAAAQIEsgKPZjb+eHDW8pTG/zmmuDb+SFXuz4l9MusTXjzlgNSle19ckh3NmMos8cQPMlOzX3xzbaoVn8qMfpwyun8qT4JAoYAAYKGINAECBAgQIECAAAECBAgQaIcCWzIbSvzj/a+mWt4/E1j72qnFtfFHqoJ5ic8dNzK6dXpvFGAyWu4/HiuftQDnLN8QN/1xTl6LIw7o3z2+fkZp9E+q4hKtLiAA2OrkXkiAAAECBAgQIECAAAECBIpPINn4443CjT/+ojg3/qhNb0DPLvGXmY0w8o+7n18ci9ekNzPJv14q59t37oqv/eql2Jb5rT46ZKZm/+uFh2WmPr+3AUr1Nb8ECgUEAAtFpAkQIECAAAECBAgQIECAQDsTqG3jjyP23yfOf19xbvxRV/f81fGjokvle6GO7Tt3x38+XlVX8ZLJv+Wxqpi5ZF2qvpccNyomH9AvlSdBoC6B9/5XUVcJ+QQIECBAgAABAgQIECBAgEBZC1yT2fgjf2OJZOOPa845ODomJyV0DOrdNT52VHoU4K+eXRxvrdtSQq1IV/XVpeviuw/PTWWOGdQzvnrq2FSeBIH6BAQA69NxjQABAgQIECBAgAABAgQIlLnAI68tjz8WbPzxiczGHwcP6VOSLb/0hNHRueK9cEcybbZURwFuy+z2m0z93ZFsa/znoyITlP12Zupv17z1Dquv+SVQl8B7/4uoq4R8AgQIECBAgAABAgQIECBAoCwF3t34Y1aqbcnGH189rXQ3lhjcp2tcdGR66vIvnnkz3l5feqMAb35kbrz21oZU/1x6wqg4bHjfVJ4EgT0JCADuSch1AgQIECBAgAABAgQIECBQpgLff3x+vLk6vUnG3545Ifp061TSLf7rE8dEp4r3pi8n05t/kNnkpJSOlxatzexinF6/cPzgXvGlDxxYSs1Q1yIREAAsko5QDQIECBAgQIAAAQIECBAg0JoCycYf//HYvNQrJ2c2/jjv8KGpvFJMDO3bLS44Ij0K8OdPvxkrN24tieYkIzO/dtdLsTNv6m9lMvX3osMym5xUlEQbVLK4BAQAi6s/1IYAAQIECBAgQIAAAQIECLSKwD/9traNPw4puY0/6sL66xPGRLJeXvXxTiao9qMnFlQni/r3pj/OiXlvb0zV8bKTDyzZdRlTDZFoEwEBwDZh91ICBAgQIECAAAECBAgQINB2Ag/PXh4PZf7kHxdPOSAOGtI7P6ukz0f07x7nFoxm/OmMhbF607aibtfzb6yOHzyRnq58yNDe8fmTRhd1vVWuuAUEAIu7f9SOAAECBAgQIECAAAECBAg0q0B244/fvpp65oCeXeIrp45N5ZVD4gsnjYm8QYCxedvO+PGTxTsK8J1M/f7mrpdj93ub/mZ3NP72hZMyaxoK4ZTDN9lWbfD1tJW89xIgQIAAAQIECBAgQIAAgTYQ+M/Hq2LR6ndSb/67M8eX/MYfqQb9OTFyQI84Z1J6TcPbpi+MdZu311a8zfO+9YfXYsHKTal6fPnUA2NcZvMPB4GmCAgANkXPvQQIECBAgAABAgQIECBAoIQE3lyVbPyR3ln2yAP2qTFVtoSatMeqJqMAO7y3FGBs2LojfjK9+EYBPjV/Vfxk2sJUeyYN7xt/ddyoVJ4Egb0READcGzX3ECBAgAABAgQIECBAgACBEhT4p8zU3207duVqnmyScc05h2QCZHkRstzV8jgZM6hnnDVxv1RjkmnA67cUzyjATZmg5BV3v5SqY5fKjtldfytN/U25SOydgADg3rm5iwABAgQIECBAgAABAgQIlJTAQ7OWx8OvvZ2q88VT9o8J+5XPxh+pxuUlkh1084/1W3bETzNTgYvluP6/Z9eYln3F6eNi9MCexVJF9ShxAQHAEu9A1SdAgAABAgQIECBAgAABAnsSaE8bf9Rmkayh9xeHDE5d+lFmFODGzMi7tj6emLsifv70m6lqJNOyP33syFSeBIGmCAgANkXPvQQIECBAgAABAgQIECBAoAQEknX/Fq9Jb/xx9Vnjo3fXTiVQ++ap4hdPHpN60NrMRiC3P/VGKq+1E8k05Cvvfjn12m6dKuJfLzwskunZDgLNJSAA2FySnkOAAAECBAgQIECAAAECBIpQ4I1VmyLZ+Tf/OOqAfvHhgt1x86+X4/nBQ/rEKRP2TTXth3+aH5u3td0owOsemBVL121J1elvMzsy79+/RypPgkBTBQQAmyrofgIECBAgQIAAAQIECBAgUKQCu3fvjn+8v5aNPz58cFlv/FFXd3zpA+lRgKs2bYs7Cqbf1nVvc+c/8try+NVzi1OPnTq6f/yfo/dP5UkQaA4BAcDmUPQMAgQIECBAgAABAgQIECBQhAIPzX47Hn19Rapmn5p6QIwfXP4bf6Qa/efEocP6xknjBqYufT8zCjBZI7E1j7Wbt8VVv56ZemWPzhXxrQsOjY6m/qZcJJpHQACweRw9hQABAgQIECBAgAABAgQIFJXAO9t2Zkf/5VdqYK8u8eVT0jvi5l9vD+eXfSDd/hUbtsadz7zZqk3/p9/Oircz780//r8PHhTD9umen+WcQLMJCAA2G6UHESBAgAABAgQIECBAgACB4hG45bF5sWRtwcYfZ06IXu1o44/aeuN9I/aJ4w4ckLp0S2aNxNYaBfiHV9+Ke19cknr/CWMHxkePHJ7KkyDQnAICgM2puYdnPffcc3HNNdfEaaedFsOGDYsuXbpEz549Y+zYsfHpT386nnzyyXqfsHDhwuwaDR06dGjw7wEHHFDvMzdv3hzf+ta34sgjj4x+/fpFjx49Yvz48fG1r30t3nijbXdDqrfiLhIgQIAAAQIECBAgQIBAnQILVyYbf8xPXT9qZL84Z9KQVF57TXypYBTg8vVb467n0+vxtYTN6syag1ffm57626trZdxw/sR2uSZjSxh7Zu0ClbVny21ugeOPPz6eeOKJGo/dtm1bzJ07N/vn1ltvjYsvvjh++MMfRufOnWuU3ZuMcePG1XnbvHnz4swzz8y+O7/Q66+/HsmfH/3oR/Hzn/88PvjBD+Zfdk6AAAECBAgQIECAAAECRSyQ3fjjt5mNP3buytWyIrOu3LXnHCLI9GeRIzO7IE8Z1T9mzF+VM/rPx6riI5OHR+fKlhsr9Y37XomVG7fl3pmc/OOHDo79+nRL5UkQaG4BAcDmFq3jeUuXLs1eGTJkSFx44YVx3HHHxYgRI2Lnzp0xY8aM+Pa3vx1LliyJn/70p7F9+/a44447ajxp6NChMXNm+r8U1CiUyfjmN7+Zu/+Tn/xkbUViw4YNcdZZZ+WCf5dcckl89KMfjW7dusWjjz6afcb69evjIx/5SEybNi0mTZpU63NkEiBAgAABAgQIECBAgEBxCTw4a3k8VrDxx6czG3+MG9yruCraxrW5LLMjcH4AMJkufc8Li+OjR41okZo98PLS+N3MZalnnzJh3zjvfUNTeRIEWkKgQ+a/DOxuiQd7ZlogGUWXjO47//zzo6KiIn0xk1q5cmUce+yxMWfOnOy1xx9/PJJRg409koBiElhMAo69evWK5cuXZ4N6hc/5+7//+7j22muz2ckU4CuuuCJVZPr06XHCCSfEjh07sr+PPfZY6npTE4sXL47hw99d32DRokXZKdFNfab7CRAgQIAAAQIECBAg0N4Fko0/Tvl/j6fW/huU2fjj4a+d0O7X/iv8NpJwyEXfnxHPLlyTuzS8X7d45GsnRqeK5h0FmGw0ctpNj8eazdtz7+rbvVM8+JXjY1Cvrrm8ljjx9++WUC29ZzbvF1167W+1Gj/wwANx0UUX1Rr8SyoxYMCA7CjA6grdfffd1aeN+n3ooYeywb/kpgsuuKDW4F8ywvC73/1u9rkTJkzIrvdX+JKpU6fGZz/72Wx2Eox89tlnC4tIEyBAgAABAgQIECBAgECRCfxHbRt/nGXjj9q6KVlfv3AtwEWr34n7CjboqO3exuQlgca/y6z7lx/8S+6/JjMlu6WDf42pp7LlLSAAWET9e9JJJ+VqU1VVlTtvzEkyhbj6qGv6bzLFd926ddliSZmOHWv/DD71qU9VPyruvffe3LkTAgQIECBAgAABAgQIECg+gQWZjT++X7DxxzGj+sXZh9n4o67eev+YAXH4iL6py/+RWQtwR976iamLe5FIdvz9Y2Zadv5x5sTB8aFD98vPck6gRQVqj/y06Cs9vC6BrVu35i7VNk04d7GOk2Rdv/vuuy97Ndn9t64pxPm7DSfTfOs6Jk+eHN27d89eTtYBdBAgQIAAAQIECBAgQIBAcQoko8z+4f70xh+VmY0/klFmyUg3R+0C2VGAJx+YupgEUh94Ob1WX6pAIxJvrduS7Zf8W/r36GxDlnwQ560iIADYKswNe0ky1bb6SKbmNvZIpg1v3rw5e9snPvGJOv8lP2vWrNyjx48fnzsvPKmsrIwxY8Zks2fPnl14WZoAAQIECBAgQIAAAQIEikTgD68ujz/NWZGqzWfePzLG7mvjjxRKLYkTxw2MiUP7pK7c/Mjc2LmraVsmJEHZq+55OTZs2ZF69j+fOzH69+ySypMg0NICdgFuaeEGPn/Xrl1xww035Eon6wU29sif/ptsOFLXkSwAmhw9evSIvn3TQ50L70k26nj55ZdjxYoVkYxQ7NKlYf+Sqn5H4fOq08uWNc9/Tal+nl8CBAgQIECAAAECBAi0V4Et23fGtQ+8N9Ajcdi3d5ca69u1V589tbt6LcBLfvpcrmjVik3x35kdez/UhOnTv3puUY3dmM+ZNCTOOGRw7j1OCLSWgABga0nv4T033XRTPPPMM9lS5513XhxxxBF7uCN9+c0334zqEYTJBh7VI/fSpd5NJVOFk6Nnz57vZtTzzyRIWH1s3LixwQHA6h1+q+/1S4AAAQIECBAgQIAAAQItI5CsL7dk7Tuph1991kHRs4u/8qdQ6kmcMmFQTNivd8xetj5X6nuPzIuzJu6XWTe/8VOoF6/ZnAnKpmfSJbsx/9PZB+ee74RAawqYAtya2nW8KwncXXXVVdmrgwYNiltuuaWOknVn33777ZEML06O+kb/Jde3bNmS/ETnzp2zv/X9I3/E3zvvpP8Ppb77XCNAgAABAgQIECBAgACB1hGYNm9l6kWT99/HBhMpkT0n3l0LcEyq4OvLN8SDs95K5TUksSszdfjKX78cG7emp/7ecP7E6Nt9z38Pb8g7lCHQWAH/OaCxYs1c/tVXX41zzz03duzYEV27do277rorkiBgY4+f/exn2VuSgN1HPvKRem9P3pMc27Ztq7dccjF/Y5Ju3brtsXx1gUWLFlWf1vqbTAE+6qijar0mkwABAgQIECBAgAABAgQaLjC9alWqcDLF1MYfKZIGJU4/eHBmzcSeMWf5xlz57zw8L5L8xnj+/Ok3Ytq8dJ9ceMSwOHn8vrnnOiHQ2gICgK0tnve+BQsWxGmnnRZr1qyJZNffO++8s86de/Nuq3GaTB1+7bXXsvlnn332Htf169Xr3UVgkym9ezo2bdqUK9KQKcPVhYcNG1Z96pcAAQIECBAgQIAAAQIEWkhg0erN8WbmT/4xdfSA/KTzBgokU30vy+wIfNkvXszdkUwJfmj223HqQQ0L3r25anNc/9/v/v28+iH79eka3/jQQdVJvwTaRMAU4DZhj1i6dGmccsop2d/kvyT8+Mc/jnPOOWevatPQzT+qH14dnEuCe2vXrq3OrvW3eiTfwIEDG7z+X60PkkmAAAECBAgQIECAAAECzS4wY356pFm/Hp1j/OB3B300+8vawQPPzKz5N3rge2vhJ01OdgSuXnKrPoJk6u/f3P1SvJPZlCX/uPH8Q6N31075Wc4JtLqAAGCrk0esXLkyTj311Jg/f3727TfffPMe1+2rq5rbt2/PjhxMridTh88444y6iubyDzrovf/yUD1yMHcx7ySZllxVVZXNmTBhQt4VpwQIECBAgAABAgQIECBQDAIzCqb/ThnVf682rSiGthRDHSoyowC/eHJ6LcCXF6+Lx+as2GP1fjJ9YTyzYHWq3MePHhHHjx2YypMg0BYCAoCtrL5u3bo4/fTTY9asd7dov+GGG+ILX/jCXtfid7/7Xaxa9e5/8fn4xz8elZV7ntX9/ve/P/e+6p2Dcxl5J88991xUTwE+9thj8644JUCAAAECBAgQIECAAIG2FkhGpRVuADJldP+2rlbJv/9Dhw6JA/p3T7XjOw/VPwqwasXG+Nbv01N/h+3TLf7uTINpUpASbSYgANiK9Js3b46zzjorXnjhhexbr7766rjyyiubVIP86b+f/OQnG/SsE088Mfr06ZMte9ttt9U5lPnWW2/NPS/ZqMRBgAABAgQIECBAgAABAsUjULViU7y9YWuqQlMFAFMee5OorOgYXzgpPQrwfxetjScLdluufvbOZOrvXS/F1h27qrOyv/9ywWHRs8ueB+mkbpIg0EICAoAtBFv42GTH3SSINm3atOylyy+/PK677rrCYo1Kr169OpIRgMkxceLEmDRpUoPu79y5c3zpS1/Klp09e3b867/+a437ZsyYEf/1X/+VzT/hhBPiyCOPrFFGBgECBAgQIECAAAECBAi0ncCMqpWplw/u3TVGDkivX5cqINFggQ8fPjSSEXz5x3cfrn0U4A+fmB8vvpleX/9TUw8IozHz9Zy3tYBQdCv1wMc+9rF48MEHs287+eST47Of/Wy88sordb49CdKNHTu2zuvJhWTX4CSwmBwNHf2XLZz5xxVXXBG//OUvY86cOfH1r3895s2bFx/96EejW7du8eijj8b1118fyRqASfrf/u3fqm/zS4AAAQIECBAgQIAAAQJFIjC9YP2/ZPRfssmko+kCnf48CvBv75mZe9izC9fEU/NXpwJ7c5ZviP/34JxcmeQkmT789TPGpfIkCLS1QIfMmgG727oS7eH9jf2X8P777x8LFy6sl+aYY46Jp59+OioqKmLx4sUxePDgessXXkyCfmeeeWbMnTu38FI23bt37/j5z38eH/zgB2u93pTMpL7Dhw/PPiLZabh6Z+KmPNO9BAgQIECAAAECBAgQaC8CyY6z77vuj7F28/Zck//1wsPigiOG5dJOmiawLTOl98R/eTSWrtuSe1Cyycov/uqYbHr7zl1x3n9Mj5lL1uWuJ/HXu/7vlJh8QL9cXluf+Pt3W/dAcbzfFODi6IdG1yIJ2iXBv+RIdhRubPAvuW/MmDHx4osvxo033hiTJ0+Ovn37Rvfu3WPcuHHxla98JV5++eUWCf4l73YQIECAAAECBAgQIECAwN4LzH5rfSr4lzzJlNO996ztzs6VHeOvC9YCnDF/VTy78N2dfm95rCoV/Euecclxo4oq+Fdbu+S1TwFTgFup35t7oOWBBx5Y5+YdjWlSjx49slOAk2nADgIECBAgQIAAAQIECBAoDYEZBdN/k2mnQ/um16wrjZYUdy0vzIyo/N4jc2P5+vc2W0nWArzqL8ZH8pt/jBnUM756av1LeeWXd06gNQWMAGxNbe8iQIAAAQIECBAgQIAAAQLNIDCtYEfaKaMHNMNTPaJQoGunirj0hNGp7CfmroxLbnsudmSmYVcfFR07xLczU7CT8g4CxSggAFiMvaJOBAgQIECAAAECBAgQIECgDoFk7blnFrw7DbW6SLIBiKNlBD521IgY0LNL6uH56wImFy49YVQcNrxvqowEgWISEAAspt5QFwIECBAgQIAAAQIECBAgsAeBlxevi03bdqZKWf8vxdGsiXdHAY6q85njB/eKL33gwDqvu0CgGAQEAIuhF9SBAAECBAgQIECAAAECBAg0UGBG1cpUySQAVThCLVVAoskCHz96RPTr0bnGcyqTqb8XHRZdKk39rYEjo6gEBACLqjtUhgABAgQIECBAgAABAgQI1C8wvWADEKP/6vdqjqvdO1dmd/gtfNZlJx8YBw/pU5gtTaDoBAQAi65LVIgAAQIECBAgQIAAAQIECNQusGX7znjujTWpi1NtAJLyaKnEJ6bsH0P6dM09/rBhfeLzJ6U3CMlddEKgyAQqi6w+qkOAAAECBAgQIECAAAECBAjUIfBCJvi3bceu3NXMDNQ4amS/XNpJywn07FIZP7/kmLh12oLonjn/6xNHR6cK46paTtyTm1NAALA5NT2LAAECBAgQIECAAAECBAi0oEDh9N+JQ/tEn26dWvCNHp0vMHJAj/incw7Jz3JOoCQEhKpLoptUkgABAgQIECBAgAABAgQIREwv2ABkium/PgsCBBogIADYACRFCBAgQIAAAQIECBAgQIBAWwts3LojXlq8LlWNqaP7p9ISBAgQqE1AALA2FXkECBAgQIAAAQIECBAgQKDIBJ5dsDp27tqdq1Wnig5x5AHW/8uBOCFAoE4BAcA6aVwgQIAAAQIECBAgQIAAAQLFI1A4/ffwEftEt84VxVNBNSFAoGgFBACLtmtUjAABAgQIECBAgAABAgQIvCcwbd6q9xKZM9N/UxwSBAjUIyAAWA+OSwQIECBAgAABAgQIECBAoBgE1mzaFrOWrU9VZaoNQFIeEgQI1C0gAFi3jSsECBAgQIAAAQIECBAgQKAoBJ6anx7917VTx5g0vG9R1E0lCBAofgEBwOLvIzUkQIAAAQIECBAgQIAAgXYuML0qHQBMNv/oXOmv9O38s9B8Ag0W8G+LBlMpSIAAAQIECBAgQIAAAQIE2kagcAOQY8cMaJuKeCsBAiUpIABYkt2m0gQIECBAgAABAgQIECDQXgSWr98SVSs2pZprA5AUhwQBAnsQEADcA5DLBAgQIECAAAECBAgQIECgLQUKR//16loZBw/p05ZV8m4CBEpMQACwxDpMdQkQIECAAAECBAgQIECgfQlMn5de/++YUf2jomOH9oWgtQQINElAALBJfG4mQIAAAQIECBAgQIAAAQItJ7B79+4o3ADE9N+W8/ZkAuUqIABYrj2rXQQIECBAgAABAgQIECBQ8gKLVr8TS9a+k2rH1NE2AEmBSBAgsEcBAcA9EilAgAABAgQIECBAgAABAgTaRqBw/b8BPTvH2H17tk1lvJUAgZIVEAAs2a5TcQIECBAgQIAAAQIECBAod4HC6b9TMqP/OnSw/l+597v2EWhuAQHA5hb1PAIECBAgQIAAAQIECBAg0AwC1v9rBkSPIEAgKyAA6EMgQIAAAQIECBAgQIAAAQJFKDD37Y2xcuPWVM1sAJLikCBAoIECAoANhFKMAAECBAgQIECAAAECBAi0psD0eStTrxvat1uM6Nc9lSdBgACBhggIADZESRkCBAgQIECAAAECBAgQINDKAjXX/+tv/b9W7gOvI1AuAgKA5dKT2kGAAAECBAgQIECAAAECZSOwc9fueGr+qlR7TP9NcUgQINAIAQHARmApSoAAAQIECBAgQIAAAQIEWkNg1tL1sX7LjtSrpmZ2AHYQIEBgbwQEAPdGzT0ECBAgQIAAAQIECBAgQKAFBaZXpdf/GzWwRwzu07UF3+jRBAiUs4AAYDn3rrYRIECAAAECBAgQIECAQEkKTKsy/bckO06lCRSpgABgkXaMahEgQIAAAQIECBAgQIBA+xTYtmNXPLtgdarxpv+mOCQIEGikgABgI8EUJ0CAAAECBAgQIECAAAECLSnw0uK18c72nalXHDOqfyotQYAAgcYICAA2RktZAgQIECBAgAABAgQIECDQwgLT56Wn/07Yr3f069G5hd/q8QQIlLOAAGA59662ESBAgAABAgQIECBAgEDJCRRuAHLsaKP/Sq4TVZhAkQkIABZZh6gOAQIECBAgQIAAAQIECLRfgXe27YwX31ybApg6RgAwBSJBgECjBQQAG03mBgIECBAgQIAAAQIECBAg0DICz72xOrbt3JV7eEXHDnHkAf1yaScECBDYGwEBwL1Rcw8BAgQIECBAgAABAgQIEGgBgelV6fX/Dh3WJ3p17dQCb/JIAgTak4AAYHvqbW0lQIAAAQIECBAgQIAAgaIWKAwATrX+X1H3l8oRKBUBAcBS6Sn1JECAAAECBAgQIECAAIGyFli/ZXvMXFyw/t/oAWXdZo0jQKB1BAQAW8fZWwgQIECAAAECBAgQIECAQL0Cz8xfHbt2v1ekc2XHOGL/fd7LcEaAAIG9FBAA3Es4txEgQIAAAQIECBAgQIAAgeYUKJz+e8SIfaJrp4rmfIVnESDQTgUEANtpx2s2AQIECBAgQIAAAQIECBSXwPSqlakKWf8vxSFBgEATBAQAm4DnVgIECBAgQIAAAQIECBAg0BwCKzdujdfe2pB61NQx/VNpCQIECOytgADg3sq5jwABAgQIECBAgAABAgQINJPAU/NXpZ7UvXNFHDqsbypPggABAnsrIAC4t3LuI0CAAAECBAgQIECAAAECzSRQuP7fUSP7RacKf2VvJl6PIdDuBfzbpN1/AgAIECBAgAABAgQIECBAoOEWNIAAAEAASURBVK0FZlSlRwAeO3pAW1fJ+wkQKCMBAcAy6kxNIUCAAAECBAgQIECAAIHSE1i69p1YsHJTquJTRlv/LwUiQYBAkwQEAJvE52YCBAgQIECAAAECBAgQINA0gcLpv326dYqD9uvdtIe6mwABAnkCAoB5GE4JECBAgAABAgQIECBAgEBrC0yvWpl65ZRR/aNjxw6pPAkCBAg0RUAAsCl67iVAgAABAgQIECBAgAABAk0Q2L17dxSu/zd1jOm/TSB1KwECtQgIANaCIosAAQIECBAgQIAAAQIECLSGwMJVm2PZui2pV021/l/KQ4IAgaYLCAA23dATCBAgQIAAAQIECBAgQIDAXgkUTv8d1KtLjB7Yc6+e5SYCBAjUJSAAWJeMfAIECBAgQIAAAQIECBAg0MIChRuAJKP/OnSw/l8Ls3s8gXYnIADY7rpcgwkQIECAAAECBAgQIECgGAR27dodT1WtSlVl6ugBqbQEAQIEmkNAALA5FD2DAAECBAgQIECAAAECBAg0UuD15Rti1aZtqbumWP8v5SFBgEDzCAgANo+jpxAgQIAAAQIECBAgQIAAgUYJFE7/Hd6vWwzv171Rz1CYAAECDREQAGyIkjIECBAgQIAAAQIECBAgQKCZBWZUrUw9ceoo039TIBIECDSbgABgs1F6EAECBAgQIECAAAECBAgQaJjAjp274un5q1OFp47pn0pLECBAoLkEBACbS9JzCBAgQIAAAQIECBAgQIBAAwVeWbo+NmzdkSpt/b8UhwQBAs0oIADYjJgeRYAAAQIECBAgQIAAAQIEGiIwvWD674GDesagXl0bcqsyBAgQaLSAAGCjydxAgAABAgQIECBAgAABAgSaJjB93qrUA6ba/TflIUGAQPMKCAA2r6enESBAgAABAgQIECBAgACBegW27tgZzy5Mr/83ZbQNQOpFc5EAgSYJCAA2ic/NBAgQIECAAAECBAgQIECgcQIvvrk2tu7YlbupQ4eIY0b1y6WdECBAoLkFBACbW9TzCBAgQIAAAQIECBAgQIBAPQLTq9LTfw8e0jv6du9czx0uESBAoGkCAoBN83M3AQIECBAgQIAAAQIECBBolMCMgg1AjjX9t1F+ChMg0HgBAcDGm7mDAAECBAgQIECAAAECBAjslcDmbTsimQKcf0yxAUg+h3MCBFpAQACwBVA9kgABAgQIECBAgAABAgQI1CbwzILVsWPX7tylyo4d4sgDrP+XA3FCgECLCAgAtghr7Q997rnn4pprronTTjsthg0bFl26dImePXvG2LFj49Of/nQ8+eSTtd9YT+5DDz0Un/rUp2LMmDHRo0eP6NOnT/Z5F1xwQdxyyy2xcePGWu8+8cQTo0NmpdmG/Kn1ATIJECBAgAABAgQIECBAoNECMwrW/5s0vG/06FLZ6Oe4gQABAo0R8G+Zxmg1oezxxx8fTzzxRI0nbNu2LebOnZv9c+utt8bFF18cP/zhD6Nz5/oXgF2zZk02aPib3/ymxjPXr1+ffd6vf/3rmDJlSkyaNKlGGRkECBAgQIAAAQIECBAg0PoChRuATDX9t/U7wRsJtEMBAcBW6vSlS5dm3zRkyJC48MIL47jjjosRI0bEzp07Y8aMGfHtb387lixZEj/96U9j+/btcccdd9RZs3Xr1sWpp54azz//fLbMueeeG8mIv9GjR0dFRUUsWrQoHn/88UgCgHs6Jk+eHD/5yU/2VMx1AgQIECBAgAABAgQIEGiiwLrN2+OVpetST5liA5CUhwQBAi0jIADYMq41njp+/Pi4/vrr4/zzz88G6fILHHPMMfGJT3wijj322JgzZ0784he/iEsvvTSSUYO1HZdddlk2+JdMIf7Vr34VZ599dqpYEtRLgoI33XRTNsCYuliQSKYNH3LIIQW5kgQIECBAgAABAgQIECDQ3AJPLVgVu99b/i+6VHaMw0f0be7XeB4BAgRqCFgDsAZJy2Q88MADcdFFF9UI/lW/bcCAAdlRgNXpu+++u/o09ZusE/izn/0sm3fdddfVCP7lF07W96usFOPNN3FOgAABAgQIECBAgACBthIoXP8v2fyja6eKtqqO9xIg0I4EBACLqLNPOumkXG2qqqpy5/kn3/ve97LJZLOPL37xi/mXnBMgQIAAAQIECBAgQIBAEQtMm7cyVbsp1v9LeUgQINByAoaHtZxto5+8devW3D3JWn6FR7JhSPWmH8kagF27ds0WSdYRTNYYTH4HDx6cyy+8X5oAAQIECBAgQIAAAQIE2kbg7Q1bYu7bG1MvtwFIikOCAIEWFDACsAVxG/voZOOO6mPChAnVp7nfl156KbZs2ZJNT5w4MZLdfr/85S9HMn042VBk5MiRkYwMTIKDjz32WO6++k5ee+21OProo6Nv377ZwOGwYcPinHPOyW1GUt+9rhEgQIAAAQIECBAgQIBAwwQKp//27FIZE4f2adjNShEgQKCJAkYANhGwuW7ftWtX3HDDDbnHJesFFh6zZs3KZSXlk80+5s6dm8tLTpJRgg899FA8/PDD8c1vfjOuvPLK1PXCxPLlyyP5U30kOxEnf+6///648cYbI1mLsLZgZHX5un4XL15c16Vs/rJly+q97iIBAgQIECBAgAABAgTKSaAwAHj0yH5RWWFMTjn1sbYQKGYBAcAi6Z1kx95nnnkmW5vzzjsvjjjiiBo1W716dS4vCc4lowHPOOOMuOaaa+LQQw/Njgj89a9/HVdddVWsW7cu+5vsPpyM6Cs8OnbsGB/4wAfizDPPjMMOOyz69+8fGzZsiBdeeCG+//3vx+zZsyMJOCbrEib1SkYYNuYYPnx4Y4orS4AAAQIECBAgQIAAgbIWmF61KtU+6/+lOCQIEGhhgQ67M0cLv8Pj9yCQTP095ZRTYseOHTFo0KCYOXNm9rfwtmTX32984xu57GSq7//8z//U2Fk42Sn4hBNOiGSUYDJ679VXX41kR+D8Y+3atdlpv/l51efbt2+PSy65JG677bZs1rnnnhv33HNP9eUG/Ra+r76bFi1aFMnUYwcBAgQIECBAgAABAgTKUWDR6s1x3LceTTXtfy4/Libs1zuVJ0GgJQSSGXrVg3T8/bslhEvjmcYbt3E/JcG5JMCWBP+STT3uuuuuWoN/STWrN/2ornIyCrC2zULe//73RzKKMDmSkXxJQLHwSNb8q+vo1KlT/OhHP4px48Zli9x7773ZacF1la8tP/mXSn1/qkc71navPAIECBAgQIAAAQIECJSTQOH03349Ose4fXuVUxO1hQCBIhcQAGzDDlqwYEGcdtppsWbNmmwg784774zjjz++zhr16vXe/0EMHDgwDj/88DrLnn766blrzz77bO68oSeVlZXx2c9+Nlc8f4OSXGY9J8mIvvr+7LfffvXc7RIBAgQIECBAgAABAgTKR2B61cpUY6aM6h8dO6ZnaaUKSBAgQKCZBQQAmxm0oY9bunRpdtpv8ptMl/3xj39c61p9+c+rHrKb5O1pymx+2RUrVuQ/psHnBx10UK5ssjGIgwABAgQIECBAgAABAgQaJ5CsumX9v8aZKU2AQPMLCAA2v+ken7hy5cpI1u+bP39+tuzNN98cF1988R7vO/jgg3Nldu7cmTuv7ST/ejKab2+OxqzjtzfPdw8BAgQIECBAgAABAgTKXaBqxaZ4e8PWVDOnju6fSksQIECgpQUEAFtauOD5ye68yfTcZIfd5LjhhhviC1/4QkGp2pP7779/bjfehQsXRn37t1RVVeUeMnTo0Nx5Y06q65jcM2TIkMbcqiwBAgQIECBAgAABAgQIZARmFEz/Hdy7a4wc0IMNAQIEWlVAALAVuTdv3hxnnXVWvPDCC9m3Xn311XHllVc2qgbnn39+tvz69evj4YcfrvPe/F17k01BGnskm5Ik05Krj/rWJqwu45cAAQIECBAgQIAAAQIE0gKF03+njumfXQYqXUqKAAECLSsgANiyvrmnb9u2Lbvb77Rp07J5l19+eVx33XW56w09+fKXv5zbDfirX/1qJIHAwuP222+Pxx57LJudBBzz1wNMMh999NFYu3Zt9npt/9i+fXt87nOfy+4gnFz/0Ic+VOMZtd0njwABAgQIECBAgAABAgTeE9i1a3fMmL/qvYzM2dTRA1JpCQIECLSGwN4tDtcaNSuzd3zsYx+LBx98MNuqk08+ObvD7iuvvFJnKzt37hxjx46tcX3EiBFxzTXXxNe//vWYOXNmHHXUUdlRhIceemg2GJiM/Lvllluy9/Xu3TtuuummGs+47bbb4uyzz87+OfHEE2PcuHGRlN24cWM8//zz8YMf/CA3RXnQoEHxne98p8YzZBAgQIAAAQIECBAgQIBA/QKzlq2PtZu3pwpNsf5fykOCAIHWERAAbB3nyJ+S+8gjj0QSsKvvSNb7S9b5q+244oorYvXq1XHjjTfG66+/Hp/5zGdqFEsCd/fdd18ceOCBNa4lGUmw74477sj+qbVAJnPixIlx5513xsiRI+sqIp8AAQIECBAgQIAAAQIE6hCYUZUe/XdA/+4xtG+3OkrLJkCAQMsJCAC2nG2LPvmb3/xmdgRfMtrviSeeiGXLlmWnBiejBpPRfZdddln06dOn1jok6w5OmjQpZsyYkR3pt2LFimxAsUuXLrHvvvvG5MmT44ILLshOWa6oqKj1GTIJECBAgAABAgQIECBAoH6B6QUbgEwx/bd+MFcJEGgxAQHAFqNNP7i+HXvTJRuemjJlSiR/GntMmDAhkj/JeoIOAgQIECBAgAABAgQIEGh+ge07d8UzC1anHjzV9N+UhwQBAq0nYBOQ1rP2JgIECBAgQIAAAQIECBBoJwIvL14Xm7btTLXW+n8pDgkCBFpRQACwFbG9igABAgQIECBAgAABAgTah8CMgum/4wf3igE9u7SPxmslAQJFJyAAWHRdokIECBAgQIAAAQIECBAgUOoC0+alNwAx+q/Ue1T9CZS2gABgafef2hMgQIAAAQIECBAgQIBAkQls2b4znn9zTapWU20AkvKQIECgdQUEAFvX29sIECBAgAABAgQIECBAoMwFXnhjTWzbsSvXyo4dIo4a2S+XdkKAAIHWFhAAbG1x7yNAgAABAgQIECBAgACBshaYXpWe/jtxaJ/o061TWbdZ4wgQKG4BAcDi7h+1I0CAAAECBAgQIECAAIESE5hesAHIFNN/S6wHVZdA+QkIAJZfn2oRAQIECBAgQIAAAQIECLSRwMatO+KlxetSbz92TP9UWoIAAQKtLSAA2Nri3keAAAECBAgQIECAAAECZSvwzIJVsXPX7lz7OlV0iMn7W/8vB+KEAIE2ERAAbBN2LyVAgAABAgQIECBAgACBchSYPi+9/t/hI/aJbp0ryrGp2kSAQAkJCACWUGepKgECBAgQIECAAAECBAgUt0DhBiBTR5v+W9w9pnYE2oeAAGD76GetJECAAAECBAgQIECAAIEWFlizaVvMWrY+9ZapNgBJeUgQINA2AgKAbePurQQIECBAgAABAgQIECBQZgJPzU9P/+3WqSImDe9bZq3UHAIESlFAALAUe02dCRAgQIAAAQIECBAgQKDoBAqn/x45sl90rvTX7qLrKBUi0A4F/JuoHXa6JhMgQIAAAQIECBAgQIBA8wtMq1qZeqj1/1IcEgQItKGAAGAb4ns1AQIECBAgQIAAAQIECJSHwFvrtsT8FZtSjREATHFIECDQhgICgG2I79UECBAgQIAAAQIECBAgUB4CM+anR//16loZBw/pUx6N0woCBEpeQACw5LtQAwgQIECAAAECBAgQIECgrQWmz0tvAHLMqP5R0bFDW1fL+wkQIJAVEAD0IRAgQIAAAQIECBAgQIAAgSYI7N69Owo3ADH9twmgbiVAoNkFBACbndQDCRAgQIAAAQIECBAgQKA9CSxa/U4sWftOqslTRw9IpSUIECDQlgICgG2p790ECBAgQIAAAQIECBAgUPIChbv/DujZOcbu27Pk26UBBAiUj4AAYPn0pZYQIECAAAECBAgQIECAQBsIFE7/nZIZ/dehg/X/2qArvJIAgToEBADrgJFNgAABAgQIECBAgAABAgT2JJCs/zejKr0DsPX/9qTmOgECrS0gANja4t5HgAABAgQIECBAgAABAmUjMPftjbFy47ZUewQAUxwSBAgUgYAAYBF0gioQIECAAAECBAgQIECAQGkKTJ+XHv03tG+3GNGve2k2Rq0JEChbAQHAsu1aDSNAgAABAgQIECBAgACBlhaouf5ff+v/tTS65xMg0GgBAcBGk7mBAAECBAgQIECAAAECBAhE7Ny1O56avypFceyY/qm0BAECBIpBQACwGHpBHQgQIECAAAECBAgQIECg5AReXbou1m/Zkar3lFEDUmkJAgQIFIOAAGAx9II6ECBAgAABAgQIECBAgEDJCRRO/x01sEcM7tO15NqhwgQIlL+AAGD597EWEiBAgAABAgQIECBAgEALCBQGAO3+2wLIHkmAQLMICAA2C6OHECBAgAABAgQIECBAgEB7Eti2Y1c8u2B1qslTR5v+mwKRIECgaAQEAIumK1SEAAECBAgQIECAAAECBEpF4KXFa+Od7TtT1T1mlA1AUiASBAgUjYAAYNF0hYoQIECAAAECBAgQIECAQKkITJ+X3v33oP16R78enUul+upJgEA7ExAAbGcdrrkECBAgQIAAAQIECBAg0HSBaVUrUw+x/l+KQ4IAgSITEAAssg5RHQIECBAgQIAAAQIECBAoboF3tu2MF99ck6rk1DGm/6ZAJAgQKCoBAcCi6g6VIUCAAAECBAgQIECAAIFiF3jujdWxfefuXDUrOnaIIw/ol0s7IUCAQLEJCAAWW4+oDwECBAgQIECAAAECBAgU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qPeswMzceg/T8+n7nP7T985g21//+ldfGn3/Ddz0fVrfrzUPq5EjcHdGhOOpw/nz59fo3zd1KygoqPn888/jslJzpw61HIGb9SNAnc84/ml27dplvG//8Y9/9N+dEc9jrT9Nb/3IGdbm7bffrrF6u9t1Y63KW2PNURY0faT604MuuOACXx2//vrrdfKxVnH27Y/2b0idTFI8ItY6DLxcq+efr74GDBgQuDtsOFIdcg/W5XPr+wLvhXVtiUGgIQWS22/a+vTDlh4CDz30kOjwhb1799qrx+qKeNrLT8P6C7X+oqpbr1695Nprr43rovXY6667TnRoqg5d0vNpLzXt0aTzGN11111ifTi389Z0zD8WHfP5558vM2bMsBOfeOKJMn78eFm0aFHIg3UoqNZFrJsOD7/kkkvs14UOabQ+rNkTbevcG9pr86WXXvKVQ1ce1teM9QUr1tNkXHrri5/okFGr0UiOPvpoe9i79cXFHsL0ySefiPbocoYz6bCkeId162tDV5zU+1nnvtK5Iq+++mp7iNTChQtl0qRJsn79ettf78VkLVqRbhWuiyW988479mX1799fBg8e7Molcv8lxmg19NgraDu5OPeUhnX+W6cnj7P/oosucp76HpP5Hqbvga+99ppYP4TJ9ddfb5dR71/922A1GsrkyZPt4asafvDBB31lTOcnidahfs7QaTKchVUmTpxo9wAM936pc5Lpv1g3/Zzz61//WsaNGyf6d1s/5+gqsdrjSHsgPvbYY76/t71795bbbrst1lOkXPpE62/t2rX25w99nxwzZowMGjTIVzc67/Ebb7xh/7O+hNk29957b8y95f1R9T3x/ffft3tz6+cs/dyqCzrppn/jrR/j7Oc6zYO+ljJhS7QOA43084hOPaKb1YgauDuhMPdgXT63vi/wXljXlhgEGlSgIVsfOXdqC2hPpBYtWvh+0bReyMZz6w9+yB5g0fQAVJ2qqqqa3/3ud0a+geexGrDsdKmtmbzSB/pFClsrHQYtXKQeSP77w53Dmk+p5s033wx6DiLrCmh9hPN09mmvMqtxqW4GVox/3QTrvekcpL1sR40aFfJ81jCmmnDHO/nwGFrg0Ucf9fkG67kV6shIdei/33lNBHvk/gsu7N/rLphbYFzwXNx5D/MvS6gegHp+7XFt/RDmez0FllHfr7XHU6Zs/m6BFsHC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AQIECBAgQIAAAQIECBAgQIAAgTMBB+DZIOoQIECAAAECBAgQIECAAAECBAgQKAUcgKWmLAIECBAgQIAAAQIECBAgQIAAAQJnAg7As0HUIUCAAAECBAgQIECAAAECBAgQIFAKOABLTVkECBAgQIAAAQIECBAgQIAAAQIEzgQcgGeDqEOAAAECBAgQIECAAAECBAgQIECgFHAAlpqyCBAgQIAAAQIECBAgQIAAAQIECJwJOADPBlGHAAECBAgQIECAAAECBAgQIECAQCngACw1ZREgQIAAAQIECBAgQIAAAQIECBA4E3AAng2iDgECBAgQIECAAAECBAgQIECAAIFSwAFYasoiQIAAAQIECBAgQIAAAQIECBAgcCbgADwbRB0CBAgQIECAAAECBAgQIECAAAECpYADsNSURYAAAQIECBAgQIAAAQIECBAgQOBMwAF4Nog6BAgQIECAAAECBAgQIECAAAECBEoBB2CpKYsAAQIECBAgQIAAAQIECBAgQIDAmYAD8GwQdQgQIECAAAECBAgQIECAAAECBAiUAg7AUlMWAQIECBAgQIAAAQIECBAgQIAAgTMBB+DZIOoQIECAAAECBAgQIECAAAECBAgQKAUcgKWmLAIECBAgQIAAAQIECBAgQIAAAQJnAg7As0HUIUCAAAECBAgQIECAAAECBAgQIFAKDD9r2QsIW/SSAAAAAElFTkSuQmCC\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x117a1dc10>"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%matplotlib notebook\n",
"aapldf['close'].plot()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"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.7.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment