view notebooks/results_30_seconds_and_figures.ipynb @ 105:edd82eb89b4b branch-tests tip

Merge
author Maria Panteli
date Sun, 15 Oct 2017 13:36:59 +0100
parents d6c937bc1531
children
line wrap: on
line source
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The autoreload extension is already loaded. To reload it, use:\n",
      "  %reload_ext autoreload\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import pickle \n",
    "\n",
    "%load_ext autoreload\n",
    "%autoreload 2\n",
    "\n",
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# import here in this order otherwise crashes the kernel, \n",
    "# something wrong with shapely and pysal, \n",
    "# shapely needs to be imported before pysal? \n",
    "from mpl_toolkits.basemap import Basemap\n",
    "from shapely.geometry import Point, Polygon\n",
    "\n",
    "import sys\n",
    "sys.path.append('../')\n",
    "import scripts.outliers as outliers\n",
    "import scripts.utils as utils\n",
    "import scripts.interactive_plot as interactive_plot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING: there are 21 disconnected observations\n",
      "Island ids:  [3, 6, 26, 35, 39, 45, 52, 61, 62, 66, 77, 85, 94, 97, 98, 102, 103, 107, 110, 120, 121]\n",
      "Antigua and Barbuda\n",
      "Australia\n",
      "Cuba\n",
      "Fiji\n",
      "French Polynesia\n",
      "Grenada\n",
      "Iceland\n",
      "Jamaica\n",
      "Japan\n",
      "Kiribati\n",
      "Malta\n",
      "New Zealand\n",
      "Philippines\n",
      "Puerto Rico\n",
      "Republic of Serbia\n",
      "Saint Lucia\n",
      "Samoa\n",
      "Solomon Islands\n",
      "South Korea\n",
      "The Bahamas\n",
      "Trinidad and Tobago\n"
     ]
    }
   ],
   "source": [
    "DATA_FILE = '../data/lda_data_melodia_8_30sec.pickle'\n",
    "METADATA_FILE = '/Users/mariapanteli/Documents/QMUL/Code/MyPythonCode/MergeBL-Smith/data/metadata_BLSM_language_all.csv'\n",
    "#METADATA_FILE = '../data/metadata.csv'\n",
    "\n",
    "dataset, ddf, w_dict = outliers.load_data(DATA_FILE, METADATA_FILE)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# correct BL urls:\n",
    "bl_inds = np.where(np.isnan(ddf['BuyLinkTrackDownload']))[0]\n",
    "for bl_ind in bl_inds:\n",
    "    ddf['songurls_Album'].iloc[bl_ind] = ('https://sounds.bl.uk/World-and-traditional-music/' + \n",
    "                                        ddf['Folder'].iloc[bl_ind] + '/' + \n",
    "                                        ddf['MetaFile'].iloc[bl_ind].split('.')[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(8200, 109)"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_list, Y, Yaudio = dataset\n",
    "X = np.concatenate(X_list, axis=1)\n",
    "ddf.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "most outliers \n",
      "           Country  Outliers  N_Country  N_Outliers\n",
      "136       Botswana  0.611111         90          55\n",
      "72     Ivory Coast  0.600000         15           9\n",
      "95            Chad  0.545455         11           6\n",
      "43           Benin  0.538462         26          14\n",
      "86          Gambia  0.500000         50          25\n",
      "20        Pakistan  0.494505         91          45\n",
      "106          Nepal  0.473684         95          45\n",
      "78     El Salvador  0.454545         33          15\n",
      "64      Mozambique  0.441176         34          15\n",
      "135  French Guiana  0.428571         28          12\n",
      "least outliers \n",
      "            Country  Outliers  N_Country  N_Outliers\n",
      "1         Lithuania  0.000000         47           0\n",
      "119         Denmark  0.000000         16           0\n",
      "27      South Korea  0.000000         11           0\n",
      "120      Kazakhstan  0.011364         88           1\n",
      "31   Czech Republic  0.024390         41           1\n",
      "15      Netherlands  0.029851         67           2\n",
      "30      Afghanistan  0.041667         24           1\n",
      "105           Sudan  0.044118         68           3\n",
      "102       Nicaragua  0.047619         21           1\n",
      "0            Canada  0.050000        100           5\n",
      "n outliers 1706\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nioqKLs3F7W6mTp3K4cOHWbx4MRKJBF9fX/Ly8ujfv7+wjbu7OxkZGTqtkO7Wl7h06RJPPvkksbGx\neHp6EhISwuXLlxk6dKhOIU92djZPP/00arVa6C0olUoZMWJEn+iSLboXehENDQ065ZqFhYV4eHgw\nevRoPvvsM2H5+PHjOXfuXIfP5+3tzcyZM3nooYeYM2cOxcXFhIWFtVtTtjdy584dHdWwmzdvMmzY\nMLKzs/nll19QqVSt+sy1HDlyhNzcXLZu3UpycjJ1dXVIpVI2bdqkN2P29/cnIiKiWSUzQ8XExITp\n06cTFxcHNAY7r1y5onP9jo6OlJWVNalvUVhYKOQK19fXExwczJkzZ4DG9l13889//lPIwa6srMTF\nxYWZM2eSlpYGNHZWiYyMJDo6WqhSNCTEQFovIjw8nNraWhYvXszWrVupqanhjTfeQCqVcujQISFl\nJy0tje3bt3eZFN7u3btxcXER/jYzM2PixIkGF9zQ5oZ+8sknqFQqrKysePPNN9m4caNOZkFrrFq1\nCpVKRUBAgE5xRnFxMTt27MDNzY1nn32WoqIiEhMT25RKZaicOHGCoKAgnJycUCqVREZG4u/vL7ip\nKisrOXjwIOPGjWPYsGGYmJgglUpJSEhgxIgRgj6Io6MjVVVV2NnZCYplKpWKsrIyKioqkMlkghjU\ntm3bqKysZMSIEfj6+iKTyZgzZw5qtZrTp09z9epVAgMDmTRpUrNFICkpKZw5c4YXXnihQ4UibUXM\n0zUQ1qxZw1NPPcWpU6cIDQ1tUhQlPj6e7du3s2/fvm4bV1lZGadPnyYoKMigtH81Gg379u3j5s2b\n/OMf/wAaBVfam7WwadMmnJyccHNzazLta8eOHQwbNoy6ujpmzZplEGXXHeGnn35iwYIFwmz03tJd\nlUpFRkYGJSUlKJVKKisrqaio4OWXXwYaiyysra2Bxrc7rd87NTWVqKgopkyZQmlpKVVVVbi4uDB0\n6FB+/vlnvLy8cHBw0Cu/3rx5M6+88grx8fFoNBrc3Nzw9/fXG/fx48c5ffq00Hm5KxGNrgGQnp7O\nb7/9xrVr1xg4cCB//etfddbLZDL27t2LpaUlLi4uPZLreOrUKWpraxk4cGCvLay4F41Gw8cff0xG\nRgYDBgzA0tKSt99+u1033fbt2zE1NRU6XTTF559/jq+vr8Hl4t4PKpWKqKgovL29sbe3Ry6XtyjJ\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11f605210>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# global outliers\n",
    "df_global, threshold, MD = outliers.get_outliers_df(X, Y, chi2thr=0.999, out_file='../data/results/global_outliers.csv')\n",
    "outliers.print_most_least_outliers_topN(df_global, N=10)\n",
    "tab_all = interactive_plot.plot_outliers_world_figure(MD, MD>threshold, ddf)\n",
    "print \"n outliers \" + str(len(np.where(MD>threshold)[0]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "328\n",
      "210\n",
      "194\n",
      "85\n",
      "388\n",
      "266\n",
      "309\n",
      "455\n",
      "365\n",
      "282\n",
      "197\n",
      "122\n",
      "206\n",
      "457\n",
      "298\n",
      "597\n",
      "354\n",
      "191\n",
      "193\n",
      "198\n",
      "263\n",
      "334\n",
      "812\n",
      "415\n",
      "44\n",
      "107\n",
      "366\n",
      "323\n",
      "450\n",
      "116\n",
      "150\n",
      "260\n",
      "230\n",
      "118\n",
      "389\n",
      "237\n",
      "274\n",
      "466\n",
      "147\n",
      "134\n",
      "86\n",
      "91\n",
      "574\n",
      "111\n",
      "296\n",
      "221\n",
      "261\n",
      "224\n",
      "190\n",
      "150\n",
      "139\n",
      "350\n",
      "268\n",
      "453\n",
      "192\n",
      "468\n",
      "266\n",
      "187\n",
      "275\n",
      "337\n",
      "179\n",
      "366\n",
      "211\n",
      "213\n",
      "428\n",
      "468\n",
      "164\n",
      "348\n",
      "328\n",
      "193\n",
      "197\n",
      "193\n",
      "166\n",
      "290\n",
      "196\n",
      "224\n",
      "111\n",
      "258\n",
      "295\n",
      "227\n",
      "252\n",
      "433\n",
      "305\n",
      "290\n",
      "183\n",
      "243\n",
      "63\n",
      "197\n",
      "274\n",
      "363\n",
      "113\n",
      "192\n",
      "258\n",
      "494\n",
      "299\n",
      "484\n",
      "198\n",
      "191\n",
      "174\n",
      "280\n",
      "735\n",
      "211\n",
      "221\n",
      "134\n",
      "125\n",
      "119\n",
      "151\n",
      "203\n",
      "229\n",
      "430\n",
      "311\n",
      "424\n",
      "337\n",
      "268\n",
      "175\n",
      "228\n",
      "175\n",
      "437\n",
      "284\n",
      "129\n",
      "366\n",
      "222\n",
      "66\n",
      "498\n",
      "400\n",
      "430\n",
      "187\n",
      "470\n",
      "298\n",
      "231\n",
      "272\n",
      "261\n",
      "239\n",
      "154\n",
      "22\n",
      "426\n",
      "332\n",
      "most outliers \n",
      "         Country  Outliers  N_Country  N_Outliers\n",
      "46         China  0.260000        100          26\n",
      "67        Brazil  0.240000        100          24\n",
      "101     Colombia  0.211111         90          19\n",
      "64    Mozambique  0.205882         34           7\n",
      "76          Iran  0.188679         53          10\n",
      "65        Uganda  0.176471         85          15\n",
      "27         Kenya  0.164948         97          16\n",
      "126  South Sudan  0.163043         92          15\n",
      "24    Azerbaijan  0.153846         13           2\n",
      "23         India  0.147368         95          14\n",
      "least outliers \n",
      "             Country  Outliers  N_Country  N_Outliers\n",
      "0             Canada         0        100           0\n",
      "95          Portugal         0        100           0\n",
      "94              Iraq         0         87           0\n",
      "93           Grenada         0         37           0\n",
      "90  French Polynesia         0         15           0\n",
      "89           Croatia         0         31           0\n",
      "88           Morocco         0         40           0\n",
      "87       Philippines         0        100           0\n",
      "86            Gambia         0         50           0\n",
      "85      Sierra Leone         0        100           0\n"
     ]
    }
   ],
   "source": [
    "# local outliers\n",
    "df_local = outliers.get_local_outliers_df(X, Y, w_dict, out_file='../data/results/spatial_outliers.csv')\n",
    "outliers.print_most_least_outliers_topN(df_local, N=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "most outliers \n",
      "      Country  Outliers  N_Country  N_Outliers\n",
      "43      Benin  0.500000         26          13\n",
      "136  Botswana  0.488889         90          44\n",
      "106     Nepal  0.421053         95          40\n",
      "84     Belize  0.418605         43          18\n",
      "19      Yemen  0.416667         12           5\n",
      "least outliers \n",
      "                Country  Outliers  N_Country  N_Outliers\n",
      "28           Tajikistan         0         19           0\n",
      "119             Denmark         0         16           0\n",
      "96              Uruguay         0         31           0\n",
      "25   Republic of Serbia         0         16           0\n",
      "27          South Korea         0         11           0\n",
      "most outliers \n",
      "      Country  Outliers  N_Country  N_Outliers\n",
      "117  Zimbabwe  0.533333         15           8\n",
      "96    Uruguay  0.483871         31          15\n",
      "68     Guinea  0.454545         11           5\n",
      "63    Senegal  0.390244         41          16\n",
      "86     Gambia  0.380000         50          19\n",
      "least outliers \n",
      "              Country  Outliers  N_Country  N_Outliers\n",
      "90   French Polynesia  0.000000         15           0\n",
      "37             Rwanda  0.000000         17           0\n",
      "119           Denmark  0.000000         16           0\n",
      "18        New Zealand  0.000000         34           0\n",
      "120        Kazakhstan  0.022727         88           2\n",
      "most outliers \n",
      "           Country  Outliers  N_Country  N_Outliers\n",
      "17   French Guiana  0.678571         28          19\n",
      "136       Botswana  0.477778         90          43\n",
      "72     Ivory Coast  0.400000         15           6\n",
      "23      Azerbaijan  0.384615         13           5\n",
      "106          Nepal  0.347368         95          33\n",
      "least outliers \n",
      "           Country  Outliers  N_Country  N_Outliers\n",
      "68          Guinea         0         11           0\n",
      "55            Mali         0         17           0\n",
      "77         Algeria         0         27           0\n",
      "33     Saint Lucia         0         43           0\n",
      "31  Czech Republic         0         41           0\n",
      "most outliers \n",
      "       Country  Outliers  N_Country  N_Outliers\n",
      "43       Benin  0.538462         26          14\n",
      "20    Pakistan  0.461538         91          42\n",
      "86      Gambia  0.360000         50          18\n",
      "52   Indonesia  0.350000        100          35\n",
      "136   Botswana  0.311111         90          28\n",
      "least outliers \n",
      "       Country  Outliers  N_Country  N_Outliers\n",
      "107   Kiribati         0         17           0\n",
      "1    Lithuania         0         47           0\n",
      "134   Paraguay         0         23           0\n",
      "131    Tunisia         0         39           0\n",
      "19       Yemen         0         12           0\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAAC1CAYAAAD86CzsAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXlYE2fXxu8sQNij4IJa64K2Vmu1drNatX4JqyioYRHC\nIioIKKtSRMUNd0FqEYRaLVhRqtWiopTWStVa+kJrpRVFLKggOwQFMkCS5/uDN/MSWWRV1Pyuy6tN\nZjLzzJCceZ5z7nMOgxACJUqUKFHybGA+7wEoUaJEyauE0ugqUaJEyTNEaXSVKFGi5BmiNLpKlChR\n8gxRGl0lSpQoeYaw29vIYDCU0gYlSpQo6QKEEEZr77drdP/7wZ4fjRIlSpS8xDAYrdpbAEr3ghIl\nSpQ8U5RGV4kSJUqeIUqjq0SJEiXPEKXRVaJEiZJnyFMDaUp6H5FIhIiICOTn5yu8TwgBg8EAk/m/\nZ6NMJgOTyaT/K4fL5WLSpEkQCATgcDhdGgdFUTh48CAyMjIAgD6PTCYDg8EAi8Xq0HFkMhn9/0wm\nE7q6urC3t8eUKVO6NC4lSl4mGO2pExgMBlGqF7pPaGgocnNz6dfye8pgMEAIQX19PebOnQsrK6tO\nG8zi4mKcPn0aV65cQVVVFRoaGqCnpwd1dXXaKDc30FKpFCwWC1KplDbqAFBfX4/y8nJoa2vj6NGj\nHR5Heno61q9f3+J9BoMBVVVV1NfXgxACFouF5cuXY+7cuRCJRPjpp5+Qnp4OAHjrrbcwa9YsjBgx\nolPXrkRJX+W/v+1WJQxKo9sLHD58GN9++y0GDhwImUyGyspKaGtrQ0tLC76+vhg3bly3z3Hy5EnE\nxcWhrq4OAKCnpwcOh4OKigps3boVb7/9dpufLS0txcCBA1u8n5+fj8DAQPzf//0fli1b1q3xZWVl\n4ccff4SdnR2cnZ3Rr18/2pAzmUwYGBjggw8+QHJyMh48eACJRAIzMzN4e3t367zdgaIoAOjySqGt\nY/7www/IysrC0KFDkZOTg/LycsyfPx8mJiY9dp6e4urVq/jqq6/o1QohBGPGjEFwcPBzHtmLhdLo\nPkP8/PxQUlKCb775hn4vLS0N33zzDWpra1FZWQmJRAIACu6BSZMmYceOHW0e98cff0RqaiqKioog\nk8kwfPhw3Lp1C7W1teByuTh+/HjvXVQPkZWVhYCAAMhkMvTv3x/q6uqYNWsWnJ2de+2cMTExSE9P\nh1Qqxeuvvw6KolBSUgKRSITa2loAgI6ODnR0dBRWBDKZDCUlJQgNDe2WW8TS0hJisRhA09+bw+FA\nU1MTurq6iIyM7P4F9iDOzs4oKirCmjVrMHPmTPr9mJgYXL58Gerq6oiJiXmOI3xxUBrdTiISibBm\nzRqIxWKMGjUK69ato7cJBALU1NRg8ODBAJp+nCtXrsTdu3dx/vx5MJlMqKmpQSwWo7CwEImJieBy\nufTnw8PDcf78eRBCMGTIEHz99detjoGiKFhYWIDJZGLIkCHQ1dWFnp4e7t27B6lUqrCvuro69u/f\n3wt3oudxdHTE5MmT4evr+0zOZ2dnh5EjR2Lr1q2IiYmBqqoqbeRPnjyJr7/+GmKxmL7PcphMJnx8\nfNpdMbyMUBQFT09PSCQSMJlM2q8PAFVVVVBXV4eamhq9/7Bhw7Bly5bnNdw+S3tG95UOpGVlZSEz\nMxNVVVWoq6tDcHAwSktL4eDgQPtdKyoqFD4jFApx+PBh+jWDwUBwcDDWrVsHiqIgk8lw//59aGpq\nQl9fHz4+PrTvFmha2gNNP2o9Pb1WxxUfH4/U1FQMGTIEY8eORXBwMObPn4+cnBzo6elhyJAhMDQ0\nxPTp03vEVfEskclkz8zgAkBCQgJiY2MhFAohFosxZ84cAE1/+xMnTsDQ0BDvv/8+vvrqK1RXV79Q\nK4fegMPh4ODBgy3epygKlpaW0NXVBYPBwKNHj1BbW4vGxkZQFNWjLpmXnVdupltaWorAwEDIZDKo\nq6uDwWCgpKQEampq+PTTT2FtbY3bt2/j6NGjmD59Os6ePQt1dXVER0e3ery0tDTEx8ejsbER7777\nLlJTU+lZgpaWFrS1tSGRSODh4YHQ0FBIJBIEBgZi5syZuHr1KoqLi9HQ0EAH0ebOnUsbh9b8mxYW\nFmhoaICKigokEgkGDBiA+Pj43r5t3cbd3R01NTWorq7G2LFjsWfPnmc+huXLl6O2thZMJhM1NTU4\ncuQIbSzS0tKQkpKCxYsXw9DQ8JmPrT2ys7Nx8eJFWlUCABoaGs/UPXHu3DkUFhbi119/BSEEQ4cO\nhVAohI+PDzQ1NaGiogINDQ16ZqympgZvb+8XblLQUyjdC82wsrKCpqYm1NTUIJVKMWjQIJSVlaGx\nsRFvvvkm8vLyIJFIQAgBRVGoqqrCJ598glu3bkFVVRX9+/enDYaRkRGYTCaOHTsGLpcLGxsbRERE\nwMPDA2KxGFwuF8OHD4evry88PT0BAI2NjZBKpbRhlsuwpFIpZDIZRo4cie3btyu4JJ7k8OHD+Pnn\nn8FmNy1UnpSRyWQyembt4OAAHo/Xm7e0Q+Tn52Pr1q1QUVHpc77MvkJ4eDj++usvhbz9iooKNDQ0\nQFVVFXp6erTPeeLEiT0WdIyJicGvv/5Kn1cikUBVVZWWCwLAoEGDoK+vjw8//FDB3yunuLiYdrkB\nQG5uLvbs2YPS0lKcPHmyR8Yph6IoODk5QUNDo9Xturq6GD9+PG7duoWPP/4Y5ubmz3wmrjS6ABIT\nE5GZmYnKykrIZDJMmDABPB4PgwYNwqpVq2j/1cOHDyGRSMBisWBgYEB/nslkoqGhAe7u7pg2bRr9\nfkREBK5fvw4AGDhwICorK/Ho0SOoqamBoijo6urSBlYmkykYWflx5V/sxsbGHg+w2Nraon///s/d\n55ufnw8vLy+oq6vj22+/fa5j6WtcuHABn3/+Ofh8Puzs7BAcHEwHW99++214eXn1uNFYs2YNHjx4\nADabDUNDwx5TJxw+fBiXLl2iX7/11ltYvXp1jxxbTnFxMf2blU885DQ2NuLDDz9EYWEh7ty5g9ra\nWkilUrDZbJw7d65Hx9EeSqOLJl8sk8nErl27oKOjg4MHD+LWrVugKApisRilpaV4/fXXERAQgNdf\nf13hS05RFJKSkvDNN9+gf//+GDBgAHbu3AmgKTDEZDLBYDBQV1eHN998E/n5+XQygTwKPnr0aHzw\nwQd0sK2yshLm5uYKiQi1tbVQV1cHIQSEENjZ2fWIrCghIQFnz57FwYMHn/kTPzExERcvXsT9+/ch\nlUrh7OwMOzu7ZzqGvoyJiQn69euHQ4cOYcuWLcjLy8OePXsUZo3dZfny5WhoaFCQgYnFYrz55pvY\nuHFjj50HALy9vfHo0SMAgFgsBoPBaPGdmzp1qoIk0cbGBlpaWvT4DAwMsHXr1g6db82aNfjjjz+g\nqqoKoGllZ21t3ROX0i1eeaObkJCA5ORkBd+nPEpbWFgIQggGDBiAqVOn4syZMzAwMFBIHqipqaEN\nYW1tLVavXg0+nw8zMzNIpVIsW7YMCxYsgIuLC+rq6sBgMBAdHY0VK1aAzWZj4sSJAICcnBxERUUB\nAKytrfHaa6/RrorMzEysXbsWABR+HDwer0dmCunp6QgNDUVSUlK3j9VRPDw8kJ+fD4lEgqSkJGWw\npRm5ubnw9/fHwoULIRQKYWNjg48++qjDQcYVK1bg8ePH9MpJT08PAQEBcHR0RHR0NKKiolBeXg6g\nSXUQHR3dqjb7ebBixQrU1NTQrpJZs2ZBKBTS2xMSEnDixImnuiVKS0uxfPlyMBgMNDY2QiaTQUdH\nhzbA8uMPHz4cISEhvXQ1rdMto+vo6Agul4uIiIhuD4SiKAQGBuLRo0eYNGnSMxPCy7+gAODv74+o\nqCgUFBRAW1sbDQ0NqK+vx+uvv459+/a1+vnQ0FA0NDRg48aNuHr1Kr7++mtar7h27Vrcu3eP/vLL\nI7pyn+7EiRMRHBwMT09PVFdXY8aMGW0mHhw+fBhjxoxRcF9ERkbip59+gq6uLhobG+Hr69sl3eia\nNWtw69YtaGtr480330RQUFCnj9EZ4uPjcfv2bWhqauKvv/6CiYlJr+pxe5LMzEwAQGFhIVJTU2Fu\nbt7jiQzz58+HmpoaZs+ejaVLl2L+/PkQCARPXQWcPHkSp06dwhtvvEFLGefPnw8VFRUATZmFdXV1\n8PLywty5c0FRFPz8/KClpUWvzl4E5s+fjzFjxmDp0qUIDAyEtra2gq9bHr8QiUQ4depUm8ehKApx\ncXFIS0uDqqoqvLy86N9PaWkpsrOz8c4777QbQ+kM6enpCA8Px/Hjx7tudF1dXbF06VJ8+OGHnR5A\nYGAgSkpKFN6TB3ZCQ0ORk5NDO+tVVVUV0lLlkqra2lpwOBwEBgZ26EmdmJiIlJQU2NnZ4fDhw9DT\n00NERARiYmIwbdo0fPHFF/Dw8KD1lw4ODqisrFTQvrJYLHz++edtRrFDQkJoF8KQIUOwdetWiEQi\nbNu2DeXl5bCzs6ODVyEhIXj48CFiY2OxcOFCcDgcqKiogMlk4v3334eJiYlC+mtWVhbOnz/f6uyW\noij4+vqioaEBEokEo0aN6tQT3NvbGyKRCFVVVVBRUcE333zTK7NPiqJgZWUFQghdt2HChAnPRbHw\nNOR/t9LSUjCZTNTV1YHL5YLNZqOgoABisRijR4/G3bt3oa2tjfj4+B69Z82X4yUlJbSypS1cXFzg\n7u6u8HssLi5GUFAQKioqkJSU9NJIuBITE3Hu3DkcOHCgR66ntLQUGzZsQH19PYAmG6OtrY3q6mo0\nNjZi+PDhT9Uci0QibNq0Ce+//z5MTU1bGOuTJ0/iu+++w9GjR5+Ne4GiKJw6dQqFhYX4/fffMXPm\nTDpq3xUuXLiAAQMGoKysDCdOnMC9e/cwbNgw2kgPGzYMd+/epX2qMpkMQ4cOhY+PDzZs2ABXV1c6\nQUG+Xa4YIITQy4/KykowmUyoqqpCX1+/RSArKysLUVFRqK+vh0wmw9ixYyEQCLBy5UoYGBiAx+Ph\n0KFD6NevHz3T7devH6Kjo7Fv3z78/fff0NHRQWNjI/3QSUxMxJdffkn7fQkh6N+/P7hcLt544w1c\nv34dNTU1bS6xKIqCvb09DA0N281ka87mzZtx9+5dAE3+NjabrZA511NQFIXPPvsMVVVVAIAPPvig\nW9+D3iA2NhZpaWlgsVh4+PAhAGDy5MkYMWIEFi1aBIFAAF1dXSxcuBAHDx6kJwNyX6t8ZaOiooI1\na9Z0uW5EcXExuFyuglEpLS2Fl5cX6uvr0b9/fwBNriZ1dXV8+OGHOH36ND799FN6pUhRFFxdXVFV\nVQVPT0+Ym5t3aSyvOvb29rRrojlMJpOuWaKtrY3KykqMHj0a9+/fV1AMAf+rq/L11193z71ACIGp\nqelTlz5CoRAVFRWYNGlShx3hncHU1BTnz58H0OQTu3LlSo8sWS9cuIDU1FRkZ2fT/l2ZTIa6ujo0\nNjaivr4eKioqGDhwICiKQl1dHRoaGqCvr4/4+HhkZmbi7NmzuH79OhobG+mlXkJCAv1jcnJywmef\nfYbg4GB89913sLOzw/r162kdo42NDVxcXOhlbH5+Ptzc3MBgMGi5TvOZYkhICG7cuAFdXV2oqKjA\nwcGh3RmSnOzsbGzYsAFaWlqIjIzs9gxi7dq1KCwspF/Lv0+2trZ9srbAxo0bkZ2dTSe9MJlM9O/f\nH7W1tQrpui4uLrC1tUV+fj6WLl0KoVAIR0fHFsfLz8+n3U8AsHjxYsycOROlpaVwdHSEgYEBGhsb\nERYWhoEDB+LkyZM4e/YsfZ8ePnwIDodDJ8rIYwcNDQ2060FOeno6oqKiQAhBWVkZkpOT6W0CgQDD\nhw+HWCx+7kqVl5WsrCzs3bsXy5Yta3flHx4eDj8/v+7PdAMDA5GTk0M/eQFg3bp1LZ7wFEVh5cqV\nqK2thYmJiYKDvLs0N7q9wblz53Du3DmIxWKoqKhg6NCh0NHRQWZmJuzs7FrMICIiIvDnn39CW1sb\nqqqqWLFiBUaMGAGhUNhmwkJoaChu3LgBR0dH+njFxcVYtmwZ/P39acPp7++P8vJySCQSfPPNN1i4\ncCFCQkJaTUstLi7Ghg0bUFNTAxUVFaxevbpNUbqlpSX27t3b7Ype2dnZCAkJgZmZ2Qvhq5XPBj/4\n4AOcPXsWmzZtwtSpU1vs19p3bP78+RCLxfT7xcXFKCwsbOFbpygKixYtwnfffQcAmDt3LszMzJCU\nlITRo0ejoKAA48aNw/r163t0+b927VoUFBRAKpXinXfeQUBAQI8dW0nniYiIgI+PT9fTgL29vRER\nEYEdO3YgISEBly9fxv79+1FaWgp/f39IJBIkJCQo+DkB4NGjRzh69Chqa2vh7u7ew5fVO5ibm3dq\nadZWILC9DDG5HtLS0hJxcXF0Fs/nn3+uYAibz2rd3d3xySeftDC4tra2UFFRwWuvvYbo6Gja5dAe\nenp6uHbtWqeNbnp6Og4dOgSKokAIgYqKCuLi4to1HhRFwcXFBRwOBxKJBGw2G1KpFEwmk57pVVdX\nY+bMmb2aGpyZmYlt27bBz88PISEhsLa2btXgyr/PgYGBCi6byZMn4/Lly/TrdevW4f79+9DX16eX\no4QQSCQS1NXV0TJCVVVV2mBraWlh165dPe5rTUtLw19//QVdXV04Ozv3iUQYJe3zVKPLYDDg4uKC\nmpoa6Ojo0JF3FxcXGBgYYNeuXQCA8vJyNDQ0wMnJCbNmzYJIJMLff/+NuLg4TJs27ZUrHNIW8mwa\nBoNBp/Ky2WxUVFTQhnDz5s24c+cO7e8Vi8WtGvj+/fujpqYGJSUlcHR0RENDA9asWdNu6uXBgwfh\n5OQEFovVIT1jZGQkrly5An19fQQEBHQqRba4uBgVFRUghCA2NhYcDqeF/lQkEsHW1rbXjO7OnTuR\nlZWFI0eOwMLCok03gY2NDaytrbFu3TosXrwYq1evpqP9K1aswC+//ELvGxsbS7uktLS0kJ+fDxUV\nFVRXV4PH47WYafbmA2XmzJkdcisp6X3S09NBURSuXLnS7n6dCqSVlpYiJCQEYrEYI0aMQGFhISZN\nmkQHSYqLixEWFoaysjKw2WxIJBKUlJTA3d0dc+fO7fZF9bZ7oTdZvnw5KIqCRCKBtrY27t+/j7Nn\nz8LPzw+FhYV4/Pgx1NTUEBAQgN9//x1//fUXWCwWbZQbGxvB4XBoqVp0dDTGjRuHmTNnYs2aNVBR\nUemw0F0kEsHd3R3Hjh176r52dnZISEjo8nVTFIUFCxYAAAYMGIAhQ4ZAU1MTd+7cAdAk/fH29u7x\nrhJJSUlITEzE6NGjYWJigvXr14PNZrf4/mRmZiIsLAwGBgYoLy+HTCbD+vXrWzxc+Hw+UlNTFa5r\nyZIlqKurw5QpU+Dq6ooDBw4gMDDwpVAOKOk8O3fuxMWLF/HFF19gzJgxPa9ekH+pq6qqwGKxaNG9\nPPKqoaEBFRUVvPHGGz3mY3oRja7c7zto0CB6yXrhwgX8+eef+Pvvv6GtrU1XOXv33Xfh6+sLLpeL\n8PBwfPDBB5g2bRqKi4vB4XCwYcMGVFZWQlVVFUKhENu2baMDbQAUqp89jfj4eJw9exahoaGtzl5j\nYmKQlpYGPp/fYz5biqJw7tw5VFRUdLtIemtkZ2fT90RPTw9hYWEAmmpkxMTEKLhU5K4PLS0t7Nu3\nDw4ODm36zAHAzc0N//77r4LhVfLykpCQgMrKyg6rbuStrsRiMf755x8cPny450s7zp07t9XZ67Jl\nyxATE9Nnsl+eJ56entDS0mphDE1MTOjIfkhICBobG7Fv3z4kJyfD2toa3t7e+P3335Gfn0/Lyhob\nGyGRSBAaGgoOh4ONGzdi6NChKCsrw9KlSxUSKjqCUCiEQCCgg35Pzs4aGxthaGjYo0EyDodDz3p7\ng+Dg4FZbDbFYLBw9ehRr1qyh3/Py8sKaNWtoI8vhcNo0uCKRCPn5+coZ7EtISEgI7t+/D4qiEBER\ngYEDB8LHx4fW7rdndOWFguRMmDABDx48wKRJk9o/qVyi0tq/ps0dQywWk7CwMDJnzhxy/PjxDn8u\nLy+PGBsbEzMzM0IIITt27CBOTk5EKBSSqKgohX35fD5JSEjo8LGfJ+vXrydbtmzp8ueFQmGL96qq\nqohQKCRz5sxpse3OnTtdOs9vv/1G7O3tyeLFi4lQKCS7du0ihBBia2tLxGJxl475vFi8eHGr71dV\nVRE+n6/w3urVq4mXlxf9WiAQkAMHDtCvDxw4QJydnYm5uTnh8Xjk3LlzvTNoJc+F1NRUYm1tTWJi\nYgghhBQVFRFLS0tib29PrKysWnz/b9y4QZycnMhvv/1GgoKCiIODAwkODm7z+P+1na3a1R5LjkhL\nS8OePXugrq6OoUOHoqKiAo8fP4a/v3+bszBvb2+6dB2Xy0V9fT3EYjEdFd+2bRtu375NKyJKSkrQ\n2NgIABg7diwKCgpQV1fXZnDkeeLs7Nyp5X5zRCIRlixZghMnTrS6fe3atRg/fjytm/bw8EB5eTnG\njRvX7QIm8iaa7733Xp9LaHgaT95zeXZfamoqrKys4OHhobC/jY0N/Pz8aM2ln58f7t69C4qioKam\nBl1dXVRXV4PNZtMyMCV9F3k/urS0NADAqFGjMHr0aBw7dgwMBgPjxo3D6tWrIRKJYG9v36LqWEhI\nCHJycrBmzRrs27cPjY2NaGhoAIPBgLa2NjZu3Ii1a9di7NixT3WZPreCNxEREcjIyEBtbS3YbDZU\nVFRAURROnjwJiqIgEAgQHh6On3/+GZ9++mmHIuMikQi+vr4oKCgAh8PBxIkT8fvvv7caJHmeBAYG\noqCgALNmzVIQuHcEV1dXDBo0qM0EE7nmVJ6ZJ08H9vPzo78cLxPyJWBVVRVOnz7d5n4+Pj6ora3F\nBx98gF9++QVsNhu1tbUYMGBAiyzDhQsXYsqUKS1qUMydOxfGxsb0A+fJAJqSvse2bdvw999/g8Ph\nYNCgQZgxYwbU1dXxxx9/oKCggC4hYGdnR7uIOBwOXXxKJBJh+fLlmDx5MlavXg1XV1eMGzeuW7Go\nPlFljKIoCIVCuLm54eDBg3j8+DHU1dXx+PFjBAUFdUn2kp6ejn///RdZWVn466+/IJPJ+pThBZoy\nhfT09KCmpobg4OAO+7rXrl0LFRWVdmsrtNbV18fHB4MGDer1gjbPitzcXGzatAl8Ph+JiYlQUVFp\nd9aZnZ2N7777DkOHDsWlS5fo7K7mCoyYmBiUlZUp1JANDAzEvXv3wOPxcPz4cYXUTqXR7Zukp6dj\n7969mDhxYpe+7yKRCC4uLuByudi2bRstZ3R1dYWGhkabBbA6wnM1urm5udixYwfdP4zNZuOzzz5D\nZWUloqOjYW9v3yPpojt37sRPP/0EQghGjhyJAwcOdPuYPUFWVhbU1dVRWFiIw4cPo7GxEVOnTn3q\n0l0kEsHLywtHjhzp9DktLCzw7bffvhSBn9jYWGRnZyMsLAzx8fH46aefOuS2EQgE2LVrF9zc3PDR\nRx8hPz8fBw4cgJeXF8rLy3Hs2DGF+8Pn82lDy2Aw8Nprr+HgwYPg8/kYP3489u7d24tXqaSzLFu2\nDFKptFup7La2tti7d28L7XhgYCAKCwu79NuT88yNbnFxMdauXYuioiJIJBLo6OhAXV0dNjY2vVqM\nIyQkBHl5eSgqKurTs5PNmzcjNzcXAOgsLRcXF8ycOZMuf1lcXIwdO3Z0KV03PT0dn3/+OVgsFt54\n440e6wrwrHF2doaenh6ys7MxdepUvPvuuzhy5Ai9DGyPefPmQSaTYeDAgSgrK0N9fT24XC5WrlyJ\n8ePHKywzQ0NDcenSJRgYGCAuLg5A04OLoiiMGDECpaWloCgKTCazT6ykdu3ahR9//BFAUyfo9lwu\nLxuRkZG4fPkynJ2duz1Zc3JyatGNWy47lH8PusozN7rm5ubo168fxo8f/8yWubt378aNGzcgEAgQ\nGRmJ06dPvzAzvZ07d0JTUxOenp6wsrLCrFmzeqzWcHR0NK5cudKtp/azJjo6GmlpaSgvLweTycTg\nwYPBYDBAURSOHTsGb29vyGSydpd/ZmZmAJqMkkQigYaGBoYOHYqqqiq6FY5EIgFFUXj06JFCOyUm\nkwmJRILExESF0n18Ph9GRkZYtWpV796A/7J06VLcv38fwP8qXck7MURERGDEiBEwNTWlq9R98cUX\n2Lt3L+7cuYOBAwf2SgW5542zszPq6+sxZMgQ1NbWoq6uDkFBQbh58ybOnz+PL7/8ssPHetLoykvR\nfvzxx93WkbdndHtMMva82bRpEzE1NSUZGRkkIyOD2NraPu8hdZiqqiri4OBACGmS3jk6Ovbo8Q8c\nOECsrKx69Ji9iZubG7l06RIhpEnKdfPmTWJlZUVsbGzofVxdXYm3tzcpKioihBBy/Phx4ujoSBYt\nWkR4PB7x8/NrcVwej0f++uuvds/N4/HIqVOnWt1mZ2dHeDwe+fPPP7t6aZ2Cx+ORvLy8Du3r4eFB\njIyMiJ2dHSGEEBMTkz79N1+4cCExMjJS+GdhYdHhz8fFxZHz588TsVhMbGxsyLx588i8efM6NQb5\n7ywvL484Ojq2KtPsKmhHMsbsljnvQ6xbtw7vv/8+QkNDMWXKFEyZMqVXhfg9CZfLBZfLpVUH8plY\nT2Fpadnjx+xN5K2+HR0doauri9OnT4PBYCikLX/55ZeQSqUIDw8HAJw6dQpff/01SktLMXHixFYL\npltbWyMwMPCp5z9w4ACMjY2xaNEiiEQiAE0+9rKyMgBNMyILC4suX9/Fixfh6emJ2NjYNvfh8/lQ\nU1PrsHspMjISKSkpOHr0KADg/PnzqK+vh4uLS5fH2RxTU1P4+/v3yLGApvuZkpKi8E9HRwcCgaBD\nnxcKhTAxMQGHw8F7770HqVTa6e4PXC4XP/74I4KCgrBjx45uuxQ6ykvdI83S0hL6+vrYunXrC5Eh\nt3v3bvz555/w8/PrkVoEfn5+qKysRFFREWQyGbZv397jNQ56g6ysLPz4449Yvnw5OBwOEhIScOjQ\nIQwcOBBik2liAAAgAElEQVS+vr6Ij49HdXU1SktLwWAw6E4A/13SterPP336NPbv3w9CCLS1tdtU\nQPD5fFr37eHhgbt379IV0WbNmkVntRkZGUFNTQ1nzpzp8HVdv34dq1evBoPBwIABAyASidDY2EhX\nbZM/GFksFqRSKWQyWbdjE8bGxnRwkMFgtOuXPn36NA4ePIj4+HgFA2ZqaopJkyYhNzcXjx49AiEE\nP/zwQ5fHJBAI0NjY2Kov2sjICBs3bmy1ClxbyCvrffLJJygrK6PbGD0NiqJgZ2eHGTNm9HhRoj4h\nGXseyHtEAaCLybxMFZkoisLSpUvBZrNRWlqKxsZGqKuro3///pDJZPj000/pwuq5ubnYvXs3Bg0a\n9EI8gJpjYWGBfv36QU1NDY8ePcInn3yCvLw83Lt3D9u3b8euXbuQl5dHG8cnDdXFixexbds2fPvt\nt+ByuVi0aBE9azU2NkZAQABEIhH8/f1x//59er+nYW9vj/LycrrNFIvFUigs3hw+nw+gaUY6duzY\nFtv3799PJ2/IZ1y9kfATHh6O5ORkMBgM6Ojo4MSJE1i4cCEePXoEFouFTz75BGlpaQqts2QyGWJj\nY+lZt/xh1BxCCAQCAa1JF4lEWLVqFe7du0dvB5oCl/X19W0a7evXr2PVqlWYOnUqNm3a1KFrks/m\nDx061O0CTT3FK2t0gSbJ0U8//YTq6mpadylv09ObyKuDzZ49u1cCL+7u7sjPz4euri60tLRQXl6O\nIUOG4P79+7C1tYVQKMTmzZtRXFyMyMhIpKWl4fDhwygqKoKtre0LUXi8OfIOsuXl5VBXV4eDg0OL\n2h979uzBhQsXAAAzZsxQmPE8OeOTfxfks2M5zQ12Tk4OCgoKMHv27A6Nsa1Eiri4OBw5cqRbs8Oe\nJigoCBkZGQCasjufTB7pCvKgnhx9fX06mMfn87F582ZcvHhRoQZGa+Tn58PPzw+PHz/Gp59+Su+f\nk5ODiooKhVlwZGQkamtrcfPmTRBC8PjxY9ja2j73NuyvtNGVM3/+fForLP9h9jbXr1/H+vXr6eUv\n8L8n/uDBg7vsQ5o3bx7EYjHc3d0xf/58lJaWwtPTE99++63CfiYmJjAwMADQtGT94IMPkJubi6Ki\nonYLrfdFhEIhmEwmNm7c2K6fMzY2lu6JRwiBqqoqJBIJ7V4ZPXo0goODkZOTQxdT19XVRUNDA+rq\n6hQKrDf/7j9t9mtsbNzmsltu4DQ1NZ+rvEvun+ZyueDz+YiMjMSuXbvobta9JYe7du0a1q9fr3C/\nn/yutoVcPy0PQjX316enp2PPnj1ITEyEi4sL6urqcPz48V65hs6iNLpoyt5as2YNBg4c2Cv92zqL\no6MjioqKMHz4cBw8eLDTn5NLnOQzK1NTU6irq2PQoEH46KOP8PPPPyskEbi4uICiKFAUBS6Xi0OH\nDvX0JfU6IpEIbm5uCr3knoTP52PTpk0YN25cq0EZ+X1rft9FIhEtNXxy6c/n86GiooLGxkYYGBjg\n448/pjuh+Pj4QCQSoaSkBBKJBGFhYe0W6zcyMoKOjg40NDTAYDDQ0NAAV1fXZ9btwdjYGEDTw2TS\npEkKLdn9/f2Rk5PTKR91ZxCJRHStEIlEgqCgoA6vIOSft7a2VnioWVtbIzExEUCT/KusrAyzZ8/u\nE+2K2jO6XS7t+KIxcOBASKXSPmFwgaYlp0gkgo2NDYyNjZGSktKhz4lEIqirqyMpKQlGRkZITk5G\nXl4ehg4dioKCAvz777+oqqrCo0ePIBKJ6NnZi2hkn4TL5eL48ePtZjEyGAysX78eDAYDw4YNQ0hI\nCJ0UIQ8oslgsFBYW0i4HAOjXr1+rvlagqcwlk8nE+vXrsXbtWpw+fRoXLlzAnTt38Nprr0FLSwtC\nobBdg7t7924MGDCArsURHh6OjIwMXLt2jTa669evR3p6eq8kPLi5ubUbAMvLy4O6unqPnhNo8qfv\n2LEDMpkMnp6esLS07NTn5b72goIC+iFaWloKDw8PrFixgt5PLBZDKBRi1KhRPTr+3uCVMbp9ES6X\ni5SUFCxcuFChPYyc1atX4/r163TbHgAYPnw4YmNjkZubC319fXzxxRd0+/YBAwbQbaIPHz78wiSH\ndBZ5t+XWGDx4MKqqqvDee+/hvffew4gRI5CdnQ1VVVUYGBhAJBJBLBZDTU2NrliXmpoKY2PjFj7Z\n5ORkxMbGYuXKlTAxMYGhoSG2b98OT09PCIVCDBgwAI2NjWCxWEhLS2uzO0pxcTF+/fVXWjEhFApB\nCIGHhwetJjEyMoKGhgaOHz+OzZs306+7a3yTk5MRHh6OgQMHtutT/u6772Bra0u7SYCmWX5X4xFy\ntwDQJMHraiNUgUAAAwMDDB8+HEuXLsXVq1cRHh6OL774QiF9l8Vi4dSpU5g9ezYyMjL6dIW8V8bo\npqWlQUtL63kPo1XWrl1LZ+7JI+1sdtOf5skfSnZ2NmxsbKCjo4OwsDBwOBw4OTlBW1sb0dHRz3zs\nvUFpaSlWrVpFB72aU1FRAX19fYX3Tp48iTNnzoDFYkFLSwtFRUXQ0dHBTz/9hOTkZERGRkJFRQV6\nenpYuHAhoqKiUF9fD19fX4SHh2PJkiWwt7dHfHy8gg9R3i5p5MiRtLJgxIgRLUoCAk2dBszMzCCR\nSMBgMDB9+nQ6kDd48GCFB8W7776LO3fuKJQ8ZbFYtIGV+ywdHBxgZGSkcA+OHz/eqm9ZXq7Q0tJS\noaqdmZkZwsPDO5Sd1lwHLXe5dMXourq6gsFgdHj11h5MJhPjxo1DUFAQNm/ejJs3byqUPM3Pz0dI\nSAj09fWxb98+rF27Fv/5z38gEAj6rErnlfHpuru7w8XFpd1+9c8LIyMjjBkzBrm5uSCEwNDQEPv3\n7291XwcHh5e+6+uFCxewZ8+eVtuky32D8tRXuWGWp31fvXoV06ZNg7u7OyoqKqClpYWJEyfC19cX\nK1asgLq6OgICAhAaGoqbN2+2OHfzgJmbmxvu3bvXIvCamZmJzMxMvPHGGwoSRIqi4OfnBw6Hg3//\n/Rd1dXUAgDFjxuDtt99GVlYWrRIIDQ3F5cuXIZVKYWBggLKyMkRERMDLywtAUz+5Jw2lj48P7t69\nS/td5fIq+UPC0NAQDx48QENDAwDQ6cxA1yql7d+/n05MaQ4hBG+99Rb27t2r8PeQ+8u1tbXbrAXd\nEY4dO4ZDhw7Rq7sZM2bgzp07Cv50OXKVjp+fH/r164dHjx7B2dm5V2u8dARlIA3/C6R1Jjf7WWFm\nZgZVVdU2l5IURcHa2pouHvT48eNWZ1svE3PmzEFDQ0ObyQ5AU4Gju3fvYvTo0S1qCAuFQtTV1eHk\nyZN01ajx48dDT08PZ86cwbhx47Bz507MmzcPdXV1mDhxIm7cuNHiHGw2G2w2G/r6+nTCgo6ODkaN\nGoV79+6huroaLBYLw4cPR2FhIaRSKQoLCwEoqh/kNI++8/l8DBw4kG6ICYB+0MhnuPLGo0CTZMrT\n0xNMJhM6Ojq0GoHBYCgExuSGUC5bjIqK6vLyvi0EAgGqq6sBNOl2O+urBZrcLs1dBKtXr8aff/4J\noEmFEhQU9FTNrY+PD27evAkej4dp06Z1um1Vb6E0umjS8xUWFvaZQFpnkPsKJ0yY8EKOvys4OTnB\n19cXQUFBrUqZNm7cCJlM1mbB9nnz5kFLS0thtrht2zb88ccfCAgIwObNmyGRSDBgwACUlJSAEIJR\no0bh/v37UFFRgUwmQ319PTQ1NdGvX792A5EikQjnz5/H//3f/0Emk9GGhM/ng81mQ1VVFd9//z2A\nJmPF5XIRGxuL+fPng8FgYMaMGW0WOOLz+S3kaseOHVNQvMiL4JD/1g7uatDqWZGZmYndu3fj8ePH\nmDFjBiwsLODt7Q0Oh4OkpCRs3LgR2dnZWLRo0VO7iDs6OiImJgZubm4tKoY9T5TqBTQ1iXRwcHje\nw+gUu3fvxi+//AJdXd0XTlfbHXx8fMDj8bB69Wo6k+tJbt261e4siMViKeijgSa9bGlpKdzc3MBk\nMrFu3TpMmzYNJiYmuHDhAnbv3g2pVIovv/wSmZmZCA0N7VCbHi6XS8uhnkQikUAikcDIyIgOeMpr\nLoSGhiI4OLjdinKurq6wtram6/sCwMGDB6GqqkoHAuXyM6lU2qdLmhYXF2PVqlWQyWQ4dOgQLC0t\n8eeffyIvLw+DBw+mffUZGRkdlq4RQsDhcF6o2iIvTcGbjjBlypReaf3dGxQXFyMlJQVSqfSVMrgA\n8Prrr+PatWtgsVh0QLE5+fn5rS7dm/Pdd98p+BUdHR3h4uKCZcuWoaamBsHBwfRSNCAgAO7u7vDy\n8sKDBw+Qm5uL8ePHd/s6GAwGwsLCoKamhsTERLBYLAVFybhx46Crq4vr16/D2NgYxsbGLSYGtra2\n+OGHH/D48WPw+XxYWlrC19cXMpkMAoEAhBBMnz4dFy5cAJvNxpw5c7o97t7i7t27EIvFWLRoES5d\nugQfHx8kJCQgKioKjY2NePjwIYyMjEBRVIcK9URHR4PD4cDT07NPX/eTvDLuBTnLly/HggULXohA\n1Ny5czFs2LA2g2ovM3PnzoVYLIahoSGioqKQlJSEBw8e4ObNm6isrERERARUVVXx9ddf4++//6Zn\nOvLMpaqqKujq6qK8vBynTp3C8uXLIZVKUVFR0ao/3M7OjvavRkZGgsvlYvPmzXj48CEWLFiA6dOn\n4+DBg1iwYAEGDx6MpKQkVFdX4++//8bNmzchlUpBCIFMJlNIhQUUg1je3t4oLS2FhoYGVFVV8e+/\n/wL4n6zKwcGB3t7cx29ra4uKigqF4zIYDGzcuBHr169XeN/a2rrTffmeJfb29tDW1sbDhw/BZDJx\n+vRpUBSFXbt24dq1a0hOToarqysCAgIwbty4Fp9fsmQJHj9+jGHDhmHPnj2tFiN/3ih9uk8gEAgQ\nHx/f53Ws8iI1L4sUrCuEhITg2rVrGDNmDMaOHYthw4bh6tWrKC0tBZvNxuTJk2mD2bxnnDzhRCAQ\nKKScZmZmtlppTd7wdPjw4QgKCqK/G/Hx8fjtt99QWVmJCRMm4NatW2Cz2aipqYGGhgYePnwIMzMz\njBw5Eqqqqrh9+zbOnz9PS/3MzMzQr1+/FkoEkUiEoqKiVo0K0KSc+Pfff5GamkrXNGhNguXj44N/\n/vlHobg6n8+n/cadLXf4LMjKysKWLVswY8YMBT1tWloaEhMTERkZiYiICACgXS9paWk4duwYVFVV\nwWAwFNonOTg49Lki/Uqj+wTZ2dnYsmVLn66sn5iYiBMnTrRa2OVVwsHBAcHBwdixYwcYDAYKCgqw\nePHiNn2oQJP7wc3NDSkpKbCxselUPr6zszMePnwIoCnw9qSBXrJkCe7duwcGgwFHR0ccO3YMZ8+e\npbdbWFhgxowZtAG8ePEitm/f3qViN3LN8DvvvNMicUaOo6Mj6urqcOLECcyfPx/19fVgs9m0XK0v\n+ngtLS2xbt26Vh9+9vb20NDQwKNHj3DgwAH8888/CA8Px9ChQzF48GBQFIWgoCD4+PjQtVQmTJjw\n1PZNz5pXonNEZzlw4ABxcHAg1tbW5MaNG897ODRisZgIhULi7u7+vIfyXMnLyyMODg5kw4YNCu8v\nXrz4qRX++Xw++fPPP0lJSQkxNzfv8bGVlJQQQgixsrIiPB6PEELI3r17CZ/PJ6ampgr7zps3j3h7\ne3f6HN7e3sTExKTdfUxNTQmfz6df8/l8kpCQQHbu3Elvj4mJ6fS5exuxWEysra1b3ebt7U3/Hn19\nfQmfzycWFhaEx+MRHo9HzM3NyYIFC0hGRsazHHKnQTudI15ZoytHLBYTExMTYmRkRHg8Htm0adNz\nG8v3339PBAJBn3oIPA9SU1OJtbU1bdyepLmhaY0lS5YQIyMjQgghly5dIjwejzg5OREnJyeya9eu\nFvtv2bKFODk5EaFQ2OF7f/PmTcLj8Qifzyd8Pp/weDxy7dq1Vvc1MjIic+bM6dBx5Sxfvrzd9jO/\n/vor4fF45Pbt2/R7pqamCg+kefPmPfVePS+ioqLIqlWr2tyekZFBLCwsSFFRETE2NibW1tZkw4YN\npKioiIjF4mc40q7RntF9Jd0LT7Jx40bo6+vj4cOH+P333+ksJ1VVVbBYLIjFYgBND6jOVrXvKFev\nXsX+/fv7tMvjWSEUChEbG9vC5y5fbsvrT7SHm5sb8vPzIZPJYGZmRncG8PPzQ319Pfbs2QMOh4Pi\n4mL4+/vjm2++AUVRcHd3R1lZGbhcLlRVVWFvbw8ej4fAwECUlpZi4cKFMDc3h0AggEgkwscff4xf\nf/2VPi+DwaCztZrTXJ/bUeTlF5sX4klOTsa+ffsgkUhatIa3tbVFTU0N7e4wNjaGvb19rxRD7wmc\nnJwQEBDQZqEgOzs7aGhoYPHixX0m6aGjKN0LHcDW1pYsXryYlJSU0E0tIyMjyc6dO0lYWBghpGnJ\ny+PxyLp167p0ji1bthBnZ2eydOlSsnr1aoVtzs7OpKqqqnsX8ZLg5OSk8DomJobw+fxONw5sq4lk\nTEwMcXR0JA4ODsTW1raFC0M+OxSLxcTX15cIhUISFxdHCCHE3t6eODs708td+Xma/+0sLCzombac\nyMhIwufzyffff9/hmdqcOXNauCZ4PB7tPmhOVVUVPZ7m75mYmBAej0dMTEw63OTyWbFgwQJy586d\nNrdfuXLlua48uwOUM92nEx8fjzNnzoAQgpEjR8LQ0LBNTS+fz8egQYNQUlICBoPRIkhCURQ8PT0h\nlUoBNJUGnDBhAq5cuYKTJ09CJBLhwoULSElJASEEb7zxBmbPnk1Hbl9l8vPzsXr1asTExNA5/QC6\nVDylrU4OzWle/lKOkZFRm4GvhQsXYtWqVQgNDaVXQK31XJMXU9fW1gaXy8WDBw8AAG+++SZKSkro\nOrBPG7+8Uhf5b52Jfv36KRSmkdPerJbP52P27Nn4+eefwWaz22wp1Bxra2vIZDKMGTMG27Zte+r+\nXSE0NBTV1dVtBglfZJQz3Q5y5coVIhAIiI2NDd36uzWqqqrIwoULCSFNM5jms5otW7YQW1tb8ttv\nv9HvicVi8sUXX7Q507C3t1f476tIXl4e8fDwILa2tvSsLSEhoVvHfHK22VHaC2CdOHGCGBkZERMT\nE/LFF18o+FRbY9WqVWTBggW0/5cQQnbt2kXWr1//1HF4e3u38Ns+ye3bt8m8efPIggULWt0uv5fy\nduze3t70+BMSEsjt27fJrl27iImJCQkLCyNhYWGEx+ORZcuWkeXLlyvM6HsaKyurlzZ+gVehBXtP\n8OWXX4LD4WDcuHEYO3YsPvvsM2RmZrbYj8vl0tpPDw8P6OjoYNGiRcjOzsadO3eQkJCgUM1MnjXT\nVtERBoMBkUgEPT09WriflZXV8xfYRyktLYWfnx/mzZuHt99+G2FhYQDQJ3XUCxYsgJqaGkaOHImf\nf/4ZOjo67e6/c+dOnDhxAqmpqRAKhRAKhQgICIBYLIadnR39/YqOjsbu3bsVPrt3714MGzaszU4I\npqam8PLygpaWVptVvbhcLlJTUzF48GAYGRkhOzsbmpqaWLVqFeLj4+Hp6YmUlBSsWrUKFy5cQHJy\nMlJTU3HgwAGMGTMGAKCurg5TU9PO3qp28fT0hEAgaLfw+0tLW9aYvIIzXUKaZqrW1tbEysqKZGRk\nkHnz5rUZRW8Oj8cjc+bMIa6urp0+Z15eHrG3tydisZg4OzvTSoq+5oPrDYqKioiVlRUpKiqiZ1Xy\nf12J+jenq5H7p0m1MjIyiKurq4L/v6OkpqaSRYsWkR07dhCxWEyWLFlCHBwcyNy5c4m5ubmCv1ce\nQ2hLxdDV78jixYuJkZER/T1rfr/l8Qq5OkLuq+7qqqE1MjIyiLOzc48dry8C5Uy34wQHB+P48ePQ\n0tJCWFgYFixYgJUrV6K4uLjdz6WmpqJ///50LdPOMGLECIwfPx7W1tawsrKClZUVpk+f3uPl+Poi\nn332GaKjo5GXlwcAGDVqFAwMDDB58mSkpKRAIpGAz+e3WU2sPQghdPnDnmTKlCmQSCR48OABJk+e\njLVr13b4szweD2VlZfjrr7/A4XAQGxuLUaNGoa6uDiNHjsTy5cvh7OwMFxcXLF26FDo6OujXrx9c\nXFzg4uICBwcHUBQFoMnv6ubm1unxHzx4ECkpKUhJSQGbzYampia97datWwCADRs2YNOmTeByuTA1\nNe3R7+L27dsRHh4Oe3t75Obm9thxXxRemSpjnYXD4aCwsBDXr19HdHQ0lixZghUrVigUrX4SJpPZ\n5V5k8s4RQFMnCXld0ZeZhIQEEEJw4MAB/PLLLwCaahA0R95809TUFKampp3qWOvq6gqBQAAOh9Pj\nDRejo6Ph4OCAEydOwNbWFrGxsR2ud2BiYoLz58/DxcWFLmIOAIWFhfjoo4/aza7KzMzEokWLUFNT\nAxaL9dTCP09DJpNh9OjR2LNnDwQCAcRiMczMzEAIoaWREokEVVVV3TqPfOw7duyAq6srVq5cSdeH\nftVQznTbICYmBhYWFvj777/B5XJx4sQJ7N+/v8efzDt37oRAIICNjQ2cnZ2xceNGbNmypc+lNfYG\nycnJ+Prrr3H58mWw2Wyoqam12EcevT9//jw++eQTGBkZdfje2Nraol+/fqAoCsbGxrC0tASfz4eR\nkVG3q1JxOByoq6sjPT0dx44dw8WLFzv8WXl3iYcPH6Kurg7V1dVQV1fHd999B01NTSxcuJCezT7J\nlClTsGTJEmhqamL58uVdSi9uDo/HQ05ODpKSkiASiUBRFCQSiYK6IjU1FdXV1fDx8QHQpDCxt7eH\nqakp+Hz+U/29sbGxcHJywr59+xAXF0c3FVVVVe2zLXV6k2ciGcvPz8f69esxZ84cWFtbd/t4zwuR\nSARPT882ExjaEvW3dhwulwtPT0/cvXsXw4cPR3FxMbhcLsRiMZhMJthsNg4ePNgng0k9QWRkJO7c\nuYOxY8fizJkzbRZ0MTU1RUREhEKCwJw5c9DY2NhmvzDgfx0FmtehdXFxQUFBAVJTU7F161ZcunQJ\nLBYLCQkJCseRFx9/GvKKYrGxsQgNDcXmzZsVOiF0hKCgIGRmZip0yIiMjMStW7ewb9++Nj+Xnp6O\nsLCwTtWVeJL8/Hzs27cPN27cgLq6Ot5//3388ssv6NevXwtJm6enJ3JycqChoYG6ujqoq6sjKCgI\nU6dOxZw5cyCTyfDOO+/A29sbgwcPxoULF/DNN99ALBZj/PjxWL58ucK9Wbp0Kd54440+0S69N+gz\nBW/s7OxQXV0NXV3dp7bh6KvY2dm1OfarV6/iyJEjiIqKarHNw8MDdXV1YDAYKC4ubnOZnJSUhPj4\neOjr66Ompga1tbXw9/d/4TJynsaTxcnbcgG4uroCgEKnBKCpe8JXX32FMWPGKGib5W3tVVVVWz2e\nubk5RowYQX8mLi4OR44cAYvFotvadMaNceHCBZw5cwZWVlY4ceJElyrC7dq1C5cvX0ZSUhLy8/MR\nEBDQoR5j3t7eqKysBABoamp2+tzz58+Hh4cH3nvvPfqh0562WSgU0pMDkUgENpuN8+fPIz4+HomJ\niZg6dSquXbsGDQ0NDB06FFu3bn1pJw1Po8/pdC0tLcnSpUt75di9jVzv2BY2NjakqKioxfuOjo4K\n+zwNMzMz4uzsTJydnWk1xdy5c4mtrS3x8/Pr/MD7IB3JMLt9+3a7agITExNiYWFBCCFk0aJFhMfj\ntVvkpaqqqlVVw7lz5+gaCp3Rpd65c4e4ubkRQgjZsGFDp9QrVVVVZM6cOQoqgXnz5rWbpdUWnVED\nHD9+nDg4OLRbh6I5YWFh9L1pfu94PB5Zs2YNreCIi4sjFhYWT1V/vAqgr6kXmrfmeNHw9vaGnZ1d\nm90c9u7dixUrVmDjxo2IjIykI86ffvopAMDGxgb9+/dv9xxXr17Fa6+9htWrV+PQoUMYPHgwpFIp\n6urqMHnyZEilUpiamuKXX37BkiVLXth6u3J/bXs0dyu0xvnz50EIAZ/Ph7q6OlJTU9sNaPn7+7fq\nAjAzM8MPP/wANpvdqXKIhoaGdJApJCQEbDYb6enpre4bFxdHd4jg8/kQCASYMWMGUlNTweVy4ezs\njFGjRsHQ0LDD5+8s8fHxSE5ORnx8fKtL++Dg4BbtoZKTk/HDDz8gNTWVDtzl5+eDwWAgMzMTEyZM\nAACcO3cOdnZ20NPTe+o4fvzxR6xZswZXr17toSt7cXguRjcqKuqFbbA4c+ZMJCQkICMjAw4ODggM\nDFTYPnjwYHz77bfQ1NSEWCxGVFQUdHR0cPToUfD5fFRWVj712rOyslBVVUUfm8ViQVdXFyoqKrhy\n5QpYLBYmTpyIsWPH4tGjR7h+/XqvXW9v8mRr77Z4shPDk5w5cwZsNrtDnZ4LCgrw+eefd+i8HaWu\nrg7GxsYAmh66O3bswNq1a2nFxebNm7F161bEx8fj+PHjSElJQWpqKhgMBlatWoX09HTY2tpi8uTJ\ndGJIZyEdcAOGhITg0qVLOHz4cLv7RURE4Mcff2xzu5GREZYtW0af8/Lly8jPz8eWLVuQkZHRoYLi\n8fHxCokwrxJKyVgXkVe2j46OhqOjIxgMBhYvXkxLyszNzemuAPfu3YOKigokEgn69+//1Gr+7u7u\ncHd3p1+398XsSA5/X6WgoADGxsZQV1dvs/088HSDIhKJ6DoXT0Mmk/VoNwVzc3MMGzYMhBBkZWXh\n7bffhr+/PzZs2EBXNouJiUFdXV2LGTSDwYCdnR1UVFSwffv2bmlhGQwGKIpq04fq4+MDqVTawjfe\n3vHkgWM9PT3az938GoKCgpCdnY3a2lp4eXlh7969dHv59qAoCnV1dbCzs+tQHYiXDWXBmx6Coij4\n+/vj8ePHIIRAU1MTIpEITCYTZWVlGDBgACorKyGVSjFkyBC6gElDQwMCAgJaraL/MnP48GGkpaXh\n0E/W60kAACAASURBVKFD8Pf3x40bNzBq1CgUFhaioaEBLBaLnuHKtbpyRCIRSktLceTIEfznP/+B\nRCLB2LFjn1osyNjYuN0uDM3VDR1F3haotLQU7u7uiI6OxsCBA2Fvb9+mykUkEuGzzz6Djo5OjxV7\nSUtLw5EjR1qUjhSJRHB2doa5uXmn+qa5uLigsbERW7ZswWeffYbKyspW5WnyFvECgQC6urodCgBS\nFAU7Ozvo6upCIBDA3Ny8w+N6Uegz6oVXESMjI0yfPh0rV66EQCCAv78/TExMkJOTA09PT7pub/OW\nL68CFhYWCuqCzZs345dffoGVlRUWLVrU5mzU1NSUbgIpj553lPaqh3Vke2vIVRhyVwkhBI6OjkhJ\nSWmxzM7Pz6f7r3l5efX4g1YoFGLPnj0K2tfc3Fzs2bOnVUVNR5k7dy7q6+sVJH0WFhZoaGiATCYD\nm82GRCKBmZkZpFJph2RgZmZm0NTUhIaGBuzs7Gjt7stCe0ZX6V7oZX744Qds3ryZ7v20Z88eegkW\nFBSEc+fOYfbs2c95lM+eESNGKMjGUlNTwefz4eHh0er+CxcuRHV1Nd577z1s27aN7j0mx8jICAwG\nAzKZDEwmE7q6uhgyZAiys7MB/E+l4+Hh0WZ35a5MMJhMpoIxcnR0RFxcHLS1tQE0uX+Sk5MhkUig\npqaGqKioXmsW6e7ujs2bNyvoew0NDdtMtOgoEyZMwH/+8x+EhISgvLwchYWFGDJkCA4cOIDY2Fhk\nZGQgPz8fvr6+cHZ27tAx1dXVUVNTA4lEgvDwcLz55puvRNo7oDS6z4R169bR/09RFObNm4fIyEgY\nGhoiMTGxw4J6b29vcDgcDB48mPYXvqjMnTsXt27dApPJhEwmowNRxsbGYLFY6N+/Pz1TvHjxIh49\neqSw7J89eza+/PJL8Pl8MBgMcDgcOqtKJBJh27ZtyM/PR0pKCvLz89HQ0ABPT0/cuXOn1fF0NKPM\n0dERIpEISUlJMDY2xvTp0xW2x8XFgc/n4/HjxxAKhdDW1m4RuEpMTMTrr7+uUImuJ5g2bVqLGW1s\nbCyGDx/ereNu3boVRkZG+O233/Daa6+htrYWb731FoCmJIeysjK6lXxHg6OWlpY4deoUjh49Ch8f\nH7i7u+Pdd999YQPsnUFpdJ8xHA4H33//PebPnw+JRAIGg9HuMvPw4cNITU2FVCpFRUUFGAwG1NTU\n8Pvvv8PLy6vVpImkpCQYGRn1aWE6n8/H2bNncfPmTYXZ4v79+1FbW6uwzN++fTsSExMRGxtL+wzl\n/l4Oh4OGhgZ6lsTlcsHlchVqOMi3yQ18a7z77rsAWi9q3pyioiIwmUy4ublBW1tb4YH6JNOmTYO7\nuzvy8/Oxfft2iMViFBcXY+zYsUhNTe1xowsAY8aMQXh4OP1Q/u233zocPGsPeQxCrhCxs7ODt7c3\n7O3tUVpaijNnzkAoFOKTTz556rGWLVuGmJgYqKmpwcLCApqampBKpfSq5GVHaXSfAxwOB/r6+mCz\n2aisrKQDMK2RkpKChIQEmJqaQkdHB4QQukuBUCjEl19+SefLa2lpoaCgAAAwdOjQPh+ci4iIQGRk\nJP755x/k5OTA29sbenp6OHLkCH744QcF94O7uzsqKiroQJFcshQfHw9/f3+Ulpa2ey5PT0/a4Obk\n5LTQ/1pbW+Odd96BjY0N9PT0UFZWhl27dmHSpEm4fv06Vq1aBQ6HAw6HA6lUin///bfNgJvcVfLH\nH3/A2dkZqqqqWLFiBd5++22YmppCVVUVs2bN6sada5uQkBC6ewRFUSgrK0Nubm6PaH/l2YFA00rD\nzMwM/9/emcc1ceZ//JOEQAA5rAhURbF1LbZq3XW31l724BABATkjELAIctgiKlhE60HVilhEpVxS\nKFbpgoiiyGVraUXXtqyu2nWrUeNVMR6EQxgCZH5/8MuUmHDJGXzer1dfhZlnZp6J4TvPfI/Pl8Ph\nwNvbG76+voiMjOzyO5eTkwORSASKovC3v/0NLBYLDQ0N0NXVxbx583o9R3WAGN1BIisrC2FhYaip\nqcHVq1exYMEC6Orq4sGDB2CxWBg/fjwoimK+xHKjqqmpyZyjowKNVatW4ejRo0Pe6AJtxnDTpk0I\nDQ3Fxo0bsW7dOgBtPtoff/yRCba5ublBT08Py5Ytw6FDh2BgYACpVIrFixejpqamy4yDK1euQEtL\nC5qamgoG19raGgBgZmaGuLg4WFlZ4f79+0hLS1No17Rt2zYkJSUhJSWFMcKdYW5uDpFIhIkTJzKr\nbldXV4wZMwb379+Hi4tLzz+sHiAWixEZGQkej4fw8HCsXLmyU4W8zigoKICenh5KSkoY7ZSAgAC4\nubnBy8sLJ06c6JYGxN69e7F3715mXpMmTYK5uTlomsb48eORl5cHHo8HHx+fp5qnukBUxgaRhIQE\nODk5AQC4XC5kMhkmT54MbW1tXL16FYsWLWIiwdu2bUNVVVW3uslu3boVJ0+ehIuLS7/oyfY10dHR\nMDExwezZs5nqstLSUoWqxdzcXAgEAjQ1NQFo669FURTq6uq6rGxbsGABRo8ejaNHj+Lx48cICwuD\nt7c3rKys8O6776K0tJR5BTczMwPQ5mYoLS1l/psxYwZjPCMiIjB9+vROr5mWlobS0lLU1dUxFWh1\ndXWIiooCl8t96s+qO8TFxSE0NBQvvfQSdHV1ceTIEaSmpj71+X7++WdIpVKwWCyIRCJmu6GhIT76\n6KMuiy3kCIVCZGVlwdLSktn2+PFj3L59G42NjTh06FCP1NrUFWJ0BxkfHx+UlZUhISEBMpkM1tbW\n8PX1BZvNVliZzJgxAzRNw8bGpkspPbkE3/bt2+Hr69uv8+8r5syZAxcXF3A4HLzzzjsAoKRNnJSU\npCA2JDe2HRldT09PWFtbo66ujsmZlclkEAqF4HK5KCsrw+rVqxWO+eqrrxAaGoqIiAgFA9Mef39/\nnD9/vlsPtP3792PWrFmM33r9+vXdKiDoDcbGxsjNzUVUVBTYbDbEYnGvDP1nn32GLVu24O7duwgL\nC1MoyOluqtelS5cgFAoV/OUXLlyARCKBrq4uxo4dCzc3t17rA6sFHYky0M9ou56hgre3d4f7goOD\nmVYrqpoWthdQOXnyJG1tbU17e3vTvr6+tL29Pf3DDz/027x7i0AgoDdu3EgvXLhQSTjFysqKua+t\nW7fSlpaWtK2tLe3g4EAvXLiQ/uKLL5ixCxcupO3t7RVao589e7bbLXy+++47pdbq7ZG3VO8KuVgM\nTdN0UVERHRQU1K3r9xV3796lXV1d6ejo6B4fe/jwYYX7d3R0ZASBtm7d2u3zCIVC2tHRkT569Cjt\n7OxMFxUVKey/cuUK7erqStvb29O//vprj+c5FAFpwa5++Pn5dfna1lEyv5OTEx4/fozExERER0ej\nubkZhw4dwpIlS1BdXc3ksD5NC5yBYN26dRAKhRCLxXj++efBZrPBYrEgFouhpaUFHR0dzJgxQykJ\nn8/nIyEhAXFxcTh79qySn/fcuXOIjIxkPjN5gQqbzUZKSgo+/fRThbZM8u++iYkJ9PX1FfJ7582b\nh+bmZmhpaWH37t1KOabe3t64f/8+gD/bx7u7u6tV2badnR1MTU0hkUiQnp7OuCgiIyPh7e3dLY2F\n6Oho/Pzzz/Dx8cH8+fOZ72Nv3B3qACmOUEPq6+u7HMNisfD999/j/fffh5WVFdhsNmiaxujRozF9\n+nQsX74czc3NcHR0BNBWzZWSkoLU1FS4ubkhNjZ2SHao2LBhAyQSCT7//HOsX7++26lv8fHxiIyM\nxIIFC6CtrY2wsDBGIwNoc9EAbZVhS5YsgUwmQ2JiIm7fvo0lS5aAy+UqPcSioqJQVVWF69evK3zG\n9P+LjsfExCAgIEApHW3UqFEKRRM+Pj4IDQ3tzccy4ISEhCArKwtbt27Fhx9+yHQ1AdAtkfczZ87g\nt99+A/BnEE1HRweHDx/u13kPdchKdwgSGRmJxsbGTjsHAG25rvPmzUN4eDiTiiT/Qtva2mLJkiWY\nMWMGAgICoKenh7q6OgBtPtDg4GDk5+fj66+/7vf7GSwcHBwwYsQISKVS8Hg8GBoaws7ODvHx8fD3\n98dXX33Vo7Lf9m8W8+bNg6enJ5OeBbQF3/h8Pnx9feHp6cls9/PzwxtvvKGQDaEuCIVCrF27FhkZ\nGfD29saYMWOgra0NDocDExMThIWFKR1DURS8vb1hYGCAxMREODo6wsvLC3fu3AFFUV2+YXUm3KMu\ndLbSJYG0IYZIJMK5c+c6NbgODg5MMO3YsWO4fPkyWltbFVZaSUlJSExMZP7Q6+rqsGHDBujo6MDE\nxAROTk4wMTEZsi6GvkBDQwM8Hg+1tbUQi8W4fPkyEhISwOFw4Onp2e3qKaCtEo3D4TC/T506lcmX\nliMPEskNbmFhITw8PODm5qaWBhdoKyN2dnZGUFAQvvnmGzx+/Bjnz5/H77//jhMnTiiMFYlEsLKy\ngp+fH1555RXcunULzs7OANo+v6ioKCZ4duHCBYWgqJ+fHyMn6eTkhLi4uIG7yQGGuBeGEBKJBB9/\n/DHGjx/PlLd+8sknStoMFEVBV1cXRUVFsLOzw9KlS7Fs2TKF5HJzc3Pk5uYCgELEuP2rXXV1Nf7+\n97/3810NHvX19aAoCj4+PhAIBLC2tmZe+XuaSldVVaWwKlblM25PTEwMRCJRr3qYDRXc3d1RWFiI\n2tpapKeng6IoeHh4MFkyclJTU/Hee+/hhx9+wM8//4ycnBxcunSJ6Sqcl5cHFouFL7/8EuXl5eBw\nOEzcQkNDA2+99RYoioKmpibOnz8/0Lc5YBCjO4T4+OOP8cUXXzDVQxKJBG5ubti2bZuCmhaLxWIE\nzgsLCzs8X1fCKi+//DKKioqwb98+GBgYwMrKatgkpssLHZ70WZ8+fRqzZ8+Gr69vj6u0vvzyS0gk\nEty4caPDMTKZDAkJCaiqquqT8tuhwrZt2xAcHIx9+/aBx+Nh2rRpOHnyJNMRBWirUjt8+LDCw0lu\ncAHg4MGDyMvLQ2BgIEaMGAEnJyccO3YMFhYWTFEM0LaoiIuLg0QiQUREBCiKAofDwbvvvtttQZ2h\nDHEvDCFaW1sVDEFxcTFYLBZeeOEFhdzcCRMm9EqqT054eDgyMjLw+uuvIysrC5cuXQKfz1erCHtH\nyGQyBWHzrKws6Ovro6CgAIsWLUJra2uX+rtyPD09QdM08vPzmUIBoE2c58kVs7GxMYqKirp9bnXB\n2NgYH3/8MbO6XbNmDf79738r3L+lpSUePXqksgVPQUEBkysslUrx/vvvIz8/HwCUNCgKCgpgbGwM\nqVSKuro6mJmZITMzk3FnVFRUQCAQYNGiRQrZJuoCCaQNIby9vdHU1ITc3FxGNzYnJweGhoZwd3dn\nvuA0TSMtLa3fpPDmz5/P9HGTK3jFx8erXXCDz+dj9erVWLFiBSPYUlpaygiPdxe5BgSXy1XodHDs\n2DHs2LED2traOHz4MAoLC5Gdnd2tVCp1xd/fH25ubpg7dy5EIhFWrVqFN954gwmoVVZWYsOGDZg1\naxY8PDxgZGQEQ0NDLFu2DM7Oznj11VexdOlSGBsbo6amBqNGjWKE3KuqqvDzzz/j+vXrOHfuHDQ0\nNLBr1y44OztDJpNBX18fM2bMwKVLl7Bnzx5IJBJER0fj9u3bMDMzw+bNmxW0hNsTExODf/3rX8jI\nyOhwTF9CRMzVBCsrK7zzzjs4deoUHBwcVGrLBgcHQygU9qi7QW+pqKjArl278MEHH/So+8BgQ1EU\n3N3dQVEU88orb93ek6wFGxsbaGlpwcTERGUZtjyftampCbt37+43vdyhgpubGxITE2FsbAyKohAc\nHKxQPSgWi5GSkoJbt26BoijU19ejqamJcYU5OzszD3CZTMb4vTdt2oSffvoJ06ZNw4MHD/D48WOY\nmJjg7bffZoylkZGRUkWfjY0NEhMTsWnTJqaUPjo6WmneAoEAd+/eRW5ubr//GxGjqwbExcWhoqIC\n9fX1KjsipKWlITc3FywWq8ueYv1FUFAQGhsbYW5urjZZD3L9YnlmB4vFYt4euoutrS1YLFan/bxs\nbW0xbty4bmljqDtisRhhYWGYOXMmJk+ejH/961+d6uA+mQLm5+fHSJSKRCJYWFhgx44dnV6Toihc\nv34dn3/+OWQyGSZMmMDkDD/55rJmzRoAYPbLHwL//ve/8fjxY2zZsgUnT55Ume7WV5CUMTVg8eLF\nTPtvVS1ocnNzkZOTg5KSkkExuEBbE86vv/4a9+7dU5vW2TweD2PHjgXQlp/M4XDg5ubWo+yFF154\nAfr6+p2OMTY2fiYMLtB2r9nZ2bh16xYyMjLw22+/QSAQdPideNIt9dJLL2HEiBFITk7GxIkTmbSy\nzpCrpX399dfYu3cv9PX1sWLFCpVjP/vsM1RXV8PLywuurq7w8fFhumh/+eWXmDlzJoqKihSCdwNK\nR/XBNNFeGHCWL19Oh4WFKW3vbp3/QFFdXU37+fkN9jS6zb179+iFCxcyvycmJtK2trY0TdM0n89n\nNBw6orq6mra0tOz0Grt37x5wXYWhwJIlS2gvLy/67t27tEAgoD/88EPa3d2d9vX1pZcuXdqn13pS\nj8TT05OmaZq2trZWOd7BwYE+cOAAfeXKFSVNh3/+85+0q6srbWVlRe/atYu+fv16n84VRHtBfQgI\nCICLi4uCepO7uzt4PB6ysrIGcWZ/IpFIsGLFCrVKifL19VWovpM3UeRwODh27BjmzZuHwMBARmqz\nPZ6ennj48GGnjTCFQiFiY2OHvaaAKs6cOYO0tDS0tLQwAUsWi4WHDx8CADQ1NeHi4oL6+nocP34c\n9vb2+OmnnzB27FhcuHCB6QaSmJiIX375BZ9//nmXLaw8PT3R0NCAkSNH4u7duygtLcXevXtRWloK\nFosFHR0dTJgwATdv3uw006eqqgrHjh3Dt99+i+effx6zZ89GUFBQrz8T4tNVM1SJiVhZWcHf3x8T\nJkxAY2PjoDazDAwMhK+vr8pWQUMVLy8vpKend5iBYWtri4iICKXPVSQSITAwEKWlpXB3d0d1dTWA\ntpxqBwcHZhxFUQgICOhQWP5ZJS4uDlevXsWWLVsgEAjw3HPPob6+Ho2NjeByuTAyMsKsWbOQk5MD\nDQ0NmJiYIDk5uctMGYlEwoyZP38+xo4dC4lEgm3btmHSpEmIiYlBXV0dWltbcf/+faSmpnZ6TnnQ\ntbGxEUeOHOl1pg4xumpGcHAwPD09FfR0L1++jKVLl4KmaYwaNQrffvstFi5ciAcPHjDiKwPBmjVr\nIJVKmTQfdWH16tUYP358h6uYc+fOYdWqVSpTyZ4M1MirBZ/MgHBwcMBrr73Wad80AvDRRx9BKBQi\nPz8fPB4PCxYsgJ6eXq91QJ7sbxcTE4MrV67g4cOHaG1tRXFxcYfHUhSFxYsX49GjR3j99dfx6aef\n9mouxOiqGRRFwd/fnxHebk9aWhpTvDB69Gjs378f1tbWSE1N7fcW1mlpabh48aKCcpc60ZVcZvue\nbHp6epg6dSpMTU1RXFyMgoICZp+NjQ3T6p3D4TANRrW0tDBq1Cgl8XVC77Czs4O5uXmnBScBAQGo\nr69X0HOQQ1EUvvvuO9jZ2XV5rYqKCuTm5naZTdEVJHtBzZBH3FX5BwMCAlBWVgYWi4X9+/cDaJNC\nDAgIgI2NDS5fvtwvc6IoCsePH1dbg5uWlsYUfKhCIpEgNzcXGhoaCA8Ph4GBAX755Rfk5+ejsbER\nrq6uzFiapplOEAKBAKWlpSgpKVEwzKoQCoUKLglC55w5cwZ8Ph/a2tqwsbGBr68vvL29YWdnp9SI\ntLGxEUDbZ/wkPB6vWwYXaOvg3FuD2yUdRdhokr0w6Mijs6pQFbH9/fffaSsrK9rKyooODAzs07m4\nu7vTV65c6dNzDiQeHh6d7vfz86MtLS3puXPnKnWLsLa2Zo6Xd5SYO3cuvXjxYqXzfPjhhx1ew8nJ\nid68eTMdERHxFHfwbHD48GG6sbGRpmmadnZ2Zn6Wc+/ePdrJyUnpOB8fnyGVVYNOshfISncIo6en\n16EOAq3C7TN58mSmkWJH/b2elhEjRvRJG+/BYPXq1ViwYEGnYxobG/HXv/4VRUVFSoUTJSUlMDAw\ngI2NDbZu3QqgrZJKlfBNS0uLyvPHxMRgypQpiIqK6rJd/LNIcXExHB0dUV5ejoULF8LPzw/PP/+8\nUkBr1apV2Lhxo9LxbDYbhoaGqK2t7fO+gKtWrerTBq/E6A5hUlNT8f333ytpsXbnC9BeW7cv6Ovz\nDSS3b99mWod3hFQqhZ6ensp9AoEA165dY9r6dBS0rKyshKampsK28vJy8Pl8NDY2YvPmzdiwYQOT\nSkVog6IopKen4/Dhw9i+fTv2798Pb29vhIeHK42dPn06Pv/8c+Tl5SkcL1+EtN/eV9y8eRPLly/v\n9niKojrdT6QdhzjJyckoLi4Gn8+HmZkZYmNju1XCamJiwojm9ERnYDgilUpha2uLN954o8PMgsWL\nF6v05Tk6OqK1tRVlZWU4duwYAgMDYWpqCm1tbTQ0NDDjNm3ahPPnzytE4AMDA6GlpYWMjAxmxSYS\niTotmX3WCAsLw//+9z8FnzmPx1No094euSEOCgrCoUOHsH37dmzatAl8Pp8ZY2FhgU2bNqnUX3ga\nMjIy4Obm1q2xoaGhuHLlSqdjSPaCGpGZmYnCwkJIJBJoa2t3GbgB2vJPp02b1qsUr/LycuTk5Kit\nXKE8B/eLL75Ac3MzgLbX0dbWVrBYLLDZbJVuARaLBX19fSZ5H2h7y/Dw8GBSyI4fP460tDQFpS05\nAoFAqaClOw1HnyV8fX0xY8YMlavarhCJRIiKioKuri727NmjdN6BbkXF5/MhkUhQVFREGlMOF/z8\n/DBz5kx88sknXb7CyF0Qpqam+OOPP3p13a+++kqte6m99957KCkpwdGjR1Xu37x5M06cOIGNGzei\nqKgIGzduhJWVlUphnKVLlzKpeXFxcbhw4UKPukOos5umrwkKCsJ777331MLk5ubmKlPEgLbPOS8v\nDy4uLr2YYc9wdnbGzZs3uxxHjK6aMW3aNBgbG+POnTsQiURKubkhISEQCoXgcDiQyWSQyWS9Kpyg\nKApNTU29nPXgEhkZqdBA8kkoioKhoSFmz57NdDoIDQ2Fm5ubkgwgm81GY2Mj4uPjcePGjU4fRhwO\nB1VVVUxJ65YtWzBz5sw+uiv1pLy8HOnp6WCz2Zg4cWK/dYLYu3cvwsLCkJ+fjz179jxVhVlgYCB2\n7tzZ7WO7ihvIIYE0NYXL5TI90Npz9epVlJaWoqioCCUlJWCze/dPHBoaioiIiF6dYygwc+ZMxMTE\nqNwnbwfTHicnJ0RFRSn58u7evYudO3di5MiR0NbW7vB6VVVVqK2tVdAQ+N///tevcoJDlfZ96g4c\nOIC4uDhkZmb2u8pXQkIC7OzslHq5dZcHDx7A3d29zxX1yEpXDaFpGoWFhbCxsUF5eTmam5sZH+WT\nPng2mw0bGxtG2KUnZGdno6mpaViszsLCwuDp6amyvffZs2dhbW2tdMz777+PAwcOKFSqjR8/HoaG\nhvDz81MI3jzJmjVr1NYH3pfMnz8fWlpa2LJly6CkHPL5fBQUFGDZsmU9Lno4ePAg/Pz8sGHDhj6t\n+CQrXTVE3jpcQ0MDTU1NKCkpga6uLkpLSzFq1CiFrsDyFS9N0/j++++7PHdxcTF8fX2xaNEilJSU\nDKvWM9OmTcO3336rtF1DQ0Plaj4rKwtXrlzB7NmzUVZWBg0NDXh5eTH7tbS0Or1W+3Lg5ORkWFhY\n9PIO1A9dXV3k5uYOao53dnY2qqqqnip3PTMzEwUFBX1bYt9R1QRNKtKGJGVlZXR4eDj93Xff0VZW\nVvTy5cuVxgQHB9NWVla0vb09sy07O5u2tLSkXVxcVJ43JSWF9vLyooODg/tt7oNNUVGRymqwuXPn\nKm07deqUkobu77//zlQC/vrrr7Szs3On1/P19WV+9vHxeYoZqzf37t2jvby8BnsaNE23aSK7ubnR\nZWVlA3I9dFKRRtwLasaBAwewcuVKfPrpp3j55ZeV+kUBba3CgbYAkpWVFcLDw+Hp6Yns7GyVWQ+x\nsbG4fv36sFrVqmLu3LkqV7rydLFly5bhv//9L0aPHg2xWAx/f3+FcQcOHIBMJgOfz4eBgQGjfdER\nOjo6TEv7MWPG9NFdqA/GxsYKucyDiaGhIXJycuDm5tZhDvBAQYyumkFRFCZNmoS6urouX9liY2Nh\nZWWFN954AwDQ0NDAuCbac/HixSEjkD5YODo6gqIo5OTkYNWqVVi3bh0mT56sMEbeAlxPTw/Jycld\nnlP+8HtWuXTpEurq6gZ7Ggq89dZbiIuLw8qVKwdtDsSnq2bQ/x8ooygKZmZm3TrGw8ODCRQ9GaUH\n0OsMB3VCV1dXpa7qpEmTUFJSAkNDQ6SkpCgZXODPz2nGjBn9Ps/hwJQpUwak3XlPmDhxYq/z1nsL\nqUhTM7y9vVFTU4PJkyerdC10hLW1NSZOnIiUlBSF7RUVFcjIyFCq6BnO2NraoqWlBZMnT8atW7eg\nqampUHXWnpCQEEgkEsaV4OnpqdJFQVBNXFwc6urqhlT36IGoViN6usMILS0tSKXSHhtcKysrJYMr\nkUiwY8eOZ8rgAkBSUhJGjx6Nhw8fYsaMGR0a3IULF+LmzZu4f/8+gLY/1va96whds3LlSly7dm2w\np8HQl2phTwsxumpEYWEhDAwMVMo6doS9vT3Tzmfbtm0K+5YuXaq07VnA3NwcBgYG8PHxUSkTKOev\nf/0rmpqaMG7cOGzYsAEWFhb9VkE1nGGxWF2WrQ8UCQkJgx5II0ZXzaiurlbpl+2I5uZmlJWVobS0\nFN9//z3s7e1BURS8vb0xe/bsfm/xM1RJSkrqMvsgIiICZWVlGD9+PB48eICoqKgBmt3wIiwsWfp2\negAAEQlJREFUrFtVYRKJBGKxGGFhYUyuuJ+fHwQCAbZs2dInc7l69Wq3FcP6C5K9oEaMGDEC+vr6\nuHPnTrePab8qLioqgq2tLVxdXbF27VrMmjWrP6apNnQkOC5HIpFg2bJlGDduHHbt2jVAsxp+zJw5\nE7t37+5wv0QiQWhoKNhsNng8Hjw8PJRWo4mJiViwYAEOHjwIAFi3bl2P/cSxsbHQ09Prdaff3kKM\nrhqRkZGBHTt2wMPD46nPwWaz8Ze//OWZN7hAm86uWCyGvr4+tm7dygiV0zSNpqYmaGlpYcWKFZg2\nbdpgT1Wt8fT0hKOjI/N7Xl4eCgoKwGKxwGKx8PjxY2zYsAFTpkzp8ByhoaEwNTVFUFAQ2Gx2j/3E\nEokEZ8+e7VCVbCAhRleNaG1thaGhYY98utra2rC3t8eoUaNA0zReeeUVtWuf3l+kpKQgPDwcLBYL\nc+bM6XcBlmeV8PBw7NixA6WlpZBKpTAwMHiq7AEXFxeUlZVBKpUyRSrdNaIRERF9nptrY2ODF198\nscf52CRlTE3YtGkTDA0N8dtvv+HWrVs4cuRIt491dXXtMEJPIKgjFEVh0aJFMDIy6pbrx8vLC/v2\n7evTOcTHx+P48ePw9fVVknUkKWPDgF9//RWhoaEQCoU9MrhAmwwkgTCc4PF4yM7OhkQi6TIzorKy\nErq6un0+h/DwcIwfPx7p6emMZGd3mo4S94Ka0J2+aE9SUVGBpKQkTJ8+vR9mRCAMPqtXr4afnx94\nPB5eeukl3Lt3D9euXUNWVhYiIyNBURS4XG6P8tp7QkhICJKTkyGTyeDj44Oampou22gRo6smNDc3\n49ChQ12O4/P5THR2xIgRT62aTyCoA1OmTGEqBBMTEzFy5Ej4+/sjODgY3t7esLOz69frf/LJJ0hM\nTIS5uTk8PT0xderULo8hPl01IDs7G+fOncP58+eRkJCgUhdAIpHA0NAQ3t7ew14tjEDojMzMTHh6\neqK2thYA+kX/QSgUIjc3Fy+++CLy8vKYt0l5B2LSmFLNKS0tRXx8PDw8PFQaXJFIhJCQEBgbG8PE\nxGQQZkggDB3y8vJw4sQJaGhooLq6msnt7UsiIyNhZGSE06dPo6WlBSKRCGlpad06lhhdNYCmaXh6\nenbYSdbc3BxcLhePHj0i7b0JzzwjR45kytv7oyedQCBASEgI7t69ix9//LHbxlYOMbpqgJ6eHh49\neoSWlhZERUUplURmZmbCyMgI6enpgzRDAmHoEBsbi6VLlwKAQn+73pKcnIzy8nLY2Njg+vXryM/P\n73HfQYAYXbXg5s2bjNugsrJSYV9FRQUKCgq61BEgEJ4VTE1NkZOT02fnE4vF+OijjzB16lRkZ2dj\n9erVaGpqeiqDCxCjO+TJy8vDuHHjkJiYCIFAoCBcHh8fj4sXLzIpMwQCoe8JCwtDQkICTE1NcenS\nJVy9ehX//Oc/n/p8xOgOcb755hsYGBgAAKqqqhSe4JqammhoaEBNTc1gTY9AGPbMmTMHq1atYlpd\n9VYAnaSMDXEWL16Mt956C35+frC2tkZpaanCfqFQiKioKOTm5g7SDAkEwpOQlDE1prm5GX5+fnBw\ncGBWvHLS0tLwww8/9Dh6SlB/fH19AQCzZ89GUFDQIM+G0BOI0R3iyJshSqVSBc2F2NhY/Oc//+lz\nEQ+CeqCvr4+6urpnsrW7ukOM7hCnsbERQFvaWHv3QlcGd8WKFaipqQGbzUZqauqAzJUwcBBRdfWF\nqIwNcUaOHIlNmzbhwIED4HK5sLW1hZWVFcRicYduheXLl+PKlSuoq6tDQ0PDAM+YQCB0BgmkqQHy\nBO+ZM2dCJBKhpqYGLS0tsLCwICseAmEIQvR01ZwjR47A1NQUlZWVqK2tRX5+PjQ0NPDcc8/Bx8cH\n/v7+EAqFgz1NAoHQDchKV424cOECowsqFovR3NwMLpcLfX19rFu3rtMeUwQCYeDobKVLjC6BQCD0\nMcS9QCAQCEMEYnQJBAJhACFGl0AgEAYQYnQJBAJhACFGl0AgEAYQYnSHMRRFISEhAWKxeLCnQiAQ\n/h+ivTAMCQwMxI0bN0DTNDQ1NXHt2jUkJCQM9rQIBAKI0R02JCYm4vTp07h//z4MDQ0ZoWVTU9NB\nnhlhOEJR1KB0K4mPj0d4ePiAX7cvIUZXzUlOTsbJkycxZswYjBkzBo8ePepVKxFC/1NVVYWoqCjQ\nNM10IwCAlpYW7N27d0DnEhQUhOTk5G6Pj4uLQ2VlJTQ1NSGTyWBmZobNmzcrjImPj8e5c+fkBQLQ\n0tLCzp07AUDJUCcnJ+Phw4fw9/fH1atXceHCBcydOxempqbYvn27Qnl7a2sr6uvrUV9fj7Vr1/bi\nrgcXUpGmxnz00UfQ09ODubk5Tpw4AVdXV7i4uAz2tAhPUFxcjOrqahQXF4PFYqG5uRnx8fEwNjZW\nGrdv3z5wOBxoa2sjPj4ePB4PeXl5OHbsGBwdHTF//vynmkNYWBjT1klu6FtaWvC3v/0NlZWV4HK5\nSseoeii8/PLLiIqKYralpaXh5MmTjO4zALzyyitYuXIl83tFRQX27NkDmUwGNpsNNpsNmUzGnO/5\n559HRUUFdHR0YGZmBqFQiObmZrz++uvw8fFRMtRr1qzBnTt3FLbJry+TyZj/97atTm8gZcDDFC8v\nL+zbtw/+/v6YMmWKwhed0H8UFxcjNzcXK1euVNK7oCgK69atw71795iV3nPPPQc9PT2Eh4fD0NCw\nW9eorKzE7t27meMjIyMRHx/PBEUbGxthZ2cHHx+fDs8hX3ECgLu7O+zs7J7yjtWPLVu24Pfff2ce\nHFwuF6+99hp8fHxQWVmJiooKREZG9tv1idEdJmRmZqKsrAwURcHCwgL19fVMgCwuLg5nz57F22+/\nTdq3dBOxWAx9ff1u+SYlEgni4+Nx48YNsFgsBd9iS0sLRowYgUePHoHH42H+/Pn9/sZx4cIFfPbZ\nZwqupOLiYpw+fRp37tyBVCqFkZERvvjii36dh7ogFouRnp6Oy5cvQ0dHB5MnT0ZlZSXYbDZjlHfu\n3NlnfmpidIcJfn5+yMzMBEVRWLBgASwsLJT+qAQCARwdHYeNm0EikXS5OhSLxUhMTMSNGzcAtBlB\nDoeDlpYWaGpqorm5GWw2GxwOBxRFgcvlgsPhQENDAzKZDDKZTGHMk9A0DQ6HA0tLSzg7O6v8w6ys\nrMTMmTP75qa7IDAwEDdv3kRWVhbjoli0aBF0dHQwZ84cvPvuu0quC0LnnDlzBl9++SVkMhk4HA7z\nPWCz2dDU1MSrr74KgUDQbaNMjG4/ERMTg2vXrkFfXx8vvPAC+Hw+rl+/jlmzZvXZNdLS0vDTTz+B\nw+FAS0uLCXqsWLECt2/fhpOTE/h8vsIxAoEAWVlZfTaHgaKqqgrh4eHQ0dFBU1MTGhoaoK+vD4qi\noK2trTCWoihoaWmBxWJBQ0MD77zzjspXbaFQiHHjxg1KpL2/yM7ORkFBAbKzs3HmzBls27YNAoHg\nqf29BNVIJBJIpVLcu3cPR48exeXLl0HTNFpbW7sMeJJuwP0An89HXV0dmpubcefOHfz3v//F0aNH\nweFwsGzZMsydO1dhPEVRCAwMxPTp07F06VJQFNUt/97EiRPx008/gc1mQyQSYdGiRZBKpairq4Ou\nri4THGkPTdMQiUQwNzfvq9vtN86cOYP09HQ0NTWBpmkkJSV12+/ZHSZNmtRn5xoqzJ49G8ePH8ei\nRYugpaWFb775Zlg9VIYK8u+hsbExpk2bBgBITU1FRUVFr8477Fe6dnZ2aGlpAQB88MEHuHjxIsRi\nMfP6aWlpCZqmERgYiNTUVFy8eBH29vZwd3fv9LxeXl5499134ejoCGNjYxQWFmL//v3g8XhMBFUe\npaVpGjKZDKGhoTh16hTOnz8PAErR3MbGRmhqajKvNq2treByuWhtbQXwZ9RZQ0MDr732GgICAlTO\nbcOGDWhubsZnn33W+w+wH3FwcICRkRHWrVunFg8IwrPL6tWrcffuXXC53G41elVb90L71VpqairO\nnj0LqVTKGLWOkBuxJ7fJoSgKjx8/xogRI2BkZAQLCwv8+uuv+Pvf/46goCAEBwczDR3lhu7FF18E\nm83G9evXGSMokUigoaGBkSNHDnrHXaFQiLVr10JLSwsTJ07EunXrBnU+nSEWi7F+/XrU1tbiH//4\nB8LCwgZ7SgSCEiKRCFFRUdDS0sKbb77Z4SJHFWppdJ2dnWFkZISmpiZwOBxMnjwZfD4fpqamg/Iq\nlZmZCQCYN28eE6QoLy/HwYMH4e7ujjfffHPA5lJQUID8/HwAbQ8T+Yp427Ztffpq3huEQiF++eUX\niEQiXL16lXlQ0TQNDQ0NBAQE9Knvm0DoSxITE3Hq1CmV+dTdYcgYXV9fX8YoyH2R69evh46ODpKS\nknDt2jVmwpqamoO+ehxMYmNj8d1330FTUxNGRkYK+wwMDLB+/fohY2AvXLiAnTt3oqmpCVwuFzKZ\nDFpaWhg7dixMTEzg5OREoukEtYLP5yMhIeGpv7eDEkjbu3cvfvzxR7z88stMPmNraysMDQ0xb948\nvPrqq6AoiknonzNnzpB+JR5o/vjjD4wZMwYPHz7EH3/8gU8//bRfVtNnzpzB7t27oaGhAfkDdurU\nqZ0WWqxYsQKPHj0C0LZy1dbWRnR0NPHLEoYN8fHxCA4Ohr6+PiZNmoTo6Og+O3e/rXS9vb1B0zQm\nTJiAmzdvQk9PD0lJSYiJicHly5fB4XAUSgzl+XAhISFMpPBZRSgUIiwsDOnp6f0qWLN8+XJUV1cj\nKSlJwWWzZs0acLncDh+CCxYswNtvv43a2lrcunULra2tkMlkWLt27bDMFiA8O6SmpuL06dMK22pq\nanDw4MEenWfQ3AsSiQRr165FY2MjXnvtNQQGBnY6/tKlS9i1axdqa2vB4/GwZ8+ep762utM+MCZP\n1ra3t1fKxbx06RKio6MxcuRIJhuioaEBra2tePXVV5We0IGBgWhuboZMJsObb77J/JtQFIXc3FyU\nl5ejtbUV+vr6HcpBFhYW4tatWzAwMMAHH3wAY2NjZGdnIzMzEzt27CCt4AlqSXZ2NkpKSpj4TW8Y\nMj5dAMjJyUFmZiZYLBaMjY2ZQFB7NDQ0sHnzZuIHbEdVVRXi4+OZmv72PHjwAECbr1cuXEJRFDIy\nMpSCjiEhIWhsbGQyPNhsNqRSKWiaxl/+8hcEBwczn3tqaipOnTql9EYC/JnuJs8SGTlyJEJCQshK\nl6C2ODk5YfTo0di1a1evg/VDyujKSU5OxpkzZ0BRFLKzs/vlGs8KFEVh7969+OWXX9Dc3Mz4ZkeN\nGoXt27eDoigkJSXh/PnzjADIk8ZT/jPQZlhbWlpgZmaGNWvWkMR7wjNDRUUFUlJSmGD+xx9//FTu\nziFpdIG2hONr164hIiJiwOrWnyVycnKQn58PLS0t/OMf/4C/vz8xoARCNxGJRIiNjUVDQwNYLBak\nUimWL1/eLVvVK6Pr6+sL4E9tTfl4+eqo/fHy19DnnnsO7u7uXeZhisViHDp0CP/5z39QW1sLTU1N\nAIorLgDgcrk9ElomEAiEvoaiKCxfvhxNTU2MUJKGRlsC2JPFWJmZmQO30qUoCidPnsSRI0dQU1PT\n6ats+yqxzqrMjI2NsXXr1h7Ng0AgEAaDhIQELFu2bODydHk8HiwtLWFpadnXpyYQCAS1h7RgJxAI\nhAGEGF0CgUAYQLp0L/j7+w/EPAgEAmFYUF1d3en+LgNpfT0hAoFAeBZ4quwFAoFAIPQtxKdLIBAI\nAwgxugQCgTCAEKNLIBAIAwgxugQCgTCAEKNLIBAIA8j/AcLee4av0dasAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x129d29050>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# outliers for features\n",
    "feat = X_list\n",
    "feat_labels = ['rhy', 'mel', 'mfc', 'chr']\n",
    "tabs_feat = []\n",
    "for i in range(len(feat)):\n",
    "    XX = feat[i]\n",
    "    output_csv = '../data/results/global_outliers_'+feat_labels[i]+'.csv'\n",
    "    df_feat, threshold, MD = outliers.get_outliers_df(XX, Y, chi2thr=0.999, out_file=output_csv)\n",
    "    outliers.print_most_least_outliers_topN(df_feat, N=5)\n",
    "    tabs_feat.append(interactive_plot.plot_outliers_world_figure(MD, MD>threshold, ddf))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "interactive_plot.plot_tabs(tab_all, tabs_feat, out_file=\"../data/results/outliers.html\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\\begin{tabular}{llll}\n",
      "\\toprule\n",
      "{} &                  0 &                          1 &                      2 \\\\\n",
      "\\midrule\n",
      "0 &    (Swaziland, 12) &                (Ghana, 13) &         (Botswana, 21) \\\\\n",
      "1 &     (Pakistan, 17) &              (Ireland, 21) &            (Nepal, 32) \\\\\n",
      "2 &     (Pakistan, 35) &               (Turkey, 41) &             (Iraq, 57) \\\\\n",
      "3 &     (Portugal, 29) &          (Switzerland, 32) &          (Austria, 53) \\\\\n",
      "4 &        (Nepal, 22) &                 (Cuba, 24) &           (Zambia, 32) \\\\\n",
      "5 &  (South Sudan, 36) &         (Sierra Leone, 37) &          (Lesotho, 45) \\\\\n",
      "6 &       (Mexico, 40) &  (Trinidad and Tobago, 53) &       (Kazakhstan, 67) \\\\\n",
      "7 &        (Japan, 34) &            (Australia, 46) &  (Solomon Islands, 54) \\\\\n",
      "8 &  (South Sudan, 56) &               (Canada, 59) &           (Norway, 62) \\\\\n",
      "9 &       (Russia, 34) &             (Portugal, 38) &          (Ukraine, 48) \\\\\n",
      "\\bottomrule\n",
      "\\end{tabular}\n",
      "\n"
     ]
    }
   ],
   "source": [
    "centroids, cl_pred = outliers.get_country_clusters(X, bestncl=None, min_ncl=10, max_ncl=30)\n",
    "ddf['Clusters'] = cl_pred\n",
    "print len(np.unique(cl_pred))\n",
    "outliers.print_clusters_metadata(ddf, cl_pred, out_file='../data/results/clusters_top3_countries.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "ddf.to_csv('../data/results/df_and_clusters.csv', index=False)\n",
    "cluster_freq = utils.get_cluster_freq_linear(X, Y, centroids)\n",
    "cluster_freq.to_csv('../data/results/cluster_freq.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5\n",
      "6\n",
      "7\n",
      "8\n",
      "9\n",
      "10\n",
      "11\n",
      "12\n",
      "13\n",
      "14\n",
      "15\n",
      "16\n",
      "17\n",
      "18\n",
      "19\n",
      "20\n",
      "21\n",
      "22\n",
      "23\n",
      "24\n",
      "25\n",
      "26\n",
      "27\n",
      "28\n",
      "29\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x1213aa410>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x112572c90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import scripts.utils as utils\n",
    "bestncl, ave_silh = utils.best_n_clusters_silhouette(X, min_ncl=5, max_ncl=30, metric=\"cosine\")\n",
    "plt.plot(ave_silh)\n",
    "plt.xlabel('Number of Clusters')\n",
    "plt.ylabel('Silhouette Score')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}