{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\"FMP\"\n", "\"AudioLabs\"\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\"C2\"\n", "

Complex Numbers

\n", "
\n", "\n", "
\n", "\n", "

\n", "In this notebook, we review some properties of complex numbers. In particular, we need complex numbers in view of a complex-valued formulation of the Fourier transform, which significantly simplifies the proof and the understanding of certain algebraic properties of this transform, see Section 2.3.2 of [Müller, FMP, Springer 2015]. \n", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Basic Definitions\n", "\n", "We can write a complex number $c = a + ib$ with real part $\\mathrm{Re}(c) = a$, imaginary part $\\mathrm{Im}(c) = b$, and imaginary unit $i = \\sqrt{-1}$. In Python, the symbol `j` is used to denote the imaginary unit. Furthermore, a coefficient before `j` is needed. To specify a complex number, one can also use the constructor `complex`." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T09:00:16.170000Z", "iopub.status.busy": "2024-02-15T09:00:16.169802Z", "iopub.status.idle": "2024-02-15T09:00:16.173975Z", "shell.execute_reply": "2024-02-15T09:00:16.173331Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1.5+0.8j)\n", "(1.5+0.8j)\n" ] } ], "source": [ "a = 1.5\n", "b = 0.8\n", "c = a + b*1j\n", "print(c)\n", "c2 = complex(a,b)\n", "print(c2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Python offers the built-in `math` package for basic processing of complex numbers. As an alternative, we use here the external package `numpy`, which is used later for various purposes." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T09:00:16.204919Z", "iopub.status.busy": "2024-02-15T09:00:16.204712Z", "iopub.status.idle": "2024-02-15T09:00:17.034289Z", "shell.execute_reply": "2024-02-15T09:00:17.033631Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.5\n", "0.8\n" ] } ], "source": [ "import numpy as np\n", "\n", "print(np.real(c))\n", "print(np.imag(c))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A complex number $c = a+ib$ can be plotted as a point $(a,b)$ in the Cartesian coordinate system. This point is often visualized by an arrow starting at $(0,0)$ and ending at $(a,b)$." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T09:00:17.037130Z", "iopub.status.busy": "2024-02-15T09:00:17.036905Z", "iopub.status.idle": "2024-02-15T09:00:17.575102Z", "shell.execute_reply": "2024-02-15T09:00:17.574524Z" } }, "outputs": [ { "data": { "image/png": "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3bp1Q04lIhJbmuFKQjFr1iwuuOACoPDiuZUrV9K4ceOQU4mIBEPlK4H66KOPOOusswCoVKkSGzZsoFWrVuGGEhEJmMpXArFs2TK6detWvLx69WqOP/74EBOJiIRH5SsxtW7dOtq3b1+8vHDhQk499dQQE4mIhC+QGytI8snNzaVGjRrFxfv+++/j7ipeERFUvhJlX375JS1atKB58+bs3buXN998E3fnnHPOCTuaiEjcUPlKVHz99dd069aNhg0bsmnTJl544QUikQgXXXRR2NFEROKOyld+lL1793LeeedRu3Ztli1bxiOPPEIkEuGXv/ylbnogIvI9VL5yVA4cOMAVV1xBjRo1eO+99xg1ahQFBQXcfvvtKl0RkR+gq52lXPLz87n99tt58sknAbjlllt4/PHHSU3VriQiUlb6iSllEolEuO+++7j//vsBGDx4MC+99BJVq1YNOZmISOJR+coRuTuPP/44t912GwB9+/ZlxowZVK9ePdxgIiIJTOUr3+ull17immuuAeCEE07gww8/pHbt2iGnEhFJfCpf+Y7p06czcOBAAJo0acLSpUtp1KhRyKlERCoOla8Uy8jIoG/fvgBUrVqV7OxsWrRoEXIqEZGKRx81EpYsWcKSJUuKi/fTTz9l//79Kl4RkRhR+SaxTz/9FDPjlFNOAQpL2N3p0KFDyMlERCo2nXZOQhs3bqRt27bk5+cDMG/ePCKRCCeffHLIyUREkoOOfJPI9u3bOeaYY2jVqhX5+fn84x//wN05++yzw44mIpJUVL5J4L///S9dunShcePGbNu2jZdeegl358ILLww7mohIUlL5VmB79uyhT58+1K1bl1WrVvHEE08QiUS46qqrwo4mIpLUVL4V0DfffMOgQYNIT09n3rx53HvvvRQUFDBs2DDd9EBEJA6ofCuQ/Px8br75ZtLS0njjjTcYPnw4Bw8eZPTo0VSqpP/VIiLxQlc7VwCRSITf//73jBkzBoArr7yS559/nipVqoScTEREShPI4ZCZ9TOztWa23szuLmX9lWa2ouhrgZmdGESuROfuPPzww6SkpDBmzBj69evH3r17efnll1W8IiJxLOZHvmaWAowHzgNygUVmNt3dV5fY7DOgt7vvNLP+wCSgR6yzJSp354UXXuCGG24AoHv37sydO5datWqFnExERMoiiNPOpwHr3T0HwMwm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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from matplotlib import pyplot as plt\n", "%matplotlib inline\n", "\n", "def generate_figure(figsize=(2, 2), xlim=[0, 1], ylim=[0, 1]):\n", " \"\"\"Generate figure for plotting complex numbers\n", "\n", " Notebook: C2/C2_ComplexNumbers.ipynb\n", "\n", " Args:\n", " figsize: Figure size (Default value = (2, 2))\n", " xlim: Limits of x-axis (Default value = [0, 1])\n", " ylim: Limits of y-axis (Default value = [0, 1])\n", " \"\"\"\n", " plt.figure(figsize=figsize)\n", " plt.grid()\n", " plt.xlim(xlim)\n", " plt.ylim(ylim)\n", " plt.xlabel(r'$\\mathrm{Re}$')\n", " plt.ylabel(r'$\\mathrm{Im}$')\n", "\n", "def plot_vector(c, color='k', start=0, linestyle='-'):\n", " \"\"\"Plot arrow corresponding to difference of two complex numbers\n", "\n", " Notebook: C2/C2_ComplexNumbers.ipynb\n", "\n", " Args:\n", " c: Complex number\n", " color: Color of arrow (Default value = 'k')\n", " start: Complex number encoding the start position (Default value = 0)\n", " linestyle: Linestyle of arrow (Default value = '-')\n", "\n", " Returns:\n", " arrow (matplotlib.patches.FancyArrow): Arrow\n", " \"\"\"\n", " return plt.arrow(np.real(start), np.imag(start), np.real(c), np.imag(c),\n", " linestyle=linestyle, head_width=0.05, fc=color, ec=color, overhang=0.3,\n", " length_includes_head=True)\n", "\n", "c = 1.5 + 0.8j\n", "\n", "generate_figure(figsize=(7.5, 3), xlim=[0, 2.5], ylim=[0, 1])\n", "v = plot_vector(c, color='k')\n", "\n", "plt.text(1.5, 0.8, '$c$', size='16')\n", "plt.text(0.8, 0.55, '$|c|$', size='16')\n", "plt.text(0.25, 0.05, '$\\gamma$', size='16');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Polar Representation\n", "\n", "The **absolute value** (or **modulus**) of a complex number $a+ib$ is defined by\n", "\n", "$$|c| := \\sqrt{a^2 + b^2}.$$\n", "\n", "The **angle** (given in radians) is given by \n", "\n", "$$\\gamma := \\mathrm{atan2}(b, a).$$\n", "\n", "This yields a number in the interval $(-\\pi,\\pi]$, which can be mapped to $[0,2\\pi)$ by adding $2\\pi$ to negative values. The **angle** (given in degrees) is obtained by\n", "\n", "$$360 \\cdot \\frac{\\gamma}{2\\pi}$$" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T09:00:17.578020Z", "iopub.status.busy": "2024-02-15T09:00:17.577788Z", "iopub.status.idle": "2024-02-15T09:00:17.581868Z", "shell.execute_reply": "2024-02-15T09:00:17.581184Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Absolute value: 1.7\n", "Angle (in radians): 0.48995732625372834\n", "Angle (in degree): 28.07248693585296\n", "Angle (in degree): 28.07248693585296\n" ] } ], "source": [ "print('Absolute value:', np.abs(c))\n", "print('Angle (in radians):', np.angle(c))\n", "print('Angle (in degree):', np.rad2deg(np.angle(c)))\n", "print('Angle (in degree):', 180 * np.angle(c)/np.pi )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The complex number $c=a+ib$ is uniquely defined by the pair $(|c|, \\gamma)$, which is also called the **polar representation** of $c$. One obtains the Cartesian representation $(a,b)$ from the polar representation $(|c|,\\gamma)$ as follows:\n", "\n", "\\begin{eqnarray}\n", "a &=& |c| \\cdot \\cos(\\gamma) \\\\\n", "b &=& |c| \\cdot \\sin(\\gamma)\n", "\\end{eqnarray}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Operations\n", "\n", "For two complex numbers $c_1=a_1+ib_1$ and $c_2=a_2+ib_2$, the sum \n", "\n", "$$\n", "c_1 + c_2 = (a_1 + ib_1) + (a_2 + ib_2) := (a_1 + a_2) + i(b_1 + b_2) \n", "$$\n", "\n", "is defined by summing their real and imaginary parts individually. The geometric intuition of addition can be visualized by a parallelogram:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T09:00:17.584488Z", "iopub.status.busy": "2024-02-15T09:00:17.584305Z", "iopub.status.idle": "2024-02-15T09:00:17.816249Z", "shell.execute_reply": "2024-02-15T09:00:17.815631Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "c1 = 1.3 - 0.3j\n", "c2 = 0.3 + 0.5j\n", "c = c1 + c2\n", "\n", "generate_figure(figsize=(7.5, 3), xlim=[-0.3, 2.2], ylim=[-0.4, 0.6])\n", "v1 = plot_vector(c1, color='k')\n", "v2 = plot_vector(c2, color='b')\n", "plot_vector(c1, start=c2, linestyle=':', color='lightgray')\n", "plot_vector(c2, start=c1, linestyle=':', color='lightgray')\n", "v3 = plot_vector(c, color='r')\n", "\n", "plt.legend([v1, v2, v3], ['$c_1$', '$c_2$', '$c_1+c_2$']);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Complex multiplication of two numbers $c_1=a_1+ib_1$ and $c_2=a_2+ib_2$ is defined by:\n", "\n", "$$c = c_1 \\cdot c_2 = (a_1 + ib_1) \\cdot (a_2 + ib_2) := (a_1a_2 - b_1b_2) + i(a_1b_2 + b_1a_2).$$\n", "\n", "Geometrically, the product is obtained by adding angles and by multiplying the absolute values. In other words, if $(|c_1|, \\gamma_1)$ and $(|c_2|, \\gamma_2)$ are the polar representations of $c_1$ and $c_2$, respectively, then the polar representation $(|c|, \\gamma)$ of $c$ is given by:\n", "\n", "\\begin{eqnarray}\n", "\\gamma &=& \\gamma_1 + \\gamma_2 \\\\\n", "|c| &=& |c_1| \\cdot |c_2|\n", "\\end{eqnarray}" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T09:00:17.819129Z", "iopub.status.busy": "2024-02-15T09:00:17.818922Z", "iopub.status.idle": "2024-02-15T09:00:18.039412Z", "shell.execute_reply": "2024-02-15T09:00:18.038815Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "c1 = 1.0 - 0.5j\n", "c2 = 2.3 + 0.7j\n", "c = c1 * c2\n", "\n", "generate_figure(figsize=(7.5, 3), xlim=[-0.5, 4.0], ylim=[-0.75, 0.75])\n", "v1 = plot_vector(c1, color='k')\n", "v2 = plot_vector(c2, color='b')\n", "v3 = plot_vector(c, color='r')\n", "plt.legend([v1, v2, v3], ['$c_1$', '$c_2$', '$c_1 \\cdot c_2$']);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Given a complex number $c = a + bi$, the **complex conjugation** is defined by $\\overline{c} := a - bi$. Many computations can be expressed in a more compact form using the complex conjugate. The following identities hold:\n", "As for the real and imaginary part as well as the absolute value, one has:\n", "\n", "\\begin{eqnarray}\n", "a &=& \\frac{1}{2} (c+\\overline{c}) \\\\\n", "b &=& \\frac{1}{2i} (c-\\overline{c}) \\\\\n", "|c|^2 &=& c\\cdot \\overline{c}\\\\\n", "\\overline{c_1+c_2} &=& \\overline{c_1} + \\overline{c_2}\\\\\n", "\\overline{c_1\\cdot c_2} &=& \\overline{c_1} \\cdot \\overline{c_2}\n", "\\end{eqnarray}\n", "\n", "Geometrically, conjugation is reflection on the real axis." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T09:00:18.042154Z", "iopub.status.busy": "2024-02-15T09:00:18.041919Z", "iopub.status.idle": "2024-02-15T09:00:18.209268Z", "shell.execute_reply": "2024-02-15T09:00:18.208678Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "c = 1.5 + 0.4j\n", "c_conj = np.conj(c)\n", "\n", "generate_figure(figsize=(7.5, 3), xlim=[0, 2.5], ylim=[-0.5, 0.5])\n", "v1 = plot_vector(c, color='k')\n", "v2 = plot_vector(c_conj, color='r')\n", "\n", "plt.legend([v1, v2], ['$c$', r'$\\overline{c}$']);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For a non-zero complex number $c = a + bi$, there is an **inverse** complex number $c^{-1}$ with the property that $c\\cdot c^{-1} = 1$. The inverse is given by:\n", "\n", "$$c^{-1} := \\frac{a}{a^2 + b^2} + i \\frac{-b}{a^2 + b^2} = \\frac{a}{|c|^2} + i \\frac{-b}{|c|^2} = \\frac{\\overline{c}}{|c|^2}.$$" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T09:00:18.212176Z", "iopub.status.busy": "2024-02-15T09:00:18.211873Z", "iopub.status.idle": "2024-02-15T09:00:18.411218Z", "shell.execute_reply": "2024-02-15T09:00:18.410558Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "c = 1.5 + 0.4j\n", "c_inv = 1 / c\n", "c_prod = c * c_inv\n", "\n", "generate_figure(figsize=(7.5, 3), xlim=[-0.3, 2.2], ylim=[-0.5, 0.5])\n", "v1 = plot_vector(c, color='k')\n", "v2 = plot_vector(c_inv, color='r')\n", "v3 = plot_vector(c_prod, color='gray')\n", "\n", "plt.legend([v1, v2, v3], ['$c$', '$c^{-1}$', '$c*c^{-1}$']);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With the inverse, division can be defined:\n", " \n", "$$\\frac{c_1}{c_2} = c_1 c_2^{-1} = \\frac{a_1 + ib_1}{a_2 + ib_2} := \\frac{a_1a_2 + b_1b_2}{a_2^2 + b_2^2} + i\\frac{b_1a_2 - a_1b_2}{a_2^2 + b_2^2} = \\frac{c_1\\cdot \\overline{c_2}}{|c_2|^2}.$$" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T09:00:18.413955Z", "iopub.status.busy": "2024-02-15T09:00:18.413777Z", "iopub.status.idle": "2024-02-15T09:00:18.598308Z", "shell.execute_reply": "2024-02-15T09:00:18.597712Z" } }, "outputs": [ { "data": { "image/png": "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rANedc6tMbOxZjY2b7d5wDfAeuAp4MaT/dyocsopMHAgvP++T8g5OX7B3+HD/Znw3XdDkyY+IZv55P35535fERGJSCdMwGa218z2AJ/j7wH+PO+xJu/fk+acm+ecO8M59yPn3OS812Y452bkPXfOuXF523/snFsajs+NWlWqQNeu8PzzPsk6B99+C5MmQdWq8OSTfkmkKlV8Qr7wQli40N9oLCIiEeGECdg5V8c5V7eYRx3nnO6PiRQtWsB990F2tk/Iu3f7gV1JSfDPf0K/flC9uk/I7dv75K06sohIYLSwa6yqVw/GjIENGwrXkX/xC7924dVXh+rItWv75L0ldsvqIiKRRgm4ssivI6elherIy5fDiBFw4AD89rd+eaX8OvJ116mOLCJSjpSAK6sqVaBLFz//ZX4deeNGP6CrWjV4+unCdeRf/hIWLFAdWUQkTJSAJeT00+GPf/RJNr+O/OST0KqVX47pggtCdeR27Xzy3rs36KhFRKKSErAcW716/lL0N9/4hHzoEMybB717w5dfwsiRULeuT8i1avnkrTqyiEiJKAFLyVWvDgMGwHvvherIK1b4AV0HD8I99xSuI48eDZ99pjqyiEgxlICl7KpUgc6dYebMUB35u+/8gK64OHjmGejUKVRHvuACfylbdWQRESVgCbPmzeEPf4CsrFAd+amn4Ec/8oO4fvnLUB35jDN88lYdWUQqISVgKV/16vlL0evXh+rIb78NffrAV1/BqFGhOnLNmvD738Pm2FlnQ0TkWJSApWJVr+6XWFy40Cfk3FxYudIP6MrMhHvvhWbNQnXka6+F1atVRxaRmKMELMEyg7PPhueeC9WR09Phd7/zyfrZZ/32/Dpyv35+as2srKAjFxE5KUrAEnmaNfNnwocO+YSckeEHdLVp48+cL7zQz+xlBm3b+uS9Z0/QUYuIlIoSsES+unXhmmt8zTi/jvzOO9C3r68tX3ONrzWb+ek1770XNm0KOmoRkeNSApboU726PwtesKBwHXnUKN/+/e/9aOz8OvI118CqVaoji0hEUQKW6JdfR372WejWLVRHvvdef6n6uef8/cr5deS+fWH+fNWRRSRQSsASm5o18wO5MjN9Qt6zxyfotm39TF79+4fqyG3a+Bqz6sgiUoGUgKVyqFPHX6L+z398Qs7K8qOp+/aFr7/29yrn15GrV/fJOz096KhFJIYpAUvlFBfnp8YsWEdetcrfd3z4sJ/N6/TTQ3XkUaN8nVl1ZBEJEyVgEfBJtlMnvw5y/v3Imzb5AV01a/opM7t0CdWR+/TxI7FVRxaRMlICFjmWpk39Ck8HDoTqyM895+ewXrTIrwyVX0du3donb9WRRaSElIBFSqpOHT9l5pdfFq4j9+sHGzb4tZPz68hxcX5VKNWRReQYlIBFyiq/jvzuu6E68urVfkBXdjbcd1/hOvLVV/v1k3Nzg45cRCJAoAnYzE4zs3fN7Ku8f08tZp/TzWyRma0zszVmdnMQsYqckBn8+Md++cWCdeQ//AFq1YLnn4euXaFqVb9vr15+ZSjVkUUqpaDPgO8AFjrn2gIL89pHywaSnXPtgR7AODPrUIExipRd06b+UvT+/aE68syZcOaZ8K9/wcCBhevITz3l574WkZgXdAIeDMzKez4LGHL0Ds65Lc655XnP9wLrgGYVFaBIWNWp4y9Ff/FFqI787rv+UvaGDTBmDNSv7xNy1apw993w3XdBRy0i5SDoBJzgnNsCPtECjY+3s5klAV2AJeUfmkgFiIsLLbGYX0f+7DM/oCs3FyZPhhYtQnXkESNURxaJEebKeWIBM1sAJBazaRIwyzlXv8C+u5xzRerAedvigX8Bk51zbxzn88YAYwASEhK6zZ49+ySiL3/79u0jPj4+6DBiRkz25+HDsGMHbNlSNPHGx0OTJv7M2izsHx2T/Rkg9Wf4REtf9u7de5lzrnuxG51zgT2AL4Emec+bAF8eY784YD5wW2mO361bNxfpFi1aFHQIMaVS9OeePc7NmuVcu3b5Q71Cj5YtnZsxw7ldu8LyUZWiPyuQ+jN8oqUvgaXuGDkq6EvQc4Gr855fDfz96B3MzIBngHXOuQcrMDaRyFSnjr8UvW5dqI68YIFfovHbb2HsWDj11FAdedIk2Lgx6KhF5ChBJ+ApwAVm9hVwQV4bM2tqZvPy9ukJDAf6mNnKvMfAYMIViUBxcX5RiXfeCdWRP//cD+jKzYX774eWLUN15OHDYdky1ZFFAhZoAnbO7XDO9XXOtc37d2fe65udcwPznv/bOWfOuU7Ouc55j3nHP7JIJWYGHTvCE0+ELk5v2eIHdMXHw4svQvfuofuRf/YzeOstOHQo6MhFKpWgz4BFpCIkJsJdd8HevT4h793rJwbp0AH+/W8YNAhq1PAJuWVLn7x37w46apGYpgQsUhnFx/tL0WvWhOrICxdC//6+XpxfR162zCflO+9UHVkkzJSARcTXkfv08VNj5teR16yBRo389ilTCteRr7oKli5VHVnkJCgBi0hRZv7ydIsWhevI998PdevCyy/DT34SqiOffz784x+qI4uUghKwiJRMYqK/FJ2REaojv/iiH/D14Yfw61+H6sgtWsDjj6uOLHIcSsAiUjbx8f5S9Oef+4R8+DC89x4MGODnr77xxtD9yPl15G+/DTpqkYihBCwi4VGtGvTuDfPmherIa9fCDTf47VOmQFKS6sgieZSARaR8mEH79vDYY6E68vffwwMPFF9H/ulPYe5c1ZGl0lACFpGKk5AAd9wRqiPv2+fryGedBYsXw+DBoTpy8+Y+ee/aFXTUIuVCCVhEglO7tr8U/dlnoTryokVw0UWwaROMGwennRa6bD1xIvz3v0FHLRIWSsAiEjmqVYNeveDNNwvXkW+80W//85+hVatQQr7iCvjkE9WRJSopAYtI5MqvI0+fXriOPGUK1KsHs2fDuecWriP//e+QmRl05CInpAQsItElIcFfit69O1RHfvll+PGPfR15yBCoWdMn5GbNfPIuSx35gw/8qO4vvwz3TyACKAGLSLSrXdtfil69OlRHTkvzC0xs3gzjxxeuI//mN7Bhw4mP26KFX6iiY0e4/XY4cKDcfxSpXJSARSS2VKsGv/iFnxozv468bp0f0AXwl79A69ahhHzZZcXXkVu2hNtu85e3p0/3tee5cyv+55GYpQQsIrHNDNq1g2nTQnXkrVvhT3+C+vXh1VcL15F79IA5c3wd+be/9WfYBw/Ctm3+TLtfP43ElrBQAhaRyqdxY38peteuUB35lVegUydYsgQuvtjXkevU8fvExfn3HTjgL2936AB//KNfxlGkjJSARURq14bLL4dVq0J15H/9y89rDb6dLyfHnxFPmQJt2vj5r0XKQAlYRORo1ar5s9/166FWreL3OXDALzoxaJAfeb11a4WGKNFPCVhEpKDMTD/quXt3+Oqr0OjnKlV8Mq5b19+DHB/vL01nZcH77/tVoURKoVrQAYiIRJTvvoOZM/3KTY0a+fuOmzf39xQ3buxfa9Qo9LxuXT94S6SUlIBFRApq2xa2bw86CqkEdAlaREQkAErAIiIiAQg0AZvZaWb2rpl9lffvqcfZt6qZrTCzNysyRhERkfIQ9BnwHcBC51xbYGFe+1huBtZVSFQiIiLlLOgEPBiYlfd8FjCkuJ3MrDlwEfB0xYQlIiJSvsw5F9yHm+12ztUv0N7lnCtyGdrMXgceAOoAKc65Qcc55hhgDEBCQkK32bNnhz3ucNq3bx/x8fFBhxEz1J/hpf4ML/Vn+ERLX/bu3XuZc657cdvK/TYkM1sAJBazaVIJ3z8I2OacW2ZmvU60v3PuSeBJgO7du7tevU74lkClpaUR6TFGE/VneKk/w0v9GT6x0JflnoCdc/2Otc3MtppZE+fcFjNrAmwrZreewK/NbCBQA6hrZi8654aVU8giIiLlLuga8Fzg6rznVwN/P3oH59ydzrnmzrkk4HLgPSVfERGJdkEn4CnABWb2FXBBXhsza2pm8wKNTEREpBwFOhWlc24H0LeY1zcDA4t5PQ1IK/fAREREylnQZ8AiIiKVkhKwiIhIAJSARUREAqAELCIiEgAlYBERkQAoAYuIiARACVhERCQASsAiIiIBUAIWEREJgBKwiIhIAJSARUREAmDOuaBjKDdmth34Nug4TqAh8EPQQcQQ9Wd4qT/DS/0ZPtHSly2dc42K2xDTCTgamNlS51z3oOOIFerP8FJ/hpf6M3xioS91CVpERCQASsAiIiIBUAIO3pNBBxBj1J/hpf4ML/Vn+ER9X6oGLCIiEgCdAYuIiARACbiCmFl/M/vSzNab2R3FbDczeyRv+2oz6xpEnNGiBP3Zy8wyzGxl3uOeIOKMBmb2rJltM7PPj7Fd381SKEF/6rtZQmZ2upktMrN1ZrbGzG4uZp+o/X4qAVcAM6sKTAcGAB2AK8ysw1G7DQDa5j3GAI9XaJBRpIT9CfCBc65z3uMPFRpkdJkJ9D/Odn03S2cmx+9P0HezpLKBZOdce6AHMC6WfncqAVeMc4D1zrlvnHNZwGxg8FH7DAaed97HQH0za1LRgUaJkvSnlJBz7n1g53F20XezFErQn1JCzrktzrnlec/3AuuAZkftFrXfTyXgitEM+K5AO52iX6KS7CNeSfvqPDNbZWZvm1nHigktJum7GX76bpaSmSUBXYAlR22K2u9ntaADqCSsmNeOHn5ekn3EK0lfLcdPAbfPzAYCc/CXqKT09N0ML303S8nM4oH/BW5xzu05enMxb4mK76fOgCtGOnB6gXZzYHMZ9hHvhH3lnNvjnNuX93weEGdmDSsuxJii72YY6btZOmYWh0++Lznn3ihml6j9fioBV4xPgbZm1srMqgOXA3OP2mcuMCJvRF8PIMM5t6WiA40SJ+xPM0s0M8t7fg7+u76jwiONDfpuhpG+myWX10/PAOuccw8eY7eo/X7qEnQFcM5lm9l4YD5QFXjWObfGzMbmbZ8BzAMGAuuBA8CooOKNdCXsz0uAG8wsGzgIXO4060yxzOwVoBfQ0MzSgd8BcaDvZlmUoD/13Sy5nsBw4DMzW5n32l1AC4j+76dmwhIREQmALkGLiIgEQAlYREQkAErAIiIiAVACFhERCYASsIiISACUgEVERAKgBCwiIhIATcQhIgCYWQ7wGf73wgZguHNud6BBicQwnQGLSL6DeevTnoVfTm9c0AGJxDIlYBEpzmLylnQzs2Fm9omZrTSzJ8ysasCxicQEJWARKSQvwfYF5ppZe+AyoKdzrjOQA1wVYHgiMUM1YBHJVzNvwvskYBnwLnAD0A34NG8Bn5rAtoDiE4kpWoxBRAAws33OuXgzqwe8CbyGX9i8qXPuzmCjE4k9ugQtIoU45zKACUAK8D5wiZk1BjCz08ysZZDxicQKJWARKcI5twJYBXQC7gb+aWar8ZelmwQZm0is0CVoERGRAOgMWEREJABKwCIiIgFQAhYREQmAErCIiEgAlIBFREQCoAQsIiISACVgERGRACgBi4iIBOD/AzCGX1I424BGAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "c1 = 1.3 + 0.3j\n", "c2 = 0.8 + 0.4j\n", "c = c1 / c2\n", "\n", "generate_figure(figsize=(7.5, 3), xlim=[-0.25, 2.25], ylim=[-0.5, 0.5])\n", "v1 = plot_vector(c1, color='k')\n", "v2 = plot_vector(c2, color='b')\n", "v3 = plot_vector(c, color='r')\n", "\n", "plt.legend([v1, v2, v3], ['$c_1$', '$c_2$', '$c_1/c_2$']);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Polar Coordinate Plot\n", "\n", "Finally, we show how complex vectors can be visualized in a polar coordinate plot. Also, the following code cell illustrates some functionalities of the Python libraries `numpy` and `matplotlib`." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T09:00:18.600947Z", "iopub.status.busy": "2024-02-15T09:00:18.600766Z", "iopub.status.idle": "2024-02-15T09:00:19.129458Z", "shell.execute_reply": "2024-02-15T09:00:19.128935Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAF6CAYAAAAUO1/9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAC/d0lEQVR4nOydd3gjVpX236tiWZZ7772XsWdcxp7xlLAsSSBLgJAQsqGHDSUsWVooS0mAQMguBBJIdknIR2AhQAgkkApjz7iPe+9NrpJt2ZaLunS/PzQS9rjJ1rEtz+j3PHoyseWjK5d77j3lPYxzDjdu3Lhxc/0iOOwFuHHjxo2bw8XtCNy4cePmOsftCNy4cePmOsftCNy4cePmOsftCNy4cePmOsftCNy4cePmOsftCNxcdzDGPssY62SMdTHG7r/ysUDG2N8YYwNX/huw5vmPMsYaGWPnDm3RbtzsI25H4Oa6gjGWDeDjAIoA5AK4hTGWAuDLAC5wzlMAXLjy/2CMpV/50rMAPn3wK3bjZv9xOwI31xsZAOo45xrOuQnAJQDvBnArgF9eec4vAbzryr+FACwAOAB2sEt14+ZgcDsCN9cbnQDOMsaCGGNeAN4OIAZAGOd8GgCu/Df0yr+7AHgBqALw5OEs2Y2b/UV02Atw4+Yg4Zz3MMYeAfA3ACsA2gCYdviazxzE2ty4OSzcNwI31x2c82c45yc452cBzAMYAKBkjEUAwJX/zhzmGt24OUjcjsDNdQdjLPTKf2MBvAfAbwG8DOBDV57yIQAvHc7q3Lg5eJhbfdTN9QZjrBJAEAAjgM9xzi8wxoIA/B5ALIAxALdzzucPcZlu3BwYbkfgxo0bN9c57tCQGzdu3FznuB2BGzdu3FznuB2BGzdu3FznuB2BGzdu3FznuB2BGzdu3FznuB2BGzdu3FznuB2BGzdu3FznuB2BGzdu3FznuB2BGzdu3FznuNVH3VxTMMYYAB8AEQAiYZWT9vH19Q328fEJEYvFwUKhMIgx5sc597NYLFLOuRCAwGKxCK6YsADgjDELY8wkFApXAag554smk2ler9fPLS8vK1dXVxcAqAEoAUwBmOacaw/ljbtx4wRuiQk3RwrGmADW+QGpUqk0Mzw8vFggECQajcYIi8XiLRKJxDKZjIWFhSE8PFwQEREh8vPzE/n4+DBfX1/4+PjAz88Pfn5+8Pf3h7e3Nzw8PCAQCCAUCtHU1IT8/HyYzWaYTCYYjUYsLy9jcXERS0tLUKvVUKvVWF5ehlqttiwuLpqmp6dNCoWCz87OQqvVWkwmk1EsFquFQuGk0Wjsn5iYqLVYLH24onLK3X90blwMtyNw45IwxsQAMhljx2NiYkrFYvEJnU4XKxaLPSMiIpCSkiLMyMiQpKWlsfj4eMTFxSEwMNDp17148SLOnz/vlA2LxYLZ2VmMjo5idHQU3d3dlt7eXv3Q0JBldnaWWywWjUQiGdJqtQ1TU1M1AJoBDHHOLU6/ATdu9oDbEbg5dBhjHgCyxGJxYUxMzC1Go7FAJBL5pqSksBMnTkhycnKEOTk5SEtLg4eHx76uhcIR7MTq6iq6urrQ2dmJ9vZ2Y3Nzs2F0dJQzxlSMsSq5XP4qgCYAA27n4OYgcDsCNwcOY8wHQGlMTMx7AdwkEon8UlNTWUFBgaSkpER4+vRp+Pv7H8raDsIRbMXk5CRqampQW1trbGpqsjkHpV6v/5NCoXgZQD3nXH8oi3NzTeN2BG72nSsb/+mYmJjbAdwklUr9Tp48KXzb297medNNNyE4OPiwl2jnMB3BZoyOjuK1117jf/vb33Stra0WzrlCq9W+qFQqbY7BcNhrdHP0cVlH0NTUFC0QCN60WCzpANhhr+eA4QKBoNdisbwtPz9/4rAXs1uuVO6kh4SE3CWVSj/o6ekZ5Kob/9W4miO4mrWOoaWlxcIYk8/MzDy1urr6Iud88rDX5+Zo4rKOoKWlpTs8PDwlLCxMJBBcX+0OFosFSqXSpFAoBo4fP5552OtxhCvJ3dOxsbH3mM3mtyckJEhuvfVWz/e9732CmJiYw16ew7i6I7iazs5OPP/886ZXXnnFoFKploxG428VCsWvALS6q5PcOIrLOoKmpibL8ePH2fXmBGxYLBa0tLTw/Px8l/0GMMY8GGM3JSQkfNFgMOQVFRUJb7vtNumtt94KmUx22MvbE0fNEaxldnYWv//97/mf//xnbXd3t9HDw6NsdHT0hwBq3ElnN9vhyo6A5+fnH/YyDpUrNe0uFRa7Usd/Kj4+/gsmk+mfbrjhBvGHP/xhyfnz53EtOO2j7AjWotfr8fLLL+OXv/yltqWlRS8QCH43MTHxE85592GvzY3r4e4sduMQjLGMqKioz0RGRr7/+PHjko985CPSW2+9FSKR+1fIFZFIJLj99ttx++23S1dWVqS//vWvP/6rX/3qA7GxsUsajeZJlUr1NOd86rDX6cY1cN8IXJjDvhEwxrx9fX0/5Ofn99WYmBj/u+++W/qBD3yAeXt7H9aS9p1r5UawFdPT0/jFL35hfv755/XLy8vyiYmJ/zSbzS9zzk2HvTY3h8fRv8vvM1NTU7jttttw/PhxpKeno76+/rCXtO8wxnLi4+P/GBsbq/jYxz72o8rKysjq6mqvT37yk9e0E7geiIiIwNe+9jVhR0eH15/+9KeMu+666zdRUVGqyMjInzDGog97fW4OhyNxr7///vvR2tpKajMvLw+PPfbYts8xmUy4+eab8d3vfhe33HILNBoNzGYz6TpcBcaYWCwWvzsiIuJ7JSUl4Z/5zGe87rjjDgiFwsNempt94vjx43juueckq6urkp///Oef/vnPf/6x+Pj4Trlc/iUAFe6qo+sH941gG/785z8jIyMDt9xyCwDAy8sLs7Oz+NjHPob3vve9h7w6Ghhj3iEhId+Iioqaff/73//cK6+8klhTU+P1/ve/3+0ErhNkMhnuv/9+QVdXl9cvfvGLoptvvvm16OjoKS8vrw8yxo7EYdGNcxyJH/JOJ/f9orW1FcXFxes+lpiYiGeeeebIOwLGWFBERMTXY2JiPvav//qvkgceeEB8WLIOblyHt7zlLXjLW94iHR0dlT700EP/+8YbbzwWEBDw7cXFxSc557rDXp+b/cF9I9iG8PBwdHV12f9/dnb2EFdDA2MsKiYm5rn4+Hj5Zz/72ft6e3u9v/e977mdgJt1xMfH4xe/+IWktbU14EMf+tD3o6OjlWFhYQ8xxnwPe21u6HE7gm348Ic/DKVSiaysLOTl5aG2tvawl7RnGGOJ8fHxf01NTe3/6le/+q8DAwOyBx54QOjl5XXYS3PjwoSEhOCxxx7z6Orq8r333nu/EhsbOxUdHf0zxpjzmt9uXAZ3+eguUalU+NrXvoa//e1vuOeee/CVr3xl316LonyUMRYWExPzuEwmu+XrX/+655133nnddGtzzmEymaDT6ewPvV4Pg8EAi8UCzrn9Yft/hUKB8PBwMMYgEAjAGFv3b4lEAk9PT/tDIpFcV70Uer0eP/nJT8xPPPGEzmAwPK5QKL7NOdcc9rrcOIfbEbgwzjgCxphvZGTkdz08PD76wAMPSD7+8Y8Lr6Xkr9lsxurq6roNfu2Gb6vuEolEGzZuiUSyYaO3/X9DQwMKCwvXOQrbvy0Wy7rXsf3b9lpisdj+Gmtf09PTE15eXtdE57UNjUaD7373u8Zf/vKXWq1W+835+fmfcs6Nh70uN3vD7QhcmL04AsaYJCQk5Auenp4P/Nu//Zv0i1/8okgikezXEg8Es9kMtVqNxcVFqNVqLC0tgTEGmUy2YZO3/Xuvp/S9NpRtdvuwOQutVovV1VUIhcJ1YzJ9fHyOvHNQqVT4z//8T8Nf/vKX5YWFhc9oNJrn3WWnR4/r5057jcMYY97e3h+Iior68e233+714IMPevj6Hr28nslkwtLSEhYXF7G4uIjl5WUwxuDr6wt/f38kJCTAx8fH5UpbGWMQi8UQi8Xw8fHZ9DlGo9H+3gYHB7G8vAyBQGB3DEfROQQFBeHJJ5/0+PKXvxz0pS996Rc1NTU/YIzdxTmvPOy1uXEctyO4BmCMZUVHR7948uTJuMcff1wSERFx2EtyCM45lpeXMTs7az/p2zZGPz8/JCYmwtfX90htjNshFosRFBSEoKAg+8dMJpP9tjM0NLTue+Dv74/Q0FBIpdJDXLVjxMXF4Xe/+51nR0dH9L333vtmbGxs9fj4+N2cc8Vhr83NzrgdwRGGMeYbHR39eFZW1u1PPPGE9Cho5FgsFqhUKigUCqhUKshkMoSEhFxzm76jiESiTZ3D0tISFhYW0NLSApPJhNDQUISHh8PPzw/WuT+uSU5ODmpqajx/+ctf3vDNb35zMDQ09Huzs7OPuLWMXBt3jsCF2SpHwBhjPj4+H/L19f3xZz7zGa8vfOELIlcLlazFYDBgZmYGCoUCy8vLCAoKQnh4OIKCglwuxOOKonNGo9H+/VtaWkJgYCDCw8MRHBzsct+/taysrOCBBx7Qv/TSSwvT09PvM5vNFYe9Jjeb474RHDEYY+nR0dEvFxcXxz7++OOS8PDww17SpqyurkKhUEChUMBsNiMsLAwpKSnw9fV16ROtKyIWixEVFYWoqChYLBbMz89DoVCgp6cHUqkU4eHhCA8Ph6sVBXh7e+OnP/2p5JOf/GT4v/3bv70RGxtbMz4+fifn/Oh3Zl5juB3BEYExJgwPD/9WSkrK55966inpW97ylsNe0jo451hYWMD09DRmZ2fh6emJ8PBwnDhx4kjEuI8KAoEAwcHB9rnPy8vLUCqVaGhoAOccYWFhiIiI2DJhfRhkZ2ejpqbG89lnnz3/jW98Y8jHx+fe5eXl3x72utz8A7cjOAIwxtKjoqJeveWWW6Iee+wxD09Pz8Nekh29Xo/x8XFMTEzAx8cHkZGRSEtLu66arA4THx8f+Pj4IDk5GXq9HjMzM+jq6oLJZEJsbCyioqJcJnz0kY98RHDzzTf7fOhDH3o2JibmkxMTE7e5bweugfuvdRu2C2EcVG4lPDz8weTk5C/+/Oc/d5lkMOccc3NzkMvlWF1dRUxMDE6fPg2xWHzYS7uukUgkiImJQUxMDLRaLcbGxlBRUYGgoCDExcXBz8/vsJeI8PBwvPHGG5Jnn3329De+8Y0hmUz28dXV1d8d9rqud9zJYhemqakJ//M//2N47LHHPFxBE8hgMEAul2NychL+/v6Ii4uDv7//NRXzd8VksTNwzjEzMwO5XA69Xo+4uDiXuSUoFAp86EMf0vX09NSPj4/fxjmfO+w1Xa9cX7V6e+CwJ5T97//+76E7geXlZbS1taGmpgZCoRCnT59GXl4eAgICrikncC3CGENYWBiKiopQWFgIjUaDiooK9PT0QKc7XFXpK7cDz29961uno6Kihjw8PP7pUBd0HeMODW3D9TSh7GpsJ8nh4WEA1jkMx44dc2/8RxhPT0+kp6cjJSUFk5OTqK+vh0wmQ2JiIgICAg5tXR/96EeF586d873jjjv+GhUV9fOpqan/4JxfH39oLsKRcASvv/46FAraBsXw8HDcdNNN2z5nswll1zqcc0xOTmJwcBABAQHIzs52qQoUN84jFAoRGxuLmJgYzM/PY3BwEAaDAWlpafZqpIMmKSkJly9f9rz//vvv/fOf//w2xtg/cc4nD2Ux1yHu0NA2bDahbHh4+JoaVWmDcw6lUonKykosLCygpKQEubm5bidwDcMYQ1BQEAoLC5Gbm4uRkRHU1dVBrVYfynpEIhGeeOIJjyeeeCI1JiamVyKR3HIoC7kOORI3gp1O7vtFeHg42tra7P8/Ozt7zYyqXMv8/Ly9OamgoOC6uPm4WY+3tzcKCwuxsLCArq4uSCQSpKenQyaTHfha3vWud7GCggLv22677Q8xMTG/mZiY+ASFxDVjTAigEcAk5/wWxti3AHwcgK2E9auc81evPPdRADcA+Dzn/JKzr+3quG8E23AtTSjbjOXlZdTX12NgYAA5OTk4ceKE2wlc5wQEBODUqVOIiYlBU1MT2tvbDyWpHB0djZqaGs/bb7/97qioqFbGWNDOX7UjnwXQc9XHfsQ5z7vysDmB9CufOwvg0wSv6/IciRvBYeHt7Y2XX375sJdBjlarRW9vL1ZXV5GRkbFO8OxaZLNZAUajcd3QGdu/dTodent7NwyssU0no5h5cBQIDQ1FSEgIpqamUFdXh/DwcCQlJR1or4hQKMQPf/hDj+PHj6d/5Stf6WOMneOcd+38lRthjEUDeAeA7wL43E4vDcACgAO4Lqojrt3f5H3CNqqypaUF3/ve9/Z1VCU1BoMBAwMDmJubQ1paGsLCwo58FRDnHKurq9BoNBsGwlw9PWztJi4Wi+0b/NpJZRMTE/D399/USayurmJ+fn7DFLSrbdv+7e3tDU9PzyP7PWaMISoqChEREZDL5aiqqkJsbCzi4+MPtA/hAx/4gCAjIyPojjvuqPf29r57ZWXlT3sw8xiALwG4Oul1H2Psg7CGjD7POV/gnHcxxrwAVAH4olOLPyK4G8pcmCvqo07bMZlMGB4exuTkJJKSkhATE3MkNyfOOVZWVuyTyhYXF2E0GiGTybacVrbbU/tuG8q2m0y2srICrVYLT09P+Pv722cMSKXSI/n9X/t7lJycjOjo6AN9H0qlEv/yL/+im5iY+PH09PRXHJ2Exhi7BcDbOeefYoydB/CFKzmCMABzsJ78vw0ggnP+0f1avyvjvhFc48zOzqKrqwsxMTE4e/asS3SUOoJtaM3aEZVGoxHe3t72gS2pqanw8PA41HXuNJmMcw6dTmd/D2NjY9BqtZBIJPapZEfFOYhEIqSmpiI+Ph79/f2Qy+UHWlkWFhaGqqoqz4985CP3V1RUnGSMvYNzrnHgS08DeCdj7O0APAH4MsZ+zTm/2/YExtjPAfx1n5bu8rgdwTWKyWRCV1cXtFotTp486fIKoLbTvkKhwMzMjH3T9/PzQ3h4ONLS0g59098LjDFIpVJIpVKsnRxncw6Li4sYHx+HRqOBVCpFWFgYwsPDXfrn5eHhgezsbCwuLqK5uRlRUVFISko6EEfm4eGB//u//5N8//vfL33iiSfaGGMnOefz230N5/wrAL4CAGtuBHczxiI459NXnvZuAJ37uXZXxu0IrkHm5ubQ2dmJhIQEl+4GXqutPzs7C5lMhvDwcBQUFLictj41NpnutfMkbDMcmpubYTabXX4qmb+/P0pLS9Hf34/q6uoDvR18+ctfFkVFRSV85Stf6WKMFXLOJ/Zg5geMsTxYQ0OjAO6lXONRwu0IriFMJhO6u7uxurrqsreAraZtZWRkHJmw1X4hk8mQlJSEpKQkGI1GKJVK+5B7V51KJhQKkZGRgYWFhQO/HXzgAx8QhoSEhH384x9vZ4yd5pxfXRq6Ac75RQAXr/z7A/u8xCOD2xFcI6y9BeTk5LjUCVKj0WB6eto+rSw0NBRJSUkue9J1BcRiMaKjoxEdHb1uznN3d7f95hQeHu4y4bKAgACUlpair68P1dXVyMvLg7e3976/7k033cT++Mc/Btx+++31QqHwbWaz+dpq9jkg3I7giLP2FlBUVOQyDWFmsxkKhQJyuRycc0RGRrqnle0RgUCAkJAQhISE2JPoSqUStbW1kMlkiIuLQ3Bw8KE7VaFQiMzMTCwsLKCpqQnR0dFITEzc93UVFRXh73//u/fb3/72CzKZ7P2rq6sv7esLXoO4y0ddmJ3KR9feAmJjYw99IwCs3cpyuRwzMzMIDw9HbGzsgZwMqThK8wg451hcXIRcLsfi4iIiIyMRGxsLV5hgZzab0dfXh/n5+QO7HSgUCvzzP/+zbmpq6lMqlerZfX/Bawj3jeAIYjKZ0NPTg5WVFZe4BXDOMT09jZGREQgEAsTFxSEzMxMCgVvBZD9hjCEgIAABAQEwGo12aWmpVIrExEQEBgYe2uHgMG4H4eHhqKys9HzLW97ys6CgILFKpfrffXuxawy3IzhiaDQaNDY2IiYmBtnZ2Yd6CzAajZDL5RgfH0dwcDByc3OP1On/WkIsFiM+Ph7x8fGYn5/H8PAwurq6kJCQgMjIyENLMNtyB729vaivr8eJEyf2VabC398fFy9e9HzLW97yk+DgYNHc3NzP9u3FriHcR7YdOOwJZWtRqVS4fPkysrOzkZCQcGhOQKPRoL29HdXV1WCMobS0FDk5OW4n4CIEBgaioKAAhYWFWFlZQUVFBXp7e2EwGA5lPUKhEFlZWYiKikJNTQ1WV1f39fV8fX3x+uuvS+Lj438SHBx8XYjGOcuRuBHcfz/Q2kprMy8PeOyx7Z/jShPKRkdHMT4+juLi4kNLuOr1evT392NhYQEpKSkuV53kZj1SqRQZGRlITU3F+Pg4qqur7SGaw7ghREdHw9vbG/X19cjOzkZISMi+vI5Op0NnZydeeOEF4e233/5fQUFBRneYaHvcN4Jt2GxC2YULF/Dxj38ct956K9588819X4PFYkF7eztUKhVOnTp1KE7AaDSit7cXtbW1CAgIwJkzZxAREeF2AkcEoVCI+Ph4nD17FowxVFRUQC6Xw2KxHPha/P39UVJSgr6+PoyMjJDb1+l0qKurQ3Z2NuLj43HhwgXPuLi4HwcFBV2XGkKO4q4a2ob//M//RHBwMO6///4Nn1tYWMAXvvAFPPPMM/v2+k1NTdDr9QgJCUFycvKBb7wWiwWjo6OQy+WIj49HXFzcNZ8APkpVQ3vFaDRiYGAAMzMzSE1NPRSnbjab0dbWBqFQiJycHJLfq7VOYO3IzcXFRZw7d043NDT0rysrKy86/ULXINf2X7WThIeHo6vrH/Lns7Oz9n9/5zvfwac/vf/hx8TERKSkpBzoHyrnHOPj46ioqIDRaMSZM2eQkJBwzTuB6wWxWIzMzEwUFxdjdnYWVVVV6363DwKhUIjjx4/D29sbtbW10Ov1TtnbygkA1lvIm2++6RkZGflroVB42qkXukZx/2Vvw2YTyjjneOCBB3DzzTfjxIkT+76GtVo0+41tbnFFRQXUajVKSkqQlpZ2TQ9guZ7x9PREbm4ujh8/jtHRUdTW1h7ovGLGGJKSkpCSkuLUa2/nBGyEhYXh1VdflUZHR7/BGMtyZt3XIu6/8G3YbELZT37yE/z973+HWq3G4OAgPvGJTxzS6mhRq9Xo7OyEVCpFYWHhofcm7AeccxiNRvu8gM2mlBkMBsjl8g0Dazw8PK7ZyWS2ecWLi4v2ecVZWVkH1pgWGhoKLy8vNDY2IjU1FZGRkQ5/rSNOwEZycjJefPFF2a233lrFGMvlnI85u/ZrBXeOwIWhGkyzHRaLxR4vPnbsGPz8/Pb19fYTnU6HpaWlTYfErJ0mtnZDX7vZCwQC9Pf3IzU1dcN0MoPBsGEymUgk2jAMx8vLC76+vgc60pEapVKJ7u7uAx8+YzQa0dTUhICAAKSmpu74urtxAmt588038ZGPfEQ5NTWVxTlXObvuawG3I3Bh9tsRLC0tobW1FeHh4UhOTj5SOYC1ev5qtRoajQYSiQR+fn7rNmfbBu3oKd7RZPHVk8lsozE1Gg3UajXMZrN9noJt+MxRcg5GoxGdnZ0wGAzIzc09sNsB5xydnZ0wm83Izc3d0hns1QnY+M1vfmP54he/ODo1NXWMc76/jQ1HgGvrjuvGIWy3AKVSiby8PPj6+h72krbFYDBgfn7evvFfPeErNjb2wCd8OTKZzDZhTaFQoK+vDyaTCTKZzL7ugIAAlw0zicViHD9+3C5ud1C3A8YYsrOz0dvbi+bmZhw/fnzDAcVZJwAAd911l2B6ejrmsccee4MxdpZzfvC1tC6Ea/4Wutk3bLeAsLAwlJaWuuwtwDatTKlUwmKxICgo6NA2/b3AGIOvry98fX0RExMDYP3MZYVCga6urnVTyVxBLO5qwsLCEBgYiM7OTkxNTR3I7YAxhoyMDPT19dlvxbbfUwonYOPzn/+8uKOjo+Bvf/vbfwH4HMHSjyzu0JALQxkaWnsLyM3NdblcgMViwcLCgn1amVQqRXh4OMLCwg50gzzoPoKVlRUolUooFApYLBb7VDJfX1+Xc3a23EFKSgqioqIOZH2Dg4NQqVQoKCiA0WgkcwI2TCYTzpw5o+vs7Pzw8vLy70iMHkHcN4LrAFe9BRiNRszOzmJ6ehpLS0sICAhAeHg40tPTXWoK137i7e0Nb29vJCUlwWAwYGZmBgMDA1heXkZQUJB9Kpkr/Myuvh0cO3Zs3520LXdVV1cHg8GAnJwcMicAWBP+f/nLXzyLi4t/wRjr5Zy3kRk/QrgdwTUM5xxDQ0P2K70r3AI451hYWMDo6CiWlpYQFhaGxMRE+Pv7u9wJ+KDx8PDYdCpZV1cXQkNDERsbe2Azgbfi6txBeno6IiIi9vU1IyMjMTg4CE9PTwQEBJDbDw4Oxh/+8Aevf/mXfylnjKVzzmfIX8TFcTuCaxSz2YzW1laIxWKXuAUYDAaMj49jYmIC3t7eiIuLQ1BQ0HW/+W/F2qlkFosFCoUCnZ2dsFgsiI2NPVRpacB6OwgICEBTUxOWlpYcKvfcC7acwIkTJ7C8vIzGxkYUFhaS/z4fP34c//3f/+33uc99rpIxlsM5Pxyp1kPi8O+bbsjRarWoqalBUFAQjh07dqhOwBaWqqmpAWMMJSUlyM/Pd4nRikcFgUCAyMhIlJSU4Pjx41hdXUVFRQV6enqg1WoPbV0eHh44efKkvf7fZDKR2r86MZyQkIDg4GA0NTXti2De+973PsEHPvCBhOjo6F+SG3dx3I7gGmNhYQF1dXXIyMhAfHz8oayBcw6FQoGamhp0d3cjMjIS586dQ2JiossMWz+qeHl5IT09HefOnYO3tzcaGhrQ2NiI+fn5Q1mPQCCwS0rX1NSQOaatqoOSkpLg5+eHlpYW7Eehy8MPPyyOj49/t7e393vJjbswbkewAxSDaQ5quM34+Dg6Ojpw8uRJ0oSao9hGVlZUVGBmZgY5OTkoLi5GaGio+/RPjEAgQExMDM6cOYPExEQMDQ2hpqYGCwsLh7KeuLg4ZGdno66uzmmntFOJaGpqKmQyGdra2sidgUAgwB/+8AdJUFDQ/2OMxZEad2GORo7gkCbT7GUwjUajWVfnfhDDbTjn6O7uxurqKk6dOnUoTUpzc3Po7e2Ft7c3ioqKDm14zvUGYwyBgYEIDAyEWq1GT08PBAIBMjIyDjyxHBgYiOLiYjQ0NCAuLg5xcbvfR+vq6qDT6XYsEU1LS0NXVxd6e3uRkZHhzLI3EB4ejv/93/+VfexjHytnjKVxzo2kL+CCuG8E27DZYJrZ2Vl87GMfw3vfu/nNMTExEXK5fFsblMNtjEYjLl++DKFQiMLCwgN3Amq1GnV1dRgZGUFubi7y8vLcTuCQ8PPzQ3FxMZKSktDW1obW1tYDzyFIpVKcOnUKs7Oz6Ojo2FUs/zvf+Q5KSkowOTm5442WMYasrCwsLS1hcnLS2WVv4MYbb8Sdd94ZFRUV9SS5cVfEJqzlao/GxkZ+2Hzta1/jP/rRjzb93G233bbpx6emprjJZHLIxvz8PP/oRz+65evv9D1YXl7m5eXlfHJyctvn7QcrKyu8sbGRV1dX8/n5+QN//f2ivLz8sJdAgsVi4VNTU7y8vJx3dnZyvV5/4K/f19fHa2pqdnztvr4+XlpaygHw8+fPc4PB4PDrGAwGfvHiRb6wsODkijdiMpn4yZMntR4eHu/gLrAn7ufDfSPYhu0G02xFRETEurK+/Rpuo1Kp0NDQgOPHj+9KttdZ9Ho9Ojo60NTUhJiYGJSUlOxLbbcb52CMISIiwp5Urq6uxsDAwIHN3GaMITU1FfHx8aipqYFGo1n3eZPJhBdffBFvfetbkZaWhqqqKgQHB+PNN9/clTifWCxGQUEBWlpaoNPpSN+DUCjECy+84BkWFvZbxtj+NkscMm5HsA2bDaahsMF3Mdxmsz9c27W7uLj4wJrEOOf24SW2ucXuJLDrwxhDXFzcunnFMzMH1y8VERGB3NxcXL58GSsrK5iamsKDDz6IuLg43Hbbbbhw4YL9uT/72c/2pNAqk8mQnZ2NxsZGckcXHR2NRx99VBYTE/MXdi3/sh/2lWSrhyuEhjZjbm6O33vvvTwxMZE//PDDe7Lx4x//mJ84cYLfe++9/Mknn9zyeY2NjbympmZdqEmhUPCLFy9ynU63p9feC6urq7ympoa3tbVxo9F4YK97GFwroaGt0Gg0vK6ujre0tOwqBOMMFouFv/TSS/zs2bNcKBRyABseUVFRTv9uDQ0N8ebmZm6xWIhW/g9uvfVWna+v78e4C+yN+/Fwi865ME1NTQgODsbU1BSKiorsOjTFxcUHUo/POcfY2BhGRkZIhb4OG87/ManMZDKB839MKWtra0Nubu6G6WQSieRIzRPYDs6tM6mHhoaQlZWF0NDQfXut1tZW3Hnnnejr69v2eQ8++CC+8Y1vOPVatp+fj48PkpKSnLJ1NSqVCidOnFgZGxtL45xPkRp3AY5G+eh1jK0Er6KiAiKRCCUlJQeyIWm1WrS2tkImk6G0tNRldfM3w2QyQa1WY2VlxT4wxvawVbHYJpVdPaXMbDZjdnZ2nXMwGAzQ6/X2zlnbZDKJRGIffuPj4wNfX99Dl/JwBMYYYmNjERISgra2NkxPTyMzM3Nffq+OHTuGG264YVtHIBQKcc899zj9WowxHDt2DLW1tfDx8SF1cEFBQfjBD37g9YUvfOEvjLEC7qon6D1ydP66r2PEYjHMZjM8PDz2faM5arcA26ZvG1qzvLwMgUAAPz8/u7JnUFCQfcPeSZ9ndnYWWVnbzzZfO/fY5mBmZ2extLRkf23bZDJXdg5SqRQnT57E+Pg4qqqq7B3ClAgEAvz0pz8FADz11FObPufd7343WcGDQCBAQUEBamtr4eXlBW9vbxK7gFWC4re//W3W6urqPQB+TmbYBXCHhlyYpqYmREVF2cNBU1NT9jDRfgiOrb0FZGZmuuQtwGAwQKlUbth4bVO/fHx8nNp4nZ1HYDKZsLS0ZHdMa9cYFhaGkJAQl5TY1mq1aGtrg1Qq3ZfbgcViwenTp1FXV7fhcxcuXMBb3vIW0tdTq9VoaWnB6dOnSd/LlRDR6tjYWOq1FCJyvb90N+vo7+9HcXExxGKxPUxUX19P7gxmZ2fR2dm5L6dCZ1k7rcxsNtulq13xtC0SieydvjZMJhMWFxehVCrR29t7aEN3tmPt7aC6uhr5+fmkncn/9V//hbq6OsTFxa1ruIyJiUFhYSHZ69jw8/NDamoqmpqacPLkSbLqtqCgIPzXf/2X9POf//yfARSRGHUBXOuvyM0GTp48uS4xHBcXh8jISNTX15OUynHOMTw8jL6+PpSUlLiEE+CcQ6VSoaurCxcvXkRnZydEIhHy8/Nx9uxZpKWlwd/f3+WcwFaIRCIEBwcjKysL58+fR2ZmJoxGIxobG1FZWYn+/n4sLS3hsG/nttzBiRMn0NTURFZm+oMf/AAPPPAAbrnlFvT19eETn/iE/XOf+tSn0NjYiNVV+vnxkZGR8PPzw8DAAKnd22+/XZCWlpYjFovfTmr4MDnssqWtHq5aPnqQbPc9GB0d3VBaulvMZjNvaWnhzc3NTtmhYnV1lXd3d/OysjLe3NzMp6amDrxc9aDLR/V6PR8bG+OXL1/m5eXlfHBw8MC7gDdDp9PxqqoqPjAw4FQ55iOPPMIB8FtuucVermo2m/knPvEJLpVK+cLCAl9YWODl5eX78r7NZjO/dOkSV6vVpHYHBgZ4VFTUHABP7gL7pbOPQ1/AVg+3I9hZYsIZZ2D7Qx8cHNyXumtHsVgsfHJyktfU1PCqqio+Pj5+qE7pMPsI9Ho9Hxwc5BcvXuSNjY18bm7uUH82ZrOZt7a28qampj39TDZzAmttv/LKK/b/VygUvLq6mpvNZqfXfTVqtZpfunSJ3PaXvvQlQ0RExKPcBfZLZx/uZLEL48jwerlcvusEsi2RlpmZua815NthMBgwNjaG8fFxhISEID4+nrTCY68c9PD6zeDcOs5zZGQEq6uriI+PR1RU1KElmUdGRjA5OYmCggKHcxprw0EvvviiQwnbgYEBaLVaHDt2zNklb8BWvpqWlkZmU6/XIysrSzM0NJTFOR8lM3wIHI0gq5st2W3OYGpqCi0tLSgoKDgUJ6DT6dDe3o6amhoIBAKUlpYiOzvbJZyAq2CTls7Pz0dRURE0Gg0qKirQ19dHPgXMERISEpCWloba2lqH5h3sxQkA1kH1RqMRo6OjTq54IykpKVAqlVhaWiKzKZFI8Oijj0pjYmJ+T2b0kHA7AkLuvfdeVFdXH/jrOuIMOOfo7e3F2NgYTp8+feAbr9FoRHd3N+rq6hAcHGyfWHatdOvuF56enkhPT8fZs2chFotRWVmJ4eHhfRnVuB0hISEoKipCe3s7JiYmtnzeXp0AYHWAeXl5GB8fx9zcHMWy7QgEAuTl5aG1tZX0e/fud7+bpaamHvnEsdsREHL58mUUFxcfymtv5ww452hvb4fRaMTJkycPdPM1m80YHBxEVVUVZDIZzp49i8jISLdY3S4RCoVITExEaWkpjEYjKioqMDExgYMM7cpkMpw6dQrj4+MYGRnZ8HlnnIANoVCIgoICdHR0bFAsdRZfX1+EhYWRVxE99dRTnmFhYb9kjB3Zcny3I9gBR8dM9vT0IDU1FUKh8MBGU17NZs6Ac46WlhaIxWJkZ2cf2AZssVggl8tRUVEBzjnOnj2LuLi4I1Py6aqIxWKkpaWhpKQECwsLqKysxMzMzIE5BLFYbNe9Ghoasn+cwgnYkEqlyMvLQ0NDA3kozBYiUqvVZDaTk5Nx8803+/j5+d1LZvSAORLJ4vtfvx+tilZS+3nheXjspse2fY7JZEJ+fv6GMZObNdr88Ic/hL+/Pz74wQ86/DU74UiyeDNsCeSCggK7CFdqauqBOQGlUomenh6EhoYiJSXlSIV/XCFZvBs0Gg16e3uh1WqRnZ19YLLkFosFTU1N8PPzw5///GcyJ7CW8fFxTE9Po7CwkPR3d2lpCa2trSgtLSU7mMzNzSEvL089OTkZwTk/2LFwBLiPZ9uwm1GVb7zxBm666aZNv8bHxwd//vOfycZT7kRcXBwiIiJw4cIF+Pj4IC0t7UCcgMFgQFNTE8bGxnDy5Ml9EzJz8w+8vLxw4sQJZGdno729Hb29vQeSPxAIBMjPz8eTTz65L04AsHYdy2SyHZVLd4uvry/Cw8NJQ0TBwcH413/9V6/Q0NCvkBk9SA67fnWrhyv0ETg6qnJ1dZUXFRXt+DWc7zyeci17/R6YzWZeX1/P6+vrnW46c5Tp6WleVlbGJyYm9v219pOjPI/AbDbz/v5+funSJb64uLjvr2frEzh//jzv7Ozcl9ewWCy8traWfByr2WzmFRUVpN+nlZUVHhsbuwwggLvAHrqbh/tGsA2OjqosLy/HDTfc4NDXODOe0hH4lZyAr68vCgsLSeUoNsNgMKC5uRnj4+M4deoUoqKi9uV13OyMQCBASkoK8vLy9v12sDYn8Prrr0Oj0WBwcJD8dRhjyM/PR39/P7RauoiLQCBAbm4u2trayL5HMpkM9913nzQ6OvoREoMHiNsRbIOjoypfe+013HTTTdt+DeeOj6fcK5xbB3N4eXnZG2eotYnWolAoUF1djbCwMBQWFkIikZDad7M3fH19cfr0aQgEAlRVVZEmRoGNiWGJRIL8/HyoVKpNq4mcxVbo0NraSpoU9/X1RWhoKGnfwmc/+1mhh4fHvzLGDm6QOAWHfSXZ6uEKoaHN2GxU5fHjx3cc++foeMq17PZ70NHRwTs6OjaVJaDQJrJhNBp5U1MTv3z58oGOzKTGYrFwvV7PNRoNX1lZ4cvLy/zvf/87X15e5isrK1yj0XCDwXCoMg/OolareUVFBe/t7SV5H9vJRphMJl5bW8vHxsacfp3NaGtr46Ojo6Q2jUYjLysrI9W0evrpp82xsbF/4C6wjzr6OBJVQ9cru6kaksvlmJ2dRX5+/paJ4b3IUVyNRqNBY2Mj4uPjERMT49L9AJxzLC8vQ61WQ6PRrBsms3ZSmUgkAmMMAoEAMzMzCA0NtU8nMxqN6yaTrZ1KJpPJ4O/vD6lU6tLfB4vFgt7eXiwvL+PEiRN7Tug6UiJqMplQU1OD7OzsdVLcFJhMJlRVVaGoqAheXl5kdoeHh2E0GsnkJ8xmM9LS0jRDQ0OJnHMlidF95sg2QLj5ByqVCnK5HKdOndp2Q3J2noFKpUJ7eztyc3PJ/8idxbbpLy4u2ieWmc1meHt7w8/PDz4+PggJCbFv5Fu994sXL6KgoGDTzxmNxnVTyZaWljA+Pg6NRgOJRGIfjuPn5wcvLy+XcQ4CgQCZmZmYmJhATU0NCgoKIJPJdmXD0T4BkUiEgoICe3OlVCqleAt229nZ2Whra0NxcTHZ9zc+Ph4VFRWIj48nCW8KhUJ8+tOflvzwhz98CMC63gLG2C8A3AJghnOeffXXMsb8APwaQCys+/N/cc6fdXpRO+C+EbgwjtwINBrNrv/o9nIzkMvlGBsbQ0FBAekftzMYjUYolUq7hoyPj8+6zXgvJ9+99hHodLp1IzM1Gg0CAwMRHh6O4OBgl5lKtrCwgNbWVuTk5Dg8hnQvzWIqlQrd3d04deoU+Xtvb2+Hr68v4uPjyWxOTExgYWEBOTk5JPb0ej1SU1NXx8bGojjn9iQNY+wsgBUAz23hCL4KwI9z/gBjLARAH4BwzrmBZGFb4L4RHGFMJhMaGxuRm5u7q815NzcDi8WCzs5OGI3GXf1Rcw6oVAD1yOPV1VX7tDKTyYSwsDAkJSXBz8/vUE/gtnBRWFgYAOv3bX5+HgqFAj09PfDy8rJPJTvMpHpAQABKSkrQ2NiIqKgoJCQkbPv8vXYMBwUFITY2Fq2trThx4gTpzyYzMxNVVVUIDQ0lCxFFRUVheHgYGo2GxKZEIsFHP/pRyVNPPfVlAPbeAs55BWMsfpsv5QB8mPUb5g1gHsD+Kw0edpJiq0djY6NlP7TJjwpms3nbZLHFYuH19fVOJc92SiDr9XpeXV3N+/v7d51ovPtuzo8d43yHHLpDGAwGPjIywisqKnhtbS0fGRnhGo3GecObsB99BBaLhS8tLfH+/n5eUVHBa2pq+OTk5L5o7zuKyWTiTU1NvLW1dct1bJcYdpS2tjbe39/vzFI3ZXZ2ltfU1JAm8hUKBW9qaiKzt7y8zKOjo5cASPmavQ1APIBOvsm+B8AHQDmAaVhvDu/Y7HnUD5ctHxUIBL1KpdJ00CqLroDFYoFSqdz2ZNLf3w+pVGo/3e+F7UpLNRoNampqkJiYiJSUlF2f6G67DWhvBz784T0vzy4FUF1dDaPRiMLCQhQXFyM+Pt5lwlOOwBiDj48PUlJScObMGeTk5GBhYQGXLl1Cd3c3aX28owiFQhw/fhwymQx1dXUbNH2otIOys7MxOzsLhUJBsWw7wcHBkMlk6+YfO0toaCi0Wi2ZVLW3tzduv/12z6CgoN00Dt0IoBVAJIA8AE8wxnxJFrQNrpwjiBYIBG9aLJZ0AK6RdTtAvLy8kJSUtG5esY3p6WmMjo7i5MmTJFopV+cMVldX0dDQgNzcXAQEBOzZbno60NcHvOMdwHPPAY7klznnUCgUGB4ehkgkQkJCAkJCQg4s7HOQWkMWiwVTU1MYGRmBp6cnkpKSDiUJPzExAblcjqKiIojFYlIBOcDadFhTU4MTJ07A15duT9uPKqL5+XkMDAzg5MmTJPauaBAtTE5OhnLOTQBwJTT0V755juAVAN/nnFde+f8yAF/mnO+vcuVBXDv24xEZGfn4D3/4Q7K79eDgIO/t7aUyx00mEy8vLycPYajV6n2Z72oLEy0uLvKysjK+sLDgtM2f/Yxza7aA8/Bwzl9+efvnK5VKXlFRwVtbW/ny8rLTr78XDktiQqVS8cuXL/O6ujry+bqOMDk5ySsqKvjDDz/sdDhoM2y/t5Q2ObeGiOrq6khtXr58mc/NzZHZu+uuu3RCofA93LHQ0JMAvnXl32EAJgEEb/Zcysehb+h7WjQgiYqKWlpZWdnTD+ZqDAYDeVPJ4OAg7+vrI7PH+f4N4rbR29vL//rXv/L5+XkSe52d/3AEtsfdd3OuUq1/3vz8PK+uruaNjY2c6me6Vw5ba0ilUvGqqire1NTEV1dXD/S1v/71r3MA/B3veAf5hs055xMTE6QxeBvUG/fS0hKvrKzckH/4yEc+wkNCQnhWVtaWX1teXs5zc3N5ZmYmP3v2LOec89bWVh4bG9vPrXvXb2GN/xsBTAD4GIBPAPjElc9HAngTQAeATgB384PYUw/iRagfUqn0g/fccw/Zkbinp4cPDw9TmdsXx8K5daOmdi42lpeXeVlZGe/t7SXsQOZcKt3oDGy3g+XlZV5fX89ra2sPRCTNEQ7bEXBuTS4rFAp+6dIl3t7efiDd27bE8I033sjLysr2xRHYChymp6dJ7W61cTtDS0vLhnVeunSJNzU1bekIFhYWeEZGBpfL5Zxz6w3XRlFR0SqALO4C++dmj0NfwF4eMTExcqpKBL1ez8vLy0krOKgdC+ecLy4u8oqKin2pNFldXeXl5eX2zZhSjqK4eKMjsD3e9jYF7++nO8lR4AqOwIbFYuHj4+O8rKyMDw8P75vUxdXVQZOTk7yqqor8IMM55zqdjpeVlZGHNltaWvjU1BSZPY1Gwy9evLjhez4yMrKlI/jpT3/Kv/a1r236uV//+teW2NjYF7gL7J+bPVy2amgrGGPHYmJiglNSUkjsjY6Okk7O0uv1UCgUTlXzXI3FYkFbWxtyc3PJJ3zpdDrU19cjNzfXPtSEUqhuO329N98Mw9mzQXj5Zade4pqFMYbo6GicOXMGKysrqK2tJR/fuFliODIyEnFxcfsiVCiRSJCamoqOjg5Su2lpaejr67OebgmQSqXw8/PbUnF4M/r7+7GwsIDz588jPz8fzz33nP1z73vf+xjn/CbG2O5aug+II+cI4uLivnnfffeRlAhYLBZMTk4iJiaGwhwAoK+vDykpKaQb9sDAAMLDw0krLgCrJkpDQwOysrI2VAdROYOdhFY9PABC2ZhrEpFIhJycHKSlpaG+vh4jIyMkG9521UHR0dEIDw9He3s72eZqIyoqChaLhbSkVCqVIiQkBOPj42Q2ExMTMTw87PDzTSYTmpqa8Morr+CNN97At7/9bfT39wOw/gzf8573iL29vT9AtkBCjpQjYIzJOOc33nHHHST2pqenERoaCpGIpsF6dXUVi4uLiIykU6BVq9WYmZlBcnIymU3gH5LV0dHRCAkJ2fQ5FM5gO0dw771AZyfw1rfuyfR1R1BQEEpLS0luB46UiCYkJIAxtqvN0FGOHTuGnp4eGAx0ygkpKSkYGhoiu8X4+vrCYrFgZWXFoedHR0fjpptugkwmQ3BwMM6ePYu2tjb75++//36PgICAr5Msjpgj5QgkEsnt//Iv/yKm0i4ZGRnZscV+N/T29iI9PZ2s5n0/Q0JDQ0MQCoU7vn9nnAHnHB4eAxCLNzYFfvCDwFNPAXsY5Xxdc/XtYHp6etc2HO0TYIzh2LFjUCgUmJmZcXbp65BIJEhLSyMNEXl4eCA6Opp0JsJubgW33norKisrYTKZ7BpgGRkZ9s/Hx8cjLi7OnzGWRbZAIo6UIwgPD3/g3nvv3dhhtQcWFhbg4eFB1oiiVquh1+sRGhpKYg+wxhz3IyRkE2pzVGBrL87AbDajubkZZrMWx479wzHeey9w++3Ab34DrDksudklQUFBOHXqFEZHR9Hf3+9w+Ga3zWICgQAFBQXo6upy+GTsKJGRkbBYLHtyZluRkJCA8fFxGI3GDZ/76Ec/itDQUGRnb+jjWkdDQwOEQiFeeOEFhIWFYX5+HkajEe9///tRUlKCvr4+REdH45lnnsFTTz2Fp556CgCQkZGBm266CceOHUNRURHuueeeDa919913e0ZHR/872Rum4rCz1Y4+AIRnZmaSFVY3NjaS1h7X1taS1d9z/o+BItRVQktLS7y8vHxPJYmOVhNpNBpeUVHBR0ZGOOecf/zjnMfGcv63v1k/PzfHeVgY53l5NFpElLhS1ZAjmM1m3tHRwRsaGnas8nFGO2hxcZFfvHiRvKzUVkVEaXdkZIR3d3dv+PhO5Z+cWxtBb7jhBn7zzTfzP/zhD5xza0/Q4OAgydpWVlZ4VFTUIgABd4F91fY4MjeCwMDAD99xxx0ktwG9Xo+VlRWydv65uTkIhUKn5BiupqurC9nZ2aQhIaPRiKamJhw/fnxPCpiO3AwWFhZQV1eHjIwMu0zwpz61PhcQFGQNC7W2At/73h7fDCG2Pwaz2QzOuX0ozVFAIBAgOzsbISEhqKmp2VK3yFnZCD8/PyQnJ6OpqYn0eyORSJCYmIiBgQEym7GxsVAqldDpdOs+fvbs2R3/5h9//HHcdttt6272sbGxGB8fJ3nfMpkMJ06c8ABw2mljhBwZGWqZTPaZe+65h2S94+PjiI2NJYvl9/X14dixYyS2AKtjEYlEpI6Fc46mpiakpqbay0T3wnYS1hMTExgaGsLJkyfXhdzy8jbaede7gLvuAr79beDWW4Hc3D0vySG0Wi3UajWWlpag1Wrt08psooaMMTDGsLq6iqqqqrU3UQiFQrvMtK2s0M/Pb1MdqMMiLi4O3t7eqKur2zA4iEo7KCoqCsvLy+jp6UFmZibV0hETE4OKigokJibC09PTaXsCgQApKSkYGBjY1XyByclJ/OlPf0JZWRkaGhrsHxeLxfD398fc3NyWhRW74SMf+Yi0o6PjSwAqnTZGxJFwBIyxtOLiYv+oqCinbXHOMTExgdOnaRyyWq2GSCSCD1HWk3OOnp4eHD9+nMSeDblcDi8vL5KKps2cwejoKKanp3H69GmHq7B+8hPgwgWrQml9PeCktpkd2yyAubk5LC4uQqvVwtPT076BBwcHw9PTExKJZMN8hYsXL+Ls2bPrPmYymexTybRaLRQKBfr6+mA0GuHt7Q1/f3+EhobC19f3UGciBAUF4eTJk6ivr0d2djaCg4PJBeTS0tJQU1OD+fl5shu1QCBAamoq+vr6kEt0IoiMjER/fz+MRqPD7/n+++/HI488sunMjbi4OAwNDZE4gne+853493//9/OMMQnnXO+0QQKOhCOIjIy87+677ybRHZ6fn4evr6/TfxA2hoaGkJSURGILsJa0+vr6wtvbm8ymRqPB6OgoSktLyWyudQYhISFQqVS7Hn9pCxG9+93WENE3vrH39RiNRszMzEChUGBpaQmBgYEICQlBXFwcPD09ndqgRSIRvL297T8TW98J5xwrKytYXFzEwMAAlpeXERQUhPDwcAQFBR3KVDIvLy8UFxfj8uXLKCsrw0MPPUTmBADrzSk3NxeNjY04c+YM2XuMiIjA0NAQVlZWSH73GWOIiYnB2NiYw3+fjY2NuPPOOwFYb+WvvvoqRCIR3vWud8Hf3x+rq6swGAxO3wSFQiH+6Z/+Sfzcc8/dDODPThmj4rCTFDs9ALCoqCgVldBaY2MjV12terZHdDrdpm3oe8VsNpMrllosFl5TU8NnZ2fJbK6lvr6ev/baa04l++66i3ORiPPW1t19nU2Tp66ujl+8eJH39PTw+fl5p34eziSLzWYzn5mZ4e3t7bysrIw3NzdzlUq1b9IQ22FTEb3xxhv3RTdoaGiId3Z2ktqcmZnh9fX1ZPYMBgMvLy9f9/3fTiJiLR/60IfsyWIbQ0NDZEnjyspKnpCQcJm7wB7Lj0iyOCMpKcmTooTSYDBgeXmZLPY+OjqK+Ph4snDA+Pg4QkNDSYeuyOVyeHt7OzyfdjeMjIzAYrEgPT0djY2Ne27k+clPrLeDD38Y2KTqbwMGgwEDAwO4ePEilEol0tPTce7cOaSnpyMgIODQwjMCgQAhISHIycnB+fPnER0djeHhYVRWVkIul5PLNWzFD37wA3z1q1/FO97xDnzxi1+EWq3e+Yt2SUJCAhYXFzE/P09mMyQkBCaTCYuLixs+t1Pp5//93//h2LFjOHbsGE6dOoW2tjaIxWIEBgZCqVQCwI7lnzsRHR1NljQ+deoUzGZzFmPs8OaWruWwPdFOj5CQkO/893//N0kNJaVHN5vNvKysjESYjXNr2Rp1GZ1NTG4/xMPkcvm6UlJnher+9CfOAc4ffHDr5+j1et7R0cHLy8v58PDwvryv/Sgf1Wq1vLe3l5eVlfGBgQGy35nNuLpEVKvV8vLycrJb8FpWVlZ4eXk56ftZWFjgNTU1Gz6+U+lndXW1vXz71Vdf5UVFRZxza7l0dXU12fooIwp33nmnFsCN3AX22UNfwE6P2NjYsYmJiT1/s9dSVVXFtVotia2JiQne1dVFYotzzgcGBvjAwACZPYvFwqurq0l7JWzMzMzwysrKDRuAs85gqxCR0Wi0b6RjY2P7GmrZzz4Co9HI+/v7eVlZGZfL5eTvY6s+AY1Gw8vKyvZlvsF+hIgaGhr4zMzMho87GtaZn5/nkZGR9v+vqanhS0tLJGtTKBS8o6ODxNYLL7zAExIS/shdYJ916dAQYyzUx8cnkKJayGAwwGKxkJSnAdaQC5XCqNFoxPj4OKnchVwuh4+PD4KCgshsAlY9pc7OThQUFGxIFDqrTXR1iIhzjpGREVRWVkIkEuHs2bOIiYk51MocZxCJREhJScHp06exvLyMiooKMuG17aqDpFKpPcF79WxiZ9mPEFFGRgZ6e3utJ9U98Mwzz+Dmm2+2/39cXBzGxsZI1hYcHIy5ubk9r20tt9xyC/R6/T8xF/iFdmlH4Onp+c6bb76ZpFhbqVSSyT+srq4CsDaHUDAyMoL4+HiyCgyj0YiRkZF1OidUdhsbG5GXl7elQ3XGGaxtNHvwQT2qq6uh0WhQWlqKpKSkQ6nC2Q88PDyQlZWFoqIiTExMoLGx0SnxNUdKRAMDA5GQkIDm5maSTcyGrYqos7OTzK5MJoOPj8+e9I3Ky8vxzDPP4JFHHrF/LDw8HEql0t4z4gxCoRBeXl4kchsSiQQZGRliAHRNSHvEpR1BRETEp++8806SOk+FQoGIiAgKU6S3gf2Qwh4YGEBiYiKZqipgPZ03NzcjKSlpx2S7M87g1ls53vnOZXz/+2JwfgxZWVlkpb6uhlQqRUFBASIjI1FdXb2vAnKAtexVJpOhr6/PmWVvwNZLMTU1RWZztxLQANDe3o577rkHL7300rqbsEAgQFhYGJmmUXh4ONlN7tZbb5WGh4ffTWLMCVzWETDGPC0WSwpFY5VNSpai6ctisUCpVCI8PNxpWwAwNTVFKoWt1WoxMzND6lgAq7Kqj48PoqOjHXr+XpzB6uoqqqur8cADUwgOZvj3f/d1qIroqBMZGYlTp05hcnISTU1NmwqmbcZemsUyMzOxuLhIumkDQGpqKgYGBkhO3QDsQovLy8sOPX9sbAzvec978Ktf/QqpqakbPh8XFwe5XE6ytrCwMHslkrPccccdTCwW30VizAlc1hEAOFNSUiKk0NqZm5tDUFAQSWxZoVAgJCSELEwxMjKCxMREEluAVe4iLS2NVKNIoVBArVbvOtS0G2cwOzuL+vp6ZGZm4tSpNDz1FHMZLaKDQCKRoKCgAOHh4aiurt5xA9xrxzBjDPn5+ejv7ydVE/X09ERYWNimm+1OpZ+cc/z7v/87kpOTcezYMTQ3NwNYfyvYqfTzoYcegkqlwqc+9Snk5eWhoKBg3Wt4e3uDc24P6zqDTadLr3e+KTgsLAx+fn7+jDHnW5ad4bCz1Vs9YmJinnr22Wd3n4rfhLa2tnWDpJ2hoaGBLywskNhSqVSkDTT7McRbr9fzsrIypwaob1dNZLFY+NDQEK+srNxQ0fX+9++t0cwZXEF9dHFxkZeXl2/5O+uMiqiN+fl58t8Vg8HAy8rKNpT17lT6+corr/CbbrqJWywWXltbay/9tFgsvLy8nGy+8ejoKKeadd7f328fUu8sn/zkJ/UAbuPuqqGNMMbesTbzv1c451CpVCQNVRaLBcvLy06Jtq1ldHTUpQfjAEBHRwfS0tL2pFZqY6ubgW3wjlqtRklJyYYE9OOP767R7FrBz88PJSUlGBgYwODg4LokLJV2UEBAAAIDAzE0NES1bIjFYsTGxm6I7e+k+vnSSy/hgx/8IBhjKC4uxuLiIqanp+0yEVTjJylDOpR5ghtvvNEjISHhUMNDLukIGGMyiUQSEBYW5rSt5eVleHt7k4RKVCoVAgMDSTZao9GIpaUlsvLOhYUFmM1m0g7i6elpWCwWMqG6tc7AZDKhrq4OPj4+yMvL2zTU5mpy1QeJRCJBSUkJVlZW0NHRAc75vgjITU5OOhyHd4T4+HhMTk7uqgrq6mKJ6OhoTE5OArAmuCcmJkgqkjw9PcE5JwnpeHt7Q6PRkHSLv/Wtb4XRaDy78zP3D5d0BABOFRUVkQThp6enyRK7lJVH4+PjiI6OJju99/T0kJaLGgwG9Pb2kspr25xBXV0d6urqEBMTg6SkpG2/B+96F/D+91vlqq+3iWYCgQC5ubkQCoX4/Oc/T+oEAGsp5LFjx9DW1kZW+ikUCpGUlLSr+QKbvbbtd8LDwwPe3t5YWFggWR/VrYAxZu8pcBaZTIaAgADpYeYJXNIRxMTE3PbWt76VpPNrZmYGFDcLzrk96Uxha3x8nKyyZ3FxESKRiCxkBdCEhDYjKioKOp0ORqPR4ZvG9RoiAqwbziuvvIIf/ehHuOGGG/DHP/6RtJx2P0JEMTExmJ2ddbj6yabhY2NiYmLd7wZlxY+tp4DKFlV4qLS0VAzgHImxPeCSjoAqP6DT6SAQCEgGiCwvL0Mmk5FUCy0uLkImk5FtskNDQ6SVRzMzM2QhobWYzWbU19cjNTUViYmJDpeWXs8horXhoB/+8Ifo6ekhbQgDrCGiiYkJaDQaEntrJaAd4Z3vfCeee+45cM5RV1cHPz+/dTfvoKAgqNVqhx3Ldvj4+GBlZYUkpBMYGIj5+XmSn8dh5wlcbh4BY0yWnJxMkh9QKpUktwHAGhaiCjFRNpDpdDqsrq6S5Ro45+jt7UV+fj6JvbV2W1paEBkZue69bzbpbDPWhoicmWjGuXWGgFqtxuLi4oYNZnl5GRcvXrT/v0Qigb+/v/3h7GyD3XB1TkAkEqG9vR2Dg4NISUkhex2hUIj09HT09fVtOhDp9ddfx2c/+1mYzWbcc889+PKXv7zu82q1GnfffTfGxsZgMpnwhS98AXfffTeqq6uRmJiIu+66CxcvXsTc3Byio6Px4IMP2r/nn/jEJ/D2t78dr776KpKTk+Hl5YVnn312nX3GGCIiIqBQKJz+u7GFdFQqldNKAwKBAL6+vlCr1fD393fK1lvf+lYYDIYzThlxhsMsWdrsAeDs7bffTiLIf/nyZTKxqYqKCqdKKG3YSuKoFBt7enrIytg453x8fJy3t7eT2bPR19e3qd3dCNXtZei92Wzm09PTvKOjg1dWVvKysjJeX1/P+/r6uFKp3FCauLZ81GKxcI1Gw6empnh3dzevra3lZWVlvKamhnd3d/O5ubl9E8DbqkTUbDbz6upqPj09Tfp6FouFV1ZW8qvnfphMJp6YmMiHhoa4Xq/nx44d2yC2+N3vfpd/6Utf4pxbBQkDAgK4Xq/nbW1tfGpqimR9i4uLvKGhgcTWzMwMb2trI7E1Pj7Oe3t7SWxlZGSsAPDj7vJRwM/P73RRURFJfmB1dZVk2pFerwdjjCSUs7KyAi8vL5IQk8ViwfT0NChE+Wz2BgcHN+3MdIbp6WmoVCpkZWVt+Nxums52EyJaWlpCZ2cnLl26hLm5OYSGhqKoqAg33HADCgsLkZqaitDQ0G3DhowxSKVSREREICMjA8XFxTh//jzy8vLg7+8PuVyOS5cuoa+vb8uh8Xthu+oggUCAgoIC9Pb2Ymlpiew1GWPIzMxET0/Puo/X19cjOTkZiYmJ8PDwwJ133omXXnppw9cuLy/bb1uBgYEQiURISEjA6Ogoyfp8fX2xvLxM0rkcFBQElUpFEtIJCAjYdH7CXsjJyREAoJ1R6yAu5wiCg4PfXlJS4vTdW6/Xw8PDg6ybmDLERGVLqVQiODiYrMtZLpcjPDycNEG8tLSEvr4+5Ofnb1nCuxtnsF0VEeccSqUSNTU16O7uRlBQEM6dO4fs7OwdN31HWescTpw4gdLSUkilUjQ2NqKpqcnpTcGRElEPDw+cOHECzc3NTonVXY2t1n+tkuh2pZ027rvvPvT09CAyMhI5OTn48Y9/DIFAAB8fH1gsFpLcA2MMQUFBJFU6trVROFIvLy+y3EpRUZFnQEAA3TzZXeByjkCv12cUFhY6bYcibmeDUluI0hal+J3JZMLo6Cjp/GWz2Yzm5mbk5+fvuAnvxhlsVkU0OzuLiooKTE9PIycnB8XFxYiIiCCV2tgMkUiE2NhYlJaWIj4+Hn19faipqdlTbf5u+gR8fX2RlpaGlpYW0uRxRkbGuoT0ZravPly98cYbyMvLw9TUFFpbW3HffffZN9nY2NhruuKHMQYPDw+S3oRTp06xwMDAm5w2tAdcyhEwxry9vb09KU5ui4uLJI7AbDZDo9GQhZg45yQnbq1WC5PJBIoRngAwPDyM2NhY0tLEnp4exMbGOiz256gzWBsi+u53zWhra8Pg4CCKioqQl5dHIi64W2wn1pMnTyIzMxPNzc0buoK3Yy/NYhEREfDw8NhwQncGX19fSKVSuwT0TqWdAPDss8/iPe95DxhjSE5ORkJCAnp7ewFYBfUUCgVJSIdyFkBoaCiZU/H39ycJD+Xn50On09FqxzuISzkCAHlZWVkkJRmLi4skdfW2mwVFiImyimlyctJhJdCdsElhx8fHk9gDrOEFtVq9awkNR53Bu94FvOc9OnznOwxTUyEoLi4mnfXsDP7+/igtLYXRaER1dfWO4m7OdAxnZ2djYGAAOp1u08+//vrrSEtLQ3JyMr7//e9v+pyLFy8iLy8PWVlZOHfuHFJSUux9BYWFhRgYGMDIyAgMBgOef/55vPOd71z39bGxsbhw4QIA6+94X1+fvZxZKBQiMDAQKpXK4fe0FQKBAN7e3iSd0LbDJsWgHipH4OHhAR8fHwlj7OBPMoeRod7q4efn96VHHnmEpAyjrKyMpKJjaGiIj4yMOL8gbq1iuroqY69sJtK2V8bGxkjHbppMJl5eXs5XVlb2bGO7aiKj0cjb2tr4a6/V89BQy66qiHaCWnRufn6eX7x4kQ8MDGz6+0ghIKdUKnldXd0G+45U/CwsLPCMjAx75ZlN6K6mpsb+u/rKK6/wlJQUnpiYyL/zne9wzjl/8skn+ZNPPsk553xycpL/8z//M8/OzuZZWVn8V7/61brXUCgUZJVoY2NjvK+vj8RWS0sLyfzhlZUVfvnyZYIVcX777bdrAJzlB12tedAvuN0jOTn5YkVFhdPfTL1ez6uqqpy2wznnzc3N9qHYzmAbTk/hnPR6Paf4PtmoqKjgGg1JxS7nnPPOzk4+NDTktJ3NnMHS0hIvLy/no6Oj3GKxODT0fjfsh/qoyWTiXV1dvKqqal25KoUTsNHc3MzHx8fXfaympoa/7W1vs///ww8/zB9++OF1z/npT3/Kv/a1r22wp1AoeCuR7Kur/u6PjIyQ/J5aLBZeVlZGsCLOH330UYuvr++X+QHvvS4VGtLpdOkUjUxUYSHAWvVCEYefm5tDcHCwy4WYFhcXIZFIyMIqGo0Gc3NzJKqqV4eJFhcX0djYiBMnTiAuLg6MsSOhRSQUCpGZmYmkpCTU1tZCp9ORC8hlZWVhcHBwXTjNkYqf/v5+LCws4Pz588jPz8dzzz0HwBpDX1hYIOnmFQqFkMlkZCEdgUCwZShsN/j7+0OtVjtthzJhnJeXx0JCQg5casJlOosZYywuLk7m5eXltC3KRDGA3ZVnWizA4CDQ1AQ0NgL9/cDLL2N2dpa0BDUtLY3EllwuJ80NUEth26qiqqqqYLFYUFRUtGFW9OOPA2Vl1iqi+nrAVSdbhoeHQyQS4XOf+xyefPJJUgE5Dw8PRERErKv84pskVa/+uZhMJjQ1NeHChQvQarUoKSlBcXExUlNTERUVRZY7slXpUByqQkJCMDs763SXMVUJKfAPp+Jst3JOTg5MJtOBJ4xd6UYQGhwcTJYopnAEG24DS0vA2glHFot1o//Nb4DPfx44fx4ICADS0oC77gJ++ENgcRFgjKyclXLspslkwvz8PEJCaEQPl5aWoNVqnf5juBpfX1/o9XqIxeINMwuAo6VF9Itf/AJPPvkkzpw5g9/85jekVVpJSUkYGxuzn+IdqfiJjo7GTTfdBJlMhuDgYJw9exZtV65Wu9EL2gnKWQBUTVy2Ax6F7hBVwjgsLAxms3n7oeD7gCs5gtSkpCSS9ayurm44Ne6FDQ7l6acBHx8gOBgIDwe8vKyb/r/+q3XTv3TJ6izWkp8PzjkMBgNJQxNliMkmq00thU2pxbO0tITW1laUlpYiJiZmy2qioxAiWhsO+t3vfkfeECYSiRAfH7+rip9bb70VlZWVMJlM0Gg0uHz5sl3O3NPTExKJhCSkI5FIwBgjCZ/4+fmRhHQobfn5+ZF1GPv4+AgPunLIZRyBQCBIS09Pd7rA3rbhUmxGGxzBuXPAV79qPfUrlYAjv9QFBWSOCaDvcqaar2DTi99uEtVu0el0aGpqQkFBAby8vHYsLXVlueqrcwIRERFIT09HfX39tjX2jpR/AkBDQwOEQiGampqgUChgNBohEonwxBNP4MYbb0RGRgbuuOMOZGVlrZv1m5GRgZtuugnHjh1DUVER7rnnnnWzhSmllsPCwkhseXh4wGg0bhr62i1UjkAmk5HMQwaAxMREBoBOVdARDjo7vdUjPj7+l7/73e+czrorlUre0dHhtB3OOb948eLWYmj19ZynplpLVrZ7vPOdfOHBB7n8N7/h3IlyShvl5eXcbDY7bcdsNpNVcnDOeWNjI5+bmyOxxbm1EuPy5ctcoVBs+Nx2paXOVhHtR9XQdtVBvb29W4qWOVL+aXveDTfcwG+++Wb+hz/8gQ8NDfGBgQGStet0Ol5ZWUlia2lpiazMsr6+nkRQcn5+njc3NxOsiG+oCtsr//Ef/2EAcCe/HquGBAJBXk5OjtN2qKp8dkwUFxZaYxAPPABsJWMgFAJ1dfD/5jcRe9ddgK8vkJ0NfOhDwE9+AlRXr8857IBOp7NXTTiLSqVCUFAQyc3JJoVNeRuYnJyEWCze9Paz3c3A1UJEO1UHpaSkYGZmZtNTqSOCbwDw+OOP47bbbrPnZmxzfjnBidnWBU813pHq1EwVk/f19SVLGNskqZ0lMzNTHBERUUSwJIdxGUdgMBiiKDTWdTodSSmkQw7F0xP4/vetG/pmVTwlJYBCgYY//QnGF14A/vM/gfh44I03gM9+Figt3ZVzUKvVZGWxlPMVbJpHVLkBnU6HgYGBdSGKq9nOGTz+OBAYePghIkdKRG3jKNva2jaEiBwp/5ycnMSf/vQnfOITn7B/TCwWIygoyC4T4SxUcgw2BV+K0k+qkA5lwlgqlZK8t+zsbHh5eTkvuLYLXMYRiEQiD5HI+WpWnU63aWXJbtlV5VFxMdDSAnzuc8DazTA/HxzAip8fxLfdBjz4IPDXvwLT08DEBPDSS7tyDlTVUJzTjt2cmpoik8LmnKO9vR2ZmZk7VtRs5QxcoYpotwJy4eHhG+b8bnaiv9rZ3n///XjkkUc23Fzj4uLIJKAp8wRUJ3mqHgCA7lbg6elJ4giSk5NhMploJlc5iEv0ETDGZBkZGSROicoRrK6u7i4pK5UC//3fwLvfbT2KDg1tnShmDIiKsj5sVRycA1NT1v4D2+ONN4ArDT4QCBATHw9xcTFw8iSQnw/k5QF7SEIvLy/D29ubRL5apVIhICAAFE4c2D4ktBm2PoOrJ529+93bTzTjnEOj0WyYVLaysoLKykp4eHjA398ffn5+9slkjrKXZrHk5GRUV1cjPDzcfutzpPyzsbERd955JwBrRdmrr74KkUiEd73rXdDr9STVaj4+PtBoNDCbzU7/ztg2cGdvox4eHjAYDOCcO30TtY2vDAhwrmrT09OTxMkFBgbCZDLRqEk6iEs4AgARVLXnJpOJZFPas0MpLbUGp7/6VaCgwPFTvAPOQfPmmwi6cMHatwBYcxMZGVanYHs44Bzm5ubIegcoK4+MRiMGBgZQWro7SfatnMHjjwMXLqxvNDMYDJDL5ZicnIRUKoW/vz+CgoKQkJAADw8PVFRU4NSpU9DpdFCr1Zifn8fQ0BA454iJiUF0dPS2m+FeO4bXhohKS0vBGFtX/hkVFYXnn38ev7H97K8wMjJi//eHP/xh3HLLLXjXu94F4B+1+xTjHQMCAqBWq53OA/n5+a1zbs5gq9RxVhnY09OTZLAQVdhLIBBAJBIdaFukyziC8PBwsjAVVQJ0zzcLmQz48Y8BAOquLgQHB+/NzhrnoL/xRvS97W04ferUjjeHnZzD4uIiybB7W4jJVnfuLLZcw16arDZzBrYQ0XveA3z3uxbccUcvZmZmEBcXh9OnT2/6OowxuySCTCazn8C1Wi3GxsZQUVGB+Ph4xMfHb/g9u9oJXLhwYdtZv//3f/+HRx55BIA1kfrkk09CJpPZHfXa8k+z2YyPfvSj9vJPAOvyApsRERGBvr4+kvnYtpCOs46AcpCLbU0UjsBW/uysHQpHAABeXl6MMebNOd9eupaKgyxR2uoB4I7/+I//cFo/0mg0kglSUZUR1tfX8+XlZaftKBQK3tnZufknLRbOJyY4f+klzr/xDc7f8Q7rcF9bCatAwHlWFucf/CDnP/4xb378cW4iUEGlLAe0lbMajUan7GxWWnrbbTouFJr5X/4ytmO57E4/d6PRyDs6Onh1dTVfXV21f/zqElFHSj+rq6vtgoavvvoqLyoq4mq1mtfU1OzyXW+OTQyNotx4YWGBNzU1EazKWmZJMf97fHyc9/f3O21neXmZ19fXO23HNo+cgnPnzq0ASOEHtAe7xI3A29s7Ljo62umrEFV+gBK9Xk8yiGZbiYpd5hyOA9bE9B7CSmuhrDyanJxEWFiY02G9tTeDwsJCDA8P46MfXUBFRSG+/vUY3Hijc1pEIpEI2dnZUKlUqK+vR2pqKn79619vCAfV1tbaSz8B2Es/MzMz7bZOnTpl/3dxcTEmJibslWoUZdBrxzs6G3qlLLO0neSdbYykOslLJBKS8ljKjvqIiAgBgAgAAzs9lwKXcARBQUGZFENWqByBrSuTApPJRKIns7S0tLtY/BbOYaGrCwt//zsSFxb2FFZay8zMDAoKCpx7Y1cYGxvD8eM0c7vj4uLAOUdZWRmCg4Nx881F+J//YXjPe6xVRN/4hvOvERQUhNOnT+Nzn/scnnjiiQ05gc1KPy9fvrylvWeeeQY333wzACAhIQFyuRwUfTXh4eGYmZlx2hEIBAIIBAKSHJyfnx+WlpZIHAFFKEYsFpMMqAGsBwWj0ej033xUVJQYQOSOTyTCJRyBWCxOoCg/1Ov1JI6Ayg4naOixodVqne+PYAwLXl4QvOtd1pJVwKFqpXXOoaAAyMsDl0phMBhIbjurq6tgjIFCedaGVquFl5cXdDodLBYL3v1u4bZVRHvhRz/6EZ544gmcPXsWjz/++Lo//s1+9ludGMvLy/HMM8+gqqoKgLVuv6enBxaLxenmwYCAAPT39ztlw4btVuBsnkAqlbpcTB4ASQWS7XZB4AhEPj4+sU4Z2QUu4QgsFksgRdWQTqcj2Zio7FBVMAHWhhcKW2q1er2ssKNhpTffXOccLGlpyElIADo67M4Be9zIx8fHERtL9zs/PT2N5eVlnD59GmNjY/YE8uOPCzdUEe2VqwXkGhoaEBQUZFeFdaT0EwDa29txzz334LXXXrP3dQgEAoSEhECpVDpdkWU77VJsclQJY6rqGpFIRNIIZrNFcXu3OSdnE9gBAQHw8fE5sBuBSzSUmc1mH4pGKarQkKvZobxZOCRhbXMO73znP5rgpqbWNcEZIiLg39BgzTWcPm1VZV3bBFdTAzhYHaJUKslyDQaDAb29vcjNzQVjbF3Tmb+/maTR7OrqIC8vLxw7dgxtbW32n5Ujyp9jY2N4z3veg1/96ldITU1d97moqCiyJi6ZTLbj3GRHsNXbO8t+nOSdhWpNVHZ8fX0hkUj2WG64e1ziRmA2m6UU0glUG6+rhZhc4mZx1c1hqLMToSEhCDWZtr05bBZWWntzsJ3oqN5fR0cH0tLS1t3o1iaQ3/nOIrz//cI9h4i26hMICAhAUFAQhoaGkJyc7FDp50MPPQSVSoVPfepTAKzfg8bGRgD7k5x1doYF1Sbniid5W0jHVb5Hfn5+EAqFBzaXwCUcAedcTKHVT3mSpxCuowxVudrNQq1WW0+xHh67DiutdQ6rqanwI/heA9b+CKPRuGkIZq0zeOyxIly4INx1iGinZrHU1FRUVFTYeyHe/va34+1vf/u656yt/X/66afx9NNPb/paazVwKLp5KRrLqKprbFCEq2wbL1VIx1kkEgmJA79yMPZ32pCDuIQjEAgEzmsdACTZesD1NnAqO1QVTID1e72p895lzsEXQK4DNwdHGBoawnbChTZnMDRUj5/9rAjvfa/Q4SoiRzqGhUIh4uLiIJfLkZycvKu1b4btVuCs9AFVExflSd6Wu6DawF3lJE95I7BYLDQKkw7gKo7ApbqKqWr/dTodiVooVYjp0G4W2ziH4T/8ARFTU5B2d+86rLQWg8GAlZWVHROZNmcA1OPOO0/i298W7Bgi2o1sRExMDKqrq5GUlESWnKXQwHHF6hqqkzzFLYXqJC8QCLYdNOQo/v7+sFgsNNOsHODQHQFjjMXHx7tE0tqGxWIhEWSjKq90tWookpvXFecwfvw44j7zGevshl2GldY6B4VCgcjISIc2KJsz+NCHmlBWVoAPf5htGSLarXaQWCyGt7c3lpaWnD4E+Pv7kyiICoVCks0JsL6/LW+Du4DqJO/h4UHiCKg2cIFAQBKC9fPzg8lkoqun3oEdN2DG2C8YYzOMsc41H8tjjNUxxloZY42MsaI1n/sKY2yQMdbHGLtxzcfPX3nuD656CU+KzYkSihMPYHUoFHYoHYor3Sw2DP9xoFoJ8fFW53BVtZL3pz+NyBdecLhaKS4uDhkZofiP/+jfsoporwJyVMPVKRPGgGtV19jUQ52FauOlssMYI7FzxdE6dFBnjN10Zb8dZIx9+crHIhljZYyxlxhjO9ayOvJC/w/AEwCeW/OxHwB4kHP+GmPs7Vf+/zxjLBPAnQCyYO2K+ztjLJVzbgbwSQBnAHyHMZbOOe+1rYEqbk0F1QbOOSeZJkblmChzKFQOZccmOQdzDt41NfD461+tn3cwrBQXF4f3v1+OsrI5fPvbQbj11n98j/fqBADrSX5iYmJNGGpvCIVCsgQ/1UneZsdZKDdeipM81QZOtZ4rtnb8o2eMCQH8FMA/A5gA0MAYexnABwF8BkAigLsBPLWdnR0dAee8gjEWf/WHAdhKPfwATF35960Anuec6wGMMMYGARQBqIX19sEBWACsfYOUKQISqDZeypsFlUOhsENVzrrnipirnIPFYkHNpUs4n5q667BSXFwcfvCDcbzlLUZ8+MNiPPooc8oJANZrfVdX1+7f1z5C5QjcG/j2UH1/dkERgEHO+TAAMMaeh3UfFsK61169327KXv+a7wfwBmPsv2Dd4G3qWVEA6tY8b+LKxwDgaQA1AMo55z1rniOgFGuiwpUcgauFqqgcClUuxmQywUMi2VOHNDIykJefj7/8cyq++Psb8PWvD6Oubu9OALBW11CdCq1vw/mfv6ttmFTruVZDQzZbDhAFYO2AhwkAJwE8CuBXANQA7trJyF4dwScB/Afn/I+MsTsAPAPgrdjc83AA4Jy/AeCNTT7vko6AAsqN15XsUL0vqpvOljeLXZSynlY8h08eAz54E3C37L34xYu/cSqMRjVG0TY5zdmT/NTUFOLi4pyWPpiamoJYLHZaxE6lUoFz7nT4bGlpCWNjY0hPT3fKjk6nw/j4OE6cOOGUHcA6+ImCsbExR8rFNt1zOedyAGcdfS3miPe6Ehr6K+c8+8r/qwH4c875lTiWmnPuyxj7ypVVfO/K894A8C3Oee02tgNzc3OnH3vsMac7ylZWVpz+RQesoxydrWYArGJqUqnU6c1Oq9VCLBY7HY7R6/VgjDm9qdhGBDqbwDaZTDAajU6L6VksFmi12o0jQXeBaGYGTZV/wf3Bv8bt+jvwvvw7nJrpTCEjbbPj4+PjtONdXV2Fp6en0zcwrVYLkUjkdK7JVunj7O+Q0WiEyWRy+nfIbDZDp9M59TsEWA9bDsm4OMC73/1u48LCwrZ/rIyxElj32Buv/P+6PdhhHBlaACAeQOea/+8BcP7Kv/8JQNOVf2cBaAMgAZAAYBiAcAfb/rm5uSubzGbYNVRDIajs1NXVcY1G47Sd9vZ2Pjc357SdgYEBPj4+7rSdyclJ3tfX57SdxcVFkmEnzg4k0mq1vLy8nE8oJrjwQSH/5+//M3/ooYf2/B4pB5RQDkhaWXH+z6yjo4PPzMw4bWdoaIjL5XKn7UxNTfGenh6n7SwuLvLm5man7ej1el5VVeW0Hc45j4mJWeA7782iK/tsAgCPK/tv1k5fd/XDkfLR38Ka7E1jjE0wxj4G4OMA/psx1gbgYQD/dsWpdAH4PYBuAK8D+DS3Vgxth4UynkrBtRpPpUyIUXSYUtW32zpe9/I90ul0qKurQ05ODqLCopAgS4Al3AJ/f3/87ne/25OE8+rqKqmkNgVms9mlCg44YbiTKl/lSuuxmXPg9UwA7oM17N4D4PdX9uFd4UjV0Pu3+FT+Fs//LoDv7mINFqq2dSpsG6+zvxiuVmEhFApJNnAqzRmxWEymXbOXQeZrnYAtDJTmnYZaZS1evu9lPPPMM/jd736H973vfRvUQbdjcXFx62lyu2DNqc9pqLrlqRwKZSWcK+XPqOzYbDn4vFcBvOrMa7lC3aZWr9e7VLaYqsuQ6iRPpfFCtYFTCnTZ8g3O4ufnt6smrs2cAACk+qRiXjuPGcMM7rnnnj3dDLYdK7oLbMN1KKA6qVLqXlFUjLnaSZ6ykMKBaAoZh+4IOOdms9nsUrEhyg2covmGapAH5QZOdZKnEkQLDQ11WL9/KycAAKne1pN/01QTpFLprp0B5xyzs7NO6wMB1psFhVYV1a0CoLtZUNmh6mlxNYeysrICoVBIJ/W6A4fuCADXSxJQbeCupmhIZYeyacbf35+k1NLPzw+rq6s7OqjtnAAAJHonQiQQoWm6CQB27Qzm5+fh6+tL0sFNFWKi2nQB17tZUM4pp/iZUTmUhYUFCIVC56cAOYirOAKSKxBVEpNy46UKxVApLFKd5KnyFjaFTYr1xMXFbSvStpMTAAAPgQeyQ7PRONVo/9hunMHQ0BASEhL2/D7WQuUIXHGeBaXCL9UQKZcRZIS1bFggEFxfjoBzbqbYVCg3XqoQiivZoTzJe3t7k4wt3G1sfztiYmIwNTUFrVa74XOOOAEbBREFaJpuWve9csQZqFQqmM1mkrAQ55xMftzWi+AsrnizcDWHQmVncXHR1q91ILiEIxAKhbrl5WWn7bhaLN0VY/IAzcmO6iRvc94UaxIKhcjKykJ7e/s6e7txAgCQH5mPee085Gr5uo9v5wxMJhM6OjqQu9vZl1ug1WqdbpKy4b5Z7IyrOYKlpSVwzuedNuQgruIIVhcWFpy2c62GdChP8lKpdNMT826hPMn7+PiQSTKEhoZCIpFgfNwqv7JbJwAA+RHWyuimqaYNn9vKGfT09CAuLo6symd2dtapzua1qNVqkqSzRqMhcU6ueLNwtXnnV6RFnN8UHcQlHIFAIFBTnS5dKRTjijF5qg3cz8+PbPOOjo62b9wUZGVlYXh4GAqFYtdOAABywnLWJYyv5mpnUF1dDY1Gg/j4eKJ3AExMTCA6OtppO5xzmM1mkrg1lUOh2nSpErMA7c2Cws7S0hK0Wu2M04YcxCUcAed8ampqaucn7oCrhXQolQipnArVBi4Wi2E2m0mcU2hoKObm5kinaOXm5qKhoQFxcXG7Pll7ijw3JIyvxuYMfHx8cOHCBfj6+pJtSisrK2CMkZy+l5eXSfS3ALr+CFdL8Nqg+PlRvbfp6WnL3NzciNOGHMQlHIFGo+mbmJhw2g51oxMFVCd5mUxGkpyliu3bbM3POx/GFAgECA0NxfT0NMGqrH+MbW1tOHHiBORyOfZyyNgsYbwWzrldrTIgIAAvvPDCnuQoNmNsbAyxsbEktmZnZxEcHOy0Hc45tFotySa3srLitLgbQBeGccWbxdTUlIFz7vzp2EFcwhEoFIq+iYkJp3dLqlPztXyStzlLivcXHh4OpVLptB0ASEhIwMiI8wegddpBUVE4deoUpqen0dDQsKufw1YJY8B6yq6urobZbEZpaemeO5A3w2QyQalUIjIy0ik7NhQKBcLCwpy2YzvpUmyYlDcLV2pus0HxPZqamrIAoDkZOYBLOAIA05OTk04fwV0xJk91S6Gst5dKpSRrCgkJwezsrNN2AGuHsaenp1M3jM0Swx4eHsjPz0d0dDRqamowPDwMk8m0o63NEsY6nQ49PT1obm5GdnY2MjIyIBAI9tSBvBVjY2OIjo4mSYAaDAaYzWaSEBNV5RFAF65ytUofypuFUqnkuB4dwfT0tNOdYJQDbqgqfnx8fEgGkPv4+JCEhgC6hLFQKIRUKgVF6S8AJCcnY2BgYE9fu1N1UEREBEpLS2E2m1FZWYm2tjbMzs5u2UFuSxhfHr+M6elpNDY24vLly5DJZDhz5syGTZHCGZjNZsjlcrKk88zMDMltAKA7xRuNRgiFQhJHp1arSWY+uGLO4koVJc0pywFcxRFMUYUYqE7yVJVDlCd5oVBIIn0REBBAEtsHrOEhRzV+dsLf3x8ikWjXMX1HS0TFYjFSUlJw/vx5REREQKFQ4PLly7h48SIaGhrQ1tYGrVaL1tZWtDW1IV4aj4v9F7GwsICkpCScPXsWsbGxW25izjqD/v5+xMTEkFT4AHRhIcAqnUHhCKgqjwBrZQ2FLVfrRQAAo9Fo4pwfmPSOqzgCFUUfAUB3kpdKpSRiaJRlllS2goODyUI64eHhmJqaIsup5OTkoK+vz+Gf4V76BBhjCA0NRU5ODkpLS3Hu3DlkZGQgNjYWYrEYcXFxyMnJwbnUcxjSDiEjIwMBAQEO3Tj36gwWFhagUqmQlJTk0PN3wmg0YmVlhWSjpJoCBtA5AovFArPZTCI4p9FoSPo/KENVnHPnT6G7wCUcAefcYjKZnD/qgu4kT7Xp2gaZu5Iuj0gkglQqJQk1SSQSyGQyskokDw8PpKeno6OjY8fn7sUJbAZjDN7e3ggICIBIJEJAQAC8vLxQEFmwZcJ4O3brDMxmM9rb25Gbm0sW3pycnERUVBSJvZmZGadnFNugyjVQjZMF6FReqaqY5HI5PDw8DiwsBLiIIwCsTWUUp1RXS84C1vg+RRydSqkTAMLCwshCOjuJve2WiIgIMMa2DRFROYHt2K7DeCd24wz6+voQFRVFtrFxzjE2NoaYmBgSewqFAuHh4SS2qDZwyuE/VBs4VRVTd3e3bdrjgeEyjkAkEvW0t7c7bYeq3p5SA4fKqXh7e5MlZilLP4ODg7G0tESqh7RdiOggnACwc4fxTjjiDBYWFjA/P08WEgKs8XyZTEZWCUMVi6dOFFOsiVLTaWVlhaQaqru72zI9PV1NsCSHcRlHoFKparq6nHeClCd5Ly8vEl0eqjUJBAJ4enpidXXVaVuenp6wWCwkjXOOSEDvFluIqLW11SkBOWdwpMN4J7ZzBkajEW1tbcjLyyOteBseHkZiYiKJrfn5eQQGBpKsj6q5DaBzBJRlsVSOoKenx6DT6boJluQwLuMIFhcX23p6epw+UlLJIwO0ujwUJaQAbZVOaGgoZmZo5ExsEtAUVU02IiIi4Ofnh7a2NnDOD9QJ2Nipw9gRNnMGJpMJ9fX1SE1NJZOAAOxiZSRS2ABtWIjKli1R7Er6SUajESKRiMRhDg0NmQHQtKk7iMs4AgD9/f39O3f67ABjDGKxmOSkS5mcpdLloYztR0ZGgkLaA7D2FCQkJGBwcJDEno20tDQIhUK0t7ejtrb2QJ0AsH2H8W642hm89tpriImJIesgttHT04OMjAwSW7axm1QSFVSn75WVFdJEMcWaqBLOAGxSK5MkxhzElRzB8NjYGIkhqoofytJPqoSxVCqF2WwmOXn7+PjAZDKRhL8AIDY2FkqlkiRZb4MxhuTkZExOTsLX1xeBgYFkth3BmYTx1UilUnzkIx+Bl5cXWlpaSL9PADA3NwehUEh2G1AqlQgKCiIZMk8ZYqKc5UxV8knVcKfX62E2m7UH2UMAuJAj4JwbdDqd0ZXKLG1SDBQJ48DAQMzNzTltB7DeCqgSvbGxsaBywAKBAKmpqejr6yOxB1hzApcvX0ZRURHEYvGGoTP7jbMJ47UYjUa0t7fjlltuQUBAAIk2kQ3OOXp7e8luAwBIu5wpQ0wqlYrkQKDT6SCVSl3KOfX09EAikTh3/dwDLuMIAEAsFiuGh4edtkNZZkk1yIWySoc6PDQ1NUUmAR0REYGlpSWS28/anEBwcDBycnIgkUjQ2NhImovYDoqEMQCsrq6irq4OcXFxSEtLIxWqA4CpqSl4e3uT5Ru0Wi0MBgOJhANAq4K6uLhIcuuhDOdQhava29thMBic+2XbAy7lCEwmU2Vtba3TdigTxpS3C5PJRLKB+fn5YXl5mWTzFolEpBLQjDHk5OTYE7x7ZbPEMGMM6enpiIyMRFVVFZlj3QlnEsacc4yMjKChoQFZWVmIiooCQKNNZEOv16O/vx+ZmZl7tnE1IyMjSEhIILG1srICqVRK0gW8sLAAf39/slM8pX4SxZrq6+sN4+PjF5w2tEtcyhGMj4+/UVdX53SWlzEGkUhEtulSjlGkqNJhjCEwMBAqlYpgVXQS0Db8/f0RFBS058TxTtVBUVFRKCkpgVwuR0tLy77fDvaaMF5dXUVtbS1WV1dx5syZDeEMKmfQ0dGB9PR0eHh47Onrr8ZsNpNLYbta5RFA5wgo9ZOam5uNAJyPQ+4Sl3IEAJqufCOchqr0MyAgAFQ6SJSln7aQDgVeXl7w8PAge5+Atdpnampq1yEiR0tEPT09UVhYiJCQkH2/Hew2Ybz2FpCWlobs7OwtE67OOoOpqSkwxhAREbGrr9uO8fFxREZGkjR+AdYqGCrxu5mZGYSEhDhthzJRTNmLMD4+zgEc2GQyG67mCOQUA2oAujyBp6cnjEYj2e1iaWmJJKQTHByM+fl5h7T1HSE1NRW9vb0ktgBr4jg3Nxetra0Ov9/d9gkwxhAdHY2SkhKMjo6iqamJrF9jLY4mjDnnmJubQ01NDVZXV1FaWurQ+9irM9Dr9ejr60NOTo5Dz3cEs9mMkZERsoY0tVoNiURCsuGurq7C09OTLMTk5+fnUoN25HI5hEKhkh9kNcQVXMoRcM65SCRSyuXOJ82pbgSANaRDoYNkC+lQSEAzxhAZGYnJSZpyY39/f4jFYjJVUpvNsLAwdHfv3CTpTLOYp6cnioqKEBMTg66uLtTV1WF2dpasuminhLHFYsHExAQqKysxNjaG7OxsZGdn72rD2q0zsFgsaGpqQmZmJllICLDmBiilsOVyOeLi4khsuWqIiWrQTnV1NSwWyyWCJe0al3IEAGCxWC5WVVU5bYdykAtlSIfSFmXpJwBkZGSgt7eXtDwzJSUFOp0O2zl3io5hm7R0SUkJMjMzMTExgUuXLqGvr49ETnyzhLFarUZHRwcuXboEtVqNwsJCnDhxYs/x4t04g87OTgQHB5OFXABr0nN8fJwsSWwymaBSqciUSynnK8zOzpKsi1I/qa6uzjA+Pv6G04b2gMs5grGxMbKEMdUgF1uYiWKDDA4OJusnkEql8PDwIEtmy2Qy+Pn5keUeAOvPIS8vD3K5fNOb0H7IRvj6+uL48eMoLS2FVCpFa2srLl68iKamJgwNDUGlUu06pJYbmot57TzKW8rR0NCA8vJy9PX1ISQkBOfOnUNWVhaJeJkjzmB0dBRGoxEpKSlOv95aBgYGkJiYSNJABlilsCMjI0nCL5RjN1dXV+Hh4UESYroWEsUA4Px3gp7GhoYGIwCn77tBQUGYm5tzOpHGGLNP9XJ2s1o73pGi7jgxMRHDw8M4fvy407YAa66grq4OERERZMlCkUiEwsJC1NXV4eTJk/YhIPutHSQSiRAbG4vY2FhYLBYsLy9jcXERExMT6OrqgsVigY+PDzw9Pe2nOlvc3TZDYnV11Rqb1lpj3IOrg7jr+F2QyWSkQnFrsTmDp59+Gr/73e/wvve9D6mpqQCszVTj4+M4deoU6etrtVrMzMzg7NmzJPY45xgdHcXJkydJ7FGO3aQMC1H1R1gsFsjlcg7A+UaqPeByNwJYE8YmiiSoq4Z0IiIiyE7d1BLQnp6eCAsLIw05AdbNLTc3Fw0NDdDr9QcuICcQCODn54e4uDjk5ubi7NmzOHv2LJKTkxEaGgp/f394e3uDMQYfHx8EBgYiNDQUmZmZOH/+PO5+290QCUQYNYzan7efbHYzUKvVaG9vR0FBAdmp3UZfXx9SU1PJnL9KpbI7WQqmpqbIKqOUSiWZI6CqYuro6ICHh8fQYSSKARd0BJxz7unp2Vpd7bwcd0BAABYXF8lCOlSJVFvpJ8W6GGOIj48nlYBOTk7GyMgIuRZOYGAgMjIyUFtbi5qamgMXkLsam3MICQlBeHg4IiMj4eHhgcjISISFhSEkJMS+6VN1GO+Gq53B3//+dxQWFpLp59tQqVTQaDSkJaiUUtg6nQ56vZ6ky5ly7KZGo4GHhwdJYv21116zzM/PP++0oT3ico4AACYmJn79+uuvkyiR+vv7k9THU453FIlECAwMJHMs0dHRmJqaIislFYvFyMrKcro7eDN8fX3teRtK+eWDgEKSerdIpVLccccd8PT0RHd3N2n+BrAmdDs6OkhnIqysrMBoNJLV1lNOW6Mcu0mZvC4rK9MtLi6+TmJsD7ikI9Dr9RcuXbrkvI40XDc8FBcXt20lzW4QCoWIjY0FhU6TjdDQUEgkEjKZauAfOYETJ04gOzsbdXV1ZMqnBwGVJPVuWFhYQHd3Nz784Q+TahPZ6OnpQVxcHMnw9rU209LSSGxxzjE1NWWX5nAWyvwAVYjJYrGgp6fHAsD5EY17xCUdAYDRsbExI8UJNyQkhGz4CqXqp7+/P7RaLVn4JT4+HpOTkyRzGGxkZWVhcHCQZLO+OicQGhpqdwaUHc37CaUktSNMTk6ivb0dJ0+eREhICLlQnUqlwvLyMpnCKGB1XGazmWwS2dzcnL3HxVmox24aDAYSB3olPzB40NLTa3FJR0CZJxCJRC453hGg7QMQCoVISkrCwMAAiT2ALkS0VWI4KCgIJ0+eREdHB8bHxymWvK9QSlJvB+ccPT09mJiYwKlTp+ybDaVQ3X6EhADawTiAtVSWqiGNeuwmVYjpsPMDgIs6AoAuTwDQhnTCwsLIlDqjo6MxOTlJJgEdExODubk50nBLaGgoPD099+ywdqoO8vLywqlTpzA9PY2urq4Djb/vloNIGBuNRtTX1wOAfQbDWqicQXd3N+Lj40lDQjMzM5BIJGR19RqNBnq9nmzQztTUFFlYaHp6mszWYecHABd2BHq9/m9/+9vfSI7elPr9MTExZKfX/ZCATktLI9UMAqwhotHR0V2HcBwtEbX1GQiFQrtOj6uynwnj+fl5VFdXIyoqChkZGVueXJ11BuPj49DpdGQnbeAfg3HS09PJbFJKYZvNZqhUKpJST1uIiSIZbjab0d3dbQbQ4bQxJ3BZR8A5lyuVyhUKXR7beEeKkI5NV51K3IxaAjosLAyrq6uk4mtisRgFBQVobW11OKexFwG59PR0ZGRkoKGhAcPDwy55O9iPhLHZbEZnZyd6enpQWFiI6OjoHb9mr85gYWEBw8PDOHHiBGlIaGpqCv7+/pDJZCT2TCYTZmZmyEpabbcBij6JhYUFBAQEkHz//v73v0MikdQfZn4AcGFHAAAWi+UPf/zjH0l2g7CwMLKkMWXFj5eXFyQSCVnClDFm1wyiRCaTITs7Gw0NDTCbzds+15lmscDAQJw5cwYajcYlbwfUCeP5+XlUVlbaQ2S72Uh36wy0Wi1aW1tRWFhIIq9gw2KxYGBggKxSCAAmJiYQFRVF1uA2NjbmkuJ3L7zwgn5kZORnJMacwKUdwdTU1HMvvvgiScCbOk8wNze344boKElJSaQlgbbNl8rx2QgJCUF0dPS2yWOKjmGhUIjs7GxkZGSgsbER3d3dBzaacieoEsYajQZNTU3o7e1FYWEhEhMT93TCdNQZmM1mNDY2IicnhzQvAABDQ0OIiIiARCIhsWexWEiTxMvLyxAIBGTve3Z2liTEBABlZWVmzvmbJMacwKUdAYDG9vZ2M0UZqa+vL9l4R4FAgPDwcLLYvm1yFUUYzMaxY8f2ZQONj4+HUCjE0NDQhs9Ry0bYbgcymQxVVVUYGBggc757xdmEsV6vR0dHBxobGxETE4OSkhKnwyk7OQPOOVpbWxETE0NW1mljeXkZ09PTpAJ4crkc4eHhZI6FUgrbNnaTQuLjSnGEnHNOI5PsBC7tCDjnFk9Pz8o33nBemZUxZhehoyAuLo5U1iEjIwM9PT10GvqenkhKSkJXVxeJPRu2mcQzMzPrZiHsl3aQQCBAXFwczp49C8YYKioqMDIyQtZFvRfyI/J3nTDW6XTo7e1FbW0tAgICcObMGYSGhpLF6bdzBr29vRCLxaT9AoD15N7a2orc3FyyEI7JZMLo6CiSkpJI7JnNZszOzrpktdDzzz9vnpub+x8SY07i0o4AAIaHh5/8/e9/T6KoFhMTQxrb9/DwIBt+4+vrC6lUShrOiY6Ohl6vJw8RCQQCFBYWYmRkBNPT0wciICcUCpGcnIzS0lIYjUZUVlaiq6uLbObEbiiILHAoYcw5x8LCApqbm3H58mVIpVKcPXsW0dHR+yJat5kz6Ovrg1arJZ1iZmNoaAghISFk5aI2m7GxsWSDcSYmJsjGbnLO7dLaFLzyyiv65eXlP5IYcxKXdwQALlRUVJgoQjq2bl4qpU6bBDQV6enppINhGGPIzc3dlxCRWCzGyZMn0d/fj8rKygMTkBOLxUhNTcW5c+cQEBCA9vZ2VFdXY2xsjOznuhM7JYxXV1cxNDSEiooK+8Z29uxZxMXFkZ2ct2KtM3j++ecxNDSE48ePkzuepaUlTE9P2+WxKdDr9ZiamiK7udiksKnsqVQq+Pn5kTip2dlZzM3NLXHO6TRcnMDlHQHnXMsY66LoMmaMkfYBBAUFYWVlhUwmwsvLC0FBQaT6PvsVIgKs126z2QyhUEgqbeEIAoEAkZGROHXqFPLy8qDT6dDQ0GDPJSwvL+9b+enVCWPOOebn59Hd3Y1Lly6hvb0dAoEAxcXFKCgoQHBw8L7LVq9FKpXi/PnzkMlkaGpqIu02B6whoba2NtKQEGAdjJOcnEwmsT03NwcfHx+XzDU8++yzZoPB8CyJMQJc3hEAwOjo6MNPP/00yXEvOjoaExMTZBLQlKWkgHW04+DgIGlSdD9CRLZwUG5uLs6cOYPBwUGy+cm7RSaTITU1FaWlpSgsLISHhwd6enpw8eJF1NfXo6+vD0qlkuTGwDmHxWBBWkAaLg1cQm1tLS5evIjR0VH4+/vj9OnTKCkpQUJCAtkGtNv19fb2wmAw4BOf+MS+CNUNDg6Sh4Q0Gg1UKpVDPRSOMjw8TJZrMBgMWFlZIety/u1vf6tXKpUukR8AXHNC2QY456+VlZUZTSaTxNn6Z7FYDF9fX5JpY4B1k62oqCA7yUgkEkRGRpImzGwhotraWvj5+Tm9QW2WEyguLkZ9fT30ej0SEhIO9AS8FolEgri4OMTFxYFzjtXVVajVaszNzWFwcBBGoxECgQASiQSenp7w9PSERCKBSCQCYwxGo9Eu+2Eymexa+Lb/WiwWSKVSpPumo2yqDLm5ueTlmHvFYrGgo6MDnHN7w9hWk872ilqthkKhQGlpKdGqrdi6kql+b1ZXV2Eymcic1fj4OFluZ3BwEAsLCzOc84OTsd2BI3Ej4JwbhEJh2csvv0xij7LiRygUIioqirSCKCkpCWNjY6RxfU9PT2RlZaGxsdGpEtqtEsNisRjFxcVQq9Voa2sj009yBsYYvL29ERUVhaysLJw+fRrnz5/H6dOnkZOTg5iYGPj4+IBzDp1OB41GA7PZbNe4sY0ojY+Pt998brjhBhQXF+OtmW/Fgn4BMwbaRPxe0ev1qK2thUwmQ25urn3DohSq0+v1aGlpwYkTJ0hDQktLS9BqtWQiboB14lpycjKJLc45xsfHyWYi/O///q9pfn7+v0mMEXEkHAEAyOXyR3/xi1+QNJcFBgZiZWWFNGlMuXGLRCLEx8eTx3ZDQ0MRFhaGjo69yZrsVB0kFAqRl5cHHx8f1NbWHljydrcIhUJ4eXkhMDAQkZGRSEhIQHJyMlJSUuDp6YmUlBQkJycjPj4e4eHh8Pf3h1QqXbf5HbQk9XYsLS2htrYWycnJSE5O3nBqpXAGFosFjY2NyMzMJB0oxDlHd3f3ttpKu4XasdjGbnp4OD1GHQDw5z//2bC8vPx/JMaIODKOAEBNS0uLnqJc0BbbpzrF2zbuzZqs9kp8fDzm5+fJylNtJCUlwWw271rfyNESUcYYkpKSkJKSgpqaGqjVameX7JIclCT1TkxPT6O5uRn5+fnbTstyxhlwztHe3o7w8HDSUztgDbl4enramyopsElhUzkWylxDXV0dTCZTH+fcpYZwHBlHwDm3MMae//Wvf00Sc7CNd6QKYcTFxUGhUJCdgm1xfeowi83u5OSkw811e+kTCA0NRWFhIVpaWkiroFyFw5hhvBbOOfr6+jA6OopTp07Bx8dnx6/ZqzMYGRkB55xsBrENrVaLoaEhZGVlkdlUqVQAQOZYNBoNDAYD2djNn//85/qxsbGHSYwRcmQcAQBMTk7+5P/9v/9HUqspEokQFhZGNgNWIBAgJSWFtDrDx8cHUVFR6OvrI7MJWEMjBQUF6Ojo2FHUzZlmMW9vb5w+fRpKpRINDQ0uGyraK3vpMKZgeXkZVVVVsFgsOHny5K5CFrt1BjMzM5iamsKxY8dICwA452hra0NWVhZZ85htoE9mZiaJPYBWCttkMuHNN980ms3mv5IYJORIOQLOec/09LSSamOkloCOjIzEwsICqWJmUlISVCoVeYjI09MTeXl5aGxs3DK3QdExLBaLkZ+fj+joaNTU1JAPXz9MHO0wpoJzjoGBATQ3NyMnJwcZGRl7Sto66gxWVlbQ1dWFgoICstp+G+Pj45BKpaShJqVSCZlM5tDtyBGopbB/+9vfcoFA8FfOOU3jESFHyhEAgFKp/NaPfvQjkqOlVCqFp6cnmdibTVOfUgJ6bYiIWnAtICAASUlJaGpq2hB+opaNiIiIwOnTpzE9PY3GxsZr4nZwkAnj5eVlVFdXw2Qy4cyZM06HKnZyBnq9Ho2NjTh+/Dg8PT2deq2r0Wq1GB4eJj2520JllINxbCWjVBVSP/vZz7RjY2PfJjFGzJFzBHq9/vevvPKKkWojSUpKIpWJCAkJgV6vJ02S2kJElGEnG9HR0QgJCVlXVrpf2kEeHh7Iz89HVFQUampqyBr7DouDSBibzWb7LcAmzU21MW3lDAwGAy5fvozMzEyy2LiN/QgJAdZNOzg4GFKplMQe55y0k7ivrw9TU1NKznk3iUFijpwj4JzrGGN/ePbZZ0kyqIGBgTAYDGQbt20wTE9PD4k9G7YQEdUAm6ttBwQEoLm5GVqtdt8F5Gy3g4WFBVRWVmJmZuZIOoT9TBjbNqKKigoAQGlpKfmmDGx0Bt3d3bh8+TJSU1PJK4SAf4SEqPT8AauzHBoaIpXCHh8fR0hICFnJ6KOPPqpXKpXfJDG2Dxw5RwAA4+Pj337yySfJ4mzUG3dAQACEQiGZ5DXwjxBRe3v7vmjy22roy8vLkZ2dve8Cch4eHsjJyUF+fj7Gx8dRW1u7L05uv6FOGHPOMT09jYqKCqysrOD06dNISUkhj9GvZa0zeOGFFyAWi8mklteyHyEhABgdHUVUVBTZpk3tWFZXV/H666/r9Xr970gM7gNH0hFwzkeWlpb6KYTogP3ZuG3jIilPuj4+PoiOjkZ3N/3tUqfTYXZ2FhEREZDL5QfWGSyTyZCfn4+srCz09fWhvr4ey8vLB/LaFFAmjOfm5lBdXQ2lUomioiJkZWWRbW47IRQKkZWVBV9fX/ztb38jD0NaLBa0tLSQh4SMRiPGxsZIS1upHctTTz1ltlgsz3LOD1aZcRccSUcAAKOjo1965JFHyG8FVBu3t7c3/P39SaUnAGsXs06nIxW6s+UEjh07huPHj8PX19dpKYrd4ufnh+LiYiQmJqK9vR2XL1/G7Oysy4eMnE0YWywWTExMoLKyEqOjo8jNzUVeXh5ZrNsR9Ho96urqkJmZiXvvvXdfhOq6uroQHBxMGhKy2U1OTiabwUztWCwWC37+85/rp6enf0BicJ84so4AwN+bm5vVVN283t7e8PX1JZtrDFjnC8jlctJyUsYYjh8/DrlcTlLttFliOCUlBUFBQWhoaDjwSWDBwcE4ffo00tPTMTExgYqKCgwPD7vMzOKr2WvCWKvVore3F5cuXYJarUZBQQEKCgrISh93s466ujqkp6cjPDycVJvIhlwuh16vJ43hA9YeB71eT6pYOjg4iISEBDLH8qc//Qk6na6Gc+7SddNH1hFwzvn8/PwXHnroIbI6xNTUVPT395OdhEUiEXJycrYd9r5XuwUFBWhra4NWu3f5pe2qg5KSkhAREYGamhpoNBpnl7xr/Pz8cPz4cZSUlIBzjurqajQ3N2NmZsYlBO1s7CZhbFM2raurQ1NTE7y8vHDmzBlkZWUd6A3Axvz8POrq6pCdnb0uMUzpDFQqFcbGxsiH4xiNRnR1da0T2HMWnU4HpVKJ2NhYEnsA8PDDD2vkcvlnyQzuE0fWEQCAVqt9/sKFC6tKpZLEnq2agWpwDWAdXuPr60seIvLy8sKxY8f2fGp3pEQ0NjYW2dnZuHz5sr11/6Dx8PBAUlISzp07h7i4OCiVSly6dAkNDQ0YHx8/8IE4m7Fdwlij0WB4eBi1tbWoqanB0tISsrKyUFpaitjYWLKT524ZGxtDZ2cnTp48uenPn8IZaDQatLe370tDWmdnJ5KTk0l7HPr7+5GamkpWnnvhwgWoVKpuVy0ZXcuRdgScc5NGo3noO9/5DtlukJKSguHhYdLKnIyMDPIQEWB1MnFxcWhtbd31IHVHS0QDAwNRXFyM7u5u0rzEbmGMISgoCDk5OTh//jzS0tKg1Wpx+fJlVFVVYXBwEPPz8/tSUbUTaxPGRqMRs7Oz6OnpwaVLl9DW1gYAyM3Nxblz55CRkXHg4Z+1cM7R2dkJpVKJU6dObTtLwRlnYDKZ0NjYiNzcXPLbjlKphMFgIA0J2eZWUHURA8CDDz6olcvlnyIzuI8wV0/G7QRjzDMqKkrZ1dXlSzWEYmBgAIwxMj1zwHoN7+npwalTp8iHtnR0dEAikTg0dGSvzWJmsxmtra3w8PBAVlbWvs/e3Q22K/3CwoK9H8TX1xd+fn7w9/eHn5+fwyfSixcv4vz58w4912g0YnFxERVDFXjvG+/FtzK/hX+K+Cf4+fkhKCgIISEhpBUyzmI0GtHY2IjAwECkpqY6/Huo1Wrx9NNPY3Fx0aHhNpxzNDY2IiwsjDTMAljfQ1VVFUpKSkhvA42NjYiLiyNLZtfX1+P222/vk8vldK3O+8iRdwQAEBYW9q2Pf/zjX/3Od75D8ldnNptRUVGB0tJS0j/kzs5OeHl5kas4WiwW1NXVISEhYdsTjbMdw5xzDA4OYnZ2FgUFBQdW2rhbzGYzlpaWoFarsbi4iKWlJVgsFjDG1k0ls/3bNp2MMYbm5macOHHCOpLSYoHRaLRPKLM9DAYDOOcQiUTw8/ODp7cnMn+diS+UfAHfe+v3Dvvtb8ry8jKampqQmpqKyMjIXX/9bpxBX18fjEYjsrOznVnyprS0tCAkJIT0NrC4uIienh6UlJSQ2Xz729+ue+21127hnF8gM7qPXBOOgDHmExMTM9Xf3+9NdUqwhXIom1/MZjMqKytRWFgImUxGZhewygLU1NQgLy9v0w5UStkIhUKB3t5eZGdnIzg42ClbB4nFYoFer4dWq123uZvNZlgsFnDOMTU1hcjISAgEAjDGIBaL1zkNmxO5+jR9/H+OI8QrBG9+4M1DenebwznHxMQEhoaGcPz4cadGNzriDCYnJzE2Nobi4mLym69SqYRcLkdhYSGp7draWmRkZJB1bvf29uJtb3vb+Pj4eBw/Khss5/yaeERERPzwm9/8ppETYTabeXl5OddoNFQmOeecq1QqXlVVxS0WC6ldzjlfWVnhZWVlXK1Wr/u4Vqvl5eXlfG5ujuy1VldXeU1NDW9vb+dGI9m3/dApLy/f09d97KWP8cBHAvfl57pXNBoNr6ur4y0tLdxgMJDZ/MlPfsIfeugh3tfXt+5zU1NTvKKiguy11mIwGHhZWRnXarWkdmdmZnhDQwOpzVtuuUXr4eHxTu4C+6KjD9cJ9DrJ9PT0N59++mktlVyzQCBAeno6urq6SOzZCAwMhL+/P6n8tQ2ZTIaCggI0NTXZu3P3S0DOy8sLxcXF8PHxQVVV1aFVFbkKBy1JvR38yoxdW7gwLy+PLMS5VQJ5ZmYGAwMDOHny5L7kRTo6OuwyKFRYLBZ0d3eTKpbW19ejra1t2mAw/IXM6AFwzTgCzvmyTqf77je+8Q2yCiKb3gq1hn56ejrGx8fJZwwAVhmK/Px8NDY22uvE90tAjjGG+Ph4FBUVoa+vDx0dHQfegOYquMoMY51Oh/r6eqhUKpSWlu6LcNzVzqChoQE9PT27HpLjKOPj4zCbzYiKiiK129fXh6ioKNIZzF/4whe04+PjH+D8iISErnDNOAIAUKlUP3rxxRdXJicnyWweO3YMfX19pPr5tglhLS0t0OnoZ1T4+voiKysL1dXV9i7h/cTLywslJSXX9e3gsGcY224BtbW15LeAzbA5A19fX7z22msIDg6GRCIhf52FhQUMDw+TN6QtLi5CpVKRzSIGgDfeeANyubyHc04jgnaAXFOOgHNuUKvVn3/ggQfIdlcPDw+kp6ejo6ODyiQAaxgnOzsbjY2N5LXvOp0O3d3dOHbsGPr7+w9ExG3t7aC/vx/Nzc2H0pF8WBzmDOPFxUXU1tbu6y1gM5aXl5GVlQV/f3+8+OKL5EJ1Wq0Wra2tKCwsJG28M5vNaGtrI+1Ktlgs+PKXv6wdGxv7EInBA+aacgQAsLKy8tzFixcXKaeERUREgDFGHiIKCQlBVFQUqQTF2pxAXFycPUy0tLREYn8nbLmDqKgoNDQ0oKOj45qYRuYIBz3DeGVlxR6WycrK2vdbwFpslWNnzpzBxz/+cXKhOrPZjMbGRuTk5Gzb9LYX+vv7ERUVRdrY9/zzz1vm5+crOeedZEYPkGvOEXDOLUql8mOf//znSWMuOTk55CEiAIiPj4dQKCSZkrZZYtjX19eeQKacmrYdjDGEhYXh7NmzCAgIQE1NDfr6+q75/MFBJYx1Oh3a2trQ0tKChIQElJSUOFUWulumpqYwMDCA4uJiSCQScqE6zjlaW1sRExNDXp68sLBAHhIym8148MEHdWNjY/9GZvSAueYcAQCYTKbXOjo6RsrKyshs2kJE7e3tZDYB66aZk5MDhUKBmZmZPdvZrjrIx8cHhYWFaGlpAZUukyMwxhAdHY1z585BLBajsrISw8PDLiUaR8l+J4yNRiO6u7tRV1eHkJAQlJaWHmgfB+ccQ0NDGBkZQXFx8brEMKUzGBwchEgkQnx8PMGq/4HZbEZ7ezvy8vJI8w2PPvqoSavV/p5zfvglY3vkmnQEnHM+Pj5+22c+8xktZfw9IiICAoGAPEQkEAhQUFCA7u5urKys7PrrHSkR9fb2RklJCQYHBzEwMHCgOv8CgQCJiYkoLS2FwWCwS0tfazeE/UoY63Q69Pb2oqqqCjKZDGfPnkVkZCR5w9Z22CRGlpeXUVJSsmkIisIZKJVKzMzMICcnh2LZ69iPKiGFQoEnnnhidXx8/N/JjB4C16QjAADOec/S0tJvH3nkEdLdZr9CRBKJBMePH0djY+OutPd30ycgkUhQUlICjUaD5ubmAxdoE4vFSE9Px6lTp+xd1p2dneRifIcFdcJ4cXERTU1NqK+vh5eXF86ePYu4uLgD13nS6XSora2Fn58fcnNzt319Z5zB8vIyenp6UFBQQP4eFxYWMD8/TxoSAoD77rtPr1ar/51zfnTG6m3CNSExsRWMMZ/o6Ojx+vp6P0pVwenpaUxMTKCwsJDMpo2pqSnI5XKHWvSdaRYbGRnBxMQECgoKDkULH7BWWigUCoyMjEAoFCIuLg5hYWGHKmi3G9G5zbjn5Xvwp94/Ye6Lc3s6sZtMJrtMg0QiQWJiIoKCgg709L+WxcVFtLS0IDs7e1eCbI7IUZhMJns1kE0i5cSJE/D19SVbP2C9zVRVVSE/P5/0NnDx4kV84AMf6JuYmMg4an0DV3PN3ggAa5OZWq2+79Of/jRp4tgWIqLsV7ARGRmJgIAAdHV1bRu+cbZjOCEhARkZGairqzu0ofECgQCRkZE4ffo0srKyoFKpcOnSJXR3d2Npacnlx1Ruxl4SxpxzqFQqtLa2orKyEnq9HoWFhSgqKkJwcPChOYHJyUm0tbWhqKho16qcO90MJiYm8Mtf/tIu7tfU1IS0tDRyJwBYQ0LR0dGkTsBsNuO+++7TTkxM3HbUnQBwjTsCAFheXv6/hoaGUcrEMWANEfX39+9LQ1haWhoMBsOW12oq2Yjg4GAUFRWhvb2ddBjPXvDx8UF2djbOnj0LPz8/9PX14eLFi+jo6MDs7OyRSTA7mjA2mUyYmppCc3MzysvLMTY2hsjISJw/fx6pqamkUgq7hXOOnp4eTExM4NSpU3sWSNzKGUxMTODXv/41JiYmMDIygqamJoSGhpLOArCxsLCAhYUFcsXfRx991KRWq//AOafVoDkkrunQkA3GWGZGRkZje3u7lLIxxaavUlJSQh7O4JyjqakJfn5+62a97od2kMlkQnNzM2QyGTIyMlxm1oDZbIZKpYJCoYBKpYKPjw/Cw8MRGhq6bxLYzoaGdCYdfL7ngy+e+iIe/qeH133u/7d35nFRnff+/zwMAwMOqywDMwiIoMgmgqggpolp7c1ibm42e69NzfIzxps0SX9pttbatElqm6TJbZpq80uMbdMkNsvNz59prtpsgqyCoIZFVpmFYXUWhtnP8/sDZjoiKMuZBeZ5v168hJkz5zwzzjmf8/1+n+f7MRqNUKvVUKvVsFgsiI2NhUQiQVRUlNfu+iditVpRX1+PsLAwZGZm8jIu1zTRpk2bcOLECWeNLSEhAddeey3vfsYAYDabUVlZyXu3X7VajcLCQp1SqUyilHpmgY6b8QshAACZTLZv27Zt9+3du5fXFTft7e0wGAzIy8vjc7cAxnLop06dwuLFi5GWlua2BnLAmPC0tbVBrVZj1apVbgnR5wKlFDqdzjnNlhCCyMhIp/GMWCzm5aI1VyEAxlpSx4TG4MMtH0Kj0Th/hEIhJBIJJBIJ74uk+KC/vx/ffPMNMjIyeO/rYzQasX///ssWNhJC8Nhjj/Hu2sZxHCorK5Gens77SuvNmzebKyoqtuv1+vd53bEX8Y5hqhdQKpWPvvPOO/965513SlavXs3bftPS0nD69Gl0dXUhNTWVt/0C/5xWWlNTA47joFQq3dpALiMjA/Hx8WhoaIBEIsGyZct8JjoghCAiIgIRERHO1JnjAtvb24uRkREIhUKnMERGRvImDleD4zjodDpoNBpotVpIiRRlPWVob29HZGQkZDIZsrKyvOZPfDUcRvBms5l35y8HQ0NDk6ZRKaWor6/HNddcw9uxKKU4c+aMM3rkk7fffptrbm6uXUgiAPhRRAAAhJCC7OzsstOnT/OaIrLb7aioqEBmZqZbFvgYDAZ89dVXSElJQVZWFu/7nwjHcWhra0N/fz/y8vJ8LjqYCoc4OJzJHNNSHc5kkxnMCIVCEEKcRjQVFRUoLi52GtU4XMocJjauhjaO9AYhBGFhYc4I5b229/DQ/zyErke6kBKZ4sVP5Oo4ooBly5ZBJpO5RTgdNYGpplyHh4fjkUce4e2mo7OzE1qtlveFY2q1GmvWrNErFIo0SukAbzv2AfxKCABAJpP9Ydu2bffznSJyzLUuKiriNR/pSAdlZWWho6MDcXFxvBe+pkKr1aKxsdHnooOZ4nAmc7WbdPxts9mcF3zH7B3HdE1Xl7KJAjKVUxkA1CprUfRmET6840PctvI2L7zjq+MaBeTl5bmtOK1Wq3Hw4MGrrru56667ePEFGBgYQGtrK9avXz9tn+rpsnnzZlN5efl2g8FwiNcd+wB+JwSEkGCpVNp9+PBhXlNEwNgMhTNnzqC4uJiX5l8TawKOmkF0dDSWLVvGw4ivznyNDmYLHzWCKxWMfQFPRAEOKB3zua6trUVbW9uU26WlpWHbtm1zOpbBYEBNTY1b0ltvv/02t2fPnvKenh7+clg+hN8JAeC+FBEwFgYrlUoUFRXN6QSbqjDMcZxzVsfy5cv5GPK0cI0O0tLSeL/b8hX4EALANz2MLRYLmpqaYDabkZub67GFhI51AoGBgRgeHsbp06cnXU3+8MMPIzo6elbHsFqtqKioQF5eHm/eww56e3tRVFSkVygUSymlg7zu3EeYn7H+HKGU1g0PDx948sknp9/LYZrIZDKEhYVhLm2wrzQ7KCAgAAUFBTAYDFdddMYnERER2LBhAwghOHHiBHp6eublgi9P4emW1FfCZrPh/PnzOHnypHPtiKdEwGazoba2FlFRUcjPz8emTZvw2GOP4bbbbkNycvIl2x4/fnxWx3AUnJctW8a7CHAch23btpmHh4fvX6giAPipEACASqV67NChQ4qjR4/yvu/MzEzodLpZrTyezhRRQgjy8/MREBCAmpqaGfUmmgsBAQFIT09HSUkJ9Ho9Tpw4gd7eXp+42PkavuBhzHEcurq6UFZWBoFAgI0bN7o9FeTK6OgoKioqkJiYeEkqUyAQIDs7G9u3b8eDDz6I/Px8AEBLSwuamppmfJzm5maEh4fzPuUVAPbu3Wtta2s7ajAY/sb7zn0IvxUCSqlVqVRet2PHDgPfrZkJIVi9ejXa29tn5Es8k3UChBBkZmZCJpOhoqLCo43bgoKCkJWVhaKiIvT19eHkyZN+aU95JbzpYUwphVKpdC7c2rBhg8fTeYODg6iurkZOTg6SkpKm3C4uLg5btmzBI488gtDQUHz44Ycz8uZQKBTQ6/W8GtA7qKysxOuvvz4kl8u/x/vOfQy/FQIAoJR2Dw8P33v77beb+W5hIBQKUVBQMG1f4tkuFpNKpcjLy0NNTQ0GBjw7oy0kJASrVq1CXl4eOjo6UF1d7TEnNF/HWx7G/f39KCsrw9DQENatW4cVK1Z4zLXMQXd3N5qbm7Fu3TpERUVN6zWRkZF46KGHsHTpUigUiml1xr148SI6OjqwevVq3qMcrVaL73//+0aVSrWJUrrgPVf9WggAQK/X/627u/uTPXv28J5fEYvFyMnJQXV1NSwWy5TbzXXFcGRkJNavX4/W1lZ0dnZ6PFUTFhaGoqIipKen4+zZs6ivr5+Vr8JCwpMexpRSDA8Po6KiAnK5HAUFBcjNzfV4vyKO43DmzBkMDQ2huLh4xnWIkJAQbNu2DcnJyaipqbmiGOh0OjQ0NKCwsNAtQvcf//EfZq1W+zildOa5qnmI3wsBACgUiu0HDhzo+/rrr3nfd0xMDFasWIGqqqpJc/l8tY0QiURYv369c3aPN5q0RUdHo7i4GDKZDGfOnEFVVRX6+/v9tobg7oIxx3GQy+UoLy9HZ2cnsrKyUFBQwOs6lulisVhQVVWFkJAQrF69ek5pqOTkZCQmJk4pBiMjI6irq0NhYaFb3usrr7xiO3PmTNng4OA+3nfuo/jl9NHJIISkp6amNtTW1oa6o4VDb28vOjo6sHbtWucdjDt6B1FK0dnZ6WiMheDgYF72Oxt0Oh06Ozuh0WiQnJyMpKQkn22z4ICv6aMAsK92H3b9fRfvK4xNJhMuXLgAlUqF+Ph4pKames1TAhj7f66vr0dmZibi4+N526/jPRYVFTmFxbFWoKCgwC1rWurr67Fly5ZBpVK5dL6bzcwEFhGMQyltGx4e3rFlyxazOywUExISkJqaipqaGthsNrc1kCOEIC0tDenp6aisrPSYYf1khIeHY9WqVVi/fj2sVivKysrQ0NAwowL6fKYwsRAAPwVjSin6+/tRU1ODmpoaiEQibNy4EStXrvSqCPT29qK+vh4FBQW8igBweWQwOjqK2tpa5Ofnu0UEBgcHceeddxqVSuUmfxIBwI+azk0HjUbzV6lUun7nzp33v/nmm7zfSkulUnAc50wT5ebmuqWBHDA2GyM0NBR1dXVISUnBkiVLvNbqODg4GBkZGUhPT8fAwADa2tpgNBqRlJSExMREr0Yt7sS1YDzbVhMGgwEKhQIqlQrR0dHIyMjgfa78bLDb7WhtbYVWq0VxcbHb2oI71hpUVlbCZrMhNzfXLe/fZrPhpptuMvf19d1DKT3D+wF8HBYRTEClUv3w6NGjp1977TW3GPrGxsZidHQUAQEBiIiIcMchnIjFYpSUlECr1aK6uhpGo9Gtx7sahBDExcVhzZo1WLt2Lex2O2pra1FeXo62tjbo9foFVU+YTcHYUfhtamrC119/jTNnziAkJASlpaVuWTU7GzQaDcrLyxEUFIR169a5TQQcxMXFYXR01NmB1h3cf//9Zrlcvk+v1y+4PkLTgdUIJoEQIpZKpef//Oc/J1x33XW87dc1HWQwGCCXy1FUVOSR6X0DAwP45ptvkJqa6tXoYDLMZjP6+vqgVqsxOjqKmJgYSCQSREdHe7zRHZ81AmB6HsY2mw0DAwNQq9W4ePEioqKiEB8fj7i4OJ+qqXAch9bWVgwNDSEvL493D4HJMBgMqK2tRW5uLvR6/WU1Az545ZVXrC+//HKNUqncSCmdH1Z4PMOEYAoIIalLliw589VXX4n58BmYrCagVCrR1dV1SQHZndhsNnzzzTcwGo3Iy8vzam55Kux2OwYHB6FWqzE8PIzw8HDEx8cjNjbWIykkvoVgsoIxpRRGoxH9/f1Qq9UwmUyIi4vzObcyVzQaDRobGyGVSpGWluaRMY6MjKC2tharVq1yrkeYrIA8F44dO4Z77rlHqVKpllNKPbcq08dgQnAFgoKCrl2+fPnfq6qqRHOZpnalwnBvby/a2to8EmI7GBgYwLlz57B06VKfiw5coZRCq9U6rSotFgtCQ0MvcSbje64830JQo6jB2rfW4o3r30BJVAk0Gg3MZjNCQ0OdkY83pntOF0cUMDg4iFWrVnkkCgDGZiLV1dVh9erVl6WD+BKD9vZ2XHfddXq5XJ5DKfVeLxAfgAnBVYiLi3s0Ozt777Fjx4JnE6ZPZ3ZQX18fWlpasG7dOo8VTq1WK5qamnw6OpgIpRSjo6NOZzKtVuu8qDqEwSEOsxW3uQgBx3EwGo2XjE9v1OPGkzfivhX34dmNzyIyMtKrxvQzwREFOHoFeeqGQavVor6+HoWFhVMKz1zFYHBwECUlJcb29vbNdru9bK5jnu8wIZgGMpnsv4qLix94//33g2eSs57JFFFHDj8/P9/tReSJxz137hzS0tKQlJTks9HBVDjEweFKptPpnC09CCGTupI5fp/oTgb8Uwgc54XDsMZisVxibONqbuPqVBYSEuK0ynSIki+2pL4SHMfh/PnzGBgY8GgUAIwZ2bS0tKCwsBBisfiK285WDAwGA0pLS01tbW0/0Ov1C7qZ3HRhQjANCCFEJpN9eOutt970u9/9blr5m9msE9Dr9airq0NGRgYSExPnNOaZ4IgODAYDVq5c6RMzU/hgojPZRJcym83mvNA7zgO9Xu+88LmKRFBQ0KR2lyKRCEFBQVcU0OkUjH0Bx1qFlpYWJCYmIi0tzWPFeoeBzcDAAAoLC6edJp2pGNhsNlx//fXmpqamZ/r7+38713EvFJgQTBNCiEAqlZ7YtWvXmmeeeeaKld25LBazWq1OF7KMjAyPXjg0Gg2am5shFAqRmZnp07lrd8F3jQBw3wpjPhkeHkZzczNCQkKwYsUKhIaGeuzYdrsdDQ0Nzq62MxWf6YoBx3G44447zFVVVfuUSuVjcx33QoKtI5gmlFK7Uqnc9Ic//KHzwIEDU64xmOuKYaFQiHXr1jkFwR2rnKfC0bwuOTkZ9fX1aGxsnFbnVMaV4XOFMd/odDpUV1ejra0NOTk5WL16tUdFwGg0oqKiAjExMcjJyZlVBHK13kQOfvjDH5pramqOqFSqH81lzAsRJgQzgFJqUiqV63bv3q0+fPjwZaEUX20jCCHIzs5GfHw8KioqMDrq2S64sbGx2LBhA2JjY1FVVYXm5maPmd8sRLzVkvpKGI1GnD59GmfPnkV6ejrWrl3rcT/q4eFhVFVVYeXKlZe5lc2Uq4nBc889Z/3kk09OKRSKuyhLg1yG76xWmSdQSjWEkKIHH3ywUSQSxXznO98B4J4GckuWLIFYLEZ1dbVb21FMBiEEiYmJkEgk6OnpQXl5OZKSkpCamrpg/YrdhSdbUl8Ni8WC8+fPY2hoCMuXL0d8fLxX6hY9PT3o7u7G2rVreYtAHGJSU1NzSZrolVdese7bt69NpVJdTyl1S8eA+Q6LCGYBpVSlUqkK7r333qEvvvjCbQ3kgLHWzuvWrUNTUxMuXPD8VOeAgACkpKSgtLQUlFLmVzxLvO1hbLPZ0NraipMnTyIiIgIbN26ERCLxuAhQSnHu3Dn09fWhuLiY9zTUxMjgtddes7300ksdKpWqiFLK8pxTwIRgllBKe5RKZeHdd9998eDBg24RAQchISEoLi7GwMAAzp496xWvgcDAwEv8ir/++mt0dnaylNE0KUgo8IqHsdFoRHNzM8rKyhAYGIiNGzd6bZqw1WpFVVUVhEIhCgsL3dY+wyEGv/jFL+jevXu7VCrVGn9eNTwdmBDMAUppt1KpLHz++ec1jY2Nbj2WQCBAQUEBgoODUVVVdUXHM3fimNlRUlICjuNQXl6Os2fPetQzeT7i6YLxxYsXUVdXh9raWojFYmzcuNHjvsWu6PV6nDx5EsnJyVi+fLnbhejIkSO2AwcOdKtUqgJKqX/b5U0DViOYI5TSTkJI/t13333qwIEDix01A3dACEFGRgbCw8Nx8uRJZGZmQiKRuO14V0IoFGLZsmVIS0tDb28vGhoaEBgYiNTUVMTGxvr0fHlvwEdL6qtht9uhUqnQ3d0NkUiEpUuXIjo62qv/F5RSdHV1oaenx2OLJV999VXbiy++2MlEYPqwdQQ8QQhZIpVK6//4xz9G33jjjW4/88xmMxobGxEYGIicnByPG5RPhlarRXd3N4aHh5GYmIglS5bMi9YVrrhjHYEDd60w1ul0uHDhAgYHByGRSJCcnOzRKaBTYTAY0NDQgMjISKxYscIj0ciLL75oe/XVV9tYOmhmMCHgEUKIVCqV1v7yl7+Mu+eee9z+raeUQqlUoq2tDStXruTdIWq22Gw2qFQq9PT0QCgUIjk5GbGxsfNitpE7hYDPFcZWqxUqlQpyudz5GcfFxXm8bfdkuEYBubm5iI6OdvsxOY7Dj3/8Y8uhQ4fOKJXKayilnp1zPc9hqSEeoZQqCSFZu3fvru7v70958skn3XqbTgiBTCZDTEwMzpw5A6VS6RPRQWBgIJYsWYIlS5ZAp9Ohp6cHzc3NEIvFkEgkiI+P91inVV+iIKEAb51+Cxe0F2a1wnh0dBRqtRpqtRpWqxUSiQQFBQU+FXU5ooCIiAiUlpZ6RPztdjvuvvtu84kTJz5XKpW3UEo9twpzgeB3QkAISQLwZwASAByANyil/0UIeRHAzQAsADoA3DO+ZiAFQDOA1vFdVFFKd47v61sAXgLwBaX0CQCglF4khOT9/ve//1KtVue//PLLQe6+SxOJRFizZg2USiXKy8t9KjoIDw9HdnY2KKXQ6/VQq9Worq4GIcQpCp5sauZNXAvG0xECSik0Gg3UajX6+/sRFBQEiUSCVatW+UTqxxVKKbq7u3HhwgW3zqCbiMlkwi233GJuamr6k0Kh2OlYLEYIEQE4ASAYY9e5DymlewghdwD4OYBMAEWU0lPj26dgBuf5QsPvhACADcD/ppTWE0LCANQRQo4DOA7gaUqpjRDyawBPA3hy/DUdlNJVk+zrQQClAJ4jhKyglLYAAKXUSAjZ8MEHH3ykVqs3v/POO8HuvjNyjQ4aGxuhUqmQnZ3t9ejAASEE4eHhCA8PR0ZGBkwmE/r6+pytsGNjYxEfH+8VVzJPMZ2Csc1mcxrzXLx4EREREZBIJFi2bJnP/F9OZHR0FA0NDQgPD8eGDRs85qqm0WiwefNm84ULF36pVqufn/C0GcB1lNIRQogQQDkh5DMA5wD8G4A/TrLLGZ3nCwm/EwJKaS+A3vHf9YSQZgBSSqlrBa8KwO3T2F0AAIqxyOKSpO+4oPzriRMnXtu8efP9hw8fDvbEXZxIJEJRUZEzOsjKykJcXJzbjztTRCIRkpOTkZycDLvdjoGBASiVSpw9exbh4eGIiopytnKeD7WF6TDZCmOr1er0LxgeHnaKYlJSEvLy8nx69pW3ogAAUCgU2Lx5s0mlUj1w8eLFP08yNgrAMWNIOP5DKaXNAGb6uU55ni8U/E4IXBkPB/MBVE946l4AribWqYSQ0wB0AH5KKXUYWbwJoALAl44vmCvjX8aHJBJJz/r16589cuSIKCkpie+3cRkTowOlUomsrCyfzcsLBAJIJBJIJBKnK5lGo0FPTw+0Wi0AICwszOlMFh4e7lNevtPFYrEgKyoLn3Z8ipqaGoyOjiIwMNDpX5CVlXXVHvy+gsFgQGNjI8LCwjwaBQBAZWUl/v3f/93Q29t7m8lkOjrVdoQQAYA6AMsAvE4pnXieT2RW5/lCYP6dTTxBCBED+AjAo5RSncvjP8FY+uiv4w/1AlhCKR0ihBQA+IQQkkUp1VFKjwKY8ovoQK1W/0YkEjVs2LDh43feeWdRaWkp/29oElyjg5MnT0IqlWLp0qU+fRElhDgv+A7sdjv0ej00Gg3kcjm0Wi04jkN4eLjzIrpo0SIEBwf7xB00x3EwmUwYGRlxOpWNjIxAKBQiJTgFGosGoYmhWCNd4xPjnQlmsxmtra3QaDTIysryaBQAAAcOHLDv3r17WKVSlVJKW6+07XhfoVWEkEgA/00IyaaUnpti8zmf5/MZ370iuJHxnOFHAP5KKf3Y5fEfALgJwCZH0YlSasZYvhGU0jpCSAeADAAz6iBmMpmOEULyt27dWrZ79+7FO3fu9Mhn74gOEhIS0N3djbKyMqSmpmLJkiXzJhcvEAguEweO46DT6aDVaqFQKGA0GmE2m0EpvcyZbDKXstm8d7vdPqXJjclkcq72JoRAJBJh0aJFiIyMREJCAsRi8di4lMF4vuF5tOpakS3L5usjcjtWqxUdHR1Qq9VIT09HTk6OR0WM4zg8+uijlo8//rhFpVJ9i1J6cbqvHZ/08RWA72KsRjDZNryc5/MVv1tHQMa+vX8CMEwpfdTl8e8C+C2AayilAy6Px45vayeELAVQBiCHUjo8y+NHSKXSL26++ebs3//+90Gezn9brVa0t7ejr68PGRkZSEhImHd3pVfD4Uw28WLt+vdU33tXh7KJCASCKwrM1ZzKAMBkMyHsV2H4cfGP8cKmF+b8Xt2N3W5Hd3c3enp6kJKSguTkZI/fQOh0Otx6663m8+fPH1IoFPdNZ3ro+HlrHReBEADHAPyaUnpk/PmvADzuMmuI1/N8vuGPQrABY//JZzFW/AGAZwD8DmNTzYbGH6uilO4khNwG4BcYSxfZAeyhlP6/OY5BIJVK9y9duvT7hw8fDvaGNaTJZML58+eh1WqxYsUKxMbGenwMvog7F5Q5mA8expRSKBQKdHR0IDEx0Wspxba2Ntx8883GoaGhxwcGBv4w3dcRQnIxdsMnwFix92+U0l8QQm4F8BqAWAAaAA2U0s3uOM/nE34nBL7E4sWL742KinrtL3/5S+j69eu9MoaRkRG0tLTAarUiMzNzwfgVzxZPCIEvexhTStHX14fW1lYsXrwYGRkZXptk8O6773JPPvmkXqVS3WC32yu8Mgg/YX4kiRcoQ0NDBzo6Otbccccd6hdeeMHqjfbSYrEYhYWFyMzMRHNzM06dOoWREdany514qyX11RgeHkZFRQV6e3uxZs0aZGdne0UEzGYztm/fbn7iiSfOKhSKdCYC7ocJgZehlDYplcq0/fv3/893vvMd89DQ0NVf5AZc/YpPnz6NxsZG6PV6r4xloeNLHsaUUgwNDaG6uhrt7e3IyclBfn6+11YuNzc3o7Cw0HTs2LGXlErlatd6HcN9+OWsIV9jvEHWlsjIyO2FhYWvHzx4MPSaa67xylhiY2MRExODvr4+nDs3NsFi6dKliIuL87k0xnzFEy2pr4ajZXVXVxcWLVqEjIwMREVFeWUsDt588037z3/+c51SqbyRUlrp1cH4GaxG4GMQQtITExO/uOeee+KfffZZobdX1ep0OnR1deHixYtITk5GUlKST69DmCueqBEA3isYm0wmdHd3o7e3FxKJBCkpKV5vWmcwGHDfffeZT5482aBQKG7wl5k6vgRLDfkYlNI2lUq17E9/+tN7a9euNTU3e3chY3h4OPLy8lBcXAybzYaysjKcPXsWOp3u6i9mTIknPYwppRgcHERdXR2qq6sREhKCjRs3IjMz0+sicPToUeTm5o5+8cUXP1MoFOuZCHiHhXtrN48ZX9zyA4FA8Ma3v/3tT3bs2BH5k5/8JNCb0UFQUBDS09ORlpaG/v5+NDc3w2q1IikpCVKpdEFHCe5gspbUFrsFI5YRRIfw07/fbDZDLpdDoVAgPDwcqampiIqK8okUn8FgwEMPPWT+xz/+0aNQKP6FUtrh7TH5Myw15OMQQkJlMtn++Pj4O9555x3RihUrvD0kJ0ajET09PVCpVIiOjkZycjIiIiJ84kIzWzyVGqroqUDJ2yXYWbATAFDXW4fGvkbsu3Ef7s2/d9b7pZRiYGAAFy5cgNFoRFJSEmQymU91Lj127Bh27do1qtfrn+vv7/81pdTz0+UYl8CEYJ4gEAg2JCQk/PfOnTsjnnnmGaEvtYdwXHx6enqg1+sRExMDiUSCxYsXz5s2Fg7cJQRakxYfNH2AOlWd86JvsVsu267hgQbkSfJmtG+bzYb+/n6o1WpotVqnKPvamhBHFHD8+PEepVJ5A6W03dtjYozBhGAeMR4d/DEmJub2/fv3i9auXevtIV0Gx3HOfvpDQ0MICwuDRCJBXFycz3Y/dcVdQmDjbCg5UIIaZc2U2wQLgqF/Wg+h4Op370aj0elWZrFYEBcXB4lEgsjISJ+MyD766CP6xBNPGEdGRlgU4IMwIZiHEEIKZTLZh9dee63k1VdfDfaEJ+xsoJRCp9M5HbYCAgKcrmS+2m7Znamh5oFm5P8xH2a7edLni6RFqL5/8k7Jjvbcjs8yMDDQ2brb19zKXGlra8MDDzxgam9vb5DL5XdRSnu8PSbG5TAhmKcQQgKioqJ2isXivU888UTorl27BL6ehjGZTFCr1ejr63MasEgkEkRHR/vMXay7awQvV7yMx48/PulzDxY+iD/c+M92Ona73RldDQ8PIzw83Bld+VLOfzJMJhN++tOfWt9//31tX1/fNqvVuqDbOM93mBDMcwgh0UlJSW/ExMTcsG/fvhBfTBdNhs1mw8DAAPr6+qDRaBAYGOh0JIuMjHS2bfY07hYCO2fHxoMbUSG/vGvCa9e/hpukN0Gr1UKr1YJSisWLFzvF0teF3sEHH3xAn3rqKePo6Oh/qdXqZ8dnwTF8GCYECwRCyGqZTPZxSUmJ5MUXXwz2hBMan1gsFqczmUajgcFguMS9KyIiAmFhYW4XB0/MGmrub0bB/ymA0Wa85PH3Nr6HouSieevCVl9fjx/96Eemrq6u0z09PVtZGmj+wIRgAUEICQgNDd0aFRX1uy1btoQ999xzQb5aP5gOrn6+Dpcvh0mNQxjmYjQzGXwKgd1ud3ogOO7yHdabRwaP4KVzLzm3nUmh2Ndob2/H448/bqqvr1fL5fK7XSweGfMEJgQLEEKIcPHixQ+HhITs2b59e8jTTz8t9OWC4kxwiINWq4Ver3ca0Lg6k03mSBYSEjItwZiOELg6lU1meuNwKgsICHCOxWGrGRERAYFAAI5yuPZP1+LEhRMAgKLEIlT/r6tZ6voWfX19eOqpp8zHjx/XDgwMPGCxWP4vZReUeQkTggUMIWSRRCLZExQUtOvRRx8VPfzww4L5lm6YCZM5k038fWKrb0IIAgICQAgBIQQajQaRkZGglILjOFBKL2sDMdGpbKJj2XScygCg82InVr6+Ema7GdtytuEv//YXXj8Pd6HT6fDss89aDx06ZBgZGXlSq9W+Ne4PzJinMCHwAwghMTKZ7OWgoKDbd+3aFfzQQw8JgoODvT0sr+P47rte8MvKylBaWuoUBodIuIsnjz+J31T85rIZQ77I0NAQfvWrX1kPHTpkslgsL/X39/+GUmry9rgYc2d+TENgzAlK6aBcLv9BZ2dn6iuvvPJGenq64Wc/+5nN3xvHOS72AoEAgYGBEAqFCAgIgFAoRGBgIAQCgduL03u+tQcEBGab706sUSgU2LFjhyUvL09z8ODB3QqFQtLX1/cLJgILByYEfgSltF+hUOySy+WJb7zxxq9Xrlype+SRRywDA8z7w1uECkORGZvpc25lANDa2oqtW7ea161bN/Dee+/9p1KpjBscHPz1uH8GYwHBUkN+DCEkJCoqamdISMjub3/726FPPfVUsC81tfMGnmo658qXXV8iPDgcBYkFHj3uVJw4cQJ79+41nTt3blCtVj9qtVr/m7WEWNgwIWCAEBIoEonujIuLez4pKSn+scceC7n11lvnzQImPvGGEPgCJpMJb731Frd//37TyMhIc3d39xMAvmSzgPwDJgSMSyCE5CcnJ78QEBBQ+r3vfS/o4YcfFkokEm8Py2P4mxC0tLTgt7/9rfmzzz6zAHhfoVA8Tyn1vTwVw60wIWBMCiEkMjo6ekdoaOjj2dnZ4h07doRs2bIF3rbOdDf+IAQGgwHvvvsu9+abb5rUarW6v79/j8lk+oC1gvBfmBAwrggZmzZTkpKS8oTNZrv2uuuuE+7YsSO4pKTE20NzCwtVCOx2O44cOYK33nrLWF9fbwFwSKlUvkop9a4XKsMnYELAmDaEkGBCyL8kJyc/IxAIVt5yyy1BO3bsEC5fvtzbQ+ONhSYElZWVeOONN8yff/65VSAQfN3d3f0bAOWs+MtwhQkBY1YQQiJDQ0Pvio2N/bFYLJbccMMNwVu3bg1cvXq1t4c2J+a7ENjtdnz55Zf44IMPzJ9//rmN47jm7u7uFyilf2epH8ZUMCFgzBlCSLxIJNqSkJCwi1KaXlpaKrj99ttF3/3ud+eFK5kr81EIdDodPvnkE3z88cfGuro6W1BQ0Kmurq7XKaXHKKV6b4+P4fswIWDwCiEkBMB1qampOy0Wy8asrKzAG2+8MeSGG24gy5Yt8/bwrsp8EAKO49DQ0IBPP/2U++yzz0xyudxICDksl8sPAKhkfX8YM4UJAcNtEEICAKyOjY39V7FYfAfHcdK8vLyATZs2iXxVGHxRCBwX/s8++4z74osvTOfPn7cHBwef7+/vf1ev1x+hlJ739hgZ8xsmBAyPQQgRAiiIjY29SSwW30EpTczNzQ1Yt26dqLi4OGDt2rUQiUReHaMvCIFWq8XJkydRWVlpr6ioME+48B8D0MSKvQw+YULA8BoOYRCLxSXx8fE3ms3mnJCQkJCsrCyyZs0aUXFxcUBRUZFHzdk9LQQajQbl5eWorKy0nzp1ytzW1kZtNptOKBTWKhSKTy0WSyWAb9iFn+FOmBAwfApCSCiAvNDQ0LUJCQk3WSyW3ICAgNCEhASkpaUJMjMzg1auXBmQk5ODpUuX8t4Gwx1CYLPZ0NLSgrNnz6Kpqcne0tJi7ujooENDQxSANjAwsFYul39qtVprMXa3b+V1AAzGVWBCwPB5xmsNiQAyRCLRyoSEhA2EkFyz2SwJDg4Oio6OhkQiIQkJCQKpVBokk8mITCZDcnIykpKSsGjRomkfayZCwHEcdDodLly4ALlcDoVCAYVCYVcqldbe3l57X18fNBoNtdlspuDgYLnVaq1XKBQVHMe1AjgPYJD18mH4AkwIGPMaQogAQCyABACJhJAEiUSyIjQ0NINSmmy1WmMppUGEEAEhJCAgIEAQFBREQkNDqVgsRmhoqNN3QCAQEKvVGhwYGGjmOA4cx1GbzQaDwYDR0VEYDAZis9k4juM4SinHcZxdIBAYhUJhH4AunU7XOjAw0AagF4Bq/N9hdrFn+DpMCBh+ByEkGIAYQBiARRjz5XD9sQPgxn/sAEYcPyxtw1iIMCFgMBgMP8f/Gs4zGAwG4xKYEDAYDIafw4SAwWAw/BwmBAwGg+HnMCFgMBgMP4cJAYPBYPg5TAgYDAbDz2FCwFjwEEKSCCFfEkKaCSHfEEIeGX/8ECGkYfynmxDS4PKapwkh7YSQVkLIZpfHv0UIOUUI+Y0X3gqD4RYCvT0ABsMD2AD8b0ppPSEkDEAdIeQ4pfQuxwaEkJcBaMd/XwlgK4AsjPU4+gchJGPc8OVBAKUAniOErKCUtnj6zTAYfMMiAsaCh1LaSymtH/9dD6AZgNTxPCGEALgTwHvjD90C4H1KqZlS2gWgHUDR+HMBACjG2k8Qz7wDBsO9MCFg+BWEkBQA+QCqXR4uBdBHKW0b/1sKQO7yvAL/FI43AVQACKCUNrt3tAyGZ2CpIYbfQAgRA/gIwKOUUp3LU9/DP6MBYPI7fQoAlNKjAI66bZAMhhdgQsDwC8bd0D4C8FdK6ccujwcC+DcABS6bKwAkufwtw1hbaQZjQcJSQ4wFz3gN4C0AzZTS3054+noALZRShctjhwFsJYQEE0JSAaQDqPHMaBkMz8MiAoY/UALg+wDOukwRfYZS+neMzQ5yTQuBUvoNIeRvAJowNuPoP8dnDDEYCxLmR8BgMBh+DksNMRgMhp/DhIDBYDD8HCYEDAaD4ecwIWAwGAw/hwkBg8Fg+DlMCBgMBsPPYULAYDAYfg4TAgaDwfBz/j+bITJOrjBHvwAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def plot_polar_vector(c, label=None, color=None, start=0, linestyle='-'):\n", " # plot line in polar plane\n", " line = plt.polar([np.angle(start), np.angle(c)], [np.abs(start), np.abs(c)], label=label, \n", " color=color, linestyle=linestyle)\n", " # plot arrow in same color\n", " this_color = line[0].get_color() if color is None else color\n", " plt.annotate('', xytext=(np.angle(start), np.abs(start)), xy=(np.angle(c), np.abs(c)),\n", " arrowprops=dict(facecolor=this_color, edgecolor='none', \n", " headlength=12, headwidth=10, shrink=1, width=0))\n", "\n", "#head_width=0.05, fc=color, ec=color, overhang=0.3, length_includes_head=True \n", " \n", "c_abs = 1.5\n", "c_angle = 45 # in degree\n", "c_angle_rad = np.deg2rad(c_angle) \n", "a = c_abs * np.cos(c_angle_rad)\n", "b = c_abs * np.sin(c_angle_rad)\n", "c1 = a + b*1j \n", "c2 = -0.5 + 0.75*1j\n", "\n", "plt.figure(figsize=(6, 6))\n", "plot_polar_vector(c1, label='$c_1$', color='k')\n", "plot_polar_vector(np.conj(c1), label='$\\overline{c}_1$', color='gray')\n", "plot_polar_vector(c2, label='$c_2$', color='b')\n", "plot_polar_vector(c1*c2, label='$c_1\\cdot c_2$', color='r')\n", "plot_polar_vector(c1/c2, label='$c_1/c_2$', color='g')\n", "\n", "plt.ylim([0, 1.8]);\n", "plt.legend(framealpha=1);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "Acknowledgment: This notebook was created by Frank Zalkow and Meinard Müller.\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "
\"C0\"\"C1\"\"C2\"\"C3\"\"C4\"\"C5\"\"C6\"\"C7\"\"C8\"
" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.16" } }, "nbformat": 4, "nbformat_minor": 1 }