+
+
+
+
+
+
+
+
+
+
+
+
+
+---------------------------------------------------------------------------
+AttributeError Traceback (most recent call last)
+<ipython-input-18-7660e1d3307d> in <module>
+----> 1 psd.to_feather(output / 'data' / 'psd.feather')
+ 2 freqs.to_feather(output / 'data' / 'freqs.feather')
+
+AttributeError: 'dict' object has no attribute 'to_feather'
+
+
+
diff --git a/actions/stimulus-lfp-response/data/10-calculate-stimulus-lfp-response.ipynb b/actions/stimulus-lfp-response/data/10-calculate-stimulus-lfp-response.ipynb
index e3f40b21f..1b3d16471 100644
--- a/actions/stimulus-lfp-response/data/10-calculate-stimulus-lfp-response.ipynb
+++ b/actions/stimulus-lfp-response/data/10-calculate-stimulus-lfp-response.ipynb
@@ -19,7 +19,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "15:15:05 [I] klustakwik KlustaKwik2 version 0.2.6\n"
+ "10:26:07 [I] klustakwik KlustaKwik2 version 0.2.6\n"
]
}
],
@@ -67,7 +67,7 @@
"outputs": [],
"source": [
"output = pathlib.Path('output/stimulus-lfp-response')\n",
- "(output / 'figures').mkdir(parents=True, exist_ok=True)"
+ "(output / 'data').mkdir(parents=True, exist_ok=True)"
]
},
{
@@ -104,7 +104,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
@@ -131,7 +131,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
@@ -154,7 +154,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
@@ -168,7 +168,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
@@ -183,7 +183,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
@@ -218,7 +218,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
@@ -230,7 +230,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
@@ -240,7 +240,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
@@ -303,13 +303,13 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "81d917d31c0e43cf80ec3398d46b2c01",
+ "model_id": "e733903bb8d7406ea6c05bf5af093bfc",
"version_major": 2,
"version_minor": 0
},
@@ -319,6 +319,13 @@
},
"metadata": {},
"output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n"
+ ]
}
],
"source": [
@@ -327,6 +334,77 @@
" left_index=True, right_index=True)"
]
},
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "0184251a265a40a2a1e9910405f05db8",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "HBox(children=(IntProgress(value=0, max=704), HTML(value='')))"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "psd, freqs = {}, {}\n",
+ "for i, row in tqdm(channel_groups.iterrows(), total=len(channel_groups)):\n",
+ " action_id = row['action']\n",
+ " channel_group = row['channel_group']\n",
+ " action_group = f'{action_id}_{channel_group}'\n",
+ " lfp = data_loader.lfp(action_id, channel_group)\n",
+ " clean_lfp = select_and_clean(lfp)\n",
+ " snls = signaltonoise(clean_lfp)\n",
+ " best_channel = np.argmax(snls)\n",
+ " snl = snls[best_channel]\n",
+ " \n",
+ " lim = get_lim(action_id)\n",
+ " \n",
+ " mask = get_mask(lfp, lim)\n",
+ " signal = zscore(clean_lfp[mask, best_channel].ravel())\n",
+ " \n",
+ " p_xx, freq = mlab.psd(signal, Fs=lfp.sampling_rate.magnitude, NFFT=NFFT)\n",
+ " psd.update({action_group: p_xx})\n",
+ " freqs.update({action_group: freq})"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [
+ {
+ "ename": "AttributeError",
+ "evalue": "'dict' object has no attribute 'to_feather'",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
+ "\u001b[0;32m
\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mpsd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_feather\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0moutput\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;34m'data'\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;34m'psd.feather'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mfreqs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_feather\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0moutput\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;34m'data'\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;34m'freqs.feather'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;31mAttributeError\u001b[0m: 'dict' object has no attribute 'to_feather'"
+ ]
+ }
+ ],
+ "source": [
+ "(psd).to_feather(output / 'data' / 'psd.feather')\n",
+ "freqs.to_feather(output / 'data' / 'freqs.feather')"
+ ]
+ },
{
"cell_type": "markdown",
"metadata": {},
diff --git a/actions/stimulus-lfp-response/data/20_stimulus-lfp-response.html b/actions/stimulus-lfp-response/data/20_stimulus-lfp-response.html
new file mode 100644
index 000000000..7615c3b43
--- /dev/null
+++ b/actions/stimulus-lfp-response/data/20_stimulus-lfp-response.html
@@ -0,0 +1,13868 @@
+
+
+
+
+20_stimulus-lfp-response
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
18:16:41 [I] klustakwik KlustaKwik2 version 0.2.6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Out[18]:
+
+
+
+
+
+
+
+
+
+ |
+ action_side_a |
+ channel_group |
+ signal_to_noise |
+ stim_strength |
+
+
+
+
+ 68 |
+ 1833-010719-1-0 |
+ 4 |
+ 0.006686 |
+ NaN |
+
+
+ 66 |
+ 1833-010719-1-1 |
+ 2 |
+ 0.034550 |
+ NaN |
+
+
+ 694 |
+ 1833-010719-2-0 |
+ 6 |
+ 0.004609 |
+ 7.173297 |
+
+
+ 691 |
+ 1833-010719-2-1 |
+ 3 |
+ 0.003974 |
+ 6.446883 |
+
+
+ 580 |
+ 1833-020719-1-0 |
+ 4 |
+ 0.008427 |
+ NaN |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Store results in Expipe action¶
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Out[27]:
+
+
+
+
+
+
['/media/storage/expipe/septum-mec/actions/stimulus-lfp-response/data/data/psd.feather',
+ '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response/data/data/freqs.feather',
+ '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response/data/figures/lfp-psd-histogram-stim_energy.png',
+ '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response/data/figures/lfp-psd-histogram-stim_strength.png',
+ '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response/data/figures/lfp-psd.png',
+ '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response/data/figures/lfp-psd-histogram-theta_peak.svg',
+ '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response/data/figures/lfp-psd-histogram-stim_p_max.png',
+ '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response/data/figures/lfp-psd-histogram-theta_freq.png',
+ '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response/data/figures/lfp-psd-histogram-theta_energy.svg',
+ '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response/data/figures/lfp-psd-histogram-theta_freq.svg',
+ '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response/data/figures/lfp-psd-histogram-stim_half_width.png',
+ '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response/data/figures/lfp-psd-histogram-stim_half_width.svg',
+ '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response/data/figures/lfp-psd-histogram-theta_half_width.svg',
+ '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response/data/figures/lfp-psd-histogram-theta_energy.png',
+ '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response/data/figures/lfp-psd-histogram-theta_peak.png',
+ '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response/data/figures/lfp-psd-histogram-stim_p_max.svg',
+ '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response/data/figures/lfp-psd-histogram-theta_half_width.png',
+ '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response/data/figures/lfp-psd.svg',
+ '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response/data/figures/lfp-psd-histogram-stim_energy.svg',
+ '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response/data/figures/lfp-psd-histogram-stim_strength.svg']
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/actions/stimulus-lfp-response/data/20_stimulus-lfp-response.ipynb b/actions/stimulus-lfp-response/data/20_stimulus-lfp-response.ipynb
new file mode 100644
index 000000000..2b17fe576
--- /dev/null
+++ b/actions/stimulus-lfp-response/data/20_stimulus-lfp-response.ipynb
@@ -0,0 +1,627 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%load_ext autoreload\n",
+ "%autoreload 2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "18:16:41 [I] klustakwik KlustaKwik2 version 0.2.6\n"
+ ]
+ }
+ ],
+ "source": [
+ "import os\n",
+ "import expipe\n",
+ "import pathlib\n",
+ "import numpy as np\n",
+ "import spatial_maps.stats as stats\n",
+ "import septum_mec\n",
+ "import septum_mec.analysis.data_processing as dp\n",
+ "import septum_mec.analysis.registration\n",
+ "import head_direction.head as head\n",
+ "import spatial_maps as sp\n",
+ "import speed_cells.speed as spd\n",
+ "import re\n",
+ "import joblib\n",
+ "import multiprocessing\n",
+ "import shutil\n",
+ "import psutil\n",
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "import matplotlib\n",
+ "from distutils.dir_util import copy_tree\n",
+ "from neo import SpikeTrain\n",
+ "import scipy\n",
+ "import seaborn as sns\n",
+ "from tqdm import tqdm_notebook as tqdm\n",
+ "from tqdm._tqdm_notebook import tqdm_notebook\n",
+ "tqdm_notebook.pandas()\n",
+ "\n",
+ "from spike_statistics.core import permutation_resampling\n",
+ "\n",
+ "from spikewaveform.core import calculate_waveform_features_from_template, cluster_waveform_features\n",
+ "\n",
+ "from septum_mec.analysis.plotting import violinplot"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%matplotlib inline\n",
+ "plt.rc('axes', titlesize=12)\n",
+ "plt.rcParams.update({\n",
+ " 'font.size': 12, \n",
+ " 'figure.figsize': (6, 4), \n",
+ " 'figure.dpi': 150\n",
+ "})\n",
+ "\n",
+ "output_path = pathlib.Path(\"output\") / \"stimulus-lfp-response\"\n",
+ "(output_path / \"statistics\").mkdir(exist_ok=True, parents=True)\n",
+ "(output_path / \"figures\").mkdir(exist_ok=True, parents=True)\n",
+ "output_path.mkdir(exist_ok=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "data_loader = dp.Data()\n",
+ "actions = data_loader.actions\n",
+ "project = data_loader.project"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "identify_neurons = actions['identify-neurons']\n",
+ "sessions = pd.read_csv(identify_neurons.data_path('sessions'))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "lfp_action = actions['stimulus-lfp-response']\n",
+ "lfp_results = pd.read_csv(lfp_action.data_path('results'))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "lfp_results = pd.merge(sessions, lfp_results, how='left')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def action_group(row):\n",
+ " a = int(row.channel_group in [0,1,2,3])\n",
+ " return f'{row.action}-{a}'\n",
+ "lfp_results['action_side_a'] = lfp_results.apply(action_group, axis=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "lfp_results['stim_strength'] = lfp_results['stim_p_max'] / lfp_results['theta_energy']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " action_side_a | \n",
+ " channel_group | \n",
+ " signal_to_noise | \n",
+ " stim_strength | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 68 | \n",
+ " 1833-010719-1-0 | \n",
+ " 4 | \n",
+ " 0.006686 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 66 | \n",
+ " 1833-010719-1-1 | \n",
+ " 2 | \n",
+ " 0.034550 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 694 | \n",
+ " 1833-010719-2-0 | \n",
+ " 6 | \n",
+ " 0.004609 | \n",
+ " 7.173297 | \n",
+ "
\n",
+ " \n",
+ " 691 | \n",
+ " 1833-010719-2-1 | \n",
+ " 3 | \n",
+ " 0.003974 | \n",
+ " 6.446883 | \n",
+ "
\n",
+ " \n",
+ " 580 | \n",
+ " 1833-020719-1-0 | \n",
+ " 4 | \n",
+ " 0.008427 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " action_side_a channel_group signal_to_noise stim_strength\n",
+ "68 1833-010719-1-0 4 0.006686 NaN\n",
+ "66 1833-010719-1-1 2 0.034550 NaN\n",
+ "694 1833-010719-2-0 6 0.004609 7.173297\n",
+ "691 1833-010719-2-1 3 0.003974 6.446883\n",
+ "580 1833-020719-1-0 4 0.008427 NaN"
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "lfp_results_hemisphere = lfp_results.sort_values(\n",
+ " by=['action_side_a', 'stim_strength', 'signal_to_noise'], ascending=[True, False, False]\n",
+ ").drop_duplicates(subset='action_side_a', keep='first')\n",
+ "lfp_results_hemisphere.loc[:,['action_side_a','channel_group', 'signal_to_noise', 'stim_strength']].head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "colors = ['#1b9e77','#d95f02','#7570b3','#e7298a']\n",
+ "labels = ['Baseline I', '11 Hz', 'Baseline II', '30 Hz']\n",
+ "queries = ['baseline and Hz11', 'frequency==11', 'baseline and Hz30', 'frequency==30']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAewAAAFICAYAAACSp82YAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAXEQAAFxEByibzPwAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3XecXGXZ//HPpjcghSoBAgQuQGkqTfGX6KOIVBHwEWkBQUERRRSjVJHOIypFURSCgCC9CooKKCiKCCgCF72DQBKQZFN39/fHdQ97MjszO7t7dsru9/167evszLnPfe6ZTPaau7d0dHQgIiIijW1IvQsgIiIi3VPAFhERaQIK2CIiIk1AAVtERKQJKGCLiIg0AQVsERGRJqCALSIi0gQUsEVERJqAAraIiEgTUMAWERFpAgrYIiIiTUABW0REpAkoYIuIiDQBBWwREZEmoIAtDcvMNinx3Cwz60g/q9ajXEXl6VJGEZH+MKzeBRApZmYrACcCX6JBP6Ppy8L/AR8E1q5zcURkEGjIP4Yy6J0FHFjvQnTjMuAjwHP1LoiIDA5qEpdGNLTeBahCM5RRRAYQBWwREZEmoIAtIiLSBFo6OjrqXQYRAMzsBOD4MqfvcvfpZjYL2D89txowCvgGsD2wOvBf4BFgFnCxu5f9gJvZcGAGsCewCTAReBN4CLgauMjdFxddk71/sYvdfUZR+lWAg4H/ASzdYykwG7gPuAK4plI582BmGwKHpXJMBlqAF4A7gHPc/ZEy180iXu9D7r6Zma0HfBX4OPF+twL/BH5BvP72CmXo8fudrpsCPJMe7ga8QoxzeC+wgPj3/qK7/zNzzSbAEcQ4g9XSff4KnO3ut5vZbek13OXu09M15xIDHQE+4u53VHgtnwZ+lR7u7O43l0srkhfVsKWZ7Q48CnwRWAcYCawETAMuAm4xs5IDK81sKhEofgp8DFgFGJ6u/yhwPvCQmVlvC2dm+xOB5rvAdCJwjATGAmum8l8F3GBm/dYnbmbHAv8i3idL9x+Tfj8E+JeZnWBmLd3kszvwYMpnXeLL0kTitV0I/MbMRpa5Nq/3e3PiS8YH0v0nAJsCT2fudQDwD+LLwZqZ++wE/NbMziyT96zM73t3U4590/E/wG3dpBXJhQK2NJLziT/IN2We2zz9HFQi/blETfE8oob9YeBoYH46/wnga8UXpSlZfwI2BBan63cEtgR2BS4G2oANgDvMbLXM5cel8tyfHr+SKeNxmXt8hAgAo4E5xDS1TwBbE4H6vHRvgJ3LvL4+S60WJxKD5P5JBOgPANsCXwGeIv4OHE/51g2IwHdZ+v0Moqa+LTCTaNWACLxfLVGGvrzfxY4h/s2/RUyp2w84wd3npXvtTnx5GJrKdTzwIaKm/b10/68Tn5VluPvfgYfTwz0qfPlYifi8AVzm7ksrlFckN5rWJQ3D3V8FXjWzOZnnHqxwySKi6fLPmefuNLM/AH9Jj/cnAkzW+cCqxB/0j7r7fUXnbzSzq4EbiVrx94HPpPI8DzxvZvNS2sVlynhiOi4FPp6CQda1qVm28OVkT+AnFV5rj5nZe4Fj08NLgAOLgss9ZvZz4GailnycmV1Zpnl8AvFFaNui13uPmd0F/JkIpDOA04uu7fX7XcIQ4HB3vyA9fuff3szGAj9ID+eksj6aufYOM7seuJ2onZcyi5hfvwJRI7+mRJrP0Pm38+Iy+YjkTjVsaWbnFgVrANz9XqJJFGCDbLO4ma0P7JIenlwieBTyuJnOP8Z7mtm7qi2UmY0hmr7nADeVCNbZe7yZHq5ebf49cCTxf3w2cEipmqC7zyfmvHcQAffLFfL7UakvJ+n9LvQfb5CtmfbD+72A8kFyd6J/HuBbRcG6cJ+7gZPLXA9wKfElC8o3ixeawx/M9puL9DcFbGlmv65w7ol0HELUlgp2IAITRE2rmvyHEDXQqrh7q7tv4e6TgD26Sf5qOpZsfu2t1B/9ifTwHndvLZfW3Z8hxgJANHWX89sK557K/D4u83ve7/c/Sg1MS3ZOxyV0Nt+X8tNyJ9z9P8Ct6eEOZjY+ez71sW+RHs6qcA+R3KlJXJrZixXOLcz8nv2cb575/R89GFO2TrUJswqjplNz7drEYK0NiIFS2wJrpKR5f3meQjRjA+xiZtWOQq+0zOqzFc7Ny/zen+/3CxWu2SwdH00tByW5+2tm9gzlX+tFRPAfSXRVXJA5V6hdLwF+WaEsIrlTwJZm9naV6bKjn1fs5b0mdJ9kWWY2mWiW3oXyAaid/mnp6u3rHGZmy7l7qfd2XonnCrJfCPrz/f5vmechRp4DvFFF/q9RPmDfnPJYkWgWvwDeabXYJ6W51d1fr+I+IrlRwJZm1pu5y9nP/JZETakaPfrjbGbbE3OLx2aefptoev43MQf7d8B1wLt7kneVsq/zQuCcHlxbtvm8j+XI4/2u9G8+Ih2r+QJUNh93X2JmlxGj6P+fma3h7i8Qo83XSsk02ExqTgFbBps5md9fcveX875BmsZ0BRGslwCnApcDXrxAipmN65pDLrKvs62b0fb9qd/f74w3iMF7K1WRtrua/ywiYLcQzeJnAf+bzs0mauEiNaWALYPNw5nftwauLZfQzLYiBj89SwzcqtRnnrUPnQPdTnL3E0slSqOpVyl1LgdPEzXlMcTrrMjMvkmMWH/K3X+XYzlq8X4XPEgE7PXNbGy5fuw0kKzimAR3f9DMHiT6xXclAnZhtPvlFQa+ifQbjRKXRlR2ecsc/Cbz+6HdpD0TOI2oLRf/ga9UxqmZ3+8vmyqmIRXmA+f65dndlxArggFsbGbblkubFnk5jZgv/e08y0F+73c1CnPahwOfrpBuX6r72zcrHT9oZh+nc8qYmsOlLhSwpREtKvySd5NxmhP9x/Two2ZWMkCZ2ZFEnyVEze1PZcpYqnzZQU+fKHEeM9uSZfuVc53WlZyV+X2Wma1RnMDMVmbZaU5n51mAHN/valxGZ9/3aWa2bon7bEwsFVttfkuIVdMK/1aPlJtXL9Lf1CQujeiVzO+nmNkviH7YB3LK/yDg78DywMlmNg34OfAc8C5iZPCnUtrFwOdLbM5RKOMkM/sWMce4Na0SdjVRU20BvpgWUrmGzj7WXYG9iJpgwfJm1pLnJiDu/gcz+zFRs12XWKv7B8BdKcn7iaVbC4uUXOfu1+d1/4w83u9uufs8MzucGC+wMnCfmX0PuJOonHyM2BAk+yWr0uCzN8zsZmLDkfXS06pdS92ohi2N6EZibWmIlbfuA3ILJO7+BLFByLPpqe2InZfuJfpYdyeC7Vxg1zKrc2X7Yk9JZfxxyv9BYs1rUj4HEIOU7iUC935EsP41nXN8R7BsU3pevkws9dlBTJX6DhHA7iSW4CwE62vpfsOLXsnp/a72XlcQX0LaiNd7EnA3Ucs/lhgIOJPO0eqLSmSTdVHm9zZiiVeRulDAloaTAt4uxHrg84jlKJekmmqe99iQ2E7xdmLXpSXE1Kv7ibXAN3D3kjsxpaU09yeab1tTOUdlzp9C1OhuTHkvTemeInbo2tHdd6Rzi0ao3O/aK+7e5u5fIxYwOR94LJV1CfAS8QViR3ff3d0X5H3/TDn69H738F7fJ1Yjuxh4ngjKbwA3EM3uZ9DZulhpbjnEqmeFOem3u/srlRKL9Cfthy0ig4qZTSSmZkHsBX54hbQbEvttA+yVavAidTGo+7DN7EYAd9+lu7Qi0tjMbG+iv/lJ4FR3f6tM0o9kfn+om2wPSMc55NgtI9IbgzpgA+tOnTp1I3q3YpbIQNfSfZKGsoDoD4cYLf694gRpL+uT0sNFwC3lMjOzTYHPp4cXufvCcmlFaqFfA7aZfYHoNzvY3X/Wi+snEYN3diXmQM4F7gHOSFv6iQwor7/+Om+8Uc1S2JVtuOGGOZSm6dxGbAgzGTg9TeG6nhjRvwLwXuCLdG64cnTag/0dZnY0sD4xCHBHYDmiDzs7RU6kLvotYJvZFsRCCL29fhUiOK9LDNb5J/EfcTdi96HPu/uFeZRVpFFcccUVnHvuuX3Ox91zKE1zcfdWM9uNWEBlVWJQ4P4lkrYRg9xKBeHliFH8WV/p5yVVRarSL6PEzWw6scLRcn3I5ldEsL4dmOzu7yemoMwkFjI4Pw0IEREB3lmoxYBvEFO5ZhMj9GcTX/rPAjZ19xPLzPX+K1EjXwj8A9jD3S8qkU6k5nIdJW5mo4iAegwRVAt61CSeAv4dxJSLtd39jaLzlxDrNV/m7vt0zaHq+/x76tSpG91yS9luLJHBrNn6sEUGtNxq2GY2FXgcOD49dQyxklFvzEjHG4qDdXJ+On7SzEb38h4iIiJNI88m8cnEYI57ga3c/eQ+5LVNOt5d5vzfiGauscTyiiIiIgNanoPOXiRWTPp1XzIxsyF07tTzVKk0aYP5l4jN5NendxsFNKSO9g463uy3BacaQkd7O23z59a7GH3W0dHOW0vKz/Tp6Ohg4YK2sucb3VqbvrveRRCRjNwCtrs/SSxY0FcT6CzX6xXSzSYCdncb0TeVjjcX8Nq259W7GJKT/tiCq2YeUcAWaSSNuJZ4dr3oSgsVFKqhua0vLSIi0qgaMWD3tA1Rq5SJiMiA14hLk2Z3zxlVNhUURoe39mNZRET6jZlNAZ4pc7qDWN3xeWLXsO+7e6VuwoZkZjOIbUpfcvfJmefvJLZdPdndjyl9dX2Z2Sxi8Z273H16fUvTuAF7EdH9N6lCukLf9Wv9XqI6W/GmAxkyoXaz15a+PZvnvl3b/svJR/+RoWMr/XM3njcXt/LJm3+8zHMXf2x/VhgZvTQLWpdy4U+fWOb8Z/ddm1GjG/G/nTSAh4HshiXDiDE97wE2Aw42s4+4+7/qUTipv4b7y+Hu7WbmwCbAlFJpzGw4seoZxNzvAW3IhNEMmVi7rvohw+bTMXx+ze4HMHzy6gxbfqWa3rOvhi6cx/Pjl20Emjh1PSaNGgfAvHmLWDBi2crT6u/ZgHHjmnoomvSfL7v7ncVPpj0VLibWNr/azDZ09/ZaF64f7EeMQer74vmDRCP2YUMsDwid87GLbUl82VgIPFCTEomI1IG7zyaaZRcR01i3q2+J8uHuz7v7Y2UWx5ISGq6GnVwJHAzsYWZHufucovOHpuOv3H1gT1qWftHe0c7cRX0b/jBnoYZPSG24+2wzexh4H9FEfludiyR1UNeAbWZrEk0ire7+fObU74mduj4IXG9me7r7f9KiKl8H9gaWAKfXusyD1VqnPMzQcf035X3ouNr2X89d1Mqml5/UfULpk8kXzRwKTKx3OXIy58UDTqvnSjjD0/Ht4hNmNgzYC/g0sY3oJGI1yJeBPwBnuXuX7kMz+zjwJWBror/8LaIv/UrgZ+6+uMQ1ywNfAT4FTCVaap8GriUGxr1ZzYspNegsMwjvP8BqwIHEnuQbpcseBn4KzCq1eUteZWtU9a5h/4L4B7sLmF540t07zGy/9PyHgOfSt8vViW3zOoAD3P3Rmpd4kBo6bsWm62OW+pp80cw9gXOBletdlpy8NvmimYe9eMBpV9X6xma2LlGzbqeodp32U7gF+HB66lngX8AqwHrpZx8z+5C7P5C57nDgh+nhy8CDxGDeaelnTzP7qLu3Za7ZgBixPoWYgvsUsSbGu4HjgP3NbHt3f6yPL7mF6LffF3iTGKu0DvHFYmtiR7aZRe9DrcpWN/UO2GW5+9NmtjlwNLALsDExhes24Ax3v6Oe5eut7pYebZ/bvy38He3ttM2bXTFN27zG71Jqb++gtbXLl/+qtS5czMil+X/8W+ctZuTSRQDMn9/78g0QFwAr1LsQOVqZeE01CdhmNhQYD3wA+D+itniyuxdvqvRNIli/Aezg7vdl8tgCuIGorX4b2DM9P57OFsq93P2KzDXbAdcTlag9gSvS82OJvcanpDy/WNgn3MxWBX5GDIy70cw27WN35crAZ4na8nnu3pZ2g7yA2KnxSDP7XmGaW43LVjf9GrDdfUo356d3c/4N4Ij0MyDUe+nRtnmzefrwVet2/7y0ti7mxGNv71Meu7N1TqXpdM4jf849Txk07jCzSudPB44t8fxHiZr3d7LBGsDd7zOzHwMnEpWeAiPWuZgL/Kromt+a2anETJ3st86DiGbmfwC7Z2ve7v6qme0JPErU6GcAy8557LkfufvZmXssNLOvEl2iw4jBx4W9kWtdtrpo1FHiItL8DmZgrZPwGvGa+svDxNidws+9wL+J0eEAXwPOTjXvd7j7tkTwPZ/SCqMjs3NDnyH6uCcAs8xs06I8v+vue7r7tZmnd0vHK7IBMXPNAuDq9HDnci+yB24qcY/ZdO4xMb6OZauLhm0SF5Hm9uIBp101+aKZ16JBZ9UqNw97BFErPBc4DBgKfDGbJu1gOMHMtiamfq2TjpsTfdmQqaC5+2tmdjrR5bgfsJ+ZvUoM+P0t8OsS063ek44Hm9muZV5Doflug25fbfdeKvN8oTk7G79qXba6UMAWkX6TAlzTLafZSNJI7Z+a2WrACcDnzexUd38BwMyWIwaP7UPnSHKI5ux/EGtVbF8i32PM7H7iS8D/IwLa3ulnqZldARzm7oXV1wrjEQoD2SoZ3835anQ3CKQl83uty1YXCtgNoLulR1vG9++ypNVM2ar1tKveOHLmNMaOHQHEPOu3FpUfVzJ30QJ2+/Wy3Vh37vY1Jowa269lHDNmRL/mLwPaDUTAHkrUnF/IPP9houZ5Dp1N6U+kmvfBlAjYAO5+HXBdmg41jRhotgNRC92HCIS7pOTz0+Od3f3mnF9bXzVy2XKjgN0Aar30aLFGnLLV3SjwUiOwx44d8c6yn7MXzmObq8+ofJOiT/+YcSMYN0rLhkrDyi5H2gKQmsAL07l2LDN7ZnLxE2kq2HpAi7s/5O7/JfqMbyJGYM8ETgV2NrMVUi3biYFe7wZKBkUzW48InM/VeKOSRi5bbhSwpSHlMQpcZIDZMR07gPvT72tnzt9PETMbQyyoAsv+vf888APgYTPbpMQiJLcTARuiRg8RzLcEDjKzs4unRqXFW24ANiTW2Ni/yteVh0YuW240SlxEpIGZWYuZfYoYIAZwtbu/mH7PLgJyXNoYqXDdRsRCIoU+3Wwz3pVEH/F7gO+necyF61YETk4P/5pZGvo84BVi+tSNaaXKwjUrpTw3TPn+Xy9fbm81ctlyoxq2DBhzF85n0bAlgNb5lqZ0jpm9VfTccGIxkMJqcffTuZcC7v6AmV1JLEl6JDDDzJ4hliYt1L5vBz4GLGdmy7v7f939FTM7ELiUWJzkc2b2FBET1iWmib0BfC5zr7lmtgtRm/0o8IyZPUI01RuxJfJSYiGWmm4B2shly5MCtgwY0687i0XDlpY9f8duX2PiqPJjBSaMrN84AhE6pyZlLSRG2d8MXANc6u7FH/LPAr8j5ohPBTZN19wE/MTdbzGz54A1iTnIlwG4+2Vm9iIxSnxrYr3uRcAT6X5nFU/tcve/m9l7gMOJwWhTiWD4CnAn8D13/2cf3oNea+Sy5aWlo6PL+umDhpn9e+rUqRvdcsst3SfOSfuc1i4rna1895eqHnRWzdKilbTNe4Pnvr3s34V1zn614QadzZu3qEsfdnYU+NyF85l+3VnLnF80dOmyEz2KPLTXMe/sVS1VqfBuikitqYbdZAbK0qK9kR0FvmjYkoq1aRGRgUaDzkRERJqAatgyYKiPWkQGMgVsGTAmjhqjPmoRGbAUsAeAapYWraQZlh0VERnsFLAHgEZcWlRERPKlQWciIiJNQAFbRESkCShgi4iINAEFbBERkSaggC0iItIENEo8Rx3tHXS8uaBimva5lc+LiIiUooCdo443F3TZ2ENERCQPahIXERFpAqphN5juts9sm/dG2XMDSXtHe5fn5i6cz6JhSwCYs7C11kUSEakrBewGM5i3z8x6a1HXvv7p152lLTVFZNBSwO5nK950IEMmjK6YpmV85fMiMriY2ReA84GD3f1nPbjuS8C5wAHuPquH9xwGLEkP93X3S7tJfxBwAdDm7oolNaA3uZ8NmTCaIRO1rWNWe3sHra2LK6ZpbV1S8bzIQGVmWwBn9uK6rYDT8y+RNAoFbKm51tbFnHjs7fUuhkjDMbPpwLXAcj287n+Aa4Cx/VAsaRAK2E2gu+0zB8v2mNftcCirT1qh7PkJI9WSIc3JzEYBM4FjgKE9uG408O30o1k/A5wCdhPQ9plhwsjRTBo1rt7FEMmVmU0F/gCsAbQRQftgYK1urjPgd8BkYClwNHAYsHp/llfqRwFbRKS+JhPB+l7gMHe/38wOruK6NdK1f07XPWBmh/VjObtVNHCtOz9394P6szwDjQK2NIQjZ05j7NgR7zyeu3A+0687a5k0R42ZVutiSR89PmPoUGBivcuRkznrz2pr64d8XwR2dPdf9/C654FPuPtt/VCm3uoA7qlwfkXA0u/P9X9xBhYFbMldd6PA58/vem7s2BGMGzfynceLhi3pMue6ZUhLfoWUfvf4jKF7ElOMVq53WXLy2uMzhh62/qy2q/LM1N2fBJ7sxXWPA4/nWZa+cvc2YNtS58xsOeDu9PC3wCm1KtdAoYAtudMocEkuAMqPEmw+KxOvKdeA3aAuMbNL8sosNZVfBWwCPAp8OgV36QEFbBERKfY48Ho3aVYBplaZ33nAx4HZwE7u/lYfyjZoKWBLQ8iuEw5aK3yAOJgB1iROjMIeDL7bg5XOKjKzbwKfBxYDn3L3p/Mp4uCjgC0NQeuEDzzrz2q76vEZQ69Fg84GLTPbEzg1PfyCu/+xnuVpdgrYUhPZUeClRoAvGqpgPRClANdd06oMQGa2DfALoAU4vadrm0tXCthSE9lR4KVGgIvIwGFm6wI3AqOA64Fv1bdEA4OWshMRkdyY2UTg18Sc6weBfdy9o76lGhhUw5aGcMduX2PiqMprgWutcJHGZmYjiRr1+sCzwA7uPr+uhRpAFLClIUwcNUbrhIs0v68AH0q/vwFcYGZjgeEl0i519+m1KthAoIAtIiJ5WT7z+/u7SasR9z2kgC0i0mDcfUovr5vch3suJUZ0V5v+Z8DPip47hthtTPqBBp2JiIg0AQVsERGRJqCALSIi0gTUhy25a+9o7/Jcdq1wrRMuItJzCtiSu7cWLejynNYKFxHpGzWJi4iINAEFbBERkSaggC0iItIE1IctNXHdDoey+qQVyp7XOuEiIpUpYEtNTBg5WmuFi4j0gZrERUREmoBq2NJj7e0dtLYuLnu+tXVJDUsjIjI4KGBLj7W2LubEY2+vdzFERAYVNYmLiIg0AQVsERGRJqCALSIi0gTUhy25OHLmNMaOHQHERh/TrztrmfNHjZlWj2KJiAwYCtiSi7FjRzBu3EgAFg1b0mWjj5YhLfUolkhDM7MpwDNlTncAc4HngVuB77v76zUqWm7MbAZwEfCSu0/OPH8nMA042d2PqU/pKjOzWcD+wF3uPr3ac/1FAVtEpDE8DLyVeTwMmAC8B9gMONjMPuLu/6pH4aT+FLClx7TftUi/+LK731n8pJlNAi4GdgSuNrMN3b3rf8Lmsx8wBnij3gVpFgrY0mPa71qkdtx9tpntD7wErA9sB9xW31L1nbs/X+8yNBuNEhcRaXDuPptoModoIpdBSDVsEek3Rx1x81BgYr3LkZM5Z3x/p7Y63n94Or5dfMLMhgF7AZ8G3gtMApYCLwN/AM5y98dLXPdx4EvA1kR/+VvEF4MrgZ+5e5c1iM1seeArwKeAqUTF72ngWmJg3JvVvJhSg84yg/D+A6wGHAh8HtgoXfYw8FNglrt39FfZGpUCtoj0i6OOuHlP4Fxg5XqXJSevHXXEzYed8f2drqr1jc1sXaJm3U5Rc7iZjQZuAT6cnnoW+BewCrBe+tnHzD7k7g9krjsc+GF6+DLwILAiEUSnAXua2UfdvS1zzQbEiPUpQBvwFLAAeDdwHLC/mW3v7o/18SW3EP32+wJvAo8D6xBfLLYGDJhZ9D7Uqmx1o4AtudB+11LCBUD5D0XzWZl4TTUJ2GY2FBgPfAD4P6K2eLK7P1eU9JtEsH4D2MHd78vksQVwA1Fb/TawZ3p+PHB6SraXu1+RuWY74Hpgekp/RXp+LHATERBvAL7o7i+nc6sCPyMGxt1oZpu6e9fBLtVbGfgsUVs+z93bzGwU8f7vAxxpZt8rTHOrcdnqRn3YkovCftflfoa06KMm0o07zKyj8EM0ab8B3EgMNjsdOLbEdR8lat7fyQZrgPT4x+nhxplTBowi5nn/quia3wKnAlcD2Sbxg4hm5n8AuxcCYrrmVSK4P0fU6GdU/arL+5G7n12o4bv7QuCrxPz0YcCWdSxbXeivqIj0l4OB1+pdiBy9Rrym/vIwcE/m517g38CidP5rwNmp5v0Od9+WCL7nl8m3MM8y28z1DPGFYAIwy8w2Lcrzu+6+p7tfm3l6t3S8IttMnrlmARHkAXYu9yJ74KYS95gNFBaPGV/HstWFmsRFpF+c8f2drjrqiJuvRYPOqlVuHvYIolZ4LnAYMBT4YjaNuy8xswlmtjVRG18nHTcn+rIhU0Fz99fM7HTgaGI+9H5m9irwe+C3wK/dvXh+dGF0+sFmtmuZ17BqOm7Q7avt3ktlni80Z2fjV63LVhcK2DXW0d5O27zZZc+3zdMaAjJwpADXdMtpNpI0UvunZrYacALweTM71d1fADCz5YjBY/vQOZIcojn7H8ADwPYl8j3GzO4nvgT8PyKg7Z1+lprZFcBh7l5Yfa0wHqEwkK2S8d2cr0aXEepFsusd17psdaGAXWNt82bz9OGrdp9QRGRZNxABeyhRc34h8/yHiZrnOXQ2pT+Rat4HUyJgA7j7dcB1aTrUNGKg2Q5ELXQfIhDukpLPT493dvebc35tfdXIZcuNAraISHPILkfaApCawAvTuXZ09ztKXDe5+Ik0FWw9oMXdH3L3/xJ9xjcRI7BnEgPPdjazFVIt24mBXu8GSgZFM1uPCJzP1XijkkYuW2406Ey6aO9oZ/bCeWV/5pZYmlRE+t2O6dgB3J9+Xztz/n6KmNkYYkEVWLaC9nngIeBSMyu1ld7tmd8Lg9wKg8AOSgG/+F7DiNr+fcQ0tFrXf/dZAAAgAElEQVRq5LLlRjVs6WLuolY2vfyksudHLh3G7mxdwxKJDF4poO5GDBADuNrdX0y/ZxcBOc7MvuXuS9J1GxFTugp9utlR4lcCZxCDtb5vZke7+/x03YrAySndX919Tvr9PGKw21RiPvPnCuuBm9lKwE+ADYm+51oHxUYuW24UsBvAWqc8zNBxK5Y9P3TcpBqWRkTq5Bwze6voueHEYiCF1eLuBw4tnHT3B8zsSmJJ0iOBGWb2DLE0aaH2fTvwMWA5M1ve3f/r7q+Y2YHApcTiJJ8zs6eImLAuMU3sDeBzmXvNNbNdiNrsR4FnzOwRoqnegJHEVLG9ar0FaCOXLU+5BezU9HIU8Bnig/I28eH6gbvf2ov8plB+Y/eCh9x9s57m3WiGjluRYcuvVO9ivKOjvYORS8t/NEYuHV72nIj0WqlNPRYSo+xvBq4BLnX34m3xPgv8jpgjPhXYNF1zE/ATd7/FzJ4D1iTmIF8G4O6XmdmLxCjxrYn1uhcBT6T7nVU8tcvd/25m7wEOJwajTSWC4SvAncD33P2ffXgPeq2Ry5aXlo6OLuun91haFu73wFbAEmIBgEnEBwTgBHf/Tg/z3JVYHm8O8GiZZE+4+wG9KnTc499Tp07d6JZbbultFston9PKa9uet8xzK9/9JYZM7GyJWvrf17uMEl/n7FcbKmC/8MYczjn5zz265stHf4A1Vhwo020lKdW3KSJ1klcN+zwiWD8I7JKZH7gvcCFwgpnd4+6/60GehZV3rnT3QyumlLpbYWSXcR4iIpKjPo8ST7vI7EP0FexdCNYA7n4JcFp6eEIPsy4E7KbtbxhMtFa4iEj/yuOv7L7EsP+/uPsjJc4X1rf9oJmtWeJ8OYWA/XDFVCIiIoNAHk3i26Tj3aVOuvtLacDDWsRKOpd0l6GZjSPWwgXVsBvC547YgtUnll/Rb8yYETUsjYjI4JNHwJ6ajk9VSPMsEbDXrzLPTYgBLy8DK5nZ14ml+IYRG5lf7u739Kq00itjxgxn3LiR9S6GiMiglUfALswPrLTUW2G3i/KTjZdVaA6fADxC50o7EPMJv2RmFwKHFBYJEBERGcjy6MMuzFlaWCFNYS3LMRXSZBUC9ijgAmJ92JFELf0YYurYgcQONSIiIgNeHjXsNqoP/NVO+v5TyvMBd/9x5vnngZPN7FlihZ5DzOw8d/93lfmKiIg0pTwC9jyi6XpUhTSFSbqt1WTo7peRVuMpd97MjifWyN2V2EpORERkwMqjSbywdF2lBa8Lfdev5XC/ggfSce2KqURERAaAPAJ2YdnQKRXSFM49Xm2mZjbczIZWSFIouwadiYjIgJdHwP5rOm5T6qSZTaZzTfFuF6g2swlmNofYBm3XCkk3T8dSi7WIiIgMKHkE7KvScbqZWYnzh6TjXe7+bHeZuftc4NX0cEapNGa2B7EF3GLg2p4UVkREpBn1OWC7+xPAL4m50teaWWEhFcxsH+Cb6eFJxdea2bpmtoGZrVZ06tR03NnMTjWzkZlr9gAuSg/PcPeX+/oaREREGl1eu3UdDmycfh4zs38RI8fXSuePLrNT1+9TmovJ1Kbd/RIz2wT4OjCTWCjlCWAVYPWU7GfA8TmVX0REpKHlssWSu88m+rC/Qwws25AYNX4XsLu7n9KLPL9BrGp2A7HwyibAcGJj9Z3c/WB3b8+j/CIiIo0urxo27j6f2ELzhB5cM6Wb878DerKHtohI0zGz9YjWxI8BqwJzgHuB89z99grXTSJWf9wVmAzMBe4hugvv7WEZpgN3pIdrdzfmyMxmAfsT45Om9+Re0jvaxFhEpI7M7OPAQ8Ryy5OImS9tRBD+rZmdWea6VYhZOl8lugv/SawmuRtwt5kd2P+ll1pSwBYRqRMzWxG4nFgN8grgXe6+mbuvDuxNBO6vm9nuJS7/FTFb5nZgsru/H3gXUVMfCpxvZhvW4GVIjShgi4jUz0HEAN1ngRnu/lbhhLv/ktj8CDqnxwLvNF9PI5aG/myaDou7t7v76cReC8OBo/u5/FJDufVhS3No72hn7qLKS7rPXbSg4nkRyc0zRA37AXdfVOL8P9NxraLnZ6TjDe7+Bl2dD+wDfNLMRru7/lMPAArYg8ycBfPZ6rLTK6YZuXQ4O/G+GpVIZPBy918RTdvlvD8dnyh6vrCy5N1lrvsbsBQYm/L4U2/L2BNFA9e6c4C7z+q/0gw8CtiDzILWJez+yNb1LoYMEq9udOZQYGK9y5GTOas+8o22WtzIzMYDXwEOIALv6ZlzQ4B10sOnSl3v7kvM7CWiZr4+NQrYwFvEKPVy1gEKC2U93//FGVgUsEWkX7y60Zl7AucCK9e7LDl57dWNzjxs1Ue+cVX3SXsnDS77DjAVGAm8ABzq7n/MJJtA59/u1ytkN5sI2CtWSJMrd38A2LbUOTPbiM79JE509z/UqlwDhQK2iPSXC4AV6l2IHK1MvKZ+C9jAlsC7M48nADuZ2R/d/e303JjM+YUV8ir0W4+pkKacZ0pvDdE7aQrar4nPw5X0YL0O6aSALVVZYeToehdBZDA4BzgRWB7YDjiTGCH+fjPbxt2XElO9eqKjF+X4O1BqEFzWelTRemJmY4CbiNr+34D93b03ZRr0FLCFzx2xBatPHF8xzZgxI2pUGhlADmaANYkDh/XnDdz9xfTrfOBiM7sXeJAYOLYPMIuYylUwqkJ2hW/ZlaeFlLZnD1Y6q5RmCLE51BZE8/6u7l6pVUAqUMAWxowZzrhxI7tPKNIDqz7yjate3ejMa9Ggs15zdzeza4HPAtPpDNiLiD7uSRUuL/Rdv9aPRezOWcSKbfOBXdz91W7SSwUK2CLSb1KAqzQwalAzs4nA2sBzZeZTAzyXjqtCLI5iZk5siDSlTL7DiVXPIDZkqjkz+zIx0r0d2NvdH6xHOQYSrXQmIlI/9xH9xZXW/S4smvJS5rm/puM2lLYlUSFbCDzQlwL2hpntDPwgPZzp7jfUugwDkQK2iEj9/DYdD0q14mWY2RRiMw+IgVsFV6bjHqmWXuzQdPxVrVc5M7P3Eau3DQEucveSm5dIzylgi4jUz5nE9Kv1gF+mzUAAMLPNgd8Qg8f+CGRrqb8nFihZAbg+TZvCzIaY2VHExiFLyCy4UgtmtibxxWIsUfYv1PL+A536sAeY9vYOWlsXlz3f2rqkhqURkUrc/Wkz+zSxPOkewM6pf3oUsUIZxL7Yu2enQrl7h5ntB9wFfAh4zsweBlYn+ro7iKU/H63dqwFiVkBhJbMW4MY0rWtoibQPuPuXa1ayAUABe4BpbV3MiceW3e9eRBqMu99sZpsC3yDmXm9ITMW6m9h160J37/JNOwX7zYkduXYBNk7X3Qac4e7Vrumdp+Uzv2/XTdql/VmQgUgBW0Skztz9SXrRfJxGlh+RfvpahjuJWnG16WfQuWtY4bnpfS2HlKc+bBERkSaggC0iItIE1CQ+CBw5cxpjx8bSonMXzmf6dWctc/6oMdPqUSwREekBBexBYOzYEe8sPbpo2BIWDVt2rEfLkKq7rUREpE7UJC4iItIEFLBFRESagAK2iIhIE1DAFhERaQIK2CIiIk1Ao8QHmPaO9i7PzV04n0XDYmXDOQtba10kERHJgQL2APPWoq476U2/7qwuU7lERKS5qElcRESkCShgi4iINAEFbBERkSagPuwe6GjvoOPNrn3EBe1zy5+rp+t2OJTVJ61Q9vyEkWNqWBoREekNBewe6HhzAa9te169i9FjE0aOZtKocfUuhoiI9IGaxEVERJqAAraIiEgTUMAWERFpAurD7qMVbzqQIRNGlz3fMr78ORERkWopYPfRkAmjGTJRo6xFRKR/qUlcRESkCShgi4iINAEFbBERkSaggC0iItIEFLBFRESagAK2iIhIE1DAFhERaQIK2CIiIk1AAVtERKQJKGCLiIg0AQVsERGRJqC1xJtMe3sHra2Ly55vbV1Sw9KIiEitKGA3mdbWxZx47O31LoaIiNSYmsRFRESagAK2iIhIE1CTeI462ttpmze7Ypq2eW/UqDQiIjKQKGDnqG3ebJ4+fNWa3/fImdMYO3YEAHMXzmf6dWctc/6oMdNqXiYREcmXAnaTae9o7/Lc4qFLGDasBYCFw5ayaNjSZc63DGmpSdlERKT/KGA3mbcWLejy3PTrzuoSpEVEZGDRoDMREZEmoBp2P1vrlIcZOm7FimmGjptUo9KIiEizUsDuZ0PHrciw5VeqdzFERKTJKWAPANftcCirT1qh7PkJI8fUsDQiItIfFLAHgAkjRzNp1Lh6F0NERPqRBp2JiIg0AQVsERGRJqCALSIi0gQUsEVERJqAAraIiEgT0CjxBtPe0c7cRa1lz88tsTSpiIgMfArYDWbuolY2vfyksudHLh3G7mxdwxKJiEgjUJO4iIhIE1DAFhERaQIK2CIiIk1AfdgNpqO9g5FLl/1nuW6HQ5kwcjQAra1L+Pkj9y1zfoV0TkREBi4F7AazoHUJuz+y7KCySx95oOI1Q1rUUCIiMtDpL72IiEgTUMAWERFpAgrYIiIiTSC3PmwzGwMcBXwGWBt4G7gf+IG739rLPNcEjgO2B1YGXgd+D5zq7o/mUe5aa2/voLV1cdnzra1Lujz3uSO2YPWJ48teM2bMiFzKJiIijSuXgG1mY4lAuhWwBHgYmARsB2xnZie4+3d6mKcB96R83gIeAtYB9gX2NLNPuvtv8ih/LbW2LubEY2/v0TVjxgxn3LiR/VQiERFpBnk1iZ9HBOsHgXXd/b3uvhawH7AUOMHMPlptZmY2DLiZCNaXAKu5+xbAasC5wCjgCjOblFP5a6a9o73eRRARkSbU54BtZusC+wDtwN7u/kLhnLtfApyWHp7Qg2z3AaYCzwMHufuClN9i4HDgT8B44Ii+lr/W3tLmHSIi0gt51LD3BYYCf3H3R0qcPz8dP5j6pKsxIx0vSUH6He7eAfwkPdyrh2UVERFpSnn0YW+TjneXOunuL5nZc8BawDSiibssMxsCbFkpT6JvG2AdM1sjW6tvRjevfz+LhnUdbFZw1JhpNSyNiIg0ojwC9tR0fKpCmmeJgL1+FfmtDhTW2iyX5wtAG1GzXz89rosXXngG/hsDwtrnz2FBy/LLnH9pzlsMWTz0ncevzH27Sx6Lhi1h0bClZe/RMqQlp9KKiEizyiNgr5yOr1dIMzsdV+xBfmXzdPc2M3sLmFhlnv3mwp8+wYIRmbdxfFEDwg8f6zaP63Y4lNUnrVD2/ISRY3pbPBERGSDyCNiFaLKwQprCSKtqIk82TV55lrPG888/z4477lhV4o62dtra5izz3Jy/jKCjpW814AcfGcPwYUO7TyhSQ08++eSN7r5LvcshIiGPgN1G9YPXOqrMryeqybOc1sWLF/Pkk0/2vkl9fh/unrw9r+95iIjIwJZHwJ4HTCDmRpdT6JNurTK/glGUr2X3JM+S3H3V3l4rIiJSS3lM63ojHSstYlLoZ36tB/mVzTMtrFLo9K0mTxERkaaWR8AurOk9pUKawrnHu8vM3V8mliKtlOcaxAjxqvIUERFpdnkE7L+m4zalTprZZKCwYMqfq8zzb5XyBD6Qjs+lAC8iIjKg5RGwr0rH6WnDjmKHpONd7v5slXlemY4HmFmpragKec6qMj8REZGm1ueA7e5PAL8kmqivNbPCQiqY2T7AN9PDk4qvNbN1zWwDM1ut6NSlxKIp6wC/NLPlUvoRZnY2sC3RbH5OX8svIiLSDFo6OvoyKyqkXbPuADYmpmX9ixg5vlZKcrS7n1LiumdTmovdfUbRuS2A24nBZfOAx4gAPhFYDGzv7nf0ufAiIiJNIJftNd19NtHf/B1iENiGxAjvu4DdSwXrKvK8D9gU+DnwZvq9HbgG2ErBWkREBpNcatgiIiLSv3KpYYuIiEj/UsAWERFpAgrYIiIiTUABW0REpAkoYIuIiDSBPHbrampmNgY4CvgMsDbwNnA/8AN3v7WXea4JHAdsD6wMvA78HjjV3R+tdK00nrw/I2Y2BXimm2QPuftmPc1bRAauQT2ty8zGEoF0K2AJ8DAxf7yw9vkJ7v6dHuZpwD0pn7eAJ+hc8GUh8El3/00uL0D6XT99RnYFrgfm0Ll5TrEn3P2AXhVaRAakwR6wZwH7Aw8Cu7j7C+n5fYELiRaIj7n776rMbxjxB3gqcAnwBXdfkNZD/x5wGLEIzNS02Iw0uLw/I+na44hFhs5390NzL7SIDEiDtg/bzNYF9iFWT9u78IcYwN0vAU5LD0/oQbb7EMH6eeAgd1+Q8lsMHA78CRgPHNHX8kv/66fPCMSqfRBL+IqIVGXQBmxgX2LDkr+4+yMlzp+fjh9MfdLVmJGOl6Qg/Q537wB+kh7u1cOySn30x2cEOgP2w30pnIgMLoM5YBf22r671El3fwl4Lj2c1l1mZjYE2LJSnkTfNsA6ZrZGleWU+sn1MwJgZuOIMQ2gGraI9MBgHiVe2Ab0qQppniV2E1u/ivxWB0Z3k+cLxG5mQ1OeL5RJJ40h788IwCZAC/AysJKZfR3YnPi/+DhwubvfU+F6ERmkBnPAXjkdX6+QpjAwbMUe5Fc2T3dvM7O3iBHj1eQp9ZX3ZwQ6m8MnAI8QX94KPgZ8ycwuBA5x9yXVFlREBr7B3CQ+Jh0XVkizoChtNfnlmafUV96fEegM2KOAC4B3AyOJWvoxxNSxA4Ef9qikIjLgDeYadhvVf2GpZu5bWw/vP3jn0zWPvD8jEDMFhgAPuPuPM88/D5xsZs8ClwKHmNl57v7vKvMVkQFuMAfseUSz5KgKaQp90q1V5lcwivK1sp7kKfWV92cEd78MuKzSeTM7HlgP2BVQwBYRYHA3ib+RjpMqpCn0S77Wg/zK5pkWVlmhB3lKfeX9GanWA+m4do55ikiTG8wBu7Ak5JQKaQrnHu8uM3d/mViKtFKea9A5yKjbPKXucv2MFJjZcDMbWiFJ4f+lBp2JyDsGc8D+azpuU+qkmU2mc73oP1eZ598q5Ql8IB2fSwFeGluunxEzm2Bmc4DFRHN3OZunY6nFWkRkkBrMAfuqdJyeNuwodkg63uXuz1aZ55XpeEBaP7xcnrOqzE/qK9fPiLvPBV5ND2eUSmNmewDrEkH92p4UVkQGtkEbsN39CeCXRBP1tWZWWCQDM9sH+GZ6eFLxtWa2rpltYGarFZ26lFhkYx3gl2a2XEo/wszOBrYlms3Pyfv1SP766TNyajrubGanmtnIzDV7ABelh2eoFUZEsgb7bl2TgDuAjYkpPP8iRgWvlZIc7e6nlLju2ZTmYnefUXRuC+B2YnDZPOAxOrfXXAxs7+535P9qpD/002fkTODr6eHbxBasqxCr5QH8jNjprT3HlyIiTW7Q1rAB0haX2xBbHT4ObEiMCL4L2L3UH+Iq8ryPWBzj58RWmpsSuz1dA2ylYN1c+ukz8g1iVbMbiIVXNgGGAzcDO7n7wQrWIlJsUNewRUREmsWgrmGLiIg0CwVsERGRJqCALSIi0gQUsEVERJqAAraIiEgTUMAWERFpAgrYIiIiTUABW0REpAkoYIuIiDQBBWwREZEmoIAtIiLSBBSwRUREmsCwehegnsxsBp37D/fEXe4+3cymAM+k59Zz9yfzKlslZjYMWMfdH6/F/SR/ZvZx4FZgf3e/pMprTgCOB+5x921LPF/KYuAN4J/A5cAl7r7Mjj9mNpzYNvR1YJp2ChNpTIM6YAP/Ae4p8fyawBrAIuDvJc7/qz8LVYmZbQecDVwNHFOvckjvmdkEYBZwH3BpjlmX+ryOAlYDtk8//2tmu7r70kICd19iZkcAvwa+CZyaY5lEJCeDOmC7+61ELWcZmRrLq9maTIP4NmD1LoT0yWnAqsCni2u7fVT282pmHwBuAnYAZgInZc+7+61m9jvgWDP7lbs/nWO5RCQH6sMWqSEzezdwEPAHd/9Tre7r7n8GjksPv1Qm2YnAaFTDFmlICtgitXU88f/uJ3W4913puKqZrVh8Mn2BeATYM32xEJEGMqibxHPWYmb7A58HNgE6AAd+DvykVNOnmY0EDgE+A2wEjACeB24BznT3VzJpZ7DsALmjzexo4GJ3n5FJtxnwReBDwOpEH+Zc4H7gQne/uqcvzMxWAY4EdgKmAG3AY8AVwHnuvrAo/QlEYDod+D/gWGAX4F3Am8AdwMnuXnIsgJltCnwN+DCwCjCP6Jv9qbtfUyL9ncA0orn3/cBhwHLA08Ae7v5YSvd+4Chga2Al4DngklRGB9YC1nb3Z83scuLf5SZ336VMOfcm+qAfc/cNy7x92fSrA7sBbwPXl0kzBNgfOJj4TECMszihu/yrMDwdO4j3tJRfEE32hwGH5nBPEcmJatj5+RkxkGhD4HFgCRE8fkwE7WWY2WrAvcAPgK2AOUTtZk3gCOBhM/tg5pLCALn/pscvpMePZ/I8lAjMBxOB7kngKWAF4BPAVWZ2ck9eVCrDv4FvAFOJIPg88D4i0N1rZquWuXwt4EHgy+nxo8CKwP+m695b4n5fSq9hP2BCuvc8YDvgajO7zMyGlrnf0USz7tvE+7M88ETKdwbxfu8JjAMeTmU5CfgD8cUm68J03L5UbTTZPx2rnWmwB/El+Xfuvrj4pJmNAK5J996GGN39NPAx4t/6o1Xep5xPpuMfir9kZdyWjp9OXx5EpEHoP2R+tiVqoau4+/uIQUU/SucOMLN3amBm1kKM8t4MuBvY0N3Xzlx3ITARuL4QDN391jSg6IGUzS/cfVt3PyXluR7wQ+Lf9JhUjvemmt+7gCvTdd9Io5S7lWqENwCTgAuAld39Pe7+bmA94K/Appm8i32GCLZbpte3GVFrfBEYQ2efauF+nwDOIWrwXwHGp9ewFhGsXgM+S/na5geBb7r7VHc34H3u3mZmG6XyDyX6Z1d19y2I9/poIjiuUpTX74kvJsPT6yj13vxPKmtV07LoDLh3lzn/DSKovgV8LL2O9xKtGn9Or69HzGykma1tZjOJAYutxOe0nH8SX3gmAl2+UIlI/Shg5+fn7n6Wuy+BmCoDfJ3OGvGHMml3AT4AvAxs7+5eOOHubxGDkv5K1ACPqPL+2wFLgfvd/eRCOVKec1JZIAJQtaPMv04E6xvd/fPu/mYmz6eAXdPr+1AKtqV81t3/nrnOge+nh8UB6BSgBZjp7me7e1vmut8DM9LDI81sUol7PQecmbnm9fTr8UTN9mp3/3ahduvuS9MXnvOLM0pzkWelh/uWuNe+xP+f27JdF+Wk2uq09PDhEueHE831AF9x999lyvIy0ZQ+u5vbrGVmHdkfYCFRSz8VWABMd/eHymWQum4K5ftId69LRGpHATs/XfpW3X0BqUmW6DMt2C0dr3f3+SWu66Bzfu7O1dzc3c9z9zEs+8UgqzXz+5hq8syUs+RcYXf/D3B7eliqnC+7+z9KPP9oOo4vPJEWodmsm/vdSjQTjyZqt8X+XGJRkBFE3zZE90QpPyjz/EVEf++WZlb8JWe/TJpqTCL61SG6Kop9iGjCX0iMDViGu88FftXNPRYRTefZn/uBZ9P55YhWm526yafwBXKdbtKJSA1p0Fl+XirzfGFwz+jMc+9Jx53TAKtSCs3W65tZSw/m6y42sy3TPdZNPxsDG2TSdPtFzczGEX3QAMeZ2VfKJJ2SjhuUOFfuPVmQjtnP33syv1/XNT6+o9DXXOp+pWq6U4g+a4CSNUt3f9zM3qYzoBaef9bM7iBqmvuSFqoxsy2IsQqzibnN1Vg58/ubJc4XXvCT7r6oTB4PdnOPSvOwVye6THYn3t/p7l5q0aBs+VYuc15E6kABOz/lBvGUskI6rpF+KhlKBJL/dpOONEr9VGJlq6xniIFvB/eijLBsMC1nfInnugysqvJ+1fTVlrrfghLPZQeMlRsZDfH+Llfi+QuJgL2PmR2bvjgVBptdVmrwWBnZcQOtFc5XKuPcKu/Vhbu/ZGafIVo3phLdBNuVSV5o9alqrIOI1IYCdn0U/iB+2d3PzSPDFKxnpYe3AdcRfZGPuvvc1Efak4Cdbarf2N279LvmrHC/2e5eblR2X/KFaHJ+vUy6UsEa4FpiENhawAfN7F46B6H1ZB367Be68cCrRecL/dPLV8hjdIVz3XL3pWZ2CzGg7/0VkhYCdakvQCJSJwrY9eHE6Oqyi1OY2RrEPOrn06Cj7nwrHX/h7vuXOD+5RwV0f9PM/kOMnn43JQZKpXJuTLQCPJf6WXur0G86ycxWdffigFa437ZEcHs2jRGoJt/FxBz3TYjR38V5TqFMoHT3BWlO9iHAp1I+k4AH3b27Juqs7OtZka4Bu/D61zOzsaXGNlDh89IDhY09WiqkKXxh+k8O9xORnGjQWX0U+j0/Y2bl+gkvBP5C7LCUVe4P7trpeH+Z/A7K/F7tF7Wb0/GwUnNyzWwFYhGUB4CvVplnSe7+KJ2Dsb5cKk2aE15YjWvrKvNdSOd68Z8rk+wL3WRTmEe/GzEyHnq+y9tLdDZ3l/ry9Cdi2tpwlv23AsDMxhBT2notzV/fPj28r0LSQvke68v9RCRfCtj18Stix6/xwG+yy0Ca2XJm9iNizm4HXdd1LvzRX6vo+cIf1y+kAUaF/JZPK4/NzKStdpT4ael+2wKXZhcQMbO1iBXZJhFNxudVmWclx6bjTDM7Ko3wLtxvW2LuOsC97n5HD/L9LjFfei8zOzZ1D2BmLWZ2CJ1T3kpK09L+SQxgO5CosV/Wg/sXRv7/JT38QInzbXS+/tNSfzOpnJOIue7djXcoy8yWJ0bJF9YDKDkyPq2+9770sNx8cRGpAzWJ10HazvCTRM1vM2JVMycGI60PjE1Jj3D324ouf4CYQrW3mW0C/Mndv0QsAHIDsTDJ0yk/iAVORhFzcTuIUeNVNY+7+5Nm9mniC8ZewB5m9m+iWXh94vMzH9jB3V/r4dtQ6n5XpAVgvkMsa3sHH5wAAALeSURBVPptM3ucmBI3pZCMzlputfneb2aHA+cSK6F91cyeJL70rELMed8qJV9aOhcuIuaPjwOucffu5kSXciuxalnJkdzu/tPUxXAYcLmZnU7Uut8DjCSWM/1kqWuTVc2sOMi2EF/QNkx5dADfdfdfl8lji5RuNvC3al6UiNSGath1krYvfC+xutVfiZHdGxOjla8Gprn7D0tcejqxDOpsImhukvK7mfhjez3RP7ohsczpv4j+7U3prBVWNbc75Xsr0Xf6faLJ2ohRxs8SK7ltnHaCyoW7f5dYeewy4r3YlAjYDxA10Pf35suBu/+IWLjkZqJbYTNi1PU3iaVSC0qN4IaYG15YyKWnzeEFlxNfCLZJ3Qmlyvlloun9D8SXgw2J5uuPU2Kuf5GRxAj77M/WxHzqJ4CfAlu5+/EV8igsgHNFdvEdEam/lo6OPLfjFWk+qUviYWLhkdFlNmrZmGgWfwVYI7sKWw/vdRGxYtth7p5HN0JuzGwYsVrcyoC59sQWaSiqYcuAZ2a3mdnfzWz7MkkKK6E9WGGBmsKUuIt6G6yTk4maek+m2NXKTsS685cqWIs0HgVsGQweIQZSfc/M1i08mQadfZJYRASKBs6Z2eZmtpaZfZHYanIRnRu69Iq7P0nMl9/UzD7Wl7z6wdeJ13hSvQsiIl2pSVwGPDNbidjtairRf/0k0T++Jp3Lb57t7l8pus6JcQIFRxd2R+tjecYTYwtmA+9NG43UlZntToyd+Lq7f6/e5RGRrlTDlgEv7dq1ObHC19+IZVA3JmqT1wAfLw7WyZ9TmheBb+URrFN53iSmh21C5zKndZOmuZ0G/JHOndREpMGohi0iItIEVMMWERFpAgrYIiIiTUABW0REpAkoYIuIiDQBBWwREZEmoIAtIiLSBBSwRUREmoACtoiISBNQwBYREWkCCtgiIiJNQAFbRESkCShgi4iINAEFbBERkSaggC0iItIE/j+3oWXD7VYJTQAAAABJRU5ErkJggg==\n",
+ "text/plain": [
+ "