{ "cells": [ { "cell_type": "markdown", "id": "27dfa902", "metadata": {}, "source": [ "Title: Converting Nonlinear Classification Problems to Linear Ones\n", "Author: Thomas Breuel\n", "Institution: UniKL" ] }, { "cell_type": "code", "execution_count": 2, "id": "c5548af1", "metadata": { "collapsed": true }, "outputs": [], "source": [ "\n", "from pylab import *\n", "from numpy import *\n", "def plotfun(f):\n", " image = zeros((100,100))\n", " for i in range(100):\n", " for j in range(100):\n", " image[i,j] = f(i/100.0,j/100.0)\n", " imshow(image)" ] }, { "cell_type": "markdown", "id": "d4087039", "metadata": {}, "source": [ "# Nonlinear Classification Problem" ] }, { "cell_type": "markdown", "id": "50eac8db", "metadata": {}, "source": [ "Let's consider now a non-linear classification problem. Here, the decision boundary is described by a quadratic equation." ] }, { "cell_type": "code", "execution_count": 3, "id": "4db7bd4e", "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "20" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = random.uniform(size=(50,2))\n", "lo = ((data[:,0]-0.5)**2+(data[:,1]-0.5)**2<0.15)\n", "hi = logical_not(lo)\n", "sum(lo)" ] }, { "cell_type": "code", "execution_count": 4, "id": "1a6cf593", "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "figsize(5,5)\n", "plot(data[lo,0],data[lo,1],'bo')\n", "plot(data[hi,0],data[hi,1],'ro')" ] }, { "cell_type": "markdown", "id": "ac813a0c", "metadata": {}, "source": [ "We obviously can't solve this problem with a linear classifier. We could solve it with a quadratic discriminant function\n", "\n", "$$g(x,y) = a x^2 + b y^2 + c xy + d x + e y + f$$\n", "\n", "Here we use the decision function:\n", "\n", "$$D(x,y) = \\left\\lfloor g(x,y) > 0 \\right\\rfloor$$" ] }, { "cell_type": "markdown", "id": "5699646a", "metadata": {}, "source": [ "# Linear Classifiers on Nonlinear Transformations of the Data" ] }, { "cell_type": "markdown", "id": "43018d23", "metadata": {}, "source": [ "Optimizing non-linear discriminant functions can be quite difficult.\n", "However, there is a simpler approach that often works,\n", "an extension of a previous trick we used.\n", "\n", "In order to turn an inhomogeneous problem $a\\cdot x > b$ into a homogeneous\n", "problem $a\\cdot x > 0$, we remapped the feature space as $ x \\rightarrow (1,x) $.\n", "\n", "Let's try a more complicated remapping.\n", "\n", "Map the original values $(x,y)$ into a feature space $(x^2,y^2,xy,x,y,1)$\n", "and then perform linear classification in this higher dimensional space." ] }, { "cell_type": "code", "execution_count": 7, "id": "0edf5485", "metadata": { "collapsed": true }, "outputs": [], "source": [ "def phi(v):\n", " x,y = v\n", " return array([x**2,y**2,x*y,x,y,1])" ] }, { "cell_type": "markdown", "id": "a5f1faf5", "metadata": {}, "source": [ "Let's try this out; let's transform the input data into the higher dimensional feature space. We apply the usual sign flip to use the perceptron learning algorithm below.\n", "\n" ] }, { "cell_type": "code", "execution_count": 8, "id": "8b03a6f2", "metadata": { "collapsed": true }, "outputs": [], "source": [ "vs = array([phi(v) for v in data])\n", "vs[lo] = -vs[lo]" ] }, { "cell_type": "markdown", "id": "ffaf7de2", "metadata": {}, "source": [ "For completeness, here is a function that gives us the decision boundary.\n", "\n" ] }, { "cell_type": "code", "execution_count": 9, "id": "83f2cd78", "metadata": { "collapsed": true }, "outputs": [], "source": [ "def f(x,y):\n", " return (a[0]*x**2+a[1]*y**2+a[2]*x*y+a[3]*x+a[4]*y+a[5]>0)" ] }, { "cell_type": "markdown", "id": "974d2e8a", "metadata": {}, "source": [ "Now let's run the perceptron learning algorithm in this larger feature space.\n" ] }, { "cell_type": "code", "execution_count": 10, "id": "c46c00b5", "metadata": { "collapsed": true }, "outputs": [], "source": [ "a = random.uniform(size=6)\n", "for epoch in range(100):\n", " for i in range(len(vs)):\n", " if dot(a,vs[i])<0: a += vs[i]" ] }, { "cell_type": "markdown", "id": "29138e2d", "metadata": {}, "source": [ "If we transform back now, we see that using a linear learning algorithm, we have managed to solve a non-linear classification problem." ] }, { "cell_type": "code", "execution_count": 11, "id": "be5af5a4", "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\ntm5kZMQ6dOiQ9dZbb1nf+ta3LMuyjDm+mZkZ66abbrrqeVOOb2pqyurp6bFisZi1tLRkfetb37L+\n8pe/GHNtQO2dAAAClklEQVR8m1WwM7TR0VF27tzpfNzV1cXo6Gihvty2Gh4e5oMPPuArX/kK0WiU\nUCgEQCgUIhqNulzd1v30pz/lV7/6FRUVn39bmHJ858+fp62tjccee4w777yTJ554glQqZczxNTc3\n87Of/Yxdu3bR0dFBY2Mj/f39xhzfZhUs0Eydg5ZMJnnggQd47rnnaGhoWPV3Ho+nZI/79ddfp729\nnYMHD6473aaUjy+TyXD69GmefPJJTp8+jc/nu+ryq5SP77PPPuM3v/kNw8PDXL58mWQyyZ/+9KdV\nrynl49usggVaZ2cnIyMjzscjIyN0dXUV6stti6WlJR544AEeeeQRjh49Clz5rReJRAAYGxujvb3d\nzRK37J133uHEiRPcdNNN/OAHP+Ctt97ikUceMeb4urq66Orq4u677wbgwQcf5PTp04TDYSOO7/33\n3+erX/0qLS0teL1evvvd7/KPf/zDmOPbrIIF2l133cXZs2cZHh4mnU7zyiuvcP/99xfqyxWcZVk8\n/vjj9PX18fTTTzvP33///QwODgIwODjoBF2peeaZZxgZGeH8+fO8/PLL3Hffffzxj3805vjC4TA7\nd+5kaGgIgJMnT3LgwAGOHDlixPH19vby7rvvMj8/j2VZnDx5kr6+PmOOb9MKeYPujTfesHp6eqwv\nfelL1jPPPFPIL1Vwf/vb3yyPx2Pdfvvt1h133GHdcccd1v/93/9ZU1NT1qFDh6y9e/da/f391vT0\ntNul3rBTp05ZR44csSzLMur4/v3vf1t33XWXddttt1nf+c53rJmZGaOO79lnn7X6+vqsW265xXr0\n0UetdDpt1PFtRkHXcoqIbCetFBARYyjQRMQYCjQRMYYCTUSMoUATEWMo0ETEGP8PqfSZndu0DtEA\nAAAASUVORK5CYII=\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plotfun(f)" ] }, { "cell_type": "markdown", "id": "ef6057a2", "metadata": {}, "source": [ "# One-Dimensional Analog" ] }, { "cell_type": "markdown", "id": "a09ca23d", "metadata": {}, "source": [ "Here is a simple one-dimensional analog.\n", "Let's say you want to discriminate values in the range $[0,1]$\n", "from values outside that range.\n", "There is no linear function $f(x)=ax$ such that $ax>0$ iff $x\\in[0,1]$.\n", "There is a quadratic function, namely $f(x) = x (1-x)$.\n", "\n", "But we can also remap $\\xi = (\\xi_0,\\xi_1) = (x,x^2)$, and in that\n", "new space, there is a linear function, namely $f(\\xi) = (1,-1) \\cdot \\xi$." ] }, { "cell_type": "code", "execution_count": 11, "id": "0b501807", "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "xs = linspace(-1.5,1.5,100)\n", "figsize(6,6)\n", "axvline(x=0,color='black')\n", "axhline(y=0,color='black')\n", "plot(xs,xs**2,'b')\n", "plot(xs,xs,'r')" ] }, { "cell_type": "markdown", "id": "5a6bb700", "metadata": {}, "source": [ "In this graph, think of the curve not as a plot of a function of one variable,\n", "but instead as set of points in 2D that happens to have a simple correspondence\n", "to points on the $x$ axis.\n", "By making that set curved, we can now \"cut off\" a region that, when mapped back to the\n", "$x$ axis corresponds to the interval $[0,1]$." ] }, { "cell_type": "markdown", "id": "4e5a533d", "metadata": {}, "source": [ "# The Kernel Trick" ] }, { "cell_type": "markdown", "id": "1f22504f", "metadata": {}, "source": [ "If we carry out the perceptron learning algorithm in terms of nonlinear functions of the input $\\phi(x)$,\n", "then there is only one statement actually involving the data:\n", "\n", "$\\hbox{if } a\\cdot \\phi(x) \\lt 0 \\hbox{ then } a \\leftarrow a+\\phi(x)$\n", "\n", "This comprises the comparison and the weight update." ] }, { "cell_type": "markdown", "id": "4b1a4b41", "metadata": {}, "source": [ "(rewriting the dot product)\n", "\n", "Note that all we ever add to the weight vector $a$ is copies of $\\phi(x)$, where $x$ is\n", "a training sample.\n", "\n", "$a = \\sum_j \\lambda_j \\phi(x_j)$\n", "\n", "Remember that all the training samples are known.\n", "If we plug this in above, we get for training sample $x_i$:\n", "\n", "$\\hbox{if } \\sum\\lambda_j \\phi(x_j) \\cdot \\phi(x_i)\\lt 0 \\hbox{ then } a \\leftarrow a+\\phi(x_i)$" ] }, { "cell_type": "markdown", "id": "e1ba7bd1", "metadata": {}, "source": [ "(updating the lambda)\n", "\n", "Instead of updating the weight vector, we can therefore also simply keep track of how often we added $\\phi(x_i)$ to the weight vector:\n", "\n", "$\\hbox{if } \\sum \\lambda_j \\phi(x_j) \\cdot \\phi(x_i)\\lt 0 \\hbox{ then } \\lambda_i \\leftarrow \\lambda_i+1 $\n" ] }, { "cell_type": "markdown", "id": "9a03bb87", "metadata": {}, "source": [ "(using the inner product)\n", "\n", "Looking at the first expression, we don't even need to evaluate the dot product again and again.\n", "All we really need to keep track of is the value $K_{ji} = \\phi(x_j)\\cdot\\phi(x_i)$.\n", "\n", "$\\hbox{if } \\sum \\lambda_j K_{ji}\\lt 0 \\hbox{ then } \\lambda_i \\leftarrow \\lambda_i+1 $" ] }, { "cell_type": "markdown", "id": "a114aefe", "metadata": {}, "source": [ "(implicit high dimensional space)\n", "\n", "That is very nice because we can use a function $\\phi(x)$ that transforms into a very high dimensional\n", "space, but we never need to represent the values in that space. All we need to do is define the\n", "values of the dot products.\n", "\n", "We define these values in terms of a _kernel function_:\n", "\n", "$$k(u,v) = \\phi(u) \\cdot \\phi(v)$$" ] }, { "cell_type": "code", "execution_count": 12, "id": "78f1c54e", "metadata": { "collapsed": true }, "outputs": [], "source": [ "# kernel function\n", "def k(u,v):\n", " return dot(phi(u),phi(v))" ] }, { "cell_type": "markdown", "id": "dd9d1642", "metadata": {}, "source": [ "In fact, we can precompute all the dot products:\n" ] }, { "cell_type": "code", "execution_count": 13, "id": "59fc0c74", "metadata": { "collapsed": true }, "outputs": [], "source": [ "n = len(data)\n", "ks = zeros((n,n))\n", "for i in range(n):\n", " for j in range(n):\n", " ks[i,j] = k(data[i],data[j])" ] }, { "cell_type": "markdown", "id": "d9c8c81d", "metadata": {}, "source": [ "Now, with these ideas, we can write the kernelized perceptron learning algorithm as follows:\n" ] }, { "cell_type": "code", "execution_count": 14, "id": "83633524", "metadata": { "collapsed": true }, "outputs": [], "source": [ "c = zeros(len(vs))\n", "for epoch in range(1000):\n", " for i in range(n):\n", " sign = (dot(c,ks[:,i])>=0)\n", " if lo[i] and not sign: c[i] += 1\n", " elif not lo[i] and sign: c[i] -= 1" ] }, { "cell_type": "code", "execution_count": 15, "id": "a622c772", "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 2., -29., -26., -63., -1., -141., 322., -397., 102., 230.])" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c[:10]" ] }, { "cell_type": "markdown", "id": "ba16741c", "metadata": {}, "source": [ "We can express the discriminant function directly in terms of the kernel and the $\\lambda_i$:\n", "\n", "$$g(x) = \\sum \\lambda_i k(v_i,x) >0$$" ] }, { "cell_type": "code", "execution_count": 16, "id": "384b90ca", "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def g(x,y):\n", " kv = [k(data[i],array([x,y])) for i in range(n)]\n", " return dot(c,kv)>0\n", "clf(); plotfun(g)" ] }, { "cell_type": "markdown", "id": "f6f0cc7c", "metadata": {}, "source": [ "We can also reconstruct the original parameter values directly.\n", "\n" ] }, { "cell_type": "code", "execution_count": 17, "id": "fd9e79d2", "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([-26.50513205, -25.7265693 , -3.92491033, 28.34359676,\n", " 27.40297646, -10. ])" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = sum([c[i] * phi(data[i]) for i in range(n)],axis=0)\n", "a" ] }, { "cell_type": "markdown", "id": "59a77d74", "metadata": {}, "source": [ "We see that these parameters give us the same decision region as before." ] }, { "cell_type": "code", "execution_count": 18, "id": "6a83a5a8", "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plotfun(f)" ] }, { "cell_type": "markdown", "id": "495cae23", "metadata": {}, "source": [ "# Other Kernels" ] }, { "cell_type": "markdown", "id": "ac59798e", "metadata": {}, "source": [ "There is no real reason to construct kernels from a $\\phi(x)$ function; we can actually just construct kernels directly. Each choice of a kernel function determines a particular feature space.\n", "\n", "A commonly used kernel is the Gaussian kernel:\n", "\n", "$$k(u,v) = c \\cdot e^{-\\frac{||u-v||^2}{2\\sigma^2}}$$" ] }, { "cell_type": "code", "execution_count": 19, "id": "9a17ac63", "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Gaussian kernel\n", "def k(u,v,sigma=0.1):\n", " d2 = sum((u-v)**2)\n", " return exp(-d2/2/sigma**2)" ] }, { "cell_type": "markdown", "id": "c076d822", "metadata": {}, "source": [ "Let's look at this kernel directly.\n" ] }, { "cell_type": "code", "execution_count": 20, "id": "52d5f2c8", "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nwaCgoKBVKYScQUFBa6MAtKCgoLXRSoH2rW99CzfeeCOuv/56PPDAA6t8qZXrwoULePvb346bbroJ\nr33ta/GZz3wGAPDcc8/hzJkzuOGGG/COd7wDzz///BU+092pqiq86U1vwu233w5gva7v+eefx3vf\n+1685jWvwenTp/H9739/ra7v/vvvx0033YTXve51eP/734/ZbLZW1zdGKwNaVVX4kz/5E3zrW9/C\nf/7nf+IrX/kKnnzyyVW93MqVJAk+9alP4cc//jEef/xxfO5zn8OTTz6Js2fP4syZM3jqqadw2223\n4ezZs1f6VHelBx98EKdPn24rdNbp+j784Q/jXe96F5588kn8x3/8B2688ca1ub7z58/j85//PJ54\n4gn86Ec/QlVV+OpXv7o21zdaZkX67ne/a975zne2/99///3m/vvvX9XL7bt+67d+y/zTP/2TefWr\nX22effZZY4wxzzzzjHn1q199hc9s57pw4YK57bbbzLe//W3z7ne/2xhj1ub6nn/+efPKV75yYfm6\nXN8vfvELc8MNN5jnnnvOFEVh3v3ud5t//Md/XJvrG6uVObSnn34a1113Xfv/yZMn8fTTT6/q5fZV\n58+fxw9/+EO85S1vwcWLF3H8+HEAwPHjx3Hx4sUrfHY710c/+lF88pOfhNbzr8W6XN/PfvYzvPSl\nL8UHP/hBvPnNb8Yf/uEf4vLly2tzfS9+8YvxsY99DK94xSvwspe9DNdccw3OnDmzNtc3VisD2rq2\nQbt06RLuuusuPPjggzh27FhnnVLqwF73N77xDVx77bV405ve5G1uc5CvryxLPPHEE/jjP/5jPPHE\nEzhy5MhC+HWQr++nP/0pPv3pT+P8+fP4n//5H1y6dAlf/vKXO9sc5Osbq5UB7eUvfzkuXLjQ/n/h\nwgWcPHlyVS+3LyqKAnfddRfuuece3HnnnQDsr96zzz4LAHjmmWdw7bXXXslT3LG++93v4uGHH8Yr\nX/lK/N7v/R6+/e1v45577lmb6zt58iROnjyJW265BQDw3ve+F0888QROnDixFtf3gx/8AG9961vx\nkpe8BHEc4z3veQ++973vrc31jdXKgHbzzTfjJz/5Cc6fP488z/G1r30Nd9xxx6pebuUyxuBDH/oQ\nTp8+jY985CPt8jvuuAPnzp0DAJw7d64F3UHTfffdhwsXLuBnP/sZvvrVr+I3f/M38aUvfWltru/E\niRO47rrr8NRTTwEAHnnkEdx00024/fbb1+L6brzxRjz++OPY3t6GMQaPPPIITp8+vTbXN1qrTNB9\n85vfNDfccIN51ateZe67775VvtTK9Z3vfMcopcwb3vAG88Y3vtG88Y1vNP/wD/9gfvGLX5jbbrvN\nXH/99ebMmTPmf//3f6/0qe5ajz76qLn99tuNMWatru/f/u3fzM0332xe//rXm9/+7d82zz///Fpd\n3wMPPGBOnz5tXvva15oPfOADJs/ztbq+MVppX86goKCg/VToKRAUFLQ2CkALCgpaGwWgBQUFrY0C\n0IKCgtZGAWhBQUFrowC0oKCgtdH/B0l1xXVvQsuEAAAAAElFTkSuQmCC\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def h(x,y): return k(array([x,y]),array([0.5,0.5]))\n", "plotfun(h)" ] }, { "cell_type": "markdown", "id": "031cf842", "metadata": {}, "source": [ "We precompute all the dot products, as before.\n", "\n" ] }, { "cell_type": "code", "execution_count": 21, "id": "22d89f33", "metadata": { "collapsed": true }, "outputs": [], "source": [ "n = len(data)\n", "ks = zeros((n,n))\n", "for i in range(n):\n", " for j in range(n):\n", " ks[i,j] = k(data[i],data[j])" ] }, { "cell_type": "markdown", "id": "0a67b7ae", "metadata": {}, "source": [ "Let's look at the dot products." ] }, { "cell_type": "code", "execution_count": 22, "id": "630c9387", "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAATQAAAEyCAYAAAB02CyCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvcmPJEl+7/cxM19izbUqq7qrlxrODDlD6ZEXArpK70Lw\nLyDP5L8hQGfe+T/wUdCFBwI8CIKuJHTiAHwS+Mjp6e7qriWXyAgPX23RwcwiPKMiIpeqrh6N6gdY\nmkeku4e5udnXfrsJ55zjI32kj/SRfgdI/tgN+Egf6SN9pPdFHwHtI32kj/Q7Qx8B7SN9pI/0O0Mf\nAe0jfaSP9DtDHwHtI32kj/Q7Qx8B7SN9pI/0O0PvBGj/+I//yC9+8Qt+/vOf89d//dfvq00f6SN9\npI/0MHIPJK21++lPf+p+/etfu7Zt3R//8R+7f/3Xf71xDvCxfCwfy8fyg5RtlPBA+ud//md+9rOf\n8fz5cwD+4i/+gr//+7/nl7/85Y3z/pdQ/yMDfsKXvOIJrznjFU8459FDf36DxJYSnxtu9sO2c/fd\nV4YSjwEsYHr1/wH8ZyDdKAmg3y7HI3h+Bj85gy8f+/r5E/j2HL565cuvX8FvXsPr2Tv2zfug/xP4\nH3+YWw8H8OkT+PQMnj3xx8+eQFHCi1fwXSgvXsGr8623OKDgGa94xis+5fXq+BWPeMETXnDGdzzh\nBU+45PDuzycVHDzx5TDUB2fweASfOnhmQ+3gUwv/fg7/9Q3819e+/r/fwLdz1mOnP54cfvzEOh7f\nnZ79Yc0Xf1TzxX+q+OKPKj7/TzWjI8PX/zLgm18N+fpXQ775lwH/8X/9M7r9n+583/RpxvCPpgz/\naMLgv58w/CNfmv+npPqXgupXi1AXtL+p79Xm+9G2eRrr/3nrFQ8GtBcvXvD555+vPn/22Wf80z/9\n01vnXYcB1OJoyQBI6RhRcsg1BoVFYlCr4vaCzG20OSjcxndqS4H1oDK9483rLb5DLW/ft39uvA+h\n7t/TgbXQdlDWMC/hsoBRDpcL/3nZ+P8bC0JAqiCRoVa+tkCHx8hY683fi8f3myjvSkIJRCoQmVzX\nmcR1Fte6m7VzoDU0LSwrWCzhau6PixKqet0XO8gi6UioyVkyYs6UIQ3XTFkyomZAS4p9yLiyBkwL\nbQVNAdUAlh3MHQwtpA6kA+fgVQGXJSwaqDrQNmBYAiqUeOwsGO2L7dXbSAlEKiGT6zqTuMeKbiio\nnGNeOK5eWaqF5vpVSnGpqBeSrhHcNxbIGbCVwcw15qJDf9/QHiZ03zXo8xZzrbGVxWkHsv+uYxsF\nWHCtxXUWWovr/Pu+FyUSksSP+VjLMF9f77jkfr+wJiHuNjj+9/ATL6kDkAlyGo6YkdPQkNOS0ZCv\nilmBzH0ovjXBTc7sRqvxAJYDWa8GaEPpQm1610UgE73Puzhh0zsvfu4DiwNjoGrgegl5Ckr4SX2x\ngDfX/vuyBW38/4YpjPN1meTQCSiAZSwOtAOa0P5+3X+WD0CJQE4T5EGCivWBwhZ+ktiF9vUcnAng\nvqxgVvjJbvFAdnkN86XvK71jsuMBrSGnYExGh8RikMw44JJDFoypHzKunAPTeTCrF34yOQcyB+HA\nOKgdFA6uHHw/hxdzOC+haKEzICRkKWQDX/JQGw1tDU3t69ZBu/0ZRSIR0xRxkCJDLQ5S3HFJc5gw\nt4rsQoKDTLa8+Srj6kVKcaFolvL+gKYttjDoNx3tqAYFrnO0Lxrar2v06w4z17jOISTIsX/H8iBB\nTlPkQYJrLXausfMOu9DYub4/oKWJX+hHA+Ar6P4d1H61/4MB7dmzZ3zzzTerz9988w2fffbZW+ed\n8Ye+bcwYc4wDBtRktExZsGRMyYglYxyCjvSBgBZpG9cUa4F/5BwYAqNQAEqgCqUHPlvZ3r64APA8\n1BH4dO+czRIArW48NybFGuDmJVwVHtCqxgOalDDM4HAIJ2NfjsdQKz+JLvGTq42/X+IRToU2dLw7\noD2/9Yw+iUQgJ4rkUUbyOCM588VcdujXLfp1Aw5cbaF00HSwrEEtfJNb4zm2xcJzbLEvdpBBUpNR\nMEIEMGvC5zkTFoyoyfaMqz3PZzV0le9vAsDZzINZE8BsBrx2njt7XcBFBLTIYadetB5NfBlPoGuh\nLGCpAjh2u9uQCMQkQT7KkY8HyDNfnEqplWJhBVxCO7MkrWT2MuX6ZUJxmdCWEnHP9+e0wywM+k3r\nwUw7D3DnHd3Lhu5Ni10YXGs99zhWyJMMdZaTnOWosxxbGszrBvO6AdngGusX4PtQqmA8gKMxHP0P\ncPif/WeA//K/be+qe/7Eiv7kT/6Ef/u3f+Orr77i008/5e/+7u/427/927fOe82ZbxvHVDf4sIYE\nzTWHJOgVmFUMH9CaCDzbuLQ+9QFtDExDIXwv8JO/6d23f//+vfvlee+4z72JLd/ZNYDJwJlFbq1q\n/MQuaigjoAUO7WgEZwfwySE8PYRlAgPnJ0OHn1hY4Jq1GN0B70PH8fxeZ4vUc2jJ45T08wHZFwPS\nL4bo72vEwK+wtraImfYiXeTQLNAYKBrQnefSqupWQLMBwBaM0KgVt1aTU5FTMaAmR98b0CKHVgdm\nO3BrbRI4M+DS+TVx6Hy7rxuYN/64C+8vTWE4hOkUDg7h4AjaxotQhPs2e95T6jk0+XiA+nyM+sIX\nt0xp5pL5HNorRzE3yLlgOVOUM0V5rWhKuef5dlDnsIVGnwtc57AB3MzcYK47zEyvODSUQI4T1GlG\n8mxI+sWQ5IsRdtGhRwqkFz3t9R7A3kVZ4qWR4wmcHcLjQzgc773kwYCWJAl/8zd/w5/+6Z9ijOGv\n/uqv3jIIALziCQBjlhxyTU67EjnHLEm84mcFZpJ7sqUr2gVmm8AWAW0EHABHvXMMntUpeduQsIvz\n61MErqhn65/bA8cIaLoneqaJ/9xq6EIxFjIFg8ChnR3AZyfw/BSuE/8zXeASsije9sGs4sdwNRSJ\nRE0UyeOM7PMB+c/H5H8wop36trnaYq46dCbAOg9oFmi0B/Sk8HpG3UHX+XqPyBk5MoOiJqdgRILG\nkNCh0CR0JJj79kUUOWPdVV7sLKUHs8T54RTtP60O3KX2wKwNiKQHaBM4PoaTUw/WuCB6VlDulkpE\n5NAeD1Cfj1A/PyD5gwPsd4rmN9BeWYpLg/haw0voGuFLLelqgbX30x1GDs11DjPXyDcSkUsPTLXF\nNaFuLSJXiLHygPbZgPRnY9Lfn2KvWhDCnzvXiFcPkLrSxHNkJ2N4cgTPTuF0uveSBwMawJ/92Z/x\nZ3/2Z3vPecNjwANWToNlTkbLhIJjrtAkNOSUjMhoSdBI7A3DwP2MBPsUBlGHluFFzjEe1KJoVuNH\n52bn7wPIze/voLAwJoid7e3nDhJfpgM4HcPTA/j8BCYpVM4zZOfOK6dXloEGL3am7LfibicRnuNm\n7Y9c73gnJQI5VqjjlORpTvqlBzUcXpQ575AThUikB4u280BAw9oaCG9bAbdT5NCanWfsf9K3qfcO\no+L+oZQLr9DOcxiNPZd2fAx5CV0DTQnlwE9eJcNPu95wcpBIxDhBHmfIp0PUl2PUz6cY52jODZ3p\n0Jct+tcN5ut315c67XDaYJe330uMBHKokEcpyVlO8vmI7GdjzHmCLTT2okV+nyCyBxhkUuXVLQcj\nD2RPjzyntofeCdDuQyaIAkvGKzFTk7BgSkeKwjBmiUExpAqraoomWR3vJ7HleBOI4qSvWU/4uGoX\n4fuo1M+2XL95r13WzvvQthfdu5913mJ2XcHrOQxSr1dbJPCdgws8h9ZGDu0KWOC5s/bebZM4Mjpy\nNBmanI4MjUHSktCQ0pKsylbq7EoH031bI4cSIQTtVxXd1xX6dRtElj5Hu7kgbIr174ui64TaqOP7\nNBv1O5JznsusKijmnlsT0ltOu8r//DQHcQQj5TnztgvcXhe4dYtbaOybGvNtiRgqEGC+WmK+XmJf\n17iHKN3fBxmHXRrMRYt+USNGCULhOfDflOjXDfa68zq0+1KrvcX/KngBJNKrYvbQjwJoCoNDBHN6\nRku2ArSUjoaciiE1g1WtSfZwBX391i6AiN/3ORjJetCWrC2Ckt2A1ucYBDeU/feibQC82VYXAK2F\nWenBTAivm1kqeAlcOFj0jQLzUEr8l/cbSBLLgI4pFRNqJtRMqWhJKBiwYEjBAMdwJ6B5JbL2nNig\nAsBWFv2yof2mRr9usQvtlcqrZ44U+zV+/z7BDNZc+qbPYPSDiSW+53ck67wBoCphEThmY7yrh2m9\n2DodwEiCGXqRe1kHt5UKjHePcEWHPW9gsATAVQb7ssJ8U2Jf19hFB+2HBzRnHG7pOTE9qtY6s0WH\n/qbCvKwfDmhdUEFcFaCUV8Fcl3sv+VEALRoASkYoDBKLxDJmyZQFLRkFExZBYa/v1MxtjrV96nNo\nDWswasNxHMi3cWjxHmbj+4fSprFho+3Grjk0IfyqVTRQS29du3KeIetgbeWM5SGA5hjQMqXilAUn\nFJyyoCLjkilJWIwaUrwu8m1y2iuSzZuW1jls0JmZqw79pvW+THOvo9m4csvnHwLUEtZuO7H0RV54\nb64uzq45NCG8+No0Xo2QK8ilF0ezISQCZgs/gaXwOri6Bb3m0HBAbXBXLfaqwb5psOc1bt79OBya\nXXNoSBEMANr7sb1psOctdvYOgFbUXhQ31vfFaPuYi/TBAa1vzcxpGFEyZsmIclUMamX51CTUDG65\n+zbv/76FsU9R5Iwrcl9xHidO5ND638W675P2rqv4Ns5yA9Ss8y/ymsCZNXC5BC09k1m6NXZ5n4de\n6e7dPg9oHQcB0D5hxlOuWDIgwWADmC32WKNXHJoAWxvMTKNfNn7gF8b7JRWmx6HFtu87fl+g1ufQ\nonFohO+rKHpGLv09kAscmsBzZk0DyyVMh94dYTSCycBbsce590uUsmcJl6C159AEuNpgZy3iZYVb\nalyhcYsOV+gfhUPDOGyp4TJwZvMO86rBdTa8Z+936JoHLBCt8RyatVB3MK+85XMPfTBAi86PfWtm\nguaUC1I6piwYs+SES2wYTNFgUDC5469EYIgDM34HNzm0CGZRAa3wXdEvae+6/vV9MWm/svp+bd5s\na/gcdWhtcGdQ0usSrFgziiY81o029cvdKYqcB5Q8YsEnXPIlb5gzwgENKQUDUnYryl3nPHDVFnEl\nEImAVIJ2OB28xrULjsAbz3sna/K7UB/QBngwmxBYXHxnxrHxHijq0CKYSemLPYCxhGTkdWhnR17x\nLYWfwFXjnYqVxNUOig5XG7iSvf4M3vqdXfXthyZnHCwNpvGcmW9biBTQFlbv+oEcmg2c2bz0Yqfc\nb1z4oIBmNwaJwjCiXAFd/L/EojCkdOQ0DKmCwSDBorCrWuFuWMXu1pK3J3m0fEbuSLFdBOxzf1Gh\nbPGT4zbRaNv/NvVoW85xznNm3R0sToBKLIm6WQC0kb5ouTrefR+3qldFglAKoVJQOSIZghx7UaBf\ntAXrcI3DbehvVeKQiUMphxo4VOJAgtUC0ytW7wjXEaCUC9FD4V5JgHG9vo+PJLptTGxzmH43Uol/\nJt9GfyykWz2T0XL1jG6YQD323JsJjtxC+EKvhlV/EsS29wvxcqPssjBHyWQjttl5MZPW4lbc7XsC\n1jim7kEfDNC2UV/8XDBdiZkKQ8kIiySj5YA5CkPLqFdyWkZoMm6GF22EGd1JB9O3cOned7vq+HKj\nhSy95Xy2fLevbJ5/NxLCMco7JsOWySiUYYsDijKjKHOKKg11thU0bPC6XzDknAPSoDNbphNeDp9w\nNXrCcnhGO3oC+akP0aradV21O8E3zS2DiWE4sQymhuHEoBJHVSjqQlEVknqhqAqFM2+DjBCQjRz5\nxDKY2FWNg7qQ1IWkCbUpxI7ui5Ouxase4kKi8eqHhjUXfz9Kc8twYhhONMPV81mqIqEq/HNVC3/s\n+j6Ieeo5j7KB11frkK+69RzKD0bR0TwLJWW9sMcQwFi3rCWXfunrnzeNKh+eflRAA++fVjNYiZWa\nhJRuFbSe0a4soBWHQd2dI0gwjNEMuak3gvUqcZ9OjQO9HwkA2wEmrlQxumBTrN0GXJuf+wHrZst5\n9ychYJhrjg9qHh2Vq+IcnM9Gq2KMpKi2+6hZBDUpc0YBzKAhoU6mXIzPuDo6Y3n0hO7wCUxOvPX1\nuvQ1BMfgXYDmGB8ZDh51HD7qmD7qSHPH/Dxhfp4yP09xVtCUCrvlFkJAOrSMjw2TR4bpI8P0kcY5\nweJcUZwrFucKawRNsasXY9/3oyjiO6jxY+hhgJbllsmRf7bDRy0Hjzqy3HJ9nnJ9nnHdf74IaPNl\nCH+z3qp5tfBlUfnwr3tyKPenKHoPWYcDOjy4x3DAqKKJkkw8fxC+q/B9F/szhv59ePrROTRNsgp3\nigaAnIaMlpSOlI4xSzJaFjhSBggOgn5thA9dqlg7w25yZ3B7524q9+MA33ZeXNWiyBl1bvH/dylR\n6ax793x35bcQjuGg4/ig4pNHCz5/MuezsznOCb55fUCaWIyVFFW2MzjMA1rGnOFKZ7ZgSJseUIyf\nsDh5wvLxE7onT+DoBF5fQx6evw1WqR2UDizjQ83x05ZHnzU8+qwlHxnOv81Jcxcmu0TIuFBsPqAj\nGzrGx4bjTzTHn3ecfKZxDi6/SVGpC2BmQag9XRk5tD63tum28QAObfV8DWef1Tz6rGEwMrz+dhCe\nD5pSsZBuHSUi5dqaebW46bJR/9CAFsfyAK9HjKGADm86j7roqF+MgBb1jmPWHF6MHda8LxH+IfRb\nwaHBGswSNEMqDphzEKIK1sdpADNLTcKSMXDIGsyiS8ZDxLfNGMxd/mxRzIyDIWbs6Fs93cb9No8j\nh9D//HBRM5Ln0Dygffp4we89u+Jnn19irSBJDMYIllXK+Wy0U2XnRc70hjUzY4pJD2nHT2iOn9A8\nfUL3+RN4fBzALLiTLOq92RCygWV85AHtyU8aPvlpxXBqSHKHc9CUksVlssoQs+35sqFlfGw5+lRz\n9nsdZz9rcdbrr6yBdikpztVOwF5Putj3kfOI4LaZPurulA0skyPNydOWJz+pefbTkuFUk+RBLC4l\n88sUoZw38pS98Ld56T3j+061rf6BRU64CWhHocDN5AZV77toGZ7i517KTTCLLlE/Dv1WcGia5IYi\nOsZ4TihWgHbGaxRjNI+pMSxJUDdCl2Jn9r2+796S9fC/7TrLWtTsh1H1Aa3vbLupXI1tjffaTDf0\ncPI6NM3xtOaTRwU/+fSKXz4/xzqBNpKizDi/HjHMu51DLoqc0ZoJwUiQHOPGT3DHT3BPz+CLM/j0\n2F/UaC8inRd7AS3NLeMjw9GTjrMvaz77RcX4UGMDZ7a4SBmMLEJu74eoQxsdGw4/0Tz6Scunv2xw\n1ivd68KDWTq0e+ZUX9yPnMeuyJL7kX8+zcmThqdfVnz+iyWTQ70SM+cXKRcji5QEtwzrs66sDAF4\nI5ALv+/C5x+M+hxaZA5OWY/XFg9mESb6HNoUD345N+ffkv/fAhp4UOvXAJqUhhEVRxQ4BihSBix5\nhGaExDJkwSEvSajQlJhQaxoM9h2g4a7iaYybbFlzbNs4tD43F3VvmpvZb98hVrDfMidouoSizLm4\nHvH9+QHTcYe1ku/PD7icTyjKIU2X99rztnjuesvLigxQa5+88LKEydx//3oOs6V3KWm6vRyF7lLq\nckhxnXB1PmT0XUtRWC5fZ8yvMsoipW0znN0Ois75wOu6kBQXiuvvEwZTi7OC2fcJy0tFXUh0c5cJ\ndRO8VOpIckeSe11fMvDf6UagQ7C3rv3xNv0egG4FdaGYX6VcvswZHRiKA835dwOuzzPKeULbSN9F\nfdD6EPomEZIjyiQcJyBTUMegDkBNQA1BZeAMaAWd9Hn3OhEYWeFdhlRIuKhSECmYFHQCRnr/yFtz\nit72fh7eHz86oG0jS0LLmCWChDyImY9pGdMwCYB2jcQw4g0NhhpDjQ3H7gccIn1Aa3vfxciDTYCI\n1qC4uqWsubLN+7xjyxyUdcLlfMj3bw5IE4c2CdYJvn55xPfnR1zNp1TNELfys9vkJndQdOq9WvoM\nIOD1ZS+v4dXcGwaqdq+/UdemLOcZV28gnQisgsEE3vwGLl85FjNoKnB2h7DooCsFy0vF7PsElXqX\nCGfh4uvUg9qVoq3un9QwyWB44BgeWQaHltGhJZs4qpmgupa+zCTWSOwWCyxA1yiKWcrVywFp5rBW\neh3a1wMuXgyYX2bUS4W7Z/aL90JSgcohGYAaQJJDMoT8ALIDyMc+YiFPfK63UviyFN42oAkaFgkD\n6aMcBiEDb6N85EojoRa32OM2fS43ueNNnfL96LcU0BQto2DNPMBgaDA9vyjLkBkjrjAIChIKEiQJ\nlpSGHUrl90bRvSN2/KZ1tP8yBOv8MjmevY8gEvNnv0tCyzU5J6ialKv50IOZVRTlAOckry8nvL6a\ncjWfUDcDnIuuJrHt/WfYQqsohcIjS6s9uF0WcFV6Lq3cr8Rum4zlPCd5k+GSnFpnZEPJ7PuW65cN\ni1lLUzVYtyNkywnaSrK8kqg0wWpoCg9e89cJ89eK8krR1btcNnaTyhyDQ8v0zDB9Yjh4ahgfW+av\nFPNXCpV6P7d2CXpHfHRbS4pZQprnWCuoy4Qsd8xep8xeZ8wvUm/h/DEATSgPYukYsgmkE8jGMA7R\nCqMQqTBSXq83E3Ad/OF0ADUlYCC8Q/BEwTjxnNpSQSGDtZY7rM/bnMn79DvJoQ2CR1pCg2JJEkKj\nrxkyZxBqr7oeIxhjGdOE4/cFEm9Tn0OLgNB3xO2vNH0ftcihjbnJmdW8L6905/CAthhhbMKyGnAx\nm+CQzJdD5sWQ+XJE1QxZB2RvPtcO0gHQYG3NHGTBKtf6utoPaF2bslyMcemE1k4pqgkqSykvF5SX\nBeVsQVMJnN2eDNA5aCtBeeX91JqlpLgw4ATVXK5KW92/P1XmGEw9oJ18oTl9rpk+MeSTBJm6AJ6C\n5cVuR+6ukSyvU3DSWzMvM5LUsZwryrminCfUpcL9CBFKCOk5tHQM+SHkRzA4gIMcDrJ1PU18/rlM\nejDr8GAGPtY0lzCRcKh8yRJvzBAKrIQmOgXfhfp9eV+993b6LQU0RcMIzZiaEYoRijFHfB/EzBkj\nZhzxgpQ5ghMsJ7ScsEQiGPLDA1rf/UJs/D+ShFUcat9C5FiDWT+F0bu2TFDVKdokFFXO+cyRpRaQ\ntF3mi85ouzRwaH0Xl+gsvIMihxatmanyBgBt1pEM2uwHtCZjOZ/QmBMW5SnJ5QkyydHLC3R5SbcU\n6KrD2iXb3GY8oEmsFjSFRJ07khDbp1uBbgUm1PcXOdcc2smXhrPf7zj5wnjOzAraQlKc+yiFXdTW\nMhg4EuaXGUnmvFdGC11ol27vn3DxvVAUObMAaMNTGJ94UDqWcKLgOBx3cs2ZVcLHEQs8oA2EB7Qj\nBaeJF1EjmLXSi6h7H28zQmMzWibS75jIacnRjPCWlwPgkISSIW8CjNTkzBhwyRDBAMWAlDz4sQkc\nFkkveCcYHmIJQBRXE9ef2P5Y4pDC+QArEe/mLYHWCQzCh3Q5saP7owHA9j5HE3d0/+iXXcHa2+jt\nQeGNAr6sz+n/br9IhHQIKf0uTdIXhNdJOet1w/EY43ymiPrhTpO6U+hlBt0IlhPIjvyGI23nkx22\nS+gyPzluxOOG/nCslPTvm4T0erRs5Dm10bFlfGoYHinyiSUdeiPBLgusfz6J7gT1Et6erNvUEW+1\ngreeeX+r2RzPApDSIIVFSYsUBiktLtPY3GEziclSbDrAJqO1FmQIjB1MQ0r0kYHc+bhMGWJfhfRi\nZyr8/wYGBhoG1mdMTtxaWLlVD7ZNh/Zw3VmkDwBod5GRt8nTURhfZ8PQVDRYChIyJghOGCBZMkaT\nkKCZsgBYxYfG0pKhCVaZfh1DPUQHrudY6VpyqRnLjpHsVrXCUtqU0qYsQ12SYdyuSdY3Z/e7OyaU\njLq4hLeNCvsmQIxUiPq5BD+atoWBbXJf/r4qNyRjQzpyJGNIRwKhBLoUdCXo5frYmfV1d5ucW8hp\ncDWYAkTmJ4jIQc/ALMF24Zb9xACbVuNddJeVfvf1phXUc8HitSKfevBqlpI3/y1h9iKhOJc0S88d\n3vKQ7J6km23c1CX11RbbDEyb9HYokpQwzktGmS/jfMkoK+lUSykFpRQsJZQaqqXhhm0oTreu9pu9\nzDo/TNscOPD52hoJRQdp4d9flsDVld/Qpqo9p/7WgrSpiun3id1xzsPoAwNa/8VuvuTNFW0zv79B\nU1FjKUiRjDGcBFfcZJVyaELBgHqVHLJkRMUQi/SARgpiuC79UA9XgqsCt9YxEIYjVXOiKk6TihNV\nkQvNhRlxqYdcmCFoqE2K2QncMc9WyU3le8ka0GBt/dz0Y9tFMcXRgPUym3Fz+7qGm1EPcdB4blAN\nLPmRZXDiGJzC4EQgc0l9IWguBfWFoMa7KzhzH3DZQU6DDYAW+0KkoJdgSg9oFtaOyn1AvguAbgOH\n1Y/vvVJ3Xg83f628zszA8lIye5Ewe+HDqppC7Nw6c/0bt3EcUb3QkxJuBHz3F6Db/B8UN8OWhigp\nGGcXnExaTscdJ5OC08kFlau47OCihcvOYTqoarP+mTjV5nhO/KKGq9aLkF0O7gB05q2Zyw5k4TMC\nJCLszlWsAc3FZ9p8Z/sA64GL5Ab9FnFomyvWZnhKg6GixgRr5oQGzYAsQJompWNATYKmZsCcg9X+\nBN0qkDYBMQAxDSU45ro5K72b80rpgdQcqpqnacGzdMGn6YKR6HjRTRkKn3yytgkzs+8lxPxr/WcS\nrENs4gzp7zrVnxS77r25N8IYP7hjcsf+7/VXQa9TA4EaOPJDx+ipY/zMMflUkIwkxQvJcujfha4l\nYta35m5bUe9IznhAQwZ5NgQ829aDmWnDYhLZhjjJ7xNbuU03c6MRW781LdRzySJlZT2df68oLiTl\npa+bQt4hi8e239i2aEcQ66cCj0AQreh34dBuhi0pIRjnDaeTOc+ONM+OF3x6fE7RLXlR+P1nTOEo\nKqA0N9fJPeTVAAAgAElEQVTbOWsj/ML5Ughow6KphVf6F11IVLkEZcPuXKF0egPQ+uNlW/9sHv9/\nBtC2sd/9422A5ug7r2pqamxwzRizRDJgwIRixZnF45hzrZ8d1/9UCgw9mMljECf+d1zYjdx1ICpw\nkAvNkWp4mhQ8z2b8NLtiohoGUoOAyiVcmQFSWH/9VupHBcRlsJ9QMvZBBNz+BN43eSKHNsQP6EPW\nsXX9ZTf+TgRKQRxkSS7IjmD0FA6ew+FPIZ1I1MBPNlNJmiuBkNv0ew/QY0UOzVmwDdgghju3IWH1\nszjcwWDx1vjpOzr3J9VuMq2gvpZra+a5d65tS0G7FLRLSVPexqHBdi5tVxujPjOqC6LONV57W7uj\nK1AMWzpGSsE4v+Z0nPDsWPPTs4Kfnr1hVuekFz5AoSwdFx2wNGswi5qLFD+W6wyaUNrcvxPT+USL\npvWB82XrVTWdXhuGOgOuD2b954/vY5eu7HdS5OynQO4roB0ai8XSkiKQSIbkAagiZzah4BHnq/RD\nLRll2NZszaENQUxAHIN85H/DBj2aqMB5PZwHNM+hPc9m/MHgnENV45zwnJke8L3skDtfQATkCC59\nEaM/kGMdKXJR+3Kg9Tm0GFd30Lu+6d1z28QQqFyQHwlGTyXT54KjPxDkhxLnJKaWNDNF8r3cALS7\nAcRWcjE2MXCpInAprjebXNQH9SdFn2vdR9sWRrgJMNtJtz4CoFkqpAKhvIXSGv+9s/7Y3Snx6rbf\n2TbONxOL9he6NSe9mzbjMB+hpGCUv+Jksga0/+7ZOedFijaCYgkXCvJOwNJux1mXgZ2Cm4DNwAbQ\n1KXnzNoORBFK7TkyK3wdyw3L/WanvTtw7euRH5j2IfHmd32g21SM2hWfsQKmcF5DTs3gRulIcQgS\nNANqxizRXGMYYBliGGEoQ1wBrNPGrPUWFknrFJVNWdqMufH5zAubUbqUxsW9HvcNuj4XFl9s9E+L\ntKkQvo31jufGyR4ddBtu7o2wT/fks1vYVmIqh15CO/f37Qo/dm3j/CYYd27XbeS4gQgObupa1rMq\nSTRp2pJmNVlak6YVSdLQdYq2U3StpOsUXacwb3nu9+/VF38ibSrcLc6CsdtAcCOh4Y323iXKoj+u\n+3X8X/8+IoQWhS3tksyLdBgfgRG3PzQ2bLwcr12/f+cE2nS02lK2gkWdcF3mzKuEZa2oW0HbWozu\nQO/KjOJY50jrpXN3rS826mdj6VvqPacpE4fKHCq1qMz6OjGYTmBaMJ1Ah/pui8Td6AO5bdymDITt\nStzbJ1HkwmKSyLijlEFRMcQhVhsb53ReZe4cMQGo3+dJgp15zsxVxKDl2ilmJuelnjBofZqasWr5\nqj3iRTflwgxZ2l0GgdsoDuL+24zgtA2Itk3amNNrEb5rw/GSYK5iHzela2hmjvKlQw3AOUs6liy+\nMhQvHPWFpVtKH6O3auvDMlHspk1g9pRmDQfTJdPpkunBkum0YDSqmM9zikXOfJGxWOQs5jnG9Dmb\nSJHD2Syi91ubyUA3SbA9PTusY3kjmOzrk83FevPc8PvCev++QQpDBYNQnPWphOom1C2Yxn9/w4Lu\nMA6WTcFFoXlxlZCqCcY+5rpSfHV+xMvrCddlTtPt89OMIBm5/Nj2iu1JMG8uDuDBbHBgGEwN+YFh\ncGBIR5ZmLqgXwtdzQbMAvSOU7CH0ATm0XXX/vM3V6y53X2e9ldgVwEVgAy+OZrRMKVg6rzJYOu+X\n1lkwpOAKsAW42otGQGMTrs2AV51G4KhtwlB2vOwmvNQTLvWQ0qbYnS4b+/pkzW/eHAzbQGMb5xCz\nRVS9zzVro0DNbZlDTQPNNZSvHAgwNaihpXwpKF866kuBLm0IFo/tvavF8T7U5zT85yytmU6XPD6b\n8+jRnMdnc44Ol7x5M+bNmxHpmzHWCqoypW13tWUbIEXdnGTdP/tYhMhNxzRRMbtEtCRHneRtyrXN\nxXrL8wvr42RHmd9nYDrwBQeLJSxKkKX3CawjF97iAQ1AYy2U7ZKLQpOqFGOnLJtHLFvJy+sJr+Zj\nrqsBjd439aOqJD5f/BydwfuA1gfrOGYFSWYZHBgmjw2TM83kzDA8shSvpS+ZwFlJV74/MIMfBdD2\nnXPf6zygRT2ZRd7YUWqzJBiuEX4tsz6JQCUckAcgi1k3I4eWMDOD1fGVGZIJw8wMmJmcazPwgPYg\nDq0/APridV+M2Xz2vm4oTipYD+yE9US7fdcnU0M787+ha0dzJZCZoJkJ2hk014KuFDjbb9v7ED03\naXOlN2RZxfSg4PHjaz77fMbnn1/x+GzBt98ckuU+S21Vpcyudjkjx+MISFGEktzcrq4fxraN+jtE\nRfcI8AtJf7LvUnRvticCgN34HLjgdADj1O8IdTKF4yk4B1nuA8Fj1pPVzmUxsNQvbsYGDm1pfPhb\nM+GieEStJdflgFk5YFbmNHofh7b5TBHcIqhtJsHc5IwFKvNc2eSJ5uhzw/EXhsmZYfa1ROUK5xRt\n6ZCXe5rxAPoRdGjbPm/qzm67x5oiiPWBLRoHDrkmp12JnGNKEufv1wGVAykcMAxcWRBDnB/gjU2Y\nMaC23po5EH4P0cYlNC6htgm1Uw/k0KIFaFP/sgswNrm0yKFFJXsUqbY51W4n0ziamQhgBsnAIaTA\nNN4j39Qe9Hx2iP77+SG4sz6XKkizmoODJWdncz7/4oqf//ycZ8+uyTPjY1arlMvLIUmyCQyb7dsE\npNhPsE60uYsihxfTVEf3mD4oxcl+2zNu9uEWK7+wId1YCocjeHQIZyf+NKnWnNkixv9GQIsJDiTG\nOZZNg7aaZZ1wXkwZpCna+tRSdadodELT7Zv68bnsjXvfVJNs+iLelLBUaskPDNMzw/GXhse/rzn6\nzJDkCuf8QlleCmTSl8renT4woG2zPu1jxe9ydxGiAeI+mv7+moycDsuCjI4JBcdcoVE0TlIiyRAk\nziHD5sf9ewI0TtEYxXznvqDvMrEfAgxrRbcIA0uINhw7hHAhP6Bvf/94G5nGW+BXKjhE75UEoPhB\nEwxGir9hiKFoadoynlQcny55+nTOl19e8fz5jLpJmC9y3rwZMxp1KLWLQ4Ob1sQoLsaIjKj7us2o\n0+fw4rZ3oa0rbviWuOH+sF/Zf8L7d6z7WFjfvGHiRc2jqc8K7PAxtGXjxc408f3k+tylHwPWOsrg\nUbHmSqdb+uc2bjIuiLHR267zx0K4MHRCLSAdGoYHhvFjw+GnmtPnhpOfGHQtqOeW4o0gHcm9sbHh\n5tuPd6zTH9BtY9PnJpqpo4K2xyHdS+ks8L5lwewvvK7EkNHgWDrHNZA4hyZhwZSOdLXxikExpEKT\n0JGuMuh2K9eBTQfIqFS2G+VDTPw1pcowVB3DpGOgOoaJD9WqTEqlE2qTUOmUyiToHQkTUSH9S5L2\nEvYJb5rXHWi9Pv6hgE2E9yeTdS0TWpmxqOHNFXz7HeRDKMuU//j3Y757MeXiYsiyyNB689k2J1/k\nwqI+SLHeDCVyuLueLQJFvD5Ge7hwHLmjPTo4JRBDhRgoXw8VYpj4PTUrsy512Em+66Cs4LqAPPN7\nDjjgfOa/K5sNb/xt73Ydr7s+7s+zrne8jWRvTiW943CNC/dwGqk02dCRDSzZcF0mZ47psSURjvYa\nrr4WNMuE8/+muP5WsjyXtLdFXiQb4zNJWeVnf73jkj23e0/UB7S8V+LqEZWMsezeZGM7hRVUDEGE\nMBAxwDCgcV5dqpzACa8Ha8lWRoMxS1I6GnIqhqtwqZoBmgS3ipfsx0wK7mfh+mEok4aDrOE4rzjO\nSo7ziknacNUMmLVDrpoBV82Qzkr0rmweSQL5wKNFrJXyWRbr2tdN7UHtB+PUZMicOgzJB4egBnRy\nwLwWvLmELBdYC7OLhG+/PeDFiwMuzkcUy7QHaLv8ziKgRcNG1KH13XT2UeTEorUvvuu409F+QBNK\nIMYJ8ihDHq+Lqw32qvVl1sKVw7UhMHxZw2zh84vFhJmXCw9oy9pzazdcUvrHfY6yH+cZLeJVr94D\naGTrORXnFQ3eC6D2tXBIpcnHhsmRYXysmRz7Opv6JJ5KCJprwcxI5t9LZt9IZgHQfCjZHu5YhfE5\nGK7rNEhivx2AFvORxzLAQ07MQx71QfdxTBH4QOfg/S+mICYYhh7QbBBLHZQoFF4PJrGMWTJlQUtG\nwYRFYM31qlsioEVxJSqV+1vmRZ3Ch+XQIqA9GRY8HS34dLTgJC/5vpzwfTlFCUtnFYsu292dKoFs\nAKMJjKe+ThJYFpAsArdmoL3vInMPEgJk5rOnplNIppBOaMWQReM5NGuhLOD1OOH8fMTF+Yjz85Hn\n0N7aMLkv2/UBLR5HK2dckG7jruP1fQV5NMjcgcuTAjlKkKc56pMh6tMh6pMhttDY7ytM7qNSTGlg\nob3XfVmFZInG55gDn39uUUNZ97YJ3JZFJTrbxvjeeNzgI82jeBy5zi0kVJhTI7wD+hTkFNwS7ILV\nBtuuQ0rHYGSZnGpOPmk5/rTj+JMOlPD+gjqhvVYUF4q2URRvPJhFDs3s49AioI0mMJnCeOJBbQ/9\nCBxa3GBhGo4j1xNZ+x3cxM7bCzyHNmIdznSMYURjPWfuDQCOHMGIkjFLRpSrEgPb46Yt9Upn1ge0\nODgiKw9v+5F9OMqU4SBteDws+WJyzU+mV3wyWjBOW5RwdFYy73ISsYd7VGo9YKaHcHDsV8AkDZJ1\nALM7J+x7CInAoY08oGXHkB3TyRGLECVVLuHqHIZKURTZuiwzzA2R8y1FFevFpu/n1jeY3OY/tgmI\nEQQid3cLlxc5tNMM9WxI8pMJ6vcmuFmHziTOOlypsZdNwMkgchrrw4uKIObW2m9GU+tevOQ2H7k4\nxzZL3OrRcdPdZxtFDm0E4hDkkZ9Xdu5F4Bjt4UqEgnxsmZ5qTp51nP2k4cnvNbSN5Po8Y/ZG0M4V\nszeS+XlCUwiahfD1rSJnGJ/jCRwcwuExjMZ7LviggNbv7ClwjA/ZiNaT2Mn3nTyyx6EdgDgB+Rjr\nxjQy3NX6BS9xglMuSOmYsmDMkhMusav0RAkN+WrT47cBLQIwrAd4DDb/sJRJu+LQvphc8wdHF3w5\nmaGERQfO7HU1JpH7AK23Ah4cw/Ej7x6wArPGs0Y/JKAJ2ePQDiA/gdzvHzGvPZglGhLtUEahtfR5\nx/S6bNyQt0XObaE3m2UX9WOKo1gHb1tmd1AANHWao56NSH42JfnlIfaiAefBzF21iFx5sb7rPJjV\nbUhrHURKgw8vWqmY+waPvojZD1bv77VZcBPM9hkyQlonMQZ5APIU5GN/f2tBeDADhVSOfGwCoLU8\n/VnNZ7+sWM4SrBE+S8m1Y/aV5NWvfdp0oz2QmY67iZzjiQezk0cwPdh9Pj9agkexUTaV73ElYUt9\ny23DgRUS626CkWLMiHKVKy0CmcSiMKR05DQMqYLBwP/HkmHxe0m5G+1/6OOLMJHlzdpZH1PqrB84\nzvV0V5vK7nXKSinWySilCN+Le+DQirGJF8l1faNssZJJ+XYB3/7Nco/+MVpimoSmzqAZQD3y+ry7\n34StoCWARCAS4TmARPpj63DaeZ2VdjhtvZvEChQfRiL+2Tbct70kY33pNu/SN0zF411W3c0f3Cz3\nfYL991ntwheKDEPFtNAuBfVMsDwXLF7dU/p6qwm3D+oPCGhRP9bf5y/K9SXrNxhz3feth7dYolzr\nlZR24a1kFqAO4UwFuAacoR9VsGC6EjMVZuWYG/cBVRhaaloaWjQtNqiRc7Z7S9+DhPSiXZr5eL00\n8xtY6M6Xrgt5mzvPKcXn7FFrJfM251U1YpQcooRl3mX8x/yYb5YHnFcjii5Duz2DyGgPEmURxEzh\n23I9g2LpQ220xWcS2eJUK4A0hSzzFrksFPDiUtsrzQ59jXNgWzAVdAu8lZro9Qu6CGE+dwWVbb5R\nvc9KIsYJYpIiJqGeptBaXNGFoqHocMvbvP/3TS7/u8443FJjL1rMi8pzYhbsdYv+qsC+qrDXLa65\ny/NtcoMxO8cmUPX1fTHDSwXM8PPNB/ztJhvmVAnuGp+w0XqR0117XVq4hzWCeqkoLhIuXqQkuY+L\nLa8Vb77Kmb1KKa8TuuYBYBbH5zKMTwTU+0TlDwpo/Sxy8XPdKxHQop9Q1E/donB3Fp9tNrDRMWsG\nLbgF2CU+AsAPzo6UmsFKrNQkpHQY1ArQogW0oqFEU+IQ+PhQvXJmvN0TfyfJAGj5GAYjyEe+bppg\nYax8bURwFHtbRGqNZN5lvKnGJMKineSiHvJ9OeG7csp5PaLo0t0uG3BTrCQooZMUlktfmj6gxcnU\n1zs57xM1HNzcPQgHyxLKUKz1oLbVUmrBdqArr4zGgQspavQiJH+suUPentDGOJnZUvesjqc58tEA\n8cjXrjLY8xp3XmNVg+ss7AW0bVbV/m+FdgRAMxeN32DEOVylcYXGfFdhXtXY6w7X3DaO+uAcz93M\nQtJnAqLDbwWrRTjG+fYTi26jqCNbejATQVSNRgG39EwCFmegWUoWFwlJnhF35qoLxdV3KbNXKctr\nRfeQtOnG+DG4LNYGqnK595IfgUOLflwtnhvbDBLuB//CrTqKOAFWmW11ALeQ7jmamUNspyahCuEr\n0QCQ05DRrhJ2j1mS0bJYxSAI75AbAoBvJmd8gIVTSs+RDUYwPoDRAYwPoVr6l0fgMtttyusAaFYy\nbzOUGNFayaLLmKQTrpq1y0bRZbcAml6LcRHclPL6myaUrg9o/UEZnGDTFIZDmE7g8BAODjxw5XOf\nMcI6D2a7yDkPaCa8P6s9uDntgUxXIVzhPhzaNlALJAVinCJOc+SzEfLzMfKzMW7RIb5NsErgOotY\ndHd8q9vEuN6VNnJojT8uDfayXbttXLa4WQd7ObQ+kPUNHv3/9/WFEcz66dk33Tb2/N4q6D2qGdrw\nfoLbhqsCoBm/KUwANGehLSWLS0VXS4qrhOVlQjlTD+PQdBifUafbNGu3jR30I3Bo/RSZ0benL/sn\nvWO4HdDiahKATUSRNnhRuwA8bs2hwRrMEjRDKg6Yc8B8JXL6YxO8ziQ1KcuV28bdQot2klD+xQxG\nHswOTuHgBNIFKzDrDMjIBfb70FNnFfM2p7OSRZfzphqRK02pU2qTUGrvYHsnkdNoD2ZJ4dumPWcR\n9Unr5JX9zBRhUiUR0KZwfAynJ/5dqGANazvPpe0k60VO7dacmkz8pHLaf2f1HTi0Dc5o6//oWR0H\nyGdj1E8PUD8/wF01GCXWouebu+jr+mAWf7c/br3IaZcaYVmBmRj6PvZOtdrXt3Jo/efYXFzigtcX\nQeVG3U8ztc+pFlZz1QUwcyU3HWvjnDJYA/Uy7nYlKS4TsqHFaM+ptZWvH8ah9cZn5NTUfsj6wBza\nNn1QtlGSLdfcoqtYbW4iwq1vDqo4CSOHpkmI+zQJHGOWq/jPCGhnvEZh0agAZgMUQ1hxaX0L1wM4\ntChyjg89mB0/8da+CGZV4z9TcxNE/PO0RtLZjEWXIUTcz8oFUwE4t653ktaBMxMb2uskgFiI6nDR\ntWbdl2CDDi2InNMpHB/B40eB6wpuB2UM1dnRTXEhsl1P4bvx/lY7ct2FbjlPCcQoQZx4Dk39dEry\nh0de3Gwtdt4hzmu/M/idadOy2vveONzS4EoTbC1i1RfOx6aFctvzbeM4++PCsAavTX2n3XKPfb8X\ndGi04La9k/V9rBE0Sx9ojlRrvb1jZdNyTtz99fUpjs+mNz5vwcUfIWPthmJ5b3aJ20niyGVHLgwD\nocmlIRcag6SxitolPibTJrRO4YKlyPVWMI2koaaioaAL6SE1SyZoEiSGIUsOuSShRaOCPk2hkRgU\n+2Im36Ko4ugc1NZ7/yYGSut9TNqQ0M9t5uta95FDBLASYdBtB/G9fSqVX/FWdeI5NCO87sTK9bHr\nL0ZR9HFhwAXgWhSQ534ULxZQVf5/2tzh1fafYyf67b/+rXqLLs06H2Y0b72+7EWJmaTYywb7qsJd\nNd4o0N2H877l4SJwWb+srtu3jZPaNITteYdChVCxsIuZTBFKIlONzAwy1ahMI1ONMxbbOEztfPbz\nBuytaZfkRh0ZjH5t16D1QwTM9GNe70AfAND6yfeiz1n83KdtK8/tpIRjLDsOVc2RajiUNUeqpgmp\nf65Dmp8Z0Joozt50RrQoWlqWIeDJi5mKlpSGHIljSIXErtw+6lD8cdyx845knZ8wtQFlQATRquz8\njjpVcJ60mzq0zT7pT4ZtE2JXX8fOS3y6mnTg/c/SgZ8cnYPW+rpz0DrWzqVRVyNY+U1VlQcwpdbu\nJtfX/ru69pbbnbQ5qfsuIpvPsm8CbitbFtCgpHcXDeZFCUFn5hYd9jfe6uiuvY7rbtQTv1ef2XK8\nrc1v75V6U52xzYeuR1KBGngfvlCLLEFNGtJxSzptSScNyaTF1ppuZtHXlu7a0M3sHkDr+1/2fdz6\n6YPewSj2A9IHBLT44H1dwzZQu9/KrLCMZcupqniaFjxNCp6kS0qbhkSM3rO4dklIKhEdEdc5smzg\nu0rsyprZkCKwK1HOb4i3xJBQMKZgjGSMRdKwX1H5FlnnObA66DVsF1wbWp8epg4bT9i+0WFzxY4g\nsLmSbur19k2IEPo0mMBg7GuVe2/0WntgtdoDrovvK+gmV4CmPaCpYGFuglW2CJbSqvLn7KVtk7tv\n5YbbF7g+xxP7ZguwG4dbdl5JrwQEMHOlxr6qsa8rH1t5ZzeKW3R2e9sbx2KMFVas9VxxEdgD5DLx\nxqV0DOnER1qMUpKTiuykJj+tGJwo8lOBLhTNS03z0r8LU7telpVtbeunXIpRMjHWumK9sP120QcU\nOSN3tk+kgJsr3e2cmgwc2mlS8Sxd8GU243k2Y24G5ELjgNqmq0SN69UnxrrlWHLaAF4RzJZkIVTd\nl3gscKQcIjArMBOrlDJ3JIfnfLAeMLrOx+zpLuwivsmhbRPV47NEMOsbU7Yo77eRSiDNPZiNj2B0\nFALEWxBBLtHhGOBGeFp4r13nty9zzoNyNAA0jfdjaxqvC9mrI4pA1A/liWMldthdaNMRuA/s/n7O\nOkSpcZcNVnsDgH1TQ2u8+8S8xc3v6kbR79ttlsd9FAEtckKRC+rv1NXvg223UH4BSseQH0J+hJgM\nUKcF2dMlg6eK0SeC0ScOPWtQuddlmdqhZvskijhHYnRMzAMXN/2OYLbHev0j0Qfm0LaZuOHtyXp3\nXZoiAJoqeZbO+Vl2yS8GF1xo75pRhzTaL+XucCaLDW6y3gCgyFEMOeJqJWaOKDniipR2BWYtGUtG\nKwPDnSmKnNZ44JKdt2jG/SmjVW/FoW3rkz5HEkEgWo3hJmeyq/OUFzMHEw9o00eQjryl2FXQld4n\nTkRRVt/8nShyWgtdADOlwng3N8tO2gSzyD1v09nto35/9FM9xXuE4yhyBtcMXktEiKmktSHjhcW1\n97E67hI591EE3f5YjBssb3DCO2+R+AUoC4A2PEVMhqiTjPSThOGXgvGXjumXmvZNePzai5zNy339\n2efQYqjiAWuDWASzB3r+/4D0Aa2cuzqwPxC26X36g/RtJa8QjlQYBlIzkS2HquFUlThgqhtGsiMT\n3m327fv5CWRxWAbBaXYNEgkdQ0oMEoklp1lxagMqBistWoPAYYMurV+2P7ILIS5RvIgOkDECoZ/a\nZt/E2qJ/EgqEC1+HkCqCXiuGVUXzk5AhJ1rmObVsCNkIMueNFKrzYIsC6bezE1J6b3upiFlUndU4\n3Xk3JXt3Be7bz9IXGWFtueuF88hQVO+YYLgwcm3MuOF/FwHZu5K42kFtcTc42XehcL0Uvp+UCM0O\nJj8bjBHGrY79JZvhfn0ONYJ6zwCzWYQIhoEUVObBLR0iBw1qlJNMU9KjhPRU4YwkmSrUSCIz4du4\nkzbnSMw2E31H+wkafrvoAwCa7dXbBk9E/M0YtPgioyjVf8HrYp1gaTMu9ZAX3QFD6Tc0mZkBv2kP\neaUnXJucxsVHjStfzHEV6e2kf96ZNqdgTBbEzAE1S8ZoEhI006CIiPGhsbRkvTREmxSV7DXeczsO\njoK1J/ddFK59txbhgSyNYVUiHAsPYl23Udrgf1ZDXXhQExKSJRSVFyPbKji5Vsi0QY075MihRhI1\nzpA5mNJgSostLWZpMaX1iQr3kthyHJ+l2/gcx00A62GyLqMEhmE7wGghrqzfEbwyQe8XXU76xga9\npbwrqIHIFWLs2yXGCWKUeOAttQ9CX4a61CFONPqGRYfzvj9ZdGEa9vplIw+fDc7HXeFdfISEdIC5\nLGiHC6qkQJoSqprusqX8TUfzSqOvvcVzN8Xx2fcXhXWqr5jY8t377H3TBwC0vuiwTbkdv+uft816\nF+91cxAaJEubcmFGDILyubIJhc140R3wUo+5tgMa2990t5+mKIJGP5zJr9xeBPXZNyQWg2RAjSZZ\npRyKO7bH5JAlIyqGWOQeQItt6G/WYfBcWn/HplsiJLb1XZLBIINhBsPc11ivnK9KX+O8vs5q6Gqo\nQmiJNV4nUzW+NCFHt2sQmUYdGNJTR3qiSE8y1IGiu9ToC013qUEYbOtuAbRtYLZtDGxy7IEbGWRw\nNIDjHHE8gKPcn3rV4GYtXHmPfKqOmwr3qKMSvJ1Q9AHRHttooBBHmfdxO80RJzkil9iLxuvsLrwu\n0tWmB2j9XGtxYe/rRGO22Rgi2LACHKtB19CG0DVncDJDX5S0skLpCsoSO2vQ85bqhaZ5aeiuLWYv\noMVFP+5dQO/zXcfnj0O3Atpf/uVf8g//8A+cnZ3xq1/9CoDLy0v+/M//nN/85jc8f/6c//X/Je9N\neiRL0rrfn9kZfYg5KyOrqmto4IWGBQKxYIXUm75LhIQEYgEIIbEDsQLWrIoV4gMg1BISEstes7i9\nYM3+vleXaujqHCozInw8kw13YWbHzU+6e0RkRmY1/T4hkx33OH4GO3b+9szPv/4rp6ene46wHbLz\nOo8fDiIAACAASURBVJcW6wvC9q503Qkbc3H4nUZb4QAt0pnd6JLKpLzSY16pETe6oO45tACKYRIF\nC1zsRe0muPaAFlszQ4X2FEVG13+uKZlzjMQQguD3UzhvcJoN0RMhR31YAW8DNLO9LawTHUcZHE1c\nm07d/xbzjX6r81yQ1g7QhPcz61qnl2kVNN5Aody4yNySHgvyx1B8JCk+TsgeQfNVSzOWTpprLGp+\nF/eV2Fcs1hntuq9I9SCkA+jTEeJyAk8m8GTsdnm2QuQrJ/JWHQjNpiJ7yLg6ws2jNXHpt4dSbotS\nIk5y5JMRycdj5EdjxDhFf7XGjJyxxNQacdNi++ceL9aaTd2DOLuz8dcbFuVgZdaeQ/PPT7dYm6KT\nhk61sG7QNw3d8xa9VnSvNO0rTXejMfVdOLQYzML8DHP0fyig/cmf/Al//ud/zh/90R/1333xxRd8\n73vf46/+6q/4u7/7O7744gu++OKLPUeIFcK7FKdDri1M8DgUKsjwcZ1AJ5IanMgJgsq66kxPVUdn\nHee2Njkrk9FsBVirqI/DerbFHMehlT2YrRhTUjNl2XNmYTvUBQ1gtj5o+QwcWgC2xt/nkAO9i6Vt\n4IiZCsfFTCdweuq8963dBrPKZywIIqcxoBqoV44L0t6xV3mFvjXIXJIeZ+SPU8rPEkY/n5F/lCDH\nEqRwYDbTfbKM3bSLO4vHJAazIegFDq1AnIzh8gg+O3bNWlfP0lhE3WFvKjbzLgBayA0WFkfYLCR3\nAeHbSRSJS7X9ZIT8/Ijk548Q08wVCwaoXO4zp/cL3Gd4ziFsKXBmOc6yOGXzPsQLIRuR0xpcqa4V\nViUopWCl0DearlQ0I4VpnUpArS16ZTAHrbjhumA7yP2+8/P9062A9lu/9Vt8+eWXW9/94Ac/4Ic/\n/CEAf/zHf8x3v/vdA4A2vOnhyhBbsOIVK4gHYbUasc2aO1ZdW8naZI4zE6XLmSEs1go0AmMFGonu\nQzhMdM7hRI4B1wGas2ZmCMa9YQDoObMpSx7xsk8/FJfS209hYsam7zBh93Gyu44RWe/Ac2gB0MZw\negKPHm2MAAHMUu+AZLxHvGrpc7T1h/a/8dsiz0mOIXucUHySMPrFnNFnuXsijUHNNO3zxOUWO0hD\nUIsthDFnFqscgsFDepFzBJdT+PQU8YtnTtFvjHNMvqmgFI5DA7YB7QR6n8EAZg+odSmcyCmfjEg+\nn5L80gnyJHfjWGvsTQNPK8/4BACP53zCZp4X/prP2DzrePEDrHILj/A6OCGxAvTaYqRF+OamlsVq\nb7TROAPFXgoLbpyaKDZMwO3z85uhN3qaz58/5/LyEoDLy0ueP39+YO8fRtufAd/mdU5tH8cGr1u/\nxFazsAnAvtP47jrnvj2FD0/ftui46IByq4W8HCmKkpqJjzvQSY5JMnSSo33vwkSCS4Px/ZuKPYOx\nM9pxXko5kbHxQcZBfNSa3ifMWu6axcIaie0UplaYtULPNWqmUUtnFLCNcQkSDy3aUjqRNgkhO4kD\nKaM21220+2zje4vmgBYu9rQWTnKc+91WwktCwu1jY+faODAbNnrSQ9EHgXaEAEnh1XNiu37O+RQ7\nHkGSY5XErgwGhV1q7NpgG+t1Z/2oDnoG1xpULPECGOn7rL+3wS3cDWo8iAp/X8KrefpFzZ/LeqnF\nKm9BD5Z034Lo2zfjf/vQYPelb4fprZcnIYQLuN1L/5fvh0aBu4hTw9/tMii8XwpcWEgSmfi0RJqE\nihEW0Rc2LkRLkx3RFsc0xYimmNAUx2gSn/ssagd9te5I1jrQqhsXV5lk/sW2cDODRUjaeJvn/o5D\ntxY113QvFPXIcXRqpqm/bGh+3NG+VOilB7V9lKQuxCovfSscqLW1y/YR+i68pANuzuJiX28UPG8h\nr7F67e77vxt4ruHGQB38u2DDiYUU1Cmv5wXbd82xyiNqaeoYqYnYtDHYD3JsWWCaBF64NFYiBf3l\nCvNVhX3VYld6AGpDClxYbF20OORes3HpeVMacsgZyAKXxr5w1lJwTtXWN+MTQgZHXulbUuCVp86H\nUocgUcNhR+o3oc99C/TDnXu9EaBdXl7y7Nkznjx5wtOnT3n8+PGBvYNyPBb1Apt9203vEsG+WVY3\nznorMT3ABWADJ47mtByxZJXBejRiNZHYyYRueoG2qQsLWq7ciqe92PAQk6BTLn4y8e4gIch6ufBZ\naOs7hCK9Tqa16LmmfdG5OdxZupeK9llH87yje6nQS30LoPmiF6MJjKauT1JnZa1WjvOx2nFZr3Fn\n4GsRYmca8bxzL1tVuXF70cILhZ1Zx731GUICQOC3JU4fVLHJOnxo3GOjgi84kmQwFnAq4EzCmXCt\nBJs74whfa5ivQSvMszXmWe1yn631gbU8cJPDRKj4z6EW6JsufmLQSxC+BKQcg5y4HgtiBSYkeDRg\nWxApyBLSiWvJxC1IagVq7eayMg7cviF6I0D77d/+bb7//e/z13/913z/+9/nd37ndw7sHQBtGJd3\nVzAzg/bNgppF9Hoyg+zBLTjYxi0Vhlk2Ih2dYo8SutMJ1ckFkMON9xsyxnElD3JxnkOraseZdca7\nL1jn8V+vo1Ckex66Nai5Aal6A0Aylagb7dpMOw7t0LuWeg4tVJmanjifuUXm8qdZA11Dn39mizyH\nVjkOzdoWUTVwnTr90LyBuYK5B7QtDi1wYiHHWRu1Q+Ae63CjgiNJ6QFNwqWESwFPJLZtMbUL+bLz\nBlM3iHWDuamxNzV21jqfNHMXDi1cewCHYP0OOQXfdP4PjC0iBzmC5AiSE5DH7tjaz0+MWzjAqwtK\nSKeQnbgmM5AzL34GMHsYI8ub0K2A9gd/8Af88Ic/5OXLl3zyySf87d/+LX/zN3/D7/3e7/GP//iP\nvdvGfgqANgxFuc0lIfRDUfWb5dACiMXAFowDJ8woaHuRcyJq0vQURh3dcUJ1NkE+ugBbbjiztnXc\n2kOQxZc4qz2YtZBWfuFvnfJft17kvN8YGi9yGm8AkM8FMheY2mIa0/e3ipxF6UqRHZ3C6YUXO4Pz\nb+s4tddUGP7l8xwaRkPVYa9r8PGJLrhfQWOhkZ5DC7qnGMzCwhhns7gLhzbBGRXOXHaLsYSzBB5L\n+ETCpxKultjnc8xcwQuNeLGGqxU0HbZpsXXnEhLcCmiwAbM4EDy2MN6XdhljPIcmRw7IkjNIzt35\nYm5L+PkpIkDLTyG/cGJnSJ1uWs+piW/sFb0V0P7lX/5l5/f/9m//9ganCObpuyD4EMx2RRoEhf0u\nReu7oSByDv3MFCmFaDEsyOmYihVncoHK1zQjxXoiyU9K0vNjpB1h28Y5ui5zbHogAeI9rw7lLV/9\nS7zPLeWeR+4sutPovRka7kBJ4vKljScuVffZuQM4oxxnVq1cSm8xfPnCReB0aHXwHYuNNXHRGthk\nrhgCwX3EtZhDCzGNp07UKhM4knCRwIcJfOpz7V132HoFLxX8ZwXPltF5YyllFwXgClbGXVb4t1jQ\n+/JMkhA2JZIckZSQjhHpESI9BQyWBmvXWJODSZ3d2ZccFOkIkU0RxQnIEmsbrKlAFVgZEnB9M/Qe\nIgXiFScGprtS/BC9ErPvR2xP1Lh/v0uETnKa7JhVCrOsJE1PUXnN4vhjumxMYjomq6/Rr/43I52j\nbuZ0ixmqnqO6ilujhe5M8SKw63vYvRCw4/N9aN8kjo4ZdPXBC2eCY37WOJ19CBMU8W9jt55wkNjl\nJtxniPIY1nuIrZm33d8OHROGjU5r7r7TDdQ5LHO4LuB57jLcPrfwysLCOtFY7zr/Xcc4flbh81s8\nnyyBPIMi63uR54woKdGMmDESLSOusEpTNXPqdkbFnMpU1OBLPN4wwvi4mGsSMipm1MzdvqypMN+Y\nh9p7BrT7gNrQCBDHuGXRPobtUJagNP0GAK04ZjUqSUZn2LKlHinafEqbT0l0y2T1gqxb03SSatZS\nL1qqqqVWLQr7gFc8HLf4u0BDH7CHArP4BQyf/fYuQBvhwCwkm+jDa3fdA2xnoIjDpeJYx12Adtsr\nFrsDhc8B0BqcVdQbtHTt6oQuxg7ACse58DXu89w4TlLdd87H9z5k2d/yOaUJTAo4GsF0BEcjxKRg\npDRnSnGmbzhTrzhTGtt2XCct16Ll2jhVRS0sJTWnGM5Yc8YVp+TkSK5puabzfUvzfwagbXvh3+3B\nDPVnw6wEIRFgsADBtiL1/ZEDtJLVJMEeSbojyXoiSUyHNAqpOyarFxzNf0LbWpYryWIloZKo7iGz\nF8QTf8jdBNoHZm8i9w65mnCMGNj8dyHHQI4DsimbiKTS/29LI7FPdxq+j4PZA3jsArL7zLmh32PM\noXlw07ULDVtYF6Egc3e6a7sBtMo4HenWnL/LdcRg9oCglkmY5HA2gfMpXBwhTseM6xvOmhkf1jM+\namY8qWfYquUpktJIUJK6SbhBUtBwQsUTNB9ieIJhhOUpCU+RSCQtkjkS9Q2Jne8R0Ia6sLvQcJUO\nubLiODfYZFQIYPb+B1MnOU05xk7Hzpp5NqY4Lhivvmayesm4+5rx6mvGq5fouiNtxth2gmrG1GoM\ndvyA1z0EsyHnEfrbojjuS8NzDI63i0PznhAU7BA5YXMfQ0AI4BUQcKgj1GzPnzcBM8lmTgVgS5yv\nVQ0sPJiZkWPiFsDMi5y1jji0+15HoAeUMtIExgWcjuHyBD48QzyaMFo1nK2u+Gg549urH/P56idY\nWVPqMVZNqJsx14l7SM7YteKSNZ+x5tusmaAYMUYypmHCzG9vZ7J5f/SeAW3Ice2j4Wocv6BheQ9v\nQ5w1I1iF3j+ZJKMpjukmF1Qn58hHF6SnEy5e/W+yruJo8RWT5QvOr/5fzKoGc44yFzTmnKUW/l4e\ngnat6GJPCxzI8Hf3pV2AuUfkjDM7h0SoYzYc2pbIues+AliF6x9azneJ2ruOue8e9nFowWMfr0ML\nnNnIpSqa4yywa7tJZaRjQLvLNdxnn3tSEDnPJnB5DJ+cIz48YjR7xflM8eHshp+7+THfSf8fjK1A\nnVO1F8yyc0ZSIHwc8wkznvCKz7niO7zihBbJOS0XzDjnOSAp+dkFtBOXBQNjonAf3w6ar2OOLrYQ\nDdn2eGKH7SCKwjYw7qEQxyjldm+hT8YXehu/OJveCIkhdX49YgRiQiKOGJuSRiV0jcXULSxXyPWa\nhJyMgoKcEQUTSkL19ri9ucVo1/0OxcG70C5L26F9D+xvjQtv6loXFdCsXZGYpnahWTo4nQYwiX8f\nnnl8Dx7YhNgkU5TJJvGjMd5r3UTbw+vf5c4Qfzf0g9RgBHSVi7owPr9crVyEQ+NbF0TOd6hNSgUi\n9QklU+HiaKVwrjPKu9Aoi1VmwKyLqDmLuLANggpplmBrhJ0grEYgEL0Bbo2wAmEMUjdItUYkNVKP\nkKZGmA5x54LQ74bePaB920cRtN0mz1bd+nxbQde1y+8oAEac6icAV/g+mO4XOM4sWDdDZo1Dq3V8\nupAUMffZW3NXfMJPDBfAbaNJGpTOUa+0c1pdetcDKbBNRXc1p5q1LNaStJlgzQUJZe+YG+qAJmha\n8tfa/pxqb0Lh/oOBZZ8YtMdtYuexdnE24RyDfTsFyxqul87ahnDB5s9n8GoFi9b5kZmM7Wc35OoH\n3J9M3JhnGeS5386d313XOh+1zjcVGxXi+xtaE/fpvfx+xrpnLhSIDqyvCdH5eFlzX2v+/UkUCXKa\nIqcp4sj3qcAsFWapsEuFWSjs0jqwXTdwvYLSz8+qolrOuV60PF1KysUEu7zALjr+c/GYp9UHXDUf\nUKkPsDyiMYIbbXimLGNpEQgmcs1/dmd81R3xSo9YmQzzM+228dkHrl83MF/5JtzEes1BPh6IoCcJ\nZKI+gFlIQBcq0QQFcZydNv7dngkWF/4tx1CMXd8Yt9rWvtcGdEjMGJID4q7HeEBbrTbcwXpFt1hQ\nLzqW6wTaMcqck1H03FhOS4JmwqpPELn2dQpc7c+HeES77nuobN8HakMDQjje8LuhCBjEtWjf8FLd\nLN0YddoB29XatQBovVPsbYYkf2wpnCtCOYbR2FVyH41ddES1dhESlfAiYFCB7NIvxseN73Fwn4Fj\n18YBGp3Tq2kPagHQ3i2eIQqJPM1IHhUkj3LkI5dQUr9sMS8b9MsGa0CsNVZpWHlAk8JxcIsV1XrB\nddXxdJ1ANaZen2Mry9P1Y56tP+CmfUSlL4ALaiuYacNzZZFYGgsjseYn6oin3ZQrPWJtM8yh4tbv\nmN4fhzZbw8vUDab2ExvYrayG1zmrWNkbwCz4pG1nsd02EsThVntISseRlWOYHMP42FU0rzSsvNXM\nKJf4kI5Nsj1Lz0Eq7UQQIQnFd22Roao5VdVClaDaCbW5oKAkp+0Tdk9YkdOy4IiMDoFFkdL0Ro+H\npCGXc0i/M+S+9u27j0Mb/K71HJrAgdmqceFQy27TagsmDlsiOl447+BapHAL0ngM02PXjo5htdg4\n6mq/4By8v3D8XcAZfxQe0DxAms6BmemcSB2yqDx4gPbg6ssEeZKRPClJvzUi/dYIMU5RP16jCgnG\nYtfalVcI451IN1fXLfYqo2rmXLctNAlVO+G6vYAm4ar5gOv2EdftB1T6A6y9oLGSG2ORPiBjZiS5\nWHGtS671iCtdsv6Z59A+vwQsXC1cfnWtnbiZx+E+u1bLGMTCdyGdSpzOZZe7Q8puYNxDInEvRDl2\nYHZ8AcfnkHm3gFBqTg7TZoe4u+iF6Tm1NaSSrquga1FKUncTUiMZUXLMnGPmvcgZtgOY1ZSsmNw+\nvveiGMT2WCLdgLANUIfAbLj/8FlGk7tTsKodd74KnFr6ejJUm7ENhkO93+D6hXSi5sgD2tk5nJ67\nsKoAZm3tXua99zccn0Pjgtf/Gjc3RAuycWKnUWADh/auAc1zaE9K0m9PyH5+ijxKEYXT/9q1Rly1\nvv6oZyK0B7abNTaXrFWF1S2VltyoCU+1BJVT6UdU6gMq/YhaPwIeUZvEFey2MNOC51KSsKSyGZVJ\n+17/THNon3uRc5T7laGG2cqtzFs0fBmGotCQIwgUfAHixFTJ4Bj7/LHCISKRc3LiwOzsEqQC43Uv\nVesBbc2GM4uS7QUxo/UAJ0KuNovCImwCTBB2zISij/8MgPaYFyToLTBL3jirwi66hevoaRcghWai\n/9k9+wfd3PB54uuNaliLjXIa6QDMepecfjv8NrZq7rl+KRwnNho7zuzkHC4unW5NK7/ALN3nvfcX\nH3M4bwbAHIxDRuMSScaVxDsHaPeOiLk/hQy5yWVB+tmY7DtHyJMMayxmrdGvWuQ4RUiBDSFxax/8\n7+dnhaXGcmMThJ+fMMLyCGsfYbno+8ZKWu3c7ATSN5cyy0nhwo/czzKgPbt2/cu5UwYvK2cUeC3/\n10DR+xqY7eMQ4pcntnYOnSoPkDWOa+gap3dZrSCdw1o5IGs7p2C2HZtCJiGvenQfIcNrdL5tOHbX\nFsTJihFLppTUZHR9NSmJYUTFCTNSVF+URflqBprknpMmJOXzwB+2rQbrRWqr/Hbs97WLM4s+C5CF\nQBaSpJDIIkUWzlxvGuXTY1nXQvkE7IBziZ/fEDzv6Igdnl9Tw3oFxdwtUMu5+9xUTrdlYkAO8yW0\ncPz4/rdOEv02GIYasCFvmcCFPIS58R5SVLfGKf6vO/SzGnWcIY8z9E9qzMsGO+8wjfalBf09222A\ntv5v+50L+s9QmczFpVlWWCr/HoRF5k3cMwYLnZQuNCv1LUtdr7SPTdZuMVTKG+X207sHtC99Ntub\nFXw9c0rJVTPIybXv5YGDE3lr3/AChM+Bi7rDammsN71XkCzcy25wgLbqXAqernM6kj4MJp6491uJ\nN0WKJ6SoXsxsyWkoekALRY4bXwG0puyz5d4L0ITEJe8rQJQup5Uoccn7arC1U2pjHTjs1a9tLzRC\nCJKRIDuRpKcJ2UlKeuKmlLqBbgbdzKJuTH/41ynmht70+XnOuFo7zj9UsFouYDFzBZBbrw7YDArb\noBaLtru4wXh+xi97EGM196va9fZkG425adHPakQuwYAYJ6j/WqO+qtBXPqGkgdcBPPazixeP0MLi\nHdQ3BjfvA2gHZ+P70g7VRJL6pAWFr1Tmt+vGSXRV7dRUa/tTAGj/6QFtVTtQm63cdhdP3kMcAdwO\nGPELEbZDfwcuzRjHgdX+ARrhKx9p519Ue3O8CaJFXFLszQEttmY2FMQlikdUjFmjSXwZlmmfUPL+\nxgKJy3s1ATnd9GYNYgmhxJ8Ogd2BhvqrAecsIBkLsnNJcZlQPEkoLlOwUD+3yGcWIQ22EXRzDgxT\n0JcOzzH0PdxDoXJ75fWyQWdWVe67auUB7TYOLeYE43sezs8gZgYrdzBUBcv3ewK02mBuOnRRg7GY\ntUIWCfpFjX7RYF61rgZo7+8ZdM9xmbzYcAab9yZ2UtfRvYXkmAPp5F400GEmGZSlK+xzMobjCRyP\nYbmG+RJmvsBP6yuRHaB3D2g/euH62pXVYu190XZmTX0TnUO8wsPrPlZ3FFk6P0GNV6BWjWN1W+V1\nP8opfHuXkfDy3z8QPgBaDGYrJpTUjPrK7G5bYHvLZwAzcd9x8mlfXFbSY0hOXTI/swDtrbW2c6Jo\nf+h9IlfUBw7tTFJ8mDD+PGX0WQYW5MgiMNhG083ETiEuHpHt8+jo+zs4pxrjfM16A0DjRM2uddtN\n4/6vd3FoQWzaFWUwpCGHBttW927Q3gOHNuucOm+tkFctIpOYeeebwqy9yNkDd8K2rnkYyRMWkMCh\nhftbs9EVhva2HJq/Junz5B1N4OwYLo7h0Qlcz53oaawDstXt4u3749C0j21Tmr5EWk/xVD9kfdtH\n8eoqeN1V45ZjGQ9opnLAJRuQa/qCHXG/M/D5fhSAKRgAEjQJmlNuejFzzJpTbrbALIip9wY0vMgp\nJpAcQ3oO6SNQOT2YmcoBGrAfzLY/CwHSA1r5UcL451Kmv5Q5qVUYTKNQc0nyQhywycQgESvhw/9u\nWYxgw6EZr0dLEmcAMMYba/Smd1fO6xxaON8uA9JwfoYXXrNbfItFuHdHtjYY08FaY66kEzsl2NY4\n/VprsK0diJyBOwtx0bHOOujF4vuLvQri+3qb+xuMfeDQjqau7OLlGTw5dz6KocDPqnLP9RZ694D2\n3BsFQnhKaJnsaym6JSZq9zZ330fftuvn1vsPBb2ND0LeCrmKgeztKIQ1DZ1mUxQjKjQJoWRe4NRC\nfamQ3juA3EZIFQf0an4CiRCaVXpurQZT4PLKvxYVzq3jKdziKktIJoL0RJCdC6wVpKeS5DhFTgyi\nNJBZkN6VYdjuAlqHyBq/SN5l5+E97rBiHj4Zh7m4feeMDVZDw9fhMRA4R9ZhM51wbeXq0+qDcyC+\njqHb0zDHXHgP7ktisL3PohyPh082maTOUl3mMB65MozrxjlJF6VrIYKH/Zf3HoLTPWWJq+hd+jbK\nIE+dfqrqor51YUYPRvexBg4naqx/e8hr2k3B+rlk2vukldS99TNFcYRLGdtQ9JlzO7JbwqQMzkdq\nDWYO2u9nZqBnYFbOQHDPODxrQVeW7trQPFUkE+myL4uE6itBc5PTqRxdWLjwK63yBpbQ67epYPSm\nFOtXY27+XbhbBLeiLGqpP09w1I6TUr5OKYYRHSUdo6jVpFRk1GRUZFQ+7mQ/hfvtos9x7rg3vfdd\ngDVM8xV0dju4PO056+XK1YjIhJuLszUsGle2kBGUZy6XG8DN7it5v4A2KVyw+snY9dMCbtYwq1wT\nXuRTD8WqD1eMQ/vtWnmHRoV3C2pBBA0GAE1CSd27agTftZKa2ucMXTOmYrST4+vJBkBbbevMzAr0\n3PUmFN+4B1nQlaG70tRjXw2qNpBk1K8yD2gppszgUeaU9HVoXqT/RmKZYxFr+Pmhn7Vgk105VI8K\nmZYrNor2AHCvU4JhTMsplW9rTqmYU3Ljc8jeMEaRHAC0MLfjc4TPAdDeBsxiTi9OfJfj0qvkOLiJ\nPah9b5SrRrZY+gCcoAf1kTqNADFyjFB4Zj8VgDYt4GIKHxzB4yOXm+nFAr5ebGL7lvXtx7o3Dfxe\n9tJQn3O7OPCQpEmoKbesmaFCe4oio+s/15TMOUZiCHUO9pPxHFjixGrbgaxwLhuV49zegEPDWPTa\n0l1rV8DKV4Mig7bJaOucrhujizH2YuxL983pw8Pab6rcWbxwBYV5vKA9JJcWA9qUTfWoFucCEft8\n7a7+lWKY0HLOiscsuGTBJXNeMeU5RyRYFAmrvir8Lhou1rEVOdYJvymoxeJrwibNV9wKNi5P0IOT\n7hyHtmADZqsV6AxU6poYQZk6HDlA759DO5/AhyfwrXMHaj7y38X5NZA+VObWQENZ/hDtAq73B2iB\nQwtgFiyfU++4EW+HuqABzNYH86kFDg1cZogKTO6AzfpMEfb+VjlrwVSG7tqBWTfTNM8lFBKdCXSW\no9MJujyF6SnkM+8jFvmNvXeKF61gRIrB7aGftcC93CV9kRVO2YTQxRbF3eQAreGcNR8y51Ou+JRr\nntKQYHowuzo4B4YW/2AAiL9/GyV/ALUgYsZpiSds0hPHcdbeOVF7Ds0qD2YZ3GS+9ufUldhLx1BO\nncL2AL0/QEsjQHtyAp9dwEen7n+dhkXtUsgkDwVo+5S/uyg2KuwzMLwfQItdOoJhAOg5sylLHvGy\nTz8Ul9LbS0HkFB3bCuDoBbZvsDp7HZppNd1MIxLhbAujDHsmsKc5nE6x0zM4/cApfmO3ijtYrd4N\n3WZEehc6tPBynwKP2IiZAcz2j0UQOc9Y84Q5n3HF/+JrChQdCUsKXjEhOwhIMWANQ8nsnu27UmxB\nDfqyOBHrMa4EYADcAGb+nk3nfD5bbzAMBsTxBYwzlzAi9Tq04vjglbw/QLOAktAkUGUOhZc5rHOo\nU+gS0ALuHdi6z3ID2yuP84vKEk0uDZnU5FKTScf2tkbSGel67frdVppwM7v6tyOLQO+Y2CE6MV9c\nwQAAIABJREFUIG6hNmiKoqRmwqrXtRmkdwRJfJiUv0YLW0qrNHEccZpuQk+EiNxrtM8Fp/danq22\nkaTq9+k0pAqyDvIWysgXbCu9TjjmLqVyON67Evvf/QLVkwihZ5l3cC79IpOBTZ0qwMq9l2QRXj/m\njAArCuaULCmoyGnIUP659++BiN+HkBnGi5f2Lhb7XVbK4cJvkcKSpYo80WRJS54KskRgrKJVwr1L\nKqXTBZ0OOrSgt/NirrU7QiFxC3BifKi2r1olD4nV7xPQQtadK6C0bpyXwE8sPAOucaL1vZXEQUcR\nlJChD6vfpgmhGScdR3nDcdZwnDccZU6PM+9y5q1riy6nawv/+GJFZ3iw20D5Ll+OwIVVjFhwRILu\nga/ygcGhsHFBQ0PRh1CFtgskAec2My4c5xz6RHoH6NaFqK0al1Ja3+Meg6Preu1iYoXX3S3nMPfx\nla3P/LC1uscLU6ykj6NA/oeRwHEbiW9Sut4K0NIt4kYcvD2FZO1FyhEnXmeW8owjfsIpV14h0QVx\nT3hFvMg322inJ42ro9l9OsyBW8VrfnYbXaOUhknecTxSHJeKo5HieKRo1ZR5VTGvGhZ1y7xSdLrG\nKcoWbByRDzxTA3TW5SqS/j1rD8+BbwDQLAjrLjRUyXll4cZuks7eiwSb6taxAjK2IjmZXWAYpS1n\nRcXjcsXj0YoPRiusFbyox7yoxiRiQmckc5G7VbM3QcdWnNihNjhivpuXLejIgs4sAFwANnDiaE7L\nEQtWTFgzZsWk/+1eQMtSmJYuz/zZBE4nDuSuV876nEgXO1fdU3kfHF3rtXdwtc5Fo1q5rBfV2gFe\n7+gaO3wGHUzwhYpX8/+hJHEglglIheOKjQQlfOOgCksjWZFzzcT79iesKblizEumvGLKitJbuRMc\nmI23Gx3YlWvgubRDzzV2vRg61m6sw4kwTIqG80nN4+OKx8c1j48q1u2EF/OGF4sOKRSNMiybAAJr\nNuFTB55rMMK27lwuYuDQQL9vQFtaN06t3x5bVyFnYTcxr2/EoQVAC8rHYEXaVkAKYRmlHWfFmg8n\ncz6bzvhkOsdamC5PSIVGGcmiyzxEDcXZcLxhuMi7I4vo9WQG2YNbscWDuZaimHFC6hIW9fvupdwD\n2vnUVQK6PHFGmvHMsfgBzOQ91QBWO0Bbrx1n1rbOZaNtXOaLpo5iK2MOLfbVij32w9v+jfh4vB0J\nHJilHtAyAbl03Jn0HL8VB29NIVlRkAAdKSsKrph60XPEgjLi0EJUiA9zE8eutw0utbl/H+xui+rm\nooc6sZRt3ZszqCTSMilaLqYrPj6b8+nFgk/P5yzqCeO8RQpFqzSzKqBT4BBD+OAhQLP+VbPu1ApI\nfto4tM46MLuykNrt0LDWvoXIWeAA7YSNFSmAmQvfEBhGSct5UfHReMG3j6/4xZMrjBUkUtMZwaLL\n+boa+8cWP9jwUIfK1HfLOQQQi4EtGAdOmFHQ9iLnhFVvHIi5ur0UAO1iCh+ewicXTvQM8XN165wb\n7wtoQeTUPqSsWrvwFq186za6NGCjOA/KZC8iAZsx/iYccB+Iet9a4YoSF8KJmiICM7F/jIPIqUhY\nUnLFlBxNR0JDRktKS+pcd4S3MIoJiBOQZyDPnWUb4bhi24BYHViLh1bL4Az8+gIjpekB7VtnN/zC\n4yt+8ckrrlcThFA0SjOvNc/nQzeR0G4TOf1uW6Lnfnp/gKZwEQCr2Ndn6AMD4QaFcPyREIDftgAh\niZwVXqccOLRQG22KA7WKTdDwGgdoljJVHGc1H4yWfGsy5+eOHaCtVMpVPeJZNaVI4pdnuFp5g4OI\nFNXC6xVixfkDZSsNnNbQz0yRUtBgfKbbKUvOuO6jDdaMyWlJUb17R3xMwBkCxrlzdP7gGD46cwDX\ndM4f8MoXMxHC/8K63IDRtksBJ/pbtni3DNNuAv53KZVF6KMFw8bOmLE3+aawiZsT9rVt2ycXpJ8j\n3wTFwUcCp16xwkJisamF3GILNlK0sjtqkW6TJmFNwnqv8STe9jo0UW5ATVwAKxAtiLX7v73NwjyU\nTML8C8DkzpkIyyhrOR2veXy84JPzK37h8de8XKxY1oJXS8HTmSRPbrnJXWSgzwz8mri7m94foG1F\n7c/9qTucNSBUbXK1D7PUUBYdo0IxylW/3bQpVZNR+b5uMtou9mlZswm4bdjO3eR0TpVKuW5Lnq6P\nmKYtiTBYK/hyccqzaspNU1LpNHoh4geIWwEz4WLK0sKLEni9kU9C17d4BXpYi2icpSOImYqUBUd0\nZH3hFU3CiArlV/CQJLIj2/j+XS0dZ5ZIB3A/uYaXC5j7ZJzGkknNKO0YJYoyVYySjiLRVCqj0im1\nSqm021Zm6Hrj71kmPvgz3WyLxOmTjATjOUPTOp+k3iLmxtGpDPz5045RqhilCmuhUim1yqhU2m+/\nb1DLUeQoCrp+O7EpjfHZqDpBKwUtAqNraGegVqAbf78x7XI7CrTrzixb4qRdg507K6rBcWh25vVo\nIe3V8LhhOw7Wj0Ol4hApt7+2Cau24NVywlfXx4zzjkRarlcjfvTqhBfzCbN1SaPeBGoUbkFcATN/\nXYdE5fcOaCE5YvDMrnHgNidOGpcmhqNxy9lRzdlRxdmx62erkuv5iOvFiOv5CK0Tnx4pyOZrNmJm\nhwO0yv9PY4FKZVw3I56upiTC0JkEg+DHy2OerqZcNyW1ilcjEx3TX3oIoi0zl1q8zByA1bVLSlfV\nbtKokNXwYcHMjeYG0IKBoKbsy98FQMvo+uy4IVyq9gpkG4qWXC03OrMygxcz+HruAa0Da8kTzXHW\ncFbUruUV06zlui25aUZcNyXX7YjOSNTWCwE9dyYTvwiUmybSyE3ELwImvHBxGh5XemOUdpyV/hrK\nirOyxgLX9YjruuS6HkFdUuuU+7sAvR1lKKbUTKk4omZKTYpgaWChfR0YnPSE7qCbQ7cEXbMdpbEL\nZIZkB9t+jK0G4QEt5LkTPgrBzMEugV3ni9sw+0iwWsQSlTu/NpJVU/BqOWacd0hhaVXCos7576sT\nns2mzKriDQFtiBmGTZTBbvqGAC1YsILFI7QAaJrpuOWDsxVPLpZ89GjBh4+WvLie8PTlMVlq0Tpl\nVZesqvjYMbcW0D1wfhprBWuVctWUPZgtvHvG1/WEl9WY62YUcWhDHZl1MnBWOCA7mrisANOJ0xkt\nV5CsnHVUWWiCXLHjOG89mhtAi6MFEjShTPGEFUcsaMlZMmXBEcAm5jMAWuqtmevWWTlv1k53Nl87\nQDMe0PKGy9GKJ+MlH40WnJcVT9dTnq6PNuPZ5QOpILpXkUBSQjaF3DeZQ1u5RkVfdMSGoOltDm2c\nKs7Kig8nSz6aLngyWWIRPF1OKVN3f7VKuWnev5NHjmZCzTnLvuXWcmWgUO6V7CysDGhjQK09h1a7\n+3aDtKcPdNtdae+O4d8z04HwFkW79hxazTaHFgNZ/Dl2nQnSRqweEhiTsGpyXq3GPZjNqoKqTfl6\nMeHlcszNuqTp3sSJOrzDcUTFT4sfWhzq0HtHZ2xbBdxqnKaGo1HLo9M1n1zO+fZH13z74xt+/PyE\nLAWlE5ZVyctZxGb3CeeCdTNwaZtEjBaotOPQlH/5vq7HWARL73+27HIqFVb3wF0FUPKpTjLp0gRP\nJy5/0+mJ48ySzIFZF1wdYgdfSbyyvf1oOkCLrZkFDWPWTFj1OdVC1ttg+QzhVcAmdtYYB1yzyomd\nVevArWo2HJrUHGctH5QrPp3M+PbRNR+Ol0zSlkRY5+rSFaR1rAuNlchsOLR8AuUpFKeQ5CDnXkHe\nOatoF+o1xJkZ7IZDK2o+mi749skNn5/cYIEycfdXq5Tr+nB4zLuiDMWEmjNWXHLDE24oURQGhPJg\npt22E7EbJ17rIGIP6RCHOZxH8efG63A9INglfTwvrQe8XXriXWmE9i3E7vlqm7BuCq48mM3rgufz\nMZ12XNqyzlk0+VtyaDFmHD7ON6BDi1E39unatCwxjkM7XfOtyzn/69MrfvnbXzMuFdokLKuCV7Mj\n8jQO5Qg3D5vVZTtbhrWCSmV0RrJoczI5JpXuGJ2RKCNRNkEZuYND88AppTO7jws49gnpHn3gxEw8\nZ1a3kFZsAA22J8bbU4j3jK2ZKYoLXpHRccSCCSvOufIe5NvpiQDHoWmzsWYmib9N45ryfc+h1VyO\nVnw6nfFLJ6/47GhGIky/OLyoJ/140o9fRAHQsqkDs/EjSAo3tlY5jkVaJzL1TpcbkV0IyyhTnI8q\nPpwu+bnTa75z8bIvbFuplFlTMEqn91U/PwjlXuQ8Y8kTbviEl0xsgzDeHmacxtgZjVNctEDwlo/H\nbajwh9fBZPhdoMCheQCwAaii9yGcc+tcoQVO6nUn2tf3FWiTsGpzGs+ZpYkmkwpjBUq76BulXbs/\nBQknMAdxFNBueo+AFlaMu5EQTsSQUR/CvMQWixx7MMdt9xV0PsTpftcd99sg2Ztixa5JuEuxe0i5\nK73VT0bb/pxbE98SkkTGlKB9URUHdOH/EkOCJqOjoGFE5QwGOsFoiWllf7xDCQKDVVGGxvYzEVvP\nZNfYDYeh/zGbFydYNffNlWDh3MyLzbVt+vtTfO1DJ+rXF8fDR9pOuymtRtgWQYOgwomDh7Kj7KNd\noLaL1Ou7SOGjFKTP6Ju5zyFKQRNFLMTPLbYwDp+vS+bZqpS2d/HY//4h3JomUuHsQSnIVCClG6PE\nGqR1MzGxugdCpSTab2tz+OG+R0C7OyktWaxzvr6ZMH3ekqYGrSU/fnHKfz0748X1EYvViE7lvB7U\nGylI3wUZ6wtyVLBYuIBrixM5ZzNXrbtZu6Irvd4hvpZdD8T/v88o65vMAelW3NBMEBlev79Y/Fxw\n1IuZCbp3zA11QBN0b0CI276caq1OmHcFz6sJ47QjEYZ5V/D/Lc7579UpL+sjlt0YZQrctIq5Kw8C\nRoGqoV26Fwrh+uYG2rnj0EzL3rhRz2Ff1yOeLo8oU9W7a/zn7JSnyylXdUml0jd4+iFDRNzi/F2B\n69mfN64lZeX9xApvGRzR8pQzXnLEnBE1d6ksPjCm7PzfPSlNvCGr8H3uYiNrNWjeOHNn8Lw7CeGL\n6kxdS32fZ5pSawrTUJiGUrt+XWUs1jnL0Koc3fzUiJx3p05LluuCl9djskSjjWRdZby4PuInX5/w\n9fWU+XpEqzK2AS3W27wjCgVVqpDj3Don0bZzRoHl0iUw1EEHFANazLnFq6D/LBKQBcgJztN77N0a\n1psmrFeY76aOrE8SCU7MzOj6oHWX09RZQEOCyLj61F5AMwnztuDrakIqLMpIXjVjnq5P+Mn6mJfN\nlKUaoWyIpx2u7N4Cpxtn2Qul5pIU2oUDOVU5JfaeF8gCVZdxXZc8TacgnAEgGAWerabc1COnA703\n+ZAhXKFd1xdswnSC4SoYKXaNfcKKkmumSCwdKQUdrzjiiikLRjTeSfputEMP+aaUJk7vezSBo7Gr\nqjQqXJabReN6W0E7VBk8IGMgIB0JijNB8UhSPpKUjwTj0nCkFFNVMVUrpmrJkV5xdVPy8mbMy5sx\nQljaLqH+nwhoSgUObYzSkmWV8/JmxHw54Wo+5XrhObQucGgxJ/CuAc068Fqv3XanHLgp7fRode0y\nS6hdK3lsPdo6qO9TXL7/qQtXSY5BZKDnjnvDg5kQO+dZUPqHcKdgAChoyGn7hN0TVuS0LDjqi7AE\n/do+ao3j0JLK0nqd2XTdct1MuW4nXDdTz6EFzmaYDZYNhwYOzFTjAFtVvtVuITjIoaXONQP8tjMA\nXFUj57rRlFRv5IMWA9oxLnxuwsatyI3oIT+ojpSlr8qlPLilaJaULBj5jHa3cWj7JIy35JiSBEYl\nnEzg3FdWOp7AqyXkS3fOVjtj0EMDWSAByUiQn0nGH0omn0gm35KcTBRnreKsqznrFpy3N5x11zx9\nMWVcdghhadqU+er28o0/nYCmE5brHK0ly3XOy9mYUdFRtyVVU1LVI6pmRKuGgCZ55/F+IfDaes6s\nqmCZ0gdgK1/yTsdVyBn0QTcTKBI5pQe09BSScy9+Jk6rHKozHXghQkRBALNQeOWYOcc+qiDeDmBW\nU7Jisv+4nkPreuvwhEJq1rqkViVrPaJSJcoWbPRP4d78vQZAM8qBWeIztprOfRf6AxzaWmXY2oHZ\nTV3yNHX6oqp3qs2oeyv1fSiInCF/1zkO1IIEEIxZ+48bRM4Qb1n4KI0QntSQ0ZDegUM7xJm9hcg5\nLhygPTqBD89dybgsdwtkq11mlSS27j8sqAnh0poVZ4LxR5Ljn0s4+oWEi+OWx43msql53Cx43Fxx\n2XzN8bhBSkvTpcyXJXm6f372t/mgV/xApJRkqXNWVe6NA04ZbW0WtRxLxsYoMDQ5vyOyHri6Dmp/\nrqCFdrE/OE4q/CB2VNxnvQoiZ+DQJiBPXak5UdJzZrZyHNueewwcmiIlBP8IbB/jOWXZA9pjXpCg\nt8AsObAYtDpx1uGu8GFpFoGrGmpt5npyrB06JUfgFkoBil1jEI/bYQ6tVik3fWic7f9n437vneyj\nwKGFeOBzXEwwuEWyZpMyezd1pHQkhPCn8Az60DDCtd1ljj4whxREzmMPaE8u4PEZILz7TgM3S2+C\nfXj9GbhTpWMnco4/lEy/LTn95YRHZ4IPK8W36oqP6wUfV1d8XL8gSxR1mzJblDx/NSFLb2dWfioB\nLUxMN5bxw49XfqefEdKSFMa10pIUkBQSqw26cT6LugHdWHSL09kkqWPBQw8uULoPnvbb0u/T96l7\nGXVUq1P7fm/s5lBfNrzTqLfe5G5rMEvQBYga9MLr0KJK7WniYjHzdNOnifP+7xS2075IskbptI8W\nWDL1gk/XV5OSGEZUnDDrQ6iCPi1sW2/RctcZA9Lrz2SzvcsqaA+MVTjmfktwAKyHjwIIfosh1Cb4\nsi3852js91Bkf93x3ze53ruCyebYUlgKoSikppSKQioKodC5piGlblOaZUpzndEi4GoB85VTl7Sd\nm9d79b67nk2YA8lgH8t2nLYGa9CNpVtamleG6qkgO9KU15ZRk5A1BTRjdH1M21T8+PkxL64m3CxK\n1nV2J9ePn0pA20+xad8NrEgE2USTnxiKU0t+IihOBbqRNDeWdgbNzNLeCKenTzMoCsh9rb/cy+Uh\npU1TQ1s7oEpSyErX8sL1UjrHz7aGrvbbh7IGxN/HIugutl6B8QAWRGmRgZ55UKu8QcBuUppPS9+8\n9WpZO9FhWXun2QajN0WKU1QvZoZEkAHQQpHjxlcArSn7bLm7X9JYdxnrzGA7ROYuL6YYbA9fqHdk\nte7JsIlkCWJmjYshXBBHstyfbnPniWmHsejWY2+Om6CZJIqTtOY0rTlJak7TiiZvuDG+wNqN5QZo\nlx28nMOruQO1utkBaOEc8cLF4P9xAHucaih2bAesQa2hubKsnxpkJhwvMLGYLqVpS5btETddx4sW\nfvL8iP96esKL6wnzVUGnfhoKDT8oxYp/p6MSiSSdGMoLy/iJZfwExpcStTasnwlWz9zA69rCUrh0\n08UIxlPfJl45s3RN4B5q2ziOLC9dcYZy4vokhXoJ9Qoq6XRq4i5xNru4s8F3VnnuzD842zox1Kxc\ns+sNoIWiM2cTl8/sfArHJVytfGymD2eqO+LaA8Ga2XjldWgjqj6qYOlLscTVp25/JsP7jL38b6Nd\nL/r7ArJAcWgebELz4vC8+xeS2dCQw9kHavG8uB+YgSARgkmiuEhrnuQLnuQLLvMl67zmmYVnlTtu\n3cDiSjkgm69hsXYGrV73G59jeL3x9YUsNCHtU2hBTA9V3HRfx7W5tsjMYBR0S0tXuiiDpSq5Uke8\nUHCsMl5ej3lxNeHF1YTFqqC9Q/jU/0BAC6yse5GEFGQTKC9g8rHl+DM4+lzQziVJYd0g1pbmBvdM\n0swB2mQKR6euYR3QBTBrvCUrSV3cZjmBySmMT93vkwxXty1Y6u6q5N2lm4i+swqXiC9s+2gD2zhx\n0zZel2YdYAVAuzyBJ6euAM1otsk0u25hXhEXXoljQENV9lCZfUTltWLO8hnA7HAynhjQgmEGth1S\n7wNKu0Sau3Irb0MhkiUsljWO44jqR74xhwbbgHZf8fOuwCaQAiZScZFVfFws+Ky84fPymnlSURi3\nXtYN3MwFoF269cqHuTUhLXpslIDdYBa2wzPP2CRZ9Rly+wgFP7YWVGVprw1WC9QKmleWKrOsTMq1\nHjHSgtKkjPSI5SpnviqYLwvmq5xO/cyJnLDh0FwvE0E6EZQXgunHgpNfEJx9B+pXbh9VW9qZYP3M\nP6Q0g7KEyREcn8HZI6/TEfQViVI/LEnixMxy6gDt6JEDOCFx/miN49QOAtptVqr4s3Yip/BhK8br\nJUJRi764xYBDuzyBTy9cnyaOa6xCOJPsgSkYAEL5lFNuejFzzJpTbrbALIiptwNaaP4lee1/d6F9\n3Mv75tDi0LyEjRt9nGnivrRLD7VvzsSLw12PvREJE3AcWlbzcbHgF8orvjP+mld2Ba1zkZy18KzF\n6ViV9iFuPuOJ0YNjx+eIF+G4xWXrJmwyRsNG9Ew8hwaNcnq0+qUlySGRlsQmpLYksRmpHZFaTdtJ\nOpXQdpt2G33jgCaxPuDG9NsABoEhFHMT3ndnB1cjBDKTJKUgm0ryE0F5IbHWkh8J0rFA5k7X5k4o\nHeeV5k6HVo4coOWlM2EnmTMCIJ27RJK7NDfZ2GeIKCBfu++S3O/7QFarHrjuMnDSe39nDtiOfEX6\naelymhWZr+JEH9Y0dJoNLh2ahFAyL3Bqob5USO8dQG47qOeQweNNafjysOPzQ51nuB2HXD3k/Qx7\nAVL4KDfhyv/5iCKrBRjjIty0wRp7j0sRLneCMJRSMU06TtKGi6zCdnCklozrMflqRLIqoNoHEHfR\n9cH2hcVp1IOKIujTvP7NeuNcs+v3QXR9O/pGAU1gKego6Cij3gINGTWZ73PqPbFv1rgMLM2VYPWV\nJB1JhHAGgcWPoHoO7Uz7QbTOd6ypYb1wec0CLW6cs2zTOp8vEtDSeU7XCtIGxBpSDcvKcUBt51a3\nN8pOe1eWfg8p7wR5vdrUAKha+OrKVaOfrd3nA9Wa4mD14JNWUvfWzxTFEQuAPj40tENhUm9O++79\nocEsrmgU+tjA8Sai8j4aisvOlUVmAjmRJOMEOZbIiUQWErNW6LXGrBVmpdBri+1u45DD8Q3Gwsqk\nXHUjvmqOGckOAdyogh81Zzxvp8xUSWPv8uyGi9WQMwvfBXE9ri/a4fSOobrTO/YP9fQNA5rLUHBE\nxREVx763wIKxLwAxwiD2OiRaDd1KUL8SJKWbnKpK6JaG5VewfuZEzn5VUJ3ju1OfI10rsMJVI1qt\nIkBLwUiX86VSTvFvKkiUM3FXjUtVre/IUe0dgdDf0/+n07CqHaAFndl8DV8vXHLGm7UDPL1fRAoi\naDAAaBJK6t5VI/iuldR9csg1YypGOzm+t6NDesbh9ttQGOthRaPwYt7XOnsXGh7HIHJBeixJLxLS\n85TsPCM5TuiuWtSrDnUFnbCY1hyKdHvt+NrCSme86kaU0hXlrUzGUmd81RzxrJ0y0yWNue3Zxdcc\n1Dy7xsOyiaCI9ach3U8AtIfNNrOPbp2R//3f/80f/dEf8eLFC4QQ/Nmf/Rl/8Rd/wdXVFb//+7/P\nj370Iz7//HP+9V//ldPT09sOt0WBQ5tSc8GCCxY8YoFF8JIjMlTPrS32HMNqx6E5nZlA15LmRqIq\nqF9Z6leC5kaga+HZOeUqD4mgM/Pe31XjtKVN4GpS0MIBmlDO4titneWzrXzhXOU4tLea+LfpVPYc\nu/Oe3enKgVbVuTCW+drZ5ueBQ9s/kTQJNeWWNTNUaE9RZHT955qSOcd9fYJhjYOHoSGovSv9WZwr\nP/SxE/C7Kpu3uR+ZQ3IsyB6n5B/lFB/npI9S2q8k7VggpMU0Gj0/cLjBMcGi8YCmXJXy2qTcqBGV\nSXnVlbzqRtyokvogoMVGgV1GgHg75tBgA2bhuzi33bunWwEtyzL+/u//nl/7tV9juVzyG7/xG3zv\ne9/jn/7pn/je977HX/3VX/F3f/d3fPHFF3zxxRf3voCCjiMqLljyIdd8yDWhIrhFeDAb7V0fjHEc\nmkWgKklzLVg9lZgO1MrSrQ1qNeDQGjZgtvbe36FCeOeTV9nUi5x2E6pTp84goCv3Wb0phzZUDocX\nKRZ7biHlAU3bjQEgT11Cxrpz39XdnTi0AGbB8jn1jhvxdsi5FmfHfTgKA3iIC3goCuM9LJ0XXsQw\n/ve1RN5G28AgckiOJdnjhPKzjPLnC/KPcpKxQEiDaTRq1iHS2wxO8bwRvchJ50DsWo152nZ0VrLS\nKWuTstIpjbmLvmoXh7zLqBWn6HYGgM33IZj/p0TkfPLkCU+ePAFgOp3yy7/8y3z11Vf84Ac/4Ic/\n/CEAf/zHf8x3v/vdewOa49BcUrxzFjzhhk956U0EgoacBSOKA3nUrHZZZ3QtaG8EIpEIKcGC0QZr\nhHPAD3melPful40DJ+EnuPVFOqzEVcRJXH6oznN1oon2rR3HZpU78BtXeNpn9bqDD1an6TPNzp2S\n2WWwsL6ZzfYeUqRbLh3BMAD0nNmUJY942acfikvpPTy9L4tmEDmDM2jOtu5s47j9MDQEBtEDWv44\npfgkY/SLBcVnLszNgZmie57cAmivH1tbwVpn1CbjRo1csXbhpqjGTQdt7R3g5fVrPixyBjCL1SdD\nbu7d072UIF9++SX/8R//wW/+5m/y/PlzLi8vAbi8vOT58+d7fvV/R9uf+7YhjUD5+oI1OSsKrJTU\n2ZgmnaDSKTo7hvTEcU6hoEbgqLT16dhjFtgMPkdkzQ4mKE5OF4bEu0vYOMOCASmQWY3IFTKziDxB\nZjnWKGxrMZ3d9AeVuVsXxesgdstvrfW6vs2NCCCTmjzRrk8NmXRTtzUJnUlotXS9ceFO9a84AAAg\nAElEQVRMu6qqh+iAuIXaoCmKkpoJq17XZpDeESTpw6R20xDAh5P/Ft2VgDSzpLklzQxJbkkzt69q\nBaoT6FaiOoFq7wIE4ZxxiNabv3iZ1OTSkCWaXLpnIIVLh9WPv0lojQRjsZ3B1Bq91qi5Jp0p9FJh\n1hrTGKyy/vHe3cprsSgrnV74NaNHfI/3VZXcZph414D1pW+H6c6Atlwu+d3f/V3+4R/+gaOjo63/\nCSEQe32xvrv3mBuR0iXFy1DOVSNNeTa65GpyyWLymHZyCeNLpydaNc4ZcNXAqvWezfFDij/HsWS3\nURAzdvnhhFW7Q0hJMulIjjXpMSRHKelxiWk1eu4mpl74/lZAGype94DwHckVEek4ylqO84bjrOEo\nc2A87wrmbcG8K1h0BV2b7BbhPRcWkkSGilKahIoRFtEXNi5oaCj6EKrQdoGkv0I2yvigkA9jHsY4\nVsoP7w+KsWF0pBkduzY+8rUi5gnreUI1T6gWCbpL9jDOMRcWc5mx7udQKNt+KhPNkR/349yNfSZd\nIsxFWzDvcuZtgW4LTGvQc037okOOnKSgZ4r6y4bmxy3qpUIvTVRq4D6+eUOOaji33hcn/JD0OdvM\n0A937nUnQOu6jt/93d/lD//wD/md3/kdwHFlz54948mTJzx9+pTHjx/f+xItLuXKkhGv/IvTkGGT\nnOvxY65OH7M8u6Q9u8SeXbqyatcrF95j8cUOw5Fih8TwwO5qsYoBccgpxZO/QyQSOTFk55b8sSB7\nnJE/TtBrTfeio32h6CSYxqKX+4B037W83aQTwChVnBUVj0crHpcrPhitsRZe1BNeVBOS2hc0ETm7\nArzjrLfBWBDK4gXOq6Qmp+WIBSsmrBlvVZ/aD2jDwrWhGnfQtWzcD3ben7DkI8PkTHHyWHHyuOP4\ngw6sYPYiZfYiI0ksuhNU80M6onjxiz8fBtTbqEgUp3nN49GKD0YrHpdrikTxdTVx9RaqsSv71uWY\n1qLnbs4IKTCdRb3saJ91dM87ui1Au4MKYuc9Drf/p4LZ3elWQLPW8qd/+qf8yq/8Cn/5l3/Zf//b\nv/3bfP/73+ev//qv+f73v98D3X0o5tDC9pwRJCXL8SWr00tWl5c0l5fw5NIVv80HJdheU6TfUfTc\ncTXbXF1IS5TgJr7jKESSkEwk2YWk+FhSfJpQfpqgF4p6LH3GbIOa3UUJetuku9/kE8IySjrOiooP\nxws+m8z4ZDrHWpiuWlJhUEay6PIDGhHR68kMcqui1LClqL7IcQyEB66QjSI+pLmWbEKOwvjvvjoh\nIB8Zpmeasw9bPvis5dEnLdZCMc2RKWglqBbJLVLacK5sQukeAtCejJZ8ejTjk8mcSdbxo0XrMy8L\nVl2OFBbdWtRc+cg2g5op2mmCutHoG42aaQdoOoyb3dEfongO7VJn/GwC262A9u///u/88z//M7/6\nq7/Kr//6r///5L1JjyzLWf//iZxr6uruM97rOxqbQfxZwNoSSAixQAJWZoW85g0AO5Y2L8ILb1l6\niyX/kNiCeAMYD/fec/r0UHPlFMN/ERFVUdlV1d1n8jU8UiiypqzIzIhvPPMDwPe//33+8R//ke9+\n97v88Ic/3LhtPJzEJiWxt2amSEj6NP1ntGfPaJ4+o/34GeaTZ9YDHiyYLSrrTArscmSC3Ql5XzCD\n7UT35/DcQ6CPiCLiQUb6KCP/KKb/rZT+b2e0E2m98muNmmuii7uU5uHEPKRsfRhZDq3lPK/4sL/k\n85Mpv31yjUYQR8YlZ8y5rAYHtVwexEJg88aBMTNymo3I6fOsATtc3WEKLYsZNvYvtPCGXNP+C8x6\nmuG55PzDlmef13zw2xVGQ+Q4s2oRMb9MbP68vVe5T5cUPofX55CLWDHOa573l3w2mvLt8Q0naU0S\nKbSxYHZV2/qVutEwB1Mb1EwiLlqiLEJXBl0bdGUwtdnDod0XzI65v/zvBDO4B6B95zvfQev9k/Qn\nP/nJG/25Fzmb7jCiIRSPbezko0c2Gd0nj+wvVo11Gi1SG6C9OdMbPiThz9M5DhUxxiDimKgHyWlM\n9hTyjxN638pJrmLUUtFeS5oXLSK7j5WsM2b3E1tASuzOY2Pst49cqsBQuArnT4oVHw3mfPNkYheT\nTLmpe7wsh+TxEaux47S6fmaShJwa7TLdDllyxmQTbbCmT0ZD4rK0hmCyPQ6ti55Di9kV6w8HIAsB\nWaHpnyhOnrQ8+qjh+TcrtBbUq4jlTcL0pSLN77uBda2Z+zjm+1MWS0ZpzaOi5MP+gm+OJoyzirVM\nmdUFF+WAXiyJhDUYqdbqWztX2Wnh+w8Z132+d39jw28K/dpjOfeSzxQxXcOruY1LFMCLGVzMrB5t\n3Tin1rdAUWTDoJIE0sQGsKeJddfwKbVlaxMnKoNeadprSf1lS9SvETG0E0X1i4bmlUTOFLruTpR9\nALc7YaNcEPdsiwrbixhUqdGVQZUaVRp0qXfLODoyuJz7TcGL9Yhh2hALjTGCny/Oebk+YVoPKGUP\nQ5hZ9m5uNszS4cVMScKCES3ppvCKIqZHiSShJd0kibQA6cU7n4nBc76+otJxh1ZjoC4jlpOYyYuM\nYqiJYptR5dXPc6YvU1bThKaMjqxTwW7eLn/sucOwYvvDXFNqlTBrLHCdLE9JI80orfnZ/Iyv1iNu\n6h5rmW7qiB4nfwE7u9qDxrNL+/weQ2nm12k0uMv6ff+xfc0BbbXVmdUSrhcW4CYra+Vs35KzXhxB\nlkGvZwtJ9FzQel3bmgFlZcOltMEoiVpp2mtF3W+2OrOFov6VVepaQNuXUyo8Dnt7HBcR6WlEeuba\naUSUQTNRyImimSiYaAuWe/zLjNlWhn+xHhILTausW8UXq1NerMdM6iGVKmADMF7sOq43CgHNGwgq\nik35Ow9oKe0mO64Pl6ookCSYwFq8vX4PaL6ozJFxGGjKiOUkYfLCgplsBWi4+iJj8iJlOYlpqmP1\nRX2qmx5W5C3csc+yUQb9wwCtUgnTuuDlekgaWX1lP2n51fKEL1cjrqs+q3sB2j7R8vX0qlvyQOat\ny2FN29DK/Ovi2Pz4wjHqTvsNTcFtKyg5Dg1sEPiislbO6doC3bq233sbFMWQZzDow2gIo5Ftq5Wr\nvRmD0S5FcesATdqUaI2xAFZq2ktJcyWRU4WpuzvsISDbtiiPSMYx+fOY/IOY4rkVb+sXkvqFhEig\nmxY5JzDnb8kgWMuEm7qwYOZ0ZoaIy2rEVTVi0gwoVeE4tNCl5bh+JgS0MFogRuHLFA9YMWJBQ8aS\nIQuse8825jNU+sOuntK34xxas7aipQezcmHdM+aXCYurlNUkoSnFHRyaT3UzAoZs0934TMFgQfdw\nhad9VKuEaZOTrocoE7Fss42V86rqWw6tTVFHAe2Y8v9NQC0ENC/2+6JC3nXm18mhhWPzLVRF3E9/\n+PUENM+hgeXMFhVcr6Bq7Pvr5i0DmuPQ+n04GcP5KZydwWzuqktrG+MZrzEtqLWCG8eZzRXNhcS0\nGrnQqKVCLXSHQ/PUBbOQ9RdEeUJ6GpM/S+h/mtD/PCEeQNyz1lNVW/BsDqiZDFsOTW6qM/UxRCzb\nPou2z7K11ZkwKbs+V55T208e0EJrZk5NnzUDVpucaj7rrbd8+vAqSyEX4EW80A/tuM+gMYKmjFhN\nYpQUVIuY+WUKBsplRLWIqZaxFTkPkhc5PaCdAmdYrsyH7PhMEQ+jSsXMmgJlIlYy46rqkUaaRZOz\nlBmLJnuAyAlvH1j2uc2Eke/344LeDYX6Vd9Ct5rj89PT1xjQXDaLRWVFQp9SWmrbK/12AS3PYTCA\n8Yk1RDx5YvVqRkPT2NRCUYxRBrXSzjolEIlEpAKjDUZaZa+RWC/vDYUK3i6YbfuoiEnHKfnzhN5n\nKcPfTUnGwnFmBjnTNBfRnso8lnxl8da5ZqRRnyTSYGJakyF1jtQZ0uSOQwv1M8fjF328Z2jNTJA8\n4pqUlhELBqw45wbtFPtheqLt/3gQ9WBG8NlxDsHr0CxnZpinCXFiv6tagZLbdjgazYucfSygnQNP\n2AKYL5Ty8KVRq2TjZ3YdaRKhiYT1+5MmQuqIVkf3FDnfNoVckLcyh5xzGJz/vqkrbnqj0f3np6f3\nBmgiFpAIhGvENrGdkQaUAwPXbAyicjqyO3OnvMVB4qyLQSPsAQOmsX5E73IMYqPmEIgkRmQpZAYK\nAb3YArrRLmbTHhutad2i2SW/iP3OHJbVux/5JJEhxShXVMUCnf88QhOjSGnJqelRbgwGeiOg2nb/\nKuKAccDVvumiOyT2vxlJHSGJqA7us4f+4665JNhMiLA3jqPd6d9Ex/a6tG/D3mdouu/YDqtljlnB\n4X0CWiaIhgnRMCYaJsTDGNGL0UuJXir0UqKWCr1UmHcFFodIOy5stYZsthUzZ3OYzWC5CvKtvw6F\n+jR/HDrv2vd1LWingvqlIe5rEJpkFLP+AqrrlLZJUSlwJiCTtuBx09i+bUB3wT+8j16cC5VvYWrp\nh+tOQvFzwWgjZsaojWOurwMaozYGhLC9/SSRd5Fmm4xwzlbMrIAptihKxdsVve5a8Ow5Dn8egchs\nzqFNn2MTJDSgw/6QIcNzOWHIlw/38sHlrwOIIXcVttDYdJfRKfyuZ2K6xiovkh4H3vcIaBHRSULy\nOCN5nJI8zojGCeqqQV61yKsGYxpMpTHN3ed7q+R1ZKuVBTNfTHi1gvnCJX6sj6biuR91FZsezGzT\nlUTODPWF3qSQiYcJ1SSjniY0dYbKMsxZBlkL5dq2am252rabPrpr+g7HH07w+8a73qaWdJMkEqyY\nmdJuuLGMZmMB9Qkiw+pT7x/QQh1ZWBXdGwWWbGsLvE065JIQjusQRRbEogHEfYj6ttclqDWItc3d\nJ9QRQINdHVmoxwwB7XXoUH45D573sZ56dYQ/7s5ZD2hfFw4tjYhPEpKnGelHBdnHBcmTjOZXFaKw\npa5MqdGzd5GW5g7S2hZHWdssCBtubeO2Ub4Bh3bMOuM/s7uOrg3t1IADs3YWEfU1bZvaJgeodIA5\nG0Jew8IbLYy1wB60jvn/2pdtQXfef8iVWaW/D3fyBoCcmoxmk7B7wIqMhgWjTREWr197/2TYcmiw\nzawq2bpsvE0ObZ/IFFp5QyvzoVNEliOL+9iMCC77jFqASEEKMApbiPoQhRuYf9aS3U3tdSyc/pq8\nOsO3UF3k5+RdY9v3OnTvuZveq8gZnyQkzzKyTwvybw1Iv5EjiggEmEqhJi3cmf/pHZBSlkPzYLZe\nbx1rA6faNxM5QwVn9zMAYWuHTjW6EciZoL4QiMKg8wEqT1F5H5WfwvAM8spOdO3cScp15z+6oBay\n7t0g/Nc31fuIAg9mvvDKCXNOXFRBeOzBrKJgxeC1/vPNyItZnlMrsZxZKH493Kn2OIVgFopk4ZiO\nuSTELsVt34JZ+giScwtyODAzbj4cpBAkPIgJuLXRvQ51lfnZnvPftXbCcYT3K8zKcrfR4v2LnE8z\n0o975L/dJ/u8b5XslUZNWqIX9bY60/skr0NrGrYhR24cxrAxmb12Ikc4DGTBMGowjUDO2doicjCP\ngPMUzgeY4SmcPYG83I67LG21qltWw+5xKIoeHsf9r0hsIgF8qTuB2cR4DlluAO0pr4hRO2AW/1pc\nBDyQeWumHfX2M9+/bT1uF9T8f9zDICECkTMZWzDLnoFwiRN0DWrpXh+ikDPf939vYkzw4mAYo+t9\nx0LwvGts4TlhqxII/+NrInIaadArhZpI5Kua5gv71+2XFfKyQc+kDelRhjgxpLkmzX1vj9s2oW0y\n2ialrZ2SXMZsM8cG/UMf0GuDlrv5vjxeHAd9vF9fqrW14LaOA/THBkzw/wZAaJuVdl1DvoJsYUvw\nVZUt7FKVziDgOIootk3E22NjnEgibfPHD77O2+4mxu2qJtjlvThZ0mPJkIKKlHZTTSpC06NkzGwT\nQuX1af74oPUzTmyLgvsMlntW7vr88UE6ZnUTnX7f77qfu2Ph7rtItsc4a6Qxu/2DMsFo9+wqUCuI\n5iAzUHP7WpfYAtTHdGC3LYZCQJwbklyT5LjeYDCoWtgs876vBHEOcQ6J6+McRGxQlUHVGlkrVN2i\n6gijvf7Mi7UPWVfdjSU0GBw/z/sDtEaj5xbMotyirJpI2l+WNL+qkFcNemkz0MaJoRgqBqeKwVgy\nGEv6p4py2We1yFjPc1aLAavFALVO7Q6lK9dq4E3SYt+XOhM6TmzNzrwI+ux2yGCCXWyryiWprGBd\nWZ+6fWPWxgJWtYZl6nRmyur85nNbE6Gutokuo8TNuGI78zCgKlcHobLH+qFhLn6H7CZoVLdaWKQ4\nQW7ETJ8I0gOaL3JcuwqgFcUmW+5eQBPCxdnmto5qVthjsPUh2tr2TcW2AvhDqGuJhN3F1RULOyAh\nMohy2+LcclXE1vq409TDQM1oMDXoNUiXQ84oq0OTM2sY8PP+6LV1dlYRkfYkxVjRO1UUY0Mxtvet\nnAqqWUQ1g2pqa3IkOeRjyE9dP7aXWE819UxRz1rqKTZbs+5aUF93PXqO0p/j68KhNRo1l4gLWxJe\nVwr5qkFeNMjLxgGaxEgLaL2RYvyk5fRZw9mzltPnDfNJyvRSMLnM0emIWp1Ry8Ky22oFyrlBqIeF\nrDyc9uziUWIXWG8I/YFrfcuB52z7HCsmTpYwXdpT+IIn+8hbXMsy0JnV7r01rFe2ipWUbs4mkPQg\nHUA2gHQIGGiWEC3dORUPDevZFSs8QvtccV6EA9gmhQytmTU5YYniHuUmqmDpSrGE1acOjiFOIO/Z\n+9wbQuH0cOXSNrBgJuoHrqFDvk8h2Jg93wmiPUSGTcUywIZ49C23plaurd297xpl7hio0RYI1cq9\nodzmXW7Pbeo7ODTohj4JEZH2Bf1zGD7TjJ7D6JnGGM3iImL5EkQkUHVENRfEhQWzwXMYPIP+c1tv\ne/XSsL6QRLEFs2YRugi9iQW1a+nsGg9u03sENIOaWzHAVBo1lUSDGD2XKNf0SllA6xt6Q8XJ45bH\nH9U8/azm6acV1xd9kr5AJxm1GrFcP4Kyby09RGwtPe9TD+f+K44doA1gNHbtxEbY+Dhof1yXNuhe\nYMXN9RFwMdpyaMLtym1jgUw5Ls035QDFc2jZEAq3lXrOTWC5g9cCfA9ooeI3ZVu+bKufCQuvhDGg\nviq7r8zeo0RgNpZPD2bi0AIXWF1h5gBteGqbMRbocNfXvu6Gdlssu993PcfjFfcjSE+sRVKkIFM2\njrBR5dx/Hihymsa6Zvg5Hq0ct1c77q1xYHlsvGGkgBWL056hd6Y4+UBw9pnh7FOFMZq0Z3lkWUdU\nMzu+OHeA9gxOPoPxp4J0YEj7mii2U7BeaETU1Z+9rsPvPjD7mhgFvMhpwaxFZBEiEZhGYxpbMMI0\nGjoc2uOPGz78dslHv7um+OUpJoFa5SzWI5LJI0hHbPQUugax4v0AWjjhhePQcui7hXb6yMaDDrjd\nypUFKOnAbJocNnJ5Dk07YIvW22B5pS2wabW1wMaOQ8tGFtB6j50o6xaDrKE98n8HyYsqHtAKtuEp\nfrLZcCYPTN4A4MunnDLdiJl91pwy3QEzL6YeBDScyJkX0B/B6AxOHtv/F2ILZvGbTOsu53XMraIr\nwjkOLR5BcgbZmXOCFW5+VqCS4H7tM9zsIc+hCQmmAuX0c8YBxqas2X0BzXLYQiSkPU3vTHLyoeD8\nm4Ynv6MxWtnpWQuquWD5yv7ci5yD5zD+THD+O5CfgIg1WlrObP1KIDahed32OrTPheMwvXtAK6z4\nYIyrgtQ4pahuD+q5RARxavPH94aKwank5JFkudD0TwT5ICbJU6K0gLgHqrB6C5FaFn+vaTwQF3w5\nOhGCkrdmOsXtXotg+LojoghnFEhSqzvLCyj6liPrY5M6+JZo6Bc2w0eaugXoowY64zXG6sf2Krk7\nY/EK6SiBOHN6tJ49V5NDlDpO7X4+PbcpjLfr6tK2JnUf1tR1mvUuHYoYXzLPc2q+vpRP7+1Bbiuk\nOpjzxpckg7Sw4qcAmh60BcgcoXLQGSiFUcbplA13lfXb/2z9vYp2PzJhYgF3LGI7B6MMosKBWw5p\nDyFyN+YE8thtRHY8ZuPbfGhsLqxp87EdxCYKKhFOJWbHYLS9Zn/tRhts/YhQj2ZBMUoikkKQDaAY\nQ//chtKtxzAcGsqepkwUpYgYphHDQjAYCAbjiP65IB0L8rEhGxqSwk6x27jzmmAmYFOeUUTbY9ga\nqDv07gHtQ1c8pVXWXypstzzb7bFqBdXSZlK4+iIjze3DvPwq5fIXhtnLmnKyRK6vrT5KTp21p3Wn\nCpMXhroK3KIOW2Y/122n+Tz3HT3JDmsT9FpaZXS5hIVT3htp3ZxWWFenPhbgqtIlqlzDqnVSW9oZ\n61072x4lL7EVS6Sy1d2j+Xa89dTq0WS1x8J5aOfrbgjecuXvjWZbGftua1YYrO590gqqjfUzQTJi\nAbCJD/XNhknFrlB0BeuF3TwEkEYIs0T0JeQJ4rwP8gxKiVm3sJYY16iPcTHd56rdBplse1/YRXiu\nKOSSvCVy6ZT3BrKUKJsjBg0iA5HmiPQEmga9lpi1wqzc+Mq7OCzfO0DLI+KBIOpHxIOIuB9ZG8Ra\no9YavXL92tcmCL33BcZoZNlSTjTzF4Z0AELEJEbT/kKSX2gezxSDVvMsVqQyJVukZJcZ+hcpizjF\nDBNmPxMsvhKUNwK5Fhh9iEN7ILClCWTptqUZpM6q/bP9P3kPgGZrd9rUPyWsSmvZ09jamnu4KF/o\nYnaVkmS2WHBdRkyvUq5fGmYvG8qbBXKVQVuCdApX3Trc8qKQZ8MDgIhSy9UlPdf37fvShZHIkg3A\n7bDpIRcSmpLduZV00QYru5MYDW1lJbOcbS5BbxS4XsHNGpaukrvJgrGq3XPvpX1WxxR0ZDeKqLTf\n8eb8Zu4ArXSuG+F59h13rXoe0MKIBG8QaLgrlxlsnW+9AUARU1BtXDW871pBtUkOuaZPSc9yfCaz\nipqmhDKxu7WSiF6CKBrEQCKKGJEPEEWKmVaYmxpzU8FNDa3GHAW08No9JSAK17wyFHvNpt42HKCp\nio0/mGkQUYYY1EQnNdFYEI0LorHArGv0TYO+rtE3NVqZI4C2T7cniIqI5DQhOY9JH8Uk5zFRLmiv\nJfJG0l5bhbyujJNG/TN0z8/EtKWkvFHM+wYRCWQV00OSfKXILyoG85qkqUmSmrYtaBY9mld9mrjH\noomoegmLLwTLryLKm4h2FTlAg9018hp6tCSxyVb7PZurcNCzUg38GgHtGw7QVqW16kUJaGELnZRh\n0Ob2YpUUlI5DMwrqdcziJmE1z1hMYT6pWU8XyJWAxitHW1CNExc9h+YByC22jRWwsLq31ClvjbHc\nTBs7rPIWuxDQ9rkqBOPWynJoUai8X251597nMMVyUPMGFrUFtA2HFnG7VuQh8mMLfUIcoEkJwgG8\nWtuxtqUtMS8rbgexd0WtEMzC3TZ0kFRsrZz3i9lTxFQUO9ZMX6E9QZLSbl5XFMw5wdcn2KTwltIa\nVRDOMFJZ8bIQiEFEdB4jHvWJHg3RF2vMVyt0LCyYLY8FCXc31uDZiwLECMTQ9gBmhWW9fdYL5wso\nKlDGbiR6DUlqVWunED+H+HlO/DxHL2rUl6WNjFEGs7yPX+CuxBAVCck4JXuekH8jJfswIe4L6i9b\nmp7lonUFYqowOxZDux6MlrRryXqiEJH1PatmESMEZxPJcFpxOlty1i45jZfM5JCbxYibC0PdRCxm\nGbMUymtBdRNRXce06wijfcB/Z408lJLYAtrJEE5PYDyyoHbsJ6/3Tw8gz6HNPZhhwWxVcVtvZMlz\naEYLqnXE4iYh/yqjqVLq0lCta6pygSxbaFMLSDtSmhfkw6h9tzCF49DSkVXa5ucO0Pyu2oLycX63\nFakhy799aJ5Dq7aK6XLl9GPcbspAbaweoDbQCMehdZPt3WVlC8eV2evWOJ82aQGsdWNUToxWrRM5\n/aINzxf2+zi07WLYVZrfbxf2HJoHM2/5HDrHjfDY51wLs+MCjkPD3ecKqiVEBeK8h+gXiKc9ok9s\nE+MMnQhrcFq0cHVA8bJDHWATCZBbMIvOQJy5jzK7eRjNxkXEWyBNazlkFUOWILKcaJwTPy9IvpkT\nf55jpjUijSyYrSVcH/Py989lV80Q5QnJaUr2PKP4LKX4rYx4GBEV1tKvS5ATbdUfO8/HzS0Dbalh\nolG1oZoJFhcxrRAMK0leVTyuF3zcTPk4nvBC1qQLTd3EXM0zFhd9rgS0a0G7stxZu04w2genh/f0\nNdw20mQLaI9O4fGZzSh9hN4foBWFXfu1A7PEWyNDUHMip9OhNWVEdJMgYmOLYegIrQxa12jdotUK\nTOwAzC1s49mhMIWJ5yycNTLuQTJ0gOasZF7MVCVEC7eWu4Dmlfd+rAHHoiU0zhJZBYrMUErA9xHo\nZLftVFkKAeMQdTk05+ym6y23KnyufgdCmzAu3TlP9zgEtXBMXS7tgD7xAEmSHZcObxgANpzZkCWP\nudqkHwpL6WEch+ZdVoQz7GQ9BKeIQUL0JCb6bED8e6foPMY0imjeYi5LRBrdwSvs49I8hzYEcQrR\nY/u+dno00ThuDadDc5uo0iAMQiWI7IRoLIifF8Sf56S/f4K+qjFSo5eS6LpG5HcZasKJtAW0eANo\nOf3fyUnGkZ3KlUFOFdEL6ayO/pq2z94YQ1saZAPVzBDFAhFHCCF4HilyUfJILPhM3PB7ySU9KakW\nMVfzHGMGLIzmWgu0EhgdYVSMUV1AM9w9lw9QkkAvt4B2fgpPH8PZ+PhPHv4vD6TS7YpV7RT4rbPw\ndM3h28lkDXs28+h+8rsNbIHLT0D7wJNEkqYNaVaRpRVpWpKkkjYuaKIebdSnjda0VNbjQTuRwTiP\n/Z2Zf0zB6f7TuIHvXTLdheLzpYfnCAH4vkrUUJfnxGDjxD/TYJVzd3mQHzrvsawDoOUAACAASURB\nVPdfT4QwiL1V1X10QNh8bdAESUHFgJXVtZkYbbwjiG3U8SY9u1k2MK8x0xqzULAWmDoF2bOAY1nk\noN0npCYEEj/+7iJ1YG8CbtUojANfU9WYdY1ZNOhZg563mJWESll3JWUQAtJUkaWKNFFkqSZN7QbS\nuIwrYW+0dXXSpUatFGpur0MtnTGgNlYa2Hluu6/1LW8PQRlFrOOIVZKwiDNmSc40LpipnIVKWcmE\nUkVUEmrdPbefv16CiLAbbhHc62C+Hrv32rkmtdImj6jqLZ4coHcPaF9e2H6xgpuZFT3L0gLbzuJ9\nXQq5sK0eIs1qTkYrRqMVo5MVo9GS/qBmXsGyhnlts3svalB1BM0U2oVTmrd7zh1yJV3PZw9G+wB4\nHwjuO6/nfu7riBiKgKH450vC3dc7uytadsf9bslzYT5JpK8opYgp6WEQm8LGOTX1ptRx4Rw8IrQ0\nmIXEXFWY/goVOzHzqxb9K4m5jDGLAaZNQQywIO+U+tQcv9+GrQXTG0BwFvXWgWToDd+Z08pgVhJ9\n7XRmTszUswb18xXqZYWZNZhaI4ShX7SMhg0nw5qTUc1oWIMRzJc91woWix6tjGy0zbSleQlRYV07\nooGg/nlD82WNvG5RK+e68oDnKU3E0uRc6gF90RJLTWsivtQn/FKNeaUHzE1OuwH3cFP187mbH83r\nW+o97cCGK5UFsPnSip9gdfFH6N0D2lcO0NaVBbXFyg5Sev3WIc7nIRQubvs6SytGoxVPns55/HjO\nk6dzTk/XXE4El1NIJ6CVoFxBU6fQLkEurZXKyM55Q+WmB46QKwzFhS6ohbvWPr1CeO4u53DsXvjv\nR2x1hbLT7nOOrvL//VKY9dYbC3xZPB/PWVCR0TBiwYqhK8tiMES05JaxXkrMVY2OI4TUsGwx1xH6\nQmCuYsyyD+3AiolmBazZprE+YizYpLd2G6Z23zWeo3dc/S0dlbuX2qDXEnHdoNI1xgGcWSnUyxJ9\nUaJnLaa2zqy9QnI2Lnn6eMXTxyuePFpjjODV1ZBX1y1xrGnbiPkyQ9cSOYPmwoDQ6EoR9QTNS1tO\nsb1pbUEf3d1Mw/42SSIWJuNS94nRDuAyrkyfl3rIpe6z0BmNiYNzhXPbq0wSdksFZlhDim+G7ea7\nbyDSYsXChbS10oLbEXp/gFa3dnBlbdsOhwZvtphC8dUu9CwrGZ0sefJkxkcfT/n44wlPni754itB\n9pWdp+UKptJAlVsg8+0WhxYed/VLoZ8awXu+9w8rMEzsPW+4KO5j5g5B3P/eW2DD8933voYcZldE\nfndkEBs9mSbaqSjVbQmSGQ0JCkNMS06JLUrDUqKvKkSrEYsGc7nGLHuYWYGZ9WDRA1nYaxQzwHna\niwYOFi3ZzidrwWydXtI47iwMvu64B+3h0FAG7Y5NpTCzFj1t0NMWHIfW67WcnZZ88GzBp9+Y8fGH\nc4wRDPstSWyQMmKxzBBCYSqQUzs+XUnkJEZkIKcKNVW2vOJaWcfaBzzHFgdguk9LzMJxa3OTMzM5\nU1N0OLTufI6w4BWzra41wjpiunu/AbMjHFcrLSPkj8vK+qMdofcnciodJExUrmJTVyR6E+4sBApB\nmlWcnKx4+nTOx59M+Pa3r/jGRzPyAowxlCu4uYREGqicfmWjQwvTD3UsQ3tb6HhL53jf9XW5Nv/9\nfTvpsev2+gfvmtIFzPvczxCY3x+QefIgFgKbNw6MmW0EzFOmDFiTuN3fgtnA8sbSwNKWEmTRYi4F\n5BG0Y6gTTB1D3ce0p9bKjUupRINNxX1EYb0xokgLYBtA86K9FztDXdC2NwpYKbSsMSuJuIpRRQTS\nYGqFqTTUynJoQK9oOT+t+PDZks8/mfLb37xGa2E5MxmxWKVcXvcRKKsjm2p0JZATQVTYsCNdW/2Z\nrjS68pkv6IztMEkTsSCjJWauci5Fn1xIGpNQmZiahMokNCaMxunqhA0WXnrACba61ojbYHbEGOI5\nNOmALYm36aIO0LsHtJeXr/WznYJLmGC9iY3ufRs51eV6IE0qBoM1Z+dLnj+f8emnEz77bEpVJcxn\nMZcvY/pJRCwF1Icyp+7b2QQ2xMX7KHlFcWgcENuf75yrC1xvAhq3rxn/D8LcOjZGbP/R7IuWvGMs\nwi17EZxfsH0W7trvzNokQvAQbmrHtDiHSXcCSUJOjXaZbocsOWOCJKWmYO2iDRI0kdQYqWBlc3lt\ncrOJBBg4a2gPGFuLpXHJHcWSrYvPIQrEzY3ezYPhboERf4e325mxj2etMGvhntSRSNXUUOSKk2HN\nk0crPvpgzjc/naC1YFWm3Ex7vLwckGeNFTFrg66VrfXyFkk6J+bVvafnvrmssesixwYwj7H1TyVW\nb7ZmtwLZvoE4xqe6f7KBr2Vdzjg1pIWN5Ux7hqwwpD2NrG2h2bZ0fSWQzf7J2LQxi0XO5eWAL341\nJs8V63XKz/77jK++HHF93WO1zJDygXGNsYAisR7LRdCUgEpDZVzTUHuRsCvCdq1jb4eEMPQSSZFI\neklLL5H0EokxUMqESqaUMtkcP+SfExdbm/U0WWH7JDfueUQ0lX0mTRkdtk775IyJi1+NU7y3P6p1\nLhn2WJmYmoIVQydmaiQZC05onY7Nlsa7okcPSUxLjHSt3Tj91sAKzNRuRCazxyzAlGz1j4dIsa1B\n4MKeAFtMpXSfWbVChqRAUtC6XhKjqUioSHd6vQdEjRGUVcpk1ufFxSnDgSaOY4wR/PxXZ7x8NWY6\n61NW6VtM93dMqtgnMXRdew657ig2934jZrbADRaB1ziHwrdxERv6egJaAsVIMzhT9M8UgzN7XM5s\n1ezVJGY9MWgVHwS0tomZz3MuXw3IMoU2gumk4IsvTvjyyxOur/osV+nDAS0S0E9gXMC4hzjtwbhv\nn91MYqYKZk7nUnsLpKc9VrC3qIwXQC9pOSsqzvKKs6LkrKgwwKTqMakKJlUPqoJKJUd0R7cpyTT9\nE8XgTDI8s31vqFhOElbThOUkZjVJNgV/91LscsblPZegsWdFiLq0Tsm+19IBWs6KITEaQ0RFj4Z8\nYzQYsCSlpSZz4e35ppfEGKNAVGBcempjsLqdGZgFFpCOAZpfmB7QvEEI7ILcBbQcyZiKMSWnVIyp\nSFHMKJhSMKPHDENDfADQoCwzJrMBLy40cRzRtgXaCL74asiLVyMm0z5Vnd37ud2PurHK/tq7qot9\n6pbwuwS9B7QlWy+ACgtu/8cALUoMxVAzeqIYP5ecfig5/UCyeBUzfZEQpwatEupVRL3af46miVk4\nQNNasF6nvLoYcHXV5/qqz9VV33Jo6jUArZfCWY54NoBnI3g2tBvRRYNIW4xpbVjXIox79Cy4t6CG\nk+HtgJoQhn4iOStKPhgs+XC44PlgiUHwYjmkSGzYTiUTpg/Mf5hkht6J4vRZy+nzlrMPW0bnksmL\nlMmLjChOUa2gXBy5nx7QekPojWyfJDbrbrkABD6EzOZRK3asmWvn1mFzeVgObcSchpQlQxbYZJaS\nCCvqhByasUp9ErZhSy519dE74c/hwcxz2zV2gXpAM+QoTqh4ypJnLHnKkoKWC0b0GBIBDTHzTTzo\nLhkjWFcpN9M+cRTRyoLFcoQxgsubnKvrgsksdxzaaziq7qWuHtg/P7/5esf3faAWOpl3DQMhh2aw\n93GJBbK1e///CKDFiaEYaUaPFecftzz53LabLxKi1KCkoF5GLK8OT8S2jVksMoyBdZkwmRT0epLl\nMtu2VYZ6HZGznyDOCng+gE9O4NNTmBvIXArwqoaJdyr0D3qb5WC/NfHNacOh5RUfDhd8Pp7y2XiK\nAYrYFgGuZMKk2r+gjlGSGfonipMnksefNDz7vObsg5Z8YJP7yVZQzuPjqciieAtow7GtXpVmTvTE\nOly3FQixSQxpwSyjZEBOQ58VA1b03XGfFYqEhBaDQRJTbTLeuvxhwimhjQ+3C/3Q7ityekW21+d4\n/dnW7SBHckLFE1Z8zJSPmTKgoUASYahJmJNzKF7BipwZk1mMlAWLleLyWmGA5TJmsYpZriLK6q4w\nqYdQCFBhERI/R0MVSdiHyRp08L3QSOD1jb4gTYK9l97p+/8KoKU4Dk1y/pHk2bcbPvy9mqyfoZUD\ns+uY5Ajn3TQR83nOep2S3PRIUk3szN6yjWzv2oMoEtC3HBofDODzE8S3z2BiMHoNZYmYJZg8nBAe\nzMKSXO9A5BSGXio575V8MFzyzdMJv/voCu1281ImzOqcXjI8qgbfRyGH9uSThg9/p+LJpzVRbFzs\nbcT8VUKUHLmWkEMbnsH4sU2KCWzqJFRLEAJNQr1xzYAIQ4LiEVektIxYMGDFOVdOfNNIB4LLTXk8\nxyUYiV1Q3nijOu0ukdPrQrsczK5IljlAe8qSj5nyba4YudxuLTFzcq4YHAY0rMjZthGLZUSaRCSJ\nDWVqlUZK32xW2bdHIUCFYHnAKLaTsqorafjmObTQmum5va6L0tujdw5oI6xMaJP+CScsRPgkgPvJ\nbO6LiGxISBQ5Y5UwgaFs38SwHyoVo1RMXb8pWHSXvosf9OXuNs/XdNzRDrluwPaCXB8J27S2zejg\n+KHj9xZOgxCGaMfiue1fh0T4TCJjn0f4TMTBK95zMrbXn8WIXgIqA5FD0sO0ySavpZEGJMRK0Wfl\ncqVtFesRmhhJSkPuEkYOHOem3ae+mVtK7DuszRHb5xNF2+cWloxzFy30GqFzG7+pY4SGSJtAQ9UV\n18L/NRgjaGVEKzsZVDYim+cKATRxYrM7x7EhTuxrEW3DBm2zRpqHTCMR2ZDnKDFE7j+ixKDltim1\n9XLaT28TrB6g631L/3iQvoH1Q2tJqcmoyKhdaw4AmpKCahGxuIy5GabEid3Ab75Iuf5lyvxVQrWI\nkG2XFe4eh2Tu8Z193wuBSYCOYK1gUsOLFWSJdVycG/hVA69qzLyx3MZO8sPA8TKKbCaO1GW3TV3y\nOtnY4PbG9W1jLX/3JGMEpUyZVD1eLEcUidy4a/zP7JQXyyE3VUEpkwfzhLIRrOcxs4uU3OWQL+cx\nFz/Luf5VxvwqoVrGR+JvYScJZuLcJYrcJmfstVBEiEd9hNGYsoGVtGl1lsr6ma0lLTElBQuGJDQY\nDDFq45jr64DGKBoyZ0TIN8aEbRbde7jN2OBK+4zClsR79eN1EzGv4FUNvVogaujrkl9yxkvGTBi6\n3G6+wEwXUMPXYRgRbB2otxxhmmv6Q0lvKOmNFP2hJE4M62VMuUxsW8SslwlG3TXnt6JllEA+kmRD\nRT5UZENJPlQ064hmEVMvbWq9emmcDrrrUPy2VCn7LLDHwe2dA9qHvAKgImdJf9MUEQ37vX5tto2I\nxVVCnFowq9eCxauE6VcJi8uYah6hmn1A5i9+d/fbL9p1b86+73WUplrAWmMmDSJzyuaqhZWBCwmX\nEhbKWTh9NaSON3kUWY/nog+9PvR6tq9KWwClWkMprE7pARW8DVC2KZOq4EUyBGENAN4o8HI1ZFr1\nKOXDH7tsrI5sdpm43VqwuE6sUeCrlMVVSrWMjpfD9FkySitWWp1Zjui3iL5E9AWi30P0E1g2mOsK\nfVVDXGNaBWtDS+Lm0hAvZqY0KOINoHmXjnJTvcDWKfC1Px+04JLEZooZuCpe/b4FuW6y4AjqVcR8\nCZdLy9A10lC0ay444YKxcw0uAkDril1d5bp/D3bFYyfi5orhacv4ccPp44bx44Y018yuMqZXGbOr\nDKMzqnWMPghoXRA1xKkhHyr6jxWDx5LBY8XgsaKcGFZX2Cbs/iurdwFkIR2yrO6n98ahLemTcULE\nthLQIdJSUDsOTUuol4LlVUI5j1jdWLeNcodD89S98C6o+e/s60MwC/uOzkA5Du2mxmiDKFuYlpYZ\nmxrM1MBc29oJG6tYJ0V1JCxH1u/D8MS20QmsFnax+MVeP6x6keXQEuuaAe7YGgBuyp513agLygf6\noMGWQ4viFNXYfHUbt41JzHJiOTR9jENT0ir9SzY6MyEzyGNEERM9ihFPekRPh5hZjf5yRRRHaKkx\ni2aj9C8p8NbMipzc8fs+YfeAFRkNC0akjBHud/WmnuC+ebGHPIfW68FwCOMxnJzYOhleHRrk/axn\nETNXE6WRMC8hY8WUATMGTBlQbgCtuzjDmN5uXKTvOzq7QjMcS86f1zz9qOTJRxVFX/Hqix5prl0+\nwdimQztIIYjaeR8lhmyoGD6RjD9Stn0sWbyISfu4AipQzWE32827ALWAmbhHGqL3BmgzRhswq8hY\n+oR9e0hJ7G6vcNbMmKxnaDfOm7bfcmhd3cQhMCP4fvi7Q9/z3wkUpjqCtbbWzLLFTNdQRCCFzYNW\nRbav/bl9PrJA5BSRFV16DtDOzuH03CrIPZg1FcQPM1gYYC1TTGXBbFoVvEgsy1RunGpTKvkwHzQA\n2UaUc5xrRszs0lazr9eCpoqsOHLMqRa2STB9uvJkCTq3YmbRRzweEH3aI/psgJlUEAt0qxDLBnEZ\nYZxyHeeyWpGTMKRHyQlzTlxUQXgswH23YHXLAHCPxecBbTSyVbzOz21K6D2JJJoiYh6AWS+BmEVQ\nAqYIAA12Oa5wY+2GxcE+0MgKzfC05dHzmg8+L/nGb63oj+SmBke1jpnfpIj4rusMw++s7iwfSQZP\nLJg9/rbk0bcVxYmduh7Mllk4tnvezwdRd11/DQDNi5wFzWYSLumTHMnRpaSgWgrqVQRO4ezDbGyo\njdge3wKnsOngs32gdkj3ZjrfCW6o59BKBUJjk/y5wHCT7DYidoutepHT7/x9y5mNz+HRM+vWoKTl\nzFbLbRbde5Ln0CqZMBUuBKcb+hSGQD2AVCNYt5YzDsPSwjA0Y+5QPitpObON9UCAyUCdI3op0aOI\n6JMe8e+dYq4qaBRm0SAuS8iF49ASJDHChUoJDANWm/hPD2hPeUWMcllybXbcmDBG9x4kxFbkHI3g\n9BQeP4bRYDfzuWt1LGhaw6I0iLlxdoMehgRDutPf1pt1xc7NIIL3dynNNYPTlvNnNc8/XfPJ7y4Z\njlu0FtTrmNl1StEviKJj13wbjOLEipyDx4rxx4pH31I8//8USWYzuFczWF4I4vSuPHJvg/ZISUfo\nnQPaNTZl8YQTFgxZU9CQoY4NzC8Q4G4Lxz5R0f/O/0fS+f4hRWz34XQ/c5POCAdY3fGF4Op1Ix3u\nDMC4QP26skVV8rkVQZfzoBK6q8X5QPKA9VAO7O7zYp/LAyxOd5zIkrS1JcysshkyvsrQgxQzaTGv\nFGYSY9Y9G2guEowLBDdBLQMb35lT0mfJkIKalHZTTSpC06NkzIwEuSnKIl01A7Wxfu4hpayRZr2G\n5RLy3CqPuhxaAmYyxyzWttZqo9x06S5C77bgdVaBQl3Y2pexa/bY3ihZgwqarKwaoFomzCcpNy9z\nBieS5UnK1VcF06uM9TylqcOiJfcjrQxtKSingtUrwezLiGxomH0RsXxl32/W3C4edpD26arvS/v0\niofpnQPal9gU3AsG3DBm7kCtW7PxzWgfy+sBLVR2CA5nzDzENu+7mcmeFp4z5Mj2JP7T2inH15YD\n8EVylwtYzOziaWrHzfwvJ20wqxZzXaMHK3DJGVmA/mWLeSVs+p/GB5p7D31fbcmgiWkcF5YgNzqz\nhoyafANovshx7cKjKpcksqLYD2i+yHNZwmJhw7S0hkW+v1bEZG6TmC7W1rladvVi4fO8nSpKCFuM\nLB/bCuX52BW+x1YhrGeuTS3ANXXMcppw8zInzTRaC4q+4uKXPa6+LJjfpFSrGP1QQJOCeiFYXQnS\nfmRdQWrB/IVg+suY5auIei5Q3Vo7t2ifjrsrXt9FXYbi+G/eA6DZupxrChYMWDCkJMyl9DYp1Ef4\nnbErG7RB21p2tr/v9vt2iDCtsG8+RMYr8sMki538Zr4KeunitrzOrCztezbr5GtxaL9pZJRBrCXm\nptpUZxKLFlMmNtPsqxgz72GaoQV+lmxCl4QB024ALbRm1uSEJYp7zuapiF0ZliFh9an9gzOOgyxd\ntXpjubVsv5WT1RrmLolpVduUWfZE7BcrO/NC2KqKxTkMntkK5YNn9m9XF7B6iQMXEHNoqojFNCXJ\nLZhV65gs10xe5UxeZcyuM6p18uBppCTUS1hdWvWCrQYlWF0LVq8iVq8i6oXoeBkco64Bzt+Dfaog\nOt/x/a6e7xC9Nw6tIXW7Yu6Ch9/2X++7MV4myLCxfSnbuDwPZod+G543DOvwYJlhcz0NselRWsAH\nlsqgD3eWANCaJjAAuHqerfNfq139BfV/gENzCRCJK2g1eumqMzWFTZu9SG1yxroPIrc6t02guQ2p\nsVlu8x0wW9HfVGX3ldl7lAgMKS2+MrsHvoPUtlBVWzBbO666G88dYUGscglMK//8utxF93j7WghI\ne1CcwfADOPlMMP7U/nXSs/pCVVsuDaCtI1azFIxwpR5TktSwmiebVq/jh4ucLTRLwSoCVUdUc8Py\nlaBeCuq5oJqLe3JosN+r4D5g5un+YAbvEdA0ETIobCHvUO49jPaJibDlpHK2KYBDMGv3/GbfeUI2\n2W/HKTYD5wib6ynkzCr3G9k5h+s9h6adHi2OrQFAa7sItNr2/9tJG1vdfFNqrkSkMeiRrQHQDqDt\n2eSMjByYAUJi0//YCIDaZdioyImdAeCU6UbM7LPmlOkOmDVkrBxXt5e8yOk3oPXaPSs3d7v2KOme\nW9jbE7GdQ13LZfC5EzmLMxh8CKffhPPfsSpXyylBPYf1K3uKpoowOt1YM5NME0XQNgLZRLRNhGyi\n1xQ5QdaCamaIX9lwRN26LE+NQDXcwaF1dcvhNT8EzPx3wzV4mN6DUeD0jm8ccqGA47qtfWT2HIe6\ntBQLYmFMJVZ0iQVENuMnkbCvtQFl7KLTxkkIIVj6c3qRxTtMdjnA7jA1SL3HZ3bfA7vLreRd0T5j\nx6H76+9xd+Lu4U67pI2tfFRt75X9Zgxi4CzJLnuG6DtxM2OrjRebsLqt06xtCZIeJYoYXzLPc2re\nkcKn9/YgtxVSbUOpt8Ap328OC2G99OMCsoEgH1vxEw3ZGNKBICnMJupKtpHNZL96u+obrUCXgraE\n+4DI/ekhujNP++bcYfoaBKeH3om+we0A4odOqpALq9kGxpZsQ5KcSJBEiEGC6Lvmjk2pMGsbcsNK\nwlpiahOcc8026V8N+Bxb2xxZh+mQdXRfb/a0d0ldR8bQeTL0kYJtWfiwwa6uMqiWdG/yWS5WYGaO\nM2vATIA5GJ9PK7zPu/dGkrhg9aHzSTMUVBvrZ4JkxALAxYemm7YbJvV+yBhbdKyewPKFIRmIzd44\n+x9YvTRUE2vhfK9721uhrl763dCvGdAEWy4n4/aC8GmO4c0AzQODP2dY6s0g0ggxTIke5YjzfNOb\nWWOtb9c1Jq7RMsxC63M9EfyPqyZ0L0Dz1+/7Qw12lcd3W3rejPz/Bi7wm7jD0GrrJ6bPGx822CZA\nLN337krT0yUFVJYj21RnWmMzzS6w99qXQNu/SHyldm8AUMQUVBtXDe+7VlA5p9cea/ou3jJ674CG\ngbaE6gaWfRCRQVXWt2/5pWH5Agtoxyu5fU2oK1qGoiO8qzl89IlVVcUf//EfU9c1TdPwV3/1V3z/\n+9/n5uaGv/mbv+EXv/gFn332Gf/yL//C6eldouUhCsW2gq34VrFd0D5Q9yE3wZvJ/ULyCRZ9GFJQ\n2CKJEKOU6ElB9GGf6Bt9om8MbImxL9fOY127hI3eLcMXPPVpUnwfJv27D3U1y13xzbuahP1D78VD\nyYNY6Gzlk/0JttZb2Fp7R0EzWG7VT697aY87FCQINC6ETCyd3sw1EwIat3rlIgRCa6av0J4gSWk3\nrysK5pwQofGl9d43GQ1ybUELZ82sZ8Zmsr2G6joAtN8oDu2Qjvvt01FAK4qCn/70p/T7faSUfOc7\n3+Hf//3f+fGPf8yf/dmf8fd///f88z//Mz/4wQ/4wQ9+8JpD6Cru+8H7sI2HfCiFSnkPQhG7fmjO\nupRYDk08Log+HhD/1gnxb41Q4wzhXAnMokVc2fCbrfLLLzq/4Ls1MQ9RlwsLgSziNrCF1/SuZ3I4\nDr/ZpGyfQ9fqm7K19p655jk3z5m9Dkuh2BQkEa46kwncbowXZbsc667IWVFswGzFgILKOW0sd459\nXVAPZusjoXnvjJzIWU6sn1k9s+4aGGhX0K5tL8vfFDwLFfnHjG5vj+7kqft9+2CbpkEpxdnZGT/+\n8Y/5t3/7NwC+973v8Sd/8ievCWihyJljwcymUd4VGV/HItrV9exTrrv/SSPEKLEc2kcD4m+dkPz+\nKaKIka1Gz1vEK1f1erNIw4R/ITv9ED3XPmALwcRfdzje9+Gb5p+L9+HL2L2fIafoi8mOgFPgMdvr\nD4uLPJT8htNiox5CzrRrbNh/r6XLh9aQITAbwwCw4cyGLHnM1Sb9UFhK732TcSKnaqBxakNvADDK\nNe2M378ZiMb7HuidM01rzR/90R/x3//93/zd3/0dv//7v8/FxQXPnll3jGfPnnFxcXHkDP8vOP7M\ntZD85Aw5nH36GlsNKs5sBaI4MzZzc2RsYY5GIFtrSlaNjym8J7BoA62tk8haYhauAOy8tT5StbJJ\nBnUHCIGH6crC466eLDxvd6G+qTFgn04s5nbURDdtTfhsDlkrw43Hp1b2YBaGfXXHs4+6nNabAbjB\npvLuko8OCJuvDZogKagYsNro2mxS0q3L0RuHfx0b89swqu6lTmqQTd819Oz3kdtyW+Gc7W4y95mn\nofHPjwN2paYwqsKf6+fA/9x5lXcCWhRF/Nd//Rez2Yw///M/56c//enO50IIxNEUqH9y5LNwMXhL\npH8/tEbaSZ0Uht7IUJxo20aGKDVU84hqIWw/j6iUsFmX70lGasyyxVxWqH5iXTZajfpyhf7lEv2q\nskkb29dZXPsmAOwHsu5rfz/2hWg9hLwjcB70Obu53X2UQwhy4U30Imd3dsnn7QAAIABJREFULD5f\n/JKtmGmw1X2W7rPwPPssue9Px+K5sJIeC1d0xQNfSQ+D2BQ2zqmpXWLIsIb7PpD8+pOrkSn8s89c\nC9QkpptIodu66ggvnYRA1Il+2CHBVhoL5yJsDXVN0EKA/BzLDPnz/tveq7y3LDAej/mLv/gL/uM/\n/oNnz57x8uVLnj9/zosXL3j69Ol9T7OH/ELxtmiPzGHGV7uA0tzQO9UMnypGTxSjp7Y25OIyYvkq\nZpFgaw6sQtn9HiSN5coubcoapMYsJfqqQr8s0ZclZtFimtflFvZZLj2FD95PhHDn9O8fmyh3kQe0\nftAG2E3DW2a9btCDleeYCV7f5prtd6yD6xbgDBbMuoB2jDv19G5FFK8j8zozD3Ae2MCKoxkNIxas\nGLB2pVn8b39jAU34or8D69NHD1ssplu4JHS3CX0qQ05/6we4G7981/PzKopB0MDOIW8ZD0EyXAd3\nz42jgHZ1dUWSJJyenlKWJf/6r//KP/3TP/GXf/mX/OhHP+If/uEf+NGPfsRf//Vf3/lHhynkBEID\nQFhVx3FoOfRONePnirNPJOcfK7KB5uYXCYnPbLsSRFH0MCeP1nJo+mprANCXFWbeYmYNetpg5u0b\ncGi+D62X3QdlOp+Fv93H/j+EYraAduLamF1LpHdFYc+4QpDrum2Em1FoAKiCFhp19rmmvGtXlC0Z\nxEZPpok24Jbv8GC2JUhmjEmQO0D4m0lBFXMxxlaRH4IpsbVLg34jLYVgBts57HWrPlFl6BrVDcIP\nyXNoPbYRNi76fjMXvb+o9xQIN/W76SigvXjxgu9973tordFa87d/+7f86Z/+KX/4h3/Id7/7XX74\nwx9u3DZej8Kb1TUAhLK0vZi0MPTGmpPnikefSZ5+W1KcaFtzQFswW17ZQhEPGoU01iWj1ah5i7is\nII9tPq5KWx1apd6QQ+vmcwothV3dwyHHWni9hR9yaCfAOfDIvQdbMOvqVPzxIT1JyJF5MAsBcpvi\n57YOxt8TP76u/u7dkAexENi8cWDMzFUfsCKnz7MG7HB1v5nkRc4BFsweAacgVmzrlK7YnaN+fYYG\nsK6xKLTEhwajYyKnB7Qz7DyELTh6MFsHvwvXxfG5cRTQ/uAP/oD//M//vPX++fk5P/nJT46eeEM7\n6GKCzg/MA9fdFGe2Xufgkeb0Q8Xjb7b0xppmLShnEYsLTdrrAtox0dONQWqrR1u9qWVrn/K/64bh\nQaMrcr3LheInkmf1x1hQM1ggK9mGbcHDFPIeuB46nu71h9EIh+iIri3U44bHYcZJYzacVtfPTJKQ\nU6NdptshS86YbKIN1vTJaEiQG/cOfw1mc03dMb4frnNLR1wkRLCpCWeRFudgXCYaEbmfheoND2Ze\ntDwEaKGK4i5VT8KGU+QEC2oeyLwufcXtIjL3m4/v3hX6xFpD0dI2JW2Eq3KvH0CytsA1v4goTmwF\n9XxkuPpZwvSrmNVNRLMW1g/zVi40DyYh1xcquN+U/IP2LXRI3de6i3efW8nbonDXC8XMGTBnW8X6\nfQXDh5tZBCK4XyIMf9PspMTdeWZBi7AZgJPENn8s5ba1re0PmBC3WToGGzFTkrBgREu6KbyiiOlR\nI+nR0kNSbI53/RDD4jj7rIP+PuzjvvdtjPuAsuvDeEhFocEobC65MJRMsqlibnw18zUWVDTbKBDf\nd/0kPee9G3mzO+7w2uPg+yvs/PPcxxQ7F8NIG905n19Ph+ndA9rYAZqsbYGMprQ95YMBra0E62nE\n/GVso/8lZH3D5FcJ0y9jVtcxzUq4/E9dWd/nROvGF74t/Y3fAX20Q+FeN3vaPh+qcDIe2Wlfi0JA\nC0XCFdtJ5C2c75r2XVNqFdbC3TvhKrsbN6mNAuH6ffcyEq5GQ8+myy4Ke1zXNpdZ5XLNGXMvQPMG\ngsplV/ZGgwErUlpqakrOqMgpyag4QXKG2fjdufm9o0zvAs8e0AH2W4G798//PrQ4hlbHLvB7JXsN\nZum4McOunjNsntPym3Kvc96QewtbF4S61+wrXXlAi9hy90vsZutD2jxYmuAcwB0GmffHoTVrWxXb\n58lXnr28P8laUE4j4jR2FdQFSW5YXsYsrzyHFrnipx7RvYm4YJsPzYdV7ero3oxCxbu33hRYsFiz\nnVThJA7JT9K79QQPp65ewoduectSuCu/a9onDiUgelZJLQa2R1gOQruFs3Ep8KFPgZgSxxbQ+n1b\nnWk0sm212s002x6OOAkBLYwWiNmWxR6wYsSChpolGQvG2HrpY+AZWw443o7tFocSqh1ChXfXGBS2\n7rwIv9eVDDznFG6Kfp57Ds2AcBuaCTYHE8ZOh24+/th7HlTB9XluquvLGOpJQ9ANOTQXr4sJnqs3\nSqjOeY5Zxrf0HgDNuXTUHsyMBbPm4eEwsrIip1bQrCJWVxFxCtVCUC9tFk0rcobWGJ+Isc8WYPzk\nkDw8C8Qh8lak0IIzwHJAoeUGjjuavgtQC//bg9mS234/75pD27MwBVhRs7BAFp2CcHoV3YLohjr5\nResXVGTzk3lAOxnD2amt0DSf28/CfGYHyANaaM3MqV1Vz9Ump5rNetuQMMagkY5Dg6dYMAuftf+/\nQwu7mykkpH2g1v3ePqtjV6kfgKapQTgDjqnc970PWuh64c9nK2xtk5iusfNGs+WivMSxz60o1Lv5\nFlowq+BehMkovLi+T/983OL3/kTOdeFYfgdmD6xoBNDWAq0i6pVgdQ1RYg0AuhVOJWezaG51aGGM\n6JBd1tlb9u5SYt6XupbEM9f7CV6zfXh3iRf3t+rcj/wk8mDW5RJCx8h3Tcc4tJFVVEdPwAiIHNDq\nBkRjF+QtBbKwoJXnthjw+AQePYInT6wurZuc8QD5eM/QmpkgecQ1KS0jFgxYcc4NmgZ4hkRTk7Hc\nAJoPEfNg5v+vC2heF7RP2X2MI+mqIzyHFoYPdsHMc2te5PTW6O4cCFUgBXYee3HTz+cZ27nsOcE6\n+B3BcQhEod+aDn4Titt6z+vwfnjg/nUD2mPnOLds7S6sMlvwYv3w+EztQIvqoSB0l17iLVAUQZxA\nnNkMfUkfoqFNmaBr0BWoyvZauOcvdufBQePBm5LnBt6X0v8u6t7//5+7N/mVJcnrfD9mPsZ0xjvl\nUJlZQEE9Wt0SEvtiw54VrBB/AxtAYo8KgZD4A1iU2LEsUK1oidKT+ANet/SeultNVVbeynvuPUNM\nPruZvYWZRVj4jYhzzs3MmzQ/yWQek4e7udnXfvPPTVoR7MJCsBvDOVSUD6yacWRz/Y9ymIzhZGrr\nNKxzyFJIYo5V3NVOsAwpQjOmoaGho0Y7HZMkJyIhQZChGdEyoUJRo2nR9GgUGnPP03vIPDy2qYWi\nrAcNn4DBczj+P4Ygse88+/5vGF8cDd47Zszad38eZEOXnkMbqQeyfdzpfvrmAe1DdxELY9ldZaAx\nlnP9RimU8b3OxVt1wiSMhyyNQ7pnML17zVjASMBYWl+2OrP58OvO3ncd2Qx92uy2TY78YfuPREPL\nlzs2LrOGLkAmFvARljMzndXtGM+RrbHP0Dvsmt1NPFQpDXXljyQrfo6ouGBF5sTMF0SklDxBEzv+\n7BdENLRUtJS0FK61TuXtuQ7PKfn3hkp0/34IKqGTs++Hc3af0eHQRjDs94l1ntPz3JRX4Htdq2Hr\n8R9ulmHbd8+hseKhG3YoRYTjsJ/eA6C5B5Jr6E0Q9vd1K76H5HVkoZjSsimBthHBjpnKGXx+5Jpj\nYCLgTNp2KmEWwSq12fpWBlYSZLqtCKSU7U2otPWWJvj3xVV9XTRYbEaA8KmCCtAShJszprNsuQkB\nPlQcB7v7PqnOg1q4xh95rR0jVxz7BFD0aBIEinQDaBEtE15ToSlRlCgEGoXaA2j+9T5Ri+DzIQ2B\nbPc694PZ8DsMPgu5u5DL8/5lofjsj32MpdevSXa9BkLd4L77HkaaHKN9v/+2Rc6P3EUnBmoDawNz\n8x7+OdSThceh4nGfD9q+yfAA8E2EBbQLAU8lPI/gPILbDO6M5dZkCmpsF2jXYwt99CC9f1TJ9oEp\n7nt4/2fSkJuQTiHtNx4PbsaOzca66Zt/hoMN6Rvi0GxVAmvp60moSclQpBQkrEkomHBFSsGKxAmi\n9rvNRlHvF2/IucBhn8R9x4eMAkOguo9DG7bQUTbsQ31X2HtAitj6qIWV1PxaG+oHnc/hwXveR+E5\n9ukb36b3B2jCWC7lzmzH4RslP7C+b9nqF4asr6d9uoShov4AJVhAOxfwQsB3JDyLYJpBHoHMQI2g\ndo6eHlR161xYfPEWP/H99f5HonAhhaKOAzGj2CRz9M/IW9+Mf17DbBB7RM59HNo7gZqgc5W9ek6o\nOSHmhBE1J3zBycYk8AUnvCRljODEfXdGwQnbiT50zYD9izoUOQ/Nv32gNhzbQyzp8HvDFPgpuyl9\n/OYBu7ozr6/z3Jz//jBDS7iOQs4tbMfIrwcvZR1/iO9P5FQGbg28BvL3xaHt04/dx9r77+77/hGx\n0xX2toAm4RMJH0WQOTGzN1ZSWhqovc6oBdm4RRyWwfN6v/9ogAZ7Ac070NIEhoChE2e4+ex5hkOR\n0zMa7wxmWw6t5xzBM+AZgmdMWBHTMOXKAdpLnvHfiTin5xk1T13wTo7dvffpvY4t5IfM0ZD2bRKH\nwGz4/ZBD8z6bXowcRj6Eqae8m5I/Z+BGs3l+w+u/776HtA/wvm1A+7cb279awesV3JVQttAd1g1F\nsSHJNEmmSV2fZJq+lbSNpAta34Vm6iE9dmI84LtSIDILVCKP3HEEF1PMkxRyMF0L8zVGRHBl4BZr\nFCmwhoFeYQsbhgpvz5l4ZffjHX4FkNC7pkjoSVFYc0NMR7Tp20c++kQqskiRRT1ZpMijnkRqGhXR\nqJhGRdSuV+YAEIsIROpaYntcCI5RWxHThF7n2ybQpPRk7r58j65p2oi2iGiWEe0ookkiuL6DxcpW\nNG9a3qXOqXFJEww13nG2p3DRAoY1MTk5CTMKcnokEsWIklMWmxAqW4s23hwfTxJ5H/qG4qfnijyY\nROwm17zP4BBuGD5uE94O4RqmgAqv1atx7lPyfx1682/bKPD/vrH9TQEvl/CmgGUD7eGwpyg2jKaK\n6VnH5LRnctozPespVzHFPGa9SCjmMYWW9N0jRcN7afjQBxMiciXvTlPEWYo4TZBnKWY8wuQpJjXo\nusG8WsJNBzeOM702FtQqA42yXuvKxbYaP2m8174Htcf6hRkyOiY0TKg3PcCanIKcgoyCnI74USOV\nSs1J2nCW1pymDadpzTRpmbc5iyZn0WbM2xxlMpQ6BGixFb3lCKKx7YmdK0vt3FsMaO9MuOsfJTCM\n6DihcQJgw4waVM6ygeUalgkshZ1eZr6C2wWsSmuI6R8LaHYrsNzyNgJAO2tmgSImdWLmc1oSGjIk\nmhEVvshx4yqA1uSbbLmHAW2fJdJfi++H+ioZvCfZ1TEO59AQ4EIXj5BCtwp/7K8n1AkKtnkLD+ml\n3x+9B0B7bftlA9cF3JT2uDnOoY1nPadPO86fN1w8bzl/0bC4Trl7lRFfGYwWNFXsnLHDh/5Ytjak\nQ7/fvhaRsIB2mSFfjGx7PsLIBN3GNnqkrtGLHtMUsNRWd7jUtpUGWsWmurYK9EQ7Vs7HA5rAkNIz\npeKCNecUnLPGILhjwi1TJIaOiGJHXLif0khxmjQ8GxU8HxW8GK85zyquyilX1YSknNIbSdEnhx+t\ncLrEeALRzDaRgFqDitxaCAuxhL29v5yeUyqeseYpBU9ZY3TKm9oKAAI7vMsKKCpYFrAqtpblR5Hh\n7QSWLZqGloISjSBBcULDMwQasQHeykUVRK4Miy2l5x14j9NQl7vvunzv5w5sFe9hYLwafD8kz535\n34Qi3tANI/QI0MF7HtAOAej7pW8e0P4/x6FVHaxbWDWwbuysO0BRohlNFadPWp5+3PDis4rnn1Zc\nv8xJUoPWkqaIWd1+k5zZPgUuIAVMYuRlRvTRGPnplOizGaYVqDcK9UYhFg1cl3CjoVJQ6W2rtb13\nrXfbRgcRtseLnBkdM2ouWPOcOc9ZYIDU+bT1DsweC/upVMxSC2ifTBd8NpvzfLxmmrQkUtFrybpP\nuamPJEAUEUQZRBNITiA+t2JnH1mjkems86t6mzvz9zei44ya56z5mDnfYYFWMaPGpoLvFKxqEEsw\nTWeBrGqgbg8Gph+nMIGlVQtoelpKrGtGSsMJBbjKntWmMvuICoEhocNXZm/IEA8e+VD5t8/C5wEN\ntiDjle/7wGwoeXhd1yGrZKi7VMF3Qs4NtqLpPr+690vvj0NTGlptdWe+HaAoNoxmPWdPW559p+aj\n75V88v2C0VRjjKAuY1a3KXEaPqSvA9j2gdngfI5Dk5cZ8iNbISr6/ilmoYESsygxdYN4VcLPa7uI\nes+RadtrDca4BpsUOTs6o3fRoRkyx6FdsuID7viYGwwCgQWzkoy7R+cvcxyaA7RPZwt+/eyGT6YL\nEqHRRrDuU67rMbE8Mv5e5IzGEJ9CemFfezDTleXUBpyZJbPh0M6oeM6KT7nj17hBa4msrZi5qgxv\nvHVTme34+/5R5EXO0B8rQqNp6OjR1KREnBCRc8Z8I2aOKTljvgNmLSkFk3sAbZ/VMvwsvLaQi1Xs\nrgHD2+O4D9RCVxLP4cHuXBzOy2GBk6Gz7LdH3zyg/WJheyEGLbZGk83C3jYpbWWndKQZTXumZx0n\nly2r24TxTJGPNHFqgkiWIb9xhP+IBEIKy2lF2B7s5NeANhhl2FZ4GpAAkUjIY8TU6tLkZY42LSIR\nCK0QRQO3BXy55m22/V10DPv8i7bddp5rIiKbxMhoxnTMTIVBMHa1jVJ6oneYdFJoUqkYxx2zpOE8\nrbjMSs4yq0sbRT1JpJB7781fr3RiZ2ItvzKzYWJJhhApxIkNUcoiC0AuisIEayV2hoGx06WdUWG0\nYKYLRt2ajBERIwQ5bwPAu5B/dttz+WVrtwXvH2Iz346oUET4knmeU/P1pXx6bw9yZiOkioFebfBw\nhXDjZ7ZTYGfdOOAyw3s9rD7Z3k0IfnL7t5tLCILCjfuN0WwqEe1MzcjGaYfXpt31mcc9Az86EuMC\n07YjdCjNwHuode8GIgqS7/kWR1Y5vtNaVCeo1hGLNwlvvshJMsuZvf485/XnOfM3CeUqcgYB2OWs\nCI4HD1aAGEWIcYwcx4iJPcaAKXt02WMKZUvZlf3+NaANpugxtzX6ZYkYxfQCzLxH/bxAX5XoRQ1N\nWCHpq+xcw2wKQYZRiQVk1xupaLRhra20m2lj04gZzRXn3DJlxWhg4TzGAWz7VkUsu4zX1YSZEzOL\nPuV/LS54uT7huh5TdCn9xsI5dBHATmrdgiqgX9j30wyZLhGT1hk/M0RyAm1rn0ep7HiXPaYSVMQs\nGHHFlBEtApuF9nPOec0JCybUZJjNPfrFGiqzH0OHOCbzVvPZbddMSd215dQUTOiJiemZsQLYBML7\n1pLSb6pmDSyRMtomr/Qtih3XGSSx9DrZt/SPx+benv8TkYtLdk26fpOg1aV1Uk5nlsSQxru91tC6\nNe37rg/+kz3Hu5TQk9PttMRtI//9wG/eH6DJGLKRDR7OXZ9lUJUuCV9le9WjekG1illcpySpwWho\nqoi7q4zrL3LuXqeUy4i+3ceJhW4c4SQWDtBi5HlqRcYL22NA3zSI2wZ906KNsYC2j5QFNH3TQG73\nCVP1mLVCv7RVosyixjShJ/tDPaP3kXXGsP5M3q9p5ILhBcTC9hEQaRoFq16QKRuA0BmBMT3XzLhh\nxpqchiTQSvn+kPLZjmGnI5atBbREapQR3DYjXhYnvCxmXNdj1l1Kr/d5qrtmtHVXES420PQImSEm\nDfKkQZ4K5GmOPBWYskHftuibBn3boJXBVB01CXNyrpghMbTEGCRfcsoVJ8yZUJOz69D6Vcd/GOs4\nVBHYsfKV2r0BQBGRU29cNXztgpya2mncSsZUjNBIB2h+3AOSwjIAWW7XUJbb1nY2iWXTWLeUpnFO\n2kP/vfs0pnv+L04gySEe2T7Jt0lau9pWRPZuMGkM4xGMc9dGFrzKyraqdtL722qEY5SimFJzQsUp\nFSdUjJy/5rcIaG6hRLF9CGOXgG86tTe+WkGysix1r6Cp6XtBuY6Yv0nRSlCXEcvbhPU8YXmTsrxJ\nKJeRy9cX6s+G1qHB4EnLocmLlOiDEdFHI6KPxqAN6pcVKpOWm656ez37WGQHaOamsVO57tHzFipl\nwfCmxcw7TB2asPfphB4zfh7Qpq7NrMjuAS2xzUSatoOVsDqzTsNaAbQsGbNkxJp8D4e2j/tg57h1\ngJbIiTUAdClfpg039YjbesRN4wDNDDm+ABC0AdGCKh231kCcIFKQZxC9gOhFRvQiQ68a1MvK3p8y\nmLWtvFQTM2fknBMiluQYJHdMuGPqOLQcQ8KuZ/k+T/2Hjr9gN+TAn4+dY0VETb5jzfQV2mN6ErrN\n65qcJSf4+gS7NQ7eliyIE8jGMJ7ZNTSZWaAoSxAV6BI6D7yhwv4+Du3A/0UJJGPIZpBNbd8W0Kys\ndGAUKOcMniYWyE5mcDqzfdNaP5ooBiOgGeYevP85WIt9zSVrnrDiCStOOJ5H8T2KnAmkOUymLgnf\nuQW1OLHgoXq7w0i54dCMFjRlxOo24eaXGU0lqYuYuoioS8+heRouzLcXpRACMY6Q5ynRhyPiX5kS\n/8oMY4x1kNUGUyr07eFMukYbKDq7PCqFuWsRX1aYzgIdpbJiazPUl4XiyWNIsE3t7YpbcAYisVya\nB7RMYhJNI+19dgYKDXc9QE3t4hBrEppNksR9Y7f3rmlVxKLN6I1g3VkDQB73lF1C0acUfULZJY5D\nC88ZhMt4EDMKZA3KiigizZCnGdGLnPhXMqLvZph5Y3WVynHLNxEGqEgQeDDLeMMUg6Qip2RE6bRV\n25xj4abyLhTeQ1jvIDQwWMDwHJoHs4IJObVz2ljvHPuca2F2XD/Wb81fz6HlYwtksws4OYekALEG\nvYJOgPTgJQbnOkZ7/k8It17HkM9gdAGjc2gWDsy05dZ8NSLPoZ3O4PIcLi5s2vModvaUHgqfh28f\nuO5/Ngk9UxouWPMBcz7kjot70vR8OxzayRmcX8Kpq8mnLGdGUVhAayTVWtBUktVtjIxARgatbL0A\nrYQ7Dh/EIfEpeGBOhybPHYf23Snx/3XijD0GXfTI2xYxig7PA7/AaoWZO3FPis05NkpsNVxE77qg\nvA7Nc2hnwBMQKUQSYgmpA7TUWBdHA4UyyN44m0eBzfclXAtV98NxE+wLW2l1hOqsn1kkDJEwSGFQ\nRqCMQBu5OX77fCGguUB0ZUAYhIoR6QnyVBC9yIm+m5H8pxP0dYPpNXrdI28aRCY3HFpLxIpsoywG\niSZFkaBdszo0D2Z+Id23uIcU3ksYJuRpF0B64o01U7hry5yI5DmzKWuecL2pCxqW0ts9b9ALD2gj\nmJzAyQWcPYVoBTqxYFYbq2N4izN7jMgZ/F+cQDKC7ATGFzB56gDKcWbtemtQS+Mth3ZxDs+fWlHT\ng1lZQ1wE4/j2/NpHnkO7YM0L5nzCNc9ZHP3NewA0R34y9z10LbSNBTGtLCjkCcxGoE8wZYxSCuVd\nHer7TO57uIEdVttNOgc6ptWYStnq6Mtuq+j3tTeVGZw31AMJ6A1mR4fyrmD1EPLA6K2kLu7TGHst\nRoKWoK1opnWH1tp95usc3OemESxcKZBJhEgNIomQKYjEYLTBtAbVGbpWW460faheJhC7NxEAGozC\nKAVtg6kbTNlgVi160aKXneV4B89EIV0wUkge9L1YGP7nV9lUDtzDzuvwG4J9VdV9dEDYfG3QmJ6c\nmgnFRtemkSiiTTMYq2RXPfQddI1NXtk10LsQOu0D+P18HILw0H3jGNfq/k/3oDvLjfW17X3FNqPY\nuBt5d6Sus6JmXVv/v7Z1ETHKPfdwTO9/FlavGNE66aIkY0W+GdV99B4Azd2I6i2AlWtInCNl66pA\n6daa6s8mNjFiM7HOkGFT6sgY7BMLPAiA/6ExWJHyrkV9WdnAcW3AQP+zNfrLCn3XYir/XyI4X5iH\nZl/Q9DcFaobd8BsH1iYGJe3uLBzYKgPtHLol9KUd181EehgJKZATQXQiiU8E0UwSnQhMq+mXCrVU\nqJXrj/gSWhr+9x4FfWBkUS8rcGKmXrSonxWoVzVm0WKa++7Dc0rhNYUW5nd9PiEX9vhzey6sYsSK\n2aailCKiYoRBbAobZzQ0ZLSkOzXclVYWvOoS4oV93lpZLqhYQ11AtwZds1tVLMyKMfRvPHLdngvr\nSqidNdooqz+rF9AVFkg9gHYuxfliaaUGo60j890C1mtr8OvDWM+HPYuWiDUZN0xJ6THAYlO5fj+n\n9h4AzU9cD2gOzFRnbzQytmWRzQkfjS33tihs2IqU0GuoWg4PRKi4DXck//9b7sA4vZfKbFkzU9qd\nRr+qUa8q9LzF1H7iDrMRhFV1fNjHQ5SuX4U8oA0KSpjIcmW9AzTjAK1bQ184QOseD2gRRJOI5CIi\neRaRPItJnkXoUtO9buled3QSdKPvyToc7sThRB4YSLRBlz3ipkUlJcYbXQpln8dVhV50mCOhcrvn\nDfVHoUPou+rR9nFm7Dn3oV9vi654Y4Evi+e9qnJqUlpmrCiYUDLeqT6ljLYA0hROveFe10GZvq5y\ngBbyroLtnA0tnvf4QnprdOvERP+6K22xo7awgKfdedrOgmvk/M9a56qx8mFntQM0c6Dtp46YNTm3\n9AisRfuWqfv0f+z9zXvk0DrLkRXG3pzn1qaZbZMMprk97jubB96HwVT3lbsLOTTv6BiKm1uR01Q9\n+ra1IlTZI29aC2iLzoLZonMcmmfbw3xRPvdTyxbMHqKj+Cqk2XJomk1qISNBucVrBBs5TNVBezyH\nRiSQE0l8GZN+lJJ9kpB/ktCvFHIsQQp0a5CL+wAmvP7QUDOYyKF3l/Y/AAAgAElEQVQbjNNj6pvG\niv/umeh5B/dyaKFo7h1EQ/D8KptOCIghsN3P+RnERk+mkTsVpYYtpt8UOQ6B0Jbga0GU2+O6sK4R\nbbsV7bRPKx968vvjMObTz+1DF+0AU5S74KZa67LhxU/jAc1xaEZvj3tlrbB14xIDDLNx3L9eWgdo\n/njFiPyeKm3vD9C049BUB00FZWzNveIUxmfWJH0+gaenVrz0YFa3llM7iBmh/mzIoYWAw4Yj07pF\nlBbYRGZ1HqZW0ChMo+2xITinBzSfcjjkzB4fRvQ48hxaAGZEDtCCW5TC6fNd+p0dncrDSUjHoV0m\nZB+njH4tY/TrGf1dbxnBRqOWiu7qIfUOPAgMF892UhsFFArdN5iiR1xHqFxaPWWjMLV2z+UhAOrv\n1Rs2Qg7gq3Jo+ybg/ef0IBYCmzcOnLIgo92InBOKjXEg5Oo2IKa1Ez0L51irXUSFc6jV4bMON/iE\n3Y33nnnrQcxbM2Vh/Ui1cno13xyz0Fo9NG1rUzXFsX29cfr1OvDhXDw+dh7QLJjlpChijs2D9y1y\nqn7XFSWOYBKBHlvXg1luAc0Y62m/rmC+tp7HR2loFIjsa+F2K7EVD0xrbNDy5vKODarn0HyedZ/N\n00+KcDfcN9m/DvKA1r399jch7UYCOZJEZxHJs4TsOxn5r43orjvUWtHd9ERfdoj0Ie4A+44H5Dhl\nM4hlEWCtoA6nhTCIyHI8/pEZI4LHtwdchD+PO97ua5uvmnsx6eEcxf5fi000QEg9MRkNmiUpLVPW\nnHO3iTYoGZPSEtMjTY/plQUXd87DFAJZKGF4PZri3oyXHtDUA2vW+iifr5ls/j6fGeZh9P6snPvI\ny9seuHInZhoDb+7se0V1NHeaJQ9YXq8lnH9W5FrusMhYNt2HYfj+YFoZz/6EmTh9rnWJzdjpXSrC\nWM0wdUt4rvdJh33KDr+nQWl00dPfdLQvJdFYQGTo73qanzd0rzv6hcI0Q87r672/JFWM8o5R1pPn\nPaO8I0sVVZ1S1Ql1nVDVCVWT0veh9/62xZl1dI9HEDundxFBXzmpqdq245K52HN8CLAf9t2wUrsX\nM3tiVszoSIhQTChQRIyo6Ild4E+8OT5MHrjCXGl+Hr9rPPFjKfQOCF8/XIf2LvQtAxqWEytquFtZ\nsUlpC2g3S5iv7Gdtd+S+Q91JMGhRYl1BJjGMEpgk1vBQ1q65sAyljwCanxgd2wcT7nz+2OeT8qm0\nfX6oUGfwTerZhnRsUQ2vY/eajNKooqe/kTRjQBp0ay2bzS8a2lcdaqHQG0D7Zu4vTRQn04bz09q2\ns4rppOVuMWa+mHC3GHM3j+h6Sd97FUOoLzNEOWRnkJ/blp3Zsqn1HTR3tq/vrH77MKCJA72ncBwO\nfTdcyPY4BDRvIKjJaUk3RoMJBQkdDRkVo024VE1OT3yEUwvnrb9GD3A+Z9n7mIuh1BT6oL39rL4u\n+nYBDeO8iCsHZspaM42xWUaXxSM4tNB6o604O4qsb9vp2LZJZlMyL9bb/6uPsdUDHRyarT7Ni6GZ\n6zt2q2XvZmg4rIf5uunQYgqBLbyOwfVohSoE3Q0gNaZVqEWHqjT9m57uuqefh4DGgfN+NUoTxcms\n4fnTghfP1nz4bMXFecWXr0/58koTRZKuy1kVETRhVMB2gcQZZKcweQHTD2wfjwTFl4b1l4C0UlWz\n5B5VqBi0Y2N4iCth57shoIXRAhHKZZbQTCiYsaIlZc2UFTOAIOZzH4XqkPB1yLW9Lw5t6ErljROh\ntfXrpW+fQ/Mi58YA4JQpPilf3boo/WMPIER6N2hRaqstzXI4n8GTUzidWEOElA7MbKjVYfKTIFSk\nKrZOnDm2MsoEy5GFYOYtof763ieH5mkIbvv0fLsL0yiBLhX9rXVAVsue7kqiO6z/2VqjV9pWmvsG\n789yaC1PLws++XDBdz+544NnayZjTSQjui5nuVbEkcRuMm9b8KLMcmWT53DyqeD0u5BOLKghDarZ\nRvPcT/tADQ7f8yE91S6ghdbMjIYxJROKTU41n/XWWz59eNVx8htxCG4hsL0PDs2P07CqezgmnhH5\nj8KheR2aB7NIbgFGOevOphjvwZO4PkR9AbF2HFoOFzN4fgGXp5Yz09qC2aqw/3n4AtnuKF4/p7E6\nM69D8/GVYXFgb42Ew2DyTdKQSwj//z6R06AKg24E/aJHxCASYd34XPmDTR2Tvef/eihNFSezmudP\nCj75eMFv/OoNn368IIoi+j5nVcx4faOJY68A99ewDa2Jc8gdh3b6GVx+33JsSNCtoFkYkqv7AG0I\nZPu4Un986Pt68P1t9trQmhnTc8kNCR0zVkwouOAW7aIfwvREhync3AdqmM3n72suhhyaZwLCa7jP\nsPR4en+AFglE7IKpY4GIXPqbXtuEir2CtsP0hoPJFQ/Svt3SiR+beSXszN0kqwtl+0PK7X0P37PN\nQ7eA4Xm+HhIYIjQxmig41ggXBiTpXa8YrszHXI/ZdKY1tjbC3nPtW9h7vuvHOex92NNOf1ihLoRA\nCJDCIKVxPdbiCc5qec89iu3lCLmdBrjjxz+yd+AopIsN9q41UqCNQRu3abs+Mp0rqmKBzgOZRBOh\nSOjIaBhRbQwGeiOghikQ3ydowX4x26tkQh9OX5TYSy+haLyHPE5scEMiIvs/+vWBn3zle3kgiVQi\nponN8ur7UWTTwqx7zLrDrHtYd/fECD6QeqePWxWQpnZS1R1cz60BYl3bjBjay/pwjHPZfd977tvq\ni9v3llg9WsOuCPTu9yMxjOkY0zKmZeL6joiSlJKUgoySlOotlv6YRfOxdIgb2XN/QmJzAqVBn2FL\n9rXWAXTTB5bpzTkFbZewXI24up4yHndEkWG5yvjfn5/zi1/OuL7NWBeSvh8qu7cg2TfQzKF4ZTPh\nIKzIOf83WL80VDc2qOK4hXMoTg8jBob3P9hchdgmNo2Tba+VdV718Zhdi+n7Dce2YrYRMyPUxjE3\npeWEJRFqY0AI23H92jdBoa4sbN5vMwv6BCu5lGw56bCi1ODMWeSwIgHXi9xyefq/7r+a93f3qUSc\nJMgnGfJJjnySIU5T9HWNuW7Q17UNq6yVrT3wVUk5sXJZgojs2BXN1ijgAU3Brm8ZHF/0/iGEoUi+\nSIQvQ+c9tsPJ/m5AEmFcYZCKc0rOKbmgpCZ2lZzGSGy9gIr0yJm+rh37kEI8PL+0ICZdKJsc215X\noEoQpY1yECqQXXfFtLZNWK5y3lzPiCND30tu7kZ8eXXGL6+mDtAiehUuit0xV7XVkZVXIJzOLB4J\n1r80FF9CfWujee4Ppji0Mdyn1zUW3GOXaSYb24wZ2ciF/pXQlLbX1om1I9kkiQQrZiZ0G24spd1Y\nQH2CyJIxAms5ff+ABm+LlTEWwMZsEpIyYsuxee7MMwYHKItsucgnOfJJjniSI2Z2jnffNqCJJEKe\nJMhnI6KPx0TfGSOf5qhflKi8ALAhR4sHOvPdR72zYMrCxjg2PWTF1m2jqG0pvQ2HpoMeHsahwbb8\nnEuLs1PS69iifxjZGo8tZ5Q8Z8kHLHnBkoKMV3RIbKbUt8vS7TMAHPrssXQPqAlpObJoDPEJRCe2\nKIpagUhs/KlRoBve1jdZLrPtEpbrEVFkaHvJap0yndbczb3LRsa69BxaGFazy6HVc3vK3hkAotRs\n3DXeDdDue6bh+07EjBMLYuOZzWc2ObGcWby0OmMXAeCV/pULwPYGgIyGlHaTsHtCQUrLitmmCIvX\nr71/8s9smCZ+xNZg5puvyh6C2WEFpsgjxFmGfDFGfjxBfjxBXB43iLx/Du15TvSpq5b00dhaIoXl\nzMRdi4gfXuTrKCnlsnQYqHvLkcWxdQHplOt7h19+UB9idfEcGWw5tdBtIHSu/eog4kXOMypesOIT\nbvmUW5aMiDB0xJTk3B6MKb3v9WPokGFheN7IcmjR2IJZcgnxhQU5HJiZOtDGh2BmW9elLFeGrrNg\n9uZ6RJZ1lFVKXSeUdUpVy4BDM4PmOLS5C0X0nJp3rHWtq+zlHL/nULTeZwQxe77rSOI4tFGQnPHC\nZpkR0oqeXQO1XYreYdaDmS+8csKSExdVEB57MKvJKZgcu5FvkEIOzevLPKDN2GRZZsSuhOO5tQPk\nODT5YoT8bEb0qyeID8aHv8/71qGdJMhnOdF3JsS/PiP67gyMgdqm9NFfVvdYHR9BvQvfaNzg7VSu\ncYNo/HGoQ7tPU+wBLRSVhp+H/VcjiXEcWsUzlnzCHd/jDbdMNtkI7piSvpVp4uu/li3dcz4RiJzx\nqQWz9LlFE3rLmam1e735ESGotV1C10tWRYoQyjbUJtzJ9gKzkwNsl/pm62fmDQCbzOpma5O4vxjR\nYzamPd/1Iud4ajPNnj21omaYFiiKNxxaT4zf1gVmE+M5Zb0BtGe8JkLtgFn0Dfh13U+he0YY8+wB\nbQqcAidYEbTFglnONiTrwJmzCHGWIp7b+rfyN86IPjlm4X0PgPbh91382bMYc15hogxTJZjXidV6\nvCzRb1zOq0qxTa74UPIWlaEM72ZsmFBwEwoStjB3mnf7gI3+Q8bOShXZY4TV+2i17fV9fnIDioV9\nWJl0zR6bVtu8Xz5IvtGYTtAQsybjjjFXzBjTsmDENVMWjChdcbr99JDrug/AH0vaBS/XoAqQS+hT\nUEv7WldY/w/tpFOJzCJkHiGzGJHZwGvd9OhaohuBblwyiT0UxZok06SZJsmU6zVdK+ka29pG0jXD\ntO0PoV1ReP+GF24kQ9HXWGmhc0WPy8pmb20rK0E0rQ3gdoHl3vs/jALw4mTFiDVTcmoSuk01KauW\nqDhl4UKoEtSmkkGMIg6e4v2bXBxpskSRJT1Z7Pqkp+0jmi52zR53KsxqEoYJNmwdzb3OrGFrOPOp\njg7L+6bT1mB422KuGvRJuc0wc+jaj376NdAn/8X6Y3VjQX0W08iIZiFofgbdVYf6vED9orQpl9cd\n5mAY0iHyjpWhRSVnq9Nq2dVrHfKNCa1t7gHJ1Hpnxtm2F04h41P0+DQqj6g5KGKJnMbIswR56tpZ\ngln1qHm3TWWkO1vSj5Q5I644IcLQu8R3v+SMa6asNoVPDj3sY9d2zGdtjwj1EDIaTAO6hN5vAsrq\n0PqFNQxop3eMBNFEEp9GxGcJ0WlCfJagG42aC/oF9AtNPxe7iQ0CimLD2NVvnZz2TE87pmcd5Spm\nPU9YLxLW85hCC/ruEPAfonC+BIkP3hozvxkOmjEWsOoG4gqET5tdu+SHLrTvSFX3sEhx7HKD9cSb\nRJAe0HyR44YRtQuRsscpu+4cx0EtjjTTvOFs0nA6rjmdNJxNalZVyrzIWRQ58zJDF4JOeXWLX1v+\nvH5cvF9mjeXeFq5549mR9V5rm0Lqqrb6byUx18ejhr55QPvPFtBKAysTsTQSFtDODV3foq9q9Jva\nWjvXPfTvwqF5md1XRZpgB7hwDXZ1Wp5F9opM/x5sdxsNMnFlvCbbJiObRLErbJUdo9lUv3noFccC\nOYuJnmZEz3Oi57ZAiL5uka9q+qvaZqGoFLoUlCTMGROh6ZEUpFSk3DDjhilL8kHhk4eO4T7/IX/8\nFcTVsP4mAMpya7qy76nCAp7RLqGkIL6MSF/EpC9S0ucpqlS0r0C+ss9D1wq12v93UawZzXrOnrac\nP2+4eN5w8aJhcZ1y+yojudKbUoiUjwW0cK74DTAKPgubt3b7GEq9BbSmAVmCju28UQ1UhU1y2rVH\n4om3gBZaMxsywhLFIyoXVRCzZsaaHolAk9JsQPlh8ZNxpJmNWp6eFDw/K3h+vubF2Zrr5ZhX8ylX\nsUIbQdUklM2QOwvPH4JZgV1rfk3eD2im0baCWlqjdQQFiNNvOR/ad/6ztQYu15DeSswdtEvN+lbR\n3zWYZYdZdtsc8u8EaN6qElRFomEjem4SJO4DtNDVIXw40lrkohEkU+tinp06ETRhp5SXEI9b94lE\nTGOiJxnxxyPizybEn45tCupU2uSTRY++tc6SlkMzDsyyHf3ZihEFOd0G0N6FqxouzK9qzNBgWise\neGumLCzI6cZxbzaFs035LUkuI7KPEvJPE/LPMvplj8wMGIWue8uhHaA4sRza6ZOWZx/XvPis5MWn\nJdcvR8SpRmtBXUQsb4+5tewjL2qGm1/CLpcWNp/EwM8jEQBaC8aVmqsN6M4mTexql5zxfg4tBDNf\nUWpEtanMPqJyq0Eh8CVaJogdznJf9MAuJVIzzVuenJR8/GTJZ8/mfPpszsubE9JYobWgaBJu1/nm\nCt8OEfTg7pX/fjNo2PUGOMKhNS7Jp2kQlcDcKsT4OPPw3kTOm1f2wtu5oZgrxM96+s8bWwCj1ZjO\n+p+Z/rEipwe0MVbxeAFcsnWrCM3D/tz+AXslJuxwZt5KKRMbP5POIDu35byi1BkYHGfW+Wo2j7hi\nx6HJpxnxd8Yk35uSfH9GP41d3QOXfDK1lZoqkg1ndsuYBIUionNpZHy/HY/HgNpQRxTSVxA5dQui\nt9ZM5XSQxo2tcS0QOS2gxeS/ljL+fkZ/Y9M06bqnX0TIV4fHOIoNo5ni7GnLs+9UfPy9gk+/v2Y0\nVWgDjavrmqTv4t845OYzdutLhLq10FrugMNopyNrbP2HyID0STgrUK6mxj2A1pBtDAC+fMoZ842Y\nOabkjDkJPcJxZi1jCgdub4cdHaYNh3Za8p0nC7734S3f/+iaad5hDJRNwu16RBoPOb4QMFve1lfv\nE8uPcGi1Bt1hShC3CtLWJrY8du1HP/0aaPbEyrx1IcmjhqSVyAXwyqB+9tWzvQoEUgqkEERSIoVE\nyhhjJNpItBa2upwGvUmr7f1mfLYMv1gC7gwXdpEmiFGGmOSI6QTiFBMXGJmBTjBdhBGPAzSkQCQS\nOYoQTpcWXWbo2xY5sxEUIpU2RAZrFGjeelQDvY5wx2Y4UQ4vFClsqbVIYAOnXIFibUBj7LgB2gjM\no0DNGWMe8BMhIkQikLkgmkriUwtuGGMLtIwFMhUctHkAQhqSRJONFKNpz+ys4/SyZXWbMJ71ZCNF\nkmqEfBduMwSrMNA6BLNwsYa58xyHphTbZImhI3Drvu+f0f6IFR/WNHSa9S4digiJIaPdaM1yl4zI\nZsS1vmoajUHja5YdGg0pDUmsGKU901HH2aTm8qTidj1iNmoZZT1prJAi9Nn0a2sfQL2jlb3TmK6H\nwmB2xvYwfeOA9vl/s06C8y8Trn+esriKKRcRXfNYa9N+klIxyUrG6S3jtGWSLRmnr+lUR9muKJs1\nRbuibBuq1u+23rQ8hk2gr38YfqIZZKqIpi3RRUV8URBdZIg0Rd2u6W8rlGxRfY8qzT2+TLtkOltv\nUr1pkF+UdJkEA/3nJf3nJfpNg171mO4YRxGBcIAsnO+PSKyoRxP0XpfxNmWiZxIpxrJnEvWMo54I\nQ6ljShVT6JhSJZQ6RhlvzdrcxcNv+NhYaNCFprvtaV62yJENsuzniubnLe1VHySU3E+qE5TrmPmb\nlDdfjEgzjTFw9fmI15+PmL/JKFcxffcuLkGhf6Gfs2HixBDwvBjlQSrUQw7P46UBeDurrBl8vv/e\nexIaRqw5IUUhEOS0FJzQkxDTMWMJQEPqMsBKOiJaIvoD4NApybrKeLOc8MV1S5ZojIn4/M0pn1+f\n82YxZVXlziDAYBxCXezQN/Cxc8b/Zp9L0n56EKAppfjt3/5tPv74Y/7xH/+R29tb/uAP/oCf//zn\nfPbZZ/zDP/wDZ2dne3/7i//HAtrqJuL2ZcL8VUy5sKb0r4MiqZikBRfThsvJgotpzOU0oWo1t0XH\nzbrntuhRureFozaTxwPazJ3J+5dtA2dl0pNMG9LLivTFmuRFhBwltKM1XVTRqoa2VGjxOP6F3liL\n5nWDSKVlZiqFuqrpv6hQrxurUzwWAua98RmD8C23ehpTAoUDs8OxcrnsOYtrLuKay6TiIq7JpOam\nG3Hb59x09tnVOkbt6F3eURTdQza7h6K7Ucjc6qB0BWqtaF4OE0ruJ9VLqlXE/DolSa0BoK4i7q4y\n3nyRc/c6pVjG7+CyAVvldhibe0yH5q3pYfKCQAQF3nbg9pZ6XxzZNzjGYVsRdLQxAChScpqN20ZM\n50xGFTWpqy6fUZGhyekPhMr1SrKqM66XE9LYoE1M1eRczSd8cTPl9WLKssxo+3AcQrEydOW43whx\nnMIxfIC4/JBT/u3f/i2/+Zu/yWplzUw//OEP+d3f/V3+5E/+hL/8y7/khz/8IT/84Q/3/vbz/2YV\nh9UyYn0TsbqJKecRff31cGiR0Eyygstpz0dnPR+d93x43rOuJS/vYuIoRumYdeN1IH7yZGwd/2Ab\nwlThJ1uU9iTTluyiZPRBRP6pIBrHVHJNrUooW9Rdz2M3fl8RnDeu0pHTmel5i7pp0Te20C73cWik\nFsjkCYgTEBMwS9BhjGl9cA7ksuc0rnmRrvgoW/FhumYc9bxsZozaEwBqnTAXAr4hDg0FqtD0N5Zz\n0bWhn2t0peluOrqbziaUrA+Pheoth7Z4k2GUoC6tAWA1j1nepCxuUspl8g4cWghG4eshJxJaOfcl\nUTSDc3i1hgeAsEDyvhKJ+8daOUDbWjMnzoGnI6YnoSOnIqajJmfJFMkUg3FGpEOAFlkObWFQOqZs\ncm5XU+ZFxs0q52aVs6xyuj609h7y7RyKpY+hIZiFevD9dC+gffHFF/zkJz/hz//8z/mbv/kbAH78\n4x/z05/+FIA/+qM/4nd+53cOA5rj0Lpa0BSSppQ0hfyaRc6Cy8maj87X/Ooz2+ZlQhJNUXpK2Uy5\nWU/ZFjkJRU7PoXlHwG1hVpn2JLOG/DJi/KFk/KkhnkVIVUJVoecNXa4er5vpDXrlKraXCnHbon5Z\nWzeNorcWzlId59CILIcmJhbM5IXtdQTSWdFMxTGdQyZ7zuKKF+mKz/I7fjW/Yxp15NK6HVQ65q4f\nuzOEz+trAjPAaGNFTnp0ZejvFO2XPaaznJsule2PcGh9LyhXMUZ7MEu4/qWiqSLqwrUypm/fRSoY\nchqh8SQck1CM9CC4x8l2A4heUhg6hXtdmweEw+vEcmhyA2YFipyWKUvHmZXueEVFjqTFoF2mlsNx\nn72SrKoMbSILZmvFL297qjaiqGOKJqKsI8eh+XsPddO+7kY4hu+63sMN5P55dy+g/fEf/zF/9Vd/\nxXK53Lx3dXXF8+fPAXj+/DlXV1cHf/8Lx6FpLawFXwvrZH+Px+9DKZKKcVZwMb3lo/M3/Oqza/7T\nR9dcr0b06gnr5ik3a0UWeyvgPpHTYMFszVbhayygTVuyC8HohWH6aU9yGkFRo+c13VVLlPcgHrfA\nTadhbVCVgtvW5niKBCiD0cZGSyhzT9C0A2bpODR5AeIM66Xfgaisbs0cHudM9pxFNS/SNZ/ld/zG\n+A2ncYPBcWb9mC9ljxSwq8P4esRNcCJnqTecmYh6hJQY48fA5cs74qelOkm1FjRVhLw1yMggI+dV\nowVaufYuRs4dDmkIYG/dzZF+qAvy0oLfQL1LCOyC52HqSdAIWiQCiUSQOf2v58ymrHjCK5d+yNAS\nUZITH0kS2amIdR1TtTm3UhAJQSQFyhi0NijXtA7HZWg0CTmzdxp43kUiOApo//RP/8SzZ8/4rd/6\nLf7lX/5l73dsEr7Di6Zc/N/Bq89ce0cSkdUd+VAkEWHSlj6qaSkpVcaqjVlUgmUtKFpB3UGrBGqz\nsL2VyTv8ldjBqhnqP4wLv1GlRK0E/Z0BJemXLWrdouv+iJuJsM85jlyCumh7DK4smbIJLmtlTfs7\nO3/ICQwXRrBANmlkG3sPJlRKOzFHCvvfURT0Ep12tGlNlZUU0ZilGUEPa5VSqphGS6c7Y3Adg/t8\nS/QKrzU8Hn5PgHG3sPO9oZhyfDIbY8VO1X+VTTJckKEF2XNaoW4rvJ5D/3loMfpjzdscnQxeP+C+\nES6pZxQ0awCoSanJNn3nwp9ienJqJhT0IkbFKTpJUEmKim1vkPQd9J2xfqEd1ncuFk5b4/pY2LnV\nCed25o47w7Y+4PAeDhkQ9h2HHO7/Bv7t3jE5Cmj/+q//yo9//GN+8pOfUNc1y+WSP/zDP+T58+e8\nevWKFy9e8OWXX/Ls2bMjZ/mdoxfwKJKRDUEKwpFUrigE3HSClytbwlMpWJQpP7s+49ViyqLMaLow\nEWMFrNjK+gaYu/cqvKe3rjXdXNG86olyu/iiiaT8WUf1sqe9UahCD+JPB7t4lsA4g3Fqi7SMU8cQ\nNrYVrleKbaB82ODtyQ+b0C5TgIlBCxA1mDnopTMOOMfFKII8g1EKo2zTahMxN/DKQG7AtIJJX/Kz\n5pyX7YybfkShYnd74SIb3u9Drtkc+e4+xe+76Fy+CkVYi3HGtvBNyo4jqPHHoSgY9iGA38fF+vsN\nNzLN26Xm7jvH7ibgubCKnBVTIlqs04OkYoRBbAobZ6KlyWe00xOayYhmOqGZnKCIYd1B0dp+3UHf\nQRbDNAWXcJFJYjfodQ9Fb/u1q7+rQvehcNMfPv99vmr+uA/a94DvstVF/nTviBwFtL/4i7/gL/7i\nL+zPf/pT/vqv/5q///u/50/+5E/40Y9+xJ/+6Z/yox/9iN/7vd87dpqvj2RsHV2DUCSdQSnhpoVk\nbVnhojIUdcSrxZSr5YRFldP0/lZ7NtXHNwAHVtxcYzk1a9HSjaFbaJorBQJUbYhGguaVon7V090q\n+jIUDQeTXEgLaLMRnLnK8Gdju3vdFTAv2FSIL711dbjjev+moeVLuQVWOElGgyjArB3IlWyCfyNp\na57OJnAytsViTiY0jWRRG64qg6gNdQOjuuBVO+VVO+W2yylVjD4KMoLd6w1jY0NFuP/uvvsLrYDD\n7BnD/psip5P0ubuET05Y2PGkYDtf/H3t4yoeCmohoPnX3qAQZuC9j3Y5Wq8jq8iQTDcA50vlAeTU\npLTMWFPkUJ6MKC4l5mJCd3GJMgnclnBT2XCtXtuNN5UwS10xA0AAACAASURBVOFyBJdjuBhZkLup\nbItrN5fVANDCeTPUtYXhZMO50QbNbyTH6VF+aF60/LM/+zN+//d/n7/7u7/buG28FxIO0NJtKJJK\nIseh2djnooSbyOZ2XJQ589IG0jZ9CGBhFIEvZlIHzYKcqg3d3E46VWu6O41MBd1c0c013UKhSj3Q\ndQUTXAjIUgtolzN4fgrPTiygjVILNEpbDm3z2zCKwevzhrs4bAEN+7lpnM7M3YNx4qfRdiPIUwtm\nl6e2AtaTU+pVxHzu7r6Bu0aQFivmfc5cjVj0OaWOXYmHQyLkMNg/CT4LxU/F/fcXLuL3yZ3BhkNj\nAuIUOHVW44VVbxgDwhta9olN+8DrPu5qaD0dirj3uTuE4qsdc4Pe6Mk01ppZkZNRk9HstFhoFvmI\n+PQM8zSi+3BC9cEl6AzGCzc/lQUzoSGTcJLC0wl8eAIfnLiat0tb0FsbO5elB+Yhx+3HaRhKFsbJ\nxkELE0CGrjOH6cGA9oMf/IAf/OAHAFxcXPDP//zPD/3p10cyhih3sZVnMLpEJSlFZ9OyFz1c95B3\n0PeKpoupu4imtylPtoAWip4hR7GbnFE30DmXge5OIHNlc/I1Bt0YVG2sO4EO9UOweXAhh/bkBD48\nh48v7PcjaXe+qrWcmiAQOf0D9YrjEMzcAzbKiZgezAowLt+YCe8l4NBOxnB5Ah9cwgeXNNcRc2zC\nhzsBeSuQZU6jYxodU+uYWkcuwmJotQrv1V+zDyULuZNQEf6Q+xue/30Bmxc5J1gwuwROtmC2mS9D\nRf1QF+TpvusORWzPmYZ6o4eI3MNxEg7EImzcwNYAMGXNKQsXOWBFzomoifMzOOnonkVUH0+Qn12C\nyTcFjCgauHW6vVRYDu3JBD46he9ewiS1elkPZncS5JDzDK9zuPl50T5hF+R8zCxsRfH7daTfcqHh\nYzS8eBHEVk4hP4PxJTrOKbWmrDUUQduEmgwpTM54nDxw9cv7v7u95kChLyJEmiImOZyPEc9miI/O\nwGhM02BWJeYuhcTnqwo5mHDBhzu4/w8fD+nu89jcj6TlFCcjOJtaDu3FJY0xNKVieefEg1ZDmRw4\nyaE/GF5zWFLOix1eBBcIJAiJsPXx7G+NwRi7CIwR7q/eM4cmJHZhjUHMgHMQ59sxFiWYMCFhCGSe\nSw31RQ/RoX0d97h7Hgu9Ed2G47TUE5OJFi1WpHRMRcF5vKIflTSnPeWlJP0gJ/7kBKlHmLKBRQnX\nCSZ1nGMqEJMYzjN4PkV8fAInOdQtZuW+mwkQoXokpHC8hoAWApvvDVsDXuird5j+nQJauIsHLTqH\n7AQmY8v6nspdycWnQPsqxq53JeHEKLFtIk4ZkZMrxaheMFq3jBa3GK2o1kvqakHVLKlURY3VgOwq\nin3ziuKHWL+GnCJ2XOoeVjXcrCF1ud2v53C9tIVkqtbuyI+mfdcc6pq2YlOcaZKRIhl1VhU6UshI\n0lUdXd3TVz1dpemqYy4r+6xi4bW8o87NGBBu8Zjacbwxm2SEJix8s08XGLErLg45rvAa3z+pJKXJ\nTygyWGQ5cX5GP6pZPfuIbjQm6jsmt29QP/ufjLqU/uWS7npBv1zS1xUdEDcNyWpBfG1IphVxfIuc\nJHSfL+mvlnTzJX1V0ml95C73GUNC/WGMBbCEbSJIP/b3z89/x4DmnV+DxI3xqQW0sQO082i7CWm2\nvrHfBqARgcxAjEDaJqKMEYrzvue8nnNe3HC+UBjdcbduuata7toWVEu9Y60aWtEGIuS9NNDtKGEB\nbVlDvAYktArmK7hZ2p24ajmWZPAw7btm2LXW2WuOc0N+1jM+N4zONaOznigVVHcqaNrmzDx6m8M4\nSn8doRj3WHKLzDQgKmcIiLDGAK9XDXPqDTlpH7YUArv/vgf5h1g/vxlSSUozPaE4yYlOzjGnLfWs\npx1PaUdToq5lcvOapCppakn1qqV+3VItWuqmpccQtzX5SjN6U5LHt4xUSpRLqi9b6quWat5SVS39\nUUDzc6UbvBe590JO3+u0h0WHDtO/c0AbJG2MJpBNLYd2msKF3CanbdnmkPtWODRplfJyAtEU5AwR\njxkz57xf8EGz4MP1ghfzBUa3fLmS5KWEVlKriDlywKGF+qehxejohQTNLXzPoS1rq6frlNV3rEtb\nt/SdObQQzMLX7L3mONOMTg2zF5rZBz2zF4JkBMsvDasvDUIa+tYgl8ZmNT96f6GJH7biXhjg/RgK\n/BNNZTk0BNZa7BaV2cehhSJSCGb+nEOO+lvk0KY5xWWEeSrpnkrKC0mkOmTfI/uOye1rZq9/SVsY\n1neS1a2EpaRvIjCSuGnIlxXTWDFTmlmpiVPD6layvpOIeURfSWoT6kVD8mMRbpx+3EPfv9DKOYyP\nPU7/jgHN5zibYYssnFmDQJbBOLfKyfMIRnrLmS3Zip/vnZzZPxpDdArROSKeMKLhvL/lw3rBd4sv\n+GzxS4yuyddjTDWhbsbc9WMwY7YPe9e3aHsc+nQdo1CvEwAalQMzZ4hoWmsRqBvbvhKHBrvg9raD\naJxp8jOYPjecf2o4/y5kE0MyEggpbNm5hT0+fm+htSzUafn/fZcJYKwxRTiHa+PdNIYipz//0Ljh\nS7SF17GPo/4WAW0yxlyO6T6YUH08JnueMb59w+TumvHtG8Z3bxjfXqNWHXExxhQT+nJMXY+BMXHb\nkK8KpqrkrCw5nxeksSIpxohiTF9MqOsxQo85nO9pOKf3+aD5PoyL/T8e0DyH5hS0PLHJ3bIYJjGc\nxpZDG2s751bu698ah+ZETjmxoUjRBSKeMeKGi77ng3rOr6y/4PvR/0CrClYXVOUli/aCkRIIPKCF\nu1h4Iw9VIg9dCSJ7qqq3YmbRWCNBJCyAKVfoZeMM+Vjy1xoqw/37YW9FztGpYvZCc/6Z4tn3Nfmp\nQUiJaiPqhWR9FSHkoR0+vMfQXSS8lncFjEDk3IQjKSzbX/G22DPk0HJ2uUXFNqYxXMTfjsipk4Rm\nekJ3eUn14QXyu5fEH024/Nn/JKkrZv1LJjevufj5/0Lf1aAu6PtLGnXBuhdgxsRNTa4WzMobzuc3\nPI1uyUWLUBeo/pKmv2CtQOqcw4AWzpeQm93XhyqEhz3bbxzQ4mcuol8ZTL9t9MbG6B2lPX4+WrlY\nxx56aT2YVeMWJtZ1wYRZaIeD4haCCHcG2Ey8nSpR4Y4RijfD8w52DiFsM8703faIqkFEFdKsQdeI\n9QRRKUQrEMqnEA+u40H6oH2TINzt3PvGuDCrcGKELfyfISDdRw9XwgsMCIMQGiE1Qiqk1KRSMJI9\nJ1LQSYmRglpKeiPokbYZ6cJ89pxXWo8eGRtkbIhcr3s2TSmB7jmSty7U7dTsWpn8j2IscME2msD7\nTw3nagDIInJvCfdohH0mvipZ2B5BsdTEkSaKbB9LjRTQa0mvgqYjNBFaOE5SjEBOiMSMscpp2oiu\nMOhlC7cF8q4kIiUhIyNlRMaEnJEqyNWapFkTs0ayRtAiGCE2DulDoIL9IvdD5le4aYXz+siYPGjk\nvgKN/osNgjWVRq179Fqh1gq9Vpji0Ozyfif/f3vv8mPZddd9f9a+n1vdu8uX9uM4wU4wiWJLkfKM\nXgkswwASkDKBQQbAlAEM+QeSAAMUJKZIEQNgihBYihQjQBETRJQXiATvi43bTndXV9W57/ta6xms\nvc5ZZ/epU1Xurra7nvpKW3vXqXP2de3v+t1/KSuhC5UHcwEjz+STISCR8GAKpwVMNRQR6AHLGbUV\neS2aGXVRFLEhP+1GJZfNTN02+tqZu3L22cS12dr5ag7SiImajKyYMPRL7uGRqB662kerivemt7mX\n3eK0uEVW30Jz4OzPXc4yJrXFc5dw2/cSVgfSuu1NA+XJSBR1IchHgul9j7CrQUCvD+V7NeE9ye6o\npldInhM1qR8w09FyIWKu3QllqVp6AcSDmqgvifuSqF8T9yVlKiingmImKGdQzKA+syiCDRFwK866\nE1vM0gwCq/YeWB1njv1QYDQLP4QgNGs/NOOlLpvJuGyWyxFaHNX0k5J+p2SQlPSTksBXzPLYLFnM\nNI+YZQGy0iaF6SSFzgR8Dz3LqO5OyO6XTIceQdpDy318kiaZ3Vv0AfWRdEmJMB3eUzoIdvFQDNlj\nwjYpXSpi9Iop4HHsh27jYrt8wiW4O18yhCbHNfVxRX1cgl+hKw0bCa1kGcjYhAFUHqQCRmKZFBsp\nGJZmmdEiNLeNnX0JAhAJpuxOUxgRzbIwYtrMlDb2xZbptovPMr8vZylCN5H7yhqTFVrPyfwpQ1Fx\nT/lQd8mLPbTW3Etvcz+9xag8IJP7mD4Idp82e2GTCti2I9n1WZLXWet1+7waI3adQzYWTB8IhOdT\nF4Ksq4nuK6L7Bb1RRlTkxF7O1A851l2OVRdfdanwmGsbm+Sq5Ro/1MR9SfdA0juo6R1IegeSbCiY\nHwvmxx5z4VGXgjo/6+zs/qrW39ZA7UpjsCpF2wm4RWYuoYUJRF0IOxB1QFZQpVCmZq2V+ewSiEPJ\nTq/gYCtdLHEoOZ70mkU3JYAEsgZmpUlpshkAoxnV0ZT8YcVs6EPapa73CImR+AtC85H0mGPkPIlq\nCK1svjdlwJQtMnpUxKjFxP+448jJ3qDbLGeXPYKnSGj1cUX5YY7wBbrSqKnc8LpaQklZDpbMENi8\nUedqzHYgjJljJpaEpmIMObi5go0HSoRG5BZ98LZBbGFU2QmLh6BtUK51TnRY3lC/OS/7wBoXq24I\nTXrNdonWoZHQZAmVT1b0GIb7oH1Oi1sMywOG5S0yeQut91kmzbPc75lox0LZl819oeBR5wLOdltl\nbePJ2nqMhOY1rU01+ViQxYr9saQ3ztkdz9jPp+x7U8ZBzIfS9CGt8JlKO5Bdsjbk6wWaqC/p36rZ\nviPN8lLN9J5H2PXMcCkgn5xl17H7tYTmeptth2/b89WaBloS/UK6a5OaMBJZ2IF4AMnAhB7JAvKJ\n0Zc/RitEgCSs2e7lPLc7487+hDsHE7pRxYcnO8SBWtQz84RnKmDMKvBT4xia5+heQD2ekE1KGPvG\nqC/3iUmIKAmbFjw95kSUzV8RFSEZXSrCpgFyt1l6lCsSWtt+eFlYFb+PaYBku69v/sWVwqqc1U8L\nQ2alRs5q6oebZiNLaI1kRmZOtRKGS+pmHQGeD2XsLAloa9+w0oatRgsm+LUDYgBiF7w9FrY11ZCn\nSJv77xaD7GEcFG5Khks6jcoprKSWooVHqjJ0VZKVHiOvxz3fAx2RyQOy+haZPCCXB8ABSzJzJcRN\naMdCWQKH5QA6b1C5pOZ66Fw8GWKrcmAkqEuPfKyZPYA8qOmVkrAs2C1n/K9yyGfEkFM/wcckVs90\nxEPhDuRVO40XaOJBTe+WIbODV2v2X5UkW7ohT0E+0cwil8TbcO+RJTZrZrAqp32xBMvekvZZuWYI\na0tSxn7mB0Yqiwemc1h3D6qMRSvEuoDq8q9iEtbs9HKe25nxyuGQzz0/ZJCUxKFGa5+0TDidSnxP\nLAmtlst0pkhQ5RkUJXXukec9AunRIWGLCVtMFirnFhNm9JmyRUFESocJA1L6DcnF1M1ar4xD93l9\nHJXTEtoOpqPb4NxfXCmshOYPAkNmk5r6uMSLN9lsrFTm5m+J5Uc2eFYAhEbF1FtAbBwC2lantbOs\nK601N8kbgLcD3gGLGVk3vRMXt8USWgdDaFsscxVb+9XNINbF4uS0gKzW5GhGwkfQa7yZHTQHaH2A\nZn+xXkpYVjrdlOrhOgDc8AFw1bHVUIo22iEPwvn8cWbW9ZCFQJZQTIQRlgWUnsdzviTwcnb9GS/5\nI173H/Iw6FLiM9Exx6pL/EjljuV5+YFROXsHku2XJPs/I3nui5Ig0tS5IB8LZg8E/llZXYv9tcMs\nfIxEIDDP3b5YbqqTUyBgRTqzNrSG0ILExFB2dqF3q1EzGzIrUxCXfxXjULLTzTncmfHy7TFfePGY\n7V6B0qZs9sl0QDeu8YSAUjcJzwqEBqHQQlFrTa01QvugewjdpUdMQE2f2YLQbnOEj6QgRrNFSoch\nu4zZaQjMb62tJN12EFwGltB6zX0/wIRwbf7FlaL4b2MPqj4sqB6UyGFlHALVphfF9W44i9eomD7N\nWpgBIztQh024SgUyY1m7qh2UZ1XEFNQMM/NqULYWmo03giWxWtvWnCXZFKyUkmkKTiICIzWKACG8\nRyocxE1drUIHzeJTqJBchxid2d33JiOxa7+RrFYlsGQG5w+odd6oi7vJLwMvWillhx9DP/Dw65Cq\nTpjUXY7qAe/LkhPZ4YHqM1QJMx1RrZD7KgErqagyj2ykmR9pxh95RH3N+EOf2ZEgGwnKVGwI1rX7\nWhPysjBZWJvurPnM1s2zL63Llo5arGk886WRyoopBJHZLudmLW3Q7uVQSo9ZHjGcdbg/7LPVKdia\nl/z0tM/xtMMkCymqpriAL0zIU2QkMyKTNugXBUFpFr9Zd+WMhBwPTU1ASo8hu8zpLfq/xhT0mSGA\nmghJSE3UbNuR87jjyE7uOea+x5wXi3blhJb9eAZA/bCk/B9TtlqO641NL5Yzol0aFTJovJuJMKVM\nEgGeB4UHuQeFMHWDlI0nylglh0aF1ZkhMM9v1EwNemw+08vyQatufGszC1htZd88PtEUn/QSEwDs\nxQg/pMOYbcbskLLNnG3GoHxGSjGWirHUjIBCgl6UAbf7Ps/rZaUKV1Vs29DO8n7a/7n7am8/WVIL\n4qbq086yEX0/FkTTkGLa4XS6xf/MNPnUZyxj/kdu80D1GeuEXK9rmWb+VrWgmML8GMKu0eRkIZjc\nE4w+8JkdeRQTcY7N3bVJupOpjUcrMCYBO3m4Nbqs8dpV9x3JWNZLMhNiKZnlY0NqdcE5bLsWRRkw\nmifcH/WJQtPRvJtUfPBwl49O+pxOE+ZFQ2iRMMUZBxEMQhhEiG5AOB2RTBXJNCWZzEnkmFjOiCnw\nkFRETBo1007JHooOGbbJcUGXnA45HQp0Q4V2IngcUmua/KwUY003/uLqCe3/NYQmRzX1g5LqqESO\nanSx6WV1jfGOQd73IPGg50Hfg54PgW6qZVbgVWa2K226RM6qJKUb1bApG6Q0JjJcY4oizg3ZaTu4\n7AzhOgA8lhJbwSLY0gbWBj0I+hD0EUFMF8UeKYconmPOISdoBQ8qzX2hzd40TBDoRdepjBXpby1c\nw7gN+HS8a4vBtInQ3H2tWz9Z+Ikhs95z0DuE7nPQTzzChxHlUZeTQJNXPifjiGkd8kD1OFJ9Rjqm\nWLEnuqTmIWtNMYP5Q8MXsuGK+YlgfuQxP/IopgK5sY2dlcjaNbksoeUsVUw3vcpGu5/RsFrrxqPZ\n2MxUQ2aqMmRWzo37d0Pn9LOQV4bQ4qEhszQPiaOao9GAo3Gfk2lCmvum9n+IqTK73zHlf251EdsR\n4UNF59ikM/XlnH52QljO0SZqkLIhMs1Wc5fMfzpkdEmRBMwYMKOPh8J0ebf23Lan/bKwhGaffcky\nDnA9nhqhqVSixhI5qZGTGnUhQrMGwYFZAh9iH/o+bDdLpCCcgZibWa4oQcx41FBrj1c1Uph5XMZm\nBosSy9ohqYXKCUtyEzwaJ6bNYLWEFm5DtIMIOnRI2WXI80g+w5yXOUErSUeYOKxCC8bKko4tlWKX\ni6ic7rYbtmFxnv3iLMms/b/Hhx83hHYIW5+B7ZcFnZ6AD0IKv0NReZyMI9BdUukz1jETFTPRMcVa\nCc2YJlSlKWeaubd0Hs6OoJgJiokgn4hLSGjtwoOCJaEVre+5JhGrcrpSclObTtbGI6JU4wBoxqos\nzN8fV0KrAsZpYuSWIuB01iH0JZMsYZKaJS18lFYQiobQuqY444vbcKtD2E3pBKcMpGInnbPjn+CT\nkpGQ0SGjQ0qnKRJZNJ9kJOR0yBplu0KgUPgURI2d2DoBHkfKd515VhDZaAh9eiontUaVCl0qdKnP\nadHWJrQmlzMIIfGhH8BOAPs+xHI585VpU11zypIQWlH3ugLhOgBcj6WNJ5POZ64DoB1w6XgQrcq5\nILR9RNSnwym7hLyA5LOkfJ4TlCyMPKYFEyk4qgViMaNZKesilTXamQqPqmObbWjrbGZXE4MGS5Wz\n9xxsf0aw93nobHlMg4hZ5TOdxMweSKaqpqg9SnxK7Tfrtg1tmemhaqPN1YUgH4N/BH4oUJURjupS\nNLGr50loZyWc21xCu3gsK8G4YR3a+a4TXCprx5vpGTESZcaskpj28R9HQvNR89iQ2bRDFCg8oSlr\n31mCRkJrCO2gIbTP7iOe7xEEp3RUxCCT7A3nHPgnCFJO2aUgpmxUziG7bDFeqJldUnYYOWTmURIx\np4NYaDKPO5bsROIWY92sbVw5oZXvNUGinmiyjYwxX0QeIhEm/UkBqkmFUrq5dne2jIGOMbj7gemE\nEgeQBKY8bRIZI2egwG9auC0Mtqvw/Brh1XieNlpic3/MuDKtzmy7vdWQh/PgNU6BsLF4dxBBl4CI\nBJ8emm0q9shRZGx7c3rejER08IVVrc+Tppb/94Q2i6fwhcbzzN9S+SjtobS/2Nb6PJWzndL1JJwD\n4pFtERhSC3sQb2mSPYi2BXorIO8FjCN46MGxavdYPkviNGStJKjMo8o056vX551z2yFlScxplrKY\nfOwY1bgEuzKRaJoJFLOfhSCtDZGhWXZIOu/cVrer2qOqA+aLz9v7cH7jCVMmO2kanWyZoqPeIMLv\neUSxJglrul6OpsBHofEoiJnTY8jOwnYm8fFQxBQLSS1pFlPqO0MgUY0tzV0uBdHcH9EILcKZnM8Q\naJ9acroIBV4vQHR9vK6P6PmI2EenEpXWZj2X6NR6QK0xfsZiAMkACh9mgXk4woeohuEQplPIchM0\nqOzAWn0xhYCoo4m7kririHuKuGsGW56aJsjl3KNIffJUXO491hJUCXIOlalDr3VGxpQhJffw6dFF\nsI+WOe9Vu9yv+wxVh1wH5xzqUQ9cGNT0oopuXNKNSnpRSRxWpGVEWsSkZcS8WVdnTv5t47frKa1b\n68vcDJcYltsy1+Rjxfy+IuxrhK+IBprxfwumPxVkp4I6FWjVVlfOWlzWe1wDtGvIt+FC1rvZrkVn\nJbF2JVVrt3V+42Em4ChYXStpbL1VtVxXZ+nE6+/n8pzX2U1bS4WxNZ/k0DPt0XSaU38wIb9fMR36\nhGkX5D6QM2SHKVvkdKmbDJmaiIIOMwZEVAg0CTlzetQEBNQMmljKgrgJxDVLSUR9WbrxgmWqWBCC\nHxlHHsDp+p88PUKLPLytAG8/wt8zi7cVIE9L5EmJOq1AlMjSTs9uDfdG7at9482ce42HspHKplOY\nzpaEtqjNvzq4hVBEHUV/V9Lfrxns1fT3a9AwPQmYngbMTgKUFhSpd7nXQkuQOdRzc2yt0DIhY8Ip\nFV08PHrk7KNVyUfVgHvVgKFMyNQmu8CqvchuR37NVqdmv5+x15uz15+zleSczrqczLuczrsIoSml\nR3Vm/qJVr9zF9eDZoOHLGnZd9W2ZxVAXkmIkmd+XCF+iSk3Q1Uw/FMx+6pGdelRzryE0e9z2ywrn\nE9rHgd2fO/VbcnMJzR7Dzfu0x7fOKKc3qsCQWLdjyl51E7NdVZBmZsma1KdzCe2srBA78ejW9x0C\nrARM66Y7k2fyRkczqvtTsgcml1PMe8h6H03JhG2mDJqMgAhDaCE5XWZUeJjWeAk5NQESfxG7lpCT\nNza4lC4ZHRTexyO0MDFByVHXrIMm9/rTQWghwe0Y/4UOwYsJ/kFE/VGO6GZIT6ALiZqYzjVLCc2x\nYdVNiMZMmBSjwgNfGSKzS1W3CM2ZVT2IO4reXs3e8yV7L1bsvViiFZz+NCKIjfpbZN7SpnlR2OT0\net7YRCpUHZE2EpqHT0GPMXtoXXNSdzmRnYbQLiKhuSqNTxQItjoVtwcZL+xOeHF3xEF/xkfDLbqj\nCk9oispnksWc/ZhF879GpV+UwHGbx1zetmPgmgzMWuY1xajC8wWy0pRThR9BdiLITz3yE58q9dDK\ntSfCeltMO/r8LDvgRdE+nuJR0nBtlm7ep912bW1NqJAnIAoNkW0NYHtg1kUBk6nx3GsFxXl5nI/e\nz+Vx7H1oe7Yd9bkSpmfmcWayBdIC/TCgGk3IRhVi6FOnPXK5B0hSeqT0GkIzEpokIqfjeDOjpkN7\nTUBNSEVCTkBNTsKELTwUGrGIX7sUfN8QWtKHZMukjUWdjT956hKafzsmfLlD+LkewQsdo356AgqF\nHFcmYHYlp84Gts4xpaSFWRfCJKoLDIlVcrlol8yWBnIhIOoq+rs1uy9UHH425/CzBVoLglijFJSp\nx/RUXZrPjIRWGHuIKkGmaBGQMWdISYHPmB4PAK0VcxWS6oi5Csn0eVUpXSnNzM6G0Gpub2W8vD/h\nc7dPeWFnRDcy9sGi9hlnMYG3yblg9xdjQmN6LGd/9zlc0vbxiMfQxBPKoqIYG29jMZWkD42gXaWC\nam6ksyoN0CponXNbGnNJTKz57OPAPYYlLJco2hKi6ziy1VXdQGeb+hQsJbTtAezvwt4e5Jl5YZUy\nKud8U3zV+vu5SmZuPOKj44UKE9pk2yaO5hBBlaWmbHbmk6c9ZrW5vpKYioSySWnSeNRE5OiFN3NO\nl4SMPrOFZGa3s4b4LJml5+RgroWV0OI+dHegt2u2N+DpFXhsJDT/dkzwUpfwtT7hy+YidUNm3oMC\nEdjwBSvqO3aAGkNmpfuxMBKZatZ2WTEOm8FnbGhG5dx9vuL2KwV3fjY3HCShmHvMTgOiTgjCfVku\nAONJMPFFjfFSC0GGpEQxxsOni08C2ojrUgsUAqnPU28fVTkiH7YSQ2gv7U157fCUlw+OAQyZpQkP\nxj0Cf1MtdiuhJSyrA9uZ1LURfRxCc8MZTD5snRvJzJtKhG8mMiEESgq08tDSR8s2oVmD+zriak87\nj+OVdYmrfb3rjtEOXl4nLWJeyihYSmh7u3B4C9K0jRqhGwAAGTRJREFUIbPSbAebXsX193OVzNqE\n1lJRK228rWkJvgRPoT1JLSVSKXLl4ckuQiXNFQQogmZt9lMTNd7MEEEHj5q4qQxjJbM+Mw44XpQf\nKolI6RJcsNPaCrwAwnhJaP0D6HzCqU8LKI2uFDpX6LRGTWrUuEbNalQq0YU0BQjVBrVhnelknXiN\nZwr9RRo/VPiRwg8VUUfSu2UM0SIEKT2yuYeqBPncp8xNiRl1ps1pE6y3Sq2cuh1qS/K4LOxgXm35\npXRJJXvkVZe07DDJE8ZpwiyPSMuQovaplec0CV4HV6Kwkwg8ajP6OHAfljmGVgqtFKpqe1Lb37dk\nZQ3uNoTHlX5cVfCi59gmxXXn3P6/aK29Nd/doOZqbaSiWhobWVE1Jc9LKGujXUjVjJ11x7Pjxt6D\njrNYyd7a/txJvOU8Uc2s3XL2LF8ld3y6hGgnE91Qp5X67PumKIjJSVaWihCNIKAmIafHfGFrU3hI\n/MVytvdTL8+7rk1aY7WpAs1TJDRdKtSkQh4VVB0fhECNK+r3U+oPM+RxiZrVpprt5fdO+4XwI02y\nJUkGknhLmu0tydaeJuh5lGXA8ChC1oI6Fxy9HzO8FzIfBpSZZ/pDfipgB5pNkjdLWWsmWcbRpKAT\nlQhRM8483j/e4cPTLY6nXWZ5RK02hTG0nS+wTO2yaWOX9XDCqoHdJQA3GNndr0us9r67xm83iLVY\ns2yy8617ju5nF7m2VijG4ndrZ9hVWGN/msF4ZsKONE135zHM5obgaivBuOqi3bYSmS2SYBf7+rop\neu652Wdg/3YzSS6C9vdc1Vs3nxgpLKPDlAE+Eo1A4pPRQSMWjY1jikVsm5vdLM+qKiMlVAXkKXhT\nc73lZlvjUya0mvqoME7ASuEfF9T3C+SDHNUQGpcmNFf1WKoAQaRItiT9W5L+7Zr+bUlvXxJ4msAT\nlFXA6Ajmxz7FXDC6HzK6HzEfBZT548QyPWlYScWt+tGnlDDJC46mJZ6oqGrJ8dTj/rjPg0mf41mX\nWRFRy03X0lYrbZDU5duHrcK+PB6r9cVcr2HbJtX2WFpJwAavdpp7MHcWS5IXcVycpUaeZy1te5ld\nr6arop6xD6XNS5jm4E/N10ppVM3p1HTdygsjwS2Ot6ptLPOZl8/fmAesndOGi7iTh6uyt9XkizhO\n2s/mUaHB/Fc09dGWzoKSaEFsYNTRiJIBU+b0SOkyp7f47ZmEpqSRyIqmTqASxpmyAU9P5Sw1alKD\nVxhv5rii7geoUWWWcWUktEuWITZwH44ZYH5kJLL+Yc3OS5Ld/yXZeq6mnEA5EZQTn9nEp5xo8pFg\nPg5IRz7zsU+ZicczxzxRtD2RJnOirH0mmSGzolKMM00/9hllCaN0qX7KC0losJq3asMPnBzYS6Et\nHdhtV1U8i9CszcyECiwb5Qwwdr4xy8BWK12ehXXqmz3GRd0+bYJZ5/3dsB9tCS1bkllaGPUpy41z\nYC2htdOqXAnNdkKDpWTmVoldR2jriOnMk3a2LWHb+7X6e41Y2MkU3oLc1lWZCagZs01AvUKEZ0I1\nEhqpsZ1XEoJPODndwqqculCocYV8UCAiz9jUCrlYX15CWxyB5UAFP1TEW5LBbcnuy5Jbr9XsviQZ\n/Y/HSApmxz6jI4/RB4L0xKPKPapCUBUeZS6WJo1PHG2V0xQZLOuASVZR1JJxqnkw0UR+QF77FFVA\nXgcUVXABCc2u27X0XVvVx4Eb4mCdO2e9XO73cb4bNNe8xbK4X5vMLipNu+oiXJzU7O/cGDD3N8sx\ntxZWQlMYm9m8afaslCG1xeI6wCyh2QR5K6FZT7QlNJsaZBvStu17VoVfF8N3Eay+U6ufm7UlMZfY\nrHNgmzEx5ULl7DFfOAdcqe5MyGaSVQ2Z+QWmJ8jZeHqEVil0pUxw35Pf+yPbfiiJe5LuvmTrecne\nZyT7r0iqTDA58ilKn9HDgPv/f8Ds6NOkYq6DWzm3C/SppE8lS6a5q75tqHArWMkcMY2HGpVJc7Hs\nmwujreZc5vsWNg7M1pTfxrQztGlIbgOdTWgT2Sb72brvtaUle48tKZ9ja9W6yQKQrOYDwyrpuy92\nW0qzDiFbBtwSW86y+5Trjb7Iw2zbAx858TO2298Si2wAFzUBMQWqqXrbZ8YuQ2oCCmJSukSUBNSG\n1IQpiGoGabPWClRptDZti0psGON8avtybsK6QffozZeVIJ96zI48Rh9ogtinnAuO/z+f8Yce82OP\ncnZe0b9PAuu8avZlcFvD2/pcbl229fBC8BNB0BH4neW2LDR1BjLTyExT5xq12Yn0FOFes1UzK0yI\n+ITL1YyD9cZ8F5Y43Oq/fuv7Lvm0Y9M2Hb8d0tE+j/b4bTtIbFmpKSuZM4ww92bOxZwjrrPBlcYv\no45eDBJ/kQdq1cyagCkDKkJs4xWJTzfMkUmM6kSoToxMzFoVApV5qEyYJTeFLTbhGSO0s2wirjpj\ntuvSdOGePvDwI0P22dBjdNdj1BBaMTPFAT89EGcs9uVOnb9LloS2eTCLQBAOBPGuINr1mrWgGmuK\noaYcaoqhMkne5wyYpwd7zTOWL3GOeYEvQ2gW6yQO9zMrDVpbVdL83W6G4lZAvgypWbhS3ToyW0do\ntkqyHedunrMltPPuhRsG0y5e2Q6FeXy4hGYdBDkJJdHCadBjTkhFFWRUgz7V7oBqN6LaDal2e8gx\n1EOFHCrqoUJLdU6VnmeO0GBVVG4HNLLYlqWpgTU78tAKylQwfaCYPTRkZiU0+amU0NqzqcIM2DnL\nF93Wh3LDK9bDCyDsC5JbHp3nPLoveHSf98iPFOk9RRoqlBTUc21SUT8VcCU0K5HYar4pF3uJXelo\n/ThZwlVvBxhbZZdldWJ77+25rLMDnof2986S0NqOFFiOA2s7nDvr8ye15Xhyi1e61UTa1/R4cAnN\nzRbwkXgoPBQ95gyYIoOUoq8pbkUUz/XJX4gonu9THUmqexVlWKGlRs1r1JmtLw2eQUKzcG0RLiyh\nQT4VaO1RpYJsqAk7RiormuazxadO5XSJ2k0uti+3XQcsDfmuN3I9vADCgSA58Oi95DF4xWfwisf8\nQ4EIzT2oZpri+KKev6cBxbKfquvJs1KSTZ6/iMq56brs52173Q6G2EYsJRlbtdYS22UI7SwyXaeK\numqg67l07YcBq8nwlyE0t4DlMnD2QjbBC8ISmuvNjCnoktJjvqip1iWFICEbRKQHfbKXFMErIf4r\nPYoPK0Qo0LVGzWrqY0vyZ+MZJLR1KpnrojYPR5am2F+ZCtJT8AJtCnTUIGvzEsuKT5nKCY/GPLlq\ngY3BWWfPOfulEqFoJDRB747H9qs+Oz/rE3SlqTs40xQnCi+6uqu6POz1ut5ME5m+GiB6EZXzIoRj\nCc0WFLUdhuwxrUHafanWqa6bjr+OWNf91pXK3CyOdvmgtj3vIoTWLmBpz+nJqZvmCrxFCSHrzQyo\n2eeEkIoBU3rM2eMUP4yZ9XvEt/YI72j8V0PEz/YQ3QItlWl7eSIQ0bUktIvBFAMVSw54QjPPlcLz\nTCS5FzSW/MB4e2RtmRhUZbYvEVfie5ooknQ7iu2BZG+n4uBAEJ5q9EBTdTVpqPC9jyOdnWXPtLjo\nS9/GZSLanxTaQbS+8xms90heBo8jyT0u2bRDT2wanSUzN2zk8aEaxdKFLyQ9P6cKMmSQIIKIIAgJ\nD3ziXUE9UKhujY5ytJ+CV6JFgRQlFRViJX92PZ5BQtvkLXI/fwYR+hDHkCQQN4vvQ5GbVJkib0rb\ny0sRmqclsZQM6prdUnJYSJ7PaqLCR5UBReUzUz6+tirIZbDOewbrvWefZlgVN8U4WwLMSz5u/ral\noJ82yT5JWFJz1c6apT3tisOXhEB2Y6r+gKIPaT9i1h8Q7QrKgx104OPPMpK7D/GKCu5q1AeS6khR\nTCVedf69fwYJzWLVq/lsvDTnIAigG0O/Z5ZB33w2nZkqvTNASyg3p3+04WtFogr6dc5elXO7yHkx\nzxF5RFF2mNUJQ5ngP1Kl5CJwVRm7htVqFM8CCVibpA2PEM3fY8yNP7us+7OBdsCuVTvb6uzVaTJa\nCGQnotodUByEZAc95ge71H2NioIloZUV0dEQ9SCg/qlP8TAgmPiI8vwJ9xkkNFcSa8f3PKuDrUHo\nQyeG7S7sbpslCmEYmCYXujZk5olLaSCeliSqYFDP2K2m3C6m3MlnqKLLvBowrAckCgJtB/pl0FZl\nfOdzazx/Fp6LK6HZc89YejgtoT0L5LwO7WDdtnPg6UhoqhNT7RovZvqSIryjqZOKYJ7jzzKCeYb/\nIMefZ8hRh+K0QzTs4k+7eFUHY+c8G88YoZ3lsbpYVPOnHoFvJLStHhxswe090wAmYCmZzdNlNPUF\n4WtFLHP69Yy9csRhccqL2SlFsc2wrNmqIZEhvt5cDfRRnJWqY/8HS7Xz0w4b2+eGyYSsVvW4TNzb\npw1nSWhuX4SrldAQAtmJqXZD8hdCws+G+D8ToPyc5MOHxEVJNMtIPnxI8tEx1XxAlu0QZzsEGXil\nbZh0Np4xQoNrQ17rEAaNhNaD/S14bhc6iXEClAXM56bb1WUJDVdCG3K7eMiL+RHzouSoEgzqkI7q\n4uuPY3huvyjW0Ayr1Sg+7bAkZmO9bIvDdhu7Z3nMtUM3rKfz6UhoWmBsaLs9iud7+K/04Ge7aDXD\nK0qiB0Ojcn50TP/f3qOo95jpkkhDoCOE7p17jKdAaM1gDjzzwob+ch34TflsW0K7NtUI1BXOgkFg\nvIe+b9aB3zh6pPEiytpUPvgkIm6lNI2S5xlMZobcOgVMc9NeXYWmK3u3Br92PPbacb61uzVJ6toj\nzUKG45gHD3vsdAd0w5IPPhpw/6jHcJQwT0Pq+uMMaNfzZ48Lq6Ek9iVqO2+0IeeweQ6Bs1bKPIe6\nXl2fiYvka24iI3tu0vm7HRpi78+6SP/1+/bQhNREyJW1KbPjUxEs1tVZeYqBQMQ+xP7KWpcKCoku\nFBRNcYeNxTOtndDGMmqWgdluZZW2xG232wUiaxC68cr7Zu03a1sGWkqW/Uc1qvCoZ1CeKPx7NWJQ\nmf99JFAPfeQooZ71KMttZrJDhY9A0iFlmzFhUx3m+Iyn+BQJrTF49xLoNeskNNUH5kWzzkEWV0do\nQph2WHG89CLGsXmGRW5qLRVNLTD5ccrmPCaq2pSUGU/Ni6208XhOctOCrA7AH0AvNN2uaswAtsKD\nsnaggmWn74JaekzTiONhj25cNw1UAu49HPDBvW2Ohj0m85iq3pz4+yjWpepYs4Byti2hqdZvMKEq\nUWgk0U4CSWzWdQ1Z0ZTYyc17t5HQ4NH4RN1azgscbp3bI791PbntANj18NB0qOiR06egT06PnIqA\nGQlzYmYkzOBMQhOBh+iHiO1ouezE6GmFHlfokVmjKnTl2i3dScXGcNkSUbAMWLa171xCi1mmgtml\ncL7fBD0LZdrMhUmzxGYtJdSlqWdWlaYMkK5RqUCeKqp7NSIsTNCsylAfSOp7AcWwS5btMNcFRVMI\n0vYD9VCLNnmfEkJLYKcPuz2zDBIYzmE4MxKcUpBXyxJdV3EuQQBJB7p96PWh1zPPcD6DdNbYgxt7\n1dPWLqraFAK0UmNRGtItBJQCZGAIuTdoguZ1MzYbCQ2FMWC7+Y8lde0xm0c8HJrWdkXlM57FnIy7\nHJ32ODrtMZ3HlNVlCa059iPR864EA0t1pi3xSDPJRBH0Osaru9UsRWmKH06aZ1JtkpjXpYu5hOYS\n1KbrWEdmdv84+3a/p9hElB6KhJJtMvaYNcucnJBT+pxg1KiSgDMrfQUeYhAibnXwDs0iDjvokxJ1\nP0dFBegcbX0Yi3ts73k708Cev5txYQtvapbVXWwxSbtOWfbJhYXXN4hMN6a4bzo0xX2j4RSpqfdG\n2igLGpUJ6qFChBW6ViYDQBfUR4riKCAadonzHSINpuOGaVHcITNZBQ3+/axbddY9fOII/IbQenBr\nGw63DaklY9PKSyrISvA3Fex7TAgaCa0D/T5s7ZgFbYjOktk5VTGvDFYq0TS1szKIYhBOHXk/MS9/\n4IGnm7HZSGlIzEBckhl4VNJjlkamG1TlM5nHHJ32mKURk3nMZBYzmUdUj6VywqrNrF222noO3d8J\nlm3eurCzBXvbsL9j7kPYqC6W6DeiTWougbov9nnXYq/DkpS9J27mhpXY2r97FB6ahIotMg6Y8hwj\nnmfEjISQunlKIVOSs08r8KAf4h0keHd6eC/38V4eoH6aQRiC8lGpRpxK9Iq0aK/DSsyuOaDm0VxO\nV0KLMLmsW5g0sG1MOItbj84HIY2EFnWhswXdbdPQpKpM2WwdNGZJia7rBaFpWSHnNfVJSaUryoki\nmAQEky5BpgmaFnmdZrEd2qNFr9gzbtXG/z4RNA9evwfd/20ktNs7cGcfbm810ogyTSMmqSG3qzyX\nMDRqXG8AO7uwe8BigFoy29iBZx3eBz7z+KdXSdB509YsM/cmjCHeNep5HJjehMmuednRSzLzrI3E\nJbMU8BqVM6aoAsazhKNTSRhIqtqjqn3Karlc/vpcW9O6SHs3Ps0lAUfljBsJbWcAt/bg8MBcPyzV\n8OAi0mM7Zcw91ibHhHt9LlnZtT131xa4TiJdd0aW0FJuMeFFTnmZEyZNpdayUT0jNrRnC4VRORtC\n839mG+8LO4j+HJSPzkCcSoislGVhr8Ven012bxfzdJ+hq3L2WBbXPGDp8LHxej4IbymhJQPo7Znu\nTFVp7pUSpnG4V4IuUJmCWqFmkvpYIiLTMsUrFaIM8MouXhkidJ8dRnioRc7nDiP6zM6+TzxNQpP/\nDcn/A/1GSjvYgsMdU454kkF3ZmZq7yrdxhijZRRDp2tIbWvbSAF5Dunc/M+33XQuqnO+zxMhNNkY\nUV0BMUhg0AGkcaT4HUi2TWpUpRuvuzbG2YVKkWEGpAlElNIjkx5Z8XEf9/tsJrT2fbIvvivd2Jnd\nSksN+QlrBoih121ave0YNTTNjdoZR+a5bYRLQm6AcJug1j1Te31tY7q7H5eo7XfcXNuzzkoTUdOj\nYJuMA2Y8x4iEkikJQ3p0KPE37cMXiE5gbGcHHbwXe/ifGUAJ+qRG369QXTsRryvD/T7wMhfP17TP\nzyW1XZaxeTMWxTWFME6AIIa4a0ituwNlbrSMosTEXISgPdOysrAS4sL42xzXToAmNCOkWhCY7Umw\nzfjcM7/BDW5wg2uBG0K7wQ1ucG0gtL66diDikgGgN7jBDW5wUayjriu1oV0hV97gBje4wSO4UTlv\ncIMbXBvcENoNbnCDa4MrJ7R33nmHL3zhC7z66qv8wR/8wVUf7srxW7/1WxweHvKlL31p8dnp6Slv\nv/02r732Gr/4i7/IaDT6BM/w8XD37l1+/ud/np/7uZ/ji1/8In/yJ38CXI9rzPOcr371q7zxxhu8\n/vrr/P7v/z5wPa7NhZSSN998k6997WvA9bu+TbhSQpNS8ju/8zu88847/Md//Ad/8Rd/wU9+8pOr\nPOSV4zd/8zd55513Vj77zne+w9tvv81//ud/8tZbb/Gd73znEzq7x0cYhvzxH/8x//7v/84///M/\n86d/+qf85Cc/uRbXmCQJ7777Lj/60Y/48Y9/zLvvvss//dM/XYtrc/Hd736X119/feGUu27XtxH6\nCvHDH/5Q/9Iv/dLi729/+9v629/+9lUe8qngvffe01/84hcXf3/+85/X9+/f11prfe/ePf35z3/+\nkzq1J45f/dVf1d///vev3TXO53P9la98Rf/bv/3btbq2u3fv6rfeekv/4Ac/0L/yK7+itb7e47ON\nK5XQPvroI1566aXF33fu3OGjjz66ykN+Injw4AGHh4cAHB4e8uDBg0/4jJ4M3n//ff71X/+Vr371\nq9fmGpVSvPHGGxweHi5U6+tybQC/93u/xx/90R/hectX+zpd33m4UkL7vzEOTQhxLa57NpvxjW98\ng+9+97sMBoOV/z3L1+h5Hj/60Y/48MMP+Yd/+Afefffdlf8/y9f2N3/zN9y+fZs333zzzJCpZ/n6\nLoIrJbQXX3yRu3fvLv6+e/cud+7cucpDfiI4PDzk/v37ANy7d4/bt29/wmf0eKiqim984xt885vf\n5Nd+7deA63eN29vb/PIv/zL/8i//cm2u7Yc//CF//dd/zSuvvMJv/MZv8IMf/IBvfvOb1+b6LoIr\nJbSvfOUr/Nd//Rfvv/8+ZVnyV3/1V3z961+/ykN+Ivj617/O9773PQC+973vLUjgWYTWmt/+7d/m\n9ddf53d/93cXn1+Hazw+Pl54+LIs4/vf/z5vvvnmtbg2gG9961vcvXuX9957j7/8y7/kF37hF/jz\nP//za3N9F8JVG+n+9m//Vr/22mv6c5/7nP7Wt7511Ye7cvz6r/+6fv7553UYhvrOnTv6z/7sz/TJ\nyYl+66239KuvvqrffvttPRwOP+nT/Nj4x3/8Ry2E0F/+8pf1G2+8od944w39d3/3d9fiGn/84x/r\nN998U3/5y1/WX/rSl/Qf/uEfaq31tbi2Nv7+7/9ef+1rX9NaX8/rOwtXmst5gxvc4AZPEzeZAje4\nwQ2uDW4I7QY3uMG1wQ2h3eAGN7g2uCG0G9zgBtcGN4R2gxvc4NrghtBucIMbXBv8H8nm0infLk4e\nAAAAAElFTkSuQmCC\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "imshow(ks)" ] }, { "cell_type": "markdown", "id": "eb532730", "metadata": {}, "source": [ "Now we run the perceptron learning algorithm on these dot products again.\n", "\n" ] }, { "cell_type": "code", "execution_count": 23, "id": "7783aa06", "metadata": { "collapsed": true }, "outputs": [], "source": [ "c = zeros(len(vs))\n", "for epoch in range(1000):\n", " for i in range(n):\n", " sign = (dot(c,ks[:,i])>=0)\n", " if lo[i] and not sign: c[i] += 1\n", " elif not lo[i] and sign: c[i] -= 1" ] }, { "cell_type": "code", "execution_count": 24, "id": "2f0609e0", "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n4/8DxPG2AAZ1UL4AAAAASUVORK5CYII=\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def g(x,y):\n", " kv = [k(data[i],array([x,y])) for i in range(n)]\n", " return dot(c,kv)>0\n", "plotfun(g)" ] }, { "cell_type": "markdown", "id": "f9e29ad5", "metadata": {}, "source": [ "Note that we really only need to compute the kernel function for vectors that make a non-zero contribution to the discriminant function; this can result in substantial savings.\n", "\n" ] }, { "cell_type": "code", "execution_count": 25, "id": "03a595d2", "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(50, 16)" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(c),sum(c!=0)" ] }, { "cell_type": "markdown", "id": "7b523dff", "metadata": {}, "source": [ "# Complexity of Decision Regions" ] }, { "cell_type": "markdown", "id": "35fadca3", "metadata": {}, "source": [ "However, we have a problem now. The decision region shown above is \n", "very complicated, far more than it should be.\n", "We have seen effects like this as overtraining.\n", "\n", "The reason is that the feature space induced by the Gaussian kernel\n", "is very high dimensional and many different sets of points are separable in it.\n", "We can control this in one of two ways.\n", "\n", "- First, we can adjust the $\\sigma$ parameter; \n", "larger $\\sigma$ correspond to smoother decision boundaries. \n", "- Second, we can limit the number of vectors that make non-zero \n", "contributions to the discriminant function.\n", "\n", "Support vector machine learning algorithms take both approaches." ] }, { "cell_type": "code", "execution_count": 26, "id": "d19be694", "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "50 29\n" ] }, { "data": { "image/png": "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\ndR8AAAAASUVORK5CYII=\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# kernel learning with larger sigma\n", "def k(u,v,sigma=0.5):\n", " d2 = sum((u-v)**2)\n", " return exp(-d2/2/sigma**2)\n", "n = len(data)\n", "ks = zeros((n,n))\n", "for i in range(n):\n", " for j in range(n):\n", " ks[i,j] = k(data[i],data[j])\n", "c = zeros(len(vs))\n", "for epoch in range(1000):\n", " for i in range(n):\n", " sign = (dot(c,ks[:,i])>=0)\n", " if lo[i] and not sign: c[i] += 1\n", " elif not lo[i] and sign: c[i] -= 1\n", "print len(c),sum(c!=0)\n", "def g(x,y):\n", " kv = [k(data[i],array([x,y])) for i in range(n)]\n", " return dot(c,kv)>0\n", "plotfun(g)" ] }, { "cell_type": "code", "execution_count": null, "id": "defb7f06", "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": {}, "nbformat": 4, "nbformat_minor": 5 }