498 lines
66 KiB
Plaintext
498 lines
66 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "4b4c06bc",
|
|
"metadata": {},
|
|
"source": [
|
|
"<!-- HTML file automatically generated from DocOnce source (https://github.com/doconce/doconce/)\n",
|
|
"doconce format html exercisesweek41.do.txt -->\n",
|
|
"<!-- dom:TITLE: Exercises week 41 -->\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "bcb25e64",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Exercises week 42\n",
|
|
"\n",
|
|
"**October 14-18, 2024**\n",
|
|
"\n",
|
|
"Date: **Deadline is Friday October 18 at midnight**\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "bb01f126",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Overarching aims of the exercises this week\n",
|
|
"\n",
|
|
"The aim of the exercises this week is to get started with implementing a neural network. There are a lot of technical and finicky parts of implementing a neutal network, so take your time.\n",
|
|
"\n",
|
|
"This week, you will implement only the feed-forward pass. Next week, you will implement backpropagation. We recommend that you do the exercises this week by editing and running this notebook file, as it includes several checks along the way that you have implemented the pieces of the feed-forward pass correctly. If you have trouble running a notebook, or importing pytorch, you can run this notebook in google colab instead: (LINK TO COLAB), though we recommend that you set up VSCode and your python environment to run code like this locally.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "c6f61b09",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import autograd.numpy as np\n",
|
|
"from autograd import grad"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "6248ec53",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Exercise 1\n",
|
|
"\n",
|
|
"Complete the following parts to compute the activation of the first layer.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "37f30740",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"np.random.seed(2024)\n",
|
|
"\n",
|
|
"\n",
|
|
"def ReLU(z):\n",
|
|
" return np.where(z > 0, z, 0)\n",
|
|
"\n",
|
|
"\n",
|
|
"x = np.random.randn(2) # network input\n",
|
|
"W1 = np.random.randn(4, 2) # first layer weights"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "edf7217b",
|
|
"metadata": {},
|
|
"source": [
|
|
"**a)** Define the bias of the first layer, `b1`with the correct shape\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "2129c19f",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"b1 = np.random.randn(4)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "09e8d453",
|
|
"metadata": {},
|
|
"source": [
|
|
"**b)** Compute the intermediary `z1` for the first layer\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"id": "6837119b",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"z1 = W1 @ x + b1"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "6f71374e",
|
|
"metadata": {},
|
|
"source": [
|
|
"**c)** Compute the activation `a1` for the first layer using the ReLU activation function defined earlier.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"id": "8d41ed19",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"a1 = ReLU(z1)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "088710c0",
|
|
"metadata": {},
|
|
"source": [
|
|
"Confirm that you got the correct activation with the test below.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"id": "4d2f54b4",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"True\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"sol1 = np.array([0.60610368, 4.0076268, 0.0, 0.56469864])\n",
|
|
"\n",
|
|
"print(np.allclose(a1, sol1))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "7fb0cf46",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Exercise 2\n",
|
|
"\n",
|
|
"Compute the activation of the second layer with an output of length 8 and ReLU activation.\n",
|
|
"\n",
|
|
"**a)** Define the weight and bias of the second layer with the right shapes.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"id": "00063acf",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"W2 = np.random.randn(8, 4)\n",
|
|
"b2 = np.random.randn(8)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "5bd7d84b",
|
|
"metadata": {},
|
|
"source": [
|
|
"**b)** Compute intermediary `z2` and activation `a2` for the second layer.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"id": "2fd0383d",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"z2 = W2 @ a1\n",
|
|
"a2 = ReLU(z2)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "1b5daae5",
|
|
"metadata": {},
|
|
"source": [
|
|
"Confirm that you got the correct activation shape with the test below.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"id": "f7f2f8a1",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"True\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"print(a2.shape == (8,))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "3759620d",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Exercise 3\n",
|
|
"\n",
|
|
"We often want our neural networks to have many layers of varying sizes. To avoid writing very long and error-prone code where we explicitly define and evaluate each layer we should keep all our layers in a single variable which is easy to create and use.\n",
|
|
"\n",
|
|
"**a)** Complete the function below so that it returns a list `layers` of weight and bias tuples `(W, b)` for each layer, in order, with the correct shapes that we can use later as our network parameters.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"id": "c58f10f9",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def create_layers(network_input_size, output_sizes):\n",
|
|
" layers = []\n",
|
|
"\n",
|
|
" i_size = network_input_size\n",
|
|
" for output_size in output_sizes:\n",
|
|
" W = np.random.rand(output_size, i_size)\n",
|
|
" b = np.random.rand(output_size)\n",
|
|
" layers.append((W, b))\n",
|
|
"\n",
|
|
" i_size = output_size\n",
|
|
" return layers"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "bdc0cda2",
|
|
"metadata": {},
|
|
"source": [
|
|
"**b)** Comple the function below so that it evaluates the intermediate `z` and activation `a` for each layer, and returns the final activation `a`. This is the complete feed-forward pass, a full neural network!\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"id": "5262df05",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def feed_forward(layers, input):\n",
|
|
" a = input\n",
|
|
" for W, b in layers:\n",
|
|
" z = W @ a + b\n",
|
|
" a = ReLU(z)\n",
|
|
" return a"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "245adbcb",
|
|
"metadata": {},
|
|
"source": [
|
|
"**c)** Create a network with input size 8 and layers with output sizes 10, 16, 6, 2. Evaluate it and make sure that you get the correct size vectors along the way.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "89a8f70d",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "306d8b7c",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Exercise 4\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "221c7b6c",
|
|
"metadata": {},
|
|
"source": [
|
|
"So far, every layer has used the same activation, ReLU. We often want to use other types of activation however, so we need to update our code to support multiple types of activation. Make sure that you have completed every previous exercise before trying this one.\n",
|
|
"\n",
|
|
"**a)** Make the `create_layers` function also accept a list of activation functions, which is used to add activation functions to each of the tuples in `layers`. Make new functions to not mess with the old ones.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"id": "9df82312",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def create_layers_4(network_input_size, output_sizes, activation_funcs):\n",
|
|
" layers = []\n",
|
|
"\n",
|
|
" i_size = network_input_size\n",
|
|
" for output_size, activation in zip(output_sizes, activation_funcs):\n",
|
|
" W = np.random.rand(output_size, i_size)\n",
|
|
" b = np.random.rand(output_size)\n",
|
|
" layers.append((W, b, activation))\n",
|
|
"\n",
|
|
" i_size = output_size\n",
|
|
" return layers"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "10896d06",
|
|
"metadata": {},
|
|
"source": [
|
|
"**b)** Update the `feed_forward` function to support this change.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"id": "de062369",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def feed_forward_4(layers, input):\n",
|
|
" a = input\n",
|
|
" for W, b, activation in layers:\n",
|
|
" z = W @ a + b\n",
|
|
" a = activation(z)\n",
|
|
" return a"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "efd07b4e",
|
|
"metadata": {},
|
|
"source": [
|
|
"**c)** Create and evaluate a neural network with 4 inputs and layers with output sizes 12, 10, 3 and activations ReLU, ReLU, softmax.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"id": "ce6fcc2f",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from scipy.special import softmax\n",
|
|
"\n",
|
|
"network_input_size = 4\n",
|
|
"output_sizes = [12, 10, 3]\n",
|
|
"activation_funcs = [ReLU, ReLU, softmax]\n",
|
|
"layers = create_layers_4(network_input_size, output_sizes, activation_funcs)\n",
|
|
"\n",
|
|
"x = np.random.randn(network_input_size)\n",
|
|
"predict = feed_forward_4(layers, x)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "54d5fde7",
|
|
"metadata": {},
|
|
"source": [
|
|
"The final exercise will hopefully be very simple if everything has worked so far. You will evaluate your neural network on the iris data set (https://scikit-learn.org/1.5/auto_examples/datasets/plot_iris_dataset.html).\n",
|
|
"\n",
|
|
"This dataset contains data on 150 flowers of 3 different types which can be separated pretty well using the four features given for each flower, which includes the width and length of their leaves. You are not expected to do any training of the network or actual classification, unless you feel like it, in that case you can do exercise 5.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"id": "6bd4c148",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjgAAAGzCAYAAAAi6m1wAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAACeTklEQVR4nOzdd3xT1fvA8c+9Sfek7L33KlOQIchGkeFCQcE9UFw/B6g4viqiqIADnCAOcDBE2SBDkU3L3ptSNrR0N7nn90fa0ECSpist7fN+vQrNzbk5z23T5Mm5555HU0ophBBCCCGKEb2wAxBCCCGEyG+S4AghhBCi2JEERwghhBDFjiQ4QgghhCh2JMERQgghRLEjCY4QQgghih1JcIQQQghR7EiCI4QQQohiRxIcIYQQQhQ7kuAIIYQQotgxF3YAmcaOHcvo0aN55plnmDBhgtM2K1eupGvXrtds3717Nw0aNPCoH8MwOHnyJCEhIWialpeQhRBCCOElSikuX75MpUqV0PXsx2eKRIKzceNGvvrqK5o1a+ZR+7179xIaGmq/XbZsWY/7OnnyJFWrVs1xjEIIIYQofMePH6dKlSrZtiv0BCchIYEhQ4bw9ddf884773i0T7ly5QgPD89VfyEhIYDtB5Q1SRJCCCFE0RUfH0/VqlXt7+PZKfQEZ8SIEdxyyy10797d4wSnRYsWpKSk0KhRI1577TWnp60ypaamkpqaar99+fJlAEJDQyXBEUIIIa4znk4vKdQEZ+bMmWzZsoWNGzd61L5ixYp89dVXtGrVitTUVH744Qe6devGypUr6dy5s9N9xo4dy1tvvZWfYQshhBCiiNOUUqowOj5+/DitW7dmyZIlNG/eHIAuXboQGRnpcpKxM/369UPTNObNm+f0/qtHcDKHuOLi4mQERwghhLhOxMfHExYW5vH7d6FdJr5582bOnDlDq1atMJvNmM1mVq1axaRJkzCbzVitVo8ep127duzfv9/l/X5+fvbTUXJaSgghhCgZCu0UVbdu3di+fbvDtgceeIAGDRrw8ssvYzKZPHqcqKgoKlasWBAhCiGEEOI6VWgJTkhICE2aNHHYFhQUROnSpe3bR40aRUxMDNOnTwdgwoQJ1KhRg8aNG5OWlsaPP/7IrFmzmDVrltfjF0IIIUTRVehXUbkTGxvLsWPH7LfT0tL4v//7P2JiYggICKBx48bMnz+fvn37FmKUQgghhChqCm2ScWHJ6SQlIYQQQhS+62aSsRBCCCFEQZEERwghhBDFTpGegyOEKFhnjp/jj08X8veMf0lOSKFKvYr0e6IX3Yd2xmT27EpGIYQoimQOjhAl1L7NB3mp+9skJ6RgWA0ANF1DGYo2vSN5a+5L+Pj6FHKUQghhI3NwhBDZslqsvDHgA4fkBkAZts87m5Zs5ZdxfxRWeEIIkWeS4AhRAq39cxPnYi44JDdZKUMx97OFWNItXo5MCCHyhyQ4QpRAu9ftx+Tjfo5N3Nl4zhw756WIhBAif0mCI0QJpJt08GD2nUw0FkJcryTBEaIEatWjGVaLm4K2GlSsVY6yVUt7LyghhMhHkuAIUQI179KYWs2ro5tdvAQouOvFAei6vEQIIa5P8uolRAmkaRr/++NlKlQva7utawCYMhKegSP7csuj3QstPiGEyCtZ6E+IEqpctbJ8ufUjVv7yH6t+XUPCpSSqN6xM30d70KhdvcIOTwgh8kQW+hNCCCFEkScL/QkhhBCixJMERwghhBDFjiQ4QgghhCh2JMERQgghRLEjCY4QQgghih1JcIQQQghR7EiCI4QQQohiRxIcIYQQQhQ7kuAIIYQQotiRBEcIIYQQxY4kOEIIIYQodiTBEUIIIUSxIwmOEEIIIYodSXCEEEIIUexIgiOEEEKIYkcSHCGEEEIUO5LgCCGEEKLYMRd2AEII52IPn2bupIWs/PU/UpNSqd6oCv1H9Oamu2/EZDIVdnhCCFGkSYIjRBG0Y80eXun1Dulp6RgWA4A96/eza+0+/p2znldnPidJjhBCuCGnqIQoYtJS0hgzYBxpKWn25AbAMBQA/87ewB+fLiqs8IQQ4rogCY4QRcyqX9dy+XwCKiOhuZpSilkT56OU8/uFEEJIgiNEkbN73T5MPu5PP505epZLZ+O9FJEQQlx/JMERoojRTZ79WZrM8ucrhBCuyCukEEVMyx7NsKZbXd6v6Ro1m1YjpFSwF6MSQojriyQ4QhQxN9zSkkp1KrgcyVGGYvDLA9A0zcuRCSHE9UMSHCGKGJPJxHsLRhNRsRRo2BOZzFNS944exM33dirMEIUQosiTdXCEKIIq16nId7s+4e+f/2X172tJupxCzabV6Pd4T+q2rFXY4QkhRJGnqRJ2rWl8fDxhYWHExcURGhpa2OEIIYQQwgM5ff+WU1RCCCGEKHYkwRFCCCFEsSMJjhBCCCGKHZlkLEo8S7qFZT+sZt7kxcTsjyUoNJBuQzrR/6nelKlcurDDE0IIkQsyyViUaGmp6bx261iilm9H0zV7/SfdpBMYGsD4v9+kdvMahRukEEIImWQsRE789L/fiV6xA8ChuKVhNUiKT+aNgR9gtbpeVVgIIUTRJAmOKLHSUtOZ98Vil1W7DavB6SNn2bR4q5cjE0IIkVeS4IgSK/bQaRIuJbptYzKb2L12n5ciEkIIkV8kwREllsmjqt0Kk9lU4LEIIYTIX5LgiBKrYu3ylKni/iopq8WgZY9mXopICCFEfpEER5RYJpOJu/7vNpf362ad+m1q06h9PS9GJYQQIj9IgiNKtAFP96HfEz2BK9W6Nd1WvbtSrfK8OftFezVvIYQQ1w9ZB0cIYOd/e1nw9TKO7YkhODyQroM7ctNd7fEL8Cvs0IQQQpDz929ZyVgIoPGN9Wl8Y/3CDkMIIUQ+kVNUQgghhCh2JMERQgghRLEjCY4QQgghih2ZgyOE8JhSijVzNzD3s4UciDqMj68PHQe2ZeAzt1CtQeXCDk8IIeyKzAjO2LFj0TSNZ5991m27VatW0apVK/z9/alVqxZTpkzxToBClHBKKSY88RVv3T6e7at3k3gpiUtn4lj47XIei/w/NiyMKuwQhRDCrkgkOBs3buSrr76iWTP3K8YePnyYvn370qlTJ6Kiohg9ejQjR45k1qxZXopUiJJr2Y+rWfDVMsBWiDST1WJgTbfy9p3juXwxobDCE0IIB4We4CQkJDBkyBC+/vprSpUq5bbtlClTqFatGhMmTKBhw4Y8/PDDPPjgg4wfP95L0QpRcs2eMN++COLVlFKkJaezZNpK7wYlhBAuFHqCM2LECG655Ra6d++ebdu1a9fSs2dPh229evVi06ZNpKenO90nNTWV+Ph4hy8hRM5YrVYORB1GGW7WBdVg1zqpvC6EKBoKNcGZOXMmW7ZsYezYsR61P3XqFOXLl3fYVr58eSwWC+fOnXO6z9ixYwkLC7N/Va1aNc9xC1HSaJrmcvQma5vMchdCCFHYCu3V6Pjx4zzzzDP8+OOP+Pv7e7zf1XWBMitNuKoXNGrUKOLi4uxfx48fz33QQpRQuq7TvEtjdJPrlwzDatCye3MvRiWEEK4V2mXimzdv5syZM7Rq1cq+zWq1snr1aj777DNSU1MxmUwO+1SoUIFTp045bDtz5gxms5nSpUs77cfPzw8/P6knJERe3fVif6L/3uH0Pt2kE1o6hK6Db/RyVEII4VyhjeB069aN7du3Ex0dbf9q3bo1Q4YMITo6+prkBqB9+/YsXbrUYduSJUto3bo1Pj4+3gpdiBKpTa9IHv9oGAB6llNRmqYRHB7E+4tfk+KkQogio9BGcEJCQmjSpInDtqCgIEqXLm3fPmrUKGJiYpg+fToAjz/+OJ999hnPP/88jzzyCGvXruXbb79lxowZXo9fiJLo9udupXWv5vw1ZSl7Nx3EL8CX9re1puewLgSHBxV2eEIIYVekVzKOjY3l2LFj9ts1a9ZkwYIFPPfcc3z++edUqlSJSZMmcfvttxdilEKULNUbVWXEpAcLOwwhhHBLU5mzdEuI+Ph4wsLCiIuLIzQ0tLDDEUIIIYQHcvr+Ldd0CiGEEKLYkQRHCCGEEMVOkZ6DI0RxkZaWzuRnprLsx9WkJKai6Rp1ImsyYuIDNO7QoLDDE0KIYkdGcIQoYGkpaQyt/gR/fbmUlMRUAJSh2L/lEM92ep2F3/1dyBEKIUTxIwmOEAXsjUEfcvF0nMv7P3l0CkkJyV6MSAghij9JcIQoQGlp6WxestVtG2Uopr0mazkJIUR+kgRHiAJ0aOtR9xW4M2xbvdsL0QghRMkhCY4QBcjsc23JEWfcFbEUQgiRc/KqKkQBqtWsukdJToeBbb0QjRBClByS4AhRgHRdp9vQzm7bmH3N3P1Sfy9FJIQQJYMkOEIUsOe/fpz6bes4vU836Yxb8hpmsyxJJYQQ+UkSHCEKmK7rfLZuLC9Oe4oq9SriH+RHSEQw3e+7iZkxX9Ksc+PCDlEIIYodKbYphBBCiCJPim0KIYQQosSTBEcIIYQQxY4kOEIIIYQoduTSDVHszPl0Id+PmUliXBIAJrOJDgPbMvrnZzCZPFt4r6Q4c/wcf3y6kL9n/EtyQgpV6lWk3xO96D60Myaz/KyEKA6UUpC6BJX4A1h2g+YH/j3RAu9HM9fKxz5WoJKmQ/p2wAf8u6EFDkPzqZcvfeSUTDIWxcrbd33EP7+vc3pfSEQwv53+RpKcDPs2H+Sl7m+TnJCCYTUA0HQNZSja9I7krbkv4ePrU8hRCiHyQikDFTcaUmZjO2ljZNxjAkxopaag+XXMYx8KFf8OJP+Q8bjWLH1oaOGT0Py756kPkEnGogTbsWaPy+QG4PKFBF7v974XIyq6rBYrbwz4wCG5Aex1szYt2cov4/4orPCEEPkleXZGcgNXkhuwJSHpqEtPoYyEvPWRuigjucl83Kx9WFGXnkVZz+etj1yQBEcUG+Mf+iLbNpuyqexdUqz9cxPnYi44JDdZKUMx97OFWNItXo5MCJGfVNI0QHN1L6hkSJ6btz4Sp+E6nVCABZJ/z1MfuSEJjig2zhw9m20bZSisVmu27Yq73ev2Y8qmRlbc2XjOHDvnpYiEEPlNqVSw7MOWZLiiodKj8tCHgvRtOI4OXc3IUx+5JQmOKDY0zdWnFHE13aS7f83LIBONhbieefKaqGGbK5MX2aUS+dFHzkmCI4qNmk2rZdvG7GOSScZAqx7NsFrcjGRpULFWOcpWLe29oIQQ+UrTfMGnNe7f6q1ofh3y0IcGvh1wn8CoPPWRW5LgiGJj9M/PZNum14NdvRBJ0de8S2NqNa+ObnbxEqDgrhcHoOvyEiHE9UwLegTXp4900MuCf5889vEgjpOLr+pDCwf/2/LUR27Iq5coNirVrsiwt+5yeX/tyBo8O/kxL0ZUdGmaxv/+eJkK1cvabuu2oWxTRsIzcGRfbnk075d1CiEKl+bfFS34xYxbmaMsmu1LD0crNdU20pOXPvzaoYW+wbWnojTQgtEivkXTg/PUR67iknVwRHFzIPow7983ieN7TqKUIjQimOH/u4dbH+tR2KEVOSlJqaz85T9W/bqGhEtJVG9Ymb6P9qBRu8JZmEsIUTBU+l5U8kxI3wmaP5pfdwgYiKaH5F8floOopJmQvhU0XzS/myFgEJoeni+Pn9P3b0lwhBBCCFHkyUJ/QgghhCjxJMERQgghRLEjCY4QQgghih2pJi6KnSM7jzNn4nzW/LERS7qF+q1rM+DpvrS7tVW+LQZ4Yt9J5kxawD+z1pGWkk7tyBr0H9GbTre3c9qH1WplxYw1/PH5Io7vicE/yI8ud3dg4Mi+lM+4kkkIIUT+kUnGolj5b95G3r7jI0BhtdjWftBNOobVoP+I3oyY9GCek5wty7bxWr+xWK0GxlV99BzWhRe+fcJh/Rirxcpbd4xn7bxN6LqGkVHQUjfp+AX4Mm7pGBreUDdPMQkhRHEnk4xFiXXpbBzvDv4Eq9VqT24Ae0HJPz5fxKpf/8tTH4nxSbw56EMsaVZ7cpO1jyXfr2Tx1BUO+/z20Z+s+3OzrZ2hHPZJTUrjjQHjSE9Lz1NcQgghHEmCI4qNRd+tID3N4rLGkq5rzJ60IE99LP/xH5ITU3A18KlpGrMmzLfftlqtzP10gcv2hmFw8XQca+ZsyFNcQgghHEmCI4qN3ev2uUwkwDZ6snf9frdtsrNr3V635QuUUhzdeZzU5FQALsRe4vzJi24f0+RjYtfafbmOSQghxLUkwRHFhm7S0bKpnquZ8vaU1006nkzh0TP60T3pT0nVbiGEyG+S4Ihio1WP5ihX56ewJRstuzfL0yTj1j2aO8zvcdZH4w718fH1ASCiQjhV6ldymxRZLVZa9miW65iEEEJcSxIcUWx0G9KR0IgQl6MmhtXgzhf65amPjre3o3SlUm77uOvF/vbbmqZx90sDcHVWTDfrVGtYmVaS4AghRL6SBEcUGwHBAYxd9CpBoYEOozS6WQcNRkx6kBY3N81TH75+Pry/+HVCS4fYC/LClSrcD40dwo23tXHYp9fwLvakJ7NdZnxlK5fmnb9GuZ3XI4QQIudkHRxR7Fy+mMCSaStZ++cm0lLSadC2Drc+3pNqDSrnWx+JcYks/WE1a+ZsIDU5jTotatLv8R7UbFrd5T57Nx1k/pdLOLzjOIGhAdx05410vacDAUH++RaXEEIUV1JNPBuS4AghhBDXH1noTwghhBAlniQ4QgghhCh2JMERQgghRLEj1cSLqaTLySz4ehkLvlnO+ZMXCC8XRp+HunHrYz0IDg8qtLgORB9mzsQFrJ+/GavVoGG7egwc2Zc2vSKdtk9LTWfJtJX89eUSYg+dJqRUMN3v60z/Eb0pVT7cq7ELIa5vynIQlTgdUpeASgNzI7SgoeDXM89FeEXRI5OMi6G4c/E813kMJ/aedChLoOkaFWqU45N//kfpiqW8HteKmWsYO3Qiuq5dU+l78CsDeei9ex3aJyem8Eqvd9i1di8amv1YdJNOSEQwn6x+m6r18+/KKCFE8aVSV6MuPgEYgDVjq267HXAnWug7kuQUcTLJWDDxia+I2R97Tc0lZSjOHDvLhw987vWYzhw7y7j7J6EM5bTS98z357B+wRaHfb4b/TN71u8HhcOxGFaDyxcSeOuOj/JUV0oIUTIoIw518WnAwpXkBmzJDpD8G6TM9X5gokBJglPMnD1xnn9nb7AnDlezWgw2L9nKif2xXo1r/lfLXK7mC7ZRmblZKn0nJySz8Nu/XR6HYTU4uvM4O/7dk9+hCiGKm+Q5QAq4LOWioxKneS8e4RWS4BQz+zYd9GhUY8/6/V6I5oqd/+11mayALWHZ8d9e++2ju06QmpTq9jF1ky5VuIUQ2VLp0eC2EK8Blt0ole6liIQ3SIJTzHhUvRrvV6/OLFHgtk2W2D2rwq08elwhRElnwn2CQ8b98npSnOTot7l3717efPNNunXrRu3atalYsSLNmjVj2LBh/Pzzz6Smuv/ELQpe4w71Mfu6vzhON+k0u6mRlyKyad0zEk13/QJjMuu07h1pv12zaTVCIoLdPqZhKFp2lyKVQgj3NN8OOM69uZoOvm3RNO9+8BMFy6MEJyoqih49etC8eXNWr15NmzZtePbZZ/nf//7H0KFDUUrx6quvUqlSJcaNGyeJTiEKjQih78PdXCYTuknn5ns7ev0qql4PdMU/yN9lXIZVcfuzt9pv+/j6cPtzt7r80KWbdCK7NqFWM9e1n4QQAoCAvqCXwTaS44yBFvSwNyMSXuDRZeLVq1fnxRdf5N577yUiIsJlu7Vr1/LJJ58QGRnJ6NGj8zXQ/FISLhNPS0njjYEfsmlxtP0y7Mz/m3ZuyLvzRxdKgccda/Ywuu+7pCSmoowrl3yjFM99/QS9H+jq0N5qtTL+wS9Y9sNqTGYdq8VA0zWUoajZtBofLBtDeNkwrx+HEOL6o9L3oC4MA3Upcwu2hMeKFvIyWtBDhRec8EiBFNtMS0vD19fX4yBy2t6bSkKCA2AYBhsXRbN42grOHDtHmUoR9BzWhRtubYnJVHjDsJfOxrHouxVsWLgFa7qVRu3rc+vjPahcp6LT9koptq3axcJvl3NifyxhZULpNqQTnW6/AR9fHy9HL4S4nikjHpLnolKXgUoBnyZoAfeg+dQt7NCEB6SaeDZKSoIjhBBCFCc5ff/OVamGDRs2sHLlSs6cOYNhOF76+/HHH+fmIYUQQggh8k2OE5z33nuP1157jfr161O+fHmHpa1lmWshhBBCFAU5TnAmTpzId999x/DhwwsgHCGEEEKIvMtxgqPrOh06dCiIWIS4RmJ8EpOe/Jp/56wnLTkd3aTTqH09Rn7xCDWbVHO6z5o/NvLtKz9yYp+tHldIRDD9nujFsLfuQtevXRnBkm5h2Q+rmTd5MTH7YwkKDaTbkE70f6o3ZSqXLuhDdCn28GnmTlrIyl//IzUpleqNqtB/RG9uuvvGQp0oLoQQ14McTzL+4IMPOHnyJBMmTMhz55MnT2by5MkcOXIEgMaNGzNmzBj69OnjtP3KlSvp2rXrNdt3795NgwYNPOpTJhlfPy6eucSwuk+TfDnlmvs0TeOd+a/QtndLh+3fvfYzM96b4/TxajatxpSoDx2SnLTUdF67dSxRy7fbL0EH2+XrgaEBjP/7TWo3r5F/B+WhHWv28Eqvd0hPS8fIrLyuaxiGotPtN/DqzOckyRFClCgFfhWVYRjccsst7Nu3j0aNGuHj43ip7uzZsz1+rD///BOTyUSdOnUA+P777/nwww+JioqicePG17TPTHD27t3rcHBly5b1+MVeEpzrx2Mt/o9DW4+6vN/Hz8xfiT/ZE5aju0/wcOPn3D7mwJF9eHLCg/bbU1+bwYz359gTm6x0k07ZqqX5fv+nXk0m0lLSGFz1MRIuJjqNS9M0Hv9oGIOevcVrMQkhRGHL6ft3jgtvPP3006xYsYJ69epRunRpwsLCHL5yol+/fvTt25d69epRr1493n33XYKDg1m3bp3b/cqVK0eFChXsX/JJtvi5cOqi2+QGID3Vwp9fLLbfnvLC99k+7qLvVti/T0tNZ94Xi50mEWArAHr6yFk2Ld7qYdT5Y9Wva7l8PsFlXEopZk2c71FRVSGEKKlyPAdn+vTpzJo1i1tuyd9Pj1arld9++43ExETat2/vtm2LFi1ISUmhUaNGvPbaa05PW2VKTU11KB0RHx+fbzGLgrNhYZRH7dYvjKL/U7ZTmoeij2TbPjkhBcMw0HWd2EOnSbiU6La9yWxi99p93NC3pdt2+Wn3un2YfExY013Xzjlz9CyXzsZTqpys5CyEEM7keAQnIiKC2rVr51sA27dvJzg4GD8/Px5//HHmzJlDo0bOC0FWrFiRr776ilmzZjF79mzq169Pt27dWL16tcvHHzt2rMMIU9WqVfMtdlFwzD6ejcqZs1RFd1fM0xmTR5XXldcrr3teEV4qHwshhCs5foV88803eeONN0hKSsqXAOrXr090dDTr1q3jiSeeYNiwYezatctl20ceeYSWLVvSvn17vvjiC2655RbGjx/v8vFHjRpFXFyc/ev48eP5ErcoWDcOaOuy0GZW3e/rbP++eZdr521dLaxMiH3OTsXa5SlTxf1VUlaLQcse3q1Y3rJHM7ejN5qu2aqtl3JfbV0IIUqyHCc4kyZNYuHChZQvX56mTZvSsmVLh6+c8vX1pU6dOrRu3ZqxY8fSvHlzJk6c6PH+7dq1Y//+/S7v9/PzIzQ01OFLFH2BwQG0uLmp2zbB4UF0vuPK6czHxt9PdmtN3v3yAPv3JpOJu/7vNpdtdbNO/Ta1adS+nkcx55cbbmlJpToVXI7kKEMx+OUBsrCmEEK4keM5OAMGDCiAMK5QSjnMmclOVFQUFSs6L9Qorm/vzB/Fw42eJfbQmWvu8/HzYcKadxy2RVQoxUvfP8W4YZ/ZCgVfpdMd7bjzBceEZsDTfTi+N4Y/Jy+5pmJ5pVrleXP2i15PJEwmE+8tGM3/3fwW52LOo6GhlLLHd+/oQdx8byevxiSEENebQi22OXr0aPr06UPVqlW5fPkyM2fO5P3332fRokX06NGDUaNGERMTw/Tp0wGYMGECNWrUoHHjxqSlpfHjjz/y/vvvM2vWLAYNGuRRn3KZ+PXFMAzmTFrAnEkLiDsbj1+gHzfddSMPjb2XwOAAp/vEHj7N5OemsW31LgyLQaU6FXjgnXvcThTe+d9eFny9jGN7YggOD6Tr4I7cdFd7/AL8CurQspWckMzfP//L6t/XknQ5hZpNq9Hv8Z7UbVmr0GISQojCUuDr4GzcuBHDMLjhhhsctq9fvx6TyUTr1q09fqyHHnqI5cuXExsbS1hYGM2aNePll1+mR48eAAwfPpwjR46wcuVKwLbI4FdffUVMTAwBAQE0btyYUaNG0bdvX4/7lARHCCGEuP4UeILTtm1bXnrpJe644w6H7bNnz2bcuHGsX78+ZxF7mSQ4QgghxPWnwBf627Vrl9PJxC1atHB59ZMQQgghhDflOMHx8/Pj9OnT12yPjY3FbM7xnGUhhBBCiHyX44wkc/LvH3/8YS/NcOnSJUaPHm2fOyMKX9LlZBZ8vYwF3yzn/MkLhJcLo89D3bj1sR4EhwflSx+XzsUz6YmvWffXJtJTLZjMOk07NeLZKY9SuW7+XNmWm2riR3YeZ87E+az5YyOWdAv1W9dmwNN9aXdrK6dXRHmjmnhaWjqTn5nKsh9Xk5KYiqZr1ImsyYiJD9C4g2eFYksKpRQrjx5mWvQWtp46hdmk061mLYZHtqJhmbL510/qGlTSdEjbDJjArzNa0DA0nybO2xtxkPQzKnkWGBdAL48WeDcE3IWmB+ZbXEKI/JHjOTgxMTF07tyZ8+fP06JFCwCio6MpX748S5cuLfIrBZeEOThx5+J5rvMYTuw96VCvSNM1KtQoxyf//I/SFUvlqY8zx87yQMNnSEtOv+Y+XdcYv/ItmnZsmKc+clNN/L95G3n7jo8AhTWzCrdJx7Aa9B/RmxGTHnRIcrxRTTwtJY2hNZ/k4uk4p/c//80T9Hnw5jz1UVwopXjv31V8G7UZk6ZhzXj+mjJ+Z5P63EqfOnlfl0glfIpK+BQwAZmLKpoAAy3sfbSAgY7tradQ5weDcQowMrZmPI/MddEifkTTw/MclxDCtQKfZAyQmJjITz/9xNatWwkICKBZs2bcc88911QWL4pKQoLz9p3jWTN3I4bVuOY+k1kn8uamvL/otTz1Mbz+08TsP+Xy/oBgf+bF/5CnPnJaTfzS2TiGVH+CtNR0p+vgALw641m63N3Bftsb1cRH9X2XTYuiXd6v6RpzL33v8rL3kmTJwf08Pn+e0/s0wKzrrB7+COWDc7+Ks0r9D3VxuJsWOlqZJWjmKyOExvmhkL6ZK8lQVibw74se/lGuYxJCZK/AJxkDBAUF8eijj/L5558zfvx47r///usiuSkJzp44z7+zNzhNbsBWemDzkq2c2B+b6z5i9se6TW7AVtRyxYx/c91HbqqJL/puBelpFpfJja5rzJ60wH7bG9XE09LS2bzE/f7KUEx7bUau+yhOpkZvQXexsKICrErxy87teepDJU3HNlrjioZKnnmlveUApG/AeXKDbXvKApT1XJ7iEkLkL48SnLVr13r8gImJiezcuTPXAYm82bfpIJ4Myu1Z77q8RXbWzN3gUbv/5m3MdR85qSaeafe6fW6P3TAUe9fvt7fJSTXx3Dq09ajLBCqrbat357qP4iT6VCyGu9+hUmyOPZm3TtK24DpZwXZfWpbnblq0Bw9qBcuOvMUlhMhXHiU4999/Pz169ODXX38lISHBaZtdu3YxevRo6tSpw5YtW/I1SOE5zytR5/6Ui8nTSt8+ub+qLjfVxHWTjpZNhU4ty8/HG9XEPT0OT39vxZ2r0ZtMmaep8tiLB22yPHc1T/uTq0iFKEo8+svdtWsX/fv3Z8yYMZQqVYrGjRvTo0cP+vXrR8eOHSlTpgytWrXi6NGjLF26lPvuu6+g4xYuNO5QH7Ov+xda3aTT7KZGue7j5ns7etSu5/Auue4jN9XEW/VojnJ1fgrbcbfs3sw+ydgb1cRrNavuUZLTYWDbXPdRnHSqVsM+odh1m+p568SvM+5PUelofleeV/i2I/snox/4ROYtLiFEvvIowfHx8eGpp55iz549rF+/nkcffZQmTZpQuXJlunTpwpdffklMTAw//fQTTZo4v8RSeEdoRAh9H+6Gpjt/QdZNOjff2zFPV1GVKhdOw3Z13baJqBCebTVwd3JTTbzbkI6ERoS4HA0xrAZ3vtDPftsb1cR1Xafb0M5u25h9zdz9Uv9c91GcPNSylctTVLqmEeLnx6CGjfPUhxY0HJcTtdBB84OAO6+0N1UCv964frnUIPAeND33E5+FEPmvUIttFoaScBVVWkoabwz8kE2Lo+2XSGf+37RzQ96dP5qAIP889ZGSlMLweiM5f/LiNff5B/nxzY6PKV+9XJ76SEtLd1tNfPKWD6jesIrD9n2bD/JKz3dIuJRon2ujm23HPmLigwx4qo9De6UUnz71jdNq4lXqVeTD5W/keS0cwzAYeeOr7N1w4Jr7dJPOh8vH0Kxz3t60i5MZO7bx2t9L0bNcJq4Bwb6+fD/gDiIr5H2NJZU8DxX3UsYjZ87HsSU3WvhXaH6OtfaUkYC6+BCkR9naYWC/xNyvK1r4p2iab57jEkK45pXLxK9nJSHBAdub6sZF0SyetoIzx85RplIEPYd14YZbW+bpkuer+/ht/Dz++HwRly8kEBDsz81DOjH87bvxD8xbApW1j5xWE798MYEl01ay9s9NpKWk06BtHW59vCfVGlR22Y83qokvmb6KGe/N4lzMBXz8fLjhllY8+uFQSpULz7c+iotDFy/w8/ZtRJ06ia/JxM01a3FHwyaUCsi/S+mV5Rgq+RdI2wSY0fw62hbtMzlPaJWyQOrfqOQ5YJwFvRJa4J3g2wHN43k6QojckgQnGyUlwRFCCCGKE6+sgyOEEEIIUZRJgiOEEEKIYkcSHCGEEEIUO7lamWr58uUsX76cM2fOYBiOJQG+++67fAlMCLCVU1gybSV/fbmE2EOnCSkVTPf7OtN/RG9KlQ93uk9Oq4kL4Ym4pDPsOjaRKj5LCfNN4nxqCKetfWlWcySBvmGFHZ7HDOt5iB8DqSuBdMAEvjdA6Fvo5jyuMSREEZLjScZvvfUWb7/9Nq1bt6ZixYrXvGHMmTMnXwPMbzLJ+PqRnJjCK73eYdfavWhoVy77NumERATzyeq3qVrf8cqonFYTF8ITp+MOYD0/mLIBl9FRaBpkVuA4mliW0pVmER5YoXCD9IBhOQ7n+gKpTu7VIeIXdN/m3g5LCI8U+FVUFStW5IMPPrhuVyuWBOf68fkz3zHvi8VOC4fqJp2qDSrz9baP7AlLbqqJC+GJHXt7Ui/kKGb92ieWxdDYeqkFbRrNdLJn0WKc6QpGjOsGWjB6eSm1I4qmAr+KKi0tjRtvvDFXwQnhqeSEZBZ++7fLquiG1eDozuPs+HePfVtOq4kL4Ykj5zbRKOyI0+QGwKwrmodHcS7hmJcjyxkjfb/75AZAJWAkL/FOQEIUsBwnOA8//DA///xzQcQihN3RXSdITXI2jH6FbtLZlaXSd06riQvhiTOX/s22jVlXxFz4zwvR5EHqUg/bLSvYOITwEo8mGT///PP27w3D4KuvvmLZsmU0a9YMHx8fh7Yff/xx/kYoSiSPqmsrhcl8pV1mNXF3BTc1qdotckjTPKwIX+SriXsaX1E/DiE849EzOSoqyuF2ZGQkADt27Mj3gIQAqNm0GiERwVy+kOCyjWEoWna/Uum7VY/m/Dtnvcv2V1cTF8ITVcr0wkj6FBf1awFIsZqoUa6r94LKDf/+kDA++3aBd2bfRojrgEcJzooVKwo6DiEc+Pj6cPtztzJtzEync2p0k06zzo2o1ezKZa3dhnRk6mszSLiU6HTuztXVxIXwRMWwemw62ZzmYdswOZmHYyjYGt+V9nksylrQdHN5DHNjsOx006gCum8L7wUlRAHK8Xj9gw8+yOXLl6/ZnpiYyIMPPpgvQQkBMPiVAXQf2hnAfipKy/gYXb1RFV6d+axD+4DgAMYuepWg0ECHURrdrIMGIyY9SIubm3oneFGs1K85hf2XbZXrLYbm8P/2Sw1oVfejQostRyJ+BK2MizsDIeJXr4YjREHK8WXiJpOJ2NhYypUr57D93LlzVKhQAYvFkq8B5je5TPz6opRi26pdLPx2OSf2xxJWJpRuQzrR6fYb8PH1cbpPbqqJC5EdizWNbcdnQPIcgkxxXLaWwTfobppUGYiuezZPpygwDAskfQNJP4MRB1oQBPSH4GfQdf/CDk8IlwpsHZz4+HiUUpQqVYr9+/dTtmxZ+31Wq5U///yTV155hZMnT+Y+ei+QBEcIIYS4/uT0/dvj6fLh4eFomoamadSrV++a+zVN46233spZtEIIIYQQBcDjBGfFihUopbj55puZNWsWERER9vt8fX2pXr06lSpVKpAghRBCCCFywuME56abbgLg8OHDVKtWTS61FUIIIUSR5VGCs23bNofb27dvd9m2WbNmLu8TNgmXEvlryhIWfvc3l87EUbpSBH0f7kbfR7oTGBKQL30kXU5mwdfLWPDNcs6fvEB4uTD6PNSNWx/rQXB4kNN9Fk39mx/e/o2zx86hgFLlwrjrxf7c8XzhXVqdm2riomg5k5jA9K3RzN27i/jUVKqFhTO0aXMGNWyMr+n6mZybG7ti5pMc/y21gvaj0DiU2IDg8EdoULGH0/bKSIDkX1BJv4JxFvSyaIF3QsBgND3Yy9FniSt9JypxGqSuBqzg0xItaBian/O6bkqlQvLvqKSZYI0BLQwCBqIFDUXTI5zus+fcWaZFb2HZ4YNYrAbNK1RgWPOWdK1RM98+UCvLQVTidEhdAioNzI3QgoaCX0/50F4MeTTJWNd1NM1WzTm7J4HVas234ApCYU8yPnfyAs91ep3TR8+iMssRa6ChUbVBJT5e9TZhZfIWV9y5eJ7rPIYTe086lCXQdI0KNcrxyT//o3TFUg77fDD8M5ZOX+X08Vr1bM77i17LU0y5kZtq4qJo2Xf+HPfM+oW41FSMjN+fhm1po7aVqjBtwCD8zc6vhrverdv7Fm3DfsJiaPY6VhZDQ9cUmxIepl3dlxzaK+t51IV7wHoUx8WfNDBVR4v4Gc3k6hLvgqOS/0DFvWyLg8zXd5Pt+6AR6CHPOLY3ElEXhoEl84Nw5rHooEegRcxAM1d32GfRgf08vfBPAKwZzxOTpmFViociWzG60015TkBU6mrUxScAI8tx6LbbAXeihb4jSU4RVyDFNg8fPsyhQ4c4fPgws2bNombNmnzxxRdERUURFRXFF198Qe3atZk1a1aeD6C4+/CBzzl7/NyV5AZA2S6HPrEvlklPfp3nPiY+8RUx+2OvqbmkDMWZY2f58IHPHbavX7DFZXIDsHnJVv74bGGe48qp70b/zJ71++0/n0yG1eDyhQTeuuMjqStVhBlK8cT8ecRnSW7gytvdptgYJqwr4vWbcmnvqeW0DfsJwKFIp1lX6Bq0Dv6GQ2fXOeyj4l8F63GuXdlSgfW47X4vU5bjGclN1qSAK98nfo5KXeO4z+UPwbID23FkPRYDjIuoSyMd/m7PJCbwzKL5GErZkxu4kuh8G72ZJYcO5O04jDjUxacBy1XHkbEgaPJvkDI3T32IosejBKd69er2r/fee49Jkybx2GOP0axZM5o1a8Zjjz3GhAkT+N///lfQ8V7XTuw7yZal27BaXFfI/mf2es7FnM91H2dPnOff2RtcVuG2Wgw2L9nKif2x9m3fvZp98dSZ4+bmOqbcyE01cVG0/Hf8GIcvXXR408rKUIqftm8lxZLu5cgKXvyFb+wLATpjKI0z5658mFHWGEhdgeObb1ZWSF2JshzP30CzoZJnYhu5ccWESpp+pb1xGZJ/x544XMMKlt2QvtW+5Zed27Eqw2UFOV3TmBq1JYeRXyV5DpCC02XRbb3YTsGJYiXHKxlv376dmjVrXrO9Zs2a7Nq1K1+CKq52r9+fbRtlKPZtOpTrPvZtOujRqMaeLLGc2BfrpqXN+diLuY4pN3JTTVwULdGnYjFlM+SfmJ7OoYvefW55Q+WAfQ4jN1cz64ryPlleL9O34frNN5PKaOdFaZtwnXRhuy9t85Wbln1AWjYPqkP6lfqGW2JjHUb4rmYoRdSpvK2vptKjcZ+oGWDZjVLFL9kuyXKc4DRs2JB33nmHlJQU+7bU1FTeeecdGjZsmK/BFTcmDytZZ62QnVMeVeEGTOYrkzt1d1UEM3j7zHRuqomLokX3cD6DSS9+v0NDZX9Mhso6wdrDn4Hm7UrfnkwCN7n43hXl0M6sa9m+vuT9OWIi+1cxjVy8JYoiLMe/zSlTprBs2TKqVq1K9+7d6d69O1WqVGHp0qVMmTKlIGIsNpp1aZztG7ePn5lGN9bPdR+NO9TH7Ov+RVA36TS7qZH9dt2WtbJ93Mp1K+Y6ptzIrCbuztXVxEXR0rFadZenpzKVCQykdinnV9Vcz06ktnB7ispiaJyxtLyywbcN2V/Uagaf1vkSn6c0v864f5swgV/nKzd9GoIWks2jKvC70X6rY7XqbtraJht3rOq+TXY03w64H4nSwbctmla8r+oraXKc4LRt25bDhw/z7rvv0qxZM5o2bcp7773H4cOHadu2bUHEWGyUqRTBzfd0dJnkaLpG34e7E1Iq95eDhkaE0PfhbvailFfTTTo339vR4Sqqxz+6P9vHffC9e3MdU25kVhN39aFLN+lEdm3iUE1cFC3NylegdcVKbk9TPdKyNeZiOIJTqdwTKDQMJ/mdocCqdGpWHGHfpukREDAQ1y/Juu0ya5OXK5YH3AmaP67jUmhBw+23NM0PAofherTEBL6d0Mx17FsGNmhMiJ+fyxE/QykebpnHxC6gL+hlcD3CZKAFPZy3PkSRk6tXlsDAQB599FE+/vhjPvnkEx555BGCgpyvrSIcjfziYRp3sI3QZCY6mf+36tmcRz+8L899PDb+flr1aO60j8Yd6jPyi0cc2tdrXYeH3x/i8vEGPdOXjgNvyHNcOZXTauKi6Pm8723UyhihyXyxyUx47mrUhIdaeHdEwluqlW7BzrRRWJWONctIjtXQSDdM7LO+RYVwx5FaLfR18G2Xccvk+L/vDWih3l+qQTOVRiv1lZMkxwToaGHj0HwaO+4T/CT4983Sjiv7muuhhY93aB/q58f3/W8n2MfXIS0yabZTV//r2p22lavk7Tg0f7RS34EWii35yuzJFp8W8jKa30156kMUPR6tgzNv3jz69OmDj48P8+bNc9v2tttuy7fgCkJhr4MDtrWC1v+1hSXfr+TcyQuUq1aGXsO70qZ3JHo+fZo1DIONi6JZPG0FZ46do0ylCHoO68INt7bE5GJxtUPbjjD5ue/Zt9k2UblGk2o8Mm4oTTsW3tyq3FQTF0VLqsXCwgP7+GPvHuJSkqlZKoK7GzelTaXKxX7dkVNx+zgcO4UwbSsKjXjVkjqVnqBs6LUXagAoZYXU1ajkWWCcAr0CWsDt4Ne5UE+fKOt5SP4NlfoPYAHfVmgBg9HM1Zy3VwrS1qGSfwPrMdAi0AL6g38PNM3X6T4Xk5OZtXsnyw8fJM1qpUWFStzbtJk9Qc6X4zDiIXkuKnUZqBTwaYIWcA+aT91860MUnAKpJq7rOqdOnaJcuXJu34A1TZOF/oQQQgiR7wqkmrhhGE6/F0IIIYQoinJ8PiQpKakg4hBCCCGEyDc5XlQhPDyc1q1b06VLF2666SY6duwoE4yFEEIIUaTkOMFZtWoVq1atYuXKlXz22WekpKTQsmVLe8LTp0+fgohT5FBuqonnVEpSKou+/Zv5Xy3lzPFzhJYOodfwrtz2ZC9CSztfC2PFL2uY9toMYg+dQaEIKx3CwGdvYcjo2/MlJiGKEpW20VYCIG0DoIHvjbYq3L4tCi2mc4nnWb5rLC3C/qF8QAIXUwPYcKEt7eu+RNVSNfKlj9S0C8ScfI6KPhvw1a1YlcaptHqElB5LqZAm+dKHENnxaJKxK1arlY0bNzJlyhR++uknDMOQScZFQG6qiedUYlwiL3R9k0Nbj6JQ9lXmNV2jdMVSfPLP/6hQo5zDPp+N/M5l0c6G7esxac27eYpJiKJEJX6LujwOe+VtyPjeQAt9Ay3Qu2tLAZy4dIzLp++mbqit3p2ugVK2ylGnkoKJC/yOJhUj89RHYspJONcDf5Ot7EHmhXKZ/Zzz/ZSKpXvlqQ9RMhVINfGr7dmzhylTpjB06FAGDhzIX3/9Rb9+/fj4449z83Ain+W0mnhuTH7+ew5vP2brI2thdENx4fQl3rt3okP7XWv3uq1IvnvtPqa/9Wue4xKiKFBpWzOSG7i2CrdCxb+FSt/r9bh2Hnya2iEX0DVbcgO2BMSkQfmARJLPP5vnPuJP3YO/KR1Nu5LcZPajA+Epz2EU8Q/ConjIcYJToUIFOnTowPLly+nYsSNLlizh3LlzzJ49m2eeeaYgYhQ5kJtq4jkVf/4yy39c7brSt8Vg97p9HIg6bN/21Ys/ZPu47hIgIa4nKukH3Ndl0lFJP3srHAAOnttH14p7XBYBNeuKVmVO8u+hpbnuIz75COX8YnG1vJGmgZ/JwvEz3+a6DyE8lasEJyEhgWPHjnHs2DFOnDhBQkJCQcQmciE31cRz6kD0ESzp2XwC02D3uiuVvo/sOp7t48afl+eRKCY8qsK9wVvRALDj5Aq3Fc4znbywOtd9XLi4wGVyk0kpMFJX5LoPITyV4wQnOjqa06dP8+qrr2KxWHj99dcpW7YsN9xwA6+88kpBxChyIDfVxHPKo6roKucVy4UoNjxZddjLlcE9Xwk593Fpnh6T8nZVdFES5WoOTnh4OLfddhuvvvoqo0eP5q677mLLli18+OGH+R2fyKHcVBPPqXptauMf7O++kQaRN1+5WqJR++wrpJet6uVCgkIUFL+byO4UlUMVbi9oV6MfyRb3SY6hoGHl3JfbqVD6DrIbQNY08A25M9d9COGpHCc4c+bM4ZlnnqF58+aUK1eOJ554gsTERD755BO2bdtWEDGKHMhNNfGcCgjyZ8CI3i7rCOkmnRtva0Ol2hXs2574eHi2j3vfG3flOiYhihItcCiORR0d7gXMXr+KqlxIeZacbOO0wjmAxdBYGVuPphVzfwm7n28EMan1XSY5SsHl9EAqlynaNQtF8ZDjBOexxx4jJiaGRx55xH666vfff+epp56icePG2T+AKHA5rSaeG8PevpsOA9vaHtvs2EfdlrV4ceoIh/aV61bk6c8fdvl4vR7oSp8Hb85zXEIUBZq5Flr4BDKrbl+hA75opT5HM1X2elw9mk/m39O1AFtCk/X/HRfL06TO13nuo1KVX7iYZvsAlZnoZP6fZpih1Mw89yGEJ/K0Ds71qCSsgwO5qyaeU0opopZvZ8G3yzl1+AwR5cPpfl9nbuzfBrOP89NkR3efYMoL37N77T4Mq0GV+pV4+P0htOzWLF9iEqIoUdZYVNJMSFsPaGh+N0LAXWim8oUWk8VqYcHOaQRY5lLW/xIX00K4oHpyS5Mn8PfJ5tSzhwyrlSOnJhBq+ZUAUwJphi8X1M1UrfQGvj7F93VXFKwCqSZenJSUBEcIIYQoTryy0J8QQgghRFEmCY4QQgghih1JcIQQQghR7MhqS/kgesUOZk+cz45/dqPpOq17NWfQM7dQv00dp+0TLiXy15QlLPzuby6diaN0pQj6PtyNvo90JzAkwMvR596lc/FMeuJr1v21ifRUCyazTtNOjXh2yqNUrlvR6T4Hog8zZ+IC1s/fjNVq0LBdPQaO7EubXpFO26elprNk2kr++nIJsYdOE1IqmO73dab/iN6UKh9ecAeXz6yGwZ/79jB9WzQHL5wn0MeHW+s1YHjzllTOp7lgFsNg7D+r+G33DhLS0tDQqF+mDK92vIkO1ao73efk5Ximb41i3t49JKanUbNUBEObNmdAg0aY9fz5/HP28mEOnJhEdf/VBJtTOZ0SwUX6E1nzSXzN1z7flVKQtgqVOB3StwI+4NfVVoXbp4HTPi4knGDviUlU8/2bEJ8UzqaEc5Z+RNZ4En8f55XtiyIj7SDEjQDroSsbTbUg7HN039pO94mKPcl30VtYc/woSsENlavwQGRLbqhS1Wn7pLQ4th35lPL6fEr7XSYuPZATad1pWG0k4YEVnO6j0nfaqqKnrgas4NPS9vvw65DHI849pdIgeS4qaQZYj4IWAgH90QKHopnKOd/HctD2vEpdAioNzI3QgoaCX0+Xy14URcp60nYcKX+BSgZzLbTAIeDfz+mCjkopSF2CSvwBLLtB8wP/nmiB96OZaxXCEXiHR5OMBw0a5PEDzp492+O2kydPZvLkyRw5cgSAxo0bM2bMGPr06eNyn1WrVvH888+zc+dOKlWqxEsvvcTjjz/ucZ/5Pcn45/dmM/W1GZjMOlaLrTaTyaxjWBXPf/04va+69PncyQs81+l1Th89i8pckEIDDY2qDSrx8aq3CStT9Cc/nzl2lgcaPkNacvo19+m6xviVb9G0Y0OH7StmrmHs0Inoumb/WekmHcNqMPiVgTz0nuO6IMmJKbzS6x12rd2LhmYvQaGbdEIigvlk9dtUre/9S21zymIYPDl/HssOH0TXNIyM4zBpGn5mMz8OvJPICs4Twpz00fX7b4i5fNnp/a916sKDLVo5bNt+5jRDZ/9KUno61syfbUZ8N1WvwZe3DsA3j1fcHTm3gdDEhwnxScWUUSbAqmxDx3via1C71iyHBEQpZStSmfQd11bhBi18Apq/YyXqExd24Bs/lFK+yfY+Mv+0Dl6uROXqcwj2y/26T95ipG6Ei0NcNyj1A7rfDQ6bftq+lTErlqFrmv13aMr4flTHzjzSso1D+7ikM5yLGUT14DNA1mriGmdTgtEjZlAhrJ7DPir5D1Tcy9jW78n6+7BC0Aj0EO/XIFQqBXXhYUjfkBFX5tuYDlooWsSPaD5XHUfqatTFJ7DVNLdeaY8BAXeihb5zXSQ5Km0r6uJwUClccxx+N6OFf4qm+VxprwxU3GhImX2lHWD7HZrQSk1B8+voxSPIvQKZZBwWFubxV05UqVKF999/n02bNrFp0yZuvvlm+vfvz86dO522P3z4MH379qVTp05ERUUxevRoRo4cyaxZs3LUb37ZtnoXU1+bAWB/w878XinFx49O4fjeGId9Pnzgc84eP3cluQFQthf2E/timfRk3teh8IaXerztNLkBMAzFq33fc9h25thZxt0/CWUoh59VZsHOme/PYf2CLQ77fDf6Z1vNrIyfT9Z9Ll9I4K07PvKo7lZh+2bLJpYfPghgT24ArEqRYrHw6F9zSctjdeXnFi9wmdwAvPPPSs4lJdlvWwyDx/6cS2KW5CZrfKuPHuXLzXmrlWQYVrS4kQRnSW7AVrla06Be6FGiDox23Cl1WUZyA9dW4TZQl55HWU9n6cMg6dyThGdJbgB7texawbHsOPR/eToOr7k4PJv7H3S4uff8OcasWIYCh99h5vdj/13NltiTDvvsO/IMVYPOOqkmrijjl8D5U47rVynL8YzkJmtSwJXvEz9Hpa7x7PjykUr4FNI3Zd7Kco8B6jLq0giUuvI6o4w41MWnAQuOx5HRJvk3SJlboDHnB6XSUJeetI3aODuO1BWQ+J3jTsmzM5KbLO0gY/901KWnUEbxrAPo0SmqqVOnFkjn/fr1c7j97rvvMnnyZNatW+d00cApU6ZQrVo1JkyYAEDDhg3ZtGkT48eP5/bbby+QGN2ZM2mBw8jN1TRd48/JS3hywgMAnNh3ki1LXa/2bFgN/pm9nnMx5ylTueiWLYjZH0vM/lNu2yQnpLBixr90vcf2yWD+V8vcLuGum3TmTlrADX1bZuyfzMJv/3ZdsdxqcHTncXb8u4emnRo6bVMUWA2DaVu34OrQDaU4l5TEkoP7ubWe89Mv2TEMg8UHsy+e+v6/Kxnfsy8Ayw8f5FSi6xc1heL7rVE83qotPrkcxdkZM4/GQRdc3m/SFE2C/yYl/bJ9FEclfo/jp0zHqMBqezMKfgqA/WdWUDfU9XPRpCuah/5HfMo5Qv3L5Oo4vMFIXgQ4/8BwRTpG0l/ogbcC8OO2aIeRm6uZNI3p26JoWbESAOcTTtA8fIvbauINw45y+Nx6apaxjRSp5Jk4X43Z3gsqabpXT1UplQJJP+P8OQJgtZ2ySlsLmXElzwFSwOVfoo5KnIYWMDDf481XKcvAOOumgUIlfQ9BD9tPVamkaTiOcjm2RyVD8lwIGprv4Ra2IjPJ2Gq1MnPmTBITE2nfvr3TNmvXrqVnz54O23r16sWmTZtIT3f+4pCamkp8fLzDV37ZuWaPy+QGwLAYbP9nt/32bg8qeCtDsW/ToWzbFaY1cz37ZP/fvI3273f+t9dlsgK2hGXHf3vtt4/uOkFqUqrbx9dNOrvW7nPbprCdSUzkTGKi2zZmXWfLqdhc9xGbkIDFcP2zzZS1j6hTsdnOsbmQnMxJN6NC2UlI3GBfJdeVIJ90Yi5mSfrTo3H9xgVgoNKujPRdjF+LNZtBPD+TlRPnvVu5O8eSPTy1nzzH/u2GmBMukxuwjeRsjLkyghxz4T+PqomfvZhlRMajquibs33MfGU5Asr93xSYID3KfkulR+M+UTPAshulsksyC5ftOLIZlzDOgWEb5VQqFSz7cJ3YAWioLD+r4iRXk4x///13fv31V44dO0ZaWprDfVu2bHGxl3Pbt2+nffv2pKSkEBwczJw5c2jUyHkhyFOnTlG+vOMKoOXLl8disXDu3DkqVrx2HsPYsWN56623chSTpzyp3G32ufLp16Mq3Njm8BRlJh/PPtFnXc3Yk2PK+vPxqCq6UkX/Z+VhFXVzHs79+3r6vNL0LN97GFeeJhp7tq+uZ30Zym4fWx2nK0xu37au9OGTfaNC5eEoWZa5FSYPfjcOzz9Pq4lrjj/f7OXPyuie87Q/01XfZ/dM0ShCn/ldyOmxe/LXoeXgca8vOf5tTpo0iQceeIBy5coRFRVF27ZtKV26NIcOHXI7OdiV+vXrEx0dzbp163jiiScYNmwYu3btctn+6klgmXMwXE0OGzVqFHFxcfav48eP5zhGV9r2aeH2DVbXddr0vlK4rlmXxtm+cfv4mWl0Y/aVtwvTzfd6NiGt5/Au9u9b94x0WQAUbAlQ696R9ts1m1YjJCLY7eMbhqJl96Jd4qFsYBC1wku5fZmxGAYdq9XIfR9BwQSYs/+s0qV6Tfv3HatWdzvqowFVQ8OoGJL7K5BKh/dwO2KgFJxPCaRqqSzFHf06kt2LbdYJkZVK9yS7HPJyui81y9zoSciFJ9h1nTYHQQ/Zv+1aoya6m0TVpGkOv/Na5W4m2eL+eWIoqFq2t/225tcZ928TJq9XRcdcE/TsTjdar5yeAjTfDrgfidLBt63TK5CKEtupQIu7FmCqAbrtKjJN8wWf1rj/HVoL9Wq4gpTjBOeLL77gq6++4rPPPsPX15eXXnqJpUuXMnLkSOLi4nIcgK+vL3Xq1KF169aMHTuW5s2bM3HiRKdtK1SowKlTjufbz5w5g9lspnRp53NW/Pz8CA0NdfjKLwNH9nU5r0TTNHz8zPR9tLt9W5lKEdx8T0eXSY6ma/R9uDshpdy/sRe2UuXCadiurts2ERXCaXFzU/vtXg90xT/I32WSY1gVtz97q/22j68Ptz93q8sPILpJJ7JrE2o1c375c1GhaRqPtW7rcoDYpGnUKRVBRxeXcXvq3ibN3d5v0jSea3flTb5dlao0LFPW5UiOAh5r1cbtG2h26lXowp64am5PUx1IHYDZ5Gu/rQU9iOtTVDpowZBlnkS10q3YdrGeyz4MBbsSe+PnE5SbQ/Aa3bcVkN3ffTC635Wrou5t2hwfXXdZr1zTNO5vfiV5DPYrxbbLXd1WE4++1IyKWa+iCrgTNH9cv1UotKDh2cSdvzTNjJYl0buWCXxaoPlk+fAT0DcjKXKVwBhoQR4mmYXJ90Yw1cH1cSi0oEcdPvBrQY/g9m9KLwv+OR+cuB7kOME5duwYN95oe6EMCAjgcsY5+vvuu48ZM2bkOSClFKmpzudetG/fnqVLlzpsW7JkCa1bt8bHx/tD0DWbVmfUjyMxmXWHpEXTNXz9fXh73iuUqRThsM/ILx6mcQfbCM3Vlb5b9WzOox/e56Xo8+aDZWMoXcn5pbf+QX5MWvuuw7bQ0iG8t2A0/kF+DkmObtLRdY3nv3mChjc4Jk2DXxlA96G2T4eZI2WZ+1ZvVIVXZz6bX4dToO5o2JhHW9nemDITisyfQIXgEL69bVCeEgmAVzt3ob2LdU90NL66tT+BvlkSCU3jq34D7GvwaBkRZcY3PLIl9zTJ++hYuUrfEpNk+/CROVcmMxnZdLE9N9R93aG95tsaLfQtrh0210ALQiv1HZruOKpUo/o3HE20nbq2XlUhO/piJG3qOl7RV2SVXYDrNy4TlP3LYUvlkFD7pfxZnz+6pmHWdSb1vpU6EY4f/FrVHc+2S7YpAFdXEz94uTL1a37p0F4zlUYr9ZWTJMdWJV0LG4fmc+0FIQUu8AFb8mWPBezxmaqjhX/m0FzT/NFKfQdaKBnpn8O+WsjLaH43FXDQeadpuu33Ycpcr8jxOAh8CAIcL7jR/LuiBb/o2C7zZ6CHo5WaahvpKYZyXGyzVq1a/P7777Rs2ZI2bdrw8MMP89hjj7FkyRIGDx7MhQuur5q42ujRo+nTpw9Vq1bl8uXLzJw5k/fff59FixbRo0cPRo0aRUxMDNOnTwdsl4k3adKExx57jEceeYS1a9fy+OOPM2PGDI+voiqIYpunjpxh/pdL2f7PbnSTTqsezenz8M1EVHCeAFitVtb/tYUl36/k3MkLlKtWhl7Du9KmdyR6Pi2u5g2GYfDb+Hn88fkiLl9IICDYn5uHdGL423fjH+i8KvGls3Es+m4FGxZuwZpupVH7+tz6eA8q13G+DoxSim2rdrHw2+Wc2B9LWJlQug3pRKfbb8DHt6jPq3C07fQpft6+lX3nzxPs68stdevRr35DAvMxOf9r3x4mbVjHycvx+Og6narV4NVOXSgf7Hx0IDk9nb/27+WvfXu4nJpGnYgI7mnSjBYZV97kh9T0JLYfm4Y5fSH+egLxlooEhw2lQcXeLp/vynLYtoBbejRovmh+XSFgEJru/G8qzZLM9mM/oaf+SaApnsuWcviFDqZxpf7X19+UNRniR0PqUmxXVfmAXw8IfQ/d5HwR0NMJCczcuY01x46hULSrUpXBTZpROcT565thWNl5Yg6pib8QYjpHojUM/AfQrNq9DqNpWSnreUj+DZX6D2AB31ZoAYPRzNXy58BzQSkF6ZtQSb+C9QhoYWgBt4J/HzTNz/k+RrxtccDUZbZ1ZHyaoAXcg+bjfkS6qFEqGZL/QqUsBHUZTHXRggY7jlpdvU/6XttVcek7QfNH8+sOAQOv+cBQlBV4NfGHH36YqlWr8sYbbzBlyhSef/55OnTowKZNmxg0aBDffvutx4/10EMPsXz5cmJjYwkLC6NZs2a8/PLL9OjRA4Dhw4dz5MgRVq5cad9n1apVPPfcc/aF/l5++eVCXehPCCGEEAWvwBMcwzAwDANzxqTGX3/9lX///Zc6derw+OOP4+tbtIe6JMERQgghrj8FnuBc7yTBEUIIIa4/OX3/ztU6OBcvXuTbb79l9+7daJpGw4YNeeCBB4iIiMh+ZyGEEEKIApbjEZxVq1bRv39/QkNDad26NQCbN2/m0qVLzJs3j5tuKtoz0YvCCE5xqSYuihZDKRbu38f0bVHsOXcWf7MPfevWY1jzFtQIdz451xvVxHNKKcXKo4eZFr2FradOYTbpdKtZi+GRrWhYpqzTfc4nJfHj9mhm7d7JpZQUqoSEck/T5tzZqDH+ZueTuP89dpRp0VvYFBuDSdO4qXpNHmjRiqblyjttr4w4SPoZlTwLjAugl0cLvBsC7kLTA53usyHmBFOjN7PuxAk0DTpUrc4DkS3t5RPyQ06riQvPKWWBlHmopJ/Bchi0QAjohxZ4H5opbwVyRc4V+CmqJk2acOONNzJ58mRMGTVqrFYrTz75JGvWrGHHjh25i9xLCjvBKS7VxEXRYijF84sXMG/fnmsqlpt1E1P7D6LdVW943qgmnlNKKd77dxXfRm22V8XOPA6ASX1upU8dxyrRRy9d4q7fZ3I+Ocl+3JkXzzYtV54fB91F8FVzAyeu/4+J69de04ehFB/26M2gho6XPivrKdT5wWCc4sqaIhm9mOvaqlfr4Q77fLNlE+/9u8ppH2916cbQZpG5+yFlkdNq4sJzSqWjLj4Jaau4pgq3FoAW8T2aT1M3jyDyW4FUE8/q4MGDvPDCC/bkBsBkMvH8889z8ODBnD5ciVNcqomLouWn7VuZt28PcG3F8nTDymN/zSUpS702b1QTz42lhw7wbZStttHVFbINpXh20XxOJ1wpEqqU4umFf3IhS3IDtoUKFbDj7BneX7PaoY81x48ycf1ap30o4OVlizl66ZLDPurS/2XU98m6YFpGL5aDqPj/ObSPPhXLe/+uctnHGyuXs+ecu6KJ2ctNNXGRA4lfQ1rmc+eqKtwqCXXxCdsIjyiycpzgtGzZkt27d1+zfffu3URGRuZHTMVWZjVxVwU6s1YTF8JTSim+i9rsshyEoRSX09L4c++Vv9vMauKGiwHczGri6VZ3y9vnv6nRW1wuepj5Rv7Lzu32bVtPn2LH2TMui04aSvH7rh3EZ1k8dFr0lmxrcc3YsfVKv5YDkL4B10v9WyFlAcp6zr7l+61RbvvQNY0ft291eb8nMquJu5JZTVzknFIWVNIPuC5SaYBxBlKXezMskUM5nmQ8cuRInnnmGQ4cOEC7du0AWLduHZ9//jnvv/8+27ZdqQzcrFnRrhPkbTmpJl6msvPSE0Jc7XJaGkfjLrltY9JsFcvvzlidOLOauLt6VJnVxKuHh+djtO5Fn4p1mXSBLWHZnGVUIupUrMMpOWfSrFb2nDtL28pVANgcezLbKtwbTl6pwk1atAeRW8GyA0xdANh4MvtK3+tP5K0uXk6riYscsMaCkd0HTTMqLRrNv5dXQhI5l+ME55577gHgpZdecnqfpmkopdA0DauXP/0VdcWlmrgoWjypDK7hWBncO9XEcy67khXOjsOTaYRZ9/GkLIY5S+V1NE9/BldeTk0e7JPXn22Oq4kLz3lceb1oF+cs6XKc4Bw+fLgg4igRMquJG1bXn5qvh2riomgJ8vWlWbny7Dh7xuVIhkUZdKh6paBnx6rVmbzJ9RwbDaiSx2riudGpWg2WHz7odmSiU5bCpB2qVnN5EiFTiK8vjcuWs9/uUr0mf+zd7bIPXdO4qUaNKxt822H7ibjryQ98Iu23utaoyU/bt7rsw6RpdKlR0+l9nupaoyb7zp9z+Tu/upq4yAG9IpiqgfU4rn/vlowq5aKoyvFHiOrVq3v8JRwVl2riouh5tFVbt290lUNC6VGrtn2bN6qJ58ZDLVu5PA5d0wjx83O4wql2RGm6VK/h8jg0bIVD/cxXPss9ENnS5VuWrmn4m83c1fjK1TGaqRL49cb1y6UGgfeg6Vf+bu9v3gJN01xW+jbpOkObRrp4PM/ktJq48JymaRnVxV09U0xgrpeR/IqiKldjpD/88AMdOnSgUqVKHD16FIAJEybwxx9/5GtwxVFxqSYuipa+devxXLsbAceK5RpQOiCQaf0H4ZPlykdvVRPPqTaVqvDOzT1sSUCWpEUDgnx8mNb/dkL9HAspftyrLw0y1sfJTMgy972lbn2ebtveoX3jcuUZ36MPJk1z6CMzufmm30DKBgY57KOFvQs+zTNbZvyf8fP064IW8n8O7WuViuDTPrdi1vVrKn37mkxMuaW//WefW7mpJi5yIOBuCByecSNrFW7AVAmt1FdoXv4AIHImx+vgTJ48mTFjxvDss8/y7rvvsmPHDmrVqsW0adP4/vvvWbFiRUHFmi8Kex0cKD7VxEXRs+vsGX7esY3dZ88QYPahd526DGjQ6Jp1YDJ5o5p4bhy6eIGft28j6tRJfE0mbq5ZizsaNqFUgPOFMNOsVpYePMCcPbs4n5xE9bBw7mzchBurVHP5JnQs7hI/79jGppgYzLpOp+o1uLtxU8oEOl+0TykLpP6NSp4DxlnQK6EF3gm+HdBczLk5eTmeGTu2se7EcTQ0OlSrxuDGzVxWd8+NnFYTFzmj0raikmaC9QBoIWj+fSHgFjRNFmX1tgJf6K9Ro0a89957DBgwgJCQELZu3UqtWrXYsWMHXbp04dy5c9k/SCEqCgmOEEIIIXKmwBf6O3z4MC1aXHte18/Pj8TExJw+nBBCCCFEvstxglOzZk2io6Ov2b5w4UIaNWqUHzEJIYQQQuRJji8Tf/HFFxkxYgQpKSkopdiwYQMzZsxg7NixfPPNNwURoxBCCCFEjuQ4wXnggQewWCy89NJLJCUlce+991K5cmUmTpzI4MGDCyJGIYQHlDIgZREq6Uew7AXNH/x7owXej2Z2vmxDVOxJ3lr1t30NnQCzmX71GvBml274m699eVBKQepSVOIPYNkFmi/49UQLuh/NXNtJD95x4Px5Xl+5jE0nY7AqhZ/JRPdadfhf126E+zufDKpS16CSpkPaZsAEfp3Rgoah+TRx3j4X1cSNxOmQ8CWos4AGegUIehI96G6n7S+npjJz5zZm7tjO2aREygYGcXfjptzTpBkhV1095k07zpxmavQWVh45hFUpWlWsxPDIlnSqVqPQYiqqlOWY7XmVshBUCpjroQUOBf8+LiejF3hMSkHqkoy/292g+YF/z4zXhlqFEpM35HiScVbnzp3DMAzKlSuXfeMiQiYZi+JIKQMV93+Q8hfXVD7GjFbqGzS/Gxz2mbNnFy8sWej08SL8/Vk5/BGHq6+UUqj4MZD8i5M+dLRSX6D53ZSvx+WJ/44f4/45v2M4WbMkwGzm7/sfuuaqJZXwKSrhU2yxZ664bgIMtLD30QIGOrbPRTVx4+JjkOriqlL/W9DDP3HYdC4pibt/n8mRSxcdjkQDqoeH88sdg6+5fN0b5u7Zxf8tXYQG11Qsf7ptO55rJ4vdZVJpG1AXHgbSufK8yvhb8b8FLWw8mpdXP7a9NoyGlNlc+3drQis1Bc2vo1djyq0Cn2ScnJxMUlISAGXKlCE5OZkJEyawZMmSnEcrhMgfyTMykhu4pvIx6ahLT6KMJPvWFIuFF5cucvlwF1JSeOyvuY4bU/7ISG6c9WFBXXzaNsrhRYZh8PCfc5wmNwDJFgv3zf3dYZtK/S8juQHHAppWQKHiRqEsxxz3yWE1cSPpd9fJDUDKfIzkxQ6bRi1fzLG4S9cciQKOx8Uxapn3X2OPx8Xx4tJFGEo5rVj+6YZ1/HvsqNfjKoqUSkZdfBJIw/F5lfGcSVkASTO8H1jy7IzkJksswJXXhqdQRoL34/KCHCc4/fv3Z/r06QBcunSJtm3b8tFHH9G/f38mT56c7wEKIdxTSqESp4LreuKgLmdJgGDi+v/cFqgEWHfiOElpaVf6SZzmpg8FpNpeTL3o9907SbFY3LY5cOE8MfHx9tsqaTpXFm5zRkMlz7zSPhfVxEn4PNvYSZho/zYmPp6/Dx9yWdrBqhQrjhzieJx3E8ifslRVd8akaUyL3uKlaIq45L9AxeOYRDhSSdM8qp2Wn1TSNNz+3apkSJ7rvYC8KMcJzpYtW+jUqRMAv//+OxUqVODo0aNMnz6dSZMm5XuAQohsqASwHsN9rSQTKj3afmudB5WsFRB9+pTte2W1zblx24fm0Ic3/H3kkEftlh0+eOVG2hZcJyvY7kvbmKV9tAc9ZFQTz2Sc8mCXKyMfW0/HZltTS2W086ZNMTHZVizfFCsVy4GM5767aa3K9neq4t20yV9KpYJlH9n/3UZ5KySvynGCk5SUREhGAb4lS5YwaNAgdF2nXbt29rINQghv8uTPWCPrqIWnNab8TFmXqPdkH+/OL/CkajeArylrXJ7sk+WNKhfVxD2TtbyCZ314UkE8P3lSjdxcSBNnix5Pn/ve/Bvx5G/W8bWhOMnxM7NOnTrMnTuX48ePs3jxYnr27AnAmTNnZNKuEIVA04PA3BT3f84WNL8rk0H71KmX7eOaNI3mFSra+tB08L0B9y+EhterK9/R0LO1t27Jerx+nXF/HDqaX+crN+3VxN1xrCaOuU72Qfk0tH/bplJlzNkkL2Zdp02lKtk/bj66qXpNt8mwSdPoXL2G9wIqwmx/X+5Ol+pgbuxQlLWgaZov+LTG/WuD1eG1oTjJcYIzZswY/u///o8aNWpwww030L69rZDdkiVLnK5wLIQoeFrwI7g+928CvRL4dbNveTCyZZbRGeduqVvf4U1XC3oE16d2dNBLQ8AtOYo7r7rWrE2Ev7/bNm0qVSY0SxstaDiuh+x12yW0AXdeaZ+LauIE/5+LtlmEvGL/tnRgILc3bOwymdA1jUENGrmsk1VQ7mrcFH+z2WVcCniwRSuvxlRk+XUDU2VcJ88GWvCj3owIyPy7dfXaoINeFvz7eDMkr8lxgnPHHXdw7NgxNm3axKJFV67C6NatG5988ombPYUQBUXz740W/EzGratOK+kRaBHfomk+9va6rvPToLtcjho0LFOWj3s6vuhpfp3QQkZd1UdGP1oYWqnv0DT3yUZBmHXXvfibnJ8eqhgcwvcD7nDYpvk0Qgv7ANvL31WnrjQ/tPCv0ExlHPfJYTVx3f8mCHzEddDBI9F9HRODN27qSvsqVW2PfFVV9HaVq/DGTTe7frwCUiYwkG/7DbwmycmsxD6+R2+alCvv9biKIk0zo5X61pbo27Zk/G97nmjBT6MVQiKh+XdFC37RIZYrrw3haKWm2kZ6iqE8rYNzPZJ1cERxptJ3oZJ+yVjMKwDNvxf43+ZyWPxCUhLv//cPyw8dINVipWxQEI+3asPdTZq57sNyAJU0A9K3g+aP5tcNAgai6YX395SQlsYna9cwb98ektLTiQjw575mkTzcojW6iyROWY6hkn+BtE2A2bYWSMBdaKbSztvnopq4kbYVLo+F9L22Db6NIXgUum9jp+2thsHKo4f5fdcOTiUkUCE4mDsaNaFL9Zpen3+T1bmkJH7duZ3VR49gMQxaV6rEvU2bUy0svNBiKqqUkQAp81ApS0AlgbkhWuDdaD6FW8pIpe+1XR2YvjPj77Z7xt9tSKHGlRMFXk38eicJjhBCCHH9KfCF/oQQQgghijpJcIQQQghR7EiCI4QQQohiJ8fVxIUobtKtVubs2cWP27dy5NJFQnx96V+/Efc3j6RC8PUzAc9QioX79zF9WxR7zp3F3+xD37r1GNa8BTXCS+VPHxYL6/c/T8OgvwnxSUMBxxLLEO/zNJHV78mXPpRSrDx6mGnRW9h66hRmk063mrUYHtmKhmXK5ksfuYorF9XEVdpGW4mLtA2ABr432iqW+8qSGkIUNJlkLEq0VIuFh/+cw5rjx9DR7EUbTZpGkK8vMwbdRcOy5Qo5yuwZSvH84gXM27cHXdPsdaZMmoZZNzG1/yDaZVyCnOs+LBaOHulE9eDzKAWZVw1nvoKsvzSQGxuOy1MfSine+3cV30ZttleshiuXS0/qc6tHixTmt9xUE1eJ36Iuj8NpxfLQN9AC7/VG6EIUGzLJWIgc+GzjOtZm1GXKWpHaqhSJaWk89tcfWA3XxfOKip+2b2Xevj0ADkU0rUqRblh57K+5JKWn56mPDfseoXrweeBKcpP1+xvC5xBzcWee+lh66ADfRm0GuKZ6taEUzy6az+kE71c+zmk1cZW2NSO5AacVy+PfQmVeOi6EKBCS4IgSK9Vi4Ydt0S6raluV4sTleFYfO+LdwHJIKcV3UZtd1xJXistpafy5d3ee+mkaug5X472ZSc7pU6/mqY+p0VvcrpprVYpfdm7PUx85lZtq4irpB7IrB6GSfs7HKIUQV5MER5RYx+PjiE9NddvGrOtExXq3gnNOXU5L42jcJfe1xDWdLadyfxxpaUkEmK1kV6Ozov+xXPcBEH0q1mXCCbZkbXPsyTz1kWO5qSaetonsK5ZvyFtcQgi3JMERJZYnFbWVUh5VVC5MJg+OQ4Nsizm6o+tml6M3WSmVt5eU7H4neT2OXMlNNXHNg+rMmlzjIURBkgRHlFjVw8KpEOy+sq9VKTpWq+6liHInyNeXZuXKu00OLMqgQ9XcH4fZ7Et8up/bJEfT4HhK3paj71StRrYJWydv/z5yU03c7yayO0VF1orlQoh8JwmOKLFMus6jLdu4vl/TaFa+Ai0rVPJiVLnzaKu2Lk/tmDSNyiGh9KhVO0997Em61eUpKqXAUFC/Rt6uonqoZSuXx6FrGiF+fgxq6LyOU0HJTTVxLXAo9oKGztpjlquohChgkuCIEm1Y8xYMbWqrEp05cpA5ElItLJwpt9yG5sEpoMLWt249nmt3I3DlODLfXksHBDKt/yB8TB6cNnGjfYOxRF+0jdBk5iBKZXwBW5NfIjywYp76aFOpCu/c3AMNx1NvGhDk48O0/rcT6ueXpz5yI6fVxDVzLbTwCRltsr7M6oAvWqnP0UyVCzJkIUo8WQdHCGBzbAwzd2zn4IULhPr50a9+A26pWw9/s09hh5Yju86e4ecd29h99gwBZh9616nLgAaNCPb1zbc+oo78SEj6FMr7X8CiTBxKrEvFiu9RKbxBvvVx6OIFft6+jahTJ/E1mbi5Zi3uaNiEUgEB+dZHTuWmmriyxqKSZkLaekBD87sxo2J5ee8GL0QxINXEsyEJjhBCCHH9kYX+hBBCCFHiSYIjhBBCiGJHEhwhhBBCFDuy0pQQRdTxuDimbd3C/H17SbakUzeiDPc1j+TWuvUx5dNidycvxzN9axTz9u4hMT2NmqUiGNq0OQMaNHK6oJ5SiiWHDvD91ih2nTmDj8lErzp1eaB5C2pHlM6XmHJDGRcg6SdU0mxQcWCqjBY4GAJuR9P8Cy0uIYoCpRSkLkEl/gCW3aD5gX9PtMD70cy1Cju8AiOTjIUogjadjGHY3N9Js1rtRSczq4T3rl2XT/vcmuckZ/uZ0wyd/StJ6enX9HFT9Rp8eesAfLNcWq6U4rUVy5ixY9s1Fct1TePLWwfQpUbNPMWUG8pyDHXhHjDOc22l7yZoEd87rFEjREmilIGKGw0ps7GdtMn8GzEBJrRSU9D8OhZegDkgk4yFuM6lWiw8+tdcUrMkN3ClSvjig/v5fmtUnvqwGAaP/TmXxCzJTdY+Vh89ypebHWslzd2zmxk7tjm0A9tqzxbD4MkF84hLSclTXDmllEJdegaMCziv9L0TdflDr8YkRJGSPDsjuQHHvxErkI669BTKSCiEwAqeJDhCFDHz9+/lUkqKyxV9Fbaq23kZfF1++CCnEhPc9KH4fmsU6dYrBSO/i96M5qJkgcKWmP2+e2euY8qV9G1g2YnrwpYGJM9CGZe9GZUQRYZKmobrUiMKVDIkz/VeQF4kCY4QRUzUqdhsC0rGXI7nfHJygfZxITmZk5dtiYHVMNh59gzKTc1yTdOI8nal7/Rosq8TlQaWPV4IRoiiRalUsOwDN3+3oKHS8zYiXFRJgiNEEeNJdXAAcx6qnHveh+0lQtNcjd1c9bjervTt8UuYXE8hSiJP/mo13BeGvX5JgiNEEdOxWnUshuHyfg2oX7oMYX65vzqoY9Xs+6gaGkbFkBDANvm4fZWqbhMjozAqr/vdiPtPp4AWDD55q3IuxPVI03zBpzXu3+qtaH4dvBWSV0mCI0QR07VGLaqHhbtMJhTweOu2eSoC2q5KVRqWKeu2j8datbEXHgVbxXKrm0rfpQMC6Vevfq5jyg3NXBt8O+P6E6gGgcPQNO8X6BSiKNCCHsFxcnFWOuhlwb+PN0PyGklwhChiTLrO1P6DKBsUBFwZZM5MRka0uYH+9RvmqQ9N0/iq3wAqZ1xqmXkCKrOP4ZEtuadJM4d9Olevwauduji0y4wvzM+P6QNuL5TipFr4eDBnJlZXVfr274sWPMLrMQlRVGj+XdGCX8y4lflBQLN96eFopabaRnqKIVkHR4giKjEtjXn79rBg/14S09KpX6YMQ5o2p0m5/KtEnZyezl/79/LXvj1cTk2jTkQE9zRpRouKlVzus//8eX7esZVtp0/hbzbTvVYdbm/YiNA8nDLLK6XSIGUZKuUP23o4pmpoAXeAb/s8jXQJUVyo9L2o5JmQvhM0fzS/7hAwEE0PKezQPCbVxLMhCY4QQhQvhmGQlpZW2GGIfODr64vu4mKFnL5/y6UFQgghrltpaWkcPnwYw82keXH90HWdmjVr4uub99NmkuAIIYS4LimliI2NxWQyUbVqVZef/MX1wTAMTp48SWxsLNWqVcvz6WVJcIQQQlyXLBYLSUlJVKpUicDAwMIOR+SDsmXLcvLkSSwWCz4+ebtoQRIc4VUqfRcqcTqkrgCs4BOJFjQMza9TvvWx7/w5pkVvYemhA6RbDZqWL8/w5i25uWat62rCaU6riRtKsXD/PqZvi2LPubP4m33oW7cew5q3oEZ4Kad9KGssKukHSP4TVBKYaqAFDoGA29A0eXnIKi7pDLuOTaSKz1LCfJM4nxrCaWtfmtUcSaBvWGGH5zFlJEHyb6ikmWCcBr2UbUJ24D1oenhhh5cj1oxSIvlxOkMUDZm/S6vVmucEp1AnGY8dO5bZs2ezZ88eAgICuPHGGxk3bhz167teS2PlypV07dr1mu27d++mQYMG2fYpk4wLj0r+CxX3f9guUcysHWSyfR/0GHrIC3nuY9mhAzy54E+UUvY1W0yahlUp7msWyZs33XxdJDk5rSZuKMXzixcwb9+eayp9m3UTU/sPol2Vqg59qPQdqAv322rR2H8fGdWGfTujlfqi2F4+mlOn4w5gPT+YsgGX0VFoGhgZr5xHE8tSutIswgMrFG6QHlBGHOrC0Izl++HKIok66BXQSs9AM1UsrPByLCUlhcOHD1OzZk38/QvvKj6Rf9z9Tq+rauKrVq1ixIgRrFu3jqVLl2KxWOjZsyeJiYnZ7rt3715iY2PtX3Xr1vVCxCK3lPUkKu5FbAtOZS2MmPF94peo1JV56uN8UhJPL/wLq2E4LEiX+f0P26KZv39vnvrwhtxUE/9p+1bm7dvj0A5sx55uWHnsr7kkpafbtytlQV18wjZq4/D7yJiomfYPJH6dvwd2HTt76knK+F/GpNmSGwBds31VDTzH/iPPFmp8nlLxb4PlAPZq63YGGKdRl/L+IUOIoqJQE5xFixYxfPhwGjduTPPmzZk6dSrHjh1j8+bN2e5brlw5KlSoYP8ymYpnLY3iQiX9gvsl9U22U1d58NuuHaQbhstedE1javSWPPXhDTmtJq6U4ruozS6rzhhKcTktjT/37r6yMfVv2+kJlyucKlTSDyiV7uL+kuPIuU00CjuCWXf++zDriubhUZxLOOblyHJGWc9DygJcV163QvomVPo+F/eLvNI0jblz5xZ2GCVGkZpyHhcXB0BERES2bVu0aEHFihXp1q0bK1ascNkuNTWV+Ph4hy9RCNK34PrNFGwvrnlLPqJOncTdGVdDKbaePuW2TVGQ02ril9PSOBp3yX36qOlsORVrv63St5LtFDzjAlhj3bcpAc5c+jfbNmZdEXPhPy9EkweWnbhObrJIjy7oSIqtU6dO8fTTT1OrVi38/PyoWrUq/fr1Y/ny5YUdWolUZBIcpRTPP/88HTt2pEmTJi7bVaxYka+++opZs2Yxe/Zs6tevT7du3Vi9erXT9mPHjiUsLMz+VbVqVaftREHzZIQtb6Nwupb901m/Dubf5LSauCftNbgqafLwT1+TkVHNw5+BXuSv2fD0d1nUj6NoOnLkCK1ateLvv//mgw8+YPv27SxatIiuXbsyYoSUCykMRSbBeeqpp9i2bRszZsxw265+/fo88sgjtGzZkvbt2/PFF19wyy23MH78eKftR40aRVxcnP3r+PHjBRG+yIbtKil3b8Qm8M3blVSdqlXPZhRDo0PVvK+tUNByWk08yNeXZuXKu03eLMqgQ9Urlb413w6AxU0UGpiqgn79TDgtKFXK9LJPKHYlxWqiRrlrL34oUnyaA9lNxNXAr503oil2nnzySTRNY8OGDdxxxx3Uq1ePxo0b8/zzz7Nu3Tqn+7z88svUq1ePwMBAatWqxeuvv056lrlyW7dupWvXroSEhBAaGkqrVq3YtGkTAEePHqVfv36UKlWKoKAgGjduzIIFC+z77tq1i759+xIcHEz58uW57777OHfunP3+33//naZNmxIQEEDp0qXp3r27R/NfrydFIsF5+umnmTdvHitWrKBKlSo53r9du3bs37/f6X1+fn6EhoY6fIlCEDAItEBcP+UMtKAH8tRF//oNKeXv7/KN3qoUj7Rsk6c+vCE31cQfbdXW5Zwdk6ZROSSUHrVqX9noewOYG+D6U71CC3oEzYNRseKuYlg9oi81x2o4/30YCrbGdyXEv7SXI8sZTQ+GwHtw/UFDB79eaCbXdciEcxcuXGDRokWMGDGCoIwiuVmFh4c73S8kJIRp06axa9cuJk6cyNdff80nn3xiv3/IkCFUqVKFjRs3snnzZl555RX7pdMjRowgNTWV1atXs337dsaNG0dwcDAAsbGx3HTTTURGRrJp0yYWLVrE6dOnueuuu+z333PPPTz44IPs3r2blStXMmjQoCJ/+j6nCnUsUinF008/zZw5c1i5ciU1a9bM1eNERUVRsaJ80izKNL0UlPoGdfHhjCt3Mv+QTIBCC30Xzbd5nvoI8vVl2oA7uH/O78SnplzpIeOy6Tduupkbq1bLUx/ekFlN/N7Zv3IqIQEN208r83J3Z9XE+9atx3MXb+STdf/Z22W+jZUOCGRa/0H4ZJmIr2kalJpiu0zcegyu9AJYIXAYBNztleO9HtSvOYX9R++iQdhxLIaGWVf2/7dfakCruh8Vdoge0UJeQFmP2iaZZ/6uM5cG8GmGFvZe4QZ4nTpw4ABKKY+WKsnqtddes39fo0YNXnjhBX755RdeeuklAI4dO8aLL75of9ysVwsfO3aM22+/naZNmwJQq1Yt+32TJ0+mZcuWvPfeld/nd999R9WqVdm3bx8JCQlYLBYGDRpE9eq2kd3MxylOCjXBGTFiBD///DN//PEHISEhnDp1CoCwsDACAgIA2ymmmJgYpk+3XWEzYcIEatSoQePGjUlLS+PHH39k1qxZzJo1q9COQ3hG820FZZdD0u+o1FWABXxaoAXeg2aunu3+nmharjwrhz3E77t3svzQQVKtFppXqMiQJs2oHVG0P2FnVSO8FEuHPpCjauJPt21Pt5q1+XnHNnafPUOA2YfedeoyoEEjgp0shKaZKkGZPyF5ASplAah4MNVGCxyM5htZwEd4fQnxL029OguJPj4DkucQZIrjsrUMvkF307z+QHT9+pirpGm+EP4FpP2HSvoNjBjQy6IFDAC/brK4Yy5ljnzk9PT377//zoQJEzhw4IA96ch6luH555/n4Ycf5ocffqB79+7ceeed1K5tG4kdOXIkTzzxBEuWLKF79+7cfvvtNGvWDIDNmzezYsUK+4hOVgcPHqRnz55069aNpk2b0qtXL3r27Mkdd9xBqVLOFwS9bqlCxJXFGBy+pk6dam8zbNgwddNNN9lvjxs3TtWuXVv5+/urUqVKqY4dO6r58+d73GdcXJwCVFxcXD4eiRBCCG9LTk5Wu3btUsnJyYUax/nz55Wmaeq9995z2w5Qc+bMUUoptXbtWmUymdQ777yjNm7cqPbt26fefvttFRYW5rDP3r171ccff6x69OihfH191ezZs+33HTt2TE2ePFkNHDhQ+fj4qEmTJimllOrdu7caNGiQ2r9//zVfCQkJSimlDMNQ//77rxozZoxq2rSpKlu2rDp06FD+/VByyd3vNKfv34Wa4BQGSXCEEKJ4KCoJjlK2pKJy5cr2BCKrixcvKqUcE5zx48erWrVqObR76KGHrklwsho8eLDq16+f0/teeeUV1bRpU6WUUqNHj1b169dX6enpHsVusVhU5cqV1UcffeRR+4KUnwmOzCAUQggh8uiLL77AarXStm1bZs2axf79+9m9ezeTJk2iffv217SvU6cOx44dY+bMmRw8eJBJkyYxZ84c+/3Jyck89dRTrFy5kqNHj7JmzRo2btxIw4a2+XfPPvssixcv5vDhw2zZsoW///7bft+IESO4cOEC99xzDxs2bODQoUMsWbKEBx98EKvVyvr163nvvffYtGkTx44dY/bs2Zw9e9a+f3EhJ1yFEEKI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5RZCQ0MJCQmhU6dOHDx4ELBN+H/77bepUqUKfn5+REZGsmjRIrfHtWrVKtq2bYufnx8VK1bklVdecYi5S5cuPPXUUzz//POUKVOGHj165OnnmB1JcIQQRYZ/2KPomvPTR1ZDIyHdj0bVHstTHw9EtnT6pga25MbfbOauxk3z1Ico+jaejLlm5CYrBcQmXGZjAZyuvPPOOzl37hwrVqywb7t48SKLFy9myJAhLF68mKFDhzJy5Eh27drFl19+ybRp03j33XcdHueNN96gf//+bN++nQcffJDXX3+dXbt2sXDhQnbv3s3kyZNdnpKKiYmhc+fO+Pv78/fff7N582YefPBBe0IyceJEPvroI8aPH8+2bdvo1asXt912G/v3Ox/ViomJoW/fvrRp04atW7cyefJkvv32W9555x2Hdt9//z1ms5k1a9bw5Zdf5uXHmK2iM1YlhCjxGlXqw/r9u2gV/CWGsl0mrpTtzSbJ6sNp3wnU98/bHILG5cozvkcfXly6ELhyJVVmcvNNv4GUDQzK66GIIu5MouvkJjftciIiIoLevXvz888/061bNwB+++03IiIi6NatG127duWVV16xj+bUqlWL//3vf7z00ku88cYb9se59957efDBB+23jx07RosWLWjdujUANdyMRH7++eeEhYUxc+ZMfHx8AKhXr579/vHjx/Pyyy8zePBgAMaNG8eKFSuYMGECn3/++TWP98UXX1C1alU+++wzNE2jQYMGnDx5kpdffpkxY8ag67bxlDp16vDBBx/k5seWY5LgCCGKlBvqvsCx892IOfMV4foerJi5zI00rPIY9YMq5ksfAxo0pGXFivy8YxubYmIw6zqdqtfg7sZNKRMYmC99iKKtXFBwvrbLqSFDhvDoo4/yxRdf4Ofnx08//cTgwYMxmUxs3ryZjRs3OozYWK1WUlJSSEpKIjDjOZqZyGR64oknuP3229myZQs9e/ZkwIAB3HjjjU77j46OplOnTvbkJqv4+HhOnjxJhw4dHLZ36NCBrVudX2G4e/du2rdvj5bl9G+HDh1ISEjgxIkTVKtWzWnMBUkSHCFEkVOtdCTVSn9RsH2EhfNKh84F2ocoutpUqkyF4GBOJyQ4PWWpARWCQ2hTqXKB9N+vXz8Mw2D+/Pm0adOGf/75h48//hiwzX956623GDRo0DX7Za2wHRTkONLYp08f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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"filenames": {
|
|
"image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/exercisesweek42_34_0.png"
|
|
}
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Loading and plotting iris dataset\n",
|
|
"from sklearn import datasets\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"\n",
|
|
"iris = datasets.load_iris()\n",
|
|
"\n",
|
|
"_, ax = plt.subplots()\n",
|
|
"scatter = ax.scatter(iris.data[:, 0], iris.data[:, 1], c=iris.target)\n",
|
|
"ax.set(xlabel=iris.feature_names[0], ylabel=iris.feature_names[1])\n",
|
|
"_ = ax.legend(\n",
|
|
" scatter.legend_elements()[0], iris.target_names, loc=\"lower right\", title=\"Classes\"\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "c528846f",
|
|
"metadata": {},
|
|
"source": [
|
|
"**c)** Loop over the iris dataset(`iris.data`) and evaluate the network for each data point.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 16,
|
|
"id": "2efc507d",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# No need to change this cell! Just make sure it works!\n",
|
|
"for x in iris.data:\n",
|
|
" prediction = feed_forward_4(layers, x)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "334560b6",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Exercise 5 (Very optional and very hard :)\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "ea0a8fe0",
|
|
"metadata": {},
|
|
"source": [
|
|
"**a)** Make the iris target values into one-hot vectors.\n",
|
|
"\n",
|
|
"**b)** Define the cross-entropy loss function to evaluate the performance of your network on the data set.\n",
|
|
"\n",
|
|
"**c)** Use the autograd package to take the gradient of the cross entropy wrt. the weights and biases of the network.\n",
|
|
"\n",
|
|
"**d)** Use gradient descent of some sort to optimize the parameters.\n",
|
|
"\n",
|
|
"**e)** Evaluate the accuracy of the network.\n",
|
|
"\n",
|
|
"**e)** Show off how you did in a group session!\n"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.9.18"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
} |