{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Multi-output Gaussian processes in GPflow" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook shows how to construct a multi-output GP model using GPflow. We will consider a regression problem for functions $f: \\mathbb{R}^D \\rightarrow \\mathbb{R}^P$. We assume that the dataset is of the form $(X, f_1), \\dots, (X, f_P)$, that is, we observe all the outputs for a particular input location (for cases where there are **not** fully observed outputs for each input, see [A simple demonstration of coregionalisation](./coregionalisation.ipynb)).\n", "\n", "Here we assume a model of the form: \n", "$$f(x) = W g(x),$$\n", "where $g(x) \\in \\mathbb{R}^L$, $f(x) \\in \\mathbb{R}^P$ and $W \\in \\mathbb{R}^{P \\times L}$. We assume that the outputs of $g$ are uncorrelated, and that by *mixing* them with $W$ they become correlated. In this notebook, we show how to build this model using Sparse Variational Gaussian Process (SVGP) for $g$, which scales well with the numbers of data points and outputs. \n", "\n", "Here we have two options for $g$:\n", "1. The output dimensions of $g$ share the same kernel.\n", "2. Each output of $g$ has a separate kernel.\n", "\n", "\n", "In addition, we have two further suboptions for the inducing inputs of $g$:\n", "1. The instances of $g$ share the same inducing inputs.\n", "2. Each output of $g$ has its own set of inducing inputs.\n", "\n", "The notation is as follows:\n", "$$\n", "\\newcommand{\\GP}{\\mathcal{GP}}\n", "\\newcommand{\\NN}{\\mathcal{N}}\n", "\\newcommand{\\LL}{\\mathcal{L}}\n", "\\newcommand{\\RR}{\\mathbb{R}}\n", "\\newcommand{\\EE}{\\mathbb{E}}\n", "\\newcommand{\\valpha}{\\boldsymbol\\alpha}\n", "\\newcommand{\\vf}{\\mathbf{f}}\n", "\\newcommand{\\vF}{\\mathbf{F}}\n", "\\newcommand{\\vg}{\\mathbf{g}}\n", "\\newcommand{\\vW}{\\mathbf{W}}\n", "\\newcommand{\\vI}{\\mathbf{I}}\n", "\\newcommand{\\vZ}{\\mathbf{Z}}\n", "\\newcommand{\\vu}{\\mathbf{u}}\n", "\\newcommand{\\vU}{\\mathbf{U}}\n", "\\newcommand{\\vX}{\\mathbf{X}}\n", "\\newcommand{\\vY}{\\mathbf{Y}}\n", "\\newcommand{\\identity}{\\mathbb{I}}\n", "$$\n", "- $X \\in \\mathbb{R}^{N \\times D}$ denotes the input\n", "- $Y \\in \\RR^{N \\times P}$ denotes the output\n", "- $k_{1..L}$, $L$ are kernels on $\\RR^{N \\times D}$\n", "- $g_{1..L}$, $L$ are independent $\\GP$s with $g_l \\sim \\GP(0,k_l)$\n", "- $f_{1..P}$, $P$ are correlated $\\GP$s with $\\vf = \\vW \\vg$ " ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2018-06-19T10:58:45.195606Z", "start_time": "2018-06-19T10:58:44.172232Z" } }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import gpflow as gpf\n", "\n", "import gpflow.multioutput.kernels as mk\n", "import gpflow.multioutput.features as mf\n", "%matplotlib inline\n", "\n", "MAXITER = gpf.test_util.notebook_niter(15000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Generate synthetic data\n", "We create a utility function to generate synthetic data. We assume that:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "N = 100 # number of points\n", "D = 1 # number of input dimensions\n", "M = 20 # number of inducing points\n", "L = 2 # number of latent GPs\n", "P = 3 # number of observations = output dimensions" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def generate_data(N=100):\n", " X = np.random.rand(N)[:, None] * 10 - 5 # Inputs = N x D\n", " G = np.hstack((0.5 * np.sin(3 * X) + X, 3.0 * np.cos(X) - X)) # G = N x L\n", " W = np.array([[0.5, -0.3, 1.5], [-0.4, 0.43, 0.0]]) # L x P\n", " F = np.matmul(G, W) # N x P\n", " Y = F + np.random.randn(*F.shape) * [0.2, 0.2, 0.2]\n", " \n", " return X, Y" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2018-06-19T10:58:46.500202Z", "start_time": "2018-06-19T10:58:46.486870Z" } }, "outputs": [], "source": [ "X, Y = generate_data(N)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We create a utility function for plotting:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2018-06-19T10:58:48.106040Z", "start_time": "2018-06-19T10:58:48.092379Z" } }, "outputs": [], "source": [ "def plot_model(m, lower=-6, upper=6):\n", " pX = np.linspace(lower, upper, 100)[:, None]\n", " pY, pYv = m.predict_y(pX)\n", " if pY.ndim == 3:\n", " pY = pY[:, 0, :]\n", " plt.plot(m.X.value, m.Y.value, 'x')\n", " plt.gca().set_prop_cycle(None)\n", " plt.plot(pX, pY)\n", " for i in range(pY.shape[1]):\n", " top = pY[:, i] + 2.0 * pYv[:, i] ** 0.5\n", " bot = pY[:, i] - 2.0 * pYv[:, i] ** 0.5\n", " plt.fill_between(pX[:, 0], top, bot, alpha=0.3)\n", " plt.xlabel('X')\n", " plt.ylabel('f')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Model the outputs $f(x)$ directly\n", "The three examples below show how to model the outputs of the model $f(x)$ directly. Mathematically, this case is equivalent to having:\n", "$$\n", "f(x) = I g(x),\n", "$$\n", "i.e. $W = I$ and $P = L$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1. Shared independent MultiOutputKernel (MOK) and shared independent features\n", "\n", "We will use the same kernel to model each of the output dimensions, and the same inducing inputs in each of the approximations.\n", "\n", "Because we are building more than one model in this notebook, it is a good practice to reset the default TensorFlow graph and session so that we do not increase the size of the graph unnecessarily and do not accidentally overwrite tensors. For more information, see [Handling TensorFlow graphs and sessions](../understanding/tf_graphs_and_sessions.ipynb)." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2018-06-19T10:58:58.849062Z", "start_time": "2018-06-19T10:58:58.840498Z" } }, "outputs": [], "source": [ "gpf.reset_default_graph_and_session()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2018-06-19T10:58:59.599039Z", "start_time": "2018-06-19T10:58:59.546311Z" } }, "outputs": [], "source": [ "# create multioutput kernel\n", "kernel = mk.SharedIndependentMok(gpf.kernels.RBF(1) + gpf.kernels.Linear(1), output_dimensionality=P) \n", "# initialisation of inducing input locations (M random points from the training inputs)\n", "Z = X[:M,...].copy() \n", "# create multioutput features from Z\n", "feature = mf.SharedIndependentMof(gpf.features.InducingPoints(Z)) " ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2018-06-19T10:59:00.543712Z", "start_time": "2018-06-19T10:59:00.352130Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Optimization terminated with:\n", " Message: b'CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH'\n", " Objective function value: 30.250613\n", " Number of iterations: 8710\n", " Number of functions evaluations: 9327\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Optimization terminated with:\n", " Message: b'CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH'\n", " Objective function value: 30.250613\n", " Number of iterations: 8710\n", " Number of functions evaluations: 9327\n" ] } ], "source": [ "# create SVGP model as usual and optimise\n", "m = gpf.models.SVGP(X, Y, kernel, gpf.likelihoods.Gaussian(), feat=feature) \n", "\n", "opt = gpf.train.ScipyOptimizer()\n", "opt.minimize(m, disp=True, maxiter=MAXITER)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2018-06-19T10:59:02.113396Z", "start_time": "2018-06-19T10:59:01.860960Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot predictions and observations\n", "plot_model(m)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. Separate independent MultiOutputKernel (MOK) and shared independent features" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2018-06-19T10:59:21.702858Z", "start_time": "2018-06-19T10:59:21.673859Z" } }, "outputs": [], "source": [ "gpf.reset_default_graph_and_session()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2018-06-19T10:59:22.210502Z", "start_time": "2018-06-19T10:59:22.089982Z" } }, "outputs": [], "source": [ "# Create list of kernels for each output\n", "kern_list = [gpf.kernels.RBF(D) + gpf.kernels.Linear(1) for _ in range(P)]\n", "# Create multioutput kernel from kernel list\n", "kernel = mk.SeparateIndependentMok(kern_list)\n", "# initialisation of inducing input locations (M random points from the training inputs)\n", "Z = X[:M,...].copy() \n", "# create multioutput features from Z\n", "feature = mf.SharedIndependentMof(gpf.features.InducingPoints(Z)) " ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2018-06-19T10:59:23.046491Z", "start_time": "2018-06-19T10:59:22.556308Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Optimization terminated with:\n", " Message: b'CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH'\n", " Objective function value: 28.645695\n", " Number of iterations: 5750\n", " Number of functions evaluations: 6115\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Optimization terminated with:\n", " Message: b'CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH'\n", " Objective function value: 28.645695\n", " Number of iterations: 5750\n", " Number of functions evaluations: 6115\n" ] } ], "source": [ "# create SVGP model as usual and optimise\n", "m = gpf.models.SVGP(X, Y, kernel, gpf.likelihoods.Gaussian(), feat=feature)\n", "\n", "opt = gpf.train.ScipyOptimizer()\n", "opt.minimize(m, disp=True, maxiter=MAXITER)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2018-06-19T10:59:28.559474Z", "start_time": "2018-06-19T10:59:27.956308Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_model(m)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3. Separate independent kernel and separate independent features" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "ExecuteTime": { "end_time": "2018-06-19T10:59:34.470299Z", "start_time": "2018-06-19T10:59:34.439405Z" } }, "outputs": [], "source": [ "gpf.reset_default_graph_and_session()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2018-06-19T10:59:35.106186Z", "start_time": "2018-06-19T10:59:34.971615Z" } }, "outputs": [], "source": [ "# Create list of kernels for each output\n", "kern_list = [gpf.kernels.RBF(D) + gpf.kernels.Linear(1) for _ in range(P)]\n", "# Create multioutput kernel from kernel list\n", "kernel = mk.SeparateIndependentMok(kern_list)\n", "# initialisation of inducing input locations, one set of locations per output\n", "Zs = [X[np.random.permutation(len(X))[:M],...].copy() for _ in range(P)]\n", "# initialise as list inducing features\n", "feature_list = [gpf.features.InducingPoints(Z) for Z in Zs]\n", "# create multioutput features from feature_list\n", "feature = mf.SeparateIndependentMof(feature_list)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**NOTE:** While the inducing points are independent, there needs to be the same number of inducing points per dimension." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "ExecuteTime": { "end_time": "2018-06-19T10:59:35.944347Z", "start_time": "2018-06-19T10:59:35.397366Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Optimization terminated with:\n", " Message: b'CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH'\n", " Objective function value: 28.645250\n", " Number of iterations: 13090\n", " Number of functions evaluations: 13895\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Optimization terminated with:\n", " Message: b'CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH'\n", " Objective function value: 28.645250\n", " Number of iterations: 13090\n", " Number of functions evaluations: 13895\n" ] } ], "source": [ "# create SVGP model as usual and optimise\n", "m = gpf.models.SVGP(X, Y, kernel, gpf.likelihoods.Gaussian(), feat=feature)\n", "\n", "opt = gpf.train.ScipyOptimizer()\n", "opt.minimize(m, disp=True, maxiter=MAXITER)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "ExecuteTime": { "end_time": "2018-06-19T10:59:39.328923Z", "start_time": "2018-06-19T10:59:38.608677Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_model(m)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The plot below shows that we use different inducing *inputs* in each output dimension." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "ExecuteTime": { "end_time": "2018-06-19T10:59:39.927604Z", "start_time": "2018-06-19T10:59:39.330061Z" }, "scrolled": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for i in range(len(m.feature.feat_list)):\n", " q_mu_unwhitened, q_var_unwhitened = m.predict_f(m.feature.feat_list[i].Z.value)\n", " plt.plot(m.feature.feat_list[i].Z.value, q_mu_unwhitened[:, [i]], \"o\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Model $f(x)$ by doing inference in the $g$ space\n", "### Mixed kernel and uncorrelated features \n", "\n", "Remember the general case: $f(x) = W g(x)$, where $g(x) \\in \\mathbb{R}^L$, $f(x) \\in \\mathbb{R}^P$ and $W \\in \\mathbb{R}^{P \\times L}$, where $L \\leq P$.\n", "We assume that the outputs of $g$ are uncorrelated, and by *mixing* them with $W$ they become correlated.\n", "With this setup we perform the optimal routine to calculate the conditional. Namely, calculate the conditional of the uncorrelated latent $g$ and afterwards project the mean and variance using the mixing matrix: $\\mu_f = W \\mu_g$ and $\\Sigma_f = W\\Sigma_g W^\\top$\n", "\n", "- $ K_{uu} = L \\times M \\times M $\n", "- $ K_{uf} = L \\times M \\times N $" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "ExecuteTime": { "end_time": "2018-06-19T11:00:35.438985Z", "start_time": "2018-06-19T11:00:35.422006Z" } }, "outputs": [], "source": [ "gpf.reset_default_graph_and_session()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "ExecuteTime": { "end_time": "2018-06-19T11:00:35.866898Z", "start_time": "2018-06-19T11:00:35.769898Z" } }, "outputs": [], "source": [ "# Create list of kernels for each output\n", "kern_list = [gpf.kernels.RBF(D) + gpf.kernels.Linear(D) for _ in range(L)]\n", "# Create multioutput kernel from kernel list\n", "kernel = mk.SeparateMixedMok(kern_list, W=np.random.randn(P, L)) # Notice that we initialise the mixing matrix W\n", "# initialisation of inducing input locations (M random points from the training inputs)\n", "Z = X[:M,...].copy()\n", "# create multioutput features from Z\n", "feature = mf.MixedKernelSharedMof(gpf.features.InducingPoints(Z))" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "ExecuteTime": { "end_time": "2018-06-19T11:00:36.651216Z", "start_time": "2018-06-19T11:00:36.271414Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Optimization terminated with:\n", " Message: b'STOP: TOTAL NO. of f AND g EVALUATIONS EXCEEDS LIMIT'\n", " Objective function value: -8.103119\n", " Number of iterations: 13283\n", " Number of functions evaluations: 15001\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Optimization terminated with:\n", " Message: b'STOP: TOTAL NO. of f AND g EVALUATIONS EXCEEDS LIMIT'\n", " Objective function value: -8.103119\n", " Number of iterations: 13283\n", " Number of functions evaluations: 15001\n" ] } ], "source": [ "# initialise mean of variational posterior to be of shape MxL\n", "q_mu = np.zeros((M, L)) \n", "# initialise \\sqrt(Σ) of variational posterior to be of shape LxMxM\n", "q_sqrt = np.repeat(np.eye(M)[None, ...], L, axis=0) * 1.0 \n", "\n", "# create SVGP model as usual and optimise\n", "m = gpf.models.SVGP(X, Y, kernel, gpf.likelihoods.Gaussian(), feat=feature, q_mu=q_mu, q_sqrt=q_sqrt)\n", "\n", "opt = gpf.train.ScipyOptimizer()\n", "opt.minimize(m, disp=True, maxiter=MAXITER)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "ExecuteTime": { "end_time": "2018-06-19T11:00:39.947168Z", "start_time": "2018-06-19T11:00:39.474197Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEKCAYAAAAMzhLIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzsnXecVOW9/99n2vbee19gWZbekY4iGhU1arBF1FhiEqNcU25ui8nvJjcmlmjEELEkahI1YsFC771tYXdZtvdeZnenzzm/P55tSBEQtsjzfr147c6cM+c8M8DzmW9XNE1DIpFIJJKzoRvqBUgkEolkeCOFQiKRSCTnRAqFRCKRSM6JFAqJRCKRnBMpFBKJRCI5J1IoJBKJRHJOpFBIJBKJ5JxIoZBIJBLJOZFCIZFIJJJzYhjqBVwKQkNDtcTExKFehkQikYwoDh8+3KxpWthXnfeNEIrExEQOHTo01MuQSCSSEYWiKBXnc550PUkkEonknEihkEgkEsk5kUIhkUgkknMihUIikUgk50QKhUQikUjOiRQKiUQikZwTKRQSiUQiOSdSKCQSiURyTqRQSCQSyQil3dY+KPcZUqFQFGWtoiiNiqLkDXguWFGUjYqinOz5GTSUa5RIJJLhSIu1hTJz2aDca6gtiteBpV967qfAZk3T0oDNPY8lEolE0kO3s5v8lnw0TRuU+w2pUGiatgNo/dLTNwJv9Pz+BnDToC5KIpFIhjFOt5Pc5lzcmnvQ7jnUFsWZiNA0ra7n93og4kwnKYryPUVRDimKcqipqWnwVieRSCRDhKqp5LXkYXPZBvW+w1Eo+tCEXXVG20rTtD9rmjZF07QpYWFf2SVXIpFIRjwnWk/QYe8Y9PsOR6FoUBQlCqDnZ+MQr0cikUiGnApzBQ2WhiG593AUio+Ae3t+vxf4cAjXIpFIJENOo6WRso7ByXA6E0OdHvsOsBcYpShKtaIo9wO/AZYoinISWNzzWCKRSK5I2mxtFLYWDukahnTCnaZp3znLoUWDuhCJRCIZhnQ6OslrzkPV1CFdx3B0PUkkEskVj8VpIbdpcNNgz4YUColEIhlmWJwWjjUdw6E6hnopwBC7niQSiURyKl2OLnKacoaNSIAUColEIhk2dNg7yG3OxaW6hnoppyCFQiKRSIYB1Z3VlHaUDnng+kzIGIVEIpEMIU7VSV5zHsXtxRcsEhXmCrqd3ZdpZf1Ii0IikUiGAFVTqeuuo8JcgcN94fGIQ/WHeLvwbY63HOcXM35xGVbYjxQKiUQiGURsLhtN1iaqOqsuSiBUTWV96Xo2VGxgVNAoHp3w6GVY5alIoZBIJJJLiFN14lJduFU3TtWJw+3AoTqwOC2029uxuqwXfW2L08LfCv5GbnMus6JncX/m/QR7Bl/C1Z8ZKRQSiUTyNVidvZqTbSeZEjmFOL84XKqLorYiDjccJswrjMUJiy/JfYrbi3nz+Jt0ODq4Je0W5sXOw6AbnC1cCoVEIpFcBK9kv0KQZxA6RceO6h1sqdrCjMgZqKgcaTgCClybeC2bKjZ9LbFwup1sqNjAF+VfEOoVyhOTnyDBP+ESvpOvRmY9SSQSyQVSYa5Ap+h49vCzADyY9SCaprGrdhf7avf1icTGio3E+8df1D1UTeVg/UGe3vc0n5d/ztTIqTw19alBFwkAZbBmrl5OpkyZoh06dGiolyGRSL7hqJrKybaT1HWLIZxFbUW8mvsqcX5xFLUVofXMWTPqjLg1Nwn+CYR6haKgcF3ydQR5BKEoyjnvYXaYOdZ4jL21e6nuqibOL46bUm8iPSj9tHP9Tf5Miph00e9HUZTDmqZN+arzpOtJIpFIzsHavLVkhmQyKWISec15tNvbKWorIr85nw5HBxaXhRNtJ055jVN14m/yp93e3jdH4kD9AbwN3sT6xRLtG42f0Q8fow8mvYkOewdt9jbquuoobi9GQyPSJ5J7Mu5hcsRkdMrQOn+kUEgkEsk5yAzJZNX2VTwy4RGifKIoaC1gTc4aXKoLvU6PXtGjaRoqKnOi57C/fj9O1YnZYcakM/Fw1sN4G72p6qyiurOa6q5q9tTsOa2Xk5fBixDPEK5OuJpJEZOI8on6SutjsJBCIZFIJOdgWtQ0fjTpRzxz6BmmR01nW9U23JqbzNBMSttLmRA+AQAdOnbV7mJ56nKqu6o5WH8Ql+rCqDeSFJBEUkDSKdd1uB10O7uxu+0EeATgZfAaird3XkihkEgkknNQZa4ixCuEyRGT2Vy5GQWFFaNX0O3sZkHcgr7YwebKzdyefjsN1gYKWgpYmriUbdXbONxw+IzxBZPehElvGuy3c1FIoZBIJJIBrM1bS5W5imuTriU5MJmSjhLWl65ne/V2dIoOk85EiFcIM6NnolN0xPrFEukdybzYeRysP8iq7at4fsHzZIVlsaVyC0/ve5rJEZPPKBYjBSkUEolEMoDMkEzW5Kzh8/LPeWDcAxS3F/N5+ecA3JZ+G2HeYbyW9xqrpq7iW8nfOsUqyGvJ45l5zzAtahoAy5KXEeIVwv66/XgZvL5WVfZQItNjJRKJ5Evsr9vPDzb/QLTj0MRsiBtSbmBJwhL0ih67205lZyUrM1ee9zVVTaW8o5yqzqq+NNqvi0yPlUgkkiEizDuMeXHz+iyJsSFjWZKwBA+9B+NCx+Fr8r3ga+oUHcmByYR5h1HYWjgo7cEvFbIyWyKRSAbw0tGXeD3vdTZXbAZENlNRWxHvnniXSRGTLkokBuJn8mNyxGSSApKGvD7ifBkZq7ycmGvB7RzqVUgkkmGA0+2k2dbMB8Uf4NScxPjGcEPKDThVJwfqD5DdmH1J7qNTdCT4JzA5YjIBHgGX5JqXEykU1jao2g9O21CvRCKRDDEn2k5gdVrx0HsAkBaYxqbKTfxw4g+5PuV68lryLun9fIw+TAyfSFZYFn4mv/N+nVEnajPGhY67pOs5GzJGAWDvhKp9EDsVTD5DvRqJRDIE1HbV0mxtptXWisPtYErEFLZVb+OejHt4MOvBy3rvYM9ggj2DabO10WJtoc3edloMw9PgSaBHIEEeQYR6haLX6S/rmgYihaIXpxUq90LMFPAKHOrVSCSSQaC3j9ORxiMYFAMdjg721u0lxjeGvOY8xoeN5+OSj5kXO68v5fVyEuQZRJBnECD6RfXO0Nahw6g3Xvb7nw0pFANxO6H6IERPBJ/QoV6NRCK5zFR1VrEmZw3XJV3Hx6Uf41SdKCjUdtXiZfDihxN/CMCq7atOqY8YDIy6oROGLyNjFF9GdUHNYTDXDfVKJBLJZebaxGtxa27WlaxDp+hwqiKxxagz8uyCZ5kWNY1pUdN4Zt4zlzw+MZKQQnEmNBXqjkFbxVCvRCKRXEZi/WJ5YNwDOFUnXc4uFBQ0NO4ccyezomf1nTctatoFFdd905BCcS4a86G5eKhXIZFILgOdjk6K24up6arpiwVoaCyMW8i64nUcqDswxCscPlzZQtFRDRv/E7qbz35Oy0loOA7fgFYnEolEYHPZyG3O5UjDEf518l8AGBQDJp2JA/UHeGDcA6zavkqKRQ9XtlDUHoPynbD+Scj/CNyuM5/XXilcUao6uOuTSCSXnDW5a/jniX9ic9l4/+T7ACQHJDMzaiYvLHwBgLKOsis+LjGQK1soxlwPd7wNkeMg+234/KfQdOLM53bWQ82hs4uJRCIZ9qiaio/Bh5ezX+btwrdpt7czIWwCjZZGbk6/mdkxs3l+wfPE+cdd8XGJgcjusQ3HhcVQcxgOvQaWZki7GsbfAUbv08/38IfYKWDw+HqLlkgkg4qqqRS0FNBkbeKL8i/4pPQTon2i6bB38JNpP2F52vKhXuKgc77dY69si2IgMZNh2TOQfi2c3AifroLao6efZzeLwjx71+CvUSKRXBQu1UVOUw5N1iYqzZVsKN+Av8mf2u5aFiUs4sbUG4d6icMaKRQDMXrC5HthyS+FNbH9t7DvZXB8SRScVqjcJ/pESSSSYY3D7eBY4zHeK3qPg/UHWZ29Gk+DJy7VxfTI6Wwo38ChejnP5lxIoTgToWlwzf/C2OUi2P3pv51uXahOqDogYhcSiWTYsDZvbV+20otHX+Stgrc40niE2q5a/pr/V6wuK1anlWsSr6GwrZAfTPyBzHD6CmQLj7OhN0LW7aJR4L6XhXWRshAm3tUfu9BUISCh6RCSMrTrlUgkgBhl+uT2J/nRpB9h0pv4U/afUFUVL6MXiqLg0lyMChrF5srNPDtfVF+PDh5NXkveoLboGEkMW6FQFKUc6ATcgOt8Ai6XheBkuOb/Qe57UPgR1OXAjEcgYmz/Oc1F4LRA+FjQSSNNIjkTvQ34pkVNQ9M0up3d7KjeQUFrAbek3QKAQWfA0+CJp94TL4PXV3ZIHXhNgG5nNzVdNWSGZPL7Q79nTswcVFXFoTrQnBoeOg8yQzM52HCQh7Ie6ntdb6sOyZkZtkLRwwJN085RDTdI6I0w4Tsi22nfn2DL0zDqWsj6Dhh6Bqt3VIOjWzQUlBlREslp9H7T/8GEHxDpG0lhayGv5b1GVlgWGyo2kB6UDsCmik3oFB2qpnJ9yvX4GHwobi+mzFzGPRn39DXLe7vgbXToeGLbEzw55UkS/BNYV7yO9aXreWj8Q/gYffi8/HMMigFPvSc2t40JkRMobCnke+O+xz9P/JNpkVIgzofhLhSXn6BEMHiKWIPdfO5zQ9Ng6W8g+x048RnUZcOM7/e7naxtULFHZFB5+l/2pUskI4UuRxeeBk/uzribZ488y5yYOWyp3MJ1ydcR6xfLa3mvcV/mfQAUtxdzvOU4y1OXY3PZyGnK4ZXsV7gu+TrymvsL4Oq661hfup7rkq/jV/t+RVJAEifaTrA8dTlmu5mNFRsBcGtu9OiZGjmVg/UH+fGkH7Ny3EqmR00fkq6wI5FhW0ehKEoZ0AZowCuapv35S8e/B3wPID4+fnJFxSVo4OewQGedsA6clnOfW58L+18GazuMvRnG3gS6Ht1V9BCZCf7RX39NEskIp7arluL24r5+SutL1/N5+edMDp9Mfks+C+IXoGoqmys2o6KiV/Qsjl/MxoqNTAifQEFrAUsSlrCxYiNLEpZwovUEo4JH9T3eWLERD70HLbYWEvwSCPAIIKc5B4Cs0CxOtJ1AQWFa5DQmhU/ijfw3+sThQN0B8lryTiusW729hKzYAGalhLJ6ewnjogNwqiq51R08cFUy+8taKKgz88j81EH/PC8l51tHMZyFIkbTtBpFUcKBjcAPNE3bcaZzv1bB3dmwtEJHlbA0tLO07nB0w+HXoHwXBKfAzEfBP6b/eFAShI0CRbm0a5NIRgBu1U1RWxENloa+5441HuPN/DfxNnjT4eg45+t16FBRCfYIZmrUVBq6GzjWdIwEvwQqOitYGLeQ8WHjWZO7hi5nF3pFj1tzA6CgMCl8ErF+scT7x+Nj8MHisvBg1oNnFQcATdPosrvYeqKJX6zL5fFF6TjcKs9tKkJB4fsLhPdg9fZSHpmXzMSEIHw9DAR4GQnx9cDXY2Q5aUa8UAxEUZT/Bro0TXvmTMcvi1D04nIIwWivAJf9zOdU7oODr4LbDhNWQNo1QhzyP4LoCTD5u/1xi7IdUHME5jx+edYrkQwDXKqL3OZcOuxCDMx2M+8WvcuxpmMoKCQFJBHoEUh+Sz7Jgcnkt+RjUAxMjZzK0cajpAelU9BacF6C0ouCQphXGI3WRgyKgUcmPEJ6UDqhXqGMCR5zxsB4rzC8tKWYmCAv4oK9+Ti7lqRQHypbLaw7WsvVYyPYmN+AW9VYmhnJthNNPDwvmdGR/e7lz/LqSAr1YUJcEOH+HkQGeJJX00FOdQcPzxu+GZHnKxTDUv4URfEBdJqmdfb8fjXwyyFZjMEkYhBBSdBVD61lp8cy4mcIy2H/K3D4dSEE0x8Wr9vyNLhsMOke4a5697vw7deH4I1IJIODW3XzmwO/Idw7nPSgdI40HOHtwrexu+2EeYXx8PiHCfcOB2BL5RY+Lv0Yo86IXqdnSuQUIn0i+aD4A5anLmdh/EJ+e+C3VHdVkxyQTF1XXV8qq6fek05nJ0n+SVyXfB1/zvkzjdZGFPSoGhgVI4cKA5mVHMn+jjZyqjv43lXJbC5s5HB5K9eOi6LN4sDl1vD1NPDbz0/w8LxkmjrtfJRdi0GnY1JCIJ/k1KFTIMzPg09y6piTGoKfh5F1R6sZHeXP6Eh/kkJ9WL29lGXjInGrGkmhPryyo5Snb8zE4VIxGUZ2NuSwtCgURUkGPuh5aADe1jTt12c7/7JaFGeiqwlaisHWfurzmgbFG+Ho30BvgmnfEwHvyj2QvgxKt8Btb4pzpVUh+Qaiaip5zXnsq9vH2ty1pAWlcazpGJE+kZjtZu4fd39fdlNRW1Ff1tPkiMkAfY8jvCNQNZV4/3jW5K7B4XKgorI8dTmxfrGszl6NU3UyKmgUpe3VTA1ZzMHWT3GqTmK80qkqno9HzDs8kP6fvPS5AprKqmtGY3W4+dO2kj6L4LlNRWRE+3N1RiSF9WZe3laCl0lPc5fjvN6vAvh7GRkV6UtLp52SZgszkoPJrupgSmIQ05OCqWjp5u6ZiUQFeBHiY0KnGz6u6G+U6+mrGHSh6KW7RdRQfFkwzLWw90VoLYWoCaLxoOoUQe+kq2DLr4RVkTR38NcskVxG8lvyabQ0YnVZef7I89R01RDvF0+LtYWV41b2iYRe0bOjegdZYVkUlsaRGe3HtORADjcc5njLceKNi3l1/x6avV7nofEPsL/uAIcaDqJq4vuYSa8nWreYLpubSO84sq2vYtTrGed/Ldntm7FVr0Cng7S4doqKpqCgkBDiTUWLhe8vSOlzG722u5TdJa2khftic7qparOe9p50ihAEvU7HDeOjcKsan+XVMyMlhOYuO8drzaeNqzHo4OZJsXyaW3+Km8po0BHh70GEnycBXsYhFw0pFINJV6MQDHtn/3NuF+S9B/nrAAV0elB0IjNq4S9E3MLkM1QrlkguOVXmKko6SrC77LyU/RKV5krGhowlpzmHpYlLuS75OvxN/iQGJBLkEYTSk+Sxp6SZx94+yjPfziIjKoBdxU388uN8MsYc5nhZAA9Pv5qSpi6KHe9R5v4IoxrK3JCVuC0pfJrThodvKabov2LvGIej4WbwLCEg4e+M0X+f3XmBXJ8VBcAnOXUYdJAe4YeXSU91m5UGc3/cUa9TcKsaCcFe1LRbUTVQNSEUt06OJT7Ym7Lmbq7NjKKw3tz3+7pjNX3uKU0TaZogwpTXZERw04QYDPrTXU96nUKQj4kgbyO+HgZ8PAx4Gs9dYAgirmJ3qdicbtyqRojvxddtSaEYbDRNpNU2F4G7x2xtOA47nwGdERyd4hydEeb/VFgaUePBN2xo1y2RXAJaba3kNuXicDtYnbOak20nWZq0lJ3VO5kTM4ddNbt4evbTLE5Y3Peal7YWExfsTWKIN3tKWnhxSzGZMf4cLG/jlkkxfe6g1dtLCQ+vosHzL6R5LaHGvYWuqjvAmsa3xkfxUflbOC2xuC0iaDwjOZjYyDo+yT9OsDaLhk6bsEIMOmzO/gxGRYGZySHEBXnxj0PVAMQEevKdafE8v/kkTrfW50bS0HhsQeopAWygb32ZMf7sK20FIDnUh9LmbhSEaAR5G1mSEcHctLCvFAKDXsGk12E06ND3WBtii9ZwuDScbhWnW+2zYAK8jUxNDL7ov7cRHcwekSgKBMaBXxS0lkBbObSUwFWrRLfZ3c+B5gLNDaXbRAuQmkOyT5RkxGN1WSloKcClung171VOtp1kccJidlbv5L7M+7gq5ipuSbuFp3Y8hb/Jn2S/8dS2WwGNn/8rt88107vZjony49PceuKDvRkV4UdcVB3l2gcEdTxCYVk48ZHjMHtuw20P4EiFJ46Weag9G6dBp4gNu9QDmEQtNkC4jpJCfAj392B3cQsuVcOo0xHsY+KDo7WAEImadhvvH6nGoNNx5/Q4jHqFFdPi+fkHeZQ1dXPPrEQ0Fdyaxp6SZtbsLOPflo5iS0EDJr0Ot6ZS2tzNjORgjla2kRbuh9Ot8c9D1XySU8eSMREsHB2Oz1nSaF1uDZfbDQ735f+LuwCkRXG5sHcJi6J8pxCJWT8SxXxHXhcjVSffC+lLxbl+UWLK3lf0tZFIhgu9PZamRE7haONROh2drMlZQ05zDrePuh2by0aCfwLXJl1LrF8sAF+U7mJf9TFmh3677zq938jHRPlxsLytx+1jI9DbSEtPQPlCdygvow6rU2VWSgjeJj1jo/0x6nWUNXeTFOrDi1uLSQzxoaSpC6dbXH3F9Djump7I58freGFzMXdOj+PXy7P6rrmnpPm0VNfeojyAx946yr2zEnhxazHxQV40dDpYNi6ST3PrWTYuksZOO+3dTo5Vt+Np1LFgVDiLRocT6G26mI+/j8GyKKRQXG42/Y+Yihc+WjxuLYMd/ycquifeBaOWCWvEM0C0/pB9oiQjgAN1B1i1fRVPTH6CQM9APiz+kE2Vm5gQNoH7x92PTtGREZJBqFconTYnhfWddFicp1yjrsPKgbJWtp5oosveP2LYy6jH7nLj52mgw+oiwt+DdouT9AhfcmvMJId6U9pswaCAiogjzE8PZUpiMM9uKsKtwpgoPzKi/Lk2M6rvur2i9PC8ZEx6Hc9tPonV6cao0/H6yqnMSgkFYM3OEnYXt/D6fefX1qNXMHKqO9Dr4OWtpayYFkdLtwO3prHuWC0/XCjcVlWtFtbn1nG4og29TmFGcghLMiKICfS6qL8HKRQXwLAWCgCnDRryoLtJPHZYYP9qqD4A8bNg+vdEvymDp+wTJRkRrM1bi91l5838N8kMzWRf3T7CvMKYETWDaxKv4VBhENMTo4nw96Cy1YKmwZt7y3GpGokhPuwpaaa8xdLnx48O8KS128HKOUlMig9iQ3497x+uYWpSEHk1ZqYkBLKtqJkxUX6cbOhCpyioaGRE+jO6x1W1bFwkH2fXEepnosFs79ucjQYdfp4GPs2pY2J8ID4eBp74ZzYvrpgIwMfZtXxxvIEXV0zsE4uvQ29w/s7p8fx1bwWPLkghOdT3lHMazDY2FTSwu7gFh1slPcKXuWlhTE4IwniGwPfZkEJxAQx7oeilvQqaCkF1iQhVwUeQ/XcR24icANHjRYA7aoIIcssqbskwZXfNblZtX0VqQCrHmo9h0pkw6oysHLeSG1Ju4HilwuP/OMZDc0X8Iae6nT9tK8HVE0yIC/Ii2MdEdnUHt02JPSVw3euy6Y1dFNabeWFzMSnhPhTUdTI60o/rs6LQ6xQqWiwsnxjDp3n1/P1AJU/flMn0pGDyajr4xbo8XvjORK5KOzVhZGAfp17O5Fr6Ovxhwwle2FLMDxem8vjidKrbrJQ2d+Fyn7rfdtqc7DzZzM7iZpo67Xib9EyIC2RyQhAZUf5fKRpSKC6AESMUIPpD1WWDractQV027HlBxC1UJ4z/Doy+Xpz32b/BnCeEsEixkAwTNE0juymb94veZ13JOhQUNDSWpy7nwawH0blDOVFvJr9WFLClRfj2ZA5BQog3jWY7i8aEs+F4AzdNjObqjMi+a59oMLMhv5HbJscyPTkYk16Ph1HHPw5W8fK2Eu6bncg7Byp5acUkZqX2b/SDsfmfL70WxV3T4/nb/so+S8XhUjnZ2Eldu+2016iaxon6TvaUtHCsqh2r042nUUd6hB+jI/0YHeFPTJBXXyZUL1IoLoARJRQgRKG5CNrKxOPOetjxO1GohwaJV0HdMZjyABx9UxbnSYYVFeYKvij/gleyX8GhioDz1MipFLYW8vi4XxOsywCEe+XZTUU0dzkI9DbyyLwUUsJ8++oOrs+K4tbJsQT7mAjyNhHYU0+gfKmJZu/G27vhfvnxcOJ81tpucVBQ10n3gLjMQFxulcL6To5WtVNYZ6ahU9R6GPUKsUHexAd7Ex3gSWSAJ2kRfiwdG3nRhXtSKEYCXY1iYp7qFHGL3c9DfbY4FjoKOmvh6l+LPlGyA61kGNBh7+BY4zH+b9dbVDr2YVD0LIpfxO7a3Uzy/zZ1HRYemfAAO4ubeXt/JS5VIzPan7Lmbh6Z3995ddm4SDYcb+ClFZOYnXbuzX44WQtfxfmuVVU1ylu6KW/pRj1Lc+pe2iwOiuo7KW+1UNliobLVgtXZnz67cnYS//mtjItarxSKkYKjW8zdtndCXa7IiFJ7skPiZ8HsH4JPuOhCK9NnJUOIU3VyqP4QrbZW/mfPr7C6ulkW8wDXpE9kS0Ej62p/x9Kwp6iui2JfaSt6ReHBq5KYkhhMYb2ZF7cWo1cUXrpzEvNHhQ9ry2Cw6La7KKw309bt/OqTe9A0jQ6rk3qzDbPNxZKMiIt2P8mCu5GCyQfiZ8KRN2DvCzD+Dsj5p2hZXrkHAmIg8xaoOtCTPvv18q4lkotB0zQKWwqxuWy8VfAWNnc3cyNuZf3uFMyNRnYW+TI/6ydsOAad3a1kRPmxNDOSjChRZ7BwdASVrRb0OoX5o0Tn2Fkpoby4YiI51R1XrFD4eBiYnBBMbbuVk41dOF1fYV4AiqIQ6G0i0Nv0tWMU54sUiuGATg82M0x9EA6ugXlPgaMLdr8Aue8JiyLpKqjaB7FTwXhxOdcSycVSbi6nxdbC9urt5DbnckvaLUwOm4Wt2chnuS3MTA5ma7aGoig8sSSZMVEixdvHw8CYKD8CvU38363jT7vurJTQK1YkBhId6EWorwfFjV09VevDi5HdJP2bxJzHRdHdDS9BZBbETYeUhaA3wqFXRaGeoxsO/Bm2/fbU1+56TqTSDqRsh3heIvmaNFubqTBXUGmuZF3xOsaFjmN8yEwOFMH+YhsT4gLYW9qKh0HHz5eN7hOJpDAfpicFf+3q4ysFk0FHRrQ/U5OCCfQ2DvVyTkEKxXBizuMw9kYxCMngIX7qDKD3gM3/AwUfi+wovUmMau0lZpIYiNQrFmU7xOOYSUPxLiTfIFZnr2bdyXVYXVZey3sNf5M/mUFTeHbHZv6518HEuECOVXUQF+RFt8PF53n1mAw6JiUEkRLmO+RttEciAV5GpiQGkxkTgLdpeMQlpVAMRzz9RdwifgZc9SQ4LaI7CdHGAAAgAElEQVRF+bG3IGWRaAdy+DXY3DP0L2muSKF997uw5df9U/RkSq3ka2B32/E0ePKX3L/wcvbLtNpbmR4+lw9K/0EA6bhU2FnczPSkYG6dHItO0eFh0DEtKZhgH2lFfF0iAzyZkRzCmGh/PIxDu1VLoRiuGL2E+ylpnhAMp0W4pvLXwcG/wM4/gNFbdKgFIQpT7hdZU1PulyIh+Vo43U5ymnJI9E9kbOhYyjrKSPRLZVvtRm6K/QF+ZOJWNYx6hVBfE2t2lvEf14/hlbunnNdMBcn5odMpxAR6MTsllDHR/kNmYchg9nBGbxT1FfU5ogivfCd4h0LxJiEi4WNE4Z6jGyxtIpYx9ynxM+kqKRaSi8KpOsluyqbb2c3afYc5ajlAuFcUpeYipgQvZevhWIqbWrhxQjQut8r63HrunpHAiukJQ730byy9ghEd4Eljp53KVstpTRYvJ1IohjNlO+D9++C2v4JfJKx/UoiFXzRU7RftywMTRTwj/0O4dS2kLRGWx9u3w4p/SLGQXBBO1Ulecx5dzi5qu2rJs76D5gijlXbGByxh17F4nN3dLBwdRlq4L6u3l7JydiLrjtVy7bhImcF0mVEUhQh/TyL8PemwOGm1nN9s76+LFIrhTM2R/lhD2Q7RgTbxKqjcD6lLhGXRWCisjgnfEdXbBeth+2+FRVFzRAqF5LxYm7eW1MBUPPQeWF1Wmq3NvHDkBTRUjKZObNX3kFeRjtPixC/mYyLCr2b19jae+XYWSzOjWJwRccUXzw02Ad5GAgYpO0rGKIYzcx7vF4l3vwu3vQk3r4EFPxU1FeNuFfUWmgty34Wjb8G/HgCXA3wjZSNByXlzsu0kT257kuymbNpsbfzh8B/odnXjawjiqtC70DtTabe4mBQfxKNTl3OyvYBnb5/A0p55DwOL5yTfPKRFMRIYaFkATL4P0In4xOT74NBacNng+L960mlNIn7h6BaV35ILQ3WLz3P38xA5HhJmCmvN4Ckq5GuPfmNE2Kk6KesoIzkgGRT4c/afMegMdLu60StGsvxuZNuhVLpsKtOSgsmvNXONPZU3bll02jhPWTz3zUUKxUjgy5uSdzBMewCqD4kNzdYOee+LY6pLZEoFJUL5bghOho4aqPvmbG6XFLcLtv1GfE6haWDvALdTjLGtPgT7/gSx0yBhljh/93Mw76dw6DVor4S5/wYm76F9DxeBqqnUd9dT1lGGU3VysiyBmSE3sbXh79hVOzr0pOvuZ8O+RJxuje9MjWPRmAhKm7t4eVsJ477U+E7yzUYKxUjFw09sXofWwonPQNGD1tNRsmSzOD7+DpFOu/t5uOHFoV3vcMJmFtMGu5vESFqjJ3z+FMx+HCLGCpHY/Zx4nDALdv5eJBHoDKKuxWWD7b8Rx9c/CdZWkc484U6RTFC2A3LfBwUISroogVY1FbPdTJu9jQ57B07ViaqpuDU3Rp2RL8q/ID0onamRU/EyeOFl8CKvOY8TbSdYmbnyjNfUNI0OewcNlgaarc041QFZM975bKl+H6XHGe2yJHKgIg6jXuGemfHMTQvDx8PAPTMTyYwJuKL7M12JSKEYyRg8oLFAzLcweED6Uij8BNwOIRDtlcI9NefHoplgr4XhF9nftnzXc6KCe2DQ+5s2WU/TwNoGO58R7z0krf9Yw3FRizL7cSEOyQuhZBNk3io6+moqRI4TWWaaKj6Xsu3iM40YK66x8wNxrOhzmHSviBVpbiEsd7x1QUt1qS6qO6up6qzCrbnPeI7D7SDcO5xnDz/LfZn3kR6UzjuF73Ck4QgPZT3EwfqDGHQGXst7DQWF+zLvY13xOmJ8Y9DQqDRXsjhhMUVtRZS0l2B32dlcuxlFp6C5PfDuWk5jXSY6UxuTk03MTQvD38vIhLhATAaddDFdgcg24yOdj34kYhPLfgel20WDwdx3hUtFc4FnECTMhkl39W+K4++AgFjwi4KaQ6dWcvcGzkdqZXev8CXMBkuLmPlRvAmaTkBISr+lEDEW6vNg1x9EJpnTIoZF2Tu/+h46g3BThY+FiAzxWe9+VrisVFd/nOiGF2HsctB9dc6IpmlUd1ZT0VmBSz3zQJteNlVsIt4/HoDX8l5jTswcNlduRkPjkfGPUGmuRKfo+KzsM1AgwisCP5Mfha2FGPQGHhz3IEfqj7Cnbg+eBk+sLiveulC6HJ14ND9Ga1sYXh4OdLHPkhE0hZ9O/Q/GxwZguIBZzpKRgZxHcaUw0CLI/wg+/L4oxivZAmjimy6KqO6uPgzjb4fR1/W/vq1CZFCVbocpK0VrkJEoErueg7BRYOuEz1bB7B8JS2Lvn8DRCfN+IsSh9qhwJekM4LIDPf/+Tb7gsgpro60cxt4MHr5w9G8w8S5htR19UwS6FcAnDDobxOtNPuJxW3n/esbeDFm3iQB4cDIExJ1RMNbmrWV00Gh8TD602doAKGorotJcyczomRS3F1NhrsDitGBz27C77TjdTko7SpkUMQmL00Jucy4GxcD1ydezqXITY0LGcLD+IMtTlxPrF8vL2S/jUl3o0GHQGfAx+tBmF/eK9EpgWui1VHeVk3N8Em0d/viYdHQ7VBZNNJMc08rPZj0qezZ9Q5FCcaWy81nRQDBxjrAWVLdwRYGo9EaBGd8X1d7WVmgpFt+wG44LyyRqPFz/nNg4jV7im7HeKP4oetFzqm+A0pc3jy//W1J6XFw9P880pe9CXV+aJjZ4l1XUj9jNwgoo3w27fi/eCwgxUF3ifNUpeme5HVB7rD+W4x8jRFPvAUdePz1G8eUgdu+1K/ZA9QGY9pB4z0VfiBqXvretE+95wop+UTZ4iEaO7VVw1Y/7Tt1WtY2f7fxZnwupoKWAV3Nfxc/DjxZrCxoaCgpeBi98jD6Y9CZsLhsdjo7TLA8dOnHcbSPAI4AuRxfh3uHUddef9nfjofjgb7uRKI8MMuI03t9joLVLISbQk5p2GzOSg8mvM7P6zsmnzKaWfLOQQnGlsus5aMyHnH/A2FsATQgAOtFMsLFAPIcifqYs6g/YOq1ik0ueD9MeFNcrXA/1uRCeIVw3vX556HdlZdxwnotTxPUVnfh2reiF+2f7b4SwJS8QYrLlaVj4n2J9TSdEvYjbKTZ8t7PHSjoDvRt86hLRaVd1im/63U3iuM7Q4xoyCqur+qCY/dFScu73lv/R2Y+HpIjYh+oW6/UMgu7G/vN6LYvetc17SjznH8NLx/6Eh94DFZW1uWtJ8E8gvzUfgDi/OLJCs0gLSsPhdvBm/pt9YlLUVsSa3DU4XA5UVKZETMHX5MvO6p1oaASYAuiwd6DT6XrEREFzhIKxCUUBPR64XAac9d9halwSR4p12F0K0xKDya0xM39UGDtPNvPYwhTcKsNu3Kjk0iGF4kqlN8Yw5X7Y97LYVNOvEYFWNEi4SgRrT9lsFdAbICQdGo+LjXT+T4Urpdf1EpR47m/Z5yMYZ9twK/aIaX4uh9jME+eAf7QIyIekgteACV7THjx1k+69r61DiGDBR9Baeup9g5J63EKaEKeUhSIgnXW7uMecHwuLw8NfdO41eAkLwOAhRE3rceG57cKKcVpESrKlTaQldzWI+yTMEu+teBMUfAJd9T33T+SfWgeJY25hWuJiANoVjR8f+F+y1U7uzLibD4o/oMMuitUmGYP57pz/RhlggRW1FfXFI3bV7CLBP4GSjhLmx85nV80uliQs4bPyz5gUPokAyy10GHawp/lDAIw6I4FKGo2u/L7rudpngDMUW8scIgNMLB0bxXuHa3hkfjLLJ8ZS3tItK62vAKRQXIkMDEQD/P1O8fP656CjErb+P+F+0Zsg/Vo4uQHQRLpnL4pObIq96baxU0Xg29ImMqeKN4uNU6eHqQ8IC+DwG5C6uN+lExgvNnhFJ443F0NHNYQkw/5XYNYPRSZRY36/+LgdIgUVejb2MnGNtoqe6ypi3SGp0FQgfP7mGuH/72yAHv9+z5sQgjP9ISEgR//a/3yvC2bKAzD9e9B8UvwZ4A46bzRNuL26GsVanJZTj3c1wq5noa0MFYVP/AOIn/wA+2v30mow8YGlHJfqxNkTu1AQQe0V4TOYOe6u0263vnQ9n5d/ztSIqRS0FpxiYbyS/QrXJV/HwviFbCoq5MOK1wnQxxPgo1DVVYSKCwU9toalKKYWXB2TUG3xpMSYeWLePLYUNpIW4ccdU+P6Bg3tKWkmp7pDWhTfYKRQXIkM9Pf3/g7C3x+VBe98R7huDB6iHqDXYvCPAXO12IQ9A0VsY7AweIkd0mkVv7u+NAZSZxQupLPhFSziFBHjoPmEcCklzhHHdj8HcTOgeKMQvvAMaMgVx67+Ncx67NK+F2u7EERzrRC3XndTwhw4+QUqGi5gd0AYv/Q1kI6RPUZNCI6iYNQ07vRN44PuMp4KyCJlzk8I8AjA38OfnMYcfrbrZ9w+6nbeOP4Gj4x/hNtG3YbdbcfutnOg/gAnWk+wNGkpHxZ/iGqN5u9bo3Cp4JH4O3SmFlxdqVirHhBrVZyExeznfxcKi9DP08D4uEDZIvwK43yFQtZRfJMYGPz9ciD43e9C1h0iXdPSDB/9QDyfulhYIolXQfkuiO4Rl17LAsRzTQUQPxsqdotRrTUHxXG/KFGjkL5UWB4gNsuizyEiUwR5U5eAX4SID7idIvOoMV9kGHkFigBzUJKo+xj4rV9nECLhGSjEoDeDC00cS18GZVth/s+EC2rM9ae6teY8IQoS5z4lLJTcd4WLqS5bxG0utVB4BYo/oeni+ruf7w+Q+4SiHP0rx/1DuKq9kXs0P/4QHESQ201bj0WhQ2FW2UFmKzqOJ8ZzQ6h4LwfqDvDzXT/n9/N+z7SoaUyLnMaq7avIDM1kWtQ0AG5KvalvGVGeoyht6qZ5TAWfFe9C0dmw1d6C2ypSavWKgk4x0dkwl8J6M4vGRJAe4YdeZjZJzoIUiiuBL/eKAuHmaa8WAd0lvxQxCIcFag+Ljd3DrycIDtQeEUJSvR/mrhLPNeQKl1VnnTg2/o5T76noxOt7g7m9NBwXcYSxN4tv+oHxIh4Couut290//tXZLYLRju4BwqWJ+1Xth8Ke60SM7RcIk4+Y2eETBmnXwFVPwJ4XIfc9EZMo3gQL/l3UT5TtuDxpwAYTdNbDbX+DkCRoKUEddS2fdVfyG1sxYwOT2a13sbjbwn82tfAPfz8UFF4P8OWJ0ACej17K/YnLhOvKN5y8ljyemfdMnyhMi5rGM/OeIa8lr+85TdNoMNspb+mmy+aisN7MxtLd+ER9Qmfp42huP3Q6Fx5R/yRafxW3ZMzjYHkrNqfaN+NaIjkb0vV0JTPQVaW64a83g0+oCCqXb4eoiVC2DbyChIhk3dYf1M64SQRyfcNFHGHiXf2poAOzj4o3nrk1xpcfV+zpj1H0prT2xip6RUJnELGRHleNiJUYYdn/iewt72DhVhtI2Q4xm2PBvwsLojeOM+cJYeEMRvW5qvJezl/4fd4aFruNrKOTRFWHwWnlsXYziyxWXECdQc93IyOYGzSG/8rsyTrz8IPglFOr6QfgVjVq261UtVqwOESMqLDezMvbSvALqKW+KQxhqwg7zeRTisG7mqdmPMztU+PxGiYzmSVDw/m6nmSp5ZVMbxtzEBvwvR/C5Huhcrdw1zTkCl++ohPuncL1wsUz64fi95v/Ag9sEcfy3hNio7ph70tw02pRLX7jn2Dvi0J8nFb41gvim314BmTeAsueEe6pmsMwahlMf6S/U+vcVUJQNFXEIDJuEhu82wmJc+Gu92Hct2Hjf0LLydNFAoQ1teIf/W6m3vnigyUSQK2lnmNdldwQPJ6PNTOjVD3tmpNQnSebokeT6+nFAU8P4lxuPq+u5bqafPFZAdg7Wb3hKHt2bxUuPVVl9fYSVm8v5tfr89lV3MyJ+k5Wby/hjb3lWBwuPs2tw6lq1DdFoKDDpFfQ68QfnSOVlWPv44UtxRytajvnuiWSXqRFITmVXiuj5ki/tdFbANf7PJy9SO5cx862MZ8rCA/99Q9zHhfHBz4+n+sPIZ2OTo42HsVWtoNfFr+Dj2cwc/WBZCie3HBiB3o0UHQcGLWI+tYibqgrFsJo9IIxN0DaNexp8eKxrRovLlCYGGniuePevHKwjfnpodw1I5HCejN/3HISl1tYWm5VIzXMh/JWCzdPjCGnuoPC+k5umxLLsswoChs6yYoNkBlNkpGf9aQoylLgeUAP/EXTtN+c7VwpFJLhxtq8tYwOHo1O0dFma+OPu/+bJs3J7Ni53JR6E8kBycRv+52wpDK/LYohQbjjTnwGnbUie8roDenXsNP7ah7b7881MQ4+rzYyM0JlQ7WB8bH+HK/tREW4ofSKwqzUEI5WtvPwvGQAXtlRyu1T4vjX0RpZFyE5hRGd9aQoih54CVgCVAMHFUX5SNO0/HO/UiIZHmSGZPL4tse5N+Netldvp9ptxUPvQUZIBkkBSaKp3w1/FCe7ndBaBu0VpwbmW8tw5v4L4/EPmKVbzx/9FrCq7AaWJnmzRN3FSdNkjlWLUw06hZ+O6yKy7RCPn5zP9VlRGPQ6Xt5Wwuo7JzM7LZSFY8JlEZ3kohiWQgFMA4o1TSsFUBTl78CNgBQKyYggyjeK7479Lq9kv4JDdWDSmXgw60Hmxc4jwT/h1JP1RghLF4kCbeXQXoHZYqXeGYol+X6i8cfVUcesro3s9tzMu9Vz+R/XDXRoJsaYGilwhHN/cDb3lv2JR52Pc8P4aLYXNeHjYeDluyb1icLAcaVSKCQXwnAVihigasDjamD6EK1FIrkgOuwdlLaXYtQZ+4YDLYhbwNTIqaQFpZ39hQYTHT5JFJv9sVtL8XJWowAH9ROp6zCxXrmHW7WNfFu/nTtMWyk3JBDsamR7wGLmd27kI3UGt8wezTVTgzg4NY7H3jnKjROiT7mFnCUhuRjOmvWkKMpfe37+aPCWc/4oivI9RVEOKYpyqKmpaaiXI5EAYgZ1fks+Xc4u/pzzZwAWxS1id+1uLE4LOqX/v9zq7SXsKWkGwOpwk1Pdzl/3lfP24Xos/inUhUzn3fpIniydyK9cd+N0q2ihaTgVA25FR4yrhgDFwo32j/BSXHyiziLYU8HYXMAsfT4vLk8ip7pjSD4HyTeLc1kUkxVFiQZWKoryJl/qKa1pWutlXFcNEDfgcWzPcwPv/2fgzyCC2ZdxLRLJV7I2by1jQ8bibfDG6rLycvbLdDm7yArN4ub0m7kp7SZ+tvNnPDPvGY4UhZAVG0BWbACPvXWUny8bTUOnjX2lrRytbGfl7EQ+y6tjQ34DnTYXoyP9WJ5q4FsNe4mu+pj6uGV8Zh3LnS1/BM2NhooJJ38M+5BPa0KZ1XYQQlKYFTGWWckh8OaToidWYHx/ZtieF6F0G9z13pB+bpKRwbmEYjWwGUgGDnOqUGg9z18uDgJpiqIkIQTiDmDFZbyfRPK1yAzJ5Mfbfsy9Y++lwlxBhbkCg2JgXtw8UgNTifaN7qumzoq9gcfePsqvbhrL+LgA/n1dHqomMpauSgvl1V1ldDvcjI325/qsKNLC/Qhq3Edozi4qU+8mumIdd4wKxNSmgluFUddBQx6B7Xms6HgCoiZAwYeial3tqXQ/9CpM/q5Y7J4XYcMv4OpfDelnJhk5fGV6rKIoL2ua9sggrWfgfZcBzyHSY9dqmvbrs50r02MlQ8navLXE+sZSbi7nLzl/wea2oSgK0yOn8/jkx8kIyTjlfJvTzbuHqnj6kwJSwn0oqBPjV31MerodbhTgjqlxLBoTAUBQ4z7G7f0RNYtfJnTcYvxq9sBbt4qZHqOWier3jJtEmxKfENFWRUM0JgzLAHNVT3PETWKEa3PR5WmKKBlxXLLK7KEQiZ77fqppWrqmaSnnEgmJZChZm7cWt+rmv/b8F1anFRUVDQ00mB0zm/Sg9L5zNU2jqtXC3pIWogK8mJQQ2CcSAN09LThunRzTJxI6HcRbC9FueZ2kqdfi52kEnQJGT9Hk8Zpfw7yfibka424VbdVTFve3+2jKB99ImHKfaNrYXCRaskx9YPA+JMmIZ7hmPUkkI4JRQaNYtX0Vi+IXsfb4WtSejrt6nZ5E/0QMOvFfrMvuoqDOTIdFZEHlVLdzsLw/zBfgZaDD6sKgU0gI8UGvU4gJ8iI+2BvP0T859aY1R+COt/qr32c+KgY9lW0T/bWO/6unceIBMWyp5ST8425hYSg60e3306cgZZ4YzToMK9olwwvZ60kyIujNEBqYKTTw8ertJYO+JrvbjlFn5L7M+/ik9JM+kZgaOZVfzf4V/7H7P9hXu5/ixi7++6M89pe2APBpbi1/3FKMW4UIfw/Swn3osLqICfTEoFc4XmtmVmoI6RF+Z54PMbBHFwjrIXO5iEmUbhWjbMt3iSaOC34BKP1DpUJSRa+to2/ABw+LpoMux2X9nCQjHykUkmHDQBHoZU9xMy9uPUlauC+PvnUEq8PFo28d4dmNJ3j0rSO4VZXvv3WErNiAQV2r3W0nuzEbi8tCq7UVd89GnBKQQmFrIXuKHNye8HM+KzpAeXM3iSE+/HHLSX72rxz+dbQWP08DXkY9YyL9ONnYzZgoP5q7HPxwYSr7y1o5XHGBDfvKdsB798Ftb0LSfNE8Mf9DUe09kOYi0eZdZ4CAeGGJlO+E7uYzXlYiAel6kgwTNE1jVIQvj/7tCLNTQ5iZEoLNqfLcppM8PC+Zgjoz42ICeHVXOZkx/jy/uZgZycG8vK2Uh+cls+5oDUUNXcxJDcHfy0iwt4kD5a2XpfGdzWUjpykHi8tCaUcp7xS+A8CU8CkUthWycuyDrMn9HZajK3h4+lI0TSO3pgO7S6Opy8GoCF+q26x8a3wU647WcveMeJ68ehT5dWYee/soj8xPvvDq6YEzR3qtDa8A2Py0aDCYvlQMk3LZ+zvT+keL9vEmxFySkNSeEbZygJHkVIZtU8ALQWY9jQxWby8hKzaAaYnBdNvddDlc7DrZRG51B4vGROBWNQrrzby0tQSXqmLQ6fj+gpSe1wpBKKzv5JOcOtLCfTnZ2MX1WVHcNCGGwnozq7eXMjE+gAnx3igKvLarll9cn0a4ry8nGrouiWA0WhopaivCpbqo7arl2SPPYnPZuC7pOpYmLaO+w8pz2U+zOOo71Ju72XM4C28PPc1dDmIDvUgN92VbURPXZ0XhbdIzJzWUb42PRunZnC/pnOqPfiTiFbf8RYyMPfKGmB8emCAyo1QneIXAzO+LueEhKSK2ETVeBMuHcVdeyaVhRDcFlAw9vZv6wG+1vZsYcNZjD8xJwqVquFQNu9ONw61ic6pYHW48jToe+uthHpqbzOhI/77N/eF5ybhV8YVldKQ/i8aE80lOHZrmZt3RGqparSzLiiS3poOtJ5qI8PfgZGMXyWE+bCpoINhbT5PxE2ZPCGZHaSn762LBlsLsiSd58egm6urjGJNcT2b53aSFRlFS7+bjnFoSQnzOe0N2qk6K24ppsDQAUNdVxx+P/hGXCxZGrGBiyEQ6OsII1QWzIOgJ8moKSDQuw+aqxeJ0My7Gn6szInhlRxnXZ0Wxo6iJF1dMYm562Cn3uaQtNoKT+oPeZTug8BNRS+FyCFHY+XvR0nzzL8WI2IKPxOscXeC0wcc/EFaK5IpHWhSSPmxON112F1aHm/2lLfzyk3z+7ZpRZET786etJewtbeHHS9JAgxe2FPOtrCjcGiSGePPS1hIemZfMqMhzj9XsFYf5o8LYdqKJSfGBTEsKJjbIm6pWC/86WkNFSzcmvQ6bS72g9etNLXh5uHB4HENzBuMd+RmO7jj03sW4Wq8hI95NgD6GPQV6dL7ZLB2Tzs1jZ3Gy/SQrM1eedr21eWtJCkgi2ieaBksDqqZS1FZEXnMeh+oPgaIwJ/AhPt4bzIqZQcxMSKWw3syLW4vxNhlo7XZg0CnMHxXG7uIWNDSeXJLOLZPjKKw3D24n1945H/EzoalQDEFqOA6NhWBtgZIt4B8LtjYxQrZ4I1z3h1PH2Eq+cYz4eRQXghSKi8PlVmnqstPS5aDd4sTmdJ9yfOCmvrmgEQ2NxxakMjrSnw359fzzUDUzkoPJqzHz8DxhJXwVqqbxzoFKtp5oIj3CF02D4sYuvvyvMMjbSIfVSY+hgQKMjwvgeI2ZqYlBBHobMHi2UtZkx9sD6toULE4LLV0OUDRAA70Vg1cZep8S9F5VOFvmYwrdArhRFB3TwhdwrGUH6Ya7WTljKkGeXgR4eeHW3NhcNo41HeOV7FcIYiyTIqYQE6Lwl9w1KICq6QnUJnFD2jW0tPnxj70OxkT6kVdrxq1qBHobsdjdTE8O5t6Ziby5r5zD5W28cvcU5qQJYbikbqYLpbsF6nPE3HOA3X+EmoPid7ejfxZ5dxNc87+ioEPyjUMKxf9v777jqzzORI//5lT13ntBBSSEECCwwXRDbBO3xDV2bJy4JMFO4jjZjbO5W3Jzk00ct3WKGyaJu7PBccc4YEzvRRIIUEdCEur1SDpl7h8jCTAgQIUjofn6o4+lU+c9Qu/zzjwzz2jn1NzZw7FGG3/ZWkZtaxe5iUGkR/jxcX41R2vbkEBquC/XZEby0qYStpU0kh7hy7KsSJ79ZxE58QHkV7WSGe3HtpJGZiYGEunvyYK0MD7Orybcz4NwPw9abHZabHaK69qparZhEIKali4crpP/5gK9zJgMgsYOO1JKjAbB7AnBfH6kHoPoy6sKBOBwyd7A1MJ105xEhqg1CV3OTvbUFFBwogijz2Ekpwc8l8MHV1ck0mUGYztGz2P4myLoki10Vd5J+oRjTAiKIsorCYMAk8FAta2E3ceqiPWLZkfLa9idDgwGicSJyRWEXdqY4X8Hs2IysTqTeW5dMfXtPRgE3DQ1mtqWLnZVNLFiwQRmJAQxMcqP/KqW0bWrnNMOJw6qDZJqC+CL36pkN7J3f3Kz2o42/r7OOLMAACAASURBVEqIylF5C210cdpVmfpB0jkKrV9fvmFSpB/FdR00dfRQWNNKbWsXO8oa2VnWxINzE9lX0URxfScALTY7G4/Wc6KtG4DCmjbKGzpxSsm2kkYEsK1ELRjbXtoENPHuvuPnbEOQt4UATzNCwJJJ4UxPCKS9y8HKzWVcPSmc1XursDvBJATF9R0AuCQsm6ySvm/vqiTY28K2kkbmZ0iiQhw4pYvDLbvY1fAZPS4bHr7eOKTAaYvD4FmBvzGOZvtxcJkxWOoR5maEkLjsvjTZPJDdSSxKj8Tbz8n6mrdYEHEbUV5JlLUVsb7mLTK9bueLPTGEp8bSII8iAactFmluYJrfHQQZJvLxLk/2HTsEQKS/B9UtXVQ129h3rJmZiUFcPyWa2CBPhBCjr8S30awS195hagiqb69yn1BorlD5C7tNrfYu36yGrjwD3d1qDVSAaChWv5u4kd+BQfcoxoENR07w8Ot7eeBLSeSvT4umsLqN7WWNDPTPIC7IE39PMwer2wCJv6eZxg47wd4WWrvspIb7crS2nSsnBBMf5EVjRw9rD9WSmxDE7vImHpqXxMRIfz7OryYxxPu0IarCmla2lzayq6wJh8uF0yVxSTAbBHfMjOPvxa9CdwwLE2bz3v7jzE4zcaD2MJMnFtLkKKWyvZIkvwlkBGWz9thHhLrmUcMGpgbP5UDTF4QYMjnWswMA6TLj6glFYMBgPYEw9CClEdEdh4fBn25qiPELo7q7kDBzBrYeSQv5uHBglD702M24OhMxd16BwxaLrQc8zUZ6nE7MBgMrFk5gU1E920oaMRsFL949nfnpYSP82x0mG34LVh+1mrvg76qwYM0BtRXron+HgFi1qjs8Q5UC0dzD5YKWCmgoUsHCIwDirxj0y+kexTh0tplKHxw4zhdH6nhgbhLPrisiO8affZUtBHiaWbWlHAF4mI3YevMTU+P8yatsoS+PPCspiG/PSaKwppWjJ9rJTQgm1NfKwepWDlW3nXZ/aX0HV6WoWTwS+OBANcuyIpkYqRbDXZMZeVp7jUaBj4eJA5UtPHFLFp/k1/D+gWoAzCYDX8mMoLp7Clvbn2F9/T7mTZ3OnhM7MUTupaBZ4mm2Mi1sGldEXcG6inXcn/UtKloriPW5jyivJJLr4/jg0F41jCIcGIx2hMdxkCZwmulpWIjR6xgGUwc2YyHC2MWxrhoAjvfsBac3js40HE1zsHfEoepTQpehm9ggBzdmpVPZ1ElyqA8Av19fjNPlwmIUgMBiHkPj+vN+DMUb4PNfq/xE0VrIuQf2vwGf/gyufBhiZkBNnipP3lGvp81eau0n1ESEno5L/tY6UFxGsmL8+2fS7KtopqG9m7d2VfLQvCSSQ30I9DKzo0yt+PWyGFmQFsqW4nqcLonFaEAiKahqQyIAiVHAvmPN/UGgL5FdWNPKmoJaZiUFsadC3Z8e4dffUyisaeXzw2qtwOeH68iM9md6fCCeFiNeFhPeViO+VjOeFiN/2lDMH+/KoeB4Cx8cqCYjyo+SunZmJQWx4vW95GZXIioXYgheS17PHoSfC5d0YjF4IKUkzi+OVQWrWJ65nEnBk5gTPQdfiy8CQU7UJLaX1NPS0obJ5ygunCCN2OuWEBRUR2ScmcKieaROOIanK4bd9ZvwdKTR4bARIKfidLmwSiuN3RJzwE6kLYkr0gQ2034K27dS7/gJ102eDUBpfTsuKelxSh5ZOIFZycFja3/q0i/gf5fDbX+FkFTYNxk2PalKmB9crabSTr4FQtJgyzNqvUXROpiw8PTX0Osuhl93mxoa7HTf6vkxdMmjnc+VySEszQjngb/sZmtJAy9vLuPayRGU1XfwyJt7qW3txsuiropdUrKpqB4pBUaD4JFFE5idHEyPUw3/ZMX4YTUZQMIfPy/miuRgrp0cSWuXnRc3lvKLGzP4zdem8JuvZfHixlI67U4yov3ocTp5aVMpT92WzRO3TOH5u6bxwhcl9DhdZET5kxjiTZivB5697ehL7D756VEevy6dDx+5ipfvncG+Yy18Z34SdXVheIatZ1r4ZOwuu0pUC0GP7CIjJIO15Wt5JOcRbku7jdlRs5kUPIlY31hifGOI9olmcshUvPyO4WX2ZJrf1/EwWfGOWEeUNYu5MXO4JjMBly2GI443mOA1h6aaK0kNikNGPkfWhEY6On2Ijt/NVSnB3H/lZPYejmR+yHf5asRPONx0EF8PE5nR/hTXdWAxGXhk4QRe3V4B0L8/9Zhw6spu3wjIvR/m/QuYrDD3X1SvLO8d2PBrmPldiJ4G79wDhR+p55d+Ae/cq/IY2vBw2qH2IJRtdmuQAJ2jGPO+PNy0pqCG7722G4cLpscHsLeiBWfv73heagh3zYzn5c2lbCtpxCBgcow/t02Pxcdq4rF3DuBwuZgS48/SzEiyYvx58K+7mZEQSG5iMA/NSx5wId6F3H++Y1iZv5LM4EwcnaqMxeIsye92/Y5Nxzed9pxk/2SKW4q5e9Ld/GTGT875+fzn1v/kk9JPeGbBM+RG5rKjegffX/99liQs4b5JD1LSWMs7R9/E1hHBtn0pZCW4OFBmYNaUo1S1VzEtaDFTY6Lwt4RgFEYKa1qparLxrasSifD3xMdqYktx/Wm9hy//PGY57VB9ADpOwP63VM8CVI2ouY+pqbObn4bsO9VeGH2BRhsaKdU6l/rD6ncwkEuUo9CBYozbUlzPt1bt4tElKVw/JZonPz3MW7sqewePTspNCOSBucn9iewZCYFsKqrHw2xk+ZUJvLq9gqUZ4Xx1StRFneSH247qHaxYt4IV2Su4JvEa/mfv/7C6aHX//QYMCCFwSifLEpex+fhmnpj3BLmRuWd9vb7Ac+r9O6p3kN+Q37/IbktxPd97bQ//cWMSsSGC/eU2nlxTyY+WJJGbEIHZKDAZDfhYTfh7mrGYTu+IDyY4jhlSwr434JOfqBLmRz5Wt0mp9r+w21TyO+ebkHGTCix66GnwbM1qynLXBfZEdaC4cOM5UAC8uLGY//dhIRMjfTlY3UZauKpt1KdvUdx1kyP4pKCWZ+/IZl5qGFuK67lv1U667C4eWTiBR5ekufEoTvpLwV94YtcTzIiYwd7avThx4pIuDBgwGUwIBLmRueTX5/Ptyd/mpbyXBgwW53NZn+iHqm9I6drfgcVbzYTa+CQYTepkZjBB+lfh6CeAUHWl0q9zd6vHHqcd6g5Dy7GLe3z9ERWwU5cO6m31rKdx4k8bign1sTAzKYhtJY14W4z9QcJsECDAYjTw+LXp/OKDQzy6JIV5qSenbJqNBnLiAnl1ewWzkoNHxVDJNyZ+g01Vm9havRWjMOKSLlICUvhK4lc42nSUTVWbuDfjXgDyG/L796IebKA4WzAYdWse3OXU3EVXq1p7cdWjKoCUbQKXAyq3q+6rkHDiEAQlw+GPIWba6UNROtl9di1VUHfo/MNMHfVQtRuO71Gfs7MHhFFV/B1koLhQOlCMcXmVzaw9eAKDOLnnMkC4r4W7r0jAYjTwhw3FPDQ/mZfvnd6fXO0bR3/+7mmjZly9b5joWNsxDtQdwMvkRaejE3+LP4/kPEKSfxIPZD1w2tBRX3AYbJDQzuPUk7qHH8TPVmsrGoph/k/Vnhe1eeq2Kber25tKVY/j7Xvg1j+fLEr4zr26yOCputvUinjbAHuPtFVDxTb11be3iE8EJC+EiMmqdteERSPeVB0oxrCiE+14W030OF1n5CQmRvoxPy2M9AhfMmP8+4dR+oLAgcqW04LClckh/bN03BEoVuavxCRMPLL+EZwuJ8kByRQ0FCAQtPS0sLt2N/Nj5wMqKOjA4CYmi1pPYfVRvYbmMkicpwLB7lUw5Q61ojt4gipf/tZdMG25Km+uk92K06EWzDWVwRlVzlABpGyT+kybStVtIamQ/Q0128wv6uRjzV6XosU6UIxVRSfaKavvoLPbgY/VSHu36kmYjYLZycFsK2mktcuOyWg46zDKaBtuyQzO5EcbfkSCXwKHGw9T0FAAwA3JN+Bj9uGtwre4KvoqHSBGA4MBOhtg63Mw54cQNkkFj81Pw77X1PBI7gNqFXfyInX7tOXqMcOhrxLuWBvWkhJaq1Ruwdlz5n11hXD0U7WJlMsBQUkw9W6InQne7h0G1YFiDCquU0Gi1WZn77EWOnucGISqjSQQ3DEzngfmJbutdzAY08Kncf/k+/n9vt/3byuaE5rDDRNuYGrYVBbELRhSHkIbZlV71LarkVPU9zHTYd6/QtFnavX2J/8CCXPh2Ha10jv/b6r0x4TFap8MjyFsXRudc3IYa6wMa3U0qOmuX57N5OyB8i1w+BPVO7N4q9llSfMhMN4NDT07HSjGmJK6dkrrVJB4Yu1hTrR2YzIYMBjgKxmRfHaohsfe2c/zd08bEzN2+vISvhZfYnxjMBlMSCR+Fj+ONB/B5rBhNBj1cNNoc+qVe8IcNRsqIlN92ZpUL6L4n+AVrDZJCpukbgPV07D6gm+kGkYxe17ceyfOVUHhnXth+rdg18ujd1irqwXqjpy5YK6nUwXVwx9BVzP4x8KM+9VnabK6p60D0IFiDOibvhnl70lJb5D45UeHaO60MynKl6Mn2nlsSRp3zYpnT0UMD/51N+/vPz4mehOZwZk8+vmjfDPjm6yrWEdrTysCQY+rh+UZy/nZpp8NaeqrdgkYzWrsvKlcDZ94BkJkDkRMUWPtX/xWBYpJN0F9kQoU3W3qq/6I2ss7ejqkLFE9jb5tWDc/C7MfUQGgb7gJTg4xTVgMX/wG5v5k9AWJjgaVX+ioO/32rlYVHI6uUWtQwifDrO+qxPQo3qtcB4pRrC9AZMX4851X93D/VYl09jhZtaWMzh4nt06PwemS3JwTw12z4jH35iOev3vamCkdkRaURkZIBn/Y9wec0olA8L3s79Fh72BVwSpWZK/QQ05jRWC8ChK1+ZBxg7pt0vVq97y8v6mFZEFJqox5bK5agwHqanrNT6G9VgWRukLY9JRaxPfW3SqABKfAG3eqk+ntr8EHj8KBtyDrNtWjSLzK/cFi4+/UfuS+kdDdqm6rLVAzwRLmQOH7qj6Ws0cd/6Qb1OcxBugFd6NY35TVny+bSFWTjefWFfVvD3rLtBiWZkQQ4GUmOzYAk3Hsle3qdnazu2Y3u2p38WLeiwAsil1EbmQuf9r/J749+ds4pOOs25Rqo5iU6mq6/qiaAQVqQ6Qtz0FjMdgaweKr9lHwjVInzpAUNTQ14Woo/FBtwZp+nTrRbvzdyeSv0axmVNXkQeo1qqptbT6s/T8w/T6Yelfvpksm1fOoO6Su2I1mMFrBaIEtzw5fMrynU/WY6g+DZxAcfBdm975G4QdQk6+CX22e+lwS5qgA4Rd9/tcWBjUMZbSq2WYGk1o3Ifr+1qXaPyR48EPMesHdZeDK5BB+vmwiP3+3gNkTgunuDRK5iUFjPkg4XA7y6vLocnaxtnwtAEZhZGPVRrbVbOPZBc/qXsRYJURvzyFczfBpr1UnvLSvqJ5C1u1qY6TidSqQmDzU0EtgoioHEhCnTriBCeokGz0NyjaqE2VAvAoSEZNh2j3qyj0gTlW23fmyyok0FIPBePKkXbnz5JX9pOvVCfvNb8DCn6sr+9p8WPMzWPYktNWqHkrUVHVSFwbVxtIv4Pg+9Z49ndDTrvIPji6VgC5eBwjI/Bp88QQ4u08GyRMFkLxYBT6fc+xPIgyqN+YZqPI3Vl819XWUDEfpQDGKldS142s1M3tCMGsKagGYkRDIweOtVDZ1Mj8tfkwGCZd0UdBQQLu9nTcL36SstYx5MfPwNHnySdknGMTYOybtLCze6sq9s1EFjPAMNZ22r+dgtKiTaWi66n10NavnNVeA1Q8+/5Xafa/teO9jjqhhqeAJ0FgKO15U27SGZ6iTcGCC6n34hKl8ydS7eq/mC9R7xuSq78MzYPb3Yd1/qcDSUqV6F42l6uTcelyd7JMXgneoumLf/DRMuhHW/VIFm1OFZ8BVj6l8yd5X6V8bYTDDxK+qdrXVnBkkTFa1eM4nXAWIUbwvuQ4Uo1TRiTbK6jvZX9nEpwdVkDAbBfNSQ7l2ciTP/PMoqRG+YyJh3advhpOf1Y+mriaONB1ha/VWQjxDmBwymb8c/AsPZj3Ia4de4+PSj3WP4nLhFaQK13U0qBN/bYHqOWTcrE6yG3+n1g2YPCB9mdqgp2KL6hW09W6vW1d48vUaitT/i/+pvkyeatW4yaoSxE1lahho32twfK96/KQbVBDY9CRc8TBEZatd/Mo2quEcv6iTwSD/f1Wp9aK1Ktlc+L66/dRhJVBtbixVuZfKXb37jffyDFLDZRZv2PniyecZzODXO9vLI2DU9BjOR+coRhkpJYdr26hstLG/sonfry9GSrg+O4qUMB+e/6KEP3wjB6NBjLmidTuqd/DDz3/IPRn3EOwRzH/v/G+6HF0sS1rG+mPreWr+U8yKmsWO6h08tuExPdvpclT6hSrtkXGT2t9i9vehYHVvAvxmlZsAlafY97oqUVG1S61mTl6ghmRqC1QOJDhFFdHraee0vXyN5jMXtJ2ht5aB2RvsHSpY+Mf0lskQKkj5xUJzqZqJ1dOhVkdHZKneQWOxWjzXN7zkE65qMUnnydeOmKxyFFPvUgvnAmLV4wzGYf9YB0tXjx2DnC5JwfEWTrR209Ht4D/fL6DZZufBuclMiw/Ex8OE3emi4HjrmAoQoALgkaYjbKjcwMq8lQghaLe3842J36DD3sHV8VczN+ZkcvHLpcC1y8CpC+P6Fsq9cScg1RX/ofdOXnlvflp9H56hhpgqtqjhnfAMdX9fziE4GTb898nA0HdyjsqB47shdBLUHVSJ78gsVUyv8AN1gvcKUUNLrZVqqu6FsvionkvwBBVY0pfB4Q9VUT9hUDOx9r+hehwxuZByNcw7954p7qST2WPM79cXsbeiiezYAKIDPHly7RFabA7SI3w50daFt9VETlwgFpOhf1/qscIlXRxqPERdZx3J/sl4mDxo6GpgRvgMZkXOIj0onQjviNOeoxfYXYZOrUTbRwjI+Bpc/wxMvhX+tlzlBpb+SuUlHDaY+ZDKRTQUnwwU4Rkn8w8GI7iM6uTfl+huOKKu4l1OVcV276uq51G1W53M42dD9T5VohtUPsTlUN8Hp0DD0d4ZRqJ3/w2nGjZKvQZK18OCx0++/4b/VkNJ7bUqmHn4Q8G7agV6bT4s+vkl/ZhHgg4Uo0BnjwOLSbCpqJ5NR+vxtpposdkxGKC0vpObc2LIiQ84Y8OcsaDb2c2hhkM0dzcjpeSFvBdo6GogMziTQ42HqLfVnxEktMvUl6eeVu1RayL6AkfyfFVttmoP5Nx9+mOTF6heg6NbXbm7HFC+Gbb8j9or49B7auGeMKrE+dS7VSLZ5VBfTWUqH2G0qKq3fSf5jU+oACOMYDQAQj02aprqkUjUkJjFWw2FFb53MrcC6v8Tv6ryGjMfUj2Zv38b7nj9zPIi7l7nMQRj78xzmalr62Z7aSOJwT7cmRtHt8NFQ0cPEonJYODRJSncfUU8VtPoGde8UHWddeys2UlzdzMu6eLFvBc52HCQGeEzeHDKg3xnynd4ds+z7Kje4e6mau4w5wdnnjwT5559LYPRrE7WXkHgGw7+0Wp20m1/VSVDjqxRQz4Wb0haoBLPBqMa9jF5qYRz/GyV8A5KgtA0NVMqMhtcLhWkFjyuhoiMJlXe22iF8EyV1Aa1liF8siq90Xpc5SxcLij5XK0Oz3sHDv3j9KDQV26kas/IfY6XgO5RuImUkrKGTopPqE2GSuraeXtXJWajgR6nC6cLrpkSwTevSBiRIHGuLUJfKXiF5RnLB9w69Hw67Z2Ut5ZT26lmazldTl4vfJ28+jxywnK4e9LdmAwmvp76ddKD0vXKa21w5vxAXbGv/yUs+b9w5YqTV/BzHj15cv7f5WcvIJg4F1K/ogJE34ldShWUPv813Paqmq2140X453/B1f+lSor0vYbdpmZR9b1W4lXq9syvnd7OxLljujcBOpntFt0OJwePt9LQrhJweyuaeHFjKV4WI512B0g1a8JqNvZvLDScpJRsrNrI4xsfZ2bkTGZFzkIIwVO7n+JrKV/j7cNvszBuIf9+5b+z/8T+C56B1NbTxnN7nyPEM4SUwBQAepw9/HH/HylqLuK6xOtYmrAUgzAwJXQKAR4Bw3pc2jh0vpLjgylJ/uXnbHpaLfZzOU4+58u1qC70tUcZPetplGrs6CG/qoUehwspJR/l1/Du3irC/aw0dfZgEAZ+vDSNlHAfvvuauiIaarDo6z3k1ecR4xNDkGcQe0/s5b2i96hqr0IiMRvM5ITnYMDAtpptmISJ+bHz+fzY58yKmsX3sr+H1WjlvaL3mBg8kSmhU5BI7E47W49vpaChgAVxCzjSdIRX8l9heeZyvExevJD3Ak1dTcyJnsNtabcBkBaYRqRP5LB8npqmDZ6e9TQK9BX1uzI5BKdLUlzXzqcFNZTWd7AoPZxVW8rYUdZIbkIQUQEeNHb0sHBiGN+YqQr8PX/3NN7ff3zI+0pkBmfy6IZHWRq/lJfyXuLq+KtZW76W7NBsytvU9ooGaaDB1sDhpsPMiZrDCdsJPin7BLPBzOSQydR01HCk6QgHGw/y5uE3WZ65nNTA1NMCA0BqYCrfzPgmz+9/HrtL7QF8Q/INLI5fDECcX5wOEpo2xoy6HoUQ4j+A+4G++ryPSyk/Gug5o7VHsaW4nm+t2sV35qt1EHsrmvjThhKuSglhS3EDrTY7N02N5prMCIQQhPlZyYzyx2AYvtWaUkrKW8v5tPxTXsl/hYnBE9lZs5OskCwONR7C6XIie/8DCPIIorWnFZfLhQsXZoOZh6Y8BNAfEHbX7mZP7R7mx85nU9Wm/iBR3FSM2WhmQ+UGmrtVOYaFsQu5KeUmAOL94kn0Txy2Y9M0bWjG7NBTb6Bol1I+caHPGa2Bosvu5LdrCnl5UxmzkoLIr2olK8aPLcWNeJgMPDA3iawYNU4fE+RJWrgvYhiX9NtddgobCmnoagDg/eL3+bT8U0wGE47eOeMGYcAojP1X/+diFEaujLqStKA0Wrpb+PvRv+OUTnLCcjAajOyp3YNBGLC77MT4xFBvq2dezDw2H9/M8szlLE1YSrzf6NmxS9M0PfTkVi6XpKKxk9KGDq5ICqHgeCvbShrx9zSzpbiRSH8PfrAohWAfK0JASpgvccHDu0n6S3kv4Wn0JNo3Giklq4tWs/7YekBVbg2wBtBp72R6+HS2VG9hRvgM9tXt6w8YqYGplLSU9Pc4XNLFxqqNbKzaeNr77Dmh8ijBHsGkB6UT4xvDhyUfcn/W/aQGppIelM6qglVkh2brQKFpY9RoXUexQghxQAixUggR6O7GXCiXS1LVbGNLcQNFJ9pxOiWFNa3sP9aCxWigxWYnws/Kvy+bRLCPFaNRkBUTMOxBwiVdeJm8eG7fc+TX5/Ps3mdZf2w9AoHZYObG5BtxuBzkRuSypXoLc6Lm8M2Mb7IsaRmgeg+g9t+WSGaEz8AkTFybeC23pt2Kh9GD65OvJzUwFQCTMHHnxDu5Pf12uhxd/fkLb7M3d0y8gyfnP0l+Q/6wHqOmaZeOW4aehBCfAWdbjvszYBtQj1oT+QsgUkp5xgR+IcQDwAMAcXFx08rLy0euwefhckmqW7soq+/A1uPsv/1QdQv/s64Yh8uFlJAW4UNhTTu3To/hxuxosmID8LEOX6duZf5KKlor+ktibKvexuuHXkciMQgDMyNmMj1ien8S+p/l/yQtKA2BYEnCEtaUrQGgoKGAI01HMBvMLEtahku6MAgDq4tWkxGcwcK4hVS2VbK6aDUzImb0r4+4I/0OAMwGM9E+0cT5xemS4Zo2io3qoScp5eILeZwQ4kXgg3O8xgvAC6ByFMPXugvncLqoarZR0dhJt9112n317d38eWs5PU4XRoPgoXmJ5MQF8enBGv6x7zhfnRI1LEHi1IVzmcGZPL//ed4rfo+JQRMpbCrsT1JPC5/GnRPvBMDf6s+1iddyW9pt+Fp8+0/ms6Nns716O+uPrScnLIfDjYfJDMkkwS+BTkcnAB+WfIiXyYudtTu5acJNLIxb2D/z6aroq1gcv5hQz1CMo6hCpqZpQzPqchRCiEgpZXXvjzcBo27MorPHQWWTjapmG07n6TFKSsnGonre2nkMIWBafADzU0OZGOkPwEPzkrkxO5oDVS3DUtwvMziTFetWsCJ7BYvjF7M0YSmri1ZzoP5A/2NmRMzgUMMhqjuquTbxWvyt/md9rR3VO/jxhh/zu3m/Izcy97Ry33Nj5pIbkYuPxYe/Hvwri2IX8eCUBzEKI9PCp5EVmsXBhoO6bpOmXYZGXaAAfiOEyEYNPZUBD7q3OYqUksaOHo412ahv6z7rY5o6e/jz1jLyq1pJj/Bl+ZUJBPtYATCbDGRG+RHsYyUp1IcrJwzPauv8hnyuT7qeJ3Y9wYbKDeTX52MURpxSDYHNCJ/BfZn3YXPY+MXWX5Dsn3zOFdb5DfmnrcDOjczliXlP9JfYyK/P54PiD3gw60HePvw2VW1V/Y+dFTmLWZGzhuWYNE0bXUZdoJBS3n3+R106dqeL6uYuKps66Twl/3AqKSXbShp5Y2cFDpfkztw45qeFYuid6urvZWZytD8e5uEfjskMzuSV/FdIC0xjR80ODMKAq3czFaMwklefh5SSq+Ovxt/iP2BdpbPVcuor9/3lzYRyI3L15kKaNk6MunUUgzES6yhau+xUNtqobe3C6Tr3Z9Ris/PXbeXsO9bMhFAfls9OINzPo//+2CAvUsJ8hnUR3amklPxqx694o/CN03oSD099mABLAE/teQqAZxY8M6QT+rmKCOrNhTRt7BrVyezRyu50UdPSxfFmG21djvM+fkdpI69tL6fb4eLW6TEsTg/vDwhGg2BiWitYewAAD/lJREFUpB8R/h7neZWh+UfxP3i/+H0CrYE0dTdhFmbs0k6DrYFvT/42Cf4JfFz68ZArtA7U29A07fI27gOFyyVp6OihpqWLuvYuXK7zP6e9y8Gr28vZVd5EQrAX981OJCrAs/9+T4uRrBh/fD3MI9hyaOxqZFfNLmJ8YihsKiTUMxSbw8bciLmsPrqaRXGL9Mlc07QhG/eB4uiJdo41dl7w4w9UNvPnreW0dzu4MTuKazIjMZ4yrBTobWZy9MjvRtfj7KGwoRBfiy+FTYUEWgN5fObjVLdX80LeC6yYukLv86Bp2rAY94Gib53B+XTZnby18xgbi+qJDvDk+4tSiAs6fUV1VIAn6RG+I5aP6COl5FDjITrsHbxz5B0sBguPTn8UT5Mnt6TdgkSytXorf1z8xxFth6Zp48O4DxQX4khtGys3l9LQ0cM1mRFcPyUKs/H0HsOEMB8SQrwvSXsq2ipo6mri3eJ36XZ242H0oK6zjrkxczlQd4CX8l7iiXkXXFNR0zRtQDpQDMDudPH3vVV8drCWEF8rP1maRkqY72mPMRhgUqT/iCet+7R0t1DWUsaBugN8UfkF82PnMzlkMqsKVtHt7Obtw2/rKauapg0rHSjOoay+g5c3l1Ld0sW81FBumRZzxjoIo1EwJSaAIG/LJWmT3WmnoKGAxq5GXjv0GrG+sVyffD2R3pH0OHt4/sDzPJj1oA4SmqYNKx0ovsThdPFBXjUf5VXj72nmB4tSyIw+s+SF2WRgalwAfiM8s6mPlJKDjQex2W2sKliFUzq5N+NevM3etHa38vbht/tXTOdG6JlOmqYNHx0oTlHR2MnKzaVUNtm4IimY22fE4n2Wwn0eZiNT4wLOet9IWJm/kkBrIIEegXxc+jElLSUsiV/CgboDhHiE8B9b/0OvmNY0bcToGtCoXMS7e6v45YeHaOtysGLBBL41J/GsgcDLYmR6QuAlCRIr81eyo3oHkV6R/Gbnb/is/DPWlK8hzCuMLce3MD1iOmVtZeesz6RpmjYcxn2P4uDxVn675jDVLV1ckRTMbTNiz1n+28fDxNS4AKymS1NCOzM4kx9t+BH3TLqHW9NuZWX+SkAltH+Y80NuSL7hrFun6kV2mqYNp3EdKP6xr4ofvb2fQG/LOXMRffw8zUyNCzhjWuxISg9O596Me3nxwIuYjSdzIYviFnFz6s3Dur+2pmnauYzrQDEvNZRbpscwe0IQUtio7zqOUzpwSScunJiEGbPBSqiPD1kxsZc0SLT2tHKg7gBJ/kkEeARQ1V6FURi5Ov5qNldtJq8uT/caNE27JMZ1oAjwsrA020Deid3nfIyfh4kQizfbayrxt/oT7BlMhFfEaVf4w62lu4UDdQdwSifvHHmHqvYqDBgwG8zMiprFLam36IS1pmmXzLhPZjvkuavE+nuaSQj2xmAQSCTN3c0UNxeztXorhxsP02HvGPb2VLdXs79uP07pZE3ZGjZWbSTII4jvZn+Xh6c+zDO7nwHQCWtN0y6Zcd2jGEigl5nYQK+z1m1ySRfVHdVUd1QT6hlKvF88PhafIb3fS3kv4WfxI8wrDID8+nw+LPkQb7M3j+c+jrfFm5ywHNKD0vv3gNC9CU3TLgUdKM4i2NtCTKDnBSWL62x11NnqCPUKJc43Dl+L73mfcyopJbWdtZgMJp7a/RTLM5djd9l5Me9FhBDcmX4nHiYPJgZNxMvspWc0aZp2yelA8SVhvtbT9pa4UHWdddR11hFgDSDWN5Ygj6ABA43D5aDeVk95azk2h40EvwSyQrP40/4/4XSpXeq+NflbeJg82F27m3mx8wZ9TJqmaUOhA8UpIvysRPhffJA4VXN3M83dzZgMJgKsAfhb/fE0eeKSLqSUdDm7aOxqpLW79bQS53aXnXZ7O3aXHYCFsQvxMHmwqmAVT89/ekht0jRNGwodKHrFBHgS4msdttdzuBy8WfgmcX5xpAam9t9+pOkIFa0VLI5f3H9bdUc1rx58lYq2CozCiECwsWoj26q38czCoe11rWmaNlTjftaTQBAf5DWsQaJPnF8cz+9/nnUV6wAVJF7JfwWDMPBZ+WfUdNSwqmAVv9r+K2o7a/EwevDd7O+yOH4xdpcdl3Rh0L8iTdPcbNz3KGICPTlhG5ky4amBqVyXdB2ri1ZT2VbJwYaDXBF1BR+WfEiYVxjvFb+H2WhmUdwiTAYTKYEpAGyu2swDkx/g9cLX+bjsY92j0DTNrcZ9oDAZh6cMhtPlpMPeQZu9jfaedtp62uiwd2Bz2Aj2CGZn7U7Vk6j4DFBDU0sSljAvZl7/TKkjTUdYVbCKJ+c/yayoWcyMnMljGx7jmoRrdLDQNM1txn2guFhSShq7GiltKaWstYzazlrqbfU0djXikq6zPkcg8DB60OXsIt4vnnsz7iXEM+S0xxiEAZvdxtPznz5rJVgdKDRNcxcdKC6Aw+WgqLmI/XX7ya/Pp7m7GQCLwUKEdwRxvnHkhOUQYA3Ax+KDj9kHH4sPJzpO8EbhGyxJWMLa8rXMCJ3BzpqdHKg7wMK4hf2vH2ANIDkgmbkxc894b71uQtM0d9OBYgDVHdVsqdrCjpoddDo6sRgsTAyeyNWBV5Pon0iUdxRGw7lLjhfUF/QHieWZy0kNTCXGJ4YPSz4kxjeGGREzSPBLINAj8BIelaZp2sXRgeJLXNJFXn0e6yrWUdJSglEYmRI6henh00kLSsNivPDE9+L4xXxW/ll/kBAIbk65mdzIXKraqpgaNnUEj0TTNG146EDRy+lysrN2J5+Vf0ZtZy3BHsHcOOFGciNyL7osx6muTbyWEK8QgjyC8Lf6YzaYyQ7LHsaWa5qmjaxxHyic0snOmp18VPoR9bZ6on2iuTfjXrJDswccVjoff6s/Ud5RhHqFYhB6LYSmaWPXuA4Uu2t382+b/43KtkqifaJ5IOsBMoMzh7RznKfJk5TAFII8goaxpZqmae4zrgOFh8kDJNyXeR9TQqcM6crfIAzE+sYS7xevexCapl1WxnWgyAjO4KkFT1HTUTOk17EYLWQEZ+BvPfee25qmaWPVuA4UwJCv/gOsAUwKnnRRs6E0TdPGknEfKIYi2ieaCQEThpTT0DRNG+10oBik5IBkYn1j3d0MTdO0EacDxUUyCAPpQen9e1trmqZd7nSguAhGYSQzJFOX3NA0bVxxyzxOIcQtQogCIYRLCDH9S/f9VAhRJIQ4LIRY6o72nU3fimodJDRNG2/c1aPIB24Gnj/1RiHEJOB2IAOIAj4TQqRKKZ2XvoknWY1WpoROwcvs5c5maJqmuYVbehRSykNSysNnuesG4E0pZbeUshQoAtxaY9vb7E1OeI4OEpqmjVujbQlxNHDslJ8re29zCz+LH9lh2ViNw7+ftqZp2lgxYkNPQojPgIiz3PUzKeU/huH1HwAeAIiLixvqy50hyCOIjOCMIRUG1DRNuxyMWKCQUi4exNOqgFMXJ8T03na2138BeAFg+vTpchDvdU6R3pGkBKbomk2apmmMvqGn94DbhRBWIUQikALsuJQNSPRPJC0oTQcJTdO0Xu6aHnuTEKISuAL4UAixBkBKWQC8DRwEPgG+d6lmPPUtpIv3i78Ub6dpmjZmuGV6rJRyNbD6HPf9EvjlpWyPxWAhI0RXf9U0TTubcb8y29fsS1x4nNqbQtM0TTvDuA8UkT6R7m6CpmnaqKYztpqmadqAdKDQNE3TBqQDhaZpmjYgHSg0TdO0AelAoWmapg1IBwpN0zRtQDpQaJqmaQPSgULTNE0bkA4UmqZp2oCElMNaodsthBB1QPkgnx4C1A9jc9xJH8vodLkcy+VyHKCPpU+8lDL0fA+6LALFUAghdkkpp7u7HcNBH8vodLkcy+VyHKCP5WLpoSdN0zRtQDpQaJqmaQPSgaJ3O9XLhD6W0elyOZbL5ThAH8tFGfc5Ck3TNG1gukehaZqmDUgHil5CiIeFEIVCiAIhxG/c3Z6hEkL8SAghhRAh7m7LYAkhftv7OzkghFgthAhwd5suhhDiK0KIw0KIIiHEv7q7PYMlhIgVQqwXQhzs/fv4vrvbNBRCCKMQYq8Q4gN3t2UohBABQoi/9f6NHBJCXDFS76UDBSCEWADcAEyRUmYAT7i5SUMihIgFlgAV7m7LEK0FMqWUWcAR4Kdubs8FE0IYgd8D1wCTgDuEEJPc26pBcwA/klJOAmYB3xvDxwLwfeCQuxsxDJ4BPpFSpgNTGMFj0oFC+Q7wayllN4CU8oSb2zNUTwE/AcZ0AkpK+amU0tH74zYgxp3tuUi5QJGUskRK2QO8iboYGXOklNVSyj2937ehTkjR7m3V4AghYoDrgJfc3ZahEEL4A3OBlwGklD1SyuaRej8dKJRU4CohxHYhxAYhxAx3N2iwhBA3AFVSyv3ubsswuw/42N2NuAjRwLFTfq5kjJ5cTyWESACmAtvd25JBexp1EeVyd0OGKBGoA17pHUZ7SQjhPVJvZhqpFx5thBCfARFnuetnqM8hCNWtngG8LYRIkqN0Sth5juVx1LDTmDDQsUgp/9H7mJ+hhj9eu5Rt004nhPAB/hf4gZSy1d3tuVhCiGXACSnlbiHEfHe3Z4hMQA7wsJRyuxDiGeBfgZ+P1JuNC1LKxee6TwjxHeDvvYFhhxDChaqfUnep2ncxznUsQojJqCuN/UIIUEM1e4QQuVLKmkvYxAs20O8FQAhxL7AMWDRaA/c5VAGxp/wc03vbmCSEMKOCxGtSyr+7uz2DNBu4XghxLeAB+AkhXpVS3uXmdg1GJVAppezr2f0NFShGhB56Ut4FFgAIIVIBC2OwYJiUMk9KGSalTJBSJqD+MeWM1iBxPkKIr6CGCa6XUna6uz0XaSeQIoRIFEJYgNuB99zcpkER6qrjZeCQlPJJd7dnsKSUP5VSxvT+bdwOrBujQYLev+ljQoi03psWAQdH6v3GTY/iPFYCK4UQ+UAPcM8Yu3q9XD0HWIG1vT2kbVLKh9zbpAsjpXQIIVYAawAjsFJKWeDmZg3WbOBuIE8Isa/3tsellB+5sU0aPAy81nshUgIsH6k30iuzNU3TtAHpoSdN0zRtQDpQaJqmaQPSgULTNE0bkA4UmqZp2oB0oNA0TdMGpAOFpg2z3mqrpUKIoN6fA3t/TnBvyzRtcHSg0LRhJqU8BvwR+HXvTb8GXpBSlrmtUZo2BHodhaaNgN6SF7tRiznvB7KllHb3tkrTBkevzNa0ESCltAshfgx8AizRQUIby/TQk6aNnGuAaiDT3Q3RtKHQgULTRoAQIhu4GlW6/odCiEg3N0nTBk0HCk0bZr3VVv+I2rehAvgtY3x7XW1804FC04bf/UCFlHJt789/ACYKIea5sU2aNmh61pOmaZo2IN2j0DRN0wakA4WmaZo2IB0oNE3TtAHpQKFpmqYNSAcKTdM0bUA6UGiapmkD0oFC0zRNG5AOFJqmadqA/j9omDYodvC6GQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_model(m)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Illustration of GPflow's multi-output capabilities" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Multi-output kernels (MOK) class diagram\n", "![Multioutput kernels](./multioutput_kernels.svg)\n", "\n", "### Multi-output features (MOF) class diagram\n", "![Multioutput features](./multioutput_features.svg)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**NOTE:** `MixedKernelSeparateMof` is not implemented, but can easily be added to the framework." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The shape of Kuu and Kuf and the underlying conditional code depends on the Mof and Mok classes used.\n", "\n", "| Feature | Kernel | Kuu | Kuf | conditional | note |\n", "|------------------------|-------------------------------|---------------|---------------|---------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n", "| InducingPoints | Mok | MxPxMxP | MxPxNxP | fully_correlated_conditional | This is the default. For certain kernels this is very inefficient. In this case q_mu and q_sqrt are 1 x MP and 1 x MP x MP |\n", "| SharedIndependentMof | SharedIndependentMok | M x M | M x N | base_conditional | These two classes are in a sense redundant, because we can achieve the same behaviour by using the single output Kernel and InducingFeature classes. They are added for illustrative purposes. Thanks to the conditional dispatch, the most efficient code path is used. |\n", "| SeparateIndependentMof | SharedIndependentMok | P x M x M | P x M x N | P x base_conditional | We loop P times over the base_conditional |\n", "| SharedIndependentMof | SeparateIndependentMok | P x M x M | P x M x N | P x base_conditional | We loop P times over the base_conditional |\n", "| SeparateIndependentMof | SeparateIndependentMok | P x M x M | P x M x N | P x base_conditional | We loop P times over the base_conditional |\n", "| SharedIndependentMof | SeparateMixedKernel | L x M x M | M x L x N x P | independent_interdomain_conditional | Inducing outputs live in g-space |\n", "| SeparateIndependentMof | SeparateMixedKernel | L x M x M | M x L x N x P | independent_interdomain_conditional | Very similar to the above |\n", "| MixedKernelSharedMof | SeparateMixedKernel | L x M x M | L x M x N | base_conditional | This is the most efficient implementation for MixedKernels. The inducing outputs live in g-space. Here we use the output of the base conditional and project the mean and covariance with the mixing matrix W. |" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.8" } }, "nbformat": 4, "nbformat_minor": 2 }