diff --git a/.github/workflows/basic_test.yml b/.github/workflows/basic_test.yml index 7827cf9..fce0977 100644 --- a/.github/workflows/basic_test.yml +++ b/.github/workflows/basic_test.yml @@ -54,7 +54,7 @@ jobs: run: | python -m pip install pytest numpy python -m pip install parameterized - python -m pip install torch + python -m pip install torch torchvision python --version python -m pytest ./tests/test_synthetic.py -s shell: bash diff --git a/.latent-data/NATS-Bench b/.latent-data/NATS-Bench index 33bfb2e..f955e2b 160000 --- a/.latent-data/NATS-Bench +++ b/.latent-data/NATS-Bench @@ -1 +1 @@ -Subproject commit 33bfb2eb1388f0273d4cc492091b1f983340879b +Subproject commit f955e2ba13ae92ce5af6d28bb47d58eb6d5be249 diff --git a/lib/datasets/__init__.py b/lib/datasets/__init__.py index 8893bf1..07106cd 100644 --- a/lib/datasets/__init__.py +++ b/lib/datasets/__init__.py @@ -4,5 +4,5 @@ from .get_dataset_with_transform import get_datasets, get_nas_search_loaders from .SearchDatasetWrap import SearchDataset -from .synthetic_adaptive_environment import QuadraticFunction +from .synthetic_adaptive_environment import QuadraticFunc, CubicFunc, QuarticFunc from .synthetic_adaptive_environment import SynAdaptiveEnv diff --git a/lib/datasets/synthetic_adaptive_environment.py b/lib/datasets/synthetic_adaptive_environment.py index 103c1f6..01dbfe0 100644 --- a/lib/datasets/synthetic_adaptive_environment.py +++ b/lib/datasets/synthetic_adaptive_environment.py @@ -2,38 +2,43 @@ # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2021.03 # ##################################################### import math +import abc import numpy as np from typing import Optional import torch import torch.utils.data as data -class QuadraticFunction: - """The quadratic function that outputs f(x) = a * x^2 + b * x + c.""" +class FitFunc(abc.ABC): + """The fit function that outputs f(x) = a * x^2 + b * x + c.""" - def __init__(self, list_of_points=None): - self._params = dict(a=None, b=None, c=None) + def __init__(self, freedom: int, list_of_points=None): + self._params = dict() + for i in range(freedom): + self._params[i] = None + self._freedom = freedom if list_of_points is not None: self.fit(list_of_points) - def set(self, a, b, c): - self._params["a"] = a - self._params["b"] = b - self._params["c"] = c + def set(self, _params): + self._params = copy.deepcopy(_params) def check_valid(self): for key, value in self._params.items(): if value is None: raise ValueError("The {:} is None".format(key)) + @abc.abstractmethod def __getitem__(self, x): - self.check_valid() - return self._params["a"] * x * x + self._params["b"] * x + self._params["c"] + raise NotImplementedError + + @abc.abstractmethod + def _getitem(self, x): + raise NotImplementedError def fit( self, list_of_points, - transf=lambda x: x, max_iter=900, lr_max=1.0, verbose=False, @@ -44,16 +49,24 @@ class QuadraticFunction: data.shape ) x, y = data[:, 0], data[:, 1] - weights = torch.nn.Parameter(torch.Tensor(3)) + weights = torch.nn.Parameter(torch.Tensor(self._freedom)) torch.nn.init.normal_(weights, mean=0.0, std=1.0) optimizer = torch.optim.Adam([weights], lr=lr_max, amsgrad=True) - lr_scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[int(max_iter*0.25), int(max_iter*0.5), int(max_iter*0.75)], gamma=0.1) + lr_scheduler = torch.optim.lr_scheduler.MultiStepLR( + optimizer, + milestones=[ + int(max_iter * 0.25), + int(max_iter * 0.5), + int(max_iter * 0.75), + ], + gamma=0.1, + ) if verbose: print("The optimizer: {:}".format(optimizer)) best_loss = None for _iter in range(max_iter): - y_hat = transf(weights[0] * x * x + weights[1] * x + weights[2]) + y_hat = self._getitem(x, weights) loss = torch.mean(torch.abs(y - y_hat)) optimizer.zero_grad() loss.backward() @@ -61,23 +74,105 @@ class QuadraticFunction: lr_scheduler.step() if verbose: print( - "In QuadraticFunction's fit, loss at the {:02d}/{:02d}-th iter is {:}".format( + "In the fit, loss at the {:02d}/{:02d}-th iter is {:}".format( _iter, max_iter, loss.item() ) ) # Update the params if best_loss is None or best_loss > loss.item(): best_loss = loss.item() - self._params["a"] = weights[0].item() - self._params["b"] = weights[1].item() - self._params["c"] = weights[2].item() + for i in range(self._freedom): + self._params[i] = weights[i].item() + + def __repr__(self): + return "{name}(freedom={freedom})".format( + name=self.__class__.__name__, freedom=freedom + ) + + +class QuadraticFunc(FitFunc): + """The quadratic function that outputs f(x) = a * x^2 + b * x + c.""" + + def __init__(self, list_of_points=None): + super(QuadraticFunc, self).__init__(3, list_of_points) + + def __getitem__(self, x): + self.check_valid() + return self._params[0] * x * x + self._params[1] * x + self._params[2] + + def _getitem(self, x, weights): + return weights[0] * x * x + weights[1] * x + weights[2] def __repr__(self): return "{name}(y = {a} * x^2 + {b} * x + {c})".format( name=self.__class__.__name__, - a=self._params["a"], - b=self._params["b"], - c=self._params["c"], + a=self._params[0], + b=self._params[1], + c=self._params[2], + ) + + +class CubicFunc(FitFunc): + """The cubic function that outputs f(x) = a * x^3 + b * x^2 + c * x + d.""" + + def __init__(self, list_of_points=None): + super(CubicFunc, self).__init__(4, list_of_points) + + def __getitem__(self, x): + self.check_valid() + return ( + self._params[0] * x ** 3 + + self._params[1] * x ** 2 + + self._params[2] * x + + self._params[3] + ) + + def _getitem(self, x, weights): + return weights[0] * x ** 3 + weights[1] * x ** 2 + weights[2] * x + weights[3] + + def __repr__(self): + return "{name}(y = {a} * x^3 + {b} * x^2 + {c} * x + {d})".format( + name=self.__class__.__name__, + a=self._params[0], + b=self._params[1], + c=self._params[2], + d=self._params[3], + ) + + +class QuarticFunc(FitFunc): + """The quartic function that outputs f(x) = a * x^4 + b * x^3 + c * x^2 + d * x + e.""" + + def __init__(self, list_of_points=None): + super(QuarticFunc, self).__init__(5, list_of_points) + + def __getitem__(self, x): + self.check_valid() + return ( + self._params[0] * x ** 4 + + self._params[1] * x ** 3 + + self._params[2] * x ** 2 + + self._params[3] * x + + self._params[4] + ) + + def _getitem(self, x, weights): + return ( + weights[0] * x ** 4 + + weights[1] * x ** 3 + + weights[2] * x ** 2 + + weights[3] * x + + weights[4] + ) + + def __repr__(self): + return "{name}(y = {a} * x^4 + {b} * x^3 + {c} * x^2 + {d} * x + {e})".format( + name=self.__class__.__name__, + a=self._params[0], + b=self._params[1], + c=self._params[2], + d=self._params[3], + e=self._params[3], ) @@ -95,28 +190,29 @@ class SynAdaptiveEnv(data.Dataset): def __init__( self, num: int = 100, - num_sin_phase: int = 4, + num_sin_phase: int = 7, min_amplitude: float = 1, max_amplitude: float = 4, phase_shift: float = 0, mode: Optional[str] = None, ): - self._amplitude_scale = QuadraticFunction( - [(0, min_amplitude), (0.5, max_amplitude), (0, min_amplitude)] + self._amplitude_scale = QuadraticFunc( + [(0, min_amplitude), (0.5, max_amplitude), (1, min_amplitude)] ) self._num_sin_phase = num_sin_phase self._interval = 1.0 / (float(num) - 1) self._total_num = num - self._period_phase_shift = QuadraticFunction() - fitting_data = [] - temp_max_scalar = 2 ** num_sin_phase + temp_max_scalar = 2 ** (num_sin_phase - 1) for i in range(num_sin_phase): value = (2 ** i) / temp_max_scalar - fitting_data.append((value, math.sin(value))) - self._period_phase_shift.fit(fitting_data, transf=lambda x: torch.sin(x)) + next_value = (2 ** (i + 1)) / temp_max_scalar + for _phase in (0, 0.25, 0.5, 0.75): + inter_value = value + (next_value - value) * _phase + fitting_data.append((inter_value, math.pi * (2 * i + _phase))) + self._period_phase_shift = QuarticFunc(fitting_data) # Training Set 60% num_of_train = int(self._total_num * 0.6) @@ -135,11 +231,6 @@ class SynAdaptiveEnv(data.Dataset): self._indexes = all_indexes[num_of_train + num_of_valid :] else: raise ValueError("Unkonwn mode of {:}".format(mode)) - # transformation function - self._transform = None - - def set_transform(self, fn): - self._transform = fn def __iter__(self): self._iter_num = 0 @@ -164,6 +255,14 @@ class SynAdaptiveEnv(data.Dataset): return len(self._indexes) def __repr__(self): - return "{name}({cur_num:}/{total} elements)".format( - name=self.__class__.__name__, cur_num=self._total_num, total=len(self) + return ( + "{name}({cur_num:}/{total} elements,\n" + "amplitude={amplitude},\n" + "period_phase_shift={period_phase_shift})".format( + name=self.__class__.__name__, + cur_num=self._total_num, + total=len(self), + amplitude=self._amplitude_scale, + period_phase_shift=self._period_phase_shift, + ) ) diff --git a/notebooks/TOT/synthetic-adaptive-env.ipynb b/notebooks/TOT/synthetic-adaptive-env.ipynb new file mode 100644 index 0000000..b1b140d --- /dev/null +++ b/notebooks/TOT/synthetic-adaptive-env.ipynb @@ -0,0 +1,121 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "filled-multiple", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The root path: /Users/xuanyidong/Desktop/AutoDL-Projects\n", + "The library path: /Users/xuanyidong/Desktop/AutoDL-Projects/lib\n" + ] + } + ], + "source": [ + "import os, sys\n", + "import torch\n", + "from pathlib import Path\n", + "import numpy as np\n", + "import matplotlib\n", + "from matplotlib import cm\n", + "# matplotlib.use(\"agg\")\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.ticker as ticker\n", + "\n", + "\n", + "__file__ = os.path.dirname(os.path.realpath(\"__file__\"))\n", + "root_dir = (Path(__file__).parent / \"..\").resolve()\n", + "lib_dir = (root_dir / \"lib\").resolve()\n", + "print(\"The root path: {:}\".format(root_dir))\n", + "print(\"The library path: {:}\".format(lib_dir))\n", + "assert lib_dir.exists(), \"{:} does not exist\".format(lib_dir)\n", + "if str(lib_dir) not in sys.path:\n", + " sys.path.insert(0, str(lib_dir))\n", + "\n", + "from datasets import SynAdaptiveEnv\n", + "from xlayers.super_core import SuperSequential, SuperMLPv1" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "consistent-transition", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SynAdaptiveEnv(100/100 elements,\n", + "amplitude=QuadraticFunc(y = -12.000007629394531 * x^2 + 11.999908447265625 * x + 0.9999204277992249),\n", + "period_phase_shift=QuarticFunc(y = 6.985218524932861 * x^4 + -13.632467269897461 * x^3 + -17.948883056640625 * x^2 + 53.29509735107422 * x + 53.29509735107422))\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABIAAAAHSCAYAAACU1rABAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAACZrUlEQVR4nOzdeXhbZ502/vvIki3LlnfLkiUvku3YsWPHcVJna0LTjW60pVCgzAzr0HZoZoAOAwydeWeY38vAAMPbgS6UsgydwkApS6ELXdKFNPvuOF4SeZNsS/K+xLZkyTq/P4JC2mazLek5R7o/15Vr6NVG527HSaxbz/P9SrIsg4iIiIiIiIiIEpdGdAAiIiIiIiIiIootFkBERERERERERAmOBRARERERERERUYJjAURERERERERElOBYABERERERERERJTgWQERERERERERECU4r4qEFBQVyeXm5iEcTERERERERESWkQ4cOjciyXHi+vyekACovL8fBgwdFPJqIiIiIiIiIKCFJktR3ob/HK2BERERERERERAmOBRARERERERERUYJjAURERERERERElOBYABERERERERERJTgWQERERERERERECY4FEBERERERERFRgmMBRERERERERESU4KJWAEmSlCJJ0hFJkp6N1msSEREREREREdHyRfME0GcAtEfx9YiIiIiIiIiIKAqiUgBJkmQDcDOAH0Tj9YiIiIiIiIiIKHqidQLoQQBfABC+0D8gSdLdkiQdlCTp4PDwcJQeS0REREREREREl7LsAkiSpFsADMmyfOhi/5wsy9+XZXmdLMvrCgsLl/tYIiIiIiIiIiK6TNE4AbQZwK2SJPUC+DmAqyVJejIKr0tERERERERERFGw7AJIluV/lGXZJstyOYAPAXhVluW/XHYyIiIiIiIiIiKKimhuASMiIiIiIiIiIgXSRvPFZFl+HcDr0XxNIiIiIiIiIiJaHp4AIiIiIqKEIMuy6AhERESKFdUTQERERERE8bawsIDnn38ef/jDH2C1WtHU1ISmpiaYTCbR0YiIiBSDBRAREVGcyLIMp9OJ0dFRrF+/HpIkiY5EpHo+nw8//OEP0dfXh9WrV2NychK/+c1v8Jvf/AY2m+1sGWSxWERHJSIiEooFEBERUQzJsozu7m4cPHgQhw8fxsTEBAAgPT0dq1evFhuOSMVkWcbr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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "def visualize_q_func():\n", + " # save_dir = (save_path / '..').resolve()\n", + " # save_dir.mkdir(parents=True, exist_ok=True)\n", + " \n", + " dpi, width, height = 10, 200, 80\n", + " figsize = width / float(dpi), height / float(dpi)\n", + " LabelSize, LegendFontsize, font_gap = 40, 40, 5\n", + " \n", + " fig = plt.figure(figsize=figsize)\n", + " \n", + " dataset = SynAdaptiveEnv()\n", + " print(dataset)\n", + " xaxis, yaxis = [], []\n", + " for idx, position, value in dataset:\n", + " xaxis.append(position)\n", + " # yaxis.append(dataset._amplitude_scale[position])\n", + " yaxis.append(value)\n", + "\n", + " cur_ax = fig.add_subplot(1, 1, 1)\n", + " cur_ax.plot(xaxis, yaxis, color=\"k\", linestyle=\"-\", alpha=0.6, label=None)\n", + "\n", + " # fig.savefig(save_path, dpi=dpi, bbox_inches=\"tight\", format=\"pdf\")\n", + " # plt.close(\"all\")\n", + " # plt.show()\n", + "visualize_q_func()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/TOT/synthetic-env.ipynb b/notebooks/TOT/synthetic-env.ipynb new file mode 100644 index 0000000..30bf348 --- /dev/null +++ b/notebooks/TOT/synthetic-env.ipynb @@ -0,0 +1,263 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "filled-multiple", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The root path: /Users/xuanyidong/Desktop/AutoDL-Projects\n", + "The library path: /Users/xuanyidong/Desktop/AutoDL-Projects/lib\n" + ] + } + ], + "source": [ + "import os, sys\n", + "import torch\n", + "from pathlib import Path\n", + "import numpy as np\n", + "import matplotlib\n", + "from matplotlib import cm\n", + "# matplotlib.use(\"agg\")\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.ticker as ticker\n", + "\n", + "\n", + "__file__ = os.path.dirname(os.path.realpath(\"__file__\"))\n", + "root_dir = (Path(__file__).parent / \"..\").resolve()\n", + "lib_dir = (root_dir / \"lib\").resolve()\n", + "print(\"The root path: {:}\".format(root_dir))\n", + "print(\"The library path: {:}\".format(lib_dir))\n", + "assert lib_dir.exists(), \"{:} does not exist\".format(lib_dir)\n", + "if str(lib_dir) not in sys.path:\n", + " sys.path.insert(0, str(lib_dir))\n", + "\n", + "from datasets import SynAdaptiveEnv\n", + "from xlayers.super_core import SuperSequential, SuperMLPv1" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "detected-second", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SynAdaptiveEnv(100/100 elements\n", + "amplitude=QuadraticFunction(y = 4.8680419921875 * x^2 + 3.565875291824341 * x + 0.9999021291732788),\n", + ")period_phase_shift=QuadraticFunction(y = 0.00021915265824645758 * x^2 + 0.9999573826789856 * x + -1.2333193808444776e-05)\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAACNMAAAidCAYAAACneeLnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOzdyXPW9d7/+fcXwjwcOGAUjgg3OHNARXFEBgHBkIQkgJ67qje9+e26q3vXu98/0JteddVd3dWrrvunDCEhQJhlFD0qTojKwQMHBZkkzEOGby9+OafP4BAgyecaHo8qFobL1GuRXCy+z3pfWZ7nAQAAAAAAAAAARAxIPQAAAAAAAAAAAAqFmAYAAAAAAAAAALqJaQAAAAAAAAAAoJuYBgAAAAAAAAAAuolpAAAAAAAAAACgW0VffNPx48fnU6ZM6YtvDQAAAAAAAAAA9+yjjz46n+f5ff/89T6JaaZMmRIffvhhX3xrAAAAAAAAAAC4Z1mWnfipr/uYJwAAAAAAAAAA6CamAQAAAAAAAACAbmIaAAAAAAAAAADoJqYBAAAAAAAAAIBuYhoAAAAAAAAAAOgmpgEAAAAAAAAAgG5iGgAAAAAAAAAA6CamAQAAAAAAAACAbmIaAAAAAAAAAADoJqYBAAAAAAAAAIBuYhoAAAAAAAAAAOgmpgEAAAAAAAAAgG5iGgAAAAAAAAAA6CamAQAAAAAAAACAbmIaAAAAAAAAAADoJqYBAAAAAAAAAIBuYhoAAAAAAAAAAOgmpgEAAAAAAAAAgG5iGgAAAAAAAAAA6CamAQAAAAAAAACAbmIaAAAAAAAAAADoJqYBAAAAAAAAAIBuYhoAAAAAAAAAAOgmpgEAAAAAAAAAgG5iGgAAAAAAAAAA6CamAQAAAAAAAACAbmIaAAAAAAAAAADoJqYBAAAAAAAAAIBuYhoAAAAAAAAAAOgmpgEAAAAAAAAAgG5iGgAAAAAAAAAA6CamAQAAAAAAAACAbmIaAAAAAAAAAADoJqYBAAAAAAAAAIBuYhoAAAAAAAAAAOgmpgEAAAAAAAAAgG5iGgAAAAAAAAAA6CamAQAAAAAAAACAbmIaAAAAAAAAAADoJqYBAAAAAAAAAIBuYhoAAAAAAAAAAOgmpgEAAAAAAAAAgG5iGgAAAAAAAAAA6CamAQAAAAAAAACAbmIaAAAAAAAAAADoJqYBAAAAAAAAAIBuYhoAAAAAAAAAAOgmpgEAAAAAAAAAgG5iGgAAAAAAAAAA6CamAQAAAAAAAACAbmIaAAAAAAAAAADoJqYBAAAAAAAAAIBuYhoAAAAAAAAAAOgmpgEAAAAAAAAAgG5iGgAAAAAAAAAA6CamAQAAAAAAAACAbmIaAAAAAAAAAADoJqYBAAAAAAAAAIBuYhoAAAAAAAAAAOgmpgEAAAAAAAAAgG5iGgAAAAAAAAAA6CamAQAAAAAAAACAbmIaAAAAAAAAAADoJqYBAAAAAAAAAIBuYhoAAAAAAAAAAOgmpgEAAAAAAAAAgG5iGgAAAAAAAAAA6CamAQAAAAAAAACAbmIaAAAAAAAAAADoJqYBAAAAAAAAAIBuYhoAAAAAAAAAAOgmpgEAAAAAAAAAgG5iGgAAAAAAAAAA6CamAQAAAAAAAACAbmIaAAAAAAAAAADoJqYBAAAAAAAAAIBuYhoAAAAAAAAAAOgmpgEAAAAAAAAAgG5iGgAAAAAAAAAA6NajmCbLsv81y7LDWZZ9kWXZf2ZZNrSvhwEAAAAAAAAAQH/71Zgmy7LfRcT/HBHP5Xn++4gYGBF/6OthAAAAAAAAAADQ33r6MU8VETEsy7KKiBgeEaf6bhIAAAAAAAAAAKTxqzFNnuffR8T/HhF/iYjTEXEpz/Ot//y6LMv+S5ZlH2ZZ9uG5c+d6fykAAAAAAAAAAPSxnnzM09iIWB4R/xYREyNiRJZl/8M/vy7P8//I8/y5PM+fu++++3p/KQAAAAAAAAAA9LGefMzTooj4c57n5/I8b4+IdRHxct/OAgAAAAAAAACA/teTmOYvEfFilmXDsyzLImJhRBzp21kAAAAAAAAAAND/fjWmyfP8/YhYExEfR8Tn3f/Pf/TxLgAAAAAAAAAA6HcVPXlRnuf/NSL+ax9vAQAAAAAAAACApHryMU8AAAAAAAAAAFAWxDQAAAAAAAAAANBNTAMAAAAAAAAAAN3ENAAAAAAAAAAA0E1MAwAAAAAAAAAA3cQ0AAAAAAAAAADQTUwDAAAAAAAAAADdxDQAAAAAAAAAANBNTAMAAAAAAAAA0Ec+/fTTePfdd6Orqyv1FHpITAMAAAAAAAAA0Ae6urpi7dq1sWfPnsiyLPUcekhMAwAAAAAAAADQB/74xz/GmTNnorq6WkxTRMQ0AAAAAAAAAAC9rKurKzZu3BgPPvhgPPPMM6nncAfENAAAAAAAAAAAveyDDz5wlaZIiWkAAAAAAAAAAHrR31+lefrpp1PP4Q6JaQAAAAAAAAAAetEHH3wQZ8+edZWmSIlpAAAAAAAAAAB6yV+v0kyaNMlVmiIlpgEAAAAAAAAA6CUHDx6Ms2fPRk1Njas0RUpMAwAAAAAAAADQC7q6umLTpk0xadKkmDlzZuo53CUxDQAAAAAAAABALzh48GCcO3fOVZoiJ6YBAAAAAAAAALhHnZ2dsXHjxnjooYdcpSlyYhoAAAAAAAAAgHt08ODBOH/+vKs0JUBMAwAAAAAAAABwDzo7O2PTpk0xefLkmDFjRuo53CMxDQAAAAAAAADAPXCVprSIaQAAAAAAAAAA7lJHR0ds3LgxpkyZEr///e9Tz6EXiGkAAAAAAAAAAO7Se++9FxcuXHCVpoSIaQAAAAAAAAAA7kJHR0ds3rw5pkyZEtOnT089h14ipgEAAAAAAAAAuAuu0pQmMQ0AAAAAAAAAwB3q6OiITZs2xb/927+5SlNixDQAAAAAAAAAAHfowIED8eOPP7pKU4LENAAAAAAAAAAAd+CvV2mmTp0aTz75ZOo59DIxDQAAAAAAAADAHdi/f39cvHjRVZoSJaYBAAAAAAAAAOihjo6O2Lx5c0ydOjWeeOKJ1HPoA2IaAAAAAAAAAIAe2rdvX1y8eDFqa2tdpSlRYhoAAAAAAAAAgB7461WaadOmxeOPP556Dn1ETAMAAAAAAAAA0AP79u2Ltra2qKmpcZWmhIlpAAAAAAAAAAB+RXt7e2zevDkefvhhV2lKnJgGAAAAAAAAAOBXuEpTPsQ0AAAAAAAAAAC/oL29PVpbW+ORRx6Jxx57LPUc+piYBgAAAAAAAADgF+zdu9dVmjIipgEAAAAAAAAA+Bl/vUrz6KOPukpTJsQ0AAAAAAAAAAA/Y8+ePXHp0qWoqalJPYV+IqYBAAAAAAAAAPgJf3+V5tFHH009h34ipgEAAAAAAAAA+Al79uyJy5cvu0pTZsQ0AAAAAAAAAAD/5Pbt29Ha2hqPPfaYqzRlRkwDAAAAAAAAAPBPXKUpX2IaAAAAAAAAAIC/89erNI8//ng88sgjqefQz8Q0AAAAAAAAAAB/Z/fu3XHlyhVXacqUmAYAAAAAAAAAoNutW7diy5Yt8cQTT8TDDz+ceg4JiGkAAAAAAAAAALq5SoOYBgAAAAAAAAAg/vtVmq1bt8YTTzwR06ZNSz2HRMQ0AAAAAAAAAAAR8e6777pKg5gGAAAAAAAAAODmzZuxZcuWmD59uqs0ZU5MAwAAAAAAAACUvV27dsW1a9eitrY29RQSE9MAAAAAAAAAAGXtxo0bsXXr1pg5c2ZMmTIl9RwSE9MAAAAAAAAAAGVt586dcf369aiurk49hQIgpgEAAAAAAAAAytb169dj27Zt8dRTT8XkyZNTz6EAiGkAAAAAAAAAgLK1Y8eOuHHjRtTU1KSeQoEQ0wAAAAAAAAAAZenatWuxffv2mDVrVkyaNCn1HAqEmAYAAAAAAAAAKEvbtm2LW7duuUrDPxDTAAAAAAAAAABl5+rVq7Fz58549tlnY+LEiannUEDENAAAAAAAAABA2dm6dWvcvn07qqurU0+hwIhpAAAAAAAAAICycuXKldi1a1fMnj07JkyYkHoOBUZMAwAAAAAAAACUlS1btkR7e7urNPwkMQ0AAAAAAAAAUDYuXboU7777brzwwgtx//33p55DARLTAAAAAAAAAABlY8uWLdHZ2RnLli1LPYUCJaYBAAAAAAAAAMpCW1tb7N69O1566aWorKxMPYcCJaYBAAAAAAAAAMpCa2trdHV1RVVVVeopFDAxDQAAAAAAAABQ8i5evBh79+6NV155JcaPH596DgVMTAMAAAAAAAAAlLxNmzZFnufxxhtvpJ5CgRPTAAAAAAAAAAAl7cKFC7F///6YM2dOjBs3LvUcCpyYBgAAAAAAAAAoaZs2bYosy1yloUfENAAAAAAAAABAyTp//nwcOHAgXn311Rg7dmzqORQBMQ0AAAAAAAAAULI2btwYAwcOjKVLl6aeQpEQ0wAAAAAAAAAAJens2bNx8ODBmDt3bowZMyb1HIqEmAYAAAAAAAAAKEmu0nA3xDQAAAAAAAAAQMn54Ycf4v33348FCxbE6NGjU8+hiIhpAAAAAAAAAICS09LSEoMHD47XX3899RSKjJgGAAAAAAAAACgpp06dig8//DAWLFgQo0aNSj2HIiOmAQAAAAAAAABKysaNG12l4a6JaQAAAAAAAACAkvH999/Hhx9+GAsXLowRI0aknkMREtMAAAAAAAAAACVjw4YNMXTo0Fi0aFHqKRQpMQ0AAAAAAAAAUBJOnjwZhw4dikWLFrlKw10T0wAAAAAAAAAAJWHDhg0xfPjwWLhwYeopFDExDQAAAAAAAABQ9E6cOBGffvppLF68OIYPH556DkVMTAMAAAAAAAAAFL0NGzbEiBEj4rXXXks9hSInpgEAAAAAAAAAitqf//zn+Pzzz2Px4sUxdOjQ1HMocmIaAAAAAAAAAKCobdiwIUaOHBkLFixIPYUSIKYBAAAAAAAAAIrWsWPH4vDhw7FkyRJXaegVYhoAAAAAAAAAoGg1NzfHqFGjYt68eamnUCLENAAAAAAAAABAUTp69Gh89dVXsXTp0hgyZEjqOZQIMQ0AAAAAAAAAUHTyPI/m5uYYPXq0qzT0KjENAAAAAAAAAFB0vv766/jmm2+iqqoqBg0alHoOJURMAwAAAAAAAAAUlTzPo6mpKcaOHRtz5sxJPYcSI6YBAAAAAAAAAIrK4cOH49tvv3WVhj4hpgEAAAAAAAAAikae59Hc3Bzjxo2Ll19+OfUcSpCYBgAAAAAAAAAoGp9++mmcOHEiqquro6KiIvUcSpCYBgAAAAAAAAAoCn+9SlNZWRkvvvhi6jmUKDENAAAAAAAAAFAUPvroo/j++++juro6BgyQPNA3/GQBAAAAAAAAAAWvq6srWlpaYsKECTF79uzUcyhhYhoAAAAAAAAAoOD98Y9/jNOnT0dNTY2rNPQpP10AAAAAAAAAQEH761WaBx98MGbNmpV6DiVOTAMAAAAAAAAAFLT33nsvzp49G7W1tZFlWeo5lDgxDQAAAAAAAABQsDo6OmLjxo0xZcqUmDlzZuo5lAExDQAAAAAAAABQsA4cOBAXLlxwlYZ+I6YBAAAAAAAAAApSe3t7bNy4MaZNmxZPPvlk6jmUCTENAAAAAAAAAFCQ9u7dG21tba7S0K/ENAAAAAAAAABAwbl9+3Zs3rw5Hn300Xj88cdTz6GMiGkAAAAAAAAAgILz7rvvxuXLl2P58uWpp1BmxDQAAAAAAAAAQEG5efNmtLa2xpNPPhkPP/xw6jmUGTENAAAAAAAAAFBQdu7cGdeuXXOVhiTENAAAAAAAAABAwbh+/Xps27YtZs6cGVOmTEk9hzIkpgEAAAAAAAAACsaOHTvi+vXrUVtbm3oKZUpMAwAAAAAAAAAUhGvXrsX27dtj1qxZMWnSpNRzKFNiGgAAAAAAAACgIGzdujVu3boVNTU1qadQxsQ0AAAAAAAAAEByV65ciZ07d8Zzzz0XEydOTD2HMiamAQAAAAAAAACSa21tjfb2dldpSE5MAwAAAAAAAAAk1dbWFrt3744XX3wx7r///tRzKHNiGgAAAAAAAAAgqc2bN0dnZ2dUV1enngJiGgAAAAAAAAAgnR9//DH27dsXr7zySowfPz71HBDTAAAAAAAAAADpbNq0KSIiqqqqEi+B/05MAwAAAAAAAAAkcf78+di/f3/MmTMnfvvb36aeAxEhpgEAAAAAAAAAEmlpaYmBAwfGG2+8kXoK/I2YBgAAAAAAAADod2fOnImDBw/GvHnzYsyYMannwN+IaQAAAAAAAACAfrdhw4YYNGhQLF26NPUU+AdiGgAAAAAAAACgX506dSo+/PDDeO2112LUqFGp58A/ENMAAAAAAAAAAP1qw4YNMWTIkHj99ddTT4F/IaYBAAAAAAAAAPrNyZMn4+OPP45FixbFiBEjUs+BfyGmAQAAAAAAAAD6TXNzcwwfPjwWLlyYegr8JDENAAAAAAAAANAvjh8/Hp999lksXrw4hg8fnnoO/CQxDQAAAAAAAADQL5qammLEiBHx2muvpZ4CP0tMAwAAAAAAAAD0uT/96U/x5ZdfxtKlS2Po0KGp58DPEtMAAAAAAAAAAH0qz/NYv359jB49OubPn596DvwiMQ0AAAAAAAAA0Ke++uqrOHr0aFRVVcXgwYNTz4FfJKYBAAAAAAAAAPrMX6/SjB07Nl599dXUc+BXiWkAAAAAAAAAgD7z+eefx/Hjx6O6ujoqKipSz4FfJaYBAAAAAAAAAPpEnufR1NQUlZWV8dJLL6WeAz0ipgEAAAAAAAAA+sRHH30U3333XVRXV8fAgQNTz4EeEdMAAAAAAAAAAL2uq6srmpubY+LEiTF79uzUc6DHxDQAAAAAAAAAQK97//3348yZM1FbWxsDBsgTKB5+WgEAAAAAAACAXtXR0REtLS3x0EMPxdNPP516DtwRMQ0AAAAAAAAA0KsOHDgQ58+fj+XLl0eWZannwB0R0wAAAAAAAAAAvaa9vT02btwY06ZNi+nTp6eeA3dMTAMAAAAAAAAA9Jo9e/ZEW1ubqzQULTENAAAAAAAAANArbt26FZs3b47HH388HnvssdRz4K6IaQAAAAAAAACAXrFz5864cuVKLF++PPUUuGtiGgAAAAAAAADgnl2/fj22bt0aM2fOjKlTp6aeA3dNTAMAAAAAAAAA3LMdO3bE9evXo7a2NvUUuCdiGgAAAAAAAADgnly9ejW2bdsWs2bNikmTJqWeA/dETAMAAAAAAAAA3JMtW7bE7du3XaWhJIhpAAAAAAAAAIC7dunSpdi1a1e88MILMWHChNRz4J6JaQAAAAAAAACAu7Z58+bo7OyM6urq1FOgV4hpAAAAAAAAAIC7cuHChdizZ0+88sorcd9996WeA71CTAMAAAAAAAAA3JWNGzdGlmWxbNmy1FOg14hpAAAAAAAAAIA7dvbs2Xjvvfdi3rx5MXbs2NRzoNeIaQAAAAAAAACAO9bS0hIVFRWxdOnS1FOgV4lpAAAAAAAAAIA7curUqfjggw9iwYIFMXr06NRzoFeJaQAAAAAAAACAO9Lc3BxDhgyJJUuWpJ4CvU5MAwAAAAAAAAD02IkTJ+LQoUOxePHiGDFiROo50OvENAAAAAAAAABAjzU3N8eIESNi0aJFqadAnxDTAAAAAAAAAAA9cuzYsfjiiy9iyZIlMXTo0NRzoE+IaQAAAAAAAACAHmlqaorRo0fH/PnzU0+BPiOmAQAAAAAAAAB+1VdffRVff/11VFVVxZAhQ1LPgT4jpgEAAAAAAAAAflGe59HU1BRjx46NV199NfUc6FNiGgAAAAAAAADgF33xxRfx7bffxrJly6KioiL1HOhTYhoAAAAAAAAA4Gf99SrNfffdFy+//HLqOdDnxDQAAAAAAAAAwM86dOhQnDx5MmpqamLgwIGp50CfE9MAAAAAAAAAAD+pq6srmpubY8KECTF79uzUc6BfiGkAAAAAAAAAgJ/0wQcfxOnTp6O2tjYGDJAYUB78pAMAAAAAAAAA/6KzszM2bNgQkyZNimeeeSb1HOg3YhoAAAAAAAAA4F8cOHAgzp8/H3V1dZFlWeo50G/ENAAAAAAAAADAP2hvb4+WlpaYOnVqTJ8+PfUc6FdiGgAAAAAAAADgH+zevTva2tqivr7eVRrKjpgGAAAAAAAAAPibmzdvRmtrazzxxBPx6KOPpp4D/U5MAwAAAAAAAAD8zc6dO+PKlStRV1eXegokIaYBAAAAAAAAACIi4tq1a7Fly5Z4+umnY8qUKannQBJiGgAAAAAAAAAgIiK2bt0at27diuXLl6eeAsmIaQAAAAAAAACAuHz5cuzYsSOef/75mDhxYuo5kIyYBgAAAAAAAACITZs2RWdnZ1RXV6eeAkmJaQAAAAAAAACgzF24cCH27NkTc+bMicrKytRzICkxDQAAAAAAAACUuZaWlsiyLKqqqlJPgeTENAAAAAAAAABQxn744Yd47733Yv78+TF27NjUcyA5MQ0AAAAAAAAAlLHm5uYYPHhwLF26NPUUKAhiGgAAAAAAAAAoUydPnoyPPvooFi1aFKNGjUo9BwqCmAYAAAAAAAAAytT69etj+PDhsXjx4tRToGCIaQAAAAAAAACgDP3pT3+KL774IpYuXRrDhg1LPQcKhpgGAAAAAAAAAMpMnuexfv36GD16dCxYsCD1HCgoYhoAAAAAAAAAKDNHjhyJo0ePxrJly2Lw4MGp50BBEdMAAAAAAAAAQBn561WacePGxZw5c1LPgYIjpgEAAAAAAACAMvLJJ5/EiRMnorq6OioqKlLPgYIjpgEAAAAAAACAMtHV1RVNTU3xwAMPxIsvvph6DhQkMQ0AAAAAAAAAlIkPPvggTp8+HcuXL48BAyQD8FP8ZgAAAAAAAABAGejo6IgNGzbEpEmT4plnnkk9BwqWmAYAAAAAAAAAysCBAwfi/PnzUVdXF1mWpZ4DBUtMAwAAAAAAAAAlrr29PVpaWuLhhx+O6dOnp54DBU1MAwAAAAAAAAAlbteuXXHp0iVXaaAHxDQAAAAAAAAAUMJu3rwZra2tMX369HjkkUdSz4GCJ6YBAAAAAAAAgBK2ffv2uHbtWixfvjz1FCgKYhoAAAAAAAAAKFFXr16Nbdu2xaxZs2Ly5Mmp50BRENMAAAAAAAAAQInasmVL3Lp1K2pra1NPgaIhpgEAAAAAAACAEtTW1ha7du2KF154ISZMmJB6DhQNMQ0AAAAAAAAAlKBNmzZFV1dX1NTUpJ4CRUVMAwAAAAAAAAAl5vz587F3796YM2dOjB8/PvUcKCpiGgAAAAAAAAAoMRs2bIiBAwdGVVVV6ilQdMQ0AAAAAAAAAFBCTp06Fe+//34sWLAgxowZk3oOFB0xDQAAAAAAAACUkObm5hgyZEgsXbo09RQoSmIaAAAAAAAAACgRJ06ciEOHDsXixYtjxIgRqedAURLTAAAAAAAAAECJaGpqihEjRsSiRYtST4GiJaYBAAAAAAAAgBLwzTffxOHDh2Pp0qUxdOjQ1HOgaIlpAAAAAAAAAKDI5Xke69evjzFjxsSCBQtSz4GiJqYBAAAAAAAAgCJ3+PDhOHbsWFRVVcWgQYNSz4GiJqYBAAAAAAAAgCKW53k0NjbG+PHj45VXXkk9B4qemAYAAAAAAAAAitiHH34Y3333XdTW1kZFRUXqOVD0xDQAAAAAAAAAUKQ6Ozujqakpfve738Xzzz+feg6UBDENAAAAAAAAABSp/fv3x7lz56Kuri6yLEs9B0qCmAYAAAAAAAAAilB7e3ts3Lgxpk6dGjNmzEg9B0qGmAYAAAAAAAAAitCuXbuira0tGhoaXKWBXiSmAQAAAAAAAIAic+PGjWhtbY3p06fHI488knoOlBQxDQAAAAAAAAAUma1bt8a1a9eivr4+9RQoOWIaAAAAAAAAACgily9fjh07dsRzzz0XkyZNSj0HSo6YBgAAAAAAAACKyObNm6O9vT1qa2tTT4GSJKYBAAAAAAAAgCJx4cKF2LNnT7z88stx//33p54DJUlMAwAAAAAAAABFoqWlJSIiqqurEy+B0iWmAQAAAAAAAIAicPr06Xjvvfdi/vz5MXbs2NRzoGSJaQAAAAAAAACgCDQ1NcWQIUPijTfeSD0FSpqYBgAAAAAAAAAK3PHjx+PQoUOxePHiGDlyZOo5UNLENAAAAAAAAABQ4NavXx8jR46MRYsWpZ4CJU9MAwAAAAAAAAAF7KuvvoojR47EG2+8EUOHDk09B0qemAYAAAAAAAAAClSe59HY2Bhjx46NefPmpZ4DZUFMAwAAAAAAAAAF6pNPPonjx49HTU1NDBo0KPUcKAtiGgAAAAAAAAAoQF1dXdHU1BT3339/vPTSS6nnQNkQ0wAAAAAAAABAAXr//ffj9OnTUVdXFwMGeLwP/cVvGwAAAAAAAAAUmI6OjtiwYUNMnjw5nnnmmdRzoKyIaQAAAAAAAACgwOzduzcuXLgQdXV1kWVZ6jlQVsQ0AAAAAAAAAFBAbt26FRs3boxHH300nnjiidRzoOyIaQAAAAAAAACggOzYsSOuXLkS9fX1rtJAAmIaAAAAAAAAACgQ165di61bt8ZTTz0VU6dOTT0HypKYBgAAAAAAAAAKxJYtW+LmzZtRV1eXegqULTENAAAAAAAAABSAtra22LlzZzz//PMxceLE1HOgbIlpAAAAAAAAAKAAbNy4MTo7O6O2tjb1FChrYhoAAAAAAAAASOzcuXOxb9++mDt3bowfPz71HChrvxrTZFn2WJZln/zdn8tZlv0v/bANAAAAAAAAAMpCc3NzDBw4MKqqqlJPgbJX8WsvyPP864h4OiIiy7KBEfF9RDT27SwAAAAAAAAAKA/fffdd/PGPf4wlS5bEb37zm9RzoOzd6cc8LYyIY3men+iLMQAAAAAAAABQbpqammLYsGGxZMmS1FOAuPOY5g8R8Z8/9RdZlv2XLMs+zLLsw3Pnzt37MgAAAAAAAAAocceOHYvPPvssXn/99Rg+fHjqOUDcQUyTZdngiKiNiNU/9fd5nv9HnufP5Xn+3H333ddb+wAAAAAAAACgJOV5Ho2NjTF69Oh47bXXUs8But3JZZo3IuLjPM/P9NUYAAAAAAAAACgXX375ZRw9ejSWLVsWQ4YMST0H6HYnMc2/x898xBMAAAAAAAAA0HN/vUozfvz4mDNnTuo5wN/pUUyTZdnwiFgcEev6dg4AAAAAAAAAlL6PPvooTp48GbW1tVFRUZF6DvB3evQbmef59YgY18dbAAAAAAAAAKDkdXZ2RlNTU0ycODFmz56deg7wT+7kY54AAAAAAAAAgHu0f//+OHv2bNTX18eAAR7bQ6HxWwkAAAAAAAAA/eT27dvR0tIS06ZNixkzZqSeA/wEMQ0AAAAAAAAA9JOdO3fGpUuXoqGhIbIsSz0H+AliGgAAAAAAAADoB9evX48tW7bEzJkz4+GHH049B/gZYhoAAAAAAAAA6Aetra1x48aNqKurSz0F+AViGgAAAAAAAADoY21tbbFz58544YUX4ne/+13qOcAvENMAAAAAAAAAQB9raWmJrq6uqKmpST0F+BViGgAAAAAAAADoQ2fOnIn9+/fHvHnzYvz48annAL9CTAMAAAAAAAAAfWj9+vUxaNCgqKqqSj0F6AExDQAAAAAAAAD0kePHj8fHH38cixcvjlGjRqWeA/SAmAYAAAAAAAAA+khjY2OMHDkyFi9enHoK0ENiGgAAAAAAAADoA0eOHImvvvoqqqqqYujQoannAD0kpgEAAAAAAACAXpbneTQ2Nsa4ceNi3rx5qecAd0BMAwAAAAAAAAC97OOPP44TJ05EbW1tVFRUpJ4D3AExDQAAAAAAAAD0os7Ozli/fn1MnDgxnn/++dRzgDskpgEAAAAAAACAXnTgwIE4e/Zs1NfXx4ABHstDsfFbCwAAAAAAAAC95Pbt27Fhw4aYNm1azJgxI/Uc4C6IaQAAAAAAAACgl+zatSsuXboUDQ0NkWVZ6jnAXRDTAAAAAAAAAEAvuH79erS2tsaMGTPi4YcfTj0HuEtiGgAAAAAAAADoBa2trXHjxo2oq6tLPQW4B2IaAAAAAAAAALhHbW1tsXPnznj++efjwQcfTD0HuAdiGgAAAAAAAAC4Ry0tLdHV1RW1tbWppwD3SEwDAAAAAAAAAPfgzJkzsX///pg7d26MHz8+9RzgHolpAAAAAAAAAOAeNDU1xaBBg2LZsmWppwC9QEwDAAAAAAAAAHfpxIkT8dFHH8XixYtj1KhRqecAvUBMAwAAAAAAAAB3qbGxMUaOHBmLFy9OPQXoJWIaAAAAAAAAALgLR44ciSNHjkRVVVUMHTo09Rygl4hpAAAAAAAAAOAO5XkejY2NMW7cuJg3b17qOUAvEtMAAAAAAAAAwB36+OOP48SJE1FbWxsVFRWp5wC9SEwDAAAAAAAAAHegs7Mz1q9fHxMnToznn38+9Rygl4lpAAAAAAAAAOAOHDhwIM6ePRv19fUxYIDH7lBq/FYDAAAAAAAAQA/dvn07WlpaYtq0aTFjxozUc4A+IKYBAAAAAAAAgB7atWtXtLW1RUNDQ2RZlnoO0AfENAAAAAAAAADQA9evX4/W1taYMWNGPPzww6nnAH1ETAMAAAAAAAAAPdDa2ho3btyIurq61FOAPiSmAQAAAAAAAIBf0dbWFjt37oznn38+HnzwwdRzgD4kpgEAAAAAAACAX9HS0hJdXV1RW1ubegrQx8Q0AAAAAAAAAPALzpw5E/v374+5c+fG+PHjU88B+piYBgAAAAAAAAB+wfr162PQoEGxbNmy1FOAfiCmAQAAAAAAAICf8ec//zk+/vjjeP3112PUqFGp5wD9QEwDAAAAAAAAAD8hz/NYt25djBo1KhYtWpR6DtBPxDQAAAAAAAAA8BMOHz4c33zzTVRXV8fQoUNTzwH6iZgGAAAAAAAAAP5JV1dXrFu3Lu67776YM2dO6jlAPxLTAAAAAAAAAMA/+eCDD+L777+Purq6qKioSD0H6EdiGgAAAAAAAAD4O+3t7dHU1BSTJ0+OZ599NvUcoJ+JaQAAAAAAAADg7+zevTt+/PHHaGhoiCzLUs8B+pmYBgAAAAAAAAC63bhxIzZt2hRPPvlkPP7446nnAAmIaQAAAAAAAACg25YtW+LatWvR0NCQegqQiJgGAAAAAAAAACKira0ttm/fHs8//3xMmjQp9RwgETENAAAAAAAAAERES0tLdHV1xfLly1NPARIS0wAAAAAAAABQ9n744YfYv39/zJs3L8aPH596DpCQmAYAAAAAAACAsrd+/foYPHhwVFVVpZ4CJCamAQAAAAAAAKCsffvtt3Ho0KF4/fXXY9SoUannAImJaQAAAAAAAAAoW3mex7p162L06NGxaNGi1HOAAiCmAQAAAAAAAKBsffHFF3H06NGorq6OIUOGpJ4DFAAxDQAAAAAAAABlqaurK9atWxeVlZUxZ86c1HOAAiGmAQAAAAAAAKAsvf/++3Hq1KlYvnx5DBw4MPUcoECIaQAAAAAAAAAoO+3t7dHc3ByTJ0+OZ599NvUcoICIaQAAAAAAAAAoO7t3744ff/wxGhoaIsuy1HOAAiKmAQAAAAAAAKCsXL9+PTZt2hTTp0+Pxx9/PPUcoMCIaQAAAAAAAAAoK1u3bo1r165FfX196ilAARLTAAAAAAAAAFA22traYvv27fHCCy/EpEmTUs8BCpCYBgAAAAAAAICy0dLSEl1dXVFbW5t6ClCgxDQAAAAAAAAAlIUffvgh9u3bF/Pnz4/x48enngMUKDENAAAAAAAAAGVh/fr1MWTIkHjjjTdSTwEKmJgGAAAAAAAAgJL37bffxqFDh2LJkiUxatSo1HOAAiamAQAAAAAAAKCk5Xke69ati9GjR8fChQtTzwEKnJgGAAAAAAAAgJL2+eefx9GjR6OmpiaGDBmSeg5Q4MQ0AAAAAAAAAJSsrq6uaGxsjMrKynjllVdSzwGKgJgGAAAAAAAAgJJ18ODBOHXqVNTX18fAgQNTzwGKgJgGAAAAAAAAgJLU3t4ezc3NMWXKlHjmmWdSzwGKhJgGAAAAAAAAgJK0a9euuHjxYjQ0NESWZannAEVCTAMAAAAAAABAybl+/Xps3rw5pk+fHo899ljqOUAREdMAAAAAAAAAUHJaW1vjxo0b0dDQkHoKUGTENAAAAAAAAACUlIsXL8bOnTvj+eefjwcffDD1HKDIiGkAAAAAAAAAKCkbNmyIPM9j+fLlqacARUhMAwAAAAAAAEDJOHXqVBw4cCDmzZsX48aNSz0HKEJiGgAAAAAAAABKRmNjYwwdOjSWLVuWegpQpMQ0AAAAAAAAAJSEb775Jj777LN44403YsSIEannAEVKTAMAAAAAAABA0cvzPNauXRtjx46N1157LfUcoIiJaQAAAAAAAAAoeh999FEcP348amtrY9CgQannAEVMTAMAAAAAAABAUevo6Ij169fHxIkT48UXX0w9ByhyYhoAAAAAAAAAitrevXvj3LlzsWLFihgwwGNw4N54FwEAAAAAAACgaN28eTNaWlrisccei+nTp6eeA5QAMQ0AAAAAAAAARWvLli1x9erVWLFiRWRZlnoOUALENAAAAAAAAAAUpba2tti2bVvMnj07Jk+enHoOUCLENAAAAAAAAAAUpZaWlujq6oq6urrUU4ASIqYBAAAAAAAAoOicPn069u3bF/Pnz4/x48enngOUEDENAAAAAAAAAEWnsbExhgwZElVVVamnACVGTAMAAAAAAABAUTl69Gh8+umnsXTp0hg5cmTqOUCJEdMAAAAAAAAAUDTyPI9169bFmDFjYuHChannACVITAMAAAAAAABA0Th06FB8++23UVtbG4MHD049ByhBYhoAAAAAAAAAikJnZ2c0NjbGxIkT46WXXko9ByhRYhoAAAAAAAAAisLevXvj7NmzUV9fHwMGeNwN9A3vLgAAAAAAAAAUvJs3b0ZLS0s8+uijMWPGjNRzgBImpgEAAAAAAACg4G3bti2uXLkSK1asiCzLUs8BSpiYBgAAAAAAAICCdunSpdi6dWs899xzMWXKlNRzgBInpgEAAAAAAACgoLW0tERHR0csX7489RSgDIhpAAAAAAAAAChYP/zwQ+zbty/mzZsXlZWVqecAZUBMAwAAAAAAAEDBamxsjMGDB8eyZctSTwHKhJgGAAAAAAAAgIJ07Nix+OSTT2LJkiUxatSo1HOAMiGmAQAAAAAAAKDg5Hkea9asid/85jexcOHC1HOAMiKmAQAAAAAAAKDgfPLJJ/Htt99GTU1NDBkyJPUcoIyIaQAAAAAAAAAoKJ2dndHY2BgTJkyIV155JfUcoMyIaQAAAAAAAAAoKPv3748zZ85EfX19DBjgsTbQv7zrAAAAAAAAAFAwbt26FRs2bIhHHnkkZs6cmXoOUIbENAAAAAAAAAAUjG3btsXly5ejoaEhsixLPQcoQ2IaAAAAAAAAAArC5cuXY+vWrTFr1qyYOnVq6jlAmRLTAAAAAAAAAFAQWlpaor29Perr61NPAcqYmAYAAAAAAACA5M6cORN79+6NuXPnRmVlZeo5QBkT0wAAAAAAAACQXGNjYwwaNCiqq6tTTwHKnJgGAAAAAAAAgKS+/fbbOHToUCxZsiRGjRqVeg5Q5sQ0AAAAAAAAACST53msWbMmRo8eHYsWLUo9B0BMAwAAAAAAAEA6n376aRw7dixqampiyJAhqecAiGkAAAAAAAAASKOzszPWrVsXEyZMiDlz5qSeAxARYhoAAAAAAAAAEtm7d2+cOXMmGhoaYsAAj6+BwuDdCAAAAAAAAIB+d/PmzWhpaYlHH300ZsyYkXoOwN+IaQAAAAAAAADod1u2bIkrV67EypUrI8uy1HMA/kZMAwAAAAAAAEC/unjxYmzbti1mz54dkydPTj0H4B+IaQAAAAAAAADoV83NzZHnedTX16eeAvAvxDQAAAAAAAAA9Jvvvvsu3nvvvViwYEGMGzcu9RyAfyGmAQAAAAAAAKDfrF27NoYNGxZVVVWppwD8JDENAAAAAAAAAP3iyy+/jC+//DKWLVsWw4cPTz0H4CeJaQAAAAAAAADoc11dXbF27doYP358zJ8/P/UcgJ8lpgEAAAAAAACgzx08eDC+++67qKuri4qKitRzAH6WmAYAAAAAAACAPnX79u1oamqKKVOmxHPPPZd6DsAvEtMAAAAAAAAA0Kd27NgRbW1tsXLlysiyLPUcgF8kpgEAAAAAAACgz1y5ciVaW1vjqaeeikceeST1HIBfJaYBAAAAAAAAoM+0tLTE7du3o6GhIfUUgB4R0wAAAAAAAADQJ86cORN79uyJV199NR544IHUcwB6REwDAAAAAAAAQJ9obGyMQYMGRXV1deopAD0mpgEAAAAAAACg1/3pT3+KQ4cOxdKlS2P06NGp5wD0mJgGAAAAAAAAgF6V53msXbs2xowZE4sWLUo9B+COiGkAAAAAAAAA6FUff/xxfPvtt1FbWxuDBw9OPQfgjohpAAAAAAAAAOg1HR0d0djYGL/73e/ipZdeSj0H4I6JaQAAAAAAAADoNbt3745z587FihUrYsAAj6SB4uOdCwAAAAAAAIBecf369di4cWM88cQT8eSTT6aeA3BXxDQAAAAAAAAA9IrW1ta4fv16rFixIrIsSz0H4K6IaQAAAAAAAAC4ZxcuXIgdO3bECy+8EJMmTUo9B+CuiWkAAAAAAAAAuGdNTU2RZVnU1dWlngJwT8Q0AAAAAAAAANyTv/zlL/H+++/HwoULY+zYsannANwTMQ0AAAAAAAAAdy3P81i7dm2MHDkyli5dmnoOwD0T0wAAAAAAAABw1w4fPhxfffVVVFdXx7Bhw1LPAbhnYhoAAAAAAAAA7kpXV1esXbs2Kisr49VXX009B6BXiGkAAAAAAAAAuCsHDhyIU6dORX19fVRUVKSeA9ArxDQAAAAAAAAA3LFbt25Fc3NzTJs2LZ555pnUcwB6jZgGAAAAAAAAgDu2bdu2uHTpUqxYsSKyLEs9B6DXiGkAAAAAAAAAuCOXL1+OrVu3xqxZs2LatGmp5wD0KjENAAAAAAAAAHekubk52tvbo76+PvUUgF4npgEAAAAAAACgx06fPh379u2LefPmRWVlZeo5AL1OTAMAAAAAAABAj61bty6GDBkS1dXVqacA9AkxDQAAAAAAAAA98tVXX8Vnn30WVVVVMXLkyNRzAPqEmAYAAAAAAACAX5XneaxZsybGjRsXr732Wuo5AH1GTAMAAAAAAADArzp48GCcPHky6uvrY9CgQannAPQZMQ0AAAAAAAAAv+j27duxfv36mDJlSjz33HOp5wD0KTENAAAAAAAAAL9o+/bt0dbWFqtWrYosy1LPAehTYhoAAAAAAAAAftbly5ejtbU1nnnmmXj44YdTzwHoc2IaAAAAAAAAAH5Wc3NztLe3R0NDQ+opAP1CTAMAAAAAAADATzp16lTs27cvFixYEJWVlannAPQLMQ0AAAAAAAAAP2nNmjUxbNiwWLZsWeopAP1GTAMAAAAAAADAv/jyyy/j8OHDUVVVFSNGjEg9B6DfiGkAAAAAAAAA+AddXV2xZs2aGD9+fCxYsCD1HIB+JaYBAAAAAAAA4B+899578f3330d9fX1UVFSkngPQr8Q0AAAAAAAAAPzNrVu3oqmpKaZOnRrPPvts6jkA/U5MAwAAAAAAAMDfbN26NS5duhSrVq2KLMtSzwHod2IaAAAAAAAAACIioq2tLbZu3RrPPvtsTJ06NfUcgCTENAAAAAAAAABERERzc3N0dXVFQ0ND6ikAyYhpAAAAAAAAAIjvvvsuDhw4EAsWLIjx48enngOQjJgGAAAAAAAAoMzleR5r1qyJ4cOHR1VVVeo5AEmJaQAAAAAAAADK3OHDh+PIkSOxbNmyGD58eOo5AEmJaQAAAAAAAADKWFdXV6xZsyYqKytj3rx5qecAJCemAQAAAAAAAChj+/fvj9OnT0dDQ0NUVFSkngOQnJgGAAAAAAAAoEzdvHkzmpqa4pFHHomnn3469RyAgiCmAQAAAAAAAChTW7ZsiStXrsTKlSsjy7LUcwAKgpgGAAAAAAAAoAxdvHgxtm3bFrNnz44pU6akngNQMMQ0AAAAAAAAAGVo/fr1ked51NfXp54CUFDENAAAAAAAAABl5i9/+Uu8//77sXDhwhg3blzqOQAFRUwDAAAAAAAAUEbyPI81a9bEiBEj4o033kg9B6DgiGkAAAAAAAAAysjnn38eX3/9ddTU1MSwYcNSzwEoOGIaAAAAAAAAgDLR2dkZa9asifvvvz9effXV1HMACpKYBgAAAAAAAKBM7N27N86cORMrVqyIgQMHpp4DUJDENAAAAAAAAABl4MaNG7Fhw4Z49NFHY+bMmannABQsMQ0AAAAAAABAGWhtbY2rV6/GypUrI8uy1HMACpaYBgAAAAAAAKDEXbhwIbZv3x4vvvhiTJ48OfUcgIImpgEAAAAAAAAocU1NTZFlWdTV1aWeAlDwxDQAAAAAAAAAJez48ePx/vvvx6JFi2Ls2LGp5wAUPDENAAAAAAAAQInK8zzWrFkTo0aNiqVLl6aeA1AUxDQAAAAAAAAAJeqTTz6Jo0ePRm1tbQwdOjT1HICiIKYBAAAAAAAAKEEdHR2xdu3amDhxYsyZMyf1HICiIaYBAAAAAAAAKEHvvvtunDt3LlauXBkDBng0DNBT3jEBAAAAAAAASszVq1ejpaUlpk+fHtOnT089B6CoiGkAAAAAAAAASkxLS0vcunUrVq1alXoKQNER0wAAAAAAAACUkB9++CF2794dr776akyYMCH1HICiI6YBAAAAAAAAKCFr166NwYMHR01NTeopAEVJTAMAAAAAAABQIo4cORKfffZZVFVVxahRo1LPAShKYhoAAAAAAACAEtDV1RVr1qyJ8ePHx2uvvZZ6DkDREtMAAAAAAAAAlIADBw7Ed999Fw0NDTFo0KDUcwCKlpgGAAAAAAAAoMjdvHkzmpqaYtq0aTFr1qzUcwCKmpgGAAAAAAAAoMht2bIlLl++HG+++WZkWZZ6DkBRE9MAAAAAAAAAFLEff/wxtm3bFi+88EJMmTIl9RyAoiemAQAAAAAAAChijY2NERFRV1eXdghAiRDTAAAAAAAAABSpP//5z/HBBx/E4sWL47e//W3qOQAlQUwDAAAAAAAAUITyPI/Vq1fH6NGjY+nSpannAJQMMQ0AAAAAAABAEfroo4/i2LFjUVdXF0OGDEk9B6BkiGkAAAAAAAAAikx7e3usW7cuHnzwwXjppZdSzwEoKWIaAAAAAAAAgCKzc+fOuHDhQqxatSoGDPDYF6A3eVcFAAAAAAAAKCJXrlyJTZs2xcyZM+Pxxx9PPQeg5IhpAAAAAAAAAIpIc3Nz3L59O1auXJl6CkBJEtMAAAAAAAAAFIlTp07F3r17Y/78+XH//fenngNQksQ0AAAAAAAAAEVizZo1MWzYsKiurk49BaBkiWkAAAAAAAAAisDhw4fj8OHDsWzZshgxYkTqOQAlS0wDAAAAAAAAUOC6urpi9erVUVlZGfPnz089B6CkiWkAAAAAAAAACtzevXvj9OnTsWLFiqioqEg9B6CkiWkAAAAAAAAACtiNGzeiubk5Hn300XjqqadSzwEoeWIaAAAAAAAAgAK2efPmuHbtWqxatSqyLEs9B6DkiWkAAAAAAAAACtT58+djx44d8dJLL8VDDz2Ueg5AWRDTAAAAAAAAABSodevWxYABA2L58uWppwCUDTENAAAAAAAAQAE6duxYfPTRR7FkyZIYM2ZM6jkAZUNMAwAAAAAAAFBg8jyPd955J8aMGROLFy9OPQegrIhpAAAAAAAAAArMBx98EMePH4/6+voYMmRI6jkAZUVMAwAAAAAAAFBAbt++HY2NjfHQQw/FCy+8kHoOQNkR0wAAAAAAAAAUkO3bt8fFixfjzTffjCzLUs8BKDtiGgAAAAAAAIACcfny5WhtbY1nnnkmHnnkkdRzAMqSmAYAAAAAAACgQKxfvz46OjqioaEh9RSAsiWmAQAAAAAAACgAJ0+ejAMHDsSCBQuisrIy9RyAsiWmAQAAAAAAAEgsz/N45513YsSIEbFs2bLUcwDKmpgGAAAAAAAAILFPPvkkvvnmm1i+fHkMHz489RyAsiamAQAAAAAAAEioo6Mj1qxZExMnTow5c+akngNQ9sQ0AAAAAAAAAAnt2LEjzp8/H2+++WYMGOARLkBq3okBAAAAAAAAErl8+XJs2rQpZs6cGU888UTqOQCEmAYAAAAAAAAgmebm5mhvb49Vq1alngJANzENAAAAAAAAQAInT56Mffv2xYIFC6KysjL1HAC6iWkAAAAAAAAA+lme5/HOO+/E8OHDY9myZannAPB3xDQAAAAAAAAA/eyTTz6Jb775JpYvXx7Dhw9PPQeAvyOmAQAAAAAAAOhHHR0dsWbNmpg4cWK8+uqrqecA8E/ENAAAAAAAAAD9aOfOnXH+/Pl48803Y8AAj2wBCo13ZgAAAAAAAIB+cvny5di4cWPMnDkznnjiidRzAPgJYhoAAAAAAACAftLc3By3b9+OlStXpp4CwM8Q0wAAAAAAAAD0g++++y727dsXCxYsiPvvvz/1HAB+hpgGAAAAAAAAoI/leR7vvPNODB8+PKqrq1PPAeAX9CimybJsTJZla7Is+yrLsiNZlr3U18MAAAAAAAAASsVnn30WX3/9ddTW1sbw4cNTzwHgF1T08HX/R0S05nm+MsuywRHh3R0AAAAAAACgBzo6OmL16tUxYcKEmDt3buo5APyKX71Mk2XZ6IiYGxH/d0REnue38zxv6+NdAAAAAAAAACVh165dce7cuVi1alUMGNCjDw8BIKGevFNPjYhzEfH/ZFl2KMuy/yvLshH//KIsy/5LlmUfZln24blz53p9KAAAAAAAAECxuXLlSrS0tMTvf//7mD59euo5APRAT2KaioiYFRH/Z57nz0TEtYj43/75RXme/0ee58/lef7cfffd18szAQAAAAAAAIpPc3Nz3L59O1atWpV6CgA91JOY5ruI+C7P8/e7/3tN/Pe4BgAAAAAAAICf8f3338fevXtj/vz58cADD6SeA0AP/WpMk+f5DxFxMsuyx7q/tDAivuzTVQAAAAAAAABFLM/zeOedd2LYsGFRXV2deg4Ad6Cih6/7nyLi/82ybHBEfBsR/2PfTQIAAAAAAAAobp9//nl89dVX8Yc//CFGjBiReg4Ad6BHMU2e559ExHN9OwUAAAAAAACg+HV0dMTq1avjgQceiLlz56aeA8Ad+tWPeQIAAAAAAACg59599904e/ZsrFq1KgYOHJh6DgB3SEwDAAAAAAAA0EuuXr0aLS0tMX369Pj973+feg4Ad0FMAwAAAAAAANBLNmzYELdu3YpVq1alngLAXRLTAAAAAAAAAPSCU6dOxe7du2PevHkxYcKE1HMAuEtiGgAAAAAAAIB7lOd5vPPOOzFs2LCoqalJPQeAeyCmAQAAAAAAALhHn3/+eRw5ciRqampixIgRqecAcA/ENAAAAAAAAAD3oKOjI9asWRP3339/zJs3L/UcAO6RmAYAAAAAAADgHuzevTvOnDkTb775ZgwcODD1HADukZgGAAAAAAAA4C5dvXo1WlpaYvr06TF9+vTUcwDoBWIaAAAAAAAAgLu0YcOGuHnzZqxcuTKyLEs9B4BeIKYBAAAAAAAAuAunTp2KPXv2xNy5c2PixImp5wDQS8Q0AAAAAAAAAHcoz/N45513YujQoVFbW5t6DgC9SEwDAAAAAAAAcIc+++yzOHLkSNTW1saIESNSzwGgF4lpAAAAAAAAAO5AR0dHrF69OiZMmBBz585NPQeAXiamAQAAAAAAALgDO3bsiHPnzsWqVati4MCBqecA0MvENAAAAAAAAAA9dPny5di4cWPMnDkzpk+fnnoOAH1ATAMAAAAAAADQQ+vXr4+Ojo5YtWpV6ikA9BExDQAAAAAAAEAPnDhxIg4cOBALFy6MysrK1HMA6CNiGgAAAAAAAIBfked5vP322zFy5MhYtmxZ6jkA9CExDQAAAAAAAMCv+PDDD+PYsWNRX18fQ4cOTT0HgD4kpgEAAAAAAAD4Bbdu3Yq1a9fGQw89FC+99FLqOQD0MTENAAAAAAAAwC/YunVrXLx4Md56660YMMAjVoBS550eAAAAAAAA4Gf8+OOPsWXLlpg9e3Y8/PDDqecA0A/ENAAAAAAAAAA/Y+3atRER0dDQkHgJAP1FTAMAAAAAAADwE44ePRoffvhhLFmyJH7729+mngNAPxHTAAAAAAAAAPyTrq6uePvtt2Ps2LGxZMmS1HMA6EdiGgAAAAAAAIB/8t5778XJkydjxYoVMXjw4NRzAOhHYhoAAAAAAACAv3Pjxo1obGyMadOmxXPPPZd6DgD9TEwDAAAAAAAA8Hc2bdoUV69ejbfeeiuyLEs9B4B+JqYBAAAAAAAA6HbmzJnYsWNHvPzyyzF58uTUcwBIQEwDAAAAAAAA0G3NmjUxaNCgqKurSz0FgETENAAAAAAAAAARcfjw4fjss89i2bJlMXr06NRzAEhETAMAAAAAAACUvc7Ozli9enVUVlbGa6+9lnoOAAmJaQAAAAAAAICyt3v37jh9+nSsXLkyKioqUs8BICExDQAAAAAAAFDWrl69Ghs2bIgnnngiZs6cmXoOAImJaQAAAAAAAICy1tzcHDdv3ow333wzsixLPQeAxMQ0AAAAAAAAQNn6/vvvY8+ePTFv3ryYOHFi6jkAFAAxDQAAAAAAAFCW8jyPt99+O4YPHx41NTWp5wBQIMQ0AAAAAAAAQFn65JNP4uuvv47a2toYMWJE6jkAFAgxDQAAAAAAAFB22tvbY82aNTFx4sSYO3du6jkAFBAxDQAAAAAAAFB2tm/fHufPn4+33norBgzw2BSA/59/FQAAAAAAAICy0tbWFps3b46nn346Hn/88dRzACgwYhoAAAAAAACgrKxfvz46Oztj5cqVqacAUIDENAAAAAAAAEDZOH78eLz33nuxcOHCuO+++1LPAaAAiWkAAAAAAACAspDnefy3//bfYvTo0VFVVZV6DgAFSkwDAAAAAAAAlIUPPvgg/vznP0d9fX0MHTo09RwACpSYBgAAAAAAACh5N2/ejLVr18bkyZPjpZdeSj0HgAImpgEAAAAAAABK3ubNm+PSpUvxhz/8IbIsSz0HgAImpgEAAAAAAABK2tmzZ2P79u3x4osvxtSpU1PPAaDAiWkAAAAAAACAkrZ69eoYOHBgNDQ0pJ4CQBEQ0wAAAAAAAAAl6/Dhw/HZZ59FdXV1/OY3v0k9B4AiIKYBAAAAAAAASlJHR0e8/fbbUVlZGa+99lrqOQAUCTENAAAAAAAAUJJ27doVZ86cibfeeisqKipSzwGgSIhpAAAAAAAAgJJz+fLlaGlpiRkzZsTvf//71HMAKCJiGgAAAAAAAKDkNDY2Rnt7e7z55puppwBQZMQ0AAAAAAAAQEk5fvx4HDhwIBYtWhSVlZWp5wBQZMQ0AAAAAAAAQMnI8zz+8z//M0aPHh1VVVWp5wBQhMQ0AAAAAAAAQMk4ePBgHD9+PFasWBFDhw5NPQeAIiSmAQAAAAAAAErCzZs3Y926dTF16tR44YUXUs8BoEiJaQAAAAAAAICSsHHjxrhy5Uq89dZbkWVZ6jkAFCkxDQAAAAAAAFD0zpw5Ezt27IiXX345pkyZknoOAEVMTAMAAAAAAAAUtTzP4+23345BgwZFXV1d6jkAFDkxDQAAAAAAAFDUPv/88zh8+HDU1NTE6NGjU88BoMiJaQAAAAAAAICi1dHREatXr44HHnggFixYkHoOACVATAMAAAAAAAAUrR07dsTZs2fjrbfeioEDB6aeA0AJENMAAAAAAAAARamtrS02btwYTz31VDz55JOp5wBQIsQ0AAAAAAAAQFFqbGyMzs7OWLVqVeopAJQQMQ0AAAAAAABQdI4dOxYHDx6MxYsXx3333Zd6DgAlREwDAAAAAAAAFJU8z+Ptt9+OMWPGxBtvvJF6DgAlRkwDAAAAAAAAFJUDBw7EiRMnYsWKFTFkyJDUcwAoMWIaAAAAAAAAoGhcv349GhsbY9q0aTF79uzUcwAoQWIaAAAAAAAAoGi0tLTE1atX49///d8jy7LUcwAoQWIaAAAAAAAAoCicPn06du3aFa+++mpMmjQp9RwASpSYBgAAAAAAACh4eZ7H22+/HUOHDo3ly5enngNACRPTAAAAAAAAAAXv008/jSNHjkRtbW2MHDky9RwASpiYBgAAAAAAACho7e3tsXr16pg4cWLMmzcv9RwASpyYBgAAAAAAACho27Zti/Pnz8dbb70VAwZ4xAlA3/IvDQAAAAAAAFCwLl68GJs3b45Zs2bF448/nnoOAGVATAMAAAAAAAAUrLVr10ae57Fy5crUUwAoE2IaAAAAAAAAoCAdPXo0/vjHP8aSJUti3LhxqecAUCbENAAAAAAAAEDB6erqirfffjv+P/b+7M3K8t77dn+jKKCkV1oNCIGIQY0GmyigotgEkUaLEqHowS7P2ljP1jqO979496IiKG0VWAKioIhdFIwNYmDKBCVBUCNKIyCNQBV1r53MHMmMDU1VXaM5zx3YGBufvXGP+/oedV144YXx+9//PnUOACXEmAYAAAAAAADIO2+//XZ88cUXUVVVFW3atEmdA0AJMaYBAAAAAAAA8sqxY8fi+eefj8svvzyuu+661DkAlBhjGgAAAAAAACCvrFy5Mr7//vuYOHFi5HK51DkAlBhjGgAAAAAAACBvfP755/H222/H7bffHpdccknqHABKkDENAAAAAAAAkBeyLIuampro0KFDjBkzJnUOACXKmAYAAAAAAADIC++++27s3LkzKisr44ILLkidA0CJMqYBAAAAAAAAkvv+++9j+fLl0b9//xgyZEjqHABKmDENAAAAAAAAkNyLL74YR44ciYkTJ0Yul0udA0AJM6YBAAAAAAAAkvrqq6/i9ddfj5tvvjn69u2bOgeAEmdMAwAAAAAAACSTZVksXbo0Kioq4r777kudAwDGNAAAAAAAAEA6H330UWzfvj3GjRsXHTp0SJ0DAMY0AAAAAAAAQBonT56MZcuWRe/evePWW29NnQMAEWFMAwAAAAAAACTy8ssvx8GDB2PSpElRVuboEoD84BsJAAAAAAAAaHH79u2LV155JW688cb41a9+lToHAP7JmAYAAAAAAABoccuWLYtWrVpFZWVl6hQA+DfGNAAAAAAAAECL+vjjj2PLli0xevTo6NKlS+ocAPg3xjQAAAAAAABAi2loaIilS5dGz549Y8SIEalzAOA/GNMAAAAAAAAALWbdunWxd+/emDhxYpSXl6fOAYD/YEwDAAAAAAAAtIiDBw/GmjVrYvDgwXHFFVekzgGAH2RMAwAAAAAAALSIurq6yLIsHnjggdQpAPCjjGkAAAAAAACAZvfJJ5/Exo0bY+TIkdG1a9fUOQDwo4xpAAAAAAAAgGZ1+vTpqK2tja5du8bvf//71DkA8JOMaQAAAAAAAIBm9eabb8ZXX30VEyZMiNatW6fOAYCfZEwDAAAAAAAANJvvvvsuVq1aFVdccUVcc801qXMA4GcZ0wAAAAAAAADNZsWKFVFfXx8TJ06MXC6XOgcAfpYxDQAAAAAAANAsPvvss3jnnXfizjvvjJ49e6bOAYAzYkwDAAAAAAAANLksy6KmpiY6d+4co0aNSp0DAGfMmAYAAAAAAABochs2bIjdu3dHVVVVVFRUpM4BgDNmTAMAAAAAAAA0qWPHjsXy5cvjsssuixtuuCF1DgCcFWMaAAAAAAAAoEmtWrUqjh8/HhMnToxcLpc6BwDOijENAAAAAAAA0GS+/PLL+NOf/hTDhw+P3r17p84BgLNmTAMAAAAAAAA0iSzLora2Ntq3bx9jx45NnQMA58SYBgAAAAAAAGgSH3zwQezYsSPuu+++aN++feocADgnxjQAAAAAAADAeTtx4kTU1dVF3759Y9iwYalzAOCcGdMAAAAAAAAA52316tVx+PDhmDRpUpSVOYYEoHD5FgMAAAAAAADOy549e+LVV1+NoUOHxi9/+cvUOQBwXoxpAAAAAAAAgHOWZVnU1tZGRUVFVFZWps4BgPNmTAMAAAAAAACcsw8//DC2b98e48aNi44dO6bOAYDzZkwDAAAAAAAAnJOTJ0/Gs88+G3369Ilbb701dQ4ANAljGgAAAAAAAOCcrF69Og4dOhTV1dVRVuboEYDi4BsNAAAAAAAAOGt79uyJdevWxdChQ6N///6pcwCgyRjTAAAAAAAAAGcly7Kora2NioqKqKysTJ0DAE3KmAYAAAAAAAA4Kx9++GFs3749xo0bFx07dkydAwBNypgGAAAAAAAAOGMnT56MZ599Nvr06RO33npr6hwAaHLGNAAAAAAAAMAZW716dRw6dCiqq6ujrMxxIwDFx7cbAAAAAAAAcEb27NkT69ati6FDh0b//v1T5wBAszCmAQAAAAAAAH5WlmVRW1sbFRUVUVlZmToHAJqNMQ0AAAAAAADwszZt2hTbt2+PcePGRceOHVPnAECzMaYBAAAAAAAAftLJkydj2bJl0adPn7j11ltT5wBAszKmAQAAAAAAAH7S6tWr49ChQzFp0qQoK3PECEBx800HAAAAAAAA/Kg9e/bEunXrYujQoTFgwIDUOQDQ7IxpAAAAAAAAgB+UZVnU1tZGRUVFVFZWps4BgBZhTAMAAAAAAAD8oE2bNsX27dtj3Lhx0bFjx9Q5ANAijGkAAAAAAACA/3Dy5MlYtmxZ9OnTJ2699dbUOQDQYoxpAAAAAAAAgP+wevXqOHToUEyaNCnKyhwrAlA6fOsBAAAAAAAA/+brr7+OdevWxdChQ2PAgAGpcwCgRRnTAAAAAAAAAP+UZVnU1tZG27Zto7KyMnUOALQ4YxoAAAAAAADgnzZt2hTbtm2LcePGRceOHVPnAECLM6YBAAAAAAAAIiLi5MmT8eyzz0afPn1i+PDhqXMAIAljGgAAAAAAACAiIlavXh0HDx6MSZMmRVmZo0QASpNvQAAAAAAAACC+/vrrePXVV2Po0KExYMCA1DkAkIwxDQAAAAAAAJS4LMuitrY22rRpE5WVlalzACApYxoAAAAAAAAocR999FFs27Ytxo0bFx07dkydAwBJGdMAAAAAAABACTt58mQsW7Ys+vTpE8OHD0+dAwDJGdMAAAAAAABACVuzZk0cPHgwJk2aFGVljg8BwLchAAAAAAAAlKhvvvkm1q1bF0OHDo0BAwakzgGAvGBMAwAAAAAAACUoy7KoqamJNm3aRGVlZeocAMgbxjQAAAAAAABQgj766KPYtm1bjBs3Ljp27Jg6BwDyhjENAAAAAAAAlJiTJ0/GsmXLonfv3jF8+PDUOQCQV4xpAAAAAAAAoMSsXr06Dh48GNXV1VFW5sgQAP6Vb0YAAAAAAAAoIV999VWsW7cuhg0bFgMGDEidAwB5x5gGAAAAAAAASkSWZVFTUxMVFRVx//33p84BgLxkTAMAAAAAAAAl4v33349PP/00Kisro2PHjqlzACAvGdMAAAAAAABACTh+/HjU1dVFv3794uabb06dAwB5y5gGAAAAAAAASsCqVaviyJEjUV1dHblcLnUOAOQtYxoAAAAAAAAocp9//nm8+eabMXz48Ojbt2/qHADIa8Y0AAAAAAAAUMSyLIslS5ZEhw4dYty4calzACDvGdMAAAAAAABAEVu/fn189tlnUVVVFe3atUudAwB5z5gGAAAAAAAAitTRo0djxYoVcdlll8WNN96YOgcACoIxDQAAAAAAABSp5cuXx/fffx/V1dWRy+VS5wBAQTCmAQAAAAAAgCL0t7/9LTZs2BB33nlnXHLJJalzAKBgGNMAAAAAAABAkWlsbIwlS5bEhRdeGKNHj06dAwAFxZgGAAAAAAAAiswbb7wRX375ZUyYMCHatm2bOgcACooxDQAAAAAAABSRw4cPx6pVq+LKK6+MwYMHp84BgIJjTAMAAAAAAABF5Nlnn42GhoaYOHFi5HK51DkAUHCMaQAAAAAAAKBIbN++PT744IMYOXJk9OjRI3UOABQkYxoAAAAAAAAoAg0NDVFTUxPdunWLkSNHps4BgIJlTAMAAAAAAABF4NVXX42vv/46Jk2aFK1bt06dAwAFy5gGAAAAAAAACtyBAwfixRdfjMGDB8dVV12VOgcACpoxDQAAAAAAABS4pUuXRi6XiwkTJqROAYCCZ0wDAAAAAAAABWzLli2xefPmGD16dFx00UWpcwCg4BnTAAAAAAAAQIGqr6+PpUuXxsUXXxx33HFH6hwAKArGNAAAAAAAAFCgXnrppdi/f39UV1dHeXl56hwAKArGNAAAAAAAAFCA9u7dG2vXro0bb7wxBg4cmDoHAIqGMQ0AAAAAAAAUmCzLoqamJsrLy6Oqqip1DgAUFWMaAAAAAAAAKDCbNm2K//7v/4777rsvOnXqlDoHAIqKMQ0AAAAAAAAUkBMnTsSyZcuiT58+MXz48NQ5AFB0jGkAAAAAAACggLz44otx6NChqK6ujrIyx30A0NR8uwIAAAAAAECB+Oqrr+K1116Lm2++Ofr37586BwCKkjENAAAAAAAAFIAsy2LJkiVxwQUXRGVlZeocAChaxjQAAAAAAABQAN57773YsWNHVFZWRvv27VPnAEDRMqYBAAAAAACAPHf8+PGoq6uL/v37x7Bhw1LnAEBRM6YBAAAAAACAPLdy5co4evRoVFdXRy6XS50DAEXNmAYAAAAAAADy2K5du+Ktt96K22+/Pfr06ZM6BwCKnjENAAAAAAAA5KnGxsZYtGhRdO7cOcaNG5c6BwBKgjENAAAAAAAA5Kk33ngjvvjii5gwYUJUVFSkzgGAkmBMAwAAAAAAAHno0KFDsWrVqrjyyivj2muvTZ0DACXDmAYAAAAAAADy0LJly+L06dMxadKkyOVyqXMAoGQY0wAAAAAAAECe2bp1a3z44YcxatSo6N69e+ocACgpxjQAAAAAAACQR+rr62PJkiXRs2fPuPvuu1PnAEDJMaYBAAAAAACAPLJmzZrYv39/VFdXR3l5eeocACg5xjQAAAAAAACQJ77++utYu3Zt3HjjjfHrX/86dQ4AlCRjGgAAAAAAAMgDWZbFkiVLom3btlFVVZU6BwBKljENAAAAAAAA5IH3338/Pvnkk7j//vujU6dOqXMAoGQZ0wAAAAAAAEBix48fj2effTZ++ctfxi233JI6BwBKmjENAAAAAAAAJLZixYo4evRoTJ48OXK5XOocAChpxjQAAAAAAACQ0GeffRZvv/12jBgxIvr06ZM6BwBKnjENAAAAAAAAJNLY2BiLFy+Ozp07x9ixY1PnAABhTAMAAAAAAADJvPHGG/HFF1/Egw8+GBUVFalzAIAwpgEAAAAAAIAkDh06FM8//3xcddVVMXjw4NQ5AMA/GNMAAAAAAABAAkuXLo3GxsaYNGlS5HK51DkAwD8Y0wAAAAAAAEAL+/jjj2PTpk1x7733Rrdu3VLnAAD/wpgGAAAAAAAAWlB9fX3U1NREr1694q677kqdAwD8L8Y0AAAAAAAA0ILWrFkT+/fvj8mTJ0d5eXnqHADgfzGmAQAAAAAAgBayZ8+eWLt2bdx0000xcODA1DkAwA8wpgEAAAAAAIAWkGVZLFmyJNq2bRtVVVWpcwCAH2FMAwAAAAAAAC3gvffei08//TQqKyujY8eOqXMAgB9hTAMAAAAAAADN7Pjx41FXVxf9+/ePm2++OXUOAPATjGkAAAAAAACgma1YsSKOHTsWkydPjlwulzoHAPgJxjQAAAAAAADQjHbu3BlvvfVWjBgxInr37p06BwD4GcY0AAAAAAAA0EwaGxtj8eLF0aVLlxgzZkzqHADgDBjTAAAAAAAAQDN5/fXX48svv4yJEydGRUVF6hwA4AwY0wAAAAAAAEAzOHjwYKxatSp+85vfxG9/+9vUOQDAGTKmAQAAAAAAgGawbNmyaGxsjIkTJ0Yul0udAwCcIWMaAAAAAAAAaGIff/xxbNq0Ke69997o1q1b6hwA4CwY0wAAAAAAAEATOnXqVNTU1MTFF18cd911V+ocAOAsGdMAAAAAAABAE1q9enXs378/qquro7y8PHUOAHCWjGkAAAAAAACgifz973+PV155JYYNGxYDBw5MnQMAnANjGgAAAAAAAGgCWZbFokWLol27djF+/PjUOQDAOTKmAQAAAAAAgCawfv362LlzZzzwwAPRvn371DkAwDkypgEAAAAAAIDz9N1338Xy5cvj8ssvjxtvvDF1DgBwHoxpAAAAAAAA4DwtW7YsTp06FZMnT45cLpc6BwA4D8Y0AAAAAAAAcB62bt0aH3zwQdxzzz3Rs2fP1DkAwHkypgEAAAAAAIBzdOrUqViyZEn07NkzRo4cmToHAGgCxjQAAAAAAABwjtasWRP79++PKVOmRHl5eeocAKAJGNMAAAAAAADAOfjqq69i7dq1MXTo0Bg4cGDqHACgiRjTAAAAAAAAwFnKsiwWLVoUF1xwQYwfPz51DgDQhIxpAAAAAAAA4CytX78+/va3v0VVVVV06NAhdQ4A0ISMaQAAAAAAAOAsfPfdd7F8+fIYOHBgDBkyJHUOANDEjGkAAAAAAADgLDz77LNx6tSpmDx5cuRyudQ5AEATM6YBAAAAAACAM7Rt27Z4//33Y+TIkdGrV6/UOQBAMzCmAQAAAAAAgDNQX18fixcvjh49esTIkSNT5wAAzcSYBgAAAAAAAM7AmjVrYt++fTF58uRo3bp16hwAoJkY0wAAAAAAAMDP+Oqrr2Lt2rVx0003xa9//evUOQBAMzKmAQAAAAAAgJ+QZVksXrw4KioqoqqqKnUOANDMjGkAAAAAAADgJ7zzzjvx17/+NcaPHx8dO3ZMnQMANDNjGgAAAAAAAPgRR44cibq6urjsssti6NChqXMAgBZgTAMAAAAAAAA/4tlnn42TJ0/G5MmTI5fLpc4BAFqAMQ0AAAAAAAD8gG3btsV7770XI0eOjIsvvjh1DgDQQsrP5EO5XG5XRByJiNMR0ZBl2fXNGQUAAAAAAAAp1dfXx5IlS6JHjx5xzz33pM4BAFrQGY1p/uH2LMv2N1sJAAAAAAAA5Ik1a9bE3r174//+3/8brVu3Tp0DALQg1zwBAAAAAADAv9izZ0+sXbs2brzxxhg0aFDqHACghZ3pmCaLiFdyudyHuVzukR/6QC6XeySXy23M5XIb9+3b13SFAAAAAAAA0EKyLIvFixdH27Zt44EHHkidAwAkcKZjmmFZll0bEfdExP8nl8vd+r8/kGXZk1mWXZ9l2fXdu3dv0kgAAAAAAABoCe+8807s2LEjqqqqomPHjqlzAIAEzmhMk2XZV//4d29ErIiI3zVnFAAAAAAAALS0I0eORF1dXfzqV7+KoUOHps4BABL52TFNLpdrn8vlOv7P/yPi7oj4uLnDAAAAAAAAoCXV1dXFyZMnY8qUKZHL5VLnAACJlJ/BZ3pGxIp/PDCUR8SSLMtebtYqAAAAAAAAaEHbt2+Pd999N0aNGhUXX3xx6hwAIKGfHdNkWbYzIq5pgRYAAAAAAABocfX19bF48eLo3r17jBo1KnUOAJDYz17zBAAAAAAAAMXspZdeir1798bkyZOjdevWqXMAgMSMaQAAAAAAAChZe/bsiZdffjl+97vfxaBBg1LnAAB5wJgGAAAAAACAkpRlWSxcuDAqKipiwoQJqXMAgDxhTAMAAAAAAEBJevvtt+Nvf/tbVFVVRceOHVPnAAB5wpgGAAAAAACAknPo0KF47rnn4vLLL48hQ4akzgEA8ogxDQAAAAAAACVn6dKl0dDQEFOmTIlcLpc6BwDII8Y0AAAAAAAAlJTNmzfHpk2bYvTo0dGjR4/UOQBAnjGmAQAAAAAAoGScOHEiampq4pJLLom77rordQ4AkIeMaQAAAAAAACgZzz//fBw6dCimTp0a5eXlqXMAgDxkTAMAAAAAAEBJ2LVrV7zxxhsxfPjw6N+/f+ocACBPGdMAAAAAAABQ9E6fPh0LFy6Mzp07x/333586BwDIY8Y0AAAAAAAAFL1XX301vvzyy6iuro6KiorUOQBAHjOmAQAAAAAAoKjt27cvXnjhhRg8eHBcc801qXMAgDxnTAMAAAAAAEDRyrIsFi9eHK1atYqJEyemzgEACoAxDQAAAAAAAEXrvffei23btkVlZWV06dIldQ4AUACMaQAAAAAAAChKR44ciWXLlsWAAQPi1ltvTZ0DABQIYxoAAAAAAACKUl1dXZw4cSKmTJkSuVwudQ4AUCCMaQAAAAAAACg627Zti3fffTd+//vfxyWXXJI6BwAoIMY0AAAAAAAAFJVTp07FokWLokePHjFq1KjUOQBAgTGmAQAAAAAAoKi8+OKLsX///pg6dWq0bt06dQ4AUGCMaQAAAAAAACgaX375Zaxbty6GDRsWAwcOTJ0DABQgYxoAAAAAAACKQmNjYyxcuDDat28f48ePT50DABQoYxoAAAAAAACKwptvvhm7du2KBx98MNq3b586BwAoUMY0AAAAAAAAFLxvv/02Vq5cGVdeeWVcf/31qXMAgAJmTAMAAAAAAEBBy7IsampqIsuyqK6ujlwulzoJAChgxjQAAAAAAAAUtI8++ii2bNkSY8eOjW7duqXOAQAKnDENAAAAAAAABev48eNRU1MTffr0iTvuuCN1DgBQBIxpAAAAAAAAKFgrVqyII0eOxNSpU6OszNEXAHD+PFEAAAAAAABQkP7617/GW2+9FXfccUf07ds3dQ4AUCSMaQAAAAAAACg4DQ0NsWjRoujatWuMHTs2dQ4AUESMaQAAAAAAACg4L7/8cuzZsyeqq6ujbdu2qXMAgCJiTAMAAAAAAEBB+frrr+Oll16KG264Ia666qrUOQBAkTGmAQAAAAAAoGBkWRaLFi2KNm3axIQJE1LnAABFyJgGAAAAAACAgrF+/frYsWNHVFVVRadOnVLnAABFyJgGAAAAAACAgnDo0KGoq6uLyy+/PIYOHZo6BwAoUsY0AAAAAAAAFITa2to4ffp0TJkyJXK5XOocAKBIGdMAAAAAAACQ9zZt2hQfffRRjBkzJnr06JE6BwAoYsY0AAAAAAAA5LXjx49HTU1N9OnTJ+66667UOQBAkTOmAQAAAAAAIK8999xzcfTo0Zg2bVqUlTneAgCal6cNAAAAAAAA8tYnn3wS69evj7vuuisuvfTS1DkAQAkwpgEAAAAAACAv1dfXx8KFC6N79+4xZsyY1DkAQIkwpgEAAAAAACAvvfDCC7Fv376YOnVqtG7dOnUOAFAijGkAAAAAAADIO59//nmsW7cuhg0bFpdffnnqHACghBjTAAAAAAAAkFcaGxtjwYIF0aFDh6iqqkqdAwCUGGMaAAAAAAAA8sqrr74aX3zxRUyaNCnatWuXOgcAKDHGNAAAAAAAAOSNvXv3xqpVq+K3v/1tDB48OHUOAFCCjGkAAAAAAADIC1mWxaJFi6JVq1YxadKkyOVyqZMAgBJkTAMAAAAAAEBeeOedd+KTTz6Jqqqq6NKlS+ocAKBEGdMAAAAAAACQ3OHDh6Ouri4uu+yyuPnmm1PnAAAlzJgGAAAAAACA5Gpra+PUqVMxdepU1zsBAEkZ0wAAAAAAAJDUX/7yl9i0aVOMHj06evbsmToHAChxxjQAAAAAAAAk8/3330dNTU307t077r777tQ5AADGNAAAAAAAAKSzfPnyOHz4cEybNi1atWqVOgcAwJgGAAAAAACANHbs2BFvvfVW3HnnndG3b9/UOQAAEWFMAwAAAAAAQAL19fWxcOHC6NatW4wZMyZ1DgDAPxnTAAAAAAAA0OJWr14d33zzTUyZMiXatm2bOgcA4J+MaQAAAAAAAGhRX375ZaxduzaGDh0agwYNSp0DAPBvjGkAAAAAAABoMY2NjbFgwYJo3759VFVVpc4BAPgPxjQAAAAAAAC0mNdffz12794dEydOjPbt26fOAQD4D8Y0AAAAAAAAtIj9+/fHypUr4+qrr47rrrsudQ4AwA8ypgEAAAAAAKDZZVkWixYtilatWkV1dXXkcrnUSQAAP8iYBgAAAAAAgGb37rvvxrZt26KysjIuvPDC1DkAAD/KmAYAAAAAAIBm9d1338WyZctiwIABceutt6bOAQD4ScY0AAAAAAAANKulS5fGqVOnYtq0aa53AgDynjENAAAAAAAAzWbLli2xcePGuPfee6NXr16pcwAAfpYxDQAAAAAAAM3i+++/j8WLF8cll1wSd999d+ocAIAzYkwDAAAAAABAs3juuefi8OHDMX369CgvL0+dAwBwRoxpAAAAAAAAaHKffPJJvP3223HXXXdFv379UucAAJwxYxoAAAAAAACa1MmTJ2PBggXRo0ePGDNmTOocAICzYkwDAAAAAABAk1q1alXs378/pk6dGm3atEmdAwBwVoxpAAAAAAAAaDKfffZZvPbaa3HrrbfGwIEDU+cAAJw1YxoAAAAAAACaRENDQ8yfPz+6dOkS48ePT50DAHBOjGkAAAAAAABoEmvWrIk9e/bElClToqKiInUOAMA5MaYBAAAAAADgvH355Zfx0ksvxU033RRXXXVV6hwAgHNmTAMAAAAAAMB5aWxsjAULFkT79u1jwoQJqXMAAM6LMQ0AAAAAAADnZd26dbF79+6YNGlStG/fPnUOAMB5MaYBAAAAAADgnH3zzTfxwgsvxODBg+Paa69NnQMAcN6MaQAAAAAAADgnWZbFwoULo3Xr1jFp0qTI5XKpkwAAzpsxDQAAAAAAAOfkT3/6U+zYsSMeeOCB6Ny5c+ocAIAmYUwDAAAAAADAWTtw4EAsX748rrjiihgyZEjqHACAJmNMAwAAAAAAwFnJsiwWL14cERFTpkxxvRMAUFSMaQAAAAAAADgr7733XmzdujXuv//+6Nq1a+ocAIAmZUwDAAAAAADAGfvuu+9i6dKlMWDAgLjttttS5wAANDljGgAAAAAAAM5YTU1NnDp1KqZPn+56JwCgKBnTAAAAAAAAcEY++uij2LRpU4wePTp69uyZOgcAoFkY0wAAAAAAAPCzjh07FkuWLIk+ffrE3XffnToHAKDZGNMAAAAAAADws+rq6uLo0aMxffr0aNWqVeocAIBmY0wDAAAAAADAT9q6dWu88847MXLkyOjTp0/qHACAZmVMAwAAAAAAwI86ceJELFq0KHr16hWjRo1KnQMA0OyMaQAAAAAAAPhRK1asiIMHD8b06dOjdevWqXMAAJqdMQ0AAAAAAAA/aMeOHfHmm2/GiBEjon///qlzAABahDENAAAAAAAA/6G+vj4WLlwYXbt2jXHjxqXOAQBoMcY0AAAAAAAA/IcXXnghvvnmm5g6dWq0bds2dQ4AQIsxpgEAAAAAAODf7N69O9atWxfDhg2LQYMGpc4BAGhRxjQAAAAAAAD80+nTp2PBggXRsWPHqKqqSp0DANDijGkAAAAAAAD4p7Vr18aXX34ZkydPjnbt2qXOAQBoccY0AAAAAAAARETEV199FatXr47rr78+rrnmmtQ5AABJGNMAAAAAAAAQjY2NMX/+/KioqIiJEyemzgEASMaYBgAAAAAAgFi3bl3s2rUrJk2aFB07dkydAwCQjDENAAAAAABAifv6669j1apVMXjw4LjuuutS5wAAJGVMAwAAAAAAUML+53qntm3bRnV1deRyudRJAABJGdMAAAAAAACUsNdffz127twZDz74YHTq1Cl1DgBAcsY0AAAAAAAAJWrv3r2xcuXKuPrqq+N3v/td6hwAgLxgTAMAAAAAAFCCsiyLBQsWROvWrWPy5MmudwIA+AdjGgAAAAAAgBL05ptvxo4dO+KBBx6ILl26pM4BAMgbxjQAAAAAAAAlZt++fbF8+fK46qqrYsiQIalzAADyijENAAAAAABACfmf653KyspiypQprncCAPhfjGkAAAAAAABKyFtvvRWffvppPPDAA3HhhRemzgEAyDvGNAAAAAAAACXiwIED8dxzz8WgQYNi2LBhqXMAAPKSMQ0AAAAAAEAJyLIsFi5cGBERU6dOdb0TAMCPMKYBAAAAAAAoAevXr49t27ZFVVVVdO3aNXUOAEDeMqYBAAAAAAAocgcPHoy6urq4/PLL45ZbbkmdAwCQ14xpAAAAAAAAitj/XO/U2NgY06ZNc70TAMDPMKYBAAAAAAAoYn/+859j69atUVlZGd26dUudAwCQ94xpAAAAAAAAitShQ4di2bJlcdlll8Vtt92WOgcAoCAY0wAAAAAAABShLMti8eLF0dDQ4HonAICzYEwDAAAAAABQhN5///3YsmVL3HfffdGjR4/UOQAABcOYBgAAAAAAoMh89913UVtbG/37948RI0akzgEAKCjGNAAAAAAAAEXkf653OnXqVEyfPj3KyhwHAQCcDU9PAAAAAAAARWTjxo3xl7/8JcaNGxe9evVKnQMAUHCMaQAAAAAAAIrEkSNHoqamJvr16xd33nln6hwAgIJkTAMAAAAAAFAkampq4uTJkzFjxgzXOwEAnCNPUQAAAAAAAEVg06ZN8eGHH8bo0aPj4osvTp0DAFCwjGkAAAAAAAAK3NGjR2PJkiVx6aWXxt133506BwCgoBnTAAAAAAAAFLja2to4fvx4TJ8+PVq1apU6BwCgoBnTAAAAAAAAFLDNmzfHBx98EKNGjYrevXunzgEAKHjGNAAAAAAAAAXq2LFjsWjRoujdu3fcc889qXMAAIqCMQ0AAAAAAECBWrZsWRw9ejRmzJjheicAgCZiTAMAAAAAAFCANm/eHO+++26MGjUq+vTpkzoHAKBoGNMAAAAAAAAUGNc7AQA0H2MaAAAAAACAAlNTU/PP653Ky8tT5wAAFBVjGgAAAAAAgALy0UcfxQcffBD33nuv650AAJqBMQ0AAAAAAECBOHLkSCxevDj69OnjeicAgGZiTAMAAAAAAFAgamtr4/jx4zFz5sxo1apV6hwAgKJkTAMAAAAAAFAAPvzww9i4cWOMHj06fvGLX6TOAQAoWsY0AAAAAAAAee7IkSOxZMmS6Nu3b4wcOTJ1DgBAUTOmAQAAAAAAyGNZlsWSJUvixIkTMWPGjCgrc7wDANCcPG0BAAAAAADksY0bN8amTZti7Nixcckll6TOAQAoesY0AAAAAAAAeeq7776Lmpqa+OUvfxl33XVX6hwAgJJgTAMAAAAAAJCHsiyLRYsWxcmTJ13vBADQgjx1AQAAAAAA5KH3338/Nm/eHOPGjYtevXqlzgEAKBnGNAAAAAAAAHnm8OHDUVtbG/37948777wzdQ4AQEkxpgEAAAAAAMgj/3O9U319veudAAAS8PQFAAAAAACQR957773YsmVL3HfffdGzZ8/UOQAAJceYBgAAAAAAIE8cOnQoamtr41e/+lWMGDEidQ4AQEkypgEAAAAAAMgDWZbFwoULo6GhIaZPn+56JwCARDyFAQAAAAAA5IE///nP8fHHH8f48eOjR48eqXMAAEqWMQ0AAAAAAEBiBw8ejKVLl8bAgQPjtttuS50DAFDSjGkAAAAAAAASyrIsFixYEFmWxfTp0yOXy6VOAgAoacY0AAAAAAAACa1fvz7++7//OyorK6Nbt26pcwAASp4xDQAAAAAAQCIHDhyIurq6+PWvfx3Dhw9PnQMAQBjTAAAAAAAAJPGv1ztNmzbN9U4AAHnCmAYAAAAAACCBt99+O7Zv3x5VVVXRtWvX1DkAAPyDMQ0AAAAAAEAL279/f9TV1cWgQYPilltuSZ0DAMC/MKYBAAAAAABoQf9zvVMul3O9EwBAHjKmAQAAAAAAaEF/+tOf4pNPPokHHnggLrrootQ5AAD8L8Y0AAAAAAAALWTfvn3x3HPPxZVXXhnDhg1LnQMAwA8wpgEAAAAAAGgBWZbF/Pnzo1WrVjF16lTXOwEA5CljGgAAAAAAgBbw+uuvx44dO2LChAlx4YUXps4BAOBHGNMAAAAAAAA0s6+//jpWrFgRV199dQwZMiR1DgAAP8GYBgAAAAAAoBk1NjbG008/HW3atHG9EwBAATCmAQAAAAAAaEYvv/xy7Nq1KyZPnhydOnVKnQMAwM8wpgEAAAAAAGgmX3zxRbz44otxww03xHXXXZc6BwCAM2BMAwAAAAAA0AwaGhri6aefjvbt28ekSZNS5wAAcIaMaQAAAAAAAJrBiy++GH//+99j2rRp0b59+9Q5AACcIWMaAAAAAACAJrZz5854+eWXY9iwYfGb3/wmdQ4AAGfBmAYAAAAAAKAJnTp1Kp5++um46KKLYsKECalzAAA4S8Y0AAAAAAAATWj58uWxd+/emD59elRUVKTOAQDgLBnTAAAAAAAANJHt27fHG2+8ESNGjIjLL788dQ4AAOfAmAYAAAAAAKAJnDhxIubPnx89e/aM+++/P3UOAADnyJgGAAAAAACgCSxbtiwOHjwYM2bMiDZt2qTOAQDgHBnTAAAAAAAAnKctW7bEhg0bYuTIkdG/f//UOQAAnAdjGgAAAAAAgPNw7NixWLhwYfTu3TtGjx6dOgcAgPNkTAMAAAAAAHAelixZEseOHYuZM2dGeXl56hwAAM6TMQ0AAAAAAMA52rhxY2zcuDFGjx4dvXv3Tp0DAEATMKYBAAAAAAA4B4cPH44lS5ZEv379YuTIkalzAABoIsY0AAAAAAAAZynLsli0aFGcOnUqZs6cGWVljlwAAIqFJzsAAAAAAICz9Oc//zm2bNkS999/f/Tq1St1DgAATciYBgAAAAAA4CwcOHAgli5dGgMHDowRI0akzgEAoIkZ0wAAAAAAAJyhLMtiwYIFkWVZTJ8+PXK5XOokAACamDENAAAAAADAGXrzzTdj+/bt8cADD0S3bt1S5wAA0AyMaQAAAAAAAM7AN998E88991xcddVVcfPNN6fOAQCgmRjTAAAAAAAA/IzGxsZ45plnonXr1jF16lTXOwEAFDFjGgAAAAAAgJ+xbt262LlzZ0yaNCm6dOmSOgcAgGZkTAMAAAAAAPAT/v73v8eqVavi2muvjRtuuCF1DgAAzcyYBgAAAAAA4Ec0NDTE008/HRdccEFUV1e73gkAoAQY0wAAAAAAAPyI1atXxxdffBFTp06Njh07ps4BAKAFGNMAAAAAAAD8gF27dsXLL78cQ4YMiWuuuSZ1DgAALcSYBgAAAAAA4H85depUzJs3Lzp37hwTJkxInQMAQAsypgEAAAAAAPhfli9fHt98803MmDEj2rVrlzoHAIAWZEwDAAAAAADwL7Zt2xZvvPFG3HHHHfHrX/86dQ4AAC3MmAYAAAAAAOAfjh8/Hs8880xcfPHFcf/996fOAQAgAWMaAAAAAACAf1iyZEl89913MXPmzGjdunXqHAAAEjCmAQAAAAAAiIiNGzfGBx98EKNHj46+ffumzgEAIBFjGgAAAAAAoOQdOnQoFi9eHL/85S/jnnvuSZ0DAEBCxjQAAAAAAEBJy7IsFixYEPX19TFz5swoK3N8AgBQyjwNAgAAAAAAJe1Pf/pTbN26NaqqqqJnz56pcwAASMyYBgAAAAAAKFnffPNN1NXVxZVXXhnDhw9PnQMAQB4wpgEAAAAAAEpSY2NjzJs3L1q3bh3Tpk2LXC6XOgkAgDxgTAMAAAAAAJSkNWvWxK5du2Ly5MnRpUuX1DkAAOQJYxoAAAAAAKDk7N69O1avXh2/+93v4vrrr0+dAwBAHjGmAQAAAAAASkp9fX3MmzcvOnXqFJMmTUqdAwBAnjGmAQAAAAAASsry5cvj66+/jhkzZkS7du1S5wAAkGeMaQAAAAAAgJKxbdu2eP311+P222+PQYMGpc4BACAPGdMAAAAAAAAl4fjx4zF//vzo2bNnVFZWps4BACBPGdMAAAAAAAAloba2Ng4fPhyzZs2KNm3apM4BACBPGdMAAAAAAABF78MPP4z33nsv7r333ujXr1/qHAAA8pgxDQAAAAAAUNQOHToUixcvjn79+sU999yTOgcAgDxnTAMAAAAAABStLMtiwYIFcerUqZg1a1a0atUqdRIAAHnOmAYAAAAAAChab731VmzdujWqqqqiZ8+eqXMAACgAxjQAAAAAAEBR2rt3b9TV1cUVV1wRw4cPT50DAECBMKYBAAAAAACKTmNjY8ybNy/Ky8tj+vTpkcvlUicBAFAgjGkAAAAAAICi8/LLL8dnn30W1dXV0aVLl9Q5AAAUEGMaAAAAAACgqOzevTteeOGFuOGGG+KGG25InQMAQIExpgEAAAAAAIpGfX19PP3009GpU6eYNGlS6hwAAAqQMQ0AAAAAAFA0VqxYEXv27Inp06dH+/btU+cAAFCAjGkAAAAAAICisH379njttdfitttuiyuuuCJ1DgAABcqYBgAAAAAAKHjHjx+PZ555Jnr27Bnjx49PnQMAQAEzpgEAAAAAAApeTU1NHD58OGbNmhVt2rRJnQMAQAEzpgEAAAAAAAra+++/H++//36MHj06+vXrlzoHAIACZ0wDAAAAAAAUrG+//TaWLFkS/fv3j3vuuSd1DgAARcCYBgAAAAAAKEiNjY3x9NNPR2NjY8yaNSvKyhx7AABw/jxVAgAAAAAABenVV1+NTz/9NCZOnBjdu3dPnQMAQJEwpgEAAAAAAArOF198EStXrozBgwfHkCFDUucAAFBEjGkAAAAAAICCUl9fH3Pnzo0OHTrElClTIpfLpU4CAKCIGNMAAAAAAAAFZfny5bFnz56YPn16dOjQIXUOAABFxpgGAAAAAAAoGFu3bo3XX389RowYEVdeeWXqHAAAipAxDQAAAAAAUBCOHTsW8+fPj4svvjgqKytT5wAAUKSMaQAAAAAAgLyXZVksXLgwjh49GrNnz47WrVunTgIAoEgZ0wAAAAAAAHnvz3/+c3z00Udx3333RZ8+fVLnAABQxIxpAAAAAACAvLZ///6ora2NgQMHxp133pk6BwCAImdMAwAAAAAA5K3GxsaYN29elJWVxcyZM6OszNEGAADNyxMnAAAAAACQt15++eX429/+FpMnT46LLroodQ4AACXAmAYAAAAAAMhLu3btihdeeCF+97vfxQ033JA6BwCAEmFMAwAAAAAA5J2TJ0/G3Llzo3PnzjFp0qTUOQAAlBBjGgAAAAAAIO/U1dXFvn37YtasWdGuXbvUOQAAlBBjGgAAAAAAIK9s2bIl3nrrrbj77rtj4MCBqXMAACgxxjQAAAAAAEDe+O6772LBggXRp0+fGDt2bOocAABKkDENAAAAAACQF7IsiwULFsT3338fs2bNivLy8tRJAACUIGMaAAAAAAAgL7z99tvxX//1XzF+/Pi45JJLUucAAFCiznhMk8vlWuVyuY9yudyLzRkEAAAAAACUnm+++SaWLVsWV1xxRdx+++2pcwAAKGFn85dp/r8Rsa25QgAAAAAAgNJ0+vTpmDt3brRp0yamT58euVwudRIAACXsjMY0uVyud0TcGxFPNW8OAAAAAABQal588cXYvXt3TJ06Nbp06ZI6BwCAEnemf5nm/42I/19ENP7YB3K53CO5XG5jLpfbuG/fvqZoAwAAAAAAitzf/va3eOmll2Lo0KExePDg1DkAAPDzY5pcLjc6IvZmWfbhT30uy7Insyy7Psuy67t3795kgQAAAAAAQHE6ceJEzJs3L7p27RoPPvhg6hwAAIiIM/vLNMMiYmwul9sVEbURMSKXyy1q1ioAAAAAAKDoLV26NA4cOBCzZs2KioqK1DkAABARZzCmybLs/8myrHeWZf0iYmJEvJ5l2ZRmLwMAAAAAAIrWpk2b4p133olRo0bFgAEDUucAAMA/nclfpgEAAAAAAGgyBw8ejIULF0a/fv3i3nvvTZ0DAAD/pvxsPpxl2ZsR8WazlAAAAAAAAEWvsbEx5s2bF6dPn47Zs2dHq1atUicBAMC/8ZdpAAAAAACAFvPKK6/Ep59+GhMnTowePXqkzgEAgP9gTAMAAAAAALSIXbt2xfPPPx/XXXddDBkyJHUOAAD8IGMaAAAAAACg2Z08eTLmzp0bnTt3jilTpkQul0udBAAAP8iYBgAAAAAAaHZLly6Nffv2xaxZs6Jdu3apcwAA4EcZ0wAAAAAAAM1q06ZNsWHDhhg5cmQMHDgwdQ4AAPwkYxoAAAAAAKDZHDx4MBYuXBj9+vWLMWPGpM4BAICfZUwDAAAAAAA0i8bGxpg3b16cPn06Zs+eHa1atUqdBAAAP8uYBgAAAAAAaBavvPJKfPrppzFx4sTo0aNH6hwAADgjxjQAAAAAAECT27VrVzz//PNx3XXXxZAhQ1LnAADAGTOmAQAAAAAAmtTJkydj7ty50blz55gyZUrkcrnUSQAAcMaMaQAAAAAAgCa1dOnS2LdvX8yaNSvatWuXOgcAAM6KMQ0AAAAAANBkNm3aFBs2bIiRI0fGwIEDU+cAAMBZM6YBAAAAAACaxMGDB2PhwoXRr1+/GDNmTOocAAA4J8Y0AAAAAADAeWtsbIx58+bF6dOnY/bs2dGqVavUSQAAcE6MaQAAAAAAgPP2yiuvxKeffhoTJ06MHj16pM4BAIBzZkwDAAAAAACcl127dsXzzz8f1113XQwZMiR1DgAAnBdjGgAAAAAA4JydPHky5s6dG507d44pU6ZELpdLnQQAAOfFmAYAAAAAADhnS5cujX379sWsWbOiXbt2qXMAAOC8GdMAAAAAAADnZNOmTbFhw4YYOXJkDBw4MHUOAAA0CWMaAAAAAADgrB08eDAWLlwY/fr1izFjxqTOAQCAJmNMAwAAAAAAnJXGxsaYN29enD59OmbPnh2tWrVKnQQAAE3GmAYAAAAAADgrr7zySnz66acxceLE6NGjR+ocAABoUsY0AAAAAADAGdu9e3c8//zzcd1118WQIUNS5wAAQJMzpgEAAAAAAM7IyZMn46mnnorOnTvHlClTIpfLpU4CAIAmZ0wDAAAAAACckaVLl8a+ffti1qxZ0a5du9Q5AADQLIxpAAAAAACAn7Vp06bYsGFDjBw5MgYOHJg6BwAAmo0xDQAAAAAA8JMOHjwYCxcujH79+sWYMWNS5wAAQLMypgEAAAAAAH5UY2NjzJ07N06fPh2zZ8+OVq1apU4CAIBmZUwDAAAAAAD8qDVr1sSOHTti8uTJ0aNHj9Q5AADQ7IxpAAAAAACAH/TXv/41XnzxxbjpppvixhtvTJ0DAAAtwpgGAAAAAAD4D8ePH4+nnnoqunfvHpMmTUqdAwAALcaYBgAAAAAA+DdZlsXChQvj8OHD8dBDD0VFRUXqJAAAaDHGNAAAAAAAwL9Zv359bNq0Ke6///7o27dv6hwAAGhRxjQAAAAAAMA/7dmzJ5YuXRqDBg2Ku+66K3UOAAC0OGMaAAAAAAAgIiLq6+tjzpw5UVFREbNmzYpcLpc6CQAAWpwxDQAAAAAAEBERzz33XPz973+PGTNmRKdOnVLnAABAEsY0AAAAAABAbN68Od544424884746qrrkqdAwAAyRjTAAAAAABAiTt06FDMnz8/Lr300rj//vtT5wAAQFLGNAAAAAAAUMIaGxtj3rx50dDQEA899FCUl5enTgIAgKSMaQAAAAAAoIStXbs2Pvnkk5g4cWL07NkzdQ4AACRnTAMAAAAAACVq586dsWrVqrjhhhtiyJAhqXMAACAvGNMAAAAAAEAJOn78eDz11FNx0UUXxeTJkyOXy6VOAgCAvGBMAwAAAAAAJSbLsli8eHEcPHgwHnroobjgggtSJwEAQN4wpgEAAAAAgBLzzjvvxMaNG2PcuHHxy1/+MnUOAADkFWMaAAAAAAAoId98803U1tbGr3/96/j973+fOgcAAPKOMQ0AAAAAAJSIhoaGmDNnTrRu3TpmzpwZuVwudRIAAOQdYxoAAAAAACgRy5cvjy+++CJmzJgRXbp0SZ0DAAB5yZgGAAAAAABKwH/913/Fa6+9FiNGjIirr746dQ4AAOQtYxoAAAAAAChyhw8fjmeeeSZ69+4dlZWVqXMAACCvGdMAAAAAAEARy7Is5s2bF6dOnYqHH344WrdunToJAADymjENAAAAAAAUsVdeeSW2b98eEydOjF69eqXOAQCAvGdMAwAAAAAARWrXrl2xcuXKuP7662Po0KGpcwAAoCAY0wAAAAAAQBE6ceJEzJkzJy688MKYPHly5HK51EkAAFAQjGkAAAAAAKDIZFkWixcvjm+//TZmz54d7dq1S50EAAAFw5gGAAAAAACKzHvvvRfvv/9+jBkzJgYMGJA6BwAACooxDQAAAAAAFJFvvvkmlixZEgMHDoyRI0emzgEAgIJjTAMAAAAAAEWivr4+nnzyyWjdunXMnj07ysocAwAAwNnyFA0AAAAAAEWirq4uvvzyy5g5c2Z06dIldQ4AABQkYxoAAAAAACgCmzZtijfffDPuvvvuuOqqq1LnAABAwTKmAQAAAACAAnfgwIFYsGBB9OvXL8aNG5c6BwAACpoxDQAAAAAAFLDTp0/HU089FRERDz/8cJSXlycuAgCAwmZMAwAAAAAABez555+PnTt3xrRp06Jbt26pcwAAoOAZ0wAAAAAAQIHaunVrrF27Nm699da49tprU+cAAEBRMKYBAAAAAIACdOjQoXj66aejd+/eMWHChNQ5AABQNIxpAAAAAACgwDQ2Nsa8efPi5MmT8fDDD0fr1q1TJwEAQNEwpgEAAAAAgALz0ksvxSeffBKTJk2KXr16pc4BAICiYkwDAAAAAAAFZMeOHfHCCy/EjTfeGEOGDEmdAwAARceYBgAAAAAACsTRo0fjqaeeiu7du0d1dXXkcrnUSQAAUHSMaQAAAAAAoABkWRbz58+Po0ePxiOPPBIVFRWpkwAAoCgZ0wAAAAAAQAF47bXXYsuWLVFVVRV9+vRJnQMAAEXLmAYAAAAAAPLc7t27Y/ny5fHb3/42brvtttQ5AABQ1IxpAAAAAAAgj33//ffx5JNPRufOnWPatGmRy+VSJwEAQFEzpgEAAAAAgDyVZVksWrQovv3223jooYeiffv2qZMAAKDoGdMAAAAAAECeWr9+fWzcuDHGjh0bAwYMSJ0DAAAlwZgGAAAAAADy0FdffRVLly6NQYMGxciRI1PnAABAyTCmAQAAAACAPHPq1Kl48skn44ILLohZs2ZFLpdLnQQAACXDmAYAAAAAAPJMbW1tfP311zFr1qzo1KlT6hwAACgpxjQAAAAAAJBHPvjgg9iwYUOMHDkyBg0alDoHAABKjjENAAAAAADkib1798bChQtjwIABMXbs2NQ5AABQkoxpAAAAAAAgDzQ0NMScOXOiVatW8dBDD0VZmVf4AACQgidxAAAAAADIA8uXL4/PP/88ZsyYERdddFHqHAAAKFnGNAAAAAAAkNjmzZvjtddeixEjRsQ111yTOgcAAEqaMQ0AAAAAACT07bffxvz58+PSSy+N8ePHp84BAICSZ0wDAAAAAACJnD59OubMmROnT5+Ohx9+OMrLy1MnAQBAyTOmAQAAAACARFauXBk7d+6MqVOnRo8ePVLnAAAAYUwDAAAAAABJbNmyJV555ZW47bbb4vrrr0+dAwAA/IMxDQAAAAAAtLADBw7E008/HX369ImqqqrUOQAAwL8wpgEAAAAAgBbU0NAQc+bMicbGxnj00UejdevWqZMAAIB/YUwDAAAAAAAtaOXKlfHZZ5/FtGnTonv37qlzAACA/8WYBgAAAAAAWsjmzZtj3bp1cdttt8V1112XOgcAAPgBxjQAAAAAANACDhw4EM8880xceuml8cADD6TOAQAAfoQxDQAAAAAANLOGhoaYM2dONDY2xiOPPBLl5eWpkwAAgB9hTAMAAAAAAM1sxYoV8dlnn8X06dOje/fuqXMAAICfYEwDAAAAAADNaPPmzfHqq6/G7bffHtdee23qHAAA4GcY0wAAAAAAQDM5cOBAPPPMM3HppZdGVVVV6hwAAOAMGNMAAAAAAEAzaGhoiCeffDIaGxvjkUceifLy8tRJAADAGTCmAQAAAACAZrBixYrYtWtXTJ8+Pbp37546BwAAOEPGNAAAAAAA0MQ2b94cr776atx+++1x7bXXps4BAADOgjENAAAAAAA0oQMHDsQzzzwTffv2jaqqqtQ5AADAWTKmAQAAAACAJtLQ0BBPPvlkZFkWjzzySJSXl6dOAgAAzpIxDQAAAAAANJHly5fHrl27Yvr06dGtW7fUOQAAwDkwpgEAAAAAgCbwl7/8JV577bUYMWJEDB48OHUOAABwjoxpAAAAAADgPO3fvz/mz58fffv2jfHjx6fOAQAAzoMxDQAAAAAAnIeGhoaYM2dOZFkWjzzySJSXl6dOAgAAzoMxDQAAAAAAnIfly5fHrl27Yvr06dGtW7fUOQAAwHkypgEAAAAAgHP00UcfxWuvvRZ33HFHDB48OHUOAADQBIxpAAAAAADgHOzfvz/mz58f/fr1i8rKytQ5AABAEzGmAQAAAACAs9TQ0BBPPvlkREQ8/PDDUV5enrgIAABoKsY0AAAAAABwlp577rnYvXt3TJ8+Pbp165Y6BwAAaELGNAAAAAAAcBY++uijeP311+OOO+6IwYMHp84BAACamDENAAAAAACcob1798YzzzwT/fr1i8rKytQ5AABAMzCmAQAAAACAM1BfXx9PPPFEtGrVKh555JEoLy9PnQQAADQDYxoAAAAAADgDNTU18eWXX8asWbOia9euqXMAAIBmYkwDAAAAAAA/45133okNGzbEqFGj4qqrrkqdAwAANCNjGgAAAAAA+Al///vfY8mSJXH55ZfHmDFjUucAAADNzJgGAAAAAAB+xIkTJ+Lxxx+Pdu3axUMPPRRlZV6rAwBAsfPUDwAAAAAAPyDLsliwYEHs378/Hn744ejUqVPqJAAAoAUY0wAAAAAAwA9444034sMPP4z77rsvLrvsstQ5AABACzGmAQAAAACA/2Xnzp1RV1cX11xzTdx9992pcwAAgBZkTAMAAAAAAP/i2LFj8eSTT0aXLl1ixowZkcvlUicBAAAtyJgGAAAAAAD+IcuymDt3bhw5ciQeffTRaNeuXeokAACghRnTAAAAAADAP7z00kuxdevWePDBB6Nv376pcwAAgASMaQAAAAAAICK2b98eq1atihtvvDFuueWW1DkAAEAixjQAAAAAAJS8Q4cOxVNPPRW9evWKyZMnRy6XS50EAAAkYkwDAAAAAEBJO336dMyZMydOnToVjz76aLRt2zZ1EgAAkJAxDQAAAAAAJW3lypXx17/+NaZMmRIXX3xx6hwAACAxYxoAAAAAAErW5s2b45VXXonhw4fH7373u9Q5AABAHjCmAQAAAACgJO3fvz+efvrp6Nu3b0yYMCF1DgAAkCeMaQAAAAAAKDn19fXx+OOPRy6Xi0cffTTKy8tTJwEAAHnCmAYAAAAAgJKzbNmy+OKLL2LmzJnRtWvX1DkAAEAeMaYBAAAAAKCkvPvuu/HWW2/FyJEj4+qrr06dAwAA5BljGgAAAAAASsZXX30VixcvjoEDB8a4ceNS5wAAAHnImAYAAAAAgJJw4sSJePzxx6OioiIeeuihKCvzihwAAPhPfikAAAAAAFD0siyLRYsWxd69e+Phhx+Ozp07p04CAADylDENAAAAAABF709/+lN88MEHMW7cuBg4cGDqHAAAII8Z0wAAAAAAUNR27doVy5Yti9/85jcxcuTI1DkAAECeM6YBAAAAAKBoHTt2LJ588sno0qVLzJw5M3K5XOokAAAgzxnTAAAAAABQlBobG2Pu3Llx+PDheOSRR6J9+/apkwAAgAJgTAMAAAAAQFFavXp1bN26NR588MHo169f6hwAAKBAGNMAAAAAAFB0Pv7441i9enUMGTIkbrnlltQ5AABAATGmAQAAAACgqOzfvz/mzp0bv/jFL6K6ujpyuVzqJAAAoIAY0wAAAAAAUDTq6+vjiSeeiCzL4rHHHos2bdqkTgIAAAqMMQ0AAAAAAEWjpqYmPv/885g1a1Z07949dQ4AAFCAjGkAAAAAACgK69evjw0bNsSoUaPi6quvTp0DAAAUKGMaAAAAAAAK3u7du6OmpiauuOKKGDNmTOocAACggBnTAAAAAABQ0I4dOxZPPPFEdOrUKWbPnh1lZV59AwAA584vCgAAAAAAClZjY2PMnTs3Dh8+HI8++mh06NAhdRIAAFDgjGkAAAAAAChYq1evjq1bt8aDDz4Y/fr1S50DAAAUAWMaAAAAAAAK0scffxyrV6+OIUOGxC233JI6BwAAKBLGNAAAAAAAFJz9+/fH3Llz4xe/+EVUV1dHLpdLnQQAABQJYxoAAAAAAApKfX19PPHEE5FlWTz22GPRpk2b1EkAAEARMaYBAAAAAKCg1NTUxOeffx6zZs2K7t27p84BAACKjDENAAAAAAAFY8OGDbFhw4YYNWpUXH311alzAACAImRMAwAAAABAQdi9e3csWbIkBg0aFGPGjEmdAwAAFCljGgAAAAAA8t6xY8fiiSeeiI4dO8ZDDz0UZWVebwMAAM3Drw0AAAAAAPJalmUxb968OHz4cDz22GPRoUOH1EkAAEARM6YBAAAAACCvrV69Oj7++ON48MEHo1+/fqlzAACAImdMAwAAAABA3tq6dWu8+OKLcdNNN8Utt9ySOgcAACgBxjQAAAAAAOSlAwcOxFNPPRW/+MUvYvLkyZHL5VInAQAAJcCYBgAAAACAvFNfXx9PPPFEZFkWjz32WLRp0yZ1EgAAUCKMaQAAAAAAyDu1tbWxe/fumDVrVnTv3j11DgAAUEKMaQAAAAAAyCsbNmyI9evXxz333BNXX3116hwAAKDEGNMAAAAAAJA3Pv/881iyZEkMGjQoxo4dmzoHAAAoQcY0AAAAAADkhaNHj8bjjz8eHTt2jNmzZ0dZmVfYAABAy/NLBAAAAACA5BobG+Opp56Kw4cPxx/+8Ifo2LFj6iQAAKBEGdMAAAAAAJDcypUrY9u2bVFdXR19+/ZNnQMAAJQwYxoAAAAAAJLatGlTrF27Nm699dYYNmxY6hwAAKDEGdMAAAAAAJDMV199Fc8880z0798/HnzwwdQ5AAAAxjQAAAAAAKTx/fffxx//+Mdo27ZtPProo1FeXp46CQAAwJgGAAAAAICWl2VZzJs3L/bv3x+PPPJIdOnSJXUSAABARBjTAAAAAACQwJo1a2LLli0xYcKEuOyyy1LnAAAA/JMxDQAAAAAALerjjz+OF154IW666aa47bbbUucAAAD8G2MaAAAAAABazN69e+Opp56K3r17x5QpUyKXy6VOAgAA+DfGNAAAAAAAtIiTJ0/GH//4xygrK4s//OEP0bp169RJAAAA/8GYBgAAAACAZpdlWSxYsCD27NkTDz/8cHTt2jV1EgAAwA8ypgEAAAAAoNm9+uqrsXHjxrj//vtj0KBBqXMAAAB+lDENAAAAAADNavv27fHcc8/FtddeG3fffXfqHAAAgJ9kTAMAAAAAQLP59ttvY86cOdGrV6+YPn165HK51EkAAAA/yZgGAAAAAIBmUV9fH48//ng0NDTEH/7wh6ioqEidBAAA8LOMaQAAAAAAaHJZlkVNTU3s3r07Zs2aFT179kydBAAAcEaMaQAAAAAAaHJvv/12bNiwIe6999645pprUucAAACcMWMaAAAAAACa1M6dO6O2tjauuuqqGD16dOocAACAs2JMAwAAAABAk/nuu+/iiSeeiIsuuihmz54dZWVeQwMAAIXFrxgAAAAAAJpEQ0NDPPHEE3H8+PF47LHHol27dqmTAAAAzpoxDQAAAAAATaKuri7++te/xrRp06J3796pcwAAAM6JMQ0AAAAAAOft3XffjTfeeCPuvPPOuOGGG1LnAAAAnDNjGgAAAAAAzssXX3wRixYtioEDB8b48eNT5wAAAJwXYxoAAAAAAM7ZsWPH4o9//GN06NAhHnnkkSgr89oZAAAobH7VAAAAAABwThobG2POnDlx+PDheOyxx6Jjx46pkwAAAM6bMQ0AAAAAAOdkxYoVsW3btqiuro5+/fqlzgEAAGgSxjQAAAAAAJy1999/P1555ZW47bbbYtiwYalzAAAAmowxDQAAAAAAZ+Xzzz+PBQsWxGWXXRYTJkxInQMAANCkjGkAAAAAADhjR44ciT/+8Y/RoUOHePTRR6NVq1apkwAAAJqUMQ0AAAAAAGfk9OnT8eSTT8aRI0fiD3/4Q3Ts2DF1EgAAQJMzpgEAAAAA4Iw8++yz8emnn8bUqVOjb9++qXMAAACahTENAAAAAAA/65133ok33ngj7rrrrrjxxhtT5wAAADQbYxoAAAAAAH7SZ599FosXL45BgwZFZWVl6hwAAIBmZUwDAAAAAMCPOnz4cDz++OPRpUuXePjhh6OszGtlAACguPnVAwAAAADAD2poaIjHH388jh8/Hv/n//yfaN++feokAACAZmdMAwAAAADAf8iyLGpqamLnzp0xc+bM+MUvfpE6CQAAoEUY0wAAAAAA8B/eeuutWL9+fdxzzz1x7bXXps4BAABoMcY0AAAAAAD8mx07dkRtbW385je/ibFjx6bOAQAAaFHGNAAAAAAA/NPBgwfjiSeeiO7du8esWbOirMxrZAAAoLT4FQQAAAAAQERE1NfXxx//+Meor6+PP/zhD9GuXbvUSQAAAC3OmAYAAAAAgMiyLBYuXBi7d++O2bNnx8UXX5w6CQAAIAljGgAAAAAA4rXXXov33nsvxo4dG1dffXXqHAAAgGSMaQAAAAAASty2bduirq4uBg8eHKNGjUqdAwAAkJQxDQAAAABACdu/f3/MmTMnLr744pgxY0bkcrnUSQAAAEkZ0wAAAAAAlKiTJ0/G/5+9Pwu2sjzQPu5rbdiAIKggIAKiEG0VE6PRqNhO0eDUGGeJGkGCzDMxb9d38tV33lGRGQRUBEEco8R5CEqMijgSCAZUoog4MCgIAnt9B2/ernTaRNS9efbw+1VRBexVu67T567/eu5JkyalXC5n8ODBadasWdGTAAAACiemAQAAAABogMrlcm677basXbs2/fv3T7t27YqeBAAAUCuIaQAAAAAAGqBHHnkkL7/8ci6++OJ079696DkAAAC1hpgGAAAAAKCBefPNN/PAAw/k+OOPz09/+tOi5wAAANQqYhoAAAAAgAbkww8/zC233JJOnTrlmmuuSalUKnoSAABArSKmAQAAAABoILZt25bJkyenUaNGGTx4cJo0aVL0JAAAgFpHTAMAAAAA0ABUVVVlxowZ+fDDDzNgwIC0adOm6EkAAAC1kpgGAAAAAKAB+O1vf5vXX389l19+ef7t3/6t6DkAAAC1lpgGAAAAAKCee+mll/Lwww/nlFNOyemnn170HAAAgFpNTAMAAAAAUI+98847ue2223LooYemd+/eKZVKRU8CAACo1cQ0AAAAAAD11KZNmzJ58uS0atUqAwcOTOPGjYueBAAAUOuJaQAAAAAA6qEdO3Zk8uTJ+eKLLzJkyJC0bNmy6EkAAAB1gpgGAAAAAKCeKZfLueOOO/L222/n2muvTadOnYqeBAAAUGeIaQAAAAAA6pknnngif/zjH9OrV68cc8wxRc8BAACoU8Q0AAAAAAD1yJtvvpl77rknxx57bM4///yi5wAAANQ5YhoAAAAAgHpi3bp1mT59ejp27Ji+ffumVCoVPQkAAKDOEdMAAAAAANQDW7duzcSJE1NZWZkhQ4akadOmRU8CAACok8Q0AAAAAAB1XFVVVaZNm5ZPPvkkgwYNSps2bYqeBAAAUGeJaQAAAAAA6rh77rkny5cvz1VXXZXvfe97Rc8BAACo08Q0AAAAAAB12OLFi/PEE0/kJz/5SU4++eSi5wAAANR5YhoAAAAAgDpq1apVmTNnTo444ohcdtllRc8BAACoF8Q0AAAAAAB10KeffprJkyenTZs2ue6661JR4bgXAACgOni6AgAAAACoY7788stMmjQpO3bsyJAhQ9KiRYuiJwEAANQbYhoAAAAAgDqkXC7ntttuy3vvvZf+/funQ4cORU8CAACoV8Q0AAAAAAB1yMMPP5wlS5bkoosuyve///2i5wAAANQ7YhoAAAAAgDrilVdeyQMPPJATTjghPXv2LHoOAABAvSSmAQAAAACoA95///3MmjUrBx98cH7xi1+kVCoVPQkAAKBeEtMAAAAAANRyn3/+eSZOnJhmzZpl8ODBqaysLHoSAABAvSWmAQAAAACoxXbt2pWpU6dm06ZNGTJkSPbdd9+iJwEAANRrYhoAAAAAgFps3rx5WblyZa655pocfPDBRc8BAACo98Q0AAAAAAC11O9///ssWrQoZ599dk444YSi5wAAADQIYhoAAAAAgFpoxYoVmTdvXr7//e/nwgsvLHoOAABAg/G1MU2pVGpWKpVeLJVKr5VKpWWlUun/tyeGAQAAAAA0VB9++GGmTp2a9u3bp3///qmo8L1IAACAPaXxbnxme5KflMvlz0ulUmWS50ql0sPlcvmPNbwNAAAAAKDB2bp1ayZOnJiKiooMGzYszZo1K3oSAABAg/K1X2co/1+f/+2flX/7U67RVQAAAAAADdCuXbsyderUfPzxxxk8eHD233//oicBAAA0OLv1btBSqdSoVCq9mmR9ksfL5fILX/GZAaVSaUmpVFry0UcfVfNMAAAAAID6rVwuZ968eVmxYkWuvvrqfO973yt6EgAAQIO0WzFNuVzeVS6Xf5ikU5Ifl0qlo77iM9PK5fJx5XL5uLZt21bzTAAAAACA+u2ZZ57JokWLcvbZZ6dHjx5FzwEAAGiwdium+X/K5fLGJM8kOacmxgAAAAAANETLli3L/Pnzc/TRR+fCCy8seg4AAECD9rUxTalUalsqlfb929/3SnJWkhU1vAsAAAAAoEH44IMPMm3atHTs2DG//OUvU1Hxjb4DCQAAQDVrvBuf6ZDktlKp1Cj/N765q1wuP1SzswAAAAAA6r8tW7ZkwoQJqayszNChQ9O0adOiJwEAADR4XxvTlMvl15Mcswe2AAAAAAA0GDt37syUKVOycePGjB07Nq1bty56EgAAANmNa54AAAAAAKhe5XI5c+fOzcqVK3PNNdeka9euRU8CAADgb8Q0AAAAAAB72JNPPpnFixfnvPPOywknnFD0HAAAAP6OmAYAAAAAYA96/fXXc/fdd+fYY4/NBRdcUPQcAAAA/oGYBgAAAABgD1m7dm1uueWWdO7cOX379k2pVCp6EgAAAP9ATAMAAAAAsAd89tlnmTBhQpo1a5YhQ4akadOmRU8CAADgK4hpAAAAAABq2M6dOzN58uRs3rw5Q4YMyX777Vf0JAAAAP4JMQ0AAAAAQA0ql8uZPXt2Vq1alb59++bggw8uehIAAAD/gpgGAAAAAKAGPfroo/njH/+YXr165bjjjit6DgAAAF9DTAMAAAAAUENeeeWV3HfffTn++ONz/vnnFz0HAACA3SCmAQAAAACoAX/9618zc+bMHHzwwenTp09KpVLRkwAAANgNYhoAAAAAgGq2efPmTJw4MS1atMiQIUNSWVlZ9CQAAAB2k5gGAAAAAKAa7dixIxMnTsyWLVsydOjQ7LPPPkVPAgAA4BsQ0wAAAAAAVJNyuZzbbrst77zzTvr165fOnTsXPQkAAIBvSEwDAAAAAFBNfve73+Wll17KhRdemGOOOaboOQAAAHwLYhoAAAAAgGrw8ssv57e//W1OPPHEnHPOOUXPAQAA4FsS0wAAAAAAfEerV6/OrFmz0q1bt1x99dUplUpFTwIAAOBbEtMAAAAAAHwHn3zySSZNmpR99tkngwcPTmVlZdGTAAAA+A7ENAAAAAAA39IXX3yRCRMmZOfOnRk+fHhatmxZ9CQAAAC+IzENAAAAAMC3sGvXrkybNi3r1q3LoEGDcsABBxQ9CQAAgGogpgEAAAAA+IbK5XLmzZuXP/3pT7n66qtz+OGHFz0JAACAaiKmAQAAAAD4hp588sksWrQoZ599dk4++eSi5wAAAFCNxDQAAAAAAN/Aa6+9lrvvvjvHHHNMLrrooqLnAAAAUM3ENAAAAAAAu2nNmjW55ZZb0qVLl/Tr1y+lUqnoSQAAAFQzMQ0AAAAAwG7YsGFDJk6cmL333jtDhw5NkyZNip4EAABADRDTAAAAAAB8je3bt2fixInZtm1bhg0bllatWhU9CQAAgBoipgEAAAAA+Beqqqpyyy235L333st1112Xjh07Fj0JAACAGiSmAQAAAAD4F+6+++68/vrr6d27d4466qii5wAAAFDDxDQAAAAAAP/EM888kyeffDJnnnlmTj/99KLnAAAAsAeIaQAAAAAAvsKyZcsyb968/OAHP8ill15a9BwAAAD2EDENAAAAAMA/eP/99zNt2rR06tQp/fv3T0WFo1QAAICGwhMgAAAAAMDf2bx5cyZMmJBmzZpl6NChadq0adGTAAAA2IPENAAAAAAAf/Pll19m4sSJ+fzzzzN06NDst99+RU8CAABgDxPTAAAAAAAkKZfLmTVrVt599930798/Bx10UNGTAAAAKICYBgAAAAAgyX333ZelS5fm0ksvzdFHH130HAAAAAoipgEAAAAAGrzFixfn0Ucfzamnnpozzzyz6DkAAAAUSEwDAAAAADRoK1asyB133JEjjzwyvXv3TqlUKnoSAAAABRLTAAAAAAAN1rp16zJ16tQccMABGTBgQBo1alT0JAAAAAompgEAAAAAGqTPPvss48ePT6NGjTJs2LDstddeRU8CAACgFhDTAAAAAAANzo4dOzJ58uRs2rQpQ4YMSZs2bYqeBAAAQC0hpgEAAAAAGpRyuZxbb701q1atyrXXXpuuXbsWPQkAAIBaREwDAAAAADQo9913X5YsWZJLLrkkP/rRj4qeAwAAQC0jpgEAAAAAGoxFixbl0UcfzWmnnZaf/vSnRc8BAACgFhLTAAAAAAANwptvvpm5c+fm+9//fnr37p1SqVT0JAAAAGohMQ0AAAAAUO+tWbMm06ZNS+fOnXPdddelosLRKAAAAF/NEyMAAAAAUK99+umnGT9+fFq0aJFhw4aladOmRU8CAACgFhPTAAAAAAD11hdffJHx48fnyy+/zPDhw7PPPvsUPQkAAIBaTkwDAAAAANRLO3fuzJQpU7Ju3boMHjw4Bx54YNGTAAAAqAPENAAAAABAvVMul3PHHXdkxYoVueaaa3L44YcXPQkAAIA6QkwDAAAAANQ7CxcuzPPPP59evXrlpJNOKnoOAAAAdYiYBgAAAACoV/74xz/mwQcfzEknnZTzzz+/6DkAAADUMWIaAAAAAKDeWLFiRW677bYcfvjhufrqq1MqlYqeBAAAQB0jpgEAAAAA6oW1a9dmypQpOeCAAzJw4MA0bty46EkAAADUQWIaAAAAAKDO27RpU8aPH5/KysoMHz48zZs3L3oSAAAAdZSYBgAAAACo07Zv354JEyZky5YtGT58eFq3bl30JAAAAOowMQ0AAAAAUGdVVVVl+vTp+etf/5oBAwbkoIMOKnoSAAAAdZyYBgAAAACok8rlcubPn5833ngjV155ZY466qiiJwEAAFAPiGkAAAAAgDrp8ccfzzPPPJOzzz47p556atFzAAAAqCfENAAAAABAnfPyyy/nnnvuyXHHHZeLLrqo6DkAAADUI2IaAAAAAKBOWbVqVWbOnJlu3bqlb9++KZVKRU8CAACgHhHTAAAAAAB1xvr16zNx4sS0bt06Q4cOTWVlZdGTAAAAqGfENAAAAABAnfD5559n/PjxKZVKGT58eFq0aFH0JAAAAOohMQ0AAAAAUOvt2LEjEydOzIYNGzJ06NC0a9eu6EkAAADUU2IaAAAAAKBWq6qqysyZM/P222+nX79+6dq1a9GTAAAAqMfENAAAAABArVUul7NgwYIsXbo0l112WY499tiiJwEAAFDPiWkAAAAAgFrr8ccfz1NPPZWzzjorZ555ZtFzAAAAaADENAAAAABArfTSSy/lnnvuyXHHHZdLL7206DkAAAA0EGIaAAAAAKDWWbFiRWbNmpXDDjss1157bUqlUtGTAAAAaCDENAAAAABArfLee+9l8uTJad++fQYPHpzGjRsXPQkAAIAGREwDAAAAANQaGzZsyPjx49OsWbOMGDEizZs3L3oSAAAADYyYBgAAAACoFbZu3Zqbb74527Zty4gRI7LffvsVPQkAAIAGSEwDAAAAABRu586dmTx5ctavX58hQ4akY8eORU8CAACggRLTAAAAAACFKpfLmTVrVlauXJm+ffvm3/7t34qeBAAAQAMmpgEAAAAACnX33XdnyZIlueSSS3L88ccXPQcAAIAGTkwDAAAAABTmiSeeyBNPPJGf/OQn+elPf1r0HAAAABDTAAAAAADFWLJkSRYsWJBjjz02l112WUqlUtGTAAAAQEwDAAAAAOx5K1euzKxZs/K9730v/fr1S0WFo0oAAABqB0+oAAAAAMAetXbt2kyePDlt27bNkCFDUllZWfQkAAAA+G9iGgAAAABgj9mwYUNuvvnmVFZWZvjw4WnRokXRkwAAAOB/ENMAAAAAAHvEF198kfHjx+eLL77IiBEj0qZNm6InAQAAwP8ipgEAAAAAatzOnTszefLkfPDBBxk0aFA6depU9CQAAAD4SmIaAAAAAKBGlcvl3Hrrrfnzn/+cvn375ogjjih6EgAAAPxTYhoAAAAAoEbde++9eemll3LRRRflhBNOKHoOAAAA/EtiGgAAAACgxjz99NN57LHHcvrpp+fss88ueg4AAAB8LTENAAAAAFAjli5dmvnz5+eHP/xhrrjiipRKpaInAQAAwNcS0wAAAAAA1e6tt97KjBkz0rVr1/Tv3z8VFY4iAQAAqBs8wQIAAAAA1Wrt2rWZNGlS2rRpk6FDh6aysrLoSQAAALDbxDQAAAAAQLXZsGFDbr755lRWVmbEiBFp0aJF0ZMAAADgGxHTAAAAAADVYsuWLRk3bly++OKLjBgxIvvvv3/RkwAAAOAbE9MAAAAAAN/Zl19+mQkTJuSjjz7K0KFD06lTp6InAQAAwLcipgEAAAAAvpNdu3Zl2rRpefvtt9O/f/8cdthhRU8CAACAb01MAwAAAAB8a+VyOXfccUfeeOONXHnllTnmmGOKngQAAADfiZgGAAAAAPjW7r///vzhD39Ir169cuqppxY9BwAAAL4zMQ0AAAAA8K08+eSTeeSRR3Lqqafm/PPPL3oOAAAAVAsxDQAAAADwjb300ku56667cswxx+TnP/95SqVS0ZMAAACgWohpAAAAAIBvZPny5Zk1a1YOPfTQ/PKXv0xFhWNGAAAA6g9PuQAAAADAbnv33XczefLkdOjQIUOGDEllZWXRkwAAAKBaiWkAAAAAgN2yfv36jB8/PnvvvXeGDx+e5s2bFz0JAAAAqp2YBgAAAAD4Wps3b864ceNSLpczcuTI7LvvvkVPAgAAgBohpgEAAAAA/qUvvvgi48aNy2effZbhw4enffv2RU8CAACAGiOmAQAAAAD+qR07dmTSpElZu3ZtBg4cmIMPPrjoSQAAAFCjxDQAAAAAwFeqqqrKzJkzs3LlyvTt2zfdu3cvehIAAADUODENAAAAAPC/lMvlzJ8/P0uXLs1ll12WE044oehJAAAAsEeIaQAAAACA/+Xhhx/OM888k549e+ass84qeg4AAADsMWIaAAAAAOB/ePbZZ/PAAw/kxBNPzMUXX1z0HAAAANijxDQAAAAAwH979dVXM2fOnBx11FG55pprUiqVip4EAAAAe5SYBgAAAABIkrz11luZPn16unTpkgEDBqRRo0ZFTwIAAIA9TkwDAAAAAOT999/PpEmT0qZNmwwfPjxNmzYtehIAAAAUQkwDAAAAAA3cJ598kptvvjlNmjTJyJEjs/feexc9CQAAAAojpgEAAACABuyzzz7LTTfdlO3bt2fEiBFp06ZN0ZMAAACgUGIaAAAAAGigtm3blnHjxmXDhg0ZPnx4OnbsWPQkAAAAKJyYBgAAAAAaoB07dmTixIl5//33M2jQoHTr1q3oSQAAAFAriGkAAAAAoIGpqqrK9OnT89Zbb6Vfv3456qijip4EAAAAtYaYBgAAAAAakHK5nNtvvz2vvfZaevfuneOPP77oSQAAAFCriGkAAAAAoIEol8u5++678/zzz6dXr145/fTTi54EAAAAtY6YBgAAAAAaiEceeSRPPPFEzjjjjJx//vlFzwEAAIBaSUwDAAAAAA3AokWLcv/99+eEE07IFVdckVKpVPQkAAAAqJXENAAAAABQzy1ZsiRz587N97///fTp00dIAwAAAP+CmAYAAAAA6rFly5Zl5syZ6datWwYMGJBGjRoVPQkAAABqNTENAAAAANRTq1evzpQpU9KhQ4cMHTo0TZo0KXoSAAAA1HpiGgAAAACoh9auXZvx48dn3333zciRI9O8efOiJwEAAECdIKYBAAAAgHrm448/zk033ZQmTZpk5MiRadWqVdGTAAAAoM4Q0wAAAABAPbJ58+bcdNNN2bFjR0aOHJn999+/6EkAAABQp4hpAAAAAKCe2Lp1a8aNG5dNmzZl+PDhOfDAA4ueBAAAAHWOmAYAAAAA6oEvv/wyEydOzAcffJDBgwena9euRU8CAACAOklMAwAAAAB13K5duzJt2rSsWrUq/fr1y5FHHln0JAAAAKizxDQAAAAAUIeVy+XcdttteeONN3LllVfmuOOOK3oSAAAA1GliGgAAAACoo8rlcubPn58XXnghF154YU499dSiJwEAAECdJ6YBAAAAgDpq4cKFefrpp3PWWWflnHPOKXoOAAAA1AtiGgAAAACog55++uk8+OCDOemkk3LppZemVCoVPQkAAADqBTENAAAAANQxL774YubNm5ejjz4611xzjZAGAAAAqpGYBgAAAADqkNdffz2zZs3KYYcdluuuuy4VFY74AAAAoDp50gYAAACAOuLPf/5zpk6dms6dO2fo0KGprKwsehIAAADUO2IaAAAAAKgDVq9enYkTJ6Zdu3YZOXJkmjVrVvQkAAAAqJfENAAAAABQy7333nsZP358WrVqlVGjRqVFixZFTwIAAIB6S0wDAAAAALXYhx9+mHHjxqVJkyYZPXp09tlnn6InAQAAQL0mpgEAAACAWurTTz/NjTfemHK5nNGjR6dNmzZFTwIAAIB6T0wDAAAAALXQ5s2bc+ONN2bbtm0ZOXJkDjjggKInAQAAQIMgpgEAAACAWmbLli256aabsnHjxgwfPjydO3cuehIAAAA0GGIaAAAAAKhFtm3blvHjx+fDDz/MkCFD0q1bt6InAQAAQIMipgEAAACAWmLHjh2ZNGlS3n333Vx33XU54ogjip4EAAAADY6YBgAAAABqgV27dmXatGn585//nL59++aHP/xh0ZMAAACgQRLTAAAAAEDBqqqqMmvWrLz++uu58sorc8IJJxQ9CQAAABosMQ0AAAAAFKhcLmfu3Ll56aWXcvHFF+e0004rehIAAAA0aGIaAAAAAChIuVzO3XffnWeffTbnnntuzj777KInAQAAQIMnpgEAAACAgixcuDBPPPFEzjjjjPzsZz8reg4AAAAQMQ0AAAAAFOLJJ5/Mgw8+mJNOOilXXHFFSqVS0ZMAAACAiGkAAAAAYI9bvHhx7rrrrhx77LG55pprhDQAAABQi4hpAAAAAGAPWrJkSWbPnp3u3bvnl7/8ZSoqHNEBAABAbeJJHQAAAAD2kDfffDMzZszI9773vQwaNCiNGzcuehIAAADwD8Q0AAAAALAHrFy5MlOmTEmnTp0ydOjQNGnSpOhJAAAAwFcQ0wAAAABADXvnnXcyYcKE7L///hk5cmT22muvoicBAAAA/4SYBgAAAABq0Nq1a3PzzTenZcuWGTVqVPbee++iJwEAAAD/gpgGAAAAAGrIhx9+mBtuuCGVlZUZPXp09t1336InAQAAAF9DTAMAAAAANeDjjz/ODTfckCQZPXp09t9//4IXAQAAALtDTAMAAAAA1ezTTz/NDTfckB07dmT06NE54IADip4EAAAA7CYxDQAAAABUo40bN+bGG2/M1q1bM3LkyHTs2LHoSQAAAMA3IKYBAAAAgGry2Wef5aabbsqmTZsyYsSIdOnSpehJAAAAwDckpgEAAACAarBly5bcdNNN+fjjjzNs2LB07dq16EkAAADAtyCmAQAAAIDv6IsvvsjNN9+cdevWZciQITnssMOKngQAAAB8S2IaAAAAAPgOtm/fnvHjx2fNmjUZOHBgjjzyyKInAQAAAN+BmAYAAAAAvqUdO3Zk4sSJWb16dfr3758f/OAHRU8CAAAAviMxDQAAAAB8Czt37szkyZOzcuXKXHvttfnRj35U9CQAAACgGohpAAAAAOAb2rVrV6ZPn55ly5bl6quvzgknnFD0JAAAAKCaiGkAAAAA4BuoqqrKrFmz8uqrr6Z3797593//96InAQAAANVITAMAAAAAu6lcLuf222/PSy+9lEsuuSRnnHFG0ZMAAACAaiamAQAAAIDdUC6XM3fu3Dz//PPp1atXevbsWfQkAAAAoAaIaQAAAADga5TL5SxYsCCLFi3K2WefnfPPP7/oSQAAAEANEdMAAAAAwL9QLpfzwAMP5Mknn8xPfvKTXHTRRSmVSkXPAgAAAGqImAYAAAAA/oWHH344Dz/8cE455ZRcfvnlQhoAAACo58Q0AAAAAPBPPP7443nggQdy4okn5qqrrhLSAAAAQAMgpgEAAACAr/DMM8/k7rvvznHHHZc+ffoIaQAAAKCBENMAAAAAwD9YvHhx7rzzzhx99NHp169fKiocowEAAEBD4RQAAAAAAP7Oiy++mNmzZ6d79+4ZMGBAGjVqVPQkAAAAYA8S0wAAAADA3yxZsiQzZ87MoYcemkGDBqVx48ZFTwIAAAD2MDENAAAAACRZunRpZsyYke9973sZNmxYmjRpUvQkAAAAoABiGgAAAAAavFdffTXTp0/PIYcckmHDhqVp06ZFTwIAAAAKIqYBAAAAoEF7/fXXM23atHTp0iUjRoxIs2bNip4EAAAAFEhMAwAAAECD9eabb2bq1Knp3LlzRo4cKaQBAAAAxDQAAAAANEzLli3L5MmTc+CBB2bkyJHZa6+9ip4EAAAA1AJiGgAAAAAanOXLl2fSpEnp0KFDRo0alebNmxc9CQAAAKglxDQAAAAANCgrVqzIxIkTc8ABB2T06NFp0aJF0ZMAAACAWkRMAwAAAECDsXLlykycODFt27bNqFGjhDQAAADA/yKmAQAAAKBBeOuttzJhwoS0adMmo0ePTsuWLYueBAAAANRCYhoAAAAA6r1Vq1Zl/Pjx2XfffTNmzJi0atWq6EkAAABALSWmAQAAAKBee/vtt3PzzTdnn332EdIAAAAAX0tMAwAAAEC99c477+Smm25Ky5YtM3bs2Oy7775FTwIAAABqOTENAAAAAPXSmjVrMm7cuOy9995CGgAAAGC3iWkAAAAAqHf++te/5sYbb8xee+2VMWPGZL/99it6EgAAAFBHiGkAAAAAqFfee++93HjjjWnatGnGjBmTNm3aFD0JAAAAqEPENAAAAADUG2vXrs2NN96YysrKjB07Nvvvv3/RkwAAAIA6RkwDAAAAQL3wwQcf5IYbbkijRo0yduzYtG3btuhJAAAAQB0kpgEAAACgzlu3bl1uuOGGlEqljB07Nu3atSt6EgAAAFBHiWkAAAAAqNPWr1+fG264IeVyOWPGjEn79u2LngQAAADUYWIaAAAAAOqsjz76KL/5zW+ya9eujBkzJh06dCh6EgAAAFDHiWkAAAAAqJPWr1+f//qv/8qOHTsyevToHHjggUVPAgAAAOoBMQ0AAAAAdc769evzm9/8Jjt37syYMWPSqVOnoicBAAAA9UTjogcAAAAAwDfx4Ycf/o+rnTp27Fj0JAAAAKAeEdMAAAAAUGf8v5CmqqoqY8eOdbUTAAAAUO3ENAAAAADUCevWrctvfvOblMvljBkzRkgDAAAA1AgxDQAAAAC13gcffJAbbrghSTJ27Nh06NCh4EUAAABAfVVR9AAAAAAA+Fc++OCD/OY3v0mSjBkzRkgDAAAA1ChvpgEAAACg1lq7dm1uuOGGlEqljB07NgcccEDRkwAAAIB6TkwDAAAAQK30/0KaioqKjB07Nu3bty96EgAAANAAiGkAAAAAqHXef//93HDDDWncuHHGjBkjpAEAAAD2GDENAAAAALXKe++9lxtuuCGVlZUZO3Zs2rVrV/QkAAAAoAER0wAAAABQa/z1r3/NjTfemCZNmmTMmDFCGgAAAGCPE9MAAAAAUCv8fUgzduzYtG3btuhJAAAAQAMkpgEAAACgcGvWrMmNN96YZs2aZezYsdl///2LngQAAAA0UGIaAAAAAAr17rvv5qabbspee+2VMWPGCGkAAACAQolpAAAAACjM34c0Y8eOTZs2bYqeBAAAADRwFUUPAAAAAKBheuedd3LjjTcKaQAAAIBaxZtpAAAAANjj3n777dx0003Ze++9M3bs2LRu3broSQAAAABJxDQAAAAA7GGrV6/OuHHjsvfee+dXv/pV9ttvv6InAQAAAPw3MQ0AAAAAe8z/C2latmyZsWPHCmkAAACAWkdMAwAAAMAe8dZbb2XChAlp1apVxowZI6QBAAAAaiUxDQAAAAA1bsWKFZk4cWL222+/jBkzJvvuu2/RkwAAAAC+kpgGAAAAgBq1bNmyTJ48OW3bts3o0aPTqlWroicBAAAA/FNiGgAAAABqzOuvv56pU6emQ4cOGTVqVPbee++iJwEAAAD8S2IaAAAAAGrE0qVLM3369Bx00EEZOXJkmjdvXvQkAAAAgK8lpgEAAACg2r344ouZNWtWDjnkkAwfPjx77bVX0ZMAAAAAdouYBgAAAIBq9Yc//CG33357Dj300AwbNixNmzYtehIAAADAbhPTAAAAAFBtnn322dxxxx054ogjMmTIkDRp0qToSQAAAADfiJgGAAAAgGrx9NNPZ968eTnqqKMyaNCgVFZWFj0JAAAA4BsT0wAAAADwnT322GO55557cswxx6R///5p3NixEwAAAFA3OdUAAAAA4Dv53e9+lwceeCDHHXdc+vXrl0aNGhU9CQAAAOBbE9MAAAAA8K2Uy+X89re/ze9+97uceOKJ6dOnTyoqKoqeBQAAAPCdiGkAAAAA+MbK5XLuvffePPbYY/n3f//3XHXVVUIaAAAAoF4Q0wAAAADwjZTL5cyfPz9PP/10Tj/99PTu3TulUqnoWQAAAADVQkwDAAAAwG4rl8uZM2dOnn322Zx11lm59NJLhTQAAABAvSKmAQAAAGC3VFVV5fbbb8/zzz+fc889Nz/72c+ENAAAAEC9I6YBAAAA4GtVVVVl5syZeemll9KrV6+cf/75QhoAAACgXhLTAAAAAPAv7dy5MzNmzMjSpUtz8cUX5+yzzy56EgAAAECNEdMAAAAA8E/t3LkzU6dOzeuvv57LL788Z555ZtGTAAAAAGqUmAYAAACAr7Rjx45Mnjw5y5Yty5VXXpnTTjut6EkAAAAANU5MAwAAAMD/sm3btkycODFvvfVWrrnmmpx88slFTwIAAADYI8Q0AAAAAPwPW7Zsyc0335w1a9akX79++fGPf1z0JAAAAIA9RkwDAAAAwH/bvHlzxo0bl3Xr1mXQoEE5+uiji54EAAAAsEeJaQAAAABIkmzYsCE33nhjNmzYkGHDhuWII44oehIAAADAHiemAQAAACDr16/PTTfdlC1btmTUqFHp1q1b0ZMAAAAACiGmAQAAAGjg1q5dmxtvvDG7du3K2LFjc9BBBxU9CQAAAKAwFV/3gVKp1LlUKj1dKpWWl0qlZaVSaeSeGAYAAABAzXv33XfzX//1XymVSvnVr34lpAEAAAAavN15M83OJGPL5fLSUqnUMsnLpVLp8XK5/Kca3gYAAABADfrLX/6S8ePHp0WLFhk9enTatm1b9CQAAACAwn1tTFMulz9I8sHf/v5ZqVRanqRjEjENAAAAQB21fPnyTJw4Ma1bt87o0aOz3377FT0JAAAAoFbYnTfT/LdSqXRwkmOSvPAVPxuQZEASrwMGAAAAqMVeffXVTJ8+PQcccEBGjRqVli1bFj0JAAAAoNao2N0PlkqlvZPck2RUuVze/I8/L5fL08rl8nHlcvk4rwQGAAAAqJ1eeOGFTJ06NZ07d87YsWOFNAAAAAD/YLfeTFMqlSrzf0OaOeVy+d6anQQAAABATXj22WczZ86cHHrooRk6dGiaNWtW9CQAAACAWudrY5pSqVRKMiPJ8nK5fEPNTwIAAACguj3++OO5++67c9RRR2XQoEGprKwsehIAAABArbQ7b6Y5OckvkrxRKpVe/dv//X/K5fLvamwVAAAAANWiXC7noYceykMPPZQf/ehH6devXxo33q2XFQMAAAA0SF97clIul59LUtoDWwAAAACoRuVyOXfffXeeeOKJ9OjRI7/4xS9SUVFR9CwAAACAWs3XkAAAAADqoaqqqsydOzfPPvtszjjjjFxxxRX5v7d5AwAAAPCviGkAAAAA6pldu3bl1ltvzYsvvphzzz03P/vZz4Q0AAAAALtJTAMAAABQj+zYsSPTp0/Pa6+9lgsvvDDnnntu0ZMAAAAA6hQxDQAAAEA9sX379kyePDnLly9P7969c8YZZxQ9CQAAAKDOEdMAAAAA1ANbt27NhAkTsnr16vTp0yc9evQoehIAAABAnSSmAQAAAKjjNm/enHHjxuWDDz7IgAEDcuyxxxY9CQAAAKDOEtMAAAAA1GEff/xxbrrppmzatCnDhg3LkUceWfQkAAAAgDpNTAMAAABQR61duzbjxo3Ll19+mdGjR6dr165FTwIAAACo88Q0AAAAAHXQ6tWrM378+FRWVub666/PgQceWPQkAAAAgHpBTAMAAABQxyxfvjyTJ09Oq1atMmrUqOy///5FTwIAAACoN8Q0AAAAAHXI0qVLc8stt6RDhw4ZOXJkWrVqVfQkAAAAgHpFTAMAAABQRzz33HO544470rVr1wwbNizNmzcvehIAAABAvSOmAQAAAKgDHn300dx7773p3r17Bg4cmKZNmxY9CQAAAKBeEtMAAAAA1GLlcjn33XdfHn300Rx//PHp27dvGjd2pAMAAABQU5y8AAAAANRSVVVVmTNnTp577rmcdtpp6d27dyoqKoqeBQAAAFCviWkAAAAAaqGdO3dmxowZWbp0ac4777xccMEFKZVKRc8CAAAAqPfENAAAAAC1zPbt2zN58uQsX748l112Wc4666yiJwEAAAA0GGIaAAAAgFpky5YtGT9+fN5999306dMnPXr0KHoSAAAAQIMipgEAAACoJTZu3Jhx48Zl/fr1GTRoUI4++uiiJwEAAAA0OGIaAAAAgFpg/fr1uemmm/L5559nxIgR+bd/+7eiJwEAAAA0SGIaAAAAgIK99957GTduXHbt2pWxY8emS5cuRU8CAAAAaLDENAAAAAAFWrVqVcaPH59mzZplzJgx6dChQ9GTAAAAABo0MQ0AAABAQd58881MmTIlrVu3zqhRo9K6deuiJwEAAAA0eGIaAAAAgAK89NJLmTlzZjp16pQRI0akZcuWRU8CAAAAIGIaAAAAgD3uySefzF133ZXDDjssQ4cOTbNmzYqeBAAAAMDfiGkAAAAA9pByuZz77rsvjz76aI499tj069cvlZWVRc8CAAAA4O+IaQAAAAD2gF27dmX27Nl5/vnnc9ppp6V3796pqKgoehYAAAAA/0BMAwAAAFDDtm/fnmnTpuXNN9/MBRdckPPOOy+lUqnoWQAAAAB8BTENAAAAQA3asmVLJkyYkLfffjtXX311TjnllKInAQAAAPAviGkAAAAAasinn36acePG5eOPP87A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Cy9MqVQqehYAAAAADZyYBgAAANjj1q9fnwkTJuTjjz9O3759c9JJJxU9CQAAAACSiGkAAACAPWzlypWZPHlySqVSRo8enUMPPbToSQAAAADw38Q0AAAAwB7z3HPPZc6cOWnfvn2GDRuW/fffv+hJAAAAAPA/iGkAAACAGldVVZV77703jz/+eI488sgMGDAge+21V9GzAAAAAOB/EdMAAAAANWrbtm2ZMWNGXn/99Zxxxhm5/PLLU1FRUfQsAAAAAPhKYhoAAACgxnz66aeZOHFi1q5dm5///Oc5/fTTi54EAAAAAP+SmAYAAACoEatXr87kyZPz5ZdfZvjw4TnyyCOLngQAAAAAX0tMAwAAAFS7l156Kbfeemv23XffjBkzJh06dCh6EgAAAADsFjENAAAAUG3K5XIeeuihPPTQQzn00EMzaNCg7L333kXPAgAAAIDdJqYBAAAAqsWOHTty6623ZsmSJenRo0euuuqqNG7s6AEAAACAusWJFgAAAPCdbd68ORMnTsy7776biy++OD179kypVCp6FgAAAAB8Y2IaAAAA4Dt57733MmHChGzZsiWDBg3KD3/4w6InAQAAAMC3JqYBAAAAvrXXXnstM2bMSPPmzfPrX/86nTt3LnoSAAAAAHwnYhoAAADgGyuXy3n88cdz7733pkuXLhkyZEj22WefomcBAAAAwHcmpgEAAAC+kZ07d2bu3LlZvHhxfvSjH6Vv375p0qRJ0bMAAAAAoFqIaQAAAIDd9tlnn2XKlCn5y1/+kvPPPz+9evVKqVQqehYAAAAAVBsxDQAAALBb/vrXv2bSpEn57LPP0r9//xx//PFFTwIAAACAaiemAQAAAL7W0qVLM2vWrDRv3jzXX399unTpUvQkAAAAAKgRYhoAAADgnyqXy3nooYfy0EMPpWvXrhk8eHBatWpV9CwAAAAAqDFiGgAAAOArbd++PbNmzcorr7ySHj165Kqrrkrjxo4SAAAAAKjfnIABAAAA/8snn3ySSZMm5f33389ll12WM888M6VSqehZAAAAAFDjxDQAAADA//DWW29lypQp2bVrV4YPH57u3bsXPQkAAAAA9hgxDQAAAPDfFi1alDvvvDNt27bN0KFD0759+6InAQAAAMAeJaYBAAAAsmvXrtx111155plnctRRR6V///7Za6+9ip4FAAAAAHucmAYAAAAauM8//zxTp07NypUr07Nnz1x00UWpqKgoehYAAAAAFEJMAwAAAA3Y+++/n0mTJmXjxo259tprc+KJJxY9CQAAAAAKJaYBAACABurVV1/NzJkz06xZs/zqV7/KIYccUvQkAAAAACicmAYAAAAamHK5nIcffjgPPPBADj744AwePDj77rtv0bMAAAAAoFYQ0wAAAEAD8uWXX+a2227LkiVLcsIJJ+QXv/hFKisri54FAAAAALWGmAYAAAAaiE8//TSTJk3Ke++9l4svvjg9e/ZMqVQqehYAAAAA1CpiGgAAAGgAVq1alcmTJ2fHjh0ZOnRovv/97xc9CQAAAABqJTENAAAA1HOLFy/OnDlz0qZNm4wdOzYdOnQoehIAAAAA1FpiGgAAAKindu7cmQULFuSZZ57JEUcckeuuuy4tWrQoehYAAAAA1GpiGgAAAKiHNm/enKlTp+Yvf/lLevbsmYsuuigVFRVFzwIAAACAWk9MAwAAAPXM22+/nSlTpmTLli3p379/jj/++KInAQAAAECdIaYBAACAemTx4sWZO3du9tlnn/znf/5nOnXqVPQkAAAAAKhTxDQAAABQD+zcuTN33XVXfv/73+eII47IddddlxYtWhQ9CwAAAADqHDENAAAA1HGbN2/OlClTsmrVqvTs2TMXXXRRKioqip4FAAAAAHWSmAYAAADqsNWrV2fq1KnZunVrrrvuuhx33HFFTwIAAACAOk1MAwAAAHXUc889lzvvvDP77rtv/s//+T/p1KlT0ZMAAAAAoM4T0wAAAEAds3PnzsyfPz+LFi3KkUcemf79+6dFixZFzwIAAACAekFMAwAAAHXIpk2bMnXq1KxatSpnn312LrzwwlRUVBQ9CwAAAADqDTENAAAA1BGrV6/OlClT8sUXX+S6667LcccdV/QkAAAAAKh3xDQAAABQBzz77LO58847s99++2XkyJHp2LFj0ZMAAAAAoF4S0wAAAEAttnPnzsybNy/PPvtsunfvnl/+8pdp0aJF0bMAAAAAoN4S0wAAAEAttXHjxkydOjWrV6/OueeemwsuuCAVFRVFzwIAAACAek1MAwAAALXQqlWrMmXKlGzfvj0DBw7MscceW/QkAAAAAGgQxDQAAABQyzz77LO5884707p164wePToHHnhg0ZMAAAAAoMEQ0wAAAEAtsWPHjtx5551ZvHhxunfvnv79+6d58+ZFzwIAAACABkVMAwAAALXAxx9/nKlTp2bNmjU577zz0qtXr1RUVBQ9CwAAAAAaHDENAAAAFOzNN9/MjBkzUi6XM3To0PzgBz8oehIAAAAANFhiGgAAAChIuVzOQw89lIULF6Zjx44ZNGhQ2rZtW/QsAAAAAGjQxDQAAABQgC1btmTGjBlZtmxZTjrppFx55ZVp0qRJ0bMAAAAAoMET0wAAAMAetmbNmkyZMiWbNm3KVVddlVNOOSWlUqnoWQAAAABAxDQAAACwRy1evDhz585Ny5Ytc/311+fggw8uehIAAAAA8HfENAAAALAH7NixI3feeWcWL16cI444Iv3798/ee+9d9CwAAAAA4B+IaQAAAKCGffLJJ5kyZUrWrFmTc889NxdccEEqKiqKngUAAAAAfAUxDQAAANSgZcuWZcaMGamqqsqQIUNy9NFHFz0JAAAAAPgXxDQAAABQA8rlchYuXJiHHnooHTt2zMCBA9OuXbuiZwEAAAAAX0NMAwAAANVsy5YtmTlzZt58882ceOKJueqqq9KkSZOiZwEAAAAAu0FMAwAAANVozZo1mTJlSjZu3Jgrr7wyp556akqlUtGzAAAAAIDdJKYBAACAarJ48eLMnTs3LVu2zPXXX59DDjmk6EkAAAAAwDckpgEAAIDvaMeOHZk3b16ee+65HH744enfv39atmxZ9CwAAAAA4FsQ0wAAAMB38Mknn2Tq1Kl59913c+655+aCCy5IRUVF0bMAAAAAgG9JTAMAAADf0htvvJFZs2Zl165dGTJkSI4++uiiJwEAAAAA35GYBgAAAL6hqqqq3H///Xn00UfTuXPnDBgwIO3atSt6FgAAAABQDcQ0AAAA8A1s3Lgxt9xyS956662ccsopueKKK1JZWVn0LAAAAACgmohpAAAAYDctX748M2bMyJdffpl+/frlhBNOKHoSAAAAAFDNxDQAAADwNaqqqrJw4cIsXLgwHTp0yIABA9KhQ4eiZwEAAAAANUBMAwAAAP/C5s2bM2PGjKxYsSInnnhirrzyyjRt2rToWQAAAABADRHTAAAAwD/x1ltvZfr06dm6dWuuueaa9OjRI6VSqehZAAAAAEANEtMAAADAPyiXy3n00Udz//33p23bthkxYkQ6depU9CwAAAAAYA8Q0wAAAMDf2bJlS2bOnJk333wzxx13XH7xi1+kWbNmRc8CAAAAAPYQMQ0AAAD8zerVqzNt2rR89tln+fnPf57TTjvNtU4AAAAA0MCIaQAAAGjwyuVynnzyydxzzz1p3bp1fv3rX6dLly5FzwIAAAAACiCmAQAAoEHbunVrbr/99rzyyiv54Q9/mD59+qR58+ZFzwIAAAAACiKmAQAAoMF69913M23atHz66ae57LLLcuaZZ7rWCQAAAAAaODENAAAADU65XM6iRYty1113pWXLlvnVr36Vbt26FT0LAAAAAKgFxDQAAAA0KNu2bcsdd9yRl156Kd27d0+/fv2y9957Fz0LAAAAAKglxDQAAAA0GO+9916mTZuW9evX58ILL8w555zjWicAAAAA4H8Q0wAAAFDv/f21Ts2bN8+YMWNy2GGHFT0LAAAAAKiFxDQAAADUa1u3bs3s2bOzdOnSdO/ePddee21atmxZ9CwAAAAAoJYS0wAAAFBvrV69Orfccks2bNiQSy65JD/96U9d6wQAAAAA/EtiGgAAAOqdcrmcxx57LPfff3/222+/XH/99enatWvRswAAAACAOkBMAwAAQL3y2WefZdasWVm2bFmOPfbY/OIXv0jz5s2LngUAAAAA1BFiGgAAAOqNFStWZMaMGfniiy9y1VVX5ZRTTnGtEwAAAADwjYhpAAAAqPOqqqry4IMP5uGHH0779u0zatSodOzYsehZAAAAAEAdJKYBAACgTtuwYUNuueWW/OUvf0mPHj3Su3fvNG3atOhZAAAAAEAdJaYBAACgznrttddy6623ZteuXenXr19OOOGEoicBAAAAAHWcmAYAAIA6Z+fOnbnnnnvy1FNP5aCDDsp1112Xdu3aFT0LAAAAAKgHxDQAAADUKevXr8/06dOzZs2anHnmmbn44ovTuLHHWwAAAACgejhtBAAAoM544YUXMmfOnDRu3DhDhgzJ0UcfXfQkAAAAAKCeEdMAAABQ623fvj3z5s3LH/7wh3zve99L//79s99++xU9CwAAAACoh8Q0AAAA1Grvvfdepk+fng8//DDnnXdeevXqlYqKiqJnAQAAAAD1lJgGAACAWqlcLufZZ5/N/Pnz07x584waNSqHH3540bMAAAAAgHpOTAMAAECt8/nnn+f222/Pa6+9lu7du+faa69Ny5Yti54FAAAAADQAYhoAAABqlRUrVmTWrFn5/PPPc9lll+XMM89MqVQqehYAAAAA0ECIaQAAAKgVdu7cmQceeCCPP/542rdvn2HDhqVz585FzwIAAAAAGhgxDQAAAIX78MMPM2PGjLz77rs59dRTc9lll6VJkyZFzwIAAAAAGiAxDQAAAIUpl8v5wx/+kHnz5qWysjKDBw/OD3/4w6JnAQAAAAANmJgGAACAQmzdujWzZ8/O0qVLc/jhh+faa6/NvvvuW/QsAAAAAKCBE9MAAACwx61cuTIzZ87Mpk2bcvHFF6dnz54plUpFzwIAAAAAENMAAACw5+zatSsPPvhgHnnkkbRt2zb/+Z//mS5duhQ9CwAAAADgv4lpAAAA2CPWr1+fGTNm5J133snJJ5+cK664Ik2bNi16FgAAAADA/yCmAQAAoEaVy+X88Y9/zJ133plGjRpl4MCBOfbYY4ueBQAAAADwlcQ0AAAA1JitW7dmzpw5WbJkSQ499ND88pe/zH777Vf0LAAAAACAf0pMAwAAQI34y1/+khkzZmTjxo258MILc/bZZ6eioqLoWQAAAAAA/5KYBgAAgGpVVVWVhQsXZuHChWnTpk1+/etf55BDDil6FgAAAADAbhHTAAAAUG0+/vjjzJgxI6tXr86JJ56Yn//852nWrFnRswAAAAAAdpuYBgAAgO+sXC7nxRdfzNy5c5Mk/fv3z/HHH1/wKgAAAACAb05MAwAAwHeyZcuWzJkzJy+//HK6deuWX/7yl2nTpk3RswAAAAAAvhUxDQAAAN/asmXLctttt+Xzzz/PRRddlJ49e6aioqLoWQAAAAAA35qYBgAAgG/syy+/zL333punn346HTp0yPDhw9O5c+eiZwEAAAAAfGdiGgAAAL6Rd999NzNnzsy6dety5pln5qKLLkplZWXRswAAAAAAqoWYBgAAgN1SVVWVRx55JA8++GBatWqVUaNG5Ygjjih6FgAAAABAtRLTAAAA8LU++uijzJw5M6tXr87xxx+fK6+8Ms2bNy96FgAAAABAtRPTAAAA8E+Vy+U899xzWbBgQSoqKtK/f/8cf/zxRc8CAAAAAKgxYhoAAAC+0ubNmzN79uy8/vrrOfzww9O3b9/st99+Rc8CAAAAAKhRYhoAAAD+l9deey2zZ8/OF198kcsvvzw/+clPUiqVip4FAAAAAFDjxDQAAAD8t23btuWuu+7K4sWL07lz54wZMyYHHnhg0bMAAAAAAPYYMQ0AAABJklWrVmXmzJn55JNPcs4556RXr15p3NhjIwAAAADQsDgVBQAAaOB27tyZhQsX5uGHH07r1q0zduzYHHrooUXPAgAAAAAohJgGAACgAfvggw8yc+bMrFmzJj169MgVV1yRZs2aFT0LAAAAAKAwYhoAAIAGqFwu55lnnsk999yTpk2bZtCgQTnmmGOKngUAAAAAUDgxDQAAQAPzySef5Lbbbsuf//znHHXUUenTp09atWpV9CwAAAAAgFpBTAMAANBAlMvlPPfcc1mwYEFKpVKuueaa9OjRI6VSqehpAAAAAAC1hpgGAACgAdi4cWNuv/32LFu2LIcffniuueaatGnTpuhZAAAAAAC1jpgGAACgHiuXy3nhhRcyf/787Ny5Mz//+c9z2mmneRsNAAAAAMA/IaYBAACopzZv3pw77rgjr732Wrp165a+ffumXbt2Rc8CAAAAAKjVxDQAAAD10Msvv5w5c+Zk+/btufTSS3PmmWemoqKi6FkAAAAAALWemAYAAKAe2bJlS+bOnZslS5bk4IMPTt++fdOhQ4eiZwEAAAAA1BliGgAAgHritddeyx133JEtW7bkZz/7Wc455xxvowEAAAAA+IbENAAAAHXc1q1bM3/+/Pzxj39Mp06dMnLkyHTq1KnoWQAAAAAAdZKYBgAAoA5btmxZbr/99mzevDnnnXdezj///DRu7FEPAAAAAODbcsIKAABQB23bti133313nn322XTo0CGDBw/OwQcfXPQsAAAAAIA6T0wDAABQx6xcuTK33nprPv300/Ts2TMXXHBBKisri54FAAAAAFAviGkAAADqiC+//DL33XdfnnrqqbRr1y7XX399unXrVvQsAAAAAIB6RUwDAABQB6xatSq33npr1q9fnzPOOCMXXXRRmjZtWvQsAAAAAIB6R0wDAABQi23fvj0PPPBAnnrqqbRu3TqjR4/O4YcfXvQsAAAAAIB6S0wDAABQS/35z3/O7bffno8//jinn356Lr74Ym+jAQAAAACoYWIaAACAWmbbtm255557smjRorRr1y6/+tWvcuihhxY9CwAAAACgQRDTAAAA1CLLli3L7Nmzs3Hjxpx11ln52c9+liZNmhQ9CwAAAACgwRDTAAAA1AJbt27NggUL8oc//CEdOnTIr3/963Tt2rXoWQAAAAAADY6YBgAAoGCvvfZa5syZk88++yznnntuzj///FRWVhY9CwAAAACgQRLTAAAAFOTzzz/PvHnz8tJLL6VTp04ZNmxYDjrooKJnAQAAAAA0aGIaAACAPaxcLufll1/OvHnzsnXr1vTq1SvnnHNOGjf2iAYAAAAAUDQntQAAAHvQ5s2bM3fu3Lzyyivp0qVLRo8enY4dOxY9CwAAAACAvxHTAAAA7AHlcjkvvPBC5s+fny+//DIXX3xxfvrTn6aioqLoaQAAAAAA/B0xDQAAQA3bsGFD5syZkzfeeCPdunVLnz590r59+6JnAQAAAADwFcQ0AAAANaRcLmfx4sVZsGBBdu3alcsvvzxnnHGGt9EAAAAAANRiYhoAAIAa8Mknn2T27NlZvnx5DjvssFxzzTVp27Zt0bMAAAAAAPgaYhoAAIBqVFVVlaeffjoPPPBAkuSqq67KKaecklKpVPAyAAAAAAB2h5gGAACgmrz33nuZPXt23nnnnRx11FG56qqr0rp166JnAQAAAADwDYhpAAAAvqMdO3bkoYceymOPPZYWLVqkf//+Oe6447yNBgAAAACgDhLTAAAAfAcrVqzInDlzsn79+vTo0SOXXnppWrRoUfQsAAAAAAC+JTENAADAt7Bly5bcc889Wbx4cdq2bZvRo0fn8MMPL3oWAAAAAADfkZgGAADgGyiXy3n55Zczb968bNmyJWeffXZ69eqVysrKoqcBAAAAAFANxDQAAAC76dNPP83cuXPzxhtvpEuXLhk5cmQ6d+5c9CwAAAAAAKqRmAYAAOBrVFVV5fe//33uu+++lMvlXHbZZfnJT36SioqKoqcBAAAAAFDNxDQAAAD/wtq1a3P77bfn7bffTvfu3XPllVdm//33L3oWAAAAAAA15GtjmlKpNDPJfyRZXy6Xj6r5SQAAAMXbsWNHfve73+WRRx5J8+bN069fv/z4xz9OqVQqehoAAAAAADVod95Mc2uSCUlur9kpAAAAtcNbb72V2bNn58MPP8yJJ56Yyy67LHvvvXfRswAAAAAA2AO+NqYpl8uLSqXSwXtgCwAAQKG2bt2ae++9N88++2z233//jBw5MkceeWTRswAAAAAA2IN25800u6VUKg1IMiBJDjrooOr6tQAAADWuXC7nlVdeyZ133pnPPvssPXv2zH/8x3+kadOmRU8DAAAAAGAPq7aYplwuT0syLUmOO+64cnX9XgAAgJr0ySefZN68eXn99dfTuXPnDBs2LF26dCl6FgAAAAAABam2mAYAAKAu2bVrV5544ok89NBDSZJLLrkkZ511VioqKgpeBgAAAABAkcQ0AABAg7Nq1arccccdWbt2bY4++uj07t07rVu3LnoWAAAAAAC1wNfGNKVS6c4kpyfZv1QqvZfk/1sul2fU9DAAAIDqtmXLltx777157rnnst9++2XIkCE5+uiji54FAAAAAEAt8rUxTblc/vmeGAIAAFBTyuVyXnjhhSxYsCBbt25Nz5498x//8R9p2rRp0dMAAAAAAKhlXPMEAADUa+vWrcucOXOycuXKdO3aNVdddVU6depU9CwAAAAAAGopMQ0AAFAv7dixI7/73e/y6KOPpmnTprn66qvz7//+7ymVSkVPAwAAAACgFhPTAAAA9c6f/vSnzJ07Nx999FFOOOGEXHrppWnVqlXRswAAAAAAqAPENAAAQL2xadOm3HXXXVmyZEnat2+f0aNH5/DDDy96FgAAAAAAdYiYBgAAqPOqqqqyaNGi3Hfffdm5c2d69eqVc845J40be+QBAAAAAOCbcbIMAADUaWvWrMmcOXPyzjvv5IgjjsiVV16Zdu3aFT0LAAAAAIA6SkwDAADUSdu2bctvf/vbPPXUU2nZsmX69++f4447LqVSqehpAAAAAADUYWIaAACgTimXy3nllVcyf/78bNq0Kaeddlp+9rOfpXnz5kVPAwAAAACgHhDTAAAAdcaHH36YefPm5U9/+lM6d+6cQYMG5ZBDDil6FgAAAAAA9YiYBgAAqPW2b9+ehx9+OI899liaNGmS3r1757TTTktFRUXR0wAAAAAAqGfENAAAQK31/650uuuuu7Jhw4acdNJJufjii9OqVauipwEAAAAAUE+JaQAAgFpp3bp1mTdvXpYvX57OnTvnuuuuS7du3YqeBQAAAABAPSemAQAAapXt27dn4cKFeeKJJ1zpBAAAAADAHiemAQAAaoVyuZylS5dmwYIF2bBhQ3r06JGLL744LVu2LHoaAAAAAAANiJgGAAAonCudAAAAAACoLcQ0AABAYf7xSqef//znOfXUU13pBAAAAABAYcQ0AADAHudKJwAAAAAAaisxDQAAsEetW7cud955Z1asWJHOnTtnwIAB6dq1a9GzAAAAAAAgiZgGAADYQ/7+SqemTZu60gkAAAAAgFpJTAMAANSocrmcl19+OQsWLMjGjRtz8skn56KLLnKlEwAAAAAAtZKYBgAAqDHvvfde5s+fn5UrV6Zz584ZOHCgK50AAAAAAKjVxDQAAEC127JlSx544IEsWrQozZs3z5VXXplTTjnFlU4AAAAAANR6YhoAAKDaVFVV5fe//31++9vfZtu2bTn99NPTq1evtGjRouhpAAAAAACwW8Q0AABAtVi+fHnuuuuurF27NkcccUQuv/zyHHjggUXPAgAAAACAb0RMAwAAfCcff/xxFixYkFdffTX7779/hgwZkh/84AcplUpFTwMAAAAAgG9MTAMAAHwr27dvz8MPP5zHH388jRo1yoUXXpizzjorlZWVRU8DAAAAAIBvTUwDAAB8I+VyOS+++GLuvffebNy4MSeeeGIuuuii7LvvvkVPAwAAAACA70xMAwAA7LZ33nkn8+fPz+rVq3PwwQdn4MCB6dq1a9GzAAAAAACg2ohpAACAr7V58+bcd999+cMf/pBWrVqlT58+Oemkk1IqlYqeBgAAAAAA1UpMAwAA/FM7d+7MU089lYULF2bHjh05++yzc95556VZs2ZFTwMAAAAAgBohpgEAAP6XcrmcN954IwsWLMj69evzgx/8IJdddlnatWtX9DQAAAAAAKhRYhoAAOB/WLduXe66664sW7YsBxxwQEaMGJHu3bsXPQsAAAAAAPYIMQ0AAJAk+fzzz/PQQw/l97//fZo2bZrLL788p59+eho1alT0NAAAAAAA2GPENAAA0MDt3LkzTz/9dBYuXJht27bl1FNPTa9evdKyZcuipwEAAAAAwB4npgEAgAaqXC7nlVdeyT333JOPP/44Rx11VC655JIceOCBRU8DAAAAAIDCiGkAAKABeuedd7JgwYL85S9/yYEHHpgRI0ake/fuRc8CAAAAAIDCiWkAAKAB2bBhQ+6777688ML/v717C9KyTvA8/3sSUiARSIqzkMkpOSUpIoiIBwQPpVa1h2rLbqvasqqiuqo7amejL2evdi/mZvZiI3Y3dmYnOiY6JuZmO2K6a9QqT2UpNFIcRBGRg4pykOQgJiAghzST99mLeiunrNIWFfLNw+cT8UaamU8Yv7zxn/B+fZ7NGTVqVB577LHccsstqaurq/U0AAAAAADoE8Q0AAAwCFy4cCHPP/98XnjhhZRlmfvuuy/33ntvhg8fXutp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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "def visualize_q_func():\n", + " # save_dir = (save_path / '..').resolve()\n", + " # save_dir.mkdir(parents=True, exist_ok=True)\n", + " \n", + " dpi, width, height = 10, 400, 400\n", + " figsize = width / float(dpi), height / float(dpi)\n", + " LabelSize, LegendFontsize, font_gap = 40, 40, 5\n", + " \n", + " fig = plt.figure(figsize=figsize)\n", + " \n", + " dataset = SynAdaptiveEnv()\n", + " print(dataset)\n", + " xaxis, yaxis = [], []\n", + " for idx, position, value in dataset:\n", + " xaxis.append(position)\n", + " yaxis.append(value)\n", + " \n", + " def draw_ax(cur_ax, xaxis, yaxis, xlabel, ylabel,\n", + " alpha=0.1, color='k', linestyle='-', legend=None, plot_only=False):\n", + " if legend is not None:\n", + " cur_ax.plot(xaxis[:1], yaxis[:1], color=color, label=legend)\n", + " \n", + " if not plot_only:\n", + " cur_ax.set_xlabel(xlabel, fontsize=LabelSize)\n", + " cur_ax.set_ylabel(ylabel, rotation=0, fontsize=LabelSize)\n", + " for tick in cur_ax.xaxis.get_major_ticks():\n", + " tick.label.set_fontsize(LabelSize - font_gap)\n", + " tick.label.set_rotation(10)\n", + " for tick in cur_ax.yaxis.get_major_ticks():\n", + " tick.label.set_fontsize(LabelSize - font_gap)\n", + " \n", + " cur_ax = fig.add_subplot(1, 1, 1)\n", + " cur_ax.plot(xaxis, yaxis, color=\"k\", linestyle=\"-\", alpha=0.6, label=None)\n", + "\n", + " # fig.savefig(save_path, dpi=dpi, bbox_inches=\"tight\", format=\"pdf\")\n", + " # plt.close(\"all\")\n", + " # plt.show()\n", + "visualize_q_func()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "supreme-basis", + "metadata": {}, + "outputs": [], + "source": [ + "def optimize_fn(xs, ys, test_sets):\n", + " xs = torch.FloatTensor(xs).view(-1, 1)\n", + " ys = torch.FloatTensor(ys).view(-1, 1)\n", + " \n", + " model = SuperSequential(\n", + " SuperMLPv1(1, 10, 20, torch.nn.ReLU),\n", + " SuperMLPv1(20, 10, 1, torch.nn.ReLU)\n", + " )\n", + " optimizer = torch.optim.Adam(\n", + " model.parameters(),\n", + " lr=0.01, weight_decay=1e-4, amsgrad=True\n", + " )\n", + " for _iter in range(100):\n", + " preds = model(ys)\n", + "\n", + " optimizer.zero_grad()\n", + " loss = torch.nn.functional.mse_loss(preds, ys)\n", + " loss.backward()\n", + " optimizer.step()\n", + " \n", + " with torch.no_grad():\n", + " answers = []\n", + " for test_set in test_sets:\n", + " test_set = torch.FloatTensor(test_set).view(-1, 1)\n", + " preds = model(test_set).view(-1).numpy()\n", + " answers.append(preds.tolist())\n", + " return answers\n", + "\n", + "def f(x):\n", + " return np.cos( 0.5 * x + x * x)\n", + "\n", + "def get_data(mode):\n", + " dataset = SynAdaptiveEnv(mode=mode)\n", + " times, xs, ys = [], [], []\n", + " for i, (_, t, x) in enumerate(dataset):\n", + " times.append(t)\n", + " xs.append(x)\n", + " dataset.set_transform(f)\n", + " for i, (_, _, y) in enumerate(dataset):\n", + " ys.append(y)\n", + " return times, xs, ys\n", + "\n", + "def visualize_syn(save_path):\n", + " save_dir = (save_path / '..').resolve()\n", + " save_dir.mkdir(parents=True, exist_ok=True)\n", + " \n", + " dpi, width, height = 40, 2000, 900\n", + " figsize = width / float(dpi), height / float(dpi)\n", + " LabelSize, LegendFontsize, font_gap = 40, 40, 5\n", + " \n", + " fig = plt.figure(figsize=figsize)\n", + " \n", + " times, xs, ys = get_data(None)\n", + " \n", + " def draw_ax(cur_ax, xaxis, yaxis, xlabel, ylabel,\n", + " alpha=0.1, color='k', linestyle='-', legend=None, plot_only=False):\n", + " if legend is not None:\n", + " cur_ax.plot(xaxis[:1], yaxis[:1], color=color, label=legend)\n", + " cur_ax.plot(xaxis, yaxis, color=color, linestyle=linestyle, alpha=alpha, label=None)\n", + " if not plot_only:\n", + " cur_ax.set_xlabel(xlabel, fontsize=LabelSize)\n", + " cur_ax.set_ylabel(ylabel, rotation=0, fontsize=LabelSize)\n", + " for tick in cur_ax.xaxis.get_major_ticks():\n", + " tick.label.set_fontsize(LabelSize - font_gap)\n", + " tick.label.set_rotation(10)\n", + " for tick in cur_ax.yaxis.get_major_ticks():\n", + " tick.label.set_fontsize(LabelSize - font_gap)\n", + " \n", + " cur_ax = fig.add_subplot(2, 1, 1)\n", + " draw_ax(cur_ax, times, xs, \"time\", \"x\", alpha=1.0, legend=None)\n", + "\n", + " cur_ax = fig.add_subplot(2, 1, 2)\n", + " draw_ax(cur_ax, times, ys, \"time\", \"y\", alpha=0.1, legend=\"ground truth\")\n", + " \n", + " train_times, train_xs, train_ys = get_data(\"train\")\n", + " draw_ax(cur_ax, train_times, train_ys, None, None, alpha=1.0, color='r', legend=None, plot_only=True)\n", + " \n", + " valid_times, valid_xs, valid_ys = get_data(\"valid\")\n", + " draw_ax(cur_ax, valid_times, valid_ys, None, None, alpha=1.0, color='g', legend=None, plot_only=True)\n", + " \n", + " test_times, test_xs, test_ys = get_data(\"test\")\n", + " draw_ax(cur_ax, test_times, test_ys, None, None, alpha=1.0, color='b', legend=None, plot_only=True)\n", + " \n", + " # optimize MLP models\n", + "# [train_preds, valid_preds, test_preds] = optimize_fn(train_xs, train_ys, [train_xs, valid_xs, test_xs])\n", + "# draw_ax(cur_ax, train_times, train_preds, None, None,\n", + "# alpha=1.0, linestyle='--', color='r', legend=\"MLP\", plot_only=True)\n", + "# import pdb; pdb.set_trace()\n", + "# draw_ax(cur_ax, valid_times, valid_preds, None, None,\n", + "# alpha=1.0, linestyle='--', color='g', legend=None, plot_only=True)\n", + "# draw_ax(cur_ax, test_times, test_preds, None, None,\n", + "# alpha=1.0, linestyle='--', color='b', legend=None, plot_only=True)\n", + "\n", + " plt.legend(loc=1, fontsize=LegendFontsize)\n", + "\n", + " fig.savefig(save_path, dpi=dpi, bbox_inches=\"tight\", format=\"pdf\")\n", + " plt.close(\"all\")\n", + " # plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "shared-envelope", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The Desktop is at: /Users/xuanyidong/Desktop\n" + ] + } + ], + "source": [ + "# Visualization\n", + "# home_dir = Path.home()\n", + "# desktop_dir = home_dir / 'Desktop'\n", + "# print('The Desktop is at: {:}'.format(desktop_dir))\n", + "# visualize_syn(desktop_dir / 'tot-synthetic-v0.pdf')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/TOT/synthetic.ipynb b/notebooks/TOT/synthetic.ipynb deleted file mode 100644 index 695ea1f..0000000 --- a/notebooks/TOT/synthetic.ipynb +++ /dev/null @@ -1,228 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "filled-multiple", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The root path: /Users/xuanyidong/Desktop/AutoDL-Projects\n", - "The library path: /Users/xuanyidong/Desktop/AutoDL-Projects/lib\n" - ] - } - ], - "source": [ - "import os, sys\n", - "import torch\n", - "from pathlib import Path\n", - "import numpy as np\n", - "import matplotlib\n", - "from matplotlib import cm\n", - "matplotlib.use(\"agg\")\n", - "import matplotlib.pyplot as plt\n", - "import matplotlib.ticker as ticker\n", - "\n", - "\n", - "__file__ = os.path.dirname(os.path.realpath(\"__file__\"))\n", - "root_dir = (Path(__file__).parent / \"..\").resolve()\n", - "lib_dir = (root_dir / \"lib\").resolve()\n", - "print(\"The root path: {:}\".format(root_dir))\n", - "print(\"The library path: {:}\".format(lib_dir))\n", - "assert lib_dir.exists(), \"{:} does not exist\".format(lib_dir)\n", - "if str(lib_dir) not in sys.path:\n", - " sys.path.insert(0, str(lib_dir))\n", - "\n", - "from datasets import SynAdaptiveEnv\n", - "from xlayers.super_core import SuperSequential, SuperMLPv1" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "supreme-basis", - "metadata": {}, - "outputs": [], - "source": [ - "def optimize_fn(xs, ys, test_sets):\n", - " xs = torch.FloatTensor(xs).view(-1, 1)\n", - " ys = torch.FloatTensor(ys).view(-1, 1)\n", - " \n", - " model = SuperSequential(\n", - " SuperMLPv1(1, 10, 20, torch.nn.ReLU),\n", - " SuperMLPv1(20, 10, 1, torch.nn.ReLU)\n", - " )\n", - " optimizer = torch.optim.Adam(\n", - " model.parameters(),\n", - " lr=0.01, weight_decay=1e-4, amsgrad=True\n", - " )\n", - " for _iter in range(100):\n", - " preds = model(ys)\n", - "\n", - " optimizer.zero_grad()\n", - " loss = torch.nn.functional.mse_loss(preds, ys)\n", - " loss.backward()\n", - " optimizer.step()\n", - " \n", - " with torch.no_grad():\n", - " answers = []\n", - " for test_set in test_sets:\n", - " test_set = torch.FloatTensor(test_set).view(-1, 1)\n", - " preds = model(test_set).view(-1).numpy()\n", - " answers.append(preds.tolist())\n", - " return answers\n", - "\n", - "def f(x):\n", - " return np.cos( 0.5 * x + x * x)\n", - "\n", - "def get_data(mode):\n", - " dataset = SynAdaptiveEnv(mode=mode)\n", - " times, xs, ys = [], [], []\n", - " for i, (_, t, x) in enumerate(dataset):\n", - " times.append(t)\n", - " xs.append(x)\n", - " dataset.set_transform(f)\n", - " for i, (_, _, y) in enumerate(dataset):\n", - " ys.append(y)\n", - " return times, xs, ys\n", - "\n", - "def visualize_syn(save_path):\n", - " save_dir = (save_path / '..').resolve()\n", - " save_dir.mkdir(parents=True, exist_ok=True)\n", - " \n", - " dpi, width, height = 40, 2000, 900\n", - " figsize = width / float(dpi), height / float(dpi)\n", - " LabelSize, LegendFontsize, font_gap = 40, 40, 5\n", - " \n", - " fig = plt.figure(figsize=figsize)\n", - " \n", - " times, xs, ys = get_data(None)\n", - " \n", - " def draw_ax(cur_ax, xaxis, yaxis, xlabel, ylabel,\n", - " alpha=0.1, color='k', linestyle='-', legend=None, plot_only=False):\n", - " if legend is not None:\n", - " cur_ax.plot(xaxis[:1], yaxis[:1], color=color, label=legend)\n", - " cur_ax.plot(xaxis, yaxis, color=color, linestyle=linestyle, alpha=alpha, label=None)\n", - " if not plot_only:\n", - " cur_ax.set_xlabel(xlabel, fontsize=LabelSize)\n", - " cur_ax.set_ylabel(ylabel, rotation=0, fontsize=LabelSize)\n", - " for tick in cur_ax.xaxis.get_major_ticks():\n", - " tick.label.set_fontsize(LabelSize - font_gap)\n", - " tick.label.set_rotation(10)\n", - " for tick in cur_ax.yaxis.get_major_ticks():\n", - " tick.label.set_fontsize(LabelSize - font_gap)\n", - " \n", - " cur_ax = fig.add_subplot(2, 1, 1)\n", - " draw_ax(cur_ax, times, xs, \"time\", \"x\", alpha=1.0, legend=None)\n", - "\n", - " cur_ax = fig.add_subplot(2, 1, 2)\n", - " draw_ax(cur_ax, times, ys, \"time\", \"y\", alpha=0.1, legend=\"ground truth\")\n", - " \n", - " train_times, train_xs, train_ys = get_data(\"train\")\n", - " draw_ax(cur_ax, train_times, train_ys, None, None, alpha=1.0, color='r', legend=None, plot_only=True)\n", - " \n", - " valid_times, valid_xs, valid_ys = get_data(\"valid\")\n", - " draw_ax(cur_ax, valid_times, valid_ys, None, None, alpha=1.0, color='g', legend=None, plot_only=True)\n", - " \n", - " test_times, test_xs, test_ys = get_data(\"test\")\n", - " draw_ax(cur_ax, test_times, test_ys, None, None, alpha=1.0, color='b', legend=None, plot_only=True)\n", - " \n", - " # optimize MLP models\n", - " [train_preds, valid_preds, test_preds] = optimize_fn(train_xs, train_ys, [train_xs, valid_xs, test_xs])\n", - " draw_ax(cur_ax, train_times, train_preds, None, None,\n", - " alpha=1.0, linestyle='--', color='r', legend=\"MLP\", plot_only=True)\n", - " import pdb; pdb.set_trace()\n", - " draw_ax(cur_ax, valid_times, valid_preds, None, None,\n", - " alpha=1.0, linestyle='--', color='g', legend=None, plot_only=True)\n", - " draw_ax(cur_ax, test_times, test_preds, None, None,\n", - " alpha=1.0, linestyle='--', color='b', legend=None, plot_only=True)\n", - "\n", - " plt.legend(loc=1, fontsize=LegendFontsize)\n", - "\n", - " fig.savefig(save_path, dpi=dpi, bbox_inches=\"tight\", format=\"pdf\")\n", - " plt.close(\"all\")\n", - " # plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "shared-envelope", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The Desktop is at: /Users/xuanyidong/Desktop\n", - "> \u001b[0;32m\u001b[0m(89)\u001b[0;36mvisualize_syn\u001b[0;34m()\u001b[0m\n", - "\u001b[0;32m 87 \u001b[0;31m alpha=1.0, linestyle='--', color='r', legend=\"MLP\", plot_only=True)\n", - "\u001b[0m\u001b[0;32m 88 \u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mpdb\u001b[0m\u001b[0;34m;\u001b[0m \u001b[0mpdb\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_trace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0m\u001b[0;32m---> 89 \u001b[0;31m draw_ax(cur_ax, valid_times, valid_preds, None, None,\n", - "\u001b[0m\u001b[0;32m 90 \u001b[0;31m alpha=1.0, linestyle='--', color='g', legend=None, plot_only=True)\n", - "\u001b[0m\u001b[0;32m 91 \u001b[0;31m draw_ax(cur_ax, test_times, test_preds, None, None,\n", - "\u001b[0m\n", - "ipdb> train_times\n", - "[0.0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1.0, 1.1, 1.2000000000000002, 1.3, 1.4000000000000001, 1.5, 1.6, 1.7000000000000002, 1.8, 1.9000000000000001, 2.0, 2.1, 2.2, 2.3000000000000003, 2.4000000000000004, 2.5, 2.6, 2.7, 2.8000000000000003, 2.9000000000000004, 3.0, 3.1, 3.2, 3.3000000000000003, 3.4000000000000004, 3.5, 3.6, 3.7, 3.8000000000000003, 3.9000000000000004, 4.0, 4.1000000000000005, 4.2, 4.3, 4.4, 4.5, 4.6000000000000005, 4.7, 4.800000000000001, 4.9, 5.0, 5.1000000000000005, 5.2, 5.300000000000001, 5.4, 5.5, 5.6000000000000005, 5.7, 5.800000000000001, 5.9, 6.0, 6.1000000000000005, 6.2, 6.300000000000001, 6.4, 6.5, 6.6000000000000005, 6.7, 6.800000000000001, 6.9, 7.0, 7.1000000000000005, 7.2, 7.300000000000001, 7.4, 7.5, 7.6000000000000005, 7.7, 7.800000000000001, 7.9, 8.0, 8.1, 8.200000000000001, 8.3, 8.4, 8.5, 8.6, 8.700000000000001, 8.8, 8.9, 9.0, 9.1, 9.200000000000001, 9.3, 9.4, 9.5, 9.600000000000001, 9.700000000000001, 9.8, 9.9, 10.0, 10.100000000000001, 10.200000000000001, 10.3, 10.4, 10.5, 10.600000000000001, 10.700000000000001, 10.8, 10.9, 11.0, 11.100000000000001, 11.200000000000001, 11.3, 11.4, 11.5, 11.600000000000001, 11.700000000000001, 11.8, 11.9, 12.0, 12.100000000000001, 12.200000000000001, 12.3, 12.4, 12.5, 12.600000000000001, 12.700000000000001, 12.8, 12.9, 13.0, 13.100000000000001, 13.200000000000001, 13.3, 13.4, 13.5, 13.600000000000001, 13.700000000000001, 13.8, 13.9, 14.0, 14.100000000000001, 14.200000000000001, 14.3, 14.4, 14.5, 14.600000000000001, 14.700000000000001, 14.8, 14.9, 15.0, 15.100000000000001, 15.200000000000001, 15.3, 15.4, 15.5, 15.600000000000001, 15.700000000000001, 15.8, 15.9, 16.0, 16.1, 16.2, 16.3, 16.400000000000002, 16.5, 16.6, 16.7, 16.8, 16.900000000000002, 17.0, 17.1, 17.2, 17.3, 17.400000000000002, 17.5, 17.6, 17.7, 17.8, 17.900000000000002, 18.0, 18.1, 18.2, 18.3, 18.400000000000002, 18.5, 18.6, 18.7, 18.8, 18.900000000000002, 19.0, 19.1, 19.200000000000003, 19.3, 19.400000000000002, 19.5, 19.6, 19.700000000000003, 19.8, 19.900000000000002, 20.0, 20.1, 20.200000000000003, 20.3, 20.400000000000002, 20.5, 20.6, 20.700000000000003, 20.8, 20.900000000000002, 21.0, 21.1, 21.200000000000003, 21.3, 21.400000000000002, 21.5, 21.6, 21.700000000000003, 21.8, 21.900000000000002, 22.0, 22.1, 22.200000000000003, 22.3, 22.400000000000002, 22.5, 22.6, 22.700000000000003, 22.8, 22.900000000000002, 23.0, 23.1, 23.200000000000003, 23.3, 23.400000000000002, 23.5, 23.6, 23.700000000000003, 23.8, 23.900000000000002, 24.0, 24.1, 24.200000000000003, 24.3, 24.400000000000002, 24.5, 24.6, 24.700000000000003, 24.8, 24.900000000000002, 25.0, 25.1, 25.200000000000003, 25.3, 25.400000000000002, 25.5, 25.6, 25.700000000000003, 25.8, 25.900000000000002, 26.0, 26.1, 26.200000000000003, 26.3, 26.400000000000002, 26.5, 26.6, 26.700000000000003, 26.8, 26.900000000000002, 27.0, 27.1, 27.200000000000003, 27.3, 27.400000000000002, 27.5, 27.6, 27.700000000000003, 27.8, 27.900000000000002, 28.0, 28.1, 28.200000000000003, 28.3, 28.400000000000002, 28.5, 28.6, 28.700000000000003, 28.8, 28.900000000000002, 29.0, 29.1, 29.200000000000003, 29.3, 29.400000000000002, 29.5, 29.6, 29.700000000000003, 29.8, 29.900000000000002, 30.0, 30.1, 30.200000000000003, 30.3, 30.400000000000002, 30.5, 30.6, 30.700000000000003, 30.8, 30.900000000000002, 31.0, 31.1, 31.200000000000003, 31.3, 31.400000000000002, 31.5, 31.6, 31.700000000000003, 31.8, 31.900000000000002, 32.0, 32.1, 32.2, 32.300000000000004, 32.4, 32.5, 32.6, 32.7, 32.800000000000004, 32.9, 33.0, 33.1, 33.2, 33.300000000000004, 33.4, 33.5, 33.6, 33.7, 33.800000000000004, 33.9, 34.0, 34.1, 34.2, 34.300000000000004, 34.4, 34.5, 34.6, 34.7, 34.800000000000004, 34.9, 35.0, 35.1, 35.2, 35.300000000000004, 35.4, 35.5, 35.6, 35.7, 35.800000000000004, 35.9, 36.0, 36.1, 36.2, 36.300000000000004, 36.4, 36.5, 36.6, 36.7, 36.800000000000004, 36.9, 37.0, 37.1, 37.2, 37.300000000000004, 37.4, 37.5, 37.6, 37.7, 37.800000000000004, 37.9, 38.0, 38.1, 38.2, 38.300000000000004, 38.400000000000006, 38.5, 38.6, 38.7, 38.800000000000004, 38.900000000000006, 39.0, 39.1, 39.2, 39.300000000000004, 39.400000000000006, 39.5, 39.6, 39.7, 39.800000000000004, 39.900000000000006, 40.0, 40.1, 40.2, 40.300000000000004, 40.400000000000006, 40.5, 40.6, 40.7, 40.800000000000004, 40.900000000000006, 41.0, 41.1, 41.2, 41.300000000000004, 41.400000000000006, 41.5, 41.6, 41.7, 41.800000000000004, 41.900000000000006, 42.0, 42.1, 42.2, 42.300000000000004, 42.400000000000006, 42.5, 42.6, 42.7, 42.800000000000004, 42.900000000000006, 43.0, 43.1, 43.2, 43.300000000000004, 43.400000000000006, 43.5, 43.6, 43.7, 43.800000000000004, 43.900000000000006, 44.0, 44.1, 44.2, 44.300000000000004, 44.400000000000006, 44.5, 44.6, 44.7, 44.800000000000004, 44.900000000000006, 45.0, 45.1, 45.2, 45.300000000000004, 45.400000000000006, 45.5, 45.6, 45.7, 45.800000000000004, 45.900000000000006, 46.0, 46.1, 46.2, 46.300000000000004, 46.400000000000006, 46.5, 46.6, 46.7, 46.800000000000004, 46.900000000000006, 47.0, 47.1, 47.2, 47.300000000000004, 47.400000000000006, 47.5, 47.6, 47.7, 47.800000000000004, 47.900000000000006, 48.0, 48.1, 48.2, 48.300000000000004, 48.400000000000006, 48.5, 48.6, 48.7, 48.800000000000004, 48.900000000000006, 49.0, 49.1, 49.2, 49.300000000000004, 49.400000000000006, 49.5, 49.6, 49.7, 49.800000000000004, 49.900000000000006, 50.0, 50.1, 50.2, 50.300000000000004, 50.400000000000006, 50.5, 50.6, 50.7, 50.800000000000004, 50.900000000000006, 51.0, 51.1, 51.2, 51.300000000000004, 51.400000000000006, 51.5, 51.6, 51.7, 51.800000000000004, 51.900000000000006, 52.0, 52.1, 52.2, 52.300000000000004, 52.400000000000006, 52.5, 52.6, 52.7, 52.800000000000004, 52.900000000000006, 53.0, 53.1, 53.2, 53.300000000000004, 53.400000000000006, 53.5, 53.6, 53.7, 53.800000000000004, 53.900000000000006, 54.0, 54.1, 54.2, 54.300000000000004, 54.400000000000006, 54.5, 54.6, 54.7, 54.800000000000004, 54.900000000000006, 55.0, 55.1, 55.2, 55.300000000000004, 55.400000000000006, 55.5, 55.6, 55.7, 55.800000000000004, 55.900000000000006, 56.0, 56.1, 56.2, 56.300000000000004, 56.400000000000006, 56.5, 56.6, 56.7, 56.800000000000004, 56.900000000000006, 57.0, 57.1, 57.2, 57.300000000000004, 57.400000000000006, 57.5, 57.6, 57.7, 57.800000000000004, 57.900000000000006, 58.0, 58.1, 58.2, 58.300000000000004, 58.400000000000006, 58.5, 58.6, 58.7, 58.800000000000004, 58.900000000000006, 59.0, 59.1, 59.2, 59.300000000000004, 59.400000000000006, 59.5, 59.6, 59.7, 59.800000000000004, 59.900000000000006, 60.0, 60.1, 60.2, 60.300000000000004, 60.400000000000006, 60.5, 60.6, 60.7, 60.800000000000004, 60.900000000000006, 61.0, 61.1, 61.2, 61.300000000000004, 61.400000000000006, 61.5, 61.6, 61.7, 61.800000000000004, 61.900000000000006, 62.0, 62.1, 62.2, 62.300000000000004, 62.400000000000006, 62.5, 62.6, 62.7, 62.800000000000004, 62.900000000000006, 63.0, 63.1, 63.2, 63.300000000000004, 63.400000000000006, 63.5, 63.6, 63.7, 63.800000000000004, 63.900000000000006, 64.0, 64.10000000000001, 64.2, 64.3, 64.4, 64.5, 64.60000000000001, 64.7, 64.8, 64.9, 65.0, 65.10000000000001, 65.2, 65.3, 65.4, 65.5, 65.60000000000001, 65.7, 65.8, 65.9, 66.0, 66.10000000000001, 66.2, 66.3, 66.4, 66.5, 66.60000000000001, 66.7, 66.8, 66.9, 67.0, 67.10000000000001, 67.2, 67.3, 67.4, 67.5, 67.60000000000001, 67.7, 67.8, 67.9, 68.0, 68.10000000000001, 68.2, 68.3, 68.4, 68.5, 68.60000000000001, 68.7, 68.8, 68.9, 69.0, 69.10000000000001, 69.2, 69.3, 69.4, 69.5, 69.60000000000001, 69.7, 69.8, 69.9, 70.0, 70.10000000000001, 70.2, 70.3, 70.4, 70.5, 70.60000000000001, 70.7, 70.8, 70.9, 71.0, 71.10000000000001, 71.2, 71.3, 71.4, 71.5, 71.60000000000001, 71.7, 71.8, 71.9, 72.0, 72.10000000000001, 72.2, 72.3, 72.4, 72.5, 72.60000000000001, 72.7, 72.8, 72.9, 73.0, 73.10000000000001, 73.2, 73.3, 73.4, 73.5, 73.60000000000001, 73.7, 73.8, 73.9, 74.0, 74.10000000000001, 74.2, 74.3, 74.4, 74.5, 74.60000000000001, 74.7, 74.8, 74.9, 75.0, 75.10000000000001, 75.2, 75.3, 75.4, 75.5, 75.60000000000001, 75.7, 75.8, 75.9, 76.0, 76.10000000000001, 76.2, 76.3, 76.4, 76.5, 76.60000000000001, 76.7, 76.80000000000001, 76.9, 77.0, 77.10000000000001, 77.2, 77.30000000000001, 77.4, 77.5, 77.60000000000001, 77.7, 77.80000000000001, 77.9, 78.0, 78.10000000000001, 78.2, 78.30000000000001, 78.4, 78.5, 78.60000000000001, 78.7, 78.80000000000001, 78.9, 79.0, 79.10000000000001, 79.2, 79.30000000000001, 79.4, 79.5, 79.60000000000001, 79.7, 79.80000000000001, 79.9, 80.0, 80.10000000000001, 80.2, 80.30000000000001, 80.4, 80.5, 80.60000000000001, 80.7, 80.80000000000001, 80.9, 81.0, 81.10000000000001, 81.2, 81.30000000000001, 81.4, 81.5, 81.60000000000001, 81.7, 81.80000000000001, 81.9, 82.0, 82.10000000000001, 82.2, 82.30000000000001, 82.4, 82.5, 82.60000000000001, 82.7, 82.80000000000001, 82.9, 83.0, 83.10000000000001, 83.2, 83.30000000000001, 83.4, 83.5, 83.60000000000001, 83.7, 83.80000000000001, 83.9, 84.0, 84.10000000000001, 84.2, 84.30000000000001, 84.4, 84.5, 84.60000000000001, 84.7, 84.80000000000001, 84.9, 85.0, 85.10000000000001, 85.2, 85.30000000000001, 85.4, 85.5, 85.60000000000001, 85.7, 85.80000000000001, 85.9, 86.0, 86.10000000000001, 86.2, 86.30000000000001, 86.4, 86.5, 86.60000000000001, 86.7, 86.80000000000001, 86.9, 87.0, 87.10000000000001, 87.2, 87.30000000000001, 87.4, 87.5, 87.60000000000001, 87.7, 87.80000000000001, 87.9, 88.0, 88.10000000000001, 88.2, 88.30000000000001, 88.4, 88.5, 88.60000000000001, 88.7, 88.80000000000001, 88.9, 89.0, 89.10000000000001, 89.2, 89.30000000000001, 89.4, 89.5, 89.60000000000001, 89.7, 89.80000000000001, 89.9, 90.0, 90.10000000000001, 90.2, 90.30000000000001, 90.4, 90.5, 90.60000000000001, 90.7, 90.80000000000001, 90.9, 91.0, 91.10000000000001, 91.2, 91.30000000000001, 91.4, 91.5, 91.60000000000001, 91.7, 91.80000000000001, 91.9, 92.0, 92.10000000000001, 92.2, 92.30000000000001, 92.4, 92.5, 92.60000000000001, 92.7, 92.80000000000001, 92.9, 93.0, 93.10000000000001, 93.2, 93.30000000000001, 93.4, 93.5, 93.60000000000001, 93.7, 93.80000000000001, 93.9, 94.0, 94.10000000000001, 94.2, 94.30000000000001, 94.4, 94.5, 94.60000000000001, 94.7, 94.80000000000001, 94.9, 95.0, 95.10000000000001, 95.2, 95.30000000000001, 95.4, 95.5, 95.60000000000001, 95.7, 95.80000000000001, 95.9, 96.0, 96.10000000000001, 96.2, 96.30000000000001, 96.4, 96.5, 96.60000000000001, 96.7, 96.80000000000001, 96.9, 97.0, 97.10000000000001, 97.2, 97.30000000000001, 97.4, 97.5, 97.60000000000001, 97.7, 97.80000000000001, 97.9, 98.0, 98.10000000000001, 98.2, 98.30000000000001, 98.4, 98.5, 98.60000000000001, 98.7, 98.80000000000001, 98.9, 99.0, 99.10000000000001, 99.2, 99.30000000000001, 99.4, 99.5, 99.60000000000001, 99.7, 99.80000000000001, 99.9, 100.0, 100.10000000000001, 100.2, 100.30000000000001, 100.4, 100.5, 100.60000000000001, 100.7, 100.80000000000001, 100.9, 101.0, 101.10000000000001, 101.2, 101.30000000000001, 101.4, 101.5, 101.60000000000001, 101.7, 101.80000000000001, 101.9, 102.0, 102.10000000000001, 102.2, 102.30000000000001, 102.4, 102.5, 102.60000000000001, 102.7, 102.80000000000001, 102.9, 103.0, 103.10000000000001, 103.2, 103.30000000000001, 103.4, 103.5, 103.60000000000001, 103.7, 103.80000000000001, 103.9, 104.0, 104.10000000000001, 104.2, 104.30000000000001, 104.4, 104.5, 104.60000000000001, 104.7, 104.80000000000001, 104.9, 105.0, 105.10000000000001, 105.2, 105.30000000000001, 105.4, 105.5, 105.60000000000001, 105.7, 105.80000000000001, 105.9, 106.0, 106.10000000000001, 106.2, 106.30000000000001, 106.4, 106.5, 106.60000000000001, 106.7, 106.80000000000001, 106.9, 107.0, 107.10000000000001, 107.2, 107.30000000000001, 107.4, 107.5, 107.60000000000001, 107.7, 107.80000000000001, 107.9, 108.0, 108.10000000000001, 108.2, 108.30000000000001, 108.4, 108.5, 108.60000000000001, 108.7, 108.80000000000001, 108.9, 109.0, 109.10000000000001, 109.2, 109.30000000000001, 109.4, 109.5, 109.60000000000001, 109.7, 109.80000000000001, 109.9, 110.0, 110.10000000000001, 110.2, 110.30000000000001, 110.4, 110.5, 110.60000000000001, 110.7, 110.80000000000001, 110.9, 111.0, 111.10000000000001, 111.2, 111.30000000000001, 111.4, 111.5, 111.60000000000001, 111.7, 111.80000000000001, 111.9, 112.0, 112.10000000000001, 112.2, 112.30000000000001, 112.4, 112.5, 112.60000000000001, 112.7, 112.80000000000001, 112.9, 113.0, 113.10000000000001, 113.2, 113.30000000000001, 113.4, 113.5, 113.60000000000001, 113.7, 113.80000000000001, 113.9, 114.0, 114.10000000000001, 114.2, 114.30000000000001, 114.4, 114.5, 114.60000000000001, 114.7, 114.80000000000001, 114.9, 115.0, 115.10000000000001, 115.2, 115.30000000000001, 115.4, 115.5, 115.60000000000001, 115.7, 115.80000000000001, 115.9, 116.0, 116.10000000000001, 116.2, 116.30000000000001, 116.4, 116.5, 116.60000000000001, 116.7, 116.80000000000001, 116.9, 117.0, 117.10000000000001, 117.2, 117.30000000000001, 117.4, 117.5, 117.60000000000001, 117.7, 117.80000000000001, 117.9, 118.0, 118.10000000000001, 118.2, 118.30000000000001, 118.4, 118.5, 118.60000000000001, 118.7, 118.80000000000001, 118.9, 119.0, 119.10000000000001, 119.2, 119.30000000000001, 119.4, 119.5, 119.60000000000001, 119.7, 119.80000000000001, 119.9, 120.0, 120.10000000000001, 120.2, 120.30000000000001, 120.4, 120.5, 120.60000000000001, 120.7, 120.80000000000001, 120.9, 121.0, 121.10000000000001, 121.2, 121.30000000000001, 121.4, 121.5, 121.60000000000001, 121.7, 121.80000000000001, 121.9, 122.0, 122.10000000000001, 122.2, 122.30000000000001, 122.4, 122.5, 122.60000000000001, 122.7, 122.80000000000001, 122.9, 123.0, 123.10000000000001, 123.2, 123.30000000000001, 123.4, 123.5, 123.60000000000001, 123.7, 123.80000000000001, 123.9, 124.0, 124.10000000000001, 124.2, 124.30000000000001, 124.4, 124.5, 124.60000000000001, 124.7, 124.80000000000001, 124.9, 125.0, 125.10000000000001, 125.2, 125.30000000000001, 125.4, 125.5, 125.60000000000001, 125.7, 125.80000000000001, 125.9, 126.0, 126.10000000000001, 126.2, 126.30000000000001, 126.4, 126.5, 126.60000000000001, 126.7, 126.80000000000001, 126.9, 127.0, 127.10000000000001, 127.2, 127.30000000000001, 127.4, 127.5, 127.60000000000001, 127.7, 127.80000000000001, 127.9, 128.0, 128.1, 128.20000000000002, 128.3, 128.4, 128.5, 128.6, 128.70000000000002, 128.8, 128.9, 129.0, 129.1, 129.20000000000002, 129.3, 129.4, 129.5, 129.6, 129.70000000000002, 129.8, 129.9, 130.0, 130.1, 130.20000000000002, 130.3, 130.4, 130.5, 130.6, 130.70000000000002, 130.8, 130.9, 131.0, 131.1, 131.20000000000002, 131.3, 131.4, 131.5, 131.6, 131.70000000000002, 131.8, 131.9, 132.0, 132.1, 132.20000000000002, 132.3, 132.4, 132.5, 132.6, 132.70000000000002, 132.8, 132.9, 133.0, 133.1, 133.20000000000002, 133.3, 133.4, 133.5, 133.6, 133.70000000000002, 133.8, 133.9, 134.0, 134.1, 134.20000000000002, 134.3, 134.4, 134.5, 134.6, 134.70000000000002, 134.8, 134.9, 135.0, 135.1, 135.20000000000002, 135.3, 135.4, 135.5, 135.6, 135.70000000000002, 135.8, 135.9, 136.0, 136.1, 136.20000000000002, 136.3, 136.4, 136.5, 136.6, 136.70000000000002, 136.8, 136.9, 137.0, 137.1, 137.20000000000002, 137.3, 137.4, 137.5, 137.6, 137.70000000000002, 137.8, 137.9, 138.0, 138.1, 138.20000000000002, 138.3, 138.4, 138.5, 138.6, 138.70000000000002, 138.8, 138.9, 139.0, 139.1, 139.20000000000002, 139.3, 139.4, 139.5, 139.6, 139.70000000000002, 139.8, 139.9, 140.0, 140.1, 140.20000000000002, 140.3, 140.4, 140.5, 140.6, 140.70000000000002, 140.8, 140.9, 141.0, 141.1, 141.20000000000002, 141.3, 141.4, 141.5, 141.6, 141.70000000000002, 141.8, 141.9, 142.0, 142.1, 142.20000000000002, 142.3, 142.4, 142.5, 142.6, 142.70000000000002, 142.8, 142.9, 143.0, 143.1, 143.20000000000002, 143.3, 143.4, 143.5, 143.6, 143.70000000000002, 143.8, 143.9, 144.0, 144.1, 144.20000000000002, 144.3, 144.4, 144.5, 144.6, 144.70000000000002, 144.8, 144.9, 145.0, 145.1, 145.20000000000002, 145.3, 145.4, 145.5, 145.6, 145.70000000000002, 145.8, 145.9, 146.0, 146.1, 146.20000000000002, 146.3, 146.4, 146.5, 146.6, 146.70000000000002, 146.8, 146.9, 147.0, 147.1, 147.20000000000002, 147.3, 147.4, 147.5, 147.6, 147.70000000000002, 147.8, 147.9, 148.0, 148.1, 148.20000000000002, 148.3, 148.4, 148.5, 148.6, 148.70000000000002, 148.8, 148.9, 149.0, 149.1, 149.20000000000002, 149.3, 149.4, 149.5, 149.6, 149.70000000000002, 149.8, 149.9, 150.0, 150.1, 150.20000000000002, 150.3, 150.4, 150.5, 150.6, 150.70000000000002, 150.8, 150.9, 151.0, 151.1, 151.20000000000002, 151.3, 151.4, 151.5, 151.6, 151.70000000000002, 151.8, 151.9, 152.0, 152.1, 152.20000000000002, 152.3, 152.4, 152.5, 152.6, 152.70000000000002, 152.8, 152.9, 153.0, 153.1, 153.20000000000002, 153.3, 153.4, 153.5, 153.60000000000002, 153.70000000000002, 153.8, 153.9, 154.0, 154.10000000000002, 154.20000000000002, 154.3, 154.4, 154.5, 154.60000000000002, 154.70000000000002, 154.8, 154.9, 155.0, 155.10000000000002, 155.20000000000002, 155.3, 155.4, 155.5, 155.60000000000002, 155.70000000000002, 155.8, 155.9, 156.0, 156.10000000000002, 156.20000000000002, 156.3, 156.4, 156.5, 156.60000000000002, 156.70000000000002, 156.8, 156.9, 157.0, 157.10000000000002, 157.20000000000002, 157.3, 157.4, 157.5, 157.60000000000002, 157.70000000000002, 157.8, 157.9, 158.0, 158.10000000000002, 158.20000000000002, 158.3, 158.4, 158.5, 158.60000000000002, 158.70000000000002, 158.8, 158.9, 159.0, 159.10000000000002, 159.20000000000002, 159.3, 159.4, 159.5, 159.60000000000002, 159.70000000000002, 159.8, 159.9, 160.0, 160.10000000000002, 160.20000000000002, 160.3, 160.4, 160.5, 160.60000000000002, 160.70000000000002, 160.8, 160.9, 161.0, 161.10000000000002, 161.20000000000002, 161.3, 161.4, 161.5, 161.60000000000002, 161.70000000000002, 161.8, 161.9, 162.0, 162.10000000000002, 162.20000000000002, 162.3, 162.4, 162.5, 162.60000000000002, 162.70000000000002, 162.8, 162.9, 163.0, 163.10000000000002, 163.20000000000002, 163.3, 163.4, 163.5, 163.60000000000002, 163.70000000000002, 163.8, 163.9, 164.0, 164.10000000000002, 164.20000000000002, 164.3, 164.4, 164.5, 164.60000000000002, 164.70000000000002, 164.8, 164.9, 165.0, 165.10000000000002, 165.20000000000002, 165.3, 165.4, 165.5, 165.60000000000002, 165.70000000000002, 165.8, 165.9, 166.0, 166.10000000000002, 166.20000000000002, 166.3, 166.4, 166.5, 166.60000000000002, 166.70000000000002, 166.8, 166.9, 167.0, 167.10000000000002, 167.20000000000002, 167.3, 167.4, 167.5, 167.60000000000002, 167.70000000000002, 167.8, 167.9, 168.0, 168.10000000000002, 168.20000000000002, 168.3, 168.4, 168.5, 168.60000000000002, 168.70000000000002, 168.8, 168.9, 169.0, 169.10000000000002, 169.20000000000002, 169.3, 169.4, 169.5, 169.60000000000002, 169.70000000000002, 169.8, 169.9, 170.0, 170.10000000000002, 170.20000000000002, 170.3, 170.4, 170.5, 170.60000000000002, 170.70000000000002, 170.8, 170.9, 171.0, 171.10000000000002, 171.20000000000002, 171.3, 171.4, 171.5, 171.60000000000002, 171.70000000000002, 171.8, 171.9, 172.0, 172.10000000000002, 172.20000000000002, 172.3, 172.4, 172.5, 172.60000000000002, 172.70000000000002, 172.8, 172.9, 173.0, 173.10000000000002, 173.20000000000002, 173.3, 173.4, 173.5, 173.60000000000002, 173.70000000000002, 173.8, 173.9, 174.0, 174.10000000000002, 174.20000000000002, 174.3, 174.4, 174.5, 174.60000000000002, 174.70000000000002, 174.8, 174.9, 175.0, 175.10000000000002, 175.20000000000002, 175.3, 175.4, 175.5, 175.60000000000002, 175.70000000000002, 175.8, 175.9, 176.0, 176.10000000000002, 176.20000000000002, 176.3, 176.4, 176.5, 176.60000000000002, 176.70000000000002, 176.8, 176.9, 177.0, 177.10000000000002, 177.20000000000002, 177.3, 177.4, 177.5, 177.60000000000002, 177.70000000000002, 177.8, 177.9, 178.0, 178.10000000000002, 178.20000000000002, 178.3, 178.4, 178.5, 178.60000000000002, 178.70000000000002, 178.8, 178.9, 179.0, 179.10000000000002, 179.20000000000002, 179.3, 179.4, 179.5, 179.60000000000002, 179.70000000000002, 179.8, 179.9, 180.0, 180.10000000000002, 180.20000000000002, 180.3, 180.4, 180.5, 180.60000000000002, 180.70000000000002, 180.8, 180.9, 181.0, 181.10000000000002, 181.20000000000002, 181.3, 181.4, 181.5, 181.60000000000002, 181.70000000000002, 181.8, 181.9, 182.0, 182.10000000000002, 182.20000000000002, 182.3, 182.4, 182.5, 182.60000000000002, 182.70000000000002, 182.8, 182.9, 183.0, 183.10000000000002, 183.20000000000002, 183.3, 183.4, 183.5, 183.60000000000002, 183.70000000000002, 183.8, 183.9, 184.0, 184.10000000000002, 184.20000000000002, 184.3, 184.4, 184.5, 184.60000000000002, 184.70000000000002, 184.8, 184.9, 185.0, 185.10000000000002, 185.20000000000002, 185.3, 185.4, 185.5, 185.60000000000002, 185.70000000000002, 185.8, 185.9, 186.0, 186.10000000000002, 186.20000000000002, 186.3, 186.4, 186.5, 186.60000000000002, 186.70000000000002, 186.8, 186.9, 187.0, 187.10000000000002, 187.20000000000002, 187.3, 187.4, 187.5, 187.60000000000002, 187.70000000000002, 187.8, 187.9, 188.0, 188.10000000000002, 188.20000000000002, 188.3, 188.4]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ipdb> train_preds\n", - "[-0.04611632227897644, -0.045859843492507935, -0.045347750186920166, -0.04458075761795044, -0.04355984926223755, -0.04228568077087402, -0.04075917601585388, -0.03898113965988159, -0.036952465772628784, -0.03467392921447754, -0.03214627504348755, -0.029370546340942383, -0.026347368955612183, -0.023629456758499146, -0.021652281284332275, -0.019537389278411865, -0.01728537678718567, -0.014701485633850098, -0.011017769575119019, -0.007136136293411255, -0.0030573904514312744, 0.0012176334857940674, 0.00568816065788269, 0.01035335659980774, 0.015212282538414001, 0.024441495537757874, 0.034274160861968994, 0.04434235394001007, 0.05476266145706177, 0.06553322076797485, 0.07665219902992249, 0.08811751008033752, 0.09992708265781403, 0.11207878589630127, 0.12457036972045898, 0.1348687708377838, 0.14432348310947418, 0.15401709079742432, 0.1639476716518402, 0.1741131991147995, 0.1845117211341858, 0.1951409876346588, 0.20599885284900665, 0.2170828878879547, 0.22839070856571198, 0.23991985619068146, 0.25166743993759155, 0.2636308968067169, 0.27580732107162476, 0.2881937026977539, 0.3007868230342865, 0.31358349323272705, 0.326580286026001, 0.3397737145423889, 0.35316002368927, 0.36673545837402344, 0.3804960250854492, 0.3944375216960907, 0.4085557162761688, 0.4228460490703583, 0.43730393052101135, 0.45192456245422363, 0.4667028784751892, 0.4816338121891022, 0.4967120289802551, 0.5119316577911377, 0.5272871851921082, 0.542772650718689, 0.5583819150924683, 0.5741086006164551, 0.5899459719657898, 0.6058872938156128, 0.6219258308410645, 0.6380539536476135, 0.6542644500732422, 0.6705495119094849, 0.686901330947876, 0.703311562538147, 0.7197721600532532, 0.7362741231918335, 0.7528088092803955, 0.7693670392036438, 0.7859395742416382, 0.8025166988372803, 0.8190886378288269, 0.8356451988220215, 0.8521762490272522, 0.8686710596084595, 0.8851190209388733, 0.9015086889266968, 0.9178289771080017, 0.934068500995636, 0.950215220451355, 0.9619203209877014, 0.9724005460739136, 0.9827953577041626, 0.9930967688560486, 1.0032958984375, 1.0133841037750244, 1.0223143100738525, 1.0289654731750488, 1.035523772239685, 1.041982650756836, 1.0483357906341553, 1.0545767545700073, 1.0606989860534668, 1.066696286201477, 1.072561502456665, 1.0782880783081055, 1.0838695764541626, 1.0892987251281738, 1.0942928791046143, 1.0983036756515503, 1.1021784543991089, 1.1059117317199707, 1.1094977855682373, 1.112931251525879, 1.1162065267562866, 1.119317650794983, 1.1222593784332275, 1.1250262260437012, 1.127611756324768, 1.1300114393234253, 1.1322190761566162, 1.134229063987732, 1.1360361576080322, 1.137634515762329, 1.139019250869751, 1.1401841640472412, 1.1411248445510864, 1.1418354511260986, 1.1423108577728271, 1.1425459384918213, 1.142535924911499, 1.1422756910324097, 1.1417604684829712, 1.1409857273101807, 1.139946699142456, 1.1386388540267944, 1.1370586156845093, 1.135201096534729, 1.1330630779266357, 1.1306400299072266, 1.1279289722442627, 1.1249263286590576, 1.121628761291504, 1.1180336475372314, 1.114138126373291, 1.1099395751953125, 1.105436086654663, 1.1006255149841309, 1.0955058336257935, 1.0892024040222168, 1.081896424293518, 1.0741932392120361, 1.0660918951034546, 1.0575921535491943, 1.048694372177124, 1.0393991470336914, 1.029707431793213, 1.0193676948547363, 1.00386381149292, 0.9877821803092957, 0.9711267948150635, 0.9539030194282532, 0.9270477294921875, 0.899175763130188, 0.8704700469970703, 0.8409428596496582, 0.8106081485748291, 0.7794802784919739, 0.7475759387016296, 0.7149122953414917, 0.6815081238746643, 0.6473833918571472, 0.61255943775177, 0.5770588517189026, 0.540905773639679, 0.5041252374649048, 0.466744065284729, 0.42879006266593933, 0.39029255509376526, 0.3512822985649109, 0.31179079413414, 0.27185162901878357, 0.23149913549423218, 0.19076907634735107, 0.14969851076602936, 0.10044234991073608, 0.04247118532657623, -0.0015277862548828125, -0.030001014471054077, -0.06862908601760864, -0.10734251141548157, -0.14174914360046387, -0.1752888262271881, -0.20879262685775757, -0.24222278594970703, -0.2841641306877136, -0.32651621103286743, -0.36862272024154663, -0.406676709651947, -0.44286733865737915, -0.4787063002586365, -0.5141467452049255, -0.549141526222229, -0.5836432576179504, -0.6176037192344666, -0.6509752869606018, -0.6837095618247986, -0.7157586216926575, -0.7470743060112, -0.7776085734367371, -0.807313859462738, -0.8361420035362244, -0.8640466332435608, -0.8909806609153748, -0.9168980717658997, -0.9417534470558167, -0.9655019640922546, -0.9880995154380798, -1.0095036029815674, -1.0296719074249268, -1.0485637187957764, -1.0661394596099854, -1.0823605060577393, -1.0971903800964355, -1.110593557357788, -1.1225366592407227, -1.1329874992370605, -1.1419157981872559, -1.1492931842803955, -1.1550936698913574, -1.1592931747436523, -1.161869764328003, -1.1628031730651855, -1.1620771884918213, -1.1596765518188477, -1.1555888652801514, -1.1498050689697266, -1.142317771911621, -1.1331236362457275, -1.1222209930419922, -1.1096115112304688, -1.0953001976013184, -1.0792949199676514, -1.0616061687469482, -1.0422489643096924, -1.0212397575378418, -0.9985994696617126, -0.9743520617485046, -0.9485242962837219, -0.9211466908454895, -0.8922531008720398, -0.8618804812431335, -0.8300696015357971, -0.796863853931427, -0.7623102068901062, -0.7264594435691833, -0.6893647313117981, -0.6510828137397766, -0.6116737723350525, -0.5712003707885742, -0.5297288298606873, -0.4873279929161072, -0.4440695643424988, -0.40002816915512085, -0.35155391693115234, -0.2995750308036804, -0.24697327613830566, -0.2048126459121704, -0.1628747284412384, -0.1206820011138916, -0.07279494404792786, -0.023996561765670776, 0.012291938066482544, 0.08425337076187134, 0.1499699205160141, 0.20292335748672485, 0.25544804334640503, 0.3074324131011963, 0.3587648272514343, 0.40933337807655334, 0.4590262174606323, 0.5077319145202637, 0.555340051651001, 0.6017407178878784, 0.6468254327774048, 0.6904872059822083, 0.7326209545135498, 0.773123562335968, 0.8118941783905029, 0.8488349914550781, 0.883850634098053, 0.9168493151664734, 0.9477428793907166, 0.9686260223388672, 0.9860219359397888, 1.0018739700317383, 1.0161347389221191, 1.0259699821472168, 1.0333722829818726, 1.0396175384521484, 1.0446829795837402, 1.0485491752624512, 1.0511990785598755, 1.0526182651519775, 1.0527955293655396, 1.0517226457595825, 1.0493942499160767, 1.0458078384399414, 1.0409648418426514, 1.0348691940307617, 1.0275284051895142, 1.0183804035186768, 1.0038893222808838, 0.9876189231872559, 0.9696000814437866, 0.947944164276123, 0.915421187877655, 0.8804270625114441, 0.8430386781692505, 0.8033401370048523, 0.7614229917526245, 0.7173855900764465, 0.6713332533836365, 0.6233780384063721, 0.5736386179924011, 0.5222396850585938, 0.46931228041648865, 0.41499269008636475, 0.35942327976226807, 0.3027508854866028, 0.24512727558612823, 0.18670880794525146, 0.1273561716079712, 0.044477641582489014, -0.013951927423477173, -0.06155875325202942, -0.11608812212944031, -0.16341686248779297, -0.21044087409973145, -0.2605155110359192, -0.31925445795059204, -0.37707245349884033, -0.42706894874572754, -0.4754711985588074, -0.5226126909255981, -0.5683454871177673, -0.6125242114067078, -0.6550062894821167, -0.6956542730331421, -0.7343338131904602, -0.7709161639213562, -0.8052777647972107, -0.8373004794120789, -0.8668726086616516, -0.8938897252082825, -0.9182539582252502, -0.939875066280365, -0.958671510219574, -0.9745692610740662, -0.9875033497810364, -0.9974183440208435, -1.004267930984497, -1.0080151557922363, -1.0086333751678467, -1.0061063766479492, -1.0004281997680664, -0.9916033148765564, -0.9796467423439026, -0.9645848870277405, -0.9464542269706726, -0.9253029227256775, -0.9011891484260559, -0.8741827607154846, -0.8443635106086731, -0.8118219971656799, -0.7766594290733337, -0.7389865517616272, -0.6989244818687439, -0.6566038727760315, -0.6121640801429749, -0.5657540559768677, -0.5175303220748901, -0.4676578640937805, -0.4163087010383606, -0.3611552119255066, -0.2995697259902954, -0.23855090141296387, -0.18884733319282532, -0.13867276906967163, -0.08422952890396118, -0.025795847177505493, 0.020527809858322144, 0.10893338918685913, 0.17718590795993805, 0.2391248345375061, 0.30000361800193787, 0.35958707332611084, 0.4176431894302368, 0.473943829536438, 0.5282660722732544, 0.5803929567337036, 0.6301141381263733, 0.6772271394729614, 0.7215383648872375, 0.76286381483078, 0.8010297417640686, 0.8358736038208008, 0.8672452569007874, 0.8950071930885315, 0.9190353751182556, 0.939220130443573, 0.9548187255859375, 0.9628662467002869, 0.968227744102478, 0.9708718657493591, 0.97077876329422, 0.9679394960403442, 0.9623565673828125, 0.9540438652038574, 0.9375486969947815, 0.916756272315979, 0.8919855356216431, 0.8633281588554382, 0.83089280128479, 0.7948052287101746, 0.7552079558372498, 0.7122593522071838, 0.6661336421966553, 0.6170200109481812, 0.565122127532959, 0.5106571912765503, 0.45385515689849854, 0.394957959651947, 0.3342185318470001, 0.27189961075782776, 0.2082728147506714, 0.14361760020256042, 0.058524489402770996, -0.010894358158111572, -0.06336674094200134, -0.12235832214355469, -0.17421019077301025, -0.2254757285118103, -0.28464841842651367, -0.3477165102958679, -0.4055507779121399, -0.45748502016067505, -0.5074883699417114, -0.5553233623504639, -0.6007601618766785, -0.6435796022415161, -0.6835731863975525, -0.7205444574356079, -0.7543103098869324, -0.7847020030021667, -0.8115654587745667, -0.8347627520561218, -0.8541731238365173, -0.8696933388710022, -0.8812382817268372, -0.8887423872947693, -0.8921579718589783, -0.8914589285850525, -0.8866385817527771, -0.8777104020118713, -0.8647084832191467, -0.8476879000663757, -0.8267235159873962, -0.8019106984138489, -0.7733648419380188, -0.7412207722663879, -0.7056323885917664, -0.6667720675468445, -0.6248297095298767, -0.5800121426582336, -0.5325422883033752, -0.48265790939331055, -0.43061065673828125, -0.37605053186416626, -0.3123909831047058, -0.24719887971878052, -0.19460618495941162, -0.14195352792739868, -0.0850381851196289, -0.02392938733100891, 0.02842801809310913, 0.12075021862983704, 0.1882738620042801, 0.25236278772354126, 0.31483206152915955, 0.3753424286842346, 0.4335637390613556, 0.48917636275291443, 0.5418735146522522, 0.5913624167442322, 0.6373668313026428, 0.6796277761459351, 0.7179061770439148, 0.7519832253456116, 0.7816628813743591, 0.8067723512649536, 0.827163577079773, 0.8427141904830933, 0.85332852602005, 0.8589385151863098, 0.8595036864280701, 0.8550122380256653, 0.8454810380935669, 0.830955982208252, 0.8115116953849792, 0.7872515320777893, 0.7583068609237671, 0.7248371243476868, 0.6870286464691162, 0.645093560218811, 0.5992695689201355, 0.5498179793357849, 0.4970225989818573, 0.4411882162094116, 0.3826391100883484, 0.32171687483787537, 0.25877904891967773, 0.19419650733470917, 0.12832553684711456, 0.03543482720851898, -0.021519362926483154, -0.08092525601387024, -0.13838788866996765, -0.19083625078201294, -0.24237769842147827, -0.30607378482818604, -0.3683774471282959, -0.4223112463951111, -0.4722910523414612, -0.5195955634117126, -0.5639292001724243, -0.6050140261650085, -0.6425911784172058, -0.6764222979545593, -0.7062916159629822, -0.7320078015327454, -0.7534042000770569, -0.7703414559364319, -0.7827073931694031, -0.7904190421104431, -0.7934219241142273, -0.7916921973228455, -0.7852358222007751, -0.7740890383720398, -0.758319079875946, -0.7380226254463196, -0.7133262753486633, -0.6843858957290649, -0.6513848900794983, -0.6145352721214294, -0.5740733742713928, -0.5302612781524658, -0.4833837151527405, -0.4337468147277832, -0.38167572021484375, -0.3197433352470398, -0.25570952892303467, -0.2018914520740509, -0.14964455366134644, -0.09423243999481201, -0.0330355167388916, 0.014436483383178711, 0.10554209351539612, 0.1767827421426773, 0.24001500010490417, 0.3012539744377136, 0.3600804805755615, 0.4160906970500946, 0.46889859437942505, 0.5181390047073364, 0.5634704828262329, 0.6045771241188049, 0.6411715745925903, 0.672996997833252, 0.6998291015625, 0.7214775085449219, 0.7377880811691284, 0.7486432790756226, 0.7539641857147217, 0.7537103891372681, 0.747881293296814, 0.7365152835845947, 0.7196910381317139, 0.6975260376930237, 0.6701764464378357, 0.637836217880249, 0.6007357835769653, 0.5591405630111694, 0.5133494138717651, 0.4636920690536499, 0.4105278551578522, 0.35424238443374634, 0.29524528980255127, 0.23396699130535126, 0.17085625231266022, 0.09772798418998718, 0.010625064373016357, -0.03694334626197815, -0.09712868928909302, -0.15100720524787903, -0.20181185007095337, -0.25334709882736206, -0.3146633505821228, -0.37350261211395264, -0.4232533574104309, -0.469150185585022, -0.511784017086029, -0.5508319139480591, -0.585997998714447, -0.6170142889022827, -0.6436444520950317, -0.6656848788261414, -0.6829670071601868, -0.6953580975532532, -0.7027629017829895, -0.7051247358322144, -0.702425479888916, -0.6946863532066345, -0.681968092918396, -0.6643701791763306, -0.6420305371284485, -0.6151243448257446, -0.5838634371757507, -0.5484940409660339, -0.5092954635620117, -0.46657800674438477, -0.4206802248954773, -0.3706691265106201, -0.31208252906799316, -0.2511826157569885, -0.2005922794342041, -0.15043509006500244, -0.0974419116973877, -0.03848552703857422, 0.008118808269500732, 0.09031340479850769, 0.16316992044448853, 0.22352047264575958, 0.2816123962402344, 0.3369732201099396, 0.38915181159973145, 0.43772247433662415, 0.4822883605957031, 0.5224846601486206, 0.557982325553894, 0.58849036693573, 0.6137588024139404, 0.6335808038711548, 0.6477943658828735, 0.6562842130661011, 0.6589825749397278, 0.6558701992034912, 0.6469768285751343, 0.6323804259300232, 0.6122076511383057, 0.5866321921348572, 0.555874228477478, 0.5201976299285889, 0.4799090623855591, 0.43535467982292175, 0.3869176506996155, 0.3350149393081665, 0.2800939083099365, 0.2226284295320511, 0.16311487555503845, 0.09172980487346649, 0.009885206818580627, -0.03485044836997986, -0.09203961491584778, -0.14396557211875916, -0.1920446753501892, -0.23878714442253113, -0.2946932911872864, -0.3494262099266052, -0.39840078353881836, -0.44018417596817017, -0.47840821743011475, -0.5127385258674622, -0.542874813079834, -0.5685536861419678, -0.5895512700080872, -0.6056851148605347, -0.6168163418769836, -0.6228505969047546, -0.623738706111908, -0.6194791793823242, -0.6101154088973999, -0.5957378149032593, -0.5764819979667664, -0.5525280833244324, -0.524098813533783, -0.4914582371711731, -0.45490849018096924, -0.41478854417800903, -0.37009894847869873, -0.31726765632629395, -0.26172029972076416, -0.21274244785308838, -0.1662156581878662, -0.11881572008132935, -0.06432074308395386, -0.01574307680130005, 0.04071144759654999, 0.12234963476657867, 0.18101739883422852, 0.23576895892620087, 0.28780484199523926, 0.3366405963897705, 0.38182175159454346, 0.4229280948638916, 0.45957767963409424, 0.49143046140670776, 0.5181922912597656, 0.5396164655685425, 0.5555076599121094, 0.565723180770874, 0.5701743364334106, 0.5688276290893555, 0.561705470085144, 0.5488854646682739, 0.5305001735687256, 0.5067359805107117, 0.4778311848640442, 0.4440740942955017, 0.4057998061180115, 0.3633878231048584, 0.3172576427459717, 0.2678651511669159, 0.21569815278053284, 0.1612718254327774, 0.09598344564437866, 0.015869617462158203, -0.023869335651397705, -0.07658028602600098, -0.12709087133407593, -0.17171257734298706, -0.21501633524894714, -0.25994569063186646, -0.3102644681930542, -0.3573359251022339, -0.39817875623703003, -0.4324185252189636, -0.46271222829818726, -0.4887639880180359, -0.5103204846382141, -0.5271743535995483, -0.5391653180122375, -0.5461823344230652, -0.5481647849082947, -0.5451033115386963, -0.537039577960968, -0.5240665674209595, -0.506327211856842, -0.4840124845504761, -0.45736080408096313, -0.4266546964645386, -0.39221805334091187, -0.3505597710609436, -0.30384695529937744, -0.25421953201293945, -0.21135252714157104, -0.16916429996490479, -0.12596675753593445, -0.0772959291934967, -0.026612132787704468, 0.010913118720054626, 0.0822441577911377, 0.14754638075828552, 0.19771379232406616, 0.2452368289232254, 0.289622962474823, 0.3304130434989929, 0.3671860992908478, 0.399564266204834, 0.4272162914276123, 0.449861615896225, 0.4672727584838867, 0.4792785048484802, 0.4857652187347412, 0.48667848110198975, 0.48202311992645264, 0.4718639850616455, 0.45632484555244446, 0.43558692932128906, 0.40988752245903015, 0.37951692938804626, 0.3448154926300049, 0.3061702251434326, 0.2640102207660675, 0.21880218386650085, 0.17104552686214447, 0.11846062541007996, 0.04709815979003906, -0.006776928901672363, -0.04598298668861389, -0.09385421872138977, -0.1373230218887329, -0.17702063918113708, -0.21519899368286133, -0.2533913254737854, -0.29670029878616333, -0.3365664482116699, -0.3725593686103821, -0.40131741762161255, -0.4250035881996155, -0.44442516565322876, -0.4593793749809265, -0.46971386671066284, -0.47532814741134644, -0.476174533367157, -0.4722590446472168, -0.4636412262916565, -0.45043325424194336, -0.4327988028526306, -0.4109514355659485, -0.3851515054702759, -0.3520382046699524, -0.3145207166671753, -0.2736583948135376, -0.23306739330291748, -0.1969718039035797, -0.15944349765777588, -0.12091541290283203, -0.07685720920562744, -0.03156620264053345, 0.0024347305297851562, 0.05840142071247101, 0.12312749028205872, 0.16903641819953918, 0.2108812779188156, 0.24967961013317108, 0.2849944531917572, 0.3164301812648773, 0.34363698959350586, 0.3663150668144226, 0.3842180371284485, 0.39715564250946045, 0.40499618649482727, 0.40766775608062744, 0.405159056186676, 0.39751961827278137, 0.38485920429229736, 0.36734604835510254, 0.3452053368091583, 0.3187161087989807, 0.2882080078125, 0.2540574371814728, 0.2166828066110611, 0.17653971910476685, 0.13411545753479004, 0.07481946051120758, 0.013250946998596191, -0.019495755434036255, -0.058092594146728516, -0.10007581114768982, -0.13748985528945923, -0.17187190055847168, -0.20466190576553345, -0.23547324538230896, -0.2693561911582947, -0.3023000955581665, -0.3314487934112549, -0.356467068195343, -0.37707090377807617, -0.39148688316345215, -0.4012141823768616, -0.406637966632843, -0.40771228075027466, -0.40444356203079224, -0.3968920111656189, -0.38516920804977417, -0.3677721619606018, -0.34540069103240967, -0.3189738392829895, -0.28883475065231323, -0.25537145137786865, -0.22451987862586975, -0.19413992762565613, -0.16223692893981934, -0.12921234965324402, -0.09262999892234802, -0.05331626534461975, -0.018613606691360474, 0.011480972170829773, 0.06513786315917969, 0.11958791315555573, 0.15898172557353973, 0.19323675334453583, 0.22442704439163208, 0.25217825174331665, 0.27616065740585327, 0.2960931658744812, 0.31174683570861816, 0.3229474127292633, 0.3295774459838867, 0.33157795667648315, 0.32894837856292725, 0.3217471241950989, 0.31008994579315186, 0.2941490411758423, 0.27414995431900024, 0.25036925077438354, 0.22313028573989868, 0.1927991807460785, 0.159779891371727, 0.12297546863555908, 0.07137706875801086, 0.017694979906082153, -0.012734800577163696, -0.041300415992736816, -0.0772523283958435, -0.11254975199699402, -0.14230486750602722, -0.17056095600128174, -0.19712835550308228, -0.22167396545410156, -0.24389243125915527, -0.26880180835723877, -0.2902275323867798, -0.30777132511138916, -0.32122915983200073, -0.33045095205307007, -0.3353431820869446, -0.33586907386779785, -0.33204931020736694, -0.32396143674850464, -0.31173837184906006, -0.2955673336982727, -0.2756854295730591, -0.25237828493118286, -0.2299729883670807, -0.20716053247451782, -0.18252646923065186, -0.15640830993652344, -0.1291610300540924, -0.09918585419654846, -0.06637424230575562, -0.03355613350868225, -0.009462237358093262, 0.017146065831184387, 0.06342984735965729, 0.10690158605575562, 0.14196491241455078, 0.16837173700332642, 0.19185051321983337, 0.21210797131061554, 0.2288956642150879, 0.24201330542564392, 0.25131160020828247, 0.2566933333873749, 0.258114755153656, 0.2555861473083496, 0.2491709440946579, 0.23898491263389587, 0.22519421577453613, 0.20801284909248352, 0.18769948184490204, 0.16455383598804474, 0.1389121115207672, 0.10436417162418365, 0.06328576803207397, 0.020158886909484863, -0.005827873945236206, -0.026188284158706665, -0.055640995502471924, -0.08469358086585999, -0.11295109987258911, -0.13649863004684448, -0.1586018204689026, -0.1790808141231537, -0.19766724109649658, -0.2141210436820984, -0.22823309898376465, -0.23982831835746765, -0.24997621774673462, -0.2578720450401306, -0.2621690630912781, -0.26283878087997437, -0.2599037289619446, -0.2534363865852356, -0.24374204874038696, -0.23346707224845886, -0.22081869840621948, -0.2059948742389679, -0.1892225742340088, -0.1707543134689331, -0.15086430311203003, -0.12984448671340942, -0.10709920525550842, -0.08126670122146606, -0.05521401762962341, -0.02930992841720581, -0.011719614267349243, 0.008407413959503174, 0.03805124759674072, 0.07119420170783997, 0.10157844424247742, 0.12869316339492798, 0.14571931958198547, 0.1600039154291153, 0.17137184739112854, 0.1796911060810089, 0.18487469851970673, 0.1868811696767807, 0.185714989900589, 0.18142633140087128, 0.17410936951637268, 0.16390123963356018, 0.1509791910648346, 0.13555797934532166, 0.11375384032726288, 0.08640295267105103, 0.05673032999038696, 0.02508510649204254, 0.002825528383255005, -0.015402644872665405, -0.030973702669143677, -0.05343225598335266, -0.07550269365310669, -0.09686970710754395, -0.11676818132400513, -0.13327258825302124, -0.14843493700027466, -0.16205081343650818, -0.17394065856933594, -0.18395215272903442, -0.1919620931148529, -0.1978784203529358, -0.20164057612419128, -0.20322072505950928, -0.2026234269142151, -0.19988515973091125, -0.19507363438606262, -0.18828684091567993, -0.17965030670166016, -0.16931560635566711, -0.15745794773101807, -0.14427271485328674, -0.12997281551361084, -0.114784836769104, -0.0966358482837677, -0.07786169648170471, -0.05890238285064697, -0.04004201292991638, -0.02277553081512451, -0.01156112551689148, 0.0023325681686401367, 0.015287995338439941, 0.037270426750183105, 0.056831374764442444, 0.07376733422279358, 0.08786430954933167, 0.09895449876785278, 0.10691775381565094, 0.11168317496776581, 0.11322927474975586, 0.11158393323421478, 0.10682301223278046, 0.09906893968582153, 0.08848752081394196, 0.07528567314147949, 0.05970683693885803, 0.0420270711183548, 0.022386223077774048, 0.007872015237808228, -0.004043161869049072, -0.016043096780776978, -0.024884849786758423, -0.040209949016571045, -0.05533057451248169, -0.0700191855430603, -0.08405867218971252, -0.09724587202072144, -0.10939422249794006, -0.11945536732673645, -0.12775522470474243, -0.1347808837890625, -0.14044880867004395, -0.1446983516216278, -0.14749246835708618, -0.1488173007965088, -0.14868253469467163, -0.14712074398994446, -0.14418593049049377, -0.13995328545570374, -0.1345166265964508, -0.12798717617988586, -0.12049102783203125, -0.11191454529762268, -0.10151135921478271, -0.09050562977790833, -0.07908427715301514, -0.06743702292442322, -0.05575317144393921, -0.04421806335449219, -0.0330108106136322, -0.02319243550300598, -0.01753699779510498, -0.010957509279251099, -0.004120677709579468, 0.001867443323135376, 0.0069335997104644775, 0.011021330952644348, 0.0140916109085083, 0.016595974564552307, 0.01847061514854431, 0.01839640736579895, 0.016430944204330444, 0.014046892523765564, 0.011166229844093323, 0.007468312978744507, 0.0030386745929718018, -0.0020271241664886475, -0.007625699043273926, -0.013647615909576416, -0.018514126539230347, -0.022987276315689087, -0.029985815286636353, -0.0379948616027832, -0.04583063721656799, -0.05336791276931763, -0.06049048900604248, -0.06709352135658264, -0.07308447360992432, -0.07838499546051025, -0.0829315185546875, -0.08667623996734619, -0.08958721160888672, -0.09164902567863464, -0.09286180138587952, -0.09324145317077637, -0.09281831979751587, -0.09163671731948853, -0.08975297212600708, -0.08723452687263489, -0.08415824174880981, -0.08060812950134277, -0.07667392492294312, -0.07244893908500671, -0.06802830100059509, -0.06350672245025635, -0.05897679924964905, -0.05452713370323181, -0.05024042725563049, -0.046192467212677, -0.04245030879974365, -0.03907141089439392, -0.03610256314277649, -0.03357943892478943, -0.03152605891227722, -0.02995455265045166, -0.028865456581115723, -0.02824801206588745, -0.028080761432647705, -0.02833232283592224, -0.028962552547454834, -0.029923588037490845, -0.031161516904830933, -0.03261744976043701, -0.03422924876213074, -0.035933226346969604, -0.03766584396362305, -0.03936508297920227, -0.04097193479537964, -0.042432427406311035, -0.04369837045669556, -0.044728755950927734, -0.04549074172973633, -0.04596060514450073, -0.046124041080474854, -0.04597678780555725, -0.04552462697029114, -0.044783174991607666, -0.04377776384353638, -0.04254227876663208, -0.04111936688423157, -0.03955826163291931, -0.037913978099823, -0.03624647855758667, -0.03461846709251404, -0.03309395909309387, -0.03173676133155823, -0.030608922243118286, -0.029768705368041992, -0.029269307851791382, -0.029157161712646484, -0.0294705331325531, -0.030238479375839233, -0.03147956728935242, -0.03320127725601196, -0.035399049520492554, -0.03805646300315857, -0.041144758462905884, -0.04462319612503052, -0.04843941330909729, -0.052530646324157715, -0.05682402849197388, -0.06123855710029602, -0.06568595767021179, -0.07007288932800293, -0.07430264353752136, -0.07827705144882202, -0.0818985104560852, -0.0850723385810852, -0.08770886063575745, -0.08972510695457458, -0.09104761481285095, -0.09161356091499329, -0.09137293696403503, -0.09028998017311096, -0.08834418654441833, -0.08553162217140198, -0.08186551928520203, -0.07737657427787781, -0.07211291790008545, -0.06613984704017639, -0.05953916907310486, -0.05240800976753235, -0.044857561588287354, -0.03701144456863403, -0.029003292322158813, -0.02244669198989868, -0.018002688884735107, -0.012977004051208496, -0.007072001695632935, -0.001639038324356079, 0.003205537796020508, 0.0073524415493011475, 0.010701850056648254, 0.013165608048439026, 0.014668971300125122, 0.015152662992477417, 0.01457446813583374, 0.012910500168800354, 0.010155975818634033, 0.006326168775558472, 0.0014564692974090576, -0.004397571086883545, -0.011160850524902344, -0.01766425371170044, -0.023340970277786255, -0.033359915018081665, -0.04468488693237305, -0.05635300278663635, -0.0681663453578949, -0.07991892099380493, -0.09140017628669739, -0.1023993194103241, -0.11270841956138611, -0.12100434303283691, -0.12821951508522034, -0.13434824347496033, -0.1392548680305481, -0.14282220602035522, -0.1449543833732605, -0.14557892084121704, -0.1446484923362732, -0.14214277267456055, -0.13806882500648499, -0.13246223330497742, -0.1253865361213684, -0.11693310737609863, -0.10619717836380005, -0.0936816930770874, -0.08006748557090759, -0.06557035446166992, -0.050426334142684937, -0.034887999296188354, -0.02145978808403015, -0.011537432670593262, 0.0008580386638641357, 0.012684360146522522, 0.030965834856033325, 0.049563586711883545, 0.06594809889793396, 0.07978790998458862, 0.09078997373580933, 0.09870597720146179, 0.1033376157283783, 0.10454115271568298, 0.10223060846328735, 0.09638082981109619, 0.08702899515628815, 0.07427485287189484, 0.05828046798706055, 0.039268165826797485, 0.017238765954971313, 0.003423035144805908, -0.010708630084991455, -0.022437363862991333, -0.03997981548309326, -0.05942913889884949, -0.0789722204208374, -0.09826761484146118, -0.11654379963874817, -0.13192546367645264, -0.14621984958648682, -0.15915796160697937, -0.17049050331115723, -0.1799927055835724, -0.1874682903289795, -0.1927536129951477, -0.19572147727012634, -0.19628337025642395, -0.19439205527305603, -0.1900429129600525, -0.18327492475509644, -0.1741701066493988, -0.1628534197807312, -0.14949044585227966, -0.1342858374118805, -0.11747965216636658, -0.09709560871124268, -0.07494726777076721, -0.051980942487716675, -0.028588980436325073, -0.012752383947372437, 0.006139427423477173, 0.03217180073261261, 0.06411907076835632, 0.09364831447601318, 0.12020647525787354, 0.1390959918498993, 0.15284675359725952, 0.16349250078201294, 0.1708040088415146, 0.1746079921722412, 0.17479102313518524, 0.17130203545093536, 0.16415446996688843, 0.15342667698860168, 0.13926133513450623, 0.11929234862327576, 0.09093862771987915, 0.05890180170536041, 0.023562178015708923, -0.0005970597267150879, -0.019930988550186157, -0.04347723722457886, -0.07082381844520569, -0.098064124584198, -0.12324497103691101, -0.14538541436195374, -0.16620177030563354, -0.18531066179275513, -0.2023543417453766, -0.21700742840766907, -0.22898298501968384, -0.23803836107254028, -0.24397951364517212, -0.24729114770889282, -0.24645590782165527, -0.24199050664901733, -0.23463580012321472, -0.2240397334098816, -0.21035298705101013, -0.1937830150127411, -0.17459088563919067, -0.15308701992034912, -0.12962639331817627, -0.1031726598739624, -0.0729401707649231, -0.0419141948223114, -0.016631007194519043, 0.008192181587219238, 0.04800274968147278, 0.09169237315654755, 0.13132810592651367, 0.15798264741897583, 0.18150542676448822, 0.2014470398426056, 0.2174174040555954, 0.22909259796142578, 0.23622184991836548, 0.23863252997398376, 0.2362341582775116, 0.22902081906795502, 0.21707217395305634, 0.20055288076400757, 0.1797105371952057, 0.1548720896244049, 0.12566229701042175, 0.08172178268432617, 0.03416694700717926, -0.0017352104187011719, -0.026154249906539917, -0.06123393774032593, -0.09637442231178284, -0.12864133715629578, -0.15754008293151855, -0.18489336967468262, -0.21020102500915527, -0.23299431800842285, -0.2551828622817993, -0.2762899398803711, -0.29274046421051025, -0.3041995167732239, -0.3104180097579956, -0.31123799085617065, -0.306596040725708, -0.2965257167816162, -0.28115737438201904, -0.2607172131538391, -0.23745039105415344, -0.21431735157966614, -0.18816152215003967, -0.15942174196243286, -0.12858659029006958, -0.09344673156738281, -0.05484643578529358, -0.019516319036483765, 0.010457336902618408, 0.06411112844944, 0.1194165050983429, 0.1592196822166443, 0.19334776699543, 0.2237035483121872, 0.24971531331539154, 0.270883709192276, 0.28679192066192627, 0.2971133589744568, 0.301618367433548, 0.3001793622970581, 0.29277360439300537, 0.2794847786426544, 0.2605022192001343, 0.23611842095851898, 0.206724613904953, 0.17280477285385132, 0.13492724299430847, 0.08012841641902924, 0.01890583336353302, -0.016447007656097412, -0.05307075381278992, -0.09603720903396606, -0.1351235806941986, -0.17067605257034302, -0.2044433057308197, -0.2358095645904541, -0.2696794867515564, -0.30145198106765747, -0.3281458020210266, -0.34924638271331787, -0.36433571577072144, -0.3731001019477844, -0.3753359913825989, -0.3709554076194763, -0.35998767614364624, -0.34258008003234863, -0.31899601221084595, -0.2896110415458679, -0.25490736961364746, -0.22174319624900818, -0.1876707375049591, -0.1509971022605896, -0.11213487386703491, -0.06599161028862, -0.02143150568008423, 0.014062672853469849, 0.08252006769180298, 0.14335836470127106, 0.18842077255249023, 0.2298170030117035, 0.2667831778526306, 0.29862910509109497, 0.3247513771057129, 0.3446446657180786, 0.35791146755218506, 0.36427009105682373, 0.3635602593421936, 0.3557469844818115, 0.3409218490123749, 0.31930243968963623, 0.2912291884422302, 0.2571600675582886, 0.21766327321529388, 0.17340776324272156, 0.12387025356292725, 0.05227386951446533, -0.0051295459270477295, -0.04627630114555359, -0.09698763489723206, -0.14263096451759338, -0.18473240733146667, -0.22479546070098877, -0.26699143648147583, -0.31021493673324585, -0.3482348322868347, -0.38033998012542725, -0.40273815393447876, -0.4189378619194031, -0.42868053913116455, -0.4317522644996643, -0.42805689573287964, -0.4176182746887207, -0.4005812406539917, -0.37667423486709595, -0.3430747389793396, -0.30320852994918823, -0.2577483654022217, -0.21548274159431458, -0.17301833629608154, -0.1281995177268982, -0.07683467864990234, -0.023225069046020508, 0.01971954107284546, 0.10098642110824585, 0.16471263766288757, 0.21748767793178558, 0.26608186960220337, 0.3096046447753906, 0.34725069999694824, 0.3783150315284729, 0.4022059440612793, 0.4184562861919403, 0.42673259973526, 0.42684173583984375, 0.4187350571155548, 0.40251022577285767, 0.3784101605415344, 0.3468196988105774, 0.30825918912887573, 0.2633762061595917, 0.21293458342552185, 0.1578015238046646, 0.08736389875411987, 0.007884383201599121, -0.037918269634246826, -0.09627556800842285, -0.14864158630371094, -0.1972646713256836, -0.24363118410110474, -0.2986751198768616, -0.34897828102111816, -0.3918127417564392, -0.42474496364593506, -0.45121216773986816, -0.47070956230163574, -0.4828529953956604, -0.4873875379562378, -0.4841926693916321, -0.4732838273048401, -0.4548148512840271, -0.42907440662384033, -0.39648163318634033, -0.3541877865791321, -0.30314987897872925, -0.24651223421096802, -0.19808343052864075, -0.1473250389099121, -0.09169110655784607, -0.02971288561820984, 0.02015024423599243, 0.11300510168075562, 0.18152965605258942, 0.24220548570156097, 0.29828178882598877, 0.34874051809310913, 0.3926585912704468, 0.42922455072402954, 0.45775362849235535, 0.47770005464553833, 0.4886680245399475, 0.49041903018951416, 0.4828769266605377, 0.4661300480365753, 0.4404304623603821, 0.4061899185180664, 0.3639736771583557, 0.3144909739494324, 0.2585832476615906, 0.1972094625234604, 0.13142997026443481, 0.036481305956840515, -0.02314695715904236, -0.08807840943336487, -0.14816579222679138, -0.2034224271774292, -0.25962990522384644, -0.3229784369468689, -0.3809642791748047, -0.42600393295288086, -0.4646347165107727, -0.49614447355270386, -0.5199440121650696, -0.5355777144432068, -0.5427320003509521, -0.541242241859436, -0.531095564365387, -0.5124316811561584, -0.48554176092147827, -0.4508631229400635, -0.4089723229408264, -0.3576199412345886, -0.2956695556640625, -0.2317732274532318, -0.17564398050308228, -0.11713609099388123, -0.048473745584487915, 0.008784204721450806, 0.10769513249397278, 0.1862487643957138, 0.2554047107696533, 0.31977003812789917, 0.37819188833236694, 0.4296168088912964, 0.4731106758117676, 0.5078747272491455, 0.5332608222961426, 0.5487827658653259, 0.5541263818740845, 0.5491546988487244, 0.5339116454124451, 0.5086216330528259, 0.47368675470352173, 0.429679811000824, 0.37733522057533264, 0.3175366222858429, 0.2513018846511841, 0.17976582050323486, 0.0946430116891861, -0.0008048117160797119, -0.06367456912994385, -0.13364839553833008, -0.19577237963676453, -0.2588328719139099, -0.33121389150619507, -0.39596492052078247, -0.44861888885498047, -0.4945441484451294, -0.5329113602638245, -0.5630194544792175, -0.5843098163604736, -0.5963758230209351, -0.5989702343940735, -0.5920109152793884, -0.575581967830658, -0.5499330163002014, -0.5154757499694824, -0.4727770686149597, -0.4225497841835022, -0.3634212017059326, -0.2916775941848755, -0.22107362747192383, -0.15758979320526123, -0.08868458867073059, -0.01735055446624756, 0.06943053007125854, 0.1678004413843155, 0.24635714292526245, 0.32034504413604736, 0.38846123218536377, 0.4495004415512085, 0.502376139163971, 0.5461400151252747, 0.5799989104270935, 0.6033289432525635, 0.6156866550445557, 0.6168177127838135, 0.6066615581512451, 0.5853534936904907, 0.5532221794128418, 0.5107849836349487, 0.4587398171424866, 0.39795294404029846, 0.3294449746608734, 0.2543734312057495, 0.17401306331157684, 0.07455676794052124, -0.017124980688095093, -0.0918746292591095, -0.16394859552383423, -0.23145973682403564, -0.3105325698852539, -0.38727062940597534, -0.4495270848274231, -0.505150318145752, -0.5531591176986694, -0.5926997661590576, -0.623062789440155, -0.6436940431594849, -0.6542053818702698, -0.6543815732002258, -0.6441848278045654, -0.6237553954124451, -0.5934099555015564, -0.5536364912986755, -0.5050864219665527, -0.4485641121864319, -0.3850128650665283, -0.30597996711730957, -0.22596630454063416, -0.1561400592327118, -0.07974603772163391, -0.005126476287841797, 0.1041678935289383, 0.19979383051395416, 0.284895658493042, 0.36483973264694214, 0.4382430911064148, 0.5038303732872009, 0.5604565143585205, 0.6071261763572693, 0.6430109739303589, 0.6674649715423584, 0.680034875869751, 0.6804689764976501, 0.6687218546867371, 0.6449555158615112, 0.6095368266105652, 0.5630327463150024, 0.5061999559402466, 0.4399726390838623, 0.3654477000236511, 0.28386586904525757, 0.19659097492694855, 0.09593337774276733, -0.012003690004348755, -0.09154212474822998, -0.16965633630752563, -0.24309378862380981, -0.33276861906051636, -0.41287267208099365, -0.480989933013916, -0.5420650839805603, -0.595044732093811, -0.6390092372894287, -0.6731893420219421, -0.6969791054725647, -0.7099464535713196, -0.7118411660194397, -0.7025989890098572, -0.6823436617851257, -0.6513842344284058, -0.6102115511894226, -0.559489369392395, -0.5000438094139099, -0.4328497052192688, -0.3558310270309448, -0.2650381922721863, -0.18578317761421204, -0.10775452852249146, -0.020321309566497803, 0.08250454068183899, 0.19224879145622253, 0.2855665683746338, 0.3738233745098114, 0.4555278718471527, 0.5292949676513672, 0.5938692092895508, 0.6481460928916931, 0.6911908388137817, 0.7222539186477661, 0.7407845258712769, 0.7464396953582764, 0.7390903234481812, 0.7188242673873901, 0.6859443783760071, 0.6409646272659302, 0.5846011638641357, 0.5177613496780396, 0.441528856754303, 0.3571454584598541, 0.2659911513328552, 0.16956140100955963, 0.046302974224090576, -0.0442071259021759, -0.1348220705986023, -0.21499979496002197, -0.3061802387237549, -0.3982636332511902, -0.47536367177963257, -0.5456859469413757, -0.6080512404441833, -0.6614097952842712, -0.7048583030700684, -0.7376553416252136, -0.7592336535453796, -0.7692095637321472, -0.7673901915550232, -0.7537761330604553, -0.72856205701828, -0.6921342611312866, -0.6450637578964233, -0.5880972743034363, -0.5221460461616516, -0.44826990365982056, -0.36573606729507446, -0.267172634601593, -0.1814333200454712, -0.09592241048812866, -0.007509112358093262, 0.12003374099731445, 0.2256602793931961, 0.3249743580818176, 0.41870856285095215, 0.5053207278251648, 0.5833824872970581, 0.6516021490097046, 0.7088459730148315, 0.7541572451591492, 0.7867714166641235, 0.8061292171478271, 0.8118859529495239, 0.8039172291755676, 0.782321035861969, 0.7474168539047241, 0.6997400522232056, 0.640034556388855, 0.5692393779754639, 0.48847538232803345, 0.3990257978439331, 0.30231672525405884, 0.19989363849163055, 0.07965622842311859, -0.02840709686279297, -0.12667256593704224, -0.2125314176082611, -0.31041616201400757, -0.4084640145301819, -0.4920560121536255, -0.5687925815582275, -0.637427031993866, -0.6968407034873962, -0.746061384677887, -0.7842786908149719, -0.810857355594635, -0.8253474831581116, -0.827491819858551, -0.8172311186790466, -0.7947028279304504, -0.760241687297821, -0.7143726944923401, -0.6578041315078735, -0.5914150476455688, -0.5162426829338074, -0.43346548080444336, -0.33907073736190796, -0.23422563076019287, -0.14684811234474182, -0.049068599939346313, 0.053624704480171204, 0.1859888732433319, 0.2940749228000641, 0.39724215865135193, 0.49384891986846924, 0.5823553204536438, 0.6613479256629944, 0.7295613288879395, 0.785898745059967, 0.8294494152069092, 0.8595027923583984, 0.8755601048469543, 0.8773423433303833, 0.8647941946983337, 0.838085949420929, 0.7976104021072388, 0.7439766526222229, 0.6780008673667908, 0.6006935834884644, 0.5132441520690918, 0.41700154542922974, 0.313454270362854, 0.20420601963996887, 0.07625192403793335, -0.036726951599121094, -0.13900303840637207, -0.22982758283615112, -0.3385940194129944, -0.4381263256072998, -0.5265029072761536, -0.6077153086662292, -0.680491030216217, -0.7436863780021667, -0.7963059544563293, -0.8375166058540344, -0.8666607737541199]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ipdb> train_ys\n", - "[1.0, 0.9999999910945311, 0.9999999198522608, 0.9999996790771866, 0.9999991066924582, 0.9999979837910936, 0.9999960318551232, 0.9999929091393012, 0.9999882062104364, 0.9999814406286233, 0.9999720507522349, 0.99995938864448, 0.9999427120556592, 0.9999211754520029, 0.9998938200591698, 0.9998595628861638, 0.9998171846936232, 0.9997653168692014, 0.9997024271721292, 0.9996268043090873, 0.9995365413042816, 0.9994295176281586, 0.9993033800516088, 0.9991555221958434, 0.9989830627524896, 0.9987828223539091, 0.9985512990804113, 0.9982846425989912, 0.9979786269375996, 0.9976286219098381, 0.9972295632174979, 0.9967759212726425, 0.9962616687970814, 0.9956802472752349, 0.9950245323566472, 0.994286798326904, 0.9934586817905299, 0.9925311447367143, 0.9914944371884851, 0.9903380596683096, 0.9890507257480735, 0.9876203249889757, 0.9860338866170509, 0.9842775443227177, 0.9823365026177825, 0.9801950052305569, 0.9778363060688365, 0.9752426433311261, 0.9723952173981886, 0.9692741731891905, 0.9658585877187169, 0.9621264636419244, 0.9580547296241031, 0.9536192484168413, 0.9487948335645304, 0.9435552757006918, 0.9378733794219011, 0.9317210117462336, 0.925069163171124, 0.9178880223403417, 0.9101470653091464, 0.9018151603583608, 0.8928606892496839, 0.8832516857336673, 0.8729559920161116, 0.8619414337558884, 0.8501760140053676, 0.8376281263119683, 0.824266786974378, 0.8100618861889562, 0.7949844575302867, 0.7790069648853952, 0.7621036056049999, 0.744250628249673, 0.7254266628974063, 0.7056130615464159, 0.6847942456990141, 0.6629580577564328, 0.6400961123992553, 0.6162041436838025, 0.5912823431627549, 0.5653356839512562, 0.5383742253214271, 0.5104133921328258, 0.48147422320926164, 0.4515835826679898, 0.42077432821062954, 0.3890854305094812, 0.35656203808065917, 0.32325548243632124, 0.28922321885981783, 0.2545286988535653, 0.2192411711698261, 0.18343540934504937, 0.14719136480963987, 0.11059374592245369, 0.07373152466343098, 0.03669737418363381, -0.00041295807017589786, -0.037501335403378626, -0.0744679673249738, -0.11121218617802132, -0.14763325437115177, -0.18363119042396353, -0.21910760101532972, -0.25396650542254123, -0.28811513819510126, -0.32146471564699186, -0.35393115179635093, -0.3854357097437049, -0.4159055751627377, -0.44527433957463, -0.4734823823726119, -0.5004771421328761, -0.5262132695579935, -0.5506526564099944, -0.5737643369561705, -0.595524260723435, -0.6159149376859064, -0.6349249593466324, -0.6525484014717374, -0.6687841164531488, -0.6836349253803936, -0.6971067218673693, -0.7092075014898059, -0.7199463323362644, -0.729332283661256, -0.7373733309626591, -0.7440752570013993, -0.7494405693569872, -0.7534674560850376, -0.7561488019255895, -0.7574712883086907, -0.7574146011093805, -0.7559507706940899, -0.7530436692313542, -0.7486486904453411, -0.7427126368804504, -0.7351738392038212, -0.7259625309616335, -0.7150015003673365, -0.7022070379653861, -0.6874901952098658, -0.6707583639596291, -0.6519171804808083, -0.6308727496660278, -0.6075341757907845, -0.5818163752757692, -0.5536431347543069, -0.5229503645189311, -0.4896894835321019, -0.4538308581604776, -0.4153672032883422, -0.374316842259938, -0.33072671205774057, -0.28467499315924344, -0.23627324053889967, -0.18566789413561363, -0.13304105448858364, -0.07861042263614869, -0.02262832296265693, 0.03462024669768518, 0.09282056229772219, 0.15163210717465353, 0.21069344235514711, 0.2696279239039355, 0.3280501383319103, 0.38557289064752537, 0.4418145483056956, 0.49640652015508874, 0.5490006342782053, 0.5992761736707294, 0.6469463347462272, 0.6917638907377248, 0.7335258695516799, 0.7720770921834346, 0.8073124614920122, 0.8391779395538649, 0.8676702022693104, 0.8928350095859888, 0.9147643759465568, 0.9335926659860233, 0.9494917731958721, 0.9626655629323815, 0.973343775136797, 0.9817755864937774, 0.9882230271528751, 0.9929544347853346, 0.9962381102625714, 0.9983363164933309, 0.999499736903073, 0.9999624845720818, 0.9999377288491531, 0.9996139846831834, 0.9991520919190354, 0.9986828978907165, 0.9983056468593409, 0.9980870737964366, 0.9980611969363409, 0.9982298023477425, 0.9985636132407466, 0.9990041354909477, 0.9994661676347849, 0.9998409572610492, 0.9999999754894677, 0.99979926670566, 0.9990843120349359, 0.9976953228635163, 0.995472856291271, 0.9922636194672504, 0.9879263064539591, 0.9823372919483264, 0.9753959932228395, 0.9670297071636768, 0.9571977349023117, 0.9458946231648148, 0.9331523790985957, 0.9190415529839779, 0.9036711289177931, 0.8871872144264215, 0.8697705725533166, 0.8516330904824311, 0.8330133234693136, 0.8141712884534322, 0.795382705692625, 0.7769328976084606, 0.7591105514724575, 0.7422015375346774, 0.7264829487576538, 0.7122174954353333, 0.6996483512156466, 0.6889945102198332, 0.6804466817534187, 0.6741637227555183, 0.6702695910945916, 0.6688507965590815, 0.6699543312466303, 0.6735860761687079, 0.6797097042354382, 0.6882461282903349, 0.699073572589243, 0.7120283725450245, 0.7269066259545918, 0.7434668247717592, 0.761433585983945, 0.7805025707157159, 0.8003466314538108, 0.820623159505612, 0.8409825220260545, 0.8610773860281274, 0.8805726335455245, 0.8991554866767885, 0.9165453931302362, 0.932503180890307, 0.9468389815999014, 0.9594184500807207, 0.9701668722434438, 0.9790708515986974, 0.9861773880413249, 0.9915903009916562, 0.9954640901580224, 0.9979954589099684, 0.9994128368820057, 0.9999643223254764, 0.9999045172295538, 0.999480750031436, 0.9989191765846399, 0.99841122786265, 0.9981008423073924, 0.998072891507764, 0.9983431880154605, 0.9988504582422126, 0.9994506716176381, 0.9999141343155473, 0.9999257713811709, 0.9990890200268584, 0.9969337214107924, 0.9929283102878917, 0.986496446398301, 0.9770379998341144, 0.9639539966232668, 0.9466747652206995, 0.9246901288211219, 0.8975801053595118, 0.8650442597177184, 0.8269276575384448, 0.7832413484831371, 0.734175495016238, 0.6801036729041954, 0.6215774830499048, 0.5593113801896004, 0.49415846323669693, 0.4270787871014152, 0.3591024448976264, 0.2912901428196509, 0.22469418478875508, 0.1603226748441182, 0.09910934820760223, 0.04189081098359598, -0.010607814389631301, -0.0577786796016218, -0.099129078658902, -0.13427271722229267, -0.1629162132313451, -0.18484296141045642, -0.19989658814147132, -0.20796612347113003, -0.20897475025321136, -0.2028735874587927, -0.18964145556973225, -0.16929098410234827, -0.14188078101470408, -0.10753272042855168, -0.06645275633984066, -0.018953085593866464, 0.03452697391114146, 0.0934042826103129, 0.15694223895081458, 0.2242507482855584, 0.2942976700075959, 0.36593261072335653, 0.4379226892408981, 0.5089985506452639, 0.5779076252709505, 0.6434706005054386, 0.7046364652069674, 0.7605314103069679, 0.81049735773115, 0.8541168860893561, 0.891222686732936, 0.9218912221544437, 0.9464217547967742, 0.9653031724307337, 0.9791719139349342, 0.988764727684821, 0.9948699821488037, 0.9982808683680645, 0.9997532029233138, 0.9999697889632412, 0.9995125424296244, 0.9988429315691196, 0.9982907612706834, 0.9980509704302531, 0.9981878777808135, 0.9986461655290509, 0.9992677797875752, 0.9998138079446379, 0.9999902390979706, 0.9994763217765125, 0.9979540255007083, 0.9951369314216748, 0.9907967747308957, 0.9847858875475304, 0.9770539794977796, 0.9676580516722423, 0.9567647440099915, 0.9446450128639371, 0.9316616506902913, 0.9182507136122489, 0.904898345225718, 0.8921147305613297, 0.8804069689570666, 0.8702525382478942, 0.8620747813908153, 0.8562215415238096, 0.8529477641906912, 0.8524026249301471, 0.8546215530066108, 0.8595234073932372, 0.8669129938768091, 0.8764890493087031, 0.8878577111793226, 0.9005512954551571, 0.9140519004823906, 0.9278189467678621, 0.9413192920553006, 0.9540580984743647, 0.9656082617996179, 0.97563603008616, 0.9839205073761849, 0.990365085854054, 0.9949994550555766, 0.9979716289243032, 0.9995303043743146, 0.9999986992623411, 0.9997417073040651, 0.9991286826526268, 0.9984944068958582, 0.9981008241465712, 0.9981020188074862, 0.9985147306236387, 0.9991965136474023, 0.9998334737305216, 0.9999393375786034, 0.9988673416629857, 0.9958359770119678, 0.9899688824015034, 0.9803480811229738, 0.9660783242238606, 0.9463586648843922, 0.9205557876676438, 0.8882723807633464, 0.8494033171426026, 0.8041728803920215, 0.7531478496217372, 0.6972238339210778, 0.6375854682301929, 0.5756444106049121, 0.5129619046615008, 0.45116445169316277, 0.3918615408679204, 0.336573365161501, 0.28667424788029416, 0.24335458343893634, 0.20760102293898106, 0.1801919507885942, 0.16170341551396392, 0.1525198252089829, 0.15284393669918073, 0.16270184104868896, 0.18194054803289567, 0.21021809918679893, 0.2469885510466372, 0.29148630209547605, 0.3427157228400502, 0.3994525604690838, 0.46026289814773663, 0.523543496829613, 0.5875843132135429, 0.6506503085210402, 0.7110759899377804, 0.7673632036890867, 0.8182711886239281, 0.8628882042028494, 0.9006761836023052, 0.9314834392055077, 0.955524756966621, 0.973332419544338, 0.985685040221762, 0.9935230747463438, 0.9978603583577361, 0.9997001727989734, 0.9999625930167806, 0.9994276891867356, 0.9986970077266731, 0.9981739219589043, 0.9980620504183955, 0.9983799585821975, 0.9989896677712058, 0.9996359557946317, 0.9999929559274366, 0.9997141340900682, 0.9984814219279439, 0.9960492315101929, 0.9922794014313572, 0.9871638944443706, 0.980833257815985, 0.9735503381915039, 0.9656903013030125, 0.9577094039576963, 0.9501059964387015, 0.9433777780069126, 0.9379793748777655, 0.9342839439349561, 0.9325518694629246, 0.9329088636832522, 0.9353350148614428, 0.939665594447795, 0.9456037195305942, 0.9527442153996258, 0.9606071880059655, 0.9686788984768331, 0.9764566069855408, 0.9834932699730993, 0.9894375232170568, 0.9940644396824126, 0.997293215539659, 0.9991891881581291, 0.9999492712096235, 0.9998717480781595, 0.999313104718616, 0.998635959824329, 0.9981530223816502, 0.9980723620244648, 0.998449208459339, 0.9991491383893569, 0.9998269661585876, 0.9999249419497108, 0.9986928854401915, 0.9952314792651161, 0.988557966920199, 0.9776909230773987, 0.9617477961685938, 0.9400460340259764, 0.9121964707268037, 0.8781769969892849, 0.838375885385862, 0.7935975991825955, 0.7450290275797262, 0.6941698939828211, 0.642736326386985, 0.5925500772437668, 0.5454268743605373, 0.5030757625013157, 0.46701760957680427, 0.43852622926402074, 0.41859100434142166, 0.40789651521793124, 0.40681313036479905, 0.41539295755536293, 0.43336768459580005, 0.46014799981515064, 0.4948276114131757, 0.536197466230905, 0.5827768063343528, 0.6328666929339956, 0.6846285204759043, 0.7361853326363962, 0.785738439407145, 0.8316872328456785, 0.8727374873253249, 0.9079836636686284, 0.9369539508813608, 0.9596123128749424, 0.9763183909145716, 0.9877522589047232, 0.9948154796339589, 0.998521969132484, 0.9998918215389323, 0.9998590138358339, 0.999200623106254, 0.9984916653266229, 0.9980864947972417, 0.9981251672865937, 0.9985612816667849, 0.9992064456715808, 0.9997855289161653, 0.9999962306928382, 0.9995662778171935, 0.9983019226175391, 0.9961224504319272, 0.9930771278044491, 0.9893432564110298, 0.9852064226870744, 0.9810262581078435, 0.9771926981585982, 0.9740786300894725, 0.9719949062523241, 0.9711530805525326, 0.9716400956460236, 0.973407709349509, 0.9762778514933382, 0.9799634366951373, 0.9841024842022651, 0.9883017967186208, 0.992185075772096, 0.995439420561066, 0.9978539110207447, 0.9993445924994749, 0.9999616887253585, 0.9998771054347196, 0.9993529067805987, 0.9986940187613396, 0.9981905388175434, 0.9980564465399523, 0.99837213764796, 0.9990381114846173, 0.9997464571027956, 0.9999755834710886, 0.9990118986916514, 0.9959997541424094, 0.9900178559540849, 0.9801766210835486, 0.9657270501129552, 0.9461683721548766, 0.9213399456240257, 0.8914835151451255, 0.8572652981801886, 0.8197531341919881, 0.7803509402698986, 0.7406993598603517, 0.7025561601641277, 0.6676715725903999, 0.6376722207227156, 0.6139633034814703, 0.5976536818007582, 0.5895039780203847, 0.5898949213933513, 0.5988124867017339, 0.6158476572920468, 0.6402110603261185, 0.6707650856453944, 0.706077227208559, 0.7444974501092101, 0.7842592005335478, 0.8235988295626147, 0.8608829653362007, 0.8947293530850523, 0.9241053254097286, 0.9483901116723791, 0.9673923939254396, 0.981321667107315, 0.9907193139041656, 0.9963611488877329, 0.9991463807069597, 0.9999881822333644, 0.9997188206453483, 0.9990185220112429, 0.9983729419685705, 0.9980600700512247, 0.9981640397055123, 0.9986107727259698, 0.9992186217054334, 0.9997561459281887, 0.9999988950179604, 0.9997776631790846, 0.9990121606716248, 0.9977263362426273, 0.996044394561305, 0.994169451125968, 0.9923492689214445, 0.9908352230991384, 0.9898413194074754, 0.9895097359569219, 0.9898881215903718, 0.9909220128323899, 0.9924634885012603, 0.9942948151387484, 0.9961635889731282, 0.9978240093255248, 0.9990777027135738, 0.9998072154256351, 0.999996065877445, 0.999731076015104, 0.9991853404317714, 0.9985832117010837, 0.9981515680212719, 0.998063926907052, 0.9983853799139397, 0.9990267424419871, 0.9997157712015536, 0.9999918732765694, 0.9992284572843783, 0.9966839768299667, 0.9915788813075065, 0.9831914306328497, 0.970961281093139, 0.9545868236789244, 0.9341014255705261, 0.9099156551739199, 0.8828172632981417, 0.8539273208649094, 0.8246179748223467, 0.7964030598112155, 0.7708159484850055, 0.7492890351158639, 0.7330466041196406, 0.7230187577022831, 0.7197800252572031, 0.723513408656955, 0.7339994098980647, 0.7506297441771224, 0.7724460797141601, 0.7982041815930419, 0.8264624360590674, 0.8556906809508245, 0.8843911380346914, 0.9112192603175697, 0.9350899458006395, 0.9552549917762911, 0.971341234327946, 0.9833448994630912, 0.99158483940094, 0.9966237917464162, 0.9991711276839106, 0.9999820219252289, 0.9997666918399699, 0.9991200577742574, 0.9984778741747555, 0.998100986602845, 0.9980855120805558, 0.9983937453620738, 0.9988985856925672, 0.9994333010413233, 0.999838526529405, 0.9999995226944058, 0.9998687859585844, 0.9994718356031398, 0.9988969686373934, 0.9982724670616919, 0.9977366956815031, 0.9974074342685731, 0.9973565522867398, 0.9975948701986531, 0.998070020204032, 0.9986776647432588, 0.9992839289589609, 0.9997547321914562, 0.9999862188708591, 0.9999299792086407, 0.9996073715195437, 0.9991089720958786, 0.9985777252983031, 0.9981773040304538, 0.9980499968990628, 0.9982706369019093, 0.9988043443201083, 0.9994760139753089, 0.9999585130111487, 0.9997845282641892, 0.9983840229058667, 0.995145531671889, 0.9894954208944129, 0.9809853863933713, 0.9693756898780418, 0.9547007930880594, 0.9373057013337394, 0.9178454490468096, 0.8972460039579773, 0.8766311163390438, 0.8572248159585859, 0.8402422304562356, 0.8267817639075565, 0.8177298448960955, 0.8136864058177029, 0.8149160817254115, 0.8213275841373967, 0.832482003769292, 0.8476295695848017, 0.8657730067731257, 0.885753570769741, 0.9063530137291385, 0.9264016766965254, 0.9448805608170361, 0.9610046609924694, 0.9742767121985635, 0.984504745653623, 0.9917826414433264, 0.9964388425237535, 0.9989631628999115, 0.9999241961122658, 0.999889898719258, 0.9993618303378606, 0.9987300362516495, 0.9982515278988074, 0.9980514866284537, 0.9981431882266908, 0.998460501699897, 0.9988957837163744, 0.9993360931617911, 0.9996918103224448, 0.9999137574751099, 0.9999974378395446, 0.9999755877515973, 0.99990240015874, 0.9998341373485915, 0.9998111887757486, 0.9998459357500541, 0.999919241158432, 0.9999863133242695, 0.9999905001123586, 0.9998816690739192, 0.9996345933763138, 0.9992624568587237, 0.9988213162302092, 0.9984030145764486, 0.9981163327126324, 0.9980586605797962, 0.9982826962427918, 0.9987642227397848, 0.999377591981763, 0.9998850316473642, 0.9999442953161253, 0.9991366287074579, 0.9970137850085965, 0.9931593065414697, 0.987256084672253, 0.9791500122184298, 0.9688990031430519, 0.9567981499635699, 0.9433752206272201, 0.9293554235787305, 0.9155993546353014, 0.9030221664438917, 0.8925044450342933, 0.8848057537152731, 0.8804905917330575, 0.8798742541851423, 0.8829934547591527, 0.8896040373782107, 0.899205770639665, 0.9110919533633846, 0.9244191963817444, 0.9382903251952056, 0.9518412293274997, 0.964321270328663, 0.9751571564584115, 0.9839923045810983, 0.990697436503427, 0.9953527801388083, 0.9982067431476781, 0.9996193065863532, 0.9999999975939916, 0.9997499906984584, 0.9992159687621853, 0.9986604491148371, 0.9982500269024412, 0.9980599965877196, 0.9980915064621304, 0.9982960254300091, 0.9986015449588417, 0.9989355515982369, 0.9992412052213443, 0.9994850454282344, 0.9996565430939521, 0.9997615218710394, 0.9998125695181433, 0.9998198534878695, 0.9997852365536394, 0.9997014135430942, 0.9995562461650394, 0.9993409141819103, 0.9990592809905383, 0.9987352736198772, 0.9984152571166979, 0.9981633323466662, 0.9980490265754137, 0.998128666257585, 0.9984234437915497, 0.9988984520125073, 0.9994474836201719, 0.9998880256135498, 0.9999696102182183, 0.999396643995329, 0.997864294740222, 0.9951033714901907, 0.9909278859953761, 0.9852776549518707, 0.9782483045970508, 0.9701025336687364, 0.9612592847154969, 0.9522610278987332, 0.94372292455172, 0.9362704697841882, 0.9304738056527669, 0.9267870949643785, 0.9255003312915423, 0.9267091097464091, 0.9303055913316595, 0.9359914520556791, 0.943311181259277, 0.9517017926168587, 0.9605529963552661, 0.969270419891836, 0.9773338937037607, 0.9843434206091258, 0.9900472891218615, 0.994349633912517, 0.9972980552416763, 0.9990549988316008, 0.999858834536014, 0.9999815575364127, 0.9996896954983713, 0.9992135663227946, 0.9987279156432111, 0.9983446538514664, 0.9981163417922221, 0.9980475587763583, 0.9981105016592461, 0.9982611440351399, 0.9984529362739691, 0.9986461497742258, 0.9988122907789989, 0.998934237845507, 0.9990036379036459, 0.9990174653823571, 0.9989754681146917, 0.998879582019196, 0.998735486533733, 0.998555543624927, 0.9983616633612932, 0.9981863601633442, 0.9980704969277542, 0.998056927520742, 0.9981802927508483, 0.9984543676643325, 0.9988593332755121, 0.999331912903331, 0.9997613049025126, 0.9999931978239429, 0.9998429280592537, 0.9991172084655203, 0.9976420952908364, 0.9952933123619807, 0.9920240661969902, 0.9878853415699531, 0.9830344861627388, 0.9777295840510393, 0.9723093761040787, 0.9671608614693514, 0.962678733850871, 0.959222097095127, 0.957074282048128, 0.9564110688307119, 0.9572813769080519, 0.9596027643967874, 0.9631721283633878, 0.9676900455626927, 0.9727954459946305, 0.9781059757848488, 0.9832586818561915, 0.9879456958582709, 0.9919404612410675, 0.9951116302223001, 0.9974237852891817, 0.998926225435571, 0.9997327944614572, 0.9999968003192135, 0.9998853305829871, 0.9995567491651453, 0.999144059793212, 0.9987454278868497, 0.9984217632706629, 0.9982001325263768, 0.9980810564637814, 0.9980475185938984, 0.9980737299316733, 0.9981322485414315, 0.9981987716378415, 0.9982546213275755, 0.9982874737534047, 0.9982911343083469, 0.9982651144886128, 0.9982144726836545, 0.998149956253503, 0.9980880695000273, 0.9980504275107436, 0.9980617326912017, 0.9981459561059798, 0.9983207727263439, 0.998590878331838, 0.9989413587428999, 0.9993326389814143, 0.9996985925414659, 0.9999490806853912, 0.9999775358989249, 0.9996732977509557, 0.998937414777687, 0.99769974376674, 0.9959346101219739, 0.9936721969849271, 0.9910032752382353, 0.9880758248325167, 0.985083369578449, 0.9822462120068514, 0.9797879491011067, 0.9779104514952305, 0.9767707647898234, 0.9764631165326308, 0.977008457992865, 0.9783528758293861, 0.9803749493808817, 0.9829008870088949, 0.9857252225533574, 0.9886341394572409, 0.9914282232468674, 0.9939416682845091, 0.9960556469039102, 0.997704567844386, 0.9988751180474862, 0.9995990799845084, 0.9999417491771709, 0.9999882128235303, 0.9998297517001079, 0.9995522471222891, 0.9992278354965071, 0.9989103113063271, 0.9986340877781861, 0.9984160014680045, 0.9982589590012648, 0.9981563805000616, 0.9980965536577066, 0.9980662987463123, 0.9980536675441514, 0.9980496752390964, 0.9980492366361522, 0.998051526066726, 0.9980599218473961, 0.9980815781499653, 0.9981265509853287, 0.9982063475523018, 0.9983318053631115, 0.9985103437242626, 0.9987428363063715, 0.9990205743034962, 0.9993229574231383, 0.9996166023106344, 0.9998564546942912, 0.9999892264250098, 0.9999590845631777, 0.9997150648842099, 0.9992192580008472, 0.9984545187542916, 0.9974303575284683, 0.9961858273605453, 0.9947886144039016, 0.9933301105298724, 0.9919168938545502, 0.9906596451045822, 0.9896609722205634, 0.9890038215328921, 0.9887420872518262, 0.9888947082320135, 0.9894440215798376, 0.9903385156596971, 0.9914994924171237, 0.9928306096032093, 0.9942289089696467, 0.9955957989366634, 0.9968465638675528, 0.9979172901276491, 0.9987685678423527, 0.9993858579829592, 0.9997769113414817, 0.9999670061029188, 0.9999929803015589, 0.9998970587334773, 0.9997213325987708, 0.9995034943579565, 0.9992741242794089, 0.9990555321256211, 0.9988619268417471, 0.9987005469991584, 0.9985733397655885, 0.9984788109270254, 0.9984137546288137, 0.9983746765807978, 0.9983588203401678, 0.9983647752178347, 0.9983926816138413, 0.9984440621887941, 0.9985213096056977, 0.998626869310187, 0.9987621799746639, 0.9989264770066087, 0.999115618038434, 0.9993211375938125, 0.9995297616556388, 0.999723594540825, 0.9998811212973389, 0.9999790517408641, 0.9999948832096086, 0.9999099048394522, 0.9997122388692428, 0.9993994448165853, 0.9989802219893382, 0.9984748415582027, 0.9979141105617441, 0.9973368896481017, 0.9967864157598112, 0.9963058786565233, 0.995933829758652, 0.9957000395722688, 0.9956223593321707, 0.9957049947382257, 0.9959383910660184, 0.996300695420734, 0.9967605422070878, 0.9972807367195096, 0.9978223140326485, 0.9983484373815354, 0.9988276683048426, 0.9992362727786763, 0.999559396504509, 0.9997911174224682, 0.9999335353478379, 0.999995165561385, 0.9999889540146922, 0.9999302267830049, 0.9998348355904076, 0.9997176811387898, 0.99959170527108, 0.9994673585754947, 0.9993524840873768, 0.9992525164090573, 0.9991708791121773, 0.9991094674976961, 0.9990691220269861, 0.9990500230368953, 0.999051964046986, 0.9990744855346567, 0.999116872108869, 0.9991780336423902, 0.9992563056929954, 0.9993492165805956, 0.9994532769412586, 0.9995638506601919, 0.9996751616300649, 0.9997804771562327, 0.999872485868064, 0.999943857626437, 0.9999879392652539, 0.9999995088433903, 0.9999754887424068, 0.9999155099079045, 0.9998222290712326, 0.99970132799333, 0.9995611652440365, 0.9994121003500738, 0.9992655590465586, 0.9991329483491689, 0.9990245541825584, 0.9989485581566242, 0.9989102932091373, 0.9989118233303699, 0.9989518865250199, 0.9990261903555107, 0.999128003886888, 0.9992489554349431, 0.9993799266802491, 0.9995119319795619, 0.999636885655523, 0.9997481858309566, 0.9998410756625106, 0.9999127759038331, 0.9999624115359905, 0.9999907761352553, 0.9999999889521111, 0.9999931014489265, 0.9999737038923652, 0.9999455710692713, 0.9999123721563842, 0.9998774558501154, 0.999843710050478, 0.9998134868809351, 0.9997885790002713, 0.9997702317568582, 0.999759177047171, 0.9997556778543344, 0.999759576417396, 0.9997703429771932, 0.9997871253914525, 0.999808802145085, 0.9998340421502022, 0.99986137419814, 0.9998892671677566, 0.9999162194797682, 0.9999408533403679, 0.9999620066494395, 0.9999788136593251, 0.9999907650372801, 0.9999977391607598, 0.9999999992164146, 0.9999981546280124, 0.9999930898928218, 0.9999858682976662, 0.9999776214495154, 0.9999694374756634, 0.9999622607838076, 0.9999568144220536, 0.9999535526786947, 0.9999526472098046, 0.9999540054157398, 0.9999573157345882, 0.9999621115683673, 0.9999678440554419, 0.9999739539214195, 0.999979933992569, 0.9999853762598895, 0.9999900001601674, 0.9999936615170154, 0.9999963439702587, 0.9999981364646708, 0.9999992013716485, 0.9999997381192927, 0.999999946942885, 0.9999999967192557, 0.9999999999919014, 0.99999999736624, 0.9999999525355343, 0.9999997583100512, 0.9999992531467713, 0.9999982467831489, 0.9999965526523982, 0.9999940238301828, 0.9999905884234341, 0.9999862797091513, 0.999981256148729, 0.9999758068230493, 0.99997033898244, 0.9999653463040508, 0.9999613589708372, 0.9999588795441368, 0.9999583113704977, 0.9999598884405846, 0.9999636167168061, 0.9999692366027515, 0.9999762142983329, 0.9999837664102746, 0.9999909178005737, 0.9999965879232147, 0.9999996966094434, 0.9999992771703861, 0.999994583361101, 0.999985177448774, 0.9999709892329366, 0.9999523399052732, 0.9999299293785564, 0.9999047903170547, 0.9998782157853512, 0.9998516696352759, 0.9998266892240805, 0.9998047888991016, 0.9997873702964273, 0.9997756424914672, 0.9997705520981596, 0.9997727211906992, 0.9997823899267403, 0.9997993612853981, 0.9998229474513305, 0.999851920865485, 0.9998844773371935, 0.9999182231159371, 0.9999502014634252, 0.9999769759049739, 0.9999947858353099, 0.9999997846087431, 0.9999883602876275, 0.9999575253053616, 0.9999053448908798, 0.9998313577112283, 0.9997369291305092, 0.9996254713534518, 0.9995024686508847, 0.9993752616744219, 0.9992525723314635, 0.9991437871119818, 0.999058057045235, 0.999003309787662, 0.9989852963059455, 0.9990068047494247, 0.9990671633589663, 0.9991621221811428, 0.9992841535986806, 0.99942315168194, 0.9995674501416731, 0.9997050289937737, 0.9998247502773786, 0.9999174591978461, 0.9999768099651193, 0.9999997212242314, 0.9999864257478239, 0.9999401417530104, 0.9998664473492042, 0.9997724759542054, 0.9996660638448184, 0.9995549710787806, 0.9994462681667236, 0.9993459406068766, 0.9992587204106548, 0.9991881158307143, 0.9991365829770665, 0.9991057680619079, 0.9990967460303486, 0.9991101879795419, 0.9991464034099844, 0.9992052222286426, 0.9992857051036792, 0.9993856996872782, 0.9995012944107982, 0.9996262590707575, 0.9997515971185458, 0.9998653598959527, 0.9999528773277124, 0.9999975326257086, 0.9999821443224919, 0.999890919010354, 0.9997118139998693, 0.999439022078835, 0.9990751889013689, 0.9986329266973288, 0.9981352191472928, 0.9976144310548815, 0.9971098339280736, 0.9966638063044284, 0.9963171216539387, 0.9961039458754718, 0.9960472835137792, 0.9961556043706393, 0.996421240703893, 0.996820886941763, 0.997318200896311, 0.9978681576643711, 0.9984225109620027, 0.9989355305861302, 0.9993691478038605, 0.9996967616341301, 0.9999052138965733, 0.9999947765296363, 0.9999773411175468, 0.9998732874615278, 0.9997076812256471, 0.999506484443507, 0.9992933641775434, 0.9990874898352684, 0.9989024720561789, 0.998746371860359, 0.9986225424852988, 0.99853098113876, 0.9984698622536814, 0.9984369757458315, 0.998430870607071, 0.9984515750410017, 0.9985008111248019, 0.998581645180688, 0.9986975325914079, 0.9988507547763188, 0.999040329955147, 0.9992596151070158, 0.9994939860269177, 0.9997191418493186, 0.999900669439886, 0.9999954614092262, 0.999955369766682, 0.9997330955618475, 0.999289813672962, 0.9986035096123915, 0.9976765908514331, 0.9965411577794049, 0.9952604711410141, 0.9939256561359193, 0.9926474741820188, 0.9915439274618073, 0.9907253449811206, 0.9902792344903838, 0.9902574188530452, 0.9906677351018058, 0.9914718830007517, 0.9925899835082563, 0.9939112337498881, 0.9953089498384378, 0.9966574942669889, 0.9978482627149488, 0.9988021350208949, 0.9994765355515824, 0.9998663384609259, 0.999999047763162, 0.9999257123409201, 0.9997096818403794, 0.9994154558335643, 0.9990995402999832, 0.9988045333453536, 0.9985568193035571, 0.998367473172115, 0.9982354380993155, 0.9981518256476755, 0.9981042910146134, 0.9980807562718449, 0.9980721471845856, 0.9980741264206353, 0.9980879493616537, 0.9981205198720774, 0.9981835488481416, 0.9982915449971035, 0.9984583349449015, 0.9986920163760886, 0.9989887048931358, 0.9993260489419544, 0.99965807407383, 0.9999132520171717, 0.9999975700998439, 0.9998036953075331, 0.9992261250733631, 0.9981807018334083, 0.9966253905996243, 0.9945781952664823, 0.9921278895434602, 0.989434060341578, 0.9867147422483584, 0.984222324004575, 0.9822108982485342, 0.9809002218146279, 0.9804424841802388, 0.9808979002226159, 0.9822237676104211, 0.9842793106108283, 0.9868457943328631, 0.9896585630695683, 0.9924453905987775, 0.9949643245725726, 0.9970343779613227, 0.998553990423649, 0.9995048236565319, 0.9999415419505305, 0.9999710061490129, 0.999726114470749, 0.9993399861795499, 0.9989253148703539, 0.9985618737213653, 0.9982929031233874, 0.9981290561686783, 0.9980572013034256, 0.9980509331411204, 0.998080095164513, 0.9981176969078354, 0.9981438830287658, 0.9981476331987567, 0.9981273139398537, 0.9980909679204503, 0.9980564729486326, 0.9980507962690802, 0.9981069532741487, 0.9982573190296655, 0.9985227848976527, 0.9988987587201356, 0.9993407598688092, 0.9997537780286843, 0.9999900639061013, 0.9998591951801747, 0.999152030840663, 0.9976768592271543, 0.9953023867217707, 0.991999202195196, 0.9878699972122457, 0.9831598099477411, 0.9782409533861526, 0.9735724084170276, 0.9696390600615102, 0.966880811611032, 0.9656242003701158, 0.96602912935663, 0.9680608234293853, 0.9714926778866888, 0.9759401010907078, 0.980919693428563, 0.9859231786271488, 0.9904924622893154, 0.9942818995197085, 0.9970966393627944, 0.9989012901744024, 0.999799804729309, 0.9999936473455415, 0.9997293534005932, 0.9992475983698542, 0.9987438840726923, 0.9983467842649021, 0.9981146974738646, 0.9980475979225075, 0.9981074116099891, 0.9982399050807508, 0.9983922837972949, 0.9985234257631279, 0.9986068283875953, 0.9986288592000184, 0.9985859750025686, 0.9984839316247918, 0.9983399810558017, 0.9981864796977467, 0.9980722728939508, 0.998057608261432, 0.9981996347044029, 0.9985285821572375, 0.9990186668673495, 0.9995613909033968, 0.9999509044851446, 0.9998904882809904, 0.9990256130596699, 0.9970028700406712, 0.9935466161538227, 0.9885384258222185, 0.9820806164036961, 0.97452595659947, 0.9664616254236048, 0.958645301555697, 0.9519022593485403, 0.9470014461904269, 0.944533409027495, 0.9448128144495896, 0.9478237624812402, 0.9532184536558826, 0.9603704111253549, 0.9684736249232164, 0.9766700511155997, 0.9841816486325443, 0.9904215110733136, 0.9950628886140584, 0.9980545716182481, 0.9995838110438882, 0.9999999965431735, 0.9997201895173562, 0.9991393472332862, 0.9985638281390429, 0.9981784408962038, 0.9980476242814609, 0.9981429649578312, 0.9983841135972882, 0.9986791767418557, 0.9989536579406866, 0.9991627673169123, 0.999288447254819, 0.99932763421834, 0.9992804568728699, 0.9991456619747517, 0.9989261940353157, 0.9986421812646905, 0.9983437355152248, 0.9981138955364985, 0.9980538127580152, 0.9982477046736238, 0.9987127075968234, 0.9993462216551625, 0.9998881787436606, 0.9999159401197362, 0.9988843370400327, 0.9962131301012556, 0.9914108198188784, 0.9842107036423774, 0.9746866268635203, 0.963315786380152, 0.95096565251657, 0.9387994477459537, 0.9281143954841214, 0.9201429242147331, 0.9158548352595413, 0.9157972485139739, 0.9200010334715566, 0.927970471451487, 0.9387592404969283, 0.9511214166031098, 0.9637120043541653, 0.9752999442983205, 0.9849514707227481, 0.9921466163582222, 0.9968070937210974, 0.9992358826767785, 0.9999905983993183, 0.9997270651841562, 0.999052555326965, 0.9984203017828113, 0.9980819658698821, 0.9980978252781356, 0.9983901103810545, 0.9988163095368401, 0.9992378700683185, 0.9995652709019811, 0.9997709076923236, 0.9998731965690797, 0.9999049091691069, 0.9998829628209204, 0.9997945204843127, 0.9996063205229, 0.9992934876026254, 0.9988744300645259, 0.9984333585544384, 0.9981136736591224, 0.9980739905611481, 0.9984115780059793, 0.9990715377375736, 0.9997698513827706, 0.9999610857399208, 0.9988752997985123, 0.9956336779126331, 0.9894310043759225, 0.9797502975483343, 0.9665580032629262, 0.9504245500343651, 0.9325287546913643, 0.9145328264212415, 0.8983481862359768, 0.8858391731595395, 0.8785237252648108, 0.8773264572170382, 0.8824256139845381, 0.8932179779021215, 0.9084085419293294, 0.9262140922029243, 0.9446502212950955, 0.9618514886481624, 0.9763611060629461, 0.9873280449381581, 0.9945699514554094, 0.9984952141821738, 0.9999149078518498, 0.9998016383539741, 0.999059412404313, 0.9983568205209923, 0.998051788142795, 0.9982087409092488, 0.9986856706807538, 0.9992540880561659, 0.9997115678329354, 0.9999545566481262, 0.999995684715152, 0.9999298269905691, 0.9998701811855351, 0.9998842508451048, 0.9999573620472962, 0.9999993490095844, 0.9998924656939028, 0.9995612319457362, 0.999033713942371, 0.9984629868032385, 0.998088374039368, 0.9981357018214579, 0.9986782737523312, 0.999498583259418, 0.9999992557667472, 0.9992071512143708, 0.9958962691675103, 0.9888250230818918, 0.9770472504594274, 0.9602243545295353, 0.9388514512329393, 0.9143234412856256, 0.8888071707351057, 0.8649395934175645, 0.8454179227568284, 0.832569312527182, 0.8279815265507489, 0.8322527920201488, 0.8448933158206253, 0.864391023913642, 0.8884375851437146, 0.9142897875214823, 0.9392123130179771, 0.9609185313500567, 0.9779124658406545, 0.9896516908954244, 0.9964978075055134, 0.9994817678911772, 0.9999612979030564, 0.9992687460539329, 0.9984364208299624, 0.9980525981849158, 0.9982596000764398, 0.9988679498587306, 0.9995350328598774, 0.9999467000943841, 0.9999470871412522, 0.999583594406331, 0.9990642196486728, 0.9986536565384628, 0.9985532752739332, 0.9988126738291222, 0.9993069713574887, 0.9997893079830458, 0.9999998770476464, 0.9997899489646063, 0.9992095289167313, 0.9985150096294526, 0.9980773197399262, 0.9982044826233261, 0.9989246108449304, 0.9997964296923372, 0.9998184981919408, 0.9974932077644311, 0.9910677435337542, 0.978925110303932, 0.9600442781509286, 0.934408100566668, 0.9032324023642032, 0.8689308344444786, 0.8348069398656803, 0.8045456646370308, 0.7816261200400109, 0.7687791670699544, 0.7675784891858943, 0.778210248335418, 0.7994374554766539, 0.8287639398543967, 0.8627934722506234, 0.8977533195256124, 0.9301049878191503, 0.9571179599389164, 0.9772668837942962, 0.9903499339331471, 0.9973077857607321, 0.9998139276403216, 0.9997681896515949, 0.9988355650889896, 0.9981374485924009, 0.9981444029380612, 0.9987607870223814, 0.999545684802102, 0.9999876535074211, 0.9997458753468796, 0.9987883880202717, 0.9973953299526492, 0.9960406996183598, 0.9952049353614583, 0.9951900241739217, 0.9960039572270506, 0.9973555955297907, 0.9987630334255682, 0.9997390544778643, 0.9999874887439766, 0.9995343884587221, 0.9987336126652503, 0.9981247848202152, 0.9981707102785519, 0.9989451690499653, 0.9998677070474756, 0.9995837425662797, 0.9960649119016753, 0.986956354040247, 0.9701278761440612, 0.944308471425113, 0.9096273038469713, 0.8678832944049619, 0.8224360625903991, 0.7777312929760558, 0.7385887120257861, 0.709436058875232, 0.6936500879461805, 0.6930951012709795, 0.7078823209914242, 0.7363452416101672, 0.775234299437487, 0.8201444401854721, 0.866164084845386, 0.9086645759752942, 0.9440676982143043, 0.9703910299885649, 0.9874159244812865, 0.99644105881104, 0.9997200910185677, 0.9997711970902484, 0.9987575859968931, 0.9980838738246285, 0.9982699125665238, 0.9990841469740069, 0.9998590798216015, 0.9998765897585156, 0.9987034479333228, 0.9963804450997752, 0.9934190819257951, 0.9906234951976153, 0.988810329163728, 0.9885271171140644, 0.9898640599260747, 0.992420689177979, 0.9954394813274385, 0.9980654687451946, 0.9996469630071034, 0.9999712685612219, 0.9993415587128749, 0.9984474341984788, 0.9980481450610625, 0.9985511182405652, 0.9996095411189545, 0.9998728755177155, 0.9970034847815885, 0.9880213147872413, 0.9699555529472014, 0.9406761513913438, 0.8996819032823462, 0.848588234379241, 0.7911275748193752, 0.7326359984726198, 0.6791781144586464, 0.6365653034878315, 0.6095036590408397, 0.6009989847969845, 0.6120290078120411, 0.6414387804238425, 0.6860382950096691, 0.740936214039847, 0.8001606272749263, 0.857552906455859, 0.907792223434736, 0.9472934896593913, 0.9747073473558493, 0.9908680433708389, 0.9982294419719877, 0.9999995031298231, 0.9992519245107228, 0.9982516646723653, 0.9981256024319028, 0.9988968543709199, 0.9998128778986017, 0.9998396248245651, 0.998166084555228, 0.9945705982494119, 0.9895474943476356, 0.9841714320020586, 0.9797612645522283, 0.9774641327960704, 0.9778958035066355, 0.9809472301490066, 0.9858146863927424, 0.9912467652540075, 0.9959376290277555, 0.9989450356110304, 0.9999913546438715, 0.9995309223984279, 0.9985364201377029, 0.9980475973616613, 0.9986044633995448, 0.9997304532249455, 0.999634498779512, 0.995269657747094, 0.9828193716268308, 0.9585735957004895, 0.9200145400356792, 0.866803755929366, 0.8013281864287203, 0.7285793616871454, 0.6553789728789277, 0.5892064441062423, 0.5369947909572704, 0.5041887932509307, 0.494172828335532, 0.5080057598160709, 0.5443458320265848, 0.5995177662099693, 0.6677913574328835, 0.7419983594191332, 0.81454067070561, 0.8786549335315016, 0.9296065034650896, 0.9654264683172218, 0.9869418459544547, 0.9971149267680521, 0.9999544051649587, 0.9993677021863522, 0.9982724497291225, 0.9981438745465627, 0.9990271559548822, 0.9999333763144419, 0.9994666600979687, 0.9964907800782373, 0.9906416813762736, 0.9825411553177172, 0.9736630965530993, 0.9659159695886195, 0.9610889600526871, 0.9603363647069442, 0.9638473717647323, 0.9707887592315989, 0.9795368162634763, 0.9881412238117783, 0.9948945068600296, 0.9988334440804907, 0.9999995843628927, 0.9993493529977611, 0.9983139484154439, 0.9981226100230366, 0.999078419071227, 0.9999988357439212, 0.9980135766569125, 0.9888589980978035, 0.967710068888476, 0.9304338774758094, 0.8749575939674755, 0.8023087213471133, 0.7169204295151798, 0.6260409855518235, 0.5384418185853419, 0.4628831352484172, 0.40681486478350776, 0.37557459640762253, 0.3720532679158506, 0.3966177669465027, 0.4470950623724431, 0.5187920055999993, 0.6047172666641223, 0.6962417864625361, 0.784301862084173, 0.8609616968124286, 0.9208805107815848, 0.9621655240089311, 0.9863048155112751, 0.997244614103345, 0.9999876073304338, 0.9991917499599601, 0.9981468079630731, 0.9983104944143691, 0.9994078212968676, 0.9999781790516322, 0.9981814281108605, 0.9926303233581559, 0.9830128509996947, 0.9703282753340972, 0.9566835976185866, 0.9447393976658209]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "--KeyboardInterrupt--\n", - "\n", - "KeyboardInterrupt: Interrupted by user\n" - ] - } - ], - "source": [ - "# Visualization\n", - "home_dir = Path.home()\n", - "desktop_dir = home_dir / 'Desktop'\n", - "print('The Desktop is at: {:}'.format(desktop_dir))\n", - "visualize_syn(desktop_dir / 'tot-synthetic-v0.pdf')" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.8" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/tests/test_synthetic.py b/tests/test_synthetic.py index a6795fd..f9dff6a 100644 --- a/tests/test_synthetic.py +++ b/tests/test_synthetic.py @@ -13,15 +13,15 @@ print("library path: {:}".format(lib_dir)) if str(lib_dir) not in sys.path: sys.path.insert(0, str(lib_dir)) -from datasets import QuadraticFunction +from datasets import QuadraticFunc from datasets import SynAdaptiveEnv -class TestQuadraticFunction(unittest.TestCase): +class TestQuadraticFunc(unittest.TestCase): """Test the quadratic function.""" def test_simple(self): - function = QuadraticFunction([[0, 1], [0.5, 4], [1, 1]]) + function = QuadraticFunc([[0, 1], [0.5, 4], [1, 1]]) print(function) for x in (0, 0.5, 1): print("f({:})={:}".format(x, function[x])) @@ -31,7 +31,7 @@ class TestQuadraticFunction(unittest.TestCase): self.assertTrue(abs(function[1] - 1) < thresh) def test_none(self): - function = QuadraticFunction() + function = QuadraticFunc() function.fit([[0, 1], [0.5, 4], [1, 1]], max_iter=3000, verbose=True) print(function) thresh = 0.2