2341 lines (2341 with data), 349.5 kB
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"gpuType": "T4",
"toc_visible": true,
"authorship_tag": "ABX9TyMkI8ahXOwRr6x9BhyBLJgu",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/github/stonerrb/MisaHub/blob/main/MisaHubResNet.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"source": [
"# **Classifying Bleeding and Non-Bleeding Using Resnet**"
],
"metadata": {
"id": "4PkpgiAcFLLx"
}
},
{
"cell_type": "markdown",
"source": [
"# **Importing and Splitting**\n"
],
"metadata": {
"id": "r89LWZP2g9GJ"
}
},
{
"cell_type": "code",
"source": [
"from google.colab import drive\n",
"drive.mount('/content/drive')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 338
},
"id": "VoJ-HvHoeo0Q",
"outputId": "fb332a65-3913-47bb-bc31-16e5a91c0cd8"
},
"execution_count": null,
"outputs": [
{
"output_type": "error",
"ename": "KeyboardInterrupt",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-5-d5df0069828e>\u001b[0m in \u001b[0;36m<cell line: 2>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mgoogle\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolab\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mdrive\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mdrive\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmount\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'/content/drive'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/google/colab/drive.py\u001b[0m in \u001b[0;36mmount\u001b[0;34m(mountpoint, force_remount, timeout_ms, readonly)\u001b[0m\n\u001b[1;32m 101\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mmount\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmountpoint\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mforce_remount\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout_ms\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m120000\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreadonly\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 102\u001b[0m \u001b[0;34m\"\"\"Mount your Google Drive at the specified mountpoint path.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 103\u001b[0;31m return _mount(\n\u001b[0m\u001b[1;32m 104\u001b[0m \u001b[0mmountpoint\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 105\u001b[0m \u001b[0mforce_remount\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mforce_remount\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/google/colab/drive.py\u001b[0m in \u001b[0;36m_mount\u001b[0;34m(mountpoint, force_remount, timeout_ms, ephemeral, readonly)\u001b[0m\n\u001b[1;32m 130\u001b[0m )\n\u001b[1;32m 131\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mephemeral\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 132\u001b[0;31m _message.blocking_request(\n\u001b[0m\u001b[1;32m 133\u001b[0m \u001b[0;34m'request_auth'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0;34m'authType'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'dfs_ephemeral'\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout_sec\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 134\u001b[0m )\n",
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/google/colab/_message.py\u001b[0m in \u001b[0;36mblocking_request\u001b[0;34m(request_type, request, timeout_sec, parent)\u001b[0m\n\u001b[1;32m 174\u001b[0m \u001b[0mrequest_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparent\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mexpect_reply\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 175\u001b[0m )\n\u001b[0;32m--> 176\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mread_reply_from_input\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrequest_id\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout_sec\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/google/colab/_message.py\u001b[0m in \u001b[0;36mread_reply_from_input\u001b[0;34m(message_id, timeout_sec)\u001b[0m\n\u001b[1;32m 94\u001b[0m \u001b[0mreply\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_read_next_input_message\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 95\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mreply\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0m_NOT_READY\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreply\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdict\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 96\u001b[0;31m \u001b[0mtime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0.025\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 97\u001b[0m \u001b[0;32mcontinue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 98\u001b[0m if (\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
]
}
]
},
{
"cell_type": "code",
"source": [
"zip_path = '/content/drive/MyDrive/WCEBleedGen.zip'\n",
"!unzip $zip_path -d MISAHUB"
],
"metadata": {
"id": "f4wAqXaHepk7"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"import os\n",
"import shutil\n",
"\n",
"images_folder = '/content/MISAHUB/WCEBleedGen/bleeding/Images'\n",
"annotations_folder = '/content/MISAHUB/WCEBleedGen/bleeding/Bounding boxes/YOLO_TXT'\n",
"output_folder = '/content/MISAHUB/train/'\n",
"\n",
"# Create the 'train' folder if it doesn't exist\n",
"if not os.path.exists(output_folder):\n",
" os.makedirs(output_folder)\n",
"\n",
"# Create 'images' and 'labels' folders inside 'train'\n",
"images_output_folder = os.path.join(output_folder, 'images')\n",
"labels_output_folder = os.path.join(output_folder, 'labels')\n",
"\n",
"os.makedirs(images_output_folder, exist_ok=True)\n",
"os.makedirs(labels_output_folder, exist_ok=True)\n",
"\n",
"# Get a list of files in both folders\n",
"image_files = os.listdir(images_folder)\n",
"annotation_files = os.listdir(annotations_folder)\n",
"\n",
"# Ensure only files with the same base name are considered\n",
"image_files = [file for file in image_files if file.endswith('.png')]\n",
"annotation_files = [file for file in annotation_files if file.endswith('.txt')]\n",
"\n",
"# Sort the files to ensure consistent numbering\n",
"image_files.sort()\n",
"annotation_files.sort()\n",
"\n",
"# Rename and move the files to the 'train' folder\n",
"for i, (image_file, annotation_file) in enumerate(zip(image_files, annotation_files), start=1):\n",
" # Define the new names for the image and annotation\n",
" new_image_name = f\"image_{i}.png\"\n",
" new_annotation_name = f\"image_{i}.txt\"\n",
"\n",
" # Rename and move the image file\n",
" old_image_path = os.path.join(images_folder, image_file)\n",
" new_image_path = os.path.join(images_output_folder, new_image_name)\n",
" os.rename(old_image_path, new_image_path)\n",
"\n",
" # Rename and move the annotation file\n",
" old_annotation_path = os.path.join(annotations_folder, annotation_file)\n",
" new_annotation_path = os.path.join(labels_output_folder, new_annotation_name)\n",
" os.rename(old_annotation_path, new_annotation_path)\n",
"\n",
" print(f\"Renamed and moved: {image_file} to {new_image_name}\")\n",
" print(f\"Renamed and moved: {annotation_file} to {new_annotation_name}\")\n",
"\n",
"print(\"All files have been renamed and moved to the 'train' folder.\")\n"
],
"metadata": {
"id": "Wc8Sl_fUfP1y"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"import os\n",
"import shutil\n",
"\n",
"images_folder = '/content/MISAHUB/WCEBleedGen/non-bleeding/images'\n",
"output_folder = '/content/MISAHUB/train/'\n",
"\n",
"# Create the 'train' folder if it doesn't exist\n",
"if not os.path.exists(output_folder):\n",
" os.makedirs(output_folder)\n",
"\n",
"# Create 'images' and 'labels' folders inside 'train'\n",
"images_output_folder = os.path.join(output_folder, 'images')\n",
"labels_output_folder = os.path.join(output_folder, 'labels')\n",
"\n",
"os.makedirs(images_output_folder, exist_ok=True)\n",
"os.makedirs(labels_output_folder, exist_ok=True)\n",
"\n",
"# Get a list of files in the 'images' folder\n",
"image_files = os.listdir(images_folder)\n",
"image_files = [file for file in image_files if file.endswith('.png')]\n",
"image_files.sort()\n",
"\n",
"# Rename and move the files to the 'train' folder\n",
"for i, image_file in enumerate(image_files, start=1310):\n",
" # Define the new names for the image and annotation\n",
" new_image_name = f\"images_{i}.png\"\n",
" new_annotation_name = f\"images_{i}.txt\"\n",
"\n",
" # Rename and move the image file\n",
" old_image_path = os.path.join(images_folder, image_file)\n",
" new_image_path = os.path.join(images_output_folder, new_image_name)\n",
" os.rename(old_image_path, new_image_path)\n",
"\n",
" # Create an empty label file in the 'labels' folder\n",
" new_annotation_path = os.path.join(labels_output_folder, new_annotation_name)\n",
" with open(new_annotation_path, 'w') as empty_file:\n",
" pass\n",
"\n",
" print(f\"Renamed and moved: {image_file} to {new_image_name}\")\n",
" print(f\"Created empty label file: {new_annotation_name}\")\n",
"\n",
"print(\"All files have been renamed and moved to the 'train' folder.\")"
],
"metadata": {
"id": "ukgpuDXAVy3j"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"! ls MISAHUB/newTrain/bleeding | wc -l"
],
"metadata": {
"id": "UavS7_rSVe87"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"import os\n",
"import shutil\n",
"\n",
"# Define the paths to the 'train' directory and its subdirectories\n",
"train_dir = 'MISAHUB/train' # Update this with the actual path to your 'train' directory\n",
"images_dir = os.path.join(train_dir, 'images')\n",
"labels_dir = os.path.join(train_dir, 'labels')\n",
"train_dir = 'MISAHUB/newTrain'\n",
"# Create output directories for the two classes\n",
"bleeding_dir = os.path.join(train_dir, 'bleeding')\n",
"non_bleeding_dir = os.path.join(train_dir, 'non_bleeding')\n",
"\n",
"# Create the 'bleeding' and 'non_bleeding' directories if they don't exist\n",
"os.makedirs(bleeding_dir, exist_ok=True)\n",
"os.makedirs(non_bleeding_dir, exist_ok=True)\n",
"\n",
"# Iterate through the files in the 'images' directory\n",
"for image_filename in os.listdir(images_dir):\n",
" # Form the corresponding label file path\n",
" label_filename = os.path.splitext(image_filename)[0] + '.txt'\n",
" label_filepath = os.path.join(labels_dir, label_filename)\n",
"\n",
" # Check if the label file is empty (indicating non-bleeding)\n",
" if os.path.exists(label_filepath) and os.path.getsize(label_filepath) == 0:\n",
" # Move the image to the 'non_bleeding' directory\n",
" shutil.move(os.path.join(images_dir, image_filename), os.path.join(non_bleeding_dir, image_filename))\n",
" else:\n",
" # Move the image to the 'bleeding' directory\n",
" shutil.move(os.path.join(images_dir, image_filename), os.path.join(bleeding_dir, image_filename))\n",
"\n",
"print(\"Dataset organized into 'bleeding' and 'non_bleeding' classes.\")\n"
],
"metadata": {
"id": "mm2rQtsDWwP_"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"import os\n",
"import random\n",
"import shutil\n",
"\n",
"# Define the paths to the 'bleeding' and 'non_bleeding' directories\n",
"bleeding_dir = '/content/MISAHUB/newTrain/bleeding' # Update with the actual path to your 'bleeding' directory\n",
"non_bleeding_dir = '/content/MISAHUB/newTrain/non_bleeding' # Update with the actual path to your 'non-bleeding' directory\n",
"\n",
"# Define the path to the 'test' directory\n",
"test_dir = '/content/MISAHUB/test' # Update with the path where you want to create the 'test' directory\n",
"\n",
"# Create the 'test' directory if it doesn't exist\n",
"os.makedirs(test_dir, exist_ok=True)\n",
"\n",
"# Define the number of files to randomly select from each directory\n",
"num_files_to_select = 20\n",
"\n",
"# Randomly select 20 files from the 'bleeding' directory\n",
"bleeding_files = os.listdir(bleeding_dir)\n",
"selected_bleeding_files = random.sample(bleeding_files, num_files_to_select)\n",
"\n",
"# Randomly select 20 files from the 'non_bleeding' directory\n",
"non_bleeding_files = os.listdir(non_bleeding_dir)\n",
"selected_non_bleeding_files = random.sample(non_bleeding_files, num_files_to_select)\n",
"\n",
"# Copy the selected 'bleeding' files to the 'test' directory with new names\n",
"for filename in selected_bleeding_files:\n",
" source_filepath = os.path.join(bleeding_dir, filename)\n",
" new_filename = f'bleeding_{filename}'\n",
" dest_filepath = os.path.join(test_dir, new_filename)\n",
" shutil.copy(source_filepath, dest_filepath)\n",
" # Remove the file from the 'bleeding' directory\n",
" os.remove(source_filepath)\n",
"\n",
"# Copy the selected 'non_bleeding' files to the 'test' directory with new names\n",
"for filename in selected_non_bleeding_files:\n",
" source_filepath = os.path.join(non_bleeding_dir, filename)\n",
" new_filename = f'non_bleeding_{filename}'\n",
" dest_filepath = os.path.join(test_dir, new_filename)\n",
" shutil.copy(source_filepath, dest_filepath)\n",
" # Remove the file from the 'non_bleeding' directory\n",
" os.remove(source_filepath)\n",
"\n",
"print(f\"Selected and copied {num_files_to_select} files from 'bleeding' and 'non-bleeding' to the 'test' directory, and removed them from the original directories.\")\n"
],
"metadata": {
"id": "rq7U71RIWwRI"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import os\n",
"import PIL\n",
"import tensorflow as tf\n",
"from tensorflow import keras\n",
"from tensorflow.keras import layers\n",
"from tensorflow.python.keras.layers import Dense, Flatten, Dropout\n",
"from tensorflow.keras.models import Sequential\n",
"from tensorflow.keras.optimizers import Adam"
],
"metadata": {
"id": "0gSmVvwUfp2u"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"from pathlib import Path\n",
"dataset_dir = 'MISAHUB/newTrain'\n",
"dataset_dir = Path(dataset_dir)\n",
"bleeding = list(dataset_dir.glob('bleeding/*'))\n",
"print(bleeding[0])\n",
"image = PIL.Image.open(str(bleeding[0]))\n",
"width, height = image.size\n",
"print(width, height)"
],
"metadata": {
"id": "M6N5_xdqqz3V"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"from tensorflow.keras.preprocessing import image_dataset_from_directory\n",
"\n",
"# Define the path to the 'train' directory\n",
"train_dir = 'MISAHUB/newTrain'\n",
"img_height,img_width=224,224\n",
"batch_size=32\n",
"train_dataset = image_dataset_from_directory(\n",
" train_dir,\n",
" labels='inferred',\n",
" label_mode='binary',\n",
" batch_size=32, # Adjust batch size as needed\n",
" image_size=(224, 224), # Specify the desired image size\n",
" shuffle=True,\n",
" seed=123,\n",
" validation_split=0.2, # Split a portion of data for validation\n",
" subset='training' # Use 'training' subset for training data\n",
")\n",
"\n",
"# Create the validation dataset with the same validation split\n",
"validation_dataset = image_dataset_from_directory(\n",
" train_dir,\n",
" labels='inferred',\n",
" label_mode='binary',\n",
" batch_size=32, # Adjust batch size as needed\n",
" image_size=(224, 224), # Specify the desired image size\n",
" shuffle=True,\n",
" seed=123,\n",
" validation_split=0.2, # Use the same validation split as for training\n",
" subset='validation' # Use 'validation' subset for validation data\n",
")"
],
"metadata": {
"id": "IitcVWIWqrzv"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"class_names = train_dataset.class_names\n",
"print(class_names)"
],
"metadata": {
"id": "hz3H4ykAsZLv"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# **Classification ResNet**"
],
"metadata": {
"id": "AewhITJMgvWs"
}
},
{
"cell_type": "code",
"source": [
"from tensorflow.keras.regularizers import l2\n",
"resnet_model = Sequential()\n",
"\n",
"pretrained_model= tf.keras.applications.ResNet50(include_top=False,\n",
" input_shape=(224,224,3),\n",
" pooling='max',classes=2,\n",
" weights='imagenet')\n",
"# for layer in pretrained_model.layers:\n",
"# layer.trainable=False\n",
"# Unfreeze specific layers\n",
"for layer in pretrained_model.layers:\n",
" if layer.name in ['block4_conv1', 'block4_conv2', 'block4_conv3']:\n",
" layer.trainable = True\n",
" else:\n",
" layer.trainable = False\n",
"\n",
"# Compile the model after unfreezing layers\n",
"# resnet_model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])\n",
"\n",
"\n",
"resnet_model.add(pretrained_model)\n",
"resnet_model.add(Flatten())\n",
"resnet_model.add(Dense(512, activation='relu', kernel_regularizer=l2(0.02)))\n",
"resnet_model.add(Dropout(0.5))\n",
"resnet_model.add(Dense(1, activation='sigmoid',kernel_regularizer=l2(0.02)))"
],
"metadata": {
"id": "PiWWXwTa0hAK"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"resnet_model.summary()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Ocxlltpa09LS",
"outputId": "9254550c-38da-4539-d760-37d1f2ba62ef"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"sequential_4\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" resnet50 (Functional) (None, 2048) 23587712 \n",
" \n",
" module_wrapper_9 (ModuleWr (None, 2048) 0 \n",
" apper) \n",
" \n",
" module_wrapper_10 (ModuleW (None, 512) 1049088 \n",
" rapper) \n",
" \n",
" module_wrapper_11 (ModuleW (None, 512) 0 \n",
" rapper) \n",
" \n",
" module_wrapper_12 (ModuleW (None, 1) 513 \n",
" rapper) \n",
" \n",
"=================================================================\n",
"Total params: 24637313 (93.98 MB)\n",
"Trainable params: 1049601 (4.00 MB)\n",
"Non-trainable params: 23587712 (89.98 MB)\n",
"_________________________________________________________________\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"resnet_model.compile(optimizer=Adam(learning_rate=0.001),loss='binary_crossentropy',metrics=['accuracy'])"
],
"metadata": {
"id": "EKycvVcE1A7M"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"epochs=5\n",
"history = resnet_model.fit(\n",
" train_dataset,\n",
" validation_data=validation_dataset,\n",
" epochs=epochs\n",
")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "8ZU2ADPF1Oic",
"outputId": "96b6e10e-c108-4e99-9529-6cc0c91b136a"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/5\n",
"65/65 [==============================] - 14s 152ms/step - loss: 3.4739 - accuracy: 0.7551 - val_loss: 0.1862 - val_accuracy: 0.9204\n",
"Epoch 2/5\n",
"65/65 [==============================] - 9s 138ms/step - loss: 0.1884 - accuracy: 0.9180 - val_loss: 0.1198 - val_accuracy: 0.9515\n",
"Epoch 3/5\n",
"65/65 [==============================] - 9s 130ms/step - loss: 0.1345 - accuracy: 0.9467 - val_loss: 0.0959 - val_accuracy: 0.9689\n",
"Epoch 4/5\n",
"65/65 [==============================] - 9s 133ms/step - loss: 0.0903 - accuracy: 0.9656 - val_loss: 0.0777 - val_accuracy: 0.9689\n",
"Epoch 5/5\n",
"65/65 [==============================] - 9s 138ms/step - loss: 0.0717 - accuracy: 0.9762 - val_loss: 0.1072 - val_accuracy: 0.9534\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"import os\n",
"\n",
"# Define the path to the 'test' directory\n",
"test_dir = 'MISAHUB/test' # Update with the actual path to your 'test' directory\n",
"\n",
"# Get a list of all image files in the 'test' directory\n",
"test_image_files = [os.path.join(test_dir, filename) for filename in os.listdir(test_dir)]\n",
"\n",
"# Iterate through the 'test' images\n",
"for image_file in test_image_files:\n",
" # Load and preprocess the image\n",
" img = tf.keras.preprocessing.image.load_img(image_file, target_size=(224, 224))\n",
" img = tf.keras.preprocessing.image.img_to_array(img)\n",
" img = tf.expand_dims(img, axis=0)\n",
"\n",
" # Make predictions using the model\n",
" predictions = resnet_model.predict(img)\n",
"\n",
" # Get the class label (assuming binary classification with 0 and 1)\n",
" class_label = \"bleeding\" if predictions[0][0] > 0.5 else \"non-bleeding\"\n",
"\n",
" # Print the file name and predicted class\n",
" print(f\"File: {os.path.basename(image_file)}, Predicted Class: {class_label}\")\n"
],
"metadata": {
"id": "2oOoHdvTboRC"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [],
"metadata": {
"id": "yYm_a_cHOqc1"
}
},
{
"cell_type": "markdown",
"source": [
"# VGG"
],
"metadata": {
"id": "vQ6Cl2SgOqd1"
}
},
{
"cell_type": "code",
"source": [
"vgg = Sequential()\n",
"\n",
"pretrained = tf.keras.applications.vgg16.VGG16(\n",
" include_top=False,\n",
" weights='imagenet',\n",
" # input_tensor=None,\n",
" input_shape=(224,224,3),\n",
" pooling='max',\n",
" classes=2,\n",
" classifier_activation='softmax'\n",
")"
],
"metadata": {
"id": "FXbtBxYLOsHS"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# **Evaluating Model**"
],
"metadata": {
"id": "eSg6Sj0Y3RyR"
}
},
{
"cell_type": "code",
"source": [
"fig1 = plt.gcf()\n",
"plt.plot(history.history['accuracy'])\n",
"plt.plot(history.history['val_accuracy'])\n",
"plt.axis(ymin=0.4,ymax=1)\n",
"plt.grid()\n",
"plt.title('Model Accuracy')\n",
"plt.ylabel('Accuracy')\n",
"plt.xlabel('Epochs')\n",
"plt.legend(['train', 'validation'])\n",
"plt.show()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 472
},
"id": "NwjguSD73RMv",
"outputId": "b8dff6ab-9ee4-4205-b7b3-a6cfdd3ad9fa"
},
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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UESGDRsmb29v1a5dWyEhIVddQzN+/HhVqFBBzZs3V1xcnNq2batGjRoVcbXFl+fP4QEAYBK33nqrNm3a5NDWt29fSXKYmYmKitKaNWsc+g0aNMjh9V8vU+V3S/rZs2cLX2wxxswNAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAADFRFRUlCZOnGh/bbFYtHTp0qv2P3TokCwWi9LS0q7ruK7aT1Hh8QsAABRTJ06cUIUKFVy6z759++rs2bMOoSkyMlInTpxQcHCwS491oxBuAAAopsLCworkON7e3kV2LFfgshQAAEVg+vTpCg8Pd3hApiQ98sgjeuKJJ7R//3717NlTVapUUZkyZdSkSRN9+eWX19znXy9LpaamqmHDhvL391dMTIy+++47h/65ubnq16+foqOjFRAQoJo1a+rdd9+1vz969Gh98MEH+vTTT2WxWGSxWLR27dp8L0utW7dOTZs2lZ+fn6pUqaLhw4fr8uXL9vfvvfdeDRkyRM8//7wqVqyosLAwjR492vkPrhCYuQEAFH+GIVkvuufYPoGSxfK33bp06aLBgwfrq6++0v333y9JOnPmjFatWqUVK1bowoULat26tV5//XUFBATof//7n+Li4rR3717dfPPNf7v/Cxcu6KGHHlLr1q310Ucf6eDBgxo6dKhDH5vNpptuukkLFy5UpUqVtHHjRg0YMEBVqlRR165dNWzYMO3evVuZmZmaNWuWJKlixYo6fvy4w36OHTum9u3bq2/fvvrf//6nPXv2qH///vL393cIMB988IESExO1ZcsWbdq0SX379lWLFi3UunXrvz2f60G4AQAUf9aL0thw9xz7xeOSb+m/7VahQgW1a9dOc+fOtYebRYsWKTg4WC1btpQkRUdHKygoSF5eXnr11Ve1ZMkSLVu2TAkJCX+7/7lz58pms2nGjBny9/dXnTp1dPToUQ0cONDex8fHR2PGjLG/jo6O1qZNm/Txxx+ra9euKlOmjAICApSdnX3Ny1DvvfeeIiMjNXnyZFksFt122206fvy4XnjhBY0aNUpeXn9cGKpXr56SkpIkSTVq1NDkyZOVkpJyw8MNl6UAACgivXr10uLFi5WdnS1JmjNnjrp37y4vLy9duHBBI0eOVJ06dVS+fHmVKVNGu3fv1pEjRwq07927d6tevXry9/e3tzVr1ixPvylTpqhx48YKCQlRmTJlNH369AIf48/HatasmSx/mrFq0aKFLly4oKNHj9rb6tWr57BdlSpVdOrUKaeOVRjM3AAAij+fwD9mUNx17AKKi4uTYRhavny5mjRpoq+//loTJkyQJD333HNavXq13n77bd16660KCAhQ586dlZOT47JS58+fr2HDhumdd95Rs2bNVLZsWb311lvasmWLy47xZz4+Pg6vLRZLnjVHNwLhBgBQ/FksBbo05G7+/v569NFHNWfOHO3bt081a9ZUo0aNJEkbN25Uz5491bFjR/tMzqFDhwq871q1aunDDz/UpUuX7LM3mzdvdujzzTffqHnz5nr66aftbfv373fo4+vrq9zc3L891uLFi2UYhn325ptvvlHZsmV10003FbjmG4XLUgAAFKFevXpp+fLlmjlzpnr16mVvv+WWW/TZZ58pLS1NO3bsUM+ePZ2a5ejZs6csFov69++vXbt2acWKFXr77bcd+tSoUUPffvutvvjiC/30008aOXKktm7d6tAnKipK33//vfbu3auMjAxZrdY8x3r66af1yy+/aPDgwdqzZ48+/fRTJSUlKTEx0b7exp3cXwEAACXIfffdp4oVK2rv3r3q2bOnvf2dd95R+fLldeeddyouLk5t27a1z+oURJkyZfTZZ59p586datiwoV566SW98cYbDn3+8Y9/6NFHH1W3bt0UGxurX3/91WEWR5L69++vmjVrKiYmRiEhIfrmm2/yHCsiIkIrVqxQamqq6tevr6eeekr9+vXTyy+/7OSncWNYDMMw3F1EUcrMzFS5cuV07tw5BQUFuXTfVqtVK1asUPv27fNcZ0TRYzw8C+PhWYr7eFy6dEkHDx5UdHS0wwLa4sxmsykzM9N+t1RJdK1xdebf75L56QEAANMi3AAAAFMh3AAAAFMh3AAAAFMh3AAAiq0Sdk+M6blqPAk3AIBix9vbW5Jc+u29cL8r43llfAuLbygGABQ7pUqVUmBgoE6fPi0fHx9T3Dpts9mUk5OjS5cumeJ8nGWz2XT69GkFBgaqVKnriyeEGwBAsWOxWFSlShUdPHhQhw8fdnc5LmEYhn7//XcFBAQ4PJCyJPHy8tLNN9983edPuAEAFEu+vr6qUaOGaS5NWa1WrV+/XnfffXex/GJFV/D19XXJrBXh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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"source": [
"# **Making Prediction**"
],
"metadata": {
"id": "z2O8aVxV3aUp"
}
},
{
"cell_type": "code",
"source": [
"import cv2\n",
"\n",
"dataset_dir = Path(dataset_dir)\n",
"nonbleeding = list(dataset_dir.glob('non-bleeding/*'))\n",
"for x in range(50):\n",
" image=cv2.imread(str(nonbleeding[x]))\n",
" image_resized= cv2.resize(image, (img_height,img_width))\n",
" image=np.expand_dims(image_resized,axis=0)\n",
" pred=resnet_model.predict(image)\n",
" print(pred)\n",
"# print(image.shape)\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "-Ar39gRs3ZyE",
"outputId": "98e02392-e4c4-49bf-c4f1-14554dd029ca"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"1/1 [==============================] - 0s 25ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 23ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 26ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 23ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 27ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 25ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 25ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 26ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 24ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 37ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 23ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 27ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 24ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 23ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 26ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 26ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 26ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 26ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 25ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 26ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 24ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 24ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 25ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 23ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 22ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 29ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 24ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 24ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 23ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 25ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 28ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 22ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 24ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 26ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 26ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 27ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 22ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 28ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 26ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 26ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 26ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 28ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 30ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 26ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 26ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 24ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 25ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 28ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 34ms/step\n",
"[[0.]]\n",
"1/1 [==============================] - 0s 27ms/step\n",
"[[0.]]\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"pred=resnet_model.predict(image)\n",
"print(pred)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "l9d4t_tV3eOn",
"outputId": "b829d154-ecdb-4902-fa96-c86c3b898005"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"1/1 [==============================] - 0s 24ms/step\n",
"[[0.]]\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"output_class=class_names[np.argmax(pred)]\n",
"print(\"The predicted class is\", output_class)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "LpWEmqdG3fP-",
"outputId": "09c6c4a1-0091-47c4-bbc3-b34aadc94e8c"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"The predicted class is bleeding\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"# **Playground**"
],
"metadata": {
"id": "5gMQ7yIDg3Kz"
}
},
{
"cell_type": "code",
"source": [
"import os\n",
"import xml.etree.ElementTree as ET\n",
"\n",
"# Directory containing XML files\n",
"xml_folder = \"/content/MISAHUB/WCEBleedGen/bleeding/Bounding boxes/XML\"\n",
"\n",
"# Directory to save TXT files\n",
"txt_folder = \"/content/MISAHUB/WCEBleedGen/bleeding/Bounding boxes/TXT\"\n",
"\n",
"# Create the TXT folder if it doesn't exist\n",
"os.makedirs(txt_folder, exist_ok=True)\n",
"\n",
"# Iterate through XML files in the folder\n",
"for xml_filename in os.listdir(xml_folder):\n",
" if xml_filename.endswith(\".xml\"):\n",
" # Construct the full paths for XML and TXT files\n",
" xml_path = os.path.join(xml_folder, xml_filename)\n",
" txt_filename = os.path.splitext(xml_filename)[0] + \".txt\"\n",
" txt_path = os.path.join(txt_folder, txt_filename)\n",
"\n",
" # Parse the XML file\n",
" tree = ET.parse(xml_path)\n",
" root = tree.getroot()\n",
"\n",
" # Open the TXT file for writing\n",
" with open(txt_path, \"w\") as txt_file:\n",
" # Loop through object elements in the XML\n",
" for obj in root.findall('object'):\n",
" # Extract bounding box coordinates\n",
" xmin = int(obj.find('bndbox/xmin').text)\n",
" ymin = int(obj.find('bndbox/ymin').text)\n",
" xmax = int(obj.find('bndbox/xmax').text)\n",
" ymax = int(obj.find('bndbox/ymax').text)\n",
"\n",
" # Write the coordinates to the TXT file\n",
" txt_file.write(f\"{xmin} {ymin} {xmax} {ymax}\\n\")\n",
"\n",
" print(f\"Converted {xml_filename} to {txt_filename}\")\n",
"\n",
"print(\"Conversion complete.\")\n"
],
"metadata": {
"id": "nDFeGPb1YM3q"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"import os\n",
"import shutil\n",
"\n",
"images_folder = '/content/MISAHUB/WCEBleedGen/bleeding/Images'\n",
"annotations_folder = '/content/MISAHUB/WCEBleedGen/bleeding/Bounding boxes/TXT'\n",
"output_folder = '/content/MISAHUB/train/'\n",
"\n",
"\n",
"# Create the 'train' folder if it doesn't exist\n",
"if not os.path.exists(output_folder):\n",
" os.makedirs(output_folder)\n",
"\n",
"# Create 'images' and 'labels' folders inside 'train'\n",
"images_output_folder = os.path.join(output_folder, 'images')\n",
"labels_output_folder = os.path.join(output_folder, 'labels')\n",
"\n",
"os.makedirs(images_output_folder, exist_ok=True)\n",
"os.makedirs(labels_output_folder, exist_ok=True)\n",
"\n",
"# Get a list of files in both folders\n",
"image_files = os.listdir(images_folder)\n",
"annotation_files = os.listdir(annotations_folder)\n",
"\n",
"# Ensure only files with the same base name are considered\n",
"image_files = [file for file in image_files if file.endswith('.png')]\n",
"annotation_files = [file for file in annotation_files if file.endswith('.txt')]\n",
"\n",
"# Sort the files to ensure consistent numbering\n",
"image_files.sort()\n",
"annotation_files.sort()\n",
"\n",
"# Rename and move the files to the 'train' folder\n",
"for i, (image_file, annotation_file) in enumerate(zip(image_files, annotation_files), start=1):\n",
" # Define the new names for the image and annotation\n",
" new_image_name = f\"image_{i}.png\"\n",
" new_annotation_name = f\"image_{i}.txt\"\n",
"\n",
" # Rename and move the image file\n",
" old_image_path = os.path.join(images_folder, image_file)\n",
" new_image_path = os.path.join(images_output_folder, new_image_name)\n",
" os.rename(old_image_path, new_image_path)\n",
"\n",
" # Rename and move the annotation file\n",
" old_annotation_path = os.path.join(annotations_folder, annotation_file)\n",
" new_annotation_path = os.path.join(labels_output_folder, new_annotation_name)\n",
" os.rename(old_annotation_path, new_annotation_path)\n",
"\n",
" print(f\"Renamed and moved: {image_file} to {new_image_name}\")\n",
" print(f\"Renamed and moved: {annotation_file} to {new_annotation_name}\")\n",
"\n",
"print(\"All files have been renamed and moved to the 'train' folder.\")\n"
],
"metadata": {
"id": "WsiKxYWre04r"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"import os\n",
"import shutil\n",
"\n",
"images_folder = '/content/MISAHUB/WCEBleedGen/non-bleeding/images'\n",
"output_folder = '/content/MISAHUB/train/'\n",
"\n",
"# Create the 'train' folder if it doesn't exist\n",
"if not os.path.exists(output_folder):\n",
" os.makedirs(output_folder)\n",
"\n",
"# Create 'images' and 'labels' folders inside 'train'\n",
"images_output_folder = os.path.join(output_folder, 'images')\n",
"labels_output_folder = os.path.join(output_folder, 'labels')\n",
"\n",
"os.makedirs(images_output_folder, exist_ok=True)\n",
"os.makedirs(labels_output_folder, exist_ok=True)\n",
"\n",
"# Get a list of files in the 'images' folder\n",
"image_files = os.listdir(images_folder)\n",
"image_files = [file for file in image_files if file.endswith('.png')]\n",
"image_files.sort()\n",
"\n",
"# Rename and move the files to the 'train' folder\n",
"for i, image_file in enumerate(image_files, start=1310):\n",
" # Define the new names for the image and annotation\n",
" new_image_name = f\"images_{i}.png\"\n",
" new_annotation_name = f\"images_{i}.txt\"\n",
"\n",
" # Rename and move the image file\n",
" old_image_path = os.path.join(images_folder, image_file)\n",
" new_image_path = os.path.join(images_output_folder, new_image_name)\n",
" os.rename(old_image_path, new_image_path)\n",
"\n",
" # Create an empty label file in the 'labels' folder\n",
" new_annotation_path = os.path.join(labels_output_folder, new_annotation_name)\n",
" with open(new_annotation_path, 'w') as empty_file:\n",
" pass\n",
"\n",
" print(f\"Renamed and moved: {image_file} to {new_image_name}\")\n",
" print(f\"Created empty label file: {new_annotation_name}\")\n",
"\n",
"print(\"All files have been renamed and moved to the 'train' folder.\")\n"
],
"metadata": {
"id": "ua4rRD38gAEI"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"!rm -r train_f\n",
"!rm -r test_f\n",
"!rm -r val_f\n",
"import os\n",
"import shutil\n",
"import random\n",
"\n",
"# Define the paths to the source images and labels directories\n",
"source_images_dir = '/content/MISAHUB/train/images'\n",
"source_labels_dir = '/content/MISAHUB/train/labels'\n",
"\n",
"train_ratio = 0.6\n",
"test_ratio = 0.15\n",
"val_ratio=0.25\n",
"\n",
"\n",
"# Define the paths for the train, validation, and test directories\n",
"train_dir = 'train_f'\n",
"val_dir = 'val_f'\n",
"test_dir = 'test_f'\n",
"\n",
"# Define subdirectories for images and labels within train, val, and test\n",
"subdirectories = ['images', 'labels']\n",
"\n",
"# Create the target directories and subdirectories if they don't exist\n",
"for directory in [train_dir, val_dir, test_dir]:\n",
" os.makedirs(directory, exist_ok=True)\n",
" for subdirectory in subdirectories:\n",
" os.makedirs(os.path.join(directory, subdirectory), exist_ok=True)\n",
"\n",
"# List all image files in the source directory\n",
"image_files = [file for file in os.listdir(source_images_dir) if file.endswith('.png')]\n",
"\n",
"# Shuffle the list of image files\n",
"random.shuffle(image_files)\n",
"\n",
"# Calculate the number of files for each split\n",
"total_files = len(image_files)\n",
"num_train = int(total_files * train_ratio)\n",
"num_val = int(total_files * val_ratio)\n",
"\n",
"# Split the image files into train, validation, and test sets\n",
"train_files = image_files[:num_train]\n",
"val_files = image_files[num_train:num_train + num_val]\n",
"test_files = image_files[num_train + num_val:]\n",
"\n",
"# Copy the corresponding label files to the respective directories\n",
"for file in train_files:\n",
" base_name = os.path.splitext(file)[0]\n",
" label_file = f\"{base_name}.txt\"\n",
" shutil.copy(os.path.join(source_labels_dir, label_file), os.path.join(train_dir, 'labels', label_file))\n",
"\n",
"for file in val_files:\n",
" base_name = os.path.splitext(file)[0]\n",
" label_file = f\"{base_name}.txt\"\n",
" shutil.copy(os.path.join(source_labels_dir, label_file), os.path.join(val_dir, 'labels', label_file))\n",
"\n",
"for file in test_files:\n",
" base_name = os.path.splitext(file)[0]\n",
" label_file = f\"{base_name}.txt\"\n",
" shutil.copy(os.path.join(source_labels_dir, label_file), os.path.join(test_dir, 'labels', label_file))\n",
"\n",
"# Copy the image files to their respective directories\n",
"for file in train_files:\n",
" shutil.copy(os.path.join(source_images_dir, file), os.path.join(train_dir, 'images', file))\n",
"\n",
"for file in val_files:\n",
" shutil.copy(os.path.join(source_images_dir, file), os.path.join(val_dir, 'images', file))\n",
"\n",
"for file in test_files:\n",
" shutil.copy(os.path.join(source_images_dir, file), os.path.join(test_dir, 'images', file))\n",
"\n",
"print(\"Splitting complete.\")\n"
],
"metadata": {
"id": "2DGCW0-xgExp"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"from torchvision import models\n",
"import torch"
],
"metadata": {
"id": "GS8g5pqJgQP8"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"torch.cuda.is_available()"
],
"metadata": {
"id": "S772wWxHif9X",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "c8c2f915-50d8-4ecf-ab92-82f7b001f5d5"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"True"
]
},
"metadata": {},
"execution_count": 6
}
]
},
{
"cell_type": "code",
"source": [
"device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')"
],
"metadata": {
"id": "8t7u-bkOiiEO"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"import os\n",
"from PIL import Image\n",
"import torch\n",
"from torch.utils.data import Dataset, DataLoader\n",
"import torchvision.transforms as transforms\n",
"\n",
"# Define a custom dataset class\n",
"class CustomDataset(Dataset):\n",
" def __init__(self, image_dir, label_dir, transform=None):\n",
" self.image_dir = image_dir\n",
" self.label_dir = label_dir\n",
" self.transform = transform\n",
"\n",
" # List all image and label file names\n",
" self.image_files = os.listdir(self.image_dir)\n",
" self.label_files = os.listdir(self.label_dir)\n",
"\n",
" def __len__(self):\n",
" return len(self.image_files)\n",
"\n",
" def __getitem__(self, idx):\n",
" # Load image\n",
" img_name = os.path.join(self.image_dir, self.image_files[idx])\n",
" image = Image.open(img_name)\n",
"\n",
" # Load label (assuming labels are in a text file with one label per line)\n",
" label_name = os.path.join(self.label_dir, self.label_files[idx])\n",
" with open(label_name, 'r') as label_file:\n",
" label = label_file.readline().strip() # Read the first line as the label\n",
"\n",
" # Apply transformations to the image if provided\n",
" if self.transform:\n",
" image = self.transform(image)\n",
"\n",
" # You can process the label further if needed\n",
"\n",
" return image, label\n",
"\n",
"# Define transformations for image preprocessing\n",
"transform = transforms.Compose([\n",
" transforms.Resize((224, 224)), # Resize to 224x224\n",
" transforms.ToTensor(), # Convert to a PyTorch tensor\n",
" transforms.Normalize(\n",
" mean=[0.485, 0.456, 0.406], # Mean values for ImageNet data\n",
" std=[0.229, 0.224, 0.225] # Standard deviations for ImageNet data\n",
" )\n",
"])\n",
"\n",
"# Define paths to your image and label directories\n",
"image_directory = \"/content/train_f/images\"\n",
"label_directory = \"/content/train_f/labels\"\n",
"\n",
"# Create an instance of the custom dataset\n",
"custom_dataset = CustomDataset(image_directory, label_directory, transform=transform)\n",
"\n",
"# Create a data loader for batch processing\n",
"batch_size = 32 # Adjust the batch size as needed\n",
"train_loader = DataLoader(custom_dataset, batch_size=batch_size, shuffle=True, num_workers=2)\n"
],
"metadata": {
"id": "gDTaaSguiKLn"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"import torch\n",
"import torch.nn as nn\n",
"import torchvision.models as models\n",
"\n",
"# Load pre-trained ResNet-18 model\n",
"resnet = models.resnet18(pretrained=True)\n",
"\n",
"# Remove the original classification head\n",
"modules = list(resnet.children())[:-1]\n",
"resnet = nn.Sequential(*modules)\n",
"\n",
"# Define custom classification head for bleeding vs. non-bleeding\n",
"classification_head = nn.Sequential(\n",
" nn.Flatten(),\n",
" nn.Linear(512, 2), # 2 output units for binary classification (bleeding vs. non-bleeding)\n",
" nn.Softmax(dim=1) # Apply softmax activation for classification\n",
")\n",
"\n",
"# Define custom bounding box regression head\n",
"bounding_box_head = nn.Sequential(\n",
" nn.Flatten(),\n",
" nn.Linear(512, 4) # 4 output units for (x, y, width, height) coordinates of the bounding box\n",
")\n",
"\n",
"# Create the modified model\n",
"class ResNetModified(nn.Module):\n",
" def __init__(self, resnet, classification_head, bounding_box_head):\n",
" super(ResNetModified, self).__init__()\n",
" self.resnet = resnet\n",
" self.classification_head = classification_head\n",
" self.bounding_box_head = bounding_box_head\n",
"\n",
" def forward(self, x):\n",
" features = self.resnet(x)\n",
" classification_output = self.classification_head(features)\n",
" bounding_box_output = self.bounding_box_head(features)\n",
" return classification_output, bounding_box_output\n",
"\n",
"# Instantiate the modified model\n",
"modified_resnet = ResNetModified(resnet, classification_head, bounding_box_head)\n"
],
"metadata": {
"id": "ly_ZxMpJl--P",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "35f3c3a2-6bac-481b-e4c9-4f9f9071d82d"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"/usr/local/lib/python3.10/dist-packages/torchvision/models/_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.\n",
" warnings.warn(\n",
"/usr/local/lib/python3.10/dist-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=ResNet18_Weights.IMAGENET1K_V1`. You can also use `weights=ResNet18_Weights.DEFAULT` to get the most up-to-date weights.\n",
" warnings.warn(msg)\n",
"Downloading: \"https://download.pytorch.org/models/resnet18-f37072fd.pth\" to /root/.cache/torch/hub/checkpoints/resnet18-f37072fd.pth\n",
"100%|██████████| 44.7M/44.7M [00:00<00:00, 77.0MB/s]\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"import os\n",
"import json\n",
"import torch\n",
"from torchvision.transforms.functional import to_tensor\n",
"\n",
"# Path to the labels folder\n",
"labels_folder = \"/content/train_f/labels\"\n",
"\n",
"# Path to the corresponding image folder\n",
"image_folder = \"/content/train_f/images\"\n",
"\n",
"# Initialize an empty list to store bounding box targets\n",
"bounding_box_targets = []\n",
"\n",
"# List all files in the labels folder\n",
"label_files = os.listdir(labels_folder)\n",
"\n",
"# Iterate over the label files\n",
"for label_file in label_files:\n",
"\n",
" label_file_path = os.path.join(labels_folder, label_file)\n",
"\n",
" # Load the bounding box coordinates from the label file\n",
" with open(label_file_path, 'r') as f:\n",
" label_data = f.readlines() # Assuming labels are stored in JSON format\n",
" # print(label_data)\n",
" # print(label_file_path)\n",
" for line in label_data:\n",
" # Split the line into individual coordinates as strings\n",
" # print(\"Hello: \"+str(line.strip().split()))\n",
" x_min_str, y_min_str, x_max_str, y_max_str = line.strip().split()\n",
"\n",
" # Convert the coordinates to integers\n",
" x_min = int(x_min_str)\n",
" y_min = int(y_min_str)\n",
" x_max = int(x_max_str)\n",
" y_max = int(y_max_str)\n",
"\n",
" # Append the bounding box coordinates to the list\n",
" bounding_box_targets.append([x_min, y_min, x_max, y_max])\n",
"\n",
"# Convert the list of bounding box targets to a tensor\n",
"bounding_box_targets = torch.tensor(bounding_box_targets, dtype=torch.float32)\n"
],
"metadata": {
"id": "5lcS0ZnLHFF_"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"import torch\n",
"import torch.nn as nn\n",
"import torch.optim as optim\n",
"from torch.utils.data import DataLoader\n",
"\n",
"# Define your custom loss functions for classification and bounding box regression\n",
"classification_criterion = nn.CrossEntropyLoss()\n",
"bounding_box_criterion = nn.MSELoss()\n",
"\n",
"# Define an optimizer (e.g., SGD or Adam)\n",
"optimizer = optim.SGD(modified_resnet.parameters(), lr=0.001, momentum=0.9)\n",
"\n",
"# Set the model to training mode\n",
"modified_resnet.train()\n",
"\n",
"# Define the number of training epochs\n",
"num_epochs = 10 # You can adjust this number based on your dataset and training performance\n",
"\n",
"# Training loop\n",
"for epoch in range(num_epochs):\n",
" running_loss = 0.0\n",
"\n",
" # Iterate over the mini-batches\n",
" for i, data in enumerate(train_loader, 0):\n",
" inputs, labels, bounding_box_targets = data # You'll need to structure your dataset accordingly\n",
"\n",
" # Zero the parameter gradients\n",
" optimizer.zero_grad()\n",
"\n",
" # Forward pass\n",
" classification_output, bounding_box_output = modified_resnet(inputs)\n",
"\n",
" # Calculate classification loss\n",
" classification_loss = classification_criterion(classification_output, labels)\n",
"\n",
" # Calculate bounding box regression loss\n",
" bounding_box_loss = bounding_box_criterion(bounding_box_output, bounding_box_targets)\n",
"\n",
" # Total loss is a combination of classification and bounding box loss\n",
" total_loss = classification_loss + bounding_box_loss\n",
"\n",
" # Backpropagation\n",
" total_loss.backward()\n",
"\n",
" # Update weights\n",
" optimizer.step()\n",
"\n",
" # Print statistics\n",
" running_loss += total_loss.item()\n",
" if i % 100 == 99: # Print every 100 mini-batches\n",
" print(f\"[Epoch {epoch + 1}, Batch {i + 1}] Loss: {running_loss / 100:.3f}\")\n",
" running_loss = 0.0\n",
"\n",
"print(\"Finished Training\")\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 245
},
"id": "8EI4THBHidyZ",
"outputId": "5cc6e12d-4e60-497d-9b9c-0a61f6ed3a1a"
},
"execution_count": null,
"outputs": [
{
"output_type": "error",
"ename": "ValueError",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-19-9bb691bff76c>\u001b[0m in \u001b[0;36m<cell line: 20>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0;31m# Iterate over the mini-batches\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtrain_loader\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0minputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabels\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbounding_box_targets\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;31m# You'll need to structure your dataset accordingly\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0;31m# Zero the parameter gradients\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mValueError\u001b[0m: not enough values to unpack (expected 3, got 2)"
]
}
]
},
{
"cell_type": "code",
"source": [
"import os\n",
"import torch\n",
"\n",
"# Path to the labels folder (containing text files)\n",
"labels_folder = \"/content/MISAHUB/WCEBleedGen/bleeding/Bounding boxes/XML/img- (1176).xml\"\n",
"\n",
"# Initialize an empty list to store bounding box targets\n",
"bounding_box_targets = []\n",
"\n",
"\n",
"# Iterate over the label files\n",
"# for label_file in label_files:\n",
" # label_file_path = os.path.join(labels_folder, label_file)\n",
"\n",
" # Read the bounding box labels from the text file\n",
"with open(labels_folder, 'r') as f:\n",
" lines = f.readlines()\n",
"print(lines)\n",
"for line in lines:\n",
" # Split the line into individual coordinates as strings\n",
" x_min_str, y_min_str, x_max_str, y_max_str = line.strip().split()\n",
"\n",
" # Convert the coordinates to integers\n",
" x_min = int(x_min_str)\n",
" y_min = int(y_min_str)\n",
" x_max = int(x_max_str)\n",
" y_max = int(y_max_str)\n",
"\n",
" # Append the bounding box coordinates to the list\n",
" bounding_box_targets.append([x_min, y_min, x_max, y_max])\n",
"\n",
"# Convert the list of bounding box targets to a tensor\n",
"bounding_box_targets = torch.tensor(bounding_box_targets, dtype=torch.float32)\n",
"\n",
"# Print the resulting bounding box targets tensor\n",
"print(bounding_box_targets)\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 282
},
"id": "ju7fsfnySmo4",
"outputId": "f11d0cd7-34b2-4138-c4fb-ca564ee169a1"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"['<annotation>\\n', '\\t<folder>XML</folder>\\n', '\\t<filename>img- (1176).png</filename>\\n', '\\t<path>D:\\\\WCE\\\\dataset final\\\\everythingYOLO\\\\img- (1176).png</path>\\n', '\\t<source>\\n', '\\t\\t<database>Unknown</database>\\n', '\\t</source>\\n', '\\t<size>\\n', '\\t\\t<width>224</width>\\n', '\\t\\t<height>224</height>\\n', '\\t\\t<depth>3</depth>\\n', '\\t</size>\\n', '\\t<segmented>0</segmented>\\n', '\\t<object>\\n', '\\t\\t<name>bleeding</name>\\n', '\\t\\t<pose>Unspecified</pose>\\n', '\\t\\t<truncated>0</truncated>\\n', '\\t\\t<difficult>0</difficult>\\n', '\\t\\t<bndbox>\\n', '\\t\\t\\t<xmin>114</xmin>\\n', '\\t\\t\\t<ymin>0</ymin>\\n', '\\t\\t\\t<xmax>202</xmax>\\n', '\\t\\t\\t<ymax>99</ymax>\\n', '\\t\\t</bndbox>\\n', '\\t</object>\\n', '</annotation>\\n']\n"
]
},
{
"output_type": "error",
"ename": "ValueError",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-22-15d1a5ca5d09>\u001b[0m in \u001b[0;36m<cell line: 19>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mline\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mlines\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0;31m# Split the line into individual coordinates as strings\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 21\u001b[0;31m \u001b[0mx_min_str\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_min_str\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx_max_str\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_max_str\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mline\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstrip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 22\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0;31m# Convert the coordinates to integers\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mValueError\u001b[0m: not enough values to unpack (expected 4, got 1)"
]
}
]
},
{
"cell_type": "code",
"source": [
"from PIL import Image, ImageDraw\n",
"import xml.etree.ElementTree as ET\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Load the XML file\n",
"xml_file_path = \"/content/MISAHUB/WCEBleedGen/bleeding/Bounding boxes/XML/img- (1176).xml\"\n",
"tree = ET.parse(xml_file_path)\n",
"root = tree.getroot()\n",
"\n",
"# Extract image path, width, and height\n",
"# image_path = root.find('path').text\n",
"image_path = '/content/MISAHUB/train/images/image_1176.png'\n",
"image_width = int(root.find('size/width').text)\n",
"image_height = int(root.find('size/height').text)\n",
"\n",
"# Load the image\n",
"image = Image.open(image_path)\n",
"\n",
"# Create a drawing context to draw on the image\n",
"draw = ImageDraw.Draw(image)\n",
"\n",
"# Loop through object elements in the XML\n",
"for obj in root.findall('object'):\n",
" # Extract bounding box coordinates\n",
" xmin = int(obj.find('bndbox/xmin').text)\n",
" ymin = int(obj.find('bndbox/ymin').text)\n",
" xmax = int(obj.find('bndbox/xmax').text)\n",
" ymax = int(obj.find('bndbox/ymax').text)\n",
" print(xmin, xmax, ymin, ymax)\n",
" # Draw the bounding box on the image\n",
" draw.rectangle([xmin, ymin, xmax, ymax], outline='red', width=2) # You can customize the color and width\n",
"\n",
"# Save or display the image with bounding boxes\n",
" # This will display the image with bounding boxes\n",
"plt.imshow(image)\n",
"plt.axis('off') # Turn off axis labels\n",
"plt.show()\n",
"# If you want to save the image with bounding boxes:\n",
"# image_with_boxes_path = 'path_to_save_image_with_boxes.png'\n",
"# image.save(image_with_boxes_path)\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 423
},
"id": "0a12XbibTz2b",
"outputId": "0357ca0d-9bdc-4307-b001-e1fe98ab49dc"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"114 202 0 99\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAGFCAYAAAASI+9IAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOz9Sa9ky7Imhn3mK2I3mXnObd59r6oolQCCJQkQJ4QAzTTTRBON9I800FC/QzMN+BMEARKgCSECEpsSiiyRqGLVfe/d5nSZO9w0cLfOm9XEjp25M8+2c3ZGxFremLubW+fm7sTMjDd4gzd4gzd4AwDpSyPwBm/wBm/wBq8H3oTCG7zBG7zBGyi8CYU3eIM3eIM3UHgTCm/wBm/wBm+g8CYU3uAN3uAN3kDhTSi8wRu8wRu8gcKbUHiDN3iDN3gDhTeh8AZv8AZv8AYKp70Jiegl8XgVsLeFutuPBpm4PHog4P27R/z+N7/B9/ePuEsnUM5AvgCXC3DJIGYAXIvhtpj6xjC7ep8hj1ENSZh3lU8EpOSxGkPOeaUMCvR0C9qa4d6WvasuZvwf/uEf8L/++Zdn4/UGv25gAP97AP+XL41IhT1zfLdQeIMCW12aACQiPN7f4eHuDudlQQKBwMr4GWjZ/Uuh+wZv8AZvcAjehMIOEAbOaw/r74WAu5Tw2+8+4PHuDu/u7nACIbncJP+8nTDyVcDbKL3BNfC1+lbehMIO8IPL/gvZewKQEuH7+we8O5/x3d0DzqcFJwYSMojFRcQAETIYTAyacJyhIHqDLwL/z/t7/Kcf3oG4jIq54ga+Q/a/7IfIf6I2GXeDzO5fD1cxGWp/lv/2ZNtKVbtjm0a3ChKXHtmEknlRPksfJRB87zARLjmX9ImQTgsuYPybP/8VP356wl8+PW1h9iLwWwD/JwC/+yK1Px/ehMIAPJGv0jNbmkSEU0p4PJ/x/u4e96cFS0pYgLJ2wH5Vn5CJlR98rRrFrwX+zWnB/+3hsTDKTjBE8D7b8L1+mrDn+GJShnuKa5deunWV6tBczaNrXWMQDJmaNbadOAwSAFQYvRSlgiGXL0tTPwN4YhEKCem84AnAf/PxI/4E4N8/PSH3MvfF4Z8A+D9+5jpvCW9CYQMYwKV+n5E1ATinhA/39/j+3SPe39/jhLq+AOgULMKBKkMwrWdW7xu8Emj4d/H8WRjAiFu3AiHX3GV1KY7uHq38VweNZkYMZDirXF8mnaQExl1K+J/84Xf4+x9+RM4X/OnjEz5m6fuhbecCOt5mHfAmFA6BJxkhSgLh4XzCw90ZHx4ecbecsBAVCwEmGCSthAKZPsSb2lh49owIpM8JRHQ9rl8QZjgXIWAMPYj0WZ7ht620nwv21biW6pY4d325UbioVUQ1CzM4M4gy7tMJ785n/O7dIy78M3789IRfajTcuiq2/vbXAm9CwcGQHAZKRGH2hcUvKeHDwz0eH+7xmw8fcA/gxFUoULEOVENxZSUkMLJpmToXeufViFEdZbhfYl1bXAbPEQ5beUduib0hrtOymfu+4jI2FJNt1zESCA0tdcVQ/+a2lsTzBYJPE9bZGhjRgB+fdm0luFN9ec5M4/Y11/L5AmTCHZ/w3fkMfP8Bl0vGwsCnjx+HxQHtFH+zGt6EwhpQ851N+1+Q8Hh3h/u7M3733Qfcn094SAvuMmPh8kdlsaEjr1JGAqs2LezCpsQaaV7DZJk/r4vCWwpfk9Uw8+cXgVDH0q0lTcvRXFjlL7NXPdV8XtgrEG5ZYVi4lj52UoectAjCKCFIkvzDj0hEeJ8W/O3793h/d4+nP/0ZP18u+Pli+2dstjFsGduPasavUTi8CYUZTGa8WAknSrg/n/F4f4fHuzPOKdk6AqNGGyH4o70CSET6sDBsYTsuPc+cDQfhM9B1q50zc9ASX1ow3HRz5YpldsTi8qLeno1h5OsmCVVay3gVBH386hJuCUPhyRhE59U+baOqdOIw8PSElBacaMG70wlEhPd3J/BH4OMlwxxJbaXkPn99wkDgTSjsBbaFqvOy4DcPj/jNd+/w7uEeDycC5Qz69ASJ22AigKhf3Kq0llAIO7ORoCdF/8xle4MvAOrm9oIBwFoETysQ3sZvHdqeTEOBENNz84RQlI+7ZUEmwoUzHlPC3ekE+u1v8McffgQ/PeHHDBUMDAsCeIMCb0JhJ4jb6P60lLDTxwfcn044EUA5I2VGAlukURcGaBB0E+dH9S6eG9kIb3AFDOwEjTYyob3fwWOCYZwjOgx/XTBsNa+lsV+9cVhGqFgdxcFEzEgAHk8nfP9wj0+XC/IPP+OXywWXsX2G3nr4dc3FN6GwBTUcLhGwgPDu7g7v7u/x/ft3OBPK2kHOSJxxEk+ni7WehR96i8A7SEUbZRRL4s1SWIfokpozVl3Pb3w/Q5cWB481mBHWR/T5Fm6DVG19v4YzxV4cwmQSK6A+yhkpJTye70CJcFoSfvj4CZd8wYVdpolAoPr816SkvQmFNVBGApxPJ9yfT/j997/B4/mMx2VByhckBs4s+0RNIMxJyMU4iAypxCmHyL0Jg9sDc69ZzqK6ZovDfiGU3F+Xrn5m3cY8r+8Nbgi1ey+NNUFg0OUJjwTc3d/hP/juPf50d8a//vOPuLQSxcGXXuz/UvAmFDZA/JqnJZUIo7s73C8nLOQ3pwHEdRdC8R0BmC+exdAJoNVQfhWk2C6e7Em7BWtOaIhg2KGZT4QFUdUYdxgnXPP8Cr0P18FonhwAnXF+eFhWfhhcLYaUCO/v7pBBeDz/gl8uGR9FGTtElN8uvAmFASjfyHVhOQHfPRSX0eP5hDMRkC9YqGy9X5DKbuUMMKXyF0usn6Jj5vBKfc6JgvvoW4MhQ+a0EdvZ9NcXBM5x76tsnBpFXqlV8PxAn18dbMj2Cci8YbPQAIAr7TCDKGGhhN88vsfjI5CXE/741x/w7/76A56agRrZDVt1fyvwJhRGUOnjnAjnZcH7x3u8f3jAw+mME8o6QmIGMpv7Wf2TZD+BJnauchE21tJFp7jk4spgl3KXT3wK69zppXiXMU3TxNj7c1eawLyXq24LjjYs1hYkW+1yhEj4ANFgg5sWcRsm0UY77YHNntJ2rJc4NqheVrrR5PvxUppVO+fnYy6Lz+eU8LsPH5AZ+HTJ+PMvv+ApZ2RQKGGk3EVq/rYEAvAmFCJ4WmLgbkl4uDvjN999wLvTHR6WM07MWCAhc9U6qJmpWghjnjAjoeKSYPe7TV+Ew1goHIG1nKMQP2DAHLzQ8nm7wgce2cZlxtW/1re9yba3ySsJ9TgE8vWUoxG6tAM8hm2hwZi0CWU/Sl9JTL/CBQXtrfFrqxcW1j7bX06L3Gihxb9HTEej2sYYGN+2BbW9Aq7FsQh/VwhZBgaBmHEC4bfv3yNnxtPTE3759AnIuZ5zFlv/TM/WVwdvQkHAUeCSCOeU8E9/+1u8u7/Hh/fvcM7AKTPunoqmwcJcRAMhqidGjpcfufluE5bLngYxIBqK43wx3/QzIlXmJyzZ+6CpkbRtMuFXn8wgRu4wuEb2bOTY1eyN9g3qKWU7nHhyNFqrMpII8jHivienWLH7smNct/pYvOfds9a1RShW7rScllLL53gtZiLw9O2Y+beQQCDaOcwr5QgEGV3HTmUEZdDHj0j0hOXjBd/ljLv79zi/u+CHjx/xx59/whPKIZi5q0WO5Is4jOfWlqrzeuGbEQrbrGt/Oee6F+Hx/r7cnkYJJzAWsG6qUQHQeUB6/7LhxIVAB4qlWBsdo3EupLWdtntatuv4YocPgYYMa3/frjEfY9S8I/0zqpom5i7f2q7rxkRaUbnD3nSeMdRjsCXUFSiKhk4w8FyYhWJU25dymnawYLXXJbnFJCeW6UHoXT5unKu1SMhlnDNhAeGOCO/PZwCMv376CMq525diCx2m0sUu8sLi67YlvhmhcC2otK/K+CkBv/3wDr///jt8OD9iIUK+PJX1qjLDqtYxG3gjmk4g+M+B5uoJOjMjc14NmXvtMOohnVriy9/wZxwRQDftoX2q+auCV4jSAEZY3pjGHU3NbDmAcEHGhYEnAI+PD1juz3hixl9++QV//fgRT1Ss+OAhex0xDy8Kv2qhQO6TAJxOCb/98Ijv3r3D4/0DFqZiGaAh1yocWpIbaSn+5Zql4L+35cyshC8BQxfySuLO7cv94np7js01cFuBsNbXM0/zZ4AbNfLLC4+2726LzSqNKk3a6QMLikpxpgXfPTwCIBADH58+lUimgQx7/cL3evhVCAUxcUdmswxuIuBuWfCbD+/x4fGx7ID8dAExY+F6rsoq14czUZ2F0EgA+21G5uiGLhEer0MUbMOaG2u4SQxYXb/cU64HOpB2q5zbwNdr4X2z4CeXOn1I9xqdiPD+/qGEHl8y/nR5whNzOSuVhwXBr0J9KyP9zQsFGv1w2v+JCCci/P67D3j3cI/fv/sOJ0pIny44XaorMUMtBr/beA2Kz1xcRfHTvtNcgHwj8LnaNFLorioHr6ucN7gtEGAnGFP5ngAsn0pU4YkIp+UeH96d8fG84M+fPuLf/fhTV85oHWx7heXrgG9WKOwZHEK5RvPhfML7hwc83t3hTIuGmxLb+pIQk7c3/EKl3lUrv2WBOGxkYstXBcIeoXDNRTODUtajfJoY/tkFOUTH8Fy3IIDR+suRMlyqm7jYZkscEQfREOb1KXv4FrhEhY4WmA4Lvy991FNYL4bzFLDdmJEo4bQkfEj3yInwp59/wUXDVddAemNjoeyVwzcrFEbQzuME4N39HX77/h1+9913OC8LkIsw0DsRahRCcR01AXtulVRi4IXRq0CwxAGXki7+Du/BndB4SfD3H3h8Rrt1VawN0vvf+wTCevt2t/9WG8ZQxrx91v3aME3kHu5vSCZE4OPW0EggkPvvswHX+QUO1+UKzS5pQUon/N3Db/D46Rf89OPP+OvTJ/x4KWEf3Mr70Bf9cflfm3j4VQiFUazDQoTvHsqJp/fnu7ohzXYZqJnp5n6jJ+nE9wUzx/CEuSUwngQjV9OXgmtO9DyGtxOob/CNQUvrRQFYo6EvIkIJSExAKrR7udTjtjlj4YTHZcE/+e1vcPfjD1h++gl/uVyKPuCitW/lunwt8M0IhRlfkSVmb80TgGVJePdwh8f7M+5Pp3qoHTsLoRbqfUK+rpFLSInEH08BTacpp26T8j3nrJbCa4Q9N6nd+qiHnYk3k1y7Z2BU8lZJR+rabCfpP58FuPuyVvveMZK9CGuCYVC6m4PPJSuuvIBUry//JAI4F0VP3MdLzrhbEn7//j1yfsLl6RN+vJS5+cJBtV8UvhmhEMF0+3a3eyLgu8cHPN7f429/81vcUcKZEh6eCIt5+0vuTigQnAjogNludS2fzn1ECAd1UT0fw1sWxhh8utdzlrt3Hb06gXVDdEY38/Y2XsIaaLgzbW8a3BYIZcHqs/rjW5Smla+sq7gzr2hFqJm7Zf8g7hOiK/nrf5eCXcFvASglMAEXMPjyE1IGHs4L/vbhHt+dT/j49/+AHz894adLNr0wlBx3PX+N8I0JhX4wvH/vlBLOKeHd/R0e7+5wtyw4gZCYdO3Ahpj1K4u9KDpCKywYutAsYaRmLYzdRzR4FsNXXdpncgMran0Cj9xF/eTbv6awD6/theZ98HJCqncbCl3tGJcNobCr3Up/nxOa+jj2Q0BnBTWfrm1Cu0N6VoyeW7UDDlGBSu6ySY0cjgwG6pHaxAmnRLjHgu8f7pFSwtNPv+CJebj4vG/P+OuFb0goUPMrrg+AgYflhA+Pj/jd+/d4OJ9xh7JJJeVWIHjvkLmJWLR27tMpp2BPEqZVb03+fqH51mxOEJzXP15UbqFOlNHxFwcYuxdUr83oeINvF4RuA/0KgwirhwxK9XfOSEQ4J8I/+/33+MvPH/Hx0xN+uFxwyf28/drhGxAK6xpUcRlROdju4QHfP77DQzrhzLDjry8ZoLRLGzs66LPrHgdLFYP083TH4baa5ueMjHqDrx9aN1r4rv+Mra8YKr1uNRAw3SEvhxBMBYK/yCEY7XLXM+GUFjyeTvi7336Hf//Xn/CXn3/Bx29sHnzlQmG4LNWlWCjh3f093t0/4N39Pe64Hn+dy9HJcgrpavy9UJSY0UNm39S+QissvqZXBKP2X70wu8t99HX7Xt9gL4wXmINgWHEflbTlk5lWdTfGim7nvHBqMcScTUn1M5d3BMYpJ9ynhN+8e8RPH5/w8dMTLk9P39SRSF+5UNhmPO9OZf3gDx++x8Oy4J4IJ85ImbFQXSyk8aKh7jlgcRkdO/9wLa0svP1ate1fabPf4AqwtS0aPGvTls8ReQ2vd5jWCZyQwMzI/ATkC8DlpOQ7SrhLhPOHR/zh4Yx//fd/ws9PF/zE4/PyvjbV5ysXCmMo1kGxEB7v7vDu7g53KeFE5da0haEhqMVs3Ocf383HOC4wjzEsCbdCOzer2p13XcM6Vv4bR3+Do9ASX7vqXP4Zh6SaQPA77WdW7OwoGhqt19M8XECeJxeuImclgQiPpwVLSvj+4Q7p4xM+/vJpOjMOyKMvDt+MUKDm85wS3p1P+N27d3i8u8M9gBMDC2ecAVB1XWTMiehaGFyy+Q3Bt9iml4Qtyvqa2MU1MGrfkGXfrLppjzYv9rhGS0RSUt2RaFF+cTqd8JASPn3/He5+/Bl//eWTBqR+bdaBh29GKDCgW9YfTye8u78v+xHOZ9ynhDMYJ+Z6x3KR+BnQ2xLXY3Oegdebn+RXDJW4AmVFDUT3xe+I/Fpd8/Fhx4OybnHRTyzUlx8XbiWSr8behfWAgnNN2MF+ATm1EvT9+OXubqhrfsbgi4tZjkChSwaYkZaE3zw+4HQ64UKEf/jxJzx8/FTXISou+LpE/1ckFEaLQH2KhQgPpzPene/w/v4ed6nsRSg3p1XBIdl1KUFCR+e1s/tXnw3XmmMEgxLDZAW6OzabYhLJv0ZQW8TWFLnSk+1KuStDZ9M+8t4Vfr9nmmwkUXfCBl6FD+1cE9rJOLYdhOT+5EVfuPatOzfBuxXbYEnpXJ/Ggmiagw2l3EHI87VQepq6Hi84EJhkYVbwde6XGh5Eoo01BU/HkTTB1bivrD9P02tLLM6k9CUz5MLOh7s7EBE+vX+HT09PeLhcQHn7+LzXCl9IKMxnnd19IBzb7xAkfUY6Cyxs83Ep12j+k9/+DnfnE+7vTri/ME4ZOIEBYmQwPiXxS0oZY5zGYZc8+a6ZupYS97ky1/uJe7Yc0MmTajT9Fo+myfdhpXvgiMY5L/iIg21XjbRutPOK7zikQ5nwe/DaFMZE2Ax1Du8aWlQZkcNueHmld0qz7R0pgXLk0o0EwvOshqhTWb96UVTwGzRHBAQ7ZgsAxCF/ABX8sZYZrO8172HmanpqNtf5Ay6ZUrEGcsbdDx/xsCz4Zw+PuH+64GFJWP7xrya84XvJ10gVW3l3mWHzWeGLCAUafJul6AWCfLfOWwCkBDzc3+HxfIe78xmnJVV3EiF5P6MoKE79kvBkHXDR0LrJdGzA/MSIml4QZ4MEzde1ObzD78VNTDgHYmdbU9mwlLbH7QhiL7Drc+s4CczdDk2i7SbuqKuka/obbdH1wGYfXeM+pmHSkqzZEd9ZDxXXjrye605iw2HUPj39q046SdfTkOnj3StfnU6kHeM3LiI83NxMingNpzu5DJB3XL5R3e+ES8bdKeHx7hwinVRdqRYbYWSxSqpfqVA4BhMiYB02nBJwf0747t0j3t0/4O50QqJ6eQaZ5hD3prjJNCx+LBi6vDt9v/vi9tdxuhrcMQkzbWuLRV9Drl+evI+DbnDaSHfET9/aoq2Q9p9tHcN6N/CywuuRHM2zW8ERai14ICo/ziUpV9V2ZvUXA5n/8QkDjdAlJBA4Zzx9zDifFjw+3FfaKOmED10IRUDnSBF+5eI1wFcgFNaAcJ+Ah7szPrx7xIfHRzyc72IXC+HlDUoTa8G5jLYEwrCYHQJhLwO4Jex200y4v1xBsru+DSnyKub9CwJVd1bHB5t0Oww9SztYY9hM/8JnJrXjOBv2XFNTdZfEWwe4EIwIhNfDH3sIArZxC1VPXR4cfcHM4IVB2dxJdvT+6NzVLwevUijQaieJlCYkYtwtC+7PZzze3+PudMYpLaBLLtvq2Zlu4rBpzO1QstcKhgtzbfo5a+O2wEk75q/jCavPgdVyBm6rqXGGA1Es296jbwbWImFaQXorntdaH9N0V0YeHVFSfBvNAPB2hMzm5qY2dh+vhyc283auBopgK8dxU2yXy5SoBMAY7zIlq7uT5RXAqxMK1j118cwZ2NKZjHLO+f1ywj95/wEP93d4uH/EkoGUL1hAWAAsqZx+OhrWazTzW/CxtxDVN/DQx/B8myAtzJydUwXwtsXrcqJE3t5GdBFqJCNVTlURXzJwarY1/+b+Hn+zJPz3P/4EcMlzQXFezNy5XxK+gFDYu0g5ziWf96cz3t2d8e7+HufTuRyBjWpBoCwuJ24KmPS9nEMk475qTWxZC531MXJBzRHyLoLXBDePc/8VwnO78GsXH349RC67ASOeMvM1kZkuQpugEGHhm/H9+0f8zd0Zf75kfHx6wlO91jPaja9nZL+IpeCXaQT8MmhMG4+1JpRIo8f7O3x4eMSH+0ekGvNc1nEIiwiGYJ+uu3RK6PFcGISCNtoWZNGVx1jckgF87czkDW7PK29pserCqx5BYe+iIDSnV0YGcQIRh3TPRUtZ7AsQfHDZUf9cHqdG+v/u+w/4Zx/e4R8+PuHPP/2Mf/zxpyH3ey1wNKT3swDpv16vYCQw7paE7x/e4cP9I96d78sFORlAzuVuBC5hqNrNmYXjvwylXAlly/zrIoY3+PxwTZjz6PuxOl8GRnt6/G2CM5u506RWyg+HVI7SuGKfCzFgpX/IRMj1t1+36xbfnzLOmfAv/oO/wz//u9/j++/eYVmqyloOYcPuTvgM8AUshXZhxX7LxTiov1pYiHC3LOUso9MJd8tSXESVSFLyZly7llAXmv3vwRj0oaori8lXCpk1zd0f+LWrrCN3QNzg4L1bCrI92BDml/CEmPw959h8RiFMoLDgWr4OXAVe45w0tKUXDa0m9zHKqtp3fTnaRbwFt+qyYLT7RVZfyTHkhsd+4CCZb7XPozZU5GzxXPdhNEnokrFcMr57uMcvD/f4zeM9nj5+Qs5lM60hfgDvF4QvtNDspSJVYcDdGw8JwHfvznh3/4DfffcdHpBwZmC5lBt1yxqC7IPOoaS5jmKUOr6X9+VGqciyz0QFvBXRdXvYcpsRGVMwoeXeh0cTAV4ja16TQFD3gTuvP8bmWLotyHlElQ6EUc3upahqs4olZvV9hN3Ew6zX0aYJaakTbqrXLW0M+O1bshldbzrzz90Pgg88mdVfk2/hufEeQLECmvrR4qBydvIeAH36hPTTz8AvP+NvTyf87m//gP/3hfHHH37En37+WNdX2oV3oZzPf1PDF48+mp9GY2bnaVlwtyR8eHwsVkJacMrFVUQueSzLLAUm7sr112wKJrH2gSC5YlPa9P3s8QsuNN+aLW7dPbz63luMo5nsOqDtwpBsw1JYu9hliNdE+xyVOyyrCgRZB4tCYVCyMO7N9awGIVbWvnFPwFjwMngqTJjq3HmW9ups/jrU7H073Cb1QkuqDmYUZggdEfg9J1hFPQj31YSKd58ygcohnBfGhTJwyfj9u0ekZcHPlz/h6ZLxxG2HeH/V5zUhvrhQmIOZ3Xen4jL6/t07PCzluFrKZXt5NwR17aDkzuDkmUpvh3g6tSKe4WaZPT+4W/kVWZO/CuBuUkYYMx7nGnLflFEPy/bl8fT9eMNjZELFKkldfb6McXAc1/8HFFbR4mduJPOnt0qV5M6T8UWLLPBH2HdVD/AduVp9mWtg8nAiGNezT4AML1fsgspoMwOXC/IT8IcP7/H4+IA//vADfvz4hKdPT66M9ty3Vlt6Wc7wxYXCGt0tRHg4n/Hb9+/x4eEB79OCMxNOn+rOwEbpiDs4ZcL5mvhqIn8OvO1N+IqARdtb1e8tRcu5pq6AppoVzXcP6MbMTXoeSYuV5B6tLzBXjsAs3DttdamsrTy3fW0xMiBt/bn8nXKxIp+Y8ZgZ55Twv/jD3+Df/PUH/P/+/Bd8fKoHH1LWxpjN+fl4yBcXCgJtkxMRTnW38sP5jIfTCSdkLMxIOYO4dFdemVdynooa0IRNFeKQGT8uYIhOVxZNnr/BF4adh3k4F9HAXC2uj8r454ybo0vFvxlYCo2+syG6fM6D8EUEQlTiRmtSa44cX8wm+keO/2iHZugmchZC+TIsSm5tW8pZGEiJ8P39HX769Al/urvDn/Mv+HTxATIU8sbdzy/HN16FUBj1++O5XKP5++/e4915wf0CpE9PoEygnLCkE4jSzmUYMSlej6XAA3P4pQREOZzxlat9rwSI0F8if7DrbJPWnozbAuFaGLtXjt0z/uLQekacsvQlQ7ZnNZcrPc01pmsO4bMR14mL8UjAAsbDBfh4+YRLIjzenfFP373Dd+c7/Ff/9t/hz5df8AvXHc8A/NUBJg6+cfcREGXfORFOS8L379/h4XzG/emEE4CUczm+gsqJg+XkR1UrnsXrJ8ra9eVtWSNX5FmDrQXfkmbbz/prhniD2WwNoH04L09P/dyAWysCHs9uEZ6Nj70WWni1qspEfwyn6E7cUD2plDUGURYSl2hLygA/JdwRkM4n/N333+P+/hf8d3/6cxUrbBWCAKYXFwjAKxEKAgTgfEp4OJ/w3ft3uF9OuCdgyRfQJdfjKwhLvUzktqdA9otye65I7Is5rv1PXVYbi2G/RnhVPbHmp3DC5SgDPiIoWkdDl3OwVZhnaQ/AWt7ipa0CyXVQ7xR5/TDwDGqXtp5rFRQDYEAPgi0bbLmsHzw94XQ64f604G9/8x3Ov9zj3/zlL+6k1UJk6gL/DPBqhEIi4G4h/PbDI7579w4f7s7FMrhcsDCQyqnlYJRzyZ2d8M3A2/rCOhS/etSE9+5TeF69r5ONeY+gejLILZ15i4DM7cBM60ebO+/HVS0PeBlT27cG8nqAms/2e0hThUXifqGbCchEZXMbMz7VQVnAoMsn5PyET58Iv3n/PR7Pd3j6p/8M//avf8X/8Je/4AkMXtU+bg+vQigsAM4p4d3dGY/nOzycT7hDNbMydx0tUjeeR95Ca75vLTTfrtPX5luXblNt24HXVmU8/HoYbhW0IYg4w3hdm/YWE/nHLecarU6t6dLiB65vVAvsW2iCh/Vjuy/3ryw0lbkfvYY/9mtA3aiMqpIO229GzNoyk7Z2pZEl/yhBrZfrd6pioVZsNNRrwLZbu5FoirtLO3Hp0Q4i1yQru8jL58oYVoKRrg6XCIW6bB2HK32l+qP0S0Zm4MSMcyL89vERPz99wo+//IK/fvqIS2YdK78FddNKvBJehVB4TAnv7+7wd7//He6WE+6QcP4lV99bIR0lb1Kj3D0ddYulsok8cRSKK+oW7G6nw1YYYdRCGndV8zkrZ7WeXcxrB9xSIMRiLU7dPRulG6lpcpTEeOq2tNG/D/cZV5lz2wPBbtNjo0sc46EwrXovNyh7JlqPAtNTOufYbo01rySKc4kB5u5gPJmdSvMtQm73ta9zzSjUHtjSyraGpNcbNosiFRD9hBMO5COrLpxKLySq97AzPv38C+h0wd9+eI+7BHx3WvD//Xd/xA/5E55qVKNcKOC5m8flFnP9gFDYQ9zHUFoIWFLC9w+PeHd3j3s64wzCiQnnzDUKhPWu744inIY4Du3zTiYOH7eC4VlFG4KhFWWjIwfkfXbpZgJtc/J6vNBoW+ifreG9F0Za3NbZPtQ8gzyfnSnTPBv308o41EU8iRjRRUTq8Q9uq/rvap9V5J7velqnpcKLdIJYvUpcrn6ZTxhbCU2LNyhi662nsTo/K1fXM6GGMnzwUJBdEwhyDMaaZhEwXzlTy1sro/fTgnmah5UnuNBSZ31StaboksEfP+IOwPf39/ib9+9w98tH/PGnn5BRdkdnxHzbU/cYDd5IKBzjtFLSKZEeX/HufIc7WsrlOMw41c1pTPVPahkRzaaM3MDvBoLC5iCpr3sWVqchi1tHLngL6aXggO15a0thj1Ya+m/kFwhRQ1swr8lCzCneaVxfqvCHUNvOURmaOAdAGA3Pz65KYV2FfGN6XHIOqlL7eva8Q2sP7jAWKBmCqBlo5OysCh9GvdWDpjduz6mu7mfArpF1AlrrdxGTqjowAM7gj59wToR0PuN37x6RUsI//vwzwBxC8Lma70aZt4Ev4j4ilNDT7x8f8N27e3x4eMCZEnB5KiaSTAASmf4Gb1CgpYVbCqnXDGtzwB+GsMftM9vbE6zSCkc8Lav59uhtKgxaefYSjsuXAWaxINk9a5s+18SYGDlfcLkAn0D48P4dTg/3+ATGP/74E/788y/IODl1kavyeGnKbuvbz0U/u1BIKBbCu7szHu/OeDjf4USy8CK95zr0TSSUIf065sSLglLCzIt4BUwPtZulx/5Y8Wujonyu4otu1hL8ZrTGrbVlfXFbQffy9rDmjQnscVUwfBkQq97aEI9rHx7IOPJLqaXUMuhWYpi7kLgc9XNOCd/d3+PTpyd8/PSEp0y48Ey0PL/TbigU1n3oAncEPJ5O+Ce/+Q4Pd3e4P59xegIoM5BZ/YJvwqCACIQXdyP9iiEsNmOfqwIbwuHtAqWvH9QNDMeAnUt49J0nx9zsBara/4IESgR+uuCOCH/3/h3ODNwj4V/98BOYM04oN9hliFup3DcJRLX6KOd4EUuhPbfEeTvx/cM93t3d4d35jDMlLBlYcgk9JcjdCkCIOPpKTMfbQ7P0N1T9biMqjjCxVxm3/0yUoqa3XfQsdLUr64rF5qP7VWaa67VXyr6BA44u7OccF79SSWPhFc63cMaJEzIYnBjf1fvo/8QJP3z8hI8ff0JCCXgVl2CyS4gbpeWLuI+cGTs6zAtlg9r7+zu8v7vDw3Iq12ZmRqoWQqpqMaENYXsj5a8Rto6E/po268V9ClF7nOSAXgszi0i5kvm3z0ba6ryQQ1XeBLT1o07jNtHXBbe+kdAr0MxcNrgB4Mx4dz7h4eGE73/OIPyMf/z4g9oB48Vmar7vG/xnRh+tV0Lu7/F8wrvzuZxpdDqVq0lrcBWlujmN7eKcUfO+HhbyBiP4WgXCCLbpsep8K7xik4HvhJF1ML3D+NZnLe1NN1oQCgtlXzc9COj90dcp6eX0Z6paPgEJ5Xif8q68/49/+wf8488/4//19BN++PQJv9QAHYCR8YRy/6T8cfO3DTeyFLxPNh78mgDcpYSH8xnvHx9wtyxlYZlZ76sun6yEo6UR6e/tCdh//ybITNYTvlJN6nMBDTTyzmING9UOunTUxKeo+q4RWXUxDcOSJe8KcR86A2ln2lut1R3pvT5tXByfwciI8M+Cls7y/raa+xCv2UL/1H20zZBb2pJSUrtfJmc8JsLT+YTfvXsH/vFHPOWLHp3BVwiBFm66piAN82sCCxE+3N/jdx8+4HcfPuAuX8pdylxOCQRz3WYZy5iVv184yO/tjnkp4XErTTDwocE7mxCrr3/VMBIIc8bB818HeA2jWQdq8/rBeYZg8NbB7jj9zwR+ReVZjHotaw1V2nbp9UUe7Y0XO9KbolVpSo7tr8/MAD/hlD7huzvgX/zt3+C/+SOQnz7iT0+Xuq4gPK+93/tF1hTWqFeGI8ZulJDTM37//fd4f3eHu7TgfLmUdYRLiYruB0buh62d0TBEf9sa1bQRs760ffDslcpa4ZxojggIWvkFOI1oZTmeAT2Ey0cwfQ5BMXJj3EpA7n0+GodWIHTWBfo4c51klOpu57I0SHJUAVbcNeBwR/joaOvRb3VDDJ7PYI8SMvLiXAeE/nylLkX1FqRBfe1VMqOTQCXYhCrf770AmteFjq4ybad8zk692YKRBRqERTuuYDDnpqfirnM5xmSoQ9SEqdLEp1/+gkzAw2nB3z2ccf/73+Bf/ukv+Pnpgo+Xes2bZ5zS2J3T76ClsE/zFmJ4OJ/x7v4e3717h3sinFAvsBaXkWNm7YmP+gKA3/0XseHh97Vnz4E9GkIwdSeLgMOjMfrKNupxQmgoNAQXLoIB5ATDuD/3HBXuc64xuNmziOEe6E1qOHdBwGwH/iHH1GJoJ31FQ/4SDc+UGt2uxxSVBIZbDCZ9OC3niFB9CS2WJnMvqhc75sVKHH9UaeZtZCBuaidTDu3fbXiOQOhwGq3nDBO2lqNXpO1jqNyoK4ABZlyefgEIuKMzvr874Xxa8G9++gWMj1UoAP1NUfvhZu4jax7j4ZTw/nzC3373Ho93d3hPGacMnDLAOQM57qkcsZ43+LVA1Pnm778cEAiJElJKIKLwmXNWrT7nbL+/NNJfEPzaIMmXPhW2xjacPuqzdUW+Hn7BlXHHZ7tFp/vWCkk5EDEjLeVtYuCRFpxPCf/z3/8ef/zpZ/yXf/wjPnG9q8EXcYAgb7p5jUC4W054PJ/x4eGMh9MZ9ykhcS7rBxfXYVPNgfr33wC0ZyL5Z9M8wPYC8+fwBb0YNK6CmdttkntFuRqnv5amqGrM9S+lpH9AdPUAQM7Zjd23RcctHPDmdW9nR+6FvDx4pum+pb4t7qTgPgqbKjnYFgQg5RKyCjDeLSd8vLvD79894M8/f8TPT0+2VLvShyO4Qij0XEiRJODD/SO+f/eA3394xEMqdyWkywV4yuCLMMP9NXzNO0O7TXwD99HwgvK6aNYuPrVgdwF/26D00DpcRRmauDhGxxBsLzJPcGiEwrIsWJbFdrE6S+FyuZTfAwfm10zPb/BlQEQolcgcEKje4JbB/ATOCe/uH5Ae7oHlt/jXf/xH/PHTE35qLbadcFAoyEysn2wVnlPC3emE33z3Hh/uTnhYEs653IlwupgD1i+ueBhteFvjiPGo6tejKndGX7N+MBMCs3Jqgu69lfFVmwq7wQRDXNMIBD+w0dcWm4+CWAen06kTCjlnt9AIZM5gnh099wZHIfrjvz3hqndQjBRBAnTlhQjLpQSPUL6AiJEoI//8M+4I+N1CePruHR7vFvy3//gDPjlX/QtaCj3zTgDOy4L70wmP93e4XxJORMVKYMaSuWHiFEZ4tEDmzZ4OyKV5beD3VkxcQyNX0s3RgLkvTGyQ+3eUYfDcyZ7bT8OdAo1avKl7F0LQXohfeCvBu49ynXjMjJRS+cz1eIJd4/sFBPurmDyDdnee5Ogk/MZkQQB1D2kbo4pZjnUHEstlPuWICwJAl084pYR0WvCbuzPSQvgffvgZ+AQ8iWDY2XcHQ1LZvlZICXhYCH/4/h3e3T/g3bKUqzQv5U6E0gDo6nsrEEoZqZ88g+iOgMorhakcG7iSri1rF1BLUvp4fxFuDGZXDV4PwhD2M8ShAvUZQNxGYh2IUBBLIaWEy+UCIsLlUo4wzpRBl7yqHHwp+OJ8dRUBTxfyZF0juaY9uyyNm46br6+dTOV7ogVpeO2f9QmBkfIFxATGUi7vISDhCcgM/pnw3cMZjw/34GXBH3/4Cf/q3/8JF+znJ4f3KfimnIjwcFrw4eGM9w/3eDjfYWGuR1jIiadyjpEtlZggHB89K1ZC86T5tg3H9a9bEUHvtx5aQ2t7Go7UNnIvOVR2ede4/9HJAUaNFb/OVIt47hdVPQ7u3QDvedGCd2O1NvGJXbPaYt36Qln/4RqmWiOSOIP0ukDfixNNx0UrlfnANfrQmz/bsIc5HlIKdqQZYdaKez8Piya8UrJGVvj4G9kCFwd2Sk4rsNvtdGhPUc/g++LEM1Bz6HdFDGU/Qw2tHil1XLsnJXDOyJAzVeuk4MJvExfG/uHhDk8547fv7/HDL58sXHUDDrmPxFWE+vmQCN/d3+EP33/Ad4/vcEon4OeLuo20OSkV4VCbGZZHB31IbHNVOiMKhipcfK8Nytmr3LL7d0fCDTDiHc///unczSQJZq2QKyTXEZOw/tluj65/WUoflHvgvJq2ti6Mf+f87JKNBAEwkH7kF3fQMWUvENglG1THQAw11U0LpV81EgmMxMmEV9O3JZHv67pZTqxpzg09iETaF2tzSytgrSxe+SV5TbeN5cXfNH02/xxgOOIjQ8yPwP4SKGy0avLJELLwrSoQQnSR98VQ6DflZJQLjSxlM+AlMzLncimZbKZBVcQvjN+8f8CyJFz4gv/+7/+KP//0cVdbDgmFBOBEwAMIdynhD999h8e7M96lO5x/uSAh444ShFnJhil2HTWM4B7MZb/3wu9aNnujSNV1s3LfhSjHLIptRjiLCRptRFoPSZ23z0gAweLy7/3nGtg16pbnuZH2o81dV5n5u3MNRbD7KlaZf1b7l425y+PRvL7kC/gC4BNhyQuWvJiW76KPZE9p0dxQjnFpAw5QBUBm5OpyKrJhJr63VZzPJRAMnOLXPJUymIz3sSt4WH5cSQ7YMICUqHk9Nu+I+BD9j0GY8nYJ3WgNlDhm2TxKwzzMQK7W5ZJadUx4ZwKIcVkYnAiXC4E5VcUiaTnIDHy64PLnH3EG4w+nM/jdPb5fhr6pDg5bCguA+5TweDrh+4d7nJcFd0hIl2LMnE7xkgeN1e5sofqDKR4D4NIoMXHM7s1SNBI3lj7buztKtw3PYZRHBYKrdNI869M9O1nbOWS4NP2J/f3Rle/LxYi1XScmdguG0Q7sZj9M58ISJazrhYgmo24IyhmXfOnToJxNk3XPggkLjD5r9Wj2OMiLvqc+v6VwdXneQEOcopHOek2ffaBG0KTr8yA3BoXagK4Lhq3d4UoTz6dRZusQ9mQWBJm4grzwHJeZE4Ez4UImuLQvhSkywJ8uSInwsCR8OJ+w7BzMw0LhBOC7d+/x4eEB94+P5TyOywW0JCxE9UiFmKeFMBzjOYhWqXuD5wHRuDt1T8RnXwy99QC/HP5eiDMz8qVo+LKo3KUDys79ZmdzOAZhKAy+LRDmtskDHChVtEYDtc9uLf5eEth9sFr2o+NVRJ2YC5l4xIp4Q7qSCEinBbJn+PHhDmc678J2t1AgAk7LgvfnO7x7fMTj/X0Jy2MuixtE4ZjX0TdvOvt33lIImhvt1KZ/5bB9MqakG7z7nP17zcrgK4FWMLSTurX+2l3OTWGh9S8ZmvwqYY1cBxplVCJvJAy2yvnCwzF2gAidkP5n+5x9MlLXHQDlzze3FFJKuD+f8f13H/Ddh/d4PN8BfEHKGQl157LajSt+8m4/wsjXi9srkm/wBgM4onEK4855HMURTjYVR8BMOPyahMAVsL2C8nWBP9V4dNxNTLtvJUNSjTa7iccmVbfLBdhNc7uFwrvzGe8fHvH9+w84p1M5/hpAooQlUQ1DBXgl7GmsEUXuP5KOcZPQm7R4gxeGlggZYdeyCIXxhks2c56/Lcb2Bs+H8WnJ9Z37dxWE4bsDGe2dvRfXcAbj5NcdNmC3UDgtC87LgvPpXMKvuNwKlFCiAhLLot2s4nbpKS5y+qWaYEHWBRftxMb0fu1bHH9VboGvFFrmvrq8KJp/iJlG8RPX90C1gDlO8bX7E35NsHcT51CT1njpzzXv94zRlqLKiPxvXEchq8gfV2slcoJlEGThPhfMjh/s4YBQANIiv0rxiYAlUVlgvjwBslFt5koFQMRxXJmRMAgdJZdJHtW4cOR6JcUrFwhv8HXCiKoI0DtACtk2Rn7ZbTYts11jOBSB9gYAavdWFvASd0d0sNsp0dDClWexcS6HKBZmb3KvE4oDoaoHMzqMRHk5Lwtye9TQCuwWClJeSsCJCScUoVDllEVQTR1itk4et2UMVs8pKgImQVEX76Mu93Z/8RvcAkKIY/tOXoSlryahm5QtP3kTCM+FqD1/tuij3dWsj2Whh7XCatwR95FJs7WH0YkJSoGVFsuhkRRPItiA3ULhUt1DpyUVocCoZ3kXn5ZGHomgGEa6yDtv8rgL0V3o1iBaS8tPlHRz0MwPd+TGqpvCZKH9OTjsvUHs88Ft+vM1hBUOj9QebQTUubaPrpRcB5Pbf1+NUroC9pb17L7f61XR9CNJ6/o6HE8wKICBdq+qLd7eHnZ3z7AfGvqpaj+F915taFrV0IQpK66vqsUQ+CmK1yX7/BrxuX8tdr+lQARKhDsQHpFwBmEBI4PwCRkMdw3cBOSUv1oiUF1AxOXk+UgOhQJqqrrpwwmNkghAWde4TCbD59fGBGMbgmsF1J60eyb3qo9ccNX1Gu3xMU7YyQ963jrA6pZjc6y8Q1FH8nnFOH6r6wimyK30I5vLzTJaepK1GZnbXVEiOIWpRg+D4jAc+s+ncLQ1ja93ZZc4au6kWrCcE1eUbetfnxYgrsddOKEYbhbncu9Chu5zBh1wae3fvFbNkETlGrgF5U9jYtXft2IkeQtAjxZw7MdzHLL0Qa5W95E3hpiHVHF4Ag4PlnvmJH5NroLx4QlxAd87+UZQTNLtuoLLb1rSPtgn+PbtXh+V+yInZrYBEfr4y9PBbYDcv2vQu9isCNMcZhaVvTPmoPxA+QntQeQg7BwnYfKb6Yyx2VqBex2YNsdF5yF/Y8f/5Dvr/JT+iZ6UG1sKI8QNjfqOGcsg37iwWopnHt5kihV3IVy31jNfEr4dRvDrgE7zc588+L4Fa4rBr5k2Zr7yQcqaHmYYfI6F5t3gVVT53b5/Tule4dnntyOCbiw+SmOHdjTLp5k+RXrLjmRCsSJWcAXQmONSrldB2dxHmq7BhQ+c1vkG3zLcfuxlcS48Qz/112DkcnqD20A3Dq9CQ1xnfNU59Mzy9+VvLWDZX7NXiB6/eU2YuPNniZVDsKO1xw3wIVOSv4b4uYUYby3OD6HrTcyx2fkGrxVuPT5W3PFydSKt5G7VkGG6jSijNyHxdcFOI2bHQwqLwlfDjnU6oeTk984cqHe/pQCZOKQLxrZAEtOt4U5OLDgvoqUn+2CqaybqT2R7Ib5EXauKPslf3Xkyv1rwZ1ke0eVfGN5cRW/wQnDNKcZH4Lj7yKFjV0E4FGWRfbLaLSsRytM1ZCoWI2eEiDDQ8mTdBeJyguWHLVyFxek3uBnctE/3FjSZAZ0LAXMT+Y0hfz0gi6Rh/fhLyftbk82N2jEKWb0VjR8+Ols+u3bVkLF1S2H8PizghZC1ORbm45XfPGRYb6zg24TRYvCaO+qzW46jI1neYAx+9d5/dYLhCB99JbbiFbAexbTVru6969cjfXIgJLX86S5mXUegciNSRrmjdtVCoLKNW4192YUXkW5X2tsdzAk13IrsnlOS8uRTn/uJub9rfs2a5ep5NDdjcweW3iZVRjSdMjEJLV4TDMHvP905uQMGkXRvsA9UECDKCXLCQTzIuo7pNEFyfzfD5yWgwTvU54UgN+/c50xfVt+N98A0ebfgwJqCXFReffgsqLmr7+TdAAVx6kjsbLAImlR+5x5RKyLY1hTYu6O0BudfNrxC8f6193zt9AOvC4w42uNNXEcZxtZw7ilv2/FjuG6Vt7M+HlC1E/n2eSUD5eby9iugTL5mbUzdlv7RFTgSlZDA5yDocZiUdKwLqJsfs3Ql2V7auvatAA89A51AkKs2Zex1bVOKMc/BLbj61bTZlSMgTEg2sJW3wQsjgg/t+5EfpGcw/S0LZMJ1B+y3FBhYkHBeTjjzE07IyPlnLGAkvYCq7HomEMKYCH2RNU3kmNwuylyuFo3cmrEkY+KsC82MS/ZiQPZTi2VR62Ag6RtzOJVkFalcdwLuJKAt5jCyS0ZXo5at7CsFebVho8Y9UCZTXxh5aoTRV87jchP8+M3rLszQuwLdzIYR/HMmnSoh3TEC48TcMn951fzeJRf34AcTxey+X1dYa09v1z2ubC8Gm8SpX1fddkC81N6/C4qh1DfQcKsGnNy7EP2IqrTW/GYtPE8qpAEue2Bp+i6Ba1lte722WtvH5fRpPcKivo99nHsho7g6USIeFmGIO+GQpQBU9xEVN1GmrFJN01UEQkQQiXUQ07abMpSQyZivnkUT+k80RDlOD6qRFekbO6oUWf9lqbNhazvm3G5tcYOXd8e9rJQTPp8BtFGf9XevOM8zrb9qbcW2SHL7W66BsCMU68xpa7MTuXS9nTCrvy8vLAC6cpxKchV4PWaIS5d45xheiU1g6KvETqvzoc1L+k+bcCAsACXW0VR5XvNjfc/tSlOHqXnW1yfHf/SBNF2BJeeA5ko/XtcbB3c0N5LZM+o2nZ8NMGHVHszELo9qoY4pyY5nYeaSvi5jqEUiAsE6qEztiJrX115sxnwTMGWgzKEX5wU0CYbFxfNsrsHvRfai3GA94C0k+g2OAAF6UVkriIaXOW2U9RzL9PjmNUDNdtUCFGfnOvISzlkK7b1sBJN0HNQhVg2jPS4FNY83FxPqEVKNpSQLLrFo67ZwvIiDX/OEXl9o9laZM2JH/TV0EtuH7DB4DXsMV088PUAKtw4PfIOvH9QD4p85ji1elSAQvLXeWO6brm6vKAOH7505JhSqGq/WgtsFivqNwmdjDqoZ6ZE0gUA1moiIza+7Ku44uDviAov86zRb8UKRSQGuTKlU48ywN01vFTpDYGfEzmsQAJ8T3mjoDTwo+XdMP4b0e/7q04czIVrSYstrrPP4hLvKUhCIriCTddKWRO7QC3UflcWU0XU7kg5oGHKVpN0xxIIDyeTbaTCxyWTpsriAKpbNm2CYQdsrL3HC7Bt8G7CHLR057/9rg1Gr/FlENnccG59qTxS9H1KHHolK5mFBdEft7d1DN691hVL4cN/9OUaikZuZBDRXcFZVvywG9uY6+bT+OcV7cSM2snDT2gA9zn6ZRrxib3HmExj0y/CwrYPnrbzBNwrKI3b4PL5hweBhpEB5F7z9O0rPTnQMfFJukbbNtXc6HncfeRz6R+tA5UIcVGaewWDOyCkBzGXx+ECEj5lgbxr954ZoI44SDKT7pJw3uB7e+u/XCEVNXkAo1+k4wbFv2q3C4egjlfxEJf64LjqmVCKJ27ORDEpk0JIWFYvEGRkJ4FyFhBTvz0by9Rvzt/dVbkoI19AqcNFLX5ky8tomfUppGu8vIItbs26WIIGtCKKt00W/hlNwA80+wx252dLobR3WvxkMdg1eX8EYfG7ojl2vi5ZUb5CrD+1zEMZpa6MREiWACqdklIvOitubNaPMPXIepSNM79ApqeWzugrYnzpUmHJy6woe2sObzKVEDXOA7QBtwojCngdhSrpwLBuT0FG+rUXEwZgyrL0d8hmAms8XrevA5O5C5EYMe6VMs3DnQmHvJSqbEVAHYc8xGFLv0fuQX+RimIH17ueKv5fEzmKau1vb5z26Tum7cVNWi2PCdK/CkXIOYbOfnsK4DhAIIfyWaZCU9Z1/KR4R+QS1DiRxndSPZ0yFwwfiiT1Q3EAJSMCSRPM3YWHrBwBRKh1ABK5rz9ktDEvUkVs6RqIi/XJd/Q2uChUYjEtdtJZFYr9QLFKSUddEpJOTL5Pd99eh9cSNQa8Dp1vCNW36nIv+ZdGO/YNOsXldN395KDglFxlINeCDlgRGxqenTzvKGdjbqnF6Yb7eB2tvvdJjC809M6Z6pMXimOj4mJzbwrXltnRhx1aIfm+LxSU0tSi5ixN6ZIe3mUDQfvHnN0Q8tedqhUIFxCMfyhgORh8NVsxF82dBwmwFC1mtabyWLp3R1eAbV4QPqx1k1gU37L9r8MBqAJpOA8zCeCUCQWCvYHgNaykzbf05THNU5mdjwoMot/h6vxWz1R+3Gj9yX0QpE1Yr1jklAnNq8Nor3LwwcPVuzZ3V5oVbUBrB4FO5OpwCPRQMmmwfraxt0gzlHsnbpnN/5bcov1zXRY1ZUWifL4OrZRFtvRaDbkFZ+Cbt75MDp6QWbGXXHQAkHSEys4WqZIcTBkAQCnvMMj3LJAE5VzGg50PEIoJPzT90uJdF7OcvwnwR2MJ56/3nknfcEN5rwetbgL1065WzOt9SSkipWAtMjGVZkHPeJZC6IXrhMRsVT80fmu9fA1Dz2Qq/ti00+D565n8zoIE8vha9unhnhx10H7USvLp9zGhA2nmyHMGu7sxsx2GXcsoR20BpUAlOIuRc1tpt8QRgXX9nbfw2sTeqziuWFFu96YyoOfTK1zPwGZxaWz9GnuoWjV8bbLm9Dq1N7Hjv55WU74UDMyMlsxayuMa2FvKdO+pzQLQCKFgIrxnKJrRGWx/wZK8s23f2CVbrEMEPmKu8jH8KY8lUjs870neHD8QLxNG6ZMQ+mGDQ9pNaE2B35p2dHzg2ecQkdraBrq+0HLLKT45P4OSAJ/VNUfIZ/dqh3pV3N+T347qH/lEvFhzFt4uxK+X+mgTEcw7qK4nKP3sErcyptm4fsijCgZnBOSsevgxU5rY2iC/NpEcu1FsdZd2WP3h5SFlcW2gOHpPV+rfPAlOBoFnLaPvjg0IpvNHOARwPSRXEnABgOAlZESnp+jOj1QepEUTjdYXRFBBizmBQJiRmXbCpMjIsVV3EZyfPWedXWJ3f9h56/H89eyKGxCSdOUn/a+mbW0HZgLmjz4jkbPnx60G5w01SoLpx1JQo5vZMMm8Pjsu/LXv2xfYERmTBK6sEiP2Candk20F6Fj54BFQxMM3Y+GMoG4j2gYFw2k5JIELi8bsZHL+juTGFRCC0iPi0+sytKbQdXl57k1GcE2ScvCakyuF9H6qFodaLXdrhtek2VMsLkXG7rYY9C55f8wWM452WzbNgHBzrG7Ta6Miu7rLsWwh9rcJoC/d4fPwwgdNqBuX77zIBGpqN0VLSTz3jHZdNze8ereeC1WM01OETXCwrdMqDZ2t1by00b5RxKJT7QL5JK93w9m9VufUGXvW1Mw3JZwjPOvvIGOCK6UT++ZiEzOdJyJm7iSLrFiJICITMFIhHLIEejTbCweN/O8L+tUCxXuMgf+2M+0VgZ1N3a5W0wUhWT3nl8AlmcGZ1Ia3hsYnd3iHdWHAyNmHuZ886DnpAXhe4sZsKhlGfrK4rzDK258a5kd25eeHqo7MLERa2WgatMvaQ0mn3VcLH847EjxOv9ATDbtx0VpScjSSSkLLTKOR6O5ayCJkQrAX1xdXNErY34g2Gs//GM9H2o7j6vubJ/gph1p1cBUFR5W7ol9+TqD0vnwHvWa5TukQ2ChPTz5hmL06fcw/JTepqTIPReoN8zgSCOPDt7noLytnppARw5EA8Rbb+CkLOhENJM1pwbE3XcmtalzYByIXBu43LztXWu5xYFlOCH47tTHL2t52WjKXPBG/fYaxlt0KjHSZ2/26G3hyAoz7JEXS+xeb5Wg1Hadzv2N1IGcd7RTBI30cvY19+W+WuMMuBq6FJsDN/U0BrJY8eXg171h0kJStVe+rmqoj5/2ZlWK19GmPQg3tmd0DJL9xewtfLIZn1URAIqgSOEBwVLl+fxaxp8G2lrp3j7Off0NMCKP0J34truCXnutVYkhvfbF3t63DMUhAtneKdoxkAcW58liNhUJ+wDbKYhhLJekK5lPmpxlHnDDDlurOZXVmloSklNTiYalQFRPMovjSLSvLdwirgTJbEM8pFMM27Yzxh9kjk2SLW594lq/Nu4MSM98jG9MOyNhaaWwVgvZ/atxupGxfJtf1IRuT2jESPtTZslX5rQ2iTpsTCrl/zIBDxgosxCREKLV8fVTRohNNbN9AipGWUhnVR1vY+sVoQ7drBnn68VV/7sVul9/pvr9PPtHyD4OOvNCUn+hc91llKBKRkwrL00ah/nIulel/aa3b3wIHNa/JXmKlo4QzZMIGq+btObYSEaS4WTRCO0HZttTKEyQ90FkJxBck5IKrAmeXC8P6nRkRJRwXtwpfheMOmq0mYhZHSzGAzYhiTHHX/zmEz4sc60meKr9glDdrPsMIhI+iZ8RGWP0vLO9L0OLTfPcwXVH0tgzRKy84i3sBrL+NcB3dx1JpyOBDqLf2VfUXVWhhFYazkFQSoebRFpaKcDd+RzRZjsGzzv1NS1uC6Xh4qDwzlUmsxVrZ/YqNmYXZtNU5J8q9tvEk7R3elw1vbNnjmEbH12Og42W8qHHAfFeykfZSkrf6+IOEuYgqy58fBnxylcCM8uJzdYmen1lQNwwaqOSUnpSopk+Lhj0WNtVwPW9rDDgfGrnL0+4igromhHjJEsvGYJxuWKeXmnAc4bqmccbx7OCYQroVRUye9VN7482l2lv88kbCPpqZBNJ5JwFvaE+TWZHpVAr0SITxgDdpdtpK75I9ieGPtdVrXrsi5nSBt8m3bo5z5/MNCFdbcdmOlhVB4okYeBR2PLKFcXC9KuyizZH29BQcXmpuJqhPEY+ikWBiUcl+CLYAYqbMyfgu5yrJg7AWcHGR3gfZLVplRJFU5TyQrXjKk/qwkkcLfSjTMyFoImgasD71iqATPwuShf57qYtnPZXMvB7fYJ7G9fehbgNu00DTXGa0coZRbqWxfGTQWAgPqTieUo7GPgZPYYh0cnBPHo4+EU/ufgg61D00wGG6m+yjv0XY4luW01uDKqUXa8Q5VwDinWXBb+T5CQ3pm2Gxfhv2ZQcI8d8VaN5qDe+E+vcbjXSDVUqAoGObTuRcKr2HT2tBn2v7eO8bDPh9S0HoxNxCebRjETWDiMlpHZKAxVzrZptG196au7HU9fjNAkdREIJjJHpPrFQCO0ff7OdBmOjzWB3c0W7jYJAU2B1QWIppy/amNmm7k9nGMjto5qn1pIVmUEMuWPoqPtKyvhRyDWcsDBiSLV4htovCdwgsRDKO6jjP9r1fza9mfWfb7BQMN6Px6fKjS5hfqz3YNisQK7wVCSyt7BCOhUeR+JdD2jFcCwy5u8uoy72f0tYyjc/eKHc1rKula5TT53ks8abMQXRGQWZMTUTwfnACuS/eeuGJIqVuMnqD5GvWUTS2s9dLJQzjNw0pD+8uP68wyiZvTekthiNYrcM3Fpg+sqQN8KDQfGBJS6DtR6vYeEDkZZy8IVnfS37i/h3XZop48CGnXIr+2hUPpsNmO5d047nj35UE02vprhuv0+UrJgQZrkMJBpe7wzWsvAXHPsVkHRSgkgC5B5R1rFaQuhH5BWpOsCoRhvz1nrm3lXXnfag1dVt2JOjolyiJWbIr5nY2m+cUdpAMXgaT33rgB3lY6Y5LkZaEbalKNFlhxD1JDf1PEr9RkdxnPr4uBzSzLeao32As+im2Lqa6IvKG8aB9x923fmD3rmIvnguiccvi1f1Yi51iiw0FIyJxtjnUKq23Z99v3h45m5V/jTvI4PAfW+EHaYhTAqu93S19vFVvTxFx+uTGv/qsbzCdlSSmdOOb47Jjn/XYgQs6+Gz4+Tcwz7sWRUTEv8fqWbp6tA7vuds19NNMGxztjnzsy5joKUTeTgIe1Pn4ZcXjdpjqDxh/9mSm5cDvSsP9Ie+VuGAp4DcYdQLuvay98IaHQBbE64ghH4XV/crNQR+rVShiaSe3ZLy6PINHjMcJ6H/jbkfYw7rX3q9oCMObiK5KkDbHTdSL/LGTqLbIWfDujQFjpsdbkuHLexbXJhjBcmf7xmitjxaAIv0Lw8yxMUnHcYvzzMqRHRTBMIQSlt2XH0tpvPrUXGaOR9pal5vJupRkOg9IKffMg3URZm6x3vTy8nIrj0W89AwQTCkGZwwq5ONjviIvwRS2FVQhcRjorhUcSLeOPsThWB5lLqloQ3L4eqcar4B0286xb62pl4McbxeS9fdtG0Da/jMsxBjYp4GAHT3jzuKAXVsQOTemBwjEaglE3BcGzs9I9k3auQBnsZQCrNFmZvoRBjtUBht+FPKOn2e81vFbffxEX27VsNcIsQqhdp01qeYniyxoNSGCkdCyeLSVSRfnIusLxm9cE8aAS7p1ypl31vLZlT3WvwSDWsDBw2Ri3uI7sLwzRWe6f6dZnGRg5mVUeSnKVGJa2Ij6fWLGaobiqWu3qprTKwNNsMghB7el6Z1q14avkOY1cXNRfNhE4U8/wW23PEjE7q3BoHZB/OUZ/+gZuLLaE5/Wyx7TtaIqX582aju8nVTrWa476+QikviaNy0bkf7tBa7qljAcPGUQiAiVHl9wc89LQnJBVEioIfRTbt662Wb/OrAotaxDt1JV200X3G5Tl6Rw8VLzsfCO78tiHiCcRDiOlJZRRa3GL/kcF6rGb1xxCYRfdrn6LAqF8CtGtIB3K7ivTYzOmjWc3cdwpnQ3TL3KDu3daoqt6rD+M634OI5pp94bdWFvr0vqxgjChpqD6mnfc7+k1V2WYmoebzxZr60TdwDhISiu/2hI7xs/WL5ux710wwkxladvF+mxdbu/RNtfuVBAa5XExXsA36w7UILfFLIkISxUMJUPULvVcMdFiVZNdF+wl3Ub7eBQwsQ6jQIzXEPXWwl6MqmrraDf+2VrCpNTmsNBY8pxOW/j87iPFm5DqWR3tyboElPsSqulTj2vBRQWI3SaUUiVP7kVGCV0VPcxN6qi6DoHa11fQ2hrDnruFnK7EwnjmIogcc2qh17s8Rtw9LXUS/B4H+Vxr/q57ol8YtI1biFRt1m6j8v1gKkvb41cxLOGgN+mcufYVYts3ItbKIZN5mD+lBEpJ3bTeCpJLq+Q+5739sT/dtnb52qK0XhJ0ToqCU6dl7IKZELZ/gSJMjpDgs4TCXr9pl8/pUKMJWBi8HO5UmU5VAcOyKBsOLRrBhybqLNvhGn6ukovnjTHYsdS9SggNvnUJeCIYnFLvGf+0LprWohDFSrTVIMQ2wbs5TWqE6lBsfS4h0c6RASscp63vqPvdi3LR4KKNC3Q0Qm5Ma1K9De1qoPp/xxEsxUAQbC5uD9ww8pdS6qoaCZSWfqfnEq1jUj82bqBbKf9rgbnbaJg6znuhp711bfxeg+su2fFGzg00oQH7XUk9dBhg1mwisSrsODBy7/xR2yoYfOkHzdF93eHWZabl1Am6UdL8vbAxzzC8mBGNeOzjjCV9eUvgCGxNANERxo2a7tZwmeqemM/RK9R8Ys7Q22ddUarFLTFsu75LKWFZFpxOJ/0u8PT0hHzJeHp6AufsPK+fh1F/ucij54O4f/SHuh2dhYdWMXtOfc8r5dnuI4LzWT9jklhX7RUIjTCoNhbBGHkIt6yup3E98X5nYCwMiiEx3jgSMNwzJrxz8FRBnPiUIUJ6lJX0vTGyVqBSLLo7ztccWDzy0cGEa4tTMc4+jzgJE0/9XmZCEqEfmKlm3atkveZsbVSLK3BulN3MjfC/asKK/pX8g748cohOd0hzcRN5zb+1EkQw3N3d1TyMZVlwuVxARMiXC5hzOZhybxNW223zei3Vs4XAiHxXinwJkTMt83Db1lW15wjRl1lTmHhgRs3w83ifRjqyFEzSem3fR774lYWW/FqNr9Wg7LkIhk0kp0Ad7uspt7QHcjiGknk0zWovkHvnutO0GYcdmUAo1o3nvlJXFLDlozF9B9+7tYhr+pWsj+RICX9XADVpMUBVBGbNvK9a7zsdCRcR+jx5fxRCt68IBYfPyOotC5YLMudw5LkXDCIU7u/v613OWQUGGHgiIF+AnOeuxR5Gg0smTHeuUwzVn1HRa1Y43JxvFZxah3TdLQRDnIet8tQ83lmhKGwvAcdCUtvJLUxC3refI2fz1cDu86LaMbFFVROKO8XvkPYw3fVZ/7mFTrvXm7Z24ZUXBtRy6gB5KBA8HioopZ6BBqwLWEpoN+gJWadwjH+0IK3C/IoqZ6QVmKNI8kCUowxRWFM41K1XQzZxqwMQ3XZXwo5xsbWAeQiiLBLnfLF1pEocCYRE5W9JC071TyKREiU80ROQGbhccAFDj58ppc/YPubt93287Sodtnvw23OKWfpWRZQcNvdux3BneOiO5ZvyyefD8TuaGdUsLzOc9SW7BNAFNj+5yrWYFAcjvB9U2IHX0GLdkX1GJ1HhDxYaF4RDq2Lr+16qy47qGUzdR27yrHmt5XlgJdP6nJa3hk8otdEy2F7ZjU6m1Vj/Sb+NXEK+z3qcWx2pq4WBfjF9p8Y+SBfqI9FG67PNYnkiNxprchWn+kmC4QqTRq/RjwvczzlGFoXkZ5hwtihXt7zOqHOWNU9xzVX3EhGIEoiyk1U9ex3jM2+eye1j3LFLXc3bEqTSjJIMfrhSNWLezb1rkNhsr0tQq6f2Qe+jdV+PK25HLNTD7qPSYZVgdIY5ImLXzWHbu5cg5H7DlWHyxj1ydbsFUirhpomK8uJFi2dpLUNahXBe0jgHhVJH77frIpQwsfZZ+J3mGl9FsqQLmmFktzIGrRXS/r4eTBi0goI5H1hPuIWNNgAafe9HqJ/T6/jMaMqz/2G/tmPeLVSs5BkI2T5zK27b+go/vLi6UjL9nDPAVNYZ8iUjXy5IicFMEPdOSoRlSQAn8KVOFdF2h3WuUxg1fy8LbB8DhK+qf0em4+WORaysm5H8wNg+66PCjtW+WyhkoFwmnUyryKKwqyZTfzvtvWcMhHLvMgcDw94WsLvZTJeRbfhMZC4Ptm332eW1nNzwAWGmzhpgS8/MAf8W5JbpGfjhrEpLuKvBNgF6BtIw1BCVUL7nlGtTbITlmkPy7hHtRVKh7Icn4E9AtyO3aUzQYKSM2u9WnRemTRGD8Zedr2JFluFx9LNTtJJ0quAQGlJdAc2MGGqjZDVKHurK8mqHG2NRPmHj0NoGviyz0lx/RuQa8P3SMH1yz9gx1moRj+hU1pOSa5XSR87IDDx9+gQwY6mXr4srLHMRFJwvQD2cUmenT9vAaqiqsxL3HjM+BwYT4ZKzW/tj/dT505GX3cboaWa2X5BRx10nsIyHM8ECFP7k87TlMrMqip56vJUGKmUkodd22mttex+OYb/7iEjXGIvGIUciQJmBWhBwHy1TkCs1Yflccp1lNm62tyCRmxbkBy1q73YgHSt+JrjMItE1QXYCoSvN9YErex2akXc/ZXcnSRvg+87bOQM3lXe6sjP5g1AQ0UNwM8NwYPfDcf2ZUq8pm0kUOoibZ2I5cKSFUKB8r3ljU7cOfxsX1266kz7ucBiAd1+kJrGf/8JEWcs2QdAJe+lz55YLCpTI7V00xbC7Blx5IYkTICsuRaUZICpwmQEqjP8CxqePmhpLjVjKOYNztiAOaXNlXujqlX4Z4MGuD5nHiZqyZkl0Zte5Ht2/zfdhBGHcoUL6N0dKlT7J4H+Hkv1zgrmvBgLUSka38uhcoUSwnee7YA+NFTh49lGFnMvEdwIByMY0V+qXfQHT91LKejEDxApB10oQCUI+5e9ajeSAQBg8lf0dCTLcLY7yvVFlhhpELa0elJKUMqvoYUs3R8+nq7XfKIRU/dJBCJX5kB0Ojdwc/uoLN4WhE8Aw11xou5OP/TBaOUN3LTkGj2KR6kL+QHh5CvOXxowukCHiqUD2JZpg8WW07R/Rkf8NgBgppcLclRGXzhGXJTPjcrngl58vSJSAlHCpCobmA0DJ1TAeSHQKRGi8Q3nU74Oi1kAFc/VEGHFznFaNJm/CoJ4CK4lnUSPk8tTyKAxFo+JQnQvXsp1B/bHj5x3jyXPv1D6+puBnlnaEPfNj3IIqJRud8zxftNeWpCN4kvYFgcgYhyqGumNgqj0V6Ce+Lk530UbU+xl5zKxiFW4Xd/eq7ysjvcmx52LF6eIphl2uMoLNvTFeit3onQHzGTU5hCcLPbRykuyzP0ogpgnZhWd47Xgw93v3kcN6Up9LMc3bpfR9DwTmF1woZOGnbS0+pJaZkSkHJEfh2qqPYCz4gPGjkXybNlHTzlJwV4537XWqqKs3CIRWx1htSiVyqbMS5lBN8KcI3hD2FCd0v7fq13t09k7wHhL/zKKcuhwvjE/VMJypVwjG7TtYIf41YhzX14e3erKcikIicwG2+APaqf79UBg074XpewskLD+4Plm9G3VQr4ce7/Xfu5+vCIYRPm0LRBiaoDG17nn8YLuvzDVFiBxXnltREsIqQQJeSMRD8Ir1nRGFiYkDk4JH+/ylIQrjGo6+Vzdc6W6vgH152EMTrv074KsXCgDGA7iH3zgDwt/adjUaRE3IY506QXt0ZzpN6Mq0NitjtgZHtd5Btb0h19bT5nOhhVnK1jKdxg0fJGDCw/dh6f4xM/SMcx6w2bTRo4kS5EBto7t6aPj9KLRCwH/3a0CKazKFgMLrFZ/4yDpTgTIewGt3R5NboVyjd09/Up8XHvGU2ILreKF5Xn5QoNemHgHg9UNdrC11ZBoh1zRnXpa0Txiq+7cAwzMPPzdXi7+VIOk2jA0TDarfV/9XLhSiVhs6aOLC85pr61Tac7TwNkZUB984c2RqY+sluid6LjoiaHL/hddOgeNBvogKh5+mY8YO9OvVNn/dvyGctxrjg7A/L/AI5VwqcbPF/nduCm2tQVKEpYN7oVDq6bXfGbQC0L+ZrR0AsKgZMsYZrERXwdC5wPOFdWO4I5ttlH5WTqMpcP/OrACvtMzx0nHZIxRGY8N1/Ucm4tr02nAfRbdWSXeL9TFqPudorSFf+2aQe9BbjmG0Nnljcq8Ch3E90hfPEgozN8IXAa6Tk1kDGTydycDNOke0bdV2d1Q5I5h2qAMzCxqk10hEmxGKsAFt8RESW0RYCP8eTTzNO9JEXbheeI7meS90TVdsnqkDs3frSXtO7FwQTvkrbWGA8yDvgGtMmM014Mey1wzX8tkssJHj8NuX3NEKEXI9Bnh94m7gs8W92uSVrvw+BVE+jD7HefxLQtkNLfR8RBmm9svzeXgtjir9iSVT5/3I1/zMmvaAXJpjwAPSlQiukXRsJfn+Tr5GMDxDKPiRvGVHHwEzCyOZwlw08lQJwt2gLDQe/TX12Y42+YW2+slhVsRJ4jWw3jQPBUtufUnNWwtrpVC/w0RaaYxrsPDoBYBfTjB8GN188gqL1EWyW9YlnnKIGA8ekCJjnvHY7oFO5R5dS4EmyIyO9k65gBeJX74VMPIgCvm+nDjtw3uK6WZQvEJjbX0bf3toFMUDOo30JkdjOFJtMN1yT70Qn+Y1+pKf7FyZR7SLfe3rckysIeFY82pmlLFRZyMQbu4+mjoCfEPZ3k1DIkdlB6q4TvUzAje12V9tqWciuXBVRZtI47VHh5jtqFiZiYQrjpqj8dzy2w16FB6auq/Om/pS7y5UuWHmTmg0CpSU6W0XuTi+HJDmymyaqjoNjbD3aUmFXbDo2AkYbbOvYaKGdMwoojjDRssmY+KdQkDrdOwFqHflqdBu8saoHxZuPtmMJOWtT2of5u/QmeNc/7FxjnnDfHJ4i1VLsLOSWgNipOCMkTblTZIGCzXg3zGZadkmiGsOF3obpmZt/DTcnyc/DgmQFrc9z2duo405NXTdRcGwBw5ZCsyMXDclcWZwooZ4Kls8INRCpANkn3NL3gzPCsrENemrtdeZyLmmlfhhh53eNOjqDnL/AO4972/M58HFIS2jEwY8ihjqhjjQ+vMFaRQS/SvpX2X0kj65RHCJYAJmDSMmdKNs7EfGDht01CAxUrS6SdInGlrrI8us+W0lGo2K+e93Nm/hVMrOXbltmi3w3dXi20LZXevGDNB55/OGvRFU1ojIpTERfQTTHm8F5qZv5V+paTozKr7kcpC6xnTTHXj/BN+ZbJNMHaTB0efll9BOTadrO5U3EBUXnfQ9JRXOezE4Enl1TCiU0o2Rh9kfp/VR8ojBkW0JrXbPQTBwjXmXCMfedegNYh4Q86A5O6Fn+lFL8esFmqLarETVHwtH0E5TGuEyxK9TLMaMMrhbHENov1kfWaSU3+fUVit9XsqtgnE2+Tz1Vy25ZWI6+ivup/b7rF/iuVDjCURNL+zp935TIGnTRDnpaEOETevCGOFuxU4wiOA1bgKFMekLjcLQcHCLk2j2fZCwWtZjFvS1K2s2t2aw1arum2oqfd+2VXdacsVzbV1xC5OBmMdmex3Jz6qQtQTvggx06Z5F9/NObsstj53D86KPruH+LwiycVAUzV7rWMtcSf6AqTByC8xy9ya2jxvq8RghLRO5JRiFkbY8R/8QmPmZ3DOLcfcbp2ab59pQPwQB6F1JpDbjEJfJ8wNG3s3AC0rTov3IjsRuzP8l8A44jKwXcph5hl//0dYFmrySISijP551VFZCCmjoPowE5Euk1zUYCYLWLToKFd+/PiG0z+G3diiiDjVTWHoEZJicUKX9HpyvPCRVwLsvSDWfPRfKF7ciKYM6suA0TEvxPVGbnvrnK4wjHBKmWtxK/e49uydyCN0M99FO1faoccvjNZSDbE0nlVl/DovQCs9w21TNqsP++nfg1z3CLNTS2m5WAsVxahrRlnIrgXB0z8J2etFcfaZJWU0rdmPyUhKxQcC3VY748HxiqwxvtxPQBJNsN6BX/FqviCcT58YTmpqWPLF4fKXBf/45LIVXBJ55pZSQOa+73CpjZoYuLO6lz81NUU5zbCcXkfMtBlO3L0RcUTOiEMKJ6/TGdDvhMMC1C9ub1dX4a3WSEMINXhrRsQFGq9FFYNbWCi4DvLLiNYZR6O06gs3PoVAoCb31F0I8dxV9IFroION/NgxJe58wubq+GwiJ1oUbKiAnEBolaw9c27roxkT/vdVviIxPjCoc+G41mW++C6z5lVkKYyCKgnI7/fM3vFDzrzF2AqVGM/H2YKN8bB8nLIOdQMnpG15KBMK5oi2D/hjN29aaGMpgnzYXfFiF9rqmueWS+9xAdbaamHRjHVPiqo5/YdjCqMi6ONJ+j4IqtHsK+xIwwenF7gvf6IPgNm0YQHnE4UlKNcwXlYGpFQr4w/3sNN+Gr7DRIqNMryO32r0CoVCJb3utJnTdYXDu0aA0euKe+MKPQfQmE5lgSN45qMmbZyL4WfJu6CYUceaa2awUjt3brlMo8fSRUv6Zj/zojg/Y0WfWJ6UvtFVsO0qI5Hck6k6QDn7vcRXuwXHM3AdVUkxH+k/9HTjA6+KcW8NlGmezMkJurURpE6+qeaaORQtUd9pvKCDX1rrZp36aU0M3BbOwMN7Oa3tW0srEGKod7KpwhsLN9ylM4RnWopWxPQlbTxChhJeWoALSC3ZGefVT+jIo0s9gJUP/s/tzAkF9g0ocxhw9FoQSkaRCatq5diev41LFdqjWgvg+ud6GlFeaOrw/mSNeAk48xPQbflqdECL1cgZxuIVj1ePX4iH9z/2bLj0RlXDqjXLDGf+uGotlN6FrawiCQVAHpjhdA2sl+fl/q3qI+shjvVNY0xHmoRVfEFqe1GhEQamZEtttx29WQ/gkUmXChC8pPQbe4taybg3PEgqtXjmC7prGsrLrJnLLdnp7wDOKIGN9rw6qH2I0cOOpZnqgg+2SkXFMuzAMlezwwxr/hU9DbexKGgteqsy/WQmMC1MM3RG1Efo4bCOa/g4tbHASDX+FSuVNbsbLC2xtD88ppGVFW+1S2tlaN6n/UEp9d7fanXS93Fw36BLXjK4s21hZ23PkbKaV59wtMvVpG5k3TTMKgFDBzv08fVUQrGO59Ckmkc1rQ5LVtJ+ndb1VMLI+9on/zTXPDdgvFEbELa/c+Qeiu7nNxPWVnbfPzrTmA1fweRLVPQlj1Jr0UaiUz7HwiV/Ghfldql04n0Q+ub8ADRF6LUGeUBEFJkQGBYVFsoHAkJJkJ3K+eH28h7ZP4hv/a2y77DEYBVcpMbnS23GMbi2Xv/r+CmNtyueQCCIk4fJ1wqQdP3L+3O7ZqEH2ScQTq3eu+MTfa5N9SysXX/8W8VZhOxUcpIKqaZ7R6ObuxGusB6/KcPPdUYfv36HE7fFQgTDhF3uxHY3ePjbdwhX9004wT6KDBfNx1OA+2C0UEoDE/TPmovmVG9d4hdiApiXu+aCbgyaS6mCKw6fN69KSdETBV48OKGFGyvwYRtuBMW3QWW8XxAlkDEI0yb48wduvFxD8wJoWOVfrxJb31NIjry4duQbVJ2nPthgc79CENs0aswsqX8ZSOz9nRqtx+v71PH6IBbl0nAduJC8cuFlwS1VAGQWIlVXuEFjRtuu4zHdSCE22BDAYn5p2Nm/tXK64m7iv0glPFiQHiRn1JrAZsM42j6WnS6PYiru24zqQWc3OzGUneJizCQMWmpl02Gz+cpvGlIoh5tTO9XE6rySRzMnUKhWlj1JqeFWDo9+1nFjcyOW3HH4Z+AOE99pw273tsZYj0Xe7hUIgbRKSj5uMtllGp3ugFYFlUg6ewa6ct41OURgAJhCEkWjeyj/luxKGq2lNAVKm3TFpiSmOk9/mJPvHAKFhALY7e/SuZ5O+3vp+NMkbpU57ui4UcNsMjgRr5UQNbXAuavm2QxsRjU1kTWA9yg+E7Ptd1U1hNb8P/C05e+3fja2zyLR3O8YZ++HD5YJ//stHLUvWcTxzHdtPLb2PgMGTFbF2WIloepm8pBcG6KOFuto24tXFKiI3OI2XMjJCYEyDO0FyZt8yf/wNA7Lzndm/26+keKaohsMWyjQe1XE61vn7IWcszVyS/jHeM+IiDtkglEQgNNaiJ6/gMhrNxxVB2sANoo9a9vw1gG0OYawvwIZcg3k2ZAUyaXpOFurfh+nseSsw5unc9Fqtp3/bqVcrGG1DmAQkk9LXfLBsR+cEdJ4bEQKy+SxXC0D0XRujMtlmeuH/6oef8L/88edjuL3BrxYIwOmG4a/TWVEFhykA9ZlnUCKAaIcQrHBYKLD7I/dshnjrrpCFMJ6woZcG0aQ8JBrd5NXkGwmEIByk98cLukHb1w5zGhlF3Mj9WXTLqFze0Y2sTG90CGBAkqPl159gK4cMHmfm3XlU6veMuj6AsBg7XSB2mtzoVFaxHNSmqusQ5GcKTMAWq98sFIEFwPJSMe5v8AYbEGcsAckCSvzaprmrvTu7cOu9m0qBG+5T2OZLVRDoQvN+c+ZaaKWjd0fEZ+sCQd7Pd7XGOnzEkaVrXA2NELKQR9NjxVykhlkeAY2Sqr5Ya2/DaEn0ZRMyfXjpXlVgB161UprQwu4FMhEs4pdqSvIWtrnMrA26adT5bCkVX+3TkQa9wRtM4BbqhCg1VOOC9eC8AV+SezV87iMq+CvYvPayIGsA7dk+PiQQwGqP+WijHTWuF9YyUnJCZCR0niEQRniF7f0tMdkW4wnOLyPEZ+2ajtmoDJhosYkiGlXZ+8n5UpUT9sf66QSzEyoY/+c//Ab/6e+/dxfIxEnGai+PMBH1o9lHKnTEcMKXUQIgxhaf3vNR65277mNtuj+mtb6INxaaLW/3rEsn5Tyf7ZXedPa0H+vaX1QXM9fpgEA03r/LUu5kI5sVst+9K7XKOAqpUA1kIBD+3d31bJZUADiMnIEex9cloU4txd5xOo6t91+9eovaOL6PpgPQ/d5TyhZT7ngH/ECN8jpXBQme5rzw7MXKq+yhidqZNYOquURiCcx2IXMUSv0BePWTdWlxpV37YNifo/0OwhR2+PdsQc8EH8H6QPkwxazlHoR6/j4Y//buDMD2goRd46tCAfCjV44psTnjwzpZGjcrjx0NsAmEWS9YGLO0S9ZNjIqYUITCWle6PNNn6oY8vv/FgxcrWmK7t8mFlK52u+BKy5BWuO5X4C2hgGsVMH8vgikb5dc1zLJn6xFHRJoSPkdtYq8ybcMxoSANlIn2DcFsIWbvoVmSarT/oU8Xx23GXitbmdbnh3lLRkt9SxLW0ZRM1XVUOWdm8UVGbFn7qTw74mrvtX12/0ZcJT1QcGn7Qa0BksPwqvYNNxE9ndbZUo5V5tC3aobXH2HxDrGP7dsVwRXNvPRjNhq/PTTS4jjKO8q/Js72PPtaoTun69WvFXn8WkHd0Gl1xcbw9kpZKe2m10NCwZAgrStEfBxZ4r4RqDaE0UD3DGjk7xdGONMOZH+rbQmYMOrO7FxbdPZrBzKQccOQLiaNLAXfirXF49o+xaSo4f1pntV1JGy6DCU17S1CwAuG3aNNdgSGWSGDYzH8GkHFN6UxXcUNfNy9iwK9xN/L9ZeUjHFKE81HWwWnIiZuH7+VSqL0WzeHw6H5lGnjHwqGFg491g5J8OnWeSxlOFRz4ALxAsGO85gAW7/4Z7eGKAxFSA+YNaFYXQ3OI6Y+m8fDAx6f5ZK9Bo7U52Y5EexwvEq/qSo9XtGQ92Rrp0SpBD3vrPrwPgUziRyJye/PJRAcJYlbRNwf0Q8tKIn7KE5gSUQM5ClxOIFQf4+TUv2/Fwxtuk6DcwLJS3ldbCbLqd4HYUprmyscBsSk1zCWHbptmqBXgHwnO+afIQJU5Qj2UlshVFfn2mJyUKFXOBgFctB6Yhq5X4M1gwlcEcCmZaXqRopamLwtNWlMfSCpyLB1RAdWRyh4TRt004tEoI26YahAGGYRI25SzmGdltt6rgAVpL3lGvCWoXPWFrONW9dvE/fR57YO2v0xyo8KlpJqlBOxTWUOmFVrAiG4j9CuQbg5dmuhAKBnTtQS3uAM/2tgRvWe4aey6++SZbKLVKw+w7qDVQguM9fD16yzY7cPt0hZSzq1T777AZH0vZZjzTAtufzeUtcyrLMdxqIgMLtu4WnHMzIySt8UltcugnKYg90zAHK2SEa1IvrmrcKtJ6NYNWWeVVyTuZHMCnERZzMZFBbg4ztzR7njWyBGlx3f0lmpFBWINflJg5fyKIklWNs3zD8srwVZWyrf10ejZ7RtjaSqyfPAziuQz5YdunUmJyvEclJ0DygnwO3pUUAYv9ztUn+ujL/wA8875m1JkDubRThYObL2RolwPp3BYDzxBecl6ZHvW7DfUvDChmyAjL01CcHh4xgMJFvVFrX0xiKQNIwoP7we4YktfD8gSMMkX5Ehvi2kFCH5trWaccHUdY1Xonkwj3tzGYNBQ+gQX3aVPHXBtO/Ba5REccV4xDt7ymuDgzK8HPR4M/oXQ1qZ4jYeD1UnyE/bqnNLW/QTVSD0VqV3ScWWjOocfc4nlGcQa+1UFFdL2yrD9elKGVtQPEJ2XsFovKXfxVKKxI9IlqDx8VMwunsJUWBCfV66WQ1d7qav1zHUpCz9YmLeBAVVgcRIzFhOp10XQAFXh6SK5oqgvX8JSKlorTrxh/hw83kdtKGc3aRhNAen9drpUVN7M+KJ9g0BUTk/BRiH1w79reh7jFDPvNpZb5s3ICRRIO27BmbVyPlzyp8SAkOYldky24JOXNUZ5V1TLGohUWma9HXMMhd54kYWF6e4B9batAXCvKLNvBevLwO7MWkU1xFEXWRLLF4DVmYbSdin2wPblkNXMgGJEpa0FHcxgPP9PdJpH7s/6D6ioAERErKQFkvjP/eRF2UQQshgu9As2q7DzeTZGhuQxDG0r3wlN8E0WS2pcSFFztGUa2nNPxoKQxtl4HEAkro11hbStO3VzTGK5fYx3IIDCxIVTap/zHJS7QHm0QjMUl20gNzrWmWZxb2pX2iRa4w/VxdiiNYnPzryrJSTWFyglmIR2oZnLNJ/bqG8pteaJgyUKA3dQp42esukYdUMdY8S9Ud6D5q2AfVwxD1MZsu1Od3Xsh+8oN0qRRdVdRKTrqmVbvY2HHr8mcEJyFnebde8VzhGN3rMwzWB6PPwYcrokvtcUHPgEBQ6TikBqQiIu/t7LOfzrtwH3EeRdeoih0yhJm4e2gXHJd1OjBwvKQM71Fwr9/cmc8HLaGiYTdElfUDupbIKh8NQI1CmYFoxurwCzT4FJxD0aUtLREH7WdsI5n2zSyMU1A8/4yxcw0/rQVEqEK4cVq7rOxrhNCjHxGW/3iMKSrlgKUPONe36KaBoTEX7thRWUahP1FVJWld7p6/iNjKlFMfyYM0aAFAXtqu0bQRCdFZNu+oY79iglT3gXYvPmdvKllUXWi/LRyCNAhWCm7sdHB17Up7gU18LpiDu6QuafB/MOx1sobbp6A+zUSLQUkKwT+czzvd3m3mBGx2IR1Vr8yF7AcPPZDrMYpDte4OMdnh/LLgXHwQyv3GpoDLqUiZpOmBrl2e79WuEv3y3/zDPs7Nvk2JXNJW2LBp8K2Ajmpunz7kDU3Zc8szN6fUMUa66JCXBEwAmqpf3+P6KLiF2OxpiORPNcg9Ms4hAWcvkI0O8uuIfmVApx9g01pxPOxmL1u3JNLuncD98iRj/lmpfGodj5PB5+2IGjHJES6paJaPO24WA04uuKRiItqvs0a/wwiT7UKt6IWg1uygQ3OQbfB2Wh4FGEgRCI/+HnLqdtc4/7K2wYClEpgb0E2N0t/Ko2jXBMn8TtZPk1NHnOgnF2cPTknx/mQ/cQyKz+Hzgg2nVpP0Yygy+3mgttN3gGWp77MaoVabxiga5rt1pmtZKgD0S3WWNSa3SbxAK17gjRlBtuM8wp0nMfMR+v+YCmeN170n1vE64eQtqRGKuEXlMjHxggf2ZQkGmthssos9DKbeGiaal7GTk0x8WdF3bR5r7HmLZqy0llYlHSNDsHvW/M9c1Be9C2IlsAzkXDd+fQ+VbQmpOVFwGUUSEogRlcpeSVGshdesmCeBsCgtZaN8eCDQwGiAmiD0l6zbziA+xYn2DojUblpiA0vfVbdbhFotda4QJhw1YpytZl8qf3WJ4HlBV2qiyqrlK8jUCoczLnDMuT5cyOYhwyYxL3mchXnUdZ5kPpinrhlMS7Y2UnYRJTrO9ANfDLchR5ogxwAmO3r0zSzeYcK2NoVaC3p88yCrqofMndtWRlDVB1yVTbXoFxi6akAKpur6fxwdScdsn0WCq9UGsE9aaXZDngL8oI0aFlT3pAXZiz3hm6S0xa58oNVYyHONtXS/aKdRoXlUj8z7vRGisTI+/ffabixwyakRw3KLQmTW0ceuhWQo8sEqugfkBisfhZlyh0ue8EnPflrF5eaSk2uQemGuzPmKUywBJ/ho6pW3lRd6naoPny1OZGSmBOd9eKHgzXc/mh58/lVPUicDNjClSuWExa0Q8ozWfh2Xqb2E+KJ5aXOKzVcvADdDYrdTnsjvezCVji5o1pWMoRjBRIITqfHHSjua11OTxHxEXz15M2mLHn18HXJ2dLITlEXZtjjV4ZuqUEpDu/PXt7TGP34SWgkbu61QBQ32/U6P4+AlRf8tpM9b7URigG9MGby2KJ8dSSHmyA7t9PwDBeyOtX0IbDXOks+tjDpV1YDxuvjIWxEbIxhIxRVr1MJ7tA4zV7rSsh67FRpHWT7YgE2m/D3PveYunXpvwI8xsLbJYC0Ql0i7njHy57GrLIfeR8PREBHIx4ca81NZ3k6wXEJZrhZBGyozvZLZEzBbeODwLRTTLlSq5PdpgEtoZyx1Adi9DgrZyOZjuAokwSuHsCTJmRKYRE2r/U3mXYaGSkp5d32v7pNSJsrCL9lkYALnJPGbba6BKbgIS2fmgTpEDCOAEENsFIf3QmpWxCBVyWqWbHhMGZ20chGuUfpaAghb5WKgPTbVjR7wygBAGagK+P04jVKWyo9Kv0Lf4hxWFvQx5P+PeYvPeKjGG/hyLYXtvdKwhSApLtOU7dyxqG6P99BzWOtxzdN+NoRvzd8pMVZLkXUrJrS3KMSwU8mjeypf1TCQGcMm4/HLB5c8/AuePu9q931KorVDzxrVUWJaGPKqWwapx+M/Y1RuCAVKHBwrEQZBTPecQXLZNWf47hQxtGTsEQ61HZQuh7gYWJi2Hn1VBgKQMPlgqkAXIWqhorIhCQesI+UbtL2Mz1Y5oewJw9fGLYGm7c1eEqmNk40itEUd3dBTwaZvQa2g99NJlVE5U0prF/JVGeleQiXJxIXFIowJnJhTgx9U+o8bcjMIe4X4Y+g4NjG8+uXYVHZnoqAwf2F6tM47fpZSpNTGod16fJon03bxvw/RL1aPzr5p87ouMcYgybCSGCoVBelMGSfMp76i0zpnBTxfsdd0fch9JJ4lWm8VHqUxQOCJ2iNjnaBXRhFovKW5aG0PtRIaXXE2KUa7Js8p5ich83FxfUPV7V2GQIAIhliMagkB25S2LcyfBTyrHFDUrS4GK29D37LL2V3DaJztLw3zKFPK7FF01dpZ9ndTuqtGgLzglgrNTLOCGh6D7L/y02k1ZzMZQangtUT2VVWbhTqYbyMYLaZK/GCljE30+UUnpRtJEnZzh8N/NkHl30vW55VzINfVzItK25nH/fqJYMmCHqW/VuP46pNjpKYjzsU9blDr3rDJx5RP1IVHZZGiMvp55RBZIEYVKpSktx+iEMopQ2BmJvN99VCsKnZPYZgIz5DA6qi0vwqJIqhIlA+0yDt10JTDq4WzepIhMXTopdfPG6i8bRpuZPID2ab+eYP0jEjzBb0xyA8c17iXlOqCNhiHMyVVsQsQTUK1Z0mTEFS1xPTTpC0dFR8G6oWwAZXHYig3HH7IVuQq17AQg5wTW/0QgGTLEQOaoeLAfp/osC12JkKpuFsFFL8qpiBcUWCeg7wBKvm+rhUBeJbJ3HlpLT0okiLAhix6quNomqjm9aV1ccZChKzGH1hU7V/53uQkRyWKVWYvLDCKujoEXJLPce3E5WnP87IFogWjqo5TDvnf8R4aaNG11CVe+OCmtw1B7NpqvwyYRoJ4JSSmnEOyNDjl0dLZKo+aFdY7h7Z8FNdB/f45A6BAUrjbS8kculV6Oz/pstmsyfNdNU+QkOAV/szAZIhlmqhfOszINLUL/ipGcyNqhfewC2UvxpPcEtF0bIi3UD0NdN+QhwbohEwHKPBzKzRH1w5RsK1/ZkezXn8rkQfYHnAkVOqLi0jdZ86kOHbiJCN6WdWkfIqYt79r2uDWGtn8H3DYJOoBufhxuggyruq5MrkKlAV1JITetBoLqpvPrW4M9XUNxWNJgjFoIeyfYaEhpytG3pLEEMhsahQOunGBt9jxUxJcXWBKNdHOhULHQz6LxFqQK4xc9zBYhbfPYoVqeBa02MV8Aa5lBTTlbYB7RQzjKmgGmes8vQTwQppFKeXWxaCEQpcoYyru0LFqWWGVUrQUVEgASLpVghWFGHD1TK+PDTT8op/IdpXmm41UFjwqUWhSjz1QUk7EXU4+eqRWy5miKYQCXGusm9ZK/R4JUic6pHKOuwRC13bLwKP0e5nXD3UlmH+BCWykmV3HuCxopIv1n2xejZ6My2ioiY+EqHLhHw8Xj+zJe27aCVZoDgjXyOcECNvp3wWuSba9GPEkB1ueQ6VOVKe9RCN4Fdt/9M5MuXsErbknjD722UirP+QLauZP9qrOP4jSJdyiQSy8+Z1VMX3JgRxYCRfwGmeCnN8Pa2ZeDIM3Lc/cYMjB+UcgRB0SIlqiWsg3dCCl8qgvDhILFvHMoVxR3bYUjRHWBkGNkzhqJnKZ85OZx02Kr0DqsMN6m35g5nmDqykqwo5JbQdZCuTeDyu40FXLQBfxitHBdd2Bl7KJByxlLUkc/vB6HyMqrsd92kb3VPhxjL3PUz5lOJq20vXsn6zGKq/w2y6EvwN/fYYPxegTDvPXxRIL5s5eGdue0+e4rLk361lII77ocdWYO0kXqY0dIaxTT7r1gVQ72rvnc4Owjg4Kv75AoKj/HMBqxdNxxcyaMrUOyd8rcAZ2ajqEQistAlwLIyvCCoTD4jOKztBhzITYiaGiZMJVEdVOKW5gF6oU3rr527cbyJod330fyNAFomQeLNYDCiMVnqWsPzoeptghncx06KPWUQ+z0chUyKyFotRU9IqqI+XqNzjIIXM/rBdmYZB5pmANCFOFWJ1QRxDYlZ4x8bWr69C3zPyoY+jLd+LQFtWnJKzWyfhZyvsEVIHN1FgY/Sl+AXf+vj3qjrjpaWss7frd5HI6DwzevUXLb7iqroJQKe2KAMzd5PofpR1X7tO4Qt4p0ok3vQccos5yUniZ+5KoKaB1c3A4JABKrJkyQSKJyxAIRg3Sh2bT+lMwtp9pIxT0hw0JY68yuAkMXTgGIat5qxyQXSDaSz5MdMNDAqOwUDqE1RfQ511UU/MKcZ11dxklGrGgyEjCgbhACiBMuKdf6XTXsp0l54LpEQeSIpF+FGtpELPl6C1NoKNLU54aoFCwoV8muXizjf2NHX7wSuJ5vfJmRmcMIn8iLmIGFUlVFss6ypdL0UnfLB1f0oLQxzR6DQzeviTkdFpvJpkqQUcHMG5HiCroHaSHwJl+s95SgnyD7gHWBKR6zIGVaHUUr98cmCIMX5k2aRweQzI1CyRahNe6YYxlqSdRKvTdHXEXtYSJE5UpHj4PvF/992PVs3NaXrIvl05yEzn9U6zK3DrmyW8O6LMRr+0QCuvDR0nVOmPrWkOxhaYhihTN6V/HQl+w/92iIiovP1xTWldWOjCgO7nuD88TM7R73GA+sDkWJh9/Xnr0EbOHhYadT4Go8dDPZNbzE8yjduxQTyH/icZBgP7FbvfVgPNmVMF4AOYTmdQvNjmn5yJDAdNRzUyYrh1SWZw3WxlUidSS6xy9ehgixrsT9HeTdOfbMiojrLOY+Mq0/YuGJSe9YJUB2tsriJsAa+plEuFRCKYKn5qFiEbByyFq2HMLm3DHiFmo3r00X1uU9gGVZYL6gBGbBRMqIfS5sS6OJhvKCi3unnoeVwGZ5eBqisiCvdag0ZLNMciHkVN0javVU3OQ01a5hI7SojuSITCi2+dBcE5fBRCgPcdE0Zp3Ue+9UQWAAg/uS5mXWQoNnV/tiLCC+pEDYU2f0RtTZSLfAsZferUDwbqQeL1eO0nYtVoNJTEkshwvW8SRRwP2islv18s/c3xiJY/1wYJ+CqU+dCUPtrHPaX1jYjCTuXjSwflVglzrM4dIJWh37CbUGfW2209jhLky6+ia8tLY/JwIblU76S4SHMCCJjBGtL0xespvCfCRCIIJGYPtW+XzKaCYcLWhl1SXmHFEom+6aC3qcUKj0rtbKaF1B0iVAN0BCsWvTUD3Qy0/QWjqLbLBKwj5pec91AyO7PhuSgzAUqgJ3jQb3TzTPG4Cm60O7Bu/ljdBKdJwN049wbUPpwVWhc3LK1qKOSLvbwx4h5Gl8dIR2GOsr6/eM19c7YsDjuloXY3OidGMXi3tZ59qADkrWkak5wyVa43vg2JoCbBHVP/XHXFBK9aCziVTHNtntIcvQLY5pA83EDy6FVdtjWKt3J/hnSUNFS75UGT41XNCvJYj4IErFNNRkboFZ6MHsRi0noQ1vFYHiEJNMjhaSC50VokxG8Vqe+PNt1zGbK0rTeStB0jmhoOYxdC/CCDKjWgnaA6H7/XlHxCmOHEUcS4SuuM5Ip2KuoYKCnzZ5OEmsfaqBhzQj2tmipzZN84wrNjPXj8thc49ikX6JT0pvw4OV2Vs/sP7oEuI1CIYvCcb0rWNHGnnkKDMrpn+WlH5lTEQRqXxCAylG2sEY3wgtLlWR2DmkN40+EpBQyhe9Fal+it40bK9oQjtEUYiylOzCROqmZGEURi9k6ZyUInK+QCKAlvo9WZqAJ1dBIANnB9yBcoe1lDsSWDOQtM6gaGVp6aV6QkDZhV7a3kUZdfLVzHXDhwBZNxiQAaFulKutLVprXXp2+xs8m2KPbzXZy5oD62+fT44TyeJk20mPa+pD4KGrpfg9+9Jv42dpIji9uB5uaBIkKN6K17oz+jDOcQvj7uSjTodvFdj6Wi0uExrl3/FVUSI6vGC3jaHO/vZzRlxNuqdA0if33R/jwfZ7eJRumTne27EFB9cUxgUryw1ui14oiOZ3E6D4ZahtVbXIu05mkF2Zxncqy/KMM7m1gJLIfrNjvrXGpKPutfPYi55hewU+Mn1W4acup6BMDBi36yzb5FJL8ALNd1nFjbVuT9LtVyljcjSG+J5GHc+k93CwQ1uEgt/cI6Pn01k5JRCAxfcqLhrFwVSCPKW9RlK2QjuWqAyaXX1rEOhHtTZhCjVabUu6NwaHHRVOuLTZOZKBbF5kR8viXunmqLK/rweiKwkQJWUN9ikIcdMnoWFgYW5u4egEOfoyomCoaUKQhlkW9ls+KX7OLM99MuGopRA5VuEvtcNIdjY7hphSPdObGgZ2K+Hgh+x5YIu8TQ3C9N05RKrNU9KBFobrD7ijULYJD8AWg6Xs1pujZmpaEPcmIJRDrmMLrnVJuengFOpoJ5G21nZkJ+dCElcQySY6j035XlxNZTR8WLIyfX0gOLCWaVZALSe5jTZcz9BKslReCpT6GMCFynvZFGeVSRx5xau/iNv1KFQSbm13NO8Pd1O1KXH4e+fc9DV2Qk7/uB7z0eRanP4qcyRRgpwJJQJhuhnsVhPrlcLRUPnZQm57H3yfxwsD/07+MUH8knBkfeXwjubVNCv5RFMpz6DumFlduzaEoLdQZjiFSTlIb/75aKgXF4ockWDC0O9R0Doo1XNGCtNDQxAiOAgSQUT63IQNXF1GPBZ5wKE8rxWRZBBCVU0HkO0lmpJEW+z72S/Ssd8ARgAx1U1nNW39R3YWl8psrM1FhGA1MKjcDyCCvSZQJsvkrAdro524RMYIk4xaho86kDrLXbVb5/U7HW5IT3YsvG6KECVoIhWczmfrAe7DV7V+a5opXp1QcH9NU0CQI+U9hx+tlzStdJLuSDjoa4AjbpLtsrzy5JVfEwT++RwfqFdoVPaQTwxo5bnt2CsYjq8pjBiqY/irWWvrvUUxavUwmqAra4ci45kl5oPiO61fhGR3f4H/k7yxfYXh26zy4ZCEuu0rUcOkraxQLlFdSHQuqo5WWleQ7WhWZxOJEIp5bA+JtTUsyLr0OloazWUTRSeHK8qsi2b/inuvN+eJQHDpgztpQtQSnEnEeJInbL0jIbGUK7NracozuYqkdyPGxNIV0mYbl9nENfGFqaZZ0s0peUSzSqMyj6i9J4ND7jA3qUR05cZKsD0QcUf8a4HjkUTr6Uc8Zk8pKhDq1ZbrveQ1Xzd2+qQt3dyKoqDKvB+1Z4R9W6YImDX6a+GqheagnThtSZSo9sAu7+Rxi+7Phj1KQWu+Fa2NtLOkIOZUtUDSQTAGbDuMl7TU5wNzETbBVUBIrVTMd7UW6kp00A5MHQZRdeWkOMx9c+WieHemtcONfHuJbd0DCD7xZshWwXAWplMbIHOA2c7NawuT+rwAqXXKukSuPqeq4HeNDr78yvST/Qx1adKB9cmioDjwy3kt+OeKv83hDroIlrY0/zrs0BvDVFYNpa5p/TIfVW5XwdAvj5pLeHTI4a8N7DpVJdDCH5xAWWM/XjS3Tkl3wLG+T6inIoCQsngLWpWSAFzsSR1fSSqsSXiUzff9Tqr9l+yMiL/RDqnRvEw2DmbQCr2NF8BiFhUIG9JPkkStbaDlOYHQmlte0/PaelsP2OoKwqjmS35vgzAEL3ycxq+7m71Foy2Iml+0MAi5hgRbW6v7SDWPUnkpSQgf6H3pUeMU3NCMKIWUzq9PcyY7yiP4JBEG9Wl72B65HIwigMQiM+3XjTmNLVlikhOTlKAIvX9e3hvOse8ku9CAl/R+zcfAaVLwGlxM28yaflKTvdV3Xjll6VsnGKDVxrQQ4VQsM9K1hz7dLWHECjbYw23q3ZB5UUSz3Z+uMb3O0lhhQcpz0Cel5q99E9I6BYyaFCG/8qCeNm8uFHqU+40ZPZSlwETlkEvI5GXVb1fr4GY29JMiRhkw+oEW5gyYNumfCaTEPRN2uwmTRO8kYxn+DhxCmWwu6jS6bDzDh/j467N65lFcZ5AF7tKyyj5gDKXUoiev6k1t9ZLu7IUCYRE3FDucQE3UUD89W2WgRGAYIxMXVPQ91zHWxWdfg3GYnC09lWJVOPlLckCoZ24Zmua6IhAyLtVAErxyZi27a6trZhYk4G28OYTyquZjk5OCYsdEIEpNX9WXYRxhHTCAmaj27/vZx+5pFBw8fVYgAc7SmxoiN4MRDl9SMMyY6F6maultHXBWR5d+k4OzpYPxiYhfFAj2bF8LDloKbpEVwjBlkpMlZFSrgVVjTQRwDZPwk32GaNDCKiftCTM+5EDupWw9croUVBmly0TGOE3jrhNG/Xt2P4IwfWFkRBaRQ2xMWs88b85YkDxy1Z5fp1Bt3oW9uo4qZZOwzZAgCMeyZuGimwhYkoXEjsTAjBV6bb6MK4XUythdBpZPTpG5CKPnqMmbnGCpSYWKtY91/LgyUC2v9rG2gIG0UDPh3QmhTmv2vvhK1WUhnQw3P6FimZab3H9ang5iXPRvJ6iy59F8MCQAGtk7gNKDJjca5GotxGIplutqNZdSPZE3mFw1j0didhJfCzuSEXoPgYe9QmLdeeCVl/aYacODQpc17uYDCDWsxtQH5aM2RyVDZPRuPdGVYW4hdulkT4UvlzTv3h48YCl4huL3jWIgbuu7qjKWOSuipLTIojH6UfH3MGjtDUOvIsejBtkspYxMooEaN5DPExl0wc13oD0TfAy3IhBMYITII6kjcTWTrG8kPJSSWRNiORThkIYmIIhA7l7R0pY8GIK4qEREOCWabS4e5ulANHG2ycE6toN9CjIWTijkzGCuDpu638aiY2BrCrgUXuQjhkSYWqMqeVVmK5PY8VuvC4tS431DumYBw1EEQ2S/1PFCNP3txULsBqFJQ76P/mwUq7boypX1niHFP2r7vgXyfl3Uu/rhFbHyqfqMVOrNxr0cWuvYUDrq6+z6Ic6aVuFzZQ/odk7KtS8nAgFAWTPQMZWyaJB+qxOELgk+RM17LKwo0oPTVFEUdJX3NeNJvhwdpPrKaCPRsQG7ckezTB2o9kX+lSLdz4KUTKTMlAIz61aYFA1o0/H71v+v4of8rVr2Qr8L54NbA2AbEHKcVRi6SnFnKfjm27nOMuBcy466qh2dbYTovSZ2YYqUTzCv/frE8FbPCNTCmc2Uqr4TQxkrEetNUmXMuMngGJirIyszbjRc0oReX9U7mIdz0vGplh78b/3u+2SoKZul0pOn0zLBjq6NiUDbVqS+TMoMs5J8X0VW147jQc67G4zGw7rgXOp9VbAdZTNscJeE4Efjmv5wChy8UhMPplQ2IYKnMJOqCLlnFSlZ6G49G6awCv/yeV9UKLiZ2IBjVzqphbkV6Yzarq1Bi6X19Xsm7t6wEQQ5BuyTSif5sNKCE4fOJ4oWhsgC+ay8y1xAMGFUMrlD+Ryy5jKS/uEGZ0sDiGAqNbbEHn9vCYWpPAhpp2kI8byuQR1jLux/kopBoSLdxOapx1XiQ2StrOaAN2PJ8BpZy+9kbwnCs1GDaaDO91LCs3CSChvxEh0BUrRHTKSa1/QckY3gFlFBhNhB0/poIPBfP6wJBttnsKegOSc6jBNgfCFQnrMKgmBo8xqP8Twigue78dleeNbZR728JSM2n44A2VUayJ5c3nYOyjvPZDoE/Pq7MD6n8RJALv5FUzs/W3HjkNvx683Kog0W906MBCdU371ejFEeJndeXNwYFuv2wrWU78xGSrqXQU/B5jywEvpyZrCkFNvVdeU+QU3s0xLk3lc1Wv1iahsCypUOqpKdOYM5Ts6c67EVVa1ImB9PEYRetajEDT62neBw7eSWPiOguH2CNt8KQNLF7HD1ndS7qz+/PIz6ILynqGy9duGwa++BU8JmR14XRX37+IqtekxZbOkxWhFQZTCUoDwBWg65kHo4XnI7uDL6SBb86gNRmwELS61+LPETUz34q7iSnSmNfgb7SRu0+aCmEmzYdCprXdrJMERNG6bK1A1V6Whto3O32KDZ4CSyyBLS2xHg1idGPkvP+M25TVpWcrhU4bBIy5IxG/b4xMPSYh8Z2Kmsefh+EyqHLp4wk+ZpsR0CObfWTOEoQfAzg3N1obEw1qrHswlI5nokQ/V0lEgmhhKe0y5EQFMi8MXd4VDpIEYguSYNGIJs3FIBFtrimoFcDwss9ZButpAQWi/8a35flpREAUHXUS61Y2LgbKrViBc4Q55gRbsu6Juk/7SM3+ZvWL97pXKhCyXfsBZmaSzu38+r68SDcCZRLqWvC9+otmrgLXbGmf1DSudU//ECQTceTgTKTPjNYH/00aTBokuFJbaKNBvFqYZsoYben9xMAvdFS63fjeklZ5z7rnSdlNBotjWiopZT/PUSijpQ7jpBYdJ6qZvFyvlHpoXb/oJWMJgwS3IHsBN0fgBF6KREWGRRodxM78ZdzMxmU4xJvtrk0rdlDWtOGPvumYUxnRx0gcIUdZ1ECkVlkPWZbBeuJ6+qyw5GKzJBxKXEmcsaRM5WMpVxLZewkROQZaeuCoWa1lsv20JBji6I60PSWPG45DpmGm2naQRBo5353KmMYZXhGIOrWGlFPlcXrcdc+9jeBTzaHwy1zqQfhIGZYDFBRKNiXgHsEQjbZcA2ssrDrYYOqquzHMrr2OagbIg1/ghNbfxDvqDSSVL+IAV6/jLkA5Pfa3DIUgjahgowrueI1cY5zWSEiPANBulxydS4ZkYgzLjMd5W/5burh2DrAd5fL+/kdq6ikZu09YvGbcVSdxkQm/AFCw5av2j54kay8syKaX2CXojIg0SMhFyYOVcLqyIuLQfXNqQoPAOBqIyIFkULTn4PocofEwoUmUThlL6AyohMAS0H0jHAmcBUmL0IgKxupcjAMwCSPRfs2ZucwSQVlNYtdWDY9ZXxN6O58pO6O8WtiaPwTzvzptS9QGMX/fHiQRg4F2dlvE5MunQjEGwsmCC4cdqCAMVPaNS3bySkSPoFXHc5my2ZweFcJ3JHob82YfDScI2IsbUumedCq36tyeZ9DDSpyiFbIIeowebWsrmivGvEww7CFWcfDR4FfhQ1VM+UNUTOpyHClhSTt96X7XWlqlSarHICwQakvEs+vWPEqetQ0eJE0FRhUCuK/kLjfMHqGAyQvIvXdTrNAIBFHkhLq/DxWofrE4trFq2iBdb2r/XxeKJbfVKHseIYuhm2ZDAQOYqvzLPLSgN5hF2MsiApV4sULVvi8X0iGw9hyEGGoPnelN0B9YkovHCfoSnlR1KB5A0KVstjBBy+xVTG/KUWExad4HBj5rU2mz/VZmF53nZXk65hRkOK+0xrD1e7ddbyVQ1pMLJrJQ6fWF7SMR9SjvAUT+9K96SurFF3t3zkuXD45rVQZ2NK6o81jbMSc8/o1/JYLd6v79c0FT9yd4MRmeYu7+tE0ZBIKm6ahL5zjcnYgPkKk8ug/JziTudZe0QrcE8HQsKEQnk2YA5w9a105foehZh/NJ+l6hBjzVD3kOqzbkzEIgvPgGLZVI1aLISlupRkh7G/ErH0VwIxI19yQ16iQevXLmIp6CCBpbWNlBIp0nq/saC4tDQN1bY141nLYphlKbq/rAyAxv1d8Pa+4H7st2C6kArBdVxxOyfH+N2A+zwTvMv1hWowpWyDr8Vc/tO7SYMaC4BMGYW4eE0oJPInEjsFN9Q0GF+iVV6wBddZCn4RVkxiMrRbw9tPcLtm0XZE7xMMzvQicQExMjULNkAYgNK5XN0wleCplkcUzhiSAVO8rHIrU4RStRpK3mQ4ehysgGaQxMUkpADFodScVZiJa65umdD+JRAopbKZzYczajtsnLy1Ydr7iFkYkpn9Li9LwZ45ufapVi+KaP3Ml6wCmCutyFV2xHIfha0DqNIwYWjtPNB+ZaM762sLd5UxZXWJVKrxWrWrYqp+Cb2DkVwe0/4BPQbRWaqxH2tUFaHubXG4u3/Z9UftTZiw6dmy1+4NdcOguCCLKzKhrDn0TjIrIYRthhVrK3PGJ48z6nbsWqxIj2H3WYjcvO7ereGwzuHNTeP7Yyq9J+WZUPHWurfszQVa5y7Z3iRJK1WESKSwr0jC6TXXatu24PiOZhJmW0iwKHx+NT2i5HcO9gJBSuY5NXgMyD6FZaVGWMRF5XpmkRMQ+kmEtKAKiIKFWSRxEUjb7QWCCgUC6emn5okeCQHfDskHLcPjwO4ZAHKaRo2XJ4JGJpmzXwRD7LNSpKSZE3cYkyATPPOjIcmRdWRJl3O1JIzhavSQU+n1JAVltgWR0Zn15VUVi62Z2OjpWovSnjxpoR2vdTo0V0sMlFC3SuHw0iOBeTPV9vq9Mw13Dc/ksX/ny/T9XfHxh9mVJKSZdGWCpciqTHl+72sKAoGMdwGzC/4Ul70Qx2fOBmZuNjvuYfBuveaNt+a/rxisZBkrtq1QAeq89bzUDbgqrJoO+jy5ABYrzNFu5T+moDrsuOWN63DMfUTlCIaUElJOuFBGVZ2wx7xVHkeRscgNZlsZvfGlmp87M1nCQSVtPXm6K1vTuU6OHe6ns5fIrXCQPw7llDpsCs/cTPAEF6a8MTwfK+0jp8Ya/8oYaFP2TdjOhbA/q+U5wBzYbQ7z4QTx6AXfN9vQ7ljOKBKo9FKqCoqVLunWalBLRu8SdbSrX0oJWUVFpZd6KqsZ2lYbwxZ7YynARel+jpl3y44sBkWv1RvYtV36QoX0+Jmk3Xvs0a8XdObCRzkC0Hu5HWcox2Y3Qk55TLh/xSt4Ph2FZ9fCYfeRMkVhqkeIwwkDnyVttaIRCuV7PE+mlAOTnvpf30lzgUCOWbd6XisQ4vNowvkJ36aPm+NiOY1KCLZZWcvWUgXPIFzIWQHe0oAd/bsSluohBgj43tjWOLZuo3Ipm0q5sRikK1qcHQtnzbpZU1BEYP3otVDehTcQFy56Aiv1WVhoxIEGZfi3Td9TFQi632aOX+cGa39wxMEfWm4mwEicrHfwQX3hZvBy6wnPh2jBON7n+U5IAWeh9OsCyl64LccJHy/5r4TDlgJVbMpJnuQj8Hbj4eXn3njaGFoqFrr3+3vmXtLI4rF/tmYhENl5R4DfeNe6f/rnZW3CafIO09YKCW4aip/CDVVDGKQhxaHVnL0QCr0HO2F17RoZh4IrUXYY15I2x1n6ZfUO4FGl1RwJzFuFXrUeyLT7qN+PFtOl7vUqW+Z5KHBmMv88qw/PZdx4zHoDtDoCAd3Bg13Z2329pOKfV68Qx16gKtS8NhCeVVw8BZIjizbi8Fawl1e8RiD/R0B3jA7qs44KXP8J7VCkiZ5wBvUf6Kv9dzTrFzu3PzyXH3KcheNkQXupX/UY5wMDPXrHwTJoOh7GHO0oaWGQBZnw3oniNgJFF5WTiwfoOHrdp+AYfwxXNYat9arWWN+z1FbjVqpzP9WrJv1+EG99aB9pxzii4zYkddLHFL/6aJ3C5KMPdAii6bOLRvJ/bX26d6HUpUzKGlIvpi8FtJFFWpS3kDpNu9IkEnix3crSvigFeT1Si4HcmiXqY4n1Cl5Fy0/lu66oOysQKr5s4gMapZVdmbP1IFlQL3VS8+46xmwLzb31qSUOFBxf526lYBOXQYUOzz3PPicojyTSvQYpbOIqXwInlR/JJktZr7Q1zv6GEqvP/mp5iGPwQmsKnhEiNFA0SApiDBjNYtpAdI+1EM6ndx9BOJDl89FC5aHhpe0iQjmzXphINPmILMTV48TSEbUOf2TGzMJQC8I3sDIwE0TZ8Gi6XQe85bROGMh3LyzXYKylkGrnIrRMePVgi67RLTNN69s1ZPZyMROLvFT6kSMy1ELrLAjf/zVjVVo8WbaL0Kv9VCPB+kuijFty86qg5w7xayzckk1eckPnVTDv4qnjRGK1zcD3Q5/WrIV5HV+WAb8mEP4n/EdotY2QNIYd8+r7hk/pcUCWuOYfuXPNa3EN7BYKCUVbTVSOXjhx0sUS3TLKAF0AWTQz7FmThQ4bMoE5+/KNX1DPxnFJ9SwjmHAQC6DsWHb6PxH02E+S47SpaoEm2S0igEBcj7egln3WgSMOloK5PgpWIljG6wuADzMTaS+RTUBDQJ9VE3L4VOGvGn2bMjCV/dqhCJ62DIm8yJxqGKVwc7LDAgEjrs4h1OJgk9HqYFf3Ftql7FRxHJVODQ69gVRXxMi55YbjWdlHa2k9Y+hN+491iDAyywoxwqrOHx+p/KuCFcLQae6UPFvR9Klsd7LMca/dp+QECgDxZNxiqr+Q+0gWbaleLEOho4YhZRNhJR3TGhWF+awJBdg7GQTrQeglFOIuEYYuf64MkgIJiJE8fp+ChHfVI+9kIAH3D2vdSgo64HEWR/NOcG7bZ0306Y+agLcQGtQiJO1AXC+IYBrRUeY102iF5uT4BQbBFrNEBTHcOozYCwFvRcT3rsYpjmb5z80gMTwEI30mbRxaMoNy1Cpj9wBTq2HfeoN/6BGe5PVzVJSBmvqIfJi10wv/a11M3X3uTqgdxccSxB8+bD4u5vesX/iY8MvwzvEiwSPM70ZIR8+B5OlR9OXN2npz91E5ZbOGeSZC4lQvzEE5rEwXC6Cx56ZNClJSmmlr3ZrCyqQO6ZTpex9a1onj44w9Mw87clNBVnacMmQZ1nx93lKoR995qQBdOKyfgld/nBN1X4cCARV3srLMUmj6alutvQE4kiTU00DXJrGs2XgB65mRuaN21e60V1kVEsM0+uR98G6LD4pbh/2ElhGOG+VINY2JJQRjiuYosze9fXw9iJsugfRq0mZNWMFcYM9XBkL9cNsVCagbT2qlt6njFoLhc4LgaWt2kfH6BWThOVR5SHv2Gbl0gflrmsgTR4JhJjT8syNwQCiQHr+cQOXgsYRyiiUksjxqQKrpiAbvsKaAvEwhBtEFMTFrCt9aU2JNRwTYzgghAJRrmGr180MGphG1BL3m0piCrUOUR3XhV7zJA1yKMMglrexfb4alf9IOahVqTojp81Y4NvPHrCByfSJls5UzgDE7dS9Um/Qbo/ryZE7L/Q2cGTmX/pONaCONXQMGyDHjyuiIgGWp4jrrY9iF2QCQ6uKx87871Bio91OkKhxQBQWhULClHFm9UTsURtm0HXX9w91Dzh4RglXsM800/Cr9rL8qnoMhJH07aLxU61JTxYXasagCyJckFq8oZ7KORlkW0cfCs2tOi7je993uKJkLBt0IubKQ7euOa5xu7qul52ZKYLQJxLnOpB6fRBbFp7cjuqp0LkZkPLMAkR3Zr0qsEFFEW9PKn8w9Ul4lbY2WR8R9n8A9FH1EcMKhopyp+N5t4U1M3AZxsv4AyX3BrS0rDNEIdaZNSxZyrp8Q5u8Ya3tMhHWmlFsEHIFLlI9Shx8ZEwwhn/ssF+P0IagR4j6FksIboax4qnbhJnq0pBqz2RG4fq/aXmqm3gimggE2oZ3XZlhaGGOWc39Kmy+XZvL6+RkY8KRMEGiR9w222US2W/qH1559fcK4CfVw1wku5VnclS89Mmp7uy8hNoY9mYdihgqys2xmzNfVPsCpTx9FQHW9CYNlbwUNDsBQ4eCUuplxMurDCeaBC5Bwmj7/qE2tkCjfI0NVmazTWgaz4S81VyLoUSizOWN3zHs+YyOvwSS+dBK3da2X5JltcA28wBEJEeplYAkLjLf69kRrZYj2LtgvFMgNWGWiwrxYEeqjJFqlPLVSsMJowY2U6fcttIOkYnr7bh2ufAqx8/Q7WSippwG/YEg+fcuMpa4gpUeS2iPI8Xs7ik4wSC9/zvWE9Qow5kEeVN02ZtZqMDMe53vuqEshhDjoAvKYgQPQOxns/oCd9QS8mv5OKBp4YxDshVa3I0RyGecJNskUZNi2opFUoHnpxfZ91q+HYIuGroHWGHFunvk62BjIOsJJwJ5HyZ3v+gwA3PE6SdOVvKJYo7JR8WKYkGgkGVE9Rr93rr/EXD8gFIzhyel9svmxXTwr6fVb94zCewyY+3wAJIOUMeClEefmuff5xdJ8Hb5uLxg8c474jsot4BmH1xw4tqeZ9UIk5cNru7GO2e7hlxEMsnnM4zVJqUyDTYhEDJtybeJqCoqa+7pscNZUSO+VikZAE4KmvAfWGEzhoa2V4jDbXU2jDQ+09q08LRjejgI7DQ4At+LFfc70nB3tGtKjkzPt7Hhp2K9gAdrIVpn0XoPmC1XaIre713ioJVVvgFMmg+JU0yWSwyN7phfb8nw+cPiYC1lXUCKTTqsaoV5RyC1h+8Y7hP2hTs4cG1Gb1zStQ3vBAE1R6xy6fCydoGF4GdYmJKjB0S0oNZaCMMOIl5G/L38O+2bbXBgdL2sdevy3mfSt1cAtmLlPBnj4g3z8YzfGz1v0vNJMcOmjKFg58vsK6A8ZlGf2PBF0gbsDJYLx/Dtm3RWBcC2VbtW1/9gVydA+qDTfKqCT8qLHQvie8SMNdpE/kjUKX6b5KdTicEouHJ22+BSecD3tHhQKBJDzGylPdxph9b/yYFLkDL1lrSzEziZxU2X9LL9tQ9Y0z7BM6WKvOZbfzOLWajUnP7qsWbzEj0LOTaoZ/QWBcHumuU9IvMEcbtN3jBuMcFWu8mA/xOeCkftOXBztgvS3Aq3wHenhXkYkkG5Q9AUYA+cqPJPLA2P0BJRjiY0/Eerx5kSgxOU+ERUsbDgMrIaZUr0XrtvRrH4vgOWkVNRFWBLTuuSJRxbA+QPYGH550dYGr21H6Su6Rc/HXUWo0gmtYBjyTBr5Gxs1qLFyguXSahEztAbaa7vZSd+Hg6UGKDc1dWslXZ1v8NKwavsNXGQhU1gsLZa3j8S6nbiK37eoo58XckQIufPzohLYer9fXKy54m+qEg2moI9oIvc3yW56aGXW6uHwfy6hhqNDFE0XT+h4n9YxYGje4j0Khy0FonprmFe8Bwhda3nHayqd8BBBpINR3UKzyrwpBQCwtYA0uBN6JCh8Z+tRt85SSJNDcm5FlC2xzb5/LSB99zXEot8KvG3KzbMA/q7oVjMfpX82zEukzRQx3XaJXxgazX2oEw5+V25RNfneCxDm5wr/IEq6uBzSdwg5N1X9s4AZx4/cekbrqroFXGUpCIKZJGZfXEYkHiQcJ5FWGMCktOs8C9cqmvT0gh639iBJ/ALxXLr6306wqJS3nYYjSojjHCNsylg6y4Lt+R7PFZp0rrhS2yhe3NUz0guf42paY1YtYxH9Runave8YZh33z3WkQrtGsumjlr9JOna8gyF6CwXvgh/HcTiquQjE2J4FOx0HCRgwV4UWTXGpnNALcY+GWAt+kb1NNzyNu0tnu9KfozQo/569rwQ3nG+e58vAzRDWRJqjKU9VUeUFVokQHJVDD7Uq41n2V/5Lld8QodvW0q9dPo9A9guF6jZKCeWYaGH8ITJGGlju2u0O1mqRdY9M2HhmDIhk6CUyad1Bg259bK6cUva6ldD65MeCYVBfUCJ4vLRQ+8wIcK47FkLwh/JVIUgtIXLMGqSoF9BsjGYgSGa+47GrI7q+9szhVjHSOceRMjoDdOZPbzgkj14Ns0V6Lc+qyBLmRnPFZq8bxASDTXRltq5sFsUG9pikHi9ceEQlHqgd+hlmtTwLotC9FRMrztxeWoQ+b8I49LUdK+leqVAc9Ouov3fKhuBBcMK0T+eFhsO6uplVYWmEcHatkvRt+V6G+MViK7B2gOctIxxdGXbbmi0018OSg1Dqldn22THr/PgdzRUhCqqL74h6smcC5FJVjWqosdvEVG8YMpYHttV1kZD6wqrtENm3IauR0P69Mv3Bhjb3PVhus7pUBdwzAJamY8YMcB18vYCIYp5xHSKsL8rofPrOEvNvhyGWo3WWmfreSSbULe+BiQDA6bSAGciZq/KwUVxBpnlAThW1JD6Z9EFffiv87KlejKMCY9znPXXG5219eUoTnvMTeGIeeUE6HnmYhTWpCai0zPWgSOk3CsNkFkBl310byVI5E6MW1ksvYcStOiNlyKpklvxr+OunU3xon2Ki6Tf2K5hQY/fAK0+QzdjqRla86hc9nJNSjdYs31VsVotMypGyZIxJy5YFZhkJgh2UJ9f5jjrK8+Zqr+zso8M7mlUgkElUNJIzKHFsGpgyttobxbJomK8k089IYU1NmHYKHMMfCIR+/0MrBNpCTUtf9bgEtXcwCn5Wt03xRQw02ml9WrQjYsR7jCVU2NwGkmet8L3QcXDM2JP0rRx77XGw3allUppm2jBxX7IKBNGGYqceYRY6KYfVthu2HHUOKyG9RW5zMooSKUzYLzj7NCv0oD1OM8FU0zmltTfPTJMtO5AbV5JXKri+83OfS7QMNC93VbjGwPehIuc/B2B+9abxezneHvAEtmKpcmrnT8loHgWCXdPiFV6XHPWiskYgCJ8NVgkhjH27r8H6OrtBlrT75/pVlgJR0WCXpVwAASd586VoRb3G4wmBmmeF2a9ebvIrAyOg/cTOgZCNGYl2E4+Ivl1nj9h/O8LcPLth9Z8RWusuNsILNbXxvSGA+fcRn/7sYH6z+Nh95+b5bNyruobd7rZBytnpp58Petx9ZKUq706YVjYdaLzleOT+g3vnpQYlsnvenZARJVwyDbzhaKnqaL/tFgrGTNwfRPOLiJTnYp66A9BEFCriqEin7ihu0wiu1Wp7Cb4r16COI7G/hJikX2guCagrKpYrB0KLv3dW61iL8bhe1w8zaNsHQD0Gw2cM9aiFvhjkmdZJVuaXgAmvHAJL31MjOFx7u/5ie+b7TabLLZstbfHrRV7TZNQNa/K+XYcyA29kf0MuWbJDA2nFdfYycBPRQaTrE/GxaPyMcMimr9ctTHm+IenlGH602rsTCkxU9iioe9v4ELt7FihMSGr+tRE6wjsPWAoeOYCSnOpXTwRlVF9sOT2QODvjEQ1lRwTLgkqPPA1USgrUOcAy5LcBPNI56+6jeX55uzb5I969wIuOA6pa/zEyt6MMyJjAoRLWCt9bFgf3ctcP2YRFcIEN6lu5JuDVgQkwmy9rPNGPTRCkgPraD9UPWh0g5jLf4plAUfBRfRjGzb9D+11o1+1LFp+5PvM43F5IkPdRi3QdpBlt9hqWV15qy+xpDUcnOxxUFOEEROkOql1hglKuH/DrlH5doQgD+W2Rnur+ccNbno0sgehKHfHWNTh09tGyLLi7u8OSFyRewJTr81QWqjLj06ePnQYSiGAgIUfb0KUDvBnU7i+YRYj4smjwzD1xMufzajPBDF2FoX3YllY/qXum9Ww5m28MNaZgDhQ+yveaR+52zltlfFH4iiSVg8JgkosONMVBXA3KdJxbREBvvlNrNM5Z/57c3P3S+1O2GOI2w6zaC6WyMA8gVxsopaUKEUD2NZCLHEz12yJzmQA7IYGQnFlIVBapFwCJc7kTniQIh6vl5fBuxqBtz1jBXYdDIamUUukASlpZsQySaQX6fI0IKHx615Rn1MrWBwfC7SEwK6cRNg0uW+eE3H769/W1zZHbG8qP0coCh7QGXjf/fJPQ8Hd1sjGbKvbR8hnvHFMZP9BK25Z83tZ9O2Baput39s/g7iSZUL74tbp5XLVWRr0fowoEHBMIR8dWrISgGrUWASI9zcLOFXgwhyqzD+q6FaIf5taBCgYTGvKuTgQJXoG981GYDiFnKVhdhX9tc6gXch8BoBIitSwJieX0DgKwlLlMGafTCZfLpTSjEkJKabBv4Sh0w+q+34Y9jLqNdrxby/9cGKxnxvdDDLxg6FM9D0ZTtmUwrm43WX1wSc6RIT2v1jfYC3IvgwWC9ARWLiLi4eDYYjrddHPhbHYbo+/3BozK2PN8VM/mXHbuHvKZvCZeG6HM2uEu1oIIBPOEmBBJolBL/auuLfSddiM4JhQY6hfQBlIy10RthLh5mFmFgUbA7KikGrXukes95TCVKYTwSqgADtxiR8dJEjncai4EYsEhlnk37ECIrbs3y6LmdzfRJY1/Pl432ca1X+Owe8jkE2olqCAQy8cbEsyYnVYaMPDvQ36hgecLCO9Tv1Z5idbxyKV3G+AJzbUbKdtcNVFlXNQEQTTUzQDlUUFm7Xlb9Wog6NaX3mCnlopXq9IeH1itZY+AnVDqu2PEM4IbjZw3Qf381mcJEl4fhYxc7uW9JyI0vFtH1ihCTFJNo0dmq1WA0oqBULAVkOepSvujj2pFuWXC8oWqoegEgxcOA/ckWual4kAtt9DiyigpZCdlNGLywllmhG7XTOgvCs90sAvSmkYG2Auk8oqdwHJoecbVNtkl1cXIQRpVtIFhFERIp/iIM8ZxOIr9Ux61+tE4bK17xjXPAJ0gGLhu8KlXmo36gwXPDf1fbsAKLMiNl4V/+vfHJoUXCMpvebu8eTVG11GeeTba073PPaacHQrIRtuLz9o2YFlypRxPTl3Roun6xWmNuArt8Sizq8G9IJsD5Wds35BdbEkF9kLBQmLl3CFy9CsBMpq6YbBl3st966wIiedM3it/bhCmmpiSuNnlGZwrqJaRomAhFHe9D28lERz2I+AlX7qNgu1034ADQqEsrGRkXIixIOPCGUAGcbk7F1XzK5dLuJUGgsbTlgYL1saUWBi8dLxefOoQaKD0iSXyl8obYRH0FqTBYqu5CGsIWuUyovXJwCL3zJ9k1wlQTr4VEoxyK+KrDwcjpFWQaUWZVwaTdDHQC48wseuz/Em4p4SzEVAvr2w1F0Oz2eUdGEgDypzLJ+f4u/y5SV85EtV9+8ysm71IVvJU0Fit/oa0sguXpRkb61hbQDrZcza/yLw8du/lu8OZZU9s+Z3JtgyzSjMRHBaln/WMBejTpmvH2HC8VtPTkmsiynlhVNcFZfpUIVHbwszIXI+69z1EQo5ebNkcbvtGvsvqmKJFdv4f1TYTOJ4JOG7lpPWlpAQAibC44P0YuUNmEVDTN01ZJbkhGaaGFw5OBCoDJgKSiXom1DBSKp8ov6G4Ff6obqQqROwuZriztgEsZN9bpHw3se+x/fPikPvISKEw+sy5Tmo7qoBCuvrMSTIhEP9XORqCmwiDQRsqT2ZuaR4WpieTxBh6TwiNM4QtrI7cMwPn3SRqTN6SL+hbbs64uYr40tKQa0wUIiNg11cRz8jgGciOxbgFLvvdo0OgumDYPY34C7PTT2OSwieVYXLVDj2ns1dOgFhN0kJvFfgjpcsnYdRRbWDCyCIyDbi2V5jyqrXQSrz2uWKgbEP70k9WpQ+nUHhCOSLjtG+kaKs7LqLCMaOqprEIFqg7rtspy+50gr7i6TNtkpALe1LjrsnHGu3KqQUkuZAdpuy0fn95N6yy8gkvFODw9+UoHwtMTY6+biYV2Sc3+ajByxS1ihwBdl6Gb4e1s6QsxKW76QfN24Jjp6Q2v8vmqoxUJ7kt2MtCVpkwsS89UwmFjQl4Dfa01FHb2pknQUD5gjV9LShMWAaa8p5/7chAEO7sjikIgxNmDUbcPl6IjlLblthfs/0CwkzKd4c3UF1I9o6rheAU7Mjgt7pOy6+c9WabGGRyHckzEwg6Edyb0QS1wd3T9N0oxaIdiDDOsMuyGgXESeVjPbsmGDssQqqGErtne0EFnRvElCLDVT1q6OuRr+QYLms5bfrizCBV4kGGA4SpI7p7RFmN6XxeCvy/tItsfiYyq4EQw/SrIOLM4JyFFR+GQ2cfBQ3HD/yo4rbPg4rhSNBpcLYgzeHdGJ9qnrHXgOtHy6ibOgrKbAQiE4D0TWQ+JfMQj04DHZ/89WLQRolYWCA36dqM9pUqVW4tUJFo675uX1wjHMJCc2XgPp0f57Ux94Imu6gZO/Svfup5PGMcZ+U7XdZ5uG7Coq+Dlms2sOXSmuWJrghbBRLa19zETRCA1/qbniFvPQTisLawaM0RS1+WHL/nlN8OaO1lfUWCk/4wN45mJ6eYBtlteaQcqVfdbfDP6h+b31+Ze/V+a3ipHrlfygrWQXUpyWK4rT+wCRd1pzuBJ7gm0vYSUdk/wRTcoEfg8NlHrEzYPbuq6u16PPT+bhEIrpsY1Wc38y1PtBkxAlo1N2IweT6oxcUevxSsCcztto/fbOErayyyOOgZgXz1rqNCk+b2aeSXljkSDh67UR57V8aFYa6uUfPX1xq8Zs9h3eI1w/CY64306gdXTdTN5tZV2DL6tlPI6uO1ubWCFVV1NsS0rfH9wbsgLER7DRZDq9hxLMgxkH7HM5wLyoSOvvP5vaAgkT/C8Ek1eTkCu/xmh3qMUGrLswoH9WkdZZd17pTd/XBwTaH+x7nez6ryVxmCP5nzObB1vO0MRmsG8unnUOtOHHiCGnxsUTaWIwyyWjmHMf66oPUHt+9G6wp7OmUkELxbypf5BhPY6h4vlJ0i5ENZiYUBzgvz7nlAaMKtXyCuZbTDZjuf7Xcx3K8dX7Jy4Jm4Uerse4uXLy+ph426NhfO58NWRRCV9GnAiWQfgglTFqMNoOoySs3SQeoFha57wUUs+VhbYiCxnox8FI6fkqr+YM8dbjtZx4uBjeUAZy24k1rnWrKLKCIXa81oJoAworGl4t8N3VRXCLLnwn5m6SeqcwkM2jZKB9R+nzLqgaYuSjfHNM+GNWPIC/wr3UdfHRzA2y8Yt2PM9b0psGO3ovi+w3xQVtefqxRUCS+IqAqDK6ZNy+ifKxTsfW2NE1piIUiItGnnpcWaT/7YMXJfsHtGzZ8+866mgFNTlLciYHyMB8+OdPB1l+xg7EL6nH7YEroo6wpwWo9NfDmcz5jVtkDYU/NzraAvA27iN1ZYzjkcSjhLV555DdG7fey9fLbeuJlLkIh0F/wU+6FrybdOQkCvAeeG+mqlwn7IOZdNUU5Jkue24XSefx7KuR+KVS1uHRzWFUYh1K1gmKXbW3awEBKrkCQvBDSP5RUrwRg9qWBRt5B/T1Qv0/FImJXg3WAMZ42kxkKQsqi4j/xR+Ufg0OY1H7L2kryxXXAegel2bV7/a3ynQ4ioEYZF2WWmUH9vAkcGq6WTC1ElWbB27y3h6iSg2riicUkd29bTHLbTeSY+nkPcpDWB0OaPzyn89uWN3HBt/vadBQqMMHudQMB4VzY3adD0YVtQEMh9+hBBSU2dzZiWqLAcbmCjKngprKmYReDnXN1hUmPw66Kmo1NzJQFlx5KfB/6IbZT7V1D3QNCI0gvYLWToPtvvW79Xl0/qBo201IVfZbzeepBPa6dn4lTnboK5g3QDnbZRBIXti6BGGIgQSU6KUC1IjJR4uRaK1wTAQnJS7TG4yn0EvnIiinqOMeMZTf7RO0Ashfp9oGm4qsIzJVplgCQFmvdB88a0AW9GQ+huTsjgjZg2QScEGgY30sqtjhUteadw8MX3fVO05XZcBrw8aP69hRCFR2D+EzRbi6Q/uoRCjD9gDCpM5nZyuHSNxGowUCk8zTMsZ1SeF+ANI12D6gEN6QJZs8fB6I2a95LPVxpo040ZZcdZ5COzu1HW6N8zMVOumrrJYeAULHWniMW+oz9GELV3p4dTy0/60sk1xK8F+Pe+rwELG+0v/7L9A+pqgju7yPW7CgMCbI+W7a0ij3/VHiTSya8l9KGsNDn4mLWtYo2FObIDrnIfSTinX1iSBm4xKJGi3bODJp7HZkRlI0buLZBQny+C5ky2zCkbcbMKPEMTa4GFowWcOEvflYVrH/5s/kmLVeZY/I1gQEoDgbDCooJlMBcIWzi05q0wG3lXtypDosEZjKya5l41KEQJy/eQr44+uzHl3hkq7spSL8dn3fdYhe89VTq2LEYUTbP0ApvdW5m7zy6k5nl8B75tDGQSHV0eOyXFFd5Z7ZX2PXWkZDQR3BbVtxtv/WusxFRG93SKeOj7SpjJceeR60a6hionHTH+8mnzf8R3hCmn5Jm/MhHnAjLhGIphEQL1Z2Xqeq+zPvPCAFiWBZTqjZYiLOqVnyUklZUouAqQwPrI6oOrb9bOGRw65qL8RYGgnQBhYO2NTaJttFPEOnLmOli1HGA4lHGbNLqZJb1ripTI1Ws4irwIba4mtdObGC1Tbe8Mrn1StTEm3wLBzREXCaOWcg6I+iGQm5SCdZ9m9syTX+VJinP5HPWZpbdn8mHaadwm5fqYCGXvgbFU9UWr5im7VChoy11pThkuWvmAZXPFmWMexVckgmOuvk5GU4+r3zMpbvLMgRBb7+idrA7fipkWEXpYZWCUXF3koFP0OiXKK0U6mubujAucrMJC29+EDwsTHrlKPb32wqDnFTqFqO/lyi+VkkPZ0maSNYER02d7Fsrwz5oNu/KiCsig4TvBQKmsLQSLg3w6cmyO9fmIhphI66Omf7bgWEgql51yGsd9Ba/qpLcfzAOI96SzHzyRywImYT0Mr6SVmgFPDN68niJY+6rsNqzTSLUVSyQLnikVAuDs3l/b4BuCXKYEbAz9Fl1w+HDgWanvT2H6Ikzb9aJnUUSvVLSIcftpis80z40gCJeVNHvTe1t9fU/LLQhurfxaS+XGYkHl3L4XT0KjZK3g1wlL9z05bttFLcExcQDQSCCvEFZmG64Ktk+VAdou6uewoiBl2SGiKVkeo3N2Ba823SBFd99eOHxHc/0VtfQdEBdu7dnzXEc7gRuyUNPYpK1+Yb9T9srqKr1utao7QwiGE3M5kVY0r9ER03v6bRzea/V4yDl3Smaw1hzzNHqwcrxBI3X4I5a0ncz+Y9BRz+v/tiSP5a6SX4i5C7Rir2V1Pp1AItLjwWbo6YGPG/h7C2FdePR4eKQ93skLGi03OJjDL79ZTQ7EyXXimMXwPPC2QzymQvz41SUDVrd2cgJAQzsJqjQyy3dfA1e2IhNfwkmj98Br/0RxEVp5PSGcyqr2pRM6doLDROBKPY7IjgiH42sKnUtnHqAW9wU0J24SNgXCLALlEDTmtI+iaKW9LC5v3cW8Xd9GGuIwSG1khiATA3+Fkfbmclf8UBCs96VfFB4Vrfk761Dwov6d5rHJ491N5nRYh61ItDXYt0/hZaHtzpG+O5OPLG6nOn8yxuMjBY1OAo7JeB+Nws/scWJzFZHiJ6gwbK4ZekbvntnJ4W2e9q4d8xE3MkugSanqPCtjDkcJyXsqCtzMjSUt1uRBKEhvRN6XfFr4PL5YZx0A0CNFvJtmODTNuVVRrmzCwZvXKhNXv0msWbXakKUVDLEjZrC5YI2r2XbvI8XueXIziDqUe+4W+wjAhWv0vW6tp5AuaBOzunZNLj8px+XZpiaqFpVrRcfNVlRRZ1JsYlatutHa1Hi96tsEERxq5G4lPFhu+3SLpnT+NfO7PNoIJ2+IhQANb11NN3E1R/dPsajktTD5qLF77bz8WJKsIzi6HLh9OsbthAFgEUh2f4MIF8ufgLJ+4HhhtZVqmSmU7/sJEPfVfFeYR1nKfpmFZun4NSzYHrRWwLXHVkzhIPG/JvDzhYntaO8+ZfzaJJO1kNFzYD45p9FVIUIkMlxdexHPQxUIBYfYJu9HMFcVhdeyLDUbxxnJjzaxVV1vmH5WxpeEFyXdPQVT7LO1npsJB15xZ/ZzfYfyR/vcRluCwVcnFr+3PmpVUTtXJdUUHtONqrbfKUum2KRaKIU/d0WA0/T1ljaSPJZGaLt1s4fq2OddEbzNZ/m+j+qu3NEMzKivWBJxSo80ujXN/EtP2s8KtSO29mVcVfTBMs2FxErcvftFkPYCoy9LrObR2kMsEGNC8G6mHOt7DnyttOVdMs81aQk0DtbrlLsry3eau0h+bmjcRzpRXSwhKspnuzHyOph3lFyRmSTcE+5T1wfgzAL5DFxNf5vGT8G6KGsU0kb79FYEFJdSHnM54ZQ6iVA+iEsDpLzxESRwt1dKEc582oD9QkEjjpJSaKZc+6rEkZsZBGc7oUTc2I6YOly1dSCY2XRDS+Kzg+t0Oa4+xO1RnNFuVspahncJyWQibwurai1FUv9sBhTrnKZxOA13ltswGu4cHxbLgez9AEKWAVrEkeBbLcqQKQWU0MleBy/Pc/N7UF/Fqew1EOJ1Js9OiEKwt+K0MsAYYdu/bToY05otNBNRv4F/ko6T3+MwYCtq5U/oher4POUq+HsGLNwABI0e9iGizIBXKvQ6JXZjgQGJOGRbW0TXBeq9xsrc1X3ixkQZv+R29Ftf6M1nbo2xhEQDss8IXLV/b5H4cshd/uOER8GVXfip1bdA3He2aTO4oITT0g77WIXRft560FIgyOUcLJ070gTdJgsvsJU4HDlW+eiyDyQkor9SXjFkEjc4urwtUyt9ZIgzIt++GkSTECkvBbtFVukACwm0m8XCxJLuEG1AFvTJmK3ROOmzLfRWWZsTRNZ3wrw9g2adsADADSMaeBUiNGRSnvX4lx3rZVKpltzkN9RLH5B1mpZh5cvGMxoHbQAA2xrJHHnfPwN3B7k+mE5EUl7ks5P/7RmM07y3Fpo3gQBKNfqH1rON0TeGJBVT867LK3NjUI4RO5pyKs3PW9ILBRbBUJlu8ox+pQw3OUQDN3eQCRZhroUWbYCU3bXuLGK9uKq816JNiDUurOheMjpSoeD/Zg3TQZU+TIbTDtgtFNJywunuDneP70D5r+CnT6CFsTBhybYwdQGDuASoUS63AF3ypTCPzDZjGNVUYuVFZm20LMwmozBIDWlr52TTbvF5WwLUyW81HRUGY1KVg/YoatNt0oM3hcl5MACCBcjsZO6OIj0j98/cry6B6/X4kCcWADt63OJSW8p3o6SrOyqkob4cbn9yuP1trT6zNqTdrYJCetWjWVJ+HUbSFsZxUa13u369RH4ZvtVvadBkqVzP6FmrjqqOS6ag9FJyjaBE6yZgScjMdV9BezWZo9X6Q6PN2MrxZ2OxvxPaKW5DrDwDdo/8nyUzoUqEsA9AmqK3qJGVtyykdyebBJdGWUJvzDsSiBYCSK0Cw5VqWGoVCINDKc2NRfVMpGKlbKjC0gIt5AjX2S0UFkpY0gnL+Qw6n0F0xpIYiRNO4lKC9ZXsGmVm4EKgywWXJzlXhcuuXhEKhLrYyoD2td8K7wmEldEHLR9G6JKu5IzdZcUNVTIvKjqg9pcP/xPubAZBgzcNmFptz6TOIgTMnmpKK1N6SzOvFYUmx+prgeOCOucCD3hIKNAXM0mognHG4YRBW8+ou4n9e3snZwd1SgIG2nzzXtGSG7S80gEZ2sFklVHohGkthY1WWyh9T6EceHIKKFP4Op/gLWdqa2TD3aeZMI32bC/7VmdJApJqJdQpPBrvr+WR9kdu0hEI2Skmo3kY+3nUJ8bshSnbuHmBYO/EomjXFpIICoJdU+tZSJj7ntf0WkywBqqAEGYvp9UOdzH7/ndpsrqUAvOr1Xr351Lxx3SejWC3UDilE5bTGaeHB9DlHvT0hDMBCxPOnKLGT6bzg4Hl6QlPnz6Vjrrk6nIoR/TK9YpEqa4wxBMVa4v1G4uFAeNj1LyvvQOKOaHasDJsKd2iADRpi0HLFIwM7SHXieQnR7Nxzi/UCvZDHzeV9078NXPEkeAOTbRnmF5r2w/JZ6LYdvcRX4VKhHgpdgP67xasx2745BgV8j1TnrWuLGFCPBYMnmF0I+o0W7KWN/m7RwAIub5IOZdjqDEiqTqeLJEqjqEw6sR3DHhU1aDIORiD1nvtm/RxzID+jLL6JRcGn6obKjXzyWqjQGBl2KhaBXZU+pIIesyVEwwjoeDdx+Fd8mNZTyjVcFTS/D5EVRhmvEyHsFBx46Sl5q1pTSFxNTHU2rGD+uu/TljI9crC3MU9lagcayHHYPt1l9J9XqCkes2nKBM9TaIebMlYAJwAAlLK2GMsCxyyFE7LguV8D7q/Q1o+4kyXYv7Y1dX1vlLCApRDnMB4+pTwdCr5P/78M/LlUk6nJaor6X76lwPPlGhF7WbZ/i5//QwIoXCaZJw25IMtfO3dFDZLe4zJzrRYX64JmaKUcfd8k2OEbottOKJBlKIco6z+rHHY62AR1eGt4bTtqwahzNVY7haajWl6gTfarDazFMwdp6JMyxVWPI8Gn4FpiABqH6AT6ErbKhtdPYLvoOuuB2OMPujDrIeeAbfrHS36xHlqqTrW5pRFAFxdHyFjZbwzaaU4uOfdV6fkkeEbXEQoh3gXhszlGIiazvv7TTiVe5H1LuRBA4kQvRUi3tnh2+Cih9yJMCDjlQE4tkPPMuqPbVUvCXMClmql0qUo2+lU/NA7CWj/mgIRUlqwnE6g0wLCgkWOeEUC1QVoylXKgpCWpIJfdLHL08dCGLUP5Po/IE5ole7lRW2OVwW3mX1Mu/5K+OU8ht9wbIVDk3KXD9nyz+qx8pze1SjVtQ/YnowrgQoQnaz12VW7RkOVs/w8fsXyz0CgYsTA50y9VG8sdRTKuNU+v06jeDltbcv9NCjRCQQy4dg1V7WeUQldSgQ8rwFTu0blzKwee8/xGXsRul6t5qyChmA0pAw0ILFDKKy8s3uRo1DQKnRFWgSE1SoeA59XrISSTn64Bir4kYtCCqG81oUlPLBRaJqSSMuaCQWXmgAgu/JbXOewP/poWbCcz7h/fEC+nECUcEqn6udKSLSUypmRKGGhBadlATPw6dOCT5+e8PTxAs5PeFoSPtWGPNFT7QEGXypjAOOUltIIPQ9qoF1cDcfztoxmfWPY9biZ0GH3u75rtZVdBWrBaAXWa47ZF9yyqAN5FG/p+voKgfBS4MVv2ZDVsn/HoVgOxW53BGf4sNAw7tzbL73MmTFW6NHKahUNGUYrjCsuDFWNE0g3tc4gukuBJVVXcy6dwtWMYEYNCBi4RFaaZOqS06rhNHDh8rB7EUg5cl07cIyZYJp8Sm7h2c1Js3Crdl4lm7XVjv5giEKdypHYdUw9s16NCnICTb4nPYujv0RMNtoVJcnn2a/c7BYK3rcmeC6LHPN6cgsmXARCWrCksvqdqMTjJhD44R5PS7EyLk9PuDyd8HR5Qr5kXPji1gSasL1WIG+2rydyU1vsHVeVpb+6bszwW6umd68Lga4Pwp5jAIR2hdhazSwuhc7x9v1VDr27XmitWVO7wbkER0ucrcbfskC/8akwLxuTkftoBM/dHLiam2SFQC45IeSQR6V8JUnSnwLhOpaBnmFu0slYdO0TQpW5XJUEtRzaCRbzB9HEqC6oEqE/U1Vs3ErrbQ3Q0TjMijJXXisYVuhN89icEWe2nIZamhcXk0Xt9gu4UAFR+wn21/W/n40hbKq+l1cMrReIlmmh10opVFdwuvGsHhhtCzW8plcPdA3cCR6u1LgHDm1eC0KLgOUkFsK5MH0ClgU4pwXndEaqMXKnJWGp54QnAJenCz6dzrg8PSE/PeGnn3/C5ekC5hrexlC/mVgO/rhmpQNDDt2o1A7q3zfpJBY+bHyaCYRWE23TyiCkoStjVGaHMfnDAz0BFBzNWBq0dxYWVIUCc1aNWy4S2WBvfVH+uODa/lGt4/UWdRhMF387gcA8qaHWzVUjcwJhZC2M8JnLBQ7DKgwgYkGDG7nEoWcTM4vFMKpG81d6cQoHCzMQ7hTIjMbfR+3o6qwCgchtfpJ6jNFJuK0VYwxJ1vYKIyPQRLvPYt2XRtVQ9cr2KRTdMKx9zEt1naYLdEG3Lv0qmatANMYvyqq8IxEMqaw/+NUlP798lS1f0MNSIXXIvI4CgYjq/eipBtz0rj1vSagri6wczwtDr2l7ivWQMwO0Y3cjDgiFOwB3DJxRogUoEe7PDErFfFpSMVFOS7kbtMT91oY+XXBKQDovoBNweVpA5wXIGZwz0s8nPH16wunnX6r1kJ05WQcjMfjpUudrlZx6tdAWY6PJdw8bhMh14FWrGUnpuvLf7ugaFTdd/DQm1vpJq0mjLGq0UDvHHWj7aq/CHwg1Swdcay0w/EKztMO7h44ec+AMoWe4j3j41f9QTbdjYn1ZBNuYuEWe3kUICJPx4yOneBonUOo70kTPiCHltcqSiQnPAn0T5OgGZrMSWjeSlBzorrbLkPfuE1aLYWLbDZ/otg4yvKlaBUhRIAiTL4vK5WHYUEaoLqOZmCvYaU1OqEtIQjxAXFBLKnCGJbJs1By0Wq2ZxXZE0wXN6nYYSfbuHDDK2kK+vfsogbEQ40SESwLSQjidihgsQiEhpWIpSIhVYZJc1xmKBn3KqFfLlY1tyIwLclmUBuPpY0JKT/j08cldJyczxHd4auwD0jfyy1KTS9H2fPXUh/JXgHvNoCtv50T1k17AGZqaRpiEuZKkfXsr8gxEtNG+7jmYpiLlFG3Y99mc8/XHODhtVKdTTNvuQu8YoMefodZCV19T7rbbaNAfDS5TwxRQzd5rsFs1RmqVsW6YbMMznFK/Xq53tWnato2tYJA0SR+TIKaVlxfqPhoIBcGPon+oziFXJ4mip7NxgN96LwaB6VzdWm0VqmZ/kT4LAln+XN96d42eRaDvKL4baAJBIAQC8gPYCxObd7buQ4IcRaWwo2txR0Esvv3aw6FjLmgBzveEcz4h5RMe7gBeFlzSWd1DJ4m1FfeHmDbM4AW4X87IGbhccr2FjJHOCflywf39PZ5++Yinj5/wl7/8FZenCy5AiYumEq5au8YRz5hYZt0+I632XT80+0Bi6NsybgEqGGZ4rfCzXbt6p/UKeamHszJ0PtY5ANoM8YiTNST2PX/uesdoah4Cr3kCZXJSO/EjiJEUZCeXHbWliKhCe948s0aistT2efl3q6+o/U5UL8IRZlrKzvq9yZ+KUOK698i7T8i7a+1hYHSG3fgoaa0nWNT9pzFU55PveejEdVOT6nEVfeiouvgaXCJOLd7BZGq++/rdsvYQ73l9Xm8aRbzOYP9C8wOwPBDu3i04pTOWyx0e7hJyWvC0nEFVKJxJW1MZJINoKYydAb6U7ezp6YKcGfmSccYZ+ankX4hwSgkfP/2Cp08JlyfC06cnAIycZOOLMCSV6+P2sh5bVf7S6HTIOtjsTlKvfoKx7PbE3Y5SEQheq93LXITkuH3CXuJXwYAy5HkPA2wYzSoOW1p0lXd+S534A7ayygI3AboOIBZHKWaOnIhYbyXJb/WqVfz3LOBvQVdCQToMNXfaYP1dNTmqC7Es5n+NwR+FM0uQg66LUNn5H489KBKABxatMOyo8ZJ/2TSwuDizHJfA1qex0LZjWp93oX87/I5CWqgC4+3fQjvJVaJd63BtWSb06QjEJKloaOSRMVXHlmpSdhw/pvP1e0R660B6wff1yNJh94eAq+HQjqsXmpAj51wfedqLSkdbyiLl73T57ncfPQKnd4T7DwvuT2ecL/d4pBOeUkJaFiAtSIlwV82WnAB+KsSeUiX4jKIW5XIH8dPlAqSyW5pPCacl4ZIW5NMJn55+wafTEz79QrrYSJmqcPHsulBAjCevneOsuUKIY42maDP+t+tY55aQYbJFowmTcRrdHs3VLCuppSkqzFXDtdP+NauXBPUVr2tboyk4QHT6auSeESbdRgXZcux2mJzy484igB1tgTgpIsqjydOniXg4whFoncxtUWQRLI7Lmk/YhTkWbln3vTIjJcYl5xpkYUwlJTtkTSKsLpfIBFzrnH/e193gWfvrkrmsOzLQaugtaN+QjYdvs/K0gVDJROUMNJjKw6iKN6MIKCkgQXdLEyEocNveXcFRBDNk7xnMbVSZqwqRwulJLtjxUsBer1ZsC9Hy7wjRRij4qW7MaZBH1keqoqDnMNUF9MGQEazfpNgTMWb76kewWyh8/LjgcrkHLd+BTz8gU8YT/gJOAC31EBQCLolkrMvIZ6dhJYBzCVDLSdh07Y9U1xzSgnzKeLq8w/LLx5KeWbWmnC+4fLpUlTVhEdHPdlxEe/F3P8MnMMjGEiVTs7Mey0FAE2ioQipo5+OBsIiCHq+ocLESZlHKFZG+Ra1kC79yIN8eZgQjeJY/uVdWxOTshFa5hBwALpeLc0Ex9CC7fTQKQaAwJBM+aal7WSqTK4ezlQW1dl/D/hBUpxGskE1ZsDSNTxcshaLl6Mzab4s7hK0WoEqLDGtOAGcT+0vNy67LluGBedpFzfe2gw3fEgyylH6qgqLXM62tPgTbLr53drhqsG1ecR7Jr7IWFc4HywzkWkftOj1DzaE+mUmO15bUGpIqzB1Cv575a+7BXx14FSCDfnS4RT+F75v6RFzpai16eiSTY934oQis5NJA3F+kp8Ca0loOCdJjRVNCQi79n/dPt91C4Ye//oI//+Un/P0//hV/eEi4u3tAfvprZeakktl6SjoBarnkzNWcLgiLQGAUoqDKMBIIp/MJOWcspwWnfIKYzpdL1ZC5CIJESb/3ceqisttkGAL5UE8gUiDrRyi5sUoMMgY+qg7aDXA+7Mw++zqC1dKNsk+v6lz917lfJujZe0sQCTVOqtkmvqIRF6FQzsZJzmrwWM1h1Ddh8ZmEKdfd9JQhB7yMrJNR+eNO0H+cWyOmtY1OppKJ+8iSlocqTCWNZwYozLEc+SKbwdxqWafpj5mT4TX+PgQiM2hUi5tJwarnO/cRBXzmsVj+BFHD2s6HgutDeBR2y3Cb223opo4QuWdhnrXno1l7/TAG3CW/tqSmb6W9y2g4+AXjOMc0YsrjEPC2svxCut87pW2p81SixGxe7OvU3ULhv/qv/yXo0w/4/SPwv/vf/Cf4m//x3+GHf/xL0QSWBcuitg3EO5fk6FmIG4mLNsRlLUH9qE9PQM7IHy8oZiTh7v4OIMLl6YJlIVzOC375hXC5XEBLAtekJzqX+jJUSwRVjbGm2QLfkZGPRMZqzGK9UBp8uzWwsxTmwqFiQY7B7bSaPPF6JiiRDPO6C6SUcDqdiiCnC3LO1WJoras1HMYCRz5TWorwWU5IOYMuOVglOedNi2EmHPwGOaouBp9ejjs2geCZnyg+pumZpeDrK+274IJEpEqTCUMrl4H5XQqD51EbbdtW5QADZU8NylzBfDydgWqMKbRkLBgYRXhzXd/T441EheciMZm58K5GRlg5BYlulzWRi26KzF+ZqbPafFusZOrqa2pu2logdekovBdIKZU7mRerPHVj053maDQkioVYDe58bx8aX+QcFyvQDRgzcGHCZee8239HMwP/7h/+gv/7f/Zf4p/9k9/hp1+e8B/98z+A+BP48guYcr3mLukiXOL6d6qCIBeJKKGImeuJqamGly4lwojBZSItCee7M2T70olPoEvpFC5rzzgvd1UjSMi5LF7TR8LlkpFT1r6WaInWbWPynXRGiEYrR3vLMyBjeNqCg5lAGLuJWlzmk7hj9PJkOIvbcsz8HL/3QgDwggBA2a2e6jG/lT1dLheXl8L3ZVlwOp1UKFAmtfRMK23rlzotplu0/Zy5LlRH99GyLFUhOYFyhmzOyZeL00QdI08JPWNGGGPRMAXKhC6bL9uu80cXG/6AEJ0yA0r1JE7ng69Q9hRV/JbUjKcpWoxqVU/dkQU5bRuN6SkITG/+yllkFNNpPogwqPWEd8JY7alfT6PK4ZLLYRv/yHIvY1tIAlZKOwenCsuaCBmOJD54ERxOYLRAcggnfP4mjcyLxrrw6ZIrwOQegRaqQsErEva9wII6SUwVde0Ry9sOw5PBikoei3uGbT99pgQ+3SPTPnZ/YEcz4e//8a/44z/8I/75P/unuPCC/+hf/CdI+AVPP/09gMKlZVIz1YPxmHBKpAIhJa7aEcqdCmAVCrzUiBouh+klTjjdnXDJF2TOWLAgLYSFEnICkAl3p7vSYZSQL6IZMi5PGU90UdPJCHYsGAhGeFwHxp3ui5wvsC3pkmvcT74u+ZgJhVYgCHF7F0Yt2JfoHw1gIBTgCXgssEy7Il0PIIhPszBhAoMzqVXWtitVBiqCwQuFy6VuPlT/JkM2o5jLaanMu5R3uWQQFZNP1oqk35ZTCXI4nRbQpbiQONcwt0tvIdiib3JStT9XiZp85S4RubBEMO8tmNbdI0KoaHhxvJU0LqVMIu+r1xIgrFSuVVlboyKfX5UAz6jFpVYtd7a9iLvACzSWMn1XekHMujistF3pWhaSCz8jdXYSTU6lzUajQ/ewlu1onPwzt9BMNr9jXzPEX08QgS+06Rg0RIzF/iURiip8pM3JafhR4HT0wNnN94ZOyIRCltD8hg8JVpwzWNYSiIC0IC/3uCznvm8HcGCfQjE+liXh//r/+M/wX/zX/wp/+O07/M/+w7/Bf/w//af48c//HpdPv2BJS9nHTOWu0QRCypWZoix3lsUmgC+MiywK56LtJwBMhPP9GalseigazUJIlwTOjHwuriHihHO6x5LKWUtcNcplSXh6uuDp01PZC1EZtSrcDYERABIKzhlZJo+f4RfUReeLY4YN84dn6gZh8J0aEIjH56VUrZTK5PyaQkG8NIMjI48QNQhl9sq4PPOQdSEK5Smhu4tJEgiUFjBfQFSYdqwDQN3cmE7lbJzEqWjBhHIw4uUJ+cLgJ3NFSb3LUmgMKH0tkHOJxrlcStDBshRLsvydqmaYkfMFIODEGWWJ0yYQJdlkWRFlw7sInYzcWDGLaGfJ+sRCciNTEsaBeu79cjJLQYRJp4EmxjhUsChYQHUb1Dkz4pk9FbY/aol13S3noqmzo2EWBiIaPrWVUaA9FhoxXaqDck9CqU8YLteS9EIdjrRL6MsjZ0CVYJPenoiM2PvjTSn09xWUetwaCQ3GZvTM90l1Sy1p0Tkl86tYBXVWV2GQFiEQVoUB2l4TlqHKKlD0gD8U5UGVKtdvwuM4MS6c8Ut+wul0xv37R/zn//KP+O/++BP+t9iGA0KBFds//eUH5Jzxn/9//lvcnS74D/9HHwBKWE7nYIISSBmXECH7d/U/TtX8W0g1x8R1kXIpDGXJC0AA5wyiVKKemHCicvDeaTmpUDg9nf7/7b1nrK3ZeR72vGt9+5x778xwhjMaDjkUqULJEkUVS4oky5JthW6yYSuK4/IjCYIE+WsEBoIASYAEAQIkP5wgcBKnOHECN1hyLNuSZTWqWI1iHw6n93Zn7tw6t56yv7Xe/Hjr+vY+t4xIcUieNbhzztn7+1Z511pvLwpAUVkJvi9BFHxFCaiGfIWVEG5CD62I7kUOdyFN9y2rWPoA2eEfPqOSfo9flsg8I2dmQu92MbdwRwmhbSvjN3AQHJfE/OVtIk4AKMYOUZxiPQnz2JgADeo0e8770ZQBsL0sspfEBcQ9bIQc78kFIL388h71gOlyvsaJAyI6lyp5hEgzXHZDbmTcGqlONohCgboYF0JZILkYw0BmgBh5zczwoYT+N1f6sv6GfWHbk0XjRGj0rPQ0oNERWr7kE9/SJ+DEpRChk0gLnPpkMuSyBfEyD+ksCMh23nF8e4bMFhIJ6TwJiO575r9Yiw4Nq2JK32dXzDSX4TyPsLMn/X7lufp5jfkqZR/6dADlUe0dU1MhxizqSOPV9dS+lOeb5xIwoLH/xKhB4Rg5qxKc4WQFFmFedybMINy4scYrZ6/i+TNXcTvt9olCEU/XxiJOX9s7xP/70x/DSy9/C951Yo3v/PAHcd89d2P/xjWAhBMp3delwJYD2SH6Uy4VXKSuM5ptWgVqUYciAs0zppVUEKpc3e0QM4AGrGiFWitW00o4vdbRuaHNBaWSeivFRT/SRqzUg7mjKFGgFh4zzBDkhMy5L4gCsycBzC0jk4wcBo8FxIEShAggE7WhQxtPuI/MqQzf6zPMKp850rZ/xRHx0o6w0ZSi2sWuUwUlNdLyUlEVFaCkT5fvSy0oXetsAKLiSYWTqEDUTqsJZmSmWX5WLhLisuASidSzZ5JL2HoFyJ4PJC99i2RREhZm7mBNb40uNYcpqalk3qKqcs4ucdeUL7FOyIhBrUnCchgXHVfPMRHqVrY+ERNDDr79Or8tZ3l5VtwF2PdGMFS3zJ5V3pHzFnYTOfdt7IsMg0fvpHEGTtwXe4NCsO12BAz4eypyxB2jLZJC/mzr8VwSBCEsMvzIUMjPJbI3WMsgxSqcpbEyYV9+5ufJGAsSxwKf7DKYbss9Wyq07F6iUqrhrH1tBB3G/0ULQ0CpuPeBu/DG+Rv4vS+8gV/53Kt46vRb24C30W7f0NzVEsUAk+j+18x4+qU38Y9/7jP4ifUOPvSN78MH3/ducD9EX++jTlLaripHRJ3BhQHuWPcZnQHudqsVWAzRIXbRia12NVq6VbTW0FvHPIuOmQp5QBqrYakQoa5kU0tVN1iw/kQYOw34ehq76byoik6uM4qqnkzCYC7gXQ0cSaksPHJb7SGbh1qeNTWA6E7tuyWk5QB0NgQmiEvKOoZKiCBIYZoqaq1iCCVTVUi/FgzlUbBs6hqZQ50m4d4nQVZZLHX9M0M8xfR9SzZiealKDS90tlNaYoLiYqkSVgVKJ1RzIbagRgQHxCqSU421CCPRgcYSEe/P9vSP9D3JL1oaUCaFVmfJyzURVitRN5lRt/WOeb2WYC4ShRMp4jPutlS4usouNKMAXNOuDVsYhED3v1Q938aFs+jzmQm1yDV0fTmP/UTwUqhw/BlnduxsEFwFpJ+H2smQfhH4FvZnLYEMA6JyRXoeYtMwSSH2G05AVPEfMLB5qR3RPzQ8aWkXWO8YxV0iHkYYJIUkzMOYFBM5KPftnH56EYH42RgRkO+1vUua6j8wNPu+2+cmQRciTLUuGK7EaIHiTLvUaHNmv1e0gTSAOINdXPhJnC0wHQBo4HU6KlT1NcLq5F2gaRevnV3jiVev45cffwOvXTnAunzRDc0abgghCIYSX3n9It448xY+8MEPoUzvwgc++D6Utgdez6gTYSJCRUfpQGEpqtOZwHMDq64WlfRMFcv1hDILdplWShR6Ba3XaHNHM3VIh5b/lI2zzSqT6nQLoWt2wK6eRINXRDCpaHMg7q7urWj5qhsCEJCV1E9Xdp6YxTjtl0q2STYtkEohS5V7FKwNWQpR6L2h9dkRtROZTBRqFS8XK+RBisyZI9sss+jcIdzQappQp6pENOZlXCwrUWm65wa7bpepCKwt4lyxe1AsCkJBRRA9daB0tQ0VUkFBEDxIa3YX8z4TlWEnRmkKM+WWOBGRTs2jx4p6sJQJIJUUOgFUGGUiTDtimDYj+Dw3dDTw3A2f+vwFscvFrJUxTXI+ig5ypNTpbrvBrRpRAIJpEGmIUCE2JMDoNkc/hhgKPO4nvLgwnOe8gK6R/1EnhLz/WjTokBUtsRBSOybdunHGh9XWl5YHn4Ii6SUwgoWhyhuwkgBI7V9jM9jnMDJu8J7s9/HnqF5Zqusyrcq3kn0h+dmlus8I2SjtkauMCkGIQoGcWycyMorF6vhn/p35VAbzNbREFKBERBx1AJoOAG7gpgoOAKgTCITaC3Z3VqDVSbx69jqefPUaPvHCeZSyQqGbRD6mdvu5jxxE7Idh0o09YOBf/upv4/FnnsO73/NX8d4H7sKD9z6AjgM06tipHVPvqJ1xUIDKTQCKgk6MWiGZVLt4KxED3FdSeKc0FK6YmDHtVMxzQ6kF7VAK8xjnCArf39VOBfcCbl0M28zoXFzV4amtnVNhVOMkRBEtHjOUYzEDuRN0js7JdMUDjLbujozjsCpnXqsfquoXOFq62oKEe5c5dOGwWb0TIoVuBImtppX6w8fGN2pOEIsibTPsEwRxlgmoqxrcjUWWdsgNZcu5VDzWoHUO7kkRTKRCCG8b5/x1wFILKsRIzSBNsyBES7hgRscsKiBL8VBYCqhXYQDqVL0/JkaHEBJiEm6qqM/ORJhYxMXWxGA8rQirnYqdnRWKqrXKVECV0eYibszc0Lg5YS0JzmTcfgVgzIjtWeKSXb2jHGchM27rLhtO71ZDxGJ2/EgOenZDEHksFwwSk+BwYTG6ZyOw8cdEyoD5Z3JGzXAsz3f3ELOezZ5h5M6IR/QzHuQlGqfFI7akLBEA5K4BtFgvkDILqJQgMCKX6JZ2BfmDx5/WQSIIo2rH7nhMmtNz5rlmREISM3BC4roOZVKsP5eWnSBkGGzacIwAFWUGrKIawChc/fzNvWHW+JZp5yR2770fr1w4wOkLZ/F3f/ERnLl8A7vqsXQ7Kf2BOyIKWes1biXAOH/pKmoteOSxF/Dhb30/3nXP+1HrCrV0oDQQGgpJkA6py6lQ0AI0UccUNfRR18uvB1w8iBhMFRMIvGKgqwqnB4KEMamKTAAZCwyQ5lvqduI4LYUBVOVbSFRSXRF/IgcqLoYG2DdSbzJ1UtGbvJ6F+/eT6Jhhc90SQZqPrdSxLphQ0IsQS+biyIJA0bdy7Dm1ROYC0YGiGIKpKPPDLuK6odoMYSyGdQlD173Wn+byK8DWy8gIEV8JhXE36QCpkb4IwrLALiInHDbfjg6yhG2a+8XmaYZkk0J8jQA8Pwz0wlZL1la8HKK4sRYvk8ksz/JUbElCpHQtThRs38yDheJkDL/7ieHhPZsXGycJgF1CsL219RiRJYRrJDbG3IZt3RDr3y0fiB+hksnYnbw6gIcZEsFTPxiMMuJdtGFaw6EejkNIGfa1qrpo+fBIftMI27yHDGabhMEQsk8qIfJMGOxhg/3ozaT/SjBnoHg+Syz2kym8r/J8bF3LsL+BOHn3HHDRJVhyUbDY4pgqrq8nvHj2Ip569SJev3QNV/fXike7S2a3anfmfRTTBsBoDC2/Sbhy4xDXT1/A//b//HP8xR//o3jfw+/Bw/efxM6KwNiXC8YAUUMBYVUqeiNw6+BZTkbpQDVJgTuoyQ6YVxFxQa9SqaigoNGMuc8LKm2qHVKNF6lLHEwShEIp1sIAked6FLVWpzCswSh3QS3q66v6eaP5Vhuimv5euQOQ+tNrLEX2dFiyWHaHGVAiwICqZzKSN5tA1l2GT3zydGpiCKZutWZZJQ6RQsgMV8W4bHItWRMdGtA6ShMPMWZC56Zso6w7B4RlDyZzv3OEz2YDEo4dVNAaeeCWICEJImpdEiVWrdSFApRJ3mFjFMy+wVLGtSr6t8ta2VyfixuYV7sTplVFnexyCVzLREArqJXQmUZDs8M6MR9Fg4m2YEXSq+v/0rnMWw8ATAXMqvJiW5ep76zDzaA5/5gttRg5jGFnRN04M6kaiYsS8s1jGLxSmq+l4LCFkD8XnL1JOcsej0JFfl/9ve10DNqlIdrGeX82f968xdyWe5QRujM4iSERIm/3haLCW7IVZFfT8HzKsDPUHJDnYQ02fhlVWUqIqunxGtDWTXw1QDh14gRutBVeOrfGv/r0K/jdJ17F4TyjgzEz0DgxsbdodyAppMpY9kux2E2WaERivHV1D5/6/LNgFPx7f+nH8I0PP4AT0y6YgdYb6u6EFQmy6gWWtkiLqyX1EXdBGkWNxb2gdSEUTCyIigumQ/PlNgLM4UMNSaAX4THsydyY7Poqcquklyy8aTp3vxnhqRMRjebn3btSe2L0IgWDOqUoyUoa1FUdqRiSz4xLcJAK58EAZSd2JApIhynQg3HAJqFoJDIlYtPZJYs6VSUuMjHWDk166NTU6wuuO+2cDquub6oTjJv1tBA2+xIHvSs8nWEj3SdDvu5iy7DU09OqgmtBUVULeCHpFIBLZP2iSqg0SawLxJd8tbtCXVXZn2aR86yxF3qOWJgXUys6G6HzEROzOFBMtRzBCAtnbeQu9mezSb817FNNd8CNs/llsoNjTL1KgCYhxFno3dR+XZF4h/hxy2Xz3jcWoGPQ+BHZqswQx4g6CgPCyYTGqNJSpDEith1yND42iDXMcoeFQU4IXtcaMBjhvgT/QLiZNVo/pitnWO+9Bx4GXiGUgapku4aMG3sRCnd2xsUJLycioXC2ILXsRUW1oKqdtKid7wANZXcHdVrh2mHF8+eu459+4lk89foF7M0NDNmj21MaRbuzIjtIBIHgyE0Ci2RpN/YP8dyLb+DSWzfwJ374D+OB++7FPfeuwBADsyBHxlTFntAVcoSQEqgDcy/hyqXFeNCgLlkFtC4orYfvr3L1S04j0H76wLk5w2pANY6sCTFwxGZSM5kqIPSX1ncxqYTh72QR2PTRZfBe4WQETvNVpOpKY7ZzRz6P8GbKrpXBkcMQ9sAdWsCVEgXWaniWisES2DHHHSRRvzF3DUCk8CxK3ZOqdcw24UhrMe8hpw+J+qa1JrBYh0rJkTxMbC+opDYAjV3Im+qEljKyLBIYBomOLkVcXcW1FAF3srNrFFnVSj0cExKQtW+VRupoNF62DY+S5fdEjhg9/YsS5rLhbypzNAnJh2OD04h0vfzi8gKkz/J9NqGYYN5KOR5Axyfzg2c/CukTw48Y1RTpXG58vomqwx6zuMRDb/pzoGwDdvI12c90EzY6i+/J747dObI7Yv05EVDCYfcVhOURkOeDINhatjMIQb082M1jiuB3ohSgzALPXiAljlcrXLrKeOnsdfzmYy9hb+5Ysxm9bdK3qzy6E5dUJJDbOD2+6E0OSp0qru/tY29vH//r3/lpfNe3fyP+87/+7+Hu6SR2a8G6XwVDjMbNulLdXWESXXwBVjyhlY41ZlATr5OpVqARZu4oqwL0Ap4cM4nYr3MxxGGb6b7xrpS3yFTZzKLyNlXNWd8ZrafDTMFBDweDtDg7i7skqh7oHNQ1KdKcqiNfS9zWhDUMIPv50Ftqnxm3gtFgTXpobL2MZINJcKhV6l10bjJXRIlUQ+YllWcSaYLAavy3XEKuzTDdeoUYYGsRo20ilgy4dOTEm4HOFXVu6gLbUNYkBmWVNgROyo+l/EEClXDpdFAB4upsXLPts4FOYT5Nk0eaMrfITlqqE0a5w+oCzJZgL22OnpXiUaZGTDBOCOT2rI27tCAWbIZdQ8QZ4Ts3rfBPHLOPlAhuXjOD0Zqi7Sx42DvDnETqsOHE8L8Yy9UhcOYhrVaZCVICIwQZ0IjmBSYcDOk2JgPmBpvXmcAhIzFQqDthWPadQTgSg5sT6bETVinBVEYIPGEoh9SzTNOyjEF3MWtnEBdBZ7YPgAVPwhG/SSV2xuz+ghgHrYJRsHv3Xbg2Ey5fY/ydn38ML567hquHmnmChIeWUcJz9HbaHRGF/HNrIwKXAlYvlVffOI+d1YRHHn8O3/zwu/END92rLi8dUA8Pi/wTV1Q9UB1CnTm4Ycv7XtRI3VP6AWNtqQoidQl3cXHsJ7tqw6g7Rd4Zj00Qyuz6c0PUlP/pxE11ZRu7SNVtCLxo4JQZS8UrKAzDI2ZhqAIdQKiCyFg0e0wPz8B46etkeZiYRYVUlHgJK5zWAHhuFuPVOoOLIrYlq0XLf4QQsclBBVi/NFzcykV80aeC2ioYjBUmhVH0ZWNlY72DJl82sB2gJKVkolCVKEQf1EiQIJuUpMSWATAJQ6AR5SLVLfbT9L3uE49h1EQbNi7NiMRl49jjEIKZCcQZgM9qIvt9+dMbB/IXwrA4l04szP8lqbyMm9rC0UewWiZUSy59k5DZ37ykUND7kwlqWsdidDknKbaBFk+lo6OvLDiIRX/ju7GX2U7mwmS690tUMK7fVwITP8Z5pZPi44WUZERmsNVB+f0ygQHMWOH0het44dx1vHT+Gs5ePXAFwyY53Lr4re2OicJGs7GUvHX3ful49cwlXL66h//r7/9T/Ns//sfxwT//x0HTPogYrR8IxzVN4kHECkDLZ9YaCjOmVcU8B1vBRdwa+1TAc/GITAJF/nBIzWdubXSJVIMqKG+JANx8iqgA5nVTZvKKRS4qer4D0vQcrC6KUKIghMUuuKk2zENIKL4ajzvUpfMI6DKn+7kwIhtySwQOBkOo5AC7gIy6mlRSkOy0ZsgUbbN6+NQwnjaxYAkHWZVrNObPtlhtQigAVVWRIU6+I88Sczc62knmscIk7qOr4gbkOFQRr2DSkX21hBlRxzL98GD4LgUrdWdllhxLRvwtynk1Sd0OdFGX9d41ALJ7fIdzyxZQliRG69v3AwCStJC91UZOuMPSRxtvYDQ7cuAHgt1c+yaxsM8l9kRJqKk2OZ1/vTNM7JK25xpSo2bmgLu9TwXKY3jgW0iZMV+AQi2ZBI5Qnel+J6RHaa1OHBLTVArE5VxVYYNtAb+/ZoSeEr4oyr0H8tb7TBZtTIHbKfbWiUAh+Ol3ddLmuJ7iW5OMh/rK9kRgVlYn0ADstYLffuICfu2R1/DSlT3M5mHJ6jRIWad6++0ObAqGkNiRlZwDpUhdN3ae9aQwdmsBzw2PPHUaq9VncOHCHn7iJ74XDz54N0ANrTFmZuxoBPIE8nfn+dARUbhZMlAYOysCphk0dcwm8usmFgBcV2gz4ZAAzGtB0kbpDafDpBQ1GqnKhbiAaEIhsX0UdE/b7MZGThvucKkSTdvX4hwwz5DtZXDRNN4Vrm6ppYpaJhlOjQMGQQPH4C6hIEiAlxIn82zq1BaSQlzOsgpuoZoKCxDC0AnzPKshEpqXis3PTgKqCgNVff97USM/UKaC9SzBdJI+gjwVRNEMqYYXTHKwkoeC8GTuE00CC617wF7/IBCDuZJOUwXp74Fggmh6bUlVjXlNaBfviwfameTE3NEZnpLCUhsTTai9yOXyWALrG8CAhAIbCM2KE+Fr5RzwiejBUk1YP0ZSiUWa7ooUM2FQRGiI3lBiRp6OdlRqJh1LfpqaB/4+wRB5Udc9GOVWpmqkeKz3INc/CGpmHHEmEF2RZqxjMIwrxHh4IsNZpQJTiy44f9qErN9PfyKrdnQuhvhNHegI2HaDOizWhBBn0m6V8EcM0Nrxy/CAvcOAFxczIsy2Vz3e9U6DuLOWquxYg2pFKRV9dTfOXtzDz/7ec/jsixdw5sYhmCSArqsN0DmLvOjbbHdAFIbdX/yaDm6zCWmgcu84ffYydp54GXvXZ/zgD38rTt19AidP7qKjobcG7FYJTgJQFPGXWsaLTRLWUkBAVb/c2tHV3zw2WJEmMci9h9KGGKIikgyYJOmJ+9wscxeM361lkvQK3JyZCW5AfhkQMgFUm3J+wb9YSgbjssVbhwBUzb4ql8ncTY0wyGEKAmwGxvDlZqfJsefyMPn/db2TGXAlZxGJt6nGVXQlCmrcB6SQkV8+qVfABVgBEWimh65UNYBVQa7TFETBWjE4+ZwlhxYR0LskG2SWwL/czB5QVsVtDpbF1gy5shXqOaVIfNs+F+XG3YuKCYW763DN3VA424LCLEn5lAhZjMaAmPIN0XNWjDvTS8/mneY7ZOgYcOyA5Xkqicgj76ZLxnmvc9/jSUDKkRQShNyZIHGh8qQ4c8mby9+2c5k+s16MfgygMZXIgrYQLQ9uRrnx3JEteJ+RE07AyIQhiHc8ZwShltHDyPahWE5n90wKFVCxO0ZQKTWNZ/jBxOiNiWMILASgwZ4GEvI1ebaAPkuQbyHcaAVnr8345DNncfqtPVw7nFGmFQBSOmB672xHKIuTcnT7fcQpLL/jxQEHDuaOQsBurXj93EW8cfEtPPCPVvie7/pm/Pv/7o8D/QAd+yhgdY/vcT1qFderJnENXIDWAlh1NYleekdEfiuEIgdedPWli1qIu0oEitUjmEyTexOpt4nBTy5tnQjUzYtFv3JPBKcMilglkER04hUgrTrWmgdd1Uk43qkWwLxpqqZ8WBb0sRQTaV+3erhs/Sy2yS6D2TNMFKXOqL1IFUsfhOEqkcQZlUncR1d9hfVqjfV6DZrIU2FMmi5jWlkltND3yjQoXVACegf1gqKeBsSy/6wJ6cwzyKPCC4WRvpYwI5m9JXk8CNi6JmOUPTIjXS0F88wg6kqEhEDUSVz96pRVF8q56iVlMJoi5J50+AHn8T54P+qqRB0DMWG/K8HZirqIg4DUxZWKaDIneL13H3vAoX5mEEGbI/dgQoevIXRg8j/X5HF6ho05inBW5sW76Z3cf2bwb4bvN1sSf5Yv3kZH6ToonNUjTfNribGYBkZisG+5k0cmHMkgbJHKA2OGFGKyBRlbfzD8wspZxfjEhHVfC4NbK6a6A9QV/uEvPYGnXr2MZ85cAUA4MVXsO/4KZ5EROLcP8bdBFLZRm+0Duo1WxWfuHU89/wZQJ3zvU6fx8AN34cF7T4J4X4Kkil0H0+GrUZbY+3CRWPX0pPEFRCR6bSKNeSgoHhyVbAJp010fDNV9J4Rk1H6ZXEsICRLmZc2vpEnDrIpWiQhVKuatEuqMuNyS20c4h1CLsEUgwwyAxkdtYKCbEwtdnxMFv5wsuYWAiOA1CYWCkxu40MKSpgISaOb1KyZJXR6EhxKiVKKkf/lqCBo1HQjSgg1Rkv7Z3GUXEdtGFCRuwC5CF5UcF0TNW1UNqRRZqyFT2Z9SOL4vRgq1RKV64zjyVORKZhOiMc7fYY+8/qP3yLyNRqlDCLOKic65QhFvSMVli2E5JAF737hO51wX07D+xi4M+In7T0yCq9Fc/RNACtnFxImREPkLPX4/2ghq5yDGNRDZpxuYJ9tAmH0vTIOw1BYYTgCN+CEHji2T4Pl7RTU9RijsDg1MUPrY/w7GQzqSeJlmew27e+IUw1RQd3Zx7soaZy/fwNOn38KrF66JZ1nS6mPYO0LKhCiwPALKy/Y2iULe6KNcnQTBN0gEYiFCJcJnP/8qXjtzDfc+8CD+/I/9YXzw4YeA6wdgMMqKPOUOUYVktpwAi/KE6nZ7d4JAysUCRQyl6iZQqaO0In7tjh/Juc3QZ+pPK4phEygdlkHV3M5qqZimnQSRrtLAWuall4K7uOZ2nacZMs3Lxd1jIZdbDJmKNPXgm479yPuSD90tJAjzfKo6rnB2jMp10yCunDm5t5Mv1sct6slkuaTMjuCusuZtlOAu84AYToumAyndOWjZY3Ki6vCp6kq6iJx2BAjNbIpQdcie8OKC6xyKEITwDoA/U0girj0DLmuSYiXWooIyb6RsFN9y/tNXzEBOq2Hpv+0ziVGwfFnd18aeTyLccUP1Q65etTVv/s4w17iiyJF5JEIe+UxYxMwk91glisvlWlbd7h1kXikTILMh2P7EmchdOkO0BCVzgJizJUWR8sYLFPNXcmYMkXlGg8gzLJudMZ+XYOISESB/1SUwi88KfJ5g60BzyioCgREZVRFSYcm/pSrnDrHpqTgDmipWd92Dp586jd/63Gl8+oXzuHawxgkC1p2x3ibKxawSgG6PLNxR8NrttyU7AicQpVZcvbqHX/ylT6IfAtdvED76g9+Ie04WHB5cAWkMHtHsmRRNQJbNYc9XatJScHLyrxBJKc/VhNbnwdOGnEtXfTVFKU/Lv6Rhu+ASGUMtxxDVQJwsuY9RSJ5pXWwJRT18iMnVK9M0oe5MktV0mtJ2SUBWZxbjNMelFrdc8s+MozaEXS051wLeeeuNU6pOCFkPpgSEFc1qZneYqhzSUpHUBHBEVaqonBhFs2A057SrpeAumo4CvDiHOjYgbsFcofmzYcn+WDGXcZxuBLZYAkpRxIZlmcUoameP2Ku+QbkxhhETQeyViiMhV5dltssZgu6IlFWCMaIA3ZMMHz2o8lPjPAQ3ZAIUnlYhHcreDE4VsL3X888UZz1JKPZ65xh7mzv2WMCGfRinsWTEIRGBtB5/zgM0Efu5xDeDe/CWVsYvbVr9yHdUt774Ni1ZFwDAjLfGBBYgS+pua5pGjYHBKgokBUz8n0keNaS4HD29ABmgZ0ukIyU6qr5CoBpwEebGHUgg6srdd92Ny3sNv/Z7L+GTT5/FI6+cx0EXN+uZJSo/40PRzhicNuF1O+33QRRG1HM7TzPLZTw4WOOFF8/gsfe9invvvR/f95EPYmdnB4UnFDRXCwDwC+uXCqJrG5N1GcKn4HiL1O+VaMTUV5IQsv87qd63mCgJy3cvpz8ThaLPo0B92dUuAYmMjkzVogaqU9V/MqeSXD87d3FtZZZSkGr8dfWNdmaFgozrJBLuPFdzGuCt2+MHV7ke5yJZ51okZYMhKFfLpQsULKLaHlXyEJzV4cnndF2lWiki0nKiMSe/fAxYjhOCrF1xtO+1wTnUPgVSClT30xBz58RVy3ozRxjH1DhtSUEc0dvpDAFwn32zBhqnalxqQujQszrSBDUl63zGvQA274upv5I6yZk+CieSgfNk507lYwrOlBYuqjZ2T89tnBUbO5Bb8MAymUxAXBDxeQ09OqGi9NDSa0j20J6nNNIwsdQjx7uODzJgebHdWWUbqlv7O9fHcCJLcKLgiNtjEgLBZ9WTSSROkxCEONZJfv6GugpFmA0q4mQj96ZLXqxCmFFxZX+NL7x4Ac+fuYwzV/aAugJoTL8/jnbnhCC3OyQKAfzthCB/tpiYHvTeGkCEUnfxyU8/gS889jTuv6vhD3/km/BjP/ydmG9cxvrgEEXdVCvBQvNGYUiRd6hiSIvFCJLJieJYKaqpNIR5FPWTSw2T6O6sPgMBkvyOw70RRJiqBFnV6lnM0GY1breCxgUdFgkrksbOaoU6TVjtrFxqgHGbM3sO+WklCK9zuMj6GNw9rbXFOliFsmEnyNJY5I+k+pWc08ylyvxqC/tHcEkpJiKNQKr355WoepgkUrvWitVq0iCx6jzKPM+qHushdQCuNpcNlWCkjdNkOn5SA7+qAAzBkCJeq33hbIP7YSpHaxcwn9NiZACe96aQzbBDCugwuBk9EE824+ztnx3tbvPx9S1yzmwgzpiTOUdYn1mis6tmcOham0DiGBa+/zYQM2pJ3mMwBiWTk0D0y4kZjOMfVFpJHPFA4MkEvmHMo5DTFlD4Z8JibfK4w91Pfy9/t2bGY/+ZVJrFbUhGFITzlrXxBkEQpirOUdgUFOIuYC7cg20uet5MGs02C1mweP2J23PHwcw4efcOTtx9Eh/75Ot44uVL+IXPvgrujN1SsKf1WioENQY2Zj8DfBP436q9vTiF4ed4eGJ7l8/Bzzlp0rF53XC9z/j4Z57G3v4BvukD78G77yLcdWIXrR0AJtpTQTYeuecGUYiy+ru4j4nhxgyexvnLJgd34pOyg6Fcgq+KjNkLYrLkEmzNnYtzcnKOunvTlEk8j/I/R8xgkNsUSIOD9HAxYAV7svHQPSLMfXRgj+BqBsCQhYXLywPiKZV05S64crokeT9T65LS2/LBlBq1l8VuUVGmqh5V4T1ES6Rv+2AM/hYs4RfQkHjCGE4MWfTlneEpnwEKF9i0Tyb1iM+7YTQavpddMAwHidBnFs4t6dylK/MJtxuQYWZyByueHu9DSG1pwd504q5GS2dP2X43cCe3UpOJ2YgmbTDwi+001Ydx8SZNLgmDzTV+97PuYyyVmDpkQhPDE7oPAOvZ0IPgsEgSTyK+W6AU9x8xJ7u/TrgcyS+R+8jxB8IfJr54BkE4EGNwgoKDz89jvG9wpjRJYXCE+93ZmXBtb8abl6/iiRcv4LnXr6DPlvqaHG/0cXd1XC+B9bblhTskCpz+Lb9LIX+3yMtHgJTbVEPbv/zYZ/DCK2fw4W95L773Ix/E/fd/Ha5fuQJwd88doA7IDrDNkR5FtaCeLxC1C/kO2ric0h0rp6wGR0OwZZi6Ul738uKI4C2hoqAi7rM8qYtnB9DU0MyMaZIUC9NK3FGnqYSvfZHMmJKHXNM/mK++Gq9BgfAIiSCkQx4wMS467Y7qR23tph/3wLm67TrHxVFQyJQIYuivGtEK9mR/JjHUaZK+W4MV7llmTWVFblkjkCft6IGSt5aNVxIRMd4Alp/JEDxc6rN+gmAKkrfn/NZDpQWLb2HzPgovsEF1pKgYYM9WKnCqYCXE4mrc9ZIGQcBAEJIzDiUJxIhAAUwnabwBFYxEyn+OrqKcxjVMwbFwj90wAI8qopKkl0TYdP5+rxIGMkN4UGRbzGKD40N/VkAYqrzANrxBEIYiR2kYQ7Cq3RUGkaAMoxGLINrGAGUCUcq4N86gbLMxKOJnG2eDbMVdrUYE0jPGtAFQ6Y9w6tQuXnvlKh574S18/Auv48239nCCCva54ACAyQemQk9J/x1qgQHunDwQb4vC2fZgzuWw+S02gXHzbilDF4x33b2L7/jQQ/gLf/ZH8KM/9J343g/dj92poR9cARXJg7FeH6B3Rm9aRrE3rA/WqnKJyEOwBAyhM27cuIF5PYN7U9JFPj7pLhMRuGlu/nl2EW9nZwc56EkSpMm6SjpEgFzQ5mk1GBYEBsC9Z+o0afSkuVUy5nntkby2E5aMDZ0lVUdX9ZFsBCZVH0l/gdD8/wPlhF4SGg4wAEdsfgQ4eX7ovmxc4y7V7nqTiObWGqrGKaxWO+6J1JsEJrbWnAAKQholx2VbHse4+CbNjYZvARjLjfIQ28ipJV+PyHPTAB7fkUpqhj1N9Si/s665B1Ewm8+wJkWmLd7p9pzjQR6QelZFGZysRodFRUMlO98nlzatE9rswxA0A12N8cxSC8XiNGJ+NkycCx4XNoDdpSk2d/GYW37O4eexEkFo5eGi8wvMYXTHVJzLPof9S4gVBE+oKM4PagucbINJ0k8TecZc5/wVJ3iiQyc0IUFnicMT3FHw7Ob9yMrtkDo9lFok6JaBieP9joY+N7R5xnT/A9jvFY+9chm/+4XX8dufP403rx7gYBYnlsaExkBLxNTIWyD/beb4vGW3Rvd3ICncjPu/NRHYfMNOrpDvq9f38fnHX8YHPvAB3Hvf/fj2hx/A6tQKxFUVVw1TreiFxa+fgKbeP52lALurhTp5xGqdxK+eW8gzzrWwccKknnvq1kqqs99ZoRbhfntvortezy4+h9cKoReNflRuolaK/CgWOW2ctx0slnFja5V7q1DPFak81nsHteDcI7EeiSSV2BpKut9o6UAjcSYL4mAXXB6KQzb0pEiZYH7yEtwmB3/kpizXUgWQq4n5mVlMk/U88IhR5H+m2zWvlsyBKiGOYKGk/iKAGscXtn7rN80joDiOkbnveFARNeWdg9JkXacL18b3qljPeu59bQASwrQxO/VYp85LkFBERBNRZEJxDt8IgzICyT2UbS96R0ecFZMwATGwD8cgQWeQSk3q6tv2JN4a1FkDUsrzilMZoy3PQYbR2M/A2JMhd717leDliSk8h6gkA3KxtZMyIBT7vHF/RjhkuNgdbQie18bniSRQU13VQSw52mgGaI1eKm7MBc++cR3PnbmGF85dA01Va+qE8X7z3mTY8PLrO25fIpfUO2ksQUEM3DgEfuFXPoFPf+pxfMO9/xG+7Zsfwjd/4D609VX0eR+rnRPCrZc16iSpEUohtN5RWhfu1Hz7mYEO1B0tqt2iiEaoHkLCMaRFLWISdk/solYp8j7Ps3K9UhOYOyJYrpAkUAMrYiSN7jWPHJEfu3niJP1sQQV696AomV8YsXtbKzFKIDOuR9VIGdllmSE3yifaL17CFPYmx7HKXhn2IPUCFAZN4hraVcUn8rE919W1taCSccpqaM5K5g2pIKX6MC41pfmIIuY2rSBaBHtmlOAAuC9+GihApDI4KSEIHBjjGghMhZRVIhsgQpoixfeFYk2uAmKSc4fuapeBQdU9RpYyUjY7Q/4lgTIThrxe5oiLaHb+0jlc2jxu1RzeNk8dw+PlDEQczxoREzizj8YBzugbQajyUm5ndl56tYakwIXduGvMS0mZTqOmstmxxsGyhOB8XTEkTH72xKVdYrLk2e7q3jqRpPHRTWMGDg87ptWEE6dO4Aunr+Kp09fxf/7zz+Fg3TABOGxdYr109Ufd7ztlym/WvrxEwc+hUuMC7K9nXLhyHR/7xOM4f+067n/w+3Ci7mI1VfR5DUtZq7BHh9RYYJLi1ESkIrd0XQqBqmFO9gRhI3Dl9nVmiXMo4hdvYh9V8Y7pIMkhpLWSQxcpldaKcv6W34hK1VrTSgCUUzI0xsxCWAqhdI05sPkZ905qS4Fx0nBCQ7nmM7atKxoNH8f37pWV9iQ/Ju/lixx6bYGnwD6zT6GeCexk2WAHG8U2ps+GNsRiRCowRSCZJdPJcckHorD42wRU/5nni6ADFB3Lb4Z4fZXBRS5mr2uONQRHnqZBJvmoHJEQukij5rRgOusggsNsWQkmMkySajP3aXPICA8q1fXRG4nGQ7PRyDB+oRCKEuEbaT6Nv7pE65uwfApAUhdiYVdYbqh/HE4VcT+R3EAzUq+i3iG4JA/QcFcygZJ+4n0jEl3PQfZwAinhKUV9JEjslQTME7SGe8HOybuxvwYuXmN8/Mk38PTpy7hxOItbOhDekBZdv9i7WP/WL95WewdIClBuTRDk3BlX9tb46Y99Cq9duoYf+KHvwXvfdRK7uwXztbdA1FFWAGn031QnoHX0dQNxG0RYJg0GIr3Yqvd05to3noBSBdE3SqkVNP9J1U0lQu0VWQR2lVCXACk29UktKFNFXUlNZ2YWg7Lp13WORFZRIcRwQ+5EHVQnOSALF0ORUMqwDl/LEW2JvBSlHUVC4OK09azIx/Eoi2FroflQHKgERB0BJOgjD24upfHuQDT0Q6ujMazQDf/6nBOEjjBHGAAAUbFJREFU4PRExSL9hyeVjGvaFONc2QJL8vKNK9cFjUXZnY8BIXOyBk3yyysFnzRqg+ASAWBEQ5CN6eQHFQvJGcYIkqE5ylxICgtgO5yw+MqRGxD2MGyelTwB319FdkQE9iC/kAZ796fH+S8ZggKgZwKQXiEa7G03a5nrN9WRef1YgLDso6mJrCofRsYIgKnoEi+ikv8CNhR2SpMSjHExqaQCKGCUmTGvGOsKUJdysadO3YtLl2a8eHEfv/zZ1/HMaxcAcHLdMYIrjOfRYPjiSQp3YGg+Gtl80ZpTYMJqNeG9X/cu/NB3fyP+6k/+GfzQ930H7pquYaJDTNjDtJK8NTPYjc/r9SF6b5gPD1Va6I5oS0a2emlcnQOoIl/rCMgUsFrtaIqK6gaveW6ue7WkatZXa1pnuBB2VjuieloJ3WVmzOsZvTe01ofAGTPuhfFSa7GScsmdNYWzzHsbZ2+bmLQLAy4h/20R8JIu5+ZBsFQHmVOm9Iq81NVoyL0HwjACl+bqR9oQYMLFthfL4+iqJ5O2zEhv8OK4vGSwMa7OkFgyotqA/pn8AVM3GsEzg2nMl/0MNK3vbO6SLkEYJlC1JHeVJxjxD3EmPcMxqwoinQNmFvdfFm801vOcFhK/cnzEPHw9wLN3PWtdVEjNJQNpzZME9tTJAgPmv1y1k+cTBur42WG1AIZ5q6TAvQBcwK14YshljAUAzM32bOthhcUenTi58uSTZSJVHwkjadHNpBqEAmN0QjRw5iLT4yR1QIlLBoloLwosVQyKSQr6jwCgY6aOdenYPXE3OiacuwL85qOn8XO/+yKeef0iru2vhQyw5WhtLpM6vI7cESx2Y8t3t4Hu3xmSgjU2JoJxeLjG+QuX8dlHn8V3feQ78J73vAff+sGTQJ3E+NzFI4mK1TqA5vYR6cCcsgyEFea9YkIDezAYANk55WD80BXWGgNyaIgl+te4fepdC9bo98o1RblGGrifwI/shy8XIGFFurIGy6si45dOPi/T9bs4zemocCCifKjDFycd/kwRnMNcNNXjD6hhQZSKItBmyNSQBaU1U6gYjC4t+9zwhV+MF0Q0dOLOlUH3oKRnfa2bhIZ0n4dLpXsb8MnLDETk6hciV6FkjhsxNUDPXe928MaOXX3n3ZOPwdb/QPbhQF3CaGkX2I6E4wORDmC4RuCVGLOxLc7P1k/GlmFw0ycN05aCwhiZtbQ2k6LM8J/tU+5ynIaR+66OIGQ1yS0QUhE9RolAp+FEwYUsl0LZ52TPGwPiREMJjkshGvMgEnWRzM004bAVvHDmLTz7+lt4+vQF7B9qLRoQOgo6pFwAjycDm/LUF7e9s4iCNmbxaNmfO154/Qr+wT/5Ffzep76A/+6//o/w4H0nQH1C7wcopWF1Er6jharo8lesbp5R/3ilqbVrJQ/cak3NN8wqsJk7aNQKYNXnWhK4iurvtNbEVUyjdo3TdA8htUeY5sqDuDo8lYQVpBk4NJLxqlkQkxcMMF4tIwrmdkmQqnWmdgkuOi5mqEGMk9a1pg3wJGeJ2BzNNJITA/tn6jaze9j8he4xvDyUIkQjjp2X6iI4AcvEQWI8KHHp5JKCxzbYcmyPM5Zc4Nm8pkwbhmft+xSyYyVgb35PSdNqiDeWVUAzSSKnK9j27kDdtz5CG8zC22mO3OqoIvV53IakkCW+kOpGCWaQ2JIHIGmyoWVuKDuvnUVaNvfZaOPhJBhi15/V7qRkPfDEkEYokJF+YkL8v42lJ4lhNE5TNSkkPmfMaOiYuWGaVji5exIX9oBXzl7F//gPPoEzV/fw1v5aapUgV0L4UqP/7e3LTxQSs5qbI5Yy4cJb14CX38Sv/Prn8ZEPvQ8//F3foOqXQzDv67tyIQjAVIoYnsk8fjgibidRBWkILFxNwJpoTcswmjShX4n4ScGKCJJirUNSRWfeANL87HWaPMJXUkyzSiMMVJEpqUg5UhcNW3OVhHE1omMQxOoHOIPPBJ3A6PJ40uETAPJLHh4MdrDZpBnTRQBSA5eTP75dgqVR0GmNYk7vg5V3r3K0k66VYVwpD2ocIh3XMs46XTJ1EMLtlO0BnR4BVhsjX2wAoGIFm5KKbjhwgXSNyA6Msk1uWLkMXOxv/drcUY0A+vFWROhgSrAb5bDg8o1zZ2dHKXfmRMA6C68xQba5v2UjozVsRIR8LWwPHKmoGHYx3jGpB4RSsrQSgYK2p1ldasLQCAWTNgM6tUjqcksrr/Kb7oZKiglMRHC3cEwmvSfdP6Cqo4hDyExTSq88wIOSpA9LiwF4frTYLrEINJZ4BKoNnXaw33fx8adO48mXL+LNq/u4ftg826vJFPKnyApIIwcB/NKRiy8/UXAJcDzw3MS4Ok0rvHV1D1eu7+Hn/tUncfWHvhM//F0fRimiLup8Q7kQq3MAFOV0SiloGmRFlcTwO1UAKmp7cBGEKDCgTsHgxo6cIK9oTIFtuBixUPTydz2QpUoG0mkFS5XthkZNzkfQUmVV0uKaHZSVA7ZITOGo5ctSK4py37rM9DM4VQ+aWRAFKceoBIaHl90zaGQOCa1B7QQJ2YAAToWGFGRw7i+KvshLggWixoJRF9nrjoj4lSVrXWxHHotLbpeRWRCfq29EbYc0L1cBKICZrbhOrpRlwIf3s0wyyAt7B6moQCTpWjJBkLmF+XlU6WRf/djBMS4gja0eJ9YnKVPhPQ7j5fdD3eJnfdgT8v1ybt8Q4kAARzgsOhlAZxOQmB5O50mJR7reQRi6p5yXYxu++JR/GuNjmBNiEzE1pew9VF0E1/+bpyIVkvtTxHRoXDxg0mUmstHcvywd2QQq5KA2y7Hk+bnI9ljsJB0zSm2YibA/7+A3Hj2DTz99Buf3JEZZXJZtsSIrqNwEIAoUxE5+6QjDl58oQPXdTCAq6sUgm9GZcTgfSmYeBj731PO4fPUKrl66hL/0kz+K7/yOD2B3t4D7IXrfh+S366rjVqBpIZnqBwGAHoRa1GOI47DaKaBSxVuIpAtzdStFagZ4HWKWlNcWlWzcjesSC4m6qAO1sCjeiTFNkLxBtTlHYUiQe/dLZEm7rKqc4FLeOA8RMctSWzldKDv+kuStpwNuyBMOczbjZmcx0rEF7om6zDh/q0lRqIjmkxnYWQlCaA1WP6KW6npdnyu6w7qAwCw2IBE0UvEfYxCWqh+dtGdJZXUrdE41fhpQqQAVVVVPfejPDNaw1CjLu5ZUDPZ8dgOOxwwBhzE8Bln0maSTLJlI3yOBNsQ2aNYCs0a4TWICTCjN6hf/lu08k6T7yLDIz92y5aeNoxVjLvxeUVLTBidv0kkt4agAtgBUU9rk/bc/M2rOXA9cXdO5CQ5gS3Knxt6qtU1MpWk2BeY0p4VbrsHfOtLNckmAgNU0iYqqzsHAlF0wMxofop48hVLvwXq1g88+cRY/9+u/iU+9cBbnLu9hR1m1ufMGxIU8ZAZiO+y/2O3LQhS2LTEUI2mzTa+oKoOrN27g9JsX8JnHnsN3fc+34N0P3Itv/OBJPeeHALFWIm3eR9EiI6HfAywlsiNZUvW2SgpsPnJqFAzf5/SzUpp5Qe8SwOaHSV1TDUGjmIpHLqXVNfbC4Ko3ZhUOrHctJAovFwjoA+yXmY37ZDOMA1aHgRRZRkWqIAS+G8YhM5xLZ39H7CDBtTtLC/O0AlTtU8XvuyNiKWopLuEwdMqUuN2kP4Zz0dHCvdH07kfrzEeOjwNJq0sWFXIiNBgzs/6C7SwCfMTFW8ZaOG5XlWcgqUDMmy1jfR76MjhbxUGBC4UGw+hW6NekG0DPr0M3SSb+hJ6JdAtd8loSkHhnc/ZpDJ8TJ1jkfUhTTetLAq6ywT2kvwSjIAp25m0d6ecwcfWGC0qiwWo5wwABNYiCvdc9+6wyE4b87UzoXQ3blVZjrB00uWzheIV7B00rzGXC6QsNz79xHY+9dA5vXd3Hem7YobzeBIr0b5MAfOkIAvAOkRTIOau2NfOfGZbqVHHx2g385mPPY+ef/zqeevZF/Kf/yV/GyROnwDhAqRMKdaAdgrhLviORJ4fcPwBcJASFMUnwB2nWUqCnTInFXMyIIyReEWKdtMi7nAKYSqOXxFWAQFTRTdrQYBqRQmScSSfVNB8NsVRgEuSrU7GLq5RMZsJgMv9GW5c9nwBpXBhtwjhLJq5aUwRcCVLXgeNyW00HU4kJQpG61F1tKZUIU/J7MkmgQ39qrqKMOI9ymQvDY0/vwsV7OuI9v1rO2RXfH5OIhFlIGCrxJcs5vK1209cSt3uT53zP1cg9eh5t4JVbTMSMp6HW6Y1vOYe307a7smekr3BnyykFLCO08l5v9h8cuxFLJQnDUKQBpbmSHyY5N/nsiMu5Sv1Vzm7VHBkeM6LE20u8TlU82id49pI2a9W+CtDODq7tEf7Pf/o5PPPaBTxz7ipOFMKJQtizILUEkbYVVn9w7R1BFDqy98sSm8VB9gpUBDz36ps4nBt+9befwLd849fhI9/6HtB8HehrVGro1NFrA3ENKcQ21dIwKzmQbJQUXGIWWowzVU5IJAoRc4tFqumkhgys0LQCTn00ejlxUzBOOzM6quqwi2Jo39UayT86SwjOfWf99BKczsQmY1pqWXjw0kQayS3q3OpcmxEqq6tthnnm7JJbAlnZPbdiI6x61B7ry2qZsSnnBvIEbkSs9g6yKKkN+Bgx2MSYwYcRBYyHM6fzdQmMl88sutvaLM4jwQjKKCRYjzaGjLhpmL/hyuzxAkCN6PA9lrtyFCzhUpmdBXCkwNiA1DC3aIN8knMe2Uf6902JlR/QrohYvIu4c+5KfwmsH0W4TDNgEo65qyaXVYMVtMpiqailhpeQSgrGdJSiKdKVeSBjWWncfTNQgwjMa5EwWnXPoZm7OJRMd+GRp8/h+Teu4clXz+HC5RtYlSg7nLHcrWnyNk7vi9++7ERhkwfYxuYGQiiqwnnp9Qs4e+kafu23H8O8/g58z4e/BX2egd7F0FxmoHZQq173l4m8zoJfSxtKEZX8Ku6gFseQVQ0dDHTzOpFnyQiMHfKkluJcXrEKAiKkzJ3mE61IcXkFGT0uRFIzsENOkZrfQvhzdmkH4mC/Lv/OnzOBqujeobUW0Al1BXQNpPJw/+IjaDAWy/tl5N6M0zVkJSUf2YB6ZKM0WdNDGx1kMtXTwpiao8mYxwXyggg40uWA73D+NlURA+AY4+cZrva7cfdCAYxFcES+TU0VxIQzxyBIz5CXrjkYBrgktyQI5LSTVSsaGEnmcgTCOQL/yHBGEJYxJhk2m2+NwOL4Tzn0SLcBV9GQ5qxfgNSxRXjpiM9OMYKuizcp0Wt/WKI8JTDmis4Mzbjc/Sy4nYDCL0g+UPLT1xBHlYIGdUQsHcAElJP4/DMv4FNPnsFzr1+QQjmVsO6MZqrRtKZl+4MhA2P7shOFo9uCcwNgh681iXA9OJzxT3/hd/Dy6TdxcHCIP/nHvwdf/76HcePyaWDqqHVWbjxxEgNGpHE4AM7xk6iRmBnFYhd6GCjDh5pFJTHoNU23X9T3GgkZSauKKWut/i51KcbQdX0MUSGFKSAhB8uXY/KqFY0ZbmQQ2Pj/JuFxzpUovQFHhKVMShgYbW7orUf3RhQo7Cxk75pUoR9anEZvEnjINmbK6LYtaC1Nc/jM5tx1Vb0dTV0o3+z098AJW/oDjmfYYwhMmkGCbSJajuzlb8qATLC0iQuN1M8YrqdmdxhAPL9ci3LCWboadNkDgo7fS5EguqUhe+SPYtKsUut2ekg6f0qwMSJlx5AQUlYagRZEHHGftkkW3XT7CSRZUtpoShAse3JpFkAEhYOqN3eqq49aa+JlZilliNARwWS2T6zEQugwuT0S0EBWquAyYeeuu/HCa5fxrz/xCH7x0dfw3JtXRL0M4HDOIWlpnduXsvjriDV/Eds7lCgcxZ4Epw2IrvHiW1fx0qtn8clHnsOHPvQBnDx5EifLDggz1jNjR0OYndkGELfAEOk4JpGqlIzjdz932rKViB4pi+Aj8hHxgNQbKewMMKOXXaAkNYS1A3oQKZ9P5zgTy4ecpjkWnFa9PFOuj6XFV8oFqmrKfLNDi2IsqQ1DaR1wgpooWsCBDPZHcd63bgFvQ4qCWJcLPBJxpO/FoOu9pp+8QIhLCI1wzaMvayEPdpyFROhIdJA4WLcgxR+YxEQhMYzrVGJhzy25d4y8y6LX9Ga8y6aqoRE2/vQWd9ptBGfZloQhB4/lg2Bn3hwe5Ayy57NajmXQYl0Da9YBu+PGWFh+MyMKZuuygLtIrZI9k7auRJ4HY+4NWIlX4rm3DvDKmWt44sXzOPfWDdw4mMGorkJ8+5z/l15meAcShaV0kD9PJhjlzMq0wnOvvIlnXnwDuydO4Ed+4MP4C3/qu9Ea4+q187jvrhXqqiZDLZAw0zjWIp+JJB8irRJnoT2JI3LbBPzSDLMeECBpamkCVQ/nGW+p6mPMMwOL6XhWL0uaY9zLphNzeoscuQQttPnXWyBNCpho51XFeU5JytwLSfNHyVy6v5MRSIYLq5OXd7TY8qM8kcYpEmjA3Lfgpmj44fz1Fi32xrRi+G39L87SYixzEd2aVsjGyaquTNfTHi0NqIAhWOvyJoyLdlM0CCx1uvHrJjefOOYvJreqzI5x7ybFjPEa9kvxc748tswsX5sEqpJq75JS39y4hXkRGNS0KTK2rm/WTrsxdgEPo1lBwOTvzoz9NmP3xC5mAL/8Wy/i88+fx8ceOw0uFbtlwo0WmRxpQ1bYcn6+TO0dRhQyogY2AWRAVV03FxBWYDRwafitTz6Ks+cv4IPvvwcPPbiDBx94EBPdAGGGB1URQfz1w0gsmzvrxeriieHzgd9iyhYn6AVlqK9plwdMUlDuOSN9Z4Ly3xvcoXLmxBtpcpm6qqoci/jzOcOl/F8C1bwGgdpRRrfUQELZlTJ2IyFa5bSYIKnIhxQTvmBfY7f7llQKJlj0ojrklvrXl7uJIyFypZY+SzBkhamrGRx/DZhz7EclHwExx/O6gFBnyFyW9MjdIROOzEOSTsxGtZA+j4ZlOGdOxG509Kkn7nRJ6016GFVECh47dxstqfI4blIsQp0o9HzneXgPHH0R2J0orDToEbTuyDYeb81qquemlOTE4eMn+5y37KTCCjep3eF+JXqmCBRBZqSEhDvMaG1n1DOkNLuL4XRRtBa7FckBMWY+AKaCU6fuxmtn9/D6uT383uOncfriddRCWDNj5g5G0T2v4AGX6fjDbn352pedKCyP7/YQDhqeNlor1b8mRbSMRx5/Hq+/cQ4f/WMfBtWH8YH3vx+0XoO4AV7QWnfeMlkOSEaRlao+XF1jYxvXxnDOwzbUjXdurEQUWUnIMi9aiAfHZ4k7lLEykodexJzKU2dshGGrdKVrKwl5LwmRz2U7MvGfDI0OVoKQxf/hWeHYcrZsAbmK9sW44jwPgJkG+A1zcFjHaEHc8t+bF8z2NrjfIIb2WlKPwwzLbj9azCY0gokQAsFJLudIEi/jezVsuZ1JcWnOx8BlLdtvRdqjPUEeMNW3rGPktkONtLQnjSuTYTh+txPl53Ukjk687O9ExBbgTfsXJCNUwcKsmP3NJAe/CJzWaKAwG10mWtan1SCAxKVEPENKduf2IiEMPlehIrIzirfdG5AgTivJNRXE6LRGqTuYTpzA6+cu4bFnL+KxF8/hxmHDVAgHrBHY2kkkR2GdpddVe0e0LztR2GzLI7X8zi6qiF+l7SNsBoRLV67jb/6tn8JHf+S7sP63/wQ+8r0P4957H8DhtbOo3DExjJ3SYTrATbhXQ5BkgVbh6mgEohZxcbU4AvLu0iEvkMCYQmne2uKMy5+L25M5s8T8Sy8FwqFPwTHRDNAMgEVE7ima2OMhNK88EBydIA09lHq4Bw5TsZO7UdpcR2wrD7nXUXzuEbM9IxmBhal7hC57FkFYvEPRhHEJF4bKLsFT8JwEHImRuwRcF7NctmzSKKUABejNbEIjsSPCxpVd0PcMDZ9jlr4YYhAvaq/iwm5ZzHSKl/1oFxm8ht4X/IpDxgiCSbKUH+TwW9uECbvUlQC/BXpptZbxdmN+Me9RXzYSRSJIUkEUDZIUL6F8d9wG0gPq7inUmxNwK4thwZLO+UOEea96pon1iM3xmmEkmKnD8+zvWlh4B3WNkjYplxp6IaAWvOvr3oezlw/wyc+8jn/xmy/gC8+dx7WZ0QDMrWMNkRQF+R9Fkm+O+f4g25eFKNyaJh71RMaSerS5Dc+31nH6zbfw5HNn8Duffh7vfv99KDs7OFFPAvOM3tZy6ABBSHYYChLWC+MTAPVb1tulj4h4avyIXSBxHyU/7Qukn24Dx/kePgcDrEgR7rZplxXwqm5KjSTtBFC4A2jgTp5Wopiapxbn1OyOdlhEt2FfNbjaPIgS0rL5ZWJqTfvItgGYHznS3/kNXZNzohx2DlJOznpmS04o/VPqxSOVlZCwxUBgbNsC2xzhmvSgN5ILi256YcHc0D6lX5YcsoMov8SqsqGYt3zOMX4mDAMeTRTSP4Ph+IE45JltTJmDeZK28HexgWlJC2Jcmc4CufMSXvFcnvZyVi5p+X6nWuYlPa/nkpP61uozEElZ3t5bAqtIX4UQxAFy7uSuCqIfOR9jCpMtzNRInVEghEEYBEbHGmWaQFPBlQPgtQuH+MxzF/Dy+eu4cENwDCNkgDjt29iL+OzWuPFL395hkkK+CUd9PyIbxhwcNQlFvrEm/O4jL+PTT5zB3Q/dhx/5wT+E7/pDXwfav46+dwV10pwTTWIZUBlYVVeNFGdR1aDaLAOJIh01rDr6aQy0DrTmGVA9Q1eeu2ILJrVh2WFdcHodBcTCsVATz5huBGEimauJxFNFbV3cDWfhfKTiVEFZTZp4j2CR1twa1PMVpi91POGIOQhab2w+d35Zt2uZDKPFpTMfcONMDdFJ9LfppbsjIjF9SHpzd+XtQG8ttt6RoDEFduWA4tXZoxGgUUKBLuTpltQUxl1XdbfVXD2afpyjp2idNxChEb9iMMygMdfOntGO7vfiWKdwFCjtV6QVzzn3vA3HAFG32X5yuJca7tt8N4Askobp3qNr6ZLhWViNIC47Y3EA4AR76UFtXUAqXFN1LyTzpKwtuQKXEfpua2FCbxNaazg8bP6OSQpSIEvtCCyMXiFJDDnupnD+0rEymQSwYcfegVlE8loLmBvmeR93nboL027F7z5zHb/7+Dn837/0tMQ31YoDFYCtCxlvm9PpO0E2GNs7jChsa5ml3gRqRqZ2QEsBWp9xcMj4lz//u3jlxdN493/4b+G+ExPuXt2DjusgbspxT2A1cIUUoEiKCazBaV4tSxGYucSFm2ABqHvNX1LjrmU+9cNekE91Yi0zm6diqhmeoe5ySE7jyupSITBVEHZQpq71qPVrkyic+2PNBdUTK5p+GpdGcEyVskJ4YZIcZWO2BVcFMYvazX4Om6VrrCrNWPEgRZqkm+deUabqYPb5MG9PEabg3mxsBM+CA41LDL94S3ksAlrBbPSNaFGFLPbObUgGbI5z43EOiJ/MY30L6yrziPksGxcdZ0eSx0WcDNymwO5ZFq6X0dMmB298axy55VkYl0t6pu13I/KuXbUzkLpj/X4zsloZL0vwSPZ7cTvCaPtiiTMCEIkGaYQBF0XWgvipl6HmhdxHC7gMxsZU0GZ0ZnOv1b3dsXMMQi876FgBfIhSdnDXPffg4nXG+Tdn/NSvPovnX7+Myh2lixZi1YtKFOMukJ2HIyH+5W/vUKJwK4nhVu/KJZznjk9/5mlcOn8Ff/FP/pvAe+/CXQ+eANp1MLpWQKrKqaguMYvKlERUdEcqoVsnVQeQEoQypG0Akbpd6gEvJFwHsdI3TmokQupW/y1Fzk0zvKfsoEmSctkYzOpGoQRB+yjFO4enyNDxQQjXXecY4UTAjeZuoIDT6pinIm6D1WIbDS6iRSmasyk4a7L6hcbiKlLJcLKh89xlHCO2CT66j47MOWAqDLio/IoRWOies6IMRSpO4FTfbuh+67X2aZETgohatTFClbdsy8A6w6lGqLIRfDM2wCJXYj/kXVrMdLv/fZZAiGw/t6GuTJx0pPRcT7myip1DGELPRKG4/anWTDLNUw5wm6GJ2dqPEJyuHkUVpcg+CQ2zxRmcWHmvxChJWL3XGB8kKwBV+5oBMFW0Qih9jVImrHbvwYWz1/HM6Rv4rUdfw6Wr+5gIIM1lVAE05NScA5ST1BV3853S3qFE4ah2xCXMT9gFUg7/0rUDPPH86/gv/9u/jT/3p/4N/Ds/8cfw8P27OLFagXkGNT3Ruynq0RC93lpqXXXWyl0mjtdYabZynqruGTC8Z1QNsXtYif3i3hdQ+3dXhK6PEbTWLMKj1tRU1OSBUuShFJfAYFGVcRPurpB4w9h6ktM6U0ZCpEjZbBJqPF9INbYgT0nNEcMwkHcjKjXiGahRsKMLxL/c6qNRk/aL8DTJrYK8hjZnLAbAKusxGBUVTMA0yWUunrCvj/EF6AlGZvQPeHhdh+Q1UFDApOnHE+5zniJJlLkZ4g5UacSZHBGT/24EMwWwOZEYz9ym99KtEROlrQI2Pe2tDdoig40CrCQiYIRhm/tp3sbhPObFgDxN90QFQAVRwbplN1XroyzOxhYpioIJkMMZxvrWG9YduOuuE9hvwItnruGnf/1Z/OvPvYGrN9ZCmMDoIDRjurZCJzE179D2DiQKR0kJ+fORFeThe/jGEhE6A/uHM1589U08+uQreO/DT+NP/tAH8eC7T2BHsDi4Szi7R25SuoI8zsUinS3y2JkXlksZ9g29qMppEwjcKPUf1d1YbxsBYhgmApeu6icjRHrMPCiMUqgFwwc2ztipksLF2CFDEuSPj0hZDe5OEAwOFOsaLpfNTaUqqErG9d+02EmTSOxTC2CjNE5GYYulOEFGQuzWL4wTXJwdxuZndmVtD2CGRgtuEulQEqQBprlz7j0vyQhwgqM/wTFaVv3kL2XOQRBCAKL0cFL3OJEwBEPD39IHO8fs0NRjkgmDP7tFOhmjsvP9ovGa+PdBaELKTnCBSgawmATy/VpuTx53OBo+h3jOxrPyrAHP3JfuixGYDAf9n9wgu8B5vbKmWoFDJpy9eoiPP/UWnn39Ms5evqEOIUIkw7nUffawRUZLBGNJnI7Ce39w7R1IFI5qSyovnw1pHtL3xhBSJcxgvHruCn7ptx7Fo0+9ig8+9B/grpNfj50VAX0PaGvgHkNAiQ3nJPaiuwrDDMWF2BXZDNI0zBVkutZC4JKMphohDaLw2FBEChihkURd6AVclSiYqyxbzWlNkleEuMhClVhUyPwpuC/qXTyaGiwBjhNB0cMqzAhKiEponiyfkF2isrhZII/8ZIojbjRIGDmdh6f00C9NJFpua7abUOqXFs9lmq2flVo3rhXMUaAQPM8Z4Fwgd7Xh9OCchTBUoHRY+IRlaF0YA6IR3K1Spk+hdnSVj6KeYe9v3jbWY4hSvw16rXpsqy+uc4COnej6kcPmmI8cKT0ifMl+W6vCrmuiSCztB+MqiKLgkkkLy9Ul+hFvmtdRiAgwjz8jKGIzUINyKapW0vUQOQFyhgcROxJ3PB8wUQeDJQBztSLsTAVn9gmPvnoNf+ufPYqrN9bYbw0nICV1D+Ut7a0rj2X4YSQDw6FNMHontHcwUVhSUGADkBZEkh81LsoQiV70UgnX9/Zx+s0L+Mf/4nfw9LPfgH//J38EOxWYKgO4oRXPSDx/DNkZR5Iu38iNQyNiIJ5HDW5Mjke0SkSxfir63AA3mkbQDtT3GY3cUC1IRObDDWhNDWecDFaKOQtDpQ141TlGAXgGuGvSuITY0qVXR77xYpdQj5ClFJ4U0WR87ohb5mRpxKtWUDdEOeydEkgpQ6EpTJZekrzJuxFBpSsbWI2I3TypRo459kt+FiqbdTvYwhtD2iAAmAjcC9AJhUQt1vVcuEnG6Jtx0F0gafmrpPtNLDyAwxgOjt9Nb5Qjlv3hIsnbhJ4ny/9yDM4SSlDTzTQW8M+c5hPcBpAZLZMspO54mhuTU+7cM7Op29ijiY3gLzU6xSTV/LnD1wzNbEkN3OeBjT8rhFKFMNQK1DqhlgpwhatVkZw+FGEwNH4mHerW9gEC6okdHGAH19cFf/+XnsATr1zC5etrcAMmnjBr8v8eojuCTMYi4vfbJQZ/8FIC8I4mCttaJgj2jze+Gp7Xg1xWBet5xuHhGp985Fns7x/iz330B/Duu4G7Tu0CfEM9FyQcPWljUjti8wSTCIfCXT1lhCMWZsO4Gn2uSqoKYRSNw0IcfpUwTDZmohAI2C4F2/KGpXdOzkHOlSMRGPi4Rcc2/kt8u3VMe9JiJnQB4n1EqvLhDU6ebVyYj3gJYtfTTNn/53Mc1Cq2rU4Uxg1x47MBoGdikK+i/N/07ARyD7LQ+SfEzcJ15jU4Z9ehhnHCUY5Vpr7wOR5xsZ3F0C0aiEFqmSAsCYdIMJx2cPv7+adzNchR0ZTGSjalBXIWgsjpWVsMi6BK5IxKIstOWEjvQyY6uf8h+d2CKIzMH7k61VRFoUZSwl/gXk3kUnN4N9neUCII8hMRec+z3Omp4toe4exVxscfP4sXz1zB/mHDChMqCtaYIXJ3Jgqc/g+M+3M7yP7LQxCArziikFricAcEA0N6GPahtS41WlcVT7zwOs5euIIT0z/Cj//ZH8Cf/lPfjx3cQOkHAHdYGmPRxYyIg4jTdpuymRKRMkRsB04RgCH9AsXcNCJBKDY3pFsKqFYPPONmxKaD5y5j1r7lwqhfP8w8UCJ2YqpAE62nlN3sSKrXTQ7O03In5J3BsQ0P2YU375KanMxTiuzN9yKCYCPp05ZnAfVqYeFELQjVIL6ckyMMje52RzMyBO00TpudAdkLKeBHgOXMR5czZdzmMN08B0E2UpPDyYvPJ9sPMmFg/SPWlEFi/UTKC3knzSBJCNtBSMPP/N4RbygCzikhZJ1heyCEji/ey4QnJ6Y06cEIwVDL2/pDSBmAdt8ROZJ8DPK04GSBqAbLbtDSrl23PEvtBuUcfeUdYBDqibvRS8G1PuFfffxlfOxTp/HU6cvYP2g4UaoQSTM4BQS3Qu/Lh+LvvH3lEgVA796IQDbuZvqdu3ABbWZcvb6HLzzzGr7uvV+Hd913L77/e3dxz10T5nkP1ZAzGKIVHMFEMA/k6peIFHl6qmF/NrNCOhECuKrXUp9hF8eekTOsyKhUsU0Y9u7qFaNKbs/jokFCvfcgQnML7KcImrR4kFMRR0pwM0To/UdOfuOzxJ5JOg1FTmaSgXHf5ATSCdjimggNMv5ZkarCpCfYmI42Iw/nFrPhPf+fQ9KIDLGLfpiQ8N1AYGL5BBB7wJshLdZ9ga93hBMZg2CfO0HlBA9gybFndU/AS/vyPYxiO2EIz23xt4Ntu6fWTTPTciYm0otLLZlJG34iODRCIh5p/cheSPl1I67xvhMTo5OJiYlX9I5RASci5Y4gsDvaXEpL4IXtedm5G1f3Znz62XN4/OVLeOnsVaznrnwSJynW2Bn3mBhhmP7/ldC+somCY9DtXw2NAW4sQccV2DtY4/cefQmXrze8+NIFfOib/jTedc8prPevgKup44UgFFolzo4h2KMlxq0CrtIJjoP88BsXTq5zx6QJ0g51cukfGxIvBTSthJpVBrcucWezHECeuxixSb7r3LVEpXKe6EAtoF6BnQqUilKL6HjnGNfsCGSR2APjY4buHOwEJTIkMNKC67VK3EHnknIsmZ0m8bxWzjQZw50rdsQjMJit+EnaUvcwMkAXsQNteHnk9N2sJkAlLGVSK5H1w4agQzUUvH4wrsSScrkQoRfNbmqGXXcMM08yuGE7fP5tkcoh6/O8IR1tIhFPkGgIka3caR+Q92jYNsQ+kDZHwhHRzUf/tPEg7rbLFCDbEOH42TZpJN8Tm0+GOBzoFmSYe3LfHic09h5rlLyuC6LWYZd6jUh3UFmrvagGfUr5l8qJB3Du/BX8vZ9/Ac+cuYjXLl3DTiFUAloPqxSroXmMVR9W8hXVvsKJwi2a3czA3gAYTfXP06rg9XMXcH1vH//kZ96H7/7Iw/joj30LuF3BfHANE0E47WmGScYM9QDqK72kHYQ1gALGlDBDXF4a/LAJVCaU0kGVAxl21rgEEkROJOqjCQAaeC5qGw4fefEcEgTb/eKo2xCr4VSliWIFfkoRD52dlXhX9C6BW6ZicpUJAb17igWTtGiJu8zTqZhRlRL3pURyqTzmNP9tinTbO1adfrEKWUoQUh+AIlbnJLdcSu7Y4KA5IZZMk21s1z34AIlwpEc5/jZpK9e3MOTLpvrTNReI27HEiWRJQqQe4cBNnWZ2hSxWQFQ5izVngjCqkAzWOYoh9mBpXwhde4xpAWMWfBeBZNs2cPlh7LPp9PPndpfisTxvk/BEMmEznLE4O4gytKOjoaPLnegMdHHqCAsZa7yK2WGqEAEmzDyjMeOAGWV1Er3u4l/98qN44pVL+MJr57B3sMaKJKONXIcEl1znZbHWr0Sy8FVAFG4H6Em2tMtPwvVcu7GPa9f38ZlHXgV4wh/5wW/HVHZQsAPus+gfq0oFjpQLiPX2exKt5J20wQllLi1cT0HdHSAUs2u+HbkAYg/Q71WJOuScUS+MkJBJDWYEC8iiDvGa6cWNyGav6GYcBMTuYARBn2OTyRNRDVE7XfIMaZsXgsskQsQAWE9bkPvQmdppzPht3q9lSVxMfZdVCtmoytuRVuadDdf7FJJKadAvbEHARjBjCxRRejRuBpBN0hChImnt1/82mFm/wx7IH5bRNJfWdA6cw1MoA5idqG4nxIPXls0yxU/ACIGpt/r2frb0vPG3a//SmLTxSxCGDHvOe6IbLNKa/lPuJVyAbfqSc6s3kX5LDyams9RMbkTYb8DeYcdnnn4DT756Eeev7mEioUMW64qx59tY+1cOcfgqIApHNN85Z9eRbxd34PCQUSfCNBF+9lc/jUefegEn6iF+9E98BH/4+78ZBxdfRmuHqK2DWwOjo65IjY4IAuP3ZhE1YWP3HmxkMvARFaBUWCRw7x3UICfPwiUs+d3OhDITuCiBclUCewpvX7YVIe8aEd0IVAEp+VacMBTP0mbEghZxCARYOmWHp87RcyYXUZvpv967qI5a1+yy0h95cvrE7Q9tIYLonzatXNRneAaEbVifgaipHRjS3wt0gPCw2pCC7rDZnNVu06l7YNuA/BJCdCKf1WFI32exZDmcpX+g2P2QDDZVGcu+b2MpW99zz52jVEcbeHCTKNx6PqkTp/jx2cgbiI2v9yaSQFfnUC2j27XueS+QiPJm8TMhAa2ZwVPF3ffdi9/53Bn81mdfx68++houXDvATpVMrLMyXEjvfgXh+ttuX+FE4RY7MnBK29JCAtwlLL23GecvXsO//uSzOHnffTh1z334+vcQVnXCrKkJzPtE2hqCkCSthFz+Bjs2rmkQ7CSfEgOm77Qi4UlnS/Z/5+YUe2n6a3dfHVaQECwzCocRzLxpshHcKrABgGZYi3HccAzHCu5uygxoLIHoZIsLFmxuuMyBJhQRW1Su5aRhNUq7SiSpNTa2lUdUsG1/HWYmmZnxb6g3uf3dlAkkoCmTHKbhXwznh9NX+nyWIhRpLl1SIyAsf07Dz0E9uKUP+S5LAiMWzk4LMefb5erz3DbnLp+qe6/nKjqi7w2ikLn2m0krS9gkxgXLnE1ZOrKgwCM8r3SqhSTzTCWxCXUwVidOYq8BT77wFr7w4gU89soFXD9oaIMkbqvXcbeiH1r8/pVHNb7CicLttgWn6E3c2HonTES4dPkGfuaXPw+udwM4hX/nLz+EE6cqDt66jloJFVUC2moH6ADgHRBXACugNIDW8EA0mITLyrTlfCxy1dHFHiASunEggGUrtbvABeJOCoTXTFJb2EUI1Tdr3h7p2xyQPPWBndtaEsLJqh3/KKYPBnOThF8M1GJsPEfacF2LZa4wJA0A3JqorUi/JfNcGS+wz2LAS/mi2WU0BJieM4KwoU9fNCM2zKqWi/WGyig9v0EQrFnkcEZ2R3P2N2t5XwKnB0HY7FeJ7QbtU8bDz/wWsnpT+mAob3MRbm9AnFWXeDe78L0LaceIJ7AUDEYkv6W5VAhY6mu7Xhs2lCVNMV6HABSgFsk4OwGYSSwCJ+65G5evrPHrn3gBv/3U6/jk828CdQKVgrmLy3PJcDmSINwJ8X1ntq9yorCN6xg/I62JJEedME2MT3zmSbzy6ht41z1/Dt/2rV+Hj3z7A2jra+jzHuqkuvZmZUAbJMBdT5xdEBUVJKd8AxoH98qCTIWDb/DUGpTedzaYVI2knHmjdOn04ncG5lAXlCLJ1ywGy+wYoaIwKpFhZdwYnIsG5NJLtbACdnTfNQKZgAYx6jkmU0mHBKV1vaQMfQ4NrB4ekj+f4XaNbVu3/MIJHwLZJKlo264vu3WhLavJHAQ0jru1I3bYZOS5tGX8vluiT9sikOM4s2kE9QOLZGevfOf2BJNCM6LEBtmVM+N2Dmz8dIIgH47z8vMps28etHgrhMlbfk8/h0ASAbJn5O1hRxFncVlcLRVTnbBa7WCagNVEqLWBSseaZ9DOCezsnMLvPfoGnn71LfzCp57HxesHOFkIe70NS/H64V8lyP+o9lVOFI5qyxsvWND0s2fPX8Jbl67g84+eQeEJ3/JN96KwGom5g3oBW8lANzSnnEnapyfdUgMyt0i849+xCwcjcgKUxbff1cOHE2erBIGKcodJf03uk63jha7nCPF3gUopv6t/Ew32Ba8RwMp10wL5kHmrBPdJkKjYUlQdRgGniI9A0Kjs/ZJ+ehI7/aToHDYIghuiY0HZdhpLHTBw6iQRO3MronjnVnF2b6eFoZuPJAhuiE7ShbgVG8qSL7pLM/Ys+VkYopejZ31+JAjbf1/MN3ehcBy0V7eSBhzWy+fyubQLE8yGSQtBjTmInpWmrVK8qRaS+1IkFUZDweGa8Owrl/DESxfw2vmrFlvq48Ze0xFTvykH8RXXvgaJwpLCd0Uu6vPd5EKtO+N/+Tu/gO/+8Htxz+6P4Tu+4334wAfejYMbF4XRp0kPJsdZVPHWuXfVtfMshuqeuHkp8LM4TJxOubG0HohBmqob43idxT6B6uMtVTAESNoMa16wHMHhAwCVI8+1cYTbTMQ+XXvQE+qR5zRyE92AGHjEbEcNvJgTMzuy267WuXUfRz63cfHFo0t+DQzsLpxKIY5SVQUXexN11s2mRPA6D83tJElSUfiZKr4Ckl9I1Zga3A6PVTCCkFVAW8AgMEuEQBPKlaEMGh+xdUlm6wB185BaPnwH8CCbK4lQzQWFGAU0hioR0ItUWAMYpTBKBepUUFcFdVXRCqOuKu578B488cIVfObJV/FTv/EMXj13FRMBazAOeTTVs8LN6of3YS+/OoiBta9BomBRh3KLghcxxAy//HvrA7x25hJ+9pefwP48oUx34YF7T0jE85oQkoFeOEvjwBDjsnotoTXRu2fjp3I7pDJ8eMl078PcO73QvXH5hLiMZjQoifNPPy2ALpyvuojcyTMn/PzN7sGuQiBAsoxyB/V8TeQdCwjjDDv1dCq1ADMGA2AYoAMMbpDOyhinl0ZxEuGkNG9O3yWKWTSNiNt1smSUMRmlMR1VOm84UjyOSUeiPZFmskE+1FoDetSpcsw5c7dut0gUzDh7yP7RZDUwRGKVpWyidDlSuu9UBxAxgKapHZygITESOm5AQn6WkoiBq42iY4/sd0OxqkGLSRdGIG2JnHc7jR3rRYieYDC6dVkm2CmdNI1h0eSKUOmdakNdHaJMFbRiYGcXvRY0dNTdHcyF8OK5js++eBm/+oXXcObqPq61DhSppWFlPuLYpP8P074dgvCVRTS+yonCcjOOou5JN8xwXTFTx+lzl/H//vTncOLkA3j3vQ/h/u9/lzjt7K8hfp5FL79jcbkgrYPnhr5eu6cRTN1CEIO1HWJDmp6+okFKdhim6dD6T34xffbbEmSmpTnesZAKIwitoTWpS1vZYJDfUwSVEdggFY0DejJNQyaTTKza+nr3f5ZLqUAIHhmSEAw7rmEQptg5W8kazsHFQyO4sSl4jDttezUKGdmUM7StmgFBfJb6zX6qtcXVYdu6ctTCsimWAiMOhhEGfUf/JBZuvavUYRKAhK9EbINzs1sPhvrjr0N6A+K82+/2c5uaaViMzzdsF8LoRAAlAC+V2bvEBzihHTZAf1AQEdIPWGHTi/Q9lZUknuQOxgxmwtoM3kaop466cwjaAWjVQLunwCCsOzCduBtrrnj0xbfwG09cwD/75IvoJFeyDUxAWq8xZssJbzz4ld++yonCUW28eMvWFXmXUsAADnmNX/iNT+O5F1/Bf/Gf/hV8w/vvxUP37wJo6GgoVbnsnoJnTDJQhOwWMHAwi8Z8McuzTYnRTKDaAVbjMiSFhc94cR6X+HPbY4549JKbKsgua+5ION3uxM4QL7MGkmnP7vEBQ7ZbWqFAGFvVJ3n2aV82OuPhJxE8m6XbTpzbtj9lrZKMLoiGE8qj5rztQ0oDJfUeDVx+fnhc61b1UTYIbBnUaGzGv4ZvC2SLNj1vbYxteXhEhVcrbTwdBCBGDxMPSxR8klyUUukYkkSSnY02SmbfWkoICzLbDgYAXvdAVGD6jlJs+U5sBG0lK5wroXUAa2AFqSiICZimCqo7qNNJ1GlCbw31xElMJ+7CM29ex4tvXsX/8c8+i9MXrwJ14SbsHM4t3Jq/StvXKFEA8qXdin8ooSFmvP7mRezv7+PJp88CTLj/vvtRLZe8HnrPvqj/XD2jfQYHyUj6Bvjt4Q70IoFyFgegEzoyiCnNM36htChFosjjJE7QsM1AELKnlHG1xhsvyxouobkNpoQRAW5bxxbESAazRBAsrxDCyJu0Opt9mP4fqiJhOLc6GLjzxDOSts3LQNYXjZN1Nn3L2rI5/KjmTgDLz/0nuSAR5g2ychQ6/M0IbrzH2J5aZJvROKv4goPPRMH6JpdYIqEu6/9DKgjvrM3Tko3gYx4km5OWOTVCr8EG3dV/Mq/KrGmzCUQTiCYAE4hELtvniufPXMFTL1/AM6+cw43WnIwNs9r44GjYfrW1r2GicPPGgCJGOWxXr69xfe8K/vv/4afwo3/kD+G/+s//Eh544CTuOjGhHV4GkaRRpt4BlgI6JpTbJSJwXE7tG0lXKwbJhoYOyY5TUaYyzMl/cS5s++xNqQEfP4ntYr3UpH8kuWAUqRTtuFlyP9MDm/hcJgl6OwJmeWyXSOgmaDHjw+XPjd7HXsTVdkEsN5n0hcSQCWCCzRau+uZzuE2k4DzCpqRgROWo6OLhU4aFd/i3kepiGz26yZoWNJC2wH14U8cwZAvYeHqyqUQiRiReZ0C3GW7buZtSJKmi1W92gqz/xAYiObr6JPWsWhH9PxBmtVI6Si0o0wozVxAXnDq1g7N7HS+fv4r/+18+gideOocb64YGiVNoMY28gK/JdkwUkETo9FngFmfNACKcu3wNjz97Bv/kX3weH/03P4Jv/7b3YlWrEIPDphkazdsknevFGBLczHHZnfWEhgKwB4oJMdHALArOOM84BAOddbCG8qOXTZxAUszH3UMR0aLbonSXQBpy5aTnmMb04fGqUAD3nQeHLp/UhTb9nRfgtZmTkdqL+ti0trgMei887GbM1Z/ZhkSXT95Zi4CqvvHZcn7b3HgWwt7wRfS5KQ3EWpSHJhqeG20qnPZ7NDjn92hhdKH0u01fdj3ckH1veCQSLo3qpKlUWOJAGTOXbU3zYMPXUsui9ebnNtZGqJZgnRqmHUJZVby1X/H4K2/h1584h9fOX8WNw1nrYmyTEG51Fr662zFRSM0Oh0mumbcpmhPo0rU9PPnCm/iH/9+n8Z6HH8bDH/wA3n3PhNIbcNiBiaXeL2C2xFArQTkz1jQBoIH7I1L7M3fhlpg9VMHCEHrGezyK+AAQJRoXmKTDqYkfeSJJz11sfnppCeAi3J/lj4HpnOOmKpcZbpEYCINNMDh1NnuEBRwBoi/Wd5eZM6UfG888r3QcQxAq2QwqmJGejLBIezGQlA2EmtrbZBo9nsK9thaSAm2SzhwHMMydbZq8mOvRozvqXhAhxiZBcRiYoVn/H3NRyTYhTDnL8X7U6CaANA8WjNQwhvSxYD2rwQmQV0pLxm0KQ75JXJ07WmuY5+ZENhvDKxVYvYRph0CrirM3CJ974SJ+5jefwNW9NeYeTNh2cB5LCsctNcvjNnxmHjN1wt7BIZ558UX83X/ws/jEZz+L/+xv/BXcf+oUdnoHtz1JR81NEVBKZeEZUDs0Q138M06KIQ/PXe9Qce7ZdOihf0XIvSpRbBN9iSH98QLdWUrvqjEObMF1hDpN6inUvU9zwxQpXidFFEFjur6b6tDTBLrZXLhrbQVFOCU9aAQnSQo6RUdCbhtAIAaH58b4itiScd1KbDphGWjTJjLf1pYSADMkCVvvUd3rCHA4LDFKX0a4LVU0m2SZns20cLPOwZZ5bpPgtqmvjlBpDfPmzc/yq2RuwQn5cibKBPGqIvJ8RGT2gEIOf888UjSBoJ5LmhvK3IGuPE8tYHTM3FDLCtN0ClfXOzh/eY3//ec/i+fOXMblvTUKGLUAMzt/4XD8GtYaeTsmCke0LbYwKDZE6x3r+RAvvPQ65naIZ549h29439344H276Hygl7O7esh4K8HpxtkAw41OhMHyIglN0UybhbZe87iYwe3TFqIgLq/IYgJMVxzzSFxiStcRdYpHTpYSsmYkzjdxj/7HgpFngwUMa7DPySeWJZD0iPP5CdnYa7JewyJbOHMe1RqbrPqWz7DZ15Et7ceQk+cmhGU07o67bOsyA3GGvYNH17qJx7dEQiOq+B017kZKizQXz8mVttVXvGQ69NkCSxcfKTag0jKTlY014hBSQuTgijPmPzVuhszVWs8ek3ZYCrhMeP3CPl6+cANPvnoRF67uo3X243575P5rrx0ThdttVACq6OpHSpXw2huXcfbcdfzN/+ln8NEf+TD+xn/8p9DnA3A7RLPqYs5aA5H8TW7zqC6Rf6T1hkVlo2qbWrTOMmk0pzP07uZqWWDlvtml14dYuczWE5OmAT9Wbc2IgGNKpxiyBk1BnAlBwEb/LkWL4cggN/e60WeM1c/oxMZwVVHCQBxv8/C4qaa2zMv6aS2+44TEFsMvpvi2m6k62NcaHW5LG7FsfjosFTe623+EsdCiPbZGJFDpfm5NQbEc5xZSQXrwZt1snT/p+ZUodC2aZKy5HxvyjO2e/su0ikmFxdAiOV2CQYv+sxrMnUSwXp3YAaZdrLGLn/nXj+GzL5zDCxeugplRAazTkbJ2LCFEOyYKt9s8NUQUUqgqbz7z/Gs4sVPx/gcfwA9+33vw8HsfQD+4jIoudoE6A9Qwgz1IZhcYsZpVIgdJuU1uaCxR0VQIZZpEWkhZUgdjnrNu5GU1c8W3oqkSeG7gzmjcMEHsFu78TsOk5M9ShJhA1EQSDc2SzI5IVE+1ajpsk0g6uM0S0W2iQ++BJCYpUlQTcewlcZJICBEhhYgqRct7Ai4BiTE+SVJLjCV6i/EzkzKSaDN4izlbalCOAEPztGHmUQfBoUby2IwtQ99p25Z51YyyROqWySy5FX3tI6XLxKdsUVcNTgNp4llCDDWe2a0WE91CKYR5IVAtqDSpd55x+2pRyOoi07XS4hyoAAAGaO6gdQMOZ6A1FCbsdAJNE1Ar2t334aXzN/C551/CU29cwrlr+6g0oWt1to3tOCYIQzsmCrfdjL2woC6gVJEDXn7lDObDhgkn8dBDP4aHHnwI1GeAGwp3oNwAqKMRtHCgXqsNRCWIlaxITWuYaQYKoU4NtVblxiHzsHKZKhG4C+jKOP/q4joVEeHb3Jzj6mjC2WteYJM+KKPknKjPajKoVMOadloQvR4lZmBuQhTMmKzcfoXMA6WOagcSLk9AsIlZHCExWypQIVBFdQwMSTWxIChhpF2qUHxHXY0AnacQQtMthFjCEGnLI7NZYGiluIhI5qAEoad3h3UsmsPnZm3jmJCrwkgNS6wV0dzLylSJjvTDWcI9KVxVk7jx4f00hWwvyUAcf/UnhuWXyJlkdoahT5cQlBi4dwXlH1qBU7zyMDdgPYv9rhMqF6xQQLSDqzv34/TlG/iVR17FC+cv4/L+jFU5iZlmzKZD9U3fAm864vOvkXZMFO6gUfrHAObegU5Y1YoLFy/jY7/zKeye2MOjj30D/oO/9idRasP1G5dxaiJJVAZBYmyppkmNuxWWt0HTYYi6gBoioVzt6LWiGGHQiRDgyboG9rd1SHa/JIXweIG5z+gMVJq86hoX1fMOOfKzskbVIk0N6BUxpumboWqCUtDnQKAlVX0b4SpJPW57H4z4uXoJ7sb7di6zeYJZmoQ7f/umk4Ug582vjGPfplYCjtZqLZ+dpklgTNFX71HrYWkDohJBYEtisO2zZXP1lbnFLh+7wz1w9V9SKQ0ugPZxOr+NgDURusi7YKqgegLX18Df//nP4rHXL+ELr18Cd2AqFQcd6uk2QbwzbkYVvrbbMVEAsJ01WHxmhzN/pJ8xCOu5YX99iGdeeAO1AD92+hIevPcE7ju5C6Z9wZn6r4gFWXXaFvSj4wlrhQKpX+CBY70rQZFzzYUkqSkZQgvuj5XLpd4H/35j0YJ8KEenleHYDIIwFdnY8ieRTI8Xfcvv7MiFnYNl6HyL+pErAG+F/IZdydjV1U0RfHezdlM0YOA7aiZbXhqmgoTQFlz01txB+vnNOHI/gTdZ2jIC2fo028PSdkElEdQj7Bm3Y2MgG/AmE8z+AYtvNsYbiEKub42F6zPgrtmdxBuJqaDSCheuH+LcjTWefO0CXrt4HfvrhkoiLXdY6dPE1h0loX2N04ljorAVCWy5KAip1hhT+3xWj4apFnzu8Vfx7Ivn8N73vAd/9Ae+FX/xz3wveO8G+noPBRqg1QDWjDClM4iqlmSwizpJdahKmNczem+axI7VaCc6WloV5ZJ0LvkyM8QeQfDDzyw55Is90GeAGa2xVpRTQkQsjJpLIEtY5HGEwHlUnV0oUlfavlaiw5rPEqgLScGpq/+O1A9ufkltnmZwv13Rf9Ah3U4bpaXczzZC4txvKaiJYI3ZRLcThjyiv8o3fxYgWM0iCSsJbj9SR5ikZixBnu+4Bpu7LnGcVzb+M29Uf2PAajGBsSyfuZh1khIGgZdYEyTmGah9h4BWCOtKmHtFKTsoOyfxqSdexGOvXcDHX3oT687YpYIDLpi91snbkyS/1toxUdh6SrbzNpspJRiZ2+3qBXG4bvi133kM1/bWuPtd9+F7/tApPHDPSayvnEfhGRPPYvBidT8lBqEBVN1bA6TSQDsEzUDnBpD49hM3lToiT6ddJsOJ4fECN/LK3+oNUwAxJIi6yrvgtDbrR42tzQ2qwok6suhdJHKrx8BdDeFQVZESDqKIyF6qf3Syns/IPuwaEZyeGVUc/j9ZBkMS5W0TP5K0Fjl60rrz846MEnVSxJV5eRfQkBF2IP4yPL+JfO+kxsLNnhX8KUq4mms9pTHdFlFM8F30lwkcmSRE9ifMnTob1gGKOBqfKMIqzIjsvwUB+HS+4gyPEq8B14cqRRMTM0rZRSkrlJOncPHqAV547Sw+cfoCnjt/GR1hVO5D3LL924hjPm6pHROFO2hHkw85/I0lTfDcGJ997EUwTXjf+9+Pr3/fd+K++96F1q+BeI2CgsYHYBbvJCoWfZO8gNQFleok17J3zQqaomR7eCz5dXZkkBCaIWjSuZL6iFt94sSdR8XD4AbFtdJiCmyKemmdU2xpbPZfqUp0qXlEDRL8AmnzMG/p20ogGVhiiMx9B9EIopJaAgX5/NNnGP8eMWqMR9r/Jlc9SgtORrKO/IjGi7W83WaeWxQTGojn0AxhL8SqUThMMRH6P9NiyofCTIhtYSnBqFJvUAPpmAOg7WeHpLaItdgf3Yg8xE4lEmi1FEjo0ylc2D/AI6+cxxPnruDVyzfQ6y6YgLnPaZ2ZpUuE/pg4bLRjovBFbnI3GLVUPPXsK/if/4//D/XgMn74+74ZP/r9H0Rpe1jvvQVgDaLuHi1ybvXSMEl4ZwFKPYnSGsrhGvO8xjzPaCzc88SSXtvPvbL74raaUSiFCJBTEivXJ1kuwrMGgKi09FWZo/5poj7g9gTxlAKIOLhLRUxlmjx9QWDhuPRDy1wijLkkAUsJwjDCOzxdhu+OuutLYsQjitj67KIvTg8WI6yASz6lCiJrFteB+H7QjXNUvT5qqreDtyTNdDYghxRnLszjCy5HDp3bZ6TurpWqnxsRAMVO1dUehm5uykoYwLCMKAx22LTSIs9XrEwHFfUpFUKhKufNpVNJzGiJt8GENjPW64a6WoEY+N1HX8Ljr53Hrz/1MvZbw0TAYV8jokNiZePY+ecxYcjtmCjccdu8ZIMYnhDE4eGMg4MrePSJVzAVwrd90wO450THiWnSRKrG+UdxFkHwyShYJ/AkpQcJHaSxC6yIPIy8NLB6RAn7mcFXMHlM1N5NGVHlSUI2/5qfvBm0B6OqvtfBKKqDIdJ6tqq/9rUcVdA4c6RbvhN3z1iizymBfPPdpbiwGI8DaWwSA+WCbX2Aq7yCApG/HGTWaHpw6uOwNPz0d44w7A5rzUJH5sqNQCszQBr9ZWdyK1EgObMhmcVsTKIkIlCqu2AqIYK43g55y9VmJOdjozc/D6TqQz9bvkUES4LHWo1wrAWuBLRLoFolwuW9Q1y6MuOZMxfwysXLuHa49j3xCJ4F8V/8giAIR4lzX5vE4pgo3FHLbOZ4uMREq5yrIsaiiPFnP/YIPvXIC/i2b3w3vv2b78e3fejdOLx2zYOguhprLRqYQCIbTwXYXclYO1L3uIAx93VwbomQBBGwsNDg2J0gJMJAlouJVczmxEFyiTujPvBEVbj34eYzWpvRepdEZJRSFZQCYALMyKmwGUGaEO0S1hmxEm2k71juwsZWZYNo3j6Hl/SgpAwhihjCM146ESBdF28QYn2rQ9fNKJV0j8ZZZmNzAVSNdzQCohKEecndu4cXEcpk0oKMv9Uhy9e3qVf3dVpEcRWAefwGC5EpXGU+DUCXuBuTGPJSPKWI1oyW49djVMrMCwkxI/MkSzDljt4b5v0ZhQpO7uzgyTcu4smXLuGXH38BVw/m0aGibBEpG7Y0G/trs5jOUe2YKNxR462/M7IpiwFuYBZXOAKhc8eFq9fxd37qN/EjP/jt+AvlB/D1996Dk9MJrG9IsfBSCNSLqG0aCUEoBZj04pQdFCKspopSD0Ba2U0uZxdErWUY/d57Guo07eF3+6P63HPahFDLkGEmrbyWOmKJc6DatRaDucjqMz31ZynCgSBQzg4upuRIubuB0nXUHHPdukWMSAUCwAzlDgDT2dgcTVLrSh5SfvJudastHbhttlmcs/DDCeYgUXkhjaXztjWyJuUrS67Wp20kWt/RQEJCEakA8MAwIpKa2IZfvRcaflh/su4xFkWiaTQo07h12FpVWmElziz1KdgjkOU79rQrNihLfEBVdRIaemep16EOAWKklwSCts7GHY075taxXh+i9Ya77rkXV/Y6nj9zA7/wzFk8+vx5XGsFa6pCOKCpNFjt2ZTo6CZ0F/+Om7VjonDHbfsBiqOl/1c3VeNAr+8d4Nc/8TTKzl340Ld8GPd9+93YvXuF1m6gFEVGXS57xNaQ2xZQJuUqSQjCugGHa9XtCmEQ7t6kAbrFWU+IiOy9EsFyQNJ/ByGg9Je1UrQMojfl8hmOTAxR+y3NEssW8Mpj6dJmt05TD7yNuxy595IazJIPkuWOShOhRIAM2apLERG5HUikBDNGK0EYVDeMLCdJfxod4qUst8xXCYIdB3cvrZHmwoiC25Icrmn8oOEALJke+Rh5b932gSTIucTGKF2A2ElgxhR1GIKoyzw4gKaJHZX96A0D9WKgN5GuqAOtC1FY9xlzW6O3jrZa4fK1Qzz+5nV85vRb+Pzrl7BTdsAomNEj3yOT8hG3OiDHEsK2dkwUviRNL5tyqHax9g+B3/7kU3j2udP4b/76T+L7v+Pr8dC970bv+ziY93GCCbVDcrpMDKxYSku5KKJG4FLcWDjkkxeWNzjwki4dpc+3T/fodkfM1JbO/O6lTpZqnSNYOufwE/LI07nV1LdPL7P3iIjvIY3HUe9CcVkg1vDYgnneKiLVvdcxheAcBcjtnycaJvp4lQwkxYoi4pICv5Zzvcka4iOTBMiJz+b7IW11JZItfMMcrCYhuk6fQ6DynoYzCzdsAwK/DuBw3XDYGvbaGqd2drDaKfjs8xfxmefO4+/+whO4dLDGPszDSOQcg9Ux7//7a8dE4YveRu7Hfpi74N7eAd48N+PTj72C1oGP/uDX40RdYTWJeMDqUURNuf+WVBBJPz2oT0brHgbjc+bO7YGbYdIkYWwYc90mkDh847i3wQE2j83mkkC+yRjHi98XfWTEdsRX/rHq3IWDl/9ZCc8Bh5pxfNsEDOPZfLdjzagipwgWZlil9Bm2EQblnpdrocUfFMhfphGo0BBvlig24GYj3YRg+FIXEop7BHH85PTe2IHNhTxmhNVe1k3l6csSrt7Ufb3L8+s1o4FQ6g4OZsLhPuNTz53DYy9fwoXrB2iQ7DBBqgimu2P/77i9nXZMFL7YzZFG+kAP/KpIls8b+w3/8Oc+hU9+4VV854f/Gh68dwcnThWgXdf0zpPYFRoD5mqtEaKG9L2oi18quazUu3K+SEh3wLxpnreePmdEADiSN4KwvZPb499NBXTTAK6j0lfQFlAHXx16+4SMxa7RE+vNia0XjtUL2SwIjttITArcBkAjQGw1MZJZNXkejYiRY55HLNSGlmL01lVM0qQbQfgyTqFIOrg9md3Au+tQmXGIwEhBsGE168wRg5ZVTToloYFKFFmCCrl39Lmjt6YEWSUektTszEBrHb0RegP21wxMFbunTuHcxUO8fn4Pf+/XnsOZKzewLoQTzJgA7IHRQQAXVWESOmaF3DFheDvtmCh8sRtv/AJALoqlw6hU8Na1q3julYa//Xd/EX/shz6Mj/7Id+LuWjDxIWrvKOuOcsBAWYsetkENoADmDmrdtUHkRkAbmkUO5xKqG888mZ6xaervhQh9iy3CeTFHLuSv5i7lD8fGqYMN7Hr7bal7IFN3xAMEDF5KQmkMgRLAmgOKOVRFbVEH1eZJpIHePNbCNvoBG9908Gl6yUgvSLUnN8wMgjFeYWPJSQIUw6vEH3C1finBkX03PFMqATS3YaycW0hSo2SWXmGWS55670oI3G25xzPqoWbnkBXu3OV5J7DG1DCcgBQiMWURYdbqdOt5DeYVGEIM1gAu7TX8ymOv4feefhMXr+9jVsl5RlE+yUp+9nRUwrPqqNN2TCyObsdE4UvegqeUuE05kPsHB7hwaY2Pf+ppvO+hh/BHf+gkdmlf8E8/wNQYpWl6YGLJI2NVpjRJ3sIPCBvSgKs7bnYF4vI4wgt8E1odTrpjfza1bcj+loa+22s3Tw1BPnnyPwdRx6UBIgrj47Y+k3pnVCWx0YUEJ4RN3x6LCQPmb49tRlif+c2Rkw8EzWJbRqRt9C8RSAa8oJI8Ku7AxfMYpTOTjMcmaYRqLk6tpeFeqmRceoqFK7iMiCwWuAC9ESmRPDpa747ap9UKc2fsHazxzJuX8akX3sSNw9njOztJkrs8vtWe3qx8fdzupBHfSfKV43bcjttxO25f1a3c+pHjdtyO23E7bl8r7ZgoHLfjdtyO23HzdkwUjttxO27H7bh5OyYKx+24Hbfjdty8HROF43bcjttxO27ejonCcTtux+24HTdvx0ThuB2343bcjpu3Y6Jw3I7bcTtux83bMVE4bsftuB234+bt/wceEO5xX3X1gwAAAABJRU5ErkJggg==\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"import os\n",
"import xml.etree.ElementTree as ET\n",
"\n",
"# Directory containing XML files\n",
"xml_folder = \"/content/MISAHUB/WCEBleedGen/bleeding/Bounding boxes/XML\"\n",
"\n",
"# Directory to save TXT files\n",
"txt_folder = \"/content/MISAHUB/WCEBleedGen/bleeding/Bounding boxes/TXT\"\n",
"\n",
"# Create the TXT folder if it doesn't exist\n",
"os.makedirs(txt_folder, exist_ok=True)\n",
"\n",
"# Iterate through XML files in the folder\n",
"for xml_filename in os.listdir(xml_folder):\n",
" if xml_filename.endswith(\".xml\"):\n",
" # Construct the full paths for XML and TXT files\n",
" xml_path = os.path.join(xml_folder, xml_filename)\n",
" txt_filename = os.path.splitext(xml_filename)[0] + \".txt\"\n",
" txt_path = os.path.join(txt_folder, txt_filename)\n",
"\n",
" # Parse the XML file\n",
" tree = ET.parse(xml_path)\n",
" root = tree.getroot()\n",
"\n",
" # Open the TXT file for writing\n",
" with open(txt_path, \"w\") as txt_file:\n",
" # Loop through object elements in the XML\n",
" for obj in root.findall('object'):\n",
" # Extract bounding box coordinates\n",
" xmin = int(obj.find('bndbox/xmin').text)\n",
" ymin = int(obj.find('bndbox/ymin').text)\n",
" xmax = int(obj.find('bndbox/xmax').text)\n",
" ymax = int(obj.find('bndbox/ymax').text)\n",
"\n",
" # Write the coordinates to the TXT file\n",
" txt_file.write(f\"{xmin} {ymin} {xmax} {ymax}\\n\")\n",
"\n",
" print(f\"Converted {xml_filename} to {txt_filename}\")\n",
"\n",
"print(\"Conversion complete.\")\n"
],
"metadata": {
"id": "KoqxZP0hVlm8"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# **Detecting Bleeding edges from correctly classified images Using MaskedRCNN**"
],
"metadata": {
"id": "ofEh9VUI4Whn"
}
},
{
"cell_type": "markdown",
"source": [
"# **Load Dataset**"
],
"metadata": {
"id": "l-1hSEBY7Lfz"
}
},
{
"cell_type": "code",
"source": [
"import numpy as np\n",
"import os\n",
"from PIL import Image\n",
"import matplotlib.pyplot as plt\n",
"\n",
"import torch\n",
"import torchvision\n",
"from torchvision import transforms as T\n",
"from torchvision.models.detection.faster_rcnn import FastRCNNPredictor\n",
"from torchvision.models.detection.mask_rcnn import MaskRCNNPredictor"
],
"metadata": {
"id": "Mar3Hlyd4fpU"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"images = sorted(os.listdir(\"/content/MISAHUB/WCEBleedGen/bleeding/Images\"))\n",
"masks = sorted(os.listdir(\"/content/MISAHUB/WCEBleedGen/bleeding/Annotations\"))"
],
"metadata": {
"id": "nvzuvpWA735-"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"img = Image.open(\"/content/MISAHUB/WCEBleedGen/bleeding/Images/\" + images[0]).convert(\"RGB\")\n",
"mask = Image.open(\"/content/MISAHUB/WCEBleedGen/bleeding/Annotations/\" + masks[0])"
],
"metadata": {
"id": "qC3691af9Ccm"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"img"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 241
},
"id": "aXRJmpTc9Cby",
"outputId": "42061b28-1748-4538-f559-d4e899108336"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<PIL.Image.Image image mode=RGB size=224x224>"
],
"image/png": "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\n"
},
"metadata": {},
"execution_count": 12
}
]
},
{
"cell_type": "code",
"source": [
"mask"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 241
},
"id": "tKr1DPrv97_0",
"outputId": "6dd8acb7-ffcf-4624-b9f2-c0c68cffb481"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<PIL.PngImagePlugin.PngImageFile image mode=1 size=224x224>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAOAAAADgAQAAAAAyVldMAAAAMUlEQVR4nO3KsQ0AIBADsYiG/Tdis7AB9UvY7V0CAADMsdu2J1mvSxRFURT/jQAwwwUvcwZBlbFXyQAAAABJRU5ErkJggg==\n"
},
"metadata": {},
"execution_count": 13
}
]
},
{
"cell_type": "code",
"source": [
"np.unique(mask)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "RBJndlyG-IDE",
"outputId": "cabf2d4a-aae6-4069-d430-fca081e35392"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([False, True])"
]
},
"metadata": {},
"execution_count": 15
}
]
},
{
"cell_type": "code",
"source": [
"class CustDat(torch.utils.data.Dataset):\n",
" def __init__(self , images , masks):\n",
" self.imgs = images\n",
" self.masks = masks\n",
"\n",
" def __getitem__(self , idx):\n",
" img = Image.open(\"/content/MISAHUB/WCEBleedGen/bleeding/Images/\" + self.imgs[idx]).convert(\"RGB\")\n",
" mask = Image.open(\"/content/MISAHUB/WCEBleedGen/bleeding/Annotations/\" + self.masks[idx])\n",
" mask = np.array(mask)\n",
" obj_ids = np.unique(mask)\n",
" obj_ids = obj_ids[1:]\n",
" num_objs = len(obj_ids)\n",
" masks = np.zeros((num_objs , mask.shape[0] , mask.shape[1]))\n",
" for i in range(num_objs):\n",
" masks[i][mask == i+1] = True\n",
" boxes = []\n",
" for i in range(num_objs):\n",
" pos = np.where(masks[i])\n",
" xmin = np.min(pos[1])\n",
" xmax = np.max(pos[1])\n",
" ymin = np.min(pos[0])\n",
" ymax = np.max(pos[0])\n",
" boxes.append([xmin , ymin , xmax , ymax])\n",
" boxes = torch.as_tensor(boxes , dtype = torch.float32)\n",
" labels = torch.ones((num_objs,) , dtype = torch.int64)\n",
" masks = torch.as_tensor(masks , dtype = torch.uint8)\n",
"\n",
" target = {}\n",
" target[\"boxes\"] = boxes\n",
" target[\"labels\"] = labels\n",
" target[\"masks\"] = masks\n",
" return T.ToTensor()(img) , target\n",
"\n",
" def __len__(self):\n",
" return len(self.imgs)"
],
"metadata": {
"id": "zt0I70ZlDlkg"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"model = torchvision.models.detection.maskrcnn_resnet50_fpn()\n",
"in_features = model.roi_heads.box_predictor.cls_score.in_features\n",
"model.roi_heads.box_predictor = FastRCNNPredictor(in_features , 2)\n",
"in_features_mask = model.roi_heads.mask_predictor.conv5_mask.in_channels\n",
"hidden_layer = 256\n",
"model.roi_heads.mask_predictor = MaskRCNNPredictor(in_features_mask , hidden_layer , 2)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Tuguet74D4WG",
"outputId": "f2cf517a-1d8b-4c5a-cb60-abfd174fdeb2"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"Downloading: \"https://download.pytorch.org/models/resnet50-0676ba61.pth\" to /root/.cache/torch/hub/checkpoints/resnet50-0676ba61.pth\n",
"100%|██████████| 97.8M/97.8M [00:02<00:00, 51.1MB/s]\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"transform = T.ToTensor()"
],
"metadata": {
"id": "VAAT8VL_D8IH"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"def custom_collate(data):\n",
" return data"
],
"metadata": {
"id": "aWDkpiaqD-5r"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# Splitting"
],
"metadata": {
"id": "X3VaRrCcFYkG"
}
},
{
"cell_type": "code",
"source": [
"images = sorted(os.listdir(\"/content/MISAHUB/WCEBleedGen/bleeding/Images\"))\n",
"masks = sorted(os.listdir(\"/content/MISAHUB/WCEBleedGen/bleeding/Annotations\"))\n",
"num = int(0.9 * len(images))\n",
"num = num if num % 2 == 0 else num + 1\n",
"train_imgs_inds = np.random.choice(range(len(images)) , num , replace = False)\n",
"val_imgs_inds = np.setdiff1d(range(len(images)) , train_imgs_inds)\n",
"train_imgs = np.array(images)[train_imgs_inds]\n",
"val_imgs = np.array(images)[val_imgs_inds]\n",
"train_masks = np.array(masks)[train_imgs_inds]\n",
"val_masks = np.array(masks)[val_imgs_inds]\n"
],
"metadata": {
"id": "C_VzCMkhECEO"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"train_dl = torch.utils.data.DataLoader(CustDat(train_imgs , train_masks) ,\n",
" batch_size = 2 ,\n",
" shuffle = True ,\n",
" collate_fn = custom_collate ,\n",
" num_workers = 1 ,\n",
" pin_memory = True if torch.cuda.is_available() else False)\n",
"val_dl = torch.utils.data.DataLoader(CustDat(val_imgs , val_masks) ,\n",
" batch_size = 2 ,\n",
" shuffle = True ,\n",
" collate_fn = custom_collate ,\n",
" num_workers = 1 ,\n",
" pin_memory = True if torch.cuda.is_available() else False)"
],
"metadata": {
"id": "xNkkXFm_EKqt"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
"device"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "5udKwEr9ENdG",
"outputId": "cb32c909-56ac-4fe5-8878-0c0f4ccec80d"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"device(type='cuda')"
]
},
"metadata": {},
"execution_count": 22
}
]
},
{
"cell_type": "code",
"source": [
"model.to(device)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "VpOAXJ5REPgs",
"outputId": "3fc951f6-a0fa-4896-cc1a-95dc0b411686"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"MaskRCNN(\n",
" (transform): GeneralizedRCNNTransform(\n",
" Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])\n",
" Resize(min_size=(800,), max_size=1333, mode='bilinear')\n",
" )\n",
" (backbone): BackboneWithFPN(\n",
" (body): IntermediateLayerGetter(\n",
" (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)\n",
" (bn1): FrozenBatchNorm2d(64, eps=1e-05)\n",
" (relu): ReLU(inplace=True)\n",
" (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
" (layer1): Sequential(\n",
" (0): Bottleneck(\n",
" (conv1): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn1): FrozenBatchNorm2d(64, eps=1e-05)\n",
" (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (bn2): FrozenBatchNorm2d(64, eps=1e-05)\n",
" (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn3): FrozenBatchNorm2d(256, eps=1e-05)\n",
" (relu): ReLU(inplace=True)\n",
" (downsample): Sequential(\n",
" (0): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (1): FrozenBatchNorm2d(256, eps=1e-05)\n",
" )\n",
" )\n",
" (1): Bottleneck(\n",
" (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn1): FrozenBatchNorm2d(64, eps=1e-05)\n",
" (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (bn2): FrozenBatchNorm2d(64, eps=1e-05)\n",
" (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn3): FrozenBatchNorm2d(256, eps=1e-05)\n",
" (relu): ReLU(inplace=True)\n",
" )\n",
" (2): Bottleneck(\n",
" (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn1): FrozenBatchNorm2d(64, eps=1e-05)\n",
" (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (bn2): FrozenBatchNorm2d(64, eps=1e-05)\n",
" (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn3): FrozenBatchNorm2d(256, eps=1e-05)\n",
" (relu): ReLU(inplace=True)\n",
" )\n",
" )\n",
" (layer2): Sequential(\n",
" (0): Bottleneck(\n",
" (conv1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn1): FrozenBatchNorm2d(128, eps=1e-05)\n",
" (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
" (bn2): FrozenBatchNorm2d(128, eps=1e-05)\n",
" (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn3): FrozenBatchNorm2d(512, eps=1e-05)\n",
" (relu): ReLU(inplace=True)\n",
" (downsample): Sequential(\n",
" (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
" (1): FrozenBatchNorm2d(512, eps=1e-05)\n",
" )\n",
" )\n",
" (1): Bottleneck(\n",
" (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn1): FrozenBatchNorm2d(128, eps=1e-05)\n",
" (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (bn2): FrozenBatchNorm2d(128, eps=1e-05)\n",
" (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn3): FrozenBatchNorm2d(512, eps=1e-05)\n",
" (relu): ReLU(inplace=True)\n",
" )\n",
" (2): Bottleneck(\n",
" (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn1): FrozenBatchNorm2d(128, eps=1e-05)\n",
" (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (bn2): FrozenBatchNorm2d(128, eps=1e-05)\n",
" (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn3): FrozenBatchNorm2d(512, eps=1e-05)\n",
" (relu): ReLU(inplace=True)\n",
" )\n",
" (3): Bottleneck(\n",
" (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn1): FrozenBatchNorm2d(128, eps=1e-05)\n",
" (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (bn2): FrozenBatchNorm2d(128, eps=1e-05)\n",
" (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn3): FrozenBatchNorm2d(512, eps=1e-05)\n",
" (relu): ReLU(inplace=True)\n",
" )\n",
" )\n",
" (layer3): Sequential(\n",
" (0): Bottleneck(\n",
" (conv1): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn1): FrozenBatchNorm2d(256, eps=1e-05)\n",
" (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
" (bn2): FrozenBatchNorm2d(256, eps=1e-05)\n",
" (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn3): FrozenBatchNorm2d(1024, eps=1e-05)\n",
" (relu): ReLU(inplace=True)\n",
" (downsample): Sequential(\n",
" (0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
" (1): FrozenBatchNorm2d(1024, eps=1e-05)\n",
" )\n",
" )\n",
" (1): Bottleneck(\n",
" (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn1): FrozenBatchNorm2d(256, eps=1e-05)\n",
" (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (bn2): FrozenBatchNorm2d(256, eps=1e-05)\n",
" (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn3): FrozenBatchNorm2d(1024, eps=1e-05)\n",
" (relu): ReLU(inplace=True)\n",
" )\n",
" (2): Bottleneck(\n",
" (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn1): FrozenBatchNorm2d(256, eps=1e-05)\n",
" (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (bn2): FrozenBatchNorm2d(256, eps=1e-05)\n",
" (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn3): FrozenBatchNorm2d(1024, eps=1e-05)\n",
" (relu): ReLU(inplace=True)\n",
" )\n",
" (3): Bottleneck(\n",
" (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn1): FrozenBatchNorm2d(256, eps=1e-05)\n",
" (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (bn2): FrozenBatchNorm2d(256, eps=1e-05)\n",
" (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn3): FrozenBatchNorm2d(1024, eps=1e-05)\n",
" (relu): ReLU(inplace=True)\n",
" )\n",
" (4): Bottleneck(\n",
" (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn1): FrozenBatchNorm2d(256, eps=1e-05)\n",
" (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (bn2): FrozenBatchNorm2d(256, eps=1e-05)\n",
" (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn3): FrozenBatchNorm2d(1024, eps=1e-05)\n",
" (relu): ReLU(inplace=True)\n",
" )\n",
" (5): Bottleneck(\n",
" (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn1): FrozenBatchNorm2d(256, eps=1e-05)\n",
" (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (bn2): FrozenBatchNorm2d(256, eps=1e-05)\n",
" (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn3): FrozenBatchNorm2d(1024, eps=1e-05)\n",
" (relu): ReLU(inplace=True)\n",
" )\n",
" )\n",
" (layer4): Sequential(\n",
" (0): Bottleneck(\n",
" (conv1): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn1): FrozenBatchNorm2d(512, eps=1e-05)\n",
" (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
" (bn2): FrozenBatchNorm2d(512, eps=1e-05)\n",
" (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn3): FrozenBatchNorm2d(2048, eps=1e-05)\n",
" (relu): ReLU(inplace=True)\n",
" (downsample): Sequential(\n",
" (0): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
" (1): FrozenBatchNorm2d(2048, eps=1e-05)\n",
" )\n",
" )\n",
" (1): Bottleneck(\n",
" (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn1): FrozenBatchNorm2d(512, eps=1e-05)\n",
" (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (bn2): FrozenBatchNorm2d(512, eps=1e-05)\n",
" (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn3): FrozenBatchNorm2d(2048, eps=1e-05)\n",
" (relu): ReLU(inplace=True)\n",
" )\n",
" (2): Bottleneck(\n",
" (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn1): FrozenBatchNorm2d(512, eps=1e-05)\n",
" (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (bn2): FrozenBatchNorm2d(512, eps=1e-05)\n",
" (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (bn3): FrozenBatchNorm2d(2048, eps=1e-05)\n",
" (relu): ReLU(inplace=True)\n",
" )\n",
" )\n",
" )\n",
" (fpn): FeaturePyramidNetwork(\n",
" (inner_blocks): ModuleList(\n",
" (0): Conv2dNormActivation(\n",
" (0): Conv2d(256, 256, kernel_size=(1, 1), stride=(1, 1))\n",
" )\n",
" (1): Conv2dNormActivation(\n",
" (0): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1))\n",
" )\n",
" (2): Conv2dNormActivation(\n",
" (0): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))\n",
" )\n",
" (3): Conv2dNormActivation(\n",
" (0): Conv2d(2048, 256, kernel_size=(1, 1), stride=(1, 1))\n",
" )\n",
" )\n",
" (layer_blocks): ModuleList(\n",
" (0-3): 4 x Conv2dNormActivation(\n",
" (0): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
" )\n",
" )\n",
" (extra_blocks): LastLevelMaxPool()\n",
" )\n",
" )\n",
" (rpn): RegionProposalNetwork(\n",
" (anchor_generator): AnchorGenerator()\n",
" (head): RPNHead(\n",
" (conv): Sequential(\n",
" (0): Conv2dNormActivation(\n",
" (0): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
" (1): ReLU(inplace=True)\n",
" )\n",
" )\n",
" (cls_logits): Conv2d(256, 3, kernel_size=(1, 1), stride=(1, 1))\n",
" (bbox_pred): Conv2d(256, 12, kernel_size=(1, 1), stride=(1, 1))\n",
" )\n",
" )\n",
" (roi_heads): RoIHeads(\n",
" (box_roi_pool): MultiScaleRoIAlign(featmap_names=['0', '1', '2', '3'], output_size=(7, 7), sampling_ratio=2)\n",
" (box_head): TwoMLPHead(\n",
" (fc6): Linear(in_features=12544, out_features=1024, bias=True)\n",
" (fc7): Linear(in_features=1024, out_features=1024, bias=True)\n",
" )\n",
" (box_predictor): FastRCNNPredictor(\n",
" (cls_score): Linear(in_features=1024, out_features=2, bias=True)\n",
" (bbox_pred): Linear(in_features=1024, out_features=8, bias=True)\n",
" )\n",
" (mask_roi_pool): MultiScaleRoIAlign(featmap_names=['0', '1', '2', '3'], output_size=(14, 14), sampling_ratio=2)\n",
" (mask_head): MaskRCNNHeads(\n",
" (0): Conv2dNormActivation(\n",
" (0): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
" (1): ReLU(inplace=True)\n",
" )\n",
" (1): Conv2dNormActivation(\n",
" (0): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
" (1): ReLU(inplace=True)\n",
" )\n",
" (2): Conv2dNormActivation(\n",
" (0): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
" (1): ReLU(inplace=True)\n",
" )\n",
" (3): Conv2dNormActivation(\n",
" (0): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
" (1): ReLU(inplace=True)\n",
" )\n",
" )\n",
" (mask_predictor): MaskRCNNPredictor(\n",
" (conv5_mask): ConvTranspose2d(256, 256, kernel_size=(2, 2), stride=(2, 2))\n",
" (relu): ReLU(inplace=True)\n",
" (mask_fcn_logits): Conv2d(256, 2, kernel_size=(1, 1), stride=(1, 1))\n",
" )\n",
" )\n",
")"
]
},
"metadata": {},
"execution_count": 23
}
]
},
{
"cell_type": "code",
"source": [
"params = [p for p in model.parameters() if p.requires_grad]"
],
"metadata": {
"id": "qObrhmmqERNz"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"optimizer = torch.optim.SGD(params, lr=0.005, momentum=0.9, weight_decay=0.0005)"
],
"metadata": {
"id": "IyzITiOhEVQz"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# Training"
],
"metadata": {
"id": "HQZ3bg9GFb0p"
}
},
{
"cell_type": "code",
"source": [
"all_train_losses = []\n",
"all_val_losses = []\n",
"flag = False\n",
"for epoch in range(10):\n",
" train_epoch_loss = 0\n",
" val_epoch_loss = 0\n",
" model.train()\n",
" for i , dt in enumerate(train_dl):\n",
" imgs = [dt[0][0].to(device) , dt[1][0].to(device)]\n",
" targ = [dt[0][1] , dt[1][1]]\n",
" targets = [{k: v.to(device) for k, v in t.items()} for t in targ]\n",
" loss = model(imgs , targets)\n",
" if not flag:\n",
" print(loss)\n",
" flag = True\n",
" losses = sum([l for l in loss.values()])\n",
" train_epoch_loss += losses.cpu().detach().numpy()\n",
" optimizer.zero_grad()\n",
" losses.backward()\n",
" optimizer.step()\n",
" all_train_losses.append(train_epoch_loss)\n",
" with torch.no_grad():\n",
" for j , dt in enumerate(val_dl):\n",
" imgs = [dt[0][0].to(device) , dt[1][0].to(device)]\n",
" targ = [dt[0][1] , dt[1][1]]\n",
" targets = [{k: v.to(device) for k, v in t.items()} for t in targ]\n",
" loss = model(imgs , targets)\n",
" losses = sum([l for l in loss.values()])\n",
" val_epoch_loss += losses.cpu().detach().numpy()\n",
" all_val_losses.append(val_epoch_loss)\n",
" print(epoch , \" \" , train_epoch_loss , \" \" , val_epoch_loss)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 722
},
"id": "yZuIwZdxEXDf",
"outputId": "148bcda7-cdb0-4bbc-c30f-542ae54dd98d"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"{'loss_classifier': tensor(0.6094, device='cuda:0', grad_fn=<NllLossBackward0>), 'loss_box_reg': tensor(0.0303, device='cuda:0', grad_fn=<DivBackward0>), 'loss_mask': tensor(2.0514, device='cuda:0',\n",
" grad_fn=<BinaryCrossEntropyWithLogitsBackward0>), 'loss_objectness': tensor(0.6962, device='cuda:0',\n",
" grad_fn=<BinaryCrossEntropyWithLogitsBackward0>), 'loss_rpn_box_reg': tensor(0.0181, device='cuda:0', grad_fn=<DivBackward0>)}\n"
]
},
{
"output_type": "error",
"ename": "ValueError",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-26-20da855f622a>\u001b[0m in \u001b[0;36m<cell line: 4>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mval_epoch_loss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;34m,\u001b[0m \u001b[0mdt\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtrain_dl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0mimgs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mdt\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdevice\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m,\u001b[0m \u001b[0mdt\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdevice\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0mtarg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mdt\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m,\u001b[0m \u001b[0mdt\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/utils/data/dataloader.py\u001b[0m in \u001b[0;36m__next__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 631\u001b[0m \u001b[0;31m# TODO(https://github.com/pytorch/pytorch/issues/76750)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 632\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_reset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# type: ignore[call-arg]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 633\u001b[0;31m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_next_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 634\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_num_yielded\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 635\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_dataset_kind\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0m_DatasetKind\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mIterable\u001b[0m \u001b[0;32mand\u001b[0m\u001b[0;31m \u001b[0m\u001b[0;31m\\\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/utils/data/dataloader.py\u001b[0m in \u001b[0;36m_next_data\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1343\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1344\u001b[0m \u001b[0;32mdel\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_task_info\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0midx\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1345\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_process_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1346\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1347\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_try_put_index\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/utils/data/dataloader.py\u001b[0m in \u001b[0;36m_process_data\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 1369\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_try_put_index\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1370\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mExceptionWrapper\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1371\u001b[0;31m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreraise\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1372\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1373\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/_utils.py\u001b[0m in \u001b[0;36mreraise\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 642\u001b[0m \u001b[0;31m# instantiate since we don't know how to\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 643\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mRuntimeError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 644\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mexception\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 645\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 646\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mValueError\u001b[0m: Caught ValueError in DataLoader worker process 0.\nOriginal Traceback (most recent call last):\n File \"/usr/local/lib/python3.10/dist-packages/torch/utils/data/_utils/worker.py\", line 308, in _worker_loop\n data = fetcher.fetch(index)\n File \"/usr/local/lib/python3.10/dist-packages/torch/utils/data/_utils/fetch.py\", line 51, in fetch\n data = [self.dataset[idx] for idx in possibly_batched_index]\n File \"/usr/local/lib/python3.10/dist-packages/torch/utils/data/_utils/fetch.py\", line 51, in <listcomp>\n data = [self.dataset[idx] for idx in possibly_batched_index]\n File \"<ipython-input-16-e3a037f55269>\", line 19, in __getitem__\n xmin = np.min(pos[1])\n File \"<__array_function__ internals>\", line 180, in amin\n File \"/usr/local/lib/python3.10/dist-packages/numpy/core/fromnumeric.py\", line 2918, in amin\n return _wrapreduction(a, np.minimum, 'min', axis, None, out,\n File \"/usr/local/lib/python3.10/dist-packages/numpy/core/fromnumeric.py\", line 86, in _wrapreduction\n return ufunc.reduce(obj, axis, dtype, out, **passkwargs)\nValueError: zero-size array to reduction operation minimum which has no identity\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"# Evaluation"
],
"metadata": {
"id": "nKPEqMZJFepe"
}
},
{
"cell_type": "code",
"source": [
"plt.plot(all_train_losses)"
],
"metadata": {
"id": "Cs2JrrbUEcKr"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"plt.plot(all_val_losses)"
],
"metadata": {
"id": "_7hcU_KnE7Ed"
},
"execution_count": null,
"outputs": []
}
]
}