mirror of
https://github.com/wassname/pytorch-ts.git
synced 2026-06-27 18:06:19 +08:00
1032 lines
285 KiB
Plaintext
1032 lines
285 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import matplotlib.pyplot as plt\n",
|
||
"import json"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import torch"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from gluonts.dataset.repository.datasets import get_dataset\n",
|
||
"from gluonts.dataset.util import to_pandas\n",
|
||
"from gluonts.evaluation import Evaluator\n",
|
||
"from gluonts.evaluation.backtest import make_evaluation_predictions"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"ename": "ImportError",
|
||
"evalue": "cannot import name 'shift_timestamp' from 'gluonts.transform' (/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/gluonts/transform/__init__.py)",
|
||
"output_type": "error",
|
||
"traceback": [
|
||
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
||
"\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)",
|
||
"\u001b[1;32m/media/wassname/SGIronWolf/projects5/timeseries/pytorch-ts/examples/m5-tft.ipynb Cell 5\u001b[0m in \u001b[0;36m<cell line: 2>\u001b[0;34m()\u001b[0m\n\u001b[1;32m <a href='vscode-notebook-cell:/media/wassname/SGIronWolf/projects5/timeseries/pytorch-ts/examples/m5-tft.ipynb#W4sZmlsZQ%3D%3D?line=0'>1</a>\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mpts\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mdataset\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mrepository\u001b[39;00m \u001b[39mimport\u001b[39;00m dataset_recipes\n\u001b[0;32m----> <a href='vscode-notebook-cell:/media/wassname/SGIronWolf/projects5/timeseries/pytorch-ts/examples/m5-tft.ipynb#W4sZmlsZQ%3D%3D?line=1'>2</a>\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mpts\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mmodel\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mtft\u001b[39;00m \u001b[39mimport\u001b[39;00m TemporalFusionTransformerEstimator\n\u001b[1;32m <a href='vscode-notebook-cell:/media/wassname/SGIronWolf/projects5/timeseries/pytorch-ts/examples/m5-tft.ipynb#W4sZmlsZQ%3D%3D?line=2'>3</a>\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mpts\u001b[39;00m \u001b[39mimport\u001b[39;00m Trainer\n",
|
||
"File \u001b[0;32m/media/wassname/SGIronWolf/projects5/timeseries/pytorch-ts/pts/model/tft/__init__.py:1\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mtft_estimator\u001b[39;00m \u001b[39mimport\u001b[39;00m TemporalFusionTransformerEstimator\n\u001b[1;32m 2\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mtft_network\u001b[39;00m \u001b[39mimport\u001b[39;00m (\n\u001b[1;32m 3\u001b[0m TemporalFusionTransformerTrainingNetwork,\n\u001b[1;32m 4\u001b[0m TemporalFusionTransformerPredictionNetwork,\n\u001b[1;32m 5\u001b[0m )\n",
|
||
"File \u001b[0;32m/media/wassname/SGIronWolf/projects5/timeseries/pytorch-ts/pts/model/tft/tft_estimator.py:39\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 33\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mpts\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mmodel\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mutils\u001b[39;00m \u001b[39mimport\u001b[39;00m get_module_forward_input_names\n\u001b[1;32m 35\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mtft_network\u001b[39;00m \u001b[39mimport\u001b[39;00m (\n\u001b[1;32m 36\u001b[0m TemporalFusionTransformerPredictionNetwork,\n\u001b[1;32m 37\u001b[0m TemporalFusionTransformerTrainingNetwork,\n\u001b[1;32m 38\u001b[0m )\n\u001b[0;32m---> 39\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mtft_transform\u001b[39;00m \u001b[39mimport\u001b[39;00m BroadcastTo, TFTInstanceSplitter\n\u001b[1;32m 42\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m_default_feat_args\u001b[39m(dims_or_cardinalities: List[\u001b[39mint\u001b[39m]):\n\u001b[1;32m 43\u001b[0m \u001b[39mif\u001b[39;00m dims_or_cardinalities:\n",
|
||
"File \u001b[0;32m/media/wassname/SGIronWolf/projects5/timeseries/pytorch-ts/pts/model/tft/tft_transform.py:22\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mgluonts\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mdataset\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mcommon\u001b[39;00m \u001b[39mimport\u001b[39;00m DataEntry\n\u001b[1;32m 21\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mgluonts\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mdataset\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mfield_names\u001b[39;00m \u001b[39mimport\u001b[39;00m FieldName\n\u001b[0;32m---> 22\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mgluonts\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mtransform\u001b[39;00m \u001b[39mimport\u001b[39;00m (\n\u001b[1;32m 23\u001b[0m InstanceSplitter,\n\u001b[1;32m 24\u001b[0m MapTransformation,\n\u001b[1;32m 25\u001b[0m shift_timestamp,\n\u001b[1;32m 26\u001b[0m target_transformation_length,\n\u001b[1;32m 27\u001b[0m )\n\u001b[1;32m 28\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mgluonts\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mtransform\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39msampler\u001b[39;00m \u001b[39mimport\u001b[39;00m InstanceSampler\n\u001b[1;32m 31\u001b[0m \u001b[39mclass\u001b[39;00m \u001b[39mBroadcastTo\u001b[39;00m(MapTransformation):\n",
|
||
"\u001b[0;31mImportError\u001b[0m: cannot import name 'shift_timestamp' from 'gluonts.transform' (/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/gluonts/transform/__init__.py)"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"from pts.dataset.repository import dataset_recipes\n",
|
||
"from pts.model.tft import TemporalFusionTransformerEstimator\n",
|
||
"from pts import Trainer"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"dataset = get_dataset(\"pts_m5\", regenerate=False)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 432x288 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"entry = next(iter(dataset.train))\n",
|
||
"train_series = to_pandas(entry)\n",
|
||
"train_series.plot()\n",
|
||
"plt.grid(which=\"both\")\n",
|
||
"plt.legend([\"train series\"], loc=\"upper left\")\n",
|
||
"plt.title(entry['item_id'])\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 432x288 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"entry = next(iter(dataset.test))\n",
|
||
"test_series = to_pandas(entry)\n",
|
||
"test_series.plot()\n",
|
||
"plt.axvline(train_series.index[-1], color='r') # end of train dataset\n",
|
||
"plt.grid(which=\"both\")\n",
|
||
"plt.legend([\"test series\", \"end of train series\"], loc=\"upper left\")\n",
|
||
"plt.title(entry['item_id'])\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"MetaData(freq='D', target=None, feat_static_cat=[CategoricalFeatureInfo(name='state_id', cardinality='3'), CategoricalFeatureInfo(name='store_id', cardinality='10'), CategoricalFeatureInfo(name='cat_id', cardinality='3'), CategoricalFeatureInfo(name='dept_id', cardinality='7'), CategoricalFeatureInfo(name='item_id', cardinality='3049')], feat_static_real=[], feat_dynamic_real=[BasicFeatureInfo(name='sell_price'), BasicFeatureInfo(name='event_1'), BasicFeatureInfo(name='event_2'), BasicFeatureInfo(name='snap')], feat_dynamic_cat=[], prediction_length=28)"
|
||
]
|
||
},
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"dataset.metadata"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Recommended prediction horizon: 28\n",
|
||
"Frequency of the time series: D\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(f\"Recommended prediction horizon: {dataset.metadata.prediction_length}\")\n",
|
||
"print(f\"Frequency of the time series: {dataset.metadata.freq}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"estimator = TemporalFusionTransformerEstimator(\n",
|
||
" freq=dataset.metadata.freq,\n",
|
||
" prediction_length=dataset.metadata.prediction_length,\n",
|
||
" context_length=dataset.metadata.prediction_length*5,\n",
|
||
" dropout_rate=0.1,\n",
|
||
" num_outputs=15,\n",
|
||
" trainer=Trainer(device=device,\n",
|
||
" epochs=20,\n",
|
||
" learning_rate=1e-3,\n",
|
||
" num_batches_per_epoch=100,\n",
|
||
" batch_size=128,\n",
|
||
" )\n",
|
||
")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {
|
||
"scrolled": true
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/nn/modules/module.py:795: UserWarning: Using a non-full backward hook when the forward contains multiple autograd Nodes is deprecated and will be removed in future versions. This hook will be missing some grad_input. Please use register_full_backward_hook to get the documented behavior.\n",
|
||
" warnings.warn(\"Using a non-full backward hook when the forward contains multiple autograd Nodes \"\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/nn/modules/module.py:760: UserWarning: Using non-full backward hooks on a Module that does not return a single Tensor or a tuple of Tensors is deprecated and will be removed in future versions. This hook will be missing some of the grad_output. Please use register_full_backward_hook to get the documented behavior.\n",
|
||
" warnings.warn(\"Using non-full backward hooks on a Module that does not return a \"\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/nn/modules/module.py:770: UserWarning: Using non-full backward hooks on a Module that does not take as input a single Tensor or a tuple of Tensors is deprecated and will be removed in future versions. This hook will be missing some of the grad_input. Please use register_full_backward_hook to get the documented behavior.\n",
|
||
" warnings.warn(\"Using non-full backward hooks on a Module that does not take as input a \"\n",
|
||
"1it [00:02, 2.60s/it, avg_epoch_loss=0.1, epoch=0]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"99it [00:10, 9.81it/s, avg_epoch_loss=0.0694, epoch=0]\n",
|
||
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"99it [00:10, 9.69it/s, avg_epoch_loss=0.0665, epoch=1]\n",
|
||
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"99it [00:10, 9.71it/s, avg_epoch_loss=0.0633, epoch=2]\n",
|
||
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"1it [00:02, 2.68s/it, avg_epoch_loss=0.0571, epoch=3]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"99it [00:10, 9.77it/s, avg_epoch_loss=0.0634, epoch=3]\n",
|
||
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"99it [00:10, 9.85it/s, avg_epoch_loss=0.0626, epoch=4]\n",
|
||
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"99it [00:09, 9.92it/s, avg_epoch_loss=0.0631, epoch=5]\n",
|
||
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"1it [00:02, 2.62s/it, avg_epoch_loss=0.0632, epoch=6]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"99it [00:10, 9.60it/s, avg_epoch_loss=0.0624, epoch=6]\n",
|
||
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"1it [00:02, 2.63s/it, avg_epoch_loss=0.0628, epoch=7]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"99it [00:09, 10.00it/s, avg_epoch_loss=0.0624, epoch=7]\n",
|
||
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"99it [00:10, 9.63it/s, avg_epoch_loss=0.0616, epoch=8]\n",
|
||
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"1it [00:02, 2.69s/it, avg_epoch_loss=0.0656, epoch=9]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"99it [00:10, 9.64it/s, avg_epoch_loss=0.0613, epoch=9]\n",
|
||
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"99it [00:10, 9.56it/s, avg_epoch_loss=0.0619, epoch=10]\n",
|
||
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"1it [00:02, 2.67s/it, avg_epoch_loss=0.0579, epoch=11]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"99it [00:10, 9.78it/s, avg_epoch_loss=0.061, epoch=11] \n",
|
||
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"99it [00:10, 9.82it/s, avg_epoch_loss=0.0612, epoch=12]\n",
|
||
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"99it [00:10, 9.69it/s, avg_epoch_loss=0.0609, epoch=13]\n",
|
||
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"1it [00:02, 2.64s/it, avg_epoch_loss=0.0572, epoch=14]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"2it [00:02, 1.15s/it, avg_epoch_loss=0.0617, epoch=14]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"99it [00:10, 9.77it/s, avg_epoch_loss=0.0612, epoch=14]\n",
|
||
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"1it [00:02, 2.64s/it, avg_epoch_loss=0.0551, epoch=15]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"99it [00:10, 9.76it/s, avg_epoch_loss=0.0614, epoch=15]\n",
|
||
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"1it [00:02, 2.66s/it, avg_epoch_loss=0.0553, epoch=16]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"99it [00:10, 9.57it/s, avg_epoch_loss=0.0612, epoch=16]\n",
|
||
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"1it [00:02, 2.61s/it, avg_epoch_loss=0.0677, epoch=17]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"3it [00:02, 1.35it/s, avg_epoch_loss=0.0637, epoch=17]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"99it [00:10, 9.56it/s, avg_epoch_loss=0.061, epoch=17] \n",
|
||
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"1it [00:02, 2.63s/it, avg_epoch_loss=0.0623, epoch=18]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"99it [00:09, 9.92it/s, avg_epoch_loss=0.0607, epoch=18]\n",
|
||
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"1it [00:02, 2.66s/it, avg_epoch_loss=0.0503, epoch=19]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
|
||
" return default_collate([torch.as_tensor(b) for b in batch])\n",
|
||
"99it [00:10, 9.74it/s, avg_epoch_loss=0.0607, epoch=19]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"predictor = estimator.train(dataset.train, num_workers=8, shuffle_buffer_length=1024)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"forecast_it, ts_it = make_evaluation_predictions(\n",
|
||
" dataset=dataset.test, # test dataset\n",
|
||
" predictor=predictor, # predictor\n",
|
||
" num_samples=100, # number of sample paths we want for evaluation\n",
|
||
")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"forecasts = list(forecast_it)\n",
|
||
"tss = list(ts_it)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Running evaluation: 100%|██████████| 30490/30490 [00:00<00:00, 73264.53it/s]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"evaluator = Evaluator()\n",
|
||
"agg_metrics, item_metrics = evaluator(iter(tss), iter(forecasts), num_series=len(dataset.test))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"{\n",
|
||
" \"MSE\": 5.050131371510992,\n",
|
||
" \"abs_error\": 825300.8760404031,\n",
|
||
" \"abs_target_sum\": 1231764.0,\n",
|
||
" \"abs_target_mean\": 1.4428196598416343,\n",
|
||
" \"seasonal_error\": 1.1272178349378457,\n",
|
||
" \"MASE\": 0.8942878068619854,\n",
|
||
" \"MAPE\": 0.7959536171820637,\n",
|
||
" \"sMAPE\": 1.5777253903358783,\n",
|
||
" \"OWA\": NaN,\n",
|
||
" \"MSIS\": NaN,\n",
|
||
" \"QuantileLoss[0.1]\": 235492.3691656391,\n",
|
||
" \"Coverage[0.1]\": 0.0841399990629246,\n",
|
||
" \"QuantileLoss[0.2]\": 432733.80553320213,\n",
|
||
" \"Coverage[0.2]\": 0.16420606287775852,\n",
|
||
" \"QuantileLoss[0.3]\": 598878.4456814768,\n",
|
||
" \"Coverage[0.3]\": 0.2313885114557466,\n",
|
||
" \"QuantileLoss[0.4]\": 731890.6043083849,\n",
|
||
" \"Coverage[0.4]\": 0.33211357353699106,\n",
|
||
" \"QuantileLoss[0.5]\": 825300.8755625215,\n",
|
||
" \"Coverage[0.5]\": 0.4319109309843977,\n",
|
||
" \"QuantileLoss[0.6]\": 875338.4524397269,\n",
|
||
" \"Coverage[0.6]\": 0.5821979103218853,\n",
|
||
" \"QuantileLoss[0.7]\": 866631.8245184756,\n",
|
||
" \"Coverage[0.7]\": 0.6952033453591342,\n",
|
||
" \"QuantileLoss[0.8]\": 776677.5575613247,\n",
|
||
" \"Coverage[0.8]\": 0.790309469146793,\n",
|
||
" \"QuantileLoss[0.9]\": 565017.1712122711,\n",
|
||
" \"Coverage[0.9]\": 0.8809902544159678,\n",
|
||
" \"RMSE\": 2.247249735011886,\n",
|
||
" \"NRMSE\": 1.5575402786364494,\n",
|
||
" \"ND\": 0.670015421818143,\n",
|
||
" \"wQuantileLoss[0.1]\": 0.1911830262661022,\n",
|
||
" \"wQuantileLoss[0.2]\": 0.3513122688544251,\n",
|
||
" \"wQuantileLoss[0.3]\": 0.48619576938559406,\n",
|
||
" \"wQuantileLoss[0.4]\": 0.5941808693129406,\n",
|
||
" \"wQuantileLoss[0.5]\": 0.6700154214301778,\n",
|
||
" \"wQuantileLoss[0.6]\": 0.7106381193473157,\n",
|
||
" \"wQuantileLoss[0.7]\": 0.7035696972134886,\n",
|
||
" \"wQuantileLoss[0.8]\": 0.630540880851628,\n",
|
||
" \"wQuantileLoss[0.9]\": 0.4587057027257422,\n",
|
||
" \"mean_absolute_QuantileLoss\": 656440.1228870025,\n",
|
||
" \"mean_wQuantileLoss\": 0.5329268617097127,\n",
|
||
" \"MAE_Coverage\": 0.03417110475982236\n",
|
||
"}\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(json.dumps(agg_metrics, indent=4))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 432x288 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"item_metrics.plot(x='MAPE', y='MASE', kind='scatter')\n",
|
||
"plt.grid(which=\"both\")\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>item_id</th>\n",
|
||
" <th>MSE</th>\n",
|
||
" <th>abs_error</th>\n",
|
||
" <th>abs_target_sum</th>\n",
|
||
" <th>abs_target_mean</th>\n",
|
||
" <th>seasonal_error</th>\n",
|
||
" <th>MASE</th>\n",
|
||
" <th>MAPE</th>\n",
|
||
" <th>sMAPE</th>\n",
|
||
" <th>OWA</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>QuantileLoss[0.5]</th>\n",
|
||
" <th>Coverage[0.5]</th>\n",
|
||
" <th>QuantileLoss[0.6]</th>\n",
|
||
" <th>Coverage[0.6]</th>\n",
|
||
" <th>QuantileLoss[0.7]</th>\n",
|
||
" <th>Coverage[0.7]</th>\n",
|
||
" <th>QuantileLoss[0.8]</th>\n",
|
||
" <th>Coverage[0.8]</th>\n",
|
||
" <th>QuantileLoss[0.9]</th>\n",
|
||
" <th>Coverage[0.9]</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>6828</th>\n",
|
||
" <td>FOODS_3_070_WI_2</td>\n",
|
||
" <td>531.909877</td>\n",
|
||
" <td>518.847107</td>\n",
|
||
" <td>569.0</td>\n",
|
||
" <td>20.321429</td>\n",
|
||
" <td>17.788732</td>\n",
|
||
" <td>1.041685</td>\n",
|
||
" <td>3.032136</td>\n",
|
||
" <td>0.946577</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>518.847116</td>\n",
|
||
" <td>0.642857</td>\n",
|
||
" <td>518.082115</td>\n",
|
||
" <td>0.750000</td>\n",
|
||
" <td>510.659755</td>\n",
|
||
" <td>0.892857</td>\n",
|
||
" <td>477.338791</td>\n",
|
||
" <td>0.964286</td>\n",
|
||
" <td>348.039331</td>\n",
|
||
" <td>0.964286</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>8462</th>\n",
|
||
" <td>FOODS_3_234_CA_3</td>\n",
|
||
" <td>43.477325</td>\n",
|
||
" <td>176.806824</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>0.071429</td>\n",
|
||
" <td>15.951334</td>\n",
|
||
" <td>0.395862</td>\n",
|
||
" <td>6.970813</td>\n",
|
||
" <td>1.966008</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>176.806829</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>241.263911</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>247.255903</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>217.906344</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>164.628036</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>8468</th>\n",
|
||
" <td>FOODS_3_234_WI_2</td>\n",
|
||
" <td>1899.364955</td>\n",
|
||
" <td>935.622803</td>\n",
|
||
" <td>1089.0</td>\n",
|
||
" <td>38.892857</td>\n",
|
||
" <td>22.698745</td>\n",
|
||
" <td>1.472112</td>\n",
|
||
" <td>3.761671</td>\n",
|
||
" <td>1.129167</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>935.622761</td>\n",
|
||
" <td>0.428571</td>\n",
|
||
" <td>988.843789</td>\n",
|
||
" <td>0.535714</td>\n",
|
||
" <td>935.429903</td>\n",
|
||
" <td>0.571429</td>\n",
|
||
" <td>751.070375</td>\n",
|
||
" <td>0.714286</td>\n",
|
||
" <td>493.297098</td>\n",
|
||
" <td>0.892857</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>9742</th>\n",
|
||
" <td>FOODS_3_362_CA_3</td>\n",
|
||
" <td>362.378557</td>\n",
|
||
" <td>456.977081</td>\n",
|
||
" <td>313.0</td>\n",
|
||
" <td>11.178571</td>\n",
|
||
" <td>8.542276</td>\n",
|
||
" <td>1.910569</td>\n",
|
||
" <td>4.160606</td>\n",
|
||
" <td>1.190415</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>456.977058</td>\n",
|
||
" <td>0.750000</td>\n",
|
||
" <td>462.123611</td>\n",
|
||
" <td>0.928571</td>\n",
|
||
" <td>425.437444</td>\n",
|
||
" <td>0.964286</td>\n",
|
||
" <td>371.548067</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>257.005370</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>4 rows × 29 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" item_id MSE abs_error abs_target_sum \\\n",
|
||
"6828 FOODS_3_070_WI_2 531.909877 518.847107 569.0 \n",
|
||
"8462 FOODS_3_234_CA_3 43.477325 176.806824 2.0 \n",
|
||
"8468 FOODS_3_234_WI_2 1899.364955 935.622803 1089.0 \n",
|
||
"9742 FOODS_3_362_CA_3 362.378557 456.977081 313.0 \n",
|
||
"\n",
|
||
" abs_target_mean seasonal_error MASE MAPE sMAPE OWA ... \\\n",
|
||
"6828 20.321429 17.788732 1.041685 3.032136 0.946577 NaN ... \n",
|
||
"8462 0.071429 15.951334 0.395862 6.970813 1.966008 NaN ... \n",
|
||
"8468 38.892857 22.698745 1.472112 3.761671 1.129167 NaN ... \n",
|
||
"9742 11.178571 8.542276 1.910569 4.160606 1.190415 NaN ... \n",
|
||
"\n",
|
||
" QuantileLoss[0.5] Coverage[0.5] QuantileLoss[0.6] Coverage[0.6] \\\n",
|
||
"6828 518.847116 0.642857 518.082115 0.750000 \n",
|
||
"8462 176.806829 1.000000 241.263911 1.000000 \n",
|
||
"8468 935.622761 0.428571 988.843789 0.535714 \n",
|
||
"9742 456.977058 0.750000 462.123611 0.928571 \n",
|
||
"\n",
|
||
" QuantileLoss[0.7] Coverage[0.7] QuantileLoss[0.8] Coverage[0.8] \\\n",
|
||
"6828 510.659755 0.892857 477.338791 0.964286 \n",
|
||
"8462 247.255903 1.000000 217.906344 1.000000 \n",
|
||
"8468 935.429903 0.571429 751.070375 0.714286 \n",
|
||
"9742 425.437444 0.964286 371.548067 1.000000 \n",
|
||
"\n",
|
||
" QuantileLoss[0.9] Coverage[0.9] \n",
|
||
"6828 348.039331 0.964286 \n",
|
||
"8462 164.628036 1.000000 \n",
|
||
"8468 493.297098 0.892857 \n",
|
||
"9742 257.005370 1.000000 \n",
|
||
"\n",
|
||
"[4 rows x 29 columns]"
|
||
]
|
||
},
|
||
"execution_count": 40,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"item_metrics[item_metrics.MAPE > 3]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def plot_quantiles(ts_entry, forecast_entry, prediction_length, path=None, sample_id=None, inline=True):\n",
|
||
" plot_length = 150\n",
|
||
"\n",
|
||
" _, ax = plt.subplots(1, 1, figsize=(10, 7))\n",
|
||
" ts_entry[-plot_length:].plot(ax=ax)\n",
|
||
" forecast_entry.plot(color='g')\n",
|
||
" ax.axvline(ts_entry.index[-prediction_length], color='r')\n",
|
||
" if inline:\n",
|
||
" plt.show()\n",
|
||
" plt.clf()\n",
|
||
" else:\n",
|
||
" plt.savefig('{}forecast_{}.pdf'.format(path, sample_id))\n",
|
||
" plt.close()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlAAAAGnCAYAAAB4nWl5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOydeXwU93n/PzOzh7Q6kUAH4gaBjQHJksCOjTG2LNvYDpj8UhNyGCchSdMmLm2cVA114ySllRvSpmniOg5OrcSpieskYJIYm8PYMrEBCWTAXOKQQEII0H2stDvH74/Z7+zs7szs7CHtrPi+X6+8gndndr672p155vM8z+dhJEkChUKhUCgUCsU8bKIXQKFQKBQKhZJs0ACKQqFQKBQKJUJoAEWhUCgUCoUSITSAolAoFAqFQokQGkBRKBQKhUKhRAgNoCgUCoVCoVAixDaWB5s4caI0Y8aMsTwkhUKhUCjW5/Rp+f/nzUvsOigBNDQ0XJckaZLWc2MaQM2YMQP19fVjeUgKhUKhUKzP8uXy/+/bl8hVUIJgGKZF7zmawqNQKBQKhUKJEBpAUSgUCoVCoUQIDaAoFAqFQqFQImRMa6C08Hq9aG1txfDwcKKXQrlBSElJwZQpU2C32xO9FAqFQqEkKQkPoFpbW5GRkYEZM2aAYZhEL4cyzpEkCZ2dnWhtbcXMmTMTvRwKhUKhJCkJT+ENDw8jNzeXBk+UMYFhGOTm5lLFk0KhUCgxkfAACgANnihjCv2+USgUCiVWLBFAWYGdO3di3rx5mDNnDmpqahK9HAqFQqFQKBaGBlAABEHAX//1X+ONN97AiRMn8Morr+DEiROJXhaFQqFQKBSLQgMoAAcPHsScOXMwa9YsOBwOfOpTn8L27dsTvSwKhUKhUCgWJeFdeGq+u+MjnLjcF9fXnD85E9/5+C2G27S1tWHq1KnKf0+ZMgUHDhyI6zooFAqFQqGMH6gCRaFQKBQKhRIhllKgwilFo0VRUREuXbqk/HdrayuKiooSshYKhUKhUCjWhypQABYvXoympiZcuHABHo8HW7duxcqVKxO9LAqFQqFQKBaFBlAAbDYbfvKTn+CBBx7AzTffjMceewy33JIYNYyS/Pz57HX86xsnE70MCoVCoYwilkrhJZKHHnoIDz30UKKXQRkH7DrZgf/Z34y/vW8uUuxcopdDoVAolFGAKlAUSpzhBQkA0NI5lOCVUCgUCmW0oAEUhRJneFEOoJo7BxO8EgqFQqGMFjSAolDiDC+IAIAWGkBRKBTKuIUGUBRKnBF8CtSF6zSFR6FQKOMVGkBRKHHGK5IaKKpAUSgUyniFBlAUSpwRRJLCowoUhUKhjFdoAKVDV1cXqqqqUFxcjKqqKnR3d2tux3EcSktLUVpaSs03KQAAr68L73KvG8NeIcGroVAoFMpoQAMoHWpqalBZWYmmpiZUVlaipqZGc7vU1FQ0NjaisbERr7/++hivkmJFSA2UJAGXuqgKRaFQKOMRaqQJYNOmTaitrUVeXh6mTp2K8vJybN++Hfv27QMArFu3DsuXL8ezzz6b2IVSkgKvIMLOMfAKEpo7h1Ccn5HoJVEoFAolzlgqgNqwcwMarzTG9TVLC0rxowd/pPt8Q0MDtm7disbGRvA8j7KyMpSXl6OjowOFhYUAgIKCAnR0dGjuPzw8jIqKCthsNlRXV+PRRx+N6/opyQcvSJiRm4amqwO0kJxCoVDGKZYKoBJBXV0dVq9eDZfLBQCadUwMw4BhGM39W1paUFRUhPPnz+Pee+/FwoULMXv27FFdM8XaCKKEielOXO0fwYXrNICiUCiU8YilAigjpWisyc/PR3t7OwoLC9He3o68vDzN7YqKigAAs2bNwvLly3HkyBEaQN3geEURTrsNMyam0U48CoVCGafc8EXky5Ytw7Zt2+B2u9Hf348dO3YAkJWo2tpaAEBtbS1WrVoVsm93dzdGRkYAANevX8f+/fsxf/78sVs8xZIIogQby2BGrouOc6FQKJRxyg0fQJWVlWHNmjUoKSnBihUrsHjxYgBAdXU1du3aheLiYuzevRvV1dUAgPr6eqxfvx4AcPLkSVRUVKCkpAT33HMPqquraQBFgVeQwLEspuem4XKPGyM8tTKgUCiU8YalUniJYuPGjdi4cSMA4JlnngEA5ObmYs+ePSHbVlRUYMuWLQCAO+64A8eOHRuzdVKSA0GUu/Bm5LogSsClLjfm5KUnelkUCoVCiSM3vAJFocQbXpDAsQxmTEwDQEe6UCgUyniEKlBBEAWKQokWXpRg51jMyJUDqGZaSE6hUCjjDqpAUShxhhdEcCyDCS47MlJsaKZWBhQKhTLuoAEUhRJnZAVK9g6bOTGNduJRKBTKOIQGUBRKnOFFuQYKAKbnUi8oCoVCGY/QAIpCiTO8IMLGyj+tGbkutHYPwcOLCV4VhUKhUOIJDaB06OrqQlVVFYqLi1FVVYXu7m7N7R588EFkZ2fjkUceGeMVUqwK7zPSBGQFSpSA1m6qQlEoFMp4ImwAxTDMLxiGucowzHHVYz9gGOYUwzBHGYb5PcMw2aO6ygRQU1ODyspKNDU1obKyEjU1NZrbffOb38SvfvWrMV4dxcrwggQbJ/+0Zk6UZyzSNB6FQqGML8woUC8BeDDosV0AFkiStAjAGQD/EOd1jSmbNm3C3LlzsXTpUqxduxabN2/G9u3bsW7dOgDAunXrsG3bNs19KysrkZGRMYarpVgd3mekCcgKFABaSE6hUCjjjLA+UJIkvcswzIygx95S/ecHAD4Zj8Vs2LkBjVca4/FSCqUFpYZDihsaGrB161Y0NjaC53mUlZWhvLwcHR0dKCwsBAAUFBSgo6MjruuijE9EUYIoQSkiz01zIN05vqwMvIKIk+19WDQlO9FLGdcMjPBo63ZjXgG9QaNQrEg8aqC+AOANvScZhvkywzD1DMPUX7t2LQ6Hiy91dXVYvXo1XC4XMjMzsXLlypBtGEZuSadQwsGLEgDA7kvhMQyDKRNS0dYznMhlxZWdx69g1U/341r/SKKXMq759QctePSn+yFJUqKXQqFQNIjJiZxhmI0AeAC/1ttGkqQXALwAABUVFYZnAiOlaKzJz89He3s7CgsL0d7ejry8vEQviZIE8KLcbUcUKABIdXDjaqBw/zAPSQKGPDwAZ6KXM27pG/bC7RUUXzEKhWItolagGIZ5AsAjAD4jJfEt0rJly7Bt2za43W709/djx44dAICVK1eitrYWAFBbW4tVq1YlcpmUJIEoUDZVAOXg2HFlYyD4fu7kvVJGB/L5CvRzplAsSVQBFMMwDwL4FoCVkiQldXtRWVkZ1qxZg5KSEqxYsQKLFy8GAFRXV2PXrl0oLi7G7t27UV1dDQCor6/H+vXrlf3vuusu/MVf/AX27NmDKVOm4M0330zI+6BYA17QCKBsLDzCOAqgfO+FXthHF/Jd8o6j7w6FMp4Im8JjGOYVAMsBTGQYphXAdyB33TkB7PLVBn0gSdJfjuI6R5WNGzdi48aNAPzDhHNzc7Fnz56QbSsqKrBlyxblv+vq6sZkjZTkgKTwiI0BADhtLDoHxs9FkCgj5AJPGR0EqkBRKJbGTBfeWo2HXxyFtVAoSY+WAuW0ceNKgRIlemEfC4jy5KWBKoViSWIqIh+PEAWKQokGElSoFSiHbXzVQCkKlDh+3pMVoQoUhWJt6CgXCiWOENUguIh8PHXhifTCPiZ4aQ0UhWJpaABFocQRvwIVVEQ+LhUoGkCNJkTho58zhWJNaABFocQRr2YN1PgKoGhqaWzw2xiMn+8OhTKeoAEUhRJHlC48NqgGahylYQSqQI0JPC0ip1AsDQ2gdOjq6kJVVRWKi4tRVVWF7u5uze3+/u//HgsWLMCCBQvwm9/8ZoxXSbEavE4KzytISu1QsiNQZWRMoEofhWJtaAClQ01NDSorK9HU1ITKykrU1NSEbPPHP/4Rhw8fRmNjIw4cOIDNmzejr68vAaulWAW/jUGgAgVg3KhQ1AdqbKBF5BSKtaEBFIBNmzZh7ty5WLp0KdauXYvNmzdj+/btWLduHQBg3bp12LZtW8h+J06cwLJly2Cz2ZCWloZFixZh586dY7x6ipXwG2kG+kABwMg4qYOiysjYQD9nCsXaWMoHasPODWi80hjX1ywtKDUcUtzQ0ICtW7eisbERPM+jrKwM5eXl6OjoQGFhIQCgoKAAHR0dIfuWlJTgu9/9Lr7xjW9gaGgIb7/9NubPnx/X9VOSC71RLgDGTSE5rYEaG6iRJoVibSwVQCWCuro6rF69Gi6XC4A8RDgYhmHgG1kTwP33349Dhw7hjjvuwKRJk/Cxj30MHMeN+pop1kXLSNPp+/d48YISqBP5mEAVKArF2lgqgDJSisaa/Px8tLe3o7CwEO3t7cjLy9PcTj1H79Of/jTmzp07lsukWAxNI83xpkAJVIEaC7y+z9dLi/UpFEtyw9dALVu2DNu2bYPb7UZ/fz927NgBQFaiamtrAQC1tbVYtWpVyL6CIKCzsxMAcPToURw9ehT333//2C2eYjm0jDSd47aIfHy8H6tCuhwFmsKjUCyJpRSoRFBWVoY1a9agpKQEeXl5WLx4MQCguroajz32GF588UVMnz4dr776KgCgvr4ezz//PLZs2QKv14u77roLAJCZmYmXX34ZNtsN/5He0BDVYDwrUGSYMFWgRhdeUfrGx/eGQhlv0Ks9AtNwZJhwbm4u9uzZE7JtRUUFtmzZAgBISUnBiRMnxmydFOsj6BhpAuOnC4+ntTljAh2ZQ6FYmxs+hUehxBPSMcUFDRMGxo8CJdAZbWMCSZFSvy0KxZpQBSoIokBRKNFAVBm7ugvPLndmjp8AijqRjwXUSJNCsTZUgaJQ4ghRDbQUqPGSwqM+UGMDtTGgUKwNDaAolDjCKwpUaBH5uPGBIhd2mloaVUjxuJcGUBSKJaEBFIUSR3iNGijnOOvCo8XNY4NSrE9TeBSKJaEBFIUSR4jpYUAN1DjzgaKppbGBp4alFIqloQGUDl1dXaiqqkJxcTGqqqrQ3d0dsk1jYyM+9rGP4ZZbbsGiRYvwm9/8JgErpVgJgc7CswS9bi9W/eQ9XLg+mOilRA1Pux0pFEtDAygdampqUFlZiaamJlRWVqKmpiZkG5fLhV/+8pf46KOPsHPnTmzYsAE9PT1jv1iKZSD1KpxGADXeisit3IV3qWsIH7b24lR7X6KXEjWKAjVOlEsKZbxBbQwAbNq0CbW1tcjLy8PUqVNRXl6O7du3Y9++fQCAdevWYfny5Xj22WcD9lPPvZs8eTLy8vJw7do1ZGdnj+HqKVZCEEXY2MDh0+PNByoZaqCU+iHJums0QpKkpPicKZQbGUsFUBt2bkDjlca4vmZpQanhkOKGhgZs3boVjY2N4HkeZWVlKC8vR0dHBwoLCwEABQUF6OjoMDzOwYMH4fF4MHv27Hgun5Jk8IIUoD4BgI1jwbHMuAmgyCgXK9dAJXudlnrd1EiTQrEmlgqgEkFdXR1Wr14Nl8sFQB4iHAzDBCoKwbS3t+Nzn/scamtrwbI0K3ojw4tSQAE5wcGx46aIPBmKm5M9gFJ/tlb+nCmUGxlLBVBGStFYk5+fj/b2dhQWFqK9vR15eXma2/X19eHhhx/Gpk2bcPvtt4/xKilWgxfEEAUKkOugRrzjwwdKUaAsrIyQAuxxEUCNk8CbQhlv3PByybJly7Bt2za43W709/djx44dAGQlqra2FgBQW1uLVatWhezr8XiwevVqPP744/jkJz85puumWBNZgdIOoMaNApUEtTmkvj1ZAyh1cGrlz5lCuZG54QOosrIyrFmzBiUlJVixYgUWL14MAKiursauXbtQXFyM3bt3o7q6GgBQX1+P9evXAwBeffVVvPvuu3jppZdQWlqK0tJSNDY2JuqtUCyAVg0UIHtB0S68sUNRoJK0iNyr+mx5C3/OFMqNjKVSeIli48aN2LhxIwD/MOHc3Fzs2bMnZNuKigps2bIFAPDZz34Wn/3sZ8dsnRTrw4sSbBp1cA4bO26KyJPBB4qsUbTwGo2gReQUivW54RUoCiWe8KIIm1YKjxuPCpR1L+zJsEYjvIJagUrO90ChjHeoAhUEUaAolGiQFSjtFN54UaCSwSE7GVQyI9SqEy0ip1CsCVWgKJQ4wguiZgrPaePGTQAlJEGBNql9EpO0BoraGFAo1ocGUBRKHOEFSTuFZ2Mxwo8PGwMhiRSoZBVv1IXjtAaKQrEmNICiUOKIXgpvPNkYJEUXnmD9NRrBUxsDCsXy0ACKQokjchG5jhP5uEnhkSG31r2wC1KyK1DqACpJ3wSFMs6hAZQOXV1dqKqqQnFxMaqqqtDd3a253be+9S3ccsstuPnmm/Hkk09CStKaC0p84AWdInL7+Amg+CTocFNUsiT9PaqVMyt/zhTKjQwNoHSoqalBZWUlmpqaUFlZiZqampBt/vznP2P//v04evQojh8/jkOHDuGdd95JwGopVoEXdWqgxpGNASnMtnJqiU+CNKMRXpW6501WGY1CGedQGwMAmzZtQm1tLfLy8jB16lSUl5dj+/bt2LdvHwBg3bp1WL58OZ599tmA/RiGwfDwMDweDyRJgtfrRX5+fgLeAcUq3AhGmsmgQIlJXkROPlsHx1r6c6ZQbmQsFUBt2LkBjVca4/qapQWlhkOKGxoasHXrVjQ2NoLneZSVlaG8vBwdHR0oLCwEABQUFKCjoyNk34997GO45557UFhYCEmS8LWvfQ0333xzXNdPSS5kGwOdIvJxEECJogSSFUsGBSpZbQyI6uS0swFqFIVCsQ43fAqvrq4Oq1evhsvlQmZmJlauXBmyDcMwYJjQi+LZs2dx8uRJtLa2oq2tDXv37kVdXd1YLJtiUQSdFJ7TxmEkWeUQFeqaIiunx8QkUMmMIOtOsXNJ+x4olPGOpRQoI6VorMnPz0d7ezsKCwvR3t6OvLy8kG1+//vf4/bbb0d6ejoAYMWKFXj//fdx1113jfVyKRbBq2OkSRQoSZI0g/FkQUgSg8dkSDMaQVSnFDtLa6AoFItywytQy5Ytw7Zt2+B2u9Hf348dO3YAAFauXIna2loAQG1tLVatWhWy77Rp0/DOO++A53l4vV688847NIV3g6OvQMk/tWT3glIHJFYOTog6ZuU1GqEoUDbO0oEqhXIjc8MHUGVlZVizZg1KSkqwYsUKLF68GABQXV2NXbt2obi4GLt370Z1dTUAoL6+HuvXrwcAfPKTn8Ts2bOxcOFClJSUoKSkBB//+McT9l4oiccrSOC0aqB83lDJXgcV4E9k4docZdxMktZAEe8nmsKjUKyLpVJ4iWLjxo3YuHEjAP8w4dzcXOzZsydk24qKCmzZsgUAwHEcfvazn43ZOinWRxAl2LVm4dnHRwAVmMKz7ntRFCgLB3lGqFN43UPW/ZwplBuZsAoUwzC/YBjmKsMwx1WP5TAMs4thmCbf/08Y3WVSKMkBL4rgdHygACS9F1SypPCUGqgkVaAEqkBRKJbHTArvJQAPBj1WDWCPJEnFAPb4/ntc8Mwzz+Cpp55K9DIoSYpXkGDXsTEAxo8C5eBYS9fmkMBJtPAajSAKlNPGURsDCsWihA2gJEl6F0BX0MOrANT6/l0L4NH4LotCSU4EUQKn04UHJH8ROUnbOWyspdNjZG1WDvKM8NsYsJa2i4iUPx1rR/egJ9HLoOggSRJ+29BKOz9NEm0Reb4kSe2+f18BoGu/zTDMlxmGqWcYpv7atWtRHo5CSQ68ggi7jg8UkPwKFLmWO23JoUAlawqPXMBS7Jyli/Ujob3Xjb/69WFsa2xL9FIoOhxv68M3/u9D/PlcZ6KXkhTE3IUnydNzdX/hkiS9IElShSRJFZMmTYr1cBSKpdGzMSAK1AgvjPWS4gpRoJw2a48YIWtL1hSeWoGycqAaCReuDwIA+of5BK+Eogc5PyX7jd5YEW0A1cEwTCEA+P7/avyWRKEkJ5IkgddL4Y2TInIyGsVhYy3dhZfsRppk/al2ztKfcyQ0Xx8CAAx6aABlVZJ9CPdYE20A9TqAdb5/rwOwPT7LsQ5dXV2oqqpCcXExqqqq0N3dHbJNS0sLysrKUFpailtuuQXPP/98AlZKsQrkYj2ei8jJCdZp4yBK1lV4kn2UC6/YGIwfI82WTlmBGhpJbhV2PJPsQ7jHGjM2Bq8AeB/APIZhWhmG+SKAGgBVDMM0AbjP99/jipqaGlRWVqKpqQmVlZWoqQl9i4WFhXj//ffR2NiIAwcOoKamBpcvX07AailWgFzotGwMnOMlgCLdYT5fK6vWGCW7jQEvimAYwM6xkKTkDQTVNPsCKKpAWRfyuxkvqudoE9ZIU5KktTpPVcZ5LQlj06ZNqK2tRV5eHqZOnYry8nJs374d+/btAwCsW7cOy5cvx7PPPhuwn8PhUP49MjICkX7pbmh4RYHSMNK0ja8UHnk/gijBziVyRdoIya5A+QxZST0dL4rgWAt+0BHQ0imn8KgCZV2S/Xcz1ljKiXzDzg1ovNIY19csLSg1HFLc0NCArVu3orGxETzPo6ysDOXl5ejo6EBhYSEAoKCgAB0dHZr7X7p0CQ8//DDOnj2LH/zgB5g8eXJc109JHnif7q05ymW8KFCqFJ76v61Gsl8IeEEExzKw+b5LvCDBaamzdWSIokQVqCQg2X83Y80NPwuvrq4Oq1evhsvlQmZmJlauXBmyDcMwYJjQiyIATJ06FUePHsXZs2dRW1urG2hRxj+KAmXQhZfsPlCKkSZRoCzaYp/sFwLe181p86mZyW5lcLV/BMNe+bs/OEIDKKuS7M0XY42l7mmMlKKxJj8/H+3t7SgsLER7ezvy8vIMt588eTIWLFiAuro6fPKTnxyjVVKsBLnIaXXhjRcfKEEMTOFZtVZCsTFI1hooQYKNZQJSeMkMUZ/SnTYMeWgKz6oISg1Ucv5uxpobXoFatmwZtm3bBrfbjf7+fuzYsQMAsHLlStTWymbrtbW1WLVqVci+ra2tcLvdAIDu7m689957mDdv3tgtnmIpyEVuPPtABQdQVr1T5ZP8QsCLImwc61egkvR9EEgH3s2FGTSFZ2GUEUhJeuMx1tzwAVRZWRnWrFmDkpISrFixAosXLwYAVFdXY9euXSguLsbu3btRXS2P+6uvr8f69esBACdPnsRtt92GkpIS3H333XjqqaewcOHChL0XSmIhCpRNqwaKGx81UMEpPKte2ImPjVVtFsKhKFCkBipJ3wfhwvUh2DkGc/LSaRG5hSG/m2RPGY8VlkrhJYqNGzdi48aNAORhwgCQm5uLPXv2hGxbUVGBLVu2AACqqqpw9OjRMVsnxdqQi5yNC70vIXVR4yWAIilJqypQ5PyfvDYGvhooksJL8tq5ls5BTM1xITPFThUoC0O+Zlb9XVuNG16BolDihZLC01CgGIaB08ZiJMkvhHxIDZQ1T7TkTjpZP25elGBjWaWj06qfs1maO4cwIzcNLocNw16RXqAtivK7SdIbj7GGKlBBEAWKQokUoxQeIKe9RrxJekX3EdKFZ9HiZvK3sOr6wsELImwsAzuX/F14kiShpXMQt8/KQZpTVi6HPDwyUuwJXhklGNqFFxlUgaJQ4oQ/hacdQDlt7LixMbC6DxQpgk3WC4E8U5FRKVDJ+7251j+CIY+AmRNlBQoA7cSzKMk+AmmsoQEUhRInSJ2KTcPGAJCDjmSvgSIXcqWI3KLKCK/YGCR4IVHCCyLsHKvUzln1czZDs8+BfHpumqJAUS8oa5Ls3atjDQ2gKJQ4EU6BctjYcTnKxYr4/WyS8/MmReTcOLAxIB5QM3JdigI1SDvxLInfgDY5fzdjDQ2gKJQ44a+B0v5ZOTgWniT3gQoeJmzVC7tipJmk1wFiY2Bnk78Lr6VzEDaWQVF2KtIcPgWKduJZEn8AleCFJAk0gNKhq6sLVVVVKC4uRlVVFbq7u0O2efvtt1FaWqr8LyUlBdu2bRv7xVIsgZGRJiArUMmewiMKFPG1sroCZdX1hUMI6sJL1vcBAM3XhzA1xwUbx8LlJDVQNICyIjxVoCKCBlA61NTUoLKyEk1NTaisrERNTU3INvfccw8aGxvR2NiIvXv3wuVy4f7770/AailWIFwX3ngoIldsDOykiNya7yfZR1J4RdHnA8X6/js53wcgp/Cm57oAwK9A0RSeJRGT/Hcz1lAbAwCbNm1CbW0t8vLyMHXqVJSXl2P79u3Yt28fAGDdunVYvnw5nn32Wd3XeO2117BixQq4XK4xWjXFaig1UHopvHFkY5AsNVDJOpJCVqAYVRF5cn5vZAuDISyekQMASKMKlKVRmi8s+ru2GpYKoDbs3IDGK41xfc3SglLDIcUNDQ3YunUrGhsbwfM8ysrKUF5ejo6ODhQWFgIACgoK0NHRYXicrVu34u/+7u/iuXRKkmEmhTeQ5N1HyTLKJdn9bLyCBG4cGGl2DnowMMJjhqJA0SJyK5Psyu1YY6kAKhHU1dVh9erVinK0cuXKkG0YhgHDaF8UAaC9vR3Hjh3DAw88MGrrpFgfQTRO4clF5MmpJBBCFCiLttcLSX4nLYgi7FzyG2k2X5c78KZPTAMApDr8RpoU60GHCUeGpQIoI6VorMnPz0d7ezsKCwvR3t6OvLw83W1fffVVrF69GnY7dda9kfGG6cJz2seDD1SyjHJJ7jtpXhgfRprEA2pGrhxAOWwsHByLQWqkaUmU302SBuxjzQ1fRL5s2TJs27YNbrcb/f392LFjBwBZiaqtrQUA1NbWYtWqVbqv8corr2Dt2rVjsl6KdRHCpfC45PeBSpZhwkoKL0nvpL2iz0iTTW4FqqVzEBzLYMqEVOUxl5PDUJKnsscr/hFIyfl9G2tu+ACqrKwMa9asQUlJCVasWIHFixcDAKqrq7Fr1y4UFxdj9+7dqK6uBgDU19dj/fr1yv7Nzc24dOkS7r777oSsn2IdvGZm4Y2bAIooUNZ8PyQFkbQpPKJAccltY9DcOYQpE1KVVCQg10FRBcqaKCOQkvTGY6yxVAovUWzcuBEbN24E4B8mnJubiz179oRsW1FRgS1btij/PWPGDLS1tY3JOinWRhnlwumNckl+I82QInKLKiPkb5GsKTyvKMk1UL5g3GvRQDUcFzsHMS0nsDPZ5eDoKBeLQm6IkvV3M9bc8AoUhRIvyEmHG8c+UIIogWX8QaJVlRH1spJRhRKChglb9XMOR/8wj6zUwNpQl5MqUFaFnJ6s2hxiNagCFQRRoCiUSCEBlD3MLDxJkgy7Oq0M73PItlm8vV6dWhQkCSyS6/P2CqL8ORMjzSS9oA17BaT4TFcJaQ5aA2VVSB0nTeGZgypQFEqcEMIoUA6OhSRZN+gwgyhJYFmolBFrKmpqxSYZ1RvBl8KzWfxzDscwLyLFHniZcdEaKMuS7P5pYw0NoCiUOOH16d92AydyAEltZSAPubW+AiWIkvJ5J+PFgPcZaZKOzqRWoGxBCpSToz5QFkWkAVRE0ACKQokTpD6INaiBApI7gBJEESwDS9fmiKIEUQKcpE4rCdMRvM9Ik3iKWfFzDockSZopPJfDRp3ILQpVoCKDBlAUSpzw+tQZPRy+O/FktjIQJAk2jlXepxUVKBIwOSzulq4HCQBJETnDJOcsPK8gv4/gFF46VaAsi9+ANvm+b4mABlA6dHV1oaqqCsXFxaiqqkJ3d7futn19fZgyZQq+9rWvjeEKKVZDEEVdE01gfKTwkqE7LNhqIdkUKH8zgrx+G8tYMlANx7DPskNLgRryCEnZHTne8Y9ASvBCkgQaQOlQU1ODyspKNDU1obKyEjU1NbrbPv3001i2bNkYro5iRbw+80M9lABKSN70hSBK4Bh/cbMVfaCCA6hku1CTu3/yXbKxbHIGUF75e+4M7sJzyv/t9ibv72C8QhWoyKABFIBNmzZh7ty5WLp0KdauXYvNmzdj+/btWLduHQBg3bp12LZtm+a+DQ0N6OjowP333z+GK6ZYEblzSv8nRWqgkjmFx/sUKNaXWrJid5iSwkvSGigSLNmUAIpRGhSSiRGvvOYUW2gXHgAM0jSe5SC/FTPKsiRJuPmnN+O5Q8+N9rIsi6V8oDbs3IDGK41xfc3SglLDIcUNDQ3YunUrGhsbwfM8ysrKUF5ejo6ODhQWFgIACgoK0NHREbKvKIr4xje+gZdffhm7d++O67opyQcviqYUqGQOoARRUtKUVk0tkZonq7ul68EHjQSycYwlU6XhIApUiA+UT4EaHBGAjDFfFsUA8j0zc9PR1t+GU9dP4Q9n/oC/WvxXo7quL2z/AjiGw89X/nxUjxMplgqgEkFdXR1Wr14Nl0seN7By5cqQbRiG0TQ+fO655/DQQw9hypQpo75OivXhBUkZvaEF6QpL+hoo32+BY615YQ+uIRKTTYEKGglk49iktDEYJgqURg0UADrOxYKQ4N3MTcfp66cBAAfbDo66OfDu87vh5t14QXrBUibElgqgjJSisSY/Px/t7e0oLCxEe3s78vLyQrZ5//33UVdXh+eeew4DAwPweDxIT083rJeijF94UVKGv2oxnorIAevW5pCAyZmkPlBaKTwrpkrDQYrIU0OcyOXLzhA107QcRHkyc9NxulMOoDrdnTjXfQ5zcuaMypqGvEO41HcJANDc04yZE2aOynGi4YavgVq2bBm2bdsGt9uN/v5+7NixA4CsRNXW1gIAamtrsWrVqpB9f/3rX+PixYtobm7G5s2b8fjjj9Pg6QaGFyVdE00AcPpsDJI5gOJVAZTVFahkNdJUUniKAsUkXRoSUKfwgmqgSAqP1kBZDn8RuXkFCgAOtB4YtTWd7Tqr/Ptg28FRO0403PABVFlZGdasWYOSkhKsWLECixcvBgBUV1dj165dKC4uxu7du1FdXQ0AqK+vx/r16xO5ZIpF4YXxXwMlBihQjCW7dZQaqKQtIvel8Cyu9IXD7dGpgSIKFDXTtByRGGme6jyFkvwSuOwuHGgbvQDqTOcZ5d9WC6AslcJLFBs3bsTGjRsB+IcJ5+bmYs+ePSHbVlRUYMuWLSGPP/HEE3jiiSdGc5kUi+MVJEU10GI82BjIw4StrUCFGGlacI1GKCk8ztqBajiGeVIDFdyFRxUoqxLJKJfT10/jzml3Iisla1QDKKJ0leSX4ODl0Q2gRvgR9I70Ii8ttGRHixtegaJQ4oUgikpwocV4qIGShwmrLuwWTC2ReqGkDaCCuvA4i37O4VB8oEJm4REFigZQVsOsAuX2unGx9yLm5c7DbUW3ofFKI0b4kVFZ05muM5iSOQX3zLgHDZcbwIuj9735l7p/wYLnFkAQzd3k0gAqiGeeeQZPPfVUopdBSUJ4VYu/FuNhFp48TJi017OWDE6IZZKSwrPgGo3wp/Dk9du55EzhjYSzMaBF5JZDNFkD1dTVBAmSEkB5BA8+7PhwVNZ0pvMM5ubOxZKiJXDzbnx09aNROQ4A1LfX49rQNZy8ftLU9jSAolDihDq40GI81EAJITVQ1ruw80EKVNLZGASl8DiLfs7h8NsYBF5mHBwLG8vQeXgWhPx2wrn3k7TavInzcNuU2wCMXiH5mc4zmJsjB1DA6NZBnbp+KqJj0ACKQokTvCgaDxPmxkEAJVm/Cy9kFl6Sfdz+FB5RoJikHCasZ6TJMAxcDk420qRYCrNdeCTQKM4pxpTMKZicMXlU6qA6hzrR5e7C3Ny5mDVhFnJSc0YtgBrmh3Gh+wIAGkBRKGNOuBSeYxwYaco2BvL74Cxa3BwcQFlxjUYoKbxkV6B4ARzLaI43SnPaqJHmKHKs4xi8gjfi/RQfqHAKVOdpTMuahjRHGgBgSdGSUQmgSAfe3Ny5YBgGS4qWjFoheVOnnJbkGI4GUBTKWBMuhceyDBwcm9wKlKpQ3qojRsiaiPN7ksVPIUXkdo5NUgVKDJmDR3A5OGqkOUoc6ziGRc8vwopfr0C3uzuifYkFSLiA/XTnaczLnaf8921Ft+Fs11l0ubsiX7AB6gAKAJZMXoLjV49j0DMY1+MAflXtwTkP4mjHUbi97rD70ABKh66uLlRVVaG4uBhVVVXo7tb+Il68eBH3338/br75ZsyfPx/Nzc1ju1CKZZAVKOOflMPGJrUCJYgAq4xysWZxc4iRZpLVQAlKDZRa6Uuu9wDIKbzg9B0hzWmjNgajxNGOowCAvRf24o5f3IFzXedM72umC0+SJJy+HhpAAfGvTzrTeQY21oYZ2TMAyEqXKIk43H44rscB5ACKAYPPLPwMBEnAkStHwu5DAygdampqUFlZiaamJlRWVuo6jD/++OP45je/iZMnT+LgwYOaI18oNwa8YGxjAPgCqCT2gQpQoCxaAyWG1EAlV8DqFTSMNJPSxkDUDaBcDo4aaY4SZzrPgGVYvPnZN3F18Cpuf/F27L+439S+pOHC6KbjysAV9Hv6MW+iP4CqmFwBBkzcC8nPdJ3BrAmzYOfsAIDFRbLR9WjUQZ3qPIXp2dOxfMZy08eIKYBiGOZvGYb5iGGY4wzDvMIwTEosr5coNm3ahLlz52Lp0qVYu3YtNm/ejO3bt2PdunUAgHXr1mHbtm0h+504cQI8z6OqqgoAkJ6ergwlptx4CGYUKC7ZFajAInIrXtgVBYpL0iLycWOkKcBp1/49pDmoAjVanOk6gxnZM1A1uwoffPEDTEiZgAd//aCptJdagZJ0giiS6lIrUBnODNySd0vc66CIhQEhLy0PM7JnjEod1Knrp3DTxJtQmFGIKZlTcOjyobD7RO1EzjBMEYAnAcyXJMnNMMyrAD4F4KVoX3PDzg1ovNIY7e6alBaUGg4pbmhowNatW9HY2Aie51FWVoby8nJ0dHSgsLAQAFBQUICOjo6Qfc+cOYPs7Gx84hOfwIULF3DfffehpqYGHKd910UZ33jDGGkCgNOe7DVQQTYGFgygyN2zPVmNNIOHCXPJmcIb8QpIsekoUE4brYEaJdRBR3FuMb53z/ew9rdr0dzTjFvybjHcV/1bEXSaYsgQYbUCBchpvG2ntkGSJDCM8XnQDKIkoqmzCffNvC/g8SVFS+KuQImSiFPXT2HZtGURHSPWFJ4NQCrDMDYALgCXY3y9Maeurg6rV6+Gy+VCZmYmVq5cGbINwzCaXwie51FXV4fNmzfj0KFDOH/+PF566aWQ7SRJQkffcFwKQb28iKt9w7p3B5TEIYQpIgeSX4EKHuUSThkRRQk/2n0GXYOesVgeAI1ZeEkWfPCChpFmhIFqU0c/fvV+c7yXFhFyCk9PgeLi2oXXeKkHrzW0xu31khVJkhTfJMK0rGkAgIu9F8PuHxBA6VxjTl8/DZfdhSmZUwIeX1K0BJ3uTpzrNl9zZURbXxvcvDtAgQLkQvLmnmZcHbwal+OQYw15h3DTxJuUY5gpio9agZIkqY1hmM0ALgJwA3hLkqS3grdjGObLAL4MANOmTTN8TSOlaKzJz89He3s7CgsL0d7erlnbNGXKFJSWlmLWrFkAgEcffRQffPABvvjFLwZsN8KL6Ogbhp1jkZPmiGldvW4vrvQNY0KaA3aDlnnK2OMNY2MAJH8RuSgGjnIJF5w0dw7iR7ubUJiVgjWLjX//8SLZi8jJ+mPx2/rt4TY8/845fOa26crfa6wZ9gpIdejVQMVXgXr5gxbsO30VnyyfEn7jcUzHYAcGPAMozi1WHpueNR0A0NLbEnZ/XpTAMIAk6d94nO48jbm5c8EygcHxrQW3AgCOXz2OOTlzon0LCsEdeARiqHmo7RAenvtwzMcB/GlJJYBSHcOIqBUohmEmAFgFYCaAyQDSGIb5bPB2kiS9IElShSRJFZMmTYr2cKPGsmXLsG3bNrjdbvT392PHjh0AgJUrV6K2thYAUFtbi1WrVoXsu3jxYvT09ODatWsAgL1792L+/Pkh2xG1KB6qkRjH16LEF7mI3EQXXrIV5agIVKDCd+F5fcpJz1DknjTRQn4jZHROOE8bq0HUJuKfZOcYpbDcLCO8HJy4vYlLk7kNUnhpTg6DHj5u57EhD698125ktIKOwoxC2Fk7WnrCB1CiKIVVboMtDAikU87MccygF0CVFZYBQFw78YIDqPLJ5WDAhE3jxZLCuw/ABUmSrkmS5AXwOwB3xPB6CaGsrAxr1qxBSUkJVqxYgcWL5Sr/6upq7Nq1C8XFxdi9ezeqq6sBAPX19Vi/fj0AgOM4bN68GZWVlVi4cCEkScKXvvSlkGOQ72E8zuOCEkDF/lqU+MKr6oP0cNpYjHiTN4AKroEKp4yQC3+Pe+wCqBAFKskCKNI1GIsCRVTORBZqh7MxkCT/uJdYGRwRktIrK95oBR0sw2JK5hRc7DNO4UmSBF6UlBsPre8ccevWCqAmuiYi1ZZqKlVohjOdZ+CyuzA5Y3LA42mONBSkF5hS1Mxy6vopZKdkIy9NzjRlOjNx08SbwharR53Cg5y6u51hGBfkFF4lgPoYXi9hbNy4ERs3bgQgDxMGgNzcXOzZsydk24qKCmzZskX576qqKhw9etTw9cldVjxmcpHvdHJdEm4MeEEKm1Z12Dj0jmEwEW8CRrmYKG5WAqgxVKBIAOLwNXMkWwDlVRQov41B5AqUvP3QiABkxHd9Zhn2igZdePLfZmCE103zRQJVoGTOdJ6Bk3NiaubUgMenZ08PqwyRn4nDxgHgNX/bZ7vOykOEJ4YGUAzDyMeJU2BzpuuM4kAezNTMqbjUdykuxwFkC4N5ufMCjrWkaAneOPuG4X5RK1CSJB0A8BqAwwCO+V7rhWhfbzyjBD3xCKBEmsKzKoJqzIkeyV5ELgjBXXjG74WchHvdY1hE7ltSstZABRtpRuO3ZQUFaoTXV6BcDvnePV4DhQdHBHiT0Ooh3pzpPIM5OXPAsYGf+/Ss8IGN4uBvkPomQ4RJqiuYaVnT4hdABVkYBB8nXkoX4LcwULOkaEnYQvVYFChIkvQdAN+J5TWsBlGg4omoKFDxe60kuybcEHhFMawC5bSx8PDJ274tSBI4Rt2FZ2EFKklTeCQQ8NsYsPBGGUAl0ipAHuWiXwMFIG4DhYc8vFL4HC6NPp4503lGM7iZljUNl/svwyt4FVPKYIIDKK3fNrEw0AtspmdNj4sVkUfw4EL3BXzqlk9pPj81cyp2nt0ZF8uEvpE+XO6/rBlAhYM6kY8BUjwVKJrCsySiKEGSELaI3GlLbh8oXpTAceZroPgEFJErClSS2hgIQbPwolKgfB9CIgf2yjVQerPw4qxA+QLFSFOd4wlBFHC266xmcDM9azpESURbf5v+/lL42sFT10+hKKMI6Y50zdeYljUNVwevmpojZ8SF7gsQJMFQgRr0DqJ7OLJZf1roqWqL8hfBwRl3zdMAagyIqwJFU3iWRFENxrmNgRBhFx7xieoZGssUXrIrUIE2BmRocyS/edKFlygFihdE8KJkUETuU6DitL4hX6CYjIaj8aKltwVe0asdQGX7rAwM6qAU/zSD383RjqOGZpzEMiHW+iS9DjzC1Cy5xutSb+x1UMEdeAQH51CsGfSgAdQY4O/Ci5+NQfJegscnSt2KqVl4yfnXkyRJTpEwkXTh+RSoRHTh+RSoePzuxhIyb5BRfc4AIiqSVmqgEqRADfuOH1aBisP6RFHCkM+u4UbuxDMKOoiZplF9Eq80X2in8AY9gzh29RiWTNZPbZkJ1MxAUoVqPys1kZiDhuPU9VOwsTbMnjA75Lnfrfmd4b40gBoDpDjWLdEaKGtCLm7h6i+SuYicnE9JoTxnooicpFSGPIKiiow2Si2HXb+Ww8rwQmAdjy2KVGSia6CGfQGNrgLlC6DioUAN84JyPkzWm5N4YCaAMgo4wqXwGtobIEoibptym+5rmAnUzNB4pRGTMyYjJzVH83nSZRiPTrxTnacwe8JszdqwYAuFYGgApUNXVxeqqqpQXFyMqqoqdHdr51o5jkNpaSlKS0s1x8AA8VWgyPmBpvCsBTnZ2MMME07mWXh8UJoykhooAGNm3yAEKVDJlsLjRSnge6QoUBF0mZHv2ECiFCgSQOnOwpMfj0cNlPo9WnE241jR1NmELGcWJrlCDatTbCnIT8s3TuEFFZEH/24OtMqDgm8r0g+gijKKwDJszMrQwbaDhkXc+en5sLP2uKXw9LoKw0EDKB1qampQWVmJpqYmVFZWoqamRnO71NRUNDY2orGxEa+//rrmNhJGoQsv9peixBGixIRXoDgIopR0F3UAINdvlnThReADBQC9Y1RITtZkT1oncjFQgfL9W4gihRevIu1IIQaZ+j5QPgUqDl14Q6rXuJEDqDNdZ1CcW6zblRbOYoAPUwN1oO0AZmbPxKQ0/Ykids6OooyimBSonuEeNHU1YfHkxbrbmDUHDQcv8mjqbKIBVCxs2rQJc+fOxdKlS7F27Vps3rwZ27dvx7p16wAA69atw7Zt26J+/Xj5QEmSRFN4FkW5aJsoIgeQlGk8Pri93owCpXp+rOqgxGAFKsl+LF4x0JCV872PaBSoeNkEREq4FF6KnQXDxKdGS+11dSN7QRn5JgFyfZKRMiQqKTyfAa0UGkAZpe8IsXo01V+W/biNAihynFgVqAvdF+AVvVEHUDH5QMWbDTs3xMVDQk1pQanhkOKGhgZs3boVjY2N4HkeZWVlKC8vR0dHBwoLCwEABQUF6Ojo0Nx/eHgYFRUVsNlsqK6uxqOPPhqyDTmhx3ojrN6fpvCsBa/UQIWfhQfIAVQ8HJjHEkWBCurCM/JiUddIjZWVgTqYZZjkS+EJQTVQdqJARVIDJSRWgSL1bnoBFMMwSHPY4mL0qa7zulEVqGF+GC09LXii5AndbaZnTccfz/xR9/fKh6Tw/L/dy/2X0drXapi+U46TPR3vX3o/wnfghwzwrZhcYbjd1KypqGupi/o4APDRtY8A6BuDhsNSAVQiqKurw+rVq+FyuQBAs46JYRjdC0RLSwuKiopw/vx53HvvvVi4cCFmzw6s5o+XD5S6hurGPE1YF3Lna8ZIEyAXGG1DO6uipUABcmCv97Y9qgta9xhZGYiSBJaRf7ccE7mHUqLxioFDqUkwFUlw4HciT5QC5evCs+nfUKQ5uYD0W7SoVawb1QfqXNc5SJAMFahpWdPg5t24NnRNmfmmRlFuiZGm6vtGhuqaCaCmZU7Dq32vQhCFEEd0Mxy6fAjFOcWYkDoh7HHa+tuiPg4g13XZWBtK8kui2t9SAZSRUjTW5Ofno729HYWFhWhvb0deXugXDgCKiooAALNmzcLy5ctx5MiRkAAqXj5Q6loOqkBZC3KRDlsDpQRQyXeiD36PyoVdFHVPYHyCaqACBvEm2W9FEKUAPzG7Tlu5EYoPVIKKyN0eYwUKwKgoUDdqABXONwnwezRd7L2oGUAF23+ofzck0CgtKA27lunZ08GLPK4MXEFRZpHp90A4dPkQlk1fFna7qVlTYzoOIKclS/JLkGpPjWr/G74GatmyZdi2bRvcbjf6+/uxY8cOALISVVtbCwCora3FqlWrQvbt7u7GyMgIAOD69evYv38/5s+fH7Kdv24pjgpUcl0Txj3kxG3GiRxIznZrckLlghQoI4UnsAZqbBQoITiASrK0Di9IAX5iJJiKxOMo4QqUL4AzSlO7nFxcbBbUClSyWVbECxJA6fkmAeE9moy68CIJNEigFk0heXt/O1r7WsPWPwF+y4RorQwEUcChy4dMqWp63PABVFlZGdasWYOSkhKsWLECixfLf7jq6mrs2rULxcXF2L17N6qrqwEA9fX1WL9+PQDg5MmTqKioQElJCe655x5UV1drBlAk2IlrDVRsL0WJM6aNNLkkLiIX9BQo/W8jCSxz0hxjVgMlu6X7vKqY5FOgeFHUtDEwGxzwgqicKxLdhadnYwDIZprxKCKnCpQcQBWkFyDTmam7TTiPJiE4hef770gDDeU4UZhpHros1z+ZCaCIF1S0Besnr5/EgGfAVGG8HpZK4SWKjRs3YuPGjQD8w4Rzc3OxZ8+ekG0rKiqwZcsWAMAdd9yBY8eOhX19EcR6wLjgNuzrBChQyXVRGO8QI81wo1xIW3cyp/CCa6CMFB5iCpntso9ZF54gyjVQgFzwnnw2BkFGmmxoTYoRanUzHjVG0eDvwjOogXJwuD4QuyqpTgPeqEXkZ7qMO/AAYELKBKQ70nUDm+AicvK7iTTQiMUl/FDbIXAMh1sLjUeoALGPczHjaxWOG16BGgvUsU4s5/LAGqgYFkSJO/7gIkwXHiffkSejAhWcwuNM1OZ4BXksSXaqfQxroETFvdvGhveqshq8KCnrB6AMb+ZNtuiPeP3bxaPGKBpIAOU0qIFyOeNUA6X2gboBbQwkScLp66dRnKOfvgPkporpWdN1vZP0FKhIA40MZwYmpEyIKoV36PIhLMhbAJfdFXbbLGcWMhwZUStQB9oOIDsl2zDtGQ6qQAVBFKh4olaOREkCh+gUKIGm8CwLqU8xM0wYSNIAKnjIrYkaKK8gu2pnuxy42j88+ouE7NZP1siyTNLNwuN9s/AIdjayInKiQKXY2YQpUCNhZuEBsgIVly48VRDm4ZPrbx0P2vrbcG3omukC73A1UMoMSd9/H2w7GHGgEc5zSgtJknDo8iF84qZPmNqeYRhMzZoadQ3UgbYDuK3oNrBM9DoSVaDGAEkCGF/QFEvqjVwIGCTfRWG8E7GRppCYC1ssKAEUE1wDpR8MymqQrECNXQ2U6F9jEtoYBBeRk8/ZbH0PCc4nuBwY9PAJSfcPewUwjP9irIUrTl14gUXkyXdjEitmfZMAufU/XA0UUQ0VBartAJYULYko0JieNT1iBep893l0ubuwuCh8/RMhWtPOAc8Ajl89HlP6DqAB1JggSv6ahnik8DiWoSk8i0FO3OGMNBUfKG/ynehjVaDG0kgzoAsvyT5qPsTGIDIjTaL+ZLscECV/QfdYMuwVkGLjDOs905wcBkdiD/AGPYJS83Yj1kAdunwoIouBLncXBjwDIc8pw4RVMyQHPYM4dvVYxIHGtKxpaOlpiehvG0kBOWFqZnQKVP3l+rCDkc1AA6gxQJT8F51YFSgGDFiWpvCsBjlxh+3CS2IbA3JHSi7uZrrweEGE3VdEPjDCj0mXlBgSQCXXZ82rugiByI00iQdUTpps1JqIOqhhr2iYvgNkBUqUYm+oGBrhkZkqv9cbsQuv/nI9FuYtRIotJey2ai+oYMjvRD0Lr6G9QQ40IgygpmdNR7+nH70jvab3OdR2CCm2FCzIW2B6n2lZ03B18CqG+cjKA0hdl9HAYjPQAGqUkSS58y4uCpQEsKycwqNdeNYiOLjQg9zdJXMXHhkmTC7y4XygbByLbJd8gesdg048OQBRG2mO+iHjCi8E1UBFaKTpUSlQQGI68Ya9gqGJJiDXQAGxz8Mb9AjI8gVQydYwECuSJKH+cr1p1cbIYiB4mHCnuwPf2fcdMGAiDjSisTI4dPkQSgtKYefMT2ggVgatfa0Rre9A2wHMnjAbE10TI9ovGBpA6dDV1YWqqioUFxejqqoK3d3dmttxHIfS0lKUlpZqjoEhcY5/7EUMCpQogWXk+V40fpKRPW9M+uOIIoY8PIY8PDy8iGOtvRGZExq/trkuPGcci8glSYqoMPta/0hMLf3BnYZmlBGPINdAkQvcWKTx1ClzlkFS2hioA3H/5xxpDVQCFSheDBtAuZxyD1OsZppDHh7ZJIAy8RlJkoRr/SMxHdMqnOs+h+7hbtN1Q8RMU0uB8g8TZuFmD+GbdQ/gQOsBvLjyRUxKmxTRuhTTTpN1ULzIo6G9AUsmRxeoRVoHZXYwcjhoAKVDTU0NKisr0dTUhMrKStTU1Ghul5qaisbGRjQ2NuL1118PeV4Mav2OJfARJDmAYhmawgPkE+GZjn50DZrzkrnU5cbZqwM4e3UAV/tH8PGfvIeXP4i81VYLpQsvTArP6TMWjIcC9edznfjYv+5Fe6877La9Q17c+exe7PzoStTH89d5ye/RTG2OnMJjFTWkdwzcyNU+SjaWTbrCYj5oFp6dC58qVUPSwxOIApWQFJ6g3CzokeELoGJVJYdGBGT53qvHhNy47/Q13FGzB9cHrBdESRGe2SMpIAeAwvRC2FibZmDj5kcwwpzBT498G1ed30WWYxLqv1yPz9/6+YjWBBinCrV4o+kNDHmHIiogB6Lzgmrta8Xl/su4vej2iI6lBbUxALBp0ybU1tYiLy8PU6dORXl5ObZv3459+/YBANatW4fly5fj2Wefjfi1yTmPi4cCJcl31DSFJyNBvqhE0p2U5rBhUoYTQpcDHMvgapzuRM2m8IiRJvHJiYWr/cMQRAkdfSMozDIesXB9cAQeXkRL51DUxyNxiNYsPD14QYLdxigKwVgoUOpRLuw4KCLnFBuDyHygSAA1aNEU3pQJstdPa/cQFhRlRX2sQQ/vT+GZ+GNf6RuGV5DQM+TFxHRn1MeNJ17Biw8v1yPXlYuZEexXf7keKbYU3DLpFlPbcyyHKZlT0NTVhMPth/HhlQ/xYceHONh2EPWXD8ObMoLfngYy+I/j6cX/hvmTborq/UxKmwQn5wybwhMlETXv1eDpt5/GvNx5eKj4oYiOMyVzCoDIFCjF1yoOCpSlAqgNOzeg8UpjXF+ztKDUcEhxQ0MDtm7disbGRvA8j7KyMpSXl6OjowOFhYUAgIKCAnR0dGjuPzw8jIqKCthsNlRXV+PRRx8NeF4KUqBiq4GSwLKyIQKNn1Qjckx+qIIoIc3JITPVjhQ7J/vQxGlWmL+IPHwKj2GAkTgEUF6f542ZgbGkDiaWeXTBCpSZGiivryCa1ECNSQAlqWugYrtpSQShTuSRFZF7VONzgMQpUOGKyKdPlAOo5hiCesCnQKXKlzIzKh1JcVqp4NzO2cGxNlwf6owogDp0+RBuLbg1orqh6VnT8dqJ1/DaidcAAKm2VJQVluHBGY/j/ZO5+N/HP4svvdQMlo0+uGQZVrYY0DHtBIDrQ9fxud9/DjvP7sTaBWvxs0d+hgxnRkTHSbGlIC8tL6JOvA9aP4CDc6AkvySiY2lhqQAqEdTV1WH16tVwueQfs1YdE8Mwuu24LS0tKCoqwvnz53Hvvfdi4cKFmD17tvJ8sAIVUxeeKLeES0i+i8JoQORuM/GTJEm+GWn+v2OaMz6zuAB/cBFOgWIYBk4bi+E4pPBGBPMDY0kdTCxu4OQ7ZwtRoMKk8DhGSeF1D41+Ck8Q5RsNeY1s0hUW86KomGcCqmHCEReR+2qgEqJAichNdxhuk5liR26aA83XB6M+jiRJAQqUmaCIfD5WM7Od6MrFua7zaOlpUWqIjBBEAYfbD+OLt34xouN85+7vYM+FPViUvwgl+SWYkzMHHMvh1fpLOPrRUUyfMA1Ac8zdq8TKgCBJEs50nsHeC3uxt3kvdp/fDbfXjecffh5fLv9y1CPOIvWCOtB2ALcW3AqnLXb10VIBlJFSNNbk5+ejvb0dhYWFaG9vR15enuZ2RUVFAIBZs2Zh+fLlOHLkSFAAFXjRibkLj5FNNGkKD0ohmBl/HFGSAy71nb1rVBSo8CeBFDsXlxSe13cBMKMwkG1iUYCChwnbTNRAyaNcWGQ4bWCZMerCUxlRcklYRC6IkjK+BVDNwoswgEp0DZTRIGHC9FwXmjujD6BGeHlwcrrTDpYxp9IRmwcrKVAAkJs6EedwHjvO7MDXlnwt7PYnr5/EoHfQdP0T4Z6Z9+CemfeEPE5+J44Iuz71mJ41Hb8/9Xts3LMRDe0NONx+GNeGrgGQU2+r5q3Chts3mPKvMmJq5lSc7jxtatu9F/ai/nI9vlT2pZiOSbjhi8iXLVuGbdu2we12o7+/Hzt27AAgK1G1tbUAgNraWqxatSpk3+7uboyMyDU0169fx/79+zF//vyAbYJTeLH6QLEs5C68qF9l/KCk8Ex8poKG0WVanGZxAWoFKvxPKsUWpwCKKFAmFAayTSwKULCRphkFyuvrKGNZuRNvrFJ4rMotPdmcyL2CBLtmCs9kDZTiA+WrgYrTTUIkDPMCUh3hA6gZE9NiqssjCnKak4ONYyNToCwWQLnsqXDZU/H66dBmJC1IAXmkhdd6kN+xI2iYcLTcPOlmdA9349n9z6J9oB2PzH0Ezz/8PJq+3oSLGy7ipUdfijl4AvwKlNG19crAFXzmd59B5S8rUZhRiK8u/mrMxwUspkAlgrKyMqxZswYlJSXIy8vD4sXyl7G6uhqPPfYYXnzxRUyfPh2vvvoqAKC+vh7PP/88tmzZgpMnT+IrX/kKWJaFKIqorq4OCaCUFB4THydylmEggtZAAZGl8IIv/gCQ5rDFzSPHb2NgRoFi4+IOTS4WkShQsShAwcOE/U7kxqNciI9RtsuBnjFQoARRUupvZB+o5PqxCEHDhM0ofWpIh2dmih0ME7vPUjSYMdIEgBm5afjd4TZTRedakBsDl8MGB8fCa0aBEkgNlPW+F7muidjXvA+9w73ISjEurK+/XI9MZybm5s6Ny7H1hglHy9eXfB33z74fxTnFSLUbN7nEwtTMqRjwDKB3pBdZzix0ubvQ1t+Gi70XcbH3Is53n8fPD/8cw/ww/mnZP6F6aXXc1nPDB1AAsHHjRmzcuBGAf5hwbm4u9uzZE7JtRUUFtmzZAgC44447cOzYMcPXJlExwzBgmei75yRJkhUohgHD0BQeEJkCxWsFUE4O7b3xGXCbiBQeadmORIGKRQHSVaAMLkS8IClt+LICNTY1UJzKq8qbZGNzvDpGmmYv+ERZcdpZpDlsCevCc5pM4QFAS+cQ5hVEVkAM+Gv70hwcbBxjqlNRKSK3WA0UINdBecVLePPcm3jslscMtz10+RDKC8tjGoarhvy+7azc6BKrcuu0ObEof1E8lmYI8YKa/9P56HR3wiMEnmPsrB33zboPP3rwR3ELNgk0gBplyE+UZXymflF+JyVJTtuxLMCINIUH+D8DM1KzoKEQuRy2+NVAaQRoejjtXFyKyKNRoGLqwgsKEk114QmioqZku+ymPbtiQRAlkBIiNgmHCQshNgbRGWk6ONZX5zf2CtSIN7yRJiArUADQ3DkYVQBF3pvLaYONNalAWbALj5DpzMRE10S8fvp1wwDKI3jwYceH2HDbhrgdW7lB4hjYkij1ffeMu/H/bv5/cNldKEwvxOSMyZicMRnTsqZhWtY05Kfnxy3IDIYGUEEQBSpeiCoFivEVgEcDSUOwvtehCpRagQq/rWYKzzfMNB6Q8RtmOklSbGxci8jN1HGROphhrxh1ukT9HQT8n6U33DBh33YTXA6cvxZ9wbBZ+CAFKpk6ViVJClg/oKqBiiCFZ/fVncl1fmOrQAmiBI9gPoUHAC1RFpITdS3NwcHOMaaCTKvWQAGyx98jcx/BtlPb4BW8uvYERzuOwiN4Ii4gN0K5CfRlS8wEUEPeITg5Jzg28vNJvMhLy8Nrj72WkGPf8EXkow05d8sKFBN17ZKoDqAQWy3VeMFfA2VegeKY0VGgglUDI+LWhUcUKBMpGrVXVLR1UIqKx0VQA6VSoLJS7WNiYyCq7CpsLGPaP8kK+NMo/u8SwzDgWHPpKUAOEEgnlcvBmfIJiyekiN1MkJ7lsmOCyx61FxRRoNKcNl8KLxIfKGt+L1bOXYme4R7sv7Rfd5v6y/UA4ldADgROzTCjQAmigDk/noMf/PkHcVtDskEDqFEmIPBhovdvUlygGdqFR1DXQIVT5ARfAT6rVqAcHAY9fFzUPK8ghTXRJMhF5PGrgRowcYEcUAVZ0dZBRVMD5RX9NVDZLjv6h/m4zR/UgxdF1Sy85FKgeFUaRY2NNRccAL4AylcInOaIX6epWUiDREqYUS6E6blpUXtB+RUoG+wca0pVsqqNAaFqdhWcnFO3G69vpA+/+eg3mOiaqIxMiQfqFD1n4vvW1NWE9oF2012DsfDzhp/jxcMvjvpxIoUGUKMMOXczTGwncyUQY/0pvBs9jad+9+E6rXhRCqlPcjltkCTAHYdgRhDFCBWoeNZAmVCgVBfRaFWgYBXPTHeYbKTpq4HymR32DY/uBV09yiXZbAx4RYEKPDVHoqSpAyiXM35eZ2YhNwdm08QzY7Ay8NdAcbCzbEQpPKsGUOmOdFTOqsTrp18POcfvvbAXC/97Id5teRf/eNc/Rm0+qYWgusaY+d18eOVDAHIx+4BnIG7r0OLZ/c/imXeesdw1jwZQo4woSUr9E8NEbz+gVrLIH81aX6WxR/1jCpfdEDQCqDSfT008upS8QS7nRsTdB8pkDRS5qEarQPmtGvz1RerHNfdRKXPEjXy0O/EEKYkDKCFwXA7BxrER2Bj4O+Di6bZvlkgDqOm5LlzudUf1myD1XWkOXwrPRJBJVCqrOZGrWTl3Jc51n8Pfvvm3+Pf3/x0vH30ZX//T11H5y0o4OSf2f2E//ub2v4nrMQVRVE0ZYMPelJKxa7zI48+X/hzXtagZ8AzgXPc5tPa14kLPhVE7TjTQAEqHrq4uVFVVobi4GFVVVeju7tbc7uLFi7j//vtx8803Y/78+Whubg54XpLk+icgTgqULxAjr30jo3774T5XrQDK5ZB7KOLRpSQkIIUXaQ3U5KwUAEBvlJ14pNuRvE1zs/BEv40BmYc3yl5QghAUQCXRD4XU5dg1Unimh2YL6hReIhQoXwrPRBE5IBeSS5I8VDhShkZ4MIx8LBvHGjY0EKxeAwUAq29ejbm5c/HTQz/FN976Bj73+8/hJ4d+gq8v+Toa/7IRt0+5Pe7H5FUjkGwsAyHM59PY0Yg5OXNgY23Y17wv7ushHL96XPn3aB4nGmgApUNNTQ0qKyvR1NSEyspK1NTUaG73+OOP45vf/CZOnjyJgwcPhox8Id5NgBxIRa1A+c6dLCt3agCxuZqPC1Rv30wAFawQpTnjqUCJpiwMACDFER8bA49vmLBZBWpytmweN5YKFHEiB/wpvFjm8ZkhYJhwktkY+OvMglJ4nPn3EVhEngAFyldj5DSpQM2YKHfiXbgeeQA16BGQ5rCBYRjYWXNdeFa2MSDkpeXh9NdOw/OPHnR9qwunv3Ya5548hx+v+DFcdteoHFPdfGGmBqrxSiPunHonFk9ePKqBDUkVOjkn3ml5Z9SOEw00gAKwadMmzJ07F0uXLsXatWuxefNmbN++HevWrQMArFu3Dtu2bQvZ78SJE+B5HlVVVQCA9PR0ZSgxQZSgKEYMw0CMMvGmqUBF9Urjh0hSeLykkcJzxk+BUhtGhiPFxsHDizGPSoi0BmpShhN2jolaAfKPwzHXhecf4CyfZshstli8qMytUz1MmEmqWXjkbxpcT2fW4wiQAwRFgfLVQI3lzdaw7/toZhYeAMxQzDQjLyQf8vBw+VLxNs6cSmf1Gig1DMNgQuoEzM2di1kTZpnaZ8g7hCffeDKiAbtAYJ1oOPuPjoEOXBm4gtKCUiyfsXxU66COdhxFpjMTD899GO80j24A1dbXhj3nQw209bCUD9SGnRuUvGq8KC0oNRxS3NDQgK1bt6KxsRE8z6OsrAzl5eXo6OhAYWEhAKCgoAAdHR0h+545cwbZ2dn4xCc+gQsXLuC+++5DTU0NOM5/4pCCFKhoz+XKGA2awlMwm8IjF3K9FF48fHK0Xl8PUhsywoum5oXp4Z+FZ0KBGhGQ5rQhK9URQxee/P9mZ+EFp6OyfSm87sHRVaD4CO+krYSW4StAFCizs/BEOG1+BYoXJYzw5owt48GwYmNg7v482+VAVqo9qqHCA77vNSA7tg97w/8WrOwDFQ/ebXkX/3Xwv/Bhx4d4e93bpk0kg5svjH43H3bIqlBJfgm8ohf/+t6/Yv/F/XhgzgOxv4Egjl49ikX5i7B8+nL87uTv0NzTjBnZM+J+HAD4/rvfx4tHXkT333cj3ZEedvsbXoGqq6vD6tWr4XK5kJmZiZUrV4ZsQ4rAg+F5HnV1ddi8eTMOHTqE8+fP46WXXgrYRgyqgYr2TpCcOxlGlcK7wTUo9UdpFECJkhxEhSpQ8gUlHj45XlW3WTjIhSXWOigSQI3wYtjUxZCHR5qDQ7Yr+nEq5AJOPkZFgdJRRohvEflcMnyz2Ua9Bkp1IWCTzEhTbyg1xzKm6nuAYBsD33d8DOug/DVQ5gO2GbmuqDrxhkb8CpSdY015ZSkpPD55vheRcKxDHi/2bsu7+NEHPzK9nxB042Gk3BKho6SgBHdOvXPU6qAkScLRjqNYlLcIy2csB4BRVaGOXDkCXuTxQesHpra3lAJlpBSNNfn5+Whvb0dhYSHa29tDapsAYMqUKSgtLcWsWbK0+uijj+KDDz7AF7/4RWUb0oUHwOcDFd16REnyqU9UgSKoA0iji6TeXX1aghUocqceLR5V4DLkFZCpE8CJooQhjwCXw4YJLnv0CpSvtoh8n80qUCQY4FgGmSl29I52F54oKVYLyVYD5bcxCPwu2Vk2bFEvwaNWoHzqzOAIj5w0RxxXqk+kXXiAXAfV0KLdqGPEoIdXfsdmrR6SoQYqFo5ePYrJGZOxePJifHvPt/HA7AdwS94tYfdTn8NsYYxbP+z4ENOypiEnNQcAsKRoCfa17IvL+tVc7L2IvpE+LMpfhFvybkFOag72tezDutJ1cT8WL/I42nEUgByk3TfrvrD73PAK1LJly7Bt2za43W709/djx44dAICVK1eitrYWAFBbW4tVq1aF7Lt48WL09PTg2rVrAIC9e/di/vz5AdvIXXh+U79o/ZtEyV/XQS5gN3wApXr/RudCrTEuAJQ713jUQHlFKUQ10MOvQMV2AlcPQzXqxCM+V2lOTk7hRakAqbt0AL9Dtl6AQi5Q6tqwbJd91BUoXpQUI8pkS+GRACD4uxqRE7kQaKQJJEaBSo0ggJqem4bLPW7F5NIsQx4BLqdfgTJXA2VtI81YOdZxDIvyF+GFj7+ATGcmHt/2OLxC+N+c+sYj3CiXxiuNKMkvUf57+fTlONQW/zooEtAsyl8ElmFx9/S7R02BOtN5BsO8PFz+3Yvvmtrnhg+gysrKsGbNGpSUlGDFihVYvFi2xq+ursauXbtQXFyM3bt3o7q6GgBQX1+P9evXAwA4jsPmzZtRWVmJhQsXQpIkfOlLXwp4fVGSQE6FRDmK5nwuiv5AjLzeDZ/CU/3bWIHyFT8H1QKQ2gkzTt7hUHuohIMU18YrhQcYd+KR51wOG7Jd0StAslWD1oVdJ4WnOBv7P/fs1OgVMLOIagUqyYrIFQUqKBi3c0wEReR+HygSXIylG7lfgTJ/eZmR64IoAa3d7oiONTjCK79j06NchPFbA+UVvDh5/SQW5i1EXloefvbIz3C4/TD++d1/DruvoLrxMOr6dHvdOHX9FEoLSpXHls9YDkESsP+i/viZaCAB1IK8BQCAu6ffjQs9FyIukDcDSUtWzarCgdYDSjBlxA0fQAHAxo0bcebMGbz33nuYO3cuACA3Nxd79uxBU1MTdu/ejZwcWaqsqKjAli1blH2rqqpw9OhRHDt2DC+99BIcjkCZPLCIPHr7AdkOQf43TeHJmK2B0lOgnDYWLGPORykcXo3gQg8lhReHACpdlaLRQxl34eTkACbaLjxJCpglCPj8YnSUEa2OsmxX9AqYWYKLyJPJB0rPSDMSQ1C1jYGiQMXhO26W4Qhm4RGIlUGknXhDHkGp87KxbIAqq4UkSUnhAxUtZzrPwCN4sDBvIQDZT+ozCz+Df3nvX9A30me4Lx9046EXjB6/ehyiJAYEUHdMvQN21h73OqijV49i1oRZyHBmAMCo1kE1XmmEk3PiK+VfwYgwgkNth8LuE1MAxTBMNsMwrzEMc4phmJMMw3wsltcbjwQWkfsfixRBM4U3/k4AkUAUOJZhDG0MeJ0AimGYuM0KE0TJdBG5M14pPEFCls9bycjLigRXRIEa8ggRp0qAwDtUgqEC5XvcofpcYlHAzCAqf2t/3VUy1kCF2BiYTE8BQaNcHIlQoOR1Ok3OwgNkM00gci+owRFe6aZ12MIX2vOipJx/wwVbycixq3IB+aL8RcpjfzH/L8CLPE5fP224b4CDv0EKj3TgqQOoNEcalhQtwdvNb8ey/BCOdhwNeC8L8xdiQsqEUfGDarzSiAV5C3DPzHsAyEX44YhVgfpPADslSboJQAmAkzG+XsJ55pln8NRTT8Xt9URJAhOHwEdtyOlP4d3YkI8xnGcJUSC0FCKXk4vL3TkvRGCkGbciclGxBjCq4xpSjbvI8nkx9UahAqmVHYLR1HZeS4GKQQEzu0YAIDFb0hWRa6Q9ATmFF5EC5Qte0uPodWaWEa8Ap42NaE7bBJcdGSm2iBQoSZKbI0g3rc3ELDz1+JbxWAN1rOMYOIbDTRNvUh6bmytnVU53hgmgVNMUjG48Gq80IsOREWIlsHzGctRfrkf/SH8M78CP2+vGmc4zWJTnD6BYhsWy6cvirnRJkoTGK40oLShFTmoOFuYtNFUHFXUAxTBMFoBlAF70LcAjSVJPtK83XpHipEDJNVDyv2kKT8Z0ACXKwSerEeDES4HixciMNAG/4WC0eHh/AGXUSTioGrg6gYxTiaIOSRT9QTyBY9nwXXiqYCDL5UCv2ztqQU2wk7dsY5A8aq3fxiD0czZrYxDgAxVHt32zDHuFiD2nGIbBjNw0NEdgZeARRPCipChQZmbhqQOo8VgDdfTqUcybOA9Om1N5bHbObLAMizOdZwz3DRjlYhCwN15pRElBSYi/1N3T74YgCTjQdiDGdyFz4toJiJIYoECR45DZePGifaAd14auKarasunLsP/ifvCi8bUhFgVqJoBrAP6HYZgjDMNsYRgmLYbXG3dIkuQrIg9UoKLxpRFV9SdWSOF1D3pwfWAkYccH5BQewzBhO0bUs9GCSXPa4tKhxBscIxilCy9GBcoriMhOlRUlIy8rorClOWzK9tEEULoKlM5FS7MLL9UOSQL6TKhQw14BT75yBG095guLg9VG8v/JIkL5FahgGwNzRpqiKIEXJY0uvLFN4UVSQE6YMTENzdfNK1D+77WqCy/MZ6QOmqw8TDhaSAeeGgfnwMzsmWEVKFE1AolltFPzoiTiw44PUZpfGvLcwny57urU9VNRrj4QdQeemtGogzrSfgQAAgKoQe+g8rgesQRQNgBlAP5bkqRbAQwCqA7eiGGYLzMMU88wTD1p979RIPGNokDFMMMuwMaAvH6sC4yB7iEPugZH188nHJIkfxbhHN7Vuf1gXA4uLrPCeFGMwMaAFJHHWgMlKgN6zShQaU5OUayiMdOMvAYq1BRSKXo3cUE/09GP1z+8jPrmLvNr9AUg6lEu6rVYHeUzC0rhcSY9jkiAQAIoYiUwMMZF5NG4nudlOCM6p/iVVfM+UCPe8ZvC6xvpQ0tvi1JArmZu7lxTCpTaB0rrRv9C9wUMeAZQUlAS8lx+Wj4yHBlhj2OWox1H4bK7QkbYLMpfhBRbCo5cMQ5uIoF04JFg7a5pdwFA2FqrWAKoVgCtkiQRve41yAFVAJIkvSBJUoUkSRWTJk2K4XDJB/kCMkoXHnk8steRJCkghRdLKjBeSFJ0Slq8YRhfEbnBWtQnhmDipkBpqDN6xKMLT5KkgCJyYwXKF0A5bMr20dQhqX1iCEYjRpRRLqrPJcVhPngkKtlIBEqBPwAJ7HxNkvhJt4hcdtk2bxJJCvdZloHLwcXFbd8sw17B9Bw8NWkODoMe3vQN5qBKWQX8n5HR/h7B/5sbb114x68eBwDNAGpe7jyc6TwDUdL/IYjBo1w0Ph8SaKgLyAkMw5gK1MzyYceHWJC3ABwb+F3iWA6zJ8zG2a6zcTkOADR2NGL2hNnIdGYCAAozClGcUxy2kDzqAEqSpCsALjEMM8/3UCWAE9G+ntXo6upCVVUViouLUVVVhe5ufZfcvr4+TJkyBV/72tcCHidfP3/tUnQKlCTJ6Sp/EXniR7mIvqAukUi+9KiZGqjgCz/B5TtpxwqvKsAMR2ocFChy8k9zcHBwbBgFSn7OpVKgeqNI4Wm5rZvxgbKrurFSbObH2JAgL5JUC0nh+RWowMetjl4KT76gmRlTIn+uTpUC5HLY4uK2b5ZoU3gupw2S5Dd+DYe6tg/wp4qNAiMSYDLM+FOg9FJegKxADXmHcLn/su7+vCgGBFBa59TGK43gGA63TNJ2Np+bOzdsqtAM6hEuWhTnFsc3gPIVkKu5e/rdqLtYZ7hfrF14Xwfwa4ZhjgIoBfAvMb6eZaipqUFlZSWamppQWVmJmpoa3W2ffvppLFu2LORx8gVkY1SgxKCLghWKyEULKFCSRBQoY4VBMFCH0hy2+HThRWCk6YwgiNDDq0rVpDm5MF14PGwsAwfHIt1pA8cy6HFHmcKLoAvPG6QGAepByiYCKF+aMRIFKnhsDykmNzsGJdEoClRQMG7aJNL3WTlVadNw34944/YKAQGcWUgtk9mC96EgBYqkio3SteTzSXPYxl0R+bGOY8h0ZmJa1rSQ5+ZNlHUOIysD9Y2mTac55MiVI5g3cR5S7amarzEvdx5aelpMmVAa0T7Qjk53p2YwCABzJszBue5zhoqaWfpH+nG262xIALVs+jL0DPcY7htTACVJUqMvPbdIkqRHJUnSl2kszKZNmzB37lwsXboUa9euxebNm7F9+3asW7cOALBu3Tps27ZNc9+GhgZ0dHTg/vvvD3mOxBdMkAIVaeARHIhZIYAiBfKJLGSX4KuBMqNA6XTIuZxxqoESpJC0ix4sy8BhY2MqIvcXaLOywmDoAyXA5eCUodjZqXZ0R1lEzoXU5hh04fGBw4SByOq/SAovIgUqyPOL/EmSR4HS7sIzO+eNfFYOleoX7vsRb0ai6MIDoHTTmQ32/A77xMbAvAKV5uTGnQJ17OoxLMhboGkfQawMjNJrgug/h7EaN0a8yKPuYh2WTl2q+xpzc+dCgoRzXeeieQsKRmoaAMzJmYNhfhhtfW0xHUd9rFsLbg14fNn0UFEkGEsNE96wc4OSY40XpQWlhkOKGxoasHXrVjQ2NoLneZSVlaG8vBwdHR0oLCwEABQUFKCjoyNkX1EU8Y1vfAMvv/wydu/eHfq8jgIV6bmcfI+VVKAlUnjk//XTY6ONrEAxSg2UpBrcTBBFOdDTrYHy2Rho7RsJkdRAAXIqaySGFJ5HFUCZUaDIuAuAmFlGk8ILVdkMfaA06nn8cwDNKFAxBFBBA4+TxQuKD1LQCDaTNVDBReSArOyMdRdefgQmmoS0CC0XyHsijQkkUDdKdSoKlDM+yrNVICmvtQvWaj5flFEEl91lmF4LHiYc/Jupv1yPvpE+wyG7as8pMwOM9fjwimzWSTr7ginOLQYAnO06i6lZU6M+DqBf1zU9ezqmZU3DReiPjbnhR7nU1dVh9erVcLlcyMzMxMqVK0O2IXfuwTz33HN46KGHMGXKFM3XDg58lILWCAMf8kW2UgqPKE8JLWSHpBSRy2sJXUzwBTUYl5ODKEWWJtKCF8x34QGyEhNbCk9+Xw6fAmU0z48oUAR5nEoUKTwJIV5aRjVQyigXNlSBMlPnQtaoLvwNR3DQpqTwkiWAUhSooBSeyWHCIxou4C7nGNdARdmFlxah6ScJtEgNlM1EDRQJoDKctnGlQLX2taJ3pFc34DBT4B08yiX4N7P7vCwSEKduLcwoXWZ479J7mJs7FzmpOZrPz8mZAwBo6mqK6TiAnJac6JqIyRmTQ577p2X/ZLivpRQoI6VorMnPz0d7ezsKCwvR3t6OvLy8kG3ef/991NXV4bnnnsPAwAA8Hg/S09OVeikSZDBBqbdoa6DUPlAMmMTWQJH/FyUg8nNlXFDbGADy5xq8FN7AhRzw108MjvBRnfSV40SqQMUaQJH0mI3xKVDGNgYBClSqHVf6Iq9R0FegtC9EvCrII/gHKYe/eBGVLBKlTgxO4SVbEbneKBeWjcrGAADSnRzaI/DSihXZSDOKInLyWzQZ7JFAS92FBxgXh5PPJ805vmqgyAgXrQ48wrzceTh0WX++m1qB4pjQgH3PhT0oLSjFRNdE3dfIcGagML0wpgCKF3m82/IuPnXLp3S3mZI5BU7OGZdCclJAriWSfLHsi1iP9br73vAK1LJly7Bt2za43W709/djx44dAICVK1eitrYWAFBbW4tVq1aF7PvrX/8aFy9eRHNzMzZv3ozHH388oNg8JPXmSzdFWjcU/DryayUuhSepap8SWUguwVdETswSNSJTvUHCBKLMxGplwIvma6AAOZUVWxdecA2UsZGmWoHKctmjM9LUMAs18ifSctWOKIVHuvAiuNDxQYqj38YgyQKokBSeOQXKE2RjAMiBSTysOswy7BWVTtNIICk8s5YLRIEixyJdeEapTtK8kDbOFChSx6OnQAGyOtTc04wRXtsAWV0DxXEM1B/PkHcIf770Z1TOrAy7llitDBqvNKJvpM9Q6WIZFrNzZsesQHkFL45fPa5pDGqGGz6AKisrw5o1a1BSUoIVK1Zg8eLFAIDq6mrs2rULxcXF2L17N6qrZY/Q+vp6rF+vH5GqCVag5H/H0IUX9DqJil3U609kc5P8+TJhUnja0+0JkRg7Gq1D0CiwNiLFzsVURB5QA+UwoUA51AqUI6pZeFr1bkYjHzxCqJrijMADi3ThxVJETo6dLCk8fxehRgovyiLytDhZdZglmlEugEoNjkCBcjk4//gR1nwNVLrTNq58oI5dPYapmVORnZKtu8283HkQJRHnurULvAXVvFV5hqT/c3zv4nvwCB7D+idCrFYGb194G4BsI2DEnJw5MStQpztPY0QY0fS1MsMNH0ABwMaNG3HmzBm89957mDtXzuHm5uZiz549aGpqwu7du5GTI+diKyoqsGXLlpDXeOKJJ/CTn/wk4DGtwIdlGEgRnszJ3bO6/kRO4SXmBKAOVBJ5Z08UKH+nVeg2wbPRgiEuxrF0KZE7XntEReRxrIFy2sIOE3YFFZEPjPAR34FrqWx67c6A/0JmD6iBkv9tpuYsHl145LdnpgDbCvjrxjS68MKYRAIqHyiVkaVrDAumJUmSZ/FF1YVH1GCzXXiCkvYDzPlAqQMoQZSSJrAOx7GOY4bqExC+Pklt9xJcA7Xn/B7YWbvi0G3EvNx5uD50HV1u8xME1Oxr2YebJt6EwoxCw+3mTJiDc12xWRl80PoBAKB8cnlU+9MAahTRS71F+ue2mgKlPoknNIUn+W0MAO1gjg+TwkuL8KSthaIaRFBE7oxjCi/NwYWxMeCV9wkg6oHCaqdigmEXnoYC5eBYMEx4BUqSJCWFF5kTeXANVHTWIYlCHnwdWqxPvlvhLvgjOgqURxDHZPYbOX40NVBpEd7MDI3wStoPUClQBqnOEVUXHjA+zDQHPAM4ce1ESBt+MEqHnI4XFC+ohgkHB1AX9uD2KbcjzRF+3C05TlNn5Ok1XuRR11KH5dOXh922OLcYbt5taA4ajr0X9qIgvQDzcueF31gDGkAF8cwzz+Cpp56Ky2tppfDiWwOVGNTn8MR34YVL4ZFttF9DKVyN4Q5dTzUwIm5F5BwDl8MGt1fQvbgOeYSAIvIslzxQuDfCTjx1lw7BsAtPDPWBYhjGlPo2MMIr7yeSAEpUmgbkY5L1JovS4NVxtLeZqO8BVEaaQT5QwNgMFCZ/12hGuThtLFjG/DoHRoIUKFv4InLyXcpIGT8B1P6L+yFIQljfoqyULOSn5esqUOphwurfdZe7C4fbD5tK3wGBVgaRcrj9MPo9/Yb1TwTSiRdtGk+SJLzd/DbunXlv1BY2NIAaRbQCn3CDb7WQ70oDrRQSmcKTrJLCU7rwSAAVug3pLNH7gSiFq3FRoMYugFJqoHxO5IC2NYAkSb4aKJWNQWp0CpSmEzmnP2JEGeUSpMyZKaBXry2iInJlmLD830nnAyWImt8jcmELG0Bp+UARf6UxKCQnf9doaqAYhkFaGEsONUNB32uSQjeTwiPpwvFQB/VOyzvgGA53TL0j7LbzJs7TDWzURrnqUS5vX3gbEiRTBeQAMGvCLHAMF1Uh+b7mfQDC1z8BQHGO7AUVjdIFAKeun8KVgSu4Z0b4YE0PGkCNIqLPnDGwiNzYNVvvddigAMA6ClRCJShllAug34VnM7i7iLR1WguvzvwyI1Jssabw/DVQin+OxoVn2CtCkhBSAwXEJ4DiWNYghSfKNWpB+5gJHtVF7iMRBJrBRdhJF0DpDL62mRxJo+kD5dD/fsQbRYGKIoUHyJ5OZuu1BoNq+5RRLkYBlCDCwbFKjdh4UKDeaXkHi4sWI92RHnbbuTn6HXLy71v+t02lQO25sAfpjnQsKVpiaj12zo5ZE2ZFFUC93fw25k+aj/z0/LDbTsmcAgfniFqBertZLla/d+a9Ue0P0ABqVJGk0A842hResKrPwBo1UIn015F78Bh/DZROCk+v/glQux+PbQ1UrF14gTVQ+kHgoOKVo1ag5BReT4SdeHqz8PRUEY8gBRSQE+T3bk6BSrGzESlQ5PuoFJGTACpJaqB4UQxR7ACVSWQYK4OEK1A8CaCi81QjkwHMMBRU22fmM/LwIhw2Vik4H4u6sNFkyDuEQ22HTCk2gKxAXRu6hm53d8hzchG5/L1hWdlnUBQl7D6/G3dPvxt2zm56XdFYGXgFL967+J6p+icA4FgOsybMwtnu6AKovRf2YlrWNMzMnhnV/gANoEYVokCpYRCFjYGopUBFrmTFC8vUQEl+J3KGYTQvknp39IQUGweGie3unAQzRscJJtURaxeeugZKPwgkd/PqWpEsRYGKvAYqWGXTcixWttdJR5lRoIgLeV5GSoRdeIF/C1uSKVB6Ab/NpKO6ng8UMFYKVPRF5IBPgTJtYxBY22dnwytQI7wAh41VAsxkV6Dev/Q+vKLXdABl1IkXPMoFAJp7LqKpq0kzfSdJEu7/1f145dgrmsc503kmog65hvYGDHgGTNU/EYpziqNK4YmSGHP9E0ADKF26urpQVVWF4uJiVFVVobs7NGJ/++23UVpaqvwvJSUlYOiwJCGkeJmNMoUXXLyb2BSeRWqg4Hd316stC6dAsSwDl52L6e5csTGIpAbKl8KLto7Nw6sUKKV7KfQCSepJ1N1KGU4bWCa6FF5Id5jBiBE9d3a5Bsr48ybDjvMynBEFUHxQOjUZi8i17DD8g3LDKFC8CJYJVEMj9VeKBbcn+iJywKdAmTXS9OgoUGF8oJw2VuVanhzfCz32Ne8Dy7C4c9qdprY3KvBWnytZloGAXnz/3e8BACpnhQZQ57vPY9f5Xfjnd/855Ll5ufPg5t0RDfs1qn/iRR68GPq9IF5QkZ5Hj3UcQ5e7K6b6J4AGULrU1NSgsrISTU1NqKysDHAYJ9xzzz1obGxEY2Mj9u7dC5fLhfvvv195XkuBYqOwH5BTeKFKVuJSeL41JFAFI+sgnwrLMPo1UGGUobQwPkrh8KsekdgYyCf+aGfwKTVQNtbQTX1ImVjvv1NnWSaqeXhan6WRAuUVtNNRKTYu7HiWXp86lpfpjKoLTxngbWBxYUUEUQKnVURu0hB0hBcCPKCA+DRKmIWk8KLxgQLIb9GsjUFgDZSpUS5KCm98KFDvtLyDssIyZDozTW1vVOBNAqhLvZfw23Ob0JbyBdR++D/4fOnnsSBvQcj2b5x9AwBw4voJ9A73BjwXzUy8t5vfxoK8BZiUNinkufk/nY8Fz4WuYU7OnKisDPZe2AsAMQdQlpqFlyg2bdqE2tpa5OXlYerUqSgvL8f27duxb98+AMC6deuwfPlyPPvss7qv8dprr2HFihVwuVzKY1oKFMNGoUCJUoi6wTL6M8hGG3+rOGMJGwNAVhqCP1dRlGT1zkQAFZuNQRRGmiSA8opR1YsE1EAZuKkT1UGtQAFyJ17ECpQU6rZuVAPFC5J2AGVn0TloHLz1DHnhcnBId9oiU6CCOiKVFF6S1EB5BVGzboxTFKjwKTx1/RMQub9SLIzEWkRu0jXdw4vwCGJgFx6xejBRRK7UQCVxAOX2unGg7QC+vuTrpvdxcA7MnDATu8/vRqYzE5f7L6Otvw0dAx1otp3HM/V9qD7QD5bh4BKWY+9X/h1LpizSfK03z72p/Hv76e14vORx5b/VSpeWehUMqX/6QukXQp4TREFWmSChx92D7NRs5TnSiXe26yyKMotMfQaAHKwV5xRjatZU0/toYakAasPODWi80hjX1ywtKDUcUtzQ0ICtW7eisbERPM+jrKwM5eXl6OjoQGGh7IRaUFCAjo4Ow+Ns3boVf/d3fxfwmFb3XHQKlDW78GystuozVgQoUBrBXHBBsR4uBxcXG4NIaqCUmXC8gCyYL84kePjQGiit7iVS96JWoAC5DirScS7qLh0Cx7K6nWFegxoodxiVocftRXaqHQ5bhEXkwU7kJtv/rYJ6Hpkau0kjTY8QGkBF6vAdC7HYGAByCs9MFx75/qi/10oXnpGRplf+fEiNmDeJi8gPtB2AR/Bg+YzlAY97BS82/3kzvlT+Jc3Bv2WFZXj1o1dxoO0AMhwZmJwxGQXpBbCLs1A2aToevuUW2IbvxE9292HOhJt0j6++Vr/U+FJAADU5YzLS7GmmFKhzXefw9NtPY8g7pFn/9N7F95S5r883PI/qpdXKc2ovqLtnmKsD40Ue77S8Yzis2CyWCqASQV1dHVavXq0oRytXrgzZJtiKIJj29nYcO3YMDzzwQMDjopYC5VNKJI30nh6CFFp7YoUuPKP0zZisA1AiKJYJTdOYDWzkuov4dMSZhdSIRFtI7tHswjNQoIICqOxUO64PRFhELoihM9o4IyNNPQUqfAdiz5AXWS4HHBwX3SgXlTIJJE8Kzytoz1T0K1DGn8UILwYUkAPxMYs1i9/GILoAyuU0p0Ap3aUqZdWUD5Tgq4GyJX8N1DvN74ABg6XTlgY+3vIOvr3323i/9X1s/9T2kOvML1b+At9b/j1MzpiMDGcGAPm3PWfjG3hszlx8fWkxfvVBC4Djuud3URLR3t+OvLQ89Az34IPWDwKuaQzDGHbiSZKEc93n8IP9P8AvGn8BG2vDt+74FlbNWxWy7fbT25V//99H/xcQQE3Nmgo7a49oqPCR9iPoG+mLyb6AYKkAykgpGmvy8/PR3t6OwsJCtLe3Iy8vT3fbV199FatXr4bdHqgkSJIENuhkSK7lkuQvgA6HXiAmJUiD8itQLLzC2A0pVSORINQXQbEME9K+bDaAcjk5dIdJKRkRnQJFAqhoa6D83VaMU37MsAYqOIXncuDstYGIjil/DyPswtMtIg9TA+X2IDvVDqedVea7mUFvlEuyFJELoqjZjGA36UQuz6ELPOdwLIMUOzsmA4X9TuTRpfDSHHINVLgbTK3aPr8PlLETuboGyiOMzYxAM3QP98BlT4XT5PbvtLyD0oLSkAHCZBjvjjM78Isjv8AXy74Y8HyaIw3zJgaOLiHfK/UoF0D/d3Py2kkIkoCS/BL0jfThQNsBHG4/HDBTbm7uXOy/tB+/Of4bNPc0o6W3BRd6LqC5pxnNPc0Y5ofh4Bz4asVX8Q9L/0F39t2fL/0ZAJDlzMLxq8cDnrOxNtnKIAIvKFL/FKzckef+1PQnbL5/s6nXuuGLyJctW4Zt27bB7Xajv78fO3bsACArUbW1tQCA2tparFoVGhkTXnnlFaxduzbkca3Ah4W+Z5EWRK0K6cJDYhUolmHAstoDfMcSpQtPo7ZMqYcxo0DFw0gzIidyXwovSgXK6wtOWJaBg2NhYxnN7iWiOqQ7g1J4UdRA8WJoSs6oC88rSJreWE4To1x6hrzIdtnh4Fh4Bcm0gkS2I+tMtgBKz3aDU2wMwnfhBStQQGTdbbFA/L1SHdErUIIohW0cGBgJre0zO0zYYeNUPlDW+F70j/Tjo2sf4WjHsZCCbC1G+BG83/q+ZscaMYi0sTY8ufNJnO8+H/b11HWtgF+51fttE1WoclYlPrfocwCAF4+8GLDNgrwFaO1rxad++ylU76nGbz76Da4OXsUtk27BXy/+a/xkxU/Q9PUm/HjFjw0HB5/pPINUWyrumXEPPKIHdS11Ac/PyZkTkQK1t3kvbpl0i6ZZ59ff+Dp++P4Pcb4r/GcG0AAKZWVlWLNmDUpKSrBixQosXrwYAFBdXY1du3ahuLgYu3fvRnW1LBvW19dj/fr1yv7Nzc24dOkS7r479Ius6QOlUqDMQC4ImjVQCfrtixIU/6VEpUb8nYDy/7NMaDBnWoFycDF55AS7X5vBr0BFG0D502MMw+h2Lw15eLBMoDM1AExwOdA/zBverQej7UQu155pD3IW4dCpgQrXhdc95EW2y6HU85itg+KDU3hJVkTO65iPmklPAf42/WAi8VeKhVhm4QEqy4Uwv0et2j6lsy7MMGEHp6qBskgReYYzA/MnzseQdxCfePUT8AjGivjBtoMY5oc1635Od54Gy7BItaVihB/B537/OQii8d9edwi3zsdDVJzVN63GmgVrAAB/OPOHgG023L4Bb372TRz76jH0Vfeh81udaPhyA1577DVsvn8z/nrJX2Na1jTDdYmiiJ7hHkzPmo4vl38ZAPDcoecCtjFrZXC++zye3vs03ml+R7f77lzXOQDAzxp+ZvhaBEul8KJBkqQQQ7VI2bhxIzZu3AhAHiYMALm5udizZ0/IthUVFdiyZYvy3zNmzEBbm7bXhZ4PFBCJAuXbL9iJfAxSeIMjPFwOLiQIJEXtZF6Sltyut2+8IO9dncILrYEyZy+Q5jQ/f0sLcsKOSoEKc6fd0jmIVDuHvMyUgMc9fGCqJ83B6SpQaQ5byN+BjHPpdXuRm24uaSBoDBNWd7mxCHxOLiLX7sLzCKKuR5ckSXIKz2VXggGPYK5bMaSIPME+UIMjPC5cH8SCoixT2/NiaJ0ZYF5J0+rCA+TA5Ny1AWw7on2uSnfaUHlzXsy/12GvHKAE12yaRW3JkWuwnVZtnzIv0FCBEuC0W8PG4Gr/MIZGBMyYmAYAyEmdgHm5N2Hvhb34/PbP41erfwWW0T537Tq/CwBw17S7Ah53e93ocndhSuYUbK7ajE/99lP486U/44fv/xDfuvNbumsRdQIoPQXq+NXjsLE2FOcUg2EYFGUU4VLfJXS5u5CTmgMASHek4/7Z92vub5Z3L74LCRLKJ5fjwTkPwsbaFIWNUJxTjCHvEH754S/BsRwGPAMY5ochiAIESQAv8thzYQ/2XtgLBgwemPMAvnnnN0OOdbnvMkaEEQDA66dfx7NV+l33hKQPoPqGebR0DmJeQUaI/0mi0fOBAgCzP9vgoljCaCtQw14B564NYObENGSkBNd2ye9DeS8SoI4d3B4e564NYNbEdKSnjM5XLESB0gjmeFH+d7hzudyFF77uQg8t9+dwOE0Wkf/Vrw9jbn4G/mNNacDj3qBuK5eBAhVc/wQAE9LkcS7XBzymAihJkuS/s8YsPED+ngbHN15Bz0iTeGAJId2B8poFeAVJroHyvccRrwikhGwaQnAAlWgn8pc/aMEPd53B8Wce0AxsguFFCSn20M/MZvKCr/eZTs5Oxd5TV7HhN426+77+tTuxaEp22DUaMewVQmqwIsHIkkPNkEYRuXLRN/KBEkQ4OXUReeICqGffOI1TV/rwxyf9QVBBej7+5d7H8e2930ZRRhFq7qtRgihBFLD99Hb854H/xLst7+LOqXci1xUYZn545UMAQEl+CdYsWINd53fhxSMvYuPejfhqxVeVovFggssdFAVKczyWgKuDVzEta5pyvny4+GG8cPgFvPrRq/jLir+M5WMJ4PXTrwMAHpzzIBiGwU0Tb8Lxq8fRO9yLrBT5pmRh/kIAwBPbn9B9nZnZM/H9e76PdSXrdK0Ltp3epvy7qasJvMjDxhpfv5I+gCI/lnidIIkCFSukyFlrBAt53gykyDH45MuAGdUAinyeWkWrJDBUq2mcSn0gaYbR9KkiqyJH5TSCOVIPEi4oSnPawIuSr0Mn8iCc2AFkpZq3IzCbwuvoG8akjNAAJ9ikMk3HP2fQI4R04AHAtBy565TcfIRDCDrBEpS7fq0UniBqXsxJgfGwV4TLEXosMqOPqGSA+RRecACV6BqoK33D8PAihjw8HDaNNxsErxN0mg0EPYKIbI1A7bnPlKG9d1hzn9NX+vCXLx/Gtf6RsOsLx5CH1/y+mcU/lsj4dzGo1ED5j8UwDOwcA6/BZxQyCy+BRZy9bo9mHWL10mpc6ruEH/z5B/jh+z/EJNck5Kfno9vdjUt9lzA9azp+UPUDrC9bH7Iv8WYiKaofr/gx3jz3Jlr7WnG046iuYzn5XgUXkWv9rhsuN0CChFsLb1Ue+1LZl/DC4Rfwq6O/imsAtf/ifgDAynlyd/zqm1bj+NXj+Fn9z/CtpbKidte0u9D4lUZIkJBmT0O6Ix0pthTYWBs4lgPHcHBwjrDXgTfPyp/dkqIlONh2EG+dewsPFT9kuE/yB1C+P7DVShwk3/9CU3jy/5uNLUgxZUgAxchprGhVk3CQOw+t2haSwgtweVbFHeRvMpr3dmo3dACawdyITj1IMGkqH6WoAqih0At+OMwUkUuShJ4hr+Y23iCTSpdOkfDgiLYCNTNXThu0dA6ZWm9wlw5BCVA0LkS8jqdRuOCRzOjLSnXA7ZXfk1krA/+dtH8oKmA+ZR5vyHdj0CMg2xVmY+inPW0mCqQB/SLyFDuHmb5UUTDkTxppU4EWgx4hxLQ1EkizQzjPKn8XXuCxbCxr6O1EuvCs4AM1wouavwGGYfBfK/4LS4qW4GzXWVwdvIqOwQ7MyJ6BHz34I6yct1JXGXm35V0AwAOzZUsdl92FDbdtwFO7nsLe5r1hAygSOLEG6dDfnfodAODB2Q8qj5VPLkeqLRX1l+shSqJu6jFSmrqa4LK7FKf1ry35Gr7/7vfx6olXlQCKYRiUFJTEfKzGK41gwOC7y7+LFb9egRcPvzj+AyhBCaCsFUGR9YQWkftO6Cbrlzy8XBMRXMejLkYfjTIjEjdp3cyRY+rVc5G/yWhetPw1UDLBwZwkSfDwYkj3mRYuVdqApLYiocftAccypo5FMGNjMOgRwIuS5jYeIagGysnhck/oBVCuRQtdV5bLjmyXHc2dg6bWq6tAKe31oWuUU3jaF3NAP4BSB6TioHxcswGUMsrFd1i/cmNq97hD1DSzHXB6o4dMG2nq1EAZkZ0qf+d7IjRW1WJohI+pHtWsZ9WgxpBsQO7EM7J6CJ2FZ70ACgA4lsMTpU9E/Jonrp8Ay7C4edLNymOkXb++rV53P79yK38uNoMbD9IFt/qm1cpjDMPgtqLbsK9lHw62HcTtU26PeO2haxLQM9wTYLmQl5aH3NRcHLt6LObXVyNKItr625Cfno+qWVXgGA7vXnw37H5J34UnjIHaEQ1K8beOAmU24BvROSGS4unRKiQn69P6AYnwKVCqtJkaYQxUwdAuvMAfPO8b42JOgSJ3vdF1KXUPya7ZkSiBqSZSeESJ0VSgeDFEgdK6ax/yCAHjLtRMz00zrUDpubobpch4QYTDpqVA+VN4WqhTeEQpMOsF5R8m7FOglCLyxJwhyN/QbAAlq3b6ReRGLtuAedVVTUaKDQzjnz8YC4MjQogqFAlm5/YNeXik2NmQ76OdY5NmFp6HF8M2kUQCqU3KT8sHx/r/BvMnzQcAnLp+SndffxcefP+vn8I71XkKKbYU5KUHeiOSbrzfnfxd9G9CxbstcgF5RWFFwONLpy2FR/DgvYvvxeU4gPzZCJKABZMWgGM53DTxJlwfuo7rg9cN9xs3AZTFBKjwCpTJ9eq1JUdqhxApigKlsVB/EXkiFSgZRYEKCub0Up9akBRXtD45vUNeZEWQvgPMKVAkpaKdwgsMrNOcnKaX1aCHDxi4qmZmrgsXrptUoATtAMqoVsKr4VwO+AfN6rmRk/c9QW1jYPJCQwI9ssxE10CRYNBscC534WkoUCwxiYy/AsWyjOwLFgcFajDmGiiiBodRoHSOY+MY3c9IECXwogQHx1miBsrDy52o8QriznSegSiJIYN/U+2pSLOn4fKA/sDdYAVK73fjFbzocndhetb0kNd4aI6c7mq43BD9m1BBvKYenPNgwONfLpPtDP67/r/jchwA2HZqGwCgcqY8t484ov9P4/8Y7jeOAqj4/hC6urpQVVWF4uJiVFVVobu7O2SblpYWlJWVobS0FLfccguef/555bn6hgb8v/vuQMWim/Hkk08q6+vp7sZXPr0aFYvmB7yuJEl48sknMWfOHCxatAiHDx+G6Ptx/f7V/0VxcTGKi4sVc0+GAU4cbURpSQnmzJkTcAy9tWsdg1BbWxtwDBL8HDlyGAsXLgw4hihJ6O3pxsqHH8TH7yrHyoceDDjGP/79N/DI0jIs/9hiw2MQGhoaQo4R7n18Y8Pf4JGlZbjztnIcPnw4IJjr6+vD3Fkz8C//+M0xUaB63B5M0KqGNoBj5YJXo5EmpDhdK8jSqoHS8rIaGjFWoC73uk2pO3qmpOouPK01atVAhVPfupUaKHvkAZQogmP9o5dI92qirpNKDZRZBUqniJwzSJWqiSaAAuRgNR41UEMeQTdgN4OiQIX1gRI0a/tsLKvrA+VR3VQxDOMzaU2gAuU7tjtKL7hg/tT0JwDAsunLQp4ryihS2vu1CBmBpBNA7WveB0AutA5matZUsAyLs93mXcGNeP/S+wD8BeSEB+c8CAZMXOfm7rkgWxatukkOnIjn1P+d+D/D/ZI+gFIKluN8gqypqUFlZSWamppQWVmJmpqakG0KCwvx/vvvo7GxEQcOHEBNTQ0uX5aj/Ce/9tf4zr/9J44cO4mmpibs3LkTALD5357FkjuX4UDjRwGv+8Ybb6CpqQlNTU144YUX8NWvfhUeQURvdzf+/dlNOHDgAA4ePIjvfve76O7uBgMG//ztb+C/n39e2Y8cQ2/tWscA5EDlu9/9buAxuroAAN/+xt/g5z//ecAxJAn47//8Ie69917sqGvAXcvvDTjG+XNnsaOuAf/2o58YH8MXEH31q18NOUa493H2rHyM//zJf+OrX/2qyvhNwtNPP43b7rgTDBhT8+n8nT/RKVA9vhRepKSEceRWFCiNACekBsrBYcgrhCiGgx7tGigAmDHRBUkCLnW5w67VX1sUQReeKGqaQio2BjrqW6/bixQ7ixQ757cxiMBIU62SkcAjESk8SZKiUKB0hgmbHIo8ojFM2AxxU6BGeN2A3QwpNg4ME70CZTdQoEgARb5Tdo5JcBG5/B6jNdMNhvgjfXzux0OeI3VEJ66d0Nw31P5D+8Zo+ylZFXqk+JGQ12AYBhNSJqBjoCOa5YdACsiDrRdYlkWaIw2X+/QVtUg5fvU4OIZTPqfp2dOR6czE0Y6jhvslfQAVDwVq06ZNmDt3LpYuXYq1a9di8+bN2L59O9atWwcAWLduHbZt2xayn8PhgNMpt5iPjIxA9J2k29vb0dfXj0Vli8GyDB5//HFl/x07XsfKT66FKEkBr7t9+3Y8/vjjYBgGt99+O3p6etByqQ1/fmcPKivvQ05ODiZMmICqqirs3LkTV6+0Y3CgH4tvux0ME3gMvbVrHaO9vR1vvvkmqqqqAo6xZ/dbuNZxBf39fbj99sBjiJKEt974Ix5/XD7GY5/+TMAxHv2LT4FhGNxascTwGDt37vR9VqHHCPc+1n7ms3Lh4m23oaenBx1X2gEADYcPo6OjA3fefS9YNjSFqkWaM0YFKooUHiCnsoxSeN1GNVBBNgYupw2SFBhsEZNZveL26UonXvg0nr4CpR+g8DoKFKmB0rvz7hnyKIXNDrUPlAnEILNPRYFKwHWyf4RXzk9m59BpDWwG1B5H+uc50jgRTSdptsuu1GvFwpBH24fKLCzLwGUPPxlAPo6GAmWgKo0EWcLYbQlWoHzBm9nvdjiOXT0GlmFDUngAsHiyPGHjneZ3NPcNbhIhp5bgAOrPrfJcukfmhgZQgBx4jAgjGPBENmczGF7g0T3crZkqBIDC9EL0efpiOgZhhB/BtcFrmJwxOaB78Lai2xRjTT0s1YW3YeeGiGU5ohqoCwPVlBaUGg4pbmhowNatW9HY2Aie51FWVoby8nJ0dHSgsFCez1NQUICODu2o+tKlS3j44Ydx9uxZ/OAHP8DkyZNRX1+PoqIiAHKd0JQpUxS38o6ODkzKL4AkBb5uW1sbpk71G3xNmTIFFy9dwtUr7Zg+fVrA421tbShsv4z8wslKLVDwMbTWrnWMtrY2zcfbL19GVn47CgqLQrYXJeD61asomjwZ3Zd7MWlSfsAxlj0k7yOJkuExyONTpkwJeTzc+ygq8u3j+3zbL19GSuEcPP0P38JvXvlfvPzbP4SYj+pB7pijdSPvdXuVC34kpNhZjBjcfapTeMF2FV4hsF1dMSAc8V/ARnw1FlqpDsBvZdBsopBcDKqRIISrgdL6TaaEMRElc/AABDiRm4EP6mIjy02EjUGvKiU2FKarjKCnQJkx0iSfUaRF5ACQnWrH+Wvm6uH0kCRJVoZisDEA5JuBcAHnwAiveWNg981O1MITVBdp59iE10AB8VOg2vvbMdE1MaCAnEA68T5o+0BzX16Z2kACKG0F6vT108hwZMDl0PbkWJi3EIfbD+OD1g9w36z7onofgN+OobywXPN5Mv+upacF07O1gyyzHGo7FOJrBQDrStYpju96JLUCFY+vfl1dHVavXg2Xy4XMzEysXLkyZBuGYXSVjKlTp+Lo0aM4e/YsamtrlYs8WZuWCzbDMIoZpZFC4hEksCwTYsbpexX5OGEuDOGOoYfRy0qSBDByHRYDBhIClR7FQyrio+qj9z78ReQMfvPLLaisegBFRUXgfbUwZnCZ9J7RwiuIGBjhI/KAIqTYOcMaKLUiEDxc1ctLIUaaQOB7GNIYd6Em22VHZooNzSYKyYO7dAhGyohcp2XkA6XfhUdMSR2cvK35GihJSdsB/lREuOLr0UBdU2RegYreSDMaR3xCtssRswIlB/qh1gKRIo8lMg4qhnS6/WQbAx0FKiiFl/AaKCWAin0NrX2t8Ipe3JR7k+bzpQWlAPRTeOScrQRQTOiN0bGOYxjih7C4aLHuOoh9AamVipbXz/gdyLUoKywDAOw+vzum4wQca3bgsT5x8yeUbnc9LKVAGSlFWnh4Aaeu9AMA8jNTkJ9pYtaDSfLz89He3o7CwkK0t7cjLy/PcPvJkydjwYIFqKurw5133onLba0A5At/a2urokjl5+ej8+oV5KZNC3jdoqIiXLp0SXm91tZW5OYVYPLkIpw68kHA48uXL0dR0WR0tF9WAp3gY2itXesYRUVFKCoqwr59+wIeX7j4Y8grKER7e1vA45MnTwYATJqUhytXroBlXQHHmDx5Mi63tqKkQg60jI4hv48itLa2hqwp3Ptobb2EgnmlYBh5nylTinC0oR6N9e/jl7/4OXr7+sHzXuTnZmvWr6lx2c25H2vRE4WJJiHFzprqwgNkmV89C84riMo4CkDbP2dwRNtskMAwDGZMTDPlBaU3V9DG6V/YeVF/Fh5g7AM1Y6J8h0vGgkQUQKkCbRKLJGKYcI/bH5CYTQ8LOjYGfr8tEwFUlDVQfcO87nxCMwxqjFeJBj1LjuBjaflN2dgIa6AS7AMF6HejRsIfz/wRgNzir0WGMwMpthRc6r2k+bzf/kO/iPy/Dv4XAODzpZ/XXQfpYou1E4+kGrXquQC5UH5T3Sa8f+l9fLHsizEdK9h8lJBqT8XSaUtRhzrdfZNagVL/caM9Py5btgzbtm2D2+1Gf38/duzYAQBYuXKl0ilWW1uLVatWhezb2toKt1suwO3u7sZ7772HefPmobCwEOkZmTh6+BAYSPjlL3+p7L9y5Ups/79XIEpSwOuuXLkSv/zlLyFJEj744ANkZWUhKzcP91VV4a233kJ3dze6u7vx1ltv4YEHHkBhYSHS0jNw4MAHkKTQY2itXesYhYWFeOCBB0KOcfc992FSfgHS0zPwwQf+Y3z847JC9+BDj6C2thYsw+DV/31ZOcYjj3wcO367FZIkoeHQQcNjkPeRmZkZcAwz7+OVX78MSZJw6MABZGVlYfLkyfi3n/4ch46dwUenz+Lv/vH7WPvpz4YNngBf3YWDi0qB6nX7O8YiJWwRuaqoN/gkq2WkCegoUAZdUWa9oMh1JjgtSgKq4Au7JEmyAmUwC0/XxsCtqoGK0AcqOAAgsxC17DhGmwAFymR62KtjY2BGSQtWWCKB3AD0xVBIPqRjbhkpaU4TCpTOiCKjGiitFF6iAijRZ6kAxCeFR5SY4I41NQXpBegb6QMvhn4XQ0a5aNwY7Ty7EwwYPDb/Md1jzM6ZDQYMznSdifxN+JAkCSeun0BOag4yUzI1tyFDlI9fOx71cQinrp+CnbVj5oSZIc+984R2zRjBUgpUpAQEUFEm9MrKyrBmzRqUlJQgLy8PixfL8mR1dTUee+wxvPjii5g+fTpeffVVAEB9fT2ef/55bNmyBSdPnsQ3vvENMAwDSZLw1FNPYeFCebDhv/37f+Ivv/RFfOdvPVixYgVWrFihvO4jj34Cd/3mZcyeOUN53Yceegh/+tOfMGfOHLhcLrz44i/gFUTkT5qIp59+WlnXP/3TPyEnJweDIzw2btqMr331KxgZHg45htbag4/xP/8je1zk5OSEHCMzewJ63V7847/8EOvXr4fb7caKFStw/4MrcLqjH3/zjafwl5//HJ5/4eeYMnUaXv/9bwEA9z+4Av/72+14ZGkZXGku/PqXtbrHyMmRp3Y/99xzeOKJJ5RjmHkfv399Bx5ZWoasjHS89JL8PliGgShKyoUkkjtpl8MWtvNHC78CFU0NlHHQpq6hCT7JBtdAkYuWuo5rIIwCBcheUH88ejls+3twjQRBL7WkFKVqqCnkAq+lvkmSJBuTpvlSeBHbGISmwDiWSZACJf/9Uu2cqQBKFCVIEnSLyBnG2MYgFgWKBFA9bm9UbvyAX4FKj4MCFS6dqDeiyM4xuqouqREjaWE7x8LDJ6YGSl3TF48UXmOHPIakYnKF7jZzc+aiuacZ57rOBbh7A36FVhnloqTwiNWCG5f6LmH2hNmGMx1ZhkVWShau9F+J+r180PoBPIIHd07VHjsDyOqQk3Oipbcl6uMAQLe7G70jvSjOKdYuEQlT/pLUARQfBwUKADZu3IiNGzcC8A8Tzs3NxZ49e0K2raiowJYtWwAAVVVVOHpUu82x5NZy/G7P+7hlcmZA2iM3Nxe1//cHOO2s0gUFyH+on/70p8p/D3sFnOnoh9PG4gtf+AK+8IUvBLw+wwC3lNyKD+obkRmkfuitPfgYaoKPQepibl50K44f90f5pOh54sSJ2LNnD5qu9sPGssjJkd+LIAHf3rQZDIBUhw1z8tJ1j0GoqKgIOIaZ9/GD//gxnnx6CPPyMxRjRpaRL5QeXsCjj30GC4q07160SHOG7/zRwm/6GF0Kr2vQIIXn9sjqiRR6kg32gfIrUP5Ayz+x3liBEiWgtXsIsyal626nN8pFzyFb6drTqIFiGAZOm3YB/bBXhIcXQ7rwIgmgtOb1JcJIkzh7T85OMRWcE/8irc8M8KWnjFJ4QiwBlG+cy5AHgPbMvHD459PFdllJd9rQ1qNvrcELIkZ4UcfGgEX/sPbvmHS7WaELT13TGA8FqrWvFTmpOZoF5ISywjK8df4tvNvybkgAFTzrMniUy0uNLwHQT6mpmZo5FceuHsMIPwKnLXQQejiIQeYXbg29VqjJdeXi+pCxU3g46i7K6TnSpRgp4yaFl6hhoXqQ9WhHteF9q8LdTfpHuYwOZP3EONP/uPz/ZFWsryCeoFYeRtWJ3PfS6o+XZeX1kfE3kRTPR61AkbEjUXThOcMWkXsxMV0+AYUoUEGjXNKUGij/xcM/L0z/pEpqjcKl8YJ9Ygh6CpT/bl/7+5ti105fkrohoojYWDkFF20XHiCnHRMRQPUMeZHm4JDtcphKDwfXoQRjY1nwYcaUAFEWkftuwmIx0xwYISnjWBUo45uZIa/+99rGGnTh+WwM/EXkiauBUqekYw2gWnpaMMwP4+aJNxtuRzrx9l/aH/KcGHSDFNwc8vLRlwHIw3zDccukWwAAh9sPh9lSm70X9oJl2LDB2ozsGfAIHgx6ou8efeXYKwCAj88LHxhqMS4CKBvLxm2kyTPPPIOnnnoq5teRJAkMtDvogoMOLUbCnAz9o1xG58Kgvt6IGoGq2ulZ/bygUh5Gc8Cz1qgc8rlG48acFmUNFEk1ROMDlWLjMKwTtEmShJ4hLwqy5MaI4JOsRxBhV82ZczkMFCgDRWCGYmVgfBLSC6D0ZmaFCwb0CuiVlKjvgs4wDBw2NqQLUXedUqgCxSZIgeoe8iLb5YDLRFcZoO50jE6BIhdlpz3yAEZRoNzRd+INjcRHgUpzGt/MDCmBmp6RpvVroNSKaqzz8H7W8DMAwCfnf9JwO9I9pzWIN/i7xwUpUIevHEaGIwOzc2YH7PfkG09i74W9AY+RTrzgx83g9rrR1t+G2RNmG6ppABS/Kz1vKzMQB/J7Z94b1f5JH0CxDAOOZSw3C0+UAtURNQwTPuXo4QVwLKNZQ0JeAxi9WXiShuqkfpyc4+Wgxf88uVDZWTbu7vAB6/P9v/ojJsGc3vxAI1xOW9RdeCwDZEQxviLFzuqePN1eAR5BVDpL1dtJkgSPng+UKggkFyE9HygAyElzIMNpM61ABQdEimOxEBxAkXSUgQKlob6RAEodkDo41nwKT8MGwJaoFJ7bg6xUO9JMdJUB/s9Mzz3faM4bEP6my4h4KFCDYWwzzBKuoWPQo1/bZ+NY3SAzeD5mIn2g1N9nIy84M+w4Izc+GXXHAUBOag4cnAMXey6GPBfqRO6/MTp8+TCG+WElMCK09LTgvw7+F/7uzb8LeJx04h28fDDi91L7oVwzG+x0/rP6n+HnDT8PeOyOKXcA8KfhIuVi70VcG7qGaZnTkJdm3GWvhyUCqGiVCjK2gWGiLyIfLSRJ0vFvMq9AGTkK+1N4Y6BAaQRTRPmR02b+53nfv+1c+PcYC5JGBMUyDDyCCEGSDBUore9b1AqU7yIZrHqYIVUnjQX4L2SFPgXKrbojF3zFxuoLpdPGgmUCDRuJImB0QWMYBtMnhh8qHNylQ9CrgfKK/u+BFnodiKSrUZ0Sddg40wqUfE4I/NsnrIjcZwiaZjI411P5CByrHxwAsRWRZ8YhgFJqoGJM4aU5bfAKkm7QrChQWjVQrH5aLjjAtHNswka5BBaRRx9ASZKE09dPY5Jrkm7HmppJrknoGu4KOQcG3yCR37kgSvjJoZ8AAL54a6BdwG9Pyo1DRzuOosvdpTx+86SbwYDB6eunI34/JKWmThVKkoS/3/33+Ns3/zagg5AEakeuHIn4OADw2onXAESfvgMsEEClpKSgs7MzqiBKUAVQCRq2rosoaZtoAvLj4RUo4zTUWChQwYWE5HHA36XBaqTwOJYBO8qqIAkcWVUExbL+E4HeZydJEjo7O5GSEugZ5nJEr0BF04EH+OuAtL775EJGFCh1zQSp8VD7QDEMgzSHTVOBSg2T0pGtDIwDKL1RLnr+RIoCpdFRBphI4akUKKfNvAIlSlKI2Wfwd3Ss6HGTAMpccB4u6DRKTwGhPkeRwLEMMlNsivt9NAwaBDaR4NIwhQ04jkGgZjOoa1I+H5+3mMPGmK6tizfq8S2xDBN+7+J78IreAP8nr+DFD//8Q3QOdYZsPztnNkRJDPGD8gfv8mejrm1869xbYBkW/2/+/wvYh3hPSZCUGin5NTikO9LR1t+GSGlob0C6Ix2zcmYpj13qvYTekV4MegcDDDqnZE2Rhxd3RTe8mARrT5Q8EdX+gAW68KZMmYLW1lZcu3Yt4n2v9fvn1DAAhq9FXvE/WnQNeuAVREg9oeae3YMejPAixG5t409JknC5ZxgZKTYMdmjX1oiihI7eYYxcs+NqSvz/jO09brAsA68gQexyKHUVQx4eXYNeMD1O2DgWfW4v+od5sH2pAOT37eFFDDg49A3z4HyPx5v+YS963TxsfSmKGtYz5FVa98n6tEhJSQkYHwP4vGei8oHyRuUBBchBhCjJAZHDFnjRJLUoBZmhNVAenVRPmtMWokClObiw6tjM3DS8efyK7ugVwN/mrKdABafItII8NU4d9a1b6Wr0B6VOG2vaB0pLgQpXOzRa9Ax5kZXqMN2gQNKgwesn2DjjVGQsPlBA7G7kQx4eDOM3So0WpSHCIyBbY2LIoIGyaufY8EaaKhuDhNVAxcnG4OeH5bTWE6VPKI/tvbAXT+16CjvP7cTOz+wMqCUqLSjFuy3v4r1L7+HT2Z9WHldqoEhtq+93PegZQFt/G4pzimFjAz/vxiuNvkkUErYc3oInb3tSea4oswinrp8CL/Ih++lxpvMMBr2DWD59ecDjf2j6g/Lv5w49FzAiJsuZhSsDkVsmeAUvPuz4EKm2VJRNLgtYw5H2I1izYI2p10l4AGW32zFzZqiBlRn+5j/ewexJ6eh1e+HhRbz21dL4Li4G1tcewuWeYfzpb24Nee4ftx3DH4924Mg/3a+579mrA1j/y3fwH2tKcNvNUzS3cXsEPPxPO/EPK27CV26drblNLHzyn3bilslZONjchS2PV+C+m/MBAK8cvIh/eP0Y3v+He1GYlYr/3ncOz+48hZPfexCpDg7rfnEQPUMe3H9LAX7w5mmc+v6DAQ7a8eI/dp3Bf+5pwoV/fUgJoP79rdP48d5L4FgGp77/oG4woIXLYTM9r0yN3CkXvQIFyIaSwYoZ8YDyF5H7T7JepcMtMJhxBQWBgx5BGVNjxPRcF3hRwuUed4C1hhpBpyjcrmPwSNaoZaQJyO9dS+3ocXvgsLEBF2FHJAqURhcey469AiVJEnrdHmS77HDZOXh40TBABfw2BnoKlI1lFZVKi1hSeIBvoHCMClSawxbV6Cg1RFnS885Saq00faAMjDSDbB4SmsKLk43B281vg2VYPFz8sPLY70/9HoBsrvnP7/4zvrP8O8pzy6Ytw48P/BjvtbyHTy/0B1DKrEvOH0BJ4LH9/I8BhBp09gz3oGu4C8U5xbg+dB0fXfsI/SP9yHBmAABunngzTl0/heNXjytjZMLx04Oyxc5nFn4m4HGidAHArvO7AuaCTsmcgmNXj0EURbA6Nx5a7L+0H17Ri7um3RUwQPh773wP/3vsf3HPzHtM1UUlPIUXC6TGwGljEybF6jHsFZGq0z4u177or5d4MOldzAD/SXa07qCGeRE5PkM99UWZ/NjJQFhyEiPb9Ax5kOVyqOadxWdQZjC8z7FZfbImwcKUCakRBU+AbP7nEUTTF2pCj9sTdQrPafAZkQtZvoYC5dVToBy2kC68NAMLA8KMifL3zKgOSq9DjNMZ5aJ04en8HVLtrGYHYu+QF9mp9oC/qyOC3zcvihpu6WNfAzXkEeAVJExw2VWzFo1/C+quYi3kMSXhhwlHH0A5FAUwGoY8vKFlhlm0LDkCjkMUKL1RLnpF5ME+UBYpIo9WgfLwHrT1tWFW9qwAlUndlfbdd76Lt869pfw3Maf8sOPDwNcSeIgYwrXBdhxqO4Rv7tqASymfwu5W2fPwa4sD7QvIa9417S48XPwwREnEbz76jfL8kqIlAIA950N9/PT4U9OfwIDB46WPBzx+uP0wGDAozS/FgGcAhy4fUp6blyv7WR29qu3HqMeLR14EEKjcAcAfm/4ICRK2n9pu6nViDqAYhuEYhjnCMMwfwm8dP0ibd1aqQ25zjoObazwZ9gq6UjbpQNKr+yIt5TMMAihS+zUaJwCvIEIQJeT4lBX1iZ/82EmARE52RL3pccsXQP+8s9H5u3iF0Kn1JFgwCjz1IK3X7gi9oOTvYJQpPN+JXOu72+1LpWgqUDyplQn8fsnt8oE+UGZayqfnhveCCh42SlB366gJZwpp1IUXPFfQGcHvW2uWWyJ8oMjfLzvVoXwvw7mRk8BYv4g8jJFmDF14gNyJ1xtDCm/QIyA9im7UYLQsOYKPI2+nPcpFN4UnCLCxjPL5WsYHKspZeFuPb4UECVWzq5THREnE+Z7zSLOnYdm0ZQCANa+tQWufPG80Pz0fNtaG91vfR+a/ZsK1yQX79+z43JuzcCn1Mdy6ZTaWbFmC5+p/CokZRl7qTPxh7R8wY8KMgGOTAuxPzv8k/ua2vwHgt1MA/AXeB1oPmHovoiive0rmFDg4/w3pMD+MjsEOTM6YjL+s+EsAfqUK8BtgRmqZsOvcLjBgsOqmVcpjVwauoGe4B4DfODQc8VCg/gbAyTi8TkSQNu9slx0OG2c9BYoXFJUmmBQ7B0nSNwds6RxCZorN0N2aYZhRy+ETtSOXKFAjoQoUqbMIVaDkCyB576OlQHkFUUkfEcgJdUauRuFEGILfhxl4QUT/MB/VIGEAhipd75AXThuLdKcNNpYJOMkqNVBBSoPsn6MOoHhTpoaT0p1Ic3CGXlB6ReT+GqggJ3JSA6VXRK7Thaeeg0eIRIHSDKASYGOgtmPwK1DG3y0hbBG5sZFmLD5QQOwpvCGd8SqRolhyhFGgtNQuO8fAK4qaN6fBjTmJrIFS16sRG4NIv6EvH5MLt7+6+KvKY2c6z8AjeDB/0nz8ds1vMTljMnqHe/GJ33xCSX3dNPEmSJDQ7+mHm3eDl0I/5/tm3of8kRp8q/QNPDz34ZDnP2iVB9zfPeNulE8uR4YjA0faj2CYHwYAJW134vqJsO/jWMcxLP2fpRAlEZWzKkOOI0HC4smLsXbhWjBgAmqi7pl5DwDgUNshmKVjoAMdgx2YOWEmMp3+zkV1gfrByweV92JETLcLDMNMAfAwgE0A/i7M5nFFbbgXiU/MWDHsFXVrf9SzwLSsCpo7BzFjYlrYWgLHKOXwidpBUngBCpSvXocUE5OgZcgjT3LvG5a70kj6Mh6TxrXgBUkjgIhdgYrEyqDX7f8ORoM/gNLuRiOBWbDdgW4NlIMLLCL38KbSiwzDhB0qLAZ16RD0FCi/D1TkRppTcwIDYAfHos9t7u9ilQBK/d0gjQ3hujy9grbKRxgTBcrthagxDscMgx4+ZhNNwB9AGSlQDhurmaa3c7KpsiCGKtTBAZQjgaNcyN8qM9WOYa+IQc8gTrcfwSTXREw1+RoH2w4ixZaChXkLlcfeaHoDgKwATXRNxJ8+8ycsfmExDl0+hHPd5zAnZw5+suIn+GPTH5HhyECGMwMZjgw0NHvwu/o+vP5XKzA7pwi5rlzM/vafNDupR/gRtPW3oSC9AC67/Ft9YPYDeO3ka/jdyd/h0ws/DTtnR5o9TVG+JEnCkHcI3cPduD50HZ1DnTjXdQ6b39+Mpq4mAPKw43+5918CjvXbE7JVwsfnfRyZzkzcPOlmnLh2AievncTNk25GWaFcAH7yunkN53+P/S8AYNW8VQGP//6kXDuW6chEn6cPey/sxUPFDxm+VqwK1I8AfAvAmH8L1e3OTrt5p2I1p6/0Y9VP9wcMYI0Xw15BaZcNJlx9UEvnEKblhFdR7NzotOGSdaU5bXDa2ABVY8QrKqkneRuSnhDQP+yFJCHiFN7n/+cg3jjWrvnc7hMd+NyLB0LuKHmNqfXkxDtzYvQK1EAEheTKGJeobQx8n5FWKkulxDiDaub0aqDSnTZc6BxE6ffeQun33sKxtl7TYzVmTHSZUqC06osA/VEuerVoeqNcen0pYDV6ReRb6s7jmdc/CllnSBG5Cd+1SPjP3U34/h+M76zVQ6ZdSleZ8XkmnPWDg2Px/rlO5e9b/v1d2Hnc/7shn5GeghWOLJcDkgTdWXLhkIvI41EDZawGG9X26dlqAL4RT1ywAiWN6sQEPcjvIyvVjmGvAK/gRb+nH+e6z+NXH/4q7P4dAx3oHekNCJ4A4I2zcgBFUlOL8hfhrxb/FQB/PdLdM+7Gv1X9G56++2lsuH0Dvlj2RZROvB8p4gLcMmk+cl25AOTfutbneKDtAERJDJgfRzrw/vvQfyuPFWYUonekFxn/mgHuexzS/zUdU/9jKm792a2471f34St//AqauppQnFOMP6z9A9q/0Y7CjMKAY73b8i4AYMUcecA8sRx4rv45eY0sB5fdpQRqZnjluGxf8KWyLwU8/n7r+wCA79wtF93/4sgvwr5W1AEUwzCPALgqSVJDmO2+zDBMPcMw9dFYFehB2ryzUh1wcObbnNV8eKkHH17qQVu3/uDKaHF7BN2CSvK4Xr1Nz5BHmYFmxGhJ0OSzTLFzPhNA/4nM7REClDW1cqMOas2m8LyCiLdPX8OeU1c1n99z6irqmq6HBMjBw3QBYMnMHHz7oZuwdM4kM28zgMwU+aLdF0EKQ8s1OxKMAmm1ApViDxy8qxdAffb26Vj3sRlYVTIZq0om43O3T8cXl86CGSa4HIbvnaToOC64BsrXhadTRK53MXfaZXPM4ItX95BHowaK0/x97z97HW+fDvzeaA0TtnHxtTF443g7/nhUO+AnqGf6KYOewwTnxG0+1aF9Wv7re+fgM7dNU/6+bq+Ad5v8w1RHhMhnQKpR3MijHOcy6OFNdX2GQ0l56nxeRrV9JGWsdV708GLATS1Ro/Rm540migKVYsMwLyA7NRvzJ80HAKzbtg47Tu8w3P9n9XK90eqbVwc8TqwFiDID+IMpEoxoodUkwrHaNx6vfvQqAODReY8qj9057U6k2lJxoO0AvIJ8Hnlw9oMAgAHPgOLbl+HIQHFOMe6ZcQ++UPoF7P/Cfpz5+hnNNKEkSTjTdQYuu0sJrD5/q+y2/rsTv1O2y0vLU2qXjPAIHvzfR/+HI1eOIN2Rjpsm3qQ8N8wPo7WvFbmpucoxSMefEbF82+8EsJJhmIcApADIZBjmZUmSPqveSJKkFwC8AAAVFRVx+6aSNu8JafaIjPbUkDuc0ajTGfTwuoZyRnekkiRhyCOYUg7sHAsPH/8fv1IobmND0kLDfGAA5e+YEVSKjN2ww0wNken1jBzJ4yNBKVFeEEMkeqeNw5eXRWfpQC7akdSAENfsCdEqUDb9FF6v26sUdwcXXHt0isgXFGVhQVFWdGsJ0xlKrkf6NVChCqG8vb6RJiCrAupActgrhih6egrUoEcISYsJOgpUvFJ4kiShuXMQw14Rbo+g22mrBNfqFF4YBSrcLLm7507C3XP9NwcftvYG/G5GvJGPMFKj/AaGvJieG/n+Q3FSoIjxq6ECpXN+VBQojaBoRAhWoPydzNF2LkbLiCqF1+q7gZ/kmogFeQvAMCfw6G8exZ8+/Sc8MOeBgP0GPYN49cSr+PFB2V7gy2VfVp4b8Azg2tC1kELs24puAyA7hushaKSP5a7P0M+R1Ao9NNef3mIZFvfMvAd/avoT9lzYgwfnPIhnq57F6ptXY0LKBOSn52Oia2LAusJxqe8ShvlhlBX4g8GJromYlT0L53vO41LvJUzNmorZE2ajuacZLT0tyHBmYJgfhtvrhpt3w+11Y8AzgN+f+j1qP6xF30gfAODh4ocDbjQOtR2CBAllhWWYkDoBN028CaeunwrpVgwm6gBKkqR/APAPAMAwzHIATwUHT6OJcrH2deF5BDHAH8IM5OId7wBKECUMe0XdE6FyR6qhQHkEEbwomaolGK0cvmJVYOdC3K2Duwtdynvhlc6jrFSH6RQeqTm6cF27/obU5QzzArLgVya8GjPPYiHLly6LpAspePBtpPg/I20FqmSKQ9lO0wfKFr/3Lx9D/3dAFKjg8URKDVSID1T4US4A+T7J/+5VBeBq9IrIhzx8SM2aIGnXQMUrhXe1f0T5W7R0DeKmAu3xGb1uL1LtnPIbktdrfJ4h3WVmO9lm5LpwqLlb+W+PEGsAJX/fuqPsxItXDRTHMki1c4Y1UHrHIbYZXlFbgXKoak7JDUgi6qDIDUFWqh1nrw4oj0905eJ3j/0Oq3+zGg/970NYmLcQE1ImIDMl8/+3d91hclPX9zxJ07fPunu9u7YxtgEXbEzvIYYAoUMgQIBQQk1CIAkhhQR+QAohhBAINfQSQofQTAeDDe697a7Luu3szpaZ2SnS+/2heRpJI81IszPrXVvn+/jwShpJo5Ge7jv33HOxI7ID87fMh0jl63LQqIOUdBsAfL7xcwDArJGzNMfyuXwIuALY2JXdA4+B2XyoU/RyE27ttZGohLXta1HuLsfwsuGadZdMuwRvrX0LL618CcePPx5+l7/gJr0A8MYaWSx+dMPRmuXn7Xcebvv0Njy44EHcevStmD58OuY0zUHDPQ1591ntrcZpE0/Dnd+6U7P8lVWvAABOniC3dTl/v/Px6w9/jccWPZZzf7vcSLNQKGXCaR8oSmUa0k7+n6Wm+mKlbwQ2qJvNknJVmWT6PFlhoEpThqu2KvB7+CwbA0MGKiEqrKD6BZgvtcoYhLaeOHriKc3LozcporVTnp3p0535TAntorKAXmBGbUfsIFcKT53K0lesmaXw+gKvwCMlUdPralaFx6XtNLKq8BQbg3w6wMznMgGpjoHijTWO0biIaELUiJ7NROS5mvDagdorq7ktahpAdUQyv18+Y0gGpZecRRanoTaAVxe3KkFoQqfxsQt2voW0c7HDnFtBwMPnrMIzOw4zbjVKy8UNqvAA82roUiKRksAR+V2gn2SeMvEUPHX6U7jw5QuzGBAP78F39/oubjrsJhww6gDNuldXy95FRr3d6irrsKptFZJiEi4+e7wSJQpCtJ0GBAP/tFU7VyEhJjBz5MysfRw3VrZTWLB1Qa6vbhlvrpUNNE+ffLpm+Y9m/gi3fXob3ln3Dm49+lb84rBfyBWAYi84wmn+Yz1j9x26L87b7zzMGDlDY5zJMKdJ1oedsJestTp/ihxAMWG5GYoSQFFKPwLwUTH2ZRWszNvr4pWHIp6y91JlD2ixvYqiilOuCQOVY0bK6H4rWoJS2xh4XZzMQOlsDNT2DF4XB0LkQY21gaj2u5WgNB+7p953SyiCfUZmUlCb2qNKFYheaC0Hy8ULINwCh4Cbt5XCC0cTIAQo9xYWQHlMGKjepIh4SlK0VV6X1mG8JAGUKpgz2q9ZM2HA2LwwLwNl8N3DqkmRGmZFIj2qCRB71lKisQ+UvtlxoVCnzHL1DwyrWvz4XeaMsxpKLznLDFQAlAKbO6IYP7Q8b//MfKjqQ0PheEr2jisGAwWkOwOYXK+eeArVAeNCEXbvGtk9JFKihqFzKwzUrhGRuwUOXoHX6BsZztvvPJw5+UwQEESTUaxsW4nO3k4c1XAUPIKxPvbTlk8BAN8el93hYr+h+2FV2yos2rYoK/ACjFPfRtWrL62StUdM36RGhbcCPsGHpo4mk29tDwtaZQNNfbA2qmIUvIIXGzo2AJDTeu//4P2Cj0Mpxaq2VfAKXoyrliUg9VX1GFE2Apu6NuX87KB1IleLbNmDYFcHxSjzQgToudCTw6dEvdyo+k8JviwMRKVy0u1Vicj9bh0DlZLgVX0v1sS2R6WBqvAKSqVevuBUHRjoy+ibVX/r95M00ED1FXIvMBsBVCyJCq/LtOw8H3wmNgZ6JkafwkuIxhqoviBfylXfrV0No4E2X5CnbmPDwO4fvTGpJ21Tohd0svtSHYRLlBo7kRdJA9UcikLgCKr8Ls39qUenanwSeC6rmtUIkXgKHLHey45p5JrT6e94SjS0RbGKQlhYhsy4VRwGyu/mTaujowlzrZXAmzNQiZQ2xelKp8B3RTuXeFKEm5dbFplZvbh5N1y8C5XeShw0+iDMHj/bNHiilGJt+1oEXAGMLB+ZtZ41G3573duGn7fK3DKbhNMmasXrDCPLR6KjtwMS7ds1VRtoGummhpcNR0dvR1EqKNd3rEdcjGNi7USNBEgtkjfD4A2gVGXeLK9tN4CKlkhEHs3TlVzxOTEYIHJ1GtejVD5QLF3mY1V4GhsDUWNjAKT9h9JVeOVeAQLPWW7lohao61uJqGf4+v2kRGpq0lgoqvwuW81UjVyz7cDsGqkruIB0xZo6hddHvx8j5BP9iyZO5IAsFDerwjPTqRkFbEYpYMC4WopSqtyX6ka9KQP/H44jKNY8oyUUwZgaP8bWBpSWS0bQG4Lqq1mNwApPrOo4WacCZj/RVwZK4DmUe4SCqvAiNphzKwh4BFNPNllEblKFxxgoIw1Uloh8F2qgRAmetEYuKdKcBqlW0BxuVoIAIzAbAGaAqUdKMpl4qAIUiUpYuG0hXJwLk4dONtzPvkP3BQXF8h3LDddbBTPQnDFyhuH6SbWTFD1WX/HW2rcAZNzTGS6bcZnR5hoM3gAqmlRSHGxWYZuBirM0U3EfoHxBkF/xOcl+WeULvtRwCSXSQDGXXJdBFV5SW4UHMAdsUfbwUaWd5O3tMFDaF5I6oNK/2EvDQNlzYg4beBbZgYvnwOtcxoFscbqpBqqoInL59zJjY42qdBhyMVCmGigDm4tM4JhdhQdkd7BnY7s6MDGaSQsGYthC0dQWRX3Qj4ZgIHcKTxdc658jI0Tjoi0n7+qAG5U+VyaAKkI1WaXfpQSydhC1KYDPB7ktkbmNgVkAZVbUAMhVigNFA8U8qTJecH07B6YX0guuGcbXjAdHOFPDSfPnJnMdv9r8FWKpGKYOm2qoIwIyTBfzoyoUzEDzuxO+a7j+4NEHAzBn1OyAidVPn6TVWk0bPg1D/LktcQZtAKU23MtooOwxSSVjoJiI3CQI8gjyi9NohhWxISQtmQ+UugrPo6/Ck7J6/AU8vKKBYrNuniNw8SSvQJ8NvHU1vqyUSEsoappaSkrU9OVcKKp8blsMVGe08EbCDF4h25FbbcIIpFN4qgG2NCLy3Ck8MyNNgGmg9CLy/D5Q8vEy90dHNAmBI1npGZaWUrNw6ntSnWIWDWbSso2B4WnYAqUULaEI6oMB1AcDaO3sNRw7KKWyBkoVQOmrWY2Qy/rEDA1Bv5L67quIHCi8nYudccsK5MbY2ddLlChiSXOPvVyskr5KcZdqoNLpxGI1XWcsit4XioEQghpfDbb2GPuXiQbjKacLoFivu0v3v1RZdsdnd2BBa0Y0/p3xsrXBZxs/K+BbZPDuBrlZ8fHjs7VWgOx8XozjALLonSNcltaKEIIHT34w52cHbQAVjiYV/x21iNwOSsZAKWJQ44ecEGI6w2KDhpWZXMk0UCyAEuQS7N6kpDxIeh8oQBZ8RhIpdOhm3Wb9ztRg7MHkERVZKZHmUAQThpUDyA6OU6KU1cqkr6j0u2xVIIVjfUvhAcaO3J26FJ5+m9JooHIP5BKl4IixiNyIgcrnqm0sIpfbAOlTWEYMlJrNUQcm8kxae0yey7Si6Qt29sQRTYhorA2gIe12v6k9WwfVm5SQSEkafzB9NasRogl7DBQgty1iTG1cZxRZCKp87oJsDKI2BfD5IKc8s68Xm5CZBZquHEGRUS88edtdxEClReRA3wOohVsXGgqu1RhbNRa9qV5EEtnMaUqihhYl6uf6zbVvgoDge/t+DwCwNrQWv5rzKxz/dCbImTRkEjjCYcXO/D3wzNCT6MHa0FpUe6sxqmKU4TYzR80EAcGyHcsKPg4AhHvDCMVCqKuoM9RanTrx1JyfH7QBlLrM22iAtQKFgSqyiDxTjmw+mJjNsNigYVkDVSIbA47I7EFA5fMkrzNI4aWF5p2qyiOAuU1bY6AmjajAju64cpx4SkRrOIa90wGUkQbK7OVcKKp8LoSjScvCxHC0byk8wNjAskOnBWIeTey8Mr3wShFAmTNQZmJ5I8O9RJ4qPCMBfWcs24UcMC4S0TBQcS0DpU/tyhqtvj8njOlhKTwgW7cHqCxWVPdGmRUNVNy+j1JDbQCt4RjiKbFoDFQhKbx8hTN2EfDwhuOjYjaa10jTzAfKwEhzF4jIGQPlsdHyygzh3jC2RbYpguukmMSlr12KDe0bNNtNHzEdQKZkXw3JxICWMclNHU1oi7ZhYu1EVHrlSunff/x7AMDO6E5s6doCQCYHqr3VaO1uLfj7vLLqFVBQw0q/zLlxKPeU22rhYoQPmj4AkEkJ2sWgDKD0Zd4Fa6BKZKQZsaBj8nt4Yw1UnvSfGqXzgZKDJJkpy1guUCobhGaJyNMvh3A0oZl1mzWMVSOSSMEjcBg3pAxA5iW1qT0GiQJ7D2cBlD6FVxoNVEqihr+LHqxxcmUfU3gegyqccDQJN88pQYZX4CHRzKyaDfiF9jwzQi5TT8BYI8HA88YMlMARU0G0EeNlFpC6DZ5v9ctVz0DpZ9IcR1CMIjwWLDUEA0oAZdSA2cgfTF/NaoRc1WVmaAj6IVFgc0eszyJyoPAUnp1xywpkVjv7ekXyVCkrQZFpLzyVkWaBE+9igP1WxUjhMa+iI+uPBAD8/L2f45GFj2DCPyZoGBqmj2I98dQwmiAJPFGY2/vm3wcA+MHUHyjr31n/jvLv69+5Xvn32OqxiKViiCbNq1Rz4ZEFjwAArpl1jbLs7rl3429f/k2zXV1FHboT3ZD6MDl6YvETAICz9jmroM8PygBKX+btKTCFFy2ZD5S8X7M2D0CagTKqwotnKuDywVWiKjx1mi7TZDelXF+PAQPVE09pROSA/B2sVOEFPAIaa9MVRemXFBPoThohGxUaiciLmcICMveTFR1UVyzTOLkvMPKB6YwlUOl3KcEHu49YoJUQZYawmBowI1sBNYy0RQyGVXgGTJDh8bJSeNnX0+j5Vqd31M+RUZNpnmS3mikELaEIBI5gdLUPlX5X2sogm4FS9+lksKqBslvFVq8EcpEso8hCwHSAdlOeLLCxm4I0Q8AtG4PqJ4iRPEyX0pvRSi+8geADlad4wwoeXvAwgEzA8dJK2atJpCKmPTBN0QkxPdHXW7/O2odk6OCfea6ZqPvyGXLrGFES0RZtU8Tkr615TfncjBFy5dz76+17M1FK8eWWL+ETfDi47uD0uUn4xfu/wA3v3qBJP+43bD8AwLzWebaPw471QdMH4AinmIDaxeAMoHQaETarsMNASRJFND14GxmZ9QWRhOzxkWsw87vNGSi/mzfUmujhEkqlgcqwTAoDFRcRVzmUq+F3C2jrSUCiWg8fI32PHpH09x3DPG3SM3r2fzMGKlXkVi5ApimwFR+csEnbEbswYun0TIxecJ0oQfCYqy8fkIeBMqnCy2UzYVR9JKeAsxk9I42jloGSrwulFBLN1mnxHFeUAKo5FMXoap8SuNYHA4YMlJEdg99jrQqvzCaDwyYeTW1RWQPVBx8oQD5niQI9eYI9PVgQWzQGypNhvjXHyWNSbOYDRSkdUDYG8VTaB8qiX54ZREnE161fI+AK4KDRBwEAtnRvkfVQI2ZCpCKOeOwIPL/seVR6K+Hm3Vjfvj5rPykjI830xKOztxPNnc1oqGpAta8aQKb1yfia8Sh3y/3nvtwkWySw9i3vNb1n+/vM2zIPvaleHFJ3iDKBnL95PpJSEiIV8dSSp5RtDx9zOIDCK/GWbF+C7kQ3pg2bhnJPeUH7GJwBlK7M24jiz4dYUjR1ue4rovFU3plYmYnPSa4+T3qUTgOlYqAUy4WUymAzuwqPvaCqbKbw5AakAiq8LgQDboV5aglFUOEVEAy44eKzS/2TIlUo+GKBpR8tBVAmrtl2YRRk6pkYNsiyADaZokXVP8nnkT+FZ8Z4GVbhiXkYKCMbg6iJBsrg+dYwUOnnyMzsk+eKx0AxxgcAGoN+Qw2UUXBtnYGyFwBV+10o9wpoCUWynLYLAZsA2dVBRRLWmXMrYOOOfozMV+1nFhSxNJ2hBmoXpfA8At/nFN57G95DQkrgmMZjQAhBS0cLRCpiaGAovvjhF5gydAooKM7977loj7ZjeGA4QrFQ1n5EScqaeAjpiQervjt78tnKuru/vBsA8IMpP8D39pFF5b94/xcAMu1Qvmn9xvb3uXfevQDkdi0MrHEyANz5eaaH3YkTTgQg2ysUApaWZKxaIRjUAZReA2WHBtWX5hcTPemgIBf8JlUmkRx9nvQoXTNhSWE9MjPBlGKw6RWyGSiGKj0Dla8Xnuql0VAbUFIiTW0RNNQGQAgxrOZLSZLS96pYULrRWzASzLhm99HGwOAaydV9bs02QGaQTYpS0YNH5i5vNpAbVekwmDJQOYI8jiNw85kAO5GSEEmIhilRj4FWRf38sudIsVowaknRR8diSima26JoCGZaiMhWBrGscceop59fV81qtP9I3L6NASEEDcEAmkPRovhAVdmYRKgRjVtnzq3Ar/QL1V5blsKza6SpyA8MqvDsSj+KgWwNlASJUlDYu09ZwPGzg38GALjj8zsAyCyQi3fhy0u/xLDAMFBQ/GfFfzChdgJSUkoRfTPkauXy5OInAQA/PfinyjrW7+6qA67C74+WxeSfb/ocSTGJMncZvLwX69rX2fouAPDu+nfBE15T/fbehgyT1RxuVs69vrIePOGxKrTK9nEA4PU1r4OA4Pwp5yvLQtGQrcBvUAZQrMxbb2Ngh4HSm0MWE7JTbu4gKOA2bpYZiVtnoEolIo+nRIWRUBiouKhp8aKGWviqnnV7hOwKMz0iqgbC9UG/0paiJRRVZvseA5ZGZjiKX4UHWHt5sBl6dQlSeJ3RRFYgCmQCfTk4KW7wyIJis5eJaKAtYjDrhZcvzehJVxcCqrR8IDsgNfSBSj+/VX6XwlJIJm7pHCF9tjEIRRLoiafQUJthoBpq/aBULnhQIxxLwCNwGg0kGw/MWKh4SoJEC9MQNaRd0YtVhQfAtpWBHebcCjLjjvZ65bNLYPeoPoWXMAigMg73uzKAks+hI9aFBdsWoCXcYms/n7R8Ap/gwxH1RwDI+EH98rBfAgB8Lh9+fOCPAQD/XflfHDjqQM12DGatXBJiAivaVmB4YDiGlw0HIAcZsVQMPsGHKl8VRpSPQK2vFiIV8eKKFwEAw8uHoz3Wbuu7bO/Zjp3Rndh36L4QOPn37U31Ymd0JwgIxlaPBQDc//X9ymdqfDXY1rPN1nHYsbb1bMOkIZMQcGee6V/N+RUOefQQy+c+KAMofZl3ITYGWgaq+BqofIOJWbPMaCJluRJHNtKkRekHpIa6YbCagepVNFDZVXgM+hRePn1ZNJExxWsIBrCtqxddvUls7sjM9o2CjFI4kVew9IWFKqRMCq+vRpoGKTydGJ9d71gJNVAunoAjmTY+eoiSsQs5YOIDZaFK0quyuejUpeXVMPSBSqRACFATcGcxUPpAzyjAswuWWm5QpfBYgK/3L+s0EMOrtYRGiPRBQ9QQ9GNzRxQStd5HzwzKJMJmJV40kUJZkQTkQOZ66QPOiFLtlzuFl2WrkcpO4Ski8l3RC09npEnghV/woTncgnlbrImiF25diJ5EDw4efbCiF2rtbgUBwZRhU5TtGMOyZPsSxRrg45aPNfsyqsLjOYINsdchUQkn7X2Ssvwf8/4BICMWB4DL9pfbntz6ya0AgMm1kyFS0VBvZYZ7vrpHc75ApmJwVPkoJRC8f/79yjtvbLW5t1UuqFOQDJRS/Hflf5EQE0ogmA+DMoDSl3kXYmMQVeXsY8WuwrOQhgt4eEQSqazgJ5IQLVfi5DKN6wvUbuMaBipprHNQD/raF781ETn7PGuO+sW6ECSaeVkZ7SefSLkQeF08fC7eUhUeC+IrvH2bdXt0PlDxlIhoQsyTwiu+BooQkvP3EiUphw8Ul/XCsiLyVwfGuUT5hj5Q6TR5mcop36zdDMf1nYFizGi9KoXXqOtFx9AR1fbBA/IzUGw8KsRHqT4YUGwaipXC67TLQNlgzq1A8Z/TBZyZ65RbRK5P4RkFUC6hNOOnFehTeOFYFyLJCHiOx/kvnW8pIPjTF38CAFx34HUAgHXt6yBSEcPKhmm2q6usAwFBKBZSKtuWbF+i2UbNQMWSMfz+o9/jP60nYmnkLgDAzw/5ubLtk0vklN61B16rLPvZIXIKcWXbSnTEOhRfJdZixgpY0HLlzCuVZUyndPKEk3H5jMtBQNDe245F2xYBAKYPl72t3t9gr+LvPyv+AwKCq2ddrSxb275W0YfdP/9+s49qMCgDKH2ZdyFO5GzGVxNwl6QKzwoDRWm2/ioat85AuUtURaIWkWd8oFLKy1VvY6BOO2ir8Li8PZ7U/b9YRdHHa3YAgOL27FWlegC5glKiKDoDBbCGwhZSeLFM4+S+QG/1wJgYzXXUCa6TqeIzUEBuzZpRlQ5DIRooQMu+GemGGFjpud4Hyu/mNT3mzBoe86TvGqjmUAQ8RzC6OhNAVfldqPAKWZV46j6dDHkZqERubU8uqHVZfe6FZyONrYYV2YIdmDJQ8RRcPDH9nmxSpQ+K2LtB4wOVHj92SS88UZvCo5IXlZ4qiJKIte1rceN7N+bdx7vr34WLc+G7e8v94v742R8BAN9q+FbWtuWecqSkFBJiAuXucizdsRSuP7jg+z8fKu+sxHNbjsHrO4+F5zYPArcHcMvHtyAmhlDBTcD/zvsf9gruJZ8npWgKNwGAclwACPqDGF0xGgDw3LLn8J0JckuXT1o+sXQ9kmIS69rXYUzlGE1K7fNNnwMArjzgSngFL/Ydui+ADFt1dGPa28rAHNQMsWQMTR1NaKxu1BzrzTWZYG/R9kXY1Lkp774GZQClL/N2FyAGZDOZYJm7NBqoPEGQ2Yw0mjBvlKlHqapIYqoAyi1wcPMcIgnRNIXHNExlHkHz0rTUykXNQNXIN/NHq3fKfzMGSqelSkrF7wXHUOlzKexSLphVjNmFPjg0YmL0Jf+yiLz4waNRXz4GiVJTgbDAG/fCs5LCywRQ5lWNRs93JP2cqKvbRDMROd/3FF5zKIpRVT7Ni5sQoil8YOg0aDKdj4FSOhAUwECpdVl9DaDcAoeAm7edwivERT0XynLYGOQ6jmAyJhppoDLBVv8GUJRSuQqPl8dWQuR7e6/geNT6gwBknc//1po35F0XWof2WDumD5+uEAmsnP/Gw7KDr3HV4wDIjXNvOvwmjKseh2FlwxBwBSBRCQABT7wI+oIYWz0WNx5yIy5p/BgHlj2I4/fKOILP2zIPEpVQ46uBV/BqjsF65D2z9BlMGz7NUquVaDKKu+fejdF3jwYF1TQPDveG0RXvAk94JXD6yUE/AQA8v/x5pKQUvjVWDhbtCL/vnXcvKKimqhDIMGsMzy17Lu++infH9yP0Zd6EyBU9dlJ4agZqc0csz9b2EInnT8NpZqRlqs/a0UCVyElX3zDYn24WHDcRkbNBv1L30mAvSEqpoSO1KMnO5uxaVPpdqPa7sLWzF2Ue2cKA7Uf94knlaRPSF1T5XUqRQi6EY0lDtsQuvC4eKYnKzt08Z8jE6FN4pdBAseOYVuHlSMkVzECpUnhMd6ZnbgATJ/J01Zffk9ESKgEUyWag+prCky0M/FnL64MBLNrUoVkWjiYxZbQugFIxuUaI9oGBCgbcKPMI6Imn+uwDBchpPLsMVCQhYlR1ERkoFnDGsxmoXONjRgOltzGQ7xF1gMlxBAJXmkKcXGDjtSfd7YFNNAkIJg2ZjINGJfHVlq9w/svn49HvPoojG45ElbdK+fz2nu2KZcAP9/+hsry1R9Y/7Td0v6xjfnvct7Fw20I8u+xZvHTOS7jpsJs068+8/wt4XByevvQgZdnVzyxASurSbMfcwGePnZ11jIunXYxbProFy3cuB0c4VHorsbFzI+ZumguJSpCohK54F1q7W7G5azOWbF+Ct9a+hYQkj7cHjT4IfzruT8r+Xln5CgCgoapBeX+cP+V8XPb6ZehN9eKdde/gxAknyt5WHda1Vsx9/PqDM+7pKSmFpduXAgAmD5mMFTtX4MFvHsSNh+ZmAgdnABVLYlSVT7PMI9gLoNigWxPYRQyU24SBshB8MbgMtCHFQFzX7y6QbqugNBk20UDp2QOvi1NakLgNGJPMSyOzv/pgAB3RMBpq/cpD43XxCEUyQQ0LoIrdCw+QKzvX7ejJu52Za7ZdqNmlMp4zZGJYCiuuaKBKE0Dp9VhqGDkVM8gvIXtGmoD8u7Ieah3RBHiOoNzg3jcSkTPmUl3NaspA9dHGgFKKprYITpue3di0MejHm0taNW1UwrFEVnGBwkCZisgLZ6AIIagP+rG8tavPDBQgT4SsTCLUiBaZgfK7mA+UAQOVY3x0mRhpxg00UPL2XL9roBQ9VvoZVk8keMLhjfPewMyHZqIl3IJTnz8VBAT7j9gfE4ITMG/LPCVY4AiHC6ZcAABYuXMlJCphRNkIw8nqxdMvxh8//yO+bs12IQdkxthn0ExYP/Fg7VvUbVYYxlSOAQFBuDcMSinGVo3Fgm0LcMijh5heC45w+O6E7+Jvx/8NjdWNmnUPLXgIAHDW5EybFTfvxgEjD8BXW77Ck0uexIkTTsTQwFBs7d5qOlEHZMPRuZvn4rmlz2HFzhUYUTYCQwJDlPXztsxDiqYgcAL+Nvtv+PZT38a6jnVYuXOl6bkDgzSA6owmsO/ICs0yt8AV5AMVTAdQuS6+HUgSzUszA9rqNoZESkJClArQQBVZRJ7SBlByHy9VFV5WLzx52+wASl4eS4qGA7uRILSxNoBFm8Iaw0J9NR97kZaKgbKSvuiMJVFXk81I2IWaXSrzCCYpPL2NAS2aYaH2XMyfoVzNhA2r8ESa92XuEXjs7I4DSOuGfC7DZ9AohRdNiAgG3AioGCilCo/PDqAolZ/NQnyKOqJJdPemNPckAxNwb+6IYuyQMvQm5VS3aRVeHgaqrAAGCpDTeMtbu4pSXFDlt5bGViNSQB+/XBB4Dh6BM6zCy3UcQgh4A2NX8wCKFH0Cmg96Qbue+Q36g/jgwg9w5gtnYsG2BaCgWB1ajRU7V0Ck6TFT8OPmI26GzyUTCUxQzlJaekyomQBAZq+MIFFjHyh16ntjeCM6ejvAEQ4Hjj7QcD/Vvmq0x9qxuWszfnnYL3HVW1eBgEDgBAicgEpPJcbVjMPewb0xvmY8vrPXdzCqIntiAgALty0EIDNbalx/8PU458VzlEbAE2omYHPXZlz95tXwuXwghECiEiKJCHqSPehJ9OCzls/Q3puxJrjh4Bs0+2StaibVTsK3xn4LXt6LXrEXTy992vDcGAZlAKUv8wbkm9FuCo/nCCp9rpwsiV2wUvN8gsoygxlpLE+FiR6laEUgShRJkWrMMv0eAT1xKwyUdtbNxObxpAgYlKdnTPHUDJQclKiFsfoBhg2OxfaBAmRjzM5oMm9AHdZ5NRUKvUA80wbEbbpNUpT6XP1ndi6FNBOWe+Hpmz1T+C2k8NiLzeiZZiCEZE2QIvEU6mr8MgOVrmZlQZze8JOl9ERKwcH+M96sWBhkB8ys0KElJAdQLBWZVYXHRNGmInJ7z37WeaTPra82BoAcQK3e1m3rM9EC+vjlQ8AjZFfhWaj2EzhiamOgvz6lMiPOBb0ruly8oT2HxupGfHPFN1jfvh4vr3oZL618CavaVuH48cfj7H3Oxuxxs5XgCQDeXfcugIyhph6EEARcAUSSEaTEFAReew1TIgWvY4z1qe/ffyIbZk4bNg08Z/x+m1w7GZ9t+gwvrnwRPz3opwU36d3cuRmxVAwCJygCdobTJ50OAAjFQqCU4pjGY/BB8wd4aOFDmqp2jnAghIBSiqSUhJt345x9zsFPDvoJ9h+xv2afL66UKwDPnHwmCCE4duyxeHPtm3hk4SM5z3PQBVBGZd5AOoCy4wMVl/2H1E1U882YX1m4Bd+aPCznLDHT7NKiBsqgq7zVahalisQkcKSU4r8LtuCkKSOygh4AWLm1C5F4CjMbapRlmSApcy0CblkDlRGRa/fF2BB9QJGvz5MRA8WsC/QMlHqAyaTwSsNAJUQJsaR2oP5yQwhz12daIOgbJxcKlp576JMNqPK7MXdDCAJHNLNs5tGkNBMuWRUeh7YeY4bEyKmYwZiByu8Urw6MO6PZwms1PDqNYzTNePg9mWrWTCsX7bVhrJMoUbBbd+XWLkQTImbUV+c8R0DlAVVrzEABwFNftmDRprBiQKm/N3wmxpAMRpMJO1BMZ4sSQLkteaExyE1/aVEZKID1C81moEZUek0+IcMoLWcWQLnytMOilOLlhVswe5/htvVp7LPH7ztcM5awlkzsXDwCZzpxGVczDjcccgNuOOQGw/XsONsi27L8n/Sor6zHirYV+LjlYxw79ljNOnmCpN1e0BVfvLD8BQDAb4/8rekxTpt0Gj7b9BleWfkKfnrQT023y4dnlj0DAJgYnJg1kRU4AWWuMvQke7CxcyPO3e9cPLX0KfSmesERDhzh4ObdqPZWo8ZXg2pfNfYfvj8unHqh0stPja54FzZ2bgQAXDTtIgByIPrm2jfzmnQOugDKqMwbKEQDJWso1I1aK7zmA/iWcAw/eX4Rbjl5Mi46tNF0OzaTzO9ELl/6nrh2Vg3YYKDyOOmu2NqFG/6zGBwBTt9/dNb6299aiR1dcbzz0yOUZUYsk98toCMaQ29KhIsnhj47sxprMK2uSrOcvTTMSuN7FPPAzLFm1FdjRKUXM1UvNj0zkhSN6fhiQO1Grv4dfvvqMqzZntFG8RzBPro0ciEYN6QMHoHD43MzDsT7j6nSDBqEkLTdgboKr59F5DlauXgMqvesGJ2qLRzCsQSGlpu/GPUMc09ac6PWEjIWzEgDBWScygHgrndXY3NHDG//5AjkQ2u4FwCydJeALAHYe1g55qzagTmrdijfa6+hZZrt1NWsRojGZWNQfZskqzigoQYjK72oNwjy7KLKJ1t5WJU1sElgMTVQgByEtke0Wiwr1X5GHRoSBjYG8ra5NVCb2mO4/oXFuPVUERccVG/n9LF+Zw+uf2ExeI7glGmZNJUhA9UHHe6ba96ERCWMLh+d8/c6YswRWNG2Ak8sfiI7gKI0e+JBMhOjb1q/QU+iBy7OpfSgM8LZ+5yNn737Myzfubzg7wMAjy18DABw3n7nGa4fVzMOi7cvxgdNH+Di6Rdj5dW5tUq5wCwQ/C4/xlSOAQAc1XAUfIIPsVTuArNBF0CZGe7JFL8dJ3IRAQ+f1ajVDN298nGbDbqva/ZrlYFiRnEGXeUt98LLo4Fig4/eKZlhw85IFmvHmB4NA+VhGijRdIB/4YqDs5YZNYxVQxl4VTO7uho/5t6kfbj11XwpE6ahGFC3shiZfmFKEkVzKIrLjxiLX31nUlGPt++oSqy+7YS826kH2VIYaSrHMAl2RYlm2VcwyJWLWsYiZaGVi8ZIM5rEhKHlptt6VM83pTRt98FrqllZFlEfQDHmTD2b7upNWW5XEk2kIHDEkN0hhGgmILngTz9HRogkRPhdhfeSa6wN4Avdc1MoqvwupCSKSEK0pMmyO25ZRX1NACu2aqvAIhZsXgQ+O6WcUwOVg4HqYuO+yRiaC6GeRHof2t/cSESe7/2TC7/+8NcAZK+kXLhk/0vwwIIH8MXmL7LWiQb6QEFVfPHrD+RjnDD+BKXNCgAkxAQETgBH5O8yumI0OMKho1dbmWoHXfEurA6tBgB8b9/vGW5zbOOxWLx9MV5a+RIunn6x4TZW8ezSZwFAaXMDyM/1ceOOw2urX8v52UHnA2VmuGfXxkB2Cxcsd8Nm2gW950vWftODSb6Bx0gTEbXLQOXRQLFrZRT0xVMiWjtjit6HwYyBkp3IpSwTzVzQi5/1YN89XwsIdTUfkPm+pTDSZM2B1d3ot3X1IpGSNG08+htePQNVgu9u1DKHQczBQFX53YglRS1LKFmxMZADNkopOg3MJ9VQM1DxlJyu87sFjb+Soo0z6IUHQKPniCZSlkv1Wbq/r0UmAbdxA3F2PsXWEBUKNrZaceQHMuNWIRYMuVAf9GNTe1RjSWDFaNhlUBWaSE8MDFN4Od4bbDxvyTPuG4FN9qO6tK0+mLPSdN0MlFIs3SGX36tTZkZO5jNGyq1XNndtzlpn3EyYg5huFcZYmluOukVZnxATGPLnIbj2rWs1n6v0VEKiEnZGdhb0nR5f9DgoKKo8VVmVeQxnTD4DALBg24KCjqHGu+tl/dj5+52vWa4XmhthEAZQxhoD2yLyhE4DlWcGwGaOetfh7P2yICh/UECICQNlo5kwYO4DxR5go4d/U3sMlELR+zAobuMqpqksPXOW7Q2s3zJKiX4+BirP91VX8wGZQKpUVXiAthdYLhFxf8Hj4pRBtmQ2BnlE5GYaKJZO71JdM2utXHhQKv+u3fFUTl8t9fMdVZ6TDAMViaeUFJ1+Js2rNFAM0biIeEqylDqRXbb7HhywalYjyK1pil9ZWQhYIGs5wLQ5bllFQzCAlESVFKokUUST+W1eBJ4z8IEyZqDyicjZeJ4v82AENgnTp23jKe0Ya8Vw2AxPLnkSEpUwrnqcIipfsXMFqv5YhV++98ssUbVX8KI31ZvVQsy4mbDM2r6x5g0kpSTK3eWYPmK6sv6FZS+gK96FRxY+AlHKnP/kIZMByO1SCgFzGddX36nB2KIdkR0FHYNhY+dGdMY7Acj6LTUOG3MYKj2VOT8/+AKomJkGikfchoicaaB8rtw6HQY2c9TPiLL2m6dbOAMhJGtGmklpWW8mDJg3w2T9rJraIlkPjDqoUpcsG7mNs8bH0YRoKEY3Qz52j333fAOvppoPGZO8UvlAAdqXh9IHrQj6kkLhFXjl+5dKRO5z86apBHmANU/hAdqgMynSvFWSjA3Y1tmr2Y8R1EUiSprco2agRNPiAqMAir0YraTx2GSrrwh4BHMNVKK4Pkp9QZXNdi4Z5ry4ASAT7bMJjMxWmjcSZhB4gqRkLCK36wPFxvONoWhWoUQ+sHtLz0Bl2xiYM7/5cOvHcvPe3x35O2XZvV/di5SUwh+/+CNumqM1zBxZNhIAsGSbthdeSpKyDWg5DiKl+N1H8r4vmX6JZj2rUIuLcSUNBkBxE39pxUu2v08oGlJ8rn5y8E9Mt+M5Hj7Bh5SUQrg3bPs4DKz/XtAXzBKYE0Lw3Jm53cgHXQDFovrqQHYVnp2edsywMh9LomyfHnBTEsWWsLmwzCoDxbbRMFBKSsvaQOpWROTGDzYLjLp6s9MVTaqcvpqqjxuk8NhLqj2asOU/pG9Bogf77r58bJ2umi/DQJVOAxVWGQm2hCJwCxxGVOSu/iklvC5Ow8CVQkDvFXgkRMnwRWFUpcOQSfmoA6j8aUZ2j23ryh9AeQRemblHVYxHRgOVymmkCUBjpslejFaCBJbu7ysCaUd/I0TiYtE1RIWCVTiHLZpp9pQohccYXxZAKWajeY7j4rLTcvGUBEKyg+t8Gig2nidECVs77XWsYBMKfdCsrwgsVESeElNY37EeHDh8f8r3leWspQsBwR8//yNuej8TRB1UJzuNP7zwYc2+RElueaSGwBGkpITSuPcXh/5Cs37elnlw8/K9wnyoANktHACW7NAGaVbwz/n/BACMLh+tCLoB4Lmlz+H5Zc9rtmXrP9v4me3jMPzr638BMPfPOn788YbLGQZdANURTWSVeQMF2BikDdmU9JDJzFDZXjXw5aJzFT2AhdmkfkYatRF8AdY1UEC2dkudilTrfXoN2rWwl1R7JGErhefJIyKPJES4eS5vMODVsYQppRdeKXRAPDwCp7kmzaEI6mv8BQt8i3Ve/aGBAox/r5QkmTJ+StCpCsRTllq5yL/rdiWAypHCU2kcIyqmVtESJsSczYSBDANFKVX2YSWAYhqovsLvHiQMlM0UXsaOpLgB4JByD3wuXmGAlc4F+TRQQnbvw0RKgkfgsnRs+WwM1AFvPvmGHuz66a0rilWFd89X94CCYsqwKYqIO5aMoaWzBSPLR+KFs14ARzjc+fmdShD1g6k/AAB81PyRZl+iJGUFl53JrdjOy33jRpePxojyEcq6BVsXIJqK4vAxh2N0+Wgs27EMHTFZOD6yYiQICNpj7bCLB755AABw7SytrurCVy7E+S+fr0kVHlEvF29Y6VlnhA0dG7CmfQ2AjH2BXQy6AIoZ7ukfBL1PTD4wQ7Z8LAmDeuDLJShUDPEszCb9bu2MNNPOoTgaqM5YhjHSB1DNoYiyTp16MUrhKQxUJFFQCs+MGYzGU5aukz4VqKRqSsBAAWk3ctXLoyUUNXSh7k+wQVaSKFISzSrHLtYxAOMASqLZgQlDpUHKJ2mpmTBL4clu5Ll8oDQaKFXqV13NmsrHQKXX9yYlsPerlZYl6obXfUEglwYqMXAYKPZ7WvWCyvjXFTcAZC1qWvQMVF4jzeygKJ6SDCtX3XkCKPW4n6+ASA92b+l/8ywfKJ3PnVX8de5fAQB3ffsuZdmba98EBcUxDcfgzMln4q3z3oLACbjz8zuxuXMzjmk8BgCwKrQKZ71wFi577TLc8O4N2Cw9gjmtf8WN796Ii1+9GKP+Ogq3fXM0ooIsHv/5oT/XHPver+4FIDcQvnzG5aCguO2T25T1lZ5KiFREV6+2ijIXWrta0drdCgC4fOblyvKPmz9GUkoiJaXwwNcPKMu/t49coTd381zLx1Dj8UWPAwA8vMeUgcqHQRdAdaZbPujhcVkPoNgMNODh87IkDMynxefiNemvrO3SJc9WyszVneTZZ70uzvRFpYfbAgM1eWQFCMnoeBhaQlHsN6pS2Y6BMXEaJ/L0gNURTdhqVpphNEyq8BKipReTfj8JRQNVGkaoyudW9AuyhUFklwrIAaaTEDNtbIrgmm90DMB4MpGSJNP70ijtmbLSC0/QM1C5A6i4joEKeHgl3R2JixAtaqDUz5ylFF6e/mtW4ffkqMKLFydIKwa8Lh4+F2+jCq80DBQg2zM0pQMXo96ZRnDx2U7k8ZQEt8HYJVfhmWubWMcKj8DZtjLIMFC6FJ6OgfK5eCRSEuworOLJOFp7WuHiXDhm7DHKctYolwmwZ4+frbiTv7LqFQicoGiHXlz5Ih5e+DDumnsX2sgL+GLHY/jL3L/g34v+rQQygGzAqW5aDMg98TjC4YxJZ+BnB/8MHOHwxJInlPUTh0wEYE9IftdcORCcVDtJ0zyZpfUA4O9f/V359xENMgO1pWuL5WOowXrtnT7pdI01gx0MugDKqFEnIAcTVn2g2AxUZqBysyQM7GUvz4jMqVw7Jc+yv5LKSNPmTDefiDwcS2JouQcjK30a1iyRkrC5I4qpdekASvXiM0rhsXOiFLZSePlE5HLaonAGqhQaKECuQmKs3I7uOHqTkqELdX9CrtSRMiaiJfKBAox/L1E0b+VS5hEgcER5YUgShUTz20woGigmIs9RhefRVOFl0uQegQOXrmZlKTy93QJLvbIqPXV7ECt9DyMWSuetQN34WI+eIumsigU9C5sLGd1n8c+/PhjApnZZwG213Y1RayGWwtPDlacKjzne1wf9tivx2PXTM1DZPlDyvbVsxzKsbFuF2z+5Ha+veh1Lti+BRI3P7Tcf/QYAcEidtlHv55s+B094JbgAMkzN+03vAwBePudlnL3P2ThizBGYFJyEYYFhILQMHq4MZe4ylLvLcUzjMTh17I0Y3nsXlv5oNfyuzASyI9aBrT1bsXdwb7h4F/xuPw4cdSDaom1Ks+KT9zoZgL0A6t+L/w0A+NXhv9Is/7jlYwicgHHV47CmfQ3aom0AZEdyD+9BXIwjKdrr3bh0+1Js7dkKALj58JttfVaNgfPEWkQ4msRwAzGvHRsD9Qw2H0vCwF72jbUBrN5u3icqYmMg9HsEbGzPPJSRuGi5Ag/ILyIPR5Oo8rvRWBvQPPybO6KQKDBxeAW8Lq3ex7AKT3VOdlJ4Ll5m08wqHCNxazN7nz6AUnrhlYqBcilBcsbCYNcGUB6XLKIupYA+FxsrUppVpcNACNE0YU4qGrX8RpoAsLWrF4QA5Tn6+6kZqJ54Jk2urmZVWrnomwkrGij570IYqOLYGAiIJcWsknFmDFoKBqdQVPqsNdUGkK7Otc6c20FD0I+kSNEajqn8pvJX4cWSOg2UaBxAufnc2lk2njcEAwWk8PKIyF3MxoCDBBGhqNwq6uYPtS/0MncZ9hu6Hw4cdSC+2vIV1oTWIBSTt73/xPuV7bb3bEd7rB2Th0zWMCpTh08FRzgs3r4YgMxKzR4/W3OMvW5+C5cdNBY/P36isuzhTzdg4fKV0PMsTKd05uQzlWW/PeK3OOGZE/CbD36D/53/P1w07SLc/OHNWLxtcd7rtCOyA08veRrtsXZwhMNZkzP987riXdge2Y79hu6HS6Zdgp+++1P87sPf4b4T7wMAjCwfiaZwE75p/UYRyFvBv76RxePDAsOwz9B9lOULty7Exy0f4ycH/cTSfgZlALX38GzHYjsicrWGwo6RZsAjoD4YwPsrt5s2V7UzEMozUm0rl0IYKKPvTSlFZyyBKr8LHPHjzaVblXUsOGio9aPK59a8RIyMNNXnZIeBAuTBwdxI09rMXp9aYkFEKVgYQJ59L96sdXGvHxApvAwDVapeeIDxZEKUaFaVjhqVPpcSiCct9irMMFAxVPpcOUX6HtXzrS/UYA7fShVeVjk2cyLXMlhAfg2Uku4vio1Bxs9MXWmbECWkJDoAGShrKTy745YdMO1hcyiiav2U+1hGuqaESa9Tt5Dd9kUNNp431Abw8ZqdkAwcu81gZmPAqknVDBQHHi7eBVFKoaGqHgFXAIlUAhu7NqIn0YO5m+dqtD4EBAeOOhCThmQ6Izy95GkAwMkTTtYcjxCCIf4hmrScHikDnzdOV3zB8NxSWbR9zaxrlGWzx89Gubscc5rmQJRERUjeFm3DjsgOpKQUkmISPYketMfaEYqF0NrdiqeWPIUvN38Jmk5gHlp3KDyCR9kv0zydNvE0XHPgNbjhvRvw3PLnlADqoNEHoSnchKeXPm05gJKopKQ6fzTzR5p157x4Dta2r8W3x34bk4dOzruvgfPEWkRnLKl49ajhEXiIEkVKlPKKi9UMVD6WhIExUOoZUV1N9ks1YsN0z5+lgbI3C2UicqMBIJqQ2Yoqnws1fjlICkfl9CebSdUHA6jyuzReOPGkCEK0jr3qc7Lbq8vr4jVGnWpEDJpCG0HPjCg+UCVioKr9maCyORSFm+eUti67CkxEzmavpapABIzT2bmMNAG5go6lglMWgzwWsO3sjmOMwbOkhrYKTz4/xkwG0tVt+WwMWFZHPWnpiORmWXqTEijNXzpvBWrLBXUAVUoNUaGo8rmxfmdP/g1RPIbOCI2KF1RUcZLP38rFTANlkMLLU3zExvP6oB/xlIRtXb2WxgLW9F7ehzEDxZ5h9tztO2QaKrw+NP34Y832sWQMjyx8BJ+2fIrZ42fj5AknY0hgSNYxX1ghN/u9ZNolWesm1U7CRy0fYWv3Vk01HSCn3CnNNqBl46s6gJKohBU7V2BoYCiGBoYqywkhOG3iaXhiyRN4eunTuHDqhaj0VCIcD2PYX4aZXSbt8TgBf/32X7XfKd3A+KoDroLACTi07lB8svETzNsyD7NGzcJ5+56HZ5c9iw+bP7R0DACYu2kuuhNyFunHB/5YWZ4Uk1jfLntQ3fLxLXjhrBfy7mtQaaASKQk98ZRhtQ57OKywUHoH7FwsCYPsFCxoZkSG+7ZR8sw0UMzk0k7wBcg3rVHjTACarvCMPVHSUm0RlHkEBAPuLKq+16DcVz3Y20nhse1zaaCsVB7pX+zMJK8URpqArIFiLtUtoQjqanwlSU/YgVfgkZKoci1L4gOVw1Q2VzNhINOAFrDuFM8CY4nmtjAAMilMIF296c70jfOn/ZXMeiSyOI5ppNjzX+4V8nodKZOtIgQ3iuBd90KNJKwxK/0JdUo2HyJxa1rGQjC03AOvi0NLW8Syx57Ac0oamSFhUoVnxUhTnjjnHvf1YOm7cq+QXYUnysEcG2PZRELgPCDIfmZ8Lh+umXUNnj/reVwy/RLD4IlSisXbFyPgCmBC7YSs9YeNOQwA8PKql7PWsefCigHtm2veRIqmcGxjdt/FHx8kByOvrHoFQMYyIRc8vAcnTTgJD5/8MJp/3IyZo2Zq1i/bsQw1vhoMK5ODsN8dJZt6/uZDWQN23LjjAADN4ea8x2L425d/AwBMHTpVY575wvIXIEG+b95a+1aW+bQRBs4TawGdJo2EgQwdmkhJyEdqKA7Y6Ze3FR+OaCKF6oBbMyM6fC+DfSdSGFFpzXDR7xYgShTxlASvi0c0LmJouSf/B1UwGwDYy6zSpz7nCKbWVaE5FEVDrV/Rrqgr9HqT2W7jWg2UzRRejkaZLC1qZR/yuaVTeCVkYQCtMWRzKLrL9U8A4HPL14A1Jt0VKbxcDFSl34VV2+RZXUajZs0HCshdgQdkM1BqITFjchlDoY+rmYO6KDEnc/lZH1Xly6uBitq0FskF9uLXC8mjNqxP+gtVfrfSJzNfQUwpGSiOI6ivkTWcXhevVMTlgovLZqASKQkeg7HLlU8DlUhheIVXKSJpCUVxyLj8583S2aOqfFi1rVsO4ITMO0r9HZgWSrLwwjbDsh3L0JvqxeFjDjdcf/qk03Hbp7fh/Q3v46oDrtKsyzC3uokHS+Gpzuv+r2XN1bUHan2aAGD68OngCKcYb959/N249sBrEU1G0ZvqlVvIgMIreJX/Gqsa4eKNn/25m+YiLsbx7bpvK8uOaTwGFZ4KfNj0IURJhEfwwMW5EElGct6rrGfga6tfwyurXwEA/OoIrVj90YWPAgCmDZ+GRdsW4e11b+OEvXI3eh9kAZQ8W6w0qsJT3Zz5kMVAqUwKzRBJiBhdLWhmRMb7Fi0PtmxWy1qkFOI3Y0ZBq4PNuhq/xsqgJRTBPmkLgyqfG+FYWPlcb1LMStO5eS7tSkuLz0AVUoVn8QVdKNjLvD2SQEsogoPHBktyHDtg16A73R2+JAFULhF5Hg2UrKVjKTyrGqjMd8jlAQXIz7dE5fSgnrkMuHmEIglzBkonImfP/8gqH1Zuze1To0739xUsyIjqGSgb5rv9hSq/S+mTmW88iyRSlrsnFIL6oB8b2mQm2EqFs1kvPKMiBXeawTd7+TILixEVXrgFzjIDxdi7kekAKppIwS3I7624LoBiz50kFR5AsbYq5+57ruH6acOnaYTkamT807TLFe2gmDGg/aTlE3gFLw4ala03YlqrLd1blL/H1ViINk1w33xZ53TZ/pdplp8+8XT8e/G/8diix3Dp/pdiWGAYNndvxhWvXwG/W862SFRCb6oXcTGOWDKG+a3z0RxuVhg+N+/GGZPO0Ox3Xus8+F1+PHDiAzjokYNwx2d37F4BFJstGg227Ia0YmWg78GmbtRqBnXaQJ4RGT9IctWGtcHWr3jYpFATcBc0kzNz0lWuld8Fr4vHiAovWkIRJEUJmztiOHHKCGV9WFeFp2eZCCHwu3l09aaU2ZJVmHUalyRqOdhkOrX+aCYMZO6vtTu6EU2IaKjdtQJyIDPIdisMVOk0UKYi8hwvrmq/C5GErNFKWNZAqRmo3LSxOkUfiesYKI+AlvaowjDp060snsr4QMn30cgqL+auD+U8rtJ3r5gMVMKEgRpQGqiMOWreACqewrDy0rU5aqwN4KPVO9FdZ22CKbdn0WmgkuYaKErTDKvBM8UKXTiOYEyN37IXFBtTR1bJ10XWe8rr9OlENt72IX7CW2vfAgCcu59xAEUIQa2/1tAzyYyB0mug3tvwHiLJCI4fd7xpEDt5yGR82PwhtnRtwaiKUYV9mTQ+aPoAPOFx4l4napbfdsxt+Pfif+ORBY/g0v0vxSF1h+CFFS/goYWyrxMLkggh4AgHAqLYQTCx+oVTLgTPZZ631W2r0ZPowRFjjsCBow9ElbcKczfPzWuPMKg0UOqgQA+3jQBK37RX3ajVDGqfloZac08QewyUdkYasejMrYbbRAPFtB1McN+QNqTb0hFDSqJKWqrK79Z0pTdK4QGZ2bPXpvbGrFEmC4asBptqnZriA1VCDRQALN4kd+keCCk8ln5gAVRpfKBytXLJJyLPuFdb9elypZlNILs5uB7KBCkpZTGXAbec/jYTkQtKCo/5QMmmuMMrvIglxZzpexZsFZWBipswUAOsCg+w0eqmhOnH+mAACVHChp09lo7j4g18oEQTI808VjDqSW1DMGC5nQtjY5ngXJ22TegE7d4+pvBiyRjWd6zH0MBQjQGlHpNqJyEuxrGjZ4dmeaZ6Vbs9p0vhMafxW466xfQYRzUcBSDTpLdQRBIRbO3Zir2Ce4HTjfOjKkbBJ/iUNiy3HnMr6irqUOGpgIeXJTAUFBKV5Oo/Sb6Hx9eMx+X7X46Xz3kZD5z0gGafzKDzwqkXAgDOmHQGUlIKDy/Q9gzUY+A8sRbAaFEjwz2PjRSeMigqKbzcInLm08IG0YZgAB+u2mno52Kn5JkNBpFECilRQjwl2U/hCfk0UPJAWB8M4J3l2zK+RrUsgMoMlMMreVlEbhBAsdlxvsa/engF3nAQtmu+p2ayUpIEjmRXjRQLjA1ZtEnu7TQQAig2yHaxFF4JReT6qknJZIaqBkurd8YSSkBvpUrS6+LlwpB8Gig1A5UQNSy03FMyVysX+f/sRdCTLghhDcm7YknT1HR0D2WgKhUdYH4rg2iRWt2YgXUBWLm1G+OHluXdXuA4Yw2UCQMFyPeVD9rrrx/PG4J+fLZupyVdWFilgQKyAyh1R4e+BlBPLHkCEpXyNr49bMxh+LjlY7y08iX86IBM+b4SQOkmPOqJR1JMYu7muaj2VuPA0QeaHuOMSWfgdx/9Du9veF8RlRcC5hJ+6t6nGq4fUzkGa0JrIFEJE4ITsPGnG5V1lFIlcGL2CRWeClOtFQC8te4tEBB8fz+5KfNvjvgNHln4CO6dd2/O8xxkDFS6sizQtyq8SHoGymbcPnduETnzaWGDKJsR6btzx5KirZLnMtWMNJosbBDNpYHyujjl4WwI+tEeSWDp5s70d5AHJfYiYlV7sgYq+7bIMFDF0UBF4zYZKNV+EhasKvoCdk2WtXZB4IhCw+9K9IcGKsPyaH8vM42EGuqUD9veSpqRPYNWROSA/PKJxvUaKAHRHDYGbCbNAkFmScImYh05WBb9ZKsvUBof60TkzN+olDoiu8i057HAQCVKzEClJ3uyHssKA5XNypvZGLhzWMHox/P62gB6kxJ2dMfznkM4lgDPEQxLmz6rdW9xnSdVX1N4982TtUK/PPSXObc7deKpAID3N7yvWa4Y0JpMPFIixYPfPIiUlNKYXBphn6H7gCc8luxYYvX0DfHUkqcAAFcfcLXh+v1H7A8Kis83fp61Tq5Od8Hv8qPCU4GgP5gzeOpN9qIl3IL6qnp4XfLvVV9Vj7qKOqxqW5XzPAdZAJUEzxGUGww0LKK3xEClZ6BKGalgrNNhyBhvZoIRILs7d0S3XT6oZ6SZgKIAEbmhBiqhYeqY/cIna3ci4OYxpEymOit1VH3cJIXHztWuiNxjwu7ZZaA8qmq+lEjhKqGtgN/NK1VfY2r8JQ3WrIIFtaXUQBFCZDZW9wyxmXEuBkrNZCo+XRZSrOy5zdXGBdCm6PVpcr9H9oBjL6n8vfDktEzmnM1ZFn26vy/IND7WjjWZYwzAACpPCi8pSkgUwJzbARNwA9bGR4EnShDPEE+JpjYGgHEApR/P2bifqxcqQzjds7XMkx00J0RdCq8PIvKueBeW7ViGoYGhGlNNI8wYMQMcOCzavkiznKU7sw1oWWBHFSaG2QjkwrCyYdjavTXvdmZIpBJYuG0hhgWGYXTlaMNtvj1Orsx7bfVrBR+H4emlT4OCZmmtLpl+iaKZMsOufzPYQDiWQKXPZUifZgbY3FomINt/yOvilSa6RojoBrgGlS2Afr+A9aBAPSPtUVIFxdFAdUSTmlk9szJYsDGM+mBAuYbsxcUqHI1E5OpztW9jwBv+JlGbM3u5F1zGSLOUQQ0hRAksd7UDOUOGgSqdBoodR88YWmOg0imfWDLT7LmIDBQLtOIpUdYjurUMFJBJb5oZaaZUGii/m1fS27lYFn3BSV/Aqln1DBQ7hs/m5KSUyPyeuVN4/ZF+lAt3/JaPI3AcRIlqApJ8KTyjhsL68Zyl8lssVOKFY0lU+VzK+aqD5mwReeEpvH/O/ycoqGn1nRqEEAT9QWzu2qxZzuRi2dpB+e9QNITVodVorGrEyPKReY+z75B9kZSSaOposvgttPj7V3+HRKWc3+m7e38XgNz7r694fPHjAIBrZ2mtGa4/6HpDXy41BlcAFU2aljurKf58YI2BGcxYEgb9y354ekZkykBZrsJjDJSoaZBqB2ZVeJ3pGRADc3oWJaqpKtPPNGNmDBRL4dmtwhOMLSKUgNFyCi9TKZmUaMkaCTNUqbRjAwH9kcIDtIEqgyha0UBl2Bw7zZ7Z98prpKnSOEYTKQ1bw15SLLg0a+Ui6QxrFeF7DpYlmkiBI/YnDkZg1axGDJQv7XE0UOBz8/AIXM5rA6gaO5eYPWPPodUqPCDTk5FSatoLz5VD+qEfz0dW+eDiiaWmwp3RJCr9KgYqodNAqe4ndl6FpPCYyPnnh/zc0vYTaydmCcnNeosyjemDi/4MALhixhWWjsGE5HYaCavxrwVyn7rfHPEb021qfDXwCl6sCa0p6BhqfLP1G5S5y7B37d6a5RXeCpyzzzk5P1vwqEAIqSOEfEgIWUEIWU4IKVwxZhGdsaQyUOthywdKV+1mxpIwRHQvezYj0lO5hTJQ0XhKeVjtpgpcPGc4ewqn++Ax+Ny80oRZHRTotQ5GPlAAUKaYjhZShZdDA2VHRK6k8KSSWRgwsOvSMGAYKJ2RZglE5Ow4+oDXzKlYjQqvAJ4jaQ2U9X59SgBlwQcKkF9qSZFqGaj0S6orlgQxKC7I+EAxDZSIgJtXgrZcLIs+3d9XlHmEbAZKVaAykKC3ODFCpEDpgV2w59DKcdh9xwL5VLpViV0NlH485zmCOotWBuFYQmagDCov4zoGiuNI2ufMXgS1o2cH1nesR0NlA0ZW5GeGAOCwurQj+eqMIzl7LvSdBtjz/r8N/wVHOMsNds/aR9ZJfdD0gaXt1WiPtWNd+zqMrxmPGn9Nzm3rKurQHmuHKOXPOplhyfYliCajOHCUsTD+2TOfzfn5vozCKQA/o5ROBnAQgKsJIfm77/UBuRgojx0ReSKlCXLMWBIGo3RTQ20gi8q1W/LMKPs+MVAmTZTD0eyegYx5alQFUD4XD7fAKQOlbGOQfVuw6+UpQESeSvcoVMNqWwb1eWZSeMaeLcUEq0Ji6dpdDX0Kr1QBpHEKT/7tclU9EkLSbYESlpsJy8eT77UKiwEUK3bQOpFnKhSNjpmlgYrLDFbAzUNIB31mkNmu4gU3fo+QzUDFU0Wp8is2ZJPdfCm84rW6yQX2HFoZWwVdAMWsbcx8oAATDZTBeN4YDFhioMLRJKr8btUYb25jAMjjm10N1F/m/gUAcPH0iy1/RhGSr88IyXO1cklgIzp6d2LmiJmaJr+AzOx9/6Xv4/XVr2uWj68ZD4ETsGzHMsvnxXDrx7cCAC7f//K8204fPh0UFF9t+cr2cRj++NkfARj3D7SCggMoSulWSumC9L+7AawE0DfnrDyQWRVjql/RQOVxFAcyM1AGM5aEIWKgT2oI+tGianAJ2C955rg0pR9PFew3Y6SBopQibMDWsRy+WtdDCEGVz5XRQKXbyugRKFBErngL6ZjBqE3vG30VXqk8oBgyDNQACaAEbQqvVBooj4vP+q3MqnT0YP3wbKXwBF5hr3Kely6A0lThpe+h7t6UYb8+fQDFnn/WyiinBkqX7u8rAm4+y8YgYrOJeH+h0u8yrFDsTYoIRxMIRxPY3iVXpJU6AGTPoTXjXW0Kj2Ul7IrIjcbz+qA8ce6IJJRroJ8cAiyAcoHnCHwubdo2rrMxAORx0m4K7+klT4OA4LpZ11n+zMxRM0FA8HHLx3jwmwfxyqpXMH/LXCRIE7ZGmrC5azPWta/Dbz74DS584yhs9cq6oF8ell3ht2zHMjyz9Bnc+smtWetGlI3Atp5tlvrJqfHssmcts11MSP7qqldtHYOBUorX1rwGN+/GOfvmTtWZoSh3PSGkAcB0AIWHghYQ1ul61FACKN3N/INH52HCsDLcfGKGHIvEU6hTdX9XsyRG4mSFgfJoH6R4SsL27l6MqEx7faS3s1OO7E93ki/Ub8YtZAd/vUm5MkZf2TR2iDwINepYFUbVSxJFwiSAqvS7wRH7AZ7iLZQQNdfFbsCo1qn1BwNVW+aBW+Awqjp/5/X+gN5Is3QaqOz7KaVooHJf80q/SzbSNNFUGKHC50Kthf6PCgMVkV/odhgovSFgRMX4VPndOavwCjG3zQW/W1B+Q4aozSbi/YUqnytL59mbFHHwHXOyAiujNinFBBu78hmuApnqT3bfsvvZyN9O8YEykEEYWVg0DgkgmhAx/db3lGUz66vx4pWHKH8nRdb0Xh5/Ax4+ZxUeII+T6hTe9q5efOuuj/HED2dh+phq6NHU0YTWnlZMHjIZVb4qzbpNnZtw3JPH4ZajbsH39v2eZh1HOIwsH4kt3VtwxRsqTZMX+OE7AN7RHodDOU4Y+12cNum0rHNg7ufzW+dj+Y7l2GfoPsq6/Ybuh01dm7CybSUmD8lOTFFKcdRfPsLVR43H2QfUAQDWhtZie2Q7ZoyYkWU7sGLnCnCEw8TaicqykyacBAD4bONnWfu3gnfWv4OeRA9mj5utcSW3gz7f9YSQMgD/BfATSmlWYylCyOUALgeAMWPGFHyclCihuzeVlZZi8PDGNgYrtnYpfeEYjBgoQGZJygxeTEYd2dmMqKktogRQUZtpKUB+uKKJVMF+M8MqvPhotdbcjdHu+sqm8w6sx8ThFRhaofU1qvK50RFNKFS3UQB11szRmDS83HaAZ9ZfLZpIQeCIZSZFrVNLSVLJReSXHt6IYycNLflxrMIjcCCkH0TkLj4roGAv/Io8L8kqnwttPQnlGbTCEl5/3ISs59MI7D4xZKDcKgYqTwpPb4rLWDMzRIqcXhtR5cUX67TtYyJxseQBSCGo8ruweLP2XmgJRdERTeKcmXWYOKIcAFDhdWHyiIqSnsvIKh+euGQWZtRnBxN6CDpd05aw7Ndn1OTdLeTXQKnvtdOmjwJRbf/R6p34Yn2bxlRZ3/Te79ambeNJMUvQ7hW0AdSyLWFsTX6A/yzbgUDgQIwoGwGfy4dNnZuwvmM9/vK5nL4z8kl6ZdUrWB1ajQtevgBV3qosg823vv8WXln5CkKxEEKxEJo7duCblp3YZ2QFKv0CBCLguHHH4aBhZ+H8h5bhpzNnZh0DAF5eJeuoCAgeX/w4/nTcn5R1xzYei7fWvYWXVr5kGED1xFNoCUWxclsmZPjdR7JFwg0H35C1/Vn/OQspKYVVV69S3nPDyobBw3uwOrTa8PzygTmr//6o3xf0eaCPARQhxAU5eHqaUvqS0TaU0gcBPAgAM2fOLLjbj/6m1IPN0NUBFKUU4Wgi6+HQD4rqZrVG7FFGRK7WQGW8oFh37kIElX63gEhcxUDZnO021sozop3dcSUwMusZWOYRcMSEIVn7qPS7sKk9qgQ5RhqoCq8Lh4yvtXVuAOB1Z8rP1ZD7meVvDKrsR6VTS4q05N5MtWUe1JblZ0b6C4QQeAVecQkvnQYqW0TOAvLKPF5NVX431u3syRhpCvnPsa7GjzoL58Vm7GEjDVT6memKGTPUgiqA0pviVvldaA33mh43mhBRW5b7e9tBYzCAlxZsQSwhKq7+0URKKfAYSJDZOW1wyQpnzj+oHvuNruzX8zEau4zg1qXlmOhbz7wDFn2gVON5mUfA+QfVK3/7XDw+XrMTreGYktXQtxzzu3ml6hgwY6C0Kby/fvUHhDz34475wB3zjb+nwAn44fQfZi1/e93bqPHVYGT5SJzxwhmYc+EcHDQ60/x3yrApmDJsivL3/OZ2nPXAXNx97CwcvlfmGi/bIpsuiwa5xc7eTsxvlU+MguLxRY/j9mNvh8DJ1+q0SafhZ+/9DB81f4RfH/HrrM+za6S+v95Y84ZhOq0l3IIVO1cAAOZtmadxQh9dMRobOjYgKSZzmmXqEU/F8eXmL1Hjq8nprJ4PfanCIwAeAbCSUvrXgs/AIsJ5Aij20Khf1NGEXLETjiaVgVe259dWveTqQg9kHiS/ipkZUemDm9d2547E5ZJno3JZM5SpGCi3wNlmFlhFnVrYyGbpZhWLesgaqKRiE2BX55QLzABS/1K2m7bwujgleEhJUkmNNAcqWGDr5rmiVYVlHyPbVLYzmvvZY6j0uRCO2DPStAqmGWlPn0uZ7qUGyGXgRlYLjJWSKM0yR6z0uXMyYBGdZUJfwVy1N7ZnntdI3H4T8f5Apc+l6ZMJZDyQ6gdAg20zMAaKBfItoSgEjihtVdTIqYFK5B/PM+Nv5j3QqUw45Ocl4BEUNgsw9qTyqETkW7q24H8t/wKoC9OCJ2PmiJkI+oJwcS4MCwzDzJEzce6+5+I/Z/0nS9gdT8Uxp2kO2mPt6Ih1IOgL4sRnTlQCECOY9pDUNRNW470N70GiEoK+IABgR3QH3l3/rrK+sboRLs5lKiRngdPOnjCeXPwkjnzsSHQnunFU/VFZY9vb694GIDNdTyx+QrOOCcm/bv3a9PsZ4b7590GkIs6efLatz+nRl6f2UAAXAFhKCFmUXvYrSulbfTojE+h7u+nBcQQCRzQMlFoc2hKKKo1zRdUMFMiwV2aVeKz1gzo9IJe0+tDSphoI0z2h7Lzc/G4B4Vgyq0GqVbDy3ua2CGY1ymWfygsvD2PAwDRQ7PsXw/OGQc3uqWFXOOt18emeTBKSqdJroAYi5GuZLKmFg5EPVIfFAKrK70J3PKXcR8U8z2wGSjsBIgSg1NjsU21joGeT5Xs/hxN5XCxqhZnazXrv4XIKLKIz9h0oYHIJ1icTkCdqwYAbFV7rs/3+BgvcWVDUFIpgdLXPkLXOtAAz0EBZsLBorM1MYA/fS16WYaDk6+d380oaPCVKkGi2oF2tgTrxmRNBIaEmcTWOH3kp7jh9Cqzii01fIC7G4Rf8EKmIrngXXLwLxz91PNZdtw5uPvudkCkS0Z4Te270ru4A8NJKOeF0xYwr8M3Wb/Dehvfw6MJH8Z29vqNsM6J8BDZ2bsSYu8fAxbsgEPlapqQUehJx7PRG8PTmMJ7eLO+/3F2Ou2ffnXWsV1fLInEKiqeXPo2/zv6rEjh+a+y38OLKF/Ha6tdwcN3Blq/TP+f/EwDwuyPzO6vnQl+q8D6jlBJK6RRK6bT0fyUJnoBMVJ/LcM8taPvCqQdGNkOIGgi9zV7yDBFd6wiGxtqAZuYRLaArecDDKz5QhWgtRlX5IHBEcx752Do9qvxuxJIiutKfs9vvLhcy1za7Cs8uAyXvR0SyHzRQAxHsWpbKA0o+hnkKL19Azl64bRG5MquYadbsKrzMvcNxRGGHjVgvXjWT1luSVPlciCREU/84veVJX1Fv4GYdLfDZLzUyHnGZcbQlFBkw7vxmYIE7E5HL52xcTauk+wx+fysFBEPLPfC6OLSovKH0Egq5V6McQJlZKngFDpQCW3u2YfH2xfCTsSiXZuf14dLjrXXyK/iUiadg7g/nYmT5SHT1dmFT1yYs3rbY8DNmnQb0BrQMEpUUAflZ+5yFqw64ChKV8OrqV9ER61C2O2XvUwAAm7o2YUPHBqxpX4PVodVY37Ee2yObIZEOuFCBC6dciPmXzUfnLzsxeahWL5UQExo/qc54p3JsAErA9unGT61dIACtXa1Y37Ee42vGY3j5cM26BVsX4J4v77G8r0HzFjLT9ajh0XkiqV10m9NMkZElAXsxmZlp6puXMtQH5QCKqh2ObQ6EsgYqhYjJMfJB4DnU6q+l2gAARLhJREFU1fg11TLsWpkJ7vVgA+W2LlkLUtQUnirwUaMQBkrejyRX4e2BKTwWRJQyePS6Mjorhs5oEm6By8tMsvtoZ7rZajF/I0VErlThae8dxigZVQpqGChdbzvFjdwgjacXnBcDlT4XagJuJeWeSElIiFLJfZQKgdJoPKIeRyMDxtrDDIoPlCSBUoqWtqih/gnI5wOVfzyXTZUDhhIKNv76PbySOk6YBVAuHqIkYm1oDTjCIdj7WwD5exHq8crKVwAAZ00+Cw1VDfj8ks8xdfhUAObGlpISQGnPSV/NyLBo2yJ0xjtR66/F1GFT8Z29voOhgaFISSk8t+w5Zbs/fuuPeP+C9/HBhR/gk4s+wdwfzsXCKxZi3bXr8I+jvkZd7EXsy/0Hj5/2OGaOnGnI9DFGbVhgGM6YdAYICP69+N/K+tEVo+HiXHmb/qrxh0/+AMBYgH/LR7fgJ+/8xLLD+eALoHKwKm6B0/hAaVN4WgZKPYM10+kwmDFQDUG/pjt3tICu5LIvjNinmW59UOuKHo4lLL3wGBizsD0dQHlKkcLLEpHbCzbVOrWkuGczUKXygAJkLUYiJWn8zWRTVuMelGqw9Hpbj/wCKeZvxHEELp6oekZq7x0WgBgGUExETqniCF2mpPC0vSDVYOn+YuuT6oN+ZTxiPTgHUiNhhkoluGR9MkW0dvYOGHNZMzB9ZCJFEYok0B1PmbJmrpxO5NbG84Zav04DJTvis8rKMpUGik3wjXygIrQJEqW4bNqPwUlywU4ujzI9tvdsx7qOdRA4QfFICvqD+NvsvwEA3l7/tuHnFAZK93yzeErUMVAsfXfW5LNACIHACbhq5lUAgAe+eUDZzufy4dixx+LoxqNxeP3hOGj0QZg2fBrG1YwDFSvAwYtwNJHTQPSVVa8AAM7e52xcOfNKUFC8ueZNhKJyJSshBKMrRqM91o54Kp7z+vQkevBh04d4dtmz4AmPK2deqVkfS8YUHZdea2WGQfMWCkcTIAQ5c+9uHQPFgq6xQzKpNiMHbFYNY5bCM9MnKQLCdPBSSMmzP/1w9WWm25A2d2NMWGfasd2qFkthoDpLwEAJJim8hGjrpcGCunhKRKofeuENRLCAuJQaKJ/CxqonIglLejoWjLR1x8GR/L5RdsECR6+Ly9q3ut2GHkoAJdKs55/d+0aGkXYbXltFQzCQGTP6ycm7EFSpNFAAsCktfB/wKTwhw0CxQNWMNXPl1EBZG88bggFsDEUVLRHzK2SaWeb1B5gzUCnagRTtgZt34ewJvwAgv7c6c+jz9GAv/4NHH4yAO/N9Dxh1ADhwpik8UxF5OoLSi8ifX/48AODCqRcqyy6bcRkICJZsX2KJDWL3lESBHp2xrBrMKuGcfc7B0Y1Ho66iDiIVlXMAgGnDp4GCovLOSgz/y3BM/MdEzHpoFo587EjMfmo2vvvsdzHxHxNReWcljnniGHTFu3B0w9FZAvw5TXMQF+Ug7JGFj0Ci+U25B81bKBzT3pRGcPNaDRSjUqeNrlIo1qhBaaqZTochEjd+2WcEhBl2y+5AGHDz6UrBRMEMVEPQj0hCVGb+zAXXKhhzoARQRdVAmaTw4vZE89oUnrQHi8hLncLL/r3CUfMelGpUKQxUvCQ2E+ylYxTQsMmHfhatXiZSmtUyiQWGRqkSo3R/MdAQDKC1sxe9yUwLp4HIQLHfk7EgjOUe8Ck8LqOBYtINs6AvVxN6q+N5fTCAhCgpEohwTNtyLOCWWd2kKCkyEX0AVRsYBjfGYN+h+ypyjGmjqwwDezOw9Jk6sAEAj+DBmKox6OjtQLg3nPU5RUSe1UxY/r9aRB6KhrCufR3K3GWYNWqWsnxk+UjMHj8bQKZqLhfU3yscMf6Ord2t2Ni5EWWuMhxcdzA4wuHaWbIz+r++/pey3VmT5d57cTGO7ZHtWB1ajfmt8/HJxk/w7vp38fqa17E6tBoSldBY1YirZl6F5896Put46vTjtp5t+Lj547zfY+A9tSbI1QePwSNomwJ3xpLwCBz2Hl6OlxZuQWcsachAsYBBr/1giCZShiZsIyq9mu7ckUQKYzz2ZmcsaNrZHcd+owrzValXBXJDyj2WGQMGFmxtVRioIop/TQT6UZO0qBnUQv+kSItaIj9YwO7TUmugAG3KtTOWxJia/Pc1u49CkYSSFi8m5LRH0jCtkouBUmwMpIyNgV4DZVSJp7BDRQ5umIfcpvaoiuUaeAyU383DxWd6BbIX+0APoNS6puZQBDxHMLraLIWXWwNlZTxnlZUtbRGMqvIhHE2gUqU/VRoKJ8SMiFxfhSdw4KQKlHsq0BKKoswjYOyQAGJJMd2fNPf9IVEJH7fIL3wm3lbjkNGHoDncjE9bPsXJe5+sWaf0usxqJiyfozrF9trq1wAAJ4w7ARzRfocfz/ox3l73Nl5Z9UreVizqlHk4lsAYZF9n1mNv9rjZyrEumnYRbppzE5bsWILVbauxd+3eOH3S6bj3hHvRHe9GSkohJaUgUQk8x4MnPHiOR0NVA45tPBbDyoYZno9EJbyx5g0AwBFjjsAnGz/BgwsexNGNR+f8HoMngIolNTelEdwCp009RBOo8ruUVNvGUNSwaa8ZS8JgViEn8BzqqjN6hkJKntnMuau3cL+ZBlUq8YCGGoSjSU2rmnxgVP32EorI4zqDU7ul22qdmqyB2hMZqHQKr8RVeICWjQ1Hk5gyOj8DVe51gRB5RrurGCgzZpLnCFJSNgNVmUNErgRbRQ5u1N5t7LwHYhWe3CvQrbzsmkMRVPtdlv3ldhXUPlDNoShGVfkMGwkD8n3BEbNeeCLKrKTwVFYGh4yX7yV1AU9AZZjKmC69zpRNNCmlaE5XOrJxuSuWzDsmL9m+BJFkBBNqJmBIINtw9PRJp+OZZc/g5VUvZwVQUo5mwoCWgXp00aMAgCtmXgE9jm48GhzhsGjbopznCshjCquaNxPKP7nkSQDApftfqiwbEhiCkyecjFdWv4Knlz6NPxz9B3gED66ZdU3eY+bCgq0L0BnvRF1FHe454R5M/9d0vLTyJfQkenJ+btBM4zujibwMVLaNQRJVPrcm1aafgQLmLAlDNMfLvqE2gKa2DANld7aqHjgLnYWOrvaB54gyQ7TC1qnButKXogpPNn3UXtvepARK7c3s1Tq1lLQn+0DJDaRLdgwDU9mOqHkTbzV4jijp4FIEuOwlaBTQsOfIqJkwOzdRZaTJtF7lHrmRsdEgHi0RA9WomvBkJAUDj4ECtK1uWkJRUzuAgQS1D5QV2wUXr9XOMsgmqvl/l+EVXriFjKmyXkLBJsaRuCqAMvCBAmRNUEsoiobagMpGIn8a79mlzwJAVu87BiYq/3zT51nrzHpdZlogyefc2duJuZvmwsN7cGTDkVn78QgejK0ei854J3ZEduQ833AsqTB3Rt8vJaUwv3U+XJwLx4w9RrOOsVtMYF4MPLXkKQDABVMuwLTh07DPkH2QEBOKYN4MgyaACsfy63r0NgYya+VS0g/NbRFF12DEQMXNvGBy+LSwihpKqe3KMsC4q7xduHgOo6t9mQc4lkB1wHoKj800WTqhmCk81oJE/UIuRDirTi3t6VV4/ZLCS/9evUk57WCliSuQ0c2U4hxZ2sPoOWH3kpl1Ak8IpDQDpTbFJUQO+sIGVXilYqAq/S5U+V3yhC5hXFU4UFDldyla0qa2iPLSG8jItHKh6XPOHfS5eQ5JXTNhxcLCwu8iWxn4lcKAjmjCkIGKxEVzHyhXRrC9qT2KhqA/pz5PDya2vmDqBYbryz3lqPHVoDncrBQbMZiLyFkAJf99//z7IVIRp048VWnZosfR9XLK65117xiuZwhHk8rvYiSU/3zT50iICRw4+sAs888j6o+A3+XHqrZVloTeVvDiihcBAJdMvwQA8PNDfg4A+NuXf8v5uUHzFrKmgdLaGLBqNJ+bx/AKL5pDUaUawqdiWYxYEoZ8Pi0NQbkX3eaOGCRqv5ddQMNAFT6IMk+q3qSI3qT1Fx6DOjgtpogcyDZnjCovpkJsDGQfqD0xgPIoVXiltDHQpvDseoqxNHspGEJ2bsYpPHMNFFsuSkCPwWTIrKGwUbq/WKgPBtASiipBmlEPzoGASp/cDy+eEtHaGRscDFT63tvR3Yvu3lRe2wWXwGWl8JSOFRbHc/Z7sqb36vGX3W8RVQpPH0Cx91EszbDXBwM59XlqbO/ZjnXt61Drr8X4mvGm200ZOgUJMYENHRs0y8U8KTzGQN0zTzaY/L9j/s/0GOfudy4A4L8r/2u6DaUUnbGEwgwaPXv3z78fAAx7/RFCMHXYVCSlJFbsMG9RYxWbuzZjS/cWjCofhXE1cmPbs/c9Gz7Bh4XbFub87KB4C4kSRVdvMm8aIcvGIJaZCTTUykxRNF39pa7mM2JJGPL5tLCbYHmr3FXaPgOV3RS1EDQE/Whpi1ryyzICC07dApez0rEQ+HTmjBlxrh0GSuVELkp7pJGmrz8ZqLSIXHEht9FXEQBcJRD5M2bB6DmxFkBJhul41spIj0giO91fLDQEZe+gaKKwJuL9hSq/3CdzU3sMlBo35B1oYAHUuh2yfiUfa+biSVYAZdfCorHWj5b2iGEXCHa/ReNiDh+ojE5K3p/1FN5dc+8CBcU5+5yTc7vjxx8PABoLACDDQOnH/YwBrWxoua1nG6YMm6IEGUY4bMxh4AiH+VtMOiAj06N2SLkHATef9f2SYhKvrX4NHOFw5uQzDfdx0oSTAOQO1KzisYWPAQDO3fdcZZlX8OL8Kefn/eygCKC6YklQmn8QV9sYUErRocpFN6QZmoiJ/5BRCwsg87IvMxng2ICyolXuXG2X7ldv35eZbkMwgO54Chva5EHDThUekLm2paie8rq0wWm0gLSFWqeWKpFIeaBD0UAJpddAxdO/l5UOAGqw+6gUDFQuETl7jnIGUGkNVBYD5XcbpvCiBun+YqEhGEBrOKakx/xF1B0WE4ydY+mpge4BBWSC9/XpACofa2akgbJrYVEfDKA3KWHNtm4A2neVFQaKTRBZ4KYWkedioCQq4cFvHgQBwa8O/1XOczxvv/MAQNP0F1D3wtPbGJB0UYiEX82R9337MbfnPIaLd6Guog5be7YiKRoHfuyer/K5UeV3K38zPLXkKcRSMcweNxtl7jLDfXxvH1nrZcUyIR+eXvo0AGQJ0X9x6C/yfnZQvIWs9nbzCLxyg/YmJSRSklIxUh8MoK0ngR1dvYbpOP1LniHfy571oluxNc1A2aTiNQxUH7QWrDR60aYwAPsMVGU64CqmgJzB4+I1wWmkAOEsG2CYE7VrD2SgWHDbPz5Q2hSe1corFmiVwmaCtbIxZKBy2BgAsrhclIxNcc1SeEbp/mKhodYPiQKrt3XDI3ADdkJQ5XchlhSxerscGAx0CwNAy0BxBKir8eXc3s1zSOqMNO1aWLDrsmhzGIB2AqswUAnR1AeKTVzkvog8hpR5lOKeXBqoN9e8ic54Jw6uOxgjy0fmPMe6yjp4BS+W7VimWW6mgQLkoKon0YNPN36Kam+1plmwGQ6tOxQUFB80G7eOUY8plT6XpuUaANzx2R0AgL8c9xfTY4ytGQuf4MOynctMt7GCSCKCNaE1GF42HPVV9Zp142rG4djGY3N+fmA+tTqEVRFrLsg2BrrUQ/ozjMZdubXLMBjyunj0GjaUzP2yF9IC7hXpFF6fGKg+6CDYLGtxOoAqVANVigDK6+I0/lwRk3YcucB0aj3prualLOUfqNgVInIrTbzVYBqoUlThsbSHIQPFbAxMAighncKLJMSs56zSnz2IAzBM9xcL7Hld0dpV9Cq/YoL9nks2h1HhFWxPzHYF2PMRSYgYWeXLSpcZba9vJmy3gIAxc8r4q0nhGVTh6cYvj0oDVR8MgBCSLu5x5Uzh/e6j3wEA/vStP1k6z7FVYxGKhZBIZVifVI4AiiME72+5DxKV8KMZP7LU3YKlwlhloB7MMqTK58r6fmtCa7C2fS3G14zPaiysx6Qhk9CT6EFbtC3vOZnhga8fAAXF6RNPN1z/1vffMlzOMCjeQuwC55sFq20M9FogJiRs7ew1DIY8AmfIQFmpkmmolZ2FAftBkHq/fWGg6qr94AiweJOcSixUA1XMCjyG7Co8+y0ymE6NMVB7ogZqVwRQHTZTeNX+Elbh5bAxyMdAMRG5UWPwKp8b3fFUlg7GLN1fDDArg9bO3qJX+RUT7PdcvKkTjbUBy+2hdiXU954VxswlGGmg7DFQI6t8cPNcZvxVi8hdagYqdwqPUorG2kya1IihYdjesx0Lty3EiLIROHTMoZbO87AxhwEA3lj7hrIsHwM1f+d/wRMevzvqd5aOcfxex4OA4LONnxmuz7yb3aj2uzUpyhvfvREA8Lsj8x9r9ljZ+dwsULOCP30hB543H3Gz4Xp9BaAegyKA6rQ4iKtF5Hrthjp3b8pAGaXw4vlf9uqH1O5gyHNEeXj6MhN1CxxGVfsULyerVVMMVYHSpfCyqvAKFM56XRy6GQM1QFMepQS7T0rqA5U+RkyVwnPxxPJ9XVINVA4bg3waKI6TDQONHPDZOXfpZvpmPTCLgSq/CxXpZrOl0FgVC4zB39bVOygq8AD5HmBxnhXNlrEGyh4DxXMEdTXG46/Ac/AInKyBEk2cyFXjrvo6m+nzAOCXc34JALjxkBstnSMgN+UFoPE3ymigtOeUEBNo515Fr9iFYxuPzeodZwaBEzC8bDhaOlsM16sLUyrTRQoAkBJT+N+6/6HMXYbv7/f9vMe5aPpFADLu6Hbxxuo3sCOyA4fWHZo3/WmGgfvkqqCk8PIEBR5BzmVLElVSD4y18rsFDC33YEd33JCB8rq0FggMEQsve/VDWshgGHAL6E0m+jwTbQgGsKk9ZuuFx6AwUEW2MACyg9OIhaDUbD/djIHaA400Pf3BQAnZKbxKn9t6Y2ofS+H1MwOlVOGZOE4T2Yk8YqSBUlU7BcsyL4lCmoNbBSEEDbUBLNncOWAr8AAtkz0YPKAYXJwcFFlioPhsG4OoUjxk/fdvCAawfqcstq/QTfYDHgHRuKg8X7kCKPV1rvK5lKBMDUopnl/2PDy8B9ceeK3lczy68WgQELy55k1c89Y1qPRUYsnGJDr5Hfjth18gkoxge892fLHpC2zq2gRK5ODqrtl3WT4GABww8gC8tuY1LNi6APuP2F+zTtFA+VyK/pBSij9/8WckpSQunXKppfFmQnACPLwnr9WAGW547wYAwAMnPlDQ54HBEkClI1Q2YzMDG2ATomToX9MQDGBHd9yUgWqPGFTiWEg3aRioAgZDv4dHKNL3mWh90I9P18LWC4+BDZT6FgPFgKwv01bhEWI/Xeh18ejplX/XUpTJD3Qog28J9V8cR+DmuYyNQTSppHGsgE1YSpFi9ViowjM10uTSRpoGjcEz1U5aBioSF0vqEF4flAOogcxAqbWU+fyUBhIEniAhWjtnN89l9UFVLCxs/DbsWBVeIYsJ9bt5RBIplHkFuPlsqxh19bOegVqVruxT45GFjyCWiuGcfc4xNbU0Akc4NFY1YkN4A+6bf19mhRu4XZVxIyAYXTEake69cfK4S7Dv0H0tHwOQW8e8tuY1PL7o8awAqjOWhM/Fw+viUeV3pSc2Iu756h4QENz5rTstH2d8zXgs37kcvaleeIXsfrVmWLJtCVaHVmNS7STsO8zed1Nj4D65KoSjSVR4hbyVKiyqj6ckw8q9hlo/5jW3G9LyPpMUniJ4zjGQqh/SQhmofMewAhbIFSL0rCphFZ4+hReJyw6/doM8j8BlNFB7IAPl7QcjTXacuCqFZ+d+UqrwSslA5fCBytXKJZ4SDU1x2Tnry8WjiZRl8XwhaEwzDQNZA6X+7QdLCg/IBNJWWDO3wKGrV5e+jdv3qmPHMrpnAm5BEZEbTYDU425jbQASlfDnz/+MT3YuwNpYO7734oMI94bR1NGEbZFt6I7LQdVd37bHDAHARxd9hM82fobeVC+6E914fek6LGzpwf+dciAqvZUY4h+Cg0YfhIA7gANvfx/DvUNtH+Psfc7GRa9eZFiJx3rUAoDAR9HNvYtjn7gD2yPbcfDog1HhqbB8nKMbjsbyncvx4ooXLfk2MVz55pUAgHuOv8fyZ4wwSAIoa7242Aw1kZLQEU3AzXOaEmQ2ABj7QPFZsxBAlQvPEViMqpJ70UmUFlTyHPAIcPEkb7VIPigBlM0KPKC0VXgeIdsHqpCZvdfFY0eazt4zNVClZ6DYcdjvFY4lMaoqdxm4Guw51acoigH2vY3SKiyAMmOgOELQ1WtcEJJxfNYxUAkRo6pLy0ABA9eFHJDPTRbg00GVwnMLctWulabqLp5oeqgC8m9PiD1JQ32OCazfwyOaEPMGUBwhqC1z4YAHD8CCbQvklRzw/PL0PwmHMncZ9gruhR9O/yFGVYyyfH4MdZV1imM4APSEVmJzSwuumHl81rYCx2maCVuFz+VDtbcaq9pW4fv//T7iYlwJ2JZv3YZosgdD/pRAW6wN8ADzWoEyd5ntdNoFUy/AP+b/w1YA1drVirmb52Jk+UgcN+44299NjYH75KpgpQ8ekClzTogSOqNyHzw1y9GQY8AyM9KMJlJ5fVrcAodRVT6EeuIFlTz73XxRtBbMC6oQBoqlXkplpKnWl0Us9pjK3o9aRL4nMlBMA1Xa764OoDqjCewz0vqMkKXZS2mkafSssImL2fMn8EQRiRtV4QHZjs/REmqggMzzOpA1UIQQVPlcSKQk1Njor7mrIXAcRlR4LU0IDTVQ8RT8LnsWFuz9YmQhwxioeEo0nFzIwncCj4vDIY8eggXbFmC/ofvh+NE34IkvtuO5y47CxKF1GF423PL5WEVKpDlT36JJAEUpxbX/uxbf3fu7SrNiNQ4bcxheX/M6nln2jOHnYzEg6B2K3p6puPvEG3Hpgd+ynZU4YOQBEIiAeVvmWf7MVW9eBQqKW466xdaxjLBLAihKKf750XqcNGWEJVo4HE1a8jViA2w8KRr2zlMGLAPKXM+SMEQSKUvVcQ21AUMGywoCbqEo1T51NX4QkjHFtAPWlb5UKbyEKOG6ZxeCEGB+Uztqy+2fo8/FoyfBbAz2RAaq/1J4bDLRYaEHpRoCz6HcK5TISDPtA2UQcPAcgc/F52wm3JFO0+iDonKvAEKym5rKgX7pghv2wh3IGihAnlwVknLflRB4ojSRzwdjI037FhYjq7xw8cQwW+J382jriSORkkx1phwBItI6zNsSweQhk7Hg8gV4a9kOvPD5Qowum4jhZeXKtp+u3Yn2SAKnTLPPQH28Zie6e5M4aYpceSZKkmmgmCuA+rD5Q9w3/z68seYNrLpmFajkwj1z1uKaY8ajzCPgXyf9C0cvOxoewYOAK4CAO4BKTyV++3ILxgdH4eELjkFLKIFv3/0JRvj3Kej+IoRgTOUYNIWbsKptFTy8By7eBZ7wSEpJpKQUkmIS69rX4aPmj/D+hvexaPsiBFzluHT6pbaPp8cueXK3hGP48zurEU+KuP7be+fdfntXL8bWBvNupxGRxxJZTMz4oWU4duJQHNBQk/VZPUvCwJxh8+GUqSMxYaix7Xw+HDtpKOpr+06PewQe3ztgDA7fq9b2ZwkhOHvm6II+mw+zGmowbkgAS9IuvV4Xh2MmDrO9H6+LB2skvidqoGrLPDhu8jDMrM++f4sJJvrvTYqIJUXbjOZZM+owta6y6Oc1q6EGx00ehtoy43LqM2aMwqHjje9fjiOKzkUfgHEcQW2ZB1s7tdVO0USqZD5QAFATcOOUaSNxiMk5DxScMnUUKnwDO8jT48QpIzCu1tp4XO4V0B5JgFKqvMQLsbAQeA7nzRqD/eurs9YFPIJiY2DEQFFKkeKbkBAj2Du4NxZfsRgCL6j0eVp29L4P12FjKGoYQFFK8XHLx5gxYgbKPeVZ6++dsxY7uuOZAIoWxkD9/au/wyf40NLZgn/O/yemVn0fD3y8HvuNqsSJU0ZgRPkI/PTgn2Z97ub4+xhVMRQewYMqHzX8fnrc9P5NAIA7vnVH1rrD6w/HhvAGTLpvUs59KKAEs0ffWJQJwS55KlpCUQBAc/r/udCbFLG1s9dyNQUga6DC0SRGV2uDEo/A45GLDjD8LGNJRIlqKigiiZQljcIZM0bn3cYMZ82sK/izetxx+n59+OyUop2HGoeMr8Wcnx3V5/2o2bE9UQPl4jk8dOHMkh+HGZ92KQa29tjC356c20G4UOw3ujLn97/tVPN7X+CIUoBglJZrCPrR0p4ZjxIpCUmRlpSBIoTgnu9NL9n+i4Uff2uvXX0KtnHTCRZfppC1Sz3xFEKRhBKcF2ph8ftTjCu6/G5ebiZsooHa0r0FCakHPpcXS69cCoGXj22mz2sJRbG1sxe9STEra/DW2rdw0rMnIegL4ueH/hxXH3A1Au7M+7M5FEV7JK6ci/6dp4Zs/5FNLDR1NOH1Na/jpsNuwtetX+O2T27DLbOOSe8/YnZ5QClNS3LkMYXZPXTmcFvf1LkJf/7iz5CohLP3ORvTR2ifmesPvh7PL38e8VRcCYp4wsPNu+ERPHDzbowqH4Xjxx+Pkd6ZuPM1EcP4BtPj2cEuCaDYBW7JcaEZNqYHNSuGaIwaTaQkdMaS2HeU9ZkzuwnjKa3Rnmy8N3A1CnsS1LYHe2IA1V/wpLVmTBNkx8ZgoIIjRGEvjSZE9cEAPl27U/nbrhO1g8ELJu1oCUVUAVRxLSzK0gxU3CSAGl0xGtUjD4BP8ILjM8+bkT6PkQoAsKk9ir2GaVmme+fdixFlIzBl2BT84v1f4K65d+HWo2/F5TMuR088hbaeOAA5E9RYG0BKzBFApR389fjn/H+CgOBHM3+EUDSE6f+ajudW/R3AGTnf66xHrbpoyeficzZM/uf8f4KCotJbiRvfuxHvXfCehj2aMmwKYjfHTD+vxgvzN4HDEjS35SdvrGCXvIVYZ++mtggoza3wb0pv22iDgYqnGSg7Az8TT+uF5JG4NQ2Ug9JDXaW4J6bw+gtMRJ5x8x884mEzqF8QRhOixtoAtnfFlcCpkHZDDgYnmBZN/VKNJopbQOB3C+hNSoglxKw+eAwBlx+EaNdVBbItNlpUmRv2fmRYE1qDd9a/g6sOuApvn/82Prv4M0wITsAVb1yB5TuWK+9eIPMeFql5ACXwcg9JNSKJCB5e+DDOmHwGRleMxtThU3HB1Avw1Y6nkSI7cgYnmR61qiDRb9zMGwBiyRgeXPAgTp14Km458hbMaZqDd9e/a7r/fGhKB3fNIePYY+6mubj141vzxiUMuyaASt8AXb2pvLlPFs3W11gIoNI3ZndvMq3dsD7w63uAMTgM1MCBJoW3B4rI+wteF5+ehGRaLgx2qF8QRhMixnCzl5MV/zcHuwdGp/uIqpkTuel08X57tq9wLAm3gTVCQkxg4baF2Ni5UbOcFfeo35PqFFmLTgZz37z74OJcuGz/ywAAh445FC+e9SI4wuHZZc9qtmf7yZXC4wiBTl+Pp5Y8hXBvGNfNuk5ZduvRt4KCIiw8lTOF1xHJ9mes9LmUnpt6PLP0GbTH2nHdrOtw5QFXYmz1WNz43o0QpcIKtthvHE2I2Jlm4hhEScTFr16M3370Wzy//HlL+9slb6GWUERJx+S62PL6KKrTPXPygQVQO7rlC2Olco/BLICSWz84s9CBAHUKz2GgSgdvurG20sS7AF+xgYZ8DBRjIdgAywIo59nf/cH6iDapgotovLjjPmOzwml/Qj1cnAuUUmzr2aZhPwghqPS5NP3w2D3qdXGa92d3vBv/XvxvnL3P2RhWlinSGVY2DMc2Hotnlz2LprYe5bMsmMoVQAmcloGilOLeefdi/xH745C6Q5TlwwOjUZE6GRH+Q2zuWaMwuXqw76GuFK/2u5XWa2pQSvH3eX/HlGFTcET9EXDzbtxx7B1YumMpnlzypOH+86G5Laq8R/TB54srXsTq0GrU+Grws3d/ppiV5kK/B1CSRNESiuKQcXLlif5L6NESilhuIcBSPDu65ADKzsyZXVR9Ck9u/eDMQgcCtCJyJ4AqFTIpvN2IgSLqAMqcgWLseDRhr5msg8GNhmDAgIEqXgDFGKiOaNIwhUdB0ZPoQSwZw5LtSzTrWL84BkYq7D28QhNAPbXkKXTFu3DNrGuy9n/efudhQ8cGfLn5Kwwp92DckDIl/SdKuavwUioK6sPmD7F853JcN+s6jQ5pSziG8uQZ4IiAHuEd0zReZzSbgTJL4X3c8jGWbF+iOdZZk8/CASMPwK8/+DWiSXs6JkopWkIRJfZQpzMlKuG2T2/DpNpJeP3c19Ha3YpbP7k17z77PYDa1tWLeErC4XvVgpDsHK4ezW1RSw0hgYwT+fa0W7Ud7QZr1Kru2QY4DNRAgtrkc0/0geoveF1yb7BwNAmeIwPaKdsqmM+N18UZzrbLvS7UlrmVQVVhoHaD7+4gPxqCAY0mV9ZAFS94ZkG7KFHDAIojHAJu2XbhmaVa48lKv0tTpdbcJpMKjUG/EqhQSvGP+f/AjBEzcOCoA7P2f9rE0+DhPfhq22toDAbQUJsJGFMSzdkCSUpfE0opbv/0dtT6a3HOvudotmtui4BHJWYMOw4R/iOs29lhuD+jFmtVfleWiS0g2yQEfUGct995yjJCCP7y7b9gS/cWPPC1PdfynT1xRBIiDh1fC4EjmuDzlVWvYNmOZfj1Eb/GIXWH4JJpl+DuL+/Gip0rcu6z399C7KQnDCvHyEpfHsW+iNbOmKUKPCA7hWeLgRKyU3gpUUJvUiqpG7ED69AwUCVuZ7InQ2agJMVEczAZKJqBzbBzTYbqgwFlfHIYqD0L9UE/untT6IgmMxYWxWSgVPeRWSumcnc5CAGeXfYsJJrJhOgZqJaQTCrUBwNo7YwhnhLxUfNHWLFzBa6ZdY3h81rprcRJE05Cc+x91NW40RD0Y3NHDElRgiRRU0kEzxGllcvDCx7GnKY5uOXIW7Ia97Ln5uoDLoNEuvDGmjcM92dUmFLpc6MzmtSkLpvDzXh19au4fMbl8Lm0raSOqD8Ch405DA98/YBlsTeQyXaNGxLA6GqfwjZTSnHrJ7dir5q9cM4+cmB457fuRJm7DNf+79qc++z3txD7EvVBPxpq/Tm9oDZ3REEpLDNQLLdcmAaKuZhnbtxoOpgqZUd2B9ahFZEP/pf6QAW7zju7e3eL9B2QYaBypePrg/6MiNyxMdijoFTihSKKfqeoDJTqPjILoMrcZaAU2NS1CZ9v/FxZXuV3K9ohNanQUOuXt2+P4t559yLoCyoBgBHOmHQOUuhAXFiK+mAAKYmiNRxDSqLgTRh9ZqTZHG7G9e9ej2Maj8GVB1yZtV1LKIoyj4DvTzsJLtRizkZjEXY4loBH4OBTXdsqvwsJUdJ08vjdR78DAcGVM7OPBQBXzLgCa9vX4sPmD02/rx6MXWbBJyNv3ljzBhZtW4SbD78ZPCef15DAEPzfMf+HD5qymyGr0f8MVFsEboHDyEpfVt45e1t5MLOsgUoHQTu75RRetY3eTUYi8ihrJOwwUAMCWhG5w0CVCizFsK2r11Yl60AG00DlYqAagwFs7exFLCGqnn1n8rQngL1jWkKRklhYqBkoMxuDsrTZpYf3aNJ4VX4XwunqtU3tGVKBBX0vLnsLL696GT+a+aMstkaNSVVHglA/Vnf+T7EFamqLyCJyk/mowBGkRBGXvHoJCAge/e6j4Ej2+TeHIqgP+iHwAsb6v4Omns+xpWtL1nad0ey+tnq39f8s/w+eWPwEbjrsJtRVGptMnzHpDFR7q/HgNw+afl89WkJRCBzB6GofGmsDaGmLQpIk3PrJrWisatSkCgE5SJs+PLfR7S5J4Y2p8YPjCBqCAXREk4qwzGhbAJa7gDMGqq0nAYEjtlyEfQYaqMws1BlEBwI8KgbKqcIrHdjscFtn3FYfvIEMlsLLFRDVp18qG9ujyrPvTJ72DNTV+NKa3CiiJbCwsMJAMbfwCcEJeGHFC0iIzDPJje54CklRUjI2DbVyACWiE3d+dS0mD5mMmw+/Oec5bA2L8IuH4Mutb2NYZaYSTRaRmzNQTb0v48PmD/HX2X9FfVW94XZMlwUAh4w4ExSSYaVcRzSRpU1mk7SOaAKbuzbjijeuwKxRs/DbI39r+l18Lh9+MPUHeGnlS9gR2ZHzezM0hSIYXe2DwHNyyjaewoPfPIH5rfPxq8N/BRevHet4jser33s15z53SQqPBUSZyhdjFqo5FEGlz2V5FizwHFhmp8pvT7vBGKhYQpXCcxioAQWvoE7hOQxUqcCucygSt2QfMhjAUni5UnINqvEomhBNBecOdj94BF7R5JaagXLzxoEZT3j4XD6UucvQHmvHe+vfA5DR8nbFkkrGpiHoR6VPQJf3PnQnO/D06U/nZJ8AuXovIB6JnmQX5m+dg4CbR3NIZqD0w2ksGcPCrQuxtudNrOn9F04YfwJ+OP2HhvtNihI2d8SU52f6iInwiPvikQWPZmmUwtFk1pjCvl9HJI4LX74QCTGBp09/Oiug0ePyGZcjKSXx70X/zrkdQ0sogvo0a9cQDCBB1uMn71yFw8ccjh9M/YHhZ8wYMIZ+jwyaQxEclm6eyWjE5lAEU+uqsrZtCUUtp+8Y3ILcSd6ud03GxsBhoAYq1Hlzx8agdGCTCUp3DxdyIJPCy8lAqbygIkX2AXIw8NFYG0BzKJoxUS1BFR5gzkABsg5qa/dWBH1BPLPsGZw44cRMP7xYUkMqPLrwUXSRLzC94hpMGz4t7zm0hCIY7TsAxDcMP377x4i6a3DfMiAliSBEwtQH3EiKSUSTUWzs3AgKOfhxk1o8dPJDpoQE01EpwUltAGXicVjXcTe+2PQFDh1zqLJtZyyJMTXajBL7fo8tuRcfNn+Ih09+GONrxuf9PpOGTMLhYw7HQwsewg2H3GCYWmSglKKlLao0Yi8PRLHDfRuqXFX4z1n/yRusmaFfR4ikSNGblBSqvK7GD0Jg6hnR1BbBDIPO1rngEeQKIrvaDa9BCk/ph+UMpAMCag2UwwyUDurrvLuJyHMxUJU+F2oCbjS1RRFLOC2c9jTUB/14Y8nWklhYuAUObl5uWG+mgQJkHVRzZzMumX4Jnlv2HNa3r4fbxcku39Ekmnb2YFS1iHlb5uG6/12H0b6Z8MdPsXQOzaEIGmvLcfVBt+PppU9jzbYeROISBJ6DmxfQWDUELt4Fr+DF+OrxmDxkMl7/hsOGreUYVTEqx37TaUUVu+MXD0VUeBD/+uZfGFczDkkxiaSURGtkHYYGffhsYy8iiQg2dGzA11uWYLv7Czy+fAVOn3Q6Lpl+ieXresWMK3D+y+fjw6YPcezYY023a48k0B1PoT7oR1JM4oY5F0MiYZy/1zMa01G76NcRIpEOThjV53XxGFHhNRSSx1MiWsMxnL7/aFvHYNG9Xe2Gx6AXXiTuVOENJLDUkosnu0Vp/UCFutpxdwmgrNgYAKwSL4KAR3AE5HsYGoIBdMaSaA3LjWmLHUD7PTwSUeNmwgxlaS+oGSNm4NGFj2L8vWkmxuvC0c+UoTvRCUDC/x4GqrxVuGjSn/H0FxEkTJoUq9HcFsWh42txyfRLcMn0S/DHt1fh4U83YPzQcoyo9OLR7x2Q9Zkvly/GehrKs990WjHdlHlM0A8OXuxf+x08ueTJLC3U0g3Akxsyf5e7yyGRkTh4+Fl46OR/2Brbz5h8Bq57+zr865t/5Qygmtp6ICKMbmkZLn/jD/i45SNMcP8SYnyc5WMZoZ8DKDk4UdsSqL1X1NjcEYNErQvIGZiQ3K52gxACj8AhnsxmoBwN1MAAe7E7JpqlhZaB2k1SeBZsDAB5bJrX1I6GWr/DQO1hYJrcFVu7AMBWEZIVBNwCwtFkzkAn4JIDKEop3rvgPTSHm7GubSvu/2QRDqwPYN6GBI4c34jTp07EYWMOw6ImD56ki7GpI4pxQ8pM9xtLiNjW1at5nzYE/UiKFJvboxhdbayfEtI2BrnQHIrA7+YxpMwDIMPk7l91Jc6dfiQ4wskpMsrjppdW4vTpY3HG9LHwu/xoqGrAqPJRmPibt/Gd0Q2o8dXkPJYeXsGLH0z9Ae6ddy++8/R3kJJSSEpJJMUkEmICcTGOhJjAxnAror4u/DjtSnDDwTdg26ZTc7oAWEG/jhDxlAQfTzCyKvNjNdQG8O7ybVnbKmI5mxooxiRVFzDwsxYWDAoD5QRQAwLsxe5U4JUWHpVYf3epwuMs2BgAcgD1yqItqPDJzuQO9hwwTe7yVjmA8hebgUoHZLlSeB7BgxpfDRZvX4yrZ10NQC79f+6DdzGregzWJDfiB/tNxenT5MxMuFt2/G4JRXIGUBvbsy2BGJHRHU+ZtnLhVEaaZmgJRVEfDGiYo4agHzs7efw9/R0AuUPIbeIcHFm3H749boxmH2btXKzgugOvw5ebv8TO6E4InAAX54Kbd6PcUw4P74Gbd6OG3x+rt5Th0e9/F/sOm4Sx1WPx21eX4eWFW0ApLTij0b8MlChhQo1fo19pCPoRiiTQ1ZtEhTczWDe1afOqVlFoCg+QX9DaFJ7MQPkcKn9AgDFQLscDqqTYLVN4fH4ROQDFnHD9jh7U1wztj1NzMEDANLlrt8sNd32u4o77LCDLFUARAFOHTcXi7YuVZeVeAYQAizaFAWSKHQBV5aiJjpihSWUiqXxWFUxxOZoJSzncvteE1mD9zjZMHqF9VhqCAXy5QZv668jRW7Pa71bW20VDVQO++OEXObe59tmF4LvC+O7Eo5Vl9cGA4j5fY8MzUo1+fRPFU1JWQKRUvuhugJZQBOVeAdU2B3B2cxYy8HtdvM4HSoSb5/Lmlh30D9hv61TglRaaFN5uUoWnMFB5WAU2HiVEyWkivoeBaXITogSfiy96oQpLCeZ7n0wdNhVLty+FKMnvIo4jqPS5sHJrN4AMUwYANQE3yj2CqRUQA8vo1NdmUnhDyz1KkJi7mbBkuO6Dpg8w+b7J+LLnGgyp1AY/cpuZXk1GJ9PGJfvdXOkz7odXLLSkjT7VaMhjo2QF/RoZJAwCKLWVgRrNoSgaawO2qTV2c1YWksITtCm8aCLlDKIDCEyn5migSgs1A7W7+EAx0jIfA9WoGp+c1P2eB8bKlKJwiGlpzXygGKYOn4pYKoZ17euUZVU+F0SJZpEKhBA0pO0XGCKJCO787E7c+9W9mLNhDrZ2b0VTWwTBgFuT5SGEKEEFn6OZsJEGam1oLc584UyMKh+DJNmMx9f+EDsjO5X1TFDOUodAJoAyGlOq/C5TQ20AuPOzO3H7p7fb6n3HQClFU1tEE3jK55ixLSkU/TpCSJQqF5aBeULov0RLKIIpo6tsH6O4KTzRGUQHGLwu3mGgSgwWQHEEKN9NhNSs11e+57nS71L0GM7kac9DfTCAL9aHSlI4xIIyKwwUACzevhh71+4NIE0IpJsI60mF+qAfS7d0AgAkKuH8l8/HK6te0WxTztfhsKp7s47VEAxg1bZuU7ZN4AhEvRlmbxgnP3syOMLhT0c9j+v+8y62RW/DMU8cgzkXzsHQwNBMb8G2CCYMKwcAdMZYCi+b3KjyuRGOhQ3P4d6v7sVNc24CAGzt3oq/n/B3W8RKOJpEd29Kk/oEgNHVPnA5bJSsoN+n8vov4XPzGF7hVTRPQLazqR0wAWwhKTyPy4CBcvRPAwpeF+f0wSsxvIzF9blMtRGDDYqRpoWgiI1RzuRpzwN755Ri3GdBWS4NFABMHjIZAidg8baMDooRAvo0FCAHQZs7YkiKEm6eczNeWfUK/jb7b2i9vhXvX/A+7p59NyLiDqyI/wkS1abjWErPrDBHz0ClpBTOefEcbOjYgJfOeQmJ3iHwSdPw9KkvY337ehz9+NFoi7ZpmjMz5ErhmYnI31zzJn7yzk9w6sRTcf1B1+Mf8/+BK9+8Mut75EKTSUs4j8BjZJVPc44PffMQzv3vuZbbw/TpTUQIOZ4QspoQso4Q8ksrn2k0EIU31Po1DNTmjhhEidoWkAMZG4NCtBuyBkrFQCXEoldiOOgbvC7eNF/voDgQeA4CR3YbCwMgk8KzEhQ1lvAl6mBgI5PCKwEDZVED5RE8mFg7USMkZ4SAPg0FyOcsShT3zH0Yd35+J66YcQWuO/A6jCgfgWPHHosfzbgWVYkfoiXyBf4x7x+az7L3MWchhdcd78ZFr1yEd9e/i/tPvB9H1B+B5lAUXheHM/aZjf99/39Y374e33/p+yjzcqj2uzSpxXAsCRdPDJ+rSr8L8ZSkITAWbVuEc148B9OHT8dTpz2Fv3z7L/jlob/Ev775Fy597VJFI5YPuSr6mfs8pRT/98n/4fI3Lsdzy57DjAdnYP6W+Xn3XXAARQjhAdwH4AQAkwGcSwiZnPMzAEZWebOWNwS1OVyliXCtfQZKSeEFCkjh6X2g4qmie4E46Bu8Au9U4fUDvC5+t6nAA9RO5DYYKGfytMeBTdpLwkCl7ycrRUn6Sjxmy6PP4AAys9LLLcdNH16DYxqPwb0n3KtJcW1qj6JMPAEzh30LP3/v51i6famyju0vl4hcosC7697Dvvfvi2eWPoM/HPUH/HB/uS9eSyiipBWPbDgS955wL95d/y5u/eRW1AcDGmIkHE2iyu82TL+x78dYqJZwC0565iRU+6rx2rmvIeCWj3H7sbfjt0f8Fo8tegxXv3W1JU1Uc1sUHIGh11V90I/mth7c+N6N+PWHv8YFUy7AvEvngSc8Dn/s8Lx99voyQswCsI5SugEACCHPATgFwAqzD7gE4/RLfTCAtp445q4PwePiMHd9SFluF25BbgBaiHbD6+LRGUtiwUbZWyMUSWD8UHNvDQf9D6fBa//A6+J2Gw8oQOVEbmFcYBM3J4Da88A0uWUl+O3LmAbKwgRw6rCpeHrp0whFQwj6g0pvV30aSpREvL/pSexw34Ia10j8+uCHsHRLj2abBS0dICD40zH/xLmvHY7zXjoP8y+bD6/gVe51XleYE0lEsK1nGzb2LETI9W/Mfvpt1FeMx6Mn/g9Ths5S3pFrtvdg0ohy5XOX7n8pPtv0Gf7w8R9wyughWLd9b2XbllDEdExhyz9Zuxkftj6Kfy+9Bzzh8PB33sK2Dh+2dXQo254y7ido6ejEv765BwIdgkumXp/zWi7ZHMbIKp/G345hVLWADam/4q657+KcSZfhuv3vACdyeOQ77+NXH12Ki1+9OOe++3KXjAKwSfX3ZgAH5vqAx+TGmTBMDlLOfehLZVlNwI1gAd4MwTI3RlR6CzLGqgm4sbWzF6f/M+MpcWCjPWdUB6XFkHLPrj6FPQK1ZR6N4e1gR5XPDY/AaaqQzLD3sAoAUJyVHew58Ll5NNYGSjLODC33wsUTS/cgaw583dvX4ZS9T0HANw4unmCsyixz0bZFuPz1yzG/dT7Kyf7wdl6Dix9Zabg/gSPYv64Bj53yGL7zzHdwyCOHwO/yo7O3E62+HfjLUgl/X0mRklJIiAnEUrHMh3mCiuTpkLZ/H7e8mAKg9Vw6ZdpI5d+EENx/4v1YuHUh3tv2G1T13IXT/xlX1h82vlb5N6UUsVQMHbEOdEvN6OHn4LzXL4bI7YRfPBSVyYvxy+e6so4HABTHIuBajPsW3IbnvoygTDRv4wIAR+89RPN3NBnFQ988hNu++iN6hK2oTH4Pcxd8F2cuyMQgFNejQgiiCy+Z7pcUUhYIAISQMwEcTym9NP33BQAOpJReo9vucgCXA8CIuvoZrRubs/YlShTzm9s1+c8xNX7NzWIVPfEUumLJggb/rt4kFm4Ma2jB6XXVu00p9+6A9kgClFIEnZdbSbGtsxd+D29psB8MSKQkbO2MWWa1127vxvihZU7PxT0Qpbr3U6KETR0xQx0TAOCoo+T/f/QRIokIzv3vufig6QNEknIabETZaFR5y+Hm3XDzbizYugBBfxB/m/03zBp2EjZ1xIz3Czl4mzxSnhj8+fM/47nlz6HSU4lKbyUEEkCl1w+v4AZPeLh4F4b4h2B42XBUe2vRGxuGof4xhvvlCMHMhuqsqsU1oTWY+eBMBFxVqPWNQFzsRULshYQ4EmIvYqkYoskoUlJK87m9qvfD1dNvxdShB+e9nkkxgV98fC6W7PwSfzzyGcwYfiQApPcfQUKMy/9JcQypEJFCJ3ZGdqI53IyHFjyEndGdOLL+SJyx13XYr/Yw0+McPXHYN5TSmUbr+hJAHQzgFkrp7PTfNwEApfQOs8/MnDmTfv311wUdz4EDBw4cONhtoQqgGJJiEgu3LcQnLZ9g8fbF6E31yj3eUnFMrJ2I3x35O1T7qnfJ6ebD2+vexu2f3g6BE+Bz+eATfPC5fPALfuXvSm8lqr3VqPZVY2hgKA4fczh4zrr+rLO3E4c/djjWhNag0luJcG8YCTG/o/nx44/HzYffjMPGmAdODISQkgRQAoA1AI4FsAXAfADnUUqXm33GCaAcOHDgwIEDAxgEUA7yY0vXFtz2yW2goAqrVuYug0/wwSt44RW8qPBUYEhgCIb4h2BIYAi8QnYxmxlyBVAFa6AopSlCyDUA3gHAA3g0V/DkwIEDBw4cOHBQTIyqGIX7T7p/lxy7T6UGlNK3ALxVpHNx4MCBAwcOHDgYFHAMdRw4cODAgQMHDmzCCaAcOHDgwIEDBw5swgmgHDhw4MCBAwcObMIJoBw4cODAgQMHDmzCCaAcOHDgwIEDBw5swgmgHDhw4MCBAwcObMIJoBw4cODAgQMHDmzCCaAcOHDgwIEDBw5swgmgHDhw4MCBAwcObMIJoBw4cODAgQMHDmzCCaAcOHDgwIEDBw5swgmgHDhw4MCBAwcObMIJoBw4cODAgQMHDmzCCaAcOHDgwIEDBw5sglBK++9ghHQDWG1x80oAnQUeqhZAWz8cxy7661i723Hs/J59gXMvFO84pfrNnN9o1xxnII6pzr1gHfrfb7B/n/48zt6U0nLDNZTSfvsPwNc2tn1woB+ngPPql2Pthsex/HsOhu+zm/5GD+r+Lslv5vxGu+Y4A3FMde6Fwn+/wf59+vM4ue79gZzCe303O05/Hmt3O05/wbkXnOPsimM5xxnYx+nPYznHGdjH0aC/U3hfU0pn7i7HcdA/cH7PwQfnN9u94PyegxvO71c4cl27/magHtzNjuOgf+D8noMPzm+2e8H5PQc3nN+vcJheu35loBw4cODAgQMHDnYHDGQNlAMHDhw4cODAwYCEE0A5cODAgQMHDhzYxKAOoAghPbv6HBz0HYQQkRCySPVfQ45tPyKEOGLIXQhCCCWEPKX6WyCE7CSEvLErz8tB30AIOTX9207c1efiwDqc53HXYVAHUA52G8QopdNU/zXv6hNykBMRAPsSQnzpv48DsMXODgghQtHPykFfcS6Az9L/twxCCF+a03FgEX1+Hh0UhkEfQBFCygghcwghCwghSwkhp6SXNxBCVhJCHiKELCeEvKu6wRwMcBBCZhBCPiaEfEMIeYcQMkK1+oI0U7WMEDJrl53kno23AJyY/ve5AJ5lKwghswghcwkhCwkhXxBC9k4vv4gQ8hoh5AMAc/r/lB2YgRBSBuAwAD8E8L30sqMIIZ8QQt4khKwmhDxACOHS63oIIXcRQhYDOHjXnbmDNAp5Hj8hhExTbfcZIWRqf570YMegD6AA9AI4jVK6P4CjAdxFCCHpdXsBuI9Sug+AMIAzds0pOsgDnyp99zIhxAXgXgBnUkpnAHgUwP+ptvdTSqcBuCq9zkH/4zkA3yOEeAFMAfCVat0qAIdTSqcD+C2A21Xr9of8ux7Zb2fqwApOAfA2pXQNgBAhZEZ6+SwA1wKYDGAcgNPTywMAvqKUTqWUftbvZ+tAj0Kex0cAXAQAhJAJALyU0sX9dsa7AXYHGp0AuJ0QcgQACcAoAMPS65oopYvS//4GQEO/n50DK4ilAyIAACFkXwD7AngvHQvzALaqtn8WACilnxBCKgghVZTScP+drgNK6ZK0Vu1cyLNfNSoBPE4I2QsABeBSrXuPUtreP2fpwAbOBXBP+t/Ppf9+A8A8SukGACCEPAuZpXoRgAjgv7vgPB0YoMDn8T8AfkMIuRHAJQD+3T9nu/tgdwigvg9gCIAZlNIkIaQZgDe9Lq7aTgTgpPAGBwiA5ZRSs9SA3rzMMTPbNXgNwF8AHAUgqFp+K4APKaWnpQf1j1TrIv11cg6sgRBSA+AYAPsRQijkCQsF8CbMn7VeSqnYf2fpwAJsPY+U0igh5D3I7OPZAGbAgS3sDim8SgA70sHT0QDqd/UJOegzVgMYQgg5GAAIIS5CyD6q9eeklx8GoJNS2l8d2R1o8SiA31NKl+qWVyIjYr2oX8/IQSE4E8CTlNJ6SmkDpbQOQBOAwwHMIoQ0prVP50AWmTsYmCjkeXwYwN8BzKeUdpT29HY/DNoAKl3FEwfwNICZhJClAC6EnO91MIhBKU1AHtT/mBapLgJwiGqTXkLIQgAPQBa9OtgFoJRuppT+3WDVnwDckf6NdgeWe3fHuQBe1i37b3r5fAD/ALASclCl387BAEEhzyOl9BsAXQAe64dT3O0waFu5pKsFHqKUOlVYDhw4cFBkEEKOAnADpfSkXXwqDkoEQshIyCm9iZRSaRefzqDDoGSgCCE/giwk/vWuPhcHDhw4cOBgsIEQciHkar2bneCpMAxaBsqBAwcOHDhw4GBXYVAwUISQOkLIh4SQFWlTzB+nl9cQQt4jhKxN/786vXxi2jgsTgi5QbevKkLIi4SQVWmjTccEzoEDBw4cOHBgC4OCgUq7UI+glC4ghJRD9nQ6FXJFQTul9E5CyC8BVFNKf0EIGQq5Gu9UAB2U0r+o9vU4gE8ppQ8TQtyQTRnD/fqFHDhw4MCBAweDGoOCgaKUbqWULkj/uxtyRcgoyP4Vj6c3exxywARK6Q5K6XwASfV+CCGVAI6A7MAKSmnCCZ4cOHDgwIEDB3YxKAIoNdJGYNMhi9+GUUqZQ/U2ZBzIzdAIYCeAx9J9gR4mhARKdrIOHDhw4MCBg90SgyqASje8/C+An1BKu9TrqJyLzJePFCD34ro/3RcoAuCXpThXBw4cOHDgwMHui0ETQKUbzP4XwNOU0pfSi7en9VFMJ7Ujz242A9hMKWWNFl+EHFA5cODAgQMHDhxYxqAIoIjcUfYRACsppX9VrXoNwA/S//4BgFdz7YdSug3AJkLI3ulFxwJYUeTTdeDAgQMHDhzs5hgsVXiHAfgUwFIAzPDrV5B1UC8AGAOgBcDZlNJ2QshwAF8DqEhv3wNgMqW0ixAyDXL/HzeADQAudnoAOXDgwIEDBw7sYFAEUA4cOHDgwIEDBwMJgyKF58CBAwcOHDhwMJDgBFAOHDhw4MCBAwc24QRQDhw4cODAgQMHNuEEUA4cOHDgwIEDBzbhBFAOHDhw4MCBAwc24QRQDhw4cODAgQMHNuEEUA4cOHDgwIEDBzbhBFAOHDhw4MCBAwc28f/LW8VMiIzYUAAAAABJRU5ErkJggg==",
|
||
"text/plain": [
|
||
"<Figure size 720x504 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<Figure size 432x288 with 0 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"plot_quantiles(tss[1585], forecasts[1585], dataset.metadata.prediction_length)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3.9.15 ('glounts')",
|
||
"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.9.15"
|
||
},
|
||
"vscode": {
|
||
"interpreter": {
|
||
"hash": "7f25a1f13147a60511cf6766827402baf95cbe50d53a241197155306ee38fe70"
|
||
}
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 4
|
||
}
|