{ "cells": [ { "cell_type": "markdown", "id": "a1cc726f", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Physics Informed Neural Networks\n", "\n", "**Presenter:** Filippo Maria Bianchi\n", "\n", "**Repository:** [github.com/FilippoMB/Physics-Informed-Neural-Networks-tutorial](https://github.com/FilippoMB/Physics-Informed-Neural-Networks-tutorial)" ] }, { "cell_type": "markdown", "id": "e363db51", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Introduction\n", "\n", "What are PINNs?\n", "\n", "- PINNs are Neural Networks used to learn a generic function $f$.\n", "- Like standard NNs, PINNs account for observation data $\\{ x_i \\}_{i=1}^N$ in learning $f$.\n", "- In addition, the optimization of $f$ is guided by a regularization term, which encourages $f$ to be the solution of a Partial Differential Equation (PDE)." ] }, { "cell_type": "markdown", "id": "cffd09a7", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Traditional PDE solvers\n", "\n", "- Simple problems can be solved analytically." ] }, { "cell_type": "markdown", "id": "1c01bf72", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "- E.g., consider the velocity:\n", "\n", "$$v(t) = \\frac{d x}{d t} = \\lim_{h \\rightarrow 0} \\frac{x(t+h) - x(t)}{h}$$\n", "\n", "" ] }, { "cell_type": "markdown", "id": "c42b11b1", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Solution: \n", "\n", "$$\n", "v(t) = \n", "\\begin{cases}\n", "3/2 & \\text{if}\\; t \\in \\{ 0, 2 \\} \\\\\n", "0 & \\text{if}\\; t \\in \\{ 2, 4 \\} \\\\\n", "-1/3 & \\text{if}\\; t \\in \\{ 4, 7 \\}\n", "\\end{cases}\n", "$$" ] }, { "cell_type": "markdown", "id": "08b1c65b", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "\n", "- In most real-world problems solutions cannot be found analytically.\n", "- PDEs are solved numerically.\n", "- E.g., they apply the definition of derivative for *all* the point of the time domain." ] }, { "cell_type": "markdown", "id": "45aec619", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "**Limitations of PDE solvers**\n", "\n", "- ❌ Computationally expensive and scale bad to big data.\n", "- ❌ Integrating external data sources (e.g., from sensors) is problematic." ] }, { "cell_type": "markdown", "id": "6ee24fff", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Neural Networks\n", "\n", "\n", "\n", "- Universal function approximators.\n", "- Can consume any kind of data $\\boldsymbol{X}$.\n", "- Are trained to minimize a loss, e.g., the error between the predictions $\\boldsymbol{\\hat{y}}$ and the desired outputs $\\boldsymbol{y}$." ] }, { "cell_type": "code", "execution_count": 1, "id": "bf86ecd0", "metadata": { "run_control": { "marked": false }, "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "# Imports\n", "import torch\n", "from torch import nn\n", "import numpy as np\n", "from scipy.integrate import solve_ivp\n", "import matplotlib.pyplot as plt\n", "from matplotlib import cm" ] }, { "cell_type": "markdown", "id": "82760add", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Let's start by creating a simple neural network in PyTorch." ] }, { "cell_type": "code", "execution_count": 2, "id": "980ee1b5", "metadata": { "run_control": { "marked": false }, "slideshow": { "slide_type": "-" } }, "outputs": [], "source": [ "# Define a simple neural network for regression\n", "class simple_NN(nn.Module):\n", " def __init__(self):\n", " super(simple_NN, self).__init__()\n", " self.linear_tanh_stack = nn.Sequential(\n", " nn.Linear(1, 16),\n", " nn.Tanh(),\n", " nn.Linear(16, 32),\n", " nn.Tanh(),\n", " nn.Linear(32, 16),\n", " nn.Tanh(),\n", " nn.Linear(16, 1),\n", " )\n", "\n", " def forward(self, x):\n", " out = self.linear_tanh_stack(x)\n", " return out" ] }, { "cell_type": "markdown", "id": "a908a777", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Then, we use the NN to make predictions: $\\hat{y}_i = \\rm{NN}(x_i)$.\n", "- Create a small dataset $\\{x_i, y_i\\}_{i=1, \\dots 5}$." ] }, { "cell_type": "code", "execution_count": 3, "id": "3a554192", "metadata": { "run_control": { "marked": false }, "slideshow": { "slide_type": "-" } }, "outputs": [], "source": [ "# Define dataset\n", "x_train = torch.tensor([[1.1437e-04],\n", " [1.4676e-01],\n", " [3.0233e-01],\n", " [4.1702e-01],\n", " [7.2032e-01]], dtype=torch.float32)\n", "y_train = torch.tensor([[1.0000],\n", " [1.0141],\n", " [1.0456],\n", " [1.0753],\n", " [1.1565]], dtype=torch.float32)" ] }, { "cell_type": "markdown", "id": "50b447d4", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "- Train the NN by minimizing $\\rm{MSE}(\\boldsymbol{y}, \\boldsymbol{\\hat{y}})$." ] }, { "cell_type": "code", "execution_count": 4, "id": "6d76616a", "metadata": { "run_control": { "marked": false }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "epoch: 0, loss: 1.460526\n", "epoch: 200, loss: 0.000205\n", "epoch: 400, loss: 0.000063\n", "epoch: 600, loss: 0.000013\n", "epoch: 800, loss: 0.000009\n" ] } ], "source": [ "# Initialize the model\n", "model = simple_NN()\n", "\n", "# define loss and optimizer\n", "loss_fn = nn.MSELoss()\n", "optimizer = torch.optim.Adam(model.parameters(), lr=1e-2)\n", "\n", "# Train\n", "for ep in range(1000):\n", "\n", " # Compute prediction error\n", " pred = model(x_train)\n", " loss = loss_fn(pred, y_train)\n", "\n", " # Backpropagation\n", " optimizer.zero_grad()\n", " loss.backward()\n", " optimizer.step()\n", "\n", " if ep % 200 == 0:\n", " print(f\"epoch: {ep}, loss: {loss.item():>7f}\")" ] }, { "cell_type": "markdown", "id": "956c9768", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "After training is done, we can evaluate the model on all data points in the domain." ] }, { "cell_type": "code", "execution_count": 5, "id": "aa4644a4", "metadata": { "run_control": { "marked": false }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "# Define the domain where to evaluate the function\n", "domain = [0.0, 1.5]\n", "x_eval = torch.linspace(domain[0], domain[1], steps=100).reshape(-1, 1)\n", "f_eval = model(x_eval)" ] }, { "cell_type": "code", "execution_count": 6, "id": "b1f29521", "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plotting\n", "fig, ax = plt.subplots(figsize=(12, 5))\n", "ax.scatter(x_train.detach().numpy(), y_train.detach().numpy(), label=\"Training data\", color=\"blue\")\n", "ax.plot(x_eval.detach().numpy(), f_eval.detach().numpy(), label=\"NN approximation\", color=\"black\")\n", "ax.set(title=\"Neural Network Regression\", xlabel=\"$x$\", ylabel=\"$y$\")\n", "ax.legend();" ] }, { "cell_type": "markdown", "id": "ce277406", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "- The NN does a good job in fitting the data samples.\n", "- However, it has no information on what function should learn when $x>0.8$. " ] }, { "cell_type": "markdown", "id": "cd3a8bf4", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Physics Informed NNs\n", "\n", "- Use PDEs to adjust the NN output.\n", "- Train the model with an additional loss that penalizes the violation of the PDE.\n", "\n", "$$ \\mathcal{L}_{\\text{tot}} = \\mathcal{L}_{\\text{data}} + \\mathcal{L}_{\\text{PDE}}$$\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "id": "4ad6a57a", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "**Advantages**\n", "\n", "Combine information from both data and from physical models.\n", "- ✅ Compared to traditional NNs, $\\mathcal{L}_{\\text{PDE}}$ regularizes the model limiting overfitting and improving generalization.\n", "- ✅ Compared to traiditional PDE solvers, PINNs are more scalable and can consume any kind of data." ] }, { "cell_type": "markdown", "id": "a7379c57", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Example I: population growth\n", "\n", "Logistic equation for modeling the population growth: \n", "\n", "$$ \\frac{d f(t)}{d t} = Rt(1-t)$$\n", "\n", "- $f(t)$ is the population growth over time $t$.\n", "- $R$ is the max growth rate.\n", "\n", "\n", "
\n", " 💡 Tip: Wanna know more about the Logistic equation? Check this chapter from my time series course!\n", "
\n" ] }, { "cell_type": "markdown", "id": "3913c157", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "- In general, there are *infinite* solutions satisfying the Logistic equation.\n", "- To identify a unique solution, a boundary condition must be imposed, e.g., at $t=0$:\n", "\n", "$$f(t=0)=1$$" ] }, { "cell_type": "code", "execution_count": 7, "id": "b8b0ee7a", "metadata": { "run_control": { "marked": false }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "R = 1.0\n", "ft0 = 1.0" ] }, { "cell_type": "markdown", "id": "7c6782f4", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "- Use the NN to model $f(t)$, i.e., $$f(t) = \\rm{NN}(t)$$\n", "- We can easily compute the derivative $\\frac{d\\rm{NN}(t)}{dt}$ thanks to automatic differentiation provided by deep learning libraries.\n" ] }, { "cell_type": "code", "execution_count": 8, "id": "308d79c8", "metadata": { "run_control": { "marked": false }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "def df(f: simple_NN, x: torch.Tensor = None, order: int = 1) -> torch.Tensor:\n", " \"\"\"Compute neural network derivative with respect to input features \n", " using PyTorch autograd engine\"\"\"\n", " \n", " df_value = f(x)\n", " for _ in range(order):\n", " df_value = torch.autograd.grad(\n", " df_value,\n", " x,\n", " grad_outputs=torch.ones_like(x), # what is this?\n", " create_graph=True,\n", " retain_graph=True,\n", " )[0]\n", "\n", " return df_value " ] }, { "cell_type": "markdown", "id": "7ba8fce8", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "
\n", "â„šī¸ A note on autograd\n", "\n", "- In PyTorch, torch.autograd.grad computes the gradients of given tensors with respect to some inputs. \n", "- The grad_outputs argument specifies the gradient of the output tensor with respect to the final loss or objective function. \n", "- By default, grad_outputs is a tensor of ones (representing the derivative of the output with respect to itself).\n", "- You can specify different values if needed, such as in cases of custom gradient flows or higher-order derivatives.\n", "
" ] }, { "cell_type": "markdown", "id": "46db65df", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "- We want our NN to satisfy the following equation:\n", "\n", "$$ \\frac{d\\rm{NN}(t)}{dt} - Rt(1-t) = 0 $$" ] }, { "cell_type": "markdown", "id": "937b1439", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- To do that, we add the following physics-informed regularization term to the loss:\n", "\n", "$$ \\mathcal{L}_\\text{PDE} = \\frac{1}{N} \\sum_{i=1}^N \\left( \\frac{d\\text{NN}}{dt} \\bigg\\rvert_{t_i} - R t_i (1-t_i) \\right)^2 $$\n", "\n", "where $t_i$ are **collocation points**, i.e., a set of points from the domain where we evaluate the differential equation." ] }, { "cell_type": "markdown", "id": "7f9bc1c0", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "- First, we generate $10$ evenly distributed collocation points." ] }, { "cell_type": "code", "execution_count": 9, "id": "f7b2db5f", "metadata": { "run_control": { "marked": false }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "t = torch.linspace(domain[0], domain[1], steps=10, requires_grad=True).reshape(-1, 1)" ] }, { "cell_type": "markdown", "id": "0babb74f", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "- Only minimizing $\\mathcal{L}_\\text{PDE}$ does not ensure a unique solution.\n", "- We must include the boundary condition by adding the following loss:\n", "\n", "$$ \\mathcal{L}_\\text{BC} = \\left( \\text{NN}(t_0) - 1 \\right)^2 $$\n", "\n", "- This lets the NN converge to the desired solution among the infinite possible ones." ] }, { "cell_type": "markdown", "id": "3de1ccf0", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "The final loss is given by:\n", "\n", "$$ \\mathcal{L}_\\text{PDE} + \\mathcal{L}_\\text{BC} + \\mathcal{L}_\\text{data} $$" ] }, { "cell_type": "code", "execution_count": 10, "id": "66cb667d", "metadata": { "run_control": { "marked": false }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# Wrap everything into a function\n", "def compute_loss(nn: simple_NN, \n", " t: torch.Tensor = None, \n", " x: torch.Tensor = None,\n", " y: torch.Tensor = None,\n", " ) -> torch.float:\n", " \"\"\"Compute the full loss function as pde loss + boundary loss\n", " This custom loss function is fully defined with differentiable tensors therefore\n", " the .backward() method can be applied to it\n", " \"\"\"\n", "\n", " pde_loss = df(nn, t) - R * t * (1 - t)\n", " pde_loss = pde_loss.pow(2).mean()\n", "\n", " boundary = torch.Tensor([0.0])\n", " boundary.requires_grad = True\n", " bc_loss = nn(boundary) - ft0\n", " bc_loss = bc_loss.pow(2)\n", " \n", " mse_loss = torch.nn.MSELoss()(nn(x), y)\n", " \n", " tot_loss = pde_loss + bc_loss + mse_loss\n", " \n", " return tot_loss" ] }, { "cell_type": "code", "execution_count": 11, "id": "e4655d8b", "metadata": { "run_control": { "marked": false }, "scrolled": false, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "epoch: 0, loss: 2.392479\n", "epoch: 200, loss: 0.000324\n", "epoch: 400, loss: 0.000177\n", "epoch: 600, loss: 0.000152\n", "epoch: 800, loss: 0.000136\n", "epoch: 1000, loss: 0.000123\n", "epoch: 1200, loss: 0.000115\n", "epoch: 1400, loss: 0.000108\n", "epoch: 1600, loss: 0.000103\n", "epoch: 1800, loss: 0.000099\n" ] } ], "source": [ "model = simple_NN()\n", "optimizer = torch.optim.Adam(model.parameters(), lr=1e-2)\n", "\n", "# Train\n", "for ep in range(2000):\n", "\n", " loss = compute_loss(model, t, x_train, y_train)\n", "\n", " # Backpropagation\n", " optimizer.zero_grad()\n", " loss.backward()\n", " optimizer.step()\n", "\n", " if ep % 200 == 0:\n", " print(f\"epoch: {ep}, loss: {loss.item():>7f}\")" ] }, { "cell_type": "code", "execution_count": 12, "id": "c4ed19a2", "metadata": { "run_control": { "marked": false }, "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "# numeric solution\n", "def logistic_eq_fn(x, y):\n", " return R * x * (1 - x)\n", "\n", "numeric_solution = solve_ivp(\n", " logistic_eq_fn, domain, [ft0], t_eval=x_eval.squeeze().detach().numpy()\n", ")\n", "\n", "f_colloc = solve_ivp(\n", " logistic_eq_fn, domain, [ft0], t_eval=t.squeeze().detach().numpy()\n", ").y.T" ] }, { "cell_type": "markdown", "id": "0d7d806c", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Let's evaluate once again the function on the domain $[0, 1.5]$" ] }, { "cell_type": "code", "execution_count": 13, "id": "cf90c7b0", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "f_PINN_eval = model(x_eval)" ] }, { "cell_type": "code", "execution_count": 14, "id": "705c3b81", "metadata": { "run_control": { "marked": false }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/IAAAHUCAYAAACZCBM6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADlfklEQVR4nOzddXQUZxfA4d/GPSEhIQFCEpwAQYq7FncrHrQFCqW4FC2uwSkU15aipcXdXVocmqABQiBOfL4/huzHEiEQI3Cfc+bs7sw7M3d2l7B3XtMoiqIghBBCCCGEEEKITEEvowMQQgghhBBCCCFE8kkiL4QQQgghhBBCZCKSyAshhBBCCCGEEJmIJPJCCCGEEEIIIUQmIom8EEIIIYQQQgiRiUgiL4QQQgghhBBCZCKSyAshhBBCCCGEEJmIJPJCCCGEEEIIIUQmIom8EEIIIYQQQgiRiUgiL4QQ4r1WrlyJRqPh/Pnz6XreatWqUa1atQ/a5/r164wdOxYfH5942zw9PXF1dU2V2DKDsLAwxo4dy+HDh+Nti/tME3qfMhNXV1c8PT3T/bw+Pj5oNBpWrlyZJsdP6Ls6adIktm3bFq9sSv99jh07Fo1Gg4ODA8HBwfG2u7q60rBhQ511Go0GjUbDlClTUj0eIYQQ7yeJvBBCiE/WwoULWbhw4Qftc/36dcaNG5dggjpq1Ci2bt2aStF9+sLCwhg3blyCiXyDBg04deoUTk5O6R+YeK+EvquJJfKpxc/Pj2nTpn3QPlOmTOHly5dpFJEQQojESCIvhBDik+Xu7o67u3uqHS9PnjyUKFEi1Y6Xmdnb21OuXDmMjY0zOhSRgIz4rtatW5fZs2fz9OnTZJWvVasWoaGhTJw4MY0jE0II8S5J5IUQQqSa48ePU7NmTSwtLTEzM6NChQr89ddfCZYrX748JiYm5MiRg1GjRvHrr7/Ga+qdUNP6RYsWUaxYMSwsLLC0tKRgwYKMGDECUJv0tmrVCoDq1atrm//GNX9OqLlybGws8+bNo3jx4piammJjY0O5cuXYsWPHe6/3/PnzNG7cGFtbW0xMTChRogS///57vHKnT5+mYsWKmJiYkD17doYPH87SpUvjXa9Go2Hs2LHx9n+3+bifnx+9e/fG3d0dCwsLHBwcqFGjBseOHdOW8fHxwd7eHoBx48Zp34u44yTWtH758uUUK1YMExMTbG1tadasGTdu3NAp4+npiYWFBXfv3qV+/fpYWFjg7OzMwIEDiYiIeO/7dvDgQapVq4adnR2mpqbkypWLFi1aEBYWpi3z8uVLevfuTY4cOTAyMiJ37tyMHDkyyeP7+flhZGTEqFGj4m27efMmGo2GuXPnatc9ffqUb7/9lpw5c2JkZISbmxvjxo0jOjpaZ98nT57QunVrLC0tsba2pk2bNslKdoOCgjAwMGD69OnadS9evEBPTw9ra2ud8/Tr1w97e3sURQHif1c1Gg2hoaGsWrVK+1m++28jODiYXr16kTVrVuzs7GjevDlPnjx5b5xxJkyYQHR0dILfwYQUKFCAbt26sWDBAu7fv59k2f/++49vvvmG7NmzY2xsTLZs2ahZsyaXL19OdnxCCCH+TxJ5IYQQqeLIkSPUqFGDwMBAli1bxoYNG7C0tKRRo0b89ttv2nJXr16ldu3ahIWFsWrVKhYvXszFixeTVau3ceNGevfuTdWqVdm6dSvbtm3jxx9/JDQ0FFCbi0+aNAmABQsWcOrUKU6dOkWDBg0SPaanpyc//PADpUuX5rfffmPjxo00btz4vX3HDx06RMWKFQkICGDx4sVs376d4sWL06ZNG51+09evX6dmzZoEBASwcuVKFi9ezKVLl5gwYcJ7rzcxcU2Zx4wZw19//cWKFSvInTs31apV0zajd3JyYvfu3QB069ZN+14klOTGmTx5Mt26daNw4cJs2bKFOXPmcPXqVcqXL8+dO3d0ykZFRdG4cWNq1qzJ9u3b6dq1K7Nnz2bq1KlJxu7j40ODBg0wMjJi+fLl7N69mylTpmBubk5kZCQA4eHhVK9endWrVzNgwAD++usvOnTowLRp02jevHmix7a3t6dhw4asWrWK2NhYnW0rVqzAyMiI9u3bA2oSX6ZMGfbs2cPo0aPZtWsX3bp1Y/LkyfTo0UO73+vXr6lVqxZ79+5l8uTJbNq0CUdHR9q0aZPkdQJYWVlRunRp9u/fr1134MABjI2NCQ4O5uzZs9r1+/fvp0aNGmg0mgSPderUKUxNTalfv772s3y320n37t0xNDRk/fr1TJs2jcOHD9OhQ4f3xhnHxcWF3r17s2zZMm7fvp2sfcaOHYu+vn6S3yuA+vXrc+HCBaZNm8a+fftYtGgRJUqUICAgINnxCSGEeIsihBBCvMeKFSsUQDl37lyiZcqVK6c4ODgowcHB2nXR0dFKkSJFlJw5cyqxsbGKoihKq1atFHNzc8XPz09bLiYmRnF3d1cAxdvbW7u+atWqStWqVbWvv//+e8XGxibJWDdt2qQAyqFDh+Jt69y5s+Li4qJ9ffToUQVQRo4cmeQxE1KwYEGlRIkSSlRUlM76hg0bKk5OTkpMTIyiKIrSpk0bxdTUVHn69Km2THR0tFKwYMF41wsoY8aMiXcuFxcXpXPnzonGEh0drURFRSk1a9ZUmjVrpl3v5+eX6DHjPtO487969UoxNTVV6tevr1PuwYMHirGxsdKuXTvtus6dOyuA8vvvv+uUrV+/vlKgQIFE41QURfnjjz8UQLl8+XKiZRYvXpzg8adOnaoAyt69e7Xr3n1vduzYEa9MdHS0kj17dqVFixbadd9++61iYWGh3L9/X+ccM2bMUADl2rVriqIoyqJFixRA2b59u065Hj16KICyYsWKJK/3p59+UkxNTZXw8HBFURSle/fuSt26dRUPDw9l3LhxiqIoyuPHjxVAWbJkiXa/d7+riqIo5ubmCX4P4j7L3r1766yfNm2aAii+vr5JxjhmzBgFUPz8/JQXL14o1tbWOu+Vi4uL0qBBA519AKVPnz6KoijKyJEjFT09PeXKlSs68cT9vXjx4oUCKF5eXknGIYQQIvmkRl4IIUSKhYaGcubMGVq2bImFhYV2vb6+Ph07duTRo0fcunUL+H/NfdasWbXl9PT0aN269XvPU6ZMGQICAmjbti3bt2/nxYsXKYp7165dAPTp0+eD9rt79y43b97U1u5GR0drl/r16+Pr66u93kOHDlGzZk2yZcum3V9fXz9ZNbpJWbx4MSVLlsTExAQDAwMMDQ05cOBAvGbwyXXq1Clev34dbwR4Z2dnatSowYEDB3TWazQaGjVqpLPOw8PjvU2sixcvjpGRET179mTVqlX8999/8cocPHgQc3NzWrZsqbM+LrZ3Y3lbvXr1cHR0ZMWKFdp1e/bs4cmTJ3Tt2lW7bufOnVSvXp3s2bPrfH716tUD1O8pqJ+fpaUljRs31jlPu3btkrzOODVr1uT169ecPHkSUGvea9euTa1atdi3b592Hah9zlPi3Rg9PDwA3vuZvM3Ozo6hQ4eyefNmzpw5k6x9hgwZgq2tLUOHDk1wu62tLXny5GH69OnMmjWLS5cuxWsxIYQQ4sNIIi+EECLFXr16haIoCY6Anj17dgD8/f21j28ntXESWveujh07snz5cu7fv0+LFi1wcHCgbNmy2oToQ/n5+aGvr4+jo+MH7ffs2TMABg0ahKGhoc7Su3dvAO1NBn9//wSP/6HnfNusWbPo1asXZcuWZfPmzZw+fZpz585Rt25dXr9+/VHHjPt8EvsM47bHMTMzw8TERGedsbEx4eHhSZ4nT5487N+/HwcHB/r06UOePHnIkycPc+bM0YnF0dExXjNzBwcHDAwM4sXyNgMDAzp27MjWrVu1zbZXrlyJk5MTderU0ZZ79uwZf/75Z7zPr3DhwoDu55fQdzO5n1+FChUwMzNj//793L17Fx8fH20if+bMGUJCQti/fz+5c+fGzc0tWcdMjJ2dnc7ruIEMP/Q70b9/f7Jnz86QIUOSVd7KyoqffvqJ3bt3c+jQoXjbNRoNBw4coE6dOkybNo2SJUtib29Pv379EpzuTgghxPsZZHQAQgghMr8sWbKgp6eHr69vvG1xg23F1cDb2dlpE+G3JXek7C5dutClSxdCQ0M5evQoY8aMoWHDhty+fRsXF5cPitve3p6YmBiePn36QdOwxV3L8OHDE+2zXaBAAUC93oSuLaF1xsbGCQ7m9m7iunbtWqpVq8aiRYt01qckKYpLAhP7DN9uQZFSlStXpnLlysTExHD+/HnmzZtH//79yZYtG9988w12dnacOXMGRVF0kvnnz58THR393li6dOnC9OnT2bhxI23atGHHjh30798ffX19bZmsWbPi4eGR6NgMcTeg7OzsdPqyx0nu99XIyIhKlSqxf/9+cubMiaOjI0WLFiV37twAHD58mAMHDsSbpz0jmZqaMnbsWHr27JngYJUJ6dWrF3PmzGHo0KH06tUr3nYXFxeWLVsGwO3bt/n9998ZO3YskZGRLF68OFXjF0KIL4HUyAshhEgxc3NzypYty5YtW3Rq/2JjY1m7di05c+Ykf/78AFStWpWDBw/qNIuPjY1l06ZNH3zOevXqMXLkSCIjI7l27RrwYbWQcc2o302I36dAgQLky5ePK1euUKpUqQQXS0tLQB09/8CBAzo3L2JiYnQGAIzj6urK1atXddYdPHiQkJAQnXUajSbetHFXr17l1KlTOus+5L0oX748pqamrF27Vmf9o0ePOHjwIDVr1nzvMT6Uvr4+ZcuWZcGCBQBcvHgRUJujh4SExJszffXq1drtSSlUqBBly5ZlxYoVrF+/noiICLp06aJTpmHDhvz777/kyZMnwc8vLpGvXr06wcHB8WYxWL9+fbKvs1atWly4cIHNmzdrm8+bm5tTrlw55s2bx5MnT5LVrN7Y2PijW1x8qK5du1KoUCGGDRuWrGbwRkZGTJgwgXPnzr3333L+/Pn56aefKFq0qPYzF0II8WGkRl4IIUSyHTx4MMHR3OvXr8/kyZOpXbs21atXZ9CgQRgZGbFw4UL+/fdfNmzYoK1ZHTlyJH/++Sc1a9Zk5MiRmJqasnjxYu3I83p6id9j7tGjB6amplSsWBEnJyeePn3K5MmTsba2pnTp0gAUKVIEgCVLlmBpaYmJiQlubm7xmh2DWjPcsWNHJkyYwLNnz2jYsCHGxsZcunQJMzMz+vbtm2gsv/zyC/Xq1aNOnTp4enqSI0cOXr58yY0bN7h48aI2mfnpp5/YsWMHNWrUYPTo0ZiZmbFgwQLt9b6tY8eOjBo1itGjR1O1alWuX7/O/Pnzsba21inXsGFDfv75Z8aMGUPVqlW5desW48ePx83NTWdKM0tLS1xcXNi+fTs1a9bE1taWrFmzxpuCD8DGxoZRo0YxYsQIOnXqRNu2bfH392fcuHGYmJgwZsyYRN+LD7F48WIOHjxIgwYNyJUrF+Hh4Sxfvhz4fx/xTp06sWDBAjp37oyPjw9Fixbl+PHjTJo0ifr16ycr6e3atSvffvstT548oUKFCtoWEnHGjx/Pvn37qFChAv369aNAgQKEh4fj4+PD33//zeLFi8mZMyedOnVi9uzZdOrUiYkTJ5IvXz7+/vtv9uzZk+xrrlmzJjExMRw4cIBVq1Zp19eqVYsxY8ag0WioUaPGe49TtGhRDh8+zJ9//omTkxOWlpbxriu16OvrM2nSJJo1awb8v799Utq2bcuMGTO0Y0/EuXr1Kt9//z2tWrUiX758GBkZcfDgQa5evcqwYcPSJH4hhPjsZfRoe0IIIT59caNQJ7bEjXx+7NgxpUaNGoq5ubliamqqlCtXTvnzzz/jHe/YsWNK2bJlFWNjY8XR0VEZPHiwdkTygIAAbbl3R61ftWqVUr16dSVbtmyKkZGRkj17dqV169bK1atXdY7v5eWluLm5Kfr6+jojiyc0EnhMTIwye/ZspUiRIoqRkZFibW2tlC9fPsG433XlyhWldevWioODg2JoaKg4OjoqNWrUUBYvXqxT7sSJE0q5cuV0rnfJkiXxRq2PiIhQhgwZojg7OyumpqZK1apVlcuXL8cbmT0iIkIZNGiQkiNHDsXExEQpWbKksm3btgSvb//+/UqJEiUUY2NjBdAe591R6+P8+uuvioeHh/a9aNKkiXYE9zidO3dWzM3N470fcaOfJ+XUqVNKs2bNFBcXF8XY2Fixs7NTqlatquzYsUOnnL+/v/Ldd98pTk5OioGBgeLi4qIMHz5cO/p7nMRG9A8MDFRMTU0VQFm6dGmCsfj5+Sn9+vVT3NzcFENDQ8XW1lb56quvlJEjRyohISHaco8ePVJatGihWFhYKJaWlkqLFi2UkydPJmvUekVRlNjYWCVr1qwKoDx+/Fi7/sSJEwqglCxZMt4+CX2Wly9fVipWrKiYmZkpgPbfRmKzShw6dCjRGRze9vao9e+qUKGCAiQ5av3b9u7dq/27EBfPs2fPFE9PT6VgwYKKubm5YmFhoXh4eCizZ89WoqOjk4xNCCFEwjSKoijpdtdACCGESMTXX3+Nj49PsuevzuxWrlxJly5d8Pb2TrCGXAghhBAiMdK0XgghRLobMGAAJUqUwNnZmZcvX7Ju3Tr27dunHQxLCCGEEEIkThJ5IYQQ6S4mJobRo0fz9OlTNBoN7u7urFmzhg4dOmR0aEIIIYQQnzxpWi+EEEIIIYQQQmQiMv2cEEIIIYQQQgiRiUgiL4QQQgghhBBCZCKSyAshhBBCCCGEEJmIDHaXgNjYWJ48eYKlpSUajSajwxFCCCGEEEII8ZlTFIXg4GCyZ8+Onl7Sde6SyCfgyZMnODs7Z3QYQgghhBBCCCG+MA8fPiRnzpxJlpFEPgGWlpaA+gZaWVllcDRCCCGEEEIIIT53QUFBODs7a/PRpEgin4C45vRWVlaSyAshhBBCCCGESDfJ6d4tg90JIYQQQgghhBCZiCTyQgghhBBCCCFEJiKJvBBCCCGEEEIIkYlIH/mPpCgK0dHRxMTEZHQoQiSLvr4+BgYGMqWiEEIIIYQQmZwk8h8hMjISX19fwsLCMjoUIT6ImZkZTk5OGBkZZXQoQgghhBBCiI8kifwHio2NxdvbG319fbJnz46RkZHUcIpPnqIoREZG4ufnh7e3N/ny5UNPT3rWCCGEEEIIkRlJIv+BIiMjiY2NxdnZGTMzs4wOR4hkMzU1xdDQkPv37xMZGYmJiUlGhySEEEIIIYT4CFIl95GkNlNkRvK9FUIIIYQQIvOTX/VCCCGEEEIIIUQmIom8EEIIIYQQQgiRiUgiLz7Y2LFjKV68uPa1p6cnTZs2zbB44rwb16fsU3nPhBBCCCGEEJmPJPJfmKdPn9K3b19y586NsbExzs7ONGrUiAMHDmR0aB9Eo9Gwbds2nXWDBg3KNNcxZ84cVq5c+UH7JHTNQgghhBBCiC+PjFqfkWKBq4A/YAd4kKa3Vnx8fKhYsSI2NjZMmzYNDw8PoqKi2LNnD3369OHmzZtpd/J0YGFhgYWFRUaHkSzW1tYZHYIQQgghhBAik5Ia+YxyDGgOfAN0f/PY/M36NNK7d280Gg1nz56lZcuW5M+fn8KFCzNgwABOnz6tLffgwQOaNGmChYUFVlZWtG7dmmfPniX7PBEREfTr1w8HBwdMTEyoVKkS586d0ylz7do1GjRogJWVFZaWllSuXJl79+4BcO7cOWrXrk3WrFmxtramatWqXLx4Ubuvq6srAM2aNUOj0Whfv9u0PjY2lvHjx5MzZ06MjY0pXrw4u3fv1m738fFBo9GwZcsWqlevjpmZGcWKFePUqVNJXp9Go2HRokXUq1cPU1NT3Nzc2LRpk06Zf/75hxo1amBqaoqdnR09e/YkJCREu/3dpvXVqlWjX79+DBkyBFtbWxwdHRk7dux7r/nKlStUr14dS0tLrKys+Oqrrzh//nyS8QshhBBCCJEZREdHExAQwKNHj7h58yYXLlzgyJEj/P333/z++++sWLGCefPmMXnyZEaNGsWAAQP49ttv6dixI82bN6dOnTpUrlyZkiVLUrBgQaKiojL6klKN1MhnhGNAXyAAcABMgHDgypv184DKqXvKly9fsnv3biZOnIi5uXm87TY2NgAoikLTpk0xNzfnyJEjREdH07t3b9q0acPhw4eTda4hQ4awefNmVq1ahYuLC9OmTaNOnTrcvXsXW1tbHj9+TJUqVahWrRoHDx7EysqKEydOEB0dDUBwcDCdO3dm7ty5AMycOZP69etz584dLC0tOXfuHA4ODqxYsYK6deuir6+fYBxz5sxh5syZ/PLLL5QoUYLly5fTuHFjrl27Rr58+bTlRo4cyYwZM8iXLx8jR46kbdu23L17FwODxP95jBo1iilTpjBnzhzWrFlD27ZtKVKkCIUKFSIsLIy6detSrlw5zp07x/Pnz+nevTvff/99ks3pV61axYABAzhz5gynTp3C09OTihUrUrt27USvuX379pQoUYJFixahr6/P5cuXMTQ0TNbnJIQQQgghRGqLiIggMDCQoKCgeEtwcHCCjyEhIQQHBxMSEqLzPDw8PFVjCwsL+2xaxkoin95igZmoSbwroHmz3hwwA+4Ds4CKpGp7ibt376IoCgULFkyy3P79+7l69Sre3t44OzsDsGbNGgoXLsy5c+coXbp0kvuHhoayaNEiVq5cSb169QBYunQp+/btY9myZQwePJgFCxZgbW3Nxo0btUln/vz5tceoUaOGzjF/+eUXsmTJwpEjR2jYsCH29vaAevPB0dEx0VhmzJjB0KFD+eabbwCYOnUqhw4dwsvLiwULFmjLDRo0iAYNGgAwbtw4ChcuzN27d5N8r1q1akX37t0B+Pnnn9m3bx/z5s1j4cKFrFu3jtevX7N69WrtTZP58+fTqFEjpk6dSrZs2RI8poeHB2PGjAEgX758zJ8/nwMHDlC7du1Er/nBgwcMHjxYG+vbNyiEEEIIIYT4EDExMQQFBfHq1SsCAgJ0lsDAwHjPAwMDtUl73GNkZGSqx2VoaIiFhQXm5uaJPpqbm2NmZpbkczMzs1SPLaNIIp/ergI3UWviNe9s0wD2wI035Yqn3mkVRVFPoXn3pLpu3LiBs7OzNokHcHd3x8bGhhs3brw3kb937x5RUVFUrFhRu87Q0JAyZcpw48YNAC5fvkzlypUTrTl+/vw5o0eP5uDBgzx79oyYmBjCwsJ48OBBsq4VICgoiCdPnujEAVCxYkWuXLmis87Dw0P73MnJSRtDUol8+fLl472+fPkyoL6HxYoV02n5ULFiRWJjY7l161aSifzbnJyceP78eaIxAAwYMIDu3buzZs0aatWqRatWrciTJ0+S+wghhBBCiM+XoigEBwfz6tUrXr58qbO8uy4gIECbtL969YqgoCBt3pBScV0/45a41wk9WlpaYmFhkeijkZFRqsT0OZFEPr35AxGozekTYgK8eFMuFeXLlw+NRsONGzeSnPZMUZQEk/3E1idUDuLfMHh7f1NT0ySP4enpiZ+fH15eXri4uGBsbEz58uU/6u5eUnHEefuGQty22NjYjz5XUu9VUu/huzc2NBrNe+MYO3Ys7dq146+//mLXrl2MGTOGjRs30qxZsw+MXgghhBBCfGoURSEwMJAXL17g5+fHixcvtIu/v792efv1y5cvU9wX3MzMDBsbG7JkyYK1tTU2Njbax7efW1tbY21tjZWVlc6jhYVFot1fReqQRD692QHGqH3i43dVV9cbvSmXimxtbalTpw4LFiygX79+8frJBwQEYGNjg7u7Ow8ePODhw4faWvnr168TGBhIoUKF3nuevHnzYmRkxPHjx2nXrh0AUVFRnD9/nv79+wNqzfOqVauIiopKsFb+2LFjLFy4kPr16wPw8OFDXrx4oVPG0NCQmJiYROOwsrIie/bsHD9+nCpVqmjXnzx5kjJlyrz3Ot7n9OnTdOrUSed1iRIlALUFw6pVqwgNDdW+zydOnEBPT0+nC8GHSuya8+fPT/78+fnxxx9p27YtK1askEReCCGEEOITFBsby6tXr3j+/Dl+fn6JPsYl7v7+/tpxpD6UsbExtra28ZYsWbJoH+OWuKQ97rnUgH/6JJFPbx5AQdSB7czQbV6vAH6oTeo94u2ZYgsXLqRChQqUKVOG8ePH4+HhQXR0NPv27WPRokXcuHGDWrVq4eHhQfv27fHy8tIOdle1alVKlSr13nOYm5vTq1cvBg8ejK2tLbly5WLatGmEhYXRrVs3AL7//nvmzZvHN998w/Dhw7G2tub06dOUKVOGAgUKkDdvXtasWUOpUqUICgpi8ODB8WrxXV1dOXDgABUrVsTY2JgsWbLEi2Xw4MGMGTOGPHnyULx4cVasWMHly5dZt25dit/LTZs2UapUKSpVqsS6des4e/Ysy5YtA9QB6MaMGUPnzp0ZO3Ysfn5+9O3bl44dOybarD453r1mExMTBg8eTMuWLXFzc+PRo0ecO3eOFi1apPj6hBBCCCFE8sTGxuLv78/Tp0+1y/Pnz3n27Fm8xc/P76MScwsLC7JmzUrWrFmxt7fHzs5Ou2TNmlXnddzyOfUHF/FJIp/e9ICBqKPT30ftEx83ar0fYA0MIE0mBnRzc+PixYtMnDiRgQMH4uvri729PV999RWLFi0C1Obc27Zto2/fvlSpUgU9PT3q1q3LvHnzkn2eKVOmEBsbS8eOHQkODqZUqVLs2bNHm2zb2dlx8OBBBg8eTNWqVdHX16d48eLa/uzLly+nZ8+elChRgly5cjFp0iQGDRqkc46ZM2cyYMAAli5dSo4cOfDx8YkXR79+/QgKCmLgwIE8f/4cd3d3duzYkSoDwo0bN46NGzfSu3dvHB0dWbduHe7u7oDaFGnPnj388MMPlC5dGjMzM1q0aMGsWbNSdM53r/n27dv4+/vTqVMnnj17RtasWWnevDnjxo1L8fUJIYQQQnzpoqKiePr0Kb6+vjx58oQnT57g6+urTdbjnj979uyDk3Nra2scHBywt7fXeYx7bm9vr03cs2bNiolJYv1yxZdKo6TWaAafkaCgIKytrQkMDMTKykpnW3h4ON7e3ri5uaXsH9Qx1NHrbwKRqM3pC6Em8ak89ZxIXRqNhq1btyY51sCnKtW+v0IIIYQQmZSiKPj7+/P48WMeP37Mo0ePtM/jkvUnT57g5+f3QQO/Zc2aFUdHR7JlyxZvcXBw0D63t7fH2Ng4Da9QZFZJ5aHvkhr5jFIZdYq5q6gD29mhNqdPg5p4IYQQQgghvgSKouDn58fDhw91lkePHukk7BEREck6noGBAU5OTmTPnh0nJyft4ujoqH2MS94Tm5FJiLQgiXxG0iNVp5gTQgghhBDicxYWFsbDhw+5f/8+Dx480D7GDdb86NGjZCfp9vb25MiRI94Sl7Rnz56drFmzoqcnNW3i0yOJvBAfSHqjCCGEEEKkjZCQEHx8fPDx8cHb21v7/P79+9y/fz/eTEYJ0Wg0ZMuWDWdnZ50lZ86c5MiRg5w5c+Lk5CTN20WmJom8EEIIIYQQIl1ERkby4MED/vvvP7y9vfnvv//477//tIm7v7//e49hYWGBi4sLuXLl0j7mypVLm7DnyJFDpk8Tnz1J5IUQQgghhBCpJigoiLt372qXuGT9v//+4+HDh8TGxia5f5YsWXB1dcXV1RU3NzdcXFxwdXXVJu42NjZoNJokjyHE504SeSGEEEIIIcQHCQgI4Pbt2zoJe9zi5+eX5L4mJibkzp1bu7i5uWkXFxcXrK2t0+kqhMi8JJEXQgghhBBCxPP69Wvu3r3L7du3uX37Nnfu3NE+f1+y7uDgQN68ecmTJw958uTRSdwdHR2lRl2IFJJEXgghhBBCiC+Uoig8ffqUW7ducfPmTZ3lwYMHSQ7y6+TkRL58+cibN6/OkidPnvfOgS2ESBlJ5IUQQgghhPjMxcbG4uPjw/Xr17XLjRs3uHnzJkFBQYnuZ2NjQ4ECBciXLx/58+fXLnnz5sXS0jIdr0AI8TZJ5EWCXF1d6d+/P/3798/oUFLF4cOHqV69Oq9evcLGxiZdz12tWjWKFy+Ol5dXup5XCCGEEF+emJgYvL29+ffff3WS9ps3b/L69esE99HT08PNzY2CBQvqLAUKFCBr1qzSDF6IT5Ak8l+Yhw8fMnbsWHbt2sWLFy9wcnKiadOmjB49Gjs7u4wOL1UklDhXqFABX1/fTDF4SkbedBBCCCFE5qAoCk+ePOHff//l33//5Z9//tEm74kl7MbGxhQoUAB3d3fc3d0pVKgQhQoVIm/evDKnuhCZjCTyGSgmBo4dA19fcHKCypVBXz/tzvfff/9Rvnx58ufPz4YNG3Bzc+PatWsMHjyYXbt2cfr0aWxtbdMugCTExMSg0WjQ09NLk+MbGRnh6OiYJscWQgghhEhLoaGh/Pvvv1y9epWrV69y5coV/vnnHwICAhIsb2JiQqFChShSpIg2aXd3d8fNzQ39tPyxKYRIN2mTNYn32rIFXF2henVo1059dHVV16eVPn36YGRkxN69e6latSq5cuWiXr167N+/n8ePHzNy5Eid8sHBwbRr1w4LCwuyZ8/OvHnzdLaPHTuWXLlyYWxsTPbs2enXr592W2RkJEOGDCFHjhyYm5tTtmxZDh8+rN2+cuVKbGxs2LlzJ+7u7hgbG7N06VJMTEzi/afUr18/qlatCoC/vz9t27YlZ86cmJmZUbRoUTZs2KAt6+npyZEjR5gzZw4ajQaNRoOPjw+HDx9Go9HoHHvz5s0ULlwYY2NjXF1dmTlzps55XV1dmTRpEl27dsXS0pJcuXKxZMmSJN/j0NBQOnXqhIWFBU5OTvGOCbB27VpKlSqFpaUljo6OtGvXjufPnwPg4+ND9erVAXUOVY1Gg6enJwC7d++mUqVK2NjYYGdnR8OGDbl3716S8QghhBAi81AUhQcPHrBjxw5+/vlnWrVqRf78+bG0tKRcuXL07NmT+fPnc+zYMQICAtDX16dQoUK0atWKcePGsWXLFm7fvk1ISAgXL15k9erVDBs2jMaNG5M3b15J4oX4nCginsDAQAVQAgMD4217/fq1cv36deX169cfffzNmxVFo1EU0F00GnXZvDkl0SfM399f0Wg0yqRJkxLc3qNHDyVLlixKbGysoiiK4uLiolhaWiqTJ09Wbt26pcydO1fR19dX9u7dqyiKomzatEmxsrJS/v77b+X+/fvKmTNnlCVLlmiP165dO6VChQrK0aNHlbt37yrTp09XjI2Nldu3byuKoigrVqxQDA0NlQoVKignTpxQbt68qYSEhCjZsmVTfv31V+1xoqOjlWzZsim//PKLoiiK8ujRI2X69OnKpUuXlHv37mnjOn36tKIoihIQEKCUL19e6dGjh+Lr66v4+voq0dHRyqFDhxRAefXqlaIoinL+/HlFT09PGT9+vHLr1i1lxYoViqmpqbJixQrtuV1cXBRbW1tlwYIFyp07d5TJkycrenp6yo0bNxJ9n3v16qXkzJlT2bt3r3L16lWlYcOGioWFhfLDDz9oyyxbtkz5+++/lXv37imnTp1SypUrp9SrV097vZs3b1YA5datW4qvr68SEBCgKIqi/PHHH8rmzZuV27dvK5cuXVIaNWqkFC1aVImJiXnv5x8nNb6/QgghhEi56Oho5dq1a8ratWuVQYMGKTVr1lRsbW0VIMElW7ZsSu3atZVBgwYpq1evVi5fvqyEh4dn9GUIIVJRUnnouySRT0BaJvLR0YqSM2f8JP7tZN7ZWS2Xmk6fPq0AytatWxPcPmvWLAVQnj17piiKmsTWrVtXp0ybNm20CefMmTOV/PnzK5GRkfGOdffuXUWj0SiPHz/WWV+zZk1l+PDhiqKoiTygXL58WadMv379lBo1amhf79mzRzEyMlJevnyZ6LXVr19fGThwoPZ11apVdRJnRVHiJfLt2rVTateurVNm8ODBiru7u/a1i4uL0qFDB+3r2NhYxcHBQVm0aFGCcQQHBytGRkbKxo0btev8/f0VU1PTePG87ezZswqgBAcHJxhrYp4/f64Ayj///JNkubdJIi+EEEKkv8jISOXy5cvKr7/+qvTq1UspW7asYmpqmmDCbmBgoBQtWlTp2LGjMn36dGXv3r3K06dPM/oShBDp4EMSeekjn86OHYNHjxLfrijw8KFarlq1dAtLO0fo26OSli9fXqdM+fLltQPItWrVCi8vL3Lnzk3dunWpX78+jRo1wsDAgIsXL6IoCvnz59fZPyIiQmdAPSMjIzw8PHTKtG/fnvLly/PkyROyZ8/OunXrqF+/PlmyZAHUvvRTpkzht99+4/Hjx0RERBAREYG5ufkHXe+NGzdo0qSJzrqKFSvi5eVFTEyMtunZ2/FpNBocHR21zeDfde/ePSIjI3XeN1tbWwoUKKBT7tKlS4wdO5bLly/z8uVLYmNjAXjw4AHu7u6Jxnzv3j1GjRrF6dOnefHihc5+RYoU+YCrF0IIIURaiY6O5vr161y4cIHz589z4cIFLl++TERERLyyZmZmFCtWjBIlSmiXwoULY2JikgGRCyEyE0nk05mvb+qWS668efOi0Wi4fv06TZs2jbf95s2bZMmShaxZsyZ5nLhE39nZmVu3brFv3z72799P7969mT59OkeOHCE2NhZ9fX0uXLgQry+WhYWF9rmpqWm86UzKlClDnjx52LhxI7169WLr1q2sWLFCu33mzJnMnj0bLy8vihYtirm5Of379ycyMvKD3g9FUeKdO+5mxtsMDQ3jXX9cAp3QMd8nNDSUr7/+mq+//pq1a9dib2/PgwcPqFOnznuvoVGjRjg7O7N06VKyZ89ObGwsRYoU+eBrF0IIIUTqUBSF//77j7Nnz2qXixcvEh4eHq+slZUVX331FV999RUlS5akRIkS5MuXT/qtCyE+iiTy6czJKXXLJZednR21a9dm4cKF/Pjjj5iammq3PX36lHXr1tGpUyed5Pb06dM6xzh9+jQFCxbUvjY1NaVx48Y0btyYPn36ULBgQf755x9KlChBTEwMz58/p3Llyh8ca7t27Vi3bh05c+ZET0+PBg0aaLcdO3aMJk2a0KFDBwBiY2O5c+cOhQoV0pYxMjIiJiYmyXO4u7tz/PhxnXUnT54kf/78H/0fat68eTE0NOT06dPkypULgFevXnH79m3tYH03b97kxYsXTJkyBWdnZwDOnz+vcxwjIyMAnWvw9/fnxo0b/PLLL9r39N34hRBCCJG2/Pz8dJL2s2fP8vLly3jlrKysKFmyJF999RWlSpXiq6++Ik+ePGk2O48Q4ssjiXw6q1wZcuaEx4/VZvTv0mjU7R+R/77X/PnzqVChAnXq1GHChAk608/lyJGDiRMn6pQ/ceIE06ZNo2nTpuzbt49Nmzbx119/Aeqo8zExMZQtWxYzMzPWrFmDqakpLi4u2NnZ0b59ezp16sTMmTMpUaIEL1684ODBgxQtWpT69esnGWf79u0ZN24cEydOpGXLljrNy/LmzcvmzZs5efIkWbJkYdasWTx9+lQnkXd1deXMmTP4+PhgYWGR4JR6AwcOpHTp0vz888+0adOGU6dOMX/+fBYuXPjR76+FhQXdunVj8ODB2NnZkS1bNkaOHKnzn3auXLkwMjJi3rx5fPfdd/z777/8/PPPOsdxcXFBo9Gwc+dO6tevj6mpKVmyZMHOzo4lS5bg5OTEgwcPGDZs2EfHKoQQQoikRUdH888//3Dq1CntktBsMUZGRpQoUYIyZcpQpkwZSpcuTb58+SRpF0KkrTTtrZ9Jpdeo9e+OXJ+Wo9bH8fHxUTw9PRVHR0fF0NBQcXZ2Vvr27au8ePFCp5yLi4sybtw4pXXr1oqZmZmSLVs2xcvLS7t969atStmyZRUrKyvF3NxcKVeunLJ//37t9sjISGX06NGKq6urYmhoqDg6OirNmjVTrl69qiiKOtidtbV1onGWLl1aAZSDBw/qrPf391eaNGmiWFhYKA4ODspPP/2kdOrUSWnSpIm2zK1bt5Ry5cppB5Hx9vZOcAC5P/74Q3F3d1cMDQ2VXLlyKdOnT4/3HsyePVtnXbFixZQxY8YkGndwcLDSoUMH7Xs2bdq0eIPvrV+/XnF1dVWMjY2V8uXLKzt27FAA5dKlS9oy48ePVxwdHRWNRqN07txZURRF2bdvn1KoUCHF2NhY8fDwUA4fPpzkAIYJkcHuhBBCiIT5+fkp27dvV4YNG6ZUrVpVMTMzS3AwugIFCiidOnVS5s+fr5w9e1ZGjhdCpJoPGexOoyjJ6Nj7hQkKCsLa2prAwECsrKx0toWHh+Pt7Y2bm1uKBiLZsgV++EF34DtnZ/DygubNP/qwQiQptb6/QgghRGamKAr37t3j+PHjnDhxguPHj3Pz5s145aysrChXrhzlypWjfPnylC1bVjsArxBCpLak8tB3SdP6DNK8OTRpoo5O7+ur9omvXBlkvBMhhBBCiNQVHR3NpUuXdBL3Z8+exStXqFAhypcvr10KFSokTeSFEJ8kSeQzkL5++k4xJ4QQQgjxJYiMjOT8+fMcOXKEI0eOcOLECUJCQnTKGBkZUbp0aSpWrEilSpWoUKGCzjS5QgjxKZNEXgghhBBCZGrh4eGcOXOGo0ePcuTIEU6ePMnr1691ylhbW1OxYkUqV65MpUqVKFWqlHQzE0JkWpLICyGEEEKITCU6Oprz589z8OBBDh48yIkTJ+LN3W5nZ0eVKlWoWrUqVatWpWjRojJnuxDisyGJvBBCCCGE+KTFxsZy9epVbeJ+9OhRgoODdcpky5ZNm7RXqVIFd3d36d8uhPhsSSIvhBBCCCE+Offv32ffvn3s27ePAwcO4O/vr7M9S5YsVK9enRo1alC9enUKFSqERqPJoGiFECJ9SSIvhBBCCCEyXFBQEIcOHdIm77dv39bZbmFhQZUqVahRowY1atTAw8NDmsoLIb5YksgLIYQQQoh0Fxsby8WLF9m1axd79uzh9OnTxMTEaLfr6+tTtmxZateuTe3atSlTpgyGhoYZGLEQQnw6MrTj0NGjR2nUqBHZs2dHo9Gwbdu2JMtv2bKF2rVrY29vj5WVFeXLl2fPnj3xym3evBl3d3eMjY1xd3dn69ataXQFQgghhBAiuV68eMH69evp2LEjjo6OlC5dmtGjR3PixAliYmLImzcvvXv3ZuvWrfj7+3PixAnGjh1LxYoVJYkXQoi3ZGgiHxoaSrFixZg/f36yyh89epTatWvz999/c+HCBapXr06jRo24dOmStsypU6do06YNHTt25MqVK3Ts2JHWrVtz5syZtLoM8RlZuXIlNjY2GXZ+V1dXvLy8Muz8QgghRGqKjY3l7NmzjBs3jnLlyuHg4ED79u1Zu3Ytfn5+WFpa0qxZM3755Re8vb25c+cOCxYsoGnTplhbW2d0+EII8cnSKIqiZHQQABqNhq1bt9K0adMP2q9w4cK0adOG0aNHA9CmTRuCgoLYtWuXtkzdunXJkiULGzZsSNYxg4KCsLa2JjAwECsrK51t4eHheHt74+bmlunmHvX09GTVqlVMnjyZYcOGaddv27aNZs2aEfdVOHz4MNWrV6dw4cJcuXJFp/+ZjY0NXl5eeHp6pnf46eL169cEBwfj4OCQpudZuXIl/fv3JyAgQGe9n58f5ubmmJmZpcl5M/P3VwghROYQHBzMvn372LlzJ3/99RfPnz/X2e7h4UG9evWoW7cuFSpUwMjIKIMiFUKIT0tSeei7MnUf+djYWIKDg7G1tdWuO3XqFD/++KNOuTp16iRZyxkREUFERIT2dVBQUKrH+qkwMTFh6tSpfPvtt2TJkiXJsvfu3WP16tV06dIlnaL7eIqiEBMTg4FByr7SpqammJqaplJUH87e3j7Dzi2EEEJ8LG9vb3bu3MnOnTs5fPgwkZGR2m1WVlbUrl1bm7znyJEjAyMVQojPQ6aeXHPmzJmEhobSunVr7bqnT5+SLVs2nXLZsmXj6dOniR5n8uTJWFtbaxdnZ+cPikNRFEJDQzNk+dAGFbVq1cLR0ZHJkye/t2zfvn0ZM2YM4eHhyT7+uXPnqF27NlmzZsXa2pqqVaty8eJFnTIajYZFixZRr149TE1NcXNzY9OmTdrtPj4+aDQaNm7cSIUKFTAxMaFw4cIcPnxYW+bw4cNoNBr27NlDqVKlMDY25tixY0RERNCvXz8cHBwwMTGhUqVKnDt3DlBrowsXLkzPnj21x/H29sba2pqlS5cC8ZvWjx07luLFi7N8+XJy5cqFhYUFvXr1IiYmhmnTpuHo6IiDgwMTJ07UucZZs2ZRtGhRzM3NcXZ2pnfv3oSEhGhj79KlC4GBgWg0GjQaDWPHjgXiN61/8OABTZo0wcLCAisrK1q3bs2zZ8/ixbdmzRpcXV2xtrbmm2++iTe3rhBCCJGa4prMjxgxgiJFipA7d2769evH3r17iYyMJE+ePPTv358DBw7g5+fHH3/8Qbdu3SSJF0KIVJJpE/kNGzYwduxYfvvtt3jNoN+dQ1RRlCTnFR0+fDiBgYHa5eHDhx8US1hYGBYWFhmyhIWFfVCs+vr6TJo0iXnz5vHo0aMky/bv35/o6Ohkj2EAanO6zp07c+zYMU6fPk2+fPmoX79+vMRy1KhRtGjRgitXrtChQwfatm3LjRs3dMoMHjyYgQMHcunSJSpUqEDjxo3jzSE7ZMgQJk+ezI0bN/Dw8GDIkCFs3ryZVatWcfHiRfLmzUudOnV4+fIlJiYmrFu3jlWrVrFt2zZiYmLo2LEj1atXp0ePHole071799i1axe7d+9mw4YNLF++nAYNGvDo0SOOHDnC1KlT+emnnzh9+rR2Hz09PebOncu///7LqlWrOHjwIEOGDAGgQoUKeHl5YWVlha+vL76+vgwaNCjeeRVFoWnTprx8+ZIjR46wb98+7t27R5s2beLFt23bNm1NyJEjR5gyZUryPjAhhBAimSIjI9m3bx+9e/fG2dmZsmXLMnnyZK5du4a+vj5Vq1Zl+vTp3Lx5kzt37jB79mxq1KghTeeFECItKJ8IQNm6dWuyym7cuFExNTVVdu7cGW+bs7OzMmvWLJ11s2bNUnLlypXsWAIDAxVACQwMjLft9evXyvXr15XXr19r14WEhChAhiwhISHJvq7OnTsrTZo0URRFUcqVK6d07dpVURRF2bp1q/L2V+HQoUMKoLx69UpZvHixYmtrqwQEBCiKoijW1tbKihUrkn3O6OhoxdLSUvnzzz+16wDlu+++0ylXtmxZpVevXoqiKIq3t7cCKFOmTNFuj4qKUnLmzKlMnTpVJ8Zt27Zpy4SEhCiGhobKunXrtOsiIyOV7NmzK9OmTdOumzZtmpI1a1alb9++iqOjo+Ln56fdtmLFCsXa2lr7esyYMYqZmZkSFBSkXVenTh3F1dVViYmJ0a4rUKCAMnny5ETfh99//12xs7NL9DxxXFxclNmzZyuKoih79+5V9PX1lQcPHmi3X7t2TQGUs2fPJhrf4MGDlbJlyyYYR0LfXyGEECIxwcHByqZNm5R27dop1tbWOr9BLCwslNatWyvr169XXr58mdGhCiFEppdUHvquTNdHfsOGDXTt2pUNGzbQoEGDeNvLly/Pvn37dPrJ7927lwoVKqRZTGZmZtpm0+ntYwdFmzp1KjVq1GDgwIFJluvWrRuzZs1i6tSpTJo06b3Hff78OaNHj+bgwYM8e/aMmJgYwsLCePDggU658uXLx3t9+fLlRMsYGBhQqlSpeLX2pUqV0j6/d+8eUVFRVKxYUbvO0NCQMmXK6Ow3cOBAtm/fzrx589i1axdZs2ZN8ppcXV2xtLTUvs6WLRv6+vro6enprHt7MJ9Dhw4xadIkrl+/TlBQENHR0YSHhxMaGoq5uXmS54tz48YNnJ2ddbp6uLu7Y2Njw40bNyhdunSC8Tk5OcUbWEgIIYRIrsDAQP7880/++OMPdu/erTOOkIODA02aNKFZs2bUqFEDY2PjDIxUCCG+XBmayIeEhHD37l3ta29vby5fvoytrS25cuVi+PDhPH78mNWrVwNqEt+pUyfmzJlDuXLltP3eTU1NtVOU/PDDD1SpUoWpU6fSpEkTtm/fzv79+zl+/HiaXYdGo0l2cvapqFKlCnXq1GHEiBFJjkBvYGDAhAkT8PT05Pvvv3/vcT09PfHz88PLywsXFxeMjY0pX768zqA3iUmq+0NiZd5+35U34wW8r2vF8+fPuXXrFvr6+ty5c4e6desmec53563VaDQJrouNjQXg/v371K9fn++++46ff/4ZW1tbjh8/Trdu3YiKinrvNSYWd2Lrk4pFCCGESI6XL1+yY8cO/vjjD/bu3avz/1WePHlo1qwZzZo1o2zZsjqz2QghhMgYGdpH/vz585QoUYISJUoAMGDAAEqUKKGdSs7X11enJveXX34hOjqaPn364OTkpF1++OEHbZkKFSqwceNGVqxYgYeHBytXruS3336jbNmy6XtxmcCUKVP4888/OXnyZJLlWrVqReHChRk3btx7j3ns2DH69etH/fr1KVy4MMbGxrx48SJeubf7k8e9LliwYKJloqOjuXDhQrwyb8ubNy9GRkY6N22ioqI4f/48hQoV0q7r2rUrRYoUYfXq1QwZMoTr16+/97o+xPnz54mOjmbmzJmUK1eO/Pnz8+TJE50yRkZGxMTEJHkcd3d3Hjx4oDNmw/Xr1wkMDNS5HiGEEOJj+Pv7s2zZMurWrUu2bNno0qULf/31F1FRURQqVIjRo0dz5coV7ty5w/Tp06lQoYIk8UII8YnI0Br5atWqJTnq+sqVK3Vevz1qeVJatmxJy5YtUxDZl6Fo0aK0b9+eefPmvbfslClTqFOnznvL5c2blzVr1lCqVCmCgoIYPHhwgtO5bdq0iVKlSlGpUiXWrVvH2bNnWbZsmU6ZBQsWkC9fPgoVKsTs2bN59eoVXbt2TfTc5ubm9OrVi8GDB2tbdUybNo2wsDC6deumPeapU6e4evUqzs7O7Nq1i/bt23PmzJlUG4wnT548REdHM2/ePBo1asSJEydYvHixThlXV1dCQkI4cOAAxYoVw8zMLF43iVq1auHh4UH79u3x8vIiOjqa3r17U7VqVZ0uBUIIIURyBQUFsW3bNjZu3Mi+ffuIjo7WbitatKj2N5S7u3sGRimEEOJ9Mu2o9SJ1/Pzzz8mawq5GjRrUqFFD5z/8hCxfvpxXr15RokQJOnbsqJ0K7l3jxo1j48aNeHh4sGrVKtatWxfvR8OUKVOYOnUqxYoV49ixY2zfvv29/dmnTJlCixYt6NixIyVLluTu3bvs2bOHLFmycPPmTQYPHszChQu1/c4XLFhAQEAAo0aNeu97kFzFixfXjitQpEgR1q1bF2+6vwoVKvDdd9/Rpk0b7O3tmTZtWrzjaDQatm3bRpYsWahSpQq1atUid+7c/Pbbb6kWqxBCiM/f69ev2bRpEy1atMDBwYHOnTuza9cuoqOjKV68OBMnTuTmzZtcvXqV0aNHSxIvhBCZgEZJThb3hQkKCsLa2prAwECsrKx0toWHh+Pt7Y2bmxsmJiYZFGHmptFo2Lp1K02bNk1wu4+PD25ubly6dInixYuna2yfO/n+CiHElyEqKoq9e/eyYcMGtm/frjMob4ECBWjbti3ffPMNBQoUyMAohRBCvC2pPPRdmW7UeiGEEEIIEZ+iKJw9e5Y1a9awceNG/P39tdtcXFz45ptvaNu2LR4eHskaYFYIIcSnSxJ5IYQQQohMzNvbm7Vr17J27Vpu376tXZ8tWzbatGnDN998Q7ly5SR5F0KIz4gk8iLdva83h6ura7L67QshhBBfqlevXvH777+zZs0aTpw4oV1vZmZGs2bN6NChA7Vq1cLAQH7qCSHE50j+ugshhBBCZAIxMTHs37+fFStWsHXrViIjIwF17JmaNWvSsWNHmjVrhqWlZQZHKoQQIq1JIi+EEEII8Qm7e/cuK1asYPXq1Tx69Ei7vmjRonTq1Im2bduSI0eODIxQCCFEepNEXgghhBDiExMSEsKmTZtYsWIFx44d0663tbWlffv2dOnShRIlSmRghEIIITKSJPJCCCGEEJ8ARVE4d+4cS5YsYePGjYSGhgKgp6dHnTp16NKlC40bN8bY2DiDIxVCCJHRJJEXQgghhMhAgYGBrFu3jiVLlnDlyhXt+nz58tGlSxc6deokTeeFEELokEReCCGEECKdKYrCmTNntLXvr1+/BsDY2JjWrVvTo0cPKlWqJFPGCSGESJBeRgcgREqMHTuW4sWLp/g4K1euxMbGJsXHEUIIIZISGBjI/PnzKVasGOXLl2fFihW8fv0ad3d35syZw5MnT1i9ejWVK1eWJF4IIUSiJJH/gnh6eqLRaNBoNBgaGpI7d24GDRqk7YPn4+ODRqPh8uXLOq8dHBwIDg7WOVbx4sUZO3as9nW1atXQaDRs3LhRp5yXlxeurq5peVkfzNXVFS8vL511bdq04fbt2xkTkBBCiM/ev//+S69evciRIwd9+/bln3/+wcTEhM6dO3PixAn+/fdf+vXrh62tbUaHKoQQIhOQRP4LU7duXXx9ffnvv/+YMGECCxcuZNCgQUnuExwczIwZM957bBMTE3766SeioqJSK9x0Y2pqioODQ0aHIYQQ4jMSGRnJb7/9RtWqVSlatCiLFy8mNDSUQoUKMXfuXJ48ecLKlSupUKGC1L4LIYT4IJLIpwJFUQiNCM2QRVGUD4rV2NgYR0dHnJ2dadeuHe3bt2fbtm1J7tO3b19mzZrF8+fPkyzXtm1bAgMDWbp0abLjiYyM5Pvvv8fJyQkTExNcXV2ZPHmydvuDBw9o0qQJFhYWWFlZ0bp1a549e5bo8apVq0b//v111jVt2hRPT0/t9vv37/Pjjz9qWydAwk3rFy1aRJ48eTAyMqJAgQKsWbNGZ7tGo+HXX3+lWbNmmJmZkS9fPnbs2JHsaxdCCPF5evz4MWPGjMHFxYVvvvmGo0ePoq+vT4sWLTh48CDXrl2jb9++ZMmSJaNDFUIIkUnJYHepICwyDIvvLTLk3CHzQzA3Nv/o/U1NTd9bg962bVv27dvH+PHjmT9/fqLlrKysGDFiBOPHj6dz586Ym78/rrlz57Jjxw5+//13cuXKxcOHD3n48CGg3iBp2rQp5ubmHDlyhOjoaHr37k2bNm04fPjwB11nnC1btlCsWDF69uxJjx49Ei23detWfvjhB7y8vKhVqxY7d+6kS5cu5MyZk+rVq2vLjRs3jmnTpjF9+nTmzZtH+/btuX//vjSNFEKIL4yiKJw+fRovLy82b95MTEwMAI6OjvTs2ZOePXvKyPNCCCFSjdTIf8HOnj3L+vXrqVmzZpLlNBoNU6ZMYcmSJdy7dy/Jsr1798bExIRZs2YlK4YHDx6QL18+KlWqhIuLC5UqVaJt27YA7N+/n6tXr7J+/Xq++uorypYty5o1azhy5Ajnzp1L3kW+w9bWFn19fSwtLXF0dMTR0THBcjNmzMDT05PevXuTP39+BgwYQPPmzeN1MfD09KRt27bkzZuXSZMmERoaytmzZz8qNiGEEJlPVFQUGzZsoFy5clSoUIHff/+dmJgYqlSpwsaNG7l//z7jxo2TJF4IIUSqkhr5VGBmZEbI/JAMO/eH2LlzJxYWFkRHRxMVFUWTJk2YN2/ee/erU6cOlSpVYtSoUaxfvz7RcsbGxowfP57vv/+eXr16vfe4np6e1K5dmwIFClC3bl0aNmzI119/DcCNGzdwdnbG2dlZW97d3R0bGxtu3LhB6dKlk3HFH+fGjRv07NlTZ13FihWZM2eOzjoPDw/tc3NzcywtLd/bBUEIIUTm9+LFC5YsWcKCBQt48uQJoP4f2L59e3744Qed/x+EEEKI1CaJfCrQaDQpat6enqpXr86iRYswNDQke/bsGBoaJnvfKVOmUL58eQYPHpxkuQ4dOjBjxgwmTJjw3hHrS5Ysibe3N7t27WL//v20bt2aWrVq8ccff6AoSoKD/yS2HkBPTy/euAEfO/jeu+dI6Lzvvn8ajYbY2NiPOp8QQohP37Vr15gzZw5r1qwhPDwcUJvP9+7dm2+//VYGThVCCJEupGn9F8bc3Jy8efPi4uLyQUk8QJkyZWjevDnDhg1Lspyenh6TJ09m0aJF+Pj4vPe4VlZWtGnThqVLl/Lbb7+xefNmXr58ibu7Ow8ePND2mQe4fv06gYGBFCpUKMFj2dvb4+vrq30dExPDv//+q1PGyMhI23cxMYUKFeL48eM6606ePJnoeYUQQny+FEXh0KFD1K9fnyJFirB06VLCw8MpWbIka9as4f79+4waNUqSeCGEEOlGauTFB5k4cSKFCxfGwCDpr06DBg0oW7Ysv/zyC9myZUu03OzZs3FycqJ48eLo6emxadMmHB0dsbGxoVatWnh4eNC+fXu8vLy0g91VrVqVUqVKJXi8GjVqMGDAAP766y/y5MnD7NmzCQgI0Cnj6urK0aNH+eabbzA2NiZr1qzxjjN48GBat25NyZIlqVmzJn/++Sdbtmxh//7973+ThBBCfBaio6PZvHkz06dP58KFC4B6s7pp06b8+OOPVKxYUaaNE0IIkSGkRl58kPz589O1a1dtc8KkTJ069b3lLCwsmDp1KqVKlaJ06dL4+Pjw999/o6enh0ajYdu2bWTJkoUqVapQq1YtcufOzW+//Zbo8bp27Urnzp3p1KkTVatWxc3NTWeUeYDx48fj4+NDnjx5sLe3T/A4TZs2Zc6cOUyfPp3ChQvzyy+/sGLFCqpVq/be6xZCCJG5hYaGMm/ePPLly8c333zDhQsXMDU1pXfv3ty+fZvNmzdTqVIlSeKFEEJkGI3yoRORfwGCgoKwtrYmMDAQKysrnW3h4eF4e3vj5uaGiYlJBkUoxMeR768QQiTu+fPnzJs3j4ULF/Ly5UsAsmbNyvfff0+fPn0SbMElhBBCpJak8tB3SdN6IYQQQnzRHjx4wIwZM7R93wHy5MnDgAED8PT0xMzsw2aIEUIIIdKaJPJCCCGE+CLdvn2bqVOnsnr1aqKjowEoXbo0Q4YMoVmzZujr62dwhEIIIUTCJJEXQgghxBflypUrTJo0iU2bNmmnLK1evTojRoygZs2a0vddCCHEJ08SeSGEEEJ8EU6dOsXEiRP566+/tOsaNmzIiBEjKF++fAZGJoQQQnwYSeSFEEII8Vk7ceIEY8eO1U4hqtFoaN26NcOHD6dYsWIZHJ0QQgjx4SSRF0IIIcRn6d0E3sDAgE6dOjF06FDy58+fwdEJIYQQH08SeSGEEEJ8Vo4fP864ceN0EvguXbowYsQIXF1dMza4z0RoRCjPg57zPPg5r8JeERIRQkh4iPoYEUJoRKj2eUh4CDGxMcQqsSgoxMbGxnuup9HD1MgUU0PTeI8mhiaYGZmRxSwLWS2yktUyK3bmdmS1yIq5sbmMaSCE+CJJIi+EEEKIz0JCCXzXrl0ZPny4JPDJFBoRyn3/+9z3v4+Pvw8PXj7QJuzPg59rn4dFhmV0qAAYGxiryb1FVhysHHCxc8HF1gUXOxdc7VxxsXMhu012DPTlJ68Q4vMif9WEEEIIkamdPXuWn376iX379gGSwCdFURSeBT3jhu8Nbj69yT2/e/i88NEm7i9CXiT7WCaGJmSzykYWsyxYmlhiYWyhLiYW2ufmxuaYG5tjqG+IBg16Gj309PTiPY9VYnkd9ZrXka8TfXwV9ooXIS94EfICv2A/IqIjiIiO4HHAYx4HPE40Tn09fZyzOONi50K+bPkokr0IhbMXpnD2wjhaO0qNvhAiU5JEXqQJV1dX+vfvT//+/T/6GIcPH6Z69eq8evUKGxubVIstuapVq0bx4sXx8vJK0XE8PT0JCAhg27ZtqRKXEEII1T///MOoUaPYvn078P8EfsSIEbi4uGRwdBkrNjYW7xfeXPe9zs2nN7nhe0ObvAeEBSS5r7WptbY228XOBUcrRxysHHCwfLO8eZ6RzdoVRSEsMkyb2L8IfoFvoK/amuDl/1sUPHz5kKiYKHz8ffDx9+HI7SM6x8lilkWb1BfOXpiiOYvylctXWJpYZsh1CSFEckki/wU6efIklStXpnbt2uzevTujwwESTporVKiAr68v1tbWGRfYB/Dx8cHNzY1Lly5RvHhx7fo5c+Zo5ykWQgiRcnfv3mXMmDFs2LABRVHQ09OjU6dOjBkz5ousgY+KjuLm05tcfHCRiw8ucunBJS4/vExweHCC5fU0erhldaOQUyHyOeTDNaurTuJuY2aTvhfwETQajba238Uu8Zs2MbExPA18qibyL3y4+fQm155c49qTa9x9fpdXYa84fvc4x+8e1zm2u5M7Zd3KUjZ3Wcq6laVw9sLSPF8I8UmRv0hfoOXLl9O3b19+/fVXHjx4QK5cuTI6pAQZGRnh6OiY0WGkWGa5ESGEEJ+6hw8fMn78eFasWEFMTAwArVq1Yvz48RQsWDCDo0sfsbGx3PC9wcl7Jzl//zyXHlzi6qOrRERHxCtrbGBMQceCFHIqpH0s5FSIfNnyYWJokgHRpz99PX1yZMlBjiw5qJi3os628Khwbj29pU3srz25xpWHV/Dx99G+Xn5iOQDmxuZ85fIVZd3KUilvJarmr4q1mfz/LoTIOHoZHcBnQQHCM2j5wIre0NBQfv/9d3r16kXDhg1ZuXKlzvbDhw+j0Wg4cOAApUqVwszMjAoVKnDr1i1tmXv37tGkSROyZcuGhYUFpUuX1g4slJCuXbvSsGFDnXXR0dE4OjqyfPlyPD09OXLkCHPmzEGj0aDRaPDx8dHGEhAQoN3vxIkTVK1aFTMzM7JkyUKdOnV49epVgue9f/8+jRo1IkuWLJibm1O4cGH+/vtv7fYjR45QpkwZjI2NcXJyYtiwYURHRyd6HRqNJl7zeBsbG+176ObmBkCJEiXQaDRUq1YNUJvWN23aVLtPREQE/fr1w8HBARMTEypVqsS5c+e025PzGQghxJfEz8+PH3/8kbx58/Lrr78SExND/fr1uXjxIr///vtnncSHhIdw8MZBJuycQP059bH70Y4iY4vQc01Plhxdwjmfc0RER2BlakXV/FXpX6s/q7uu5t+x/xIyP4TLYy6zoecGxjQeQ+vSrSmas+gXk8S/j4mhCcWci9GubDsmNpvItj7b8J7izdOZT9neZzsj6o+gZqGaWJpYEhoRytHbR5m+ZzpNFjTB7kc7KkypwKhtozhy6wgRUfFvpAghRFqSGvnUEAHUy6Bz7wI+4P/j3377jQIFClCgQAE6dOhA3759GTVqVLw+biNHjmTmzJnY29vz3Xff0bVrV06cOAFASEgI9evXZ8KECZiYmLBq1SoaNWrErVu3Eqzd7969O1WqVMHX1xcnJycA/v77b0JCQmjdujUtWrTg9u3bFClShPHjxwNgb2+Pj4+PznEuX75MzZo16dq1K3PnzsXAwIBDhw5pa2Xe1adPHyIjIzl69Cjm5uZcv34dCwsLAB4/fkz9+vXx9PRk9erV3Lx5kx49emBiYsLYsWOT/4a+5ezZs5QpU4b9+/dTuHBhjIyMEiw3ZMgQNm/ezKpVq3BxcWHatGnUqVOHu3fvYmtrqy2X1GcghBBfgtDQUGbPns20adMIDlabiVepUoVJkyZRsWLF9+ydOfmH+HPo1iGO3DrCiXsnuPLwCrFKrE4ZMyMzyrqVpYxbGb5y+YoSuUqQO2tu9PSkfiY1ZLPKRuPijWlcvDGgNs+/6XuTM95nOP3faQ7dOsTd53c5de8Up+6dYsJfEzA1MqVKvirULFSTWoVqUdy5uAyiJ4RIU5LIf2GWLVtGhw4dAKhbty4hISEcOHCAWrVq6ZSbOHEiVatWBWDYsGE0aNCA8PBwTExMKFasGMWKFdOWnTBhAlu3bmXHjh18//338c5ZoUIFChQowJo1axgyZAgAK1asoFWrVtrE2sjICDMzsySb0k+bNo1SpUqxcOFC7brChQsnWv7Bgwe0aNGCokWLApA7d27ttoULF+Ls7Mz8+fPRaDQULFiQJ0+eMHToUEaPHv1RP4bs7e0BsLOzS/Q6QkNDWbRoEStXrqRePfXuz9KlS9m3bx/Lli1j8ODB2rJJfQZCCPE5i46OZvny5YwdOxZfX19Abe00ZcoUateu/VklSMHhwRy7c4yDNw9y4MYBrjy6Em9cFWdbZyrmqUiFPBWokLcCxXIWk/7a6UhfT5/COQpTOEdhulbqCsB9//scuHFAXW4e4FnQM/Zc28Oea3sAyJklJ02LN6VpiaZUyVcFQwPDjLwEIcRnSP4XSA3GqDXjGXXuZLp16xZnz55ly5YtgDq6b5s2bVi+fHm8RN7Dw0P7PK4W/fnz5+TKlYvQ0FDGjRvHzp07efLkCdHR0bx+/ZoHDx4keu7u3buzZMkShgwZwvPnz/nrr784cODAB1yoWiPfqlWrZJfv168fvXr1Yu/evdSqVYsWLVpor+vGjRuUL19e58dgxYoVCQkJ4dGjR2k2bsC9e/eIiorSqUkyNDSkTJky3LhxQ6dsUp+BEEJ8jhRFYfv27QwfPpybN28C6iwoEydO5JtvvvksapyjoqM4ee8kB26qSeBZn7NEx+h26yqcvTDVC1Sncr7KlM9THmdb5wyKViTGxc6FrpW60rVSVxRF4dqTaxy4cYD9N/Zz6NYhHr16xPxD85l/aD5ZzLLQ0KMhTUs0pU7hOpgbm2d0+EKIz4Ak8qlBwwc1b88oy5YtIzo6mhw5cmjXKYqCoaEhr169IkuWLNr1hob/v3Mcl+zGxqpN+wYPHsyePXuYMWMGefPmxdTUlJYtWxIZGZnouTt16sSwYcM4deoUp06dwtXVlcqVK39Q/Kamph9Uvnv37tSpU4e//vqLvXv3MnnyZGbOnEnfvn1RFCVejU5cDUhiNT0ajSZeLUlUVNQHxZTYORKKJ6nPQAghPjcnT55kyJAh2i5EdnZ2/PTTT/Tq1Qtj4w+4a/0Jehb0jF3/7OLvf/5m7/W9BL4O1NnuaudKzUI1qVmwJtULVsfROvMP9JpsscBVwB+wAzzIdCM4aTQaiuQoQpEcRfih1g+ER4Vz4MYBtl7ayo4rO/AL9mPN6TWsOb0GE0MTvnb/mhYlW9C8ZHMsTCwyOnwhRCYlifwXIjo6mtWrVzNz5ky+/vprnW0tWrRg3bp1CTaLT8ixY8fw9PSkWbNmgNpn/t3+7O+ys7OjadOmrFixglOnTtGlSxed7UZGRon2dY/j4eHBgQMHGDduXLLiBHB2dua7777ju+++Y/jw4SxdupS+ffvi7u7O5s2bdRLokydPYmlpqXOj42329vbaJp4Ad+7cISwsTOcagCSvI2/evBgZGXH8+HHatWsHqDcDzp8/T//+/ZN9XUII8bm4e/cuQ4cO1bYWMzU1pX///gwdOjTTzvoRGxvL+fvn+fufv/nr6l+cv39eZ7udhR21C9XWJu9u9m4ZFGkGOwbMBG6ijjdkDBQEBgIfdq//k2JiaEIDjwY08GhATGwMJ++eZNvlbWy9tBXvF97suLKDHVd20GtdL5qXbE6n8p2oUbAG+nr6GR26ECITkUT+C7Fz505evXpFt27d4v0watmyJcuWLUt2Ip83b162bNlCo0aN0Gg0jBo1Klk1xd27d6dhw4bExMTQuXNnnW2urq6cOXMGHx8fLCwsdAZ9izN8+HCKFi1K7969+e677zAyMuLQoUO0atWKrFmzxivfv39/6tWrR/78+Xn16hUHDx6kUKFCAPTu3RsvLy/69u3L999/z61btxgzZgwDBgxItOlmjRo1mD9/PuXKlSM2NpahQ4fq1Jo7ODhgamrK7t27yZkzJyYmJvHea3Nzc3r16sXgwYOxtbUlV65cTJs2jbCwMLp16/be91AIIT4XAQEBTJgwgblz5xIVFYWenh5dunRh3Lhxid5Q/ZRFREWw/8Z+tlzcws6rO3ke/Fxne8lcJWng0YD6RepT2q20JG3HgL5AAOCA2rIxHLjyZv08MnUyH0dfT5/K+StTOX9lZrSawT+P/2HLxS2sP7OeO8/vsPb0WtaeXkt2m+y0L9uejuU6UjRn0YwOWwiRCUgi/4VYtmwZtWrVSrB2o0WLFkyaNImLFy8m61izZ8+ma9euVKhQgaxZszJ06FCCgoLeu1+tWrVwcnKicOHCZM+eXWfboEGD6Ny5M+7u7rx+/Rpvb+94++fPn5+9e/cyYsQIypQpg6mpKWXLlqVt27YJni8mJoY+ffrw6NEjrKysqFu3LrNnzwYgR44c/P333wwePJhixYpha2tLt27d+OmnnxKNf+bMmXTp0oUqVaqQPXt25syZw4ULF7TbDQwMmDt3LuPHj2f06NFUrlyZw4cPxzvOlClTiI2NpWPHjgQHB1OqVCn27Nmj07VBCCE+V9HR0fzyyy+MGTMGf39/AOrUqcOMGTMoUqRIBkf3YULCQ9h9bbc2eQ8OD9ZuszSx5Gv3r2ng0YC6heviZOOUgZGmIwW1dj0UCHmzhAGRQPSbJQoYCzwB7N8qqwHMAV9gKDAOMET9tWoImAIWby2mb/bJJDQaDR45PfDI6cGYRmM4898Z1pxew8ZzG3kS8ITpe6Yzfc90ijsXp2O5jnQq34mslvErKoQQAkCjvNvpVxAUFIS1tTWBgYFYWVnpbAsPD8fb2xs3NzcZPfwDhYWFkT17dpYvX07z5s0zOpwvknx/hRAZadeuXQwcOFA7uGehQoWYOXOmdhaPzOBV6Cv+vPInWy5tYc+1PYRHhWu3ZbfJTrMSzWheojmV8lXCyCDhaUgznQjgJWo/9rjlJfDizfNA1EQ89M2SdE85tew11AQ9oYYJMagJf2HUhD0xeugm9lao/eztgazvPNrwySb9EVER/P3P36w5vYadV3cSFaOOv2NsYEyb0m3oU70PZdzKZHCUQoj0kFQe+i6pkRdpLjY2lqdPnzJz5kysra1p3LhxRockhBAiHV27do2BAweyZ486NZednR3jx4+nZ8+eGBh8+j9FQsJD2HFlBxvObmD3td06o8znsc9D85LNaV6iOWXcymTOkfVjAT/UGvLHbx593zx/CgQnvmuiNPw/wTYDjFB/dRq8Oe4d1MRbn/8n2MqbJRYIAlyB7Py/Fv816k2AYNRkP67c+xsFque1fXO8nEAuwPnN4kjCNxTSibGhMc1KNqNZyWb4h/jz+/nf+fXYr1x8cJHVp1az+tRqSrmUok/1PrQp3QZTow8b/FcI8XmSGvkESI186vLx8cHNzY2cOXOycuVKatasmdEhfbHk+yuESE8vX75kzJgxLFy4kNjYWAwNDfnhhx8YOXIkNjY2GR1ekiKjI9n97242nN3Ajis7CIv8/+CmRXIU0Y46XjRH0cwzr30k8ADwBnzePD5ETdajE98NUBNxu3cWW9Qabxv+n7Sbv1lMSLwG/DLwDWoin9BMbKGoyflGoHgC25U31xLy1hKM2jLgBepNiRdvPX/1Zp/EGKAm+M6oCX6+N0uOJK4hjSmKwlnvsyw4tIDfzv9GZLQ6M5CtuS3dKnWjV9VeX+4giUJ8xj6kRl4S+QRIIi8+V/L9FUKkh5iYGH799VdGjhyp7QffvHlzpk2bRp48eTI4usTFxMZw9PZR1p9dz+YLm3kV9kq7LY99HtqVbUfbMm0p5FQoA6NMBgU1Ob+NmqzHLY9IPKE1QK2ZzoGa1Dq9ee6E2jTdnNRLamOB5qgD27m8c1wFuI+awG8mdaaii0btCuCH2hrgEeoNjAdvXkcksp8ZakKf/82SDzXZT+dGF37Bfiw7voxFhxfx4OUDQO1v38ijEUPrDqVC3grpG5AQIs1IIp9CksiLz5V8f4UQae3EiRP07duXS5cuAVC4cGHmzp1LjRo1MjiyxN15doeVJ1ey+tRqHr16pF3vZO1Em9JtaFemHaVcS326Ne/+wC3UadziHhNrbm4JuL215EJN2LOSvglq3Kj1gag3CuJGrfcDrEm/UeuVN+d8+GbxQb0Bcg+11v9dJqhT5Hmg3mxwR502Lx3ExMbw19W/WHBoAXuv79Wur5K/CsPrDadO4Tqf7ndUCJEsksinUHISeVdXV0xNpY+SyFxev36t7eogibwQIjU9fvyYoUOHsm7dOgBsbGwYP348vXr1+iT7wQe9DmLT+U2sOLmCE3dPaNfbmNnQ8quWtC3dlqoFqn5608RFoSbrV4EbqEn7iwTKGQC5gTzoJu62fDqDvr09j3wkavP9QsAAMn7quRjUlgG3Ufvz3wLuEr/23gAoABRDTe6Lotbkp7FbT28xY+8MVp1cpR0cr0SuEgyrO4wWX7X49L63QohkkUQ+hZJ6A2NiYrh9+zYODg7Y2dllUIRCfBx/f3+eP39O/vz50deX/+SFECkXERGBl5cXP//8M6GhoWg0Grp3787EiROxt7fP6PB0xMbGcvjWYVacXMHmi5t5HfkaAD2NHnUK18GzgieNizfGxPATutH5GnWE939Qm6LfIH5NsQa1iXrBN0sB1ATeMP3C/GixqDcl/FH73XuQ7k3Xky0WtTn+v6ifxRXU2vy3aVCb4ZcGyqHemEjD63n08hGz9s1iybElhEaEApDPIR9D6w6lY/mOn8/MCUJ8ISSRT6H3vYG+vr4EBATg4OCAmZmZNGMSnzxFUQgLC+P58+fY2Njg5PSFzGcshEhT+/bto0+fPty5cweAcuXKMW/ePEqVKpXBkenyDfBl+Ynl/HrsV3z8fbTrCzgWoEuFLnQo14EcWXJkXIBvC0dNEC+iJri3URPIt1mjJrxFUBP3fKhzqov0FTcWwRXUz+oK6oj/b7MGyqAm9aVRuzakAf8Qf+YdnMfcA3O1YzvksMnB8PrD6VG5hyT0QmQSksin0PveQEVRePr0KQEBAekfnBApYGNjg6Ojo9x8EkKkyOPHjxkwYAC///47AI6OjkydOpUOHTp8MtOvxcbGsv/Gfn45+gs7ruzQThlnbWrNN6W/wbOCJ2Vzl834v4cKatPtc8AF1Jr3d0eQz4aauMctznw6zeOFLj/gEnAK9TMNfWubHurNl3JABdRWFKksJDyEJUeXMHPfTJ4EqHcV3LK6Ma7xONqVbSdN7oX4xEkin0LJfQNjYmKIiopKx8iE+HiGhobSnF4IkSLR0dHMmzeP0aNHExISgp6eHn379mXcuHFYW1tndHgAPA96zooTK1hybAn/+f2nXV8xb0W+rfItLb9qmfHzcPsB5/l/8v7uwHTZgFKog6l5AA7pGZxINdGo3SJOoyb299/ZnhuoAVRHnSkgFUVERbD8xHLG7xzP08CngDpt4oSmE2hcrHHG38ASQiRIEvkU+pA3UAghhPgSnDhxgt69e3P16lVAbUa/aNEiihcvnrGBobaUO3r7KIuOLGLLxS3awb+sTa3pWK4j31b9liI5imRggKi17idQE7o772w3Q03aS6Mm8Bk4f7lIQ0/5f1J/Ed2WFwVQk/pqpOqNm9CIUOYdnMfU3VMJCAsAoFzuckxuPplqBaql3omEEKlCEvkUkkReCCHElygmBo4dA19fcHKCypXh1asXDB06lOXLlwNga2vL1KlT6dq1a4Y3ow+LCGP92fXMPTCXfx7/o11f1q0s31b9ljal2mBmnA5DiCckErWJdVzy/vbI8hrUxK0MauJeCHX0c/HlCEYdtf8QaquMt3+NF0Gtpa+J2sc+FbwKfcW0PdOYc2COdpDHr92/ZnLzyZR0KZk6JxFCpJgk8ikkibwQQogvzZYt8MMP8Eg7jbpClizLiYoaQkjISwC6devGlClTyJo1a4bFCXDf/z4LDy1k6bGl2oG9zIzM6FiuI99V/Y7iuYpnTGChqIn7MdRm829PVWaCWuNeAbWPtE16Byc+WQHAEeAg6hgJcb/MDVCn4WsAlCRVWmn4Bvgy4a8JLDm2RDtuRNeKXZnUfBLZrLKl/ARCiBSRRD6FJJEXQgjxJdmyBVq2hP//IrgFfIuaXUCuXEVZv34RFStWzKAI1ebzR24fYe6BuWy/vJ1YRR3K3S2rG99X/54uFbuQxTxL+gcWl7wfAc6i21w6K2riXgEogTpPuhBJeQEcBvai2wXDCTWhr4s6TV8K3Xt+j9HbR7P+7HoArEytGNNwDH1r9MXQIDPMWyjE50kS+RSSRF4IIcSXIiYGXF3jauIjganAhDfPzYBx5Mz5Az4+hmTEeJkRURGsP7ue2ftm6zSfr1WoFv1q9qN+0fqpMxL3h8xnnlTy7gJUBSoBeZG+7uLj3QH+AvYBYW/W6aG26GiI2jUjhV/9U/dO0XdDXy7cvwBAQceCzPlmDl8X/jplBxZCfBRJ5FNIEnkhhBBfisOHoXp1UDPTnsD1N1vqAgsBNwAOHYJq1dIvrpehL/nlyC/MPThXO+q2mZEZnSt05vvq3+Oe3T31TnYMmAncRG0Ob4w6P/tA1KbNvFl/CjWpSix5rw64pl5YQgDqd+8wsBP49631DkAz1KTe4uMPHxsby4oTKxi+dTh+wX4ANCnehFmtZ5HbPvfHH1gI8cEkkU8hSeSFEEJ8KX79NYAePYYBv7xZ4wDMAdrwdnXy+vXQtm3ax/Of33947fdi2fFlhEWq1ZA5bHLwQ60f6FG5BzZmNql7wmNAX9R+yg6ofdnDUaeIswL6odbSH+H/taIgybvIGPdRa+n38P9pC02A+kBL1Cb4HykgLIBxf45j3sF5xMTGYGxgzKCvBzG8/nDMjc1TGLgQIjkkkU8hSeSFEEJ87hRFYfPmzXz7bV9evnz6Zm03YBpgG698WtfIn/nvDDP3zmTzxc3a/u/FchZjUJ1BtC7VGiODNOhgHgs0By6jJuNx9y1eA6+AR6i9C+JmrnMAaqOOJu6W+uEIkWyRwAFgE+D9Zp0GtUtHa6AwH92t4/qT6/Tb2I8DNw4A4Grnyi8df5Hm9kKkA0nkU0gSeSGEEJ8zX19fevfuzbZt2wAwMChAdPQSoEq8shoN5MwJ3t6keh95RVHYc20Pk3dN5ujto9r1dQrXYdDXg6hZqCYaTRp2Mr8MfINa826Mmry/RE3kAWJQk/2egCdQFOnzLj4tCur0dZtQu3zEKYia0Ffho/rRK4rCtkvb6P9bfx68fABA5/KdmdVmFrbm8W/0CSFShyTyKSSJvBBCiM+RoiisXLmSAQMGEBAQgIGBASNGjMDdfQRt2xq/KfP/8nE59B9/QPPmqRdHTGwMWy5uYfKuyVx6cAkAQ31D2pVpx4CvB+CR0yP1TpaU/UAnwBB1Xu+4a9cAlqhTxAUBv6LWwgvxKfNBTej3AVFv1uUAOgK10E3okzm4Y3B4MCO3jmT+ofkoioKDpQPz2s6jValWaXuTTYgvlCTyKSSJvBBCiM/N/fv36dmzJ3v37gWgVKlSLF++nKJFiwIJzSMPzs7g5ZV6SXxkdCRrT69l6u6p3H52G1AHsPu2yrcMqD2AnLY5U+dE7+MH7ALWA0dR5+vWB0xRexVkebMuFDWR3wgUT5/QhEixV8B2YCv/70efHfWmVS3gJO8f3PEdp+6dotuqbtzwvQFA42KNWdh+ITmy5EizyxDiSySJfApJIi+EEOJzERsby8KFCxk2bBihoaGYmJgwfvx4fvzxRwwMDHTKxsTAsWPg6wtOTlC5cuo0pw+LCOPX478yfc90Hr1S7xRkMctC3xp96VujL1kts6b8JO8TjTrq/F+oTZDjfv3cQO1vnBd4ezwvBXVgseLAZhKfik6IT9Vr1IR+IxD4Zp0BcA+120g2dAd3tAbmkWgyHxEVweRdk5n09ySiYqKwMrViWotp9KjcAz09+QciRGrINIn80aNHmT59OhcuXMDX15etW7fStGnTRMv7+voycOBALly4wJ07d+jXrx9eXl46ZVauXEmXLl3i7fv69WtMTEySFZck8kIIIT4Ht27donv37hw/fhyASpUqsWzZMvLnz58u5w8OD2bBoQXM2jdLO62Vo7UjA2sP5Nuq32JpYpn2QfijJu873jyPUxx1pG891JrIQMCeD0pshMgU4hL6Dai18cGo3+1sqC1QNHzQjat/H/9L91XdOeN9BoAq+auw0nMlbvYyAqQQKfUheWiG3j4LDQ2lWLFizJ8/P1nlIyIisLe3Z+TIkRQrVizRclZWVvj6+uosyU3ihRBCiMwuJiaG6dOnU6xYMY4fP465uTnz58/nyJEj6ZLEB70OYtJfk3Ab7sbwLerc1G5Z3VjcYTHek70ZVGdQ2ibxCupAduNQZ9FbgZrE2wDtgLXAbP4/Av08oBhqM+RHbx6LI0m8+DyYog7qOBx1PAhT1FYoD1FbpAS8KWf/5vXVpA9XJEcRTgw7gVcbL8yMzDh6+yjFxhdj9cnVSENfIdKPwfuLpJ169epRr169ZJd3dXVlzpw5ACxfvjzRchqNBkdHxxTHJ4QQQmQ2t27dokuXLpw6dQqAr7/+miVLluDi4pLm5w56HcS8g/OYtW8WL0NfApDPIR8/NfiJdmXbYaCfxj87wlDn196OWrsYpyjQFHUE74RCqAxUJFmDfwmRaYWi9ofPjdqP/jlqQu+DOs2i45vX/ons/xZ9PX1+qPUDjYs1ptPyThy/e5zOKzqz8+pOFndcLCPbC5EOMjSRTyshISG4uLgQExND8eLF+fnnnylRokSi5SMiIoiIiNC+DgoKSrSsEEII8SmKjY1lzpw5jBgxgvDwcCwtLZk9ezZdu3ZN89GlA8MCmXtwLrP3zeZV2CsA8mfLz6iGo/im9Ddpn8A/RG0OvAe1WTyoTeS/BpqgJi7vo4cMaCc+b3aoiXwk4PDmtR/wDPUm2B3ACLX/fDK52btxePBhpu6aypg/x7DpwiZO3jvJqq6rqFlIpnoQIi19dol8wYIFWblyJUWLFiUoKIg5c+ZQsWJFrly5Qr58+RLcZ/LkyYwbNy6dIxVCCCFSx7179+jSpQvHjh0DoHbt2vz666/kypUrTc8b9DoIr/1ezN4/m4CwAAAKOBZgdMPRtCndBn29VJ54/m0KcBF1uq0zb613QU3ev0Z38DohvnQeqKPTX0GtgddHrYW3A3yBJ6iJ/jTgNuoo98kYKkpfT58RDUbwdeGvaf9re24/u02tWbUYUHsAE5tNxMRQurcKkRY+mVHrNRrNewe7e1u1atUoXrx4vMHu3hUbG0vJkiWpUqUKc+fOTbBMQjXyzs7OMtidEEKIT1psbCyLFi1iyJAhhIWFYWFhwcyZM+nRo0ea1sKHRYSx4PACpu6ein+I2g63kFMhRjUYRevSrdM2gY9Enf/9D8D7zToNUB5oAZR481oIEd8xoC8JD+5oApRETehBvRHWAWiOWlOfDKERoQzaNIjFRxYDUDRHUdZ1X0fRnEVT7xqE+Ix9yGB3n12N/Lv09PQoXbo0d+7cSbSMsbExxsbG6RiVEEIIkTI+Pj507dqVQ4cOAVC9enWWL1+Oq6trmp0zIiqCpceWMvHviTwNfAqoTejHNR5Hq1Kt0jaBf4na930H/x+cywSoh5popNMU9EJkapVRB3GMm0f+BWqSXhwY8Gb7BWAR6jR1vwB/Aj8AZd5/eHNjcxZ1WESDog3ouqor/zz+h1ITSzG95XT61uib5t18hPiSfPaJvKIoXL58maJF5U6gEEKIzE9RFJYvX07//v0JCQnBzMyM6dOn891336XZXM7RMdGsOrmK8TvH8+DlAwBc7VwZ02gMHcp1SNs+8A9R58HeizoXPKj9e5sDDQCLtDu1EJ+l9w3u+BWwBNgHLEWtoR8KVAX6oNbkv0fDYg35Z+w/dFvZjb/++YsfNv7A8TvH+bXzr1iZSmtXIVJDhibyISEh3L17V/va29uby5cvY2trS65cuRg+fDiPHz9m9erV2jKXL1/W7uvn58fly5cxMjLC3d0dgHHjxlGuXDny5ctHUFAQc+fO5fLlyyxYsCBdr00IIYRIbc+ePaNHjx78+eefAFSuXJkVK1aQJ0+eNDlfbGwsG89tZMyOMdx9rv5/nd0mOz81+IlulbphZJDM9rYf4zrqvNcnUPvDAxQGWqImImlY+S/EZ+99gzvqAXVQ/62tRB1M8gjqeBSeqN1Y3pNFZLPKxp99/2TewXkM2jSITRc2ceXRFf747g9pai9EKsjQPvKHDx+mevXq8dZ37tyZlStX4unpiY+PD4cPH9ZuS6hJjouLCz4+PgD8+OOPbNmyhadPn2JtbU2JEiUYO3Ys5cuXT3ZcH9I3QQghhEgP27Zto2fPnvj5+WFkZMTEiRP58ccf0ddP/YxWURR2/7ubYVuGcfWROqm0vaU9w+sN57uq32FqZJrq51RPjJoobEB3LuuKQFvURF4Ikf7+A2YB1968dgV+RK3JT4bT907TeklrHr58iKmRKYvbL6ZThU5pEakQmdqH5KGfzGB3nxJJ5IUQQnwqgoKC+OGHH1i5ciUAxYoVY82aNWnWZezMf2cYunkoR24fAcDa1JohdYbQr2Y/LEzSqB17NHAQtQl93AB2BkBtoA3qSPRCiIylALuBxUDcTM11gO8Am/fv/iL4BR2WdWDPtT0A9Kjcg7lt58qo9kK8RRL5FJJEXgghxKfgyJEjdO7cmfv376PRaBgyZAjjxo1LkwFabz29xYitI9hycQsAxgbG9KvZj2H1hmFrbpvq5wPUEeh3AeuB52/WmQGNUJvQZ02b0wohUiAIte/8zjevLYHvUW+8vWcsu9jYWCb+PZExO8agKAolcpVg07ebyOOQNt2DhMhsJJFPIUnkhRBCZKTw8HBGjRrFzJkzURQFNzc3Vq9eTaVKlVL9XI9fPWbcn+NYfmI5MbEx6Gn06FyhM+Maj8PZ1jnVzweo0139CfyGOtgWQBbU5L0xMoCdEJnBdWA2EDfcVXlgIOrgee+x7/o+2i1tx4uQF1ibWrOq6yqaFG+SZqEKkVlIIp9CksgLIYTIKNeuXaNdu3Zcvap2Eu/evTuzZs3C0tIyVc8TGBbI1N1T8TrgxevI1wA0LtaYSc0mUThHGnVGDwO2AZv4/xRyDqj93+sBMhOsEJlLDGqXmJWoXWQsUOepT0bt/KOXj2izpA0n750EYHTD0YxpNCbNZt8QIjOQRD6FJJEXQgiR3hRFYf78+QwePJiIiAjs7e1ZtmwZjRo1StXzREVHseTYEsbuGMuLkBcAVMxbkaktplIxb8VUPZdWMLAFdeTr4DfrnID2qH1sP/vJcIX4zHkDU4Dbb14ns3Y+KjqKIZuH4LXfC4AWJVuwqusqzI3N0yxUIT5lksinkCTyQggh0tPTp0/p0qULu3fvBqB+/fosX76cbNmypdo5FEXhzyt/MmTzEG49vQVAAccCTGsxjUbFGiU4K0yKBaPWvm9GrY0HyAV0AGogU8gJ8TlJQe38yhMr+Xbtt0RGR1LcuTjb+2wnl12utI1XiE+QJPIpJIm8EEKI9PLnn3/StWtXXrx4gYmJCTNmzKB3796pmlif9znPoE2DtCPR21vaM67xOLpX6o6hgWGqnUcrFPgD+J3/J/C5gY5AFdQ5qoUQnydvYCpw683rZNbOn7h7guYLm/M8+DnZrLKxtfdWyudJ/vTRQnwOJJFPIUnkhRBCpLWwsDAGDRrEokWLAHVaufXr1+Pu7p5q57jvf5+RW0ey7sw6AEwMTRhQewBD6w7FyjQN/n8LQ619/x0IebMuN+AJVOK9tXJCiM/Eu7XzVsBQoELSu933v0+T+U248ugKRgZGLO24VOabF18USeRTSBJ5IYQQaenSpUu0a9eOmzdvAjBw4EAmTpyYatPKBYcHM/nvyczaN4uI6AgAOpbryISmE9KmueprYCvqD/e4PvAuQBfUGnhJ4IX4MnkDk4E7b143RZ13Pok/dSHhIXRa3omtl7YCMLjOYCY3n4y+nvTFEZ8/SeRTSBJ5IYQQaSE2NhYvLy+GDRtGVFQUTk5OrF69mlq1aqXa8VedWsWIrSN4GvgUgGoFqjGz1UxKupRMlXPoiEAdhX4DEPhmnTNqDXw1pAm9EAKiUOed3/TmdW5gNOrNvkTExsYy9s+x/LzzZwAaFG3A+h7r06YlkRCfEEnkU0gSeSGEEKnt2bNneHp6age0a9q0Kb/++it2dsmYdDkZjt85zg8bf+Dig4sA5HXIy4xWM2hcrHHqD2QXDewCVvH/eeBzAJ2BmkgCL4SI7yxq7XwAYAR8DzQkyRY7G89upMvKLoRHhVMkRxF29dtFTtuc6RCsEBlDEvkUkkReCCFEatq7dy+dOnXi2bNnmJiY4OXlRc+ePVMlwb7vf58hfwzh9/O/A2BlasXohqP5vvr3GBum8sTsCnAQWA48ebMuG2oC/zUyCr0QImmvUJP5c29eVwYGA5aJ73LO+xxNFjTBN9CXnFlysvuH3RTOUTjNQxUiI0gin0KSyAshhEgNkZGR/PTTT0yfPh2AIkWKsHHjRgoXTvmP0JDwEKbunsqMvTMIjwpHT6NH98rd+bnJzzhYOaT4+DoU4DTwK/Dfm3U2qKPQNwLSYOB7IcRnSkFtZr8UtXWPPfAT4JH4Lvf971PXqy43n97ExsyGHX12UDl/5fSIVoh0JYl8CkkiL4QQIqXu3r1L27ZtOX/+PAC9e/dmxowZmJqapui4iqKw/sx6hmwewpMAtVq8WoFqeLXxophzsRTHHc8V1B/c1968Nge+AVoAKbsUIcSX7DbwM/AItXl9d6AtiTa1fxn6kkbzGnHy3kmMDYxZ230tLb9qmV7RCpEuJJFPIUnkhRBCpMTatWvp1asXISEhZMmSheXLl9O0adMUH/fSg0v03dCXE3dPAJDbPjczWs6gaYmmqd8P/j9gCXDmzWtjoDnqD+0kmsEKIUSyvQa8gL1vXlcGhgFmiRSPfE27pe3YdnkbGo2GOW3m0Ldm3/SIVIh0IYl8CkkiL4QQ4mOEhITQp08fVq9eDUCVKlVYu3Ytzs7OKTquf4g/P237iSVHlxCrxGJmZMbI+iMZ8PUATAxNUiP0//MDVgC7UZvA6qMOSNURSJ1x+YQQ4v8U4C9gDmpT+5zABBId1T4mNoa+G/qy6PAiAIbUGcLk5pPR05NRNkXmJ4l8CkkiL4QQ4kNduXKFNm3acOvWLfT09Bg7diwjRoxAX//jR4CLiY1hydEl/LTtJ16GvgSgTek2TG85HWfblN0ciCcEdRq5P4DIN+uqAd1Qf1gLIURauok6LZ0fYAIMRf0blABFUZj892RGbhsJQPuy7VnuuRwjA6N0CVWItCKJfApJIi+EECK5FEXhl19+oX///kRERJAjRw42bNhA5copG4jp2O1j9N3QlyuPrgBQNEdR5rWdR9UCVVMj7P+LArYDq4HgN+s8gG8B99Q9lRBCJCkAGA9cevO6NdCTRGfEWHliJd1XdycmNoZahWqxpfcWLE2k74/IvCSRTyFJ5IUQQiRHQEAAPXr04I8//gCgQYMGrFy5kqxZs370MZ8GPmXwH4NZe3otADZmNvzc5Ge+q/odBvoGqRI3oDZnPYQ6Er3vm3UuqD+ay5Pk3M5CCJFmYlD/Lm1887oYMAbIknDx3f/upuXiloRGhFLWrSy7fthFFvNECgvxiZNEPoUkkRdCCPE+586do02bNnh7e2NgYMDUqVP58ccfP3rQueiYaBYcWsDoHaMJeh2ERqOhR+UeTGw6kayWH39jIEHXgAXAjTev7QBPoB4yF7wQ4tNwFJiCOiCeHWpNfSKthM55n6PunLq8DH1Jcefi7P1xL/aW9ukWqhCpRRL5FJJEXgghRGIURWH27NkMGzaMqKgo3Nzc2LhxI2XKlPnoY568e5Le63prm9GXdi3NwvYLKeVaKrXCVvmijkR/+M1rE9RR6Fu/eS6EEJ+SB8CoN4+GqP3mayZc9J9H/1B7dm2eBT2jkFMh9g/YT3ab7OkWqhCpQRL5FJJEXgghREL8/f3x9PRk586dALRs2ZKlS5diY2PzUcd7HvScYVuGseLECgCymGVhSospdKvUDX29VKwaDwXWog5kF43abL4e0BUZiV4I8WkLAyYBJ9687oTagiiBxk+3n96m5qyaPHr1iDz2eTgw8AAudokMfy/EJ0gS+RSSRF4IIcS7Tp06RZs2bXj48CHGxsbMnj2b77777qOa0seNRj9i6wgCwgIA6FapG1OaT0ndZvQxwE7U6eQC36wrAfQB8qTeaYQQIk0pqK2J4vrNV0etnTeOX9TnhQ81ZtbA+4U3zrbOHBhwgHzZ8qVbqEKkhCTyKSSJvBBCiDhxTemHDh1KdHQ0efPmZdOmTRQvXvyjjnfe5zzfrf2OC/cvAFAiVwkWtltIuTzlUjFq4BxqP/j7b147A72AcshAdkKIzOlvYBbqTcpCwEQSHATv8avH1JpVi5tPb+Jo7cj+H/dTOEfhdA1ViI8hiXwKSSIvhBAC4NWrV3Tp0oXt27cD0Lp1a5YuXfpR/zcEhgXy07afWHB4AYqiYG1qzYSmE+hVrVfqNqN/BCwCTr55bYnaDLUxkIqD3gshRIa4jDrffDDgAEwGcscv9jzoObVn1+bqo6vYWdixt/9eSrqUTM9IhfhgksinkCTyQgghzp07R+vWrfHx8cHIyIjZs2fTq1evD25KrygKm85vov9v/fENVOd5a1+2PTNazcDR2jH1Ag4D1vD/fvD6QFOgM2oyL4QQn4tHwPA3j6ao09OVjV/sZehL6nrV5ZzPOaxNrdn1wy7K5ymfrqEK8SEkkU8hSeSFEOLLpSgK8+fPZ+DAgURFRZE7d25+//13vvrqqw8+1r3n9+izvg97ru0BIJ9DPhZ1WETNQokMu/xRAQO7gaXAqzfrSqP2g5cxnoQQn6tg1AT+Emp3oe+BZsTrOhT0OoiG8xpy7M4xLIwt2PvjXknmxSdLEvkUkkReCCG+TIGBgXTv3p0//vgDgObNm7N8+XKsra0/6DgRURFM3zOdiX9PJDwqHGMDY0bUH8GQukMwMUzFed6uAXOB229e50RN4Msi/eCFEJ+/aGA2at95gJZAb+L9/QuNCKXx/MYcvHkQK1Mr9v+4n9JupdM1VCGSQxL5FJJEXgghvjyXL1+mVatW3L17F0NDQ2bMmEHfvn0/uCn9kVtH+G7td9x8ehOAWoVqsbD9wtQdNdkfWAzsf/PaDLUJfXOkH7wQ4suiAL+j/k0EdZ75YcT7WxgaEUr9ufU5evsoNmY2HBx4kBK5SqRrqEK8jyTyKSSJvBBCfFmWL19Onz59CA8Px8XFhd9//50yZcp80DFehr5k8KbBLD+xHIBsVtmY3Xo235T55sNuBsQCV1GTdTvAA9B7sy0atQ/8auA1/58PvjsJjtwshBBfjP3AFNQR7UsB41H7z78lODyYul51OXnvJLbmthwadAiPnB7pHqoQiZFEPoUkkRdCiC9DWFgYffr0YeXKlQA0aNCA1atXY2trm+xjKIrChrMb6P9bf/yC/QD4tsq3TGkxBRszmw8L6BgwE7gJRKDOkVwQGIj6g3Qu8PBNWXfgByD/h51CCCE+W+dQR7QPR/3bORmw0S0S9DqIr2d/zRnvM9hb2nN40GHcs7und6RCJEgS+RSSRF4IIT5/t2/fpmXLlvzzzz/o6ekxceJEhgwZgp6e3vt3fuM/v//otbYXe6/vBcDdyZ0lnZZQMW/FDw/oGNAXCECdUskE9cfoUyASyA5Yo/4o/Q74GukHL4QQ77oJDAWCUMcNmQ68M0FIQFgANWfW5OKDi2SzysaRwUco4Fgg3UMV4l0fkocm/9eKEEII8ZnYtGkTpUqV4p9//iFbtmwcOHCAYcOGJTuJj4qOYtruaRQZW4S91/dibGDMhKYTuDT60scl8bGoNfEBgCtgjpqkBwMhQCBqTXwLYC1QB0nihRAiIQWB+UA21Onpvgf+0y1iY2bDvgH7KJazGM+CnlFjZg3uPr+b7qEKkRKSyAshhPhiREZG0r9/f1q3bk1wcDBVqlTh0qVLVKtWLdnHOOt9llITSzF081BeR76meoHqXB1zlZENRmJkYPRxgV1FrUVyQE3QA9+8foo6kJM16lzwlVCTfCGEEIlzBhYAuVHHG+mH+nf2LbbmtuwbsI/C2QvzJOAJNWbWwNvPO91DFeJjSSIvhBDii/Dw4UOqVq3KnDlzABg6dCgHDhzAyckpWfuHhIfw428/Um5yOa4+uoqtuS0rPFdwYOAB8jumsKO6P2qfeD3UmiNv1Ob0hqhzwed7q5wQQoj3swPmoA4YGgoMAo7rFrG3tOfAwAMUdCzIw5cPqT6zOg/8H6R7qEJ8DEnkhRBCfPb2799PyZIlOX36NDY2Nmzfvp0pU6ZgYJC8udr2/LuHImOL4LXfC0VR6FCuAzd/volnRc8Pnp4uQVaoifwN1H6doNbOF0QdjT4CMEL9YSqEECJ5LIBpQEUgChgDHNAtks0qGwcGHiCvQ17u+9/na6+veRH8It1DFeJDSSIvhBDisxUbG8vEiRP5+uuvefHiBSVKlODChQs0btw4Wfu/CH5Bp2WdqDunLvf97+Ni58LuH3azptsa7C3tUyfIi6ij0Ueh1sKboybw2QF91Kb1fkAh1JolIYQQyWcMjAPqoo5HMhHYpVvkf+3dd3xN9x/H8dfNTozYJGJr7b0pRWvT2hSxqZaiqvbW8qOlVouqrTVq1yiqSNSqEbWq9kyKILESGef3x4moUmS5ucn7+Xvcx73n3HPP+ZzfqdzzuZ/v8Ezjya+f/Eq2dNk4GXCSulPqcifkzisPVSQmlMiLiEiSdOvWLd555x2GDBmCYRh07tyZXbt2kTt37hd+1jAMFu9dTMHhBVm4ZyEWi4Xeb/fm6Iij1CpcK34CDARGY04tdxkzUfcEHDDnQY7AbA56AbOPfB/0rS0iEhv2QD+gAeaPo+OBn57cJFu6bGzuvZn0KdPz+/nfafxNY0LDQl95qCIvS7cEIiKS5Bw8eJBSpUqxfv16XFxcmD17NrNmzcLFxeWFn70YeJEGUxvQ6rtWXL9zncJZC7N7wG6+avEVKV1Sxj24CGA50Bb4FXNwu8bABmAeUByzef3lqOfiwFSgctwPLSKSbFmAjzFn/wCYCKx8cpP8HvnZ0HMDKZxT8MuJX/Ce7U1EZMSrjVPkJWke+WfQPPIiIrZr9uzZdO/endDQUHLnzs3y5cspUaLECz8XGRnJ9B3TGbBiAHdD7+Lk4MSQekPoX7t/7Eej/7c/MaeZezTLUQHMG8vX/rFNJOboyoGYfeKLop/dRUTiiwF8CyyJWn4faPnkJluOb6HelHqERYTR7c1ufNP6m/gZD0XkBWKSh77cKD8iIiKJ3IMHD+jRowdz5swBoEGDBsyfP5+0adO+8LN/BfxFp/md2HnaHNK4Ut5KzGo7iwIeBeInuHvALGAt5k1kKqArUI+n54O3w6zCi4hI/LNg/v11AhYAMzHHJ2n7eJMaBWuwqNMiWs5qyYwdM8iUKhMj3x1pjWhF/pMSeRERsXlnz56ladOmHDp0CDs7Oz777DP69++Pnd3zS9nhEeFM3DKRYWuGERoeSkrnlPyvyf/44M0PXvjZl2IA2zDnM74Zta4m8AGQJu67FxGRWLAAHTCn+JwNzMUccLQj0T+uNi/TnMB7gXz4/YeMWjeKDCkz8NFbH1kpYJGnKZEXERGbtmHDBtq0acOtW7fIkCEDS5Ys4a233nrh5/64/Acd53XkwIUDANQsWJNv235LjvQ54iewK8AkYH/UcjbMZvQvbuUvIiKvQhvMyvx0YBFmZb4b0cn8B1U/4Pqd6wxfO5yeS3qSIWUG3iv3nrWiFXmCEnkREbFJERERjBo1itGjR2MYBuXKlWP58uV4eXk993MPwx/y+frPGbNxDOER4aRxS8NXzb+iXcV28dMHMgyz7+XCqNeOmDeL70W9FhGRxKM5ZjI/GViG2ZLqA6KT+aH1h3L9znWmbZtG27ltSZsiLbUL17ZWtCLRlMiLiIjNuXnzJq1bt+bnn38G4MMPP2TixIk4Ozs/93P7zu2j47yOHLt6DIBGJRrxdauv8UjjET+BHcEczO5C1HIpoDfw/N8WRETEmhpiZkUTgB8xE/vO5lsWi4XJLScTeC+QxfsW02R6E3z6+VAqRylrRSsCxCGRDwsLIyAggPv375MxY0bSpUsXn3GJiIg808GDB2nSpAnnz5/H1dWVmTNn4u3t/dzPPHj4gOFrhzNh8wQijUgypsrI162+pmmppvFThb+DOQryuqjlNEAPoDpPD2YnIiKJT30gHLMy/z3gDER9tdjZ2TGvwzxu3L3BluNbaDC1AXsH7SVbumxWC1ckRiP53L17l5kzZ1K1alXc3d3JmTMnBQsWJGPGjOTIkYMuXbrw+++/J1SsIiKSzM2ZM4eKFSty/vx58uTJw549e16YxO86vYvio4rzxaYviDQiaVW2FcdHHqdZ6WZxT+IfDWbXjsdJfH3MkZDfQkm8iIgtaQh8GPV6DrD08VtODk78+P6PFM5aGP8gf+pNqUfwg+BXH6NIlJdO5L/66ity5szJrFmzqF69OitXrsTPz4+TJ0+ye/duhg8fTnh4ODVq1KB27dqcOnUqIeMWEZFkJCQkhK5du9KpUydCQ0Np0KAB+/fvp2jRov/5mfuh9/lk2Se8Mf4N/vr7LzzcPVjbYy3fd/meDKkyxD2ov4GBwCjgFpAds5LzCeb0ciIiYnuaAZ2iXs8AVj1+y93NnfUfrSeLexaOXDlCsxnNCAsPs0KQImAxDMN4mQ2bNWvGsGHDKFKkyHO3CwkJYc6cOTg5OdG5c+d4CfJVCw4Oxt3dnaCgIFKnTm3tcEREkrULFy7QtGlT9u/fj8ViYfTo0QwcOPC508P5/uVLx/kdOX3tNADtKrTjqxZfkTbFi+eUf6EIYCXmlEWhmJ3U2gCt0GB2IiJJxWzMkezB/IG2/uO3Dlw4QJXxVbj/8D5dKndhpvfM+OmmJcleTPLQl07kkxMl8iIiicOWLVt47733CAwMJH369Pzwww/UrFnzP7e/F3qPQasGMfXXqRiGQdY0Wfm27bfULVI3fgI6BXwJ/BW1XBTzBi97/OxeREQSCQOzIr8Ms5vUQKDG47d/OvwTDb9uSKQRyf8a/4/+dfpbJUxJWmKSh8aoj/wjHTt25M6dO0+tv3fvHh07dozNLkVERKJFRkYyduxYateuTWBgIKVKleLAgQPPTeJ3nNxB0ZFFmbJ1CoZh0OmNThwbeSx+kvhQYCbm/MJ/ASmBvpjzxCuJFxFJeiyYf/MbYib1Y4Htj99uUKwBk1pMAmDAygEs+33ZKw5QkrtYVeTt7e3x9/cnU6ZMT6y/ceMGWbJkITw8PN4CtAZV5EVErCcoKIh27dqxZs0aADp16sS0adNwcXF55vaPqvBTtk4BIFu6bMzynkWtwrXiJ6BDmFX4q1HLVYGPAE3WIiKS9BmY3wEbAHtgJFDp8du9l/Rm8tbJODs48+snv1Ixb0WrhClJQ0zy0BhNPxccHIxhGBiGwZ07d564qYqIiGDDhg1PJfciIiIv6+jRozRu3JhTp07h5OTE119//dzxVnz/8qXDvA6cuX4GgC6Vu/Blsy9J7RoPP8LeAaYDG6OWMwAfA7pHExFJPiyYXageAr8AI4DxQAnz7QnNJ3DuxjnWHl7Lu1+/y56Be8iTKY+VgpXkJEaJfJo0abBYLFgsFl5//fWn3rdYLIwcOTLeghMRkeRj6dKldOzYkfv375MtWzZWrFhBmTJlnrnt/dD7DF49mMlbJ2MYBtnSZeO7tt9Rs9B/N71/aQbggzkC/a2ode8CXQG3uO9eRERsjB0wALOblS8wBLNr1Wtgb2fPD11+4M0v3uTAhQPUnVKXXQN2kT5leisGLMlBjJrW79ixA8MwqF69OitWrCBdusftCp2cnMiRIweenp4JEuirpKb1IiKvTlhYGP379+err74C4K233mLx4sVkzJjxmdvvOr2L9nPbc+qaOc1ppzc6MaHZBNzd3OMezA3Mm7PfopazY/aFf/6ELSIikhw8BPoBh4G0wDQgKvXxv+1P+bHluXjzItXzV+fnXj/j6KCpTCRmEnzU+gsXLpA9e/YkO82CEnkRkVcjICCA5s2b4+vrC8DAgQMZPXo09vb2T2374OEDhq4ZysQtE6NHpJ/VdhZ1itSJeyAGsB6zKf19zPZqrTCnldN9mIiIPHIP6AWcwUzip2Em9cCRy0eo+L+K3A29S8+3ejK55WSrhSm2KUFGrb948WL06xw5crwwib9y5crL7lpERJKhXbt2UbJkSXx9fUmVKhUrV65kzJgxz0zi957dS4nRJZiweQKGYdC+YnuOjjwaP0n8FaAPMAEzic8PfAt0QEm8iIg8KQUwDvDAHAS1P+Z3B1DEqwgLOy0EYMrWKczZOcc6MUqy8NKJfJkyZejSpQv79u37z22CgoKYNWsWhQsXZuXKlfESoIiIJC2GYTBt2jTefPNN/P39KViwIL///juNGjV6atvQsFAGrRxExf9V5GTASTzcPVj30TrmdphLGrc0cQskEnN+4E6AH+AMfAh8DeSK265FRCQJS4854F0a4BRmn/kw862GJRoy8h1zzLBui7qx6/Quq4QoSd9LN62/efMmY8aMYc6cOTg6OlK6dGk8PT1xcXHh1q1bHD9+nGPHjlG6dGmGDBlCnTrxUCWxEjWtFxFJGPfv3+f9999n0aJFADRv3pzZs2eTMmXKp7Y9dPEQ7ea048iVIwC0Kd+GyS0nky5FPMz7dg7zJuzPqOUSwKeYFRYREZGX8RfQG3iAOTXpUMAOIiMjaT6zOSsOriBz6szsH7wfr3ReVgxUbEWC9JH/448/KFSoEGFhYWzcuBEfHx/Onz/PgwcPyJAhAyVKlKBWrVoULlw4Xk7CmpTIi4jEvzNnztC4cWP++OMP7O3tGT9+PB9//PFTXbXCwsMYu3Eso9ePJjwinIypMjKzzUwalXy6Yh9j4cAi4Puo126YVfi6mFMMiYiIxMRBzOb14UBDoCdggbshd6n4v4ocuXKE0jlK49PPB1cnV2tGKjYgQRJ5e3t7AgICyJgxI7lz5+b3338nffqkOa2CEnkRkfi1bt062rRpQ1BQEJkyZWLZsmW8+eabT2137Mox2s1tx4ELBwBoUrIJ09tMJ2OqZ49gHyN/YvZrPB+1XBFzXvgMcd+1iIgkY9uBUZgDp3YA2pqrz10/R5kxZQi8G0ib8m1Y0HFBkh0sXOJHggx2lyZNGs6ePQvA+fPniYyMjFuUIiKS5EVERDB8+HAaNGhAUFAQFSpU4ODBg08l8RGREXyx6QtKflaSAxcOkNYtLT90/oEfu/0Y9yQ+FJiJWXk/j9mncRjwGUriRUQk7qpiVuIB5mLOggLkypiLH9//EXs7exbtWcSEzROsE58kSQ4vu2GTJk1488038fDwwGKxULp06WeOLAxEJ/wiIpJ83bx5k9atW/Pzzz8D8OGHH/LVV1/h5OT0xHanr52m3Zx27DpjDghUr0g9vm37LZ5pPOMexFHMKvzlqOW3gI+AeJhyXkREJFpD4CawEJgIZAZKQ7X81ZjUYhIfLf6I/iv6UzhrYWoXrm3NSCWJiNE88j///DOnT5+mZ8+ejBo1ilSpUj1zu169esVbgNagpvUiInFz6NAhGjduzPnz53F1dWXmzJl4e3s/sU1kZCTTd0yn3/J+3H94n1QuqZjUYhIdKnWIe9PDEGAWsAqzqWN6zCnmKsZttyIiIv/JAMYCWzDHYPkayGnO1tJ1YVe+8/0Od1d39g3ax+tZXrdmpJJIJUgf+X/q0KEDU6ZM+c9E3tYpkRcRib358+fTrVs3QkJCyJ07NytXrqRYsWJPbHPp5iU6zuvILyd+AaBavmrM7TCXHOlzxD2AQ8AXgH/Uch3MZvVPD4wvIiISv8KAvsAfmFX56UBaczrV6hOqs+vMLvJnyc++wftI5ZI0cymJvQRP5JM6JfIiIjEXGhpK7969mTFjBgD16tVj4cKFpE2bNnobwzBYuHshPZf0JOhBEC6OLoxvMp7u1bpjZ/fSw7Y8231gBvBT1HImzCnlSsdttyIiIjESDHTH7NaVH5gEOENAUAClPyvNldtXaFaqGUvfX6rB7+QJCTLYXULw8fGhQYMGeHp6YrFYWL169XO39/f3p1WrVuTLlw87Ozt69+79zO1WrFhBwYIFcXZ2pmDBgqxatSr+gxcRkWiXLl2iSpUqzJgxA4vFwsiRI1m7du0TSfy14Gs0/qYx7ea2I+hBEOVylcNvmB8fvfVR3JP43zFHCn6UxL+LOeCQkngREXnVUmM2sU+FOWPKGMCALO5ZWN5tOY72jvx44EembJ1i1TDFtlk1kb937x7FihVj2rRpL7V9aGgoGTNmZPDgwU8103xk9+7dtGjRAm9vbw4fPoy3tzfNmzdn79698Rm6iIhE+fXXXylVqhT79u0jbdq0rF+/nmHDhj2RnK86uIrCIwqz2m81jvaOfN7wc3b230m+LPnidvB7mM3o+wHXAA/gK6A3Zv9EERERa/DCnB3FAfDBHLclEsrfKc+EYubo9X1/7Muu07usF6PYtETTtN5isbBq1SoaNmz4UttXrVqV4sWLM2nSpCfWt2jRguDgYDZu3Bi9rnbt2qRNm5bFixe/1L7VtF5E5MUMw2D8+PEMGjSIyMhIihcvzooVK8idO3f0Nrfv36bXkl4s2L0AgCJZi7Cw00KKZXv2j7Exshf4ErgBWIDGQGfAJe67FhERiRdbMCvyQYATcBuMUINWRVuxJNMSPF09OfTZITKlzmTVMCVxsJmm9Qlh9+7d1KxZ84l1tWrVYteu//61KzQ0lODg4CceIiLy34KCgmjSpAkDBgwgMjKSdu3asWvXrieS+F+O/0KREUVYsHsBdhY7BtQZwO+Df497En8H+B8wADOJz4rZ/7AHSuJFRCRxqQGUB/4CDgP2YMlmYdbfs8h/Lz9XH1yl1RetiIiMsG6cYnOSXCIfEBBA5syZn1iXOXNmAgIC/vMzY8eOxd3dPfqRLVu2hA5TRMRmHT16lDJlyrBq1SqcnJyYMWMGc+fOxdXVFYD7offpubgnNb6qweVbl8mTMQ++/XwZ23gszo7OcTv4Lsy+8Jswq/DNgNlA0bjtVkREJEFEAscxm9g7AwFAGKR0TcmKGytIEZ6CrQFbGb56uFXDFNuT5BJ54KnRHw3DeO6IkAMHDiQoKCj6cenSpYQOUUTEJv3www+UK1eOU6dOkS1bNnbu3Mn7778f/Td237l9lBhdgqm/TgXgg6of4DfMj4p54ziB+x3MgYMGA4GYfQ+nYk4rF8ffBkRERBLMH8BJIC/mNKiRwFkgDAqGFWTWlVkAfL7xc9b/sd5qYYrtSXKJfJYsWZ6qvl+7du2pKv0/OTs7kzp16iceIiLy2MOHD+nZsyetW7fm/v371KhRg4MHD1KmTBkAwsLDGLZmGBX/V5G//v4LzzSebOy1kW9af0NKlzhO4L4LaA9sxqzCtwS+AwrFbbciIiIJLhAIxRyANRdmP/mHwAUgEt4LeY8el3oA4D3bm/M3zlspULE1SS6Rr1ChAlu2bHli3ebNm6lYMY7VIBGRZOrKlStUrVqVqVPNKvuQIUPYuHEjGTJkAODYlWOUH1ue0etGExEZwXtl3+PIiCPULlw7bgf+ZxX+JpANmAa8j6rwIiJiG9JjfmeFYDavz4WZgd0FrprrJ1yYQLnM5bh1/xZNZzQlJCzEevGKzXCw5sHv3r3L6dOno5fPnTuHn58f6dKlI3v27AwcOJArV66wYMGC6G38/PyiP3v9+nX8/PxwcnKiYMGCAPTq1YsqVaowbtw43n33XdasWcMvv/zCzp07X+m5iYgkBdu3b6dFixZcu3YNd3d3Fi5cSIMGDQCIjIxk0i+TGLRqEKHhoaR1S8v0NtNpUaZF3A+8G5iAWcmwAC0wq/JK4EVExJYUBfJjDnTnBrgC2YHzwHUgGJwqOrGs9zJKfl6SAxcO0HtJb2Z4z7BayGIbrDr93Pbt26lWrdpT69u1a8e8efNo374958+fZ/v27dHvPauve44cOTh//nz08vLlyxkyZAhnz54lT548fP755zRu3Pil49L0cyKS3P17armiRYuyYsUK8ubNC8CFwAu0n9ue7Se3A1C7cG1mt5uNZxrPuB34LmbVfVPUshfm6PRqRi8iIrbKF/gIcwq6jJgzrFwG/DHLqt8A3rD52GZqT66NYRgs6LgA7wreVgtZrCMmeWiimUc+MVEiLyLJ2e3bt2nfvj1r1qwBoG3btkyfPh03Nzfz5mL3Anou6Unwg2DcnNyY2HwiXat0fe6goi9lL/AFj6vwzYCOqAovIiK2zxezpdmfmH3kHaPWpwByAzOB9DBy7UhG/DSCFM4pODjkIK9ned068YpVKJGPIyXyIpJc+fn50bRpU86cOYOTkxNTp06lS5cuWCwWrt+5zvsL32fVoVUAVMhTgQUdF5A3U964HfQuZjViY9SyF9AfKBy33YqIiCQqkZij2Adi9p3Pi1mpPw8UACZBhEMENSbWYNvJbZTIXoLdA3bHfepWsRkxyUOT3GB3IiISO/PmzaNChQqcOXOGHDly8Ntvv9G1q1lpX3d4HUVGFGHVoVU42jsyptEYfD71iXsS/ztm1X0jj6vw36EkXkREkh47oDjwVtRzSuCzqOcTwCSwt9izqPMi0qdMz6GLhxiwcoCVgpXETom8iEgyFxISQteuXenQoQMhISHUqVOHgwcPUrp0ae6E3KHLgi40mNaAv4P/ppBnIfYN2sfAugNxsI/DeKn3MZsY9sMc7CcrMBnNCy8iIslLVmA45o/ZG4FV4JnGk3nt5wEw6ZdJml9enkmJvIhIMnbu3DkqVarErFmzsFgsjB49mnXr1pEuXTp2ntpJsZHF+M73OywWC31r9mX/kP0Uz148bgc9CHQA1kUtN8aswheJ225FRERsUmnMqVUBvgYOQf1i9en1Vi8A2s9tz9XbV60VnSRSSuRFRJKpdevWUbJkSQ4ePEj69OnZtGkTQ4YMISwijAErBlDliyqcu3GOHOlzsO2TbXzR7AtcHF1if8AHwCTgE+Aa4BG1/BHmCL4iIiLJVXPgbcx+9COAABjXZBwlspfgxt0btPmuDRGREVYNURIXJfIiIslMeHg4AwYMoEGDBty+fZty5cpx6NAhatSowdErRyk3phzjfh6HYRi0r9ieP4b/wZv53ozbQf2ATsCaqOV3gdlAsbjtVkREJEmwAH2B14BgYBg4G84s6bKEFM4p2HZyG//b+D/rxiiJihJ5EZFkxN/fn7feeotx48YB0LNnT3x8fPDM6smXm76k1GelOHz5MBlSZmDlByuZ22EuqV3jMHtHCDAV+BhzvtxMmH3jewOucTwZERGRpMQZc/C71MApYBq8nuV1vm71NQDD1w5n1+ldVgxQEhMl8iIiycS2bdsoUaIEPj4+pEqVimXLljF58mSuBl+l+oTqfLr8Ux6GP6R+0focHXmURiUbxe2AR4HOwMqo5frAXKBk3HYrIiKSZGUCBmNW6H8CNkPbCm1pVbYVEZERvDfrPW7du2XdGCVRUCIvIpLERUZGMmbMGN5++23+/vtvihQpwv79+2natCnzfptH0ZFF8fnLhxTOKZjVdhZre6wlc+rMsT9gKDAd6AlcATICX2D2jXeLhxMSERFJysoC3lGvJ4LlvIXpbaaTJ2MeLt68SJcFXTAMw5oRSiKgRF5EJAkLDAykQYMGDB48mMjISNq3b8+ePXtI65GWxt80psO8DtwJuUPFPBU5POwwnSt3xmKxxP6AJ4CuwDLAAGoDczBH5BUREZGX0w7zuzMUGA6pjdQs7rIYB3sHVhxcwbc+31o5QLE2JfIiIknUvn37KFmyJBs2bMDFxYXZs2czd+5cfj31K4WHF2a132oc7R0Z02gMPv18yJMpT+wPFgbMAroDF4F0wBigP5AyHk5GREQkObHDbGKfAbgEfAFlcpZhbKOxAPRe2pvjV49bMUCxNiXyIiJJjGEYTJo0iTfeeIOLFy+SN29e9uzZQ7NWzeiyoAsNpjXg2p1rFPQoyN5BexlYdyD2dvaxP+ApzPlvf8Cswr8NzAMqxMPJiIiIJFdpMKeiswe2A6uhT40+1CxYk5CwELxne/Mw/KH14hOrUiIvIpKE3L59myZNmvDxxx8TFhZG06ZN2b9/P3dT3KX4qOJ85/sdFouFPjX6cGDoAUpkLxH7g4VjDl7XDTiHecMxCrOCkCru5yIiIpLsFcL8ngX4BuxO2jG3w1zSuqXl4MWDjF432prRiRUpkRcRSSL2799PyZIlWbVqFU5OTkydOpVFPyxi3NZxVBlfhbPXz5ItXTa29tnKhOYTcHF0if3BzgIfAguASOBNzKS+cnyciYiIiERrAlTB/AF9BHjaeTKjzQwAxmwYw54ze6wYnFiLEnkRERtnGAZTp06lYsWKnDt3jly5cvHbb79RrVE1yo8tz9iNY4k0ImlboS1Hhh+hWv5qL7fjSMAP2Br1HAlEAN9jNqU/hVl5H4bZ9C9N/J6XiIiIYE5F1x/wAq4Bn0Pz0s1pXa41kUYk3nO8uRd6z7oxyiunRF5ExIYFBQXRvHlzevbsSVhYGI0aNWL//v343PSh1Gel8LvkR/qU6VnebTnzO87H3c395XbsCzQGWmLOBd8ScwT6JsB3mFWBiph94V/ydwERERGJJTdgJOAM7AMWwbRW0/BK68Xpa6fp+2Nf68Ynr5zF0CSETwkODsbd3Z2goCBSp05t7XBERJ7p4MGDNG/enDNnzuDo6MgXX3zBu63fpcO8Dmw/uR2AukXq8l3b7/BI4/HyO/YFPgJuA5kwbxr8MeeEtweKAsOBmphVAhEREXk1NgH/w/z+nQBbXbby9sS3AVjfcz11i9S1ZnQSRzHJQ1WRFxGxMYZh8PXXX1OhQgXOnDlDjhw58PX1JW2ZtBQbVYztJ7fj5uTGTO+ZrPtoXcyS+EhgAmYSnxNwwBzILhAzobfHbEJfAyXxIiIir1otoA7mLDGfw1ueb9H77d4AdJrfiRt3blgxOHmVlMiLiNiQW7du0aRJE3r06MHDhw959913+WXnL4w/OJ52c9sR/CCYCnkqcHj4YbpW6YrFEsNs+w/gTyAjcCPq9T3Mb4tswOuYA939EZ9nJSIiIi+tJ+Z3ciAwHsY0HEMBjwIEBAXQbVE31OA6eVAiLyJiI/bs2UOJEiVYtWoVjo6OTJo0ic4jO/PGV2+w8uBKHOwd+Lzh5/h86kPeTHljd5BA4D6Pm9IbQEogH5ABcAUeRm0nIiIir54L5kCzDsAucN3oyqJOi3Cwd2DFwRUs2rPIygHKq6BEXkQkkYuMjGT8+PFUrlyZCxcukCdPHn7Z8QvH0x2nwbQG/B38NwU9CrJ34F4G1RuEg71D7A5kAMeBm0AwZtP5rEAezGb1ACGAE5A+rmclIiIisZYX+CDq9TdQMqIkIxqMAKDH4h5cDLxorcjkFVEiLyKSiF2/fp169erRv39/wsPDadmyJdNXTKfjTx351udbAD5++2MODD1AyRwlY3+gG8BAYCVm1R3MKnxGHveFN4DrQAHMAe9ERETEehoB5YEwYBT0r9afCnkqEPwgmPZz2xMZGWnlACUhKZEXEUmktm/fTvHixfn5559xcXFh+szp5Giag9pf1+bM9TNkS5eNrX22MrHFRFwcXWJ3EAPYDHQA9gKOQA8gFxCA2T8+Iur5AuAO9EHfHiIiItb2aH759MAFcJjuwIKOC0jhnIJtJ7cxeetkKwcoCUm3YiIiiUx4eDgjRozgrbfe4urVqxQoUIBFGxYxw38G434eR6QRSdsKbTky/AjVC1SP/YFuYfaxGwvcBfIDszCnlpsGFMNsYn856rk4MBWoHIeTExERkfiTBhiEmdSvg7wn8jKx+UQABq0axF8Bf1kxOElImkf+GTSPvIhYy8WLF2nTpg2+vr4AtO/YnrwN8zJqwygehj8kQ8oMzPSeSeOSjeN2oG3AJMwE3QFoD7TEnF7ukUjM0ekDMX/tL4p+/hUREUmMZgE/ACnBmGVQe3FtNh/fzBt532DHpzuws9MXuC3QPPIiIjZoxYoVFCtWDF9fX1KlSsVX333FmXxnGLJ2CA/DH1K/aH2OjDgStyQ+CBgJjMJM4vMCM4HWPJnEg/kNURx4K+pZ3xgiIiKJUwfMlnV3wfK5hVmtZ5HSOSU7T+9k2rZp1o5OEoBuy0REElhEBGzfDosXm88REU++f//+fbp160bTpk25ffs2ZcqWYfD8wQw9NBTfU76kdE7JrLazWNtjLVncs8Q+kJ2YlfftmEl7O2A6kDv2uxQREZFEwAGzu5wbcBSyr8/OF02/AGDgyoGcuXbGmtFJAlDT+mdQ03oRiS8rV0KvXnD58uN1Xl4weTI0bgxHjhyhZcuWHD9+HIvFQvdPu3Mu6znWH1kPwBt532B+x/nkzhiHbPsOMAX4JWo5J2Z/utdiv0sRERFJhLYCnwEWiJwQydtb32bbyW1UzVeVrX22qol9Iqem9SIiicDKldC06ZNJPMCVK9CkiUHXrt9QpkwZjh8/TpYsWRg6eyiLHy5m/ZH1ODk4Ma7JOLZ/uj1uSfwezOZ2v2AOhNMa+BYl8SIiIknRW0BtwAC7/9kxu+ls3Jzc2H5yOzN9Zlo7OolHqsg/gyryIhJXERGQM+fTSbwpEOgMrAagRr0auNdxZ7nfcgCKZyvOgo4LKOJVJPYB3AO+BjZGLWfDnCe+QOx3KSIiIjbgAdAJ8AdqwdQyU+m5pCcpnVNydORRcqTPYeUA5b+oIi8iYmW+vv+VxG8BimAm8U6888EHHC9wnOV+y7Gz2DG47mD2DtobtyR+P2YVfiNmFb4Z5mi2SuJFRESSPlceT0m3Cbo7dKfya5W5G3qXzvM7ozpu0qBEXkQkAfj7/3tNKPAJUBPwB4fXoUJD1oZN58rtK7yW6TV+6/8bnzX6DCcHp9gd9D4wAfgUuA5kBSYDHwLOsduliIiI2KDCwHvmS7uv7Jj7zlxcHF345cQvfOf7nVVDk/ihRF5EJAF4ePxz6ThQDphoLmZqBI0iodAyAHpU68GhYYcon6d87A94ELMKvy5quTHwHWbxX0RERJKfDkAeIAjyLMjD5+9+DsAnP37CpZuXrBqaxJ0SeRGRBFC5MmTNagDfAKWAw2CXHko3gfprwP009iFZ2dhzM1NbTSWFc4rYHegBMAmz2H8N8Iha/ghwift5iIiIiI1ywGxi7wDshl5hvaiQpwJ3Qu7QdWFXNbG3cUrkRUQSQGDgNbJkaQB0B0IgXQVomAmKrwC7SDjlzdz6R6ldpEbsD+KHOZjNmqjld4HZQLG4xS4iIiJJRG7MewXA/ht75teej7ODMz8f/Zn5u+ZbNTSJGyXyIiLxbOPGjRQpUoQDB9bj4OSEc/m60PB3SHcCHmQk/aGVrOi5AO8WaWJ3gBDMeeE/xhyRNhNm3/jemAPciIiIiDzSHCgKPIDX5rzGyPojAei9tDdXb1+1amgSe0rkRUTiyb179/jggw+oW7cu165d47Uyr5H/09cJLbwB7MIpk7ERK9sc5e+9jWjcOJYH+QPoCKyKWq4PzAVKxscZiIiISJJjBwzA/LH/CPQN6kvpHKUJehBEryW9rBycxJYSeRGReLB3715KlCjBjBkzAKjyYRUulb7E0b+P4u7qzsJOC9n7+Qoa1c6EvX0sDhACTAV68bgK/wVm33i3eDoJERERSZo8MMfPAezn2rOg6gLs7exZfmA56w6ve+5HJXFSIi8iEgdhYWEMGzaMSpUqcerUKbK8loWiA4vi89CHkLAQahasydERR2lTvg0WiyV2B/kDs3/byqjlR1X40vFyCiIiIpIc1AYqAuFQYG4B+lbrC0D3H7pzN+SuVUOTmFMiLyISS3/++ScVKlRg9OjRREREUKZtGe7UuMMf1/8ghXMKpreezs+9f8YrnVfsDhAKTMPs+34VyAiMR1V4ERERiTkL0BdIA5yFkYEjyZk+JxdvXmTYmmHWjU1iTIm8iEgMRUZGMm3aNEqUKMGBAwdw93SnSL8i/O70O/ce3qPK61X4Y/gfdKvaLfZV+COYVfgVgAHUxazCl4mvsxAREZFkJy1mQQBwXuHMwvILAZi8dTIHLhywXlwSY0rkRURi4PLly9SpU4ePPvqIkJAQCjYqSETDCI7cPIKrkyuTWkxi2yfbyJ0xd+wOEIJZhe8FXAEyAP8DPgViOdW8iIiISLQ3gFqAAW+sfIM2JdsQaUTSZUEXwiPCrR2dvCQl8iIiL8EwDBYsWEDhwoXZvHkzzmmdKdSnEMfTH+fuw7tUyFMBv6F+9Hq7F3Z2sfzT+qgv/KMqfB3MKny5+DoLEREREaA7kA64BF+HfU0atzQcuniIKVunWDsyeUlK5EVEXiAgIICGDRvSrl07goKCyFUjF86tnDkWfAxnB2fGNx2Pbz9fXs/yeuwO8M8R6R/1hR8H9ANSxtNJiIiIiDySCuhjvky9JjXflv0WgKFrhnIh8IL14pKXpkReROQ5li5dSuHChVm7di0OqRwo0LMA53KcIzg0mNI5SnNw6EE+rfUp9naxmVMO8MOcF/7fI9KXjY/oRURERP5DJaA6EAlNtzalau6q3H94n+7fd8cwDGtHJy+gRF5E5Blu3LhBixYtaNmyJYGBgWSvnh23tm6cuH8CR3tHRr87mt0Dd1PQs2DsDvAAmAR8zNPzwqsvvIiIiLwKPYE0YDln4XvX73G0d2T9kfUsP7Dc2pHJCyiRFxH5lzVr1lCoUCGWLVuGXUo78vXIx8XcFwkODaZE9hLsH7KfIfWH4GDvELsDHMSswq+JWm6A5oUXERGRV88ds2sf4LnOk/ElxgPQc0lPbt+/bbWw5MWUyIuIRLl58yZt27alYcOGXLt2jaxVspKqXSpOhpzE0d6RUe+OYu/AvRT1Khq7A9wDJmBW3QOAzMCXmH3UNC+8iIiIWMObQGUgAnr83oMCmQoQEBTAgBUDrB2ZPIcSeRERYPXq1RQqVIiFCxdiSWHhtQ9e48rrVwgKDYquwg+tPxRHB8fYHWAv0AFYF7XcEJgDlIqP6EVERERiyYJZlU8FDmccWJF2BQAzfWby2+nfrBqa/Dcl8iKSrF2/fp333nuPRo0aERAQgEdlD1K1T8WpsFPxU4W/A4wFBgDXAU9gMuYXpqrwIiIikhikB3qYLwtsLsCn+T4F4P2F7xMWHma9uOQ/KZEXkWTJMAyWLVtGoUKFWLJkCXYp7cj7YV788/kTHBpM8WzF416F9wXaAZsxf+1uhlmFj+VvAiIiIiIJpgZQDgiDUX+NIkOKDBy7eoxp26ZZOzJ5BiXyIpLsBAQE0KRJE1q0aMH169fJWi0rbm3dOP3wNI72jox8ZyT7Bu2LfRX+NjASGAbcArID04APAef4OQcRERGReGXBHMfHDVxOubAk3RIAhq8dztXbV60amjxNibyIJBuGYbBo0SIKFSrEqlWrsHe3J0/3PFzJc4W7D+9SOkdpDgw5wLAGw2JXhTeArZhV+O2Yf2FbA7OAWM5SJyIiIvLKZAQ+MF9W/6069dPV507IHT798VOrhiVPUyIvIsnChQsXqFevHt7e3ty8eZNsNbLh3MqZM6FncHZwZlyTceweuJsiXkVid4BrwCDgMyAYyA1MBzoDTvF0EiIiIiIJrR5QEiwPLXx34zssWPhh3w9sP7nd2pHJPyiRF5EkLSIigilTplCoUCE2btyIYzpHcvXIxaUcl7gfdp+KeSpyePhh+tXuF7t54Q3gJ8wR6fcADphzxM8EXo/HExERERF5FSxAX8AZMp/NzNS0UwHo/n13DXyXiCiRF5Ek6+jRo1SqVIlevXpx7/49cjXIhUNzB86FnMPVyZVJLSbh08+HfFnyxe4Al4GPgYnAfczm898B3pgJvYiIiIgt8gDamy+7HOtCbofcHPc/zpRfp1gzKvkHJfIikuSEhoYybNgwSpYsyd69e3HL6kbOnjk5l/kcD8IfUDVfVY4MP0Kvt3thb2cf8wNEAEuBTsBhzAHsPgKmAjni8URERERErKUpkBuc7jux1FgKwIi1I7hy64pVwxKTEnkRSVJ27txJ8eLFGT16NGERYeR7Lx9h9cI4f+88qV1TM9N7Jlv7bCVPpjyxO8BZoDswA3gIlALmAo3RX1QRERFJOhwwm9hboNTJUrRzacfd0Lv0/bGvtSMTdNspIknE7du3+fDDD6lcuTJ//vkn6fKnI1vPbJxMcZKwyDAaFGvA8ZHH6VqlK3Z2sfjT9xCz2XxX4CSQEugHfIHZ/ExEREQkqSkAvAsWLEy8PBHnSGeW/L6EX0/8au3Ikj0l8iJi0wzDYOnSpRQoUIDp06eDAxTuXJhblW9x6e4lMqbKyJKuS1jTfQ1Z02aN3UEOYzaj/x6zWX0VYB5QB3NAGBEREZGkqjOQHtLdTsds+9kA9Fjcg4fhD60bVzKnRF5EbNbZs2epU6cOLVu2JCAgAK9yXnh09+AoRzEMA+/y3pwYdYIWZVpgscQi474HTAB6Yw5slx4YBYyMei0iIiKS1KUAepovm59uTgmjBCf8TzB562SrhpXcKZEXEZvz8OFDxowZQ6FChdi0aRNOqZ0o1rMYl4tcxv+eP9nTZWdjr40s6LSA9CljmXHvBNoB66KW62NW4SvHxxmIiIiI2JDKQEVwNBz5Puh7MGDkTyO5fPOytSNLtpTIi4hN2blzJyVKlGDw4MGEhIRQ8J2CpGiXgsP3D2OxWOhRrQdHRx6lduHasTtAIDAcGBr12guYBHyC2S9eREREJLmxAL0AF8h/Iz99I/pyL/Qen/z4ibUjS7aUyIuITQgMDKRz585UrlyZ48ePky5HOgp/WpjjmY5z68EtCmctzK7+u5jaaiqpXFLF/AAGZvW9HeCD+dexNeYAd8Xi8UREREREbFEmoKM58N2QS0NI9zAdy/YvY+uJrdaOLFlSIi8iiVpkZCTfffcd+fLlY/bs2WCBsp3L8qDuA47eOoqzgzNjGo3h4JCDlM9TPnYHuYDZ92sCZr/414FvMQd3cY6nExERERGxdY2B18A9wp35D+YD0Htpb8Ijwq0bVzJk1UTex8eHBg0a4OnpicViYfXq1S/8zI4dOyhVqhQuLi7kzp2bGTNmPPH+vHnzsFgsTz1CQkIS6CxEJKEcPHiQihUr0qVLFwIDA8ldLjd5++ZlH/t4EPaA6vmrc2TEEQbWHYijg2PMD/AQcw74zsBRwAXoAUwHYjnNvIiIiEiSZU/03PK1AmpR/W51jl45yrc+31o7smTHqon8vXv3KFasGNOmTXup7c+dO0fdunWpXLkyhw4dYtCgQfTs2ZMVK1Y8sV3q1Knx9/d/4uHi4pIQpyAiCeDWrVt0796d0qVLs3fvXlKmTUnlfpU5X/Q8p2+dJl2KdMxtP5df+vzCa5lfi91B/DCnlFsAhAMVgPlAE9RWSUREROS/vA40Bkd7R6Zfm45ThBPD1g7j1r1b1o4sWXGw5sHr1KlDnTp1Xnr7GTNmkD17diZNmgRAgQIF2L9/P19++SVNmjSJ3s5isZAlS5b4DldEElhkZCQLFiygX79+XL9+HYA3vN/gdIbT+N70BaBV2VZ81eIrMqXOFLuD3MGsuG+MWk6H2ay+CpoTXkRERORldAR8IO+1vPS70Y/P7D9j5E8jmdRykrUjSzZsqu60e/duatas+cS6WrVqsX//fsLCwqLX3b17lxw5cuDl5UX9+vU5dOjQc/cbGhpKcHDwEw8RebUOHz5MlSpV6NChA9evXydP8TyUG1aOnc47CbgTQJ6MedjUexPfd/k+dkm8AfwCtOVxEv8OZhX+TZTEi4iIiLwsN+AjsLPY0ftGbzzveTJt2zRO+J+wdmTJhk0l8gEBAWTOnPmJdZkzZyY8PJwbN24AkD9/fubNm8fatWtZvHgxLi4uVKpUiVOnTv3nfseOHYu7u3v0I1u2bAl6HiLyWGBgIN27d6dkyZL89ttvuKV0o+6AulytcJW9V/fiaO/IkHpDODLiCDUL1XzxDp/lMmZ/rs+B20AOYCrwMZpSTkRERCQ23gBKQ3rn9Ey5PoWIiAg+XvoxhmFYO7JkwapN62PDYnmybPboP5RH68uXL0/58o9Hrq5UqRIlS5Zk6tSpTJky5Zn7HDhwIH369IleDg4OVjIvksDCw8P59ttvGTp0KDdv3gSgWstqXMl1hQ3XNwDw5utvMqPNDPJ75I/dQR4Ci4FFmP3gnTAr8i2wwb9+IiIiIonIo7nlO0Cd+3WofKMym45tYsORDdQrWs/a0SV5NnUrmyVLFgICAp5Yd+3aNRwcHEifPv0zP2NnZ0eZMmWeW5F3dnbG2VlzTIkkhIgI8PUFf3/w8IDKlWHnzh307NmTP/74A4ACJQqQu3lu1p9ZD9chQ8oMfNnsS9pWaPvUj3cv7RAwEbMaD1AG6A14xvmURERERATAC2gObj+4MeXGFMqlK0efZX2oUbAGTg5O1o4uSbOpRL5ChQr89NNPT6zbvHkzpUuXxtHx2VNPGYaBn58fRYoUeRUhisg/rFwJvXrB5UfJNBdxdf2UBw+WAZAmbRrq9K7DppubOHHG7FPV6Y1OjGsyjvQpn/3j3AvdBr4BtkQtpwM+Qv3gRURERBKCN7AFCv9dmPevvM9U+6lM+3UafWr2eeFHJfas2kf+7t27+Pn54efnB5jTy/n5+XHx4kXAbPLetm3b6O27devGhQsX6NOnDydOnGDOnDnMnj2bvn37Rm8zcuRINm3axNmzZ/Hz86NTp074+fnRrVu3V3puIsndypXQtOmjJP4BMBrIH5XEWyhfrwm5e+Vm8aXF3Lx3k8JZC+PzqQ/ftfsudkm8Aawj+ssEC9AQc3q5qiiJFxEREUkILsCH4GDnQP+b/fG458GodaO4fue6tSNL0qxakd+/fz/VqlWLXn7UT71du3bMmzcPf3//6KQeIFeuXGzYsIGPP/6Yr7/+Gk9PT6ZMmfLE1HO3b9+ma9euBAQE4O7uTokSJfDx8aFs2bKv7sREkrmICLMSb45hsRToD0T9W3YqD6WzsyfLj3DZIJVLKka+M5Ie1Xrg6PDsljUvdAr4Cng0UGpe4BMgll3rRURERCQG3gRKgudBTz67/BmdUnRi6OqhzPCeYe3IkiyLoWEFnxIcHIy7uztBQUGkTp3a2uGI2Jzt26Fatb2Yw8LvjlqbFV5rAGVXgKv5C231HO+xsMeXeKZ5Qcf1SOAPIBBIDxTFbE90F5gDrMasyLsBHYBGgH28npKIiIiIPM8FoBPcvnObOpnrsC/LPg4OPUixbMWsHZnNiEkealPTz4lI4nfp0iUGD24NlMdM4t0g3YdQPzu8OcNM4m8VgPW/0jnPDy9O4n2BxkBLoHPUcyPMgezaAqswk/jqmM3om6IkXkRERORVywE0gzRuafgi4Avsw+3pvbS3pqNLIDY12J2IJF53795l/PjxfPHFF4SEhAAWcG4BpZwh/wywi4SwFHBoGBztDZFOeHi8YKe+mAPV3QYyYfbBCgK2AVuB14HCmKPRl0yY8xIRERGRlxQ1VlHpsNJ4X/Bmjv0cVh5cSZNSTV74UYkZNa1/BjWtF3l5ERERLFy4kEGDBuHv7w/AG5Ur4xdaibuvfwsu5hzxnG0GeyfAvWxYLODlBefOgf1/Vc8jMSvxfkDOqOW/gWuYFfhQoBDwG6DZI0VEREQSh1+B0XD69mkqF6yMa3ZXTow6gbOjbtheRE3rReSV2Lx5M6VKlaJDhw74+/uTO3duRs8azZ23grlb9H9mEn+zCKzfBr8ui07iASZNek4SD2af+D+BjJgV+T8xk3gAd8yB7O7yeIA7EREREbG+akAJyJU6FwPODODcjXN8ve1ra0eV5CiRF5EYO3z4MLVq1aJWrVocPnwYd3d3Bo8ZTOlPSzN071AOXz5MGrc0dCo4lay/HwT/qtGf9fKC5cuhceMXHCQQM1G/ijl4ShjgBOQCcgOpgIdR24mIiIhI4mABeoK9oz3NHjaj7LWyfLb+M27eu2ntyJIU9ZEXkZd26dIlhgwZwsKFCzEMA0dHR7p170bqSqn5attX3D97H4vFQtfKXfms4WdkSJWBiJ7g6wv+/uDhAZUrv6ASD3APsw/8LcyB6xyAzJj95B/9/BiCmdjHYsp5EREREUlAOYHG4PGjB0PPDaVRhkZ8vv5zJjSfYO3Ikgz1kX8G9ZEXeVJQUBBjx45l8uTJUQPZQYuWLajUphITfSdyPvA8ABXzVGTqe1MpmSOWI88ZwGZgJmYSfxSzEl+QJ/vBG5hV+uLACtS2SERERCSxuQ+0gcDLgXyQ6gPWvL6GP0f9Sa6MuawdWaKlPvIiEi9CQ0OZNGkSefLkYdy4cYSEhFClShXmrpvL5eKX6bm6J+cDz5M1TVYWdlrIzv47Y5/En8Icof5/mEm8F/A55i+6/phV+oio5wuY/eT7oL9iIiIiIomRG9AF0qVIxyf+n+B6z5VBqwZZO6okQ03rReQpERERLFq0iGHDhnHx4kUA8ufPT78R/dh2dxsdVncAwM3JjX61+tG3Vl9SOKeI3cFuA7OB9ZiVdhegHeZ88A5AAWAC5mB3NzCb0xfHTOIrx/IERURERCTh1QLLKgsFQwrS6a9OTHSeyMc1PqZsrrLWjszmqWn9M6hpvSRXhmHw008/MWjQII4dOwaAp6cnA4cM5LrHdb7c8iX3H94HwLu8N2MajcErnVfsDhYOrALmYTa9AngL6AZk+Ne2kZij2Adi9okviirxIiIiIrbgD6AXHA84Tv2i9fEq5cWOT3dgeTSVkUSLSR6qiryIAODj48OAAQPYvXs3AGnSpKH/gP5kKJ+BketHcvngZQAq5a3EV82/okyuMrE/2F7ga+BS1PJrmM3qi/zH9naYVXgRERERsS1FgTch99bc9P6zN71S9WLt4bW8W/xda0dm01SRfwZV5CU5OXz4MAMHDmTjxo0AuLq60rt3b0q/W5rRm0bjd8kPgJzpczK+6Xialmoa+19QL2Em8HujltMAXYDaqMIuIiIiklT5A+3g7NWzeOfyJrB4IEeGH8HRwdHakSUqGuxORF7ozz//pGXLlhQvXpyNGzdib29Pt27dWLNzDQczHaTJd03wu+SHu6s7/2v8P06MPkGz0s1il8TfA74BOmAm8Q5AC2ARUBf9JRIRERFJyjyA5pA9fXb6nO7DmatnmOU7y9pR2TTdPoskM2fPnqV9+/YUKlSIpUuXAtCiRQt+3fsrD8o8oNaMWmw6tglHe0c+fvtjzow5Q/86/XFxdIn5wSKANUBr4Meo5QrAXMy+8LEcH09EREREbEwrcMjgQDmXcjQ+15gRP40g+EGwtaOyWUrkRZKJy5cv061bN/Lly8f8+fOJjIzknXfewWevDzmb5aTW7FrM3z0fwzBoWaYlf47+k4ktJpI+ZfqYH8zArLx3AiYBQUB2YBwwBnNqORERERFJPtyAzuDp7skHFz/g4Y2HjP95vLWjslka7E4kifv7778ZO3YsM2bMIDQ0FIBatWoxaNgg9t3ZR8MfGnLz3k0A3nz9Tb5o+kXcBrI7C0wH9kctu2M2qa+H/uKIiIiIJGe1wW6VHYXuFaLjXx2ZsGUC3d7sFvtZkJIx3VaLJFHXr1/nyy+/ZNq0ady/b87vVqVKFUaMGsFf/MV7q97j6u2rABT0KMj4puOpW6Ru7AeyuwXM4fF88A6Yc8G3BlLG9WxERERExOZZgB6QoVcGWl9szerA1QxdM5S5HeZaOzKbo0ReJIm5fv06EyZMYNq0ady7dw+AsmXLMmr0KG6kvkGXtV04c/0MANnTZWfkOyNpU74NDvax/HMQCiwHvgceRK2rCnTFHNhEREREROSRomCpauG1ja/R43gP+qbuS++3e1MsWzFrR2ZTlMiLJBHPSuBLlSrF8OHDITv0W92PPy7/AUCmVJkYUm8IXat0xdnROXYHjAQ2YVbhb0Styw90BwrH7VxEREREJAl7H1L/lppat2qxImAFg1YNYn3P9daOyqYokRexcf+VwI8YMYIUeVMwZPUQdq3dBYC7qzv9avWj51s9SekSy/buBrAPmAmci1qXGegMvIXZZEpERERE5L9kAZpDrrm56PFnD9pmaovvX75Ufr2ytSOzGUrkRWzU8xL4lHlTMuKnEexYswMAVydXer3Vi09rfUq6FOlif9CTwAzAL2o5FdAGaAg4xX63IiIiIpLMtAa3jW6UvFWShucbMnDVQHz7+cZ+vKZkRom8iI25evUqX375JTNmzODBA7NT+qMEPtVrqRjx0wi2r9kOgJODE10qd2Fw3cF4pIlDh3V/4Dvg16hlR6AJ0AozmRcRERERiQlXoDPkHJOTdmfa8d7x91j/x3rqF6tv7chsghJ5ERtx4cIFxo0bx+zZs3n48CEApUuXZtiwYbjnc2fE2hFsW7MNMBP4zm90ZmCdgXGbzuMWsAhYC4RjNpuvgTk/fKa4nI2IiIiIJHu1wPlHZwrcKkCrM60YtGoQdYvUxc7OztqRJXpK5EUSuVOnTjF27FgWLlxIeHg4AG+88QZDhw7FNacrI34awa9rzVK5o70jnSubCXy2dNlif9C7wFLM0ehDotaVAd4H8sR+tyIiIiIi0eyA9yH76ey0ON+C1adWs3jfYlqXb23tyBI9JfIiidSxY8cYM2YMS5YsITIyEoC3336bwYMH8zDjQ8ZsGMOOH80+8I72jnR6oxMD6wwke/rssT9oKLAK+AG4E7UuP9AFKBn73YqIiIiIPFNZcCztSJ7beej0VyeGrhlKs9LNcHLQAEzPo0ReJJHZs2cPY8eOZe3atdHr6tevz8BBA/nb+W8+3fAp+y/sB8wEvkOlDgyqO4gc6XPE/qDhwHpgIRAYtS4HZhP6N9BI9CIiIiKSMCxAN/A64EW9c/X48cyPzPKdRfdq3a0dWaKmRF4kETAMg82bNzN27Fh27DCr7BaLhcaNG9NvQD9Ohp2k88bOnPA/AZij0L9f5X0+qfFJ3PrAR2IOYDcHc0A7MKeS64DZF17dk0REREQkob0O9jXsybkiJ91OdGP0T6NpX7E9KZxTWDuyREuJvIgVRUREsGLFCv73v/9x6NAhABwdHfH29qZXn17sur6LFstbcD7wPGDOA9+jWg96vd2LjKkyxv7ABrADmAdciFqXFvAG6mOOSi8iIiIi8qp0Bo/tHlQ6VYklZ5cw+ZfJDKo3yNpRJVpK5EWsIDQ0lAULFjB+/HhOnz4NgJubG++//z4dunVgzV9rqDmnJn8H/w1AxlQZ6VOjDx+8+QHubu6xP7AB7ATmAuei1qUEWmJOJ+cS+12LiIiIiMRaFrBrYkeu73LR7UQ3+v7cl25Vu5EuRTprR5YoKZEXeYVu3brFjBkzmDJlCgEBAQCkS5eOjz76iHrv1WPe/nmUm1yOBw/N+eGzpcvGpzU/pdMbnXBzdov9gQ1gF2YF/nTUOjegOdAUUKslEREREbG2NpBpfSaKHitK2dNlGbdxHOOajrN2VImSxTAMw9pBJDbBwcG4u7sTFBRE6tSprR2OJAEXL15k0qRJzJo1i7t37wLg5eVFnz59KPJ2Eb7x/YbVfqt59M+xRPYS9K3Zl2almuHoEId27gawF7MC/1fUOjfM5L0pkCr2uxYRERERiXdLIfDLQLYGbqVLjS4c/99xsqbNau2oXomY5KFK5J9BibzEl8OHD/PFF1+wZMkSIiIiAChcuDCffPoJrvlcmbxtMrvP7I7evm6RunxS4xOq5a+GxRKHoeINYDfmKPR/Rq1zwWw+3xzQf9YiIiIikhg9BMPb4ND+Q3yZ/UtSdUzFTO+Z1o7qlYhJHqqm9SLxzDAMtm7dyhdffMHmzZuj11evXp2uPbtyzukcw7cP56LvRQCcHJzwLu9Nnxp9KOhZMG4HjwR8MBP4s1HrnIFGQAsgTdx2LyIiIiKSoJzA0tlC7gu5aX2mNd6/etO3Zl9ey/yatSNLVJTIi8ST0NBQFi9ezMSJEzly5AgAdnZ2NGvWjAbtG7A1YCvtfm5HaHgoAOlTpqdblW70qN6DLO5Z4nbwCGAr8D1wMWqdK2YC3wwl8CIiIiJiO96GNMvSkC0wG61OtmLomqEs6brE2lElKkrkReLoxo0bzJgxg2nTpvH33+Yo825ubrTr0I78tfOz9OhS2qxoE719yewl+aj6R7Qs2xIXxzgOEx8ObMJM4B/NA58Ss/97Y9QHXkRERERsjwXoBrmP5ebdi+/Sbns7/qj7B0W9ilo7skRDibxILJ08eZJJkyYxf/58HjwwR5n39PSk7QdtiXwtkoW/L8R/jZldO9o70qxUM3pU70H53OXj1v8d4AGwAVgGXIta547Z/70h5oB2IiIiIiK2qhSkfCMlnms86XKyC8PXDGdV91XWjirRUCIvEgOGYfDrr78yadIk1q1bF72+RMkSVPGuwp/Gn4w7MQ7jgjmGpIe7B93e7EaXyl3wSOMR9wBuA6uiHnei1qXH7P/eAM0DLyIiIiJJRzfIuSsnVc9WZfGOxRyof4BSOUpZO6pEQaPWP4NGrZd/e/DgAd9//z2TJ0/m6NGjAFgsFqo3rE7mKpn59dKvBAQHRG9fLV81ulbpSuOSjXFycIp7AP7AUmAj8DBqXVbMBL4WEA+HEBERERFJdMbA8QXH+cn5J3w7+bKu57oXf8ZGadR6kXhy+fJlvvnmG7799lsCAwMBcEvlRqVWlbib9S5bL26FY+a2mVNnpn3F9nSu3Jm8mfLGTwCngMXAdswp5QDyAe8BlQG7+DmMiIiIiEii1B5y/pyTcqfL8f3279lTbw/l85S3dlRWp0Re5F8Mw2DPnj1MnjyZ5cuXR8//nqVYFnLWyMnxkONsCdkCF82qfK1CtehSuQsNijbA0cExHgIA9gI/Agf/sb4MZgJfHHMAEBERERGRpM4T3Bq5kfnbzNF95Tf12WTtqKxOibxIlNDQUJYtW8bUqVP5/fffzZWpIMfbOQjJFkLA/QACbpvN573SetGhUgc6VupIzgw54yeAEMwR6JcDl6PW2QHVMBP4PPFzGBERERERm+INOdbmoMhfRVi0YxE7G+zkjdfesHZUVqVEXpK9S5cuMWPGDGbNmsX169fBCRwKO5CuXDquWa5xgQtwH1I6p6RpqaZ4l/emar6q2NnFU7v2a8BqYB2PB7BzA+pjTiGXOX4OIyIiIiJikzKAW0s3PCZ70PlkZ4atHsavn/5q7aisSom8JEuGYbBjxw6mTZvG6tWribCPgBzgUsGFsExhhBPONa5hZ7GjRsEatK3QlneLv0sK5xTxF8SfmM3ntwORUes8gSZAbTSFnIiIiIjII+9B9uXZee34a0Ruj2Rbg21Uy1/N2lFZjRJ5SVbu3r3L999/z7Rp0zj611HIAbwFFi8Lhp1BCCEAFPMqhncFb1qVbRU/08Y9EgpsA9ZgJvKPFAeaAeXRAHYiIiIiIv+WGly9XfH8nyed/urEiFUjqDqgKhZL8hw8Som8JAsnTpxg+vTpzPthHnfS3oHcmIPH2ZvvGxhwszCcbU7mB80YNiY/jWvGYwBXgbXABh43n3cA3gKaAvE0yL2IiIiISJLVFLItzYa/nz8pdqRgyztbqFkoPm/abYcSeUmywsLCWL16NRNmTWCv/17IDrzLkxXvW4XgbHM41wxuFwDgmgWaNoXly6Fx4zgEEIk5+vxqYN8/1mcG3gHqAmnisH8RERERkeTEDVzbu+I5wpN2f7Vj1IpR1ChYI1lW5ZXIS5Jz4eIFRnwzgh/3/ci9dPfM5vM5Hr9fyLMQTUo2Y2b/Zvx9suBTnzcMsFigd294912wt//Hm5HAH0AgkB4oytNN4QOBn4GfgL//sb4s0BAo94zPiIiIiIjIi70L2X7IxtV9V8nsk5kNRzZQr2g9a0f1yimRlyTB/7Y/k3+czGLfxVw0LoIL0dO12WFHhVwVaF6uOQ2KNiBXxlxs3w6jTv73/gwDLl0CX1+oWjVqpS8wAbNveyjgDOQHPgEqYlbf1wN7eDx4XSrMyvs7mAPZiYiIiIhI7DmBSycXvE550eZ0G8b8OIa6Reomu6q8EnmxSQ8ePsD3lC+r969m1b5VBDw053fH2XxyiHCgXNZyfFD3A+oXq4+7m/sTn/f3f7njRG/nC3wE3AYyYf5QEAIcAFph9rn/Z5W9MFAPcw5455ienYiIiIiI/KfakHVRVq7svEJu39ys8VtDwxINrR3VK6VEXmxCWHgYhy4dYvvJ7Ww+thmfv3wIiwx7Yhu7W3YUz1icHu/2oM3bbXB0cPzP/Xm85ED0Hh6Y1fUJmEl8TsCIeh0I3MWszocAlTCnjauL2R9fRERERETinwO4dHXB65gXLc+25LMfP+OdYu9gZ5d8+q8qkZdE6V7oPfac3YPvKV92nt7J7jO7uf/w/pMb3QWuQF7XvPRo0oMubbrg5vZyk69XrgxeXnDlitmM/t8sFvP9ypUx+8SfAFIAF4EgHjedt2AOWOcIDAFKx/xcRUREREQkhqpB1pJZubz1MkV8i7Di4AqalW5m7aheGSXyYnWGYXD19lV+P/87O0/vxPeULwcvHiQ8IvzJDUOBAOAKuN1yw/sdb7r170bx4sVjfEx7e5g82Ryd3mJ5Mpl/1L1m0iSwvwDMBy5jJuuPut44AemiHvZR7wfFOAwREREREYkNCzh3cybbwWw0Pt+Yz5d9TpOSTZJNVV6JvLxy14Kvsf/Cfvaf38/+C/v5/fzvBAQFPLWdu4M7EVciuHv6rpnA34ISJUrwfs/3adWqFalSpYpTHI0bm1PM9eoFly8/Xl/EA75tCeXWA1MxK/8GZhKfHkiLWZ1/lNTfw0zs08cpHBERERERiYny4FHRg0vrL1HCtwRr/NbQqGQja0f1SlgM41kNi5O34OBg3N3dCQoKInXq1NYOx2ZFREZw5toZjl49yrGrx/C75Mf+8/u5ePPiU9vaWewo5FkILycvrh+9zqGNh4i4HQFAqlSpaNWqFV26dKFUqVLxH2cE7FkHkdsh1wXIevNxVR4HoDywHbiE2Uf+nwNiGsAFoDiwAk0rJyIiIiLyKh2Cs23PcubmGcZ6j2Xr2K02O4J9TPJQVeQlzsIjwrl48yLHrx6PTtqPXjnKCf8ThIaHPrW9xWIhX+Z8lM5ZmjI5y5DNNRsHNh/g+/nfs/H8xujtypUrR5cuXWjRogUpU6aM/8BvAD5gvw0qHf1ngJijztcEqmJOIfdo1PoLQEYej1p/HXAH+qAkXkRERETkVSsOHpU9uLz2MkV3FGX9H+upX6y+taNKcErk5aXcC73H2etnOXP9zOPHtTOcvXGW84Hnn+7PHsXVyZVCHoUo5FmIIl5FKJ2jNCWyl8DF3oW1a9cy+8vZbNq0iUcNQ9KkSYO3tzddunShSJEi8X8i1zCT8u3A0X+9VwhzurgqmMn6P1XGbGb/aB75G5jN6YtjJvGV4z9UERERERF5AQu4dnUlq09W6l2sx5dLvqRe0Xo2W5V/WUrkk7kHDx9w895N/IP8uXr7qvkIusqVW1e4GnQ1et2Nuzeeux9nB2fyZclHYc/CFPIsROGshSmctTA50+d8YsCJY8eOMWLwCBYuXMiNG4/3WbVqVTp16kSTJk1wdXWNvxM0gJPAbuA34My/3i+MWXV/VvL+b5Uxp5j7A3PqufRAUVSJFxERERGxpuLg8aYHl1dfpsD2Amw+tplahWtZO6oEpUTehl25dYULgRd4EPaABw8fPPEcEhYSvXwn5A637t/i5r2bTz2HhIW89PHSuKUhT8Y8Tz4ymc9Z02T9zxEig4ODWbZsGbNnz2bPnj3R6z08POjQoQMdOnQgb968cf7/I1oocBDYhZnAB/7jvUfN5t/k5ZL3f7PDrMKLiIiIiEii4dbVjazbzar8pCWTqDm6ZpKuyiuRt2EzfWYyet3oOO/H3s6eLKmz4JnG8/HD3XzOmiar+Zw2K+lSpHvpfRqGgY+PD3PmzGH58uXcv2/OAW9vb0+DBg3o1KkTtWvXxsEhHv4TNIArwH7gd+AAZjL/iCtQFqgIlMPs0y4iIiIiIklHMchSNQtXVl8h3y/5+LX1r7xV4C1rR5VglMjbsMypM5MnYx5cHF1wdXTF1cn1qWcXRxdSOqckXYp0pEuRjrRuaZ96ncolVbz9WnXp0iXmz5/P3LlzOXv2bPT6/Pnz06FDB9q2bUuWLFnifqA7mAn7Aczk/e9/vZ8JM3GvBBTDnANeRERERESSrJTvp8Rzuyd1LtVh2uJpvDUq6Sbymn7uGTT9XMyEhISwZs0a5syZw5YtW6IHrkuVKhUtW7akQ4cOlC9fPm4/FoQAx4FDmJX3k5iV+EccgCJAGczqe26enCZORERERESSvDvd73Bg9QF+8vqJdxe+S5XXq1g7pJem6eckwRmGwb59+5g3bx5Llizh9u3b0e9VrVqVDh060KRJE1KkSBG7A9wBjkQ9DgN/ARH/2iYnZuJeCrPq7hK7Q4mIiIiISNKQ6oNUeGzzoM7lOkz7YRpVRthOIh8TSuQlRq5cucLChQuZP38+f/75Z/T6bNmy0a5dO9q3b0+ePHlitlMD8Mec1u0I5qjw53iy4g7mwHRFgdJRjwyxPQsREREREUmSCkOW6lnwX+VP9o3Z2dVmFxXzVrR2VPFOiby80IMHD1izZg3z5s1jy5YtREZGAuDq6kqTJk1o37491apV+89R659yAzNp/xOzifxJzAr8v2XDTNwfPTKj5vIiIiIiIvJc7h+4k2VrFmpfrs20H6ZRcZgSeUkmDMPgt99+Y8GCBSxbtoygoKDo9ypXrkz79u1p2rTp8/tuhGOOJn8u6nEaM2kPfMa2DkBeoBBm0l4ESBtPJyMiIiIiIslHIbMqH7AqAK91Xvzu/TtlcpWxdlTxSom8DYsIA9/54H8OPHJB5XZgH8fR2c+ePcvChQtZsGDBE6POZ8+enXbt2tG2bdun53yPwBw1/jyPk/ZzwEXMZP7fLEAuIB+QP+qRG/3XKCIiIiIi8SJN9zRk3pqZWldq8fWMr5lXcx6kxywavmRD4sTMqqfg4+NDgwYN8PT0xGKxsHr16hd+ZseOHZQqVQoXFxdy587NjBkzntpmxYoVFCxYEGdnZwoWLMiqVasSIHrrWvkZ5EwN1bpAqzHmc87U5vqYCgoK4rvvvqNKlSrkyZOHESNGcPbsWVKmTEn79u3Ztm0b546fY1T7UeT1zwtLga+AT4FWQE2gNTAY+A7YCpzFTOJdMBP1OkB3YAqwAZgN9APeAV5HSbyIiIiIiMSfgpCpcCbsDDsyb8vMoY8PQUugMeBr7eDizqrp07179yhWrFj0COcvcu7cOerWrUuXLl1YtGgRv/32Gx9++CEZM2aM/vzu3btp0aIFo0ePplGjRqxatYrmzZuzc+dOypUrl9Cn9Eqs/AyaDn16LLgrIeb65UDjIc/fR1hYGFs2bmH5vOX4bPDBLdSN9KSnKU15o8AbVClchcJZCuMY7AgTeXYf9n9yxOzTnutfjyyoX7uIiIiIiLxavpD+aHoyh2am5pWafFPqG2YFzDJnxPoImApUtnKMcZBo5pG3WCysWrWKhg0b/uc2/fv3Z+3atZw4cSJ6Xbdu3Th8+DC7d+8GoEWLFgQHB7Nx48bobWrXrk3atGlZvHjxS8WSmOeRjwgzK++XQ8zu5EUwf4159HAEMjjCiLFgZ2BWxUOBu2DcMQi8FMiVk1e4efEmhD3er5ubG1myZCFz5sy4OP/HPG6pgKyAJ+Dxj9eemCPIK2EXERERERFri8SsvPvBDcsNjoQeYZPXJlqnbU2R0CJwASgOrCBRNbNPsvPI7969m5o1az6xrlatWsyePZuwsDAcHR3ZvXs3H3/88VPbTJo06T/3GxoaSmhoaPRycHBwvMYdn3znm0k8mNOnt3/WRmEQNAvSepiLISEh/P333wT8HcD9+/ejN3N0dCRzpsxkzJkR95zuWNJbIB1m35EMPH79aDllQp2ViIiIiIhIPPkDc4asTJCBDHid9+Kjcx+RwT6D2fU3I3AiarviVowzDmwqkQ8ICCBz5sxPrMucOTPh4eHcuHEDDw+P/9wmICDgP/c7duxYRo4cmSAxxzf/c49fnwI2YRbd//2wy3EfI9s+fHb54HfCj7tR/wt3CqfC2xVo8F4D3qj7Bo5pHBPVr1AiIiIiIiJxEojZKtkFsIfXUr4GzpjNl4laf4Nnz6ZlI2wqkQezCf4/PeoZ8M/1z9rm3+v+aeDAgfTp0yd6OTg4mGzZssVHuPHOI9fj17ujHo89BDYCi1jw60+EhT9uZVC1alU6e3emSZMmuLu7v5JYRUREREREXrn0mIl7CJACyPGv90MAp6jtbJRNJfJZsmR5qrJ+7do1HBwcSJ8+/XO3+XeV/p+cnZ1xdnaO/4ATQOV24PWRObCd+ROGAewCFgHLgJsAhIVDwYIF8fb25r333iNHjn//1ysiIiIiIpIEFcWcOesw4MaTY3kZwHXMJvVFX3lk8camGlVXqFCBLVu2PLFu8+bNlC5dGkdHx+duU7FixVcWZ0Kyd4TJgx8tzQTyAG8AMzCTeA/eqfQJhw4d4ujRowwYMEBJvIiIiIiIJB92wCeAO+bAdveAiKjnC1Hr+2Bj2fCTrBr63bt38fPzw8/PDzCnl/Pz8+PixYuA2eS9bdu20dt369aNCxcu0KdPH06cOMGcOXOYPXs2ffv2jd6mV69ebN68mXHjxvHnn38ybtw4fvnlF3r37v0qTy1BNR4Cy0eDu0MwcA5zFLp2ZHTawrKRl1iz80uKFy/+3O4EIiIiIiIiSVZlzCnmigHBwOWo5+LY/NRzYOXp57Zv3061atWeWt+uXTvmzZtH+/btOX/+PNu3b49+b8eOHXz88cccO3YMT09P+vfvT7du3Z74/PLlyxkyZAhnz54lT548fP755zRu3Pil40rM08/90+WL/nz72Q5yp3mHnK+7UbmdWbEXERERERERzKno/sAc2C49ZnP6RFqJj0kemmjmkU9MbCWRFxERERERkaQhJnloIv0tQkRERERERESeRYm8iIiIiIiIiA1RIi8iIiIiIiJiQ5TIi4iIiIiIiNgQJfIiIiIiIiIiNkSJvIiIiIiIiIgNUSIvIiIiIiIiYkOUyIuIiIiIiIjYECXyIiIiIiIiIjZEibyIiIiIiIiIDVEiLyIiIiIiImJDlMiLiIiIiIiI2BAl8iIiIiIiIiI2RIm8iIiIiIiIiA1xsHYAiZFhGAAEBwdbORIRERERERFJDh7ln4/y0edRIv8Md+7cASBbtmxWjkRERERERESSkzt37uDu7v7cbSzGy6T7yUxkZCRXr14lVapUWCwWa4fzXMHBwWTLlo1Lly6ROnVqa4cjMaTrZ/t0DW2frqFt0/WzfbqGtk/X0PbpGiYOhmFw584dPD09sbN7fi94VeSfwc7ODi8vL2uHESOpU6fWPzobputn+3QNbZ+uoW3T9bN9uoa2T9fQ9ukaWt+LKvGPaLA7ERERERERERuiRF5ERERERETEhiiRt3HOzs4MHz4cZ2dna4cisaDrZ/t0DW2frqFt0/WzfbqGtk/X0PbpGtoeDXYnIiIiIiIiYkNUkRcRERERERGxIUrkRURERERERGyIEnkRERERERERG6JEXkRERERERMSGKJFP5L755hty5cqFi4sLpUqVwtfX97nb79ixg1KlSuHi4kLu3LmZMWPGK4pU/ktMruHKlSupUaMGGTNmJHXq1FSoUIFNmza9wmjlWWL67/CR3377DQcHB4oXL56wAcoLxfQahoaGMnjwYHLkyIGzszN58uRhzpw5ryha+beYXr/vv/+eYsWK4ebmhoeHBx06dCAwMPAVRSv/5uPjQ4MGDfD09MRisbB69eoXfkb3M4lHTK+f7mUSn9j8G3xE9zKJlxL5RGzp0qX07t2bwYMHc+jQISpXrkydOnW4ePHiM7c/d+4cdevWpXLlyhw6dIhBgwbRs2dPVqxY8Yojl0dieg19fHyoUaMGGzZs4MCBA1SrVo0GDRpw6NChVxy5PBLTa/hIUFAQbdu25a233npFkcp/ic01bN68OVu3bmX27NmcPHmSxYsXkz9//lcYtTwS0+u3c+dO2rZtS6dOnTh27Bg//vgjv//+O507d37Fkcsj9+7do1ixYkybNu2lttf9TOIS0+une5nEJ6bX8BHdyyRyhiRaZcuWNbp16/bEuvz58xsDBgx45vb9+vUz8ufP/8S6999/3yhfvnyCxSjPF9Nr+CwFCxY0Ro4cGd+hyUuK7TVs0aKFMWTIEGP48OFGsWLFEjBCeZGYXsONGzca7u7uRmBg4KsIT14gptfviy++MHLnzv3EuilTphheXl4JFqO8PMBYtWrVc7fR/Uzi9TLX71l0L5N4xOQa6l4mcVNFPpF6+PAhBw4coGbNmk+sr1mzJrt27XrmZ3bv3v3U9rVq1WL//v2EhYUlWKzybLG5hv8WGRnJnTt3SJcuXUKEKC8Q22s4d+5czpw5w/DhwxM6RHmB2FzDtWvXUrp0acaPH0/WrFl5/fXX6du3Lw8ePHgVIcs/xOb6VaxYkcuXL7NhwwYMw+Dvv/9m+fLl1KtX71WELPFA9zNJi+5lbJPuZRI/B2sHIM9248YNIiIiyJw58xPrM2fOTEBAwDM/ExAQ8Mztw8PDuXHjBh4eHgkWrzwtNtfw3yZMmMC9e/do3rx5QoQoLxCba3jq1CkGDBiAr68vDg76E2ttsbmGZ8+eZefOnbi4uLBq1Spu3LjBhx9+yM2bN9VP/hWLzfWrWLEi33//PS1atCAkJITw8HDeeecdpk6d+ipClnig+5mkRfcytkf3MrZBFflEzmKxPLFsGMZT6160/bPWy6sT02v4yOLFixkxYgRLly4lU6ZMCRWevISXvYYRERG0atWKkSNH8vrrr7+q8OQlxOTfYWRkJBaLhe+//56yZctSt25dJk6cyLx581SVt5KYXL/jx4/Ts2dPhg0bxoEDB/j55585d+4c3bp1exWhSjzR/UzSoHsZ26N7Gduhn1gSqQwZMmBvb/9UxeHatWtP/Ur9SJYsWZ65vYODA+nTp0+wWOXZYnMNH1m6dCmdOnXixx9/5O23307IMOU5YnoN79y5w/79+zl06BA9evQAzKTQMAwcHBzYvHkz1atXfyWxiyk2/w49PDzImjUr7u7u0esKFCiAYRhcvnyZ1157LUFjlsdic/3Gjh1LpUqV+PTTTwEoWrQoKVKkoHLlynz22Weq5toA3c8kDbqXsU26l7EdqsgnUk5OTpQqVYotW7Y8sX7Lli1UrFjxmZ+pUKHCU9tv3ryZ0qVL4+jomGCxyrPF5hqC+et1+/bt+eGHH9Sn08pieg1Tp07NkSNH8PPzi35069aNfPny4efnR7ly5V5V6BIlNv8OK1WqxNWrV7l79270ur/++gs7Ozu8vLwSNF55Umyu3/3797Gze/L2xt7eHnhc1ZXETfcztk/3MrZL9zI2xDpj7MnLWLJkieHo6GjMnj3bOH78uNG7d28jRYoUxvnz5w3DMIwBAwYY3t7e0dufPXvWcHNzMz7++GPj+PHjxuzZsw1HR0dj+fLl1jqFZC+m1/CHH34wHBwcjK+//trw9/ePfty+fdtap5DsxfQa/ptGerW+mF7DO3fuGF5eXkbTpk2NY8eOGTt27DBee+01o3PnztY6hWQtptdv7ty5hoODg/HNN98YZ86cMXbu3GmULl3aKFu2rLVOIdm7c+eOcejQIePQoUMGYEycONE4dOiQceHCBcMwdD+T2MX0+uleJvGJ6TX8N93LJE5K5BO5r7/+2siRI4fh5ORklCxZ0tixY0f0e+3atTPefPPNJ7bfvn27UaJECcPJycnImTOnMX369FccsfxbTK7hm2++aQBPPdq1a/fqA5doMf13+E/68kscYnoNT5w4Ybz99tuGq6ur4eXlZfTp08e4f//+K45aHonp9ZsyZYpRsGBBw9XV1fDw8DBat25tXL58+RVHLY9s27btud9tup9J3GJ6/XQvk/jE5t/gP+leJnGyGIbamYmIiIiIiIjYCvWRFxEREREREbEhSuRFREREREREbIgSeREREREREREbokReRERERERExIYokRcRERERERGxIUrkRURERERERGyIEnkRERERERERG6JEXkRERERERMSGKJEXERERERERsSFK5EVERCTeVK1ald69e1s7DBERkSRNibyIiIiIiIiIDbEYhmFYOwgRERGxfe3bt2f+/PlPrDt37hw5c+a0TkAiIiJJlBJ5ERERiRdBQUHUqVOHwoULM2rUKAAyZsyIvb29lSMTERFJWhysHYCIiIgkDe7u7jg5OeHm5kaWLFmsHY6IiEiSpT7yIiIiIiIiIjZEibyIiIiIiIiIDVEiLyIiIvHGycmJiIgIa4chIiKSpCmRFxERkXiTM2dO9u7dy/nz57lx4waRkZHWDklERCTJUSIvIiIi8aZv377Y29tTsGBBMmbMyMWLF60dkoiISJKj6edEREREREREbIgq8iIiIiIiIiI2RIm8iIiIiIiIiA1RIi8iIiIiIiJiQ5TIi4iIiIiIiNgQJfIiIiIiIiIiNkSJvIiIiIiIiIgNUSIvIiIiIiIiYkOUyIuIiIiIiIjYECXyIiIiIiIiIjZEibyIiIiIiIiIDVEiLyIiIiIiImJD/g8qJE5Uij8a5QAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plotting\n", "fig, ax = plt.subplots(figsize=(12, 5))\n", "ax.scatter(t.detach().numpy(), f_colloc, label=\"Collocation points\", color=\"magenta\", alpha=0.75)\n", "ax.scatter(x_train.detach().numpy(), y_train.detach().numpy(), label=\"Observation data\", color=\"blue\")\n", "ax.plot(x_eval.detach().numpy(), f_eval.detach().numpy(), label=\"NN approximation\", color=\"black\")\n", "ax.plot(x_eval.detach().numpy(), f_PINN_eval.detach().numpy(), label=\"PINN solution\", color=\"darkgreen\")\n", "ax.plot(x_eval.detach().numpy(), numeric_solution.y.T,\n", " label=\"Analytic solution\", color=\"magenta\", alpha=0.75)\n", "ax.set(title=\"Logistic equation solved with NNs\", xlabel=\"t\", ylabel=\"f(t)\")\n", "ax.legend();" ] }, { "cell_type": "markdown", "id": "e7ce2baa", "metadata": { "run_control": { "marked": false }, "slideshow": { "slide_type": "slide" } }, "source": [ "### Example II: 1d wave\n", "\n", "- Now, we want our NN to learn a function $f(x,t)$ that satisfies the following $2^\\text{nd}$ order PDE:\n", "\n", "$$\\frac{\\partial^2 f}{\\partial x^2} = \\frac{1}{C} \\frac{\\partial^2 f}{\\partial t^2}$$\n", "\n", "where $C$ is a positive constant." ] }, { "cell_type": "markdown", "id": "980f2ca0", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Differently from before, $f$ depends on two variables: \n", " - space ($x$),\n", " - time ($t$).\n", "- We modify our neural network to accept to input variables." ] }, { "cell_type": "code", "execution_count": 15, "id": "2ba361a9", "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "class simple_NN2(nn.Module):\n", " def __init__(self):\n", " super(simple_NN2, self).__init__()\n", " self.linear_tanh_stack = nn.Sequential(\n", " nn.Linear(2, 16), # <--- 2 input variables\n", " nn.Tanh(),\n", " nn.Linear(16, 32),\n", " nn.Tanh(),\n", " nn.Linear(32, 16),\n", " nn.Tanh(),\n", " nn.Linear(16, 1),\n", " )\n", "\n", " def forward(self, x, t):\n", " x_stack = torch.cat([x, t], dim=1) # <--- concatenate x and t\n", " out = self.linear_tanh_stack(x_stack)\n", " return out" ] }, { "cell_type": "markdown", "id": "473d690a", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "- The function we defined before, `df()`, computes a derivatives of any order w.r.t. only one input variable.\n", "- We need to modify it slightly to differentiate w.r.t. both $x$ and $t$." ] }, { "cell_type": "code", "execution_count": 16, "id": "ba9d5e25", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "def df(output: torch.Tensor, input_var: torch.Tensor, order: int = 1) -> torch.Tensor:\n", " \"\"\"Compute neural network derivative with respect to input features \n", " using PyTorch autograd engine\"\"\"\n", " \n", " df_value = output # <-- we directly take the output of the NN\n", " for _ in range(order):\n", " df_value = torch.autograd.grad(\n", " df_value,\n", " input_var,\n", " grad_outputs=torch.ones_like(input_var),\n", " create_graph=True,\n", " retain_graph=True,\n", " )[0]\n", " return df_value" ] }, { "cell_type": "code", "execution_count": 17, "id": "e8b8fa5b", "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "def dfdt(model: simple_NN2, x: torch.Tensor, t: torch.Tensor, order: int = 1):\n", " \"\"\"Derivative with respect to the time variable of arbitrary order\"\"\"\n", " \n", " f_value = model(x, t)\n", " return df(f_value, t, order=order) # <--- derivative wrt t" ] }, { "cell_type": "code", "execution_count": 18, "id": "420ac689", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "def dfdx(model: simple_NN2, x: torch.Tensor, t: torch.Tensor, order: int = 1):\n", " \"\"\"Derivative with respect to the spatial variable of arbitrary order\"\"\"\n", " \n", " f_value = model(x, t)\n", " return df(f_value, x, order=order) # <--- derivative wrt x" ] }, { "cell_type": "markdown", "id": "6013750a", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "#### Loss definition\n", "\n", "- For this example, we do not consider measurement data (but we could have done it).\n", "- We train the NN with a loss that only accounts for physical equations.\n", "- The first term of the loss encourages respecting the 1-dimensional wave equation:\n", "\n", "$$\\mathcal{L}_\\text{PDE} = \\left( \\frac{\\partial^2 f}{\\partial x^2} - \\frac{1}{C} \\frac{\\partial^2 f}{\\partial t^2} \\right)^2 $$" ] }, { "cell_type": "markdown", "id": "80aa22c1", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "- As before, there are infinite solutions satisfying this equation.\n", "- We need to restrict the possible solutions by:\n", " 1. imposing periodic boundary conditions at the domain extrema.\n", " 2. imposing an initial condition on $f(x, t_0)$.\n", " 3. imposing an initial condition on $\\frac{\\partial f(x, t)}{\\partial t} \\bigg\\rvert_{t=0}$." ] }, { "cell_type": "markdown", "id": "a3d7795d", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "- We define the domain of $x$ as $[x_0, x_1]$.\n", "- In this example, $x_0 = 0$ and $x_1 = 1$, but they could be different values.\n", "\n", "\n", "\n", "- The following loss penalizes the violation of the boundary conditions:\n", "\n", "$$\\mathcal{L}_\\text{BC} = f(x_0, t)^2 + f(x_1, t)^2$$" ] }, { "cell_type": "markdown", "id": "fde287b2", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "- Next, we must define the initial condition on $f(x, t_0)$.\n", "\n", "\n", "\n", "- The following loss penalizes departure from the desired initial condition:\n", "\n", "$$\\mathcal{L}_\\text{initF} = \\left( f(x, t_0) - \\frac{1}{2} \\text{sin}(2\\pi x) \\right)^2 $$" ] }, { "cell_type": "markdown", "id": "3b477992", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "- Finally, we must specify the initial condition on $\\frac{\\partial f(x, t)}{\\partial t} \\bigg\\rvert_{t=0}$.\n", "\n", "\n", "\n", "The following loss penalizes departure from the desired initial condition of the 1st order derivative:\n", "\n", "$$\\mathcal{L}_\\text{initDF} = \\left( \\frac{\\partial f}{\\partial t} \\bigg\\rvert_{t=0} \\right)^2 $$" ] }, { "cell_type": "markdown", "id": "a631559d", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "The total loss is given by:\n", "\n", "$$\\mathcal{L}_\\text{PDE} + \\mathcal{L}_\\text{BC} + \\mathcal{L}_\\text{initF} + \\mathcal{L}_\\text{initDF}$$" ] }, { "cell_type": "code", "execution_count": 19, "id": "f2934df9", "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "def initial_condition(x) -> torch.Tensor:\n", " res = torch.sin( 2*np.pi * x).reshape(-1, 1) * 0.5\n", " return res" ] }, { "cell_type": "code", "execution_count": 20, "id": "b1e50e13", "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "def compute_loss(\n", " model: simple_NN2,\n", " x: torch.Tensor = None, \n", " t: torch.Tensor = None,\n", " x_idx: torch.Tensor = None, \n", " t_idx: torch.Tensor = None, \n", " C: float = 1.0,\n", " device: str = None) -> torch.float:\n", "\n", " # PDE\n", " pde_loss = dfdx(model, x, t, order=2) - (1/C**2) * dfdt(model, x, t, order=2)\n", "\n", " # boundary conditions\n", " boundary_x0 = torch.ones_like(t_idx, requires_grad=True).to(device) * x[0] \n", " boundary_loss_x0 = model(boundary_x0, t_idx) # f(x0, t)\n", " boundary_x1 = torch.ones_like(t_idx, requires_grad=True).to(device) * x[-1] \n", " boundary_loss_x1 = model(boundary_x1, t_idx) # f(x1, t)\n", " \n", " # initial conditions\n", " f_initial = initial_condition(x_idx) # 0.5*sin(2*pi*x)\n", " t_initial = torch.zeros_like(x_idx) # t0\n", " t_initial.requires_grad = True\n", " initial_loss_f = model(x_idx, t_initial) - f_initial # L_initF\n", " initial_loss_df = dfdt(model, x_idx, t_initial, order=1) # L_initDF\n", " \n", " # obtain the final loss by averaging each term and summing them up\n", " final_loss = pde_loss.pow(2).mean() + \\\n", " boundary_loss_x0.pow(2).mean() + \\\n", " boundary_loss_x1.pow(2).mean() + \\\n", " initial_loss_f.pow(2).mean() + \\\n", " initial_loss_df.pow(2).mean()\n", "\n", " return final_loss" ] }, { "cell_type": "code", "execution_count": 21, "id": "5a39ad2a", "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n", "\n", "# generate the time-space meshgrid\n", "x_domain = [0.0, 1.0]; n_points_x = 100\n", "t_domain = [0.0, 1.0]; n_points_t = 150\n", "x_idx = torch.linspace(x_domain[0], x_domain[1], steps=n_points_x, requires_grad=True)\n", "t_idx = torch.linspace(t_domain[0], t_domain[1], steps=n_points_t, requires_grad=True)\n", "grids = torch.meshgrid(x_idx, t_idx, indexing=\"ij\")\n", "x_idx, t_idx = x_idx.reshape(-1, 1).to(device), t_idx.reshape(-1, 1).to(device)\n", "x, t = grids[0].flatten().reshape(-1, 1).to(device), grids[1].flatten().reshape(-1, 1).to(device)\n", "\n", "# initialize the neural network model\n", "model = simple_NN2().to(device)" ] }, { "cell_type": "code", "execution_count": 22, "id": "36cc375c", "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "epoch: 0, loss: 0.327840\n", "epoch: 300, loss: 0.049646\n", "epoch: 600, loss: 0.030883\n", "epoch: 900, loss: 0.026399\n", "epoch: 1200, loss: 0.026850\n", "epoch: 1500, loss: 0.019465\n", "epoch: 1800, loss: 0.014911\n", "epoch: 2100, loss: 0.014227\n", "epoch: 2400, loss: 0.013674\n", "epoch: 2700, loss: 0.013400\n" ] } ], "source": [ "# Train\n", "optimizer = torch.optim.Adam(model.parameters(), lr=1e-2)\n", "for ep in range(3000):\n", "\n", " loss = compute_loss(model, x=x, t=t, x_idx=x_idx, t_idx=t_idx, device=device)\n", "\n", " # Backpropagation\n", " optimizer.zero_grad()\n", " loss.backward()\n", " optimizer.step()\n", "\n", " if ep % 300 == 0:\n", " print(f\"epoch: {ep}, loss: {loss.item():>7f}\")" ] }, { "cell_type": "code", "execution_count": 23, "id": "65b3ec36", "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Prediction\n", "y = model(x, t)\n", "y_np = y.reshape([100,-1]).to(\"cpu\").detach().numpy()\n", "\n", "# Plot\n", "X, Y = np.meshgrid(np.linspace(0, 1, 150), np.linspace(0, 1, 100))\n", "fig, ax = plt.subplots(subplot_kw={\"projection\": \"3d\"})\n", "ax.plot_surface(X, Y, y_np, linewidth=0, antialiased=False, cmap=cm.coolwarm,)\n", "ax.set_xlabel(\"t\"), ax.set_ylabel(\"x\"), ax.set_zlabel(\"f\")\n", "plt.show();" ] }, { "cell_type": "markdown", "id": "bd07f2dd", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Conclusions\n", "\n", "**Example 1: Growth rate with Logistic Equation**\n", "\n", "- We saw the difference between:\n", " - Fitting a NN only on observations.\n", " - Adding a regularization term from a 1st order PDE." ] }, { "cell_type": "markdown", "id": "132a6a45", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "**Example 2: 1d wave**\n", "\n", "- We saw how to include:\n", " - A 2nd order PDE.\n", " - Multiple constraints on the initial conditions." ] }, { "cell_type": "markdown", "id": "c0e47416", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "**Next steps**\n", "\n", "- With more complex equations, convergence is not achieved so easily.\n", "- For time-dependent problems, many useful tricks have been devised over the past years such as:\n", " - Decomposing the solution domain in different parts solved using different neural networks.\n", " - Smart weighting of different loss contributions to avoid converging to trivial solutions." ] }, { "cell_type": "markdown", "id": "49a91deb", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 📚 References\n", "\n", "[[1](https://www.sciencedirect.com/science/article/pii/S0021999118307125)] Raissi, Maziar, Paris Perdikaris, and George E. Karniadakis. \"Physics-informed neural networks: A deep learning framework for solving forward and inverse problems involving nonlinear partial differential equations.\" Journal of Computational physics 378 (2019): 686-707.\n", "\n", "[[2](https://maziarraissi.github.io/PINNs/)] Raissi, Maziar, Paris Perdikaris, and George E. Karniadakis. \"Physics Informed Deep Learning\".\n", "\n", "[[3](https://www.sciencedirect.com/science/article/pii/S095219762030292X)] Nascimento, R. G., Fricke, K., & Viana, F. A. (2020). A tutorial on solving ordinary differential equations using Python and hybrid physics-informed neural network. Engineering Applications of Artificial Intelligence, 96, 103996.\n", "\n", "[[4](https://towardsdatascience.com/solving-differential-equations-with-neural-networks-afdcf7b8bcc4)] Dagrada, Dario. \"Introduction to Physics-informed Neural Networks\" ([code](https://github.com/madagra/basic-pinn)).\n", "\n", "[[5](https://towardsdatascience.com/physics-and-artificial-intelligence-introduction-to-physics-informed-neural-networks-24548438f2d5)] Paialunga Piero. \"Physics and Artificial Intelligence: Introduction to Physics Informed Neural Networks\".\n", "\n", "[[6](https://github.com/omniscientoctopus/Physics-Informed-Neural-Networks)] \"Physics-Informed-Neural-Networks (PINNs)\" - implementation of PINNs in TensorFlow 2 and PyTorch for the Burgers' and Helmholtz PDE." ] } ], "metadata": { "celltoolbar": "Slideshow", "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.12.7" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": false, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 5 }