mirror of
https://github.com/smyalygames/FiniteVolumeGPU.git
synced 2025-05-18 06:24:13 +02:00
520 lines
206 KiB
Plaintext
520 lines
206 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"#Lets have matplotlib \"inline\"\n",
|
|
"%matplotlib inline\n",
|
|
"\n",
|
|
"# Add line profiler\n",
|
|
"%load_ext line_profiler\n",
|
|
"\n",
|
|
"#Import packages we need\n",
|
|
"import numpy as np\n",
|
|
"from matplotlib import animation, rc\n",
|
|
"from matplotlib import pyplot as plt\n",
|
|
"from mpl_toolkits.axes_grid1 import make_axes_locatable\n",
|
|
"\n",
|
|
"import subprocess\n",
|
|
"import os\n",
|
|
"import gc\n",
|
|
"import datetime\n",
|
|
"import importlib\n",
|
|
"import logging\n",
|
|
"from socket import gethostname\n",
|
|
"\n",
|
|
"import pycuda.driver as cuda\n",
|
|
"import pycuda.compiler\n",
|
|
"\n",
|
|
"try:\n",
|
|
" from StringIO import StringIO\n",
|
|
"except ImportError:\n",
|
|
" from io import StringIO\n",
|
|
" \n",
|
|
"#Set large figure sizes\n",
|
|
"#Note, this prevents nice figures for articles...\n",
|
|
"rc('figure', figsize=(16.0, 12.0))\n",
|
|
"rc('animation', html='html5')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from GPUSimulators import Common, IPythonMagic, LxF, FORCE, HLL, HLL2, KP07, KP07_dimsplit, WAF, Autotuner"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Console logger using level INFO\n",
|
|
"File logger using level DEBUG to autotuning.log\n",
|
|
"Python version 3.6.5 |Anaconda custom (64-bit)| (default, Mar 29 2018, 13:32:41) [MSC v.1900 64 bit (AMD64)]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"%setup_logging --out autotuning.log"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"autotuner = Autotuner.Autotuner()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {
|
|
"scrolled": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 2 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 2 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAT8AAAEWCAYAAAAQBZBVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3XuYXFWZ7/Hvj9xIuIUQEiIEAYebIAaNDKIgF7nIcEAdnIOOnqgMGRkGgTNeUJ5HRkdnUFHGyzAMMzAE5YmAgHBEhQxyOQ4EDokJCQQIyi0QCZAABmIu3e/5Y6/Gounq2lW9qrqq6/d5nv101a5d7169Sb/sy1rvUkRgZtZtNhvuBpiZDQcnPzPrSk5+ZtaVnPzMrCs5+ZlZV3LyM7Ou5ORnZl3Jyc/qIukxSe/tt+7jkn5V7fO0/lBJK1rVTrNanPzMrCs5+ZlZV3LyM7OuNHq4G2Ad6SeSNlW8HwssHK7GmDXCZ37WiPdHxMS+Bfib4W6QWb2c/MysK/my15phjKTNK96/eoncbz3A+nBdNRsGPvOzZvgZsK5i+fu0fsd+69cBbxqG9pkh/0/XzLqRz/zMrCs5+ZlZV3LyM7Ou5ORnZl2pI7q6jJu4eUzYYashx1nfk+fXHaU8D4k2rBuTJQ4AozI9uNqsvR6AjXt0XZY4Gjc2Sxw2y3e+0Ds6UywNPcQf1q1h44aXhxTp6MO2iOdX95TadsF962+KiGOGsr+h6ojkN2GHrTji0j8fcpxHVk/O0BrYevP1WeI8tWhaljgAm7bbmCXOZuPK/eOtRZmS6Js+sihLnNE77ZIlTu+E/t0UG7dh6hZZ4vSOHnr2W3jn94Yc4/nVPdxz086lth01bXmeP8Yh6IjkZ2btL4Beeoe7GaU5+ZlZFkGwMfJcObSCk5+ZZeMzPzPrOkHQ00EjxprW1UXS5pLukbRY0v2SvpzW7yrpbknLJV0pKdNjODMbbr1EqaUdNLOf33rg8Ih4KzADOEbSgcDXgQsiYndgDXByE9tgZi0SQA9RaqlF0qWSVklaWrHuQ+lEqlfSzIr1u0haJ2lRWi4q096mJb8orE1vx6QlgMOBH6f1c4D3N6sNZtZaGc/8LgP69wNcCnwQuGOA7X8TETPS8qkyO2jqPT9Jo4AFwJ8A/wL8BnghIvrqu62gKHM00HdnA7MBxk/dspnNNLMMAtiY6Z5fRNwhaZd+65YBSBl6ddPk4W0R0RMRM4CdgAOAvQfarMp3L46ImRExc9zEfB1Lzaw5ouQlb7rsnSzp3opl9hB3v6ukX0u6XdLBZb7Qkqe9EfGCpNuAA4GJkkans7+dgKdb0QYza7KAnvInfs9FxMzam5WyEtg5Ip6X9HaKCbb2iYiXBvtSM5/2bi9pYno9HngvsAy4FTgxbTYLuL5ZbTCz1ilGeJRbsu43Yn1EPJ9eL6C4vbZHre8188xvGjAn3ffbDLgqIn4q6QHgR5K+CvwauKSJbTCzlhE9Oaos1LtXaXtgdUT0SNoN2B34ba3vNS35RcR9wP4DrP8txf0/MxtBigceeZKfpLnAoRT3BlcA5wKrge8B2wM3SloUEUcDhwBfSXNJ9wCfiojVtfbhER5mlkXRzy9P8ouID1f56LoBtr0GuKbefTj5mVk2vZnO/FrByc/Mssh55tcKHZH8thq9nvdMenjIcaaMW1t7oxJuXPDWLHH2fsfjWeIArHxp6yxx1m/M809i9Og8pY02zHtjljgc+ViWMJvNeHOWOABjXtqQJc6GbcdliTNUgejpoJkxOiL5mVln8GWvmXWdQGyIUcPdjNKc/Mwsi6KTsy97zawL+YGHmXWdCNETnXPm18yxvdMl3SppWSpAeEZaP0PS/FR08F5JHu1hNkL0olJLO2jmmd8m4O8iYqGkrYAFkuYB3wC+HBE/l3Rsen9oE9thZi1QPPDonIvJZo7tXUlRaoaI+L2kZRSFSwPo65S2DS5pZTYi+IHHAFJF1v2Bu4EzgZsknU9x2X1QK9pgZs3X00H9/JqepiVtSTHo+MxUXPBU4KyImA6cRZWSVpJm91V5XbsmT094M2uevhEeZZZ20NRWSBpDkfiuiIhr0+pZQN/rq6lS3qqyjP2W23p2S7NO0BublVraQTOf9orirG5ZRHy74qOngfek14cDy5vVBjNrnaKwQeec+TXznt+7gI8BSyQtSuu+CJwCfEfSaOAPpBnazKyzBWKjh7dBRPwKqnboeXuz9mtmwyMCd3I2s25UroNzmU7Oki6VtErS0op1H0oDJnolzey3/RckPSLpIUlHl2mtk5+ZZREUZ35llhIuA47pt24p8EHgjsqVkt4MnATsk75zYZo4bVCd0x3bzNperocZEXFH6h9cuW4ZQPEs9TVOAH4UEeuBRyU9QtGL5K7B9tERyW/1hgnMfeIdQ47zyoYxGVoDR71tSZY4m3rz3Rw+furiLHG+9dPjs8RZt2WeSs5v2GvQeadLm3JXnkrXzx5Wc0bE0nr33zNLnNG/3zjkGKpjtvFqAtVTzHSypHsr3l8cERc3uOsdgfkV71ekdYPqiORnZu2vmLqydEp5LiJm1t6slIEybs1s7uRnZpkMz6TlFGd60yve70SJmgF+4GFmWQTDNsLjBuAkSeMk7QrsDtxT60s+8zOzbHKd+UmaS1HqbrKkFcC5wGrge8D2wI2SFkXE0RFxv6SrgAcoSumdFhE1bzo7+ZlZFhHKdlYXER+u8tF1Vbb/GvC1evbR8krO6bPTU2fE+yV9o1ltMLPWKR54jCq1tIPhqOQ8laJfzn4RsV7SlCa2wcxaprPm8BiOSs6nAOelDolExKpmtcHMWqd44OFipq/Rr5LzHsDBku6WdLukofdeNrO24JJWFfpXck6lrLYFDgTeAVwlabeIiH7fm00qdzV2Sp7e+WbWPHWO8Bh2w1HJeQVwbRTuAXqByf2/W1nJecw245vZTDPLpJfNSi3toGlnfoNUcv4JRQXn2yTtAYwFnmtWO8ysNSJgY297JLYyhqOS86XApalO1wZgVv9LXjPrPMVlr5NfrUrOH23Wfs1s+AzT2N6GeISHmWXRaV1dnPzMLBNf9ppZlyozP0e7cPIzsyyKp73tMW63jI5IfluNWc+hOwx9bvOFa6bX3qiEA7Z6NEucr/2/Y7PEAXjbzMezxNm0VZ7y8+rJcwbw0MM1q5GXMnqvJ7PE2f7WLGEAWHXIsixxtOduQ4/R2/Iy9sOuI5KfmXUGX/aaWdfptKe9nfNoxszaXq4y9lUmLZ8kaZ6k5enntmn9oZJelLQoLV8q01YnPzPLIkJsis1KLSVcxusnLT8buCUidgduSe/7/N+ImJGWr5TZgZOfmWXTGyq11BIRd1DM2VHpBGBOej0HeP9Q2josZezT55+RFJJeV9HFzDpP3z2/HMmviqmpSHJfseTKKvDvlLRY0s8l7VMmWMvL2EfEA5KmA0cCTzRx/2bWYnUktsmS7q14f3FEXNzgbhcCb4yItZKOpagctXutLw1HGfsHgAuAzwHXN2v/ZtZadfbzey4iZta5i2ckTYuIlZKmAasAIuKlV9sQ8TNJF0qaHBGDlspreRl7SccDT0XE4hrfmS3pXkn3vrJmfQtaaWZD1YtKLQ26AZiVXs8inTxJ2iHVD0XSARR57flawVpaxp7iUvgc4Kha30unwBcDTNtnW9f7M2tzEbApUzHTKpOWn0cx7cXJFLfMPpQ2PxE4VdImYB1wUpkaoU1Nfv3L2Et6C7ArsDgl6p2AhZIOiIjfNbMtZtZ8uTo5DzJp+REDbPt94Pv17qOlZewjYgkVT2gkPQbMrHVtbmbtr9PG9jbznl9fGfvDK3pe5xvJb2ZtJ0KllnYwXGXs+7bZpVn7N7PWc2EDM+s6EZ1V2MDJz8wyET2eutLMulG73M8royOS3+p1E5i7pN7O4K939F55Kuf+x2PvyhLnsD0ezhIH4Nqn988SZ889n8oS56HHpmWJs9nYPJWl739opyxx9tz96SxxALb85dgscV4+JkOV6vUbhhyi0+r5dUTyM7MOEMV9v07h5Gdm2fhpr5l1nfADDzPrVr7sNbOu1ElPe2ueo0oaV2bdANsMWMlZ0jclPSjpPknXSZrYWNPNrJ1EdNbwtjIX6HeVXNdfXyXnvYEDgdMkvRmYB+wbEfsBDwNfKNtYM2tvTS5jn1XVy15JO1BUXh4vaX/+OE53a2BCrcDVKjlHxM0Vm82nqMVlZiPASLnndzTwcYqae9+uWP974Iv17KSyknO/jz4JXFnlO7OB2QCjttumnt2Z2TAIRO9IeNobEXOAOZL+PCKuaXQHlZWcK2vtSzqH4tL4iir7f7WS87jdduyg/5+Yda9O+kMt87T3p5I+AuxSuX2ZiYH7V3KuWD8LOA44oky5aTPrAJHvaa+kSylyxKqI2Detm0RxpbgL8BjwFxGxJhVO/g5wLPAK8PGIWFhrH2XOUa+nmCx4E/ByxVKr8a+r5JzWHwN8Hjg+Il4psX8z6xRRcqntMuCYfuvOBm6JiN2BW9J7gPdRTFW5O8Wtsn8ts4MyZ347RUT/RpTRV8l5iaRFad0Xge8C44B5aR6P+RHxqQbim1mbyXXmFxF3pGcFlU6gmNQIYA5wG8WJ1AnA5ekqcr6kiX1TXA62jzLJ705Jb0nzb5Q2SCXnn9UTx8w6QwC9vU2dtHxqX0JLc/f2zQe0I1BZ2mZFWtdY8pO0hOL3GQ18QtJvgfUUCS1SPz0zs0IAzZ20vJqBdjqkqSuPa7wtZtaNmvz48pm+y1lJ04BVaf0KYHrFdjsBNQsvVn3gERGPR8TjFP36+i/5Kjqa2ciR74HHQG4AZqXXsygexvat/18qHAi8WOt+H5S757eQIquuoTi9nAislLQKOCUiFtT5C9TtjVus5rvv/OGQ43xmaZ7BJDtPfCFLnDdNeDZLHICjJ9V1S7aqf3/ykCxx3r77Y1niLFi+S5Y42pin8+3Dy/JUhAaYulue6arX/nBK7Y1q2PB3OapK5xu3K2kuxcONyZJWAOcC5wFXSToZeAL4UNr8ZxTdXB6h6OryiTL7KJP8fgFcFxE3pUYdRfEI+irgQuBPS/4+ZjbSZbrsjYgPV/noiAG2DeC0evdR5n+HM/sSX9rRzcAhETGfosuKmVnRyblXpZZ2UObMb7WkzwM/Su//J7BG0iigt2ktM7MO1B6JrYwyZ34foXh68hOKG4w7p3WjgL9oXtPMrOM094FHVjXP/CLiOeD0Kh8/krc5ZtbR2iSxlTFYJ+d/jogzJf0fBviVIuL4wQJLmg5cDuxAcXl8cUR8p9rg5IZ/AzNrD/V1ch52g535/SD9PL/B2H2VnBdK2gpYIGkeRY3AWyLiPElnUwxO/nyD+zCzNtJJNZoGq+e3IP28XdJ4YOeIeKhs4GqVnKk+ONnMOl2bPMkto8wERv8DWETR3w9JMyTdUM9O+lVyfs3gZGDAHpqSZku6V9K9L67eVM/uzGyYKMot7aDM096/Bw4AXgCIiEUU9+tKqVbJuZaIuDgiZkbEzG0meYZNs7ZX9klvByW/TRHxYiPBq1RyfiYNSqbf4GQz62gqHniUWdpAmeS3NJWxHyVpd0nfA+6s9aVqlZypPjjZzDrdCDvzOx3Yh6KW31zgJeDMEt/rq+R8uKRFaTmWYnDykZKWA0em92Y2EvSWXNpAmU7OrwDnpKW0QSo5wwCDk82sw42Ufn7VOjf3qdXJ2cy6T7s8yS1jsDO/vs7NAv4d+KvmN8fMOtpISH4RcXvfa0lrK9+bmXW6sh3ohjWfP7lu2yxVmDduzNNfcOsxf8gS583jn8oSB2DSqLVZ4jzy8LQscf5kj5pVxEvZc5c8cR56eMcscUa/NCpLHIBpW5Tu9jqo5X/YPkucHDrpsrfq015Jk/oWim4u2/ZbZ2b2R0ExvK3MUoKkMyQtlXS/pDPTur+X9FS/HiQNGexUaEH6dfpaurDiswB2a3SnZjZCZTrzk7QvcArF6LINwC8k3Zg+viAiGi248qrB7vntOtTgZtZdMl727g3MT13tkHQ78IFs0SnXydnMrJzyIzwm9xUuScvsfpGWAodI2k7SBIrZ2frm5v1bSfdJulTSto021RUDzCyf8md+z0XEzKphIpZJ+jowD1gLLKaoEfqvwD+kPf0D8C3gk400tWlnfikrr5K0tGLdDEnz043KeyUd0Kz9m1lrlS1nVfbSOCIuiYi3RcQhwGpgeUQ8ExE9EdFL0f+44RxSpp7fyQOsKzMe9zKK+X0rfQP4ckTMAL6U3pvZSJH3ae+U9HNn4IPA3L6KUMkHKC6PG1LmsvdESX+IiCtSQy6kxHy9EXFHKmL6mtXA1un1NsDT5ZtqZu0ucz+/ayRtB2wETouINZJ+IGkGRS55DPjrRoOXSX4fBG6Q1Au8D1gdEX/T4P7OBG6SdD7FWedB1TZMN0BnA4zZfpsGd2dmLZUx+UXEwQOs+1iu+DU7OQPjKcb1fo6inNVXhtDJ+VTgrIiYDpxFUe9vQJWVnEdtPaHB3ZlZy2S+59dsZTs59/38s7Q02sl5FnBGen018B8NxDCzdtUmia2MVndyfhp4D8WMbYcDy5uwDzMbJmqTQqVllHnae5qkiRXvt5VU856fpLnAXcCeklakp8anAN+StBj4R9I9PTOzVivzwOOUiPiXvjfpicspwIWDfSkiPlzlo7fX0T4z6yQj4bK3wmaSFFHMxS5pFDC2uc0ys47TRg8zyiiT/G4CrpJ0EUVe/xRpAnMzs9cYYcnv8xQdCU+leOJ7M35Ka2YDGUnJLyJ6JV0C/IriV3soInqa3rIKfzLhWX6y/78POc7jm7auvVEJt67dO0uc5eunZokD8NlJeSo5f+e9P8wS59lMx3rOE+/MEudv3n1LljijMv51X7T03VnibHp2/JBj9G4YeoVq0VlPe2smP0mHAnMohpIImC5pVkTc0dymmVlHGYH3/L4FHBURDwFI2oNi8nI/tTWz1xphyW9MX+IDiIiHJY1pYpvMrFONsOR3b7rn94P0/i8phr6Zmb3GSLvsPRU4Dfg0xT2/O6jRwdnMutRISn4RsR74dlpKk3QpcBywKiL2rVh/OvC3FCWpb4yIz9XVYjNrTzFCnvZKWsIgeTwi9qsR+zLg+8DlFTEPA04A9ouI9X2VWs1shBghZ37HDSVwlUrOpwLnpbNJImLVUPZhZu2lk+75Va3qEhGP91+Al4En0utG7AEcLOluSbdLeke1DSXN7pvWbvXqDjqXNutm5aeurEnSGZKWSrpf0plp3SRJ8yQtTz8bnrpysErOB0q6TdK1kvZPs7AtBZ6R1H9iorJGA9sCBwKfpRgzPOBsJpWVnCdN8vTCZm2vbOIrkfwk7UtRAu8A4K3AcZJ2B84GbomI3YFb0vuGDJZVvk9Rc28u8EvgryJiB+AQ4J8a3N8K4Noo3AP0ApMbjGVmbURkLWO/NzA/Il6JiE3A7RSztZ1AMeKM9PP9jbZ3sOQ3OiJujoirgd9FxHyAiHiw0Z0BP6Go4Nw3UmQs8NwQ4plZG6kj+U3uu62Vlv6FjZcCh0jaTtIE4FhgOjA1IlYCpJ8NPzQd7IFH5Y22df0+q5m7UyXnQyl+yRXAucClwKXpEnoDMKuvTqCZjQDl/5qfi4iZVcNELJP0dWAesBZYTNE9LpvBkt9bJb1EcTY7Pr0mvd+8VuBBKjl/tL4mmlnHyDt15SWkGR4l/SPFbbNnJE2LiJVpAvOGe4wMNoHR0GvcmFn3yFzVRdKUiFglaWeK+cPfCexKMQvkeenn9Y3GLzO8zcysnLw3sa6RtB2wETgtzR90HkUvkZOBJ4APNRrcyc/Mssk5vC0iDh5g3fPAETnid0Tye/jFqRz+szNqb9giY5/Lc0dgs73yVF8GeONb8zw0f3pjw31GX2PZy9OyxNl63B+yxPm3xYdkibPvTk9niQOw25Tns8T5zRM7Dz1IpjO2Thrh0RHJz8w6QB2jN9qBk5+Z5ePkZ2bdpm+ER6dw8jOzbNTbOdnPyc/M8uiwe35NK5ci6VJJq9JQtv6ffUZSSHJRA7MRJGNhg6ZrZq2oy4DXlb6SNB04kqKDopmNJBnr+TVb05JfmtR89QAfXQB8jrY5BGaWSyed+bX0np+k44GnImJxlRqmldvOBmYDjJo0sQWtM7Mha5PEVkbLkl+qyXUOcFSZ7SPiYuBigHFv3KmDDqlZl+qw2dtaWR/+TRQVGRZLegzYCVgoaYcWtsHMmiRzJeema9mZX0QsoaLqakqAMyPClZzNRooOqk3czK4uc4G7gD0lrUglaMxsBPOZH4NWcu77fJdm7dvMhkEbdWMpwyM8zCybTnrg4eRnZtl0UvLzbOBmlkdQPPAos5Qg6SxJ90taKmmupM0lXSbpUUmL0jKj0eb6zM/Mssn1MEPSjsCngTdHxDpJVwEnpY8/GxE/Huo+OiL5bbflWj5+0K+GHOcXT++doTXw3DZbZYnT8/gWWeIAPLJnnu6SS3//hixxthqTp/z8M2vzHOszZvwyS5xlr+Qpzw9w+xNvyhJnnz/97ZBjPL/F+gwtIfcDj9EU0+ZuBCYA+eYQwJe9ZpZJnZ2cJ0u6t2KZXRkrIp4CzqcogLISeDEibk4ff03SfZIukDSu0fZ2xJmfmXWAiHqKmT4XETOrfShpW+AEilFhLwBXS/oo8AXgd8BYiuGvnwe+0khzfeZnZvnkK2n1XuDRiHg2IjYC1wIHRcTKKKwH/hM4oNGmOvmZWTYZR3g8ARwoaYKKElBHAMskTQNI694PvK5YclktreQs6ZuSHkzX69dJcq0qs5EigN4ot9QKFXE38GNgIbCEIlddDFwhaUlaNxn4aqPNbXUl53nAvhGxH/AwxfW7mY0UGSs5R8S5EbFXROwbER+LiPURcXhEvCWt+2hErG20qS2t5BwRN0fEpvR2PkVZKzMbIVzYoJxPAlcO4/7NLDNPXVmDpHOATcAVg2zzahn7baaNb1HLzKxhruoyOEmzgOOAIyKqD/KrLGP/hn0mdtAhNetORSfnzvlTbfUERsdQdEp8T0S80sp9m1kLuKpL1UrO3we2AualigwXNWv/ZtZ6iii1tINWV3K+pFn7M7Nh5nt+Ztad6hrbO+yc/Mwsnza5pC3Dyc/M8uiwScud/MwsH5/55bXm+a24Zs6hQ44TmZ5tT3nv77LEGbXdi1niALx7y4eyxLn8wYYrBL3GmDE9WeIcvNPQqxQD3Lc2z0jKe1bunCUOwOl735YlzpVPVS2LV1pPrj+Ozsl9nZH8zKwzqLdzrnud/Mwsj6CjOjk7+ZlZFqJ9OjCX4eRnZvl0UPJrdSXnSZLmSVqefm7brP2b2TDIOGl5s7W6kvPZwC0RsTtwS3pvZiNB3z2/MksJks6SdL+kpZLmStpc0q6S7k4nUFdKGttoc1tayZliKro56fUciglIzGyEUG9vqaVmHGlH4NPAzIjYFxgFnAR8HbggnUCtAU5utK2tnr1takSsBEg/p7R4/2bWNCUvectf9o4GxksaDUygmLz8cIqJjWCIJ1BtO3WlpNl9s7n3vPLycDfHzGoJ6kl+k/v+vtMy+zWhIp4CzqeYwnIl8CKwAHihYh6gFcCOjTa31U97n5E0LSJWpvk3V1XbsLKS8/gdprfHHVIzG1z5fn7PRUTVoSnpYegJwK7AC8DVwPsG2LTh3NDqM78bgFnp9Szg+hbv38yaKGMx0/cCj0bEsxGxEbgWOAiYmC6DoZj98elG29rqSs7nAUdKWg4cmd6b2UiR757fE8CBkiZIEnAE8ABwK3Bi2mZIJ1CtruQMxS9hZiNNBPTkGd8WEXdL+jGwkGKmx19T3Aa7EfiRpK+mdQ1Xh/cIDzPLJ2MH5og4Fzi33+rfAllKDzn5mVk+bTJ6owwnPzPLIwDP4WFm3ScgOqemVUckv96x8PL0oR/ULZ/I83D7sB2WZ4nzo1velSUOwPS91maJs++0lVninDhlQZY4X7jzg1nifHC/X2eJM3OHJ7PEAVixYVKWONO3XDPkGEs321R7o1qCbA88WqEjkp+ZdQjf8zOzruTkZ2bdp31q9ZXh5GdmeQTgCYzMrCt10JnfsJS0GqhC63C0w8xySsPbyixtoOXJb5AKrWbWyQIiekst7WC4Lnv7KrRupKjQ2nBZGjNrIx00wqPlZ34DVWiNiJv7b/eaSs5rXcnZrCN49rbq+lVofQOwhaSP9t8uIi6OiJkRMXPUllu0uplmVq+I4mlvmaUNDMcDj2oVWs2s03XQmd9w3PN7tUIrsI6iuOm9w9AOM8sqiJ6e4W5EaS1PfoNUaDWzTuaSVrVVqdBqZp0uUzcWSXsCV1as2g34EjAROAV4Nq3/YkT8rJF9eISHmWURQGQ684uIh4AZAJJGAU8B1wGfAC6IiPOHug8nPzPLI5pWzPQI4DcR8XgxkVsewzK8zcxGpujpKbUAk/v68aZl9iBhTwLmVrz/W0n3Sbo0dZ1riKJNHjsPRtKzwOM1NpsMPJdhd47TuliO0z5x3hgR2w9lJ5J+kfZVxnMRcUyJmGMpRoDtExHPSJpK8bsE8A/AtIj4ZEPt7YTkV4akeyNipuM0N047tslxWhNnOEg6ATgtIo4a4LNdgJ+mGgF182WvmbWzD1NxyStpWsVnHwCWNhrYDzzMrC2lgRBHAn9dsfobkmZQXPY+1u+zuoyk5Jero7TjtC6W43RWnJaKiFeA7fqt+1iu+CPmnp+ZWT18z8/MupKTn5l1pRGR/BqdEyR1klwlaWnFukmS5klann7W7ERZJc43JT2YOmNeJ2liI3EqPvuMpJBUsx9VtTiSTpf0UDpW32jw95ohab6kRalz6gEl4kyXdKukZWnfZ6T1dR3rQeLUdayrxan4vNSxHixOA8e62u9W1/GWtLmkeyQtTnG+nNbvKunudKyvTP3nultEdPQC7Ag8CoxP768CPl7yu4cAbwOWVqz7BnB2en028PUG4xwFjE6vv95onLR+OnATRUfvyQ225zDgv4Bx6f2UBuPcDLwvvT4WuK1EnGnA29LrrYCHgTfXe6wHiVPXsa4Wp95jPUh7GjnW1WLVdbwBAVum12OAu4ED09/FSWn9RcCpQ/m7GwnLiDjz449zgoymjjlBIuIOYHUb5T/0AAAFrElEQVS/1ScAc9LrOcD7G4kTETdHxKb0dj6wU4PtAbgA+BzF4/2aqsQ5FTgvItanbVY1GCeArdPrbShxrCNiZUQsTK9/Dyyj+J9WXce6Wpx6j/Ug7YE6jvUgcRo51tVi1XW8o7A2vR2TlgAOB36c1pf6dz3SdXzyi5JzgtRhakSsTLFXAlOG3ko+Cfy8kS9KOh54KiIWD7ENewAHp0uf2yW9o8E4ZwLflPQkxXH/Qj1fTr3y96c4I2n4WPeLU6muY10ZZyjHul97hnSs+8Wq+3hLGiVpEbAKmAf8Bnih4n8QK/hjsu9aHZ/8VHJOkOEi6RyKoq1XNPDdCcA5FHXMhmo0sC3FJdBngaukhkpknAqcFRHTgbOAS8p+UdKWwDXAmRHxUgP7HjROvce6Mk76XkPHeoD2NHysB4hV9/GOiJ6ImEFxBnwAsPdAm5Vpz0jW8cmP/HOCPKM0hCb9rHnJUo2kWcBxwF9GutlSpzdRJPXFkh6j+Me8UNIODcRaAVybLovuAXopPwi90iyKYwxwNcUfV02SxlD8UV8REX3fr/tYV4lT97EeIE5Dx7pKexo61lViNXS8ASLiBeA2iiQ8Md0WIv1uXT9d7EhIfq/OCZL+73oExf2SRt1A8Q+O9PP6RoJIOgb4PHB8FD3V6xYRSyJiSkTsEhG7UPxRvS0iftdAuJ9Q3PdB0h7AWBqrGPI08J70+nBgea0vpP8ulwDLIuLbFR/Vdayrxan3WA8Up5FjPcjvVfexHiRWXcdb0vZ9T7sljac4OVgG3AqcmDZr+N/1iDLcT1xyLMCXgQcpBjn/gPSUrcT35lLcJ9xI8Y/9ZIrhNLdQ/CO7BZjUYJxHgCeBRWm5qJE4/T5/jHJPewdqz1jgh+kYLQQObzDOu4EFwGKKe1JvLxHn3RSXWfdVHI9j6z3Wg8Sp61hXi1PvsR6kPY0c62qx6jrewH4U8+Lcl/b/pbR+N+CedKyuLvs3MpIXD28zs640Ei57zczq5uRnZl3Jyc/MupKTn5l1JSc/M+tKTn5dQFJPqgqyWNJCSQel9btogAoyJWM+NljVE0lnSPrnivf/Jum/Kt6fLum76fWdVWJcJunE9PrMNOKl77O1A33HrCwnv+6wLiJmRMRbKcaG/lML9nknrx1pMwPYRtKo9P4g4L8BIqLMiJwzKYpWmGXh5Nd9tgbW9F+Z6sD9p6Qlkn4t6bC0fpSk89P6+ySd3u974yX9QtIp/UL+Gtgjfb4N8ApFx923pM8PokiQr57FqfB9SQ9IupFU6EDSpynGbd8q6daKfX8tnc3OVzGfq1lpI2kCI6tufKrysTlF3bjDB9jmNICIeIukvYCb09CsT1CMed0/IjZJmlTxnS2BHwGXR8TllcHStouAdwDjKUYnLAcOkrSKYv6YJ/u14QPAnhQJcirwAHBpRHxX0v8GDouIvmFiWwDzI+IcFcVCTwG+Wv+hsW7lM7/u0HfZuxdwDHD5AFVG3k0xNJCIeJCimOceFGNDL4pUDikiKuv7XQ/8Z//EV+G/Kc7wDgLuSstBwLtIZ339HALMjaIqydPALwf5nTYAP02vFwC7DLKt2es4+XWZiLiLosLI9v0+qlZySVQvf/TfwPsGKdfUd9/vnRSJbxlFdeJX7/cN1MQq6/vbGH8cm9mDr2KsTk5+XSZd0o4Cnu/30R3AX6Zt9gB2Bh6iKKP+qb5ySP0ue7+U4lxYZXd3UpRT2j4iVqVk9SxF/cWBzvzuAE5K9xmnUZSD7/N7ivLuZlk4+XWH8amryyLgSmBWRPT02+ZCYJSkJWmbj0dRhv0/KMqG3SdpMfCRft87E9hcA0zSExFrKJLd/RWr76J4kDFQteTrKO4LLgH+Fbi94rOLgZ9XPvAwGwpXdTGzruQzPzPrSk5+ZtaVnPzMrCs5+ZlZV3LyM7Ou5ORnZl3Jyc/MutL/B7OVgqH/jJQ3AAAAAElFTkSuQmCC\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 2 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAATgAAAEWCAYAAADy2YssAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xm8XGWd5/HPl3sTspCQhLCErQMKCCIEjAyNghAEwaZRe3Bpl4niEEVFoccF5TUu/dIeVAR1FJ0oIDqIIoIwtrJIg7RCwCQmIbIqRghEwhIkYUly7/3NH+dUKMpbdU9VPVW3qu73/Xqd1606dep3nnuS/HKW5/k9igjMzHrRVqPdADOzVnGCM7Oe5QRnZj3LCc7MepYTnJn1LCc4M+tZTnBm1rOc4KwmSaskvaZi3bsk/bra5/n6IyWtrhLzo5JWSlov6U+SPtqa1ttY1z/aDbAxScB/A1YALwKuk/RgRPxwdJtlvcZncNZ2EfHFiFgaEQMRcQ9wFfDK0W6X9R4nOBtVkgQcDvx+tNtivceXqFbETyUNlL0fDyxNFPszZP/RXpQontkWPoOzIt4QEdNKC/D+FEElfZDsXtw/RMTGFDHNyvkMzkaFpJOBM4EjImLYp61mzXKCsxTGSZpQ9n7L5WzFeoCNwNuAfwOOioj729A+G6N8iWop/Bx4tmz5TL5+l4r1z5J1C/kcsB3wW0kb8uVb7W609T654KWZ9SqfwZlZz3KCM7Oe5QRnZj3LCc7MelZXdBOZNH3rmLbzxKbjbBjYOkFrYPxWg0nirN/Q/O+0xbihJGH6+tLEycbTN2/cA2naE+P70sTZKs3vBaChNA/4hsY1f56y8ekn2Lzx6aZ+udceNTkef6LYv40lKzZeGxHHNbO/IroiwU3beSLv+eGRTce55bE9m28MsPvkdUni3HTL/kniAGin55LEmbrNs0niRKRJBDufnqY9m3afkSTOwIQ0iRJg3IaBkTcqYMOulV0N67fy2q80HePxJwa5/drdC23bN+u+mU3vsICuSHBm1vkCGCLVFUAaTnBmlkQQbI40t29ScYIzs2R8BmdmPSkIBjtsZFTLuolImiDpdknLJf1e0mfz9XtIuk3SfZJ+JGl8q9pgZu01RBRa2qWV/eA2AvMi4kBgDnCcpEOBLwDnRcRewDrgPS1sg5m1SQCDRKGlXVqW4CKzIX87Ll8CmAdcnq+/GHhDq9pgZu3VaWdwLb0HJ6kPWAK8GPgG8EfgyYgodQBaTVZSZ7jvLgAWAEydlbBDrJm1RACbx8o9OICIGIyIOcCuwCHAvsNtVuW7CyNibkTMnTzdt+nMOl0UvDxt5yVqW56iRsSTkm4CDgWmSerPz+J2BR5uRxvMrMUCBjvrBK6lT1G3lzQtfz0ReA1wF3AjcFK+2XyyOTHNrMtlIxmKLe3SyjO4WcDF+X24rYDLIuJnku4Efijpc8DvgAta2AYzaxsxmKjIQiotS3ARsQI4aJj195PdjzOzHpI9ZBgjCc7MxpasH5wTnJn1qCGfwZlZL/IZXIO27XuWE6f+LkmcFL654ogkcfY56IEkcQCe2Zymr2Cq/4En9m9OEmfy99P8mfGWNO0Z2H/nJHEA+p9M87ttNStNpepmBWKww2ZB6IoEZ2bdwZeoZtaTArEp0pV0T8EJzsySyDr6+hLVzHqUHzKYWU+KEIPRWWdwrRyLupukGyXdlVf0/XC+fo6kRZKWSVosyaMazHrEECq0jETSPnmOKC1PSTpd0gxJ1+cVwa+XNL1WnFam2wHgf0TEvmRVRD4gaT/gi8Bn8zJKn8rfm1mXyx4y9BdaRowVcU9EzMnzxMuBZ4ArgTOBG/KK4Dfk76tqZUXfNRGxNH+9nqySyC5k9yKn5ptti8slmfWE0kOGIkudjgb+GBF/Bl5PVgkcClQEb8s9OEmzyQbe3wacDlwr6RyyBHtYO9pgZq03WLwf3ExJi8veL4yIhVW2fStwaf56x4hYA9lJlKQdau2k5QlO0jbAT4DTI+KpvEzSGRHxE0lvJiuX9JphvrelZPlOu3RW3xoz+1t1jmR4LCLmjrRRPuveicAnGmlTSx95SBpHltwuiYgr8tXzgdLrH1OldFJ5yfJpM5zgzLrBUGxVaKnD8cDSiHgkf/+IpFkA+c+1tb7cyqeoIjs7uysizi376GHg1fnrecB9rWqDmbVPNth+q0JLHf6Z5y9PAa4mO0mCAhXBW3mJ+krgncAdkpbl6z4JnAJ8VVI/8Bz5ZaiZdbdAbE44VEvSJOAY4L1lq88GLpP0HuAB4E21YrSyou+voWqHl5e3ar9mNjoiSNrRNyKeAbarWPc42VPVQjySwcwSKdaJt52c4MwsiSDtGVwKTnBmlowLXjbg0c1TOP+Rec3H2bhNgtbAqQfcnCTOque2G3mjgk6YtmzkjQp437UnJ4nTv12aarWHz74/SZzdrl6XJM5db0lXPTcmT0gSZ9z6waZjKMGMzYFc8NLMelM2bWBnpZTOao2ZdbExNPGzmY0tAfWOUmg5JzgzS8ZncGbWkyLUcWdwba/om392mqR78vUueGnWA7KHDH2FlnZp5RlcqaLvUklTgCWSrgd2JCtad0BEbBypnpOZdYvOm5OhlWNR1wClwnTrJZUq+p4CnB0RG/PPapY7MbPukD1k6Kx7cG1JtxUVffcGDpd0m6RfSXpFO9pgZq3XgnJJTRmNir79wHSyiWheQVb6ZM+IiIrvbanoO3mnya1uppk1qRNHMoxGRd/VwBWRuR0YAmZWfre8ou+EaWmGtJhZa7Vo0pmGtewMrkZF35+SVfK9SdLewHjgsVa1w8zaIwI2D42RhwxUr+h7IXChpJXAJmB+5eWpmXWf7BJ1jCS4ESr6vqNV+zWz0eORDGbWkzqxm4gTnJklMoYuUc1s7PGcDGbWk7KnqJ01SXtXJLht+p7j8Gn3Nh1n6Ya/S9AaOHjiqiRxvrHs1SNvVNA//f2SJHE0dVOSOJufHp8kzi0P7pEkzlGz08wv/tLLViWJA7Di4DSdB/qnHtR0DA25ZLmZWU2+RDWznuSnqGbW0/wU1cx6UoQYcIIzs17VaZeoo1KyPP/8I5JC0t9UEjGz7lO6B1dkaZe2lyyPiDsl7QYcAzzQwv2bWZuNmTO4iFgTEUvz1+uBUslygPOAj5ElfTPrAaV+cJ10Btf2kuWSTgQeiojlI3xngaTFkhZvWLe5Da00s2YNoUJLEZKmSbpc0t35ra6/l/QZSQ9JWpYvr6sVo60ly8kuW88Cjh3pexGxEFgIMHv/bXymZ9bhImAgbcHLrwLXRMRJksYDk4DXAudFxDlFArQ0wVWWLJf0MmAPYHlW8JddgaWSDomIv7SyLWbWeqkuPyVNBY4A3gUQEZuATXneKKyVT1H/pmR5RNwRETtExOyImE02P8PBTm5m3a/Oe3AzS7eg8mVBRbg9gUeBiyT9TtJ3JJVmn/qgpBWSLpQ0vVabWnkPrlSyfF7R62Uz624RKrQAj5UmlcqXhRWh+oGDgW9GxEHA08CZwDeBFwFzyOZd/nKt9oxWyfLSNrNbtX8za7+Eg+1XA6sj4rb8/eXAmRHxSGkDSd8GflYrSGeNqzCzrhWRrqNvftvqQUn75KuOBu6UNKtsszcCK2vF8VAtM0tEDKZ9inoacEn+BPV+4N3A1yTNIetDuwp4b60ATnBmlkwk7MQbEcuAuRWr31lPjK5IcI88N5Vz7z666Tgf3ufGBK2B89cclSTOK/b4c5I4ABc/+sokcY7cK03l21//ec8kcfr7B5PEuXHVXknivGr3+5PEAfjTpS9OEmevTzzedAxtav44ux6cmfWuyO7DdRInODNLxiXLzawnRfqHDE1zgjOzZHyJamY9K+VT1BRGPJ+UtHWRdcNsM2xFX0lfysufrJB0paRpjTXdzDpJRF1DtdqiyAXzrQXXVSpV9N0XOBT4gKT9gOuB/SPiAOBe4BNFG2tmna3TCl5WvUSVtBNZBd6Jkg7i+XGlU8nqMtUUEWvIBsMSEesl3QXsEhHXlW22CDipwbabWYfppntwryWrxbQrcG7Z+vXAJ+vZSXlF34qPTgZ+VOU7C4AFAOO237ae3ZnZKAjEULc8RY2Ii4GLJf3XiPhJozsor+gbEU+VrT+L7DL2kir731LRd+KLd+6w/xfMbDid9g+1yFPUn0l6GzC7fPuI+NeRvlhZ0bds/XzgBODoiE47qTWzhkTnPUUtkuCuAv4KLAE2Fg08XEXffP1xwMeBV0fEM/U118w6WoedrhRJcLtGxHENxC5V9L1D0rJ83SeBrwFbA9fn9dUXRcT7GohvZh2mG8/gbpH0soi4o57ANSr6/ryeOGbWHQIYGuqSBCfpDrI29wPvlnQ/2SWqgMj7sZmZZQLoojO4E9rWCjPrCZ32yLBWN5E/A0iaMczH61vWIjPrXt2S4MosBXYD1pFdnk4D1khaC5wSEUta2D4AZk96nIsOvLjpOP9z1RsStAZePOXRJHF2GJ/u/4nXbPP7JHEueuxVSeIc/+I7k8T5xR/2SxJn04bxSeLc9Mc0lYEBBjaMSxLn4a+OOLBoRJv/JUUH3faOMy2iyG91DfC6iJgZEdsBxwOXAe8Hzm9l48ysy0TBpU2KJLi5EXFt6U0+lvSIiFhE1t3DzCzr6DukQku7FLlEfULSx4Ef5u/fAqyT1AcMtaxlZtaFuu8S9W1kA+5/SjaqYfd8XR/w5tY1zcy6Toddoo54BhcRj5FNwDqcP6Rtjpl1tW55iirpKxFxuqT/xzDNjogTawWWtBvwPWAnskvZhRHx1bzbyY/IBu+vAt4cEesa/g3MrDN0WUff7+c/z2kwdqmi71JJU4Alkq4nqzF3Q0ScLelM4Eyywfdm1uW6qaPvkvznryRNBHaPiHuKBq5W0Rd4PXBkvtnFwE04wZn1hg4bi1pk0pl/BJaR9YdD0hxJV9ezk4qKvjvmya+UBHeo8p0FkhZLWvzkE4P17M7MRomi2NIuRZ6ifgY4BHgSICKWkd0/K6RaRd+RRMTCiJgbEXOnzegr+jUzGy1Fn6B2WIIbiIi/NhK8SkXfRyTNyj+fBaxtJLaZdRplDxmKLG1SJMGtzEuW90naS9L/Bm4Z6UvVKvoCVwPz89fzyfrWmVkv6MIzuNOAl5LVgrsUeAo4vcD3ShV950lali+vA84GjpF0H3BM/t7MesFQwaVNinT0fQY4K18Kq1HRF+DoemKZWRdI3A9O0jTgO8D+efSTgXuoox9trY6+w3bwLRmpo6+ZjT2Jn5B+FbgmIk6SNJ5swvlPUkc/2lpncKUOvgK+Dfz3NG02s56VKMFJmgocQTYwgIjYBGySVFc/2lodfX9VtrMN5e/NzJo0U9LisvcL88neS/YEHgUuknQg2bSlH6aiH62kYfvRlhQplwSjPIR29cbpfOyPJzUdZ+NA0V+3tl1mPpkkzr4THkoSB2Dn/meTxPnlvS9JEuc1e9+dJM5/2X1Vkji/vvfFSeIMPJmmMjDAlJ3TVHSeMqHwdMVVbaU0d/7ruER9LCLm1vi8HzgYOC0ibpP0VbLL0brUugdXPhdDn6TplD00iIgn6t2ZmfWwIOVQrdXA6oi4LX9/OVmCe0TSrPzsbcR+tLVOaZaQNbnU4qVlnwXZKaSZ2fMSXetFxF8kPShpn3wM/NHAnfkyn6x72Yj9aGvdg9sjTVPNbKxI/BT1NOCS/Anq/cC7yfruXibpPcADwJtqBUhzU8rMDJLerc/HvQ93n65wP1onODNLp8PqwaWYDHFYki6UtFbSyrJ1cyQtyodtLZZ0SKv2b2btVbRUUkeVS8qvdSvXFRk/+l3guIp1XwQ+GxFzgE/l782sVwyp2NImRS5RT5L0XERcAiDpfArMhxoRN+eFLl+wGpiav94WeLh4U82s07Xz7KyIIgnun4CrJQ2RzWr/RES8v8H9nQ5cK+kcsrPHw6ptKGkBsABg6x2mNLg7M2urDktwVS9RJc3IO/tOJBuH+jGyUkn/WtEJuB6nAmdExG7AGWT14oZVXtF33LRJDe7OzNqmA+/BFe3oW/r5D/nSaEff+WTjyQB+TFYKxcx6RYedwbW7o+/DwKvJKgDMA+5rwT7MbJQkGtKaTJGnqB/IC8+V3k+XNOI9OEmXArcC+0hanT+NPQX4sqTlwL+R32MzM2uFIg8ZTomIb5TeRMQ6SacA59f6UkT8c5WPXl5H+8ysm3TLJWqZrSQpIpuzWlIfkK5mjJn1hjY/QCiiSIK7lmxw67fI8vP7yCeBNjN7gS5McB8H3kvWxUPAdfjpp5kNp9sSXEQMSboA+DVZ8++JiMGWt6zMLluv4/N7Xtl0nAkaSNAauHvTTknibNe3IUkcgN37t0kS5xeHfz1JnFWbp428UQHnPzQvSZxzD7ssSZznhsYliQPwpXuPSRLnL0ub//s48Ezzv5fovKeoIyY4SUeSTe6wiux32E3S/Ii4ubVNM7Ou0qX34L4MHJtX1UTS3mQTQPtpqJm9UBcmuHGl5AYQEfdKSneebma9owsT3OL8Htz38/dvJxvGZWb2At14iXoq8AHgQ2T34G5mhE6+ZjZGdVuCi4iNwLn5UpikC4ETgLURsX/Z+tOADwIDwL9HxMfqarGZdabooqeoku6gRj6OiANGiP1d4OvA98piHgW8HjggIjaONCu1mXWZLjqDO6GZwFUq+p4KnJ2fFRIRNSdtNbPu0jX34CLiz5XrJM0EHi+NS23A3sDhkj4PPAd8JCJ+O9yG5RV9d9y5r8HdmVlbdViCq1XR91BJN0m6QtJB+exYK4FHJFVOJlNUPzAdOBT4KNkY12FnoCiv6DttOyc4s44XdSxtUusS9evAJ8kmh/kP4PiIWCTpJWQdfRsZcL8auCI/A7w9n+dhJvBoA7HMrIOIzrtErVXwsj8irouIHwN/iYhFABFxdxP7+ylZJd/SiIjxwGNNxDOzDtJNczKUP/B9tuKzEZuYV/Q9EpgpaTXwaeBC4ML8cncTML+J+3lm1mk67F9zrQR3oKSnyM48J+avyd9PGClwjYq+76iviWbWNbolwUWE7+ybWXFdWk3EzKwYJzgz61VdM1Srk/xp/fa87T9PGe1mPO+vaapFbbP7UyNvVNDlB6WpIv/gwNQkcZY/t3uSOJP6NyWJ8+nf/2OSOMfu3kwnghf661OTk8SJrZs/bYphe6PWL+UlqqRVwHpgEBiIiLmSPkM2/Wipa9knI+Ln1WJ0RYIzsy7Qmk68R0VEZVey8yLinCJfdoIzs3Q67B7ciDPbm5kVURrJkLCjbwDXSVqSj00v+aCkFZIulDS9VgAnODNLRkNRaCEbALC4bFkwTLhXRsTBwPHAByQdAXwTeBEwB1hDNmdMVb5ENbM06rsH91hEzK0ZLuLh/OdaSVcCh5TP5ifp28DPasVo2Rlcfvq4Nh+WVfnZRyRFXn7JzHpEqktUSZMlTSm9Bo4FVkqaVbbZG8kqHFXVyjO471JR0RdA0m7AMcADLdy3mY2GdA8ZdgSuzKup9QM/iIhrJH1f0px8T6uA99YK0rIEV6WiL8B5wMeAq1q1bzMbHan6wUXE/cCBw6x/Zz1x2noPTtKJwEMRsbxKncvybbdU9O3bblobWmdmTeuwbiJtS3CSJgFnkV1LjygiFgILAbbeY9cOO2xm9jc6cFatdnYTeRGwB7A8H4KxK7BU0k5tbIOZtUgL+sE1rW1ncBFxB7BlmsA8yc0dZhiGmXWrDqtf28puIpcCtwL7SFot6T2t2peZdYYxcwZXo6Jv6fPZrdq3mY2CNs+YVYRHMphZMp32kMEJzsyScYIzs94UdNxDBic4M0vGk840YPtJ63nvwf/ZdJzrHtk3QWvgiWmTksRZ/4d0IzSW7bdzkjh3PbtLkjgz+p9OEue5wTR/Rb+w/xVJ4tz29IuSxAEYenJ8kjiHHdp8GfVrt3kuQUvwQwYz602ljr6dxAnOzNKILcUsO4YTnJml01n5zQnOzNLptEvUtlb0lfQlSXfnE0ZcKcl1kMx6RQBDUWxpk1ZWE/kucFzFuuuB/SPiAOBe4BMt3L+ZtVsUXNqkZQkunxziiYp110XEQP52EVnJJDPrEWNmsH0BJwM/GsX9m1lifooKSDoLGAAuqbHNlpLl02ZNaFPLzKxhriYCkuYDJwBHR1QfuFZesnzXl27bYYfNzCplHX07659quyedOQ74OPDqiHimnfs2szbosGoi7a7o+3VgCnC9pGWSvtWq/ZtZ+ymi0NIu7a7oe0Gr9mdmo8z34Mysd3ksqpn1srH8kMHMelgHTvzsBGdm6fgMrn6PPzGV7/3gmKbjRKLfdscjHkoSZ8J+m5PEAdh73Nokcc6579gkcaZPeDZJnON3WjnyRgXcvXFWkji3Pr5HkjgAh865N0mc1Ruar1mxabAvQUvwQwYz610a6qxrVCc4M0sj6LiOvk5wZpaEaG8n3iKc4MwsnYQJTtIqYD0wCAxExFxJM8iqEM0GVgFvjoh11WK0u6LvDEnXS7ov/zm9Vfs3s1EQUWwp7qiImBMRc/P3ZwI3RMRewA35+6raXdG3rsaZWRcp3YMrsjTu9cDF+euLgTfU2ritFX2ps3Fm1l00NFRoAWZKWly2LBgmXADXSVpS9vmOEbEGIP+5Q632tPse3AsaJ6lm48ysm9R1+flY2WVnNa+MiIfzPHG9pLvrbVErL1GbImlBKbsPPPP0aDfHzEYSJL0HFxEP5z/XAlcChwCPSJoFkP+s2cO93QmucOMiYmFEzI2Iuf2TJretgWbWhET34CRNljSl9Bo4FlgJXA3MzzebD1xVK067L1FLjTubAo0zs+6SsB/cjsCVkiDLUz+IiGsk/Ra4LC+g+wDwplpBWpbg8oq+R5LdTFwNfJossRVunJl1mUQJLiLuBw4cZv3jwNFF47S7oi/U0Tgz6yIRMNhZY7U8ksHM0vFQLTPrWU5wZtaTAvCcDGbWmwLC9+DqFn2weUrz/zNsvU4JWgMHz3gwSZwrfjtSR+7iHt97UpI4h+zwQJI4x09fniTOGYvfnCTOKfv/JkmcI2b+IUkcgD23TlOF+YLnXtV0DCnBmVfghwxm1sN8D87MepYTnJn1prprvbWcE5yZpRGAJ50xs57VYWdwo1IuSdIZkn4vaaWkSyVNGI12mFlK+VCtIkubtD3BSdoF+BAwNyL2B/qAt7a7HWaWWEDEUKGlXUbrErUfmChpMzAJeHiU2mFmKXXYSIa2n8FFxEPAOWTlktYAf42I6yq3K6/oO/i0K/qadYX0s2o1ZTQuUaeTTT6zB7AzMFnSOyq3K6/o2zfZFX3NOl5E9hS1yNImo/GQ4TXAnyLi0YjYDFwBHDYK7TCz1DrsDG407sE9ABwqaRLwLFkBzMWj0A4zSyqIwcHRbsQLtD3BRcRtki4HlgIDwO+Ahe1uh5kl5nJJmYj4NNkcDWbWS1wuycx6UQDhMzgz60nhgpdm1sM67SGDosMGxw5H0qPAn0fYbCbwWILdOU77YjlO58T5u4jYvpmdSLom31cRj0XEcc3sr4iuSHBFSFocEU3XAHec7muT47QnTjcalWoiZmbt4ARnZj2rlxJcqs7CjtO+WI7TXXG6Ts/cgzMzq9RLZ3BmZi/gBGdmPasnElyjczxIulDSWkkry9bNkHS9pPvyn9MbjPMlSXdLWiHpSknTGolT9tlHJIWkEfsZVYsj6TRJ9+TH6osN/l5zJC2StCwvSHpIgTi7SbpR0l35vj+cr6/rWNeIU9exrhan7PNCx7pWnAaOdbXfra7jLWmCpNslLc/jfDZfv4ek2/Jj/SNJ40dqU0+IiK5egF2APwET8/eXAe8q+N0jgIOBlWXrvgicmb8+E/hCg3GOBfrz119oNE6+fjfgWrLOzjMbbM9RwC+BrfP3OzQY5zrg+Pz164CbCsSZBRycv54C3AvsV++xrhGnrmNdLU69x7pGexo51tVi1XW8AQHb5K/HAbcBh+b/Lt6ar/8WcGoz/+66ZemJMzien+OhnzrmeIiIm4EnKla/Hrg4f30x8IZG4kTEdRExkL9dBOzaYHsAzgM+RjaeeURV4pwKnB0RG/Nt1jYYJ4Cp+ettKXCsI2JNRCzNX68H7iL7j6muY10tTr3HukZ7oI5jXSNOI8e6Wqy6jndkNuRvx+VLAPOAy/P1hf5e94KuT3BRcI6HOuwYEWvy2GuAHZpvJScDv2jki5JOBB6KiOVNtmFv4PD8MuVXkl7RYJzTgS9JepDsuH+ini9Lmg0cRHZm0fCxrohTrq5jXR6nmWNd0Z6mjnVFrLqPt6Q+ScuAtcD1wB+BJ8v+E1jN8wm9p3V9glPBOR5Gi6SzyAp7XtLAdycBZwGfStCUfmA62eXKR4HLJKmBOKcCZ0TEbsAZwAVFvyhpG+AnwOkR8VQD+64Zp95jXR4n/15Dx3qY9jR8rIeJVffxjojBiJhDdiZ7CLDvcJsVaU+36/oER/o5Hh6RNAsg/zni5UU1kuYDJwBvj/zmR51eRJa4l0taRfYXdqmknRqItRq4Ir+EuR0YovjA6HLzyY4xwI/J/gGNSNI4sn+4l0RE6ft1H+sqceo+1sPEaehYV2lPQ8e6SqyGjjdARDwJ3ESWaKflt3DIf7cxMVVnLyS4LXM85P9LHk12/6JRV5P9pSL/eVUjQSQdB3wcODEinmkkRkTcERE7RMTsiJhN9g/n4Ij4SwPhfkp2HwZJewPjaaxSxcPAq/PX84D7RvpC/udyAXBXRJxb9lFdx7panHqP9XBxGjnWNX6vuo91jVh1HW9J25eeIkuaSHYCcBdwI3BSvlnDf6+7zmg/5UixAJ8F7gZWAt8nf3pV4HuXkt2320z2F/o9wHbADWR/kW4AZjQY5w/Ag8CyfPlWI3EqPl9Fsaeow7VnPPB/82O0FJjXYJxXAUuA5WT3iF5eIM6ryC6JVpQdj9fVe6xrxKnrWFeLU++xrtGeRo51tVh1HW/gALJ5Tlbk+/9Uvn5P4Pb8WP246L+Rbl88VMvMelYvXKKamQ3LCc7MepYTnJn1LCc4M+tZTnBm1rOc4MYASYN5NYrlkpZKOixfP1vDVC4pGHNVrWobkj4s6Stl7/+PpF+WvT9N0tfy17dUifFdSSflr0/PR3YmKH4BAAACcklEQVSUPtsw3HfMyjnBjQ3PRsSciDiQbCzj/2rDPm/hhSNK5gDbSurL3x8G/AYgIoqMPDmdrJCCWWFOcGPPVGBd5cq8jthFku6Q9DtJR+Xr+ySdk69fIem0iu9NlHSNpFMqQv4O2Dv/fFvgGbLOqy/LPz+MLAluORtT5uuS7pT07+SD7yV9iGyc8Y2Sbizb9+fzs9JFknZs+shYz/HM9mPDxLy6xASyumPzhtnmAwAR8TJJLwGuy4cZvZtsjOZBETEgaUbZd7YBfgh8LyK+Vx4s33YZ8ApgIlkv/PuAwyStJZsP5MGKNrwR2IcsCe4I3AlcGBFfk/QvwFERURryNBlYFBFnKSsoeQrwufoPjfUyn8GNDaVL1JcAxwHfG6a6xavIhrkREXeTFXzcm2ws47ciL7UTEeX14a4CLqpMbmV+Q3amdhhwa74cBryS/OytwhHApZFVw3gY+I8av9Mm4Gf56yXA7Brb2hjlBDfGRMStZJUttq/4qFo5H1G9tM5vgONrlAIq3Yf7e7LkdhdZldot99+Ga2KV9ZU2x/PjDAfx1YgNwwlujMkvP/uAxys+uhl4e77N3sDuwD1kJbPfVyq1U3GJ+qk8zvlVdncLWame7SNibZ6QHiWr3zfcGdzNwFvz+36zyEp/l6wnK+VtVpgT3NgwMe8msgz4ETA/IgYrtjkf6JN0R77NuyIruf0dspJUKyQtB95W8b3TgQkaZmKViFhHltB+X7b6VrKHB8NVzb2S7D7dHcA3gV+VfbYQ+EX5QwazkbiaiJn1LJ/BmVnPcoIzs57lBGdmPcsJzsx6lhOcmfUsJzgz61lOcGbWs/4/VBRTljXVooEAAAAASUVORK5CYII=\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 2 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAT8AAAEWCAYAAAAQBZBVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xu4HFWZ7/HvLxdICJAEw20gDJcDggIGiIgMCgZBQAa8MA5exox4YGA4KIwXUM4jow4eVJTRcZCJgsAMJwKCwjAKZCLCUW5PEhMI13AJEIiGcI9ASLLf80etDU2ze3d179W9u3f/Ps9Tz+6urn5r7UrypqrWqncpIjAz6zWjhrsBZmbDwcnPzHqSk5+Z9SQnPzPrSU5+ZtaTnPzMrCc5+ZlZT3Lys0FJWirpvRXvj5b0jKT9JYWkVWlZKum0iu22lXSDpBcl3VsV47yK762StFrSC+3+3ay3jRnuBlj3kDQT+C7wfuCJtHpSRKyV9E5grqSFEXEtMBu4BTgsLT+TtGNEPBkRxwPHV8S9EOhr469i5jM/K0fSccB3gPdFxM3Vn0fELcBdwK6SdgL2BM6IiJci4grgTuDDA8SdkNZf1Mr2m1XzmZ+VcQKwH3BgRCyq/lCSgH2BtwK/Tz8fiojKS9lFaX21DwNPAjflbrTZYHzmZ2UcBNxKcfZWbSXwNPBj4LSImAtsCDxXtd1zwEYDfH8mcHH4IXNrMyc/K+N4YCfgx+ksr9KUiJgcEbtExPfTulXAxlXbbQy8rlND0lRgf+DiFrTZbFBOflbGCuBA4F3AuSW2vwvYXlLlmd7b0vpKnwRujoiHsrTSrAFOflZKRDwBzAAOkXROnW3vBxYCZ0gaJ+mDwO7AFVWbfhK4sAXNNavLHR5WWkQ8JmkGRefEFnU2P5oisT0DPAocFRFP9n+YhsZsDVzemtaaDU6+z2xmvciXvWbWk5z8zKwnOfmZWU9y8jOzntQVvb2jN54QYzedNPQ4z+XJ9Ws3ytNJtPH4l7LEAXjl/kz/j2XqAOubMC5LnBhTPaa6OTtvv3mWOCPV/PnzV0bEpkOJ8b73TIinnl5Xbn93rL4uIg4Zyv6GqiuS39hNJzH1rOPrb1jHxtdOyNAaWPnuV7LEOfitd2eJA/DYwetliROvrMkSZ/U+u+SJs8nYLHFu+ennssQZqSQ9MtQYTz29jtuv26bUtqO3XDJlqPsbqq5IfmbW+QLo66LKZE5+ZpZFEKyJcpe9ncDJz8yy8ZmfmfWcIFjXRU+MtWyoS3qg/XZJiyTdJemraf12km6TtETSpZLy3Kk3s2HXR5RaOkErx/mtBmZExNuAaRTVQPYBvgmcExE7Ujz0/ukWtsHM2iSAdUSppRO0LPlFYVV6OzYtQVEW6Wdp/UXAB1rVBjNrr24682vpPT9Jo4H5wP8A/hV4EHg2ItamTZYBW9X47nHAcQBjpkxsZTPNLIMA1vieXyEi1kXENIq6bXsDA418HfBoRcSsiJgeEdNHb5xncLKZtU6UvOTtlMvetvT2RsSzkn4D7ANMkjQmnf1tzWvzv5pZNwtY1xl5rZRW9vZuKmlSej0eeC9wD3ADcFTabCZwVavaYGbtUzzhUW7pBK0889sSuCjd9xsFXBYR10i6G/ippH+imOP1/Ba2wczaRqwjTyGKdmhZ8ouIO4A9Blj/EMX9PzMbQYoODyc/M+sxxTg/Jz8z60F9PvMzs17jM78WiNWj6Ht46GP9PnjKrzO0Bi79yYFZ4sybMjVLHIDr7vxJljgz9/94ljjjH3iy/kYlrJ1Wb3rgcvb70LezxPntlV/IEmckCsS6LpoZoyuSn5l1h2667O2eNG1mHS0Qr8ToUks9ki6QtELS4op1f5UqRPVJml61/ZckPSDpPknvK9NeJz8zy6IY5Dyq1FLChUD1BEeLgQ8BN1WulPQW4Gjgrek756bxxYPyZa+ZZZOrwyMibpK0bdW6ewCkN+zjSOCnEbEaeFjSAxRjiW8ZbB9OfmaWRYRYF6UvJqdImlfxflZEzGpy11sBt1a8r1ktqlLLkp+kqcDFwBYUj/PNiojvSZoGnAeMA9YCfx8Rt7eqHWbWPn3lz/xWRsT0+puVMtBO65ZYaOWZ31rgcxGxQNJGwHxJc4BvAV+NiF9JOiy9P6CF7TCzNig6PIblYnIZUDlurFS1qFZWcl4eEQvS6xcoKrpsRZGRN06bTSzTSDPrfJk7PBpxNXC0pPUlbQfsCNS9mmxLmk43LvcAbgNOBq6TdDZF8t23HW0ws9Zbl2mcn6TZFFeEUyQtA84Angb+BdgU+C9JCyPifRFxl6TLgLsprjhPjKg/gXDLk5+kDYErgJMj4vlUyuqUiLhC0kcoSlq9d4DvvVbGftLkVjfTzIYo5xMeEfHRGh/9vMb2ZwJnNrKPlo7zkzSWIvFdEhFXptUzgf7Xl1OjvFVlGftRE1zG3qwb9MWoUksnaGUlZ1Gc1d0TEd+t+OgJYP/0egawpFVtMLP2KQobjCq1dIJWXvb+BfA3wJ2SFqZ1XwaOBb4naQzwMunS1sy6WyDWlHh0rVO0spLzbxl4/A3AXq3ar5kNjwgaGeQ87PyEh5llokYGOQ87Jz8zyyLwmZ+Z9ahO6cwooyuS35iXYdJ9Q49z7R5vGXoQYO24LGHoW5vv8J/3TJ7bqGsfWpoljsaulyXOhA03yBLn6T3yjBV9xye+kyUOwG3/8blssTpBoK4qZtoVyc/MOl8xdWX3pJTuaamZdThPWm5mPSigY57eKMPJz8yy8ZmfmfWcCHXVmV8rn+2dKukGSfekGZc+W/HZSWmWpbskfatVbTCz9ik6PEaXWjrBcFRy3pxiwpHdI2K1pM1a2AYza5uG5vAYdq18tnc5sDy9fkFSfyXnY4Gz0kxLRMSKVrXBzNqn6PDonnt+bUnTVZWcdwLeJek2STdKens72mBmreeSVhUGqOQ8BpgM7AO8HbhM0vYREVXfe7WS83oTXMnZrNN12xMew1HJeRlwZRRup5jWckr1dysrOY8Z50rOZt0g1wRGki6QtELS4op1m0iaI2lJ+jk5rT9A0nOSFqblK2XaOhyVnH9BUcEZSTsB6wErW9UOM2uPCFjTN6rUUsKFwCFV604D5kbEjsDc9L7f/4uIaWn5WpkdDEcl5wuAC1JGfwWYWX3Ja2bdp7jszTaB0U2pr6DSkbw2x/dFwG+AU5vdx3BVcv5Eq/ZrZsOngSc8pkiaV/F+VkTMqvOdzdMoEiJiedUwuXdKWkQxR9DnI+Kueg3wEx5mlkWDQ11WRsT0TLteAPx5RKySdBjFrbUd632pM/qczWwEUKunrvyjpC0B0s8VABHxfESsSq9/CYyV9IZO1GpOfmaWTV+ax6Pe0qSrKeb9Jv28CkDSFqmDFUl7U+S1p+oF82WvmWVR9PbmeW5X0myKzo0pkpYBZwBnUYwL/jTwKPBXafOjgBMkrQVeAo4u04naFclv8hbP85HPXT/kOBfet0+G1sDEh/qyxHlhzaQscQD+e8LOWeIcsfiOLHHmvGPLLHH06BNZ4mwyOs/g2+d2mZglDsDen8xTEv/2izujHH7OQc4R8dEaHx04wLY/AH7Q6D66IvmZWXfw1JVm1nO6rbCBk5+ZZdNNxUyd/Mwsiwix1snPzHpRN132DksZ+/T55yVFmcGIZtb5+u/5lVk6QdvL2EfE3ZKmAgdRjNUxsxGiUxJbGS0784uI5RGxIL1+AegvYw9wDvBFiv8szGwE6B/n5zO/CpVl7CUdATweEYvSEym1vvNqJedJW45rQyvNbKg8zq9CZRl7ikvh04GD630vlbeZBbD1rhN9hmjW4SJgbblCpR2h3WXsdwC2AxZJWgpsDSyQtEUr22Fm7eHLXgYuYx8RdwKbVWyzFJgeES5jb9blPIHRa/rL2M+omFjksBbuz8yGWYRKLZ1guMrY92+zbav2b2bt5w4PM+s5Ed01zs/Jz8wyEeu6qLfXyc/MsumU+3lldEXyW/nShvzozv2GHGf0vRMytAYmHb80S5znr902SxyARx7YrP5GJfyndssS51Pzf5clzk/3eWuWOHokT0XoievyDTl9PlNV6OnHfHfIMTZ409Z7DTWG6/mZWW+K4r5ft+ieC3Qz63i5Zm+TdIGkFZIWV6zbRNIcSUvSz8lpvSR9X9IDku6QtGeZtjr5mVkWkTo8yiwlXAgcUrXuNGBuROwIzE3vAQ6lmKR8R4p6AD8sswMnPzPLJqLcUj9O3AQ8XbX6SOCi9Poi4AMV6y+Owq3ApP7JzQfje35mlk0Dvb1TJM2reD8rFTMZzOYRsbzYTyyX1N/LtxXwWMV2y9K65YMFq5v8JK0fEavrrRvge1OBi4EtgD6KX+57kr4N/CXwCvAg8KmIeLZeO8yssxVndaWT38qImJ5p1wPttO75ZZnL3ltKrqvWX8l5F2Af4ERJbwHmALtGxO7A/cCXSsQysy7Q4qouf+y/nE0/V6T1y4CpFdttDdQd21Qz+UnaQtJewHhJe0jaMy0HABvUC1yrknNEXB8Ra9Nmt6aGmtkIkOueXw1XAzPT65nAVRXrP5l6ffcBnuu/PB7MYJe97wP+liI5VY6ifAH4ciMtrqzkXPXRMcClNb7zaiXnMVPyDAY1s9YJRF+mx9skzQYOoLg3uAw4AzgLuEzSpynm//mrtPkvgcOAB4AXgU+V2UfN5BcRFwEXSfpwRFwxhF/i1UrOEfF8xfrTKS6NL6mx/1crOY/bYasuGjpp1rty/UONiI/W+OjAAbYN4MRG91Gmt/caSR8Dtq3cPiK+Vu+LA1Ry7l8/EzgcODA13My6XWMdHsOuTPK7CngOmA8M2sNbaaBKzmn9IcCpwP4R8WJjzTWzjtZFpzJlkt/WEVE90rqM/krOd0pamNZ9Gfg+sD4wJ83edmtEHN9EfDPrMCPtzO9mSbul+TdKG6SS8y8biWNm3SGAvr4RkPwk3Unx+4wBPiXpIYrLXlHcY9y9PU00s64QwAg58zu8ba0wsxGhm7ovBxvq8ggUZWQG+PiFlrXIzLrXSEh+FRZQPDryDMUl7yRguaQVwLERMb+F7QNg1Kg+Npzw8pDjbD3jjxlaAw88OSVLnNOPGXB8d1P+99wPZ4mz7MnJWeJcud6QCwMD8PHb5tXfqIRL3rFrljg89GieOMDGo7bJEuflP9toyDFGrcmRtTpnWsoyygzHvhY4LCKmRMSbKGpnXQb8PXBuKxtnZl0mSi4doEzymx4R1/W/iYjrgXenulnrt6xlZtZdAqJPpZZOUOay92lJpwI/Te//GnhG0miKUlVmZklnJLYyypz5fYyiuMEvKJ722CatGw18pHVNM7Ou00WXvXXP/CJiJXBSjY8fyNscM+tqHZLYyhhskPM/R8TJkv6TAX6liDhisMCDVHLehKKM1bbAUuAjEfFM07+BmXWGETTI+d/Tz7ObjN1fyXmBpI2A+ZLmUNQInBsRZ0k6jWIGplOb3IeZdZCRMsh5fvp5o6TxwDYRcV/ZwKmSav9kIy9IuodiUpEjKYoUQjED029w8jMbGTqkJ7eMuh0ekv4SWEgx3g9J0yRd3chOqio5v24GJmCzGt85TtI8SfPWPufKV2bdQFFu6QRlenv/EdgbeBYgIhZS3K8rpVYl53oiYlZETI+I6WMm1p0yxMyGW9me3i5Kfmsj4rlmgteo5FxrBiYz62oqOjzKLB2gTPJbnMrYj5a0o6R/AW6u96ValZypPQOTmXW7jGd+kj4rabGkuySdnNb9o6THJS1My2HNNrVM8jsJeCtFLb/ZwPPAySW+11/JeUZVQ88CDpK0BDgovTezkaCv5FKHpF2BYyluub0NOFzSjunjcyJiWlqaLo5cZpDzi8DpaSltkErOMMAMTGbW5fKO89uFYoqLFwEk3Qh8MFdwGHyQ84CDm/vVG+RsZr2ngZ7cKZIq65XNStPV9lsMnCnpTcBLFPPyzgOeAv6XpE+m959r9iGJwc78+gc3C/gR8D+b2YGZ9ZDyyW9lREyvGSbiHknfBOYAq4BFFA9O/BD4etrT14HvAMc009TBBjnf2P9a0qrK92ZmrRYR51N0miLpG8CyiHi1IrGkHwHXNBu/TEkrGOaROWNH9/FnG5ceIljTky9OyNAa0IKNs8S5a4etssQBWHjE97LEec+Z/5Alzt37b54lzo9f2S9LnL/8bUOTD9Z03W4Ts8SBcr2NZYx/8Kkhxxi1em2GluQdwCxps4hYIWkb4EPAOyVt2f+QBMU9wMXNxh/snl/l3B2jJU2mogMjIp5udqdmNgIFuR9vuyLd81sDnBgRz0j6d0nT0t6WAn/XbPDBzvzmpx30/zYLKj4LYPtmd2pmI1TGM7+IeNcA6/4mV/zB7vltl2snZtYbOuW53TLK3vMzM6vPyc/MelIXJb9cHU5vIOkCSSskLa5YN03SrelRt3mS9m7V/s2svcqWs+qUS+My9fw+PcC6Ms/jXggcUrXuW8BXI2Ia8JX03sxGij6VWzpAmcveoyS9HBGXAEg6lxLz9UbETamI6etWA/2D5CYCT5Rvqpl1uk45qyujTPL7EHC1pD7gUODpiPj7Jvd3MnCdpLMpzjr3rbWhpOOA4wDGbb5Rk7szs7bqouRX87JX0iZpoPN4iud6v0hRzuprVQOgG3ECcEpETAVOIT26MpDKSs7rTRrf5O7MrG267J5f2UHO/T/fn5ZmBznPBD6bXl8O/LiJGGbWqToksZXR7kHOTwD7U8zYNgNY0oJ9mNkwUYlCpZ2iTG/viZImVbyfLKnuPT9Js4FbgDdLWpZ6jY8FviNpEfAN0j09M7N2K9PhcWxE/Gv/m/Rw8bHAuYN9KSI+WuOjvRpon5l1k5Fw2VthlCRFFHOxSxoNrNfaZplZ1+mgzowyyiS/64DLJJ1HkdePJ01gbmb2OiMs+Z1KUTPrBIoe3+txL62ZDWQkJb+I6JN0PvBbil/tvohY1/KWva4R0JdhVqi5u83O0Bi4ZodNs8Q59dd/nSUOwPsPXpglzn996dtZ4ux35eezxHnkqTxjPG8e96cscfZasCJLHID3T/y/WeKcufdBQw+ybuj/pEV39fbWTX6SDgAuoqiaKmCqpJkRcVNrm2ZmXWUE3vP7DnBwRNwHIGknisnL3WtrZq/XRcmvTEmrsf2JDyAi7gfGtq5JZta1ouRSgqTPSlos6S5JJ6d1m0iaI2lJ+jm52aaWSX7zJJ0v6YC0/Iji0Tczs9fJ9WyvpF0pHorYG3gbcLikHYHTgLkRsSMwN71vSpnkdwJwF/AZiudy76YY7mJm9nr5zvx2AW6NiBcjYi1wI8VUlUdS9EGQfn6g2abWTX4RsToivhsRH4qID0bEORGxut73BqrknNafJOm+dCrrYqZmI0UUvb1lFmBKqubev1Q/6roYeLekN0naADgMmAps3j9vb/q5WbPNHWze3jsZJEdHxO51Yl8I/AC4uCLmeygy9+4RsVpS0w03sw5UvsNjZURMrxkm4h5J3wTmAKuARUCemdWTwXp7Dx9K4BqVnE8Azuo/c4yIfIOmzGzY5RzqEhHnk2p+SvoGsAz4o6QtI2K5pC2BpnNIzcveiHikegH+BDyaXjdjJ+Bdkm6TdKOkt9faUNJx/afErzz3UpO7M7O2ytvbu1n6uQ1FRfnZwNUUdUFJP69qtqmDVXLeR9JvJF0paY90724xReatnpiorDHAZGAf4AsUzwwP+OjG6yo5T3QlZ7OOVzbxlT87vELS3cB/AidGxDPAWcBBkpYAB6X3TRnssvcHwJcpJhr6NXBoRNwqaWeKDNxMcYNlwJWpQsztaV6QKcCTTcQysw4isl/2vmuAdU8BB+aIP1hv75iIuD4iLgf+EBG3pp3fO4T9/YKignP/kyLrASuHEM/MOshImcOj8hHl6ptudZufKjkfQNGlvQw4A7gAuCBdQr8CzOyvE2hmI0AX/WseLPm9TdLzFGez49Nr0vtx9QIPUsn5E4010cy6xkhIfhExup0NMbMu10GXtGWUqepiZlaOk5+Z9aIRVcy0E7y8Zgz3P7H5kONMf+qYDK2BVx7eKEucnfZ8LEscgE9cn6fWxKF73ZElzkkH5Znm5d8uPSxLnHt+tVOWOPdOH/rfw353bLJVlji7zVk+5BgLP5anOLsve82s9zQ2gHnYOfmZWT5OfmbWa3I/4dFqTn5mlo36uif7OfmZWR5dds+vTBn7ptSq5Jw++7ykkDSlVfs3s/brpmd7W5b8KCo5v6H0laSpFKVoHm3hvs1sOOQtadVSLUt+aVLzpwf46Bzgi3TMITCzXLrpzK+t9/wkHQE8HhGLatQwrdz2OOA4gNFTJrahdWY2ZB2S2MpoW/JLMzCdDhxcZvuImAXMAlh/+6266JCa9ajorsfbWnnPr9oOwHbAIklLga2BBZK2aGMbzKxF+sf5+bK3SkTcScUcmykBTo8IV3I2Gym6qDZxK4e6zAZuAd4saZmkT7dqX2bWGXKe+Uk6RdJdkhZLmi1pnKQLJT0saWFapjXb1pad+Q1Sybn/821btW8zGwYZh7FI2gr4DPCWiHhJ0mXA0enjL0TEz4a6Dz/hYWbZZO7wGEMxhcYaYAPgiZzB29nhYWYjnPrKLRQTm82rWI6rjBMRjwNnUzwMsRx4LiKuTx+fKekOSedIWr/ZtvrMz8zyCBrp8FgZEdNrfShpMnAkxQiRZ4HLJX0C+BLwB4ppb2cBpwJfa6a5PvMzs2wydni8F3g4Ip6MiDXAlcC+EbE8CquBnwB7N9vWrjjzG7/eGt6y9dBLdW889uUMrYGlG26SJc6Su/KUMQf44WEXZolzysV5OuWfP+TuLHF2PPChLHH+cMF2WeI8u+HGWeIA3E+eWEt3Hvrfx+dW/y5DS8j5hMejwD7p4YiXgAOBeZK2jIjlKh4R+wDwhsIpZXVF8jOzzpezmGlE3CbpZ8ACYC3we4rL3F9J2jTtbiHQ9OQ1Tn5mlkdE1mKmEXEGcEbV6hm54jv5mVk+3fOAh5OfmeXTKc/tltHWSs6Svi3p3jRG5+eSJrVq/2bWZgH0RbmlA7S7kvMcYNeI2B24n2LMjpmNFK7kPHAl54i4PiLWpre3UpS1MrMRwiWtyjkGuHQY929mmXnqyjoknU4xdueSQbZ5tYz9+M03bFPLzKxpHXRJW0bbk5+kmcDhwIERtR8ErCxjP2nnzbrokJr1pmKQc/f8U233BEaHUDyIvH9EvNjOfZtZG3gOj5qVnH8AbATMSVVYz2vV/s2s/RRRaukE7a7kfH6r9mdmw8z3/MysN+V9trfVnPzMLJ8OuaQtw8nPzPLosknLnfzMLB+f+eX18qr1ue+3Q6/E+8qUtfU3KuEduz6YJc6YnfP9N3nIBquzxPnGXwy9YjbAi2vHZomT488dYK/j7s0S58mX8w24/+cdLssS56P/8rmhB1k1eugxwB0eZtab1Nc9171OfmaWR+BBzmbWe0S5Ac5lBzlLOkXSXZIWS5otaZyk7STdJmmJpEslrddse538zCyfiHJLHZK2Aj4DTI+IXYHRwNHAN4FzImJH4Bmg6ekG213JeRNJc1LWnpMmJjazkSJT8kvGAOMljQE2AJZTTGD0s/T5RRTTVzal3ZWcTwPmpqw9N703s5Gg/55fmaVeqIjHgbMp5u9dDjwHzAeerSiIvAxoevLrtlZyBo6kyNYwxKxtZp1HfX2lFmCKpHkVy3Gvi1NcFR4JbAf8GTABOHSAXTY9uKbdvb2bR8RygDTr+mZt3r+ZtUxDl7QrI2L6IJ+/F3g4Ip4EkHQlsC8wSdKYdPa3NfBEs63t2A4PScf1/6+w7k9/Gu7mmFk9Qc57fo8C+0jaQJKAA4G7gRuAo9I2M4Grmm1uu5PfHyVtCZB+rqi1YUTMiojpETF99IQJbWugmQ1Bvnt+t1F0bCwA7qTIVbMoiiH/g6QHgDcxhDJ57b7svZoiW5/FELO2mXWenIVKI+IM4Iyq1Q8Be+eI3+5KzmcBB0laAhyU3pvZSJF3qEtLtbuSMxTX7mY20kTAuu55vs3P9ppZPh1yVleGk5+Z5ePkZ2Y9JwDP4WFmvScgfM8vqxgFazYc+v8o457IU134iW0nZomz/Kk8cQCOevC9WeLsMHFllji3LfvzLHFihzwD3N89+f4scc798ZFZ4gAcsfUpWeLM+MiiIcf4wzUvDb0hgTs8zKxH+Z6fmfUkJz8z6z2dM4C5DCc/M8sjAE9gZGY9qYvO/IalpNVAE5MMRzvMLKf0eFuZpQO0PfkNMjGJmXWzgIi+UksnGK7L3v6JSdZQTEzSdDVWM+sgXfSER9vP/AaamCQirq/e7nWVnFe5krNZV+iiklbDcdn7holJJH2iervXVXLe0JWczTpeRNHbW2bpAMPR4fHqxCQRsQbon5jEzLpdF535Dcc9v1cnJgFeoihuOm8Y2mFmWQWxbt1wN6K0tie/iLhNUv/EJGuB31NMTGJm3SxjSStJbwYurVi1PfAVYBJwLPBkWv/liPhlM/sYlt7eGhOTmFm3yzSMJSLuA6YBSBoNPA78HPgUcE5EnD3UffgJDzPLIoBozVCXA4EHI+KRYgrfPDp20nIz6zKRipmWWWBK/1C2tBw3SOSjgdkV7/+XpDskXZBGjzTFZ35mlk0DHR4rI2J6vY0krQccAXwprfoh8HWKE82vA98Bjmm8paDokG7nwUh6EnikzmZTgBxliB2nfbEcp3Pi/HlEbDqUnUi6Nu2rjJURcUiJmEcCJ0bEwQN8ti1wTXpMtmFdceZX5g9F0rwy/5M4ztB1Wpscpz1x6imTzJrwUSoueSVtGRHL09sPAoubDdwVyc/Mek8aC3wQ8HcVq78laRrFZe/Sqs8a4uRnZh0pIl4E3lS17m9yxR9Jvb25Bko7TvtiOU53xRlRuqLDw8wst5F05mdmVpqTn5n1pBGR/JqdEySNEF8haXHFuk0kzZG0JP2sO4K8RpxvS7o3jUT/uaRJzcSp+OzzkkJS3XFUteJIOknSfelYfavJ32uapFslLUwj8/cuEWeqpBsk3ZP2/dm0vqFjPUicho51rTgVn5c61oPFaeJY1/rdGjreksZJul3SohTnq2n9dpJuS8f60jR4uLdFRFcvwFbAw8D49P4y4G9TD65WAAAGOElEQVRLfvfdwJ7A4op13wJOS69PA77ZZJyDgTHp9TebjZPWTwWuoxjoPaXJ9rwH+G9g/fR+sybjXA8cml4fBvymRJwtgT3T642A+4G3NHqsB4nT0LGuFafRYz1Ie5o51rViNXS8AQEbptdjgduAfdK/i6PT+vOAE4by724kLCPizI/X5gQZQwNzgkTETcDTVauPBC5Kry8CPtBMnIi4PiLWpre3Als32R6Ac4AvUoxtqqtGnBOAsyJiddpmRZNxAtg4vZ5IiWMdEcsjYkF6/QJwD8V/Wg0d61pxGj3Wg7QHGjjWg8Rp5ljXitXQ8Y7CqvR2bFoCmAH8LK0v9fd6pOv65Bcl5wRpwOaRRpCnn5sNvZUcA/yqmS9KOgJ4PCIWDbENOwHvSpc+N0p6e5NxTga+LekxiuP+pTrbv056JGkPijOSpo91VZxKDR3ryjhDOdZV7RnSsa6K1fDxljRa0kJgBTAHeBB4tuI/iGW8lux7VtcnP5WcE2S4SDqdomjrJU18dwPgdIoijkM1BphMcQn0BeAyqan6QCcAp0TEVOAU4PyyX5S0IXAFcHJEPN/EvgeN0+ixroyTvtfUsR6gPU0f6wFiNXy8I2JdREyjOAPeG9hloM3KtGck6/rkR/45Qf4oaUsoniOk+N+zKZJmAocDH490s6VBO1Ak9UWSllL8ZV4gaYsmYi0DrkyXRbcDfZR/CL3STIpjDHA5xT+uuiSNpfhHfUlE9H+/4WNdI07Dx3qAOE0d6xrtaepY14jV1PEGiIhngd9QJOFJ6bYQ6Xfr+eliR0Lye3VOkPS/64EU90uadTXFXzjSz6uaCSLpEOBU4IgoHtNpWETcGRGbRcS2EbEtxT+qPSPiD02E+wXFfR8k7QSsR3MVQ54A9k+vZwBL6n0h/bmcD9wTEd+t+KihY10rTqPHeqA4zRzrQX6vho/1ILEaOt6SNu3v7ZY0nuLk4B7gBuCotFnTf69HlOHuccmxAF8F7qWo8PDvpF62Et+bTXGfcA3FX/ZPUzxLOJfiL9lcYJMm4zwAPAYsTMt5zcSp+nwp5Xp7B2rPesB/pGO0AJjRZJz9gPnAIop7UnuViLMfxWXWHRXH47BGj/UgcRo61rXiNHqsB2lPM8e6VqyGjjewO8W8OHek/X8lrd8euD0dq8vL/hsZyYsfbzOznjQSLnvNzBrm5GdmPcnJz8x6kpOfmfUkJz8z60lOfj1A0rpUFWSRpAWS9k3rt9UAFWRKxlw6WNUTSZ+V9M8V7/9N0n9XvD9J0vfT65trxLhQ0lHp9cnpiZf+z1YN9B2zspz8esNLETEtIt5G8Wzo/2nDPm/m9U/aTAMmShqd3u8L/A4gIso8kXMyRdEKsyyc/HrPxsAz1StTHbifSLpT0u8lvSetHy3p7LT+DkknVX1vvKRrJR1bFfL3wE7p84nAixQDd3dLn+9LkSBfPYtT4QeS7pb0X6RCB5I+Q/Hc9g2SbqjY95npbPZWSZsP+chYT/Hsbb1hfKryMY6ibtyMAbY5ESAidpO0M3B9ejTrUxTPvO4REWslbVLxnQ2BnwIXR8TFlcHStguBtwPjKZ5OWALsK2kFxfwxj1W14YPAmykS5ObA3cAFEfF9Sf8AvCci+h8TmwDcGhGnqygWeizwT40fGutVPvPrDf2XvTsDhwAXD1BlZD+KRwOJiHspinnuRPFs6HmRyiFFRGV9v6uAn1Qnvgq/ozjD2xe4JS37An9BOuur8m5gdhRVSZ4Afj3I7/QKcE16PR/YdpBtzd7Aya/HRMQtFBVGNq36qFbJJVG7/NHvgEMHKdfUf9/vnRSJ7x6K6sSv3u8bqIk11ldbE689m7kOX8VYg5z8eky6pB0NPFX10U3Ax9M2OwHbAPdRlFE/vr8cUtVl71dSnHNr7O5minJKm0bEipSsnqSovzjQmd9NwNHpPuOWFOXg+71AUd7dLAsnv94wPg11WQhcCsyMiHVV25wLjJZ0Z9rmb6Mow/5jirJhd0haBHys6nsnA+M0wCQ9EfEMRbK7q2L1LRQdGQNVS/45xX3BO4EfAjdWfDYL+FVlh4fZULiqi5n1JJ/5mVlPcvIzs57k5GdmPcnJz8x6kpOfmfUkJz8z60lOfmbWk/4/D9qMTyB8fdUAAAAASUVORK5CYII=\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 2 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 2 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 2 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"with np.load(autotuner.filename) as data:\n",
|
|
" simulators = data['simulators']\n",
|
|
" \n",
|
|
" for simulator in simulators:\n",
|
|
" megacells = data[simulator + \"_megacells\"]\n",
|
|
" block_widths = data[simulator + '_block_widths']\n",
|
|
" block_heights = data[simulator + '_block_heights']\n",
|
|
" arguments = data[simulator + '_arguments']\n",
|
|
" \n",
|
|
" plt.figure()\n",
|
|
" plt.imshow(megacells, origin='lower')#, vmax=maximum, vmin=minimum)\n",
|
|
" plt.xlabel('Block Width')\n",
|
|
" plt.xticks(range(len(block_widths)), block_widths)\n",
|
|
" plt.ylabel('Block Height')\n",
|
|
" plt.yticks(range(len(block_heights)), block_heights)\n",
|
|
" plt.colorbar()\n",
|
|
" plt.title(simulator)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"Text(0.5,1,'Simulator performance (megacells)')"
|
|
]
|
|
},
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"simulators = [LxF.LxF, FORCE.FORCE, HLL.HLL, HLL2.HLL2, KP07.KP07, KP07_dimsplit.KP07_dimsplit, WAF.WAF]\n",
|
|
"peak_performance = [autotuner.get_peak_performance(simulator) for simulator in simulators]\n",
|
|
"megacells = [performance['megacells'] for performance in peak_performance]\n",
|
|
"xlabels = [\"{:s}\\n[{:d}x{:d}]\".format(simulators[i].__name__, performance['block_width'], performance['block_height']) for i, performance in enumerate(peak_performance)]\n",
|
|
"\n",
|
|
"plt.figure()\n",
|
|
"plt.bar(range(len(simulators)), megacells)\n",
|
|
"plt.xticks(range(len(simulators)), xlabels, rotation=90)\n",
|
|
"plt.ylabel(\"Megacells\")\n",
|
|
"plt.title(\"Simulator performance (megacells)\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Registering my_context in user workspace\n",
|
|
"PyCUDA version 2017.1.1\n",
|
|
"CUDA version (9, 1, 0)\n",
|
|
"Driver version 9010\n",
|
|
"Using 'GeForce 840M' GPU\n",
|
|
"Created context handle <879048629408>\n",
|
|
"Using CUDA cache dir c:\\Users\\anbro\\Documents\\projects\\ShallowWaterGPU\\GPUSimulators\\cuda_cache\n",
|
|
"Autotuning enabled. It may take several minutes to run the code the first time: have patience\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"%cuda_context_handler my_context"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"gen_data: 3115.227938 ms\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<matplotlib.image.AxesImage at 0xccab2d4c18>"
|
|
]
|
|
},
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 864x576 with 3 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"def gen_test_data(nx, ny, g):\n",
|
|
" width = 100.0\n",
|
|
" height = 100.0\n",
|
|
" dx = width / float(nx)\n",
|
|
" dy = height / float(ny)\n",
|
|
"\n",
|
|
" x_center = dx*nx/2.0\n",
|
|
" y_center = dy*ny/2.0\n",
|
|
"\n",
|
|
" #Create a gaussian \"dam break\" that will not form shocks\n",
|
|
" size = width / 5.0\n",
|
|
" dt = 10**10\n",
|
|
"\n",
|
|
" h = np.zeros((ny, nx), dtype=np.float32); \n",
|
|
" hu = np.zeros((ny, nx), dtype=np.float32);\n",
|
|
" hv = np.zeros((ny, nx), dtype=np.float32);\n",
|
|
"\n",
|
|
" extent = 1.0/np.sqrt(2.0)\n",
|
|
" x = (dx*(np.arange(0, nx, dtype=np.float32)+0.5) - x_center) / size\n",
|
|
" y = (dy*(np.arange(0, ny, dtype=np.float32)+0.5) - y_center) / size\n",
|
|
" xv, yv = np.meshgrid(x, y, sparse=False, indexing='xy')\n",
|
|
" r = np.minimum(1.0, np.sqrt(xv**2 + yv**2))\n",
|
|
" xv = None\n",
|
|
" yv = None\n",
|
|
" gc.collect()\n",
|
|
"\n",
|
|
" #Generate highres\n",
|
|
" cos = np.cos(np.pi*r)\n",
|
|
" h = 0.5 + 0.1*0.5*(1.0 + cos)\n",
|
|
" hu = 0.1*0.5*(1.0 + cos)\n",
|
|
" hv = hu.copy()\n",
|
|
"\n",
|
|
" scale = 0.7\n",
|
|
" max_h_estimate = 0.6\n",
|
|
" max_u_estimate = 0.1*np.sqrt(2.0)\n",
|
|
" dx = width/nx\n",
|
|
" dy = height/ny\n",
|
|
" dt = scale * min(dx, dy) / (max_u_estimate + np.sqrt(g*max_h_estimate))\n",
|
|
"\n",
|
|
" return h, hu, hv, dx, dy, dt\n",
|
|
"\n",
|
|
"\n",
|
|
"with Common.Timer(\"gen_data\", log_level=logging.INFO) as t:\n",
|
|
" h0, hu0, hv0, dx, dy, dt = gen_test_data(4096, 4096, 9.81)\n",
|
|
" \n",
|
|
"plt.figure(figsize=(12, 8))\n",
|
|
"plt.subplot(1,3,1)\n",
|
|
"plt.imshow(h0, origin='lower', interpolation=\"none\")\n",
|
|
"plt.subplot(1,3,2)\n",
|
|
"plt.imshow(hu0, origin='lower', interpolation=\"none\")\n",
|
|
"plt.subplot(1,3,3)\n",
|
|
"plt.imshow(hv0, origin='lower', interpolation=\"none\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"metadata": {
|
|
"scrolled": false
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"run_simulation = False\n",
|
|
"sizes = list(range(64, 512, 64)) + list(range(512, 2048, 128)) + list(range(2048, 4096, 256)) + [4096]\n",
|
|
"if (run_simulation):\n",
|
|
" megacells = {}\n",
|
|
" for simulator in simulators:\n",
|
|
" print(simulator.__name__)\n",
|
|
" megacells[simulator.__name__] = np.zeros(len(sizes))\n",
|
|
" g = 9.81\n",
|
|
" warmup_timesteps = 2\n",
|
|
" timesteps = 5\n",
|
|
" for k in range(len(sizes)):\n",
|
|
" nx = sizes[k] - 1\n",
|
|
" ny = sizes[k] - 1\n",
|
|
"\n",
|
|
" h0, hu0, hv0, dx, dy, dt = gen_test_data(nx, ny, g)\n",
|
|
"\n",
|
|
" arguments = {\n",
|
|
" 'context': my_context,\n",
|
|
" 'h0': h0, 'hu0': hu0, 'hv0': hv0,\n",
|
|
" 'nx': nx, 'ny': ny,\n",
|
|
" 'dx': dx, 'dy': dy, 'dt': 0.9*dt,\n",
|
|
" 'g': g\n",
|
|
" } \n",
|
|
"\n",
|
|
" sim = simulator(**arguments)\n",
|
|
"\n",
|
|
" #Create timer events\n",
|
|
" start = cuda.Event()\n",
|
|
" end = cuda.Event()\n",
|
|
"\n",
|
|
" #Warmup\n",
|
|
" for i in range(warmup_timesteps):\n",
|
|
" sim.stepEuler(sim.dt)\n",
|
|
"\n",
|
|
" #Run simulation with timer \n",
|
|
" start.record(sim.stream)\n",
|
|
" for i in range(timesteps):\n",
|
|
" sim.stepEuler(sim.dt)\n",
|
|
" end.record(sim.stream)\n",
|
|
"\n",
|
|
" #Synchronize end event\n",
|
|
" end.synchronize()\n",
|
|
"\n",
|
|
" sim = None\n",
|
|
" gc.collect()\n",
|
|
"\n",
|
|
" #Compute megacells\n",
|
|
" gpu_elapsed = end.time_since(start)*1.0e-3\n",
|
|
" megacells[simulator.__name__][k] = (nx*ny*timesteps / (1000*1000)) / gpu_elapsed\n",
|
|
" print(\"[{:d}x{:d}] => {:.1f} ({:2f})\".format(nx, ny, megacells[simulator.__name__][k], gpu_elapsed))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Loading from file\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"datafilename = \"megacells.npz\"\n",
|
|
"if (not os.path.isfile(datafilename) and \"megacells\" in globals()):\n",
|
|
" print(\"Saving data to file\")\n",
|
|
" np.savez_compressed(datafilename, megacells=megacells)\n",
|
|
"else:\n",
|
|
" print(\"Loading from file\")\n",
|
|
" with np.load(datafilename) as file:\n",
|
|
" megacells = dict(file[\"megacells\"].tolist())"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"metadata": {
|
|
"scrolled": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"Text(0.5,0,'nx')"
|
|
]
|
|
},
|
|
"execution_count": 14,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.figure()\n",
|
|
"for simulator in simulators:\n",
|
|
" plt.plot(sizes, megacells[simulator.__name__], '.-', label=simulator.__name__)\n",
|
|
"plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)\n",
|
|
"plt.title(\"Performance\")\n",
|
|
"plt.ylabel(\"Megacells/s\")\n",
|
|
"plt.xlabel(\"nx\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"Text(0.5,0,'nx')"
|
|
]
|
|
},
|
|
"execution_count": 15,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAfkAAAEWCAYAAABlpO6zAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xl4lNX1wPHvmX2yEBJISAgxYQ+7AiIoimurddda29qKtmq1an9WW5dqrbXa2ta6VVuxrrRWcd9ad8ENUUFA9rAGCIQkZN9me+/vj3dCAyQhQCbL5HyeZ57MvNs9Mwmcuct7rxhjUEoppVT8cXR1AEoppZSKDU3ySimlVJzSJK+UUkrFKU3ySimlVJzSJK+UUkrFKU3ySimlVJzSJK9aJSLHisjWgzj/YRH5dUfGFAsiMlJEFotIjYj8rKvj6UoH+ztXSnUvrq4OQMWWiGwCBgARoBZ4C7jKGFPbweVcBFxijJnetM0Yc3lHlhFD1wPzjDGHdXUgSinVkbQm3zucboxJAg4FDgNu6uJ4ugURafqSmwusOMhrKKVUt6NJvhcxxhQDb2MnewBExCsid4vIZhHZEW1i97d0vojcKCLro83aK0Xk7Oj2UcDDwDQRqRWRyuj2J0XkjujzVSJyWrNruUSkTEQmRl9PFZH5IlIpIktF5NjW3oeIbBKRm6IxVIjIEyLia7b/NBFZEr3WfBEZv8e5N4jI10CdiHwAHAc8GI19hIikiMhsESkVkUIRuUVEHNHzLxKRT0XkXhEpB27bY1uliGwQkSOj27eISImIzGwWw6nR7oHq6P7bmu3LExEjIjOjv5MyEbm52X6niPyq2e9hkYjkRPfli8i7IlIuImtE5DttfIZp0c9tW/QzfGWP/ddF494uIhd3UOx+EXkqWt4qEbm+edeAiAwUkRejn/vG3t51olSHMMboI44fwCbgxOjzQcAy4P5m++8DXgPSgGTgdeAP0X3HAlubHXseMBD7y+H5QB2QFd13EfDJHmU/CdwRfX4r8HSzfacCq6PPs4GdwLei1z4p+jq9jfe0HMiJxv1ps3ImAiXAEYATmBk93tvs3CXRc/3RbfOwuxqarj8beDX6eeQBBcCPm73PMHA1dneXv9m2i6Nl3gFsBh4CvMA3gBogqdnnOi76XscDO4CzovvyAAP8I3rtCUAAGBXd/8vo73AkINH9/YBEYEs0Blf0cygDxrTyGf4HmAOkAm5gRrPYwsDt0e3fAuqB1A6I/S7gw2iZg4Cvif59Ra+3CPvvxAMMATYA3+zqf0P60EdPfnR5APqI8S/YTmq10SRjgPeBvtF9gp2ohzY7fhqwMfr8WJol+RauvQQ4M/r8ItpO8sOiMSREXz8N3Bp9fgPwzz3OfRuY2cZ7urzZ628B66PP/w78bo/j1zRLYpuAH+2xfx7RJI+dpAPA6Gb7f4LdZ9/0Pjfvcf5FwNpmr8dFP+sBzbbtBA5t5f3cB9wbfd6UKAc12/8F8N1m7+XMFq5xPvDxHttmAb9p4dgswCKauPfYdyzQALiabSsBpnZA7LslbeAS/pfkj2jhc70JeKKr/w3pQx89+aH9ib3DWcaY90RkBvBvoD9QCaQDCcAiEWk6VrAT3V5E5ELgWuz/zAGSotfaJ2PMOhFZBZwuIq8DZ2CPDwC7T/w8ETm92SluYG4bl9zS7HkhdgtD07VmisjVzfZ7mu3f89w99Y8eX7jH9bP3cf6OZs8bAIwxe25LAhCRI7BrtWOjZXmB5/e4XnGz5/VN52K3QKxvofxc4IimrpIoF/DPFo7NAcqNMRUt7APYaYwJt1T+QcY+kN0/u+bPc4GBe8TvBD5uJUalVDtoku9FjDEfisiTwN3AWdjNuQ3YTbpFbZ0rIrnYzbAnAJ8ZYyIisgT7SwHYNbh9eQb4HnbT7EpjzLro9i3YNflL9+Pt5DR7fgiwrdm17jTG3NnGuW3FWgaEsJPOymbXb/75HOzSjf8GHgROMcY0ish9tPPLEvb7G4rdXbHn9g+NMSe18xppItLXGFO5z6N3dzCxb8dupm/6XJv/DrdgtyAN3894lFJt0IF3vc99wEkicqgxxsJO3PeKSAaAiGSLyDdbOC8RO7mVRo+7GLs212QHMEhEPG2U/Sx2//QV2Mmiyb+wa/jfjA4s84l9v/agNq51pYgMEpE04FfY/ctE38/lInKE2BKjg8WS27jWLsaYCPAccKeIJEe/3FwbjbGjJGPXpBtFZArw/f0491HgdyIyPPr+xotIP+ANYISI/FBE3NHH4WIPityNMWY78CbwNxFJjR57TCfE/hxwU7TMbOCqZvu+AKrFHhTpj/4djBWRw/fj+kqpPWiS72WMMaXYA8uaJqm5AVgHLBCRauA97EFde563EvgL8Bl2Qh+HPeCtyQfYt6EVi0hZK2Vvj55/JP9LyhhjtgBnYifrUuxa3S9p++/z38A72P28G7AHu2GMWQhcil3brIi+t4vauE5LrsYeq7AB+CRa1uP7eY22/BS4XURqsAeaPbcf594TPf4doBp4DHsAYQ32F6jvYrdqFAN/xG5Ob8kPsVssVmP3uV/TCbHfDmwFNmL/nb2APf6h6cvV6dh3fmzEblF5FEjZj+srpfYgxhxsy6NSnUvsCX4uMca819WxqAMnIldgD8qb0dWxKBWvtCavlOoUIpIlIkeJiENERgLXAS93dVxKxTMdeKeU6iwe7Nv6BmPf3fEs8LcujUipOKfN9UoppVSc0uZ6pZRSKk71iOb6/v37m7y8vK4OQymlepRFixaVGWPSD+L8DJfL9Sj27bJaKex+LGB5OBy+ZNKkSSUtHdAjknxeXh4LFy7s6jCUUqpHEZHCfR/VOpfL9WhmZuao9PT0CofDoX273YxlWVJaWjq6uLj4UexZRPei38yUUkq1Zmx6enq1JvjuyeFwmPT09Cp2n5hs92M6MR6llFI9i0MTfPcW/f20mss1ySullFJxSpO8UkqpbishIeGwfR9lO/fcc/Oys7PH5efnj87Pzx99xx13ZMQytp6gRwy8U0oppdrjjjvu2HrxxRe3toxyr6M1eaWUUh3mk3VliX98a3XmJ+vKEmNVxgknnDD0wQcf7Afw5z//uf8ZZ5wxOFZl9XRxXZNfVFjBgg07mTqkH5NyU7s6HKWU6rF++cLSnILimoS2jqkLhB3ry+oSjIGHP1zP0P6J9Ylel9Xa8SMyk+v//O0JW/Y3lieffLLwqKOOyh82bFjgoYceyvz8889XNe275ZZbBv3xj3/MApg9e/bGKVOmNOzv9eNJ3Cb5RYUVfPeRzwhHDF63g6cvmaqJXimlYqg2EHY1zZRujP060esKdnQ5OTk54V/96lfbTjvttJGzZ89eN2DAgEjTPm2u313cJvkFG3YSith/baGwxYINOzXJK6XUAWpPjfuTdWWJP3ryyxHhiOVwOR3W3d85dMP0Yf3rYhHPsmXL/CkpKeGioiJ3LK4fL+I2yU8d0g+HgGXA7XIwdUi/rg5JKaXi2vRh/esev+jwgk/XlSUfNax/TawS/Ny5cxPef//9lEWLFq2cMWPGyNNPP706Pz+/w1sM4kHcJvlJuakcPbw/izdX8sTFU7QWr5RSnWD6sP51HZncGxsbHQMGDBjf9PqSSy4peeGFF9Iee+yxTXl5eaHf//73W2bOnJn32WefFXRUmfEkbpM8QHZqAiu2VWuCV0qpHsqyrEV7brvzzjuLm55fcMEFVRdccEEVwIsvvripE0PrEeL6Fjqfy0lDMLLvA5VSSqk4FNdJ3u9x0Bhu9e4NpZRSKq7FdZL3uZxELEMoooleKaVU7xPfSd7tBKAxpE32Simlep/4TvIeO8k3aJJXSinVC8V3knfZby8Q0uZ6pZRSvU98J3ltrldKqR7N6XROalo6Nj8/f/SaNWs8AG+//XbSuHHjRg0ePHjM4MGDx9x99939m8659tprB2ZkZIzPz88fPXTo0DGzZs1Ka37NW2+9dcDgwYPHDB8+fMzIkSNHNy12M2XKlJF5eXljm8o6+eSTh3Tuu+14cX2ffFOS1+Z6pZTqmbxer7V69eqVzbdt3rzZddFFFw1+/vnn10+fPr1++/btrhNPPHH4oEGDQt/97nerAC6//PIdt99++45ly5Z5p02bNvqiiy6q8Hq95k9/+lP6Bx980GfRokWr0tLSrJ07dzr//e9/92269uzZszccc8wx9Z39PmMlpjV5EdkkIstEZImILIxuSxORd0VkbfRnzGaq8e+qyWtzvVJKdYoN8xJ577ZMNsyL2VKzf/nLXzLOP//8ndOnT68HyMrKCv/+97/f+uc//zlzz2PHjRsX8Pl8VllZmRPg3nvvzZw1a9bmtLQ0C6Bfv36Rq6++emesYu1qnVGTP84YU9bs9Y3A+8aYu0TkxujrG2JRsM9tf4fR5nqllDpIr1yZQ8nKNpeaJVDrYOfaBDDwyX3Qb3g93qTWa1kZo+s566E2F74JBAKO/Pz80QA5OTmBd999d/2qVav8F1544W6Jefr06fXr1q3z73n+J598kpCbm9uYnZ0drqiocNTV1TnHjBkTaK28Cy+8cIjP57MAZsyYUT1r1qytbb7nbq4rmuvPBI6NPn8KmEfMkrz2ySulVKcJ1rggutYsxn7tTTqohWNaaq43xiAiZs9jRWTX84cffnjA7Nmz07du3ep58cUX1zY7r83y4q25PtZJ3gDvRH8Zs4wxjwADjDHbAYwx20Uko6UTReQy4DKAQw455IAK1z55pZTqIPuocQN2U/3T3xmBFXLgcFuc/fAGhhzb4SvRjRo1quHLL79MbJqzHuDTTz9NGDp0aEPT66Y++aeeeqrvpZdeOvikk05alpaWZvn9fmvlypWe0aNH94pV62I9uv4oY8xE4BTgShE5pr0nGmMeMcZMNsZMTk9PP6DCN9aswNNvLuurVhzQ+UoppfbDkGPruOC5Ao76vyIueK4gFgke4LrrriudM2dOv/nz5/sBiouLnb/61a8GXXfddcV7Hjtz5szKcePG1T300EP9AK655prtl19+eW55ebkDoLy83NF8ZH68iWlN3hizLfqzREReBqYAO0QkK1qLzwJKYlH2kpIl/OLTy/CkW/yzcC7Hl2RwaMahsShKKaVUkyHH1sUquTfJzc0NPf744xsvu+yyvLq6OocxRq644ood3//+96taOv62227b/sMf/nDItddeW3b99deX1tbWOiZOnDja7XYbl8tlrr766l1fDpr3yaelpYXnz5/fo5ewFWP26tbomAuLJAIOY0xN9Pm7wO3ACcDOZgPv0owx17d1rcmTJ5uFCxfuV/mPLnuU+7+6344FBz+beDWXjLvkQN6KUkr1SCKyyBgz+UDPX7p06aYJEyaU7ftI1ZWWLl3af8KECXkt7YtlTX4A8HJ0kIML+Lcx5i0R+RJ4TkR+DGwGzotF4ZMHTMYhDiKWhdPhYvKAA/47V0oppXqkmCV5Y8wGYEIL23di1+Zj6tCMQzk6+2jmFS7gxLRfa1O9UkqpXieup7UdmDQQwUGyDOvqUJRSSqlOF9dJ3ufygSOk98krpZTqleI6yfudfpAwDcFwV4eilFJKdbq4TvJelxeA+lBjF0eilFJKdb64TvI+pw+AunDDPo5USinVHSUkJBzW/PUDDzzQ78ILLzwE7CVlb7311gH7Oqc3i+sk73fZaxU0hDTJK6WU6n3iOsl7nXZzfWO41QWHlFJKdaAF2xYk3rfovswF2xbEbKlZ1X5dsQpdp/G57Ob6xojW5JVS6mD8+tNf56yrWNfmUrN1oTrHpupNCQbD48sfJ69PXn2iO7HVpWaHpQ6r/91Rv2v3UrMAVVVVzpNOOqnF6WvV3npFkg9EdOCdUkrFWl2ozmWiS80aDHWhOleiO7FDl5p94IEH+i1cuFBbCdopvpP8zo0ADAyt7+JIlFKqZ9tXjRvspvor379yRNgKO1wOl3Xn9Ds3TB04NaaL1ai2xW+S3/IFvv9cB1np/Nj8E7acDTlTujoqpZSKW1MHTq176ISHChZsX5A8NWtqjSb4rhe/SX7Tx/giIQBCWLDpY03ySikVY1MHTq3rzOR+7733Zs2aNWvXbXQ7duz4urGx0TFgwIDxTduuuOKKHbfddtuOzoqpO4nfJJ93NP4P7ZsH6h0uTO50pItDUkoptX/q6+sXN3/9s5/9bCewE+Cee+7Zds8992zb8xzLshZ1UnjdXvzeQpczhaqUoxm3rg9zqo4jkKVLzSqllOpd4jbJbytYxZufBplY0Jcpa8spXLVy3ycppZRScSRuk/yWFcuwDAiC0xi2rFzW1SEppZRSnSpuk3zOmHGI2PdqWg6h75BRXR2SUkop1aniNskPHDGKQX0TESxWZrhJzBna1SEppZRSnSpuk3z94sU41m7DFYafv7+awNIlXR2SUkop1aniN8l/8SXOiEXE4cAVMViL9Y4KpZTqaTpqqdnbbrttwNChQ8eMGDFi9LRp00YUFBR4Yhd19xG3ST5hyuE4MRiHEHQK9aMmdHVISimlusikSZPqlyxZsqqgoGDlWWedVfHzn/98UFfH1BniN8kfdhgJgzIBuPeMdGqG6sA7pZSKtbr5nyWW/OWezLr5n3WrRWROP/30muTkZAtg+vTptdu3b+8VNfn4nfEO8Kb2hZIStmY4aQhFujocpZTqsbb96uacwNq1bS41a9XVOYIbNyZgDDsffRTP4MH1jsTWl5r1Dh9eP/D3d3b6UrOzZs1KP/HEE3vFcrVxneTdPj8AzkiYxlCrf2dKKaU6gFVX58LYS81iDFZdncuR2L2Wmv3b3/6WtnTp0oRZs2atOZi4eor4TvIJ9t9BQihMo9bklVLqgO2rxg12U/2Wyy8fYcJhh7hc1sA//GFD4pHTus1KdK+88kry3XffnfXxxx+v8fv9pqvj6QwxT/Ii4gQWAkXGmNNEZDDwLJAGfAX80BhzUN/0WuNOSAbAG7a0uV4ppWIs8chpdTkPP1xQ99lnyYnTptV0pwT/6aef+q+++urc//73v2uzs7PDXR1PZ+mMmvz/AauAPtHXfwTuNcY8KyIPAz8G/h6Lgj3JdpGegCGgSV4ppWIu8chpdZ2Z3Nu71Ow777yTUl9f7zzvvPOGAgwcODD4wQcfrOusOLtKTJO8iAwCTgXuBK4VEQGOB74fPeQp4DZilOTdyX0B8IQNjWHtk1dKqZ6mo5aa7a3rycf6Frr7gOuBpgzbD6g0xjQ1lWwFsls6UUQuE5GFIrKwtLT0gAr39InW5ENCQ7DXtM4opZRSQAyTvIicBpQYY5p/o5IWDm1x8IMx5hFjzGRjzOT09PQDisGTbPfJe0JQHwwc0DWUUkqpniqWzfVHAWeIyLcAH3af/H1AXxFxRWvzg4C9mlo6yq4++bCDunBjrIpRSimluqWY1eSNMTcZYwYZY/KA7wIfGGMuAOYC344eNhN4NVYxePqk2D/DQkOoIVbFKKWUUt1SV0xrewP2ILx12H30j8WqIHefPmAM7rDQENYkr5RSqnfplMlwjDHzgHnR5xuAKZ1RrjMhAadlcIcdNGhzvVJKqV4mbheoAXD4/TgtC6clBCI68E4ppXqa5svGzpkzJyU3N3fs2rVrPddee+3AjIyM8fn5+aOHDx8+5umnn04BaGhokFNPPXXIIYccMnb8+PH5a9as8QD8/e9/T8vPzx/d9HA4HJPmz5/v76r31VniOsmLx4PTGFwRoVFr8kop1WO9+uqryb/4xS9y/vvf/64dPnx4EODyyy/fsXr16pVz5sxZf9VVV+VFIhHuv//+/ikpKeHNmzcvv+qqq3Zce+21gwCuuOKK8tWrV69cvXr1ytmzZ28cOHBg8Mgjj4z7fty4TvKBwmpGpB5JhjuXgKVJXimlYm3LqvLEz15en7llVXmHLTX71ltvJV155ZV5r7322roxY8bs1Sw7ceLERqfTSXFxseuNN97o+6Mf/WgnwMUXX1wxf/78ZMvafTK02bNnp5199tnlHRVfdxa3C9QECqspfeRrRqYfyzBzNG81FnR1SEop1WO9P3tVTnlRbZtLzQYbw47KkoYEDHz1TiF9M/z1Hp+r1elG07KT6k+4cFSbC98Eg0E5//zzh73zzjtrDjvssBZrax988EGiw+EwWVlZ4R07dngGDx4cBHC73SQlJUV27NjhysrK2jUj2quvvpr60ksvxf2UthDPSX5DFUQMIg4cGMYE2/zbVEopdZBCjRHXrunNjP3a43Md1AJkbrfbTJw4sfbhhx/uf8QRR+z2heDhhx8e8Nxzz/VLTEyMzJ49e4PD4cCYvedXE5FdGz/44INEv99vHX744b2ieTduk7x3SAoIGMtgGYvFzpKuDkkppXqsfdW4wW6q/89DS0dYEeNwOMU64aLRG3JGpR3UYjUiwmuvvbbhmGOOGXHjjTdm3nXXXcVN+y6//PIdt99++25z0mdmZgY3btzoGTp0aCgUClFbW+vMyMjYtULZ008/nXbOOef0iqZ6iOM+eW9uH/zj+mNMhI+3/ZM17u2EI7pIjVJKxUrOqLS6U6+cUHDYN3KLTr1yQsHBJvgmycnJ1ltvvbX2hRde6Hfvvff2b+vYU089tfLxxx/vB/DEE0+kTps2rcbhsFNdJBLhjTfeSL3wwgt7TZKP25o8gDsrEcfXLioDO/BIAo1hiyRn3H6vUUqpLpczKq2uo5J7cwMGDIi89dZbBTNmzMhPT09vdcWx//u//ys799xzBx9yyCFjU1JSInPmzFnftO/NN99MzszMDI4ePfqguhB6krhO8o4ENwBuZyIuRyONoQhJ3rh+y0opFVeaLzU7bNiwUFFR0TKAH/zgB5UtHZ+QkGDefPPNDS3tO+2002pOO+201bGJtHuK62rtzjL7Fki3KxGno5GGYGQfZyillFLxI26TfPGGKha8WQiAx5nAgIYUAmFN8koppXqPuG27LiqoIGjZd014HH4y65NpDOnAO6WUUr1H3Nbks0ekEhL7udfpo9K3kcaQ1uSVUkr1HnGb5DOHpJA93r7TwuPw0+DaQoMmeaWUUr1I3CZ5gL5ZSYSNhdfpxx8Ka3O9UkqpXiWuk7zb5yRoRfA4/HhDEW2uV0op1avEdZL3+FwELQuP048nZLS5XimlepjusJ78Aw880O/CCy88BOBPf/pT+oMPPtgvFu8V4Nprrx146623DgC45pprBr7yyivJALfffntGTU3NfufsuE7ybq+ToDF4HX48YYuAJnmllIqpwmVLEj/+95OZhcuWdNhSs9B91pO//vrrS6+66qqdHfneWnPfffdtO+uss2oAZs2aNaC2tna/c3a7bqETkT8BdwANwFvABOAaY8y/9rfAzuTxu6gwhj4OH+4Q2ievlFIH6O2/35dTtqWw7aVmGxoc5duLEjCGL157kbSs7HqP39/qf7z9c3Lrv3nFNftc+KZpPfnXX399bXvWk7/tttu2gb2e/A033HCIZVk0zV8P7VtP/v777+937733ZqWnp4eGDh3a6PF4DNg17aSkpMjtt9++Y8qUKSPHjRtXv3Tp0oTy8nLXE088sfHOO+/MWrNmjf/MM88sf+CBB7ZVV1c7zjjjjCHbt2/3WJYl119//bZLL720Ijs7e9wZZ5xR/sknn/QBeOaZZzaMHTt2t/d27rnn5p122mlVRUVF7pKSEveMGTNGpKamhj///PN2r53e3m8F3zDGVAOnAVuBEcAv21tIV/F4nQQNeJ1+3GG0T14ppWIo2NjgommpV2Ps1wd7zeh68i+++OK6g1lPvvnxr776auqFF17Yam28sLDQfddddw2cP3/+6o8//rigoKCg1WZ9j8djLVy4cM3FF19cet555w37xz/+sXn16tUr5syZ07+4uNj50ksv9cnMzAytWbNm5dq1a1ecc8451U3n9unTJ7Js2bJVP/nJT0quvvrqnNbKuOWWW0oyMjJCH374YcH+JHho/2Q47ujPbwHPGGPKRWR/yukSHr+LkBHcDi+usGifvFJKHaD21LgLly1JfPmPvx1hhSMOh8tpnfzTn2/IHXfoQS1W0xXryX/00UeJU6dOrRk4cGAY4JxzzikvKCjwtXTs2WefXQkwYcKEhmHDhjXk5uaGAHJycgIbNmzwTJw4seHmm2/OueKKK7LPPPPMqpNPPrm26dyZM2eWA1x66aXlt9xyS6tJ/mC0tyb/uoisBiYD74tIOtDqB9Rd2H3yDhziINFKoD4Y6uqQlFIqbuWOO7Tu7Bt+U3D4GecUnX3DbwoONsHD/9aTX7JkSeKNN96Y2XxfU5/8okWL1jQlz6b15AEOZj359lZkfT6fAXA4HHi93l1fJhwOB+FwWMaPHx/46quvVo4bN67h5ptvzv7FL36R1fyYZuXt/e2kA7SZ5EUkC8AYcyMwDZhsjAkB9cCZsQioI7l9dpIHSLISqQ/v9xgLpZRS+yF33KF1R3//ouKOSPBNOns9+WOOOaZuwYIFycXFxc5AICAvv/xy6oHGvmnTJndycrL105/+tPyaa67ZsWTJkl3jGmbPnp0G8Nhjj6UedthhbX5eiYmJkaqqqg4fePe4iKQC87AH3H0CYIypAzp8veCO5vG7CEa/GyWYJOqDmuSVUqon6sz15HNzc0M33HDDtqlTp45KT08PjR8/vj4SiRxQH/WiRYv8N9100yCHw4HL5TJ/+9vfCpv2BQIBGT9+fL5lWfLss8+2uDxuk5kzZ5adcsopwzMyMkL70y8vLfVf7HaAiA84FjgFOArYjJ3w3zLGbG5vQQdj8uTJZuHChft9njGGZ66exzFJLuaWPsXc477N4z84OQYRKqVU9yMii4wxkw/0/KVLl26aMGFCWUfGpGzZ2dnjFi5cuCorK6vVLyzttXTp0v4TJkzIa2nfPgfeGWMaiSZ1ABEZjJ3wHxSRTGPMlJbOi345+AjwRst5wRjzm+j5zwJpwFfAD40xbX6rOlAignE7AfBLIg3hbj+MQCmllOow7b1PPhFoMMZY2CPttwLnAm01XwSA440xtSLiBj4RkTeBa4F7jTHPisjDwI+Bvx/Mm2iT1wEYfJJAY3iv2yuVUkr1YuPHj88PBoO79XXPnj1745QpU2Lav1tUVLQsltdv0t5b6D4Cjo72z7/tTNObAAAgAElEQVQPLAS+Y4z5QWsnGLsfoOlWAXf0YYDjge9Htz8F3EYMk7z4XJiGAF5HEg068E4ppVQzX3/99equjiGW2jtST4wx9cA5wF+NMWcDY/d5kohTRJYAJcC7wHqg0hjT1AexFchu5dzLRGShiCwsLS1tZ5h78/hdBK0AXkcCAW2uV0op1Yu0O8mLyDTgAuA/0W3OfZ1kjIkYYw4FBgFTgFEtHdbKuY8YYyYbYyanp6e3M8y9eXxOglYQj8OPFen2NwQopZRSHaa9Sf4a4CbgZWPMChEZAsxtbyHGmErs2/CmAn1FpKmbYBCwrf3h7j+3z2UneWcCxqrd9wlKKaVUnGhXkjfGfGiMOcMY88fo6w3GmJ+1dY6IpItI3+hzP3AisAr7y8G3o4fNBF490ODbw+N1ErTCeJwJYGlNXimlepIf//jHObfffntG0+vp06cPP//883ObXl966aWDbrvttgEAv/3tbzO8Xu/EnTt37mppfuONN5KTk5MPbVpi9sgjjxzRue+ga7U58E5EXqeV5nQAY8wZbZyeBTwlIk7sLxPPGWPeEJGVwLMicgewGHhs/8NuP7ffRcAKk+JOAVMfy6KUUkp1sKOOOqr2hRdeSAVKIpEIFRUVrtra2l1J/Msvv0z63ve+twXghRde6Dd27Ni6p59+uu/PfvazXQvQTJ48uXbu3LnruiD8Lrev0fV3H+iFjTFfA4e1sH0Ddv98p/B4ndSbCF6HH2jAGNPuOYmVUkrtn8Z1FYmBdZXJ3mF9a3zDUg+6+fT444+vvemmm3LAnj1u5MiRDTt27HCXlpY6k5KSrPXr1/uOPPLI+hUrVnjr6+sdd91115Y//OEPWc2TfG/WZpI3xnzYWYHEisfvosKycDrc+E2YQNjC597nmEGllFLNlL9QkBMqrmtzPXkrEHFEyhoSMFDz4Vac/f31Dq+z1fXk3ZmJ9WnfHtHm6nZ5eXkhl8tl1q5d6/nwww8Tp06dWldUVOT+4IMPklJTU8MjR45s8Pl85qmnnko755xzyk8++eTayy67zFdUVOTKzs4OAyxcuDApPz9/NMCZZ55Z/sc//rH4QD6DnmhfzfXLaLm5XrBvhR8fk6g6kNvrJGTsv7G+EQiENMkrpVQsmEDEtStjmOhrr/OgZzSdNGlS7dy5cxM/++yzpF/+8pc7Nm/e7Pn0008TU1JSIlOmTKkFePnll9NeeumldU6nk1NOOaVi9uzZqTfddFMpaHN9W07rlChiyONzErDsv7r+YSeN4QgpuLs4KqWU6ln2VeMGu6m+7MkVI4gYB06x0r4zYkNHNNlPmzatdv78+UmrV6/2H3744Q1DhgwJ3nfffQOSkpIiF198cdnnn3/uLyws9J588skjAEKhkOTk5ASaknxv1uboemNMYdMjuml49HkJsM/1eLsDt+9/K9H1C7loCEbaPkEppdQB8Q1Lret/0ZiC5BmDivpfNKagIxI8wIwZM2rfe++9vn379o24XC4GDBgQqa6udi5evDjpuOOOq5s9e3baddddt62oqGhZUVHRspKSkq+Li4s9BQUFno4ovydr1y10InIp8AIwK7ppEPBKrILqSB6fk1A0yaeEPTSGNckrpVSs+Ial1qWcPLi4oxI8wJQpUxoqKytdkydP3jXZSX5+fkNSUlIkKysr/Morr6R95zvfqWx+zimnnFLx1FNPpXVUDD1Ve+euvxJ7RPznAMaYtSKS0fYp3YNdk7dH0ydHfDSGWh0DopRSqhtyuVzU1tYubr7txRdf3NT0vKXFXh599NGtTc9PO+20mpgG2I21d8a7QPPlYKMz1rW9EH034fE5CTQlectPY0hr8koppXqH9ib5D0XkV4BfRE4Cngdej11YHcfjc4G4CVkBEi0/DZrklVJK9RLtTfI3AqXAMuAnwH+BW2IVVEdy+5wgLoKRRhJMAgFN8kop1V6WZVk6e1g3Fv39tNoP3d4+eT/wuDHmH2AvIRvd1u3niXV7nICbgNWA35FAqfbJK6VUey0vLS0dnZ6eXuVwOHpEF21vYlmWlJaWpgDLWzumvUn+fewFZppGNvqBd4AjDyrCTiAOwe3xErR24nMkaHO9Ukq1UzgcvqS4uPjR4uLisbS/5Vd1HgtYHg6HL2ntgPYmeZ8xZtetC8aYWhFpc3rD7sTj9xJobCDVnaED75RSqp0mTZpUArS1EJnq5tr7zaxORCY2vRCRSUBDbELqeB6/n6DVgNeRoLfQKaWU6jXaW5O/BnheRLZFX2cB58cmpI7nTfAQKAngER+NgVBXh6OUUkp1inYleWPMlyKSD4zEXpxmtTGmx2RLj99FyAog4iDc0GMaIJRSSqmD0t6aPNgJfjTgAw4TEYwxs2MTVsdye500ROy5fKz6xi6ORimllOoc7UryIvIb4FjsJP9f4BTgE6BHJHmPz0VltOHBNGqSV0op1Tu0d+Ddt4ETgGJjzMXABMAbs6g6mMfnJGjZo+odwR7Ty6CUUkodlPYm+QZjjAWERaQP9lKzQ2IXVsdy+1wELXtUvTsQ3MfRSimlVHxob5/8QhHpC/wDWIQ9Kc4XMYuqg7l9TgLGTvL+kCZ5pZRSvUN7R9f/NPr0YRF5C+hjjPk6dmF1LI/PRRiwTAS/ToajlFKql2jvwLuJLWwbChQaY8IdHlUH8/icIG6CkUb8YZ0MRymlVO/Q3ub6vwETga+x75MfG33eT0QuN8a8E6P4OoTb50RwEbQaSIjogkpKKaV6h/YOvNsEHGaMmWyMmQQchr3qzYnAn2IUW4dpWlM+EGkg0XJ2dThKKaVUp2hvks83xqxoemGMWYmd9DfEJqyO5Y421wesBhIi+zP/j1JKKdVztTfJrxGRv4vIjOjjb0CBiHiBFm88F5EcEZkrIqtEZIWI/F90e5qIvCsia6M/UzvovbTK43UhuAlajSRanlgXp5RSSnUL7U3yFwHrsBeq+TmwIbotBBzXyjlh4DpjzChgKnCliIwGbgTeN8YMx16n/sYDDb69PH4niMturjc+jDGxLlIppZTqcu29ha4hWnt/wxizZo/dta2csx3YHn1eIyKrgGzgTOwpcgGeAuYBN+x35PvBHe2TD1rVuHERDkTsbUoppVQca1dNXkTOAJYAb0VfHyoir7W3EBHJwx6s9zkwIPoFoOmLQEYr51wmIgtFZGFpaWl7i2qR2+tExE0wYq9A11gVOKjrKaWUUj1Be5vrfwNMASoBjDFLgLz2nCgiScCLwDXGmOr2BmaMeSQ6mn9yenp6e09rkcMhOB0uAlY0yddokldKKRX/2pvkw8aYqv29uIi4sRP808aYl6Kbd4hIVnR/FvY8+DHn8rgJRpN8oFYXqVFKKRX/2pvkl4vI9wGniAwXkb8C89s6QUQEeAxYZYy5p9mu14CZ0eczgVf3M+YD4nZ7CETsZWaDNTp/vVJKqfjX3iR/NTAGCADPANXYI+3bchTwQ+B4EVkSfXwLuAs4SUTWAidFX8ec2+vbVZMP12qSV0opFf/aO7q+Hrg5+mgXY8wn2FPgtuSE9l6no3j8vl0D76x6ba5XSikV/9pM8vsaQW+MOaNjw4kdb6IfC4ug1YhV3+3X1FFKKaUO2r5q8tOALdhN9J/Tes282/MmJQIQtOoxmuSVUkr1AvtK8pnY/ebfA74P/Ad4pvk89j2FLzkJsJO8q1GTvFJKqfjX5sA7Y0zEGPOWMWYm9tS064B5InJ1p0TXgbyJXsBBMFKPozHS1eEopZRSMbfPgXfRRWhOxa7N5wEPAC+1dU535ImuRIcRvLVhAoXVeHP7dHVYSimlVMy0WZMXkaew74efCPzWGHO4MeZ3xpiiTomuA7m9Lvp5B5HhH4IrZFH26DIChe2egE8ppZTqcfZVk/8hUAeMAH5mz28D2APwjDGmx1SFPX4nGb4cBLGDD1sENlRpbV4ppVTcajPJG2PaO1lOt+f2uigNlGAw9i0CTsE7JKWrw1JKKaViJm6S+L54fE52BitZXjYPgL6nD9VavFJKqbjWe5K834WIi7KGLQA4E91dHJFSSikVW70mybu99uj6xkg9ABFdpEYppVSc6zVJ3uN3AS4aIw1YGCLVmuSVUkrFt16T5N1eJyJuLDHUO0Nak1dKKRX3ek2Sb5oMx4ih1tmApUleKaVUnOs1Sd7hdCDixMKiVuq1Jq+UUiru9ZokD+B0uECgzlRrkldKKRX3elmSdwLQYFVh1YYwluniiJRSSqnY6V1J3m3fG18XrgQDVl2oiyNSSimlYqdXJXkc9iy+gXAlAMvXlHVlNEoppVRM9aokHxK7Jh+MVAFQsKG8K8NRSimlYqpXJfmkxAQAguEKAEb38XdlOEoppVRM9aokn5KSCEAoZK8jn+PW+euVUkrFr16V5L3RmrxEQoQ9Dr2NTimlVFzrXUk+ya7JOyPQ4HHorHdKKaXiWsySvIg8LiIlIrK82bY0EXlXRNZGf6bGqvyW+PokAeAMu6hx6kp0Siml4lssa/JPAifvse1G4H1jzHDg/ejrTuPvmwyAWG7KMJrklVJKxbWYJXljzEfAnveonQk8FX3+FHBWrMpviT9ak3dYLorDESI1QYzRWe+UUkrFp87ukx9gjNkOEP2Z0ZmF+xJ9gCCWi83BEIQNpiHcmSEopZRSnabbDrwTkctEZKGILCwtLe2Qa3r9LsANxokrtAXQfnmllFLxq7OT/A4RyQKI/ixp7UBjzCPGmMnGmMnp6ekdUri7cpW9pjxOTk34JwCRGp2/XimlVHzq7CT/GjAz+nwm8GpnFr5u69uIuMA4uC3DAtDb6LqRbQWr+Pzl59hWsKqrQ1FKqbjgitWFReQZ4Figv4hsBX4D3AU8JyI/BjYD58Wq/JYsS3KCuIEAJW571jttru8ethWs4vnbbyYcCuHyuDnv13cycMSorg5LKaV6tJgleWPM91rZdUKsytyXSaNPYx4PgREaJEjIYYhUa5LvDrasWEY4ZP8uwqEQW1Ys0ySvlFIHqdsOvIuFiQMPQ8SFQZhem0KtS6e27S5yxoxDRAAQEXLGjOviiJRSqufrVUkewIELMOSWVFIhRvvku4nMoSNwRhcMcjhdpOcO7uKIlFKq5+tVSb5+8WLEAgN885UQdfXVWpPvJkoLNxIOBhl/4slEQkHWL/y8q0NSSqker3cl+S++BCtARIJUe314arZqku8mtq6ylziYes53SUrrx6pPP+ziiNqw5Qv4+C/2T6WU6sZiNvCuO6rOHkCIYhDDl0MGkuepxjRGMKEI4nbudXygsJrAhiq8Q1Lw5vbpgog7X1e9562rVpAyIJPkfv3JP2oGX/33VRpqqvEnd7PPfePH8M+zwFjg9MLM1yBnSldHpZRSLepVNfnSUAC7sR4sEerd9tT6LY2wb1hTTunDS6l+ZxNljy4jUFjdmaF2iUBhNaX/WEb12537no0xbF29gkH5YwEYNf1YrEiEggWfdEr5++XdX4MVtpN8JAibPu7qiJRSqlW9KsnnjBmHOP7XeFGVtA1o+V75ui+2298HDJiwRWBDVWeF2WUCG6ogbE8S1JnvubxoC4011QwaNQaA9NzBpGXnsOqTbtZkv3QObFtMcXAki2rPoTg8GvKO7uqolFKqVb0qyQ8cMYqccT8CPCQ3QnFyEdDy1LaNFQHArmVGLEOdb+/m/HjjGZS022vvkJROKbepP37QKLsmLyKMmn4sRatXUF3a6szHnau0AN74OdtTv83LlX9gQe33ebX8NxSHRnZ1ZEop1apeleSLN1RRujUZp2cENX4vVklfYO+pbY0xhHfUA1BvGebXR9hWFf8D9IJbawFwZyWCAfF0zhebratWkJSaRsqAzF3b8o+aAcDq+R91SgxtCtbD8zPB7Wdl4k+xLAGcRCJQtKaiq6NTSqlW9aokX1RQgTEGhzsPCNK3tB8WZq/m+vCOelwRQ9AyuEWoRsgekdolMXcWKxih9pMivCNSSb90HLgc1H22LeblGmPYumo52fljdk2GA9B3QCZZI/JZ9cm8mMewT29eDyWr4JxHKCqNAGAwOIgQMpu6NjallGpDr0ry2SNScbocOFyHAEKfyq3UO+r3GnjXuL4SgMKghcchnHHpGDI7qem6q9R/WYxVF6LPcTk4EtwkHJpO/eISrIZwTMutLt1BbfnOXU31zY06agZlmzdRunlTTGNo09JnYfE/4ZhfEBh4DFWba9nsjGCAQZ6vSCx8outiU0qpfehVST5zSApn/fwwklL74HKlI+EAdVKxV02+YU0FdRFDRfS2Ol8g0hXhdhoTtqj5qAhPXh+8g+0vM0nTBmJCFnWLdsS07K2rVgDsGnTX3MhpRyMOB6u7qjZfugbe+DnkTocZN7Lmix04DMzzh1juiVAYnEzWts+Yv3Jj18SnlFL70KuSPNiJfsSUTMQ9lGq/l0C4gmBl4679JmIIbKyiNGwY9o1cAMpX7GzzmoHCaqrnbumxt9nVLyklUhUg+dicXds82Ul4cvtQ99k2jGVaPG/rqhUHvTTs1lXL8SUl02/QIXvtS0jpS+74w1g9/yOMZe0e8+LFlM16hPrFiw+47OaWlCzh0WWPsqRkib0hWA/PzQR3Apz7KDhdfP7BZkodFj84eRjjT8wBnBTUf4PXn/4r1z63hIq6+B+3oZTqWXpdkgcYlJ+KuHJBhHB97W41+dC2WiRkUW5g9LHZ1BsIbK1p9VqBwmpKZy3t9HvLO4qxDDUfbsGdlYhv5O7jDpKmZRHe2UhgXeVe561Z8ClzbruBT+b8k+d/d/MBJ/pd/fGOlv8UR00/lurSEoqaXb9+8WKWXfkbvnxxJcuu/A0Vzz5LY0EBoeJiIrV1GGN2O3ZfXwYWFi/khmcvZ+5zT3Ljsz+1E/1/fwmlq+Hcf0CfLMqKagmWNLK9n5Mrjx/OlWeMYvjkASxvOJUrkhfz2pJtnHjPh7y6pGi38pVSqiv1qhnvmmQN64vTk4XDOAk3NCANYUzEIE7Z1R/vyk3G5XYSTnbjrAlhLIM4ZK9rNa7aCdFKZtO95T1pdryGFTsJlzaQ9v383Qa+AfjH9seRtIHa+dvwNRt4GAmHmffUP+wXxhAJhw9oadjainIqi7cz4cRTWj1m2OQjcHm8rP7kQwbl2036BU+9yaKxV2NE2GSFMfc8QEr1b/93ksOBIzkZ8XiIlJUBIF4vhzzxOL5DJ1BYXcjysuUsK1vG8rLl7Fi3lm8uSMdhCZF1hgWpD3Lo+ufhmOth6PEAvP3GeiIYvnHKUBzRv4NJp+SxdmEJO8qG8e7MFK75CP7v2SW8vLiIO84ay6DUhP36PJRSqqP1yiTv9jrJGprK1ppB1EcCCIJVF8TZx0v9mnKqI4bM0f0A8A5KxrNqJ6Ubq8gY2nfvi7ma1UCd0mn3lncEYww187bg6u/HP7b/XvvF5SBxSiY1c7cQLm/EleYDYP5z/6K2vAwRB8ZYOJzOA1oatmh1U3/83oPumnj8CQydfARrFnzCcRddRmTnTr7eOQiTaI+XsBxuyr95OaOP8hCprsaqqSVSY/+s/2oR4dJSBIgEGvnX0zfx5KpqakJ2y4zf5Wd0v9EcY43DYe1AEJwWBJYthdFHw7E3AhAJRyhetpOdCcJPj/hfl0a/7CTyxqawdOVpXLj+ZV664s88NX8Td7+zhm/c+xHfPTyHtEQP04b2Z1JufN+doZTqnnplkge7yX7z8hHUsgmwp7Z1JLgJba6hNGwxKt/+TzltdD/qVpdT/FVJi0neqgqCUyBiSDwiq81afPGGKooKKsgekdotRusH1lYSKqol9dzhLbZSACQekUXNvC3ULthO328NpvDrJXzx2ouMO+GbjJg6nZf/cBtDJh7eZi2+tfnwt65ajtvrI2Pw0DbjHDV9Bmvmf8SmpV+x5ZGPqEmciIjBGECEjaVJhNekMu3so0g/JHnXeR+9+Q/6/HI1njBgYFlmiJMHn8y4/uMY238sQ1KG4HQ4WZPyCZ8tnk2G7xB2NBbyep8yDp9+OUc67C8Sb7y7EV8YRh2bhcu5e7fCpFOH8eLyKlYsqOSwU+r40fTBfGPMAK5+ZjGPf7oJAJ97HU9fMlUT/cHY8oU9hXDe0bpWgFL7oRcn+TSc7jwaGu3Z1iI1QUzQQiKGKoeD/jl2skge1pc6oGbt3v3SYN9u5xuZRnhnA+Htda2WV7yhilfu+YpI2OByOzjz54d1eaKvnrsFZ4qHhMMyWj3GleLFP7of9QuLcR/Rlzcf+gtpAwdx3MxLcXt9DD/iSAqXLyUSDuF0ufc6354P/2uIGMTloP8l43Yl+q2rVjBw5CgczrYn3cmbMBFfUjKfP/kvKjmdQWkN9PnWOFYuLWXUuHTSgrDozUKe+/2XDJ+cwRFnDqExoYZfVT5FxvecnLjE4rhlhtOqcvnmtFv3un75ko0cm/ldnOJktDmSxu3w889u57G+eYzpN4ZFc7eS4oBLzhi+17mZg1MYlOdgyeaTGbf0ZVxTfsig1AROHJXBks2VGKAxZDF/fZkm+QP18T3w/m8BAZcXZr6uiV6pduqVA+8AMvKS8fj7EgrZ94FHqoM0rq/AAN6hKTgcwpyvP+YnH95PSAxmZwPh4O630oXLG4mUN+IdmoJ/TD8CG6uI1O09RS7A1jUVRML2gKxwyGLL6vKYvr99CWyqIrixiqSjByGutv8MEqcNxKoPs+jB52isq+XUn/0St9duuh99zPE01lSzcclXLZ7bsHInhM1eawA01NZQtnlTm031TZwuN4cMH8f2ks0kWuWUnziCi99Yxt1bivnpuyuIDE/mB3dMY9IpuWxcWsbTv1nA3ff/C2lwU3iIl0dO9zB/jIucl78gsG7dbtcONtQTWlmFU1yIOHCKk9xQHhO29OOn7/2U575YRL/qCCn5KXg9LX8nnnTmeOqtNFa/9/WubVOH9MfrdtDUPrJoUwVWK3cpqDasfBU++F30hYFwI7x7K9S1fceLUsrWa5O80+lg4Ii+NLrSAQhs30796goqwxYDR/fj0S/f5r/P/pzBr7zK9sg2+ghsX7f7gi2BDXbt3je0L/4x/cFA46qWk3diH89urzevKCcSslo8tjPUzNuKI8FF4pTMfR7rHZJCOCFM38o0ZlzwIzLyhuzalzv+MBJS+rLyo/f3Os8KRmhofvuhYddfXNHqlQC7BtO1JVgXYMeaFCAMo+r43bsFuy4XDFss2LATr9/F1DOH8q2bR1KY/TWHbB7P95f8mhvr7+fy0C0Mv+qvuBKT2P7rW3e7HW/9sx+TmzAmmowtRBwMSR3JuNV9SKgXXvtgDi6Eb505rNX4svNTGZDewFdFE4kULQNgUm4qT18ylV98cyTfPTyHeQWl3P7GSh15vz9WvAzPXwz9R4LLB+K0H5s/g/vHw/u/gwadVliptvTaJA8waGQqeEYRiNSzY+lqwttqKQsb0ocnsOaJu5iwbgD+hlQC1dvp44QtK3evPQTWV+FIdOPKSMA9MBFnX69dc23BjsIanE5h8ql5HHpiDsXrq/jP378mFOz8iXaC22ppXF1O0lHZONoxP33Jpg18vXUead5MRo8+Zrd9TpeL/COPYcOiL2isrd213RhDxfMFRHY24J/gwZlSiiNZqH67kIblZWxdtRyny0XmsBFtlm0sw39vf5tG9wgcrgQWfr2QMQP74I22PhgDk3LtsRLljeVcveAK5ub9m0Ov6kNWXl9KFgeJfJnGypdALr+ZhsWLqZwzBxO2qHhpLclrEqgKFdLfcyt9XP8i2f0CSY4Mju1/HucUHM7wkrFUJO0gKavlMQtgL6gz6YzR1EQGsO6N93Ztn5SbypXHDeMP54zjkumDeXL+Ju6JfkHpLhYVVvDQ3HUsKuxmyXL5S/DCj2HQ4XDJu3YT/fE3w4/egiu/gOEnwcd3w33jYd5d0Bj/q0QqdSB6bZ882P3yDlc2DZFaEuvSEQeUm+08c8OfyQwlYqL/r1eEShguDkpX7QTsflljDIH1lXiHprBjUzVFBRVkDkqicXUFVjCyW/IMBSOs/aKYYZMHcMTpdi04NSuRuf9azRt/XcqpV47H4+u8X0XNh1sRj5OkaVn7PDbY2MB/7v8TliMMHgd1C4rx5u4+lmD0Mcfz1Zuvseazj5lwkn07XM37m2lYVoZ/rIuSOy+BSARJTKHv+Xez89+rCJpKMoeNxOXxtFTsLgue+pKiqiT6NSzk9cSRTKxeyh0XjGX7+kWs//ItHtuSzbw1Q8kf6OLSdy6lqLaIh054iClZU1i0dRNFayvBQCRkUZU5jvRpUyn96z8IlgwjtL2RVZULGOR/BN/xP8Ln8kDe0Xhqh2L+CUcHjubTmh3MHb6Qq99/i1knzcLn8rUYZ96kPPrNWcyi5f0Z0ViH+BJ37RMRbj51FLWBMH/9YB3JPheXHdP2YMPOsKiwgu89soBgxMLlEC6ZPpipQ/uR3dfPwL5+Er1d9N/DshfgpcvsfvcLngdvsv28eT/8eU/C0b+AeX+wHwv+Dkf9DKb8BLxJrV5aqd6mVyf5fgMTcSd6CYTL6OtJJ2IibNnxHL7GMGnharb5U7FEqAzYy51GShr44vNn+XrHm0zpfypp1Vk09vHw2l++wrIMAzwOpvqdNBaUM99hsayokmNGZJC0vZFgY4T84SlUz92Cd0gKo48aiMvj4L0nVvHa/Us4/eoJeBP2HrjW0cJlDTR8XUrSMYNwtKO8uU8+QkXxNs675U6SNiRS+/l2Uk4djDPpf8k5Y/BQ+g06hJUfz2XCSadQ/3Up1e9txp1t2PngtRC2xz2Y2kpMaD7unBPJ3zSZnQPa7ldd/+U2vvq8ln5lX3FHzmAumtIfeWUxG5+5jUPLZpNvDCf5PJz3aYCP67+guL6QB094kClZdjLIHpGKy+UgHO0W8Sa66H/5Tex8Zg2hbbWs8yxifc27HH/cUfbtctF5AvzAztP/v707D4+qvBc4/n3PmS3rZJnsCQmBsBE2e3gAACAASURBVC8BEpBNAUUoerXuaFtt3Vvb2quttZfebldbu2i1arWuVapV677ggigoLuxrCAQIBLKRfZ3JZOac9/5xJjFAwqKEhPh+nmeeOefkZOaXdybzm/Oug4l82c+s2EwGTUjmpxW/5Ocf/Zx7Zt2Drh1e+yE0waQ5Ht57PYbiJe8w5MKLKNtRSGnBZjLGjCN12EjuvGAsLf4gv1+ynUinnSumHD7L38limpK/Li1iWvs+xhteNunhPPyR5OGPijvPcYfZSY0JIy3GRWoo8XfdT4xyofcwKuNL2/wfeOV6GDQVrnjhyAk7eQwsfAbKN8CHf4Blv4PP/g4zfgJ514BDzVOgKF/rJC80gTu8DF+9NUtdrb+caJ+NyOydjBg+i/xNH7OtJo7idms8eLRo59mXlhDduJaW5DAu5lusWVeNaVjtrAf8Jm1hOi/8eyu/Maylah/8cDeLwuNIj3fBkmKaTAlCEHl6GoOGxjJvYQ5Ln9/Jq3/dwHk35xIW6ehxyFl3Nq8qo3JrNcljEhg3Ja3H87wbNuBdvQYpxoIuiJrR87kdtn/6EVs/XMqUCy5j0JhxBBK9tHxaTuuaSqJnD2LPpmpqSlvIGBnHqNPn8PGz/6R20x58L5QhA1XUPfQbbIkehN2ONAwwTRr+vZjgd3X8bQkk7cuidXVlt/0CastaWPpEAdFN+3nFrbPosjwuj1jHU+8FKVyzntwsK3H7RJCWzNeoavZxz6z7mJo6tfMxkrPdnP/fE9hXUEvBynIOvLOXWAF6ZDhVy//IujQb09Jb0M/7a2eC7/DXgnKmNTcxK9LF8A+j+cNZv+L2/b/ljlV38DPneXjXrCF8cj7hEyZ0/s6QeTNwv/Mi61YGaI15j6X/uB+QiBcEI2bMImfyVH43N4dWf5BFr24hwqlzfu7RX4euNlZtZO2BteQl5ZGbmHtcv9uhxevjsacXs6BoLw3e2Ug0JmNyznBJ4tRR1DugoslPeYOP8gYfpfU+Vu+po6nt4MWKdE2QHO0KXfl/8UXA125Q3exn3ugkJmXFHXtgm1+AV26AzOlwxfPgiDj67wCkToBvvQD718CHd8J7v4RP74eZt8LEq8Defe2LonwdfK2TPICtdi1oVrtwc3s9wch6nk34Pf+++hLCDqwje+/HVGrZ1L1URxTNTNjpIbbWzdDAGLyeAGUVAYLBUgiUgz2VTXomU00beexksr6NTYHxeEtdDE80kH4nQgikKWlZUUbLijKcwDnRNtoa2yj+/Wris6II7m0GU4IuiJyRii0uzNo3Q2PDTau3+p7ddUQXNeAGgjub2AwHJXopJYGyMhpfe42avz+EcEQTMfdOXDku9KgjV5M3VlWy9JEHSBk2gqkXXw6APTEce7abhhWlvLmijPpKHwBr3trLGQvH4rJF0vRsEbrPh2/tAyTeditxV1yBr6AA7+o1OIflUP/cc2x440X2JCeycOYi6l/eiTRMIqemdj53W2uA1+5ejd7WTE3zen51ZS6j114KNUWMSJzIyr1uGs1odL2ZHyR5qHN48e2/kmXrYpmbdfDfkZztJmlQFKm1PtheR2uEnaE/nsTqze1opsboi38KYQcPbdu4v4GywjqCxFKSUUJqSTTjliXx2/zbeHXJXex5+XmEKcHhIOuf/+xM9JquMWFiG+8vr2D/I89hdQ20XoftK1dQ+PGHAEyJjSfV5mHxPzbCeTNZMHsydlf3ichv+NlRt4Nttdv4uPRjPi77GIlEFzrXjbuOORlzyHJnEWYLO+LrSVsT7Hqf6rXvsWurSbxvFvXGWaEYBRKNqh2Cqh1F2Jw6KVnRTBziJiU/haRsN84wGy3+IBUNPsoafJQ3tHV+CShr8LFuXz1vbq4g2GUEwSMfFzM2LZqpQzyMTo1mTJqbwfERnTMGHmTTc/Dq948/wXeVkQ9Xvgp7P4EPf28tEfzJfVayn/AdsB35Pa8oA5Hoi96+Qoj5wH2ADjwmpbzrSOfn5eXJtWvX9kosK3+3iEGtc9GEjmEGWdb6b2Kv/RUXTEg/6LyyR9fQsqOKN/c/BFJyfuaPOOCv513ff4hq8mMNltLJGj6JKe2zKW38M7trKjFc42hzTuXMmDQcejgSiSkN1tY+h56qk545gTTPRIwqB/U7G4jWBTpwvJWgUkqabRCdLrH79tFetArf5g0YdV/09neOuQR79hzM2pfI+NtdaBGHf5CuK6nns51VON99iLbqcq780/1EeRIp215P4WcVtG6pJt+ls8GAfc1fDBfUkMwIayDKHoPNvo7kW67BFh/fbZzP/vBafKX7mVnZgvuiOwjW2XGfM5iomemYhskzd62iuaSZ4UX/YOqCYsK9xZA4Cs64jUbPaTz24+sYdMZoHo1eTlXQyz3VddSk/ZbbNqfw+FV5nDkyqfP5fNtqaXh9N0aDn8aUCJYXNjD3G17e+feDJNZ6OWPGHFJ+/euDYrz2qTXEbmhkpMPFt3+Xz/P/8zPGaTOIt6XgLfgPxs6l1t8CtE8cwZj7HsGWkEBLfR1v3/dH9hUW4HQl49adxNtTqQ2WM+uWG9HtNip2FlG5u4iyou00V4dW+BOChIxMEoYMhZRoamLa2amVsa2+kN0NuwlK6wrapbvIKPExep+kYJBgZ7r1LhEIUiNTGRIzhCHuIWTHZJPtziZbCyeyeAVy+xIqdlSztWUOu9umYWIjJqGdYcOcrPu0DVPq6BjMjbkXIyyJipSrqagOp7a0JTThkNW0lTwkhpQhblKGuImKdx02DbJhSv7y3g5WLt/LeHQ2YlDjtlPX2k570Kp5iXDojEqNZnSqmzFpbsakRZNT/gb66zfB4Jlw+fMnpppdStizAj64E0pXQ8wga5ri8ZeDfmpc2xxrLd2RCCHWSSnzTnBoyinkpCd5IYQOFAFzgVJgDXC5lHJbT7/Tm0n+gyefZOj2IWhCYEqTt2I3ccNtPzrsaqNp+X6a3tnLyyX3Eq5HMT/9GlZVv8Xelq0HnacLG98c9GOKmzexofZ9dM3O7JTLibZ7WFfzLuG2aKp8JdS2V3T+ji1oYDfbkY4woqPPYWbsSCseTN5gDWW+MgyfDycGDtMkXNNwohFvxDPNczaa0AGJ11tLRFgcQrMhzSAB4wBajBenu43ytz8jYezVtNUWYXxyL3pcLJ4bbyD2soU0BAWbyxp5e0sFtZ8+R3bNHhxtzewZNp+EiCG4K3XsbTYMe4CalL1c4h1EpV5HYVU8mqmjSYNpeisedyIrD7yMzzONifNPY8TUZJzhdraveZ/6bR8QO2oOQ3PP4IHvXcrY02YyZOUafJu2EPVfvwQtjQpPE1UHDBq9USQVPM2UsW/gGzWUmryrqEkeTU1bLTW+Gqoff5f2xmaKMlqoSQjyJ5fO+AO7WOT6H97zj+Hdn8wkPtJJ65pK6l/a2fHCEH/1GF771zbqSj7A1/o53xg6BvHSa2Q++wzhEycCsLWskUvvW8kPmsOYeNYgpl00lF3/eZ43XnyGOe75xMeNxV+6CtnWjNFQAs1lmJpG+ahMKoQDJKR7kmn1TmdcpA2ktSZCwvXjD2p68Rt+Pitazf0vvkp4434y2n1E1ho4g9aogaBNEox34I6LY1BsCjkRSQS3baNxxWfURYQR6/Vhn52HkZ1BhWig1KxjT7CK4kA5jU4DrxOkCGNS1SSGV83E1ZZCu9bOvhgfV1w+gfyxWQCs+P0DiAo7ejLkL8iFZXdAUyVy3BUERl5B/YF26spaqK9opaGyFSNgIgBXuI3YxHBiEsKISQgjMsaJAMqKG3BtrkYDDMA/IZGUwTFUtfrZ3+BjX4OPknofe+u9eIMm07RNXKe/wW7bYD7KuomM5DiGJEaRmRiOw25D6AI0wWePv0j7vmb07HBm/eSqY/8HlxJ2vW9V45dvgLhsOON2Xlm2hppNm/CMz+WCW/587I93BG/99h7sBzQCSSbn/PqWo4dmSIz2IK3eAD5fAK83QJs3iM8XpGpnLaMK6tEQGJg0XTjsSyV6leSVvkjyU4HfSCnnhfZ/ASCl/ENPv9ObSX7Vu6tI+sCPhrXOzMaJkm9edsZh57XtqKPmyQI+qHieGEc8E+PPojYvSP1r97KhLYApBAKB5pzEtJgs3M4E3tz/MFMSziErcgyFsdvYuvY1TCHQpMQ9dATRkXG07NlMoKmeYFDi1x0Ymka8M5VE1yCq2vZR6y8/YvyHnqsLOwmudBJdmSSFZRLrSLKaCKRECIFhBnn/wLM0+crRTYEpIGADQwdhatiMjjHkAkfUZWBLpjRmOzsSVnHAvZV4I8C3S+czI3A+5aseodYeR4bbQ8yQWSyOfQN94zZEWDbhjm8itCCeqJ1E6R9QoiWSI3bgM9PZsauOpPShSGcCohLsjWEMyxhDgisMKSUmsKxhMfdNW4XJ4e/PydvjGVUciYnE1CTuy0/jxrL3MGuKuMp/GxHDZ3P3uAzqny+ymjasP4foszNp23kX//qwEVdEFDfc+xf2nHc+IiyMwa+8jOZwcOPidTRvqmNai87F1w+i/fF7aVm2jG3Dsyhx2Vgw/WYiy53H/T4z7dAc56fCWUMRxezyFtLir0C2VuNu1oirj2S87ia2TeBrbac+0E6DQ6fJ5USGvnA6AkHabXrHn0NCUyuugIEAhJQIaVW8t9ujaY4aRGt4Kmg2XMFWYo0mInUDpyuOMKeHCIeHKHsiDv3U6pwmpcRrtOIzvfjNttDNR5vpw2968Zte2sxW2kwvhvQjMZHCBGmgmz6cRiNmO4Q5R5IQlkm1r4Tm9l1Ilw0hBQgNgQZoIDWsktbQsGPXXNi1MOzChUOzbjbNhV24iNRiSIvIRiCQSBraazAx0YWOJmzo6GhCRw/dNKGjiWMbwWxKkx3aTub+4drjLi+V5JW+qLdKA/Z32S8Fphx6khDieuB6gEGDeq8X8oG6aHa1VJBg06gOmkSZ3Q8rs6dYvXzjo+aSYJO0GAGCkdlMvuU32G+8llqngzh/O1XnnkllVQ2pNjdnp15FrDOZ2qRK5v73DdT/o4UDqz8lafI0Lr3h1sOeQ5omD3/3Gmr95Z3J3WZLw5OQhMOp43LZcYY5CIt0ERkdyc7NW9i/fxe1/gpAw508lqiULLxNfnY0B9jatAenuY9xkQlkhmcB1nCulLDRNJsJHYvnYUdiB0yqkBzojMerr2d83j7ObGwicm8bRokNf2kAgiuQ8xbgScghtrqQsCEX09T6GXGJb1Hh8eCs28nLE/7MyKqZDKueRDUjkUi2Iwj6VgGf0NA8F9Eahj/MSyCiEU+gHY/TqgLWpCTJPY3rx+ficXnwhHmID4snITyBeFc8bz19P3uKl1tNJCYkN7nhylfR/nkuj9f8hacL0qkv8GJLDidY0waGibBpOAOfUr3jbaQ5mqA5g51bmkn/9a/Yf8ON1D76KHUXXck7Wyv5qYgkztVM/XcvApuNhFtuYcFll/D07TdTWbqDIdo4BCCRVJol7KpeR+qYMQhZh23VZjwVrdRlziYlPdeaiEKaNNQUYK8LJ8eZyAjHTGCm9ZpLE0kthv0AXn8jrsggzjQdW7wLW0osWkI8DRjUtjSx9ZMV1FVVQuhLW11sJDYRRJqgay7CbQmE2+KItseQaoshyh5LpD0Gl35ws4w32ExzoI7mYCNxWhgiVIu1r6WQ/d7tSGliYiKltJKkNEPNTGbnvokMHT94P9aRyPSkC9GEjikNPq16jYb2GjShWV+ChY5AC+2H7ju3BQK982dCCDQ00sKHkh6RgwglxYDhxTT9ROkReOwJOPXu+yMEzHb8hpc2o5U2ozW07UWPtJHjnoiGhhk7g11N6wmY/s7Ebde/SOIOzYVdc2LTjjwSxTCDCITVhCHBqbloCTbSLtswZRBDBjGk0WU7tG8evN+xHWGLIjduFkJomNKgtnb3EZ9fUXrSF0m+u+bmwy7XpJSPAI+AdSXfW8Hst5kEDEmtYWACDbbuZ6HTouzg0okLxJBgE1QEJdnDYgnPzmLCw4/hXW31tm5PG877d6xGSkmsMxmJZPgFZwNYib2b5N5BaBqZ44dQuLoeq7JTJ2diBgtu/WW3508Altx9B6UF+0gfPajb89r9Bot/9STpMmh9qEmTysho5lyzkNgIBwiJb9XnNL74IuX+ILvibJ3PPd5bT/ZjZRgNDbQCttQUoufOITw/n/ptDdgHTcOeOROjqQwxLY4bvl3A3k3reen3v2LRyO9QMtvL+tc/Y/i+GQg0JCat2nb06DC4tJiUxATS41JJixzJ/t89h8lMtFDN0lgxmNObc4gcl3rY4jlTZ5xLybKVyKCBJjRyx50OER7Mha/QdP+LzCeNNVod+d+eSEKrYY1UiG/B+cbFbGibRGRsPJ7sSXz0fBEL/3cy0QsWUP33h1ixvJDvCQ8i7nQSil4jav48Em/9KfYka27/M6/5ASv/9jjZaWOssfemwa6m9Uz50bfInpjfGd+BzaspWvRnipvH4LELagImwSYHMa4Wom1tRLvCiI6JJiI8HLvdBe1J+Bo8uOpNnFhX6sFmCLaa2MrbiA5rJt4ZIDU9hfVtKcQ5MzCkn+xoHyJsBEF/LLp5cBkFw20UtPmpwGRSbhxDh8WhxzrQYhxI3fpCuf5fz+He6+l8XxhD2znzoh+iaTpC0xHeWrRl/4tW8ikiZzZi/l0IdzKaZiVmTWihbWHtaxov3Pkoy3f8h0RXGlVtZdgz8zj/qgvQbALNJhCaQNv+Mtry36FlTUFc+AC6y4W0qiGQyM5ZAaWUGNLglTv+RUrAsN5B0mSls5Qx111AAA0fAj0AequB1mpg8wYRXgPNa6D5DBxtQZxtBjF+A81vIELNDR10YLjbeu1MDaRNIO0CaRPg0MAOpl3Q7hBIh0A6JTgE0gnSITFdEhySwpc+ZoJ5WmdZFoVt4KwfX2hNl6xZ0yWL0BcaayRHKIqO7UPul/z9fj7c+kJnOSaO/3Jt8oryta+uX1dSz60PrSK5TVDpktz9/Sk9LiRS/dgW/CVNEDDR5mSQenZWt+dt/Ot64itbQldIEtvkFFIvOnxxk54cLXEfr+WflLJv8SckaH6qTSeDvjOdWdMP7lgo29s5cPc9bF7yEQdiPSTV15AlWomcMYPw/HzC8/NxpH/xQdPR3i2lBE2SeOMEnJnRmKbBIz/4HslDhvHNn/2Sj9auYcMTtWimjiECyObHGDvrLM669gcHPb93wwa23f4wMnE8tvoiUudeSqDCwJ4RRdxFOdiTD74aLS8qZNPSJRSuXEHK0OF886ZFNL1QTKCilciIlxHtz/HHxD9xxw++jSaD8MQ8aktL+ef2YcxYeCUjZ/4Xz/3fahIzo4iL34fnD78AYOfQSyhLncHl34sjdurhtZwv/N8ivDurSXQNotq/n+k/vpqhkw6riOLNPz5GSXEWCA2kxK41IYSddvPg6nGddiL1GqL0aqL0aqL1FqI1k3DNhl1EoIlYDJlKUKZw6HfydgwaAwIv4EqJICU3gfhRcTxTVMUd725naGIkj3wnjyxPzz3VP3/0SfyFNThHejjtuu8dfoJpwupHrPniXdFw/oMwbF6Pj1dZ3MiLd72O4d+P7szg4tvPO3ghpjWPw1u3QM7ZcOniYxretq6kniV/eoIJpoMNWjsLbrv6Sy/2I01JxUelBN4u7qxaty/IJmVGutX+/xUcb5v80ZyIzwFVXa/0xZX8GiBHCDEYKAMWAlf0QRyANfXo3d+fwufFtZyWHX/EDw97SgT+XdZ89UmnpfZ4HsnhmJUtCCmRQE3Q5AhnH+ZEJPauZk1PZznTKdh4gNG5SYcleADhcGCLiyOjtoSM6j2gacTdfDOeG67v9jGNFqtnvQhdefiLG3FmRqNpOiNnzGL9ktfxNjVyel4+sIZtW0sY6rGzbXE76SMPn68+fMIERt11Y6hG5CrCcnPxbaqm4Y3dHLh/A1GzMoiendG5mE7qsJGkDhvJkLzT+PTvT1Nx7xqczgjirxpNWHIWrf94h59V385r7yZwgWsDlK1jQ8R16PbdhI+dzpu7qykb7CKwvYEtzfu5EEDYqEzKI8zRQOzUs7v9u1OGDmP11k3U+ssRmkbtvpJuk3xeToD9ewKY0oYmgpw3+FmSc+LxCzfNwTha2mNp9kfS7Aun2RtPc2syJc0a3pZDHkhY6x5ExTnJbPWS5BedXx5LJMTMG8zEacmERTpoCxj8/KXNvLqxnPmjk/nLpeOJPMqsdd0m9q40DU67EQafDi9fB89eak00c/Yd3faCT852c/Ht53W/pPLqR2HJTyFnHly22FpR7hhMyoyF267m8+JaFhzlf/RohCZInZVBhVOnYXMNMeM8pEw9nv/Onp2IxN7Vif4cUL6eTnqSl1IGhRA/BN7Fqi17QkpZcLLj6GpSZuwxfXDYU6wrIi3CRrC+DT26+3G3yVNSWP55JXEC6iWckX/0RWB626zp6d0m967CJ+cjHA5kIICw2wmfnN/juc5sN8KuIYOh9u4uH+ajZs5m7Rsvs+Ozj5kw71xOz8vn9Lx81r31KtuAtG6SPFiJvuvkMuG5iTiHxtDwZrE1Te7WGuIuHoYj44s149PsQzkz7Vu0+BvYFr6W+dl54Igj/Lol+B+cy5mffxdTtFEQNoUNG3ezOyqHex/bCIAnwsFFcU5ixSgaozJoc3kI2iPJye95AqIhkyazfslrGMEgus1Gxuix3Z6XnD+JCzbcSlnbMNJcRSRffjdkTMYJOAFPD49vBEyWrS/nDy9tZbQ7nMtHp9LWFKC5to291QKPDlqoc2LcxBTGn231Vylr8HHD4rUUlDdx69xh3DR7aPfj0b+spFFw3QehWeUesNZ2v/BRSD18Qp7kbPfhyyivegTe/hkM+wZc+tQxJ/gOx/o/eqxSpqaesOSuKP1Zn4yTP169WV1/PFrXH6D+BWuBEWE/eG30Q1UWN3Z/NdPPdcyMd+hsbt050sx8T9/2I2x2B1fceXfnsdf+cgfV+/Zy7d8eO+64fIW1NLyyC6O5ncjpabhGxNK0bB/te5pwZrupHlzN24/fy+DcSZx36yJsdjub332SsZ/+BIDPawfxaXUmdXN/SG7uaPKz4siMD8fXHOC5/1uFpgUwWhsxbW6uuWf2ERNkeVEh+wu2kDF6LKnDRvYc9P7VVjLMmnnc65+/vaWCm55dz/ShHh67Kg+nTaeyuJEV920gtuPL480TSM5283lxLTc9s572oMm9C3MPmiegVxQvh1e+D61VMHsRTL8Zupnqt9PnD8M7P4fh51hzzqtJaU4aVV2vnBqzQvQTRoO/c7tjbfSekny3VzOngEOvpo/EmRnd498/auZsVvzrCerKS4lLTUeaJqXbtzFk4vEluw5hI+NxDnbT+PYeWlaW0bKyzPqBBlFzB5EweBxBLcDSRx7gzXv/yH/99+20Vu7ECHX529qQRHRcBLdeO//gvzfawaxvjeDth7cAboZNSj7qFXBHU8FRHbqoynH4xtgU/njROH724mZ+/O8NPHjFRJKz3Zxx8wTKiuoZNyyWpMHRPPXpXn735jYy48N59Mo8hiSchMVZsmfB9z+BN38Cy34Lu5bBBQ9DTMbh5372d3j3FzDiXLj4SZXgFeUk+1ovNXu8nENiEHbN6gR7SBW1crARM6zhPx1TudaW7aetuanb9vhjpblsxF6QQ0R+lytVCe17mwEYd+Z85lx9I7vXfs6S+/+Ce8QsAtjZ2eyhKeBi6IxZ3T5ueLSDjiHLu9dVUVncP5YtvSQvg1//1yjeLTjAbS9txjQlydluJs3PIiYjkp+9uJlfv17A7OEJvHrT9JOT4DuEx8ElT8E3H4KKjfDQdGtxma4+e9BK8CPPU1fwitJH1JX8cXBmRuO5duwxLx7zdRYZG0fmuFy2ffwh0y75FqWFVreL9JFjvvJjh+cl491Y3W1/gAnzzsUIBFix+HF0mw2x4BlWPvU4YVEaZyzsvhNhWVF95yBO0zStZYP7yRe4700fTHNbkHuWFhHltPGb80ZT2dTGjYvXsam0kR+fmcNPzsw5se3vx0oIyL3CWjHulRvg5Wth57vW1LGfPwS7lsKo8+Gix0Hv/RUWFUU5nEryx+lIVdTKwUbNnM2SB+6mbPs2Sgu3Ehkbhzvpq3dCPNqXrbxzL8AIBFj53NM0HKigqbaV8XMXoOndtxunDYtFt2kYhomua6QNO3EdvE6EH80ZSnNbgEc/3sO+Oi+r9tRhmpJ/fGcS80b3fadO4gbDd5fAynusJV+3hK7ohQ5TblQJXlH6kErySq8Zmj8VuyuMgo8+oGx7AWkjRh+2qMmXdbQvW1MuuJT6ygoKlluLyRQsf59Rp8/uti29Y0na/tpRUgjB/ywYyZ6aVt4vrALAadPwRB7/9Lq9RrfBGbdB8wFY26Vj5b7PIHNa38WlKF9zqk1e6TV2l4thU6ZRuPJDWupqT0hV/fGITU6hY2Yxwwiyv2BLj+d2tHX3twTfQQhBbkZM52xtQcPk8+LaPo2pW+MvA1uYdRWvO6yRBYqi9BmV5JVeNer0ORgBa+IcR9hR1jw/wTJGj8XmsFvTih5hTPupYuoQD067hi7AbtM4LfvwpXz7XMZkuOp1mLPIuv+SowsURTkxVHW90qt02xftsUsffYCY5JRjG352AqQOG8kl/3vnsY1pPwVMyozlmWtPO6bZGfvUVxg6qCjKiaWSvNKrSgu3Wr2wpcQIWlXmJzPZHvOY9lPEiZ75TVGUgU1V1yu9KmP0WGz2gVNlriiKcipRV/JKrxpoVeaKoiinEpXklV430KrMFUVRThWqul5RFEVRBiiV5BVFURRlgFJJXlEURVEGKJXkFUVRFGWAUkleURRFUQYoleQVRVEUZYASUsq+juGohBDVQMkxnOoBano5nK9CxffV9fcYVXxfXX+P8VSKL1NKmdCXwSh965RI8sdKCLFWSpnX13H0RMX31fX3GFV8X11/j1HFM25WpgAABoBJREFUp5xKVHW9oiiKogxQKskriqIoygA10JL8I30dwFGo+L66/h6jiu+r6+8xqviUU8aAapNXFEVRFOULA+1KXlEURVGUEJXkFUVRFGWAGhBJXggxXwixQwixSwhxex/HslcIsUUIsVEIsTZ0LE4IsVQIsTN0Hxs6LoQQfwvFvVkIMbEX4nlCCFElhNja5dhxxyOEuCp0/k4hxFW9HN9vhBBloTLcKIRY0OVnvwjFt0MIMa/L8V55DwghMoQQHwohCoUQBUKIm0PH+1MZ9hRjvyhHIYRLCLFaCLEpFN9vQ8cHCyFWhcrjeSGEI3TcGdrfFfp51tHi7qX4/imE2NOl/HJDx0/6axx6bF0IsUEI8WZov1+Un9LPSSlP6RugA7uBbMABbAJG9WE8ewHPIcf+BNwe2r4d+GNoewHwNiCA04BVvRDP6cBEYOuXjQeIA4pD97Gh7dhejO83wE+7OXdU6PV1AoNDr7vem+8BIAWYGNqOAopCcfSnMuwpxn5RjqGyiAxt24FVobJ5AVgYOv4w8P3Q9g+Ah0PbC4HnjxR3L8b3T+Dibs4/6a9x6PFvAZ4F3gzt94vyU7f+fRsIV/KTgV1SymIpZTvwHHB+H8d0qPOBp0LbTwHf7HL8aWn5HIgRQqScyCeWUn4E1H3FeOYBS6WUdVLKemApML8X4+vJ+cBzUkq/lHIPsAvr9e+194CUskJKuT603QwUAmn0rzLsKcaenNRyDJVFS2jXHrpJYA7wYuj4oWXYUbYvAmcKIcQR4u6t+Hpy0l9jIUQ6cA7wWGhf0E/KT+nfBkKSTwP2d9kv5cgfcL1NAu8JIdYJIa4PHUuSUlaA9YEMJIaO91XsxxtPX8T5w1BV6BMdVeF9HV+o2nMC1pVevyzDQ2KEflKOoarmjUAVVvLbDTRIKYPdPFdnHKGfNwLxJzM+KWVH+d0ZKr+/CiGch8Z3SBy9+RrfC9wGmKH9ePpR+Sn910BI8qKbY305LnC6lHIi8A3gJiHE6Uc4t7/F3lM8JzvOh4AhQC5QAdwdOt5n8QkhIoGXgJ9IKZuOdGoPsfRFjP2mHKWUhpQyF0jHunoceYTn6vP4hBBjgF8AI4B8rCr4n/dFfEKIc4EqKeW6roeP8Fz95f9Y6QcGQpIvBTK67KcD5X0UC1LK8tB9FfAK1gfagY5q+NB9Vej0vor9eOM5qXFKKQ+EPnRN4FG+qFLsk/iEEHas5PmMlPLl0OF+VYbdxdjfyjEUUwOwHKstO0YIYevmuTrjCP3cjdWkczLjmx9qBpFSSj/wJH1XftOB84QQe7GaUOZgXdn3u/JT+p+BkOTXADmhnqYOrI4mr/dFIEKICCFEVMc2cDawNRRPR0/bq4DXQtuvA1eGeuueBjR2VAH3suON513gbCFEbKjK9+zQsV5xSL+EC7DKsCO+haHew4OBHGA1vfgeCLVlPg4USinv6fKjflOGPcXYX8pRCJEghIgJbYcBZ2H1G/gQuDh02qFl2FG2FwMfSCnlEeLujfi2d/kSJ7Dau7uW30l7jaWUv5BSpksps7Bekw+klN+in5Sf0s+dyF58fXXD6u1ahNXOt6gP48jG6r26CSjoiAWrPWwZsDN0Hxc6LoAHQ3FvAfJ6IaZ/Y1XVBrC+yV/zZeIBrsbqqLML+F4vx7c49PybsT6YUrqcvygU3w7gG739HgBmYFVpbgY2hm4L+lkZ9hRjvyhHYBywIRTHVuBXXf5fVofK4z+AM3TcFdrfFfp59tHi7qX4PgiV31bgX3zRA/+kv8ZdHn8WX/Su7xflp279+6amtVUURVGUAWogVNcriqIoitINleQVRVEUZYBSSV5RFEVRBiiV5BVFURRlgFJJXlEURVEGKJXkFUVRFGWAUkleURRFUQYoleQV5RgJIbKEtWb7o8Jad/w9IUSUEGKNEGJW6Jw/CCHu7ONQFUVRAJXkFeV45QAPSilHAw1Yy3d+F3hICDEXa2nR3/ZdeIqiKF9QSV5Rjs8eKeXG0PY6IEtKWYA1hewbwNXSWotdURSlz6kkryjHx99l2wA6VgEbi3Vln3TSI1IURemBSvKK8hUJIS7EWrDmdOBvHSuaKYqi9DWV5BXlq/EAdwHXSCmLgAeA+/o2JEVRFItahU5RFEVRBih1Ja8oiqIoA5RK8oqiKIoyQKkkryiKoigDlEryiqIoijJAqSSvKIqiKAOUSvKKoiiKMkCpJK8oiqIoA9T/A646q6xZPGFcAAAAAElFTkSuQmCC\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.figure()\n",
|
|
"for simulator in simulators:\n",
|
|
" old = megacells[simulator.__name__][0:-1]\n",
|
|
" new = megacells[simulator.__name__][1:]\n",
|
|
" change = 100*(new-old)/old\n",
|
|
" plt.plot(sizes[0:-1], change, '.-', label=simulator.__name__)\n",
|
|
"plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)\n",
|
|
"plt.title(\"Relative performance change\")\n",
|
|
"plt.ylabel(\"Megacells/s\")\n",
|
|
"plt.xlabel(\"nx\")"
|
|
]
|
|
},
|
|
{
|
|
"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.6.5"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|