diff --git a/diffphys-code-ns.ipynb b/diffphys-code-ns.ipynb index b3aff5a..1b673e8 100644 --- a/diffphys-code-ns.ipynb +++ b/diffphys-code-ns.ipynb @@ -1,354 +1,792 @@ { - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "Differentiable Physics with Fluid Simulations.ipynb", - "provenance": [], - "collapsed_sections": [] - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "o4JZ84moBKMr" + }, + "source": [ + "# Differentiable Fluid Simulations with ΦFlow\n", + "\n", + "... now a more complex example with fluid simulations (Navier-Stokes) ...\n" + ] }, - "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "da1uZcDXdVcF" + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": { - "id": "o4JZ84moBKMr" - }, - "source": [ - "# Differentiable Fluid Simulations with ΦFlow\n", - "\n", - "... now a more complex example with fluid simulations (Navier-Stokes) ...\n", - "\n", - "Only for colab: \n", - "Execute the cell below to install the [ΦFlow Python package from GitHub](https://github.com/tum-pbs/PhiFlow)." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "Z6YoAVKebfNV" - }, - "source": [ - "!pip install --upgrade --quiet phiflow" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "da1uZcDXdVcF" - }, - "source": [ - "from phi.flow import * # The Dash GUI is not supported on Google Colab, ignore the warning\n", - "import pylab" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "BVV1IKVqDfLl" - }, - "source": [ - "## Setting up the simulation\n", - "\n", - "Like before ...\n", - "But now let's set up four fluid simulations that run in parallel, i.e. a mini batch similar to DL training. In phiflow we can directly pass a `batch_size=4` parameter to the `Fluid` object. Each fluid simulation is fully independent. In this case they differ by having circular Inflows at different locations.\n", - "\n", - "Like before, let's plot the marker density after a few steps of simulation (each call to `step()` now updates all four simulations). Note that the boundaries between the four simulations are not visible in the image, but it shows four completely separate density states. The different inflow positions in conjunction with the solid wall boundaries (zero Dirichlet for velocity, and Neumann for pressure), result in four different end states of the simulation." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "WrA3IXDxv31P" - }, - "source": [ - "world = World()\n", - "fluid = world.add(Fluid(Domain([40, 32], boundaries=CLOSED), buoyancy_factor=0.05, batch_size=4), physics=IncompressibleFlow())\n", - "centers = [[5,10], [5,12], [5,14], [5,16]]\n", - "world.add(Inflow(Sphere(center=centers, radius=3), rate=0.2));\n", - "\n", - "for frame in range(20):\n", - " world.step(dt=1.5)\n", - "\n", - "pylab.imshow(np.concatenate(fluid.density.data[...,0], axis=1), origin='lower', cmap='magma')" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "rdSTbMoaS0Uz" - }, - "source": [ - "## Differentiation\n", - "\n", - "The simulation we just computed was using purely NumPy (non-differentiable) operations.\n", - "To enable differentiability, we need to build a TensorFlow graph that computes this result." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "mphMP0sYIOz-" - }, - "source": [ - "%tensorflow_version 1.x\n", - "from phi.tf.flow import * # Causes deprecation warnings with TF 1.15\n", - "import pylab\n", - "session = Session(None) # Used to run the TensorFlow graph" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "3mpyowRYUSS4" - }, - "source": [ - "Let's set up the simulation just like before. But now, we want to optimize the initial velocities so that all simulations arrive at a final state that is similar to the first simulation from the previous example. I.e., the state shown in the left-most image above.\n", - "\n", - "To achieve this, we create a TensorFlow variable for the velocity at t=0.\n", - "It is initialized with zeros (like with the NumPy simulation above) and can later be used as a target for optimization." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "NlJMJikaHOL6" - }, - "source": [ - "world = World()\n", - "fluid = world.add(Fluid(Domain([40, 32], boundaries=CLOSED), buoyancy_factor=0.05, batch_size=4), physics=IncompressibleFlow())\n", - "world.add(Inflow(Sphere(center=centers, radius=3), rate=0.2));\n", - "fluid.velocity = variable(fluid.velocity) # create TensorFlow variable\n", - "initial_state = fluid.state # Remember the state at t=0 for later visualization\n", - "session.initialize_variables()" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "t-NDwXRCYHjw" - }, - "source": [ - "\n", - "\n", - "Note that we actually created two variables, one for each velocity component. If you're interested in how this magic works, have a look at the [Struct documentation](https://github.com/tum-pbs/PhiFlow/blob/master/documentation/Structs.ipynb)." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "2q5gfaH2YHr6" - }, - "source": [ - "[print(grid.data) for grid in fluid.velocity.unstack()];" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "vSdGIEzCgq5-" - }, - "source": [ - "If you look closely, you'll notice that the shapes of the variables differ. This is because the velocity is sampled in [staggered form](https://github.com/tum-pbs/PhiFlow/blob/master/documentation/Staggered_Grids.md).\n", - "\n", - "The simulation now contains variables in the initial state.\n", - "Since all later states depend on the value of the variable, the `step` method cannot directly compute concrete state values.\n", - "Instead, `world.step` will extend the TensorFlow graph by the operations needed to perform the step.\n", - "\n", - "To execute the graph with actual data, we can use `session.run`, just like with regular TensorFlow 1.x. While `run` would usually be used to infer predictions from a learning model, it now executes the graph of simulation steps." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "wSrIezfWHjcQ" - }, - "source": [ - "world.step()\n", - "pylab.imshow(np.concatenate(session.run(fluid.density).data[...,0], axis=1), origin='lower', cmap='magma')" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "iJc6UdYHhtOH" - }, - "source": [ - "Let's build a graph for the full simulation." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "b9xHtdDQRrjL" - }, - "source": [ - "for frame in range(20):\n", - " print('Building graph for frame %d' % frame)\n", - " world.step(dt=1.5)" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "2VQ92g2rs6wM" - }, - "source": [ - "When calling `session.run` now, the full simulation is evaluated using TensorFlow operations.\n", - "This will take advantage of your GPU, if available.\n", - "If you compile ΦFlow with [CUDA support](https://github.com/tum-pbs/PhiFlow/blob/master/documentation/Installation_Instructions.md), the TensorFlow graph will use optimized operators for efficient simulation and training runs." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "TA6Ibs-mXsTc" - }, - "source": [ - "print('Computing frames...')\n", - "pylab.imshow(np.concatenate(session.run(fluid.density).data[...,0], axis=1), origin='lower', cmap='magma')" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "IClfRMfoyGUa" - }, - "source": [ - "Next, we define the *loss* function (also called *cost* or *objective* function). This is the value we want to decrease via optimization.\n", - "For this example, we want the marker densities of all final simulation states to match the left-most one, called `target`.\n", - "\n", - "For the optimizer, we choose gradient descent for this example." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "7KPpyIwjYETi" - }, - "source": [ - "target = session.run(fluid.density).data[0,...]\n", - "loss = math.l2_loss(fluid.density.data[1:,...] - target)\n", - "optim = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(loss)\n", - "session.initialize_variables()\n", - "\n", - "print('Initial loss: %f' % session.run(loss))\n", - "pylab.imshow(np.concatenate(session.run(fluid.density).data[...,0], axis=1), origin='lower', cmap='magma')" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "AALD66-N0U5F" - }, - "source": [ - "With the loss and optimizer set up, all that's left is to run the actual optimization." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "pvvF6xqmaRLX" - }, - "source": [ - "for optim_step in range(100):\n", - " print('Running optimization step %d. %s' % (optim_step, '' if optim_step else 'The first step sets up the adjoint graph.'))\n", - " _, loss_value = session.run([optim, loss])\n", - " print('Loss: %f' % loss_value)" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "SQBtCmhZaYYj" - }, - "source": [ - "pylab.imshow(np.concatenate(session.run(fluid.density).data[...,0], axis=1), origin='lower', cmap='magma')" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "HP7aDQfpKifp" - }, - "source": [ - "Now that the optimization has done its work, we can have a look at the now-optimized initial velocity field." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "vRaBt5vGdSEY" - }, - "source": [ - "optimized_velocity_field = session.run(initial_state.velocity).at_centers()" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "i7ZahlUudex8" - }, - "source": [ - "pylab.title('Initial y-velocity (optimized)')\n", - "pylab.imshow(np.concatenate(optimized_velocity_field.data[...,0], axis=1), origin='lower')" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "Pqw5BDxmdkut" - }, - "source": [ - "pylab.title('Initial x-velocity (optimized)')\n", - "pylab.imshow(np.concatenate(optimized_velocity_field.data[...,1], axis=1), origin='lower')" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ooqVxCPM8PXl" - }, - "source": [ - "This notebook provided an introduction to running fluid simulations in NumPy and TensorFlow.\n", - "It demonstrated how to use the gradients provided by ΦFlow to run simple optimizations over the course of several timesteps.\n", - "\n", - "For additional examples, e.g. coupling simulations with neural networks, please check the [other demos](https://github.com/tum-pbs/PhiFlow/tree/master/demos)." - ] + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/thuerey/anaconda3/envs/tf/lib/python3.8/_collections_abc.py:743: MatplotlibDeprecationWarning: The global colormaps dictionary is no longer considered public API.\n", + " for key in self._mapping:\n", + "/home/thuerey/anaconda3/envs/tf/lib/python3.8/_collections_abc.py:744: MatplotlibDeprecationWarning: The global colormaps dictionary is no longer considered public API.\n", + " yield (key, self._mapping[key])\n", + "/home/thuerey/phiflow/phi/viz/display.py:80: UserWarning: GUI is disabled because of missing dependencies: No module named 'imageio'. To install all dependencies, run $ pip install phiflow[gui]\n", + " warnings.warn('GUI is disabled because of missing dependencies: %s. To install all dependencies, run $ pip install phiflow[gui]' % import_error)\n" + ] } - ] + ], + "source": [ + "!pip install --upgrade --quiet phiflow\n", + "from phi.flow import * # The Dash GUI is not supported on Google Colab, ignore the warning\n", + "import pylab" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BVV1IKVqDfLl" + }, + "source": [ + "## Setting up the simulation\n", + "\n", + "Like before ...\n", + "But now let's set up four fluid simulations that run in parallel, i.e. a mini batch similar to DL training. In phiflow we can directly pass a `batch_size=4` parameter to the `Fluid` object. Each fluid simulation is fully independent. In this case they differ by having circular Inflows at different locations.\n", + "\n", + "Like before, let's plot the marker density after a few steps of simulation (each call to `step()` now updates all four simulations). Note that the boundaries between the four simulations are not visible in the image, but it shows four completely separate density states. The different inflow positions in conjunction with the solid wall boundaries (zero Dirichlet for velocity, and Neumann for pressure), result in four different end states of the simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "WrA3IXDxv31P" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "world = World()\n", + "fluid = world.add(Fluid(Domain([40, 32], boundaries=CLOSED), buoyancy_factor=0.05, batch_size=4), physics=IncompressibleFlow())\n", + "centers = [[5,10], [5,12], [5,14], [5,16]]\n", + "world.add(Inflow(Sphere(center=centers, radius=3), rate=0.2));\n", + "\n", + "for frame in range(20):\n", + " world.step(dt=1.5)\n", + "\n", + "pylab.imshow(np.concatenate(fluid.density.data[...,0], axis=1), origin='lower', cmap='magma')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we see four simulations, 0 .. 3. Simulation `0`, with the curved plume on the far left, will be our reference, while the other three will be modified in the optimization procedure below." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rdSTbMoaS0Uz" + }, + "source": [ + "## Differentiation\n", + "\n", + "The simulation we just computed was using purely NumPy (non-differentiable) operations.\n", + "To enable differentiability, we need to build a TensorFlow graph that computes this result.\n", + "\n", + "(Note, the first line is only necessary when running in environments that by default have newer tensorflow versions installed, e.g., `colab`. Uncomment if you're running this notebook there.)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "id": "mphMP0sYIOz-" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Could not load resample cuda libraries: CUDA binaries not found at /home/thuerey/phiflow/phi/tf/cuda/build/resample.so. Run \"python setup.py cuda\" to compile them\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/thuerey/phiflow/phi/tf/__init__.py:7: UserWarning: TensorFlow 2 is not fully supported by PhiFlow.\n", + " warnings.warn('TensorFlow 2 is not fully supported by PhiFlow.')\n", + "/home/thuerey/phiflow/phi/tf/flow.py:15: UserWarning: TensorFlow-CUDA solver is not available. To compile it, download phiflow sources and run\n", + "$ python setup.py tf_cuda\n", + "before reinstalling phiflow.\n", + " warnings.warn(\"TensorFlow-CUDA solver is not available. To compile it, download phiflow sources and run\\n$ python setup.py tf_cuda\\nbefore reinstalling phiflow.\")\n" + ] + } + ], + "source": [ + "# %tensorflow_version 1.x\n", + "from phi.tf.flow import * # Causes deprecation warnings with TF 1.15\n", + "import pylab\n", + "session = Session(None) # Used to run the TensorFlow graph" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3mpyowRYUSS4" + }, + "source": [ + "Let's set up the simulation just like before. But now, we want to optimize the initial velocities so that all simulations arrive at a final state that is similar to the first simulation from the previous example. I.e., the state shown in the left-most image above.\n", + "\n", + "This is a fairly tough task: we're producing diffent dynamics by changing the boundary conditions (the marker inflow position), and an optimizer should now find a single initial velocity state, that gives the same state as simulation `0` above at $t=30$. Thus, after 20 steps with $\\Delta t=1.5$ the simulation should reproduce a different set of boundary conditions from the velocity state. It would be much easier to simply change the position of the marker inflow to arrive at this goal, but -- to make things a bit more difficult -- the inflow is _not_ a degree of freedom. The optimizer can only change the velocity $\\mathbf{u}$ at time $t=0$.\n", + "\n", + "To achieve this, we create a TensorFlow variable for the velocity at t=0.\n", + "It is initialized with zeros (like with the NumPy simulation above) and can later be used as a target for optimization." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "NlJMJikaHOL6" + }, + "outputs": [], + "source": [ + "world = World()\n", + "fluid = world.add(Fluid(Domain([40, 32], boundaries=CLOSED), buoyancy_factor=0.05, batch_size=4), physics=IncompressibleFlow())\n", + "world.add(Inflow(Sphere(center=centers, radius=3), rate=0.2));\n", + "fluid.velocity = variable(fluid.velocity) # create TensorFlow variable\n", + "initial_state = fluid.state # Remember the state at t=0 for later visualization\n", + "session.initialize_variables()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "vSdGIEzCgq5-" + }, + "source": [ + "The simulation now contains variables in the initial state.\n", + "Since all later states depend on the value of the variable, the `step` method cannot directly compute concrete state values.\n", + "Instead, `world.step` will extend the TensorFlow graph by the operations needed to perform the step.\n", + "\n", + "To execute the graph with actual data, we can use `session.run`, just like with regular TensorFlow 1.x. While `run` would usually be used to infer predictions from a learning model, it now executes the graph of simulation steps." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "wSrIezfWHjcQ" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAACICAYAAAD+r7D/AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAVD0lEQVR4nO3daWxc533v8e9/Fu4ixU2URMpaKFmyvAdqojTpbeAkt06XOC2Ki9xb4LqoWwNtL25aFCiS5lWBvmjRom3u1sJI0rgXQZLWTRsjSOsovsnt4lq25CWSTFmirI0SKVIUtxlyZjhz/n1xDjeJFEfcD/v7AARnzpzheZ7fc/DnzDNnzjF3R0RE4iex3g0QEZGlUQEXEYkpFXARkZhSARcRiSkVcBGRmFIBFxGJqdRabszMdMyiiMi9u+nurbcvXNMCHkqu/SZFRGKtdHm+pZpCERGJKRVwEZGYUgEXEYkpFXARkZhSARcRiSkVcBGRmFIBFxGJKRVwEZGYUgEXEYkpFXARkZhSARcRiSkVcBGRmFIBFxGJKRVwEZGYUgEXEYkpFXARkZhSARcRiSkVcBGRmFIBFxGJqUULuJlVmdlrZva2mZ0xs9+Nlu81s+Nm1m1m3zCzitVvroiITCnnFXgeeMLdHwUeA540s6PAHwB/4u77gSHgmVVrpYiI3GHRAu6hTHQ3Hf048ATwQrT8eeBTq9FAERGZX1lz4GaWNLO3gH7gGHABGHb3YrRKD9C+Ki0UEZF5lVXA3b3k7o8BHcD7gUPlbsDMnjWzE2Z2YmlNFBGR+dzTUSjuPgx8H/ggsNXMUtFDHcC1BZ7znLsfcfcjy2moiIjMVc5RKK1mtjW6XQ18HOgiLOQ/H632NPCtVWqjiIjMI7X4KuwAnjezJGHB/yt3/7aZvQN83cx+D3gT+NIqtlNERG5j7r52GzNzSK7Z9kRENofSyfmmofVNTBGRmFIBFxGJKRVwEZGYUgEXEYkpFXARkZhSARcRiSkVcBGRmFIBFxGJKRVwEZGYUgEXEYkpFXARkZhSARcRiSkVcBGRmFIBFxGJKRVwEZGYUgEXEYkpFXARkZgq55qYu8zs+2b2jpmdMbPPRMubzOyYmZ2PfjeufnNFRGRKOa/Ai8Bvufth4Cjw62Z2GPgs8LK7HwBeju6LiMgaWbSAu3uvu78R3R4jvCJ9O/AU8Hy02vPAp1apjSIiMo97mgM3sz3A48BxoM3de6OH+oC2lW2aiIjcTarcFc2sDvgb4DfcfdTMph9zdw+vOD/v854Fnl1uQ0VEZK6yXoGbWZqweH/V3b8ZLb5hZjuix3cA/fM9192fc/cj7n5kJRosIiKhco5CMeBLQJe7//Gsh14Eno5uPw18a+WbJyIiCzH3eWc+ZlYw+zDwT8ApIIgW/w7hPPhfAfcBl4H/5O63FvlbDsnltllE5N+Z0sn5ZjEWLeArSQVcRGQp5i/g+iamiEhMqYCLiMSUCriISEypgIuIxJQKuIhITKmAi4jElAq4iEhMqYCLiMSUCriISEypgIuIxJQKuIhITKmAi4jElAq4iEhMqYCLiMSUCriISEypgIuIxJQKuIhITJVzTcwvm1m/mZ2etazJzI6Z2fnod+PqNlNERG5XzivwrwBP3rbss8DL7n4AeDm6LyIia2jRAu7u/wjcfrHip4Dno9vPA59a2WaJiMhiljoH3ubuvdHtPqBthdojIiJlSi33D7i7h1ebn5+ZPQs8u9ztiIjIXEt9BX7DzHYARL/7F1rR3Z9z9yPufmSJ2xIRkXkstYC/CDwd3X4a+NbKNEdERMpVzmGEXwP+FThoZj1m9gzw+8DHzew88LHo/gZgQHLWj61vczYlZbz6lPHqMjZLxua+4PT1ym/MzMOwVl4yWU9lqhGzmf9JheIYk8UhoLQq2/z3ZuGMB4G12482M2W8+pLJeqrSzXOWbfyMSyfnm4Ze9oeYG0U6WUd91S4Ss3b8TOEGxeLwhh2SuJkv47FCb5RxcR1btnlUpOqV8aoyKlL1bKls3xQZx7KAm1VgliKVrKOhejcViTp2+v3sSTWTmPVOaMAnuNDYRS4YYSx3ndzkAO4B7nk27n/ajWG+jDv8EPelGpXxCpnKOJ2sp756lzJeBeVmfMPHudh4NnYZx3AKJUlVRRs1ldvYkzzCU607aa8OeKhhjPvvu4klZ/rT37eFkwPN3CwkeelanuOl75EvjZGZuIp7bpnt2MySVFfuoLqihX3JH+GTrTvoqC5xuCFzR8Z9vfW8ebOJgXyS714PM84VR8jmrinju5rJuDPxAX5mWxsd1SUe2pph/647Mz450MRgIclL1/O8pozLNDfjp9ra2FlV4uGtY3TuGpyTce/1Bt642chAIclL13O8VjpGoThGNncV98I69mHKJppCSadqqUk2s4MmHm0o0Fk/yt77b1H94VasYqZLtWf6SR53bmRq6Rqp41SmBYCspVjD/1uxYxjpZJhxG408ujXPvi1j7Dt0i6ofnZVx4NR2DZB8NWAgW8vZ0ZmMx61XGd/F7Ix32t0zrjnTT/K1gBuZWs4M13F6vIWAgHFLKOO7uCPjhjx7toyx7/Atqo7Ok/HxgP5sDV3Ddbwzvo0MMG6pDVLA5xe7Ap5IVHIo/QSP1Wzj0Ub4yEMXqL0/SXLPNujswFMzr/BTtVXsaeil48YYt/L34dc/wNVsnh9UDJHNZdaxFxubJap4IP0Ej9S0RBl3U3MgRXLfdti7846M9zX0cd+sjK9k8/wgPch4/vI69mJjm8r40ZoWHm9yPvLQhQUzTs/KeDC/m0TvVMZDyvguEskaHkx/jIdrmni8yfnxRy5QfSBNct8O2L1jOmMLAtK1VXQ29LH7xuh0xpeyOf5/+iYT+fF17snCYlfAk4kaPtjQxs91ZHiwY4D6X32M4OB+gmQKT83tjh0K4EMFUmMZ/mPi72n6p+2cHKrjzWu7yOYurlMPNr5UsoajDa38bEeGh+7rZ8uvvY/gQOcCGR+EHyuQHhnl47zE1n/ezhtDdZy8tlPF5S7SyTp+dGsrT7VneHh3mRkPDfMkx2h+ZTsnlPGi0sk6PtTYzCd3Znhwdz+1v3YE79y7QMZF+LEi6aFhfiI4RvOr23ntVh0nr+1gIt+zTj1YXIwKuAEJ0slatlZAW+04Ndsm8cYGvK5+3mc4QGUVZgmSbVW01mZpzVZTYXUYKZwSG/kDirVnGEnSyVqaKqcyLpaVMZYg1VZJW12W5mw1VYkGZTyvMONUsprGaD+ubiviTY2LZwzTGbdka6i0Lcp4XrdlXJeluq0Id8s4XTF9O9VWEWacqaEyUb+hM45NAU8kaqmpbKO56gAPN0yy78gIqf1b8bq6xZ+cSpE4sJ3dg5fx40bne4cYrDlPrjC0wY/9XFtTGbdUHeThhgL73j9Kan8jXlO7+JOnMh66QvFfk3RefIBbNReU8W2SyS1UV7Syreowj0xlfH8zXltGxskUiQPb2D3SQ+GVFPsuHmao5qIyvs1Uxm1VD/FIQ549PzIWZlxdXcaTUyQPtrF7rIf8v6TYc+lBRmquMFEYpFgcYqNlHJsr8qSSNdRWbKPZO9hdO0764VZs73aoqlr0uZ5K4dtbSD/cxvb2UdoqqtlSsYOK1BZiFMGqm8q4xdvZXZsl/WALtrutvIwTCXxnK+kHt7Fj5wit6dkZy5Rkoircj4Od7NmSIf3wtijjykWf66kURBnv3DlMa6pGGc9jKuOWYCd7towtOeP2HSO0pWrZUrGDylTDGrT83ql6ybxsqd8sTsTzK8mxEmWsqEUFXEQkpmJTwMNvRQUEBAQOXgwgKHM+KgiwIIBiiaBkBEDgwaq2N45mMnZKgd1bxjCdsXv4NGU8P/cAtyDKuATF0j3syx6tbxTdCaIxk7mmakXJE2HGwT1kFDge1QqP9uONmnFsCngpGGc0d5U+P0fXaB25V28SvHMVstlFn2tBAJd7yb3az3uXm7laGGEkd4n85BCwMQdmPUxnzDnOjm6ZyXhi8eNgrViEi9eZeKWfC5dbuFIcYiR3idykPlybrVjKMJq7Si/ddI1sIffKAEFXzz1n3H21hZ7icLgfb8AP19bTdMbWTddwPblXBvCuHhifWPS5UxnnXh3gXE8LV4KbGzrj2BTwIBgnV+hlaLybc2NJus82M3FmHCujgFMsUnpvkPfONHF6uJ6rdo6J/DWKpWE24qCsl6mMb4130zU6O+MyvshQCjO+2NXEqeEt9NhZJvLXKJVGV7/hMTKd8cR5zo6l6D7bTL4ri00sXlymMn7vnSZ+qIwXNJNx93TGuTOZ8jKenKTUHWZ8eqSOHu/a0BnH5jDCkBN4kZs559JYHQ09OWovXiWRToeHCNXcdphQYTIs8KOjTFzIc3msjeu5JLlgBBXuhTiloHBnxslkGRlPcnmsjuu5JIUggzJeyNyMt17JseviVRKWuHvGwyOMXyhyJVNHXy6hjO/KKQX56Ywbr07QcfEqCVg04+yFIpfGttAbg4xjVsDDt0c/mDhDX/cBHr3Vzi//r2u07n6PygdqSTzQAbO+guxX+im8PchEv/HCW/v5zrUivaUBRnNX17EHG1+YcRe93Z08equdX/mf12i5r3vhjN+8ycTNBC+81TmT8YQyvptiKcMPxt+lt3sfjw2180tfuEbLnvNUHqwl8eAuSMy8OZ7OuD/JN97u5KXrRa6VbijjRUyWRnk5+y493ft4bKiDZ75wlebd71L1QB32QMfcjC/foPDW4B0ZZ3LX17EHi4tdAXefpC9/imzFTUqDRznR18r+8Wo6SzepaRicczKr0oUhrpyqpz9bwxu3jBPB64wHgxSKw+vXgRhwn6Q3/zaZin5Kg0c52ddK53gVncEg1bdlXDx/iytnGriRqeXE4EzGkxv0LedG4UGBa/k3Ga3oo3jzKI/3tbJ3vIrO4iDVjYPYrH+SxXdnMp7aj7OlAWW8CA8KXM+/zWhFH8HgB3lfXyt7shn2B4NUNdyW8bkhLp3eyo1sDScG4fXgOOOlQYqljX3OpNgVcAjIT45gJOiufI/v9T3AqZEmDg7Xc/jcKKnEzJnDejI7eXO4mqECnMrcYqx4nUJxDPd4nbR97c3N+FjfA7w93MyhoQYOnxshaTMZXxnr4O2RKoYKcCarjMvllKYzvlB5iZf6DrJtTsYzV5GanfHp7KAyLpPj5CdHADhfeZHv9kYZD9dz6OzonIwvj3Xw1nCY8Tvjg4xNXmeylMWDjXsmQljm+cDN7EngC4Qn+f6iu9/12pgrd0m1JIZhiQrSyfrwnAdV+2j3+0nN+vsDiT768qeYLGWZLGYolTI4ji6xVo6ZjCtSW0kmKmmuOsAO71ww40JxlKA0rozLNpVxFRWp+umM2/0AiVnXaOxPXKcvf4piaUIZ37M7M26pPsjOoDNmGa/w+cDNLAn8b+DjQA/wupm96O7vLL2R5SrhgAdF8sE4+UnC4KszJCw9vVY2f4PM+MXYXSZpY5jJOFcIj0IpBXlyVSNzMs7keslOXFbGSzKVcYZcIXyrXgry5KvHsFn/JJXxctyesYX7cfXIdMZOiWyun8zEJTZOwS7PcqZQ3g90u/t7AGb2deApYA0K+J0mS6MMT1zEZh0ZWQzGo7OIyUooFIcZnigq41VUKA4zNK6MV48vmHEcvxOynALeDsz+GLwH+MDtK5nZs8Czy9hOWYJgnEKwcU+8vhko49WnjFffZsp41T/EdPfngOdgag5cRERWwnIK+DVg16z7HdGyu7kJpWz4e9NoYXP1BzZfn9SfjW+z9Wml+7N7voVLPgrFzFLAOeCjhIX7deC/uPuZRZ53Yr5PU+Nqs/UHNl+f1J+Nb7P1aa36s+RX4O5eNLP/BrxEeGzglxcr3iIisnKWNQfu7t8BvrNCbRERkXuwHmcjfG4dtrmaNlt/YPP1Sf3Z+DZbn9akP8v6JqaIiKyf2JwPXERE5lrTAm5mT5rZu2bWbWafXcttrwQz22Vm3zezd8zsjJl9JlreZGbHzOx89Ltxvdt6L8wsaWZvmtm3o/t7zex4NE7fMLOK9W7jvTCzrWb2gpmdNbMuM/tgnMfIzH4z2t9Om9nXzKwqTmNkZl82s34zOz1r2bzjYaH/EfXrh2b2vvVr+cIW6NMfRvvcD83sb81s66zHPhf16V0z+4mVaseaFfBZ5075BHAY+M9mdnittr9CisBvufth4Cjw61EfPgu87O4HgJej+3HyGaBr1v0/AP7E3fcDQ8Az69KqpfsC8A/ufgh4lLBvsRwjM2sH/jtwxN0fIjzi69PEa4y+Ajx527KFxuMTwIHo51ngz9aojffqK9zZp2PAQ+7+COEh1p8DiGrEp4EHo+f8n6geLttavgKfPneKuxeAqXOnxIa797r7G9HtMcLC0E7Yj+ej1Z4HPrUuDVwCM+sAfgr4YnTfgCeAF6JV4tafBuA/AF8CcPeCuw8T4zEiPFqsOvruRQ3QS4zGyN3/Ebh12+KFxuMp4C899Cqw1cx2rElD78F8fXL37/rMOX5fJfxyI4R9+rq75939ItBNWA+XbS0L+HznTmlfw+2vKDPbAzwOHAfa3L03eqgPaFuvdi3BnwK/zcyZfJqB4Vk7YtzGaS8wAPxFNC30RTOrJaZj5O7XgD8CrhAW7hHgJPEeI1h4PDZLnfgl4O+j26vWJ32IuQRmVgf8DfAb7j7nsigeHtYTi0N7zOyngX53P7nebVlBKeB9wJ+5++NAltumS2I2Ro2Er+D2AjuBWu586x5rcRqPcpjZ5wmnW7+62ttaywK+lHOnbDhmliYs3l91929Gi29Mvc2LfvevV/vu0YeAT5rZJcIprScI54+3Rm/XIX7j1AP0uPvx6P4LhAU9rmP0MeCiuw+4+yTwTcJxi/MYwcLjEes6YWa/CPw08As+c4z2qvVpLQv468CB6NPzCsJJ/RfXcPvLFs0Pfwnocvc/nvXQi8DT0e2ngW+tdduWwt0/5+4d7r6HcDz+n7v/AvB94Oej1WLTHwB37wOumtnBaNFHCc9RH8sxIpw6OWpmNdH+N9Wf2I5RZKHxeBH4r9HRKEeBkVlTLRuahVco+23gk+4++3y1LwKfNrNKM9tL+AHtayuyUXdfsx/gJwk/nb0AfH4tt71C7f8w4Vu9HwJvRT8/SThv/DJwHvge0LTebV1C3z4CfDu6vS/awbqBvwYq17t999iXx4AT0Tj9HdAY5zECfhc4C5wG/i9QGacxAr5GOH8/SfgO6ZmFxgMwwqPVLgCnCI++Wfc+lNmnbsK57qna8Oez1v981Kd3gU+sVDv0TUwRkZjSh5giIjGlAi4iElMq4CIiMaUCLiISUyrgIiIxpQIuIhJTKuAiIjGlAi4iElP/BnW0ITYsRRMpAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "world.step()\n", + "pylab.imshow(np.concatenate(session.run(fluid.density).data[...,0], axis=1), origin='lower', cmap='magma')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "iJc6UdYHhtOH" + }, + "source": [ + "Let's build a graph for the full simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "id": "b9xHtdDQRrjL" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Building graph for frame 0\n", + "Building graph for frame 1\n", + "Building graph for frame 2\n", + "Building graph for frame 3\n", + "Building graph for frame 4\n", + "Building graph for frame 5\n", + "Building graph for frame 6\n", + "Building graph for frame 7\n", + "Building graph for frame 8\n", + "Building graph for frame 9\n", + "Building graph for frame 10\n", + "Building graph for frame 11\n", + "Building graph for frame 12\n", + "Building graph for frame 13\n", + "Building graph for frame 14\n", + "Building graph for frame 15\n", + "Building graph for frame 16\n", + "Building graph for frame 17\n", + "Building graph for frame 18\n", + "Building graph for frame 19\n" + ] + } + ], + "source": [ + "for frame in range(20):\n", + " print('Building graph for frame %d' % frame)\n", + " world.step(dt=1.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2VQ92g2rs6wM" + }, + "source": [ + "When calling `session.run` now, the full simulation is evaluated using TensorFlow operations.\n", + "This will take advantage of your GPU, if available.\n", + "If you compile ΦFlow with [CUDA support](https://github.com/tum-pbs/PhiFlow/blob/master/documentation/Installation_Instructions.md), the TensorFlow graph will use optimized operators for efficient simulation and training runs." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "id": "TA6Ibs-mXsTc" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Computing frames...\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "print('Computing frames...')\n", + "pylab.imshow(np.concatenate(session.run(fluid.density).data[...,0], axis=1), origin='lower', cmap='magma')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IClfRMfoyGUa" + }, + "source": [ + "Next, we define the *loss* function (also called *cost* or *objective* function). This is the value we want to decrease via optimization.\n", + "For this example, we want the marker densities of all final simulation states to match the left-most one, called `target`.\n", + "\n", + "For the optimizer, we choose gradient descent for this example." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "7KPpyIwjYETi" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Initial loss: 65.417107\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "target = session.run(fluid.density).data[0,...]\n", + "loss = math.l2_loss(fluid.density.data[1:,...] - target)\n", + "optim = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(loss)\n", + "session.initialize_variables()\n", + "\n", + "print('Initial loss: %f' % session.run(loss))\n", + "pylab.imshow(np.concatenate(session.run(fluid.density).data[...,0], axis=1), origin='lower', cmap='magma')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "AALD66-N0U5F" + }, + "source": [ + "With the loss and optimizer set up, all that's left is to run the actual optimization." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "id": "pvvF6xqmaRLX" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running optimization step 0. The first step sets up the adjoint graph.\n", + "Loss: 65.417130\n", + "Running optimization step 1. \n", + "Loss: 61.038616\n", + "Running optimization step 2. \n", + "Loss: 55.527817\n", + "Running optimization step 3. \n", + "Loss: 52.743553\n", + "Running optimization step 4. \n", + "Loss: 50.682068\n", + "Running optimization step 5. \n", + "Loss: 49.116470\n", + "Running optimization step 6. \n", + "Loss: 47.600983\n", + "Running optimization step 7. \n", + "Loss: 46.847046\n", + "Running optimization step 8. \n", + "Loss: 47.156219\n", + "Running optimization step 9. \n", + "Loss: 44.690727\n", + "Running optimization step 10. \n", + "Loss: 43.885071\n", + "Running optimization step 11. \n", + "Loss: 43.400795\n", + "Running optimization step 12. \n", + "Loss: 44.021904\n", + "Running optimization step 13. \n", + "Loss: 44.878464\n", + "Running optimization step 14. \n", + "Loss: 42.061104\n", + "Running optimization step 15. \n", + "Loss: 41.721771\n", + "Running optimization step 16. \n", + "Loss: 42.422424\n", + "Running optimization step 17. \n", + "Loss: 43.305126\n", + "Running optimization step 18. \n", + "Loss: 41.030945\n", + "Running optimization step 19. \n", + "Loss: 40.693314\n", + "Running optimization step 20. \n", + "Loss: 41.632492\n", + "Running optimization step 21. \n", + "Loss: 40.497219\n", + "Running optimization step 22. \n", + "Loss: 40.864441\n", + "Running optimization step 23. \n", + "Loss: 41.586533\n", + "Running optimization step 24. \n", + "Loss: 40.268814\n", + "Running optimization step 25. \n", + "Loss: 44.780869\n", + "Running optimization step 26. \n", + "Loss: 43.994247\n", + "Running optimization step 27. \n", + "Loss: 42.123501\n", + "Running optimization step 28. \n", + "Loss: 40.386658\n", + "Running optimization step 29. \n", + "Loss: 39.695370\n", + "Running optimization step 30. \n", + "Loss: 39.781601\n", + "Running optimization step 31. \n", + "Loss: 39.579910\n", + "Running optimization step 32. \n", + "Loss: 39.950123\n", + "Running optimization step 33. \n", + "Loss: 39.400608\n", + "Running optimization step 34. \n", + "Loss: 39.147316\n", + "Running optimization step 35. \n", + "Loss: 39.404778\n", + "Running optimization step 36. \n", + "Loss: 38.327095\n", + "Running optimization step 37. \n", + "Loss: 39.023270\n", + "Running optimization step 38. \n", + "Loss: 42.325951\n", + "Running optimization step 39. \n", + "Loss: 41.603100\n", + "Running optimization step 40. \n", + "Loss: 41.056602\n", + "Running optimization step 41. \n", + "Loss: 40.462925\n", + "Running optimization step 42. \n", + "Loss: 40.042713\n", + "Running optimization step 43. \n", + "Loss: 39.613541\n", + "Running optimization step 44. \n", + "Loss: 39.174477\n", + "Running optimization step 45. \n", + "Loss: 38.874172\n", + "Running optimization step 46. \n", + "Loss: 38.653236\n", + "Running optimization step 47. \n", + "Loss: 38.347786\n", + "Running optimization step 48. \n", + "Loss: 38.162994\n", + "Running optimization step 49. \n", + "Loss: 37.952271\n", + "Running optimization step 50. \n", + "Loss: 37.628460\n", + "Running optimization step 51. \n", + "Loss: 37.342438\n", + "Running optimization step 52. \n", + "Loss: 38.000610\n", + "Running optimization step 53. \n", + "Loss: 37.083599\n", + "Running optimization step 54. \n", + "Loss: 38.403442\n", + "Running optimization step 55. \n", + "Loss: 36.849007\n", + "Running optimization step 56. \n", + "Loss: 41.288948\n", + "Running optimization step 57. \n", + "Loss: 43.382652\n", + "Running optimization step 58. \n", + "Loss: 42.499889\n", + "Running optimization step 59. \n", + "Loss: 41.840115\n", + "Running optimization step 60. \n", + "Loss: 40.019958\n", + "Running optimization step 61. \n", + "Loss: 38.242035\n", + "Running optimization step 62. \n", + "Loss: 37.146896\n", + "Running optimization step 63. \n", + "Loss: 37.000000\n", + "Running optimization step 64. \n", + "Loss: 36.758942\n", + "Running optimization step 65. \n", + "Loss: 36.544884\n", + "Running optimization step 66. \n", + "Loss: 36.424988\n", + "Running optimization step 67. \n", + "Loss: 36.263794\n", + "Running optimization step 68. \n", + "Loss: 36.233051\n", + "Running optimization step 69. \n", + "Loss: 35.956253\n", + "Running optimization step 70. \n", + "Loss: 36.190147\n", + "Running optimization step 71. \n", + "Loss: 35.663338\n", + "Running optimization step 72. \n", + "Loss: 35.965942\n", + "Running optimization step 73. \n", + "Loss: 35.761196\n", + "Running optimization step 74. \n", + "Loss: 35.444168\n", + "Running optimization step 75. \n", + "Loss: 35.755909\n", + "Running optimization step 76. \n", + "Loss: 35.190250\n", + "Running optimization step 77. \n", + "Loss: 35.393356\n", + "Running optimization step 78. \n", + "Loss: 35.246380\n", + "Running optimization step 79. \n", + "Loss: 35.487621\n", + "Running optimization step 80. \n", + "Loss: 35.049461\n", + "Running optimization step 81. \n", + "Loss: 35.307079\n", + "Running optimization step 82. \n", + "Loss: 34.782936\n", + "Running optimization step 83. \n", + "Loss: 34.662254\n", + "Running optimization step 84. \n", + "Loss: 34.792183\n", + "Running optimization step 85. \n", + "Loss: 34.605667\n", + "Running optimization step 86. \n", + "Loss: 34.904476\n", + "Running optimization step 87. \n", + "Loss: 34.351589\n", + "Running optimization step 88. \n", + "Loss: 34.544693\n", + "Running optimization step 89. \n", + "Loss: 34.171722\n", + "Running optimization step 90. \n", + "Loss: 34.124374\n", + "Running optimization step 91. \n", + "Loss: 34.561535\n", + "Running optimization step 92. \n", + "Loss: 34.456116\n", + "Running optimization step 93. \n", + "Loss: 34.353249\n", + "Running optimization step 94. \n", + "Loss: 34.576324\n", + "Running optimization step 95. \n", + "Loss: 34.455849\n", + "Running optimization step 96. \n", + "Loss: 35.339233\n", + "Running optimization step 97. \n", + "Loss: 34.416187\n", + "Running optimization step 98. \n", + "Loss: 33.643890\n", + "Running optimization step 99. \n", + "Loss: 33.524048\n" + ] + } + ], + "source": [ + "for optim_step in range(100):\n", + " print('Running optimization step %d. %s' % (optim_step, '' if optim_step else 'The first step sets up the adjoint graph.'))\n", + " _, loss_value = session.run([optim, loss])\n", + " print('Loss: %f' % loss_value)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The loss should have gone down significantly, from ca. 65 to below 34, and now we can visualize how well the reconstruction for the last frame turned out for simulations 1 to 3." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "id": "SQBtCmhZaYYj" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "pylab.imshow(np.concatenate(session.run(fluid.density).data[...,0], axis=1), origin='lower', cmap='magma')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HP7aDQfpKifp" + }, + "source": [ + "Naturally, the image on the left is the same (this is our reference), and the other three simulations now exhibit a noticeable curved shape towards the left. This is especially visible for the far left simulation (3), which was moving straight up in its original state, and now has an off-center plume shape that tries to match the reference on the left. Note that this simulation needs to \"work\" with a fixed inflow, hence it cannot simply \"produce\" marker density out of the blue to match the target. Also it needs to take into account how the non-linear model equations change the state of the system over the course of 20 time steps. The \n", + "\n", + "Now that the optimization has done its work, we can have a look at the now-optimized initial velocity field." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "id": "vRaBt5vGdSEY" + }, + "outputs": [], + "source": [ + "optimized_velocity_field = session.run(initial_state.velocity).at_centers()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "id": "i7ZahlUudex8" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "pylab.title('Initial y-velocity (optimized)')\n", + "pylab.imshow(np.concatenate(optimized_velocity_field.data[...,0], axis=1), origin='lower')" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "id": "Pqw5BDxmdkut" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "pylab.title('Initial x-velocity (optimized)')\n", + "pylab.imshow(np.concatenate(optimized_velocity_field.data[...,1], axis=1), origin='lower')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ooqVxCPM8PXl" + }, + "source": [ + "This notebook provided an introduction to running fluid simulations in NumPy and TensorFlow.\n", + "It demonstrated how to use the gradients provided by ΦFlow to run simple optimizations over the course of several timesteps.\n", + "\n", + "For additional examples, e.g. coupling simulations with neural networks, please check the [other demos](https://github.com/tum-pbs/PhiFlow/tree/master/demos)." + ] + } + ], + "metadata": { + "colab": { + "collapsed_sections": [], + "name": "Differentiable Physics with Fluid Simulations.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 1 } diff --git a/diffphys-code-tf.ipynb b/diffphys-code-tf.ipynb index fa43a61..3cb8e76 100644 --- a/diffphys-code-tf.ipynb +++ b/diffphys-code-tf.ipynb @@ -12,35 +12,39 @@ { "cell_type": "code", "execution_count": 1, - "metadata": {}, + "metadata": { + "scrolled": true + }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/thuerey/phiflow/phi/tf/__init__.py:7: UserWarning: TensorFlow 2 is not fully supported by PhiFlow.\n", + " warnings.warn('TensorFlow 2 is not fully supported by PhiFlow.')\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ - "Could not load resample cuda libraries: CUDA binaries not found at /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/cuda/build/resample.so. Run \"python setup.py cuda\" to compile them\n", - "WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/util.py:119: The name tf.AUTO_REUSE is deprecated. Please use tf.compat.v1.AUTO_REUSE instead.\n", - "\n", - "WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/profiling.py:12: The name tf.RunOptions is deprecated. Please use tf.compat.v1.RunOptions instead.\n", - "\n", - "WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/profiling.py:13: The name tf.RunMetadata is deprecated. Please use tf.compat.v1.RunMetadata instead.\n", - "\n", - "WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/tf_backend.py:287: to_complex64 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n", + "Could not load resample cuda libraries: CUDA binaries not found at /home/thuerey/phiflow/phi/tf/cuda/build/resample.so. Run \"python setup.py cuda\" to compile them\n", + "WARNING:tensorflow:From /home/thuerey/phiflow/phi/tf/tf_backend.py:287: to_complex64 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n", "Instructions for updating:\n", - "Use `tf.cast` instead.\n", - "WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/tf_backend.py:375: The name tf.fft is deprecated. Please use tf.signal.fft instead.\n", - "\n", - "WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/tf_backend.py:387: The name tf.ifft is deprecated. Please use tf.signal.ifft instead.\n", - "\n", - "WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/tf_backend.py:399: The name tf.real is deprecated. Please use tf.math.real instead.\n", - "\n" + "Use `tf.cast` instead.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "/Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/flow.py:15: UserWarning: TensorFlow-CUDA solver is not available. To compile it, download phiflow sources and run\n", + "/home/thuerey/anaconda3/envs/tf/lib/python3.8/_collections_abc.py:743: MatplotlibDeprecationWarning: The global colormaps dictionary is no longer considered public API.\n", + " for key in self._mapping:\n", + "/home/thuerey/anaconda3/envs/tf/lib/python3.8/_collections_abc.py:744: MatplotlibDeprecationWarning: The global colormaps dictionary is no longer considered public API.\n", + " yield (key, self._mapping[key])\n", + "/home/thuerey/phiflow/phi/viz/display.py:80: UserWarning: GUI is disabled because of missing dependencies: No module named 'imageio'. To install all dependencies, run $ pip install phiflow[gui]\n", + " warnings.warn('GUI is disabled because of missing dependencies: %s. To install all dependencies, run $ pip install phiflow[gui]' % import_error)\n", + "/home/thuerey/phiflow/phi/tf/flow.py:15: UserWarning: TensorFlow-CUDA solver is not available. To compile it, download phiflow sources and run\n", "$ python setup.py tf_cuda\n", "before reinstalling phiflow.\n", " warnings.warn(\"TensorFlow-CUDA solver is not available. To compile it, download phiflow sources and run\\n$ python setup.py tf_cuda\\nbefore reinstalling phiflow.\")\n" @@ -59,7 +63,8 @@ "\n", "# run with phiflow\n", "n = 128\n", - "dt = 1./32.\n", + "steps = 32\n", + "dt = 1./steps\n", "initial = np.zeros([n,1]) # start from 0\n", "\n", "domain = Domain([n], boundaries=PERIODIC, box=box[-1:1])\n", @@ -69,7 +74,7 @@ "state_in = state0.copied_with(velocity= variable(state0.velocity) ) # <-- main change!\n", "states = [state_in]\n", "\n", - "for i in range(32):\n", + "for i in range(steps):\n", " states.append( Burgers().step(states[-1],dt=dt) )\n", "\n", "print(\"Each velocity is a phiflow grid like this one: \" + format(states[-1].velocity) )\n", @@ -80,25 +85,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Note, this didnt run anything! let's set up the loss" + "Now we don't need to keep track and pass along `state_in`, TF knows about the initial state as a variable we'd like to optimize. This is in contrast to the previous version of this optimization, where we explicitly stored and updated a field with the intial state.\n", + "\n", + "Nonetheless, this didnt run anything! We only have a graph of operations in tensorflow so far. Let's set up the loss, such that we can start the optimizer. It's actually pretty simple, we only need to compute the L2 error for the constrained state of the simulation (at $t=1/2$):" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/session.py:17: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.\n", - "\n", - "WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/session.py:18: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "sess = Session(None) \n", "\n", @@ -112,9 +108,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "As the graph encodes the full temporal sequence, and we can compute and propagate derivatives for all intermediates, we can can now back-propagate a gradient for this loss to any earlier variable, and hence also the initial velocity state that we're interested in (and that we already declared as a `variable()` to TF above).\n", + "\n", "Note: because we're only constraining timestep 16, we could actually omit steps 17 to 31 here, but for fairness and comparison with the PINN case, let's include them.\n", "\n", - "Now we don't need to keep track and pass along `state_in`, TF knows about the initial state as a variable we'd like to optimize." + "Also, we don't need additional terms for enforcing the boundary conditions, these are already present in the simulation, and hence encoded in the execution graph for the `states` sequence above.\n", + "\n", + "Now we're ready to run the optimization with one of the optimizers provided in tensorflow, e.g., the simplest starting point is always _gradient descent_ (GD):" ] }, { @@ -126,13 +126,6 @@ "name": "stdout", "output_type": "stream", "text": [ - "WARNING:tensorflow:From /usr/local/lib/python3.7/site-packages/tensorflow_core/python/ops/math_grad.py:1375: where (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", - "WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/session.py:28: The name tf.global_variables_initializer is deprecated. Please use tf.compat.v1.global_variables_initializer instead.\n", - "\n", - "WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/session.py:29: The name tf.train.Saver is deprecated. Please use tf.compat.v1.train.Saver instead.\n", - "\n", "Initial loss: 0.382915\n", "Step 0, loss: 0.382915\n", "Step 5, loss: 0.194040\n", @@ -144,7 +137,7 @@ "Step 35, loss: 0.009447\n", "Step 40, loss: 0.006238\n", "Step 45, loss: 0.004161\n", - "Runtime 1.89s\n" + "Runtime 1.17s\n" ] } ], @@ -179,22 +172,22 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[]" + "[]" ] }, - "execution_count": 5, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD4CAYAAADhNOGaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO3dd3xTVf/A8c9J0kVbaEvLKFAoiuDzOAArKAooogwHbnGBCiI8IBtkK1MEpKKgbLeC4u/xAdniwIUMEREQmYUWCnRQSkfSJOf3x01rgJbVtGna7/v16qvJvecm394m+eacc885SmuNEEKIisvk7QCEEEJ4lyQCIYSo4CQRCCFEBSeJQAghKjhJBEIIUcFZvB3A5YiMjNT16tXzdhhCCOFTtmzZkqK1jjp7u08mgnr16rF582ZvhyGEED5FKZVQ2HZpGhJCiApOEoEQQlRwkgiEEKKC80giUEotVEodV0r9WcR+pZR6Uym1Vyn1h1Kqqdu+rkqpPa6frp6IRwghxMXzVI3gPaD9efZ3ABq4fnoA7wAopSKAl4HmQDPgZaVUuIdiEkIIcRE8kgi01uuBtPMU6QR8oA0bgDClVE2gHbBWa52mtU4H1nL+hCKEEMLDSquPoBZw2O1+omtbUdvPoZTqoZTarJTafOLEiRILVAghKhqfGUegtZ4LzAWIi4uTubNFqbI5bGxJ2sL25O38deIvrHYr9/3rPu644g4sJp95GwlRqNJ6BScBddzu13ZtSwJuO2v7d6UUkxDnlWXLYt2+daz6exU/HvyRrLysM/av2rOKGiE1mNpxKi1iWngpSiGKr7QSwVKgj1JqEUbHcIbW+qhSajUwya2D+C5geCnFJMQ5tNZsStzEoj8WsWbPGnLsOQX7roq8iua1m9OoWiOybdl8vO1jDqYfZPEfiyURCJ/mkUSglPoU45t9pFIqEeNKID8ArfVsYAXQEdgLZAPPuvalKaXGA5tcDzVOa32+TmchSoTVbuW/O//Le1veY0/qnoLtTaKbcE+je7jzijupVeXM7qsrq17Js188S3pOemmHK4RHeSQRaK0fv8B+DfQuYt9CYKEn4hDiUqVlp/Hxto/5cOuHpGanAhAVHMUj1z7Co9c8Sp2wOkUeGxYUBiCJQPg86eUSFVJyZjKzN87m8+2fk2vPBeDf1f9N97judLiqA35mvws+RkRQBCCJQPg+SQSiQjmRdYLZv87mk22fYHPYAGgd25rnb3yem+rchFLqoh8rPMjo2pJEIHydJAJRIaRmpzJ341w++v2jghpAx6s60ufmPjSManhZj1nJrxL+Zn9y7bnk5OUQ5BfkyZCFKDWSCES5ZrVbeXfLu7zz6zuctp0GoO2Vbenfoj9XV7v6oh5Da83hw3ls355DZqYDraFWLT9atgwhPCicY6ePkZ6TLolA+CxJBKJc0lrz1e6vmLp+KkmnkgBoWa8lA28dyHU1rrvg8YcP21i+PIPVq0/x/fenSU93nFOmW7eqVL4pkmMYiSC6crTH/w4hSoMkAlHubEnawqTvJvH70d8BaBjZkOG3DadlvZbnPS4z08Gnn6bz8cdprF9/+ox9Vauauf76SkRFWXA6NcuWZbBgQSqRP/Qg+PHR0k8gfJokAlFuHDp5iKnrp7Li7xUARFaKZOCtA3n4mocxm8xFHrd7dy6zZp3gvfdSycx0AhAYqOjYsQrt21fmrrtCiYnxP6Mj+bffsrn//n0c/jsa27qHSHtMhr8I3yWJQPi83LxcZm+czZyNc7A5bARYAuge150ezXoQ4h9S6DFaa1auPMWMGcdZsyazYHurViF061aVBx4IIzS06OTRtGkl3nyzDg88sB97anVO5pz0+N8lRGmRRCB82rf7v2XcunEcyjgEQKerOzG45eAi2+udTs2XX55kwoRktm41po8IClI8+WQEffpEcf31lS76uSMjjbePIyuU9JxjxfxLhPAeSQTCJyVlJDH+2/Gs3bsWgAZVGzCu7Tia1WlWaHmHQ7NkSToTJiTz55/G5aM1algYMKAa3btHEhFx6W+FqlWNGoMzO4T0nL8u8y8RwvskEQifYnPYWLh5IW/98ha59lyC/YLp26IvXZt2LXQ0sNaa//0vg5Ejj7Bzp5EAatf246WXqtOtWyRBQZe/JEdBjSA7lPRc6SwWvksSgfAZGw9vZNTaUexL2wdAx4YdGXnbSGqE1ii0/PffZzJs2BE2bDCmj65b158RI2rQtWsEAQHFX5MpPNx4+zhzgknNkj4C4bskEYgyL9OayWvrX+PTbZ8CUC+8HmPvGMut9W4ttPy2bdkMG3aEVatOAVCtmoXRo2vQo0ck/v6eW5TPYlGEVoHMDBMnUnI99rhClDZJBKJMW71nNa98/QrHs47jZ/KjZ/Oe9GreiwBLwDllk5PzGDXqCAsXpqI1hIaaGDKkOgMGVCMkpOgrgIojIsJMZoaDEyl5JfL4QpQGSQSiTDp2+hhj141l9Z7VADSp2YRJ7SZxVeRV55TNyXESH3+cV19N5vRpJxYL/Oc/UYweXbOgHb+kREX6kXDAQXqas0SfR4iSJIlAlClO7eSz7Z8x+fvJZFozCfYLZnDLwTzZ+MlzBoVprVm8OJ1hw46QkGDMJHrvvVWYOrUWDRsGlkq81aL8gVxyMv1l4jnhszy1Qll7YAZgBuZrrSeftT8euN11txJQTWsd5trnALa79h3SWt/niZiE70nMSOSlVS+x4fAGANrUb8PYtmMLHROwcWMWAwYk8vPPRkfwtdcGMn16bdq2rVyqMVet6uowzgqVieeEzyp2IlBKmYFZwJ1AIrBJKbVUa70zv4zWeoBb+ReBJm4PkaO1blzcOITv0lrz6bZPmfz9ZLLysogIimDMHWO4p+E956wPkJJiZ/jwJObPN1YTq1bNwoQJ0Tz3XFXM5otfS8BT8hOBw5UIZOI54Ys8USNoBuzVWu8HcC1Q3wnYWUT5xzHWNBaCpIwkhq8Zzk8JPwHGGgGvtH2FqpWqnlHO4dDMnZvCyJFHSE934OenGDCgGiNH1qBy5ZLpCL4Y/wwqC5WJ54TP8kQiqAUcdrufCDQvrKBSqi4QC3zjtjlQKbUZsAOTtdZfFnFsD6AHQExMjAfCFt6ktWbRH4uY/P1kTttOEx4Uztg7xnJ3o7vPKbthQxa9ex/it9+MKSHatg3lrbfq0KhR6fQDnE9BjSA7lLQcmXhO+KbS7izuDCzRWrtP7l5Xa52klKoPfKOU2q613nf2gVrrucBcgLi4OF064YqScOTUEYavHs6PCT8C0L5Be8a2HUtkcOQZ5U6cyGPYMONyUDBGBMfH1+ahh8IuaUnJkvTPfEMhMvGc8FmeSARJQB23+7Vd2wrTGejtvkFrneT6vV8p9R1G/8E5iUD4Pq01n//5ORO/nchp22nCAsN4pe0r5/QFOBya2bNTGDXqCCdPGs1AgwZVY9SoGgQHe68ZqDAFncXZlUnPSfVyNEJcHk8kgk1AA6VULEYC6Aw8cXYhpVQjIBz4xW1bOJCttbYqpSKBW4ApHohJlDHHTh9j2KphrD+4HoC7GtzF+Lbjz6kF/PprFr16HSqYGfSuu0J58806pXY56KXK7yNwZIWQnrPXy9EIcXmKnQi01nalVB9gNcblowu11juUUuOAzVrrpa6inYFFWmv3Zp2rgTlKKSdgwugjKKqTWfioFbtXMHrtaE7mnqRKYBVeueMV7m107xm1gIwMByNGJPHOOyloDTEx/sTH1+KBB8pOM1Bh/qkRyMRzwnd5pI9Aa70CWHHWtjFn3X+lkON+Bq71RAyi7DmVe4qx34zly51G/3+req14rf1rVAupVlBGa82SJSfp2/cwycl2LBYYNKg6o0eXvWagwpzRWZwtiUD4JhlZLErEL4d+YcjKIRzNPEqgJZARt43gieufOOPb/YEDVnr3PszKlcbkcDffHMycOTFce63vDMoKCjIRGAS5ORZOpGd7OxwhLoskAuFRVruVaT9MY+GWhQBcV+M6pnecTmxEbEGZvDxNfPwxXnnlKDk5mipVzLz2WjTPPx+JyVR2m4GKElHVxJFEJykpNm+HIsRlkUQgPGbn8Z0MXD6QPal7MCszfW7uQ6/mvc5YMOaXX07zwguH2L7dmLa5c+dw4uNrU6PGuYvK+IrIqn4cSbSSlioTzwnfJIlAFJvD6WD+pvnE/xRPnjOP2PBYpnecznU1rysoc+qUg2HDkpg92+gMjo315513YmjXrnTnBioJUZF+gJWcTH+sdmuhU2QLUZZJIhDFcuTUEQatGMTGxI0APN34aV5q/dIZk68tX55Bz56HSEzMw2KBIUOqM2pUTSpV8twiMd4UGWnUZpzZodiddgKQRCB8iyQCcdlW7F7ByDUjOWU9RVRwFK+1f43Wsa0L9p84kUf//ol88olxNc2NN1ZiwYK6PtUZfDH+GUtgJAIhfI0kAnHJsmxZjP9mPJ//+TkAd1xxB6+2e7VgojitNYsWpdO3byIpKXaCghQTJkTTr181r8wQWtLcZyCVRCB8kSQCcUn+SP6DAcsHcDD9IAGWAEa0HsGTjZ8suCw0MdFGr16H+Oor45LQNm1CmTs3hiuuKL/NJe6DyiQRCF8kiUBcFKd2Mm/TPKb/OB27007DyIa8cc8bBUtHOp3GNNFDhyaRmemkShUzr79ei+eeq1qmRwZ7QsHEc9kh2B2SCITvkUQgLig5M5khK4fw86GfAejatCsvtXqp4OqYPXty6d79EOvXnwbg/vurMGtWHaKj/b0Wc2kqWJMgKxS7lkQgfI8kAnFea/euZfjq4aTnpBMRFMGUDlO4vb6x6qjdrpk+/Rgvv3yU3FxNtWoWZs2qU6amiS4N7tNMSI1A+CJJBKJQOXk5TPpuEp9s+wQw5gma0mEKUcFRAOzYkUPXrgls2WJMq9C1awSvv1674EOxInFft1j6CIQvqnjvWnFBf534i37L+rE3bS/+Zn+GthpK16ZdMSkTDocmPv44o0YdwWrVxMT4M3du+RgYdrnOqBFIIhA+SBKBKKC15pNtnzDh2wnYHDaujLiSN+55g6urXQ3A3r25PPNMAj/9lAVA9+5VmT69NqGhZX+W0JJUubIJZXKibYHk5koiEL5HEoEAjCmjh68ezqo9qwB47LrHGH37aIL8gtDaWDFs8OAksrOd1Kzpx/z5MXTsWMXLUZcNSilMfnYcVn+yrZIIhO+RRCD4/ejv9FvWj8RTiYT4hzDxronc0+geAA4fttGtWwJr12YC8Pjj4cycWYeICHnpuDNZnDiskCOJQPggj0z2opRqr5TarZTaq5QaVsj+Z5RSJ5RSv7t+urvt66qU2uP66eqJeMTFcWonczfO5bFPHyPxVCLXVr+WZV2WcU+je9Ba88EHqVx77S7Wrs2kalUzn30WyyefxEoSKITJbMw8apVEIHxQsd/RSikzMAu4E0gENimllhay5ORirXWfs46NAF4G4gANbHEdK0s9lbDU7FSGrBzC9we+B+C5G55jSKsh+Jv9OXYsj549D/HllxkA3HtvFebOjfHpqaJLmtliJIJcq8PLkQhx6Tzx1a4ZsFdrvR9AKbUI6ARczNrD7YC1Wus017FrgfbApx6ISxRhw6ENDFwxkGOnjxEWGMbUDlNpc0UbAL74Ip2ePQ+TkmKncmUTM2bUoWvXiAo1LuBymFyJwGqTNQmE7/FEIqgFHHa7nwg0L6TcQ0qpVsDfwACt9eEijq1V2JMopXoAPQBiYmI8EHbF43A6mPnLTGZumIlTO7mx9o3E3x1PzdCapKfbefHFw3z8sVEZu+OOUBYurEtMTMUYHVxcZlfTUK5NmoaE7ymtCeGXAfW01tcBa4H3L/UBtNZztdZxWuu4qKgojwdY3iVnJvP0Z0/z5i9vorWmz019+OjRj6gZWpNVqzK45ppdfPxxOkFBipkz67BmzZWSBC6B2U8DYJWmIeGDPFEjSALquN2v7dpWQGud6nZ3PjDF7djbzjr2Ow/EJNx8u/9bhq4cSlpOGlHBUUy/ezotYlqQmelg8OBDzJ2bAhiLx7//fl0aNAj0csS+J79pyJYnTUPC93giEWwCGiilYjE+2DsDT7gXUErV1Fofdd29D9jlur0amKSUCnfdvwsY7oGYBGBz2Jj2wzQWbF4AQMt6LZnWYRqRwZGsX5/JM88kcOCADX9/xfjxNRk0qHq5XC+gNFgsRo0gN1dqBML3FDsRaK3tSqk+GB/qZmCh1nqHUmocsFlrvRToq5S6D7ADacAzrmPTlFLjMZIJwLj8jmNRPEkZSby47EW2JW/DrMwMajmI5298HmsuDByYyBtvHEdraNw4iA8+qFfuVg0rbWZXIpAagfBFHrkgXGu9Alhx1rYxbreHU8Q3fa31QmChJ+IQhm/2fcPglYPJyM0gOjSaGffOoGl0UzZtyqJLl4P89ZcVsxlGjKjBqFE18PcvH2sHe5OloI9AEoHwPTIyqByxO+1M/3E6czbOAaBN/TZM7TCVSubKjB59hFdfTcbhgEaNAvjgg3rceGOwlyMuPyyud5I1T5qGhO+RRFBOJGcm0395fzYlbsKszAxuOZjuN3Znx59WunbdzdatOSgFAwdWY8KEaIKCpBbgSflNQ3k27eVIhLh0kgjKgZ8SfqL/V/1Jy0mjekh1Ztwzg6Y145g65RhjxhzFZtPExvrz7rt1ad061NvhlksW15W2MqBM+CJJBD7M4XQwa8Ms3vz5TTSaW+rewvSO00k/EkLLln/zyy/GdNEvvBDJ1Km1Kvx00SXJz/VOysuTGoHwPZIIfFRKVgqDVgzix4QfUSj6tehHr2b/Yc7sNIYO3UVOjiY62o8FC2Jo316miy5pFtc0TDZpGhI+SBKBD9qcuJm+X/Xl2OljRARFEH93PDGmZnRof4B164zpop98Mpy33qpDeLj8i0tDQSKQy0eFD5JPCR+itWbepnlM+2EaDu0grlYcb9z9Bqu+8Ofu/js5dcpJZKSF2bPr8NBD4Rd+QOExfq4+Ars0DQkfJInAR5zMOcnQVUNZt28dAC80e4EnrnyRF546wrJlxqDt+++vwpw5MVSrJtNFlzY/izEi22bzciBCXAZJBD7gj6N/0GdZH5JOJVElsApTO0wl7bemNH7wb1JTHVSpYuatt2rz1FMyXbS3+PkZ5106i4UvkkRQhmmt+XDrh0z6bhJ5zjyuq3Ed426dwaThDhYtOgDAnXeGsmBBXerUkZlCvSm/aUjGEQhfJImgjMq0ZjJizQhW7DZm7ujSpAuNs3tz181HSE62U6mSiWnTatGzZ6TUAsqAghqBXRKB8D2SCMqgv078Re+lvTmYfpAQ/xBGtXiVNXP+zSvzDwFwyy3BvP9+Pa64IsC7gYoC+fM12W2SlIXvkURQxny+/XNeXvcyVruVRlGNeDIsniEP20hISMXfXzFxYjQDBlST6aLLGH9XjcAuC5QJHySJoIzIycvh5a9f5osdXwDwwFWdyf36eZ58y5iVu2lTY7rof/9bposui/wDXDUCSQTCB0kiKAP2pe6jz7I+/J3yN4GWQJ6q9hrvD41l9+40zGYYNaoGI0fWLGiHFmWPv+vyUXuelwMR4jJIIvCypbuWMnLNSLLzsomtfBVX7prCqEF5OJ1W/vWvQD74oB433FDJ22GKCyjoI8iTZC18jyQCL7HarUz8diIfb/sYgJsCuvDHzIdZt92KUjB4cDXGj48mMFCmi/YFAfmJwC6JQPgejyQCpVR7YAbGUpXztdaTz9o/EOiOsVTlCeA5rXWCa58D2O4qekhrfZ8nYirLDp08RJ9lfdhxbAd+BHJ9wnQ+n1ONvDwr9ev78/779bj11hBvhykugb+/MbOrQ5qGhA8qdiJQSpmBWcCdQCKwSSm1VGu9063YViBOa52tlOoFTAEec+3L0Vo3Lm4cvmLNnjUMXTWUTGsmVXOaYv1yBJ/9pgFNr16RTJlSi5AQmS7a1wS4OosdUiMQPsgTNYJmwF6t9X4ApdQioBNQkAi01t+6ld8APOWB5/UpeY48pq6fyoItC9BORc2/+7P1k1vJydHUquXHwoV1ueuuyt4OU1ymf5qGpClP+B5PJIJawGG3+4lA8/OU7wasdLsfqJTajNFsNFlr/WVhBymlegA9AGJiYooVcGk7cuoIfb/qy9YjW9EnaxCwehI/bw4FNF26RDBjRm3CwqS7xpcF5DcNSY1A+KBS/fRRSj0FxAGt3TbX1VonKaXqA98opbZrrfedfazWei4wFyAuLs5nxvF/f+B7Bq0YRFp2Oqbt93Psv0+QdVoRFWVh7twY7r8/zNshCg8wrhpy4pAagfBBnkgESUAdt/u1XdvOoJRqC4wEWmutrfnbtdZJrt/7lVLfAU2AcxKBr7E77cz4eQbvbHiHvFNVcC6fQuJvsQA8+GAYs2fXISpKposuLwL9LYANp9QIhA/yRCLYBDRQSsViJIDOwBPuBZRSTYA5QHut9XG37eFAttbaqpSKBG7B6Ej2acdPH6f/8v78evhXsn6/lcyl/yE704+wMDMzZ9bhiSfCZaK4ciYwwGgackqNQPigYicCrbVdKdUHWI1x+ehCrfUOpdQ4YLPWeikwFQgBPnd9AOZfJno1MEcp5QRMGH0EOwt9Ih/x86GfGfDVAI6dsJK5dBhpv90AQLt2lVmwIIZatWS66PLIqBEgTUPCJ3mkj0BrvQJYcda2MW632xZx3M/AtZ6IwdscTgdv//o2b/78Jpk7mpDxfy+SmxFMcLCJ6dNr8/zzVaUWUI4FBrpqBA5JBML3yKUqHpCSlcKgFYNY/9dvpC7rSeam2wFo2TKE996rS/36Ml10eZd/1ZDTLmNAhO+RRFBMmxI30e+rfhz8PYrUz6ZjS69KQIDi1Vej6devGiaT1AIqgkqBRse/1AiEL5JEcJmc2sm8jfOY+s1bnFjemVM/dQQgLq4SH3xQl6uvlumiK5LAAOOtpKVGIHyQJILLkJ6TzpCVQ1j5TRInFk8mLyUaiwXGjKnJsGE1ZLroCii/s9jpkEQgfI8kgku09chWev/fAHb9X0tOftcTtIlrrjGmi27SRKaLrqiCXE1DUiMQvkgSwUXSWvPulncZ++kikj/phy25LiYTDBlanbFjaxZMOiYqpoKmIakRCB8kieAinMo9xZAVw/h8bjDpayeA08IVV/rzwfv1aNFCposWEJxfI3CY0VrLpcLCp0giuICtR7by/PyJ/Dn/UayHrwSgT58oJk+OJjhYvv0JQ/4KZdphwaEdWJS8tYTvkFdrEZzayZxf5/Hy5F2kLB+MtvsTXcvE++/Vp21bmS5anKngAgGnhTx7HhZ/eWsJ3yEN24VIyUrhkbf7M/DJSpz4Xxe03Z8uXcPYueNaSQKiUEopMNkByLHZvRyNEJdGvrac5ceDP9Fl5P9x8IvH0NYgwiOdvLfgSu67T6aLFuenzA6000JObp4xs5YQPkISgYvdaWfs/95m+ohKZP/1JAD33B/Iu/OuIjJSTpO4MJPFgSMPcq1SIxC+RT7hgKSMJB4cMZfN796BMyeESqF5zH3nCp54QiaKExdPmR0A5FhlBXvhWyp8Ilj86xpeeOEgGds6AXDz7U6WfNSE6GiZLlpcGlNBIpAagfAtFbaz2Gq30nncOzzZ1kLGtjj8Am28MSuSn9bdIElAXBZlcQLSNCR8T4WsEWzdv5d7u3xH0k/NAWjY9DQrlzQjNjbQy5EJX2a2GDUCSQTC13ikRqCUaq+U2q2U2quUGlbI/gCl1GLX/l+VUvXc9g13bd+tlGrniXiKorVmzLzlNLvhAEk/NcXkl8fQcSZ2bmopSUAUm8ls1AhyrA4vRyLEpSl2jUApZQZmAXcCicAmpdTSs5ac7Aaka62vVEp1Bl4DHlNK/QtjjeN/A9HA10qpq7TWHn8nHUs/RbunV7Bt+VUA1Lgqha8+j+OG6yI8/VSigjJZNABWGUcgfIwnmoaaAXu11vsBlFKLgE6AeyLoBLziur0EmKmMy3E6AYu01lbggFJqr+vxfvFAXGdITc9hx3fRKLOdR58/wcLxjfHzs5KXcdTTTyUqKJPZSADZJ1PldSU8TmvNgv/toWeXVh6/mtETiaAWcNjtfiLQvKgyrsXuM4Cqru0bzjq2VmFPopTqAfQAiImJueQg/1W/Oq/P2EFMTc3dtzS95OOFuBCzq0aQa3N6ORJR3uxPPE3HZ/9k/6a6JKR+z+SBt3n08X2ms1hrPReYCxAXF6cv5zH6dmvj0ZiEcGf2M16WdlMIflVqejkaUV5Mm7uN4QNPYc+qiykwC7u2evw5PJEIkoA6bvdru7YVViZRKWUBqgCpF3msED6hoEYgncXCA1JS8rj7yfVsXBMOBBN5zR7+75MmtLz2Ko8/lyeuGtoENFBKxSql/DE6f5eeVWYp0NV1+2HgG621dm3v7LqqKBZoAGz0QExClDqzaxyBLU+ahkTxfPp/h4lpsIGNa8JR/rnc3Xcbh3/rVCJJADxQI3C1+fcBVgNmYKHWeodSahywWWu9FFgAfOjqDE7DSBa4yn2G0bFsB3qXxBVDQpQGc8FVQ/ISFpfn1CkHT/bYwleLLUAwwfX/ZubcSJ6549kSfV6P9BForVcAK87aNsbtdi7wSBHHTgQmeiIOIbzJ7Ho32WyX1YUlKriv12Xw6FM7SE8ORFlsXPfYTyx7qzN1wgu9fsajKuwUE0J4msVPagTi0mVnO+nR+2/ubLuP9ORAAmrvY+jC7Wz+oF+pJAHwoauGhCjr/kkE0kcgLs6vv2bxyBO7OLzfBCY7tTqs4tMZd9LyikIbUEqM1AiE8BCLsX49eZIIxAXYbE5GjEji5hZ/cXi/Cb/qh2k/4VO2Lu5FyytuLvV4pEYghIdYXO8mq/QRiPPYti2bJ5/ax44/80BpwlovZfjocAbdPg2zyeyVmCQRCOEhfvk1gjxJBOJcdrtmypRjvPxKEvY8hSUimSu6fsC8vr1pWa+lV2OTRCCEh+Q3Dck4AnG23btz6dr1IL/+mg0oKt+8mjue38HbD79BjdAa3g5PEoEQnpLfNJQnTUPCxenUzJx5gmHDksjJ0ZirpBL1yNv0f+omBt76Ln5mP2+HCEgiEMJj/PyNGSGlaUgAJCRYefbZBJGuiFsAAB/+SURBVL799jQAIU2/J/axJbzx0HjaXFG25j2TRCCEh+T3EciAsopNa82776bSv38imZlOzCEZRD44lxZ3Wnnr3s+oVaV0xgZcCkkEQniIv59RI7DneTkQ4TVHj+bRo0cCX311CoBK12wg6qF5dG/9EENbDcXfXDbXQ5dEIISHSNNQxfbZZ+n06nWItDQH5qAcIjrNo8ZNW5naYQrtrirRVXiLTRKBEB6SXyPIkxpBhZKWZqd378MsWpQOQHDDP6j68Cyuv6omb923lLphdb0c4YVJIhDCQ/JrBHZZsrjCWLkyg27dDnH0aB6WgDzCOr5H6M1reKrxk4y8fSQBlgBvh3hRJBEI4SF+0kdQYWRmOhg0KJF581IBqHLlASo/NJ2wmplMbPcG9za618sRXhpJBEJ4SIC/MT2APc+zC4uLsuWHH07TtetBDhywYfHTRLRbRHDLL2lUrQEz7/uQ+hH1vR3iJZNEIISH+PsbczhKjaB8ys11MmrUEaZPP47WEFU/jYD7J+Jf8xCPXvsoY9qMIcgvyNthXpZiJQKlVASwGKgHHAQe1Vqnn1WmMfAOUBlwABO11otd+94DWgMZruLPaK1/L05MQniLf0EfgdQIypstW7Lp0uUgO3fmYjZD3Q7foG+ZR1CghXFtp/DQNQ95O8RiKW6NYBiwTms9WSk1zHX/pbPKZANdtNZ7lFLRwBal1Gqt9UnX/iFa6yXFjEMIrwvwM5qGHNJZXG7k5WkmTUpmwoSj2O1QKzYP/04TodYOroy4grfufYuGUQ29HWaxFTcRdAJuc91+H/iOsxKB1vpvt9tHlFLHgSjgJEKUI/4B+Z3FssxHebBzZw5duyaweXM2AHH37yHlxldQ/jY6Xd2J8XeOJ9g/2MtRekZxE0F1rfVR1+1koPr5CiulmgH+wD63zROVUmOAdcAwrbW1iGN7AD0AYmJiihm2EJ4X6G+8nRzSNOTTnE7NG28cZ8SII1itmujaJuo8uYATkSsINPvz8h0Teezax1Cq/PyfL5gIlFJfA4XNkzrS/Y7WWiulihxSqZSqCXwIdNVa58/TOxwjgfgDczFqE+MKO15rPddVhri4OBm6Kcqc/M5iSQS+68ABK888k8D69cZEcXc+mM2R5oM4YUqhblhdZt43k39V+5eXo/S8CyYCrXXbovYppY4ppWpqrY+6PuiPF1GuMrAcGKm13uD22Pm1CatS6l1g8CVFL0QZEiCJwGdprZk/P5WBAxM5fdpJ9eoWbu/zExsDpwHQ8aqOTGo3idCAUC9HWjKK2zS0FOgKTHb9/t/ZBZRS/sB/gQ/O7hR2SyIKuB/4s5jxCOE1gQGupiHpI/ApR4/m0b17AitWGBPFdezkj/OuiWzM3oifyY8Rt43g6SZPl6umoLMVNxFMBj5TSnUDEoBHAZRScUBPrXV317ZWQFWl1DOu4/IvE/1YKRUFKOB3oGcx4xHCa/JrBE6HJAJfsXhxGv/5z2HS0hyEhZnpOfokKy39ycw+Re3KtXnr3re4ruZ13g6zxBUrEWitU4E7Ctm+Gejuuv0R8FERx5et1RmEKIYAV43AKU1DZV5qqjFR3OLFxrCndu1CuP65ZXx26G2wQdsr2zKl/RSqBFbxcqSlQ0YWC+EhlQIsgBOH3eztUMR5rFiRQbduCSQn2wkONjF6Qggbo4ax5NBWLCYLQ1sN5bkbnivXTUFnk0QghIf4B5gBpzQNlVGZmQ4GDkxk/nxjorhbbw3mhXHJxO/oxsmjJ6kRWoM373mTG2rd4OVIS58kAiE8JMjfD8jDKTWCMuf77zN55pkEDh604e+vGD+hBtz4MS9vfgeA1rGtmdZhGhGVIrwcqXfIVxchPCQwwEgAWmoEZUZOjpOBAxO5/fY9HDxoo2nTINb8GMXWOgOZs/kdTMrE4JaDmf/g/AqbBEBqBEJ4TGBBZ7HUCMqCzZuz6NIlgV27jIniRo6sQZunDzB4dRfSctKoFlyNN+55g+Z1mns7VK+Try5CeEilAD8AtMOC1jL43Vvy8jQvv3yEm27aza5duTRqFMCPPzUg4q7P6fZlV9Jy0mgR04JlXZZJEnCRGoEQHuJnsYDJAU4zDgdY5N1V6nbsyKFLl4P89lsOSsGAAdXoP8KPEd/04pdDv6BQvHjzi7x484uYTVJzyycvVSE8xGKyoMx2tNOMzaaxWCrO5Yfe5nAYE8WNHGlMFFevnj/vvlsX//rbeeSzAaRkp1C1UlXi747nlrq3eDvcMkeahoTwEIvJAmYHYDRPiNKxf7+V22/fw+DBSVitmu7dq7L196vY7v8eXT/vSkp2Cs3rNOerLl9JEiiC1AiE8BCL2YIy2dGAzeYEpOmhJGmtmTfPmCguK8tJjRoW5s+vS/Pb8ui7ojs/JfyEQtHnpj70bdFXmoLOQxKBEB7iZ/JDWYzlyaRGULKOHLHRvfshVq40Jop79NEw3n47hj1Zm7nng/6cyDpBRFAE8XfHc2u9W70cbdkniUAIDzGbzCiTNA2VJK01ixal07v3YdLTHYSHm3n77To8+lgYb294mxk/z8CpnTSr3Yw37nmD6iHnXStLuEgiEMJDzMoMrhqB1eq8QGlxqVJS7PznP4f4/HNjldsOHSozf34M/lVO8eySZ/kx4UcUiv/c9B/6tehn9NmIiyJnSggPUUphcnUW51jzgCDvBlSOLFt2kh49DpGcbCckxMT06bXp3r0qmxI30f/D/hw7fYyIoAhe7/g6rWJbeTtcnyOJQAgPUvmJINfh5UjKh4wMBwMGJPLuu8ZEca1ahfDee3WpW8+Pd359h/if4nFqJzfWvpE37n6DGqGFraorLkQSgRAeZDIbTUK5NruXI/F9X399iueeS+Dw4TwCAhSvvhpNv37VSM9N47kvBvHDwR8A6NW8F/1v6S9NQcUgZ04IDzJZ8puGJBFcrqwsB0OHJvH22ykA3HhjJd5/vy5XXx3EpsRN9PuqH8dOHyM8KJzXO75O69jWXo7Y9xUrESilIoDFQD3gIPCo1jq9kHIOYLvr7iGt9X2u7bHAIqAqsAV4WmttK05MQniTyWLUCKySCC7Ljz+e5plnEti3z4qfn+KVV2oydGh1TGbN7F9nM/3H6Ti0gxtq3cCMe2ZQM7Smt0MuF4o7sngYsE5r3QBY57pfmBytdWPXz31u218D4rXWVwLpQLdixiOEVxU0DUkiuCS5uU6GDEmkVau/2bfPynXXBbFpU0NGjKjBSWsqz33xHFN/mIpDO+jZrCcfP/qxJAEPKm4i6AS877r9PnD/xR6ojHXg2gBLLud4IcoisyU/EUhn8cXavDmLpk3/Ytq04yhlTBe9aVNDrr++Ej8c/IGO73fkh4M/EBEUwfwH5zOk1RD8zH7eDrtcKW4fQXWt9VHX7WSgqNEbgUqpzYAdmKy1/hKjOeik1jr/q1MiUKuoJ1JK9QB6AMTExBQzbCFKRkHTkE0SwYXYbE4mTkxm4sRkHA5o2DCA99+vR/PmwdgcNiZ/P515m+YBcFOdm5h+93QZIFZCLpgIlFJfA4VdkzXS/Y7WWiulihpOWVdrnaSUqg98o5TaDmRcSqBa67nAXIC4uDgZtinKJKkRXJzt23Po2vUgW7f+M130xInRBAWZOHTyEP2/6s+25G2YlZl+t/SjZ7OeMldQCbpgItBaty1qn1LqmFKqptb6qFKqJnC8iMdIcv3er5T6DmgCfAGEKaUsrlpBbSDpMv4GIcoMs8X4jiI1gsI5HJpp044xZsxRbDZNbKwxXXTr1qEALPtrGaPWjOK07TTRodHE3xNPXK04L0dd/hW3j2Ap0NV1uyvwv7MLKKXClVIBrtuRwC3ATm0s4fQt8PD5jhfCl5jyE0GeJIKz7dyZwy237GbYsCPYbJoXXohk27arad06lGxbNsNWDaP/V/05bTtNuwbt+KrrV5IESklx+wgmA58ppboBCcCjAEqpOKCn1ro7cDUwRynlxEg8k7XWO13HvwQsUkpNALYCC4oZjxBeZfFzJQKZa6hAXp5m6tRjjB1r1AJq1fJjwYK6tGtXGYC/TvxF32V92Ze2D3+zP6NvH83j1z+OcT2JKA3FSgRa61TgjkK2bwa6u27/DFxbxPH7gWbFiUGIssRS0EcgiQDg99+zee65BLZuzQHg+eerMnVqbapUMaO15qPfP2LSd5OwOWxcGXElb977Jg2jGno56opHRhYL4UEBIcZ4yFMnK3YisNmcTJiQzKuvJmO3Q716/sybF0PbtkYt4GTOSYatHsbavWsBeOy6xxh9+2iC/GSiPm+QRCCEBwWF5gGQllZxL2zbtCmL555L4M8/cwHo0yeKV1+NJiTEuOpnU+Im+i/vT3JmMiH+IUy6axJ3N7rbmyFXeJIIhPCgoMpGjSCjAiaC3Fwnr7xylKlTj+F0wpVXBrBwYV1atgwBwO60M+uXWczcMBOndtK4ZmPeuPsN6oTV8XLkQhKBEB4UXNmoEZw86eVAStnPP5/muecS2L3biskEgwdXY+zYaCpVMi5MTDiZwKDlg9h6dCsAPZv1pP8t/WWEcBkhiUAIDwoOMxLBqfSKccVLVpaDUaOOMmPGcbSGq68O5N1369K8eTBgLC35xY4vGLduHFl5WdQIqcHUjlNpEdPCy5ELd5IIhPCgSq4aQUYFSASrV5+iZ89DHDxow2yGl16qzpgxNQkIMGoBJ3NOMmrtKFb+vRKADld1YMKdEwgLCvNm2KIQkgiE8KDQMONqocyTxR2rWXYdP57HgAGJfPKJMeP89dcHsXBhXZo2rVRQ5udDPzNkxRCSTycT7BfMmDvG8NC/H5KxAWWUJAIhPCg41AnKSfZpE3l5Gj+/8vPBp7XmvffSGDQokfR0B0FBirFjo+nfv1rB32m1W4n/KZ75m+aj0TSp2YTX736dumF1vRy9OB9JBEJ4kMVixlTpNM6syqSl2alevXx0hv79dy4vvHCI7747DcBdd4Uye3YMsbEBBWX2pu5lwPIB7Dy+E5My8eJNL9L75t6yhKQPkP+QEB7kZ/LDHHwKZ1ZlUlN9PxHYbE6mTj3G+PHJWK2aqCgL8fG1eeKJ8IJmHq01H//+MZO+n4TVbqVOlTpMv3s6TaObejl6cbEkEQjhQaEBoZgqGd+aU1J8e5Wyn38+TY8eh9ixwxgY9uyzVZk6tRZVq/7zsZGSlcKw1cP4dv+3ADz47wcZ02YMoQGhXolZXB5JBEJ4UFhgGOZKmQCkpvrmDKQZGQ6GD09i9uwUtDYGhs2ZE0ObNmd+uK/6exWj144mLSeNygGVmXDnBBkh7KMkEQjhQeFB4ZiCDwCQmupbNQKtNV98cZJ+/RI5ciQPiwVeeqkGI0fWICjon6ugMnIzGLtuLP/bZcwaf3PMzUxpP4XoytHeCl0UkyQCITwoIigCc6U/AN9KBHv25NKnz2HWrDFqMzfdFMy8eTFcc82Zk8CtP7Ce4auHk3w6mUBLIC+1eomnmjyFSZXfy2UrAkkEQnhQWFAY5mDjw9QX+giys528+moyU6Ycw2bThIebmTQpmuefj8Rs/ufS1yxbFpO/n8wn2z4BoEnNJkztMJXYiFhvhS48SBKBEB4UHhSOyUf6CJYtO0nfvokcPGhMlPfss1V57bVooqLOvNJpc+JmhqwcwqGMQ/iZ/Oh3Sz+ev/F5uSy0HCnWf1IpFQEsBuoBB4FHtdbpZ5W5HYh329QI6Ky1/lIp9R7Qmn8Wsn9Ga/17cWISwpuMpiHjqqGy2jR04ICVfv0SWbbMeNtdd10Qb79dh1tuCTmj3NmDwxpFNeL1jq/TKKqRN8IWJai4KX0YsE5rPVkpNcx1/yX3Alrrb4HGUJA49gJr3IoM0VovKWYcQpQJoQGh+AVnAZCSkuflaM5ktRpjAiZOTCY3VxMaamL8+Gh6947CYjlzBPQfR/9g6Kqh7Endg0mZ6NmsJ31b9MXf7O+l6EVJKm4i6ATc5rr9PvAdZyWCszwMrNRaZxfzeYUok5RShFVVJAInUmzeDqfAihUZ9O+fyJ49VgAefzycadNqER195gd7bl4u8T/Fs3DLQpzaSb3wekzrMI0m0U28EbYoJcVNBNW11kddt5OB6hco3xmYfta2iUqpMcA6YJjW2lrYgUqpHkAPgJiYmMuPWIgSFlnVaGNPKQNNQ7t25TBwYBKrVp0CoFGjAGbNOndMAMDGwxsZtnoYCScTMCkT3eK6MeCWAbJ8ZAVwwUSglPoaqFHIrpHud7TWWilV5LJMSqmaGIvYr3bbPBwjgfgDczFqE+MKO15rPddVhri4uIq3/JPwGdUijfl3MtI1TqfGZCr9iefS0+2MG5fMzJnHsduhShUzL79cg969o/D3P/NSz9O200xdP5WPfv8IgAZVG/Ba+9e4vub1pR638I4LJgKtddui9imljimlamqtj7o+6I+f56EeBf6rtS5oOHWrTViVUu8Cgy8ybiHKrIjQyqjAbJy5lcjIcBAeXnpX1zgcmvnzUxg16igpKXaUgh49Ihk/vibVqp0779H6A+sZuWYkRzKPYDFZ6NW8F72a9yLAElDIo4vyqriv0KVAV2Cy6/f/zlP2cYwaQAG3JKKA+4E/ixmPEF4XHhSOuVIm9txKpKbaSy0RrF17isGDk/jjjxwAWrUKYcaM2jRuXOmcshm5GUz8diJf7PgCgGuqX8PkdpO5utrVpRKrKFuK+wqdDHymlOoGJGB860cpFQf01Fp3d92vB9QBvj/r+I+VUlGAAn4HehYzHiG8LiIoAnNwJva06qSkOLjyypJ9vi1bshk2LImvvzbGL9St68+0abV46KGwcxaC0VqzZs8aXl73MieyTuBv9qd/i/50u7GbjAuowIr1n9dapwJ3FLJ9M9Dd7f5BoFYh5doU5/mFKIvCAsPcBpWVXIfxvn1WRo06wqJFxtCdKlXMDB9enb59q50xN1C+xIxExq4byzf7vwHghlo3MLndZOpH1C+xGIVvkK8AQniY0TR0GCiZRHD8eB7jxycze/YJ7HYICFC8+GIUw4fXICLi3Ld0niOPhZsX8uYvb5JrzyXEP4TBLQfzZOMnZY4gAUgiEMLjIoIiMAXvAjybCFJT7cTHH2fGjOOcPu1EKXjmmQjGjo0mJqbwgV6bkzYzas0o9qTuAeCeRvcw8raRVAup5rG4hO+TRCCEh4UFeXZNguPH83j99ePMmnWCrCwnAPfcU5lJk2px7bWFX+OfnpPOlPVT+Gz7ZwDEhMUw9o6xtIptVex4RPkjiUAIDzPWJDAGcBVnBtKEBCszZpxg9uwT5OQYQ2fat6/M6NE1aNEipNBj7E47i/9YTPxP8aTnpONn8uOFZi/Qq3kvAv0CLzsWUb5JIhDCw4oz8ZzWmm+/Pc1bbx1n6dIMnEYFgHvvrcLo0TW48cbgIo/95dAvjP9mPLtTdgNwU52bGNd2HFdUveLy/hBRYUgiEMLDLmfiudRUO4sXp/P22ycK1gj281M8/ngYgwZVp0mTc8cC5Dt08hCTv5/M6j3GoP3alWsz4rYR3NXgrnMuHxWiMJIIhPAwpRTh1e0kAb/8ksWHH6by9NNVzyl3+LCN1atPsXRpBqtWnSIvz2j+qVnTj549I+nRI5IaNc4dDZwvy5bFO7++w4LNC7A5bARZguh1Uy+63dBNmoHEJZFEIEQJqBVr41CLVZz6uT1duiTw9deZxMb6Y7Np/vorl23bcti//5/ZSc1maNeuMs88E8GDD4adMx+QuzxHHkv+XMKbP7/J8SxjVpf7/3U/Q1oOoUZoYdOCCXF+kgiEKAHhQeFEPrCAF+5uS/zLFj74IO2cMqGhJtq0CaV9+8o88EAY1asX/e0fwKmdrNy9kuk/Tedg+kEArq9xPaPbjJZpokWxSCIQogSEBYUBcPtDqTzWrjXLlp1EazCbFVdcEcD11wfRsGEgfn4XbsPXWvNjwo9M+2Eafx4zpuOqF16PgbcMpEPDDjIoTBSbJAIhSkB4UDgA6bnpdLihEjfcUHRnb1G01nyz/xtm/TKLbcnbAKgWXI0XW7zII9c8gp/5/DUIIS6WJAIhSkBEUARgDOy6VE7tZPXfq5m1YRa7TuwqeLzucd3p0rSLLBQjPE4SgRAlICzQaBq6lESQkZvBkj+X8PHvH5NwMgEwagDP3/g8na/rTCX/S69VCHExJBEIUQIKmoYuIhHsPL6TD7d+yNJdS8m1G2MIalWuxQvNXuDhax6WRWJEiZNEIEQJuFDTUGJGIst3L2f5X8vZcXxHwfZb697KU02eok39NphN5lKJVQhJBEKUgPyrhrYe2cqcX+fQMrYl+9P2sz15O98f+L5gNlAwRiI/+O8HearxU7I2gPAKpfXlrwOvlHoEeAW4GmjmWpCmsHLtgRmAGZivtZ7s2h4LLAKqAluAp7XWtsIew11cXJzevLnQpxKiTMi2ZfPgxw+e8YHvLsQ/hFaxrbi30b20jm0tzT+iVCiltmit487eXtwawZ/Ag8Cc8zyxGZgF3AkkApuUUku11juB14B4rfUipdRsoBvwTjFjEsLrKvlXYnnX5aw/uJ5Pfv+EvWl7aVC1AQ2jGnJzzM3E1YrD31z4GgJClLbiLlW5C7jQxFbNgL1a6/2usouATkqpXUAb4AlXufcxaheSCES5YDaZub3+7dxe/3ZvhyLEeZXGkMRawGG3+4mubVWBk1pr+1nbC6WU6qGU2qyU2nzixIkSC1YIISqaC9YIlFJfA4XNZDVSa/0/z4dUOK31XGAuGH0EpfW8QghR3l0wEWit2xbzOZKAOm73a7u2pQJhSimLq1aQv10IIUQpKo2moU1AA6VUrFLKH+gMLNXG5UrfAg+7ynUFSq2GIYQQwlCsRKCUekAplQjcDCxXSq12bY9WSq0AcH3b7wOsBnYBn2mt80fQvAQMVErtxegzWFCceIQQQly6Yo0j8BYZRyCEEJeuqHEEMpG5EEJUcJIIhBCigvPJpiGl1Akg4TIPjwRSPBiOp0hcl0biujQS16Upr3HV1VpHnb3RJxNBcSilNhfWRuZtEtelkbgujcR1aSpaXNI0JIQQFZwkAiGEqOAqYiKY6+0AiiBxXRqJ69JIXJemQsVV4foIhBBCnKki1giEEEK4kUQghBAVXLlMBEqpR5RSO5RSTqVUkZdaKaXaK6V2K6X2KqWGuW2PVUr96tq+2DVZnifiilBKrVVK7XH9Di+kzO1Kqd/dfnKVUve79r2nlDrgtq9xacXlKudwe+6lbtu9eb4aK6V+cf2//1BKPea2z6Pnq6jXi9v+ANffv9d1Puq57Rvu2r5bKdWuOHFcRlwDlVI7XednnVKqrtu+Qv+npRTXM0qpE27P391tX1fX/32PUqprKccV7xbT30qpk277SuR8KaUWKqWOK6X+LGK/Ukq96Yr5D6VUU7d9xT9XWuty94OxhnJD4DsgrogyZmAfUB/wB7YB/3Lt+wzo7Lo9G+jlobimAMNct4cBr12gfASQBlRy3X8PeLgEztdFxQWcLmK7184XcBXQwHU7GjgKhHn6fJ3v9eJW5j/AbNftzsBi1+1/ucoHALGuxzGXYly3u72GeuXHdb7/aSnF9Qwws5BjI4D9rt/hrtvhpRXXWeVfBBaWwvlqBTQF/ixif0dgJaCAm4BfPXmuymWNQGu9S2u9+wLFCpbQ1FrbgPwlNBXGEppLXOXeB+73UGidXI93sY/7MLBSa53toecvyqXGVcDb50tr/bfWeo/r9hHgOHDOyEkPKPT1cp54lwB3uM5PJ2CR1tqqtT4A7HU9XqnEpbX+1u01tAFj7Y+SdjHnqyjtgLVa6zStdTqwFmjvpbgeBz710HMXSWu9HuNLX1E6AR9owwaMtVxq4qFzVS4TwUXyyBKal6i61vqo63YyUP0C5Ttz7otwoqtqGK+UCijluAKVsVzohvzmKsrQ+VJKNcP4lrfPbbOnzldRr5dCy7jORwbG+bmYY0syLnfdML5Z5ivsf1qacT3k+v8sUUrlL2BVJs6XqwktFvjGbXNJna8LKSpuj5yrYi1e702qjCyhebbzxeV+R2utlVJFXrvryvbXYqzjkG84xgeiP8b1xC8B40oxrrpa6ySlVH3gG6XUdowPu8vm4fP1IdBVa+10bb7s81UeKaWeAuKA1m6bz/mfaq33Ff4IHrcM+FRrbVVKvYBRm2pTSs99MToDS7TWDrdt3jxfJcZnE4Euo0toni8updQxpVRNrfVR1wfX8fM81KPAf7XWeW6Pnf/t2KqUehcYXJpxaa2TXL/3K6W+A5oAX+Dl86WUqgwsx/gSsMHtsS/7fBWiqNdLYWUSlVIWoArG6+liji3JuFBKtcVIrq211tb87UX8Tz3xwXbBuLTWqW5352P0CeUfe9tZx37ngZguKi43nYHe7htK8HxdSFFxe+RcVeSmIW8sobnU9XgX87jntE26Pgzz2+XvBwq9wqAk4lJKhec3rSilIoFbgJ3ePl+u/91/MdpPl5y1z5Pnq9DXy3nifRj4xnV+lgKdlXFVUSzQANhYjFguKS6lVBNgDnCf1vq42/ZC/6elGFdNt7v3YaxgCEYt+C5XfOHAXZxZMy7RuFyxNcLofP3FbVtJnq8LWQp0cV09dBOQ4fqi45lzVRI94N7+AR7AaCuzAseA1a7t0cAKt3Idgb8xMvpIt+31Md6oe4HPgQAPxVUVWAfsAb4GIlzb44D5buXqYWR601nHfwNsx/hA+wgIKa24gBau597m+t2tLJwv4CkgD/jd7adxSZyvwl4vGE1N97luB7r+/r2u81Hf7diRruN2Ax08/Hq/UFxfu94H+edn6YX+p6UU16vADtfzfws0cjv2Odd53As8W5pxue6/Akw+67gSO18YX/qOul7LiRh9OT2Bnq79Cpjlink7bldDeuJcyRQTQghRwVXkpiEhhBBIIhBCiApPEoEQQlRwkgiEEKKCk0QghBAVnCQCIYSo4CQRCCFEBff/8FzXkEqRrnAAAAAASUVORK5CYII=\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -232,22 +225,22 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[]" + "[]" ] }, - "execution_count": 6, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -274,24 +267,24 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "And as image over time..." + "And as MAE, and image over time..." ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "(1, 128, 33, 1)\n" + "Vels array shape: (1, 128, 33, 1)\n" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAABwCAYAAADlsjDyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAd+UlEQVR4nO2dbahlV3nH/88+577MTCYzzowZBpM2ioFWSrUlaKR+iEptFGm+SKgUmpbAfFGwUKgJhZYWCimFWkuLOLSiQutLacUgUk2j0k/1/S2+pEaJmJA4TZwZ5+3ee87eTz+cPfGa5tz9WzPPvmvfc9YfhnvvPs+stdc+e//X8/yfZ61t7q6CgoKCgsVClfsECgoKCgriUci9oKCgYAFRyL2goKBgAVHIvaCgoGABUci9oKCgYAFRyL2goKBgATHOfQKSdHC834+tHu60s104l70KKxdnByxOuW/5mgu24/uXnnra3V/4fJ8NgtyPrB7WfS892WlHb+yxxT/MlDxpKFQFP6XWA4FFnyNFLgKrerhvopHrO8mJPu7tRcFbvvyXP5z32SDIvXbTuUk3LY7gw1dBJh4lPCiUtPkkQMcC++2BEmnfdCwU0VEI1x55x/kmvuETXfy1iW1wWebHYZB7I53d6rYbw7tmDL+9JHIPbpOTNgMdcx/yTQXPMnrio4i+1n30jduLbQ4j6b6BX9/QE345o6SISXwQ5O6SNutuuxqOdwq/lJWEu4uSdo0nAWZIbzB6bWj0k9I3bhEaGr02sNsG2qWATkDRfnYTPAVhAushYPCBR3xND2PuI4qch0GQe+2us1vdj+AqZNgVeMeuJFy/EfxW6CQQbccjCz5oaonlm2APmmrk0eOQeLRCEZ3Tie43BTzyinVwsPMAm+sDuxkNDILcG5c2gOtJZ1IfwX5TPHenEwvsG37J1I7eNLS9lDbh5cbfH48YoBzEmkvyJKOjAXorRjuTeOJLaLMOlunwfZMxHxEdYUfMAYMg95nnPum0Wx8xGlmr2a1INXxJWoMMRj3tMY4EgvMMPUhROC8A+472tHl7yxfV9OHtRnva0VJGL9FK8LwScY6DIPdGrg2fdhsCXV6S6C7Gqz2kdLDnjiMBqO3CJ6pJcDmjowaHfeeaLFKez+g2c0U1FGn51Fimo7dsvkkFUxMn7YBLOAhyr1XrjP20026/70ft7atXkN1qQwUFaa1itqvQNaakvQUZlk4qKRVCOC8AnyqcP2BmmgZ7nX1UT8V75MNuL8U6+hpGRyF9rHvYzaUUgyD3Rq5Nu9xpN4JiOk52pVzoYJHVoedOvVOKFM29gW5GAy8k7ZtKUTQKoaSdcjvkyzMwRDuIfcgyVH+OvoYUKdFPtNITMbEMhNynuqBnOu0m1SZqb+LXI7s1X0N2krQP2k5rdknHMJtLI4Yp9p75bYjzApBkaY6DlmvinEAPlURDX/eQq72sfYd77tAwoU2KlPzPPAyD3H2qS3U3uddVd9JVkmpjdhO7DtlJUg0loQmcBNacSUfTmjEnnSxWKh4KrMA2qSyzApMhlGR5OSmVCbi3lGti4auGGXAJZg9El2sSwP0mOM/h24ksiubuajRpumWZytjpVjBoroxr7hV9XHYxYXJV7aXIS3iVEKYS1hy8s7FsBNtLqZ6i4C3SRVFUKmPoY5UoLssNlltoe33IPNHyVsSt2MmWZvY+SW+WdNrdf6U9dkTSRyTdLOkxSXe5+xmbLS18t6Q3Sbok6ffd/StdfTRea3NytvNk3VlOuhmByhtJTUVz3DwaqMWigSnMr09hJLAimESmiwAk1Q2bTCeQSlYcRgKQtGkUQr3sacLL4oceXfCIgdnVOctEab97wHMfFLlLer+kv5f0wW3H7pX0kLvfb2b3tn+/U9IbJd3S/nuVpPe0PzvgqpvuzWWIjSRNjWnzlV1CdhKPBibGSNaM3bI4YsDlXQkPKZxMRSMgmgGl0hFszzERpwjLsb5aAycWGl1gYqK3V8LERy8jTlhS0qaeOzNLItjoxUkRgX0nubv7f5nZzc85fKek29vfPyDpc5qR+52SPuizO+G/zeywmZ1w9yd37qPRtOZE233O8KFP0Ci8YrbReQFqtyLm4ddaR3aStOKr0I55+CtwgqxhieoIPircw09INsNqp2htnu8hFNteSoKPj5l1Hl1DTsfSR4VQdBSyE65Wcz++jbCfknS8/f1Fkn60ze7x9tj/I3czOymp3cTd5GARUwM995pq81B2kKQpbNOo9ABlFOzhQ+954uwaSpLBW5FGA+ElqsERg8NrLQk/pVTfpUnpaHWXe4jxS7yiowvuucduHS4lbDIWHIXshGtOqLq7G52Cf/7/nZJ0SpLMzN27pZQ6ZXklOocEzx3aUr0/VySwaqzqR5KmxsbCK4SY3Zh6+NERQwKBTeH2n2M4YdC9i7DWTwmRmSVtWxG9aCw6uoiOLKQ+8gL5SiF/fEVuMbMTkk63x5+QdNM2uxvbYwDgQlKChd6pQXKQpLqhOj5rk+YFaCSAveweKoSo3YR6xli/DK71SHJO6Vgy1a1EC8sJftUIup01nNDio4vgyEISHArX3BNyHPNwteT+gKS7Jd3f/vz4tuNvN7MPa5ZIPdelt6fAxTxJeiPyWhmuz0fr/bg9GAlQOyklL8CigRp+f7WY1k/taO5gmsBgtOpoBEmbRg3Uw4+OGFIcyWz5iOAKoV409x70/nkgpZAf0ix5eszMHpf0Z5qR+kfN7B5JP5R0V2v+Sc3KIB/VrBTyDwLOMRnRk0CKKewZGzpc/okni4RBU3J3gxITbK+xfchuCi8iLTtdgQvLJKmGftEKtBvjXM2wJwuJe7FTuv6AEmLwuoekhVtw0NHvINgJpFrmrXM+ev3z2Lqkt13dqZDhxK788RTfnexaqYSkL3xIaUIV26VsoAqrTChp074nwRIFlpdSEqo9lJ6GAisU0fKSRCWm8CX7OEEL5aAEuqFSFN0Ndrfq3HcBlcy6k23ujES44JKg5uG+GeCuAlkRHQ1ERwLUrqGRBY+7tAIlIXptRjD/U8Pk8AjaRUcMUnzUQKuYaAK0gTvYpUzM0SWqC7Ofu2QykoiE3jPfzS1+/026ipbqMqREVOILvAzvZ8g9bVp6Stub2kZoe+GJVyVESnRFcPjmWOz8aFlg0gub8cb9sVHDOFiyStvEPvYLpGs4dsIgyN1kGlXdi2uwiAKrZTgRp/ROE6UwWQmfkxQtPRrYw6dJX9ge9shhxDAG0eMV4DHTc6RlnfAcG0iINHdAIwGJkyxdleuZ8gwpWy7g7SNg3ylbc8/DIMhdZhpV3WEufuhpPXxKnXu4Qkj7ppMFzAlAO4mXf1IvtlZse9g7he01KfvuBOcZ+OKWgW9glxFUYqJVNb1cm13sexDkbjbS6vhgtx18N+oUz/QpCTQaDcRq8zi6oGsAUjqHXidFyqIx1F6mSECSGhjJNcbsarhimbY3grLfGFKAwxyDJDUwCnEYDTR4ERrNb7DnnkYM0kx9IOAJ1QWRZSqNtD4+3G1XsQegsovIbgInC0mq4ba2OGjAkhAlMLoenm8/gHfyzSQdRSd8HRKnJDncUTRavqHtjYP7pTKPJI3g5nk4OQwnC7qymU4WKe+CpaWQ9Dmlk8VOGAS5m1UaV91aYgO94gYu2aftSQmLieCSfepp89sreBKQEqIBOmYqj0DJA84+ODGc8CITmiitlUe+CU8iJ22YSZO59Puj9yEdc0qujYHmGehCOSox7djGNbcQgEpjHbBjnXbjEdvRcAQmihQ7Sdqy88iORgM1rAhpGmYXHQnM2qSTH82FsNZoVgBPuH3sEhocDfBIgD0DuSIGKZ90RKUt+i7mcZJrFft+55SoYR4GQe6mSqvqXpVIbxqsh1Y8udiMYqMBmthEJaJSQiTQw7t3cOlbcHKYen50fx6sQ8VHA9GRQDYPPwH0HQkNnFioh0/17GlC8QEHfCdygIQ5CHIfaaTDzQs67S7DZekbcK+TSyPuuY9gCVoF9UYaNWxNWcQwFdwPP2HLXxoNYC8D6v3Um+SvAYR2ewA8EmD3F12lTSMGKd4Joxr+Cq4sg+syEjbZw0n74PzBzm0MAJVM6yQbj/drptURKQk06hnHJtqaJrbEEZeJSgnRQHTNWLTcQq9hiuYeHDUEaKw/3x4jB7qojZZ+SuJbM0DyxCugg6OaccJtjfV+nJPjfc/DIMh9pEqHx92exlbDZvD1hpVtbTjf2/yisXejXqxYm5dhdLFhbCzVlH2VNBKQ4qMBGgkYJm3WL53s+/Dwo/MCo4RdPVG/wZFASpsNvB/o4rKGlpMG5yMkXk1EX9JDNzfbCYMg98qkdfA2gOhNmKqUZWDwWuPNyOg22lDrr7HnnpBniI4GgiMBPgkEV/1IuPKHatr4ZTA0V0PPD2+jwK8NjQYMl2HCvjPt0ZbUN+ZsvkPpPAyC3MeV6eh69w2xBXfn2YQVK5s1H/5GzTzogw3LC5xvuhdtSdIFY3bnV36C7C6OnkZ2knR5wtrcnJxDdhNdYB3TvABN5OI9iTiwuoW3T6GeH19MhPoNfl+A1ENeALZXwS2b+6gQ4gvlaD5iQRKqY5OOge95ChcKTKBHvpVQ7roJKykuT5nXcnnKHtLz0wPMDiSkJemMHUF2knRu7X+R3YXRU8ju0tYzyG5ryiaLGpaJUnLHduITAZ4EglcDU6RID7hNOhHQuRmeYxVM2n2Uf0ZLRzthEORemevgSvfjQkmbbr85SUhIb8G+94+Z3aUpO8m1CcwzwMGsQW1e4tva0rsIa500KT2Nra9PIffwvYFwtQWUZegCrwqWI6bIMnSPlxQZjPQLJSZaDswXRSXIbz1MLPMwCHJfrVw37Yvbk4Vu8oXfWC6+JwT26KAhfc/kBD5Qk4aXtG1AienS9ASyuwCf5bNb7OL8ZINNAmcnTOb5qS4jO0m6bMx2At+VSzGGpXQ0cUffPpVSmkffPkVfXL4Cq2rozowr9BWEKbtCwrdr0P3cad/f2+GzQZD72FxHVuPInb7KKqX4jL4IgL5Bhe6PPYZveBnDUHgFroSUpLUVxsbrq8xu/wFGsuuHWXurx+GqwKNM27VDbDKTJNt3iBmuBD9iNfz+YFTjW3DGpf1K0hasnqK66IRGctBj2oLXBl5DSXIqF8BzpIHSB/96/meDIPfVUaMbr+8u0RvD94nSV16Nx/yGXVmBZVurkGT3wz0mroN7VB+CRHeEl7RVx1j5p25ger+/kNnpcPcmcpLkB1myWStQ5xzzx8HwXgrB5Enbg9GKbUGnqk6QUGCbNoVjhtemih4LPb8UW/w9Q7uhk3tVuQ7s674ZR2NIiNBuBIlYksZrkGQPUDv4Xs9DsM79EPROj0LClqTDjDz9KCNjXX89a+8ASyJT0vYE0saIfmdA8GSBiRP3m0B0WHOE6x7ohEbHQs8vTbfN1/ccDILcR+NGB492a5MjSLB0vUW1nwsz1T64ZPk6aHeIad92EEoFhyAhXg+9XUl+CJL7QThhYNKG7ydN2MWRAJOIxL0/6k1S0p7A9qDnjkmbjkPipJ3L0472spP67mEynYNBkLuNpbUbgN0aXByxHxIsJGxJsusY4WAyPgATm4cYcfp1kGApESvBg16D9cqrsPqGkjb01DBp9yA9ZJNH8PnRyYeTDR9LMBnnkkZ66TtztYyZPSbpvGYbJE/d/VYzOyLpI5JulvSYpLvc/cyODVUm29dN3AYWOklSdQCu7trPV4EZJWNsxyYB3wcni/1wK1hIxJKkVXh9qOwRTdo4DO/BW8JSAQ3Dg88RyzJwNXDKtQmXojKRdsqYo0l7ILLMa919+7LHeyU95O73m9m97d/v3KkBG5tGRwE5QTLGRLwvgegwabM9Yxza8fZivWwpo6dNH/pw6YHvmBkuj2D5hlaYwKRmtJcthZ9jNskjacyxE1pKpc489CHL3Cnp9vb3D0j6nDrIXZUh4jZKxmvQ40wh933QM4Z2Woe6MiXjaC9b4qQdjejEWHTFSkqbmSQF7GlTL7sPiSI6uRhN2kkJ1WDSTrkX5+Bayd0lfdpmReDvdfdTko67+5Pt509JOt7ZymgkOwy04P2Q6CBpY+9ZwuROk4ZYbsmlZ6eAeuTUM6Y3Nm0Pe7Hcc8deZ7D2He5p5/Tco2vsgz13TyH3OniSHIAs8xp3f8LMbpD0oJl9d/uH7u42Z/WPmZ2UdFKSfuGGQ9I68DzXIIFRbxeW0qW06bRN6kFH69lwdZ4k7NVhGQV7ibEJUJ5QzZdAi675zptczFSSCO0waVPCluJJO7cs4+5PtD9Pm9nHJL1S0o/N7IS7P2lmJySdnvN/T0k6JUm3/vKNTqpCsLdLvWzanhLkEdgm9rRHwcpZwlvsuacdXMGxyZbs4/OL9rIT2sSedrT+PMkkGyX1TaUMOlFFJ3JTyD12QvOUiWUOrpo5zOyApMrdz7e/v0HSX0h6QNLdku5vf34cNMa8aOoV08UtKZ47JeNoT5siukIhxRYTRCZPu4cE2sJ42n0kF6MrhMIrjnog92jSzizLHJf0MZttcDOW9C/u/h9m9kVJHzWzeyT9UNJdnS1VI7YQhnrF1MteT0io0oU10A4jmLR70ZU32da72IuFnns2PTuhzXBdmbYXTdq0X/WQNIyWeWjEkOI9476DpaMdcNXk7u4/kPTy5zn+jKTXJzVWVayUj5J2dBJSipdHILAXS+0ocUp8Ac4GbBNPFlSWCZY8EggsvM1wuSWT5CH1ULoYTMbBRCwlkDGeqHDXczGIFapYlsm1qCbFNteeI9EbTyljZUa0pNCHrpxt1WQm0u4joTpw0k7ynoNJe6h17umoDEkkvgYTpdTLTiH3YNLG8giWKKCXneK5U9tcnvYGTaj2sAsg9ciD+8YPfbCHn6I/h1ej4G1yg5OaCZ47nlioWUrfczAMcjdjhEzJONfiG/Wwj0n4hlIJunIuzzi8/jnncvNg0o5egBNdPigtDmmnjDmatAdQ5x4Ct4p55dGknVA5YnQZObWDOjX2tKkd1ceT+g5eYk+9Tuw9U32ckzuWPTJ50HyyiCXipL4zkTF+sUaCMsLPEba3OJq78njbKbsAUo88WnqI3pskp+eeqyIkWqeWEkhxMUg7SQOO1rQhGfOkJm2PNScpnrQXxXMPB95mNaEsMFp/vgzf1xnu4SeMGZcu0gkoWKeG7Tl8TVua5h4tt2Qi4z6Si5SMoz1ynKxkdikE6/jlybC9hfHcKaJ3Fexhoyg8YeDXpeXblztcUogm7ehdAJNkmQUhbdpeivwcTdrwton2ir2HXY6Xj9xdiLix7k29Yrj4RkrxtGHUgM+Ravi0+ibFc4/1tH0jurQSes+UtJNquYdNxtG6clrlSGyb4V5x9GShlHO08L7nYRDkbt7ICNFS6QESJybYlDYpyV6GE0s0uVPvWQlkjD3yYI0cyy3xurJvRe8lEqwXBxMYPj8p3DvFY8lIsHgsvmTkLneW3KS13FQaSVhuHl6jPfTl61K+pGE0aWN9fA/oypToMnnFs76hHSZE2HEwaad57sF9X3s+dSDk3rh0qdsztksXWXuX4F4n1HuWuKdN7ahXvMnsnJI2bE8Slz2GTsbRRJxgG528ozpwNq9YCifZps5EnHAcKXB6bRaG3N3ZIpxo7zlpn5VgT5vq1OErIROkh4GTtk+iK0JYc1ICKeKJBXYcLXkEE2dS37m8XTz5cHKnfS8fude1dP5Cp5ldvMTai/ayJekyXSQEPW3qQW8El/tRrVgJZAzbzKYr0/ZSqiPCNe08kgIl2CblrW/B5BlNnBQpBNvgiWrZyN2dedHRtdxUGkmwHTpp48oRxZO2bwWTdiavWEogO/gwN1geGba3O+s7D2nT9qKJOKVv3t61T1TDIPe6lp07321HveeLzCPH1SCSdJlNGL5JK0cgcW5Q3ZuucEzQlTEZB+vF8BLmIlipB4934N7uXvdif769eHKnY6ZYIHJvpHPdyVKHpI2JGHrPkqRNSLLRZAwngQYGKyklbVz2oH3n8WKjCXbWZh4Cy0WcKWQTLY/gMYcTLLct5D4P7qyKg1aOUNKGhD1rk9k2dBKIligmwRKFOCn6lJJssKQQTLD0/KTFIWN8bYLJS0o4x2DPPddk0Veb8zAMcp/W8me6E6p+ma6EjCXiWZvsDmuCSbaBylE0wc5sqWE0uTO7OpOUMbPNQ55DJ8RZ33m82IC9tq6q3xT0MUnOwzDIvWHE3VyC5L5JJQ9+NzSb0aQdK1Fg4kwi98Ug45waazQZ55MoUq5NaNfhY8kZhVBEnOMgyN2njepnupOlDfWeYd6VEqwkNdAzrqGdT9kWx5hg6Xqemm+tjAkHtrlIhBj/MOfqN59EEa9ThzaXhEZFc39eeCPVl7u/mQbmUylp1wnkjpOBwXaUjKOJWFocMu4jrF8Uku3Hi41tb4jEebVYOlnGa2nzJ92k00xivd0p9J4lqQmWFOommLQpgcF+Z20yu6ETXU4CGzox7SbZPBc58wK54MH3w04YBrk3punGqNOOarY1JO00iSJYVw4mMNpvTr2Rk/a1nM3z9AsfqCI9zEcv980uEt3VIDp3kNb3QGUZM7tD0rsljST9o7vfv5N9XZvOX1jrbJd6nfzl6/HkHk1ge4GYhu6B9UEiuR784p1eO3KS9m4inNzNbCTpHyT9pqTHJX3RzB5w92/P+z+NVzq/0U3u0V5sCjDRwRs7+gZbJM8q18OXU4ulCNjme89hL0xoQ0QfnvsrJT3q7j+QJDP7sKQ7Je1A7qbNafep0Ic+J9EtIzENnXAWiRyG7hUvEva6h98Hub9I0o+2/f24pFc918jMTko6KUk3rF6vM5urPZxKHPb491ywIFikiaqgX2RLqLr7KUmnJMnMzv/W5+9/JNe5DADHJD2d+yQyYZnHLi33+MvYrx2/OO+DPsj9CUk3bfv7xvbYTnjE3W/t4Vz2BMzsS8s6/mUeu7Tc4y9j73fsvFyE44uSbjGzF5vZqqTfkfRAD/0UFBQUFMxBuOfu7lMze7ukT2lWCvk+d/9WdD8FBQUFBfPRi+bu7p+U9MmE/3Kqj/PYQ1jm8S/z2KXlHn8Ze48wz7nbTkFBQUFBL+hDcy8oKCgoyIzs5G5md5jZI2b2qJndm/t8omFm7zOz02b28LZjR8zsQTP7XvvzBe1xM7O/a6/FN8zs1/OdeQzM7CYz+6yZfdvMvmVm72iPL/w1MLN1M/uCmX29Hfuft8dfbGafb8f4kbbwQGa21v79aPv5zTnPPwJmNjKzr5rZJ9q/l2nsj5nZN83sa2b2pfbYrt33Wcl921YFb5T0MklvNbOX5TynHvB+SXc859i9kh5y91skPdT+Lc2uwy3tv5OS3rNL59gnppL+yN1fJuk2SW9rv+NluAabkl7n7i+X9ApJd5jZbZL+StK73P2lks5Iuqe1v0fSmfb4u1q7vY53SPrOtr+XaeyS9Fp3f8W2ssfdu+/dPds/Sa+W9Kltf98n6b6c59TTOG+W9PC2vx+RdKL9/YRmdf6S9F5Jb30+u0X5J+njmu07tFTXQNJ+SV/RbLX205LG7fFnnwHNKsxe3f4+bu0s97lfw5hvbAnsdZI+IcmWZeztOB6TdOw5x3btvs8tyzzfVgUvynQuu4nj7v5k+/tTko63vy/09WhD7V+T9HktyTVoZYmvSTot6UFJ35d01v3ZFzJuH9+zY28/Pyfp6O6ecSj+VtIf62fbDx3V8oxdmu1a8mkz+3K73Yq0i/f9IPZzX2a4u5vZwpcsmdl1kv5N0h+6+0/NfrZHyiJfA3evJb3CzA5L+pikX8p8SrsCM3uzpNPu/mUzuz33+WTCa9z9CTO7QdKDZvbd7R/2fd/n9tyvZquCRcCPzeyEJLU/T7fHF/J6mNmKZsT+z+7+7+3hpboG7n5W0mc1kyIOm9kVx2r7+J4de/v5IUnP7PKpRuE3JP22mT0m6cOaSTPv1nKMXZLk7k+0P09rNrG/Urt43+cm92XdquABSXe3v9+tmQ595fjvtZnz2ySd2xbC7UnYzEX/J0nfcfe/2fbRwl8DM3th67HLzPZplmv4jmYk/5bW7Lljv3JN3iLpM94KsHsN7n6fu9/o7jdr9lx/xt1/V0swdkkyswNmdvDK75LeIOlh7eZ9P4Ckw5sk/Y9mWuSf5D6fHsb3IUlPSppopqPdo5mW+JCk70n6T0lHWlvTrHro+5K+KenW3OcfMP7XaKY9fkPS19p/b1qGayDpVyV9tR37w5L+tD3+EklfkPSopH+VtNYeX2//frT9/CW5xxB0HW6X9IllGns7zq+3/751hdt2874vK1QLCgoKFhC5ZZmCgoKCgh5QyL2goKBgAVHIvaCgoGABUci9oKCgYAFRyL2goKBgAVHIvaCgoGABUci9oKCgYAFRyL2goKBgAfF/y3co5GWeePwAAAAASUVORK5CYII=\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -309,16 +302,23 @@ " a = np.concatenate( [a,a] , axis=3)\n", "\n", " a = np.reshape( a, [a.shape[1],a.shape[2]*a.shape[3]] )\n", - " plt.imshow(a, origin='lower', cmap='magma')\n", + " plt.imshow(a, origin='upper', cmap='magma')\n", " \n", "# run all states through TF to get numpy arrays \n", "vels = sess.run(states) # convert all states in 1 sess.run() call\n", "vels = [ x.velocity.data for x in vels] \n", "#vels = np.asarray( [ sess.run(x, feed_dict={state_in: stateN}).velocity.data for x in states] ) # also works, but slower\n", - "sn = np.concatenate(vels, axis=-1)\n", - "sn = np.reshape(sn, list(sn.shape)+[1] ) ; print(sn.shape)\n", + "vels = np.concatenate(vels, axis=-1)\n", + "vels = np.reshape(vels, list(vels.shape)+[1] ) ; print(\"Vels array shape: \"+format(vels.shape))\n", "\n", - "show_state(sn)" + "# TODO later?\n", + "#error = np.sum( np.abs( np.asarray(vels[0:16]).flatten() - np.asarray(velP[bc_tx:bc_tx+steps]).flatten() )) / (steps*n)\n", + "#print(\"Mean absolute error across {} steps: {:7.5f}\".format(steps,error))\n", + "\n", + "# save for comparison with other methods\n", + "np.savez_compressed(\"./temp/burgers-diffphys-solution.npz\", np.reshape(vels,[n,steps+1])) # remove batch & channel dimension\n", + "\n", + "show_state(vels)" ] }, { @@ -328,6 +328,117 @@ "So far only 1D Burgers, but this works with more complex model equations and higher dimensions in just the same way." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Physics-Informed vs. Differentiable Physics Reconstruction\n", + "\n", + "now we have both versions, let's compare both reconstructions in more detail...\n", + "\n", + "let's first look at the solutions side by side, from top to bottom: the \"ground truth\" solution as given by the regular forward simulation, in the middle the PINN reconstruction, and at the bottom the differentiable physics version:" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# note, this requires running the forward sim & PINN notebooks beforehand\n", + "sol_gt=npfile=np.load(\"./temp/burgers-groundtruth-solution.npz\")[\"arr_0\"] ; #print(format(sol_gt.shape)) \n", + "sol_pi=npfile=np.load(\"./temp/burgers-pinn-solution.npz\")[\"arr_0\"] ; #print(format(sol_pi.shape)) \n", + "sol_dp=npfile=np.load(\"./temp/burgers-diffphys-solution.npz\")[\"arr_0\"] ; #print(format(sol_dp.shape)) \n", + "\n", + "divider = np.ones([10,33])*-1. # we'll sneak in a block of -1s to show a black divider in the image\n", + "sbs = np.concatenate( [sol_gt, divider, sol_pi, divider, sol_dp], axis=0)\n", + "\n", + "show_state(np.reshape(sbs,[1,n*3+20,33,1]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It's clealry visible here " + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MAE PINN: \t967.83557, \n", + "MAE DiffPhys: \t193.25261\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "err_pi = np.sum( np.abs(sol_pi-sol_gt))\n", + "err_dp = np.sum( np.abs(sol_dp-sol_gt))\n", + "#error = np.sum( np.abs( np.asarray(vels[0:16]).flatten() - np.asarray(velP[bc_tx:bc_tx+steps]).flatten() )) / (steps*n)\n", + "print(\"MAE PINN: \\t{:7.5f} \\nMAE DiffPhys: \\t{:7.5f}\".format(err_pi,err_dp))\n", + "\n", + "show_state(np.reshape( np.concatenate([sol_pi-sol_gt, divider, sol_dp-sol_gt],axis=0) ,[1,n*2+10,33,1]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's pretty clear, the PINN error is ca. 5 times higher than the Differentiable Physics (DP) reconstruction.\n", + "\n", + "That also shows clearly in the jointly visualized image: the magnitudes of the errors of the DP reconstruction are much closer to zero, as indicated by the purple color above." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we have a first example to show similarities and differences of the two approaches. In the section, we'll present a more in depth discussion of these findings, before moving to more complex cases." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercises:\n", + "As with the PINN version, there's variety of things that can be improved and experimented with here:\n", + "\n", + "* Try to adjust the training parameters to improve the reconstruction.\n", + "* As for the PINN case, you can activate a different optimizer, and observe the changing (not necessarily improved) behavior.\n", + "* Vary the number of steps, or the resolution of the simulation and reconstruction." + ] + }, { "cell_type": "code", "execution_count": null, @@ -352,7 +463,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.8.5" } }, "nbformat": 4, diff --git a/overview-burgers-forw.ipynb b/overview-burgers-forw.ipynb index 3d762ef..d341b01 100644 --- a/overview-burgers-forw.ipynb +++ b/overview-burgers-forw.ipynb @@ -6,8 +6,14 @@ "source": [ "# Simple forward simulation in phiflow\n", "\n", - "how to run\n", - "simple model equation $f(x) = ...$ " + "how to run ...\n", + "simple model equation \n", + "$\n", + " \\frac{\\partial u}{\\partial{t}} + u \\nabla u =\n", + " \\nu \\nabla\\cdot \\nabla u\n", + "$ \n", + "\n", + "Note, the first command with a \"!\" prefix installs the [ΦFlow Python package from GitHub](https://github.com/tum-pbs/PhiFlow) via `pip` in your python environment. (Skip or modify this command if necessary.)" ] }, { @@ -38,14 +44,28 @@ " [0.09414805]\n", " [0.10529345]] ...\n" ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/thuerey/anaconda3/envs/tf/lib/python3.8/_collections_abc.py:743: MatplotlibDeprecationWarning: The global colormaps dictionary is no longer considered public API.\n", + " for key in self._mapping:\n", + "/home/thuerey/anaconda3/envs/tf/lib/python3.8/_collections_abc.py:744: MatplotlibDeprecationWarning: The global colormaps dictionary is no longer considered public API.\n", + " yield (key, self._mapping[key])\n", + "/home/thuerey/phiflow/phi/viz/display.py:80: UserWarning: GUI is disabled because of missing dependencies: No module named 'imageio'. To install all dependencies, run $ pip install phiflow[gui]\n", + " warnings.warn('GUI is disabled because of missing dependencies: %s. To install all dependencies, run $ pip install phiflow[gui]' % import_error)\n" + ] } ], "source": [ + "!pip install --upgrade --quiet phiflow\n", "from phi.flow import *\n", "\n", "# run with phiflow\n", "n = 128\n", - "dt = 1./32.\n", + "steps = 32\n", + "dt = 1./steps\n", "viscosity = 0.01/np.pi\n", "initial = np.asarray( [ [-math.sin(np.pi * x) * 1.] for x in np.linspace(-1,1,n)] )\n", "\n", @@ -84,7 +104,7 @@ { "data": { "text/plain": [ - "[]" + "[]" ] }, "execution_count": 2, @@ -93,7 +113,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD4CAYAAADhNOGaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABlyklEQVR4nO2dZ3hURReA30knhBJ66BGQ3kNJgqJ0FAUEKUqxIKAo0vuHSFEEBVEUREAQkCKIFJEuIknovbfQQqhJICF9d74fsyEhpO9uCpn3efbJ3nvnzpy92b3nzplThJQSjUaj0eRebLJaAI1Go9FkLVoRaDQaTS5HKwKNRqPJ5WhFoNFoNLkcrQg0Go0ml2OX1QJkhCJFisjy5ctntRgajUaTozh06NA9KWXRxPtzpCIoX748Bw8ezGoxNBqNJkchhLia1H5tGtJoNJpcjlYEGo1Gk8vRikCj0WhyOVoRaDQaTS5HKwKNRqPJ5VhEEQghFgoh7gghTiZzXAghvhNCXBRCHBdC1EtwrLcQ4oLp1dsS8mg0Go0m7VhqRrAIaJPC8bZAJdOrLzAHQAhRCPgMaAQ0BD4TQrhaSCaNRqPRpAGLxBFIKXcLIcqn0KQ98KtUOa/3CiEKCiHcgJeAbVLKIAAhxDaUQlluCbk0aefWLfDzgzNn4MoVCAyEyEiIjoZ8+aBwYShVCmrUgFq1oFo1sNGGRY3mmSCzAspKAdcTbN8w7Utu/1MIIfqiZhOULVvWOlLmIoxG8PWF1athwwa4fDl95xcpAi1bQvv26uXkZB0508Kj6EecvHOS47ePExAawL3we4THhJPXPi/5HfNTrWg1GpZqSMVCFRFCZJ2gGk02JcdEFksp5wHzADw8PHQ1nQwSFAQLFsCPP6on/zhcXKBxY6hdG9zdoXRpyJMH7OwgLAzu3wd/fzhxAg4dguvXYfly9SpYELp3h8GDoVIl638GKSX7A/bz14W/2HppKwduHsAojameVzp/aT6o9wF96vWhZL6S1hdUo8khZJYiCADKJNgubdoXgDIPJdy/K5NkylUEB8O0afDddxAervaVKwddukCnTuDhAba2aetLSjh/Hv7+G5YuVYphzhyYOxfefBPGj4fq1S3/GS4HX2bB4QUsP7kc/xD/x/vtbOyoXrQ6tUvUxr2gO0Wci5DXPi9h0WEERQRx9PZR9gfs58bDG3y26zMm7Z7ECK8RjG86Hkc7R8sLqtHkNKSUFnkB5YGTyRx7FfgbEEBjYL9pfyHAH3A1vfyBQqmNVb9+falJGzExUs6YIWWBAlKqW7iUrVpJuXGjlLGxlhnj+HEp+/SR0t5e9W9jI+VHH0l59675fRuNRrn5wmbZeklryQQev9y+dpMf//Wx3HhuowyNCk1TPzsu75CdVnaSYoKQTEDW+LGGPHzzsPlCajQ5BOCgTOoendTO9L5Qi7uBQAzKzv8+0B/obzougB+AS8AJwCPBue8BF02vd9MynlYEaWP/finr1IlXAM2aSbl3r/XGu35dKQBbWzVeoUJSLl0qpdGY/r6MRqPccG6DbDCvweObv+MkR9lrbS/5j/8/MtaQcS225+oeWem7SpIJSJcvXKTPNZ8M96XR5CSSUwRC5sDi9R4eHlJnH02e2FiYMgUmTQKDQZmAZs+Gdu0yZ/xTp+DTT2HHDrXdoQP89BMUK5b6uUZp5M+zfzJ592SO3DoCQFHnogz1HMoH9T+gUJ5CFpExPCac99e/z4qTK8jnkI8tPbbgWcbTIn1rNNkVIcQhKaXHU/u1Ini2uHEDunUDHx8QAoYMgc8/h7x5M1cOKWHhQjX+w4dQsiSsXAlNmiR/zr4b+/h086fsC9gHgJuLGyO8R9C3fl+c7Z0tLmOsMZaea3s+Vgb7P9hPlSJVLD6ORpNdSE4RaE/wZ4g9e6B+faUESpaE7dvh668zXwmAUkLvv6+8jJo0gZs34aWXYOZMpSQSEvAwgJ5re9J4QWP2BeyjhEsJZredzeVPLzOo8SCrKAFQi8xLOi7hjapvEBodSs+1PYkxxKTpXAnsB74GrllFOo0m89CK4BlhwQJo1gzu3IHmzeHYMbWd1ZQtCzt3wrBhykw1ZAj07w8xMRAZG8mkfyfx/OznWXp8KY62joxpMoYLn1xgQMMBONlZPzjBzsaOha8vpEz+Mhy8eZAv93yZYvswYAZQBRUOPxz43OpSajTWRZuGcjhSwsSJMGGC2h48WLmJ2mXDCJFVq6BXL4iKAo839vDwpQ84H3QWgE5VOzG95XTcXd2zRLad/jtp/mtz7Gzs2Pv+XuqXrP/E8WBgNvAtEGTa5wyEA03RPs+anIE2DT2DGAzw0UdKCdjYqAXZGTOypxIAFbPw1/aHOHX6iIO1XuB80FkquVbhn97/sLrL6ixTAgDN3JvxaaNPiTXG8unmT+M82rgLjAbKAeNRSqAxsA5lGgLlJqfR5GS0IsihGAzw7rsqiMvJCdasgb59s1qqlNlwbgO991cjsuYcMNrBv//DfsERqji9lNWiATDp5Um4Ornic92H9dd9GAO4A1OBUKA5sBPwBV5HKQdQiiDnzas1mniy6bOjJiUMBujdG5YtUwvBf/0FTZtmtVTJExoVyqDNg1h4dCEAjUo1YnKjn/lkVU1On1VrGbt2pc291Jrkc8xHvyajmBobSacSdTGY9r8C/A81E0iIC1AQCAHuAUUzS1CNxsJoRZDDMBrhvfeUEnBxUWkeUnLJzGr2XNtDr7W98A/xx8nOiS+afcHARgOxtbFl926lBE6eVAns/vkHClkmTCDdPABmAT96DQchMACNIkKYlacgjVI4rzRKEdxAKwJNzkWbhnIQUiqvm19/VTOBzZuzrxKINkQzevtoXvzlRfxD/Klboi6H+h5isOdgbG1UUqOiRZWLa+XKcPw4tGoFoaGZK2cE8BXKBPQZ8FAIygddhIXeFPrjrRSVAChFAHqdQJOz0YogBzF5MsyaBQ4O8Oef4O2d1RIlzYX7F/Bc4MlUn6kIIRj7wlj29tlLtaLVnmpbvLiKQH7uOZW8rnNnVQPB2hiAhahKSaNQXkEvorx/9jsWIE/gEf6++DeXg1POzx2XSVErAk1ORiuCHMKiRSqrp42NSv3cokVWS5Q0v534jXrz6nE48DDuBd3Z/c5uJjebjIOtQ7LnlCoFW7eqNYKtW6FPn6eDziyFBDYAtVAJsQKAusBWlBJoChTNW5QOVToAsPLkyhT70zMCzbOAVgQ5gJ074YMP1PvZs+GNN7JWnqQIjwmnz/o+vP3H24RFh9GleheO9DuCd9m0TVsqVFCL3nnzwpIl8NlnlpdxL+pG/zpwGpUudxlwEGiJyowYR/ca3QFYfjLlYnlaEWieBbQiyOacPavqBcTGwtCh8OGHWS3R05y+e5oGPzdgwZEFONk5MffVuazotIICTgXS1Y+HB/z+u5r1TJoEK1ZYRr5zQCfAE/gPKAzMBM4Cb5H0j6B1xda4Orly4s4JTt05lWzfcYrgerItNJrsj1YE2ZgHD1QZyJAQlcHzq6+yWqKnWXVqFQ1/bsjpu6epUqQK+/vsp59HvwyXhGzbVgXFgYqT2L8/5fYpcQf4EKgO/AHkAcagcqEPAlIqSeNg60Cnqp2AlGcFekageRbQiiCbYjTC22+rSmA1aypzSVoriGUGscZYhm0dRtfVXXkU84i3ar7FwQ8OUrN4TbP7HjhQmcIiI6FjR7h9O33nRwHTgYrAXNS6QB/gAjAFSOs8pXtNZR5acXIFyaViSagIdFCZJqeiFUE2ZcIEZTMvVEh5CLm4ZLVE8dx5dIeWS1ryjd832NnY8V2b71jacSl5HSyT5lQItRYSl7W0WzdlGksNCawFqgEjUNHAr6AqIf0MlEqnHE3LNaWESwkuBV/i4M2kc1vlN70iUJ5HGk1OxCKKQAjRRghxTghxUQgxKonjM4UQR02v80KIkATHDAmOrbeEPDmd7duVq6iNjcrh/9xzWS1RPHtv7KXeT/XYdWUXJVxK8E/vf/ik0ScZNgUlh4ODSlJXooSKOh4zJuX2x1ApIN4ALgNVUbVR/0Iphoxga2NL56qdAdhwfkOy7bR5SJPTMVsRCCFsUWUo26J+c92FEE/89qSUg6WUdaSUdYDvUSbbOCLijkkpXzdXnpzO7dvQo4dyn/zss+zjJiqlZO7Bubz4y4sEhAbgXcabw30P06Ss9SLa3NyUMrC1henTYX0Sjwl3gL4oF9B/UEWwZ6MUQxsLyNCyQksA/r36b7JttCLQ5HQsMSNoCFyUUl6WUkYDK4D2KbTvjqpxrEmE0ajSNN++rYq4jB2b1RIpomKj6LO+Dx/+9SExxhg+afgJO3vvxC2fm9XHfuGF+EXy995TpiJ4ch3gZ8AW+BRV+HoAYG+p8cu+gECw98ZeImIikmyjFYEmp2MJRVCKJ73nbpCMOVYIUQ4Vzb8zwW4nIcRBIcReIUSH5AYRQvQ1tTt49+5dC4id/fj6axVQVaSIyiWUHRaH7zy6Q4slLVh4dCF57PKwpOMSvmv7XYoBYpZm8GCVfuL+fejVG9YYn1wHeBW1DvAt4GrhsV3zuFK7RG2iDdGPS2gmRruQanI6mb1Y3A1YLaU0JNhXzlQo4S3gWyFEhaROlFLOk1J6SCk9ihZ99tJ77d0bPwNYtEiVmsxqTtw+QcOfG7Ln2h5K5SvFnvf20KNWj0yXw8ZGXZOCL8CO0dDZJn4dYDOwEVUxzFo0LadSu+66sivJ4zrNhCanYwlFEED8bwHUA1JAMm27kcgsJKUMMP29jIryr2sBmXIUISHQvbvyjBkyBF59NaslgvXn1uO10IurD67SsFRDDnxwgHpu9bJElhDgKzd4uAtoBtyHkdfhONA6E8aPUwTJrRNo05Amp2MJRXAAqCSEcBdCOKBu9k8t6wkhqqBm7n4J9rkKIRxN74sA3qjo/1zFgAFw5YqKrP0y5ZK5VkdKyVd7vqLDig6ERYfxds232dV7V6asByTGCCwCKqNSRGMDNXcBleDPlhD1KHPkeLHciwD4XfcjMjbyqeNaEWhyOmYrAillLPAxsAU4A6ySUp4SQkwUQiT0AuoGrJBPRuZUBQ4KIY6hnD6mSilzlSL480/47TdwdlbJ5Bwyz/T+FJGxkfT+szejdoxCIvmi2Rcs6biEPPZ5Ml2Ww0AT4F2UZ1AT0759jaCaG5w7p2ZPmUFh58LULFaTKEMU+wOeDnVOuEagg8o0ORGLFKaRUm4CNiXaNz7R9oQkzvMFzA9FzaEEBUH//ur91KlQsWLWyXLn0R06rOiA3w0/8trnZekbSx9n4MxM7gPjgJ9QN9USKO+gtzElhcujFGbDhjBvnoo8bmMJP9FUeKn8S5y4c4JdF3ZR8L+CXPn3CjFhMUijxHOEF/b1S/II5c3kZH1xNBqLoiuUZSEDBypX0RdeUOahrOLsvbO8suwV/EP8KVugLOu7rad2idqZKoMBmI/KBRSE+mJ+iioYnz9R21q1YOJEGDkS+vVTFc7y5bOufN75vTn27zEiZ0ay9sHaJ47Z2NngsOwNYoA0BEBrNNkOnWIii1i3TrmI5skDCxcqz5is4N8r/+K1wAv/EH88Snqwr8++TFcCe4FGQH+UEmiGCgj7mqeVQBxDhkD9+nDtGowebT3Z7py6w4a+G7jQ4gLN/mmG4wNHitUoRqtvWvHC2BcACL0Z+viJKsZ6omg0VkPPCLKA7GISWnp8Ke+te48YYwztK7dn2RvLLJYvKC3cBUYCv5i2SwMzgM48WRsgKezsYMECtcD+ww/QtauaWVkCKSWXtlxi78y9XNp66fF+/yr+7G64m93f7aZ0gdLcPX2X/6b8R2hg6OMANj0j0ORE9IwgC/j0U7h1S924Pv4488eXUjLp30n0XNuTGGMMgxoNYk2XNZmmBIzAPJQ30C+oKODRqPoAb5K6Eoijdm0YZcps1aePylZqDrFRsRxZeIQ5NeewrO0yLm29hL2zPR4fefDxuY+5MvIK/s/5c+quqk/gUkJlAgy7FaZnBJocjZ4RZDJ//QVLlyqT0IIFmW8SijZE029jPxYdXYSNsOHb1t/ySaNPMm38o6gaAXtN2y1RuYGez2B/48bBmjVw5gx8/nnG3G/D74dzcO5BDsw+QNitMADylcpHw08aUv+D+uQppLymalyswb9X/+XEnRO0rtgaJ1cnbB1siXoQhWNEDOSx1zMCTY5EK4JMJDw8fgYweTJUqpS54z+IfECnVZ3Y4b8DZ3tnlndazuuVMyfPXyhq4fc71IzADVUlrAtpnwEkhaOjUqje3iox3ZtvQr00xr0FXQzCb6YfR385SmyEuoUXr10cr2FeVO9SHVuHJ3N81CymHNxO3jkJgBAClxIuPLj2gPy3wsDdVc8INDkSrQgykcmTVeBYnTrKYygzuRl6k7bL2nL89nGK5y3Oxrc24lHSw+rjSmA1qiLYTZQtciAwieQXgtOLp6e6nrNmKRPRgQPJ52mSUnLd9zp+3/hx9s+zjx3/K7atiOdQT9ybuSebUrtGsRpAvCIAHisCl0ClCPSMQJMT0YogkzhzRiWVEwLmzFGLnZnF2Xtnab20NdceXKNy4cps7rGZ8gXLW33ci8RHGoJKUzsHsEaiiilTYO1aOHIE5s592h3XaDBydu1ZfL/2JWCfyoBi62BLzR418RziSbHqxVIdo3qx6gCcunsKg9GArY0tLm5qncDFZFLSMwJNTkQrgkxASvjoI4iJgb59oXHjzBvb77of7Za3IygiiMalG7Ox+0YKOxe26phRwFfAF6b3BYGpqHKR1kqomjevmhF07KiS9735JhQrBtFh0RxZeIS93+4lxD8EgDyF8uDxoQcNP274eME3LRR0Kkjp/KW58fAGl4MvU6lwpcfn5zUpAj0j0OREtCLIBJYuVVW2ihTJ3FxCG85toOvqrkTERtDu+Xas7LwSZ3tnq465HfgIVR8YoBcqMjj1523zad8e2raFv/+GMZ+E0u25fRyae4jIEOVO5FrBFc8hntTuXRuHvBnL5VGzWE1uPLzByTsnlSIwzQicA0MBPSPQ5Ey0IrAywcEwdKh6P326qkGcGcw/PJ9+G/thlEber/s+c9vNxc7Gev/uQGAIqioRqCRSc4CmVhvxaYSAzz+6TZ4tfpRcdQIfjACU8S6D51BPKr9eGRtb89y0ahSrwd8X/+bknZN0rNrx8Ywgj54RaHIwWhFYmTFj4O5dFTPQu7f1x5NSMnn3ZMbvUqme/vfi//j8pc8tXlM4DgPqhj8WeAjkQXkHDQEyK3+elJJLWy/h940fl7ddphZgRHCjQDXGbfSkXJPSqfaRVuIWjE/cOQHExxI4BWpFoMm5aEVgRQ4dgp9+UgvDc+aoJ1ZrYjAaGLBpAD8d+gkbYcMPr/xAf4/+VhvvOKpecFzdrtdQ7qHlrTbik8RGxXJy+Un8Zvhx58QdAOzz2lOzV13GrG/MyQBXah6GgRYsq5zYcyifm0py5KQXizU5GK0IrISUKoI47m/16tYdLyImgrf+eIs/z/6Jo60jyzstp2PVjlYZKxyYiMoFZABKooLCrDPa00QERXBw7kH2f7//cQCYi5sLjQY2on6/+uRxzYNso9YM/vc/6NIFSpSwzNhVi1TFRthw/v55omKjHs8IHPSMQJOD0YrASvz+O/j4QNGi6mZkTUIiQ3ht+WvsubaHgk4F2dB9A03KWvAxOAFbUcnh/FGBYB8DU7BcTEBKBPsH4zfDj6MLjxITrp69i9UshudQT2p2r/lEANhrr6lKb3/9pdJQLFpkGRny2OehYqGKnL9/nrP3zlK9uNLwDrfDEEZJjI2Vp30ajRWwSIIDIUQbIcQ5IcRFIcSoJI6/I4S4K4Q4anr1SXCstxDigumVCVZ06xMRAcOHq/eTJ0OBAtYb63bYbV5a9FJ8XeF391hFCdxB1QRojVICtVCl5r7H+kog8HAgq7ut5vuK33Ng9gFiwmOo0KoCPbb0oP+x/tTpXeepKGAhlDupgwMsXqzMdJaicuHKAFwKvoSdox15CuVBGCTO98L1jECTIzF7RiCEsAV+QKWNuQEcEEKsT6LS2Eop5ceJzi0EfAZ4oGI8D5nODTZXrqzkm29UeuRateD99603zpWQK7Rc0pKLQRd5vvDzbOu5jbIFylp0DAksBIYDwajF4AnAYHiccdMaSCm5vP0yvtN8ubz9MqDy/tfqUQvPoZ4Ur1U81T4qVFARx19/rdJW79plmXWauGA8/2B/QJmlIoIicLkVRkyxzMveqtFYCkuYhhoCF03F5xFCrADak7baw62BbVLKINO524A2JCpwn5O4eTM+VuDbb5NPdWAup++epuWSltwMvUndEnXZ3GMzxfJa1lv/HNAPiCvZ3grlIfScRUd5EmOskVO/n8J3mi+3jt4CwMHFgXp969F4UGMKlEnf9GrsWGUW2r1bRR6/8Yb5MroXdAfAP8SkCEq4cPfUXVxuhRGbBgWl0WQ3LKEISqHKtcZxA1VnJDGdhBAvAueBwVLK68mcW8oCMmUZo0er5HIdO8LLL1tnjP0B+2m7rC1BEUG8WO5F1ndbTwEny9mfolCRwF8A0UBR4FugO+YliEuJ6EcqAtjvGz8eXH0AQN7ieWn0aSM8+nuQxzVjdZMLFlRZSQcMgBEj1LqBo6N5srq7PqkI4jyHXAJDtdeQJkeSWYvFG4DlUsooIUQ/YDGqEFWaEUL0RXkrUrasZc0flmL/fvj1V2WXnj7dOmNsv7ydDis68CjmEe2eb8eqzqssWlx+N2oWcNa0/T4wDbBWHNyju4/YP3s/B2YfICIoAoDCzxfGc5gntXvWxs7J/K9o374we7bK9zR7dnyAX0Z5PCMwmYbyllDmIJdbYXqNQJMjsYQiCADKJNgubdr3GCnl/QSb81H3lrhzX0p07q6kBpFSzkPVM8HDw0OaI7A1kBIGD1bvBw1S9mlL88eZP+i+pjvRhmjervk2v7T/BXtby1jqg4ARwALTdmVUAXlrRQYHXQrC7xtTCuhIdfss1agU3iO9LRIBnBA7O7Vu88orMGkS9OqlvLkyStwawZWQK0gpH7uQ5gsM0zMCTY7EEorgAFBJCOGOurF3A95K2EAI4SalDDRtvg6cMb3fAnwhhHA1bbdCFavKcfzxB/j6qkRnY8davv+FRxbywYYPMEojnzT8hG/bfIuNMP9mKVFpIQahPIMcUP+A0YCZFpQkuXnwJr7TfTm9+jTSqPT58+2ex2uEF2WblLVaBHTbttC6NWzZokxFs2dnvK8CTgVwdXIlODKYO4/uxJuG9IxAk0MxWxFIKWOFEHHZhm2BhVLKU0KIicBBKeV6YKAQ4nVUvE0Q8I7p3CAhxCSUMgGYGLdwnJOIiYkvoP7ZZ5Dfwv6UX/t+zfBtyh/1s6af8VnTzyxyw7yKqhb2t2n7RdQsoIrZPT9JXAoI32m++O9U5hQbextq96qN57C0pYC2BN98A9u2qTTVH30E1aplvC93V3eCA4PxD/GneAm1QOwSqBWBJmdikTUCKeUmYFOifeMTvI97yEzq3IUoD8Ucy/z5cOGCqjj2wQeW61dKyfh/xjP5v8kAzGozi4GNzK9oY0T5+44GHqHSRE8H3sOyRawNMQZOrVIeQLeP3wbAIZ8D9fvVp/GnjclfOjPC0OKpXl2tF8ydqxT3unUZ78u9oDuHAw/jH+xPBTdlB3S5pU1DmpyJjiw2k7AwZWoA+OILsLeQc72UkqFbhzJz70xshA2/tP+FXrV7md3vaVRdAD/TdmdUUJiFMjAAqgbA4QWH2TtjLw+uKQ8glxIuNBrUCI9+HjgVdLLgaOnjs89gyRJYv15Ffnt7Z6yfhC6kLjXi1ghC9YxAkyPRisBMvvkGbt+GRo2gUyfL9GmURgb8NYC5h+Zib2PP8k7L6VTNvM6jUcViJpveu6FmBZbMD/ToziP2fb+PAz8cIDJY1QAoXLkwXsO9qNWjFnaOWf91K1FCeQ1NnAgjR8J//2UsyOyxC2mwP04FnZB2NjiGRhMdFQvZ4HNqNOlBf2PN4PbteDfR6dMtE7Uaa4ylz/o+LD62GEdbR9Z0WcOrz79qVp/7ULOAuEq7fVCmoIJm9RpP0MUgfL/x5egvRzFEGQAo7VlaeQC9VhmRzfLvDB0KP/6oZgQbN6q8ROnlcXRxiL9ar8ljB6HR6vNrRaDJYehvrBlMnAiPHqkbyQsvmN9fjCGGHmt7sOrUKpztnVnfbT3Nn2ue4f4eAeOAWSjvoArAz4Cl4twC9gcoD6A1px8Xga/8emXlAeSdPWM9QC3m/+9/Kivs6NHKrTS9EeBxpqErIVcAEI5KEcRExkJ+a/hbaTTWQyuCDHLhAsybBzY2MHWq+f1FxkbS5fcubDi/gXwO+dj09iazksdtQ0XfXUEtAA9D5Qgyt1CllJKLmy/iO82XK7uuAMoDqFbPWngN86JoVTMc9DORfv1g5kw4dUqtGbzzTvrOj5sRXHtwDYPRAI5Kkxii9CqBJuehFUEGGTsWYmNVUjlz3BABwmPC6bCiA9sub8PVyZUtPbbQoFSDDPUVhKoOtti0XRsVJFbfPBGVB9DKU/hM83lcBMYxvyP1+ysPoHwl85k5Qubi6Kgyw/booWYHXbtCnnQEaOexz0MJlxLcCrtFQGgAwtEOCcSaTGMaTU5CK4IMcOSIqjfg5BTvMZRRQqNCabe8Hbuv7qaoc1G299pOreK10t2PBFaj6gPcQQWDfYaaCZjjyJRUDiAXNxcaD25M/b71cSqQdR5A5tK9u1rbOXYMfvgBhg1L3/nuBd25FXYL/2B/hKMtEj0j0ORMtCLIAHGFZj76CEqZkSIvOCKYtsvasi9gHyXzlWRHrx1UKZL+cK4AYAAQ5xb/AmotoHLGRSP8fjj7Z+9n//f7ibhvygGUzTyAzCXOrNe2rXL97dNHJalLK+ULlsfvhh/+If7YONlhRM8INDmTnP9rzmT8/FTVq7x5VeWrjHL30V1aLW3F0VtHKVegHDt67aBCofQlKDKibvgjUIXj86GSOPUl44FhD649wG+GH4d/Pvy4CliphqXwHuVNlfZVsp0HkLm0bg0vvaRqFcyYoRwA0krC5HOOjmpx3BipZwSanIdWBOlk3Dj1d9CgjCcuCwwNpMWSFpy+e5qKhSqys9dOyhQok/qJCTiPuuHH1Qp4DfgRlbUvI9w5eQefaT6cXH4SY6wRgIptKuI90ptyTctZLQdQViOEWito0kQtHg8cCEWKpO3cuFiCKw+uUNVRvTdq05AmB6IVQTrYuVO9ChZMvz05jmsPrtH81+ZcDLpItaLV2N5zO2753NJ8fgzwDcoDKApVK+B7oAsZqxVwbc81fL7y4fzG8wAIG0GN7jXwHuFNiTqWjDfOvnh7Q5s2sHmzWjP46qu0nVc6v1K7AQ8DqG4ylRm0aUiTA9GKII1IGb82MGxY+mzJcVwKukSzX5tx7cE16paoy9aeWyninMbHT+AwKhjsiGm7FzADKJxOOaRRcn7jeXy+8uG6r6oLZOdkR9336+I51BNXd9dUenj2mDhRKYLZs1VZy+JpKDQWpwhuPLyBjcl9VM8INDkRrQjSyN9/qzTTRYoo80F6OXP3DM1/bU5gWCCNSzfm77f/pqBTwTSdG4GaAXwDGIByqCyhrdMpgyHawInlJ/Cd5svd03cBcHJ1osGABjT6pBF5c3G93QYN4PXXVQ6iqVOVmSg1SuVTngIBoQHYmgroGPWMQJMD0YogDUgZvzYwejTkS6fL/LFbx2i5pCV3w+/StFxTNnTfQD7HtHWyC/gAuIgy/XyKyhfkko7xo8OiOfTzIfbO2MvDGw8ByF86P42HNKb+B/VxcHFIz8d5Zpk4USmCOXNUGorSqSy4FHQqSB67PIRFhyFNPrpSzwg0ORCtCNLAH3+o2AE3N/jww/Sduz9gP22WtiE4MphWFVqxtutanO1Tj+8NQXkD/Wzaro4q7dY4HWM/uvuI/d/vZ//s/Y+TwBWpWgTvkd7U7F4TW4d05lV4xqldG958U8WIfPGFykeUEkIISucvzYWgC8TYKg8r7TWkyYloRZAKBgOMN1VWGDcufdGn/139j1d/e5XQ6FDaV27Pys4rcbRLPQ/Nn8BHQCAqGGwsqnZAWp/bg/2D8fvGjyMLjxAboW5MZbzK4D3Sm+fbPf/MuYBakgkTYPVqVWNi5EgoVy7l9qXyl+JC0AWibZQikNo0pMmBWEQRCCHaoHKb2QLzpZRTEx0fglrnjAXuAu9JKa+ajhmAE6am16SUr1tCJkuxYgWcPq1uCH36pP287Ze3035Fe8JjwulavStLOi5Jtb7wLeATVIQwqKf/+ajZQFq4dewWvtN8ObnyJNKgssBVerUSTUY1oWyT7JsELjtRrRq89RYsW6bqG8+fn3L7uHWCKJtI7NGmIU3OxGxFIISwRaW2bwncAA4IIdZLKU8naHYE8JBShgshPkTFPXU1HYuQUtYxVw5rEBOjCpmA+uuQxkfyv87/RadVnYgyRPFOnXeY/9p8bG2SN8NIVG6gIUAwkBf4AhUtnJrxRkrJ1d1X8Znqw8XNFwEQtkIlgRvuRfGaaXB/0TzBZ5+pB4BFi1TQYMWKybeN8xyKEBEqlYeeEWhyIJaYETQELkopLwMIIVYA7VHFsACQUv6ToP1eoIcFxrU6ixfDpUvw/PPQs2fazll9ejXd13Qn1hjLRx4f8f0r36dYZN4f6IfKFgrQCuURVD6VcaRRcnbdWXy+8iFgXwAA9s721O1TF88hnhQsVzBtAmueolIl6N0bFi5UuaSWLEm+bdyM4BGPyI+eEWhyJpZQBKWA6wm2bwCNUmj/PvH10gGchBAHUWajqVLKP5M6SQjRFxVMS9my1jdzREXFpxv4/HOwS8OVWnp8Kb3/7I1RGhnmOYxpLaclG5FrAL5D1QsIBwoB36I0ZEoW/NioWI4vPY7vdF/un7sPQJ7CeWj4SUMaftwQ58LmJprWgIoZWbJEmYhGj04+w2yp/CZFIMMAJ4ReLNbkQDJ1sVgI0QPwAJom2F1OShkghHgO2CmEOCGlvJT4XCnlPGAegIeHh7S2rIsWwfXrquB5ly6pt593aB79N/ZHIhn/4ngmvDQhWSVwErVgss+03RWlFIql0H/UwygOzTvE3pl7Cb0ZCkCBsgXwHOpJ3ffr4pBXu4BakvLlVYrxuXPVAvKqVUm3izMNPTQ+AJy0aUiTI7GEIggAEibKKW3a9wRCiBYoB5imUsqouP1SygDT38tCiF1AXeApRZCZREcr90FQHkM2qWRwm7V3FoO2DAJgavOpjGwyMsl2USjb/5eoVBGlgDmoPEHJEXY7jH2z9nHgxwNEPVCXrViNYniP9KZ61+rY2msXUGsxdiz88otyJz12TLmXJibONPTQGAIUB20a0uRALKEIDgCVhBDuKAXQDXgrYQMhRF2U6buNlPJOgv2uQLiUMkoIUQTwRi0kZymLF8O1a1C1auoF6b/870vG7BwDwHdtvuOTRp8k2c4PZRM7Y9ruD0wFCiTTb9ClIHy/frIOcNkXytJkVBMqtq34zCaBy06ULg39+8OsWcpMuGbN022KuxTHRtjwwBACgNAzAk0OxGxFIKWMFUJ8DGxBObkslFKeEkJMBA5KKdejaqW7AL+bbmBxbqJVgZ+EEEZU5uSpibyNMp2YmPjZwP/+l3wtWykl4/8Zz+T/JiMQzHttHn3qPe1fGgaMAWajvIMqoYLEmj7VUhF4OBCfr3w4vfo00qgsYJXbV8Z7pDdlPNOXoVRjPiNHKvPQH3/AiRNQs+aTx+1s7CjhUoJY22hAKwJNzsQiawRSyk3ApkT7xid43yKZ83yBmkkdyyqWLIErV6BKleTXBqSUDNs6jBl7Z2ArbFncYTFv13r7qXZbUB5BV1EacjgwHkgckyalxH+nPz5f+XB522UAbOxsqN2rNl7DvShaLWfUAX4WcXODvn3h++9VXEFSawWl85cmzBRQpheLNTkRHVmcgJgYmDJFvR83LunZgMFo4KO/PmLe4XnY29izovMK3qj6xhNt7gODgTivw3qowLC6ifoyGoycXXuWPVP3EHgoEAD7vPbU71cfz8Ge5C+d33IfTpNhRo6En35SEcenTikHgoSUyleKUzbq/2ej1wg0ORCtCBLw229w+bLyI+/a9enjMYYY3ln3Dr+d+A0nOyf+6PIHbSu1fXxcAiuBgajwaSfgc1SgWMILHRsZy7Ffj+H7tS9BF4IAcC7qTKOBjWjwUQPyFEpHHguN1SlVSkWV//ijKmKzfHmi4/lKcdz2KqBNQ5qciVYEJmJj1Y8c1GwgcdxAVGwUXVd3Zd25dbg4uLCh+wZeKv/S4+M3gA+Bjabtpqi1gEoJ+oh8EMnBOQfZN2sfYbfCAChYviBew72o824d7POYU2ZeY01GjYKff4aVK5UnWdWq8cdK5y9NrI3y6NIzAk1ORCsCE8uXw8WLKp3AW289eSw8JpyOKzuy9dJWCjoVZPPbm2lUWsXMGVHBDSOAUCA/amW8D/F1g0NvhrJ31l4OzT1E1EN1wyheu7hyAX2zOjZ2Ga0wrMksypSJjyuYPFkFmsVRKn8pYm3jFIGeEWhyHloRoDKMxs0Gxo59cjbwIPIB7Za3Y8+1PRR1Lsq2ntuoXUI5lJ9H1QrYbWrbHpV0qZRp+86pO/h97cfxZccxxqg6wOVfLo/3SG8qtKqgXUBzGKNGwYIFKg/R+PFQubLaXypfKQxCKQJbvVisyYFoRYCa7p8/D+7u8HYC55/74fdpvbQ1hwIPUSpfKXb02kHlIpWJAb5G2f+jUBHBs4HOAFJy9b9r+Ezz4cJfFwBVB7ha52p4DfeiVMNSaHIm5crBO+8oE9GUKfDrr2q/Mg0p91FbbRrS5EByvSIwGJRbIKjZgL3JTH8r7BYtl7Tk5J2TPOf6HNt7bsfd1R0/VMKjk6bz30GVkCxoMHJm7Vl8p/sSsF8FVts52VHnvTp4DvGkUIVCmfq5NNZhzBgVbbxsmYozqVRJmYYMjxWBgbigGI0mp5DrFcHvv8PZsyq3TK9eat+1B9do/mtzLgZdpGqRqmzvtZ28+UryETAX5R1UAZUe4qWIGI4uOorfN34EXwoGTEngPm5IgwENyFs099YBfhaJ+54sXKgCD3/5BZztnXHOq5L92UXFEkvaiwhpNNmBXK0IjMb42cCYMWo2cP7+eVouacm1B9eoW6Ium3ts4b+8RfkEVTHMDhUYNux+OCd+OMC3s/cTfjccANfnXGk8pDF1362LvbP2AHpWGTtWpSFZskR5mFWoAEUKFAHUjEArAk1OI1crgjVrVPWxsmVV/vmDNw/Sdllb7oXfw7O0Jz+9/Td9nAqwwdTeE5jhH0zQDD/mLIgvA1nSoyRew72o+kZV7QGUC3juOVWfYtEi+PJLVcWsmKvKHWsXFUtM1oqn0aSbXKsIjMb4egOjR8PuG9vpuLIjYdFhtKrYluZd1+Jp58gjlEvopEM3cZvuy9bf43MAVWxbEe8R3pRrWk57AOUyxoxRi8WLF6tZQXFXVQnOLlKZhjSanESuVQRr18LJkyrDZL7Gq3hlWQ9ijDG0aTKaO80mM1LYgJT03nIJ7+m+3NzpTzAqB1CtHrXwHOapy0DmYipVUh5mS5aotYKSnUsiBdgYJFEGI9jqmaEm55ArFUHC2YDXoB/oue4TpH0e6vXYwtbyL0GskZdXHKP1dF8iT9zhJuCQz4H6fevT6NNGFCiTXPJoTW5i7FjlPbRoEYzq4EasYxj2kQaiowzgrBWBJueQKxXB+vVw/LjE5bUJrAqbCBXbUrDTck5FO9F4hh8tvt2HzY2HRAIubi40HtSY+v3q41TAKatF12QjKleGbt1Ujiq/bSWp73gJ+0gDkVGxoJ0FNDmIXKcIpITPJxqg3QDCXvwT2q7EpVBbPCbso9Hcg9ibqoAVrVYUz2Ge1HyrJnaOue4yadLIuHEqPck/692o4+gPoGYEGk0OItfd4f5YF8XR53vA264UKeOL14wT1Fo6C7to9eMt92I5vIZ7UemVSggbvQCsSZmqVVXdipXb3Ig1mYOidZoJTQ7DIopACNEGmIWqvzJfSjk10XFH4FegPipdf1cp5RXTsdGoKo4GYKCUcoslZEqKB5EP6XXiU8q+2Rvvn0OpvMFUMUBA1U5V8RruRelGpa01vOYZ5X//g5Vr3TAUVIogMlI7kGpyFmYrAiGELSrXWktUNuYDQoj1iUpOvg8ESykrCiG6AV8BXYUQ1VA1jqsDJYHtQojnpZQWn1tfeXiLN2evovtfXpQZf0jJ7mRHvXdq4znEk8KVClt6SE0uoXp1eLN9XmKPK0UQHPoA0FXlNJYlMhKioqCAFXxVLOHa0BC4KKW8LKWMBlagEnEmpD2w2PR+NdBcKMf79sAKKWWUlNIfuGjqz+IE3zPSdsIDyuy7SXQBJxqOf5GhVwfRbk47rQQ0ZjNuHBgc1M/pcsD9LJZG8ywyZ0YYb768hXmzoyzetyVMQ6WA6wm2bwCNkmtjKnb/AChs2r830blJpucUQvRF5XujbNmy6RayiH1JDtT2IDwmD+u2eVGwqE4CoLEctWqBwVHVNt25O5hPO2StPJpnh3tn77F+mi9BS4/hHWPk8IUYoJ1Fx8gxi8VSynmoGjB4eHjI9J5fpgys/a8tZ85AQT1r11gDJ6UITp9/wO3bUFzHG2rM4LrvdXZP8+HiunMA2Ao4064c+T2DLT6WJRRBAFAmwXZp076k2twQQtgBBVCLxmk512I4OUHdxBXkNRpLYVIEwvYhX38N06dnsTyaHIc0Ss7/dR7fab5c23MNgFhHW472ro1vi8u8EhrFvG79LD6uJRTBAaCSEMIddRPvBiQq9sh6oDfgh6rfslNKKYUQ64HfhBAzUIvFlYD9FpBJo8l8TPEmdg6P+PFHGDECiurZpyYNGKINnFh+At9pvtw9fReAiIJOHBjQgH1dnXnkO4SS8wey+O9uVhnfbEVgsvl/DGxBuY8ulFKeEkJMBA5KKdcDC4AlQoiLQBBKWWBqtwo4DcQCA6zhMaTRZAbCUUUT5y/wiPBw+OYbmDo1lZM0uZqo0CgO/3yYvTP38vDGQwBCS+fHZ0hjjr1TjYgDk+D3+bDsd6ZPaomNlTKXWGSNQEq5CdiUaN/4BO8jgTeTOXcKMMUScmg0WYlNHuWA4JIvAoDZs2HYMChSJCul0mRHwm6Hse+7fRz88SCRIZEAhFYvyvYR3pzsVoN8t/cRsbg2LqGPCFuwjUp5G9C1q/XkyTGLxRpNdsfWSc0IDDGRtGkDmzfDt9/C5MlZK5cm+xB0MQjfr305uugoBlMqEuMLZVk1wptzr1SiCEZKbB1GwL5vKVegHMa1ewi7WZlxi8HW1npyaUWg0VgIuzyOAERHRDPlf5LNmwXffQdDhkAhXbI6V3Pz4E18vvLh9JrTqtYtUKhDFZaO8GK/ZxkE0DUimN2/NCHg7mmqF61OH6ctDD5SiooV4a3Eq64WRisCjcZCxM0IRCxUrRtCy5aubNsGs2bB559nsXCaTEdKyaWtl/D5yocr/1wBwMbehio9a7F1uDcTqiibYQ3g0zunGLnoRYIigvAq48XaNzfQpL56ehg3DuysfKfWikCjsRDC5DVkG2tLYFgg48fHK4LBg6FgwayVT5M5GGONnFp1Cp9pPtw+dhsw1TPp78HdQY35uGQ+7gCOwHig/uWdvLHiNcJjwmn3fDtWdl7JHyuduXBB1cN++23ry6wVgUZjIYSTyX001paboTdp0aQazZrBzp3w3XcwfnwqHWhyNNGPojmy8Ah7Z+wl5EoIAC4lXGg0qBGl+nswqIAT601tXwB+Bi6e/4v2qzoRZYiiV+1ezH9tPjbYP15XGjvW+rMB0IpAo7EYNqYUE7axtgSGBgLq5r9zJ8ycCZ9+ap2EYZqsJfxeOPt/2M/+7/cTcV95jBV+vjBew72o0aMWvzjZ8SrwEMgHTEPlyll7eg3d13QnxhjDhx4fMvuV2dgIG377Dc6dA3d36NEjcz6DVgQajYWwcYyfEQSEqgD5pk3hxRdh927lTjp2bFZKqLEkIVdC8Jvhx5EFR4gJV6nHSzUqhfdIbyq/XpmLtja0BHab2r8G/IhKn7D0+FJ6/9kbozQy1HMo01tORwiBwQCTJqn2Y8eCfSYVutOKQKOxEHEzArsYGwIexmdK+ewzaN4cZsyAgQMhX76sklBjCW4du4XvNF9OrjyJNCgXoEqvVMJ7pDdlXyhLrBBMAyYAUaiE5N8DXQAB/HzoZ/pt7IdEMv7F8Ux4aQIqGTP8/jucPQvly0OvXpn3mbQi0GgshO3jxWKbxzMCgJdfBm9v8PGBH36AUaOySkJNRpFScmXXFXy+8uHSlksA2NjZULNnTbyGe1G8psoweBhVfOWo6bxewAxUqmWAWXtnMWjLIAC+bP4lo5rEfxmMxvjZwJgxmTcbAK0INBqLYfN4sVhw9eGNx/uFULOCVq1U2omPPwYXl6ySUpMejAYjZ9eexWeaDzcP3ATA3tmeeh/Uw3OIJwXKqkWfcNQMYAaq1GI54CegdYK+vvzvS8bsHAPArDazGNho4BNjrV4Np09D2bLQu7d1P1ditCLQaCyEbdxiccyTMwKAFi2gcWPYuxfmzIHhw7NCQk1aiY2M5ejio/h97UfQxSAAnIs403BgQxp81ADnws6P2/4DfABcQpl+BgGTgDhdL6Vk/D/jmfzfZASCea/No0+9Pk+MZzTCxInq/Zgx4JDJ5VK0ItBoLIStox0GwC5GcCvsFrHGWOxs1E9MCOVB9MorKj31gAHg7Jxyf5rMJyI4goNzDrJv1j4e3XkEQEH3gngN86LOO3Wwd46314QAw4H5pu3qqOyaCatySSkZtnUYM/bOwFbYsrjDYt6u9XRgwB9/wKlTqm7Ku+9a57OlhFYEGo2FsHO0xQA4xNphlEZuhd2idP7Sj4+3aQMNGsCBA/DTTyrITJM9eHjjIX4z/Tg87zDRYdEAlKhbAu+R3lTrVA0buyfTfq4FBgCBgD0wDhgFJHyQN0ojA/4awNxDc7G3sWd5p+V0qtbpqbETzgZGj8782QBoRaDRWIy4xWIHgzIRBTwMeEIRxM0KXnsNpk2D/v0hT54sEVVj4u7pu/hO9+X4suMYY4wAPNfiObxHeuPe3P2xN08ct4CPgTWmbU/UjKBaon4NRgPvr3+fxccW42jryB9d/+CVSq8kKcPatXDiBJQuDe+9Z8EPlw60ItBoLIS9aY3APkY9PSZeJwB49VWoVw8OH4aff1bupJrM59qea/hM8+H8hvMACBtB9a7V8R7hjVs9t6faS+AXYCjKJJQX+BL4CFWEJSExhhh6ru3JylMrcbZ3Zn239TR/rnmSciScDYwaBY6Olvh06UcrAo3GQtgm8BoCnogliCNuVtChgypa88EHelaQWUij5NyGc/hO8+W673UA7JzsqPNeHTyHeFKoQtIpYi+hIoF3mrbbAnOBskm0jYyNpOvqrqw/t558DvnY9PYmmpRtkqxM69bB8eNQsiS8/74ZH85MzFIEQohCwEqgPHAF6CKlDE7Upg4wB8iP8qyaIqVcaTq2CGgKPDA1f0dKedQcmTSarMIuLrJYmZi5kcCFNCGvvw516sDRo2qtYNCgTBEv12KINnB82XF8p/ty78w9AJxcnWgwoAGNPmlE3mJ5kzwvFvgWlRguAhULMAtVh1ck0T48JpyOKzuy9dJWXJ1c2dJjCw1KNUhWLimfnA04OWX0E5qPuTOCUcAOKeVUIcQo0/bIRG3CgV5SygtCiJLAISHEFilliOn4cCnlajPl0GiyHIc499FoFW2alGkI1Kxg4kSlEL78Us0K8iZ9L9KYQdTDKA7NO8TemXsJvRkKQP4y+fEc4km9PvVwcEl+VfYY0Ac4aNp+C6UUkitBHRoVSrvl7dh9dTfF8hZjW89t1CpeK0X51q9XDwNubuo7kJWYqwjaAy+Z3i8GdpFIEUgpzyd4f1MIcQd1PUPMHFujyVbEzQhSUwQA7dpBw4awf7/KQTQy8eOTJsOE3Qpj76y9HJxzkKgHUQAUq1EMrxFe1OhWA1v75Et9RaJiAKahZgRlUOaMV1MYLzgimLbL2rIvYB8l85VkR68dVClSJUUZjUYVZAjqf5+VswEwXxEUl1IGmt7fAoqn1FgI0RDlYXUpwe4pQojxwA5glJQyKplz+6JMdZQtm5R1TqPJWuJmBDbRyvskOdMQqFnBpEnQurXyIPrwQ8ifP1PEfGa5f/4+vl/7cmzxMQzRqgxkuRfL4T3Sm4ptKz7lAZSY/1CBYedQpp8BqAXhlFJD3X10l1ZLW3H01lHKFSjHjl47qFCoQqqyrlkDx45BqVLQr1/aPp81SVURCCG2AyWSOPREHkUppRRCyBT6cQOWAL2llEbT7tEoBeIAzEPNJiYmdb6Ucp6pDR4eHsmOo9FkFfamxWIbUy3agIcBSCmTvQG1bAlNmsCePaq2sa5XkDEC9gfg85UPZ9aeUe49Aqp0rIL3CG9KNy6d6vkPUTeeuabtKiiXUO9UzgsMDaTFkhacvnuaSoUqsaPXDsoUKJPqeAZD/P/6f//L+tkApEERSClbJHdMCHFbCOEmpQw03ejvJNMuP/AXMFZKuTdB33GziSghxC/AsHRJr9FkIxxMpiGbyFjy2ecjNCaUkMgQXPO4JtleCFXY/qWXVGbSTz4B16SbahIhpeTi5ov4TvPlyq4rANg62FKrVy28hnlRpHKRNPWzEfgQuIG6GY5GPeGm5sV57cE1mv/anItBF6letDrbe22nhEtSz8tPs2yZyjDq7p41UcRJYa5paD3QG5hq+rsucQMhhAMqEO/XxIvCCZSIADoAJ82UR6PJMuxtBAY7G2xjjZTNW5ZTIae48fBGsooAVL2C5s1hxw6VkC6uMpUmaQwxBk6tVGUg75xQz52O+R3x+NCDRgMbka9k2nJ83wE+BVaYthuiZgE103DupaBLNPu1GdceXKNuibps7bmVIs5pUzzR0TBhgno/YULWRBEnhbmKYCqwSgjxPnAVlXIbIYQH0F9K2ce070WgsBDiHdN5cW6iy4QQRVEmuaNAfzPl0WiyDHvA4GiLbayR0nlKcyrkFAGhAdQsnvLtZdIkpQi+/VZVMSuanGtKLib6UTRHFhzB7xs/HlxT3uYubi40HtyY+n3r41QgbfYVibJPDwaCAGdgMjCQpwPDkuLM3TM0/7U5gWGBNC7dmL/f/puCTgXT/Dl++QX8/aFKlcypRZxWzFIEUsr7wFMhc1LKgyjvK6SUS4GlyZzfzJzxNZrshB0Q62iHw6MYSjqVBJIOKkuMpye0bQt//60WjqdPt7KgOYhHdx+xf/Z+Dsw+QESQqQxkZVUGslaPWo89tdLCFdST5hbTdgvUoqN7Gs8/dusYLZe05G74XZqWa8qG7hvI55j2KkORkfH1BiZOBNu0aJ5MQkcWazQWwg6INS0Yl3RUiiAlz6GETJqkFMEPP8CQIcq3PDcTfDlYlYFceITYiFgASjcu/bgMpLBJ2QMoIQZgNsr2/whwRdUN6E3SgWFJsT9gP22WtiE4MphWFVqxtutanO3Tlz527lwICIDataHT07nnshStCDQaCxFnGgIo4agWDlOKJUhI/foq7cSff6ogs+++s46M2Z3AI4H4TvPl1KpTSKOpDOSrpjKQTcqm6gKamFOoimH7TNtvospGpujnnoj/rv7Hq7+9Smh0KO0rt2dl55U42qUvKVBYmPq/glL6NjYpt89stCLQaCxEnGkIoKi9MvSnVREAfP65UgQ//aQK15RJ3RPxmUBKif9Of3y+8uHytsuAKgNZq0ctvIZ7UaxGsXT3GYWKAfgCiAFKogrHt09nP1svbaXDig5ExEbQtXpXlnRcgr1t+mtIzp4Nd+5Ao0YqmDC7oRWBRmMhEs4Iitmrm9f1B9fTfH6tWtClC6xaBVOmKFPCs4zRYOTMmjP4TPMh8JDyJLfPa0/9vvVpPLgxBcoUyFC/vqgFyjOm7X7AV0B6e1t3dh1dVnch2hDNe3XeY95r87C1Sb9hPyRErf2A8gpL56QmU9CKQKOxEAlnBMUclCK4EnIlxaCyxEyYoGrXLlgAI0bAc89ZSdgsJCYihqOLVBnI4MsqR6VzUWcafdqIBh82IE+hjKVjDUXFAfyI8g6qBPyMymqZXpafWE7PtT0xSAMDGw5kZpuZ2IiM2XNmzoTg4HhX4eyIVgQajYWwJ36x2Bln8jnkIzQ6lKCIIAo7F05TH1WrQo8e8OuvKup02TIrCpzJRARFcODHA+z7bh/hd8MBcK3gitcwL2r3ro19nvSbXOL4C+URFBcYNgL4H5CRoN35h+fTd0NfJJLRTUYzpdmUdK9NxHHvnlIEkH1nA6AVgUZjMeyINw0Zo424u7pz/PZxroRcSbMiAOVauGIF/PYbDBsGdetaSeBM4sG1B+z9di+H5h0i5lEMAG713PAe6U3VTlWxsc34ymniwDAPVGBY7Qz29+3ebxm8RdUQndJsCmNeGJNh2UCZhEJDVZnSJsmXJchytCLQaCyEPfGmodjIWMoXLM/x28fxD/Gnfsn6ae6nXDlV3H7mTFXDdvNmKwlsZW6fuI3vdF9OLj+JMValF6vQqgJeI7xwb/Z0Gcj0kDgwLA/xgWEZvalN2T2Fcf+MA2BWm1kMbGRe+bjr1+O9v+LiB7IrWhFoNBYi4YwgNioW94IqVMk/2D/dfY0Zo9YJtmyBnTuhWQ4JvZRScvXfq/hM8+Hi3xcBELaCGt1r4DXcC7e65gdI+KMWgLeZtluiEsZldDlFSsmYHWOY6jMVgeDn137m/XrmlwsbPx6iopQDgIeH2d1ZFa0INBoLkXBGYIgy4F7GpAhC0q8IihRRi8XjxqnqVfv2ZV/7MigPoLNrz+IzzYebB24CYJfHjnp96tF4cGNc3c3PphcLfIey/YejAsNmAr1Ie2DYU3JLI5/+/SmzD8zGVtiypOMSutfsbrasJ07A4sVgZ6c8wLI7WhFoNBbiqRmBa8YVAagSlrNnw4EDKn99584WEtSCxETEcGzxMXy/9iX4kskDqIgzDT9pSIOPGuBcJH3Rt8mRuGJYN1TFsPQEhiXGYDTwwYYP+OXoLzjYOrCq8yraV0lvpEHSjBqlSlH27w8VK1qkS6uiFYFGYyESppiIjTTPNASqfOVnn6miNWPGQPv2YJ9xxxqLkqQH0HOueA71pM47dbB3toygiSuGlUZVDDM3JivGEEPPtT1ZeWolzvbO/Nn1T1pWaGlmr4pdu2DTJnBxUZ5fOQGtCDQaC2EPhBdWPvDh98KpWrAqAFcfXE1XLEFC3n9f1Sq4cAEWLsz6alYhV0PYO3Mvh+cfjvcAqu+G9whvqr5RFRs7y+VO+BdVkvA88RXDvgDMLeQWERNB19Vd2XB+A/kc8rHp7U00KWsZlx4plUkP1N9i6Q+KzhK0ItBoLIQdEFbCBVB1c/M55qNwnsLcj7jPrbBbuOVL/0Kpvb2yMXfpooLN3n5bPWlmNreO3VIeQCtOIg0qB1CF1hXwHuFN+ZfLm+UBlJgHqDiAeabtqqjAsNQqhqWFh1EPeX356/x79V8K5SnElh5b8ChpuZXc339XprwSJVTywJyCVgQajYWwAR6ZFEFoYBgA7q7u3I+4j3+If4YUAai1gbhC99OmqTiDzEBKyZV/ruAzzYdLW1SZcWErqPl2TbyGe1GidtoqcqWHtagn/0DUDGsMKlo4fSnekubuo7u0WdaGw4GHcXNxY2vPrdQoVsMCPSuio5W7LyilnTevxbq2OmYpAiFEIWAlUB6V7ruLlDI4iXYG4IRp85qU8nXTfndULEhh4BDQU0oZbY5MGk1WEuGm8tOH3jIpgoLuHLx5EP9gf7zKeGWoTyFUTIG3N3z9NXzwgXUT0hljjZz5I1EOIGd76n2gPIAKlito8TEDgE9QigCgMSowrLqF+r/24BqtlrTi3P1zVHCtwLae2x4v5luKn36Cy5ehcmVl0stJmGvQGwXskFJWAnaYtpMiQkpZx/R6PcH+r4CZUsqKQDAqY6xGk2OJijMNBcYrAsi451AcXl7KPBQRoRaOrUFMeAwHfjzA7MqzWd11NYGHAnEu6szLk15m0LVBtPm2jcWVgAGVFroqSgm4ALOAPVhOCZy7d44mC5tw7v45ahWvxZ739lhcCQQFxZegnDpVuY3mJMwVtz3wkun9YmAXMDItJ5rqFDcD3kpw/gSUU4BGkyOJUwSPboUhpaR8wfJAxj2HEvLVV7BuHSxdqgrdN2xodpcAhN8P58APB9j//X7C71k2B1BKHEUFhu03bb+OKiBjycnO4cDDtF7amnvh9/Au483Gtzamq7RkWpkwQSmDl19W3l05DXMVQXEpZaDp/S2Sd+t1EkIcRHmATZVS/okyB4VIKWNNbW4ApcyUR6PJUoSzPZH5HXF6GEVkcKTZsQQJKV9exRZ89ZVaiPzvP/OCzEKuhKgqYAuOEBOuPIBKepTEe6Q3VTpWMSsHUEo8Qj3xzUTNCEqhZgUdLTzOv1f+5bXlrxEaHUrbim1Z3WV1uquKpYUzZ+DHH1WxmW+/zd6Bf8mRqiIQQmwHkloVGptwQ0ophRAymW7KSSkDhBDPATuFECdQzgFpRgjRF+VNRtmyZdNzqkaTadgBYW4uOD2MIuxWGO7FlCK4EnLFIv2PGaMKoPv4qHTVb76Z/j4CjwTiO91UBczkAVSxbUW8R3hTrmk5i3oAJWYT8BFwFeUS+gkqR5C5LqGJWX9uPV1+70KUIYpuNbqxuMNiHGwdLDyKYsgQMBigb19VUyInkqoikFK2SO6YEOK2EMJNShkohHBDJQNMqo8A09/LQohdQF1gDVBQCGFnmhWURq0ZJSfHPEweZR4eHskpHI0mS7FHuZAWOXef0MBQyj1fDlCLlbHGWOxszJuE58+vEpj166f81F97DZzSkGtZSon/Dn98pj1ZBaxmz5p4DfOieC1zYnRT5xYqS+gq03Zt1I/ZQtatJ1hybAnvrnsXgzTwoceHfN/2+wwVlEkLf/+tkgLG/V9yKubO/dajakBj+rsucQMhhKsQwtH0vgjKHfi0lFIC/wCdUzpfo8lJ2AGhJs+hsFthONk54ebihkEa0lzIPjXeew9q1IArV2DWrJTbGqINHFtyjJ/q/sSSlku4vO0y9nntaTy4MQMvDaTjrx2tqgSMwE9AFZQScAamo1JFWEMJzNo7i15/9sIgDYx7YRw/vPKD1ZRATEx8rMD48TkneCwpzF0jmAqsEkK8j5rtdQEQQngA/aWUfVAOAT8JIYwoxTNVSnnadP5IYIUQYjJwBFhgpjwaTZaigsqUA3mc51CFQhUIDAvk/P3zjxePzRrDTkUbt2qlip306AGlEq2uRYZEcmjeIfZ9t4/QgFAA8hbP+zgHUB7XjFUBSw8nUYvBvqbttqjqYeWtMJZRGhm9fTTTfFVNyG9afcMQT+tGdM2ZA2fPQqVKavE+J2OWIpBS3geeKr4mpTyIyhGFlNIXqJnM+ZexzoOBRpMlxJmGQM0IAGoUrcGea3s4decUrSq0ssg4LVtCx46wdq0qXrN8udofcjWEfbP2cfjnw0SHqZCcotWK4jnUk5pv1cTOyfp+jREou39cfqASKJfQN8l4ltCUiDZE8/7691l6fCl2NnYsfH0hPWv3tMJI8dy/H+8u+s034GCd5YdMI4d5u2o02Ru1WGwyDZlmBHHRqyfvnLToWDNnKvv0ihXQ7cWbxO7249Tv8QvA7s3c8RzmScXWFRE2mePKsh1VMvKSabs/8CVQ0ErjhUaF0vn3zmy9tJW89nlZ02UNrSu2ttJo8YwereoQt2gB7czNgJcN0IpAo7Eg9kBI4hmBSRGcuHMiudMyRNkykjGdznNpqR9HP7oKxKeA8BzqaZEiMGnlNjAMWGraro5aDM5YLHUaxwy7zau/vcqhwEMUdS7Kprc3WTRvUHL4+cHPP6s8UN9/nzPdRROjFYFGY0HUYnFcviFlm49TBKfunsIojdgI83w0YiNjObbkGH7f+GE4d5/yQBQO5H2xPh8vbUSBMgXM6j89GFA3/DFACKpY/HhgKGBNa8nFoIu0WdqGS8GXqOBagc09NlOxkPUT/8fGqrTgAMOHQ5UqVh8yU9CKQKOxIEmtERR2LoybixuBYYFcCbnCc64ZK6oYfi+cAz8eYP/s/Y9rAOQvkx/XNo3p/3M97A450ltAZqmBg8CHxBeLaYOKDK5g7XFvHuSVZa9wN/wu9d3qs+ntTRTLmzkuO99/D8eOqeC+sWNTbZ5j0IpAo7EgdkBEYWeEnQ2RwZHERsZi52RHjWI1CAwL5MTtE+lWBPfP38dvph/HFh0jNlIF4rvVc8NzqCfV3qyGrb0tG4NUFbMhQ2DVqlQ6NJMQVDTpHFQR+dKoxeCOWGcxOCFbLm6h06pOPIp5RKsKrVjTZQ0uDpmTl/vGDeUmCkohOFs+SDnLsE4MuUaTS7EHpI3AvrjJhfR2xhaMpZRc23ONFR1WMLvKbA7NPURsZCyVXq1Er529+ODgB9R8qya29spHfsYMdWP6/XfYti2VzjOIRK0BVEa5gdqg1gXOAG9gfSWw5NgS2i1vx6OYR/Ss1ZMN3TdkmhIAGDwYwsKgQ4dnY4E4IXpGoNFYkLgflJ1bPqIDQgkLDKNguYLULKY8qE/eTVkRxKWA9pvhR8A+FWhv62BLrV618BzsSdFqRZM8r2xZVRZx9GhVJ/f4ccvmwz+NSg3xr2m7CUoZJOkXbmGklHzx3xeM+2ccACO9R/Jl8y+tmgojMZs3q5Qezs6pB/HlRLQi0GgsSFyeTrtkPIeSmxFEhkRyeP5h9n+/nwfXVBquPIXy4PGRBw0HNMSlROpPvkOHqniC48eVUpgxw8wPg0oQNwn4BhUTUAQVGdwb688AQNUW7r+xPwuPLkQg+LbNtwxsNDATRo4nIgI+/li9nzBBKd1nDa0INBoLEveDsjFFF8d5DlUrWg2As/fOEm2IfpwALehSEPu+28fRhUcfB4AVqlSIxoMaU7t3bRzypt33xt5e1TVu2FBlwezSBRo3ztjnkKh8L58C11A3/X6omsGFMtZlunkQ+YDOv3dm++Xt5LHLw2+dfqNDlQ6ZNHo848bBpUsqrcegQZk+fKagFYFGY0HiflC2CfINAeR1yMtzrs9xOfgy5+6dI/+5/OyduZez686quy4qAKzx4MZUeqVShgPA6tdXkcbTpqkqWYcPg2M66zz6AwOBjabtuqiF4UYZkihjXA25yqu/vcqpu6colrcYG7tvpEGpBpkogcLXVwXu2dgoJWtvndIMWY5WBBqNBXl8n0hUqQygVqFauOxy4a+X/yLqTBSg7P81uteg8eDGFqsBPGGCSj1x+jR88QV8/nnazotEmX2+ML3Pj0oV8SGZe6M4dPMQ7Za341bYLaoWqcqmtzdZJEdTeomIgHffBSlh5EhokPl6KNPQikCjsSBxPyhhCiq7f/4+1/2uc2XXFWp/U5s69+sQRRTORZzx+NCDBh81SJP9Pz3kyQPz50PTpkoRdOqUcp58iUojPBg1GwBVNvBrIPNikxUbzm2g25puhMeE08y9GWu6rLFKRbG0MH48nD8P1arF5xV6VtGKQKOxIHEzAmm6uV/99yoLvRYCIBDcKXqHkHYhLPphkdVKQAK8+CJ89JGqnPXee7B3b9J1dM+h1gG2mLZrAN8BL1tNsqSRUjJr3yyGbh2KURrpXbs3816bZ7ViMqnh56eSydnYqEJA6TWv5TS0ItBoLMjjH1T9klR6pRIhV0NwcHEgf+n8VOhVAY/DHuSxz8MvDr9YXZapU2HDBjh0SL0fNy7+WCjK7DMTiEFFI09EuYhm9k0h2hDNgL8GMP/IfAA+f+lz/vfi/zLVPTQhCU1CI0ZYrjZ0dkYrAo3Ggria/gY72PLxX289dbzq9aqcuXeGgzcP4lXGminZIF8+WLBA1S2YMEFlymzUGH4DhgOBKG+g91HrAllRV+Ve+D06rerE7qu7cbJzYnGHxXSp3iULJIln/Hg4dw6qVn32TUJx6MhijcaClDb9vZ7M8ablmgKw68quzBCHli1VfIHBAJ0ng3cs9EApgQbAXmA+WaMETt45SYOfG7D76m5K5ivJf+/+l+VKYMeOJ01CaSkD+ixgliIQQhQSQmwTQlww/XVNos3LQoijCV6RQogOpmOLhBD+CY7VMUcejSarKWP6m1xRypfKvwTAv1f/TaaF5Rk6BQqvhIB14GcHRVGlAPeSdVWhNp7fiOcCT66EXKFByQYc+OBApqSQTonbt1W1NynVrKBRZvrLZjHmzghGATuklJWAHabtJ5BS/iOlrCOlrAM0A8KBrQmaDI87LqU8aqY8Gk2WEjcjSE4RNC2vZgQ+13yIMcRYVZZYlP9/TUe43wXlHvQtfLEa3iNrzAFSSqb7TOf15a8TFh1Gtxrd+PedfymZr2QWSBOP0Qi9e8OtW8rbKuF6Sm7A3O9Ce2Cx6f1ioEMq7TsDf0spw80cV6PJlqSmCEq4lKBy4co8innEocBDVpNjK1AHtfh7H+UF9L8/gMEw9H1V+D6zCY8Jp9efvRixfQQSyaSXJ/HbG7+Rx9769ZNT45tvYMsWKFwYli0DW+vUu8+2mKsIikspA03vbwHFU2nfDVieaN8UIcRxIcRMIUSyTlpCiL5CiINCiIN37941Q2SNxnoUQRVkCUbl6UmKuHWCf69Y3jx0FmgHtAZOAe7A76jp+udvQvv28PChMoHExlp8+GS5HHwZrwVeLD2+FGd7Z1a/uZpxL47LMs+ghOzbB2PGqPeLF0OpUlkrT1aQqiIQQmwXQpxM4tU+YTsppeRxsHyS/bihkhVuSbB7NFAFtW5VCBiZ3PlSynlSSg8ppUfRoklnYNRoshpB/KwgIJk2ceYhS64TBKHiAWoCfwH5gK9QWUM7m+QSQgWalSwJPj7xNz9rs+nCJurPq8+x28eoVKgS+/rso1O1TpkzeCqEhEC3bkopDh4Mr76a1RJlDakqAillCylljSRe64Dbpht83I3+TgpddQHWSikfG0allIFSEQX8QtatXWk0FiOtnkP/XfuPqNgos8aKQQWAVTT9NQJ9gQvACFTpyIQUKaKK3dvawvTpqpiNtTBKIxP/nUi739oREhnC65Vf58AHBx5nYs1qpFT5mK5cUTmavvwyqyXKOsw1Da1HZaTF9HddCm27k8gslECJCNT6Qtqqdmg02ZjU1glK5S9F7eK1CYsOY8ulLcm0ShmJevKviZoJBAPNgSPAT6Rso33hBaUEAN55B86ezZAIKRISGUL7Fe35bNdnAEx+eTJru66lgFPm1VNOjS++gD/+gPz5lXJ81qOHU8JcRTAVaCmEuAC0MG0jhPAQQsyPaySEKI/yrEs8F14mhDgBnECZVyebKY9Gk+Wk5kIK0K1GNwBWnFyR7v4PoNzv2qFSRFRCPYFtA1JIKfQEgwapNNVhYWrdIDg43WIky/Hbx/GY58HG8xtxdXJl09ubGPviWGxE9glb2rhR1WwQAn77DSpav+599kZKmeNe9evXlxpNduV7qb6o/VNo4x/sL5mAdJ7iLMOiwtLU7wUp5Zsy/ofgKqWcIaWMyqCcoaFS1q4tJUjZooWUMTEZ7MiE0WiU8w7Ok06TnSQTkHXm1pGXgy6b16kVOHlSyvz51eeeMiWrpclcgIMyiXtq9lHRGs0zQmqmIYDyBcvjWdqT8JhwNpzfkGJ/d4CPgaooDyAnlFfFZVTG0IymZXNxgfXroVgx2L5dzRJksu4eKfMw6iFv/fEWfTf2JTI2knfrvIvve764u7pnUDrrcOuWWhB++BA6d1alPTU6xYRGY3FSWyyOI848tPxkYo9qRRjwOVAB+AG1EPwecB5lgy1otqSq7OKff4KDA/zwA3z9dfr7OHTzEPV+qseKkyvIa5+XJR2XsLD9wmwRH5CQ8HB4/XW4elVFDf/6qzINabQi0GgsTlpmBABdqnfBRtjw94W/CY6IN9LHoCKCKwITUArhNeAYKjVEmae7MgtPT3VTBJVtc9mytJ1nlEZm+M3Ac4Enl4IvUadEHQ73O0yPWj0sLKH5xMRA165w4ACULw/r1qm6DRqFVgQajYUphqpLcB+ISKFdCZcSvFT+JWKMMSw/uZxY4FeUCegj4DaqPOS/KPc8azpddu0aX+z+3Xfh779Tbn/twTVa/NqCoVuHEmOMYUCDAfi978fzhZ+3opQZw2hUn2njRihUCDZtguKphb7mMrQi0GgsjA0QF5yaXFBZHP3q9wNhw2f3z1FNSnoDl4DngdWAH/Ci9UR9gsGDVabSmBh44w3YufPpNlJKlh1fRq05tfjnyj8UdS7Kum7rmP3KbJzssl+qTilh4EA1y3FxUQquatWslir7oesRaDRWoDRwBWUeSs4z0QgYq3bG4eN63CtUkXvAc8BnqFKRWfHjnD4dHj2CuXPhtddg82YVdwCqdsCATQNYdWoVAK9Xfp2fX/uZYnmzIol16sQpgR9+UGsg69bljiIzGUErAo3GCqS0YGwE1qLs/ydtbKBQRQj2p9iheZxqNhknm6zLeCaEunFGRsKiRdCmDaxdK7nntpxPN3/KvfB75LXPy6w2s3iv7nvZIldQUhiN8MknqlSnoyOsXQvNmmW1VNkXrQg0GiuQ1IJxDLAC+BI4Y9pXBhhtNDBtaRuuBJ3nzxK1H3sTZRU2NionEcCitddos+RDZMVNgKqnMP+1+VQoVCELJUyZmBhVp3npUqUE/vxTKTRN8ug1Ao3GCiRUBJHAXJTdvxdKCZRFuYReAD60sWWM1zAAxu0cR1h0WKbLmxgpYqnT7zvsB1VTSiCyAG/nm8/OXjuztRIIC1MmraVLIW9eVbNZK4HU0YpAo7ECcYpgDeAGfIhaM3geWAhcRHkGxaW36V2nN7WK1+JS8CVGbBuRydI+yY7LO6j7U10GbfmUGPGIKrITzD7DsqHvM2yYwGDIUvGS5epVtZ6xZQsULQr//KNKdWpSRysCjcYKlDX9vQ2EAPWAlai00O+i3EsT4mDrwJKOS7C3sWfOwTlsuZixZHTmcCnoEh1XdqTFkhacvHOS8gXLs7brWs5MWM3C79yws1Mupq++CvfuZbp4KbJrF3h4wNGjKm+Qjw80aJDVUuUctCLQaKyABzAGVXDjBHAIlYc9pWXgWsVrMenlSQC8t/49Ah6m5nxqGe48usPwrcOp9mM1/jz7J3nt8zKl2RTODDhDhyodAOWHv3WrquC1ZQvUrQt+fpkiXorExsLEidC8uVJOrVvD/v1QqVJWS5azEDKjyUWyEA8PD3nw4MGsFkOjsTgGo4GXFr/Enmt7qFSoErve2WW1er6BoYFM953O3INziYhVoW+9a/fmi+ZfJDvm9esq+MzPTy0qjxgBEyZkTQrnS5dUGu09e9T2qFEweXLuKzOZHoQQh6SUHon36xmBRpONsLWxZV23ddQpUYcLQRd4efHL3HiYWrKK9HE15CqfbPoE91nuzNw7k4jYCF57/jUOfnCQRR0Wpah4ypRRZpjhw5Wf/tSpUK+e2pdZREfDlClQo4ZSAm5usG2bKiyjlUDG0IpAo8lmFMpTiO09t1O7eG3O3z9PzTk1WXp8KebM3mMMMfx1/i9eW/4az333HLMPzCbKEEWnqp040u8I67uvp37J+mnqy8EBpk1TN+Hnn4fTp+Hll1U08vnzGRYxVYxGVUCmRg0YN07FOvToAcePQ4sW1hs3N6BNQxpNNuV++H16/dmLTReUD3/L51oyuPFgWldsnaYiL4+iH/Hv1X/ZcG4Dq8+s5l64WuG1t7GnS/UujGoyyuyykRERagH5yy9VRLIQKr3zyJGq/KMliIyElSvVOMePq33PP6+CxZo3t8wYuYXkTENmKQIhxJuoAMmqQEMpZZJ3ZyFEG2AWaq1svpQyrpKZOyrGpjBqPa2nlDI6tXG1ItDkFqSULD62mE83f8rDqIcAlCtQjqblm9KwZEPKFihLPsd82Agb7off51bYLU7eOcnR20c5ePMg0Yb4n1PVIlXpXbs379Z91+JpIW7ehM8+g8WLVUAXQJ06yobfvr3K+JkeDAbw9YXVq1UFsTgvpdKl1Ti9e4N9YtcrTapYSxFURUXM/wQMS0oRCCFsUSnUW6Liaw4A3aWUp4UQq4A/pJQrhBBzgWNSyjmpjasVgSa3cS/8HguPLGTOwTlcCbmSpnMEAo+SHrSq0Io3q71JreK1rJ4S4sYN9eS+aNGT5S+ffx5efBFq1oRq1ZSff+HCagYRHQ3374O/vzIt7d2rFqPv348/v25dlTKie3dwyn657XIMVlEECTrfRfKKwBOYIKVsbdqOqwk0FbgLlJBSxiZulxJaEWhyKwajgcOBhzlw8wAHbh7gzqM7hEaFYpAGijgXoahzUaoUqULt4rWpX7I+hfIUyhI5o6JU9bPly2HHDlURLL24uyszU+fOKiYgm6Y1ylEkpwgyI9dQKZ7MvXUDlWa9MBAipYxNsL8UySCE6Av0BShbtmxyzTSaZxpbG1salGpAg1LZO1rK0RHefFO9YmKUb/+hQ3DiBFy4oJ724574HR2hQAFlPnJ3Vzd9Ly8oV07f/DOLVBWBEGI7UCKJQ2OllOssL1LSSCnnAfNAzQgya1yNRmMe9vbg7a1emuxJqopASmmuY1YAT1bXK23adx8oKISwM80K4vZrNBqNJhPJjDiCA0AlIYS7EMIB6Aasl2px4h+gs6ldbyDTZhgajUajUZilCIQQHYUQNwBP4C8hxBbT/pJCiE0Apqf9j4EtqAy8q6SUp0xdjASGCCEuotYMFpgjj0aj0WjSjw4o02g0mlyCzjWk0Wg0miTRikCj0WhyOVoRaDQaTS5HKwKNRqPJ5eTIxWIhxF3gagZPLwJks0J7gJYrvWi50oeWK308q3KVk1IWTbwzRyoCcxBCHExq1Tyr0XKlDy1X+tBypY/cJpc2DWk0Gk0uRysCjUajyeXkRkUwL6sFSAYtV/rQcqUPLVf6yFVy5bo1Ao1Go9E8SW6cEWg0Go0mAVoRaDQaTS7nmVQEQog3hRCnhBBGIUSyrlZCiDZCiHNCiItCiFEJ9rsLIfaZ9q80pc+2hFyFhBDbhBAXTH9dk2jzshDiaIJXpBCig+nYIiGEf4JjdTJLLlM7Q4Kx1yfYn5XXq44Qws/0/z4uhOia4JhFr1dy35cExx1Nn/+i6XqUT3BstGn/OSFEquVYLSzXECHEadP12SGEKJfgWJL/00yS6x0hxN0E4/dJcKy36f9+QQjRO5PlmplApvNCiJAEx6xyvYQQC4UQd4QQJ5M5LoQQ35lkPi6EqJfgmPnXSkr5zL2AqkBlYBfgkUwbW+AS8BzgABwDqpmOrQK6md7PBT60kFzTgFGm96OAr1JpXwgIApxN24uAzla4XmmSCwhLZn+WXS/geaCS6X1JIBAoaOnrldL3JUGbj4C5pvfdgJWm99VM7R0Bd1M/tpko18sJvkMfxsmV0v80k+R6B5idxLmFgMumv66m966ZJVei9p8ACzPher0I1ANOJnP8FeBvQACNgX2WvFbP5IxASnlGSnkulWYNgYtSystSymhgBdBeCCGAZsBqU7vFQAcLidbe1F9a++0M/C2lDLfQ+MmRXrkek9XXS0p5Xkp5wfT+JnAHeCpy0gIk+X1JQd7VQHPT9WkPrJBSRkkp/YGLpv4yRS4p5T8JvkN7UdUArU1arldytAa2SSmDpJTBwDagTRbJ1R1YbqGxk0VKuRv10Jcc7YFfpWIvqrqjGxa6Vs+kIkgjpYDrCbZvmPYVBkKkKqiTcL8lKC6lDDS9vwUUT6V9N57+Ek4xTQ1nCiEcM1kuJyHEQSHE3jhzFdnoegkhGqKe8i4l2G2p65Xc9yXJNqbr8QB1fdJyrjXlSsj7qCfLOJL6n2amXJ1M/5/VQoi4krbZ4nqZTGjuwM4Eu611vVIjObktcq1SrVmcXRFCbAdKJHForJQyy0pepiRXwg0ppRRCJOu7a9L2NVGV3eIYjbohOqD8iUcCEzNRrnJSygAhxHPATiHECdTNLsNY+HotAXpLKY2m3Rm+Xs8iQogegAfQNMHup/6nUspLSfdgcTYAy6WUUUKIfqjZVLNMGjstdANWSykNCfZl5fWyGjlWEUgpW5jZRQBQJsF2adO++6hpl53pqS5uv9lyCSFuCyHcpJSBphvXnRS66gKslVLGJOg77uk4SgjxCzAsM+WSUgaY/l4WQuwC6gJryOLrJYTID/yFegjYm6DvDF+vJEju+5JUmxtCCDugAOr7lJZzrSkXQogWKOXaVEoZFbc/mf+pJW5sqcolpbyfYHM+ak0o7tyXEp27ywIypUmuBHQDBiTcYcXrlRrJyW2Ra5WbTUMHgEpCebw4oP7p66VagfkHZZ8H6A1Yaoax3tRfWvp9yjZpuhnG2eU7AEl6GFhDLiGEa5xpRQhRBPAGTmf19TL979ai7KerEx2z5PVK8vuSgrydgZ2m67Me6CaUV5E7UAnYb4Ys6ZJLCFEX+Al4XUp5J8H+JP+nmSiXW4LN11E1zUHNgluZ5HMFWvHkzNiqcplkq4JafPVLsM+a1ys11gO9TN5DjYEHpgcdy1wra6yAZ/UL6IiylUUBt4Etpv0lgU0J2r0CnEdp9LEJ9j+H+qFeBH4HHC0kV2FgB3AB2A4UMu33AOYnaFcepeltEp2/EziBuqEtBVwySy7AyzT2MdPf97PD9QJ6ADHA0QSvOta4Xkl9X1CmptdN751Mn/+i6Xo8l+DcsabzzgFtLfx9T02u7abfQdz1WZ/a/zST5PoSOGUa/x+gSoJz3zNdx4vAu5kpl2l7AjA10XlWu16oh75A03f5Bmotpz/Q33RcAD+YZD5BAm9IS1wrnWJCo9Focjm52TSk0Wg0GrQi0Gg0mlyPVgQajUaTy9GKQKPRaHI5WhFoNBpNLkcrAo1Go8nlaEWg0Wg0uZz/A6mo40d9kurtAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] @@ -107,8 +127,6 @@ "source": [ "# we only need \"velocity.data\" from each phiflow state\n", "vels = [x.velocity.data for x in state]\n", - "sn = np.concatenate(vels, axis=-1)\n", - "sn = np.reshape(sn, list(sn.shape)+[1] ) # print(sn.shape)\n", "\n", "# print(vels[0][0,:,0].shape)\n", "# print(vels[0].shape[1])\n", @@ -131,12 +149,19 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 7, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Vels array shape: (1, 128, 33, 1)\n" + ] + }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAABwCAYAAADlsjDyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAeQklEQVR4nO2dX4hl2XXef+veW9XVXdN/NN0zo4lG1liOSBAhVoKQZaIH2SZGFiaCYEREIEoYmBcbHAhEIwIJCYSMX+IoJBgPibAdEksOidAghG1lbJOnWJJt2ZYsKx6JEdIwM51pz5+eqe6quvfsPNzTo3Jrqu5vq9epc+rW+aCpqntX7332ued+e61vrb13lFIYMWLEiBHrhUnfFzBixIgRI/IxkvuIESNGrCFGch8xYsSINcRI7iNGjBixhhjJfcSIESPWECO5jxgxYsQaYtb3BQCcn50rVzYvrbSLY7iWk4o4lTdnfcp4T+XHN+KO8fWdZ58vpdzzeu8Ngtzv3rjER37g4ZV2E/kNmEq7SQU5WPLMDoXsmKMDorN9Z6MvopvE8CeLvj6TLtDFM7susJ/z3/3iv/7mYe8NgtznJfh/u6tpcUMy58bEPTTTCnfXkradWPxk4cYykQ3WcIN9wGomSYPsKMRPuBXPQ28TXz+E2M14cxs9CfOedSAWCR/zQMgdru2utjszde1tyifREjH4icW2qaOL9GjFw09AcmLpabLw0U8+skkxOzLUE2nFR9JXIu8kRDXHGRwOgtybUrgxXz3qIr9+jbyBlrCXfTtkk7uNLha6vQopSppqD1+2F3LM9uNrpF0N7ASU/V1ukqegLoi49BTJ2e+9RTeT1PHNQIMg90UDL+wuVtptSQbbmrqPZbPi05tJBsv28LPbs/JNTZu2xZkci23Phri+PWlIfrTi+3XI9sjroik5OSdfY5+Oe36Educz1SDIvaGws5gLS3u5zldriv9ENqWdjS42ZNd9RQwATXKbRbrQnoxz5bcaj1NHA8nRj73CbKKzz3UN7D3sS6argdXIbdcZEdogyH1Ow4tlZ6Xd3vyMam+rccPamkgRH9iUDGH1/o3kSMBGFrOKZ0YGQL3lGexQuohqsqOB7DFnRzU1yJbp7FXmRyv5OM6S5UGQe6HhRtxcaRfF3e6JdDltaH3Luh/IPIPVgCvclka6VtbDt3bZSWQd/Ug78KRo+7Z6sffw86unLGwEpD33nkh7tVD8HQxxYhkEuc+Z82I8t9Jun9ULnQD2y13KbrvZUnYAm0VGA8VRxF7IvIBkMBsJzCuemvTkcHIVU18RA/SZZxh2e8s2k5O+PUU1NchuMkM6GgS5Fxr2hCwzCyfLTNlQdhMZCQB+xtXuqex3kRsx1FQUWEmoSXdbcquibGrFylBQ4blL9zQ7CsmOLGq4pq+8gEWfUY2dWDIqfwZB7k2Zs7O4ttKuTN03ZRH7zo4Lyg5gXs5JOxcNnFm4W78ZLhLYlxPVhowYAOZWx5dN7kuis+1ZQpxbcq9IsGevK7ATy9A9/D777jNasbBRzfp47mXB7v5Lwk6S+1SS+8TZAeyHWGWFl4TOlrPK7kxxUYidLPYryH3DThiNtLPSkTz6cSa/KDbZHBXuUnayeSInluxJxQZdNVVWfZGx7reDhUTZfa8PudOwaFaT56JxBYmLiSPieXF2APvhSHYq7WYyfWe/9Do5XLPSUPctG9X1g7nlFtnSCFCRHXZm+ixjK1m51jQB1CQX+5KOspPSNQSb3fexbD8QER8HfhK4Wkr5a+1rdwOfBB4EngI+WEp5IZZLCz8GvB/YAf5hKeX3V/VRSsN8sVpztyjy0S5T/8g2NhqwkpC0m+MigXlx+YgNmY8AmMuS0g0pHVlJaCEjhqkkWOtl16xY1gu8tBQlxyInAeuR25XNXZSJ2rJcvW1Fj95zF/LWncJ8e38J+A/Arxx47RHgiVLKoxHxSPv3R4CfAN7W/vsh4BfanyvRlNWLmBbNnmmKycIR2Hzi2gOYiMgCYDJxfdtIYCKJcyJdxJok8n4H0UAubMbXtldRJioZQm9Ol+z6aekhO7LAV0WJHUcALzHZS7QfSf6a3ONNNq8k91LK/46IB297+QPAe9vffxn4HZbk/gHgV8rySfg/EXEpIu4vpTxzdC8NpVld514TGmajzFzvOmqY5CaHm3DXt8Bp/QCbMjm8kNHAQpaTLmQ56UJOfJZgbY6hps1sbd6G6/ntebpZJEcX2YvQuvDcs3McfWru9x0g7GeB+9rf3wR864Ddt9vXvovcI+Jh4LVN3NXCB+HdAxRpZ3T+W5hIiWIuE6+TcO3Zsk6b8LWRAEDYZT166bWMLtIjBhv9dBCC9LVSR95DP+IaSznxyfasU2ejCz9P5esydlVuxmZ3d5xQLaWUiPr8cynlMeAxgOX/X/0R2rBr0cU2gG6+0Ej38GXlT7EiMDXRgNP77ZgXxSXON+Tj28gHx2r9ADOZP7B2tgyzt4ihgud0iapsT1c7yfZ0UrOC1vqKLo7C90ruz92SWyLifuBq+/rTwJsP2D3QvpYESUzSczc6/y1EcjRgPXcdCciSyTk+WglJTDYa2C8yx5HtxHaB9L6Tt7dIjhgqJHftntqJai7zEV7KsFVgHv1FF4fjeyX3x4EPA4+2Pz994PWfiYhPsEykvrRab6+B3UNb3mqh89+C/vCSdw/XHr6s96uqEJKjttHAXK4wbuRYbFJTt1dRSbSQX/3G5g/ks209/L4iBsjPC+gFXnIs1iOvq+3vJ7o4CqYU8ldZJk+vRMS3gX/BktR/LSIeAr4JfLA1/yzLMsgnWZZC/iN/KWY01n1IngRATwSW2u3yKUvaXaxYsJJQdnLYThYLGdgv5IbN1g5gQ0pHc/lEbMpJYConlb4mC/ATgV0qkD1Z6AKmmmM4ezxb4DCYapkPHfLWj72ObQF+uv4yAhcEZdfL1CSJ7EYmNulrPT9JYAsnedikJnhZxu7Wafu2k4Btz4+jJtmcm4SZZy9213lXWwtZE5GmHwYo7eSEJtuzE+QSudsKrM3eMhBMJqtD9iLr3L1HXnMHpURhs+FdJH0HDuuRp0cCVtqqSDbbZ8yWiVrpaCFrTLKTzaWCsPWKUkuyydJR9tbT4DenOwmlkMkIQiQYS0hvSWd/uqicz036Znv4TfH76TSyLl33bT13eY19RQLgowG/EWZu+WfNWNKhfabk3dLSk9w1DGtlmeNbojoIco+YMJus3nXRBsKN9fCrHobcaEBHF5Y4ZU4guaIT6CaZq9qb5C4ss6WfNW0uZFWU9dw3kpPSC0kBNhKAisM6dImq9dylI5QcMSz7lglVqc2XhHKZYZA7wVTIMtZD1OF1RSmkP0My130oxRKOe7DtAi/w99tq7jYSmMuSSauRL2T6usbbrVkMltme3j5CL6qxCdo+14fbnI7Ni8luu9hbRk4Y83U5IDtiyubGeWHnPuR9ecBFlRcrCado2cMrk5n9dqH164qevtqTHrmNBGpgD5ixZac2utjQ5aS5Wj/A1Mp5Mh8xk9+VhRyzrTiyMiJAY3dQtYvQ1uWA7EnMODe7e6XdTRni6uqIig9v3rhdKy15eo/cEl1+tKInAnkb5z05f12Qtt5wKzmZ6yUmZzeTLk6RpZ/LvnPXH1jpaConIDtZWNkIfMLZau52sjgKgyD3YMJGrNbc7RL7Zmp16nyJwid97Zc5F7qkEwgdNch7Yz0m+bnYvW/sZL+oWrHcjySkxyL7tbuJzu1zDelJZDsJ2D2JrOaes8PLX8TMymDrUi0zZcaFcs9Ku5nQ5QFm4XYztFsAAEzmznZPnkA9R+5fLxOlvvyzotwveWbRPdsgpIMvn4X3yHMlob4igVnNcyP7tqRtD8Bp5BYc1nPXG9gBjXQ0rHM1rTnf+RAMgtyDCVvijFIbauoVjhXH7GVHA3pxkvUmNRPXEKJlWbsDYTIxWV3ZllbK4wKhogxzkruAauiRQA303kVSwlwkl6fOKujRJnPtiuUMDILcZ0y5HKsPqz7bOI98R0g8AJsTv7e5bXMnnld2NhLYtSQicwJ2IRj4aMDa2Z3usrX+Hh38fGj+6icSqGlTt5ccCTQyEqgZh60Es8drNutSLTMBtiZi0PIMVX+kp7+BuqrAHseXvMuk3sO+SjtNrujRCz160vorQmG95UKynd2WWEcWHZSJ9hYN9LmbaHLfGcQ8CHKfRvCGzdWXste4We+c9IrP2ckCONc4z/16bDu7DXc26isyutiZuIjh5r7/ki7kuba+/NOStmwutdcaw+HDerszudVDVd895QWyF6s1VfkpWf6ZXEl0FAZB7pOAc+K03JncFEIflCsnAYCJTV/rqCE3EpgX5+HXnD5lPeNG6ijZpO0rjvKlB73AS+r42ZU/IRdF2ZLcpsLLnujqJBk1JJc2+xPBKp4HaWuj0poDyQ/DIMh9Ngkub60ezL6813sL92DvViTQbsxdm5fmTs+7Pnce+QvNG5Tdn8+c3YtTf3bK9T23Ff+NvWvKLjsS0DKPnqSU2bJNOxEMPC9gq3mmNR6+vTXZnntPkQDkRwM2EjgKwyD3KFzeXP1Ftael2z0h9u32cMCetL0pKxJvygnolX03Wby45+Sga/P7Vhu1uHrmOWX3/Owbyu7lm99abQTszV9Udn6X0NxJYNmmQ1/JYZtQNdt+1CJbEqo6d0G1l7/XkF1tq8m9Ioo8DIMg90nA9mz118Vu2u8nAWcHPmow8hLArnxuzs3ct/6s7PecnAQAtnYfUHYhj8opW+4mvnzD2e0VNwmQHAmAD689G9vTonL3+/HlpBULvKQklL77p00Od7CCPT0vkDChDYLcZ1G4stnFfoVHo4tI2G6ybzcis+3ZaKVmp7vdxnl1O4u3Krvr+z+g7J6XaYFndtwX4Nm9V5XdtXDyEsBOvKzs/EpRexKT8xA35KHl9kSpzeLKkAE29TXaHSnlHvZyUtmwRxBW6N4bMtGXfcD5nx7x3iDIfem5Hz+5Z2yIfzvsYgZ7LJf1Hab6UGI/pW1One3ZDUdg21tORrlw2a3KPfvm1TYAswdcZVLcc69rEGD7Lc5uKjfcstURdoOePfl92pflpDcryhZlm+xJWW1Pjnlf1vbv2XtdsbeMDO2LbNPa/ZefO/y9QZD7LBoub61212xSZ2oPwK1IEm1IopvJPcs3NpzdmS33RTlzXva7en+21zC7X27j8JYryq583xud3RslyV64qMyaTV/yahFzSWDWbl+SZ3J7IQmWRYVMsCfHsnBjmdj27MSn73XFmO39sW3OJTcNndwnk8L25uqHzHqnE0naM0nY4Ml484yzm21JMr7oxjy7W+6cd5+r1weIN15yhn9p9b5AAOVeZ8ddq7d/Biiz5Me3plxGb/8p7Wx7khAj+/rspAJ+LJbotDaZ3F7NQabZbSbszT0Icp9OGy5euLHSbjaTnvumJPcz/sObbstoYFvW0F503uTksiuZjCurt28A4B5J2EC5ctnZXZJtnnVjKdmetvyiaG8cNMlqL3ZfHlCi2+snEoCKa7TkbklbRwzJXjZ4Tzt7zEdgIORe2L4sPHdZtTU5Kxc7bfsDCCZ3yb3kLzopI94gq1YuSS/2siRYS8RAOe/65oz7YPrytDVpVxCYJ8WeSDu5vaqJL1v2sPmDdGmkC1kmeRI4Anf0bYuIp4DrLA8YnZdS3hkRdwOfBB4EngI+WEp54ch2JjATasFELHQCmGxLIpaEDRDnHYHFRSl7nLd2chLYdu0V6T0DsCE3WLKkrXftk6RtQ9dsO9DkHtpTS9bws8dcQzZWerBtZktbJ0CWKTV9H4IMV+pHSikHNzZ5BHiilPJoRDzS/v2RI1vYCGb3rCaSOCdJe9uF9XG+guis7UVXmVEuSK/4opNbyracBCrIvTfS7itZaZOLQNg2peee7mn3lYSE4Xva2V52Rd/FtjlQWeYDwHvb338Z+B1WkHtMQhG3Ju1tqd9s+9pdtqVeLD1ozrm+i5Q8tJct9xcHPGlbZHuT+kuaTDY1bWYTU19JyBrPPbussy/SrhhzOmkPwHMvwG9GRAF+sZTyGHBfKeXWpiTPAqvXu88mxJXVHm9YMr7L2vnVmuW888i1PJLsaeskZDZhg6/g6MvTzi4LrGizN49cX18XE19fWrqtNbeTRb7n7iWr/qtl3lNKeToi7gU+FxF/YcFUKaW0xP9diIiHgYcBvu+eC8Q5QU7npBd7VnrF0nsGYMuRp/a0N3vSs2swdO07O6HaBYHJNr02n+ztZnvZXfRtdeps0q4qjc0lbR0JHIE7IvdSytPtz6sR8SngXcBzEXF/KeWZiLgfuHrI/30MeAzgnX/lTUVVhWivWEoj1o6KRGS2pz1NVs4q9onuTfvedStU073Ym3475LXxtG17XVSOyL7TJQ/bXo00YklbTyw9yjIRsQ1MSinX299/HPhXwOPAh4FH25+fXtnYJJRnXKT3rL1s6T0DYMnYeto12ncmuliok6x991ZhUuG5r42nnf0Zgyc6vRFT9gKhfGkknbQrtj44DHfiFt4HfCqWG+HMgP9WSvn1iPgC8GsR8RDwTeCDK1uaTCkXRFWIlVusl32upixQThjSTpN78krDTuqVpVYdu9IzthUmN7M194qKEDuWvjxtXWveY3LR7kGT7Gn7SKBGc08ucexTlimlfAP4wdd5/RrwY1WNTSdKItGkvSUX1Zyp0NytPNIXaScnFwG4KeURLbdYQsxtL10aAdiV97unjb6099xJQtVOGMn6c7L3bDfvAiomIGc2lDr3O0eEk0iydeoaaaQnGUV72noxSs0S++RSw+xNr9KXr1fcm+wNoPqqCLGSR1XNdzJpJ8symrSrFjE5M03aNYdNHIJhkPtkAmdFcjN7mXt2shLSN4DShGi9YmsHhExspssjNrGpIwa7kKiC3HuSW3qTPLrQn/UkkK2lJ8s3oI/m8rLMupA7ofa91gtwuigLtMjWvtOTlR14p9l17n2tXOxxL5HeKkKyqzxq2hw6aVfwa/ZYKoraDsUgyL1MgrIl9O8uPG0LS2DZ2rfVvTvw3LWmbT13fY3Jnna2nk2NVi2/pboksSeduubgCj2x9EPGXcgy9hRCTdpro7kT/XjbnZQF9lSel71iki62lx36XiI1nnv2Evthk3aVRLEmpF1xbGw6ads0w1EYBrkHuQnLbCKmQn+WhBg3Vu9fD3hvV+rUcUOOo6bvbE9bt2ePVcv33H01SvKqyWzi7FN/Tj5yLvksckpNUjO574wDnodB7tnooubbhkm2Rtv2ne09V0xo6R50uvTQ5y6AA/egk9vrhOiySduO2Q6lZj5LlmXWx3O3yNa9q/RnqX1bj1zq1N7Dl2Ou8dztocg6f+Dsijzo2Gvu0sOvSRrKQ5YHT8Z68Y1rDirkDCtRJC/eTfeygbJwZ01ocl8bz70URdzppG2lFipIdsdOArJva2fJ3SY/AXYlGWu5xeYFkvfGlpNFkYQNDJ+Msz3JTjx3aZft7TaOiJsazb0kk/taee5GJ09OVlYtN8+WR/o6iqyLipDsVZPZpG3D/w4qQnoj7WSJoia5mK999+MVW8Kua1M2KCegozAIco+mcQlLnTSUXvarO86upk3tkdtEqZVbnF2x3jPkyx7ZHnSyNFLlnfZFxskShb6+qprvbC+2J6+4gmCLtNWT6bqQOwXnoWZ7xTV7iWRvyZosZWgvu6bc75SRdtnLr2tO15XT5ZZc4qyxbWzfyWScTcRdtXmnGAa5Nw0IzzhefdW1Jz3yqPDctae9I+1ke9rTvimXr9tkJVBuWkkomYz3c0vkNCFWeO7eI5d2Wh7JJeN0goXeSDa7vaZKlhnJ/fVRikuW2hpyq493sZeI1J99RUiu92yJGEjXyNNJW3ra6dUW1EwYPZFxskRR5n4dytDJOEPy+K429db0x3eNwyD3ZgGvvLLSLK5bz91q7tIOKDvJ2rf0tNm1kkd+RYgmY0uy2bqy3TBTt+e/UOkkq9sbtrcL+STbF3HWeO4W+hrXplpm0RAvXV9td13KKK+6pGaRRAyAJPdyQ2rkUvKwZFx2rZetzABotKdt23N2vUkP0m7Zd7LXKfseOnHW9K3HkkyyXcgyvu/jG/MwyL1pXJ22rOUudvGN9caBsivllp5Iu5FDsd449OcZa6LT/TpJoYsE2qIv/blHL3boZJx9fV20mbBv2EDIfdHAtdWee7Ee+atyEtipqPm2pG3J+Kb79Ly36+ya/XzpoS+SzfZ2bXvQH3lmh/UnwTvNILrvpd8aZN/HtfLci6geKTvJkoetBqE/0tZ2ex0QmCb3ZLts4kz2nmH4ZHyc4f/t8OdeZ3u7wyPY29HFZHoYhkHu80K5tjq52bzimK65IYl417sEjVybZD3jhbTri2ABFgvnaWeTZzaBaWmkR+khmxDXieiyywcbjo9gb0cX9/EwDILcy6Io4takfcM9DYuKfcOsZ7ywyUApUdj2LBFXVT1YcreE05tEkR/+D51k8/tNbQ7IJ9njJM7bMcT7PQxynxf2n18tkSxuuBs435OktO9rd+eSjL0HLcm9ySVt296yzVxSzCamvohu2bezGzqB9XlvLI5TyjiI0qOHn4FhkHsD81dX38iFJG1L7tbbBVhYT1uSZ7ZU0IX00BfJ9hWGnwSN9SQQZ1+kmJ147QInXnOPiPcBHwOmwH8qpTx6lH2zmPDKC2dWtjufrz5EG2CuveJ8jdWSezbRdUFgvZFxNiF2QDZ9EcnoxR6Ok0DuJ1pzj4gp8B+Bvw18G/hCRDxeSvmTw/7PfDHhz18+t7JtS2DZUgZUEF3yl8A+sKMHdufoU7O1SDjDYTDoa6I6Ccj47nXhub8LeLKU8g2AiPgE8AHgUHJvSnBjvrGy4ZNAdOtETEMnknUih5PgGQ8dJ8FzP050Qe5vAr514O9vAz90u1FEPAw8DHDv5gWev7lalpnE+OmNWE+s00Q1YhjoLaFaSnkMeAwgIq6///P/5mt9XcsAcAV4vu+L6Amneexwusc/jv3O8ZbD3uiC3J8G3nzg7wfa147C10op7+zgWk4EIuKLp3X8p3nscLrHP46927H7WkCPLwBvi4jvj4hN4O8Bj3fQz4gRI0aMOATpnnspZR4RPwP8BstSyI+XUr6S3c+IESNGjDgcnWjupZTPAp+t+C+PdXEdJwinefyneexwusc/jr1DRDnOQ/1GjBgxYsSxoAvNfcSIESNG9IzeyT0i3hcRX4uIJyPikb6vJxsR8fGIuBoRXz7w2t0R8bmI+LP25xva1yMi/n17L/4oIv5mf1eeg4h4c0T8dkT8SUR8JSJ+tn197e9BRGxFxOcj4g/bsf/L9vXvj4jfbcf4ybbwgIg40/79ZPv+g31efwYiYhoRfxARn2n/Pk1jfyoi/jgivhQRX2xfO7bnvldyP7BVwU8Abwc+FBFv7/OaOsAvAe+77bVHgCdKKW8Dnmj/huV9eFv772HgF47pGrvEHPgnpZS3A+8Gfrr9jE/DPdgFfrSU8oPAO4D3RcS7gZ8Dfr6U8peBF4CHWvuHgBfa13++tTvp+Fngqwf+Pk1jB/iRUso7DpQ9Ht9zX0rp7R/ww8BvHPj7o8BH+7ymjsb5IPDlA39/Dbi//f1+lnX+AL8IfOj17NblH/BplvsOnap7AJwDfp/lau3ngVn7+mvfAZYVZj/c/j5r7aLva7+DMT/QEtiPAp8B4rSMvR3HU8CV2147tue+b1nm9bYqeFNP13KcuK+U8kz7+7PAfe3va30/2lD7bwC/yym5B60s8SXgKvA54OvAi6W8durtwfG9Nvb2/ZeAy8d7xan4d8A/5TvbFF3m9IwdoAC/GRG/1263Asf43A9iP/fTjFJKiVj/TXMi4i7gfwD/uJTycsR39lJZ53tQSlkA74iIS8CngL/a8yUdCyLiJ4GrpZTfi4j39n09PeE9pZSnI+Je4HMR8acH3+z6ue/bc/9etipYBzwXEfcDtD+vtq+v5f2IiA2WxP5fSyn/s335VN2DUsqLwG+zlCIuRcQtx+rg+F4be/v+ReDaMV9qFv4W8Hci4ingEyylmY9xOsYOQCnl6fbnVZYT+7s4xue+b3I/rVsVPA58uP39wyx16Fuv/4M2c/5u4KUDIdyJRCxd9P8MfLWU8m8PvLX29yAi7mk9diLiLMtcw1dZkvxPtWa3j/3WPfkp4LdKK8CeNJRSPlpKeaCU8iDL7/VvlVL+Pqdg7AARsR0R52/9Dvw48GWO87kfQNLh/cD/ZalF/rO+r6eD8f0q8Aywz1JHe4illvgE8GfA/wLubm2DZfXQ14E/Bt7Z9/UnjP89LLXHPwK+1P57/2m4B8BfB/6gHfuXgX/evv5W4PPAk8B/B860r2+1fz/Zvv/WvseQdB/eC3zmNI29Hecftv++covbjvO5H1eojhgxYsQaom9ZZsSIESNGdICR3EeMGDFiDTGS+4gRI0asIUZyHzFixIg1xEjuI0aMGLGGGMl9xIgRI9YQI7mPGDFixBpiJPcRI0aMWEP8fyyibqDBBmrTAAAAAElFTkSuQmCC\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAABwCAYAAADlsjDyAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAj90lEQVR4nO2db4gm2XXen3Or6n275/+utVotWiVrEZEgQqwEIctEH2SbOLIw1hchIgJRwsLmgw1OCMQrAg4JBDZf4igkGC+JsA2JJYdEaBEitrK2yafIsmzZliwrXplVrGWlycqjmdHsdL9v1T35UDW77dVO39/dudVV/XY9MHT322du1a2ues65zzn3lLm7FixYsGDBbiFMfQILFixYsKA8FnJfsGDBgh3EQu4LFixYsINYyH3BggULdhALuS9YsGDBDmIh9wULFizYQdRTn4AkXazP+QOrK1OfxonCbOozmAK7U3Z7Jv98C2aHr774jRfc/YFX+90syP2+5or+8Zv/YdKugk9UkCsAW/qAkrGOHpuAknvppVXOXAhsBMIufY7S/Mk42Pwd3xh/lzljjHu7NN7/+X/1tbv9bhbk3rnp25v0ndNApqvM0MNiYjdsUA4ZM0M+HrvB6INX3qEZPkc8YmESmbuDlKQpuZ3Op5voHKfzKeWPfJJOfCbkLt3Ypu2awC53HSQDlsHYaoA6AYmvLir4Rw6Q6SiBlV4x9OPRc5zGUVFg0obPZ57TKxsUUARNR9pTrQSmjMg7h89KgWszE3J33dikL/iqYuM1wRA5VdBZUCdA7aR+dUFA/8Y1ZGMeuXvxKL/8qoYDjVmctK28DFaYl8YgWHp9SjsV7vjKTnqMqpQS12Ym5C7d2Mak3apjD0sTGMlWxm6Iykw1JW3wlzZxJ0BJu4U3A1+FkLVPP1Z5SQjmLfB4yiBudmRMJEWPO0LkXri3VDCpK0yeeDR6rQtfww7alZYvU5gJubtubNO6zF6o0M3dhADJ3ZBdDZ2FmVSlfZSkfnVBQMerIMnmSEylx6PPFF3VlJyHlBfPjeKACIo7i8JRbAZ/lZeYyq8YSjoC6vRKHXIW5B4VdcMPknbbrkFL+1WoEEH0ETm0g39lmvRtoR2N3PskctqOJoeD5ZAxsyudtxgjicxtyzqg8nILdD6FiY5HscKOijoBSp45MgpxBGOUNZeI8mdB7p063bTraTu/gMh9HRskKjRWqQJ2tQVE7kGmFj7NW3iHUWfBK4kouWfIMuzQSLKS+Gogh7TRn8XLR9rTjVc+cUcdAXEs1AnkHZfZZTkgghFWKyWkrVmQe1Sn79i3gV1UAJd843uqwdQar1WD8SoPajydzTVJjafHCzI1MGtOs+t0qdnLN+kxje4VyEkiw7nQ/AZOvMKIPIdgi0tChQms+HjMbBizvGMhKOl8JO4Esq5Nhu29YjbkftuvJe3cokgdzNrOqXJA7lqr8SZpV6tSA8YLMrUdcAJmyAlI0gratdGQftqTO9kDwPIRATsLeFyT2vRhJUkVzVtQIlaew0hhHDmorF1pJzDGmHmOJW0zRjkiNaVBWIl6+HmQu3c66G6kDSvJlCbPzraqLE3ajdZqtAaHbZATCApaa5W0k0tr4CwkqXMiHPXSEa38IdJWFViUkRW5Qzua36hgpQc9rmU5KjZmcclqIuIs7VSkceZCyDNn01ZpOZ0emxci3x2zIHdX1La7hWyJLNMFRu6trbU1SO7ALnhQp72knXlQp/T5mYI6jyx/oAppf5VMtaWvoTmrWgkyTEyUZPMkJjBeRv6AXESDeQbqLCSphRrAGJIVGi+DiEs7jNIFhFOuLOhcdqbO3b3TtmXkTkC1+TasVVuajCs1aokTsEZRoHbRpM7303aSOk8fV5LWYGUh9U6g9fQ5mhlKNgczpKUHGS5xzHEWJcs1qR1NNve25ZyFJHV0dVGYwKhk1fn88wI5kXvpY3NZBg54DJLkbmYflfRjkq66+18dPrtf0sclPSLpWUkfcPdr1ou+H5H0XkkvSvr77v47qWO4u9qYLoVUKxmIOiUhbb7yVjGkFd5gtTql6/ArNeosbWcKcmMF7NRRRYcOTRHJMrUHVWC84KaKrAQktGKQ+sQrIRKnzoLKRkEotCrtLKS82n4DrFi8HYXZKA6DYMpVCCqFZMO9NCZBidUKidx/QdK/l/RLRz57XNLT7v6EmT0+/PzTkn5U0luGf98v6eeGrwlERUDuNNHmHhWALBO9VfQ0GQdrkBMwBTXhHLLD5G6dAskzaIXyEbUqlGzeKqgC4/WVP6wvRAPGk3hVTROgs4DsUDtLSgc5Jhx67Ih7DZU9LiZE81EcBgHsOiK62RaXI44QuVPSjichy7j7/zKzR17x8fskvXv4/hcl/aZ6cn+fpF9yd5f0v83sipk95O7PJ44ij5vkyfZ0SKJTKRiIyL1WjGm7qlrJgdzCOtr08MAqf+hdE43JPI2vFUAEXalRBUg7KCiC/IHUr9AIqBMA6pIknkTuzJFdL6MQyUqCfkodrEwyOGCOs0AkC5OLtNWDGb8fYmFnUTpyz3F6JRO+KbxWzf3BI4T9DUkPDt+/UdKfHrH7+vDZd5G7mT0m6bE7PzupKnUWu8coOSD3aDVyAtG3LHK3MIoTIMARvrWqwJ+9Uov2CpgqdWBNZR7k0AlEGN9UHhDJRni9KzdEEMGNSSNuaiGTkJ3SEpeYYAWtzFl7bImTe0lncWdMArq6yIvcQVAgOBe4Eui8TD38PSdU3d2N3Onf/f+elPSkJPX/Pz2EO91WsJGDu9ssSkAecYtylISc8K2FAeYZrFEFSLZSq85IbX+ljuwBgI5PkiKO8NntW3tAFUedTAFExgaTyBLPM9AIn0axMaMNM21HQTCGs6BlgeZs4xF3Fnx1QR0GnQtclB6L10ru37wjt5jZQ5KuDp8/J+lNR+weHj4rBEbu7pKBy+OKrLrFW3lI168bDZcgcpyFi8k8dVijMkzqBEwBlZ0GBUWoo1BJgY7XqWLXRmwlYG5oe3jI6BxOyRjbQS8QYFti2mCsdD6ij565syBzGcVZQCmqA84iZzPdcXit5P6UpA9JemL4+skjn/+kmX1MfSL1elpvHwNwYe/OhFurFSMhEi7LlI7yKbm7ogKo6IlqkBMIqlCFUFClmFEhRO1KVhJ1kNwrVUxzl6Gy0yDD0lGEIb7TqjJzuFph+YhOsJLIDEfFvCeRQU27rLOg8g2Voug1TIGUQv6y+uTp68zs65L+uXpS/xUze1TS1yR9YDD/tPoyyGfUl0L+A34qZDY0DuLxEnYCKMkXRHyAWcCbVnLAyT3t06O1yAmYKtVgl28/ZnrSJG9w5OAItWpcSURWX0Gdalr5AyuOqBRFa1bw60QgMeE8A1ozS3LmLILlrELYqoG/aoU6Cy4lzmqHqrt/8C6/+uFXsXVJP5F/GoYePpR0HSzL2kVUZmXQWbgLZ0y6yCN8cg0rRUVQsx9Di5xAUJCH9N+FnNtLxwZOQBLW8N3WyPF1ziUmmkSuaXIYOgGH42GykaF8RBCrcw/G8hYSSw53zur6pSEpjeSRss6ClkxajkxX4CUqs9ihKpkEiKRPu5JJR5XdtOwiKQ4XL7NCKo/yKmtY5N6hPQCuKAckG61CkhV1AlnAyUVWSVRZjUi78hrJPGZVRhI5PWYnKUInyZ1KQI9KECsnNWzH8wesuxKvc8cVRybk+PixefKa74G+O2ZD7gEkLGOkJUftCE6ALpsZgWEn4On6/96QmblWioDAgtfICZgFVeRvZxUvAYD+DOcZYDfRqAY5gda2qmGy2WGDOJpEJg3sJMmhE6DOApO7M7ucFQONYmllEi21zZGiaLUTqtryftVwr5gFufcEARpuwYRl7wRIFQxd5o7hBOB4tLZfEmLFKAk8BB4j2kWbVdFD5JtRnMBeUScQxCLyrJ3IKPEK3+gOx5P6CJ/uFaCkTfTiTv0+BWRHy0nhnPFKQDQBSpPSwq8hpM7iOMyD3BXUVOeTdm1GNQqxc28ZeY7iBKBeXLglXlRkO1yMk3vpPQAeup7kUyjsBPrInVUI8bxAOmiReJ6hweWkNMKPMIkckBQVBmGG2NEIGkfutOIIrkKi0PYbBYNaOswf4KR0AvMgdwtq6jS5UyKhTiDGDStBs5jhBEonfbkTIEs+75szoKOSW8ycRadjbPCiTiBGVgrpFhXAXIIFBSiP8LwAcyp8vKgASNvFrmHAewAC2tnciSWRc0BXw5UHVr8u1mvIPUPqQasax6uL4zATcq+0ri6m7WjkDp1AZ7U60NPGFRWBnSxKxE45lT8UvKyTbvAit4cj2iy/ArkD4jTcul7zTyAoKsBGcsQJ5AA5SPE+PlER9xAiLflqr5k+b11WEpmA5g+os4hYimKVP50Yafe1/eQMd6haJqjSfrgvaVdZg7TE1lbqQKTdxlpVTNdoR9+qhTXkbDPK1E6AvKwjDlE+GZFt8EJm1tvRKiFUQhticSdQFVk454Nq+BLbXUk3guF8hAd0z5oqlETuE6pws1rBslOpl3lohI8qf5xLR7Rc8zjMhNxrnRcjd3JzH1qjDkRgdVirjYdJuy4ewhbCOU4AYhQnwMo6SZjR1+4SJxDg5hbxrklR4o2gwaED2+Dl1k0nRcEKIbqqp+MF2MIhWEBtK6RWNYjc+4Rqow7c36SLaQ74tWEafj8me6boXoHjMAtyr1TpUrxyrE1UVGNrRGK1rdGW+FaHakOa3Fs/0DbeTtpFbxUs/UYp96gtZDBM2dgJsJr9YVAwXpBAQzeePuN7AHKcAIrcIyftknaSyrQBPAK8wUtsVWNipO3DNrkUAqwkMgUeuRtchWQlkdN3LZZlYN5C4hH+8WPMAEGmC6Cq4NBXiCIardQCWtzaobYGyN0OdWjfSdq5Oh2QyM/ZAyVJm5Y9qFGsFMy8xVvYmROgJBJksKwTF53CRm2dWFO3YPUk5G4W1BYv/+zYrmCD10YVJmPiBPqEKssf1NagIKfymtmpkUB1Uq0KjWdOK4m8SFsBilmQe6WgS3V6I8wm1ijRsO+NOkA6h77VBmzF39pWG7uQtGu1VV2lnVRUpwo4AYknh7ddrQjIM8YNrJ1nLRfu2KLxqN6Y0befSx+kphpGdKfACdRBIpIVdQLBggzIHjm1/aXffTBKJRG6No7m0tf2w01tu7KJqTLpUpO+iJsYEOEcxgraNahrX+tRB55+fV6rTgeWLumMirpZs2ZbwRp04xy0NXMC7S11YNere8sqhIo7Ad4cy8T67PdjkvFqUScQyItMPLBIm+YZMvIRLZWinJVCumpUZRXovoeMDVk5EhNBpVpOSmgVFMBcfEixE/Ak8o7IMlUwXVqB1+dF9udrY1ALXkLYelAHBtxG1yaCLfZyvRjTr7tzudZwc8uN6hy6aW+FfZREPqxuqu3S+YO2u63WwEvLPaojLzfPcgIM7l1GbT8ck1QS0eSw+p2+ZLzigC/7dmtYaSx0AtEDKj6QMiL3EZQM1PhNAZWT4mSzB3R/RVW4LfFxmAe5m3Q5zZ1qI9sJto2Sg2xz66x5fufSpiN9w6XDDrTTlXS+BROWdC6mVwySdN0uqgWvArwVrmlbp8n9sLuuTZdODndxo017M2nniuq6F5N2kuTASb08Lqg+wNE92+Al8V25vCqKmeV012SROy0TZU4gZOwipyidHKaN5Pp9NSTCp+WkFSyVZpVEKcyE3F2XG0KyjNypLtl5P2YKLmkLekpHlzbg2L0TYM7iUsv+RPdt95HEdNNfp0Ol5Zbv1Dd0q76WtNv6bd1q/1/SLsatDrbp8dyj2i6dvO6NWYM4unOxdwKwQgg6AQr6so7S5fUh1KzvjkeFAMqBJSRZsa1vmYBvRKrESqrxpsnCTmAY9J4xE3KX7mtIRYgJqC285M5Z21F39tbyKGjnhpyF1OcPyJwPugod+3a71hYMeLu9X7faNyXtDrzVn1XpyH1bb/XC6mtJO1fU9cP/iyLjw+013GYCsSKM8OURPXz9ojCn8dvxyJGDaPkntTMLXGKC/evIbMZyAqUrhEo6gVKYCbm7LjXldmLmlBsR4uRj5TTjZ3ZkZdHbMUfVudSSLdVu2oIXhbS+0kGXlo62UbqxfThpF931Zw3b5PWtzQGqirph39EWrFYO7ba2ApvatOVSAXQYtNac6ru4zFAN1ovJmKV70EgZL0KHjoB0o5T6bpSo26Pga/bE3hubY/dHx/xuFuRem+v+FddZUyiRjPhz40E7+saYvhk/7HQHe4RWFtGLAKoQ0caMuopqqjQx1VWn1Qr0h69c+xfBa/uCtH4DfAAe3JORF2xe3pet0qWsWjfSCjwSIUgVjMDoe9XQkjQOy03gMKg22XZsxRKdjRmjnMwlutTBgK4lCXtJG9ipk1RRSPwaRr085+h33rv38t/+6PVA10bsGkpa/czdfzcLcq/MdXmVjqzMGHFjkhV9M4qrCiSB5qogGTc1uxFXa7asX+23aC7NuSjQOl/V+aBwHiSdLjSy+y+l7Va19Ib70wcOQf6GB1jP+cuX5QGQe9MgOzTWACMEGyPfbkuILkaphZU/XYuIxAqP158jJO0OHDs6P0d4XOs69nehjjQ6d5D0fsC72u6OeZB7cF3eTy+HAyDYO+MRgq+qqADI2IKrrgm5S9WaOYF6H0bul+H7Hi83shos7S+v+wg1ZXdxX7oAvMD+nvxSuqOn15X8ypX0eCFI59N7Bfox696+FOCDZ5S0Y+TR6Qa+cYsQoiTbwJVwDmlTopuItPlKIIPcpyJtOudjMAtyD1XUhQvppVcVXAbIOFQuq5hdAFfAKhd4k5ysksI5QDbBFC6yUshweY2W9nbfeSYVXDwn7aWP7ft70nlQhtk0ckLGIUj76T0AkuQrdm0wxiBtLGVkRMYAWaRNQIkuR74hidesCH/mpB09w0HSZNuukHtgemxYQRll1RNtCrYyWQ2IswkysMlKdVA4DxJZwaSLezKix14+z3TbyxekCvS1OQ/Jfb0nrcEu2hCwndcj3G6USAjatjxpEzuPspJShrQ7pD2WEyAoTdoO7ehxE7inp83MnpV0U33bhNbd325m90v6uKRHJD0r6QPufmyBc6ik1RUQae8Zi2LXARGn7VUSIvdK2gOXqq5k5wnRmXQJJPgk6fIFpgVfvICuje/vSw2IjOtaaoijyiBt2geGVpiUJFipJwcauZcm7S2UZWjkXpq0qbPABDYhabcZEhO+hvgtHMAGJqUTKBFK/aC7v3Dk58clPe3uT5jZ48PPP338WZiq+0Cvjr2KRbvrCunP2qulBhy3rqR9QoiVdB5ID8HkFyG5XzzPkov7+z0hp7BqUIQ/JWlj/ZLKKJgcWjgeTFZmOAFETDmEuGVOYPakHT2DtDMi8pKknaG5O9XcZ/ompvdJevfw/S9K+k0lyN0qU7gvHfHaXs0i9/0VS7TR0rdVLe2D5GKwXvZInmBgerbU69loLmtkl5WELPmyCeeVIzgihwS2kPYxGKNypHikXTrCp8EDm7NTJ+Cnq1rGJf2a9aUpP+/uT0p60N2fH37/DUkPJkepguxSmjx70gaR+/66j6JTaOo+kk3aNXKgU6uiTiD0kTZB6SRkCOVJmyDGvLI7AuwENrtD2jihOkISsiRpj1JmyDVyXItPQEk7R76ZAbm/y92fM7PXS/qMmf25DVPu7naXmkQze0zSY5L0Fx64JLsEItlzrHJE+3uocsRXDdOVqV1dy0smIZVB2kRqyQV6qCKv+aakTQkM6tQ8im3LkjZ1AsokbZooxeMVTBrmyCiFI23Hx82R/QonQOF4k2vu7v7c8PWqmX1C0jskfdPMHnL3583sIUlX7/J/n5T0pCS9/S+/0XURkjvRn/fWrCyQ2uWQNlkJWNgd0pbKRrsZ42WRNnlYWmhHnYAySBtLTIVJuy1M7qUrQnKibKpTF6+W4eSOd8dOSe5mdl5ScPebw/c/IulfSnpK0ockPTF8/WRysBD6xGECvr/H9OK9FXMCqxWuCDkVpE0Ate/iEoWEN+oYJToot2SRNt3VWVhuwVJGltxSkLSps7hzbACcXBxFSy8cQRPHkhXhM7PjcC8M86CkT1hfeF5L+i/u/j/M7HOSfsXMHpX0NUkfSI4UAktEUtLeYxG+ViumzVtAlSgeAidtmtSk0XMOaZfcXUmdQIx5pE2w2ZYn7cKRuzYZZZglx8sqhSxXEeLRueyRU7pIQKPnnIoVfG3gkKdBc3f3P5H0fa/y+bck/XDWYCGgRGQWaRPyrCpO2mQ8g3ZSHmkDZNV8kzHbDpM2ISaLsTxp48qRwqSdoyvjyB3eD6XHa7uysscYOjXV3HMkD9jACx23uOae4QSOwSx2qOLqEUraTcPKAscgbYopSRsl5NpxSDuF6OUrR7ZbnoSkunJpJ4Ajdyp5ZCQXi26xz9CfsSxTOnLPIOKCMkqWE7h3bp8LuZu0B0oIiT6ujFruMUg7ZwMOQema780GOQGjkbtHXt1yCDX3qUg7p+a7uEYOo9PSMs9UOvUYkkdh+QZH0NExGeOIfGLNvRzMEHGfCtKmDaBOA2kTAms73gUQO4F0h1BJeXo27YGON/6ULQtExOQ5uzXLbpZxLMtwyaO4/lzaCfgIZAzGg297TGIW5O5mbKt76WQlBe4CmLFRp/DuSqNRLNWVS5N2jBmOqrTjg5q7R/hCiomSi9Ezar6nSRpmSQ9QHsEES94zmTNeFJd6yOXOSbPtjOYuw/1OiiIjqYlIm27Uic7LAmkUe3jIJQpyjm3Hml6VJm2PnNyzIndW813+LUJU5imcNHwtbxE61m6EiBw53PLRM9fc4Xg5ToBy9q5E7v1LCE/+pQu4fJD2JqH6c4x5pE2wgZH7dstIu3TlyBikvWURueNEKYvIMRlDQsyL8AsnK8eIyNEiiWvpvY5P7NhwtGOGohcnY35saHcM5kHupTHGRp3S0gOpMIkuHUBy327ZjtLtNkOWKUjuGVUwuCKkeOTOy/hw0hDLKIXLAnMqQigZo/GUUbXChixOxhMRMR3PXVKE7949BqeL3HOSlUX155brz4fwZb4HG+aAcITPxsOk3XYwOmV17r0Uxf5+vi29oYeRdlbSsHQEXXg8h/ozJeMcosshYwKHt8MYZMwjd0bGmOB3JnJ3cXmEIGdbOhmz62REI/fYk3YKWbIMrCE/YNUymLQLR+4evZdRCGDkrhb2HaFJwxZG5GPozzQZiJ1ATrkfM0VOwDVpZDx3MnYve9zjMA9yl8MkH9yok6U/E3JvpyHtGDPIPac2nEkUaCPMCKSNI/cciWKKihDPlEeSx1XxpGFxMl6I+JjxmF0JSUaaCblbdBYZZyQhmf68YVp62yG92CgZ55I2mgvtfNiVramOPgJpQ2LCuzV59Mwid5XXlXPIuOBxTwMZx658tFt+LtAOb3baFc3dIyNuStq0LHCzZaQNyZ06gT5RCsn9kEXavmnZnUMrR9qY4QRgBL0ppz/3FSalJQpelcHseLVFaTKO0I/mEPGuRLxTEjEdM8JreBzmQe7REbnb7dtsvNu3EYEZJHdM2m3HknzRe9IGcGhHN+r4piuaNHRcFjhCMrCdiIyzdOq0SW5UTI49KRHPnGRzXk9agmRfOu4ITuA4zIPcPTLipqR9cMiSgZst04spaXtE2jdOLt6RPAhpd7CMr3VGstFZxJtTSoeTgchM3hYm49ISBSTiO2MSYIliwmh3V0g25/y4kyw3jxTmQe4x9sSdgN16kRHYwQaSOyyF3LaspjqDtP2AVv50LPqj5X4wuegd3GQSvbyuTEvf4HFzJAoaFRePeLGuPO9oN4eEi89lBIIt6VSkjHPcmcg9xp64U7jFIndO7h0j7a5jScPoLGkYHevPfkBbt8JkYI6UQWQZWG1BKz1yJApv2YOSk5CbIuIdI9qlpHQaotgsh1Eywp9oZdEfe1c09y5KN8uRux9s2XbuTYv0Ym9jH0GnEDMqOA7LJiEjzM/SiDyLjCF5RhrhO4ygs3RqRrIEHm32JHsaCLZEdHoU+FpPSMQF+oFhnCpy91uwCuYAJhe3HUsatpGRbHT5lpbxMbuIx0NmvURBiA7q1JSIpbLSw1jR7q6Q7BgEO3fyLE2cpechlY/wj8NsyN2vA3J/cYvuRj9guzC9ZeV03tLk4ghkvOVRMbkZ85KBhWUPWm7esSZyYxDsVOQ5nbY7TdSZd9z5SR6vRPlzvPcxZkLuLr+e7sniL7KWrL6NMCKHunLHknc5EkVHSRsnFwO6IXIiU3LD5kgU9KHi5D5hMrAweU4VdU5JnHMkxFci6uQi7aPYGc3du6juWjqU9QOWDPQtq+CgEkVsM6JTYOfR8HhdRuIOkXuG9IDIPYNgy0fF5Ylz7qQ4d0IcgwxLR9onKY0cxRjO5zjMg9xbqb2WZu24FSLjbhuYE+h4oo2QMdVs+/FYdEpvxDiCZluaPEsT2FQPfZZOXZjsTgPRnTSJ3cFkpD1RdJ/CPMi9kw6vp8kubgMizy6jOoKQbMwgOhxpw6h47sSZJ2UwO0qIcye6UWSCMch4InI6ycqR7z72PAn5Dkr8TUYhdzN7j6SPSKok/Ud3f+I4+xiDbt9cJcdt2wodv4uMjCl59nbTkOJUhDgGaVMUJ9nC5DUGKU1JNnONPO9gSidQGmMkc++G4uRuZpWk/yDpb0n6uqTPmdlT7v6Hd/s/XWe6cWsvOXYXeRVFSbIbJTql5D5zYloiyTI4yYf+taJAi/FTh7lH+MdhjMj9HZKecfc/kSQz+5ik90m6O7l70PWDdXLgLJKdOSlO9TBP+YCe5gfllZh7tDt37FI0PleMQe5vlPSnR37+uqTvf6WRmT0m6TFJev3qkq5v0rJMsN25I3aJ6OaO3blrFizgmCyh6u5PSnpSkszs5t/+7BNfmepcZoDXSXph6pOYCGd57tLZnv8y93vHX7zbL8Yg9+ckvenIzw8Pnx2Hr7j720c4l1MBM/vtszr/szx36WzPf5n7uHNnGco8fE7SW8zse81sJenvSHpqhOMsWLBgwYK7oHjk7u6tmf2kpF9VXwr5UXf/UunjLFiwYMGCu2MUzd3dPy3p0xn/5ckxzuMU4SzP/yzPXTrb81/mPiLMp9orvGDBggULRsMYmvuCBQsWLJgYk5O7mb3HzL5iZs+Y2eNTn09pmNlHzeyqmX3xyGf3m9lnzOyPh6/3DZ+bmf274Vr8vpn9jenOvAzM7E1m9htm9odm9iUz+6nh852/Bma2Z2a/ZWa/N8z9Xwyff6+ZfXaY48eHwgOZ2Xr4+Znh949MOoECMLPKzH7XzD41/HyW5v6smf2BmX3BzH57+OzE7vtJyf1Iq4IflfRWSR80s7dOeU4j4BckvecVnz0u6Wl3f4ukp4efpf46vGX495iknzuhcxwTraR/4u5vlfROST8x/I3PwjU4lPRD7v59kt4m6T1m9k5J/1rSz7r7X5J0TdKjg/2jkq4Nn//sYHfa8VOSvnzk57M0d0n6QXd/25Gyx5O77919sn+SfkDSrx75+cOSPjzlOY00z0ckffHIz1+R9NDw/UPq6/wl6eclffDV7Hbln6RPqu87dKaugaRzkn5H/W7tFyTVw+cvPQPqK8x+YPi+Huxs6nO/hzk/PBDYD0n6lCQ7K3Mf5vGspNe94rMTu++nlmVerVXBGyc6l5PEg+7+/PD9NyQ9OHy/09djWGr/dUmf1Rm5BoMs8QVJVyV9RtJXJX3b/aXXyRyd30tzH35/XdL3nOgJl8W/lfRP9XJLo+/R2Zm71He++DUz+/zQbkU6wft+Fv3czzLc3c12qGnOXWBmFyT9N0n/yN1vmL3cW2eXr4G7d5LeZmZXJH1C0l+Z9oxOBmb2Y5KuuvvnzezdE5/OVHiXuz9nZq+X9Bkz+6Ojvxz7vp86cn8trQp2Ad80s4ckafh6dfh8J6+HmTXqif0/u/t/Hz4+U9fA3b8t6TfUSxFXzOxOYHV0fi/Nffj9ZUnfOtkzLYa/KenHzexZSR9TL818RGdj7pIkd39u+HpVvWN/h07wvp+a3M9qq4KnJH1o+P5D6nXoO5//vSFz/k5J148s4U4lrA/R/5OkL7v7vznyq52/Bmb2wBCxy8z21ecavqye5N8/mL1y7neuyfsl/boPAuxpg7t/2N0fdvdH1D/Xv+7uf1dnYO6SZGbnzezine8l/YikL+ok7/sZJB3eK+n/qNci/9nU5zPC/H5Z0vOStup1tEfVa4lPS/pjSf9T0v2DramvHvqqpD+Q9Papz7/A/N+lXnv8fUlfGP699yxcA0l/TdLvDnP/oqSfGT5/s6TfkvSMpP8qaT18vjf8/Mzw+zdPPYdC1+Hdkj51luY+zPP3hn9fusNtJ3nfLztUFyxYsGAHMbUss2DBggULRsBC7gsWLFiwg1jIfcGCBQt2EAu5L1iwYMEOYiH3BQsWLNhBLOS+YMGCBTuIhdwXLFiwYAexkPuCBQsW7CD+P+YX7Phhdd8WAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] @@ -156,10 +181,23 @@ "\n", " a = np.reshape( a, [a.shape[1],a.shape[2]*a.shape[3]] )\n", " #print(\"resulting image size\" +format(a.shape))\n", - " plt.imshow(a, origin='lower', cmap='magma')\n", + " plt.imshow(a, origin='upper', cmap='magma')\n", " \n", - "show_state(sn)" + "vels_img = np.asarray( np.concatenate(vels, axis=-1), dtype=np.float32 )\n", + "vels_img = np.reshape(vels_img, list(vels_img.shape)+[1] ) ; print(\"Vels array shape: \"+format(vels_img.shape))\n", + "\n", + "# save for comparison with reconstructions later on\n", + "np.savez_compressed(\"./temp/burgers-groundtruth-solution.npz\", np.reshape(vels_img,[n,steps+1])) # remove batch & channel dimension\n", + "\n", + "show_state(vels_img)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -178,7 +216,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.8.5" } }, "nbformat": 4, diff --git a/overview-ns-forw.ipynb b/overview-ns-forw.ipynb index aabc1d5..5ba9cb3 100644 --- a/overview-ns-forw.ipynb +++ b/overview-ns-forw.ipynb @@ -1,347 +1,381 @@ { - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "Forw Simulations with Φ-Flow.ipynb", - "provenance": [], - "collapsed_sections": [] - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "o4JZ84moBKMr" + }, + "source": [ + "# Navier-Stokes Forward Simulation with ΦFlow\n", + "\n", + "... now a more complex example with fluid simulations (Navier-Stokes) ... still very simple with phiflow (complexity of the differentiable operators hidden).\n", + "\n", + "As before, the first command with a \"!\" prefix installs the [ΦFlow Python package from GitHub](https://github.com/tum-pbs/PhiFlow) via `pip` in your python environment. (Skip or modify this command if necessary.)" + ] }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "o4JZ84moBKMr" - }, - "source": [ - "# Navier-Stokes Forward Simulation with ΦFlow\n", - "\n", - "... now a more complex example with fluid simulations (Navier-Stokes) ... still very simple with phiflow (complexity of the differentiable operators hidden).\n", - "\n", - "Only for colab: \n", - "Execute the cell below to install the [ΦFlow Python package from GitHub](https://github.com/tum-pbs/PhiFlow)." - ] + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, + "id": "da1uZcDXdVcF", + "outputId": "1082dc87-796c-4b57-e72e-5790fc1444c9" + }, + "outputs": [ { - "cell_type": "code", - "metadata": { - "id": "Z6YoAVKebfNV" - }, - "source": [ - "!pip install --upgrade --quiet phiflow" - ], - "execution_count": 1, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "da1uZcDXdVcF", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "1082dc87-796c-4b57-e72e-5790fc1444c9" - }, - "source": [ - "from phi.flow import * # The Dash GUI is not supported on Google Colab, ignore the warning\n", - "import pylab" - ], - "execution_count": 2, - "outputs": [ - { - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.6/dist-packages/phi/viz/display.py:80: UserWarning: GUI is disabled because of missing dependencies: No module named 'dash_core_components'. To install all dependencies, run $ pip install phiflow[gui]\n", - " warnings.warn('GUI is disabled because of missing dependencies: %s. To install all dependencies, run $ pip install phiflow[gui]' % import_error)\n" - ], - "name": "stderr" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "BVV1IKVqDfLl" - }, - "source": [ - "## Setting up the simulation\n", - "\n", - "ΦFlow is object-oriented, i.e. you assemble your simulation by constructing a number of objects and adding them to the world.\n", - "\n", - "The following code sets up four fluid simulations that run in parallel (`batch_size=4`). Each fluid simulation has a circular Inflow at a different location." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "WrA3IXDxv31P" - }, - "source": [ - "world = World()\n", - "fluid = world.add(Fluid(Domain([40, 32], boundaries=CLOSED), buoyancy_factor=0.05), physics=IncompressibleFlow())\n", - "world.add(Inflow(Sphere(center=[5,14], radius=3), rate=0.2));" - ], - "execution_count": 3, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ExA0Pi2sFVka" - }, - "source": [ - "The inflow affects the fluid's marker density. Because a Boussinesq model with a positive `buoyancy_factor` is active, the marker field `density` creates an upward force. Note that this density is not the density of the fluid, but the amount of marker quantity present in each cell.\n", - "\n", - "Let's plot the marker density after one simulation frame." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "WmGZdOwswOva", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 282 - }, - "outputId": "3ae4d68d-b586-4bbe-eca9-a223d7720949" - }, - "source": [ - "world.step()\n", - "pylab.imshow(fluid.density.data[0,...,0], origin='lower', cmap='magma')" - ], - "execution_count": 4, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 4 - }, - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [], - "needs_background": "light" - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "PA-2tGuWGHv2" - }, - "source": [ - "We can run more steps by repeatedly calling `world.step()`." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "0hZk5HX3w4Or", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "f7811af7-4b58-4ff6-a8b6-6e7bedefaa6e" - }, - "source": [ - "for frame in range(10):\n", - " print('Computing frame %d' % frame)\n", - " world.step(dt=1.5)" - ], - "execution_count": 5, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Computing frame 0\n", - "Computing frame 1\n", - "Computing frame 2\n", - "Computing frame 3\n", - "Computing frame 4\n", - "Computing frame 5\n", - "Computing frame 6\n", - "Computing frame 7\n", - "Computing frame 8\n", - "Computing frame 9\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "GMKKWQBLHIwP" - }, - "source": [ - "Now the hot plume is starting to rise:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "Mfl80CjZxZcL", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 282 - }, - "outputId": "92f3a9ba-d403-4799-a543-132ee8ed234c" - }, - "source": [ - "pylab.imshow(fluid.density.data[0,...,0], origin='lower', cmap='magma')" - ], - "execution_count": 6, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 6 - }, - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [], - "needs_background": "light" - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "wnbQJvA-HPSL" - }, - "source": [ - "Let's compute and show a few more steps of the simulation." - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 489 - }, - "id": "tkhCOzc0ITsj", - "outputId": "f6366c12-1eb5-4ff6-e0d7-94b806bfd8e4" - }, - "source": [ - "frames = [fluid.density.data[0,...,0]]\n", - "for frame in range(20):\n", - " print('Computing frame %d' % frame)\n", - " world.step(dt=1.5)\n", - " if frame%5==0:\n", - " frames.append(fluid.density.data[0,...,0])\n", - "\n", - "pylab.imshow(np.concatenate(frames,axis=1), origin='lower', cmap='magma')" - ], - "execution_count": 7, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Computing frame 0\n", - "Computing frame 1\n", - "Computing frame 2\n", - "Computing frame 3\n", - "Computing frame 4\n", - "Computing frame 5\n", - "Computing frame 6\n", - "Computing frame 7\n", - "Computing frame 8\n", - "Computing frame 9\n", - "Computing frame 10\n", - "Computing frame 11\n", - "Computing frame 12\n", - "Computing frame 13\n", - "Computing frame 14\n", - "Computing frame 15\n", - "Computing frame 16\n", - "Computing frame 17\n", - "Computing frame 18\n", - "Computing frame 19\n" - ], - "name": "stdout" - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 7 - }, - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [], - "needs_background": "light" - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ooqVxCPM8PXl" - }, - "source": [ - "It looks simple here, but this is a powerful tool. The simulation could easily be extended to more complex cases or 3D, and they're fully compatible with back-propagation pipelines of deep learning frameworks. \n", - "\n", - "In the next chapters we'll show how to use these simulations for training NNs, and how to steer and modify them via trained NNs. This will illustrate how much we can improve the training process by having a solver in the loop, and especially by having differentiable solvers." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "BL-AOqwMJmkq" - }, - "source": [ - "" - ], - "execution_count": null, - "outputs": [] + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/thuerey/anaconda3/envs/tf/lib/python3.8/_collections_abc.py:743: MatplotlibDeprecationWarning: The global colormaps dictionary is no longer considered public API.\n", + " for key in self._mapping:\n", + "/home/thuerey/anaconda3/envs/tf/lib/python3.8/_collections_abc.py:744: MatplotlibDeprecationWarning: The global colormaps dictionary is no longer considered public API.\n", + " yield (key, self._mapping[key])\n", + "/home/thuerey/phiflow/phi/viz/display.py:80: UserWarning: GUI is disabled because of missing dependencies: No module named 'imageio'. To install all dependencies, run $ pip install phiflow[gui]\n", + " warnings.warn('GUI is disabled because of missing dependencies: %s. To install all dependencies, run $ pip install phiflow[gui]' % import_error)\n" + ] } - ] + ], + "source": [ + "!pip install --upgrade --quiet phiflow\n", + "from phi.flow import * # The Dash GUI is not supported on Google Colab, ignore the warning\n", + "import pylab" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BVV1IKVqDfLl" + }, + "source": [ + "## Setting up the simulation\n", + "\n", + "ΦFlow is object-oriented, i.e. you assemble your simulation by constructing a number of objects and adding them to the world.\n", + "\n", + "The following code sets up four fluid simulations that run in parallel (`batch_size=4`). Each fluid simulation has a circular Inflow at a different location." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "WrA3IXDxv31P" + }, + "outputs": [], + "source": [ + "world = World()\n", + "fluid = world.add(Fluid(Domain([40, 32], boundaries=CLOSED), buoyancy_factor=0.05), physics=IncompressibleFlow())\n", + "world.add(Inflow(Sphere(center=[5,14], radius=3), rate=0.2));" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ExA0Pi2sFVka" + }, + "source": [ + "The inflow affects the fluid's marker density. Because a Boussinesq model with a positive `buoyancy_factor` is active, the marker field `density` creates an upward force. Note that this density is not the density of the fluid, but the amount of marker quantity present in each cell.\n", + "\n", + "Let's plot the marker density after one simulation frame." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 282 + }, + "id": "WmGZdOwswOva", + "outputId": "3ae4d68d-b586-4bbe-eca9-a223d7720949" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "world.step()\n", + "pylab.imshow(fluid.density.data[0,...,0], origin='lower', cmap='magma')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A lot has happened internally in the `world.step()` call, e.g., for fluids we have a more complex `struct` object that stores the different fields of the simulation. For fluids we have the aforementioned marker density in addition to a velocity." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fluid state: Fluid[density: Grid[40x32(1), size=[40. 32.], float32], velocity: StaggeredGrid[40x32, size=[40. 32.], float32]]\n", + "\n", + " Velocity content:\n", + "(1, 41, 32, 1)\n", + "(1, 40, 33, 1)\n" + ] + } + ], + "source": [ + "print(\"Fluid state: \" + format(fluid.state))\n", + "print(\"\\nVelocity content:\")\n", + "[print(grid.data.shape) for grid in fluid.velocity.unstack()];" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that we actually created two variables, one for each velocity component. If you're interested in how this works, have a look at the [Struct documentation](https://github.com/tum-pbs/PhiFlow/blob/master/documentation/Structs.ipynb).\n", + "\n", + "If you look closely at the output from the last `print` command, you'll notice that the shapes of the variables differ. This is because the velocity is sampled in [staggered form](https://github.com/tum-pbs/PhiFlow/blob/master/documentation/Staggered_Grids.md).\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "PA-2tGuWGHv2" + }, + "source": [ + "We can run more steps by repeatedly calling `world.step()`." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "0hZk5HX3w4Or", + "outputId": "f7811af7-4b58-4ff6-a8b6-6e7bedefaa6e" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Computing frame 0\n", + "Computing frame 1\n", + "Computing frame 2\n", + "Computing frame 3\n", + "Computing frame 4\n", + "Computing frame 5\n", + "Computing frame 6\n", + "Computing frame 7\n", + "Computing frame 8\n", + "Computing frame 9\n" + ] + } + ], + "source": [ + "for frame in range(10):\n", + " print('Computing frame %d' % frame)\n", + " world.step(dt=1.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GMKKWQBLHIwP" + }, + "source": [ + "Now the hot plume is starting to rise:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 282 + }, + "id": "Mfl80CjZxZcL", + "outputId": "92f3a9ba-d403-4799-a543-132ee8ed234c" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "pylab.imshow(fluid.density.data[0,...,0], origin='lower', cmap='magma')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "wnbQJvA-HPSL" + }, + "source": [ + "Let's compute and show a few more steps of the simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 489 + }, + "id": "tkhCOzc0ITsj", + "outputId": "f6366c12-1eb5-4ff6-e0d7-94b806bfd8e4" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Computing frame 0\n", + "Computing frame 1\n", + "Computing frame 2\n", + "Computing frame 3\n", + "Computing frame 4\n", + "Computing frame 5\n", + "Computing frame 6\n", + "Computing frame 7\n", + "Computing frame 8\n", + "Computing frame 9\n", + "Computing frame 10\n", + "Computing frame 11\n", + "Computing frame 12\n", + "Computing frame 13\n", + "Computing frame 14\n", + "Computing frame 15\n", + "Computing frame 16\n", + "Computing frame 17\n", + "Computing frame 18\n", + "Computing frame 19\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "frames = [fluid.density.data[0,...,0]]\n", + "for frame in range(20):\n", + " print('Computing frame %d' % frame)\n", + " world.step(dt=1.5)\n", + " if frame%5==0:\n", + " frames.append(fluid.density.data[0,...,0])\n", + "\n", + "pylab.imshow(np.concatenate(frames,axis=1), origin='lower', cmap='magma')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ooqVxCPM8PXl" + }, + "source": [ + "It looks simple here, but this is a powerful tool. The simulation could easily be extended to more complex cases or 3D, and they're fully compatible with back-propagation pipelines of deep learning frameworks. \n", + "\n", + "In the next chapters we'll show how to use these simulations for training NNs, and how to steer and modify them via trained NNs. This will illustrate how much we can improve the training process by having a solver in the loop, and especially by having differentiable solvers." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "BL-AOqwMJmkq" + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "collapsed_sections": [], + "name": "Forw Simulations with Φ-Flow.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 1 } diff --git a/physicalloss-code.ipynb b/physicalloss-code.ipynb index cd7b570..d297d87 100644 --- a/physicalloss-code.ipynb +++ b/physicalloss-code.ipynb @@ -7,11 +7,12 @@ "# PINN Example \n", "\n", "Burgers example $u=...$\n", - "\n", "at $t=0$ , sine function (boundary_t0)\n", - "\n", "at sides $t \\in [0,1], u=0$ (open_boundary)\n", "\n", + "Note that we're still sampling with 128 points ($n=128), but now we have a discretization via the NN, so we can \n", + "also sample points inbetween; similar to linear interpolatoin or basis functions for FEM, just now the NN internally determines how to use its degrees of freedom to construct the basis functions. So we have no direct control over the reconstruction.\n", + "\n", "## Preliminaries" ] }, @@ -20,24 +21,32 @@ "execution_count": 1, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/thuerey/phiflow/phi/tf/__init__.py:7: UserWarning: TensorFlow 2 is not fully supported by PhiFlow.\n", + " warnings.warn('TensorFlow 2 is not fully supported by PhiFlow.')\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ - "Could not load resample cuda libraries: CUDA binaries not found at /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/cuda/build/resample.so. Run \"python setup.py cuda\" to compile them\n", - "WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/util.py:119: The name tf.AUTO_REUSE is deprecated. Please use tf.compat.v1.AUTO_REUSE instead.\n", - "\n", - "WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/profiling.py:12: The name tf.RunOptions is deprecated. Please use tf.compat.v1.RunOptions instead.\n", - "\n", - "WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/profiling.py:13: The name tf.RunMetadata is deprecated. Please use tf.compat.v1.RunMetadata instead.\n", - "\n" + "Could not load resample cuda libraries: CUDA binaries not found at /home/thuerey/phiflow/phi/tf/cuda/build/resample.so. Run \"python setup.py cuda\" to compile them\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "/Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/flow.py:15: UserWarning: TensorFlow-CUDA solver is not available. To compile it, download phiflow sources and run\n", + "/home/thuerey/anaconda3/envs/tf/lib/python3.8/_collections_abc.py:743: MatplotlibDeprecationWarning: The global colormaps dictionary is no longer considered public API.\n", + " for key in self._mapping:\n", + "/home/thuerey/anaconda3/envs/tf/lib/python3.8/_collections_abc.py:744: MatplotlibDeprecationWarning: The global colormaps dictionary is no longer considered public API.\n", + " yield (key, self._mapping[key])\n", + "/home/thuerey/phiflow/phi/viz/display.py:80: UserWarning: GUI is disabled because of missing dependencies: No module named 'imageio'. To install all dependencies, run $ pip install phiflow[gui]\n", + " warnings.warn('GUI is disabled because of missing dependencies: %s. To install all dependencies, run $ pip install phiflow[gui]' % import_error)\n", + "/home/thuerey/phiflow/phi/tf/flow.py:15: UserWarning: TensorFlow-CUDA solver is not available. To compile it, download phiflow sources and run\n", "$ python setup.py tf_cuda\n", "before reinstalling phiflow.\n", " warnings.warn(\"TensorFlow-CUDA solver is not available. To compile it, download phiflow sources and run\\n$ python setup.py tf_cuda\\nbefore reinstalling phiflow.\")\n" @@ -51,6 +60,13 @@ "rnd = math.choose_backend(1) # use same random points for all iterations" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We're important phiflow here, but we won't use it to compute a solution to the PDE. Now we'll instead use the derivatives of an NN (as explained in the previous section) to set up a loss formulation to train an NN." + ] + }, { "cell_type": "code", "execution_count": 2, @@ -116,15 +132,13 @@ "metadata": {}, "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "WARNING:tensorflow:From :7: dense (from tensorflow.python.layers.core) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "Use keras.layers.Dense instead.\n", - "WARNING:tensorflow:From /usr/local/lib/python3.7/site-packages/tensorflow_core/python/layers/core.py:187: Layer.apply (from tensorflow.python.keras.engine.base_layer) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "Please use `layer.__call__` method instead.\n" + "/home/thuerey/anaconda3/envs/tf/lib/python3.8/site-packages/tensorflow/python/keras/legacy_tf_layers/core.py:171: UserWarning: `tf.layers.dense` is deprecated and will be removed in a future version. Please use `tf.keras.layers.Dense` instead.\n", + " warnings.warn('`tf.layers.dense` is deprecated and '\n", + "/home/thuerey/anaconda3/envs/tf/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer_v1.py:1719: UserWarning: `layer.apply` is deprecated and will be removed in a future version. Please use `layer.__call__` method instead.\n", + " warnings.warn('`layer.apply` is deprecated and '\n" ] } ], @@ -132,7 +146,8 @@ "# generate array with positions: \n", "# -1 to 1 spatial with 128 cells\n", "# 0 to 1 in time with 1+32 timesteps\n", - "grids_xt = np.meshgrid(np.linspace(-1, 1, 128), np.linspace(0, 1, 33), indexing='ij')\n", + "n=128\n", + "grids_xt = np.meshgrid(np.linspace(-1, 1, n), np.linspace(0, 1, 33), indexing='ij')\n", "grid_x, grid_t = [tf.convert_to_tensor(t, tf.float32) for t in grids_xt]\n", "\n", "# # gx ,gt = \n", @@ -148,7 +163,7 @@ "# print(format(grid_x.shape))\n", "\n", "# create 4D tensor with batch and channel dimensions in addition to space and time\n", - "# in this case gives shape=(1, 128, 33, 1)\n", + "# in this case gives shape=(1, n, 33, 1)\n", "grid_u = math.expand_dims(network(grid_x, grid_t))" ] }, @@ -156,7 +171,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Helper to show" + "Helper to show (see below)" ] }, { @@ -171,20 +186,12 @@ "output_type": "stream", "text": [ "Size of grid_u: (1, 128, 33, 1)\n", - "WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/session.py:17: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.\n", - "\n", - "WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/session.py:18: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", - "\n", - "WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/session.py:28: The name tf.global_variables_initializer is deprecated. Please use tf.compat.v1.global_variables_initializer instead.\n", - "\n", - "WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/session.py:29: The name tf.train.Saver is deprecated. Please use tf.compat.v1.train.Saver instead.\n", - "\n", "Randomly initialized network state:\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -213,7 +220,7 @@ " a = np.concatenate( [a,a] , axis=3)\n", " a = np.reshape( a, [a.shape[1],a.shape[2]*a.shape[3]] )\n", " #print(a.shape)\n", - " plt.imshow(a, origin='lower', cmap='magma')\n", + " plt.imshow(a, origin='upper', cmap='magma')\n", " \n", "print(\"Randomly initialized network state:\")\n", "show_state(grid_u)" @@ -236,12 +243,13 @@ "metadata": {}, "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "WARNING:tensorflow:From /usr/local/lib/python3.7/site-packages/tensorflow_core/python/ops/math_grad.py:1375: where (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "Use tf.where in 2.0, which has the same broadcast rule as np.where\n" + "/home/thuerey/anaconda3/envs/tf/lib/python3.8/site-packages/tensorflow/python/keras/legacy_tf_layers/core.py:171: UserWarning: `tf.layers.dense` is deprecated and will be removed in a future version. Please use `tf.keras.layers.Dense` instead.\n", + " warnings.warn('`tf.layers.dense` is deprecated and '\n", + "/home/thuerey/anaconda3/envs/tf/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer_v1.py:1719: UserWarning: `layer.apply` is deprecated and will be removed in a future version. Please use `layer.__call__` method instead.\n", + " warnings.warn('`layer.apply` is deprecated and '\n" ] } ], @@ -275,208 +283,28 @@ "name": "stdout", "output_type": "stream", "text": [ - "Step 0, loss: 0.111230\n", - "Step 50, loss: 0.059567\n", - "Step 100, loss: 0.050345\n", - "Step 150, loss: 0.040759\n", - "Step 200, loss: 0.033108\n", - "Step 250, loss: 0.027403\n", - "Step 300, loss: 0.021609\n", - "Step 350, loss: 0.017801\n", - "Step 400, loss: 0.013434\n", - "Step 450, loss: 0.031098\n", - "Step 500, loss: 0.019279\n", - "Step 550, loss: 0.015963\n", - "Step 600, loss: 0.014481\n", - "Step 650, loss: 0.013526\n", - "Step 700, loss: 0.012771\n", - "Step 750, loss: 0.012119\n", - "Step 800, loss: 0.011504\n", - "Step 850, loss: 0.010888\n", - "Step 900, loss: 0.010266\n", - "Step 950, loss: 0.009654\n", - "Step 1000, loss: 0.009068\n", - "Step 1050, loss: 0.008521\n", - "Step 1100, loss: 0.008014\n", - "Step 1150, loss: 0.007544\n", - "Step 1200, loss: 0.007104\n", - "Step 1250, loss: 0.006684\n", - "Step 1300, loss: 0.006282\n", - "Step 1350, loss: 0.005901\n", - "Step 1400, loss: 0.005545\n", - "Step 1450, loss: 0.005212\n", - "Step 1500, loss: 0.004900\n", - "Step 1550, loss: 0.004604\n", - "Step 1600, loss: 0.004324\n", - "Step 1650, loss: 0.004058\n", - "Step 1700, loss: 0.003808\n", - "Step 1750, loss: 0.003562\n", - "Step 1800, loss: 0.003326\n", - "Step 1850, loss: 0.003089\n", - "Step 1900, loss: 0.002863\n", - "Step 1950, loss: 0.002722\n", - "Step 2000, loss: 0.002980\n", - "Step 2050, loss: 0.002280\n", - "Step 2100, loss: 0.071292\n", - "Step 2150, loss: 0.022765\n", - "Step 2200, loss: 0.017804\n", - "Step 2250, loss: 0.013744\n", - "Step 2300, loss: 0.011416\n", - "Step 2350, loss: 0.010243\n", - "Step 2400, loss: 0.009419\n", - "Step 2450, loss: 0.008764\n", - "Step 2500, loss: 0.008265\n", - "Step 2550, loss: 0.007883\n", - "Step 2600, loss: 0.007578\n", - "Step 2650, loss: 0.007323\n", - "Step 2700, loss: 0.007102\n", - "Step 2750, loss: 0.006902\n", - "Step 2800, loss: 0.006712\n", - "Step 2850, loss: 0.006524\n", - "Step 2900, loss: 0.006349\n", - "Step 2950, loss: 0.006186\n", - "Step 3000, loss: 0.006033\n", - "Step 3050, loss: 0.005888\n", - "Step 3100, loss: 0.005747\n", - "Step 3150, loss: 0.005610\n", - "Step 3200, loss: 0.005475\n", - "Step 3250, loss: 0.005339\n", - "Step 3300, loss: 0.005198\n", - "Step 3350, loss: 0.005044\n", - "Step 3400, loss: 0.004859\n", - "Step 3450, loss: 0.004585\n", - "Step 3500, loss: 0.017968\n", - "Step 3550, loss: 0.004040\n", - "Step 3600, loss: 0.002951\n", - "Step 3650, loss: 0.002693\n", - "Step 3700, loss: 0.002550\n", - "Step 3750, loss: 0.002443\n", - "Step 3800, loss: 0.002351\n", - "Step 3850, loss: 0.002269\n", - "Step 3900, loss: 0.002193\n", - "Step 3950, loss: 0.002122\n", - "Step 4000, loss: 0.002056\n", - "Step 4050, loss: 0.001994\n", - "Step 4100, loss: 0.001934\n", - "Step 4150, loss: 0.001877\n", - "Step 4200, loss: 0.001822\n", - "Step 4250, loss: 0.001768\n", - "Step 4300, loss: 0.001716\n", - "Step 4350, loss: 0.001665\n", - "Step 4400, loss: 0.001615\n", - "Step 4450, loss: 0.001566\n", - "Step 4500, loss: 0.001517\n", - "Step 4550, loss: 0.001470\n", - "Step 4600, loss: 0.001476\n", - "Step 4650, loss: 0.001383\n", - "Step 4700, loss: 0.001337\n", - "Step 4750, loss: 0.001381\n", - "Step 4800, loss: 0.001255\n", - "Step 4850, loss: 0.001212\n", - "Step 4900, loss: 0.001305\n", - "Step 4950, loss: 0.001134\n", - "Step 5000, loss: 0.001114\n", - "Step 5050, loss: 0.001072\n", - "Step 5100, loss: 0.001658\n", - "Step 5150, loss: 0.063174\n", - "Step 5200, loss: 0.047222\n", - "Step 5250, loss: 0.043665\n", - "Step 5300, loss: 0.042181\n", - "Step 5350, loss: 0.041065\n", - "Step 5400, loss: 0.040186\n", - "Step 5450, loss: 0.039448\n", - "Step 5500, loss: 0.038687\n", - "Step 5550, loss: 0.037640\n", - "Step 5600, loss: 0.036418\n", - "Step 5650, loss: 0.035370\n", - "Step 5700, loss: 0.034606\n", - "Step 5750, loss: 0.034045\n", - "Step 5800, loss: 0.167828\n", - "Step 5850, loss: 0.099039\n", - "Step 5900, loss: 0.095293\n", - "Step 5950, loss: 0.090091\n", - "Step 6000, loss: 0.083824\n", - "Step 6050, loss: 0.072519\n", - "Step 6100, loss: 0.056544\n", - "Step 6150, loss: 0.051577\n", - "Step 6200, loss: 0.048992\n", - "Step 6250, loss: 0.046800\n", - "Step 6300, loss: 0.044814\n", - "Step 6350, loss: 0.042973\n", - "Step 6400, loss: 0.041381\n", - "Step 6450, loss: 0.040075\n", - "Step 6500, loss: 0.038997\n", - "Step 6550, loss: 0.038067\n", - "Step 6600, loss: 0.037238\n", - "Step 6650, loss: 0.036487\n", - "Step 6700, loss: 0.035804\n", - "Step 6750, loss: 0.035185\n", - "Step 6800, loss: 0.034636\n", - "Step 6850, loss: 0.034157\n", - "Step 6900, loss: 0.033735\n", - "Step 6950, loss: 0.033001\n", - "Step 7000, loss: 0.031376\n", - "Step 7050, loss: 0.029146\n", - "Step 7100, loss: 0.026367\n", - "Step 7150, loss: 0.023316\n", - "Step 7200, loss: 0.020324\n", - "Step 7250, loss: 0.017877\n", - "Step 7300, loss: 0.015863\n", - "Step 7350, loss: 0.014097\n", - "Step 7400, loss: 0.012570\n", - "Step 7450, loss: 0.012832\n", - "Step 7500, loss: 0.010255\n", - "Step 7550, loss: 0.009250\n", - "Step 7600, loss: 0.027104\n", - "Step 7650, loss: 0.008814\n", - "Step 7700, loss: 0.007840\n", - "Step 7750, loss: 0.007265\n", - "Step 7800, loss: 0.006804\n", - "Step 7850, loss: 0.006415\n", - "Step 7900, loss: 0.006079\n", - "Step 7950, loss: 0.005783\n", - "Step 8000, loss: 0.005516\n", - "Step 8050, loss: 0.005274\n", - "Step 8100, loss: 0.005057\n", - "Step 8150, loss: 0.004895\n", - "Step 8200, loss: 0.004679\n", - "Step 8250, loss: 0.004554\n", - "Step 8300, loss: 0.007953\n", - "Step 8350, loss: 0.026119\n", - "Step 8400, loss: 0.018625\n", - "Step 8450, loss: 0.012710\n", - "Step 8500, loss: 0.007646\n", - "Step 8550, loss: 0.003899\n", - "Step 8600, loss: 0.005047\n", - "Step 8650, loss: 0.002152\n", - "Step 8700, loss: 0.002009\n", - "Step 8750, loss: 0.001450\n", - "Step 8800, loss: 0.001367\n", - "Step 8850, loss: 0.001321\n", - "Step 8900, loss: 0.001109\n", - "Step 8950, loss: 0.001148\n", - "Step 9000, loss: 0.000987\n", - "Step 9050, loss: 0.000899\n", - "Step 9100, loss: 0.000856\n", - "Step 9150, loss: 0.000848\n", - "Step 9200, loss: 0.000861\n", - "Step 9250, loss: 0.000908\n", - "Step 9300, loss: 0.000710\n", - "Step 9350, loss: 0.000693\n", - "Step 9400, loss: 0.000713\n", - "Step 9450, loss: 0.000753\n", - "Step 9500, loss: 0.000672\n", - "Step 9550, loss: 0.000668\n", - "Step 9600, loss: 0.000709\n", - "Step 9650, loss: 0.000541\n", - "Step 9700, loss: 0.000864\n", - "Step 9750, loss: 0.000872\n", - "Step 9800, loss: 0.000668\n", - "Step 9850, loss: 0.001222\n", - "Step 9900, loss: 0.000966\n", - "Step 9950, loss: 0.000658\n", - "Step 10000, loss: 0.000867\n", - "Runtime 106.27s\n" + "Step 0, loss: 0.238804\n", + "Step 500, loss: 0.051395\n", + "Step 1000, loss: 0.045798\n", + "Step 1500, loss: 0.043285\n", + "Step 2000, loss: 0.041360\n", + "Step 2500, loss: 0.039480\n", + "Step 3000, loss: 0.037504\n", + "Step 3500, loss: 0.035440\n", + "Step 4000, loss: 0.033171\n", + "Step 4500, loss: 0.031074\n", + "Step 5000, loss: 0.029556\n", + "Step 5500, loss: 0.028347\n", + "Step 6000, loss: 0.026291\n", + "Step 6500, loss: 0.024694\n", + "Step 7000, loss: 0.022832\n", + "Step 7500, loss: 0.020840\n", + "Step 8000, loss: 0.035597\n", + "Step 8500, loss: 0.021575\n", + "Step 9000, loss: 0.080320\n", + "Step 9500, loss: 0.036767\n", + "Step 10000, loss: 0.034146\n", + "Runtime 77.39s\n" ] } ], @@ -501,7 +329,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Looks pretty good on first sight!" + "This training can take a significant amount of time, around 1 minute on a typical notebook, but at least the error goes down significantly, and the network seems to successfully converge to a solution.\n", + "\n", + "Let's show the reconstruction of the network, by evaluating the network at the centers of a regular grid, so that we can show the solution as an image. Note that this is actually fairly expensive, we have to run through the whole network with a few thousand weights for all of the $128 \\times 32$ points in the grid.\n", + "\n", + "It looks pretty good on first sight, though:\n" ] }, { @@ -511,7 +343,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -523,10 +355,7 @@ } ], "source": [ - "# a = session.run(grid_u)\n", - "# a = a[0,:,:,0].transpose() # ; print(a.shape)\n", - "# pylab.imshow(a, origin='lower', cmap='magma')\n", - "show_state(grid_u)" + "show_state(grid_u) # note, this helper internally does a `sess.run()`" ] }, { @@ -537,8 +366,7 @@ "\n", "## Evaluation\n", "\n", - "Let's compare solution at $t=0$\n", - "Actually not that great, blue curve from PINN quite far away from constraits (in gray)... Solution get's better with larger number of iterations, but requires a surprisingly large number of them for a fairly simple case. The shock in the middle is not well recovered (the maximum is still much too low).\n" + "Let's compare solution in a bit more detail. Here are the actual sample points used for constraining the solution (at time step 16, $t=1/2$) shown in gray, versus the reconstructed solution in blue:\n" ] }, { @@ -549,7 +377,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 8, @@ -558,7 +386,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD4CAYAAADhNOGaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO3deXxV9b3v/9cnE4QpDGGeAqKAFhWNoIgCBpkUQiAg7c9WT+2h7a/e38Nz7rmn9vT3OPb2tvdyzh368J720ZbrsfW051c0CYQEiAibwRElIBhBkQjIPJMwJSHD5/fHWjsuNgkE9kp2VvJ5Ph4+svdaa+/9ySbu9/4Oa31FVTHGGNN+xcW6AGOMMbFlQWCMMe2cBYExxrRzFgTGGNPOWRAYY0w7lxDrAm5FamqqpqWlxboMY4wJlG3btp1W1d6R2wMZBGlpaRQXF8e6DGOMCRQR+aqh7dY1ZIwx7ZwFgTHGtHMWBMYY085ZEBhjTDtnQWCMMe2cBYExxrRzvgSBiLwqIidF5NNG9ouI/G8RKRWRT0TkPs++Z0Rkr/vfM37UY4wxpun8ahH8EZhxnf0zgdvd/xYDvwUQkZ7AS8B4YBzwkoj08KkmY4wxTeDLCWWq+raIpF3nkEzg39RZ/GCLiHQXkf7AZGCdqp4FEJF1OIHyFz/qMsYvJSUlhEIhysvLERFUlZSUFDIyMhgzZkysyzMmKi11ZvFA4JDn/mF3W2PbryEii3FaEwwZMqR5qjQmQklJCUVFRVRUVNRvCy/mVF5ezvLly1m+fLmFggm0wFxiQlWXAksB0tPTbVk102y83/6bqry8nMLCQgALAxM4LRUER4DBnvuD3G1HcLqHvNs3tVBNxlyloW//N6O6uppQKGRBYAKnpYKgAHheRJbhDAyXq+oxEVkL/FfPAPE04CctVJMxQPQB4HUzrQhjWgtfgkBE/oLzzT5VRA7jzARKBFDV3wFrgFlAKXAZ+Ct331kR+S/AVvepfh4eODamOd1K909TpKSk+Pp8xrQEv2YNffMG+xX4USP7XgVe9aMOY26ksW//Fy505uTJvpw82ZtLl7pQXZ2IKqSklNOjxznS0r6iUyfnMeFZQ5ESExPJyMhokd/DGD8FZrDYmGhEBkBdHRw8OJTPPhvFl1/exunT16zVcZW4uFruvPMAzz8fx/e/P6z+OcOtCps1ZIJMGvpm09qlp6erLUxjmqqkpITCwkKqq6u5cKEzxcUPsGPHPZSXd68/Jimpin79jtOnzym6dTtPYuIVVIVLl3px5cootm3rQl2dc+wzz8DLL4P1ApmgEZFtqpoeud1aBKbN8n5jP3OmJ++8M5GSkjHU1jp/9ikpZXzjG59yxx17GTToMPHxdfWPTU5OZubMmfXf8I8dg1dfhV/8Al57DTZuhHXr4I47YvKrGeMraxGYNsfbDVRW1o3NmyexY8e9qMYByqhRnzNu3EekpR0gLuIiKzfq4vn8c/j2t6G4GEaNgg8/hG7dmv93MsYP1iIwbVrkLKCamnjef38ib7/9KDU1iYjUMXbsdh555F169jx31WMjv/1fz6hRTmvgwQdh1y6nmygvj2sCxZggsSAwgecdAwD48svhrFkzkzNnUgG4885dZGRsoFevq2cm30wAeHXpAvn58MADzs+XX4a/+Rt/fhdjYsGCwARaSUkJK1asQFU5f74Lb745g9277wIgNfUUs2YVMXz4/qse48cMnxEj4Ne/hqefdsLAgsAEmQWBCaxwS6CuTikp+QZr1syisjKZxMQrTJr0Ng8++AEJCV8PACcmJjJ79mzfpng++KDz88ABX57OmJixIDCBFQqFKCtLZNWquXz22Z0AjBixlyefXEX37uevOvZWu4GuZ/BgEIHDh6G6GhITfXtqY1qUBYEJjMgTuLZs6ceqVU9y6VIXkpKqmD59Lffd9zEiXz+mOU/0SkqCgQOdIDh8GIYN8/0ljGkRFgQmELwDwhUVHVi+fAqffHIPAGlp+8nMXEmPHs6MIREhKyurRc7yTUtzQuDAAQsCE1wWBCYQQqEQ1dXVlJbexsqVc7hwoRsJCdVMnbqeceM+qp++6fc4wI2kpcG779o4gQk2CwLTanm7giorO7B27Ww+/vg+AAYNOsTcuStJTT1DSkpKzK73k5bm/Ny//7qHGdOqWRCYVqWhy0OXlt5GQcFszp9PIT6+hilTNvHQQ+8TH++sG/zCCy/ErN5wEFiLwASZBYFpNSJPDKusTOKtt6azfbvTChgw4Ahz5+bTp89poHVc9jk8LmBBYILMr4VpZgAvA/HAK6q6JGL/r4Ap7t1OQB9V7e7uqwVK3H0HVXWOHzWZ4AmPAwCUlg6noGBOfStg8uRNTJjgtAKgeWcD3QxrEZi2IOogEJF44DfA48BhYKuIFKjq7vAxqvo3nuP/AzDW8xQVqnpvtHWYYIrsCnJaAdPYvv1+INwKWEmfPqcAYt4VFGnQIOc6Q0eOwJUrzpRSY4LGjxbBOKBUVfcBuOsSZwK7Gzn+mzhLWZp2rqFrBBUUzKa8vLvbCtjMhAnv1bcCWkNXUKTwuQSHDjnTSIcPj3VFxtw8P4JgIHDIc/8wzgL11xCRocAwYINnc0cRKQZqgCWqmt/IYxcDiwGGDBniQ9km1sJdQZWVSaxbN41t275uBWRmrqRv31P1x7aWrqCGpKU5QXDggAWBCaaWHixeBOSqaq1n21BVPSIiw4ENIlKiql9GPlBVlwJLwVmPoGXKNX6KPDO4vLycL78cRkHBHMrLuxMXV8vkyZt4+OH36mcEtdYPf6+0NHjnHRsnMMHlRxAcAQZ77g9ytzVkERGL2KvqEffnPhHZhDN+cE0QmGCL7AY6ebKCt956gm3bnDUy+vc/yty5+fTte6rVjQPciA0Ym6DzIwi2AreLyDCcAFgEfCvyIBEZBfQAPvBs6wFcVtUqEUkFHgb+2YeaTCvivVQ0wL59w1i50tsK2Oy2Aupa5TjAjdhJZSboog4CVa0RkeeBtTjTR19V1V0i8nOgWFUL3EMXAcv06rUxRwO/F5E6IA5njKCxQWYTQOGWgKpSVZXEunWPU1zsbQWs5I47qigvrwtMV1AkaxGYoPNljEBV1wBrIrb9Y8T9nzXwuPeBYP1fb5okclrovn1prFyZWd8KmDRpMxMnvkfPnl0D1Q3UEAsCE3R2ZrHxlXfheIArVxJZt24qW7eOA6Bfv2PMnZtPv34nA9kN1JCyshJE7uLwYeF//I9/Yfr0KYFr1Zj2zYLA+CZyQPjgwUHk58/l7NlebivgbSZOfJf4+DpEpEWvEtpcSkpKePPNQpKSbqeqqiOnT1+msLAQIPC/m2k/LAiML7wDwtXV8WzaNIX3338I1Tj69DlBVtYK+vc/AbT8paKbU/hciLg4Z0nMurp4qqurCIVCbeL3M+2DBYGJmndA+OjRfqxYkcWpU30QqWPixHeZPHkTCQnOqSNBHRBuTHgMJD7e+f1qa+Ov2m5MEFgQmFvmHRCurRXeeedR3n77Uerq4unZ8wxZWfkMHnwYaFutAK/wiXHhFkFtbVz9dmOCwoLA3LTIAeGzZ7uzfPk8Dh92ziscN+5Dpk4NkZTkjBU0x8LxrUVGRgaFhYX1LYK6uvg2Mwhu2g8LAnNTIgeEd+4cw+rVT3DlSge6dj1PVlY+w4c7Z1a15NrBsRL+3V5+2bnfqVMKs2dPbtO/s2l7LAhMk3kHhCsrO7B69SxKSu4GYPTo3cyeXUinTpVA2+0KasiYMWPo2xdOnoRvfvM7tINf2bQxFgSmSbwDwgcPDmL58nmUlfUgMfEKM2e+ydixHyPiHNvWBoSbIjHR+ek2lIwJFAsCc13XDghPYvPmR1GNo3//o8yfv5zU1DNA+2oFRLIgMEFmQWAa5R0POH++C3l58/nqqzQAHn74PaZM2UBCgjNbpi0PCDdFOAiuXIltHcbcCgsC06jwyVL79g0jL28ely51oXPni8ybt5zbbms/A8JNYS0CE2QWBKZR586dZ/PmSWzePAkQ0tL2M39+Hl27XgLad1dQpPBaxRYEJogsCEyDTpyAv/zlWfbuHQIokyZtZtKkzcTFOVcRb48DwtdjLQITZBYE5polJFNS5vAP/zCc48eH0LnzJbcraB9grYDGWBCYILMgaMcizxCuq4PCwjFs3JiGKjzyCLz00kFKSs5QXm6tgOuxIDBB5ksQiMgM4GWcFcpeUdUlEfufBf47X69l/GtVfcXd9wzw/7rbf6Gqr/lRk7m+yDOEL11KZsWKLEpLbwdg6tSPKCoaR0LCaDIyRsey1ECwIDBBFnUQiEg88BvgceAwsFVEChpYcvJ1VX0+4rE9gZeAdECBbe5jz0Vbl2lY5MphAAcPDiYnJ5sLF7qRnHyZrKwV3HFHKQkJ42JYabDY9FETZH60CMYBpaq6D0BElgGZQFPWHp4OrFPVs+5j1wEzgL/4UJeJENkKqKuDDz6YwPr1GajGMWjQIRYsyCUl5bxdPfMm2awhE2R+BMFA4JDn/mFgfAPHzReRR4EvgL9R1UONPHZgQy8iIouBxQBDhgzxoez2xXudIIDLlzuSnz+XL74YCcCECe+TkREiPr7Orp55C6xryARZSw0WFwJ/UdUqEfk+8Brw2M08gaouBZYCpKenq/8ltl3e6wQBHD48kJycbMrLu9OxYwVZWfmMHPkFYGcI3yoLAhNkfgTBEWCw5/4gvh4UBkBVz3juvgL8s+exkyMeu8mHmozL2xJQhS1bxrNu3ePU1cUzcOBhsrNz6dGj3GYERcmCwASZH0GwFbhdRIbhfLAvAr7lPUBE+qvqMffuHOAz9/Za4L+KSA/3/jTgJz7U1K41NCBcUdGBlSsz+fxzZwbQ+PFbePzxdSQnxzN79jwLgChZEJggizoIVLVGRJ7H+VCPB15V1V0i8nOgWFULgP9HROYANcBZ4Fn3sWdF5L/ghAnAz8MDx+bWRA4IAxw50p+cnAWUlfWgQ4dKMjMLuPPOzxAROznMJxYEJsh8GSNQ1TXAmoht/+i5/RMa+aavqq8Cr/pRh/n6QnEAqrB16wOsXTuN2toE+vc/yoIFufTsec7OEPaZTR81QWZnFrcx4e6gysokCgrmsHv3XQA88MBWpk1bS2JirbUEmoFNHzVBZkHQBnjHBESEo0f7kJOzgLNne5GUVMWcOYV84xu7ALtWUHOxriETZBYEAecdE1CF4uKxFBXNpLY2gb59j7NgQQ6pqc6wi80Maj4WBCbILAgCKnJmUFVVIqtWPVm/mPz9929jxow3SU3tTEaGzQpqbhYEJsgsCAIocmbQiRO9yclZwOnTvUlMvMKTT67inntKeOmll2JcafthQWCCzIIggLwzgz7++F5Wr55FTU0ivXufZOHCHHr3Pm3XCmphFgQmyCwIAiKyK+jKlQTWrJnFjh1jAbj33o+ZNauIpKRqu1ZQDIRnDdn0URNEFgQBENkVdOpUKm+8sYBTp/qQkFDNE0+sYezYHYANCMeKtQhMkFkQtGINXSpi584xrFr1JNXVSfTqdZqFC9+gb99TNi00xiwITJBZELRSka2A6uoEiopmsH37/QCMGfMJTz65ig4dqq0V0ApYEJggsyBopbwDwqdP9yQnZwEnTvQjPr6GmTOLuP/+7XTvnsILL7wQ40oNWBCYYLMgaKXC3UGffnoXBQWzuXKlAz17nmHBghz69z9hA8KtjAWBCTILglbEOyZQU5PAm29Oo7j4AQDuuutTZs8upGPHK9YV1ApZEJggsyCIsYYGhM+e7UFOTjbHjg0gPr6G6dPX8sADxSQlJdraAa2UTR81QWZBEEMNrR2we/doVq6cQ1VVR3r0OMvChXn073/UWgGtnLUITJBZEMRI5GLyNTVxrFs3jQ8/HA/AqFGfkZm5kuTkKrtURABYEJgg8yUIRGQG8DLOCmWvqOqSiP1/C3wPZ4WyU8B3VfUrd18tUOIeelBV5/hRU2sWuZj8uXMp5OQs4OjRgcTF1TJt2jrGj/8QEexSEQFhQWCCLOogEJF44DfA48BhYKuIFKjqbs9hHwPpqnpZRH6Is3j9U+6+ClW9N9o6giKyJfD55yPJz8+ksjKZlJQyFizIYdCgowA2MyhALAhMkPnRIhgHlKrqPgARWQZkAvVBoKobPcdvAZ724XUDx9sSqK2NY/36qXzwwUMA3HHHHubOzadTp0rALhURNBYEJsj8CIKBwCHP/cPA+Osc/xxQ5LnfUUSKcbqNlqhqfkMPEpHFwGKAIUOGRFVwS4ucGVRW1o3c3GwOHx5MXFwtU6eGeOihD4iLE7KybFZQENlSlSbIWnSwWESeBtKBSZ7NQ1X1iIgMBzaISImqfhn5WFVdCiwFSE9P1xYp2AeRM4O++OJ2VqyYS0VFJ7p1K2fBglwGDz5s1woKOFu83gSZH0FwBBjsuT/I3XYVEZkK/BSYpKpV4e2qesT9uU9ENgFjgWuCIIi84wG1tXFs2DCF996bCMCIEXvJylpB584Vtph8G2BdQybI/AiCrcDtIjIMJwAWAd/yHiAiY4HfAzNU9aRnew/gsqpWiUgq8DDOQHJgNXSC2PnzXcnNnc/Bg0MRqeOxxzbw8MPvERdni8m3FRYEJsiiDgJVrRGR54G1ONNHX1XVXSLyc6BYVQuA/w50AXJEBL6eJjoa+L2I1AFxOGMEuxt8oQBo6ASx0tLbWL48i8uXO9O163mys/MYOvQgYAPCbUl8vPOzrs75Ly4utvUYczMkPI0xSNLT07W4uDjWZVwlclpoba2wadNk3nnnEUC47bZSsrJW0KXLZWsFtFFJSU6LoLISOnSIdTXGXEtEtqlqeuR2O7PYB5EniF240IXc3Pl89VUaInVMnryRRx55h7g4bDygDUtMdIKgutqCwASLBUGUIlsC+/YNIy9vHpcudaFLlwvMn7+cYcMOADYe0NYlJcHlyzZOYILHgiAK3pZAXZ3w9tuPsmnTJEBIS9vP/Pl5dO16CbDxgPbAppCaoLIguAWRM4MuXuxMXt489u8fDiiTJm1m0qTNxMdjJ4i1IzZzyASVBcFNKCkpoaioiIqKivptBw4MJTd3PhcvdqVTp0vMn7+c227bZ91A7ZAFgQkqC4ImipwaWlcH7777CBs3TkY1jqFDDzB/fh7dul20AeF2yoLABJUFQRN5F5O/dKkTy5dn8eWXIwB45JF3mDx5I/Hxai2BdsyCwASVBUEThccDvvpqMLm52Vy40I3k5MvMm7ec2293rohhA8LtmwWBCSoLgibq2jWFoqK7CIUyUI1j8OCDZGfnkpJywVoBBrArkJrgsiBogjNnYOXK7/L2290AePjh93jssQ3Ex9eRnJzMzJkzLQSMTR81gWVBEME7NTQlJYXU1Cf5h38YwaFD3ejWrYaFC1czaNAO6wYy17CuIRNUFgQe3plBqlBUNJr164dRVwfjx8PrrycwdGgmzgJsxlzNgsAElQWBR3hmUEVFR/LzM9mzZxQAkyZt56237qvvAzamIRYEJqjadRBEdgOVl5dz5MgAcnKyKSvrQYcOlcydm8/o0XtISrov1uWaVs6CwARVuw2CyBPEysrK+eijcaxdO426ungGDDjCggW59OhRRkpKSoyrNUFgs4ZMUPmyfIaIzBCRPSJSKiIvNrC/g4i87u7/UETSPPt+4m7fIyLT/ajnRsJXDA2HQGVlB954YwFFRTOpq4tn3LgP+e53/0CPHmUkJiaSkZHREmWZgLMWgQmqqFsEIhIP/AZ4HDgMbBWRgoiVxp4DzqnqCBFZBPwT8JSI3ImztOVdwABgvYjcoaq10dbVmMi1A44e7UdOzgLOnetJUlIVmZkFTJhwhPLyWpsZZG6KTR81forsum7OzyI/uobGAaWqug9ARJbhTKvxBkEm8DP3di7wa3HWrMwElrmL2e8XkVL3+T7woa4GhQeEVaG4OJ0335xObW0C/fodY8GCHIYPr+OFF15orpc3bZi1CIxfwl9YKytr+Pjj+7nvvu0UFhYCNEsY+BEEA4FDnvuHgfGNHeOucVwO9HK3b4l47EAfampUeXk5VVVJFBTMZteubwCQnl7M9Olv0qlTHBkZs5vz5U0bZkFg/BDuur50qSM5OYvYv38458515/HHQ4RCoVYbBC1CRBYDiwGGDBlyy8+TkpLCgQNCaekIkpKqmD17FWPGfOpeMTTTuoHMLbMgMNEKtwSOH09l2bJFnDvXk86dL3LHHV8AX1/zzG9+BMERYLDn/iB3W0PHHBaRBCAFONPExwKgqkuBpeAsXn+rxWZkZFBYWMiCBTl0715OauoZu1aQ8YUFgYlWKBTik09uY/nyLKqrk+jf/yiLFr1OSsp5gGabwehHEGwFbheRYTgf4ouAb0UcUwA8g9P3nw1sUFUVkQLg/xOR/4UzWHw78JEPNTUq/GHfqVPLDMKY9sOmj5po1NXBypX3smnTZADGjPmE2bMLSUqqAWjWGYxRB4Hb5/88sBaIB15V1V0i8nOgWFULgH8F/uQOBp/FCQvc497AGViuAX7UnDOGwsaMGWMf/MZ31iIwt+rCBfjOd3BDQHn88fVMmPA+Is7+5l7sypcxAlVdA6yJ2PaPntuVwIJGHvtL4Jd+1GFMLNn0UXMrvvwSMjNh1y7o2rWWefNyGDZsT/3+lui6DsxgsTGtnbUIzM1avx4WLoRz52DUKFi5Mp6qqrsIhY63aNe1BYExPrEgMDcSPkmsrKycnTsnU1DwKHV1wpNPwr//O3TrBtDyXdcWBMb4xILAXE94auilS0phYRYlJXcD8Nd/fZLf/a4Pcb5c8OfWWBAY4xObNWSuJxQKcfJkJ15//SmOH+9PYuIV5s5dyZ13HiEuLrZXM7AgMMYn1iIw17N9e09yc7OpqOhEjx5nWbRoGX37nqKZzhG7KRYExvjEgsA0RBX+5/+EP//5aVTjGDFiL/PnLyc5uRJovpPEboYFgTE+semjBq6+amjHjr3YtOlp3nyzOxDH5Mnv8uijG4iLcy6O0Fouc29BYIxPrEVgvAtenT3bg2XLFnDyZHc6darlz3+OZ8SIFEKhbq3uqgYWBMb4xIKg/fK2AgD27r2NvLz5VFYm06vXaf76r1eTlfUMsZga2hQWBMb4xIKgffK2AlTh3XcnEgo9BggjR35OVlY+HTtWxbrM67IgMMYnNn20/QmvHaCqVFUlkZ+fyWef3QnA5MkbefTRt4mLax0DwtdjQWCMT6xF0L54l709ebI3b7yxgNOne9OhQyXz5i1n5Mi9QOsZEL4eCwJjfGJB0H54WwI7d97NqlVPUF2dRO/eJ3nqqddJTT0L0KoGhK/HgsAYn9j00bYtckC4ujqeN9+cybZt9wNw9907efLJ1SQlVQdusSsLAmN8Yi2Ctss7IAxw9mx33nhjIceP9yc+voZZs4q4777tiDT/2gHNwYLAGJ9YELRN3m4ggM8/H8mKFXOpqupI9+7nWLjwDQYMOA60zNoBzSGqIBCRnsDrQBpwAFioqucijrkX+C3QDagFfqmqr7v7/ghMAsJX23hWVXdEU5MxsWJB0PZ4B4Rra+MIhTJ4//0JAIwc+Tlz5+aTnOxMDQ1iSyAs2hbBi0BIVZeIyIvu/R9HHHMZ+I6q7hWRAcA2EVmrqmXu/v+kqrlR1mFMzNn00bbF2xI4f74rubnzOXhwKCJ1TJ26ngkTPqhfSjKoLYGwaIMgE5js3n4N2EREEKjqF57bR0XkJNAbKMOYNsRaBG2HtyWwd+8IVqyYy+XLnenS5QILFuQydOjB+mODMjPoeqINgr6qesy9fRzoe72DRWQckAR86dn8SxH5RyAEvKiqDZ6CJyKLgcUAQ4YMibJsY/xnQRB83plBNTVxhELT+OCDhwAYNmwf8+cvp0uXS4gIWVlZgf7w97phEIjIeqBfA7t+6r2jqioiep3n6Q/8CXhGVevczT/BCZAkYClOa+LnDT1eVZe6x5Cent7o6xgTKzZ9NNi8M4POnOlJbu58jh0bgEgdU6ZsZOLE94iL08B3AzXkhkGgqlMb2yciJ0Skv6oecz/oTzZyXDdgNfBTVd3iee5wa6JKRP4A/N1NVW9MK2ItgmALhUJUV1ezc+fdrF49iytXOpCSUkZ2dh6DBx8Ggj0gfD3Rdg0VAM8AS9yfKyMPEJEkYAXwb5GDwp4QEWAu8GmU9RgTMxYEwePtCqqqSmL16rl88sk9ANx55y5mzy6snxXUFlsCYdEGwRLgDRF5DvgKWAggIunAD1T1e+62R4FeIvKs+7jwNNF/F5HegAA7gB9EWY8xMWNBECzerqCjR/uTmzufs2d7kZBQzcyZRdx338f1s4LawoDw9Uj4JIkgSU9P1+Li4liXYcw14uOhrg5qapzbpvXxtgLq6mDLlgdZv34qdXXx9O17nOzsPHr3Pg20vVaAiGxT1fTI7XZmsTE+SkyEqiqnVWBB0Pp4WwEXL3YiP38upaW3A/DAAx8xbdpbJCbWAm2/FeBlQWCMj7xB0LFjrKsxXt4TxPbtG8by5VlcvNiVjh0ryMxcyejRewAnAF544YUYV9uyLAiM8ZFNIW2dwi2Bmhph48YpvPvuREAYOvQA8+atICXlPBCMtQOagwWBMT6yAePWKRQKcfJkZ/Ly5nH48GBE6pg0abO7gpgzTtqeuoIiWRAY4yMLgtbBOyCckpLCe+8NpLBwNlVVHenWrZz585fXXyairQ0I3woLAmN8ZBeeiz3vgPCVKwn86U+PsH27s3jMqFGfMWdOAZ06VQJt9wSxm2VBYIyPrEUQW94B4ZMne5OTk82pU32Ij69h+vS1PPBAcZu5YqifLAiM8ZEFQeyEWwJ1dcr27WMpKppJTU0ivXqdZsGCXPr1O0FKSkp9d1F7HQ9oiAWBMT6yIIidUCjEhQvCqlXz+PRT5wP+3ns/ZtasIpKSqtvltNCmsiAwxkc2fTR2du/uRG7udzh3rieJiVd48slV3HNPCdB+p4U2lQWBMT6yFkHLCc8MKisrZ+fOyRQWPkdtbTz9+h0jOzuX1NSzgA0IN4UFgTE+sllDLSM8HlBenkB+/iK++GIkAOPHf8TUqV9fJsIGhJvGgsAYH1mLoGWEQiFKS/uTlzeP8+dT3MtEFHDffV+RlNTFBoRvkmwr318AABPqSURBVAWBMT6yIGge3hPEunbtzqpVd7Np02RU4xg06BDZ2Xl0715ORQX8/d//fazLDRwLAmN8ZEHgP+8JYhcudOG112azf/9wACZOfJcpUzYSH++sfpuSkhLLUgPLgsAYH1kQ+Mt7glhp6W0sX57F5cud6dz5IllZKxgxYl/9sTYz6NZFFQQi0hN4HUgDDgALVfVcA8fVAiXu3YOqOsfdPgxYBvQCtgHfVlWbeGcCy6aP+sd7xdANGzJ4772HARg2bB/z5i2na9dLdoKYT6JtEbwIhFR1iYi86N7/cQPHVajqvQ1s/yfgV6q6TER+BzwH/DbKmoyJGWsR+CPcEjh7tht5efPrrxg6ZcomJk58l7g4tRPEfBRtEGQCk93brwGbaDgIruEuWP8Y8C3P43+GBYEJsPD0UWsR3DzvgDDA7t2jKCiYQ2VlsnvF0DyGDj0EWDeQ36INgr6qesy9fRzo28hxHUWkGKgBlqhqPk53UJmq1rjHHAYGNvZCIrIYWAwwZMiQKMs2pnl06+b8dD/LTBN5B4Srq+N5661pbN06DoCRIz8nM7OATp0qADtBrDncMAhEZD3Qr4FdP/XeUVUVEW3kaYaq6hERGQ5sEJES4Kb+V1HVpcBScBavv5nHGtNSevVyfp49G9s6gsQ7IHz6dC9ycrI5caIfcXG1TJu2jvHjP7QrhjazGwaBqk5tbJ+InBCR/qp6TET6AycbeY4j7s99IrIJGAvkAd1FJMFtFQwCjtzC72BMq9Gzp/PTgqBpwi0BVWXHjrtZvfoJqquT6NnzDNnZeQwYcKz+WGsJNJ+4KB9fADzj3n4GWBl5gIj0EJEO7u1U4GFgt6oqsBHIvt7jjQmScIvgzJnY1hEUoVCIixdhxYpM8vOzqK5OYsyYT1i8eOlVIZCYmEhWVpaFQDOJdoxgCfCGiDwHfAUsBBCRdOAHqvo9YDTwexGpwwmeJaq62338j4FlIvIL4GPgX6Osx5iYshbBzdmzpyM5OU9z5kwqCQnVzJq1hrFjd9R3BUH7Xku4pUQVBKp6Brhm6F5Vi4HvubffBxr8F1TVfcC4aGowpjUJB4G1CK5PFX77W3jlle9RU5NAnz4nyM7OpU+f04DTDWQtgJZjZxYb4yMbLG6Yd2poUlIfNmz4FuvXpwAJPPDAx0ybtobERGcCoQ0ItzwLAmN8ZF1D1/JODT10aCC5udmUl6fQpUstr7wSz513JhAKdbYzhGPIgsAYH3Xu7JxdfPkyVFZCx46xrij2QqEQVVXVvP/+BDZseIy6ungGDDjCX/3VWp566rvAGPvgjzELAmN8JOJ0Dx0/7rQKBgyIdUWxd+RINStW/F98+eUIAB566AMyMtaTkFAX48pMmAWBMT7r2dMJgjNn2mcQeMcDTp68iz/96YdcuNCF5OTLZGXlc8cdewG7ZHRrYkFgjM/a64BxSUkJRUVFVFRUUFsrbN48mbfffhQQhg79innz8khJuQDYtYJaGwsCY3zWHgeMvQPC5eVdycubz8GDQwFl0qRNzJixlY4dEykvt/MCWiMLAmN8Eu4S+eqrScBYdu48TFbWoFiX1ey81wras+d28vPnUlHRiS5dLjB/fh7Dhn1FVRW8+OJLsS7VNMKCwBgfeL8Rh6+SuWXLF5SUnGvT33y//r3jWLfucT78cDwAI0bsJSsrn86dLwM2HtDaWRAY44NQKES1uxpNcrITBBcvdiAUCrXJIPAOCJ861Yu8vPkcP96fuLhaMjI28NBD7xPnXsnMxgNaPwsCY3xQ7lmAIDnZ+RZcUZF81fa2wDsgrAoffzyWoqIZVFcn0aPHWbKz8xg48Gj98cnJycycObNNhmFbYkFgjA/Ca+fC1y2CioqObapLxNv9VVHRgVWrnmTXrm8AcPfdO3niiTV06OAszWbXCgoWCwJjfJCRkVH/IRkOgsrKzm2qSyTc/XXo0CDy8uZRVtaDpKQqnnhiDffc80n9cXatoOCxIDDGB+EPvVAoVD9YnJDQhzFjhsayrKh4xwFSUlI4d+487777CBs3TkY1jgEDjjB/fh69ep2rf4xNDQ0mCwJjfDJmjHPNnEOH4He/g0uXkmNd0i3zdgMBHDxYx4oV3+bAgWEATJjwHo89tqH+MhHWCgg2CwJjfBb0E8q85wWoQknJGNasmUllZTKdO18kK2sFI0bsqz/eBoSDL6ogEJGewOtAGnAAWKiq5yKOmQL8yrNpFLBIVfNF5I/AJL5eyP5ZVd0RTU3GxFqnTtChg3P10YoKSA5Aw8DbDRR26VIyq1c/we7ddwFwxx17mDOnkIEDE+wM4TYm2hbBi0BIVZeIyIvu/R97D1DVjcC9UB8cpcBbnkP+k6rmRlmHMa2GiNMqOHbMufDcoFZ+cnFkNxDAnj23U1Awh0uXupCUVMWMGW8yduwOundP4YUXXohhtaY5RBsEmcBk9/ZrwCYigiBCNlCkqpejfF1jWrVevZwgOHu29QeB92S4ysok1q6dzscf3wfA0KEHmDt3JT16lNmJYW1YtEHQV1WPubePA31vcPwi4H9FbPuliPwjEAJeVNWqhh4oIouBxQBDhgy59YqNaQFBWrs43B20f38aK1fOoaysB/HxNWRkhHjwwS3ExTnnBdhgcNt1wyAQkfVAvwZ2/dR7R1VVRPQ6z9MfZxH7tZ7NP8EJkCRgKU5r4ucNPV5Vl7rHkJ6e3ujrGNMatPYBY++YQGVlMmvXTq1vBfTvf5SsrHz69DkF2Iyg9uCGQaCqUxvbJyInRKS/qh5zP+hPXuepFgIrVLW+I9LTmqgSkT8Af9fEuo1p1VrjmgQNDQjv3j2aNWtmcvFiV+Lja3j00Xd4+OF366eF2oBw+xBt11AB8AywxP258jrHfhOnBVDPEyICzAU+jbIeY1qF1tY1FDkgXF7ejaKiGXz++WgAhgz5ijlzVpGaeto+/NuhaINgCfCGiDwHfIXzrR8RSQd+oKrfc++nAYOBzRGP/3cR6Q0IsAP4QZT1GNMqtKYWgfe8gJqaeN5//yHeeecRqquTSEqq4vHH13P//cXExcFLL9maAe1RVEGgqmeAa6YRqGox8D3P/QPAwAaOeyya1zemtWoNLQLvlUIB9u69jaKimZw966TUXXd9yrRpb9UvH9mWLpBnbo6dWWxMM4jVYHFD4wCnTvVi/fqp7NkzCoDU1FPMmlXE8OH764+xqaHtmwWBMc2gf3/n57ZtcOUKJCU1/2tGjgNcuNCZzZsns23bfajGkZRUxaRJmxk//sP6wWCwAWFjQWBMsxg/HkaPhs8+gz/8Ab7//eZ9Pe84QFVVIh98MIH33ptAdXUSInXcf38xkydvpmvXi4CtF2CuZkFgTDOIj4ef/Qyeegp+8Qt49lnn+kN+844DVFUlsnXrON57bwIVFZ0AGDnyc6ZODdG79+n6x9h5ASaSBYExzSQ7G8aMgZISeOUV+NGP/HneyHEAJwAevioABg06xNSp60lLO3jVY+1KoaYhFgTGNJO4OPjP/xnmzXNaBZmZ0V93yDsOcPFiZ7ZufYCPPnrgqgCYPHkTt922D5GvH2fjAOZ6LAiMaUZz58KECfD++/DIIxAKwfDht/Zc4XGA48dT2bLlIT75ZAy1tc7/wg0FgI0DmKayIDCmGYlAYSHMnAkffQQTJ8Krr8L06Vz1jf16SkpKyM9fz/btaezc+TT794eTRBk58nMeeugDhg49eNXz2TiAuRkWBMY0s549Yf16mD0bNm92QmHiRPjhD+Hhh2HIkGtD4e23d5OT8ylffNGdffuGceDA89TUJAKQmHiFe+/dwYMPfkivXteeqGDjAOZmiWrwLuSZnp6uxcXFsS7DmJtSWQn/8i+wZMnVJ5p16wbduzsrm507d4WyMqWq6topRoMHH+Seez7hrrt2kZxcec1+GwcwNyIi21Q1/ZrtFgTGtKzz5+H//B/YuNEZOzh37tpjkpKqSE09TZ8+Jxk2bD/Dh++vPwfAy8YBzM1oLAisa8iYFtatG/zH/wjTppWwbl2IEyeuUFWV5F4E7godOlTSsWPVDccQbBzA+MWCwJhm4J3rH9llE3kxuE6doFOnipt6fhsHMH6yIDDGZ9de+7+cwsLC+v2RC8XfDBsHMM3BgsAYn3kXgw+rrq4mFArV374Z9u3fNLeogkBEFgA/A0YD49x1CBo6bgbwMhAPvKKqS9ztw4BlQC9gG/BtVb0STU3GxJr3EtBN2d4YCwDTUqJtEXwKzAN+39gBIhIP/AZ4HDgMbBWRAlXdDfwT8CtVXSYivwOeA34bZU3GxFRKSkqDH/rhhV9uFAjW/WNaWrQrlH0GzhS26xgHlKrqPvfYZUCmiHwGPAZ8yz3uNZzWhQWBCbSMjIxrxgG8C780NEZg3/5NLLXEGMFA4JDn/mFgPE53UJmq1ni2X7OcZZiILAYWAwwZMqR5KjXGB+EP88ZmDd1onzEt7YZBICLrgX4N7Pqpqq70v6SGqepSYCk4J5S11OsacyvGjBnT6If79fYZEws3DAJVnRrlaxwBBnvuD3K3nQG6i0iC2yoIbzfGGNOC4lrgNbYCt4vIMBFJAhYBBepc22IjkO0e9wzQYi0MY4wxjqiCQESyROQw8BCwWkTWutsHiMgaAPfb/vPAWuAz4A1V3eU+xY+BvxWRUpwxg3+Nph5jjDE3zy46Z4wx7URjF51ria4hY4wxrZgFgTHGtHMWBMYY085ZEBhjTDsXyMFiETkFfOXDU6UCp314Hj+1xpqgddZlNTVda6zLamoaP2saqqq9IzcGMgj8IiLFDY2gx1JrrAlaZ11WU9O1xrqspqZpiZqsa8gYY9o5CwJjjGnn2nsQLI11AQ1ojTVB66zLamq61liX1dQ0zV5Tux4jMMYYYy0CY4xp9ywIjDGmnWvzQSAiC0Rkl4jUiUijU7BEZIaI7BGRUhF50bN9mIh86G5/3b2UdrQ19RSRdSKy1/3Zo4FjpojIDs9/lSIy1933RxHZ79l3b0vU5B5X63ndAs9239+nptYlIveKyAfuv/MnIvKUZ59v71VjfyOe/R3c373UfS/SPPt+4m7fIyLTb7WGW6jpb0Vkt/u+hERkqGdfg/+WLVDTsyJyyvPa3/Pse8b9t94rIs/4VVMT6/qVp6YvRKTMs6+53qtXReSkiHzayH4Rkf/t1vyJiNzn2effe6Wqbfo/YDQwEtgEpDdyTDzwJTAcSAJ2Ane6+94AFrm3fwf80Iea/hl40b39IvBPNzi+J3AW6OTe/yOQ7fP71KSagIuNbPf9fWpqXcAdwO3u7QHAMaC7n+/V9f5GPMf838Dv3NuLgNfd23e6x3cAhrnPE99CNU3x/N38MFzT9f4tW6CmZ4FfN/J3vs/92cO93aOl6oo4/j8Arzbne+U+76PAfcCnjeyfBRQBAjwIfNgc71WbbxGo6mequucGh40DSlV1n6peAZYBmSIiwGNArnvca8BcH8rKdJ+rqc+ZDRSp6mUfXtuvmuo14/vUpLpU9QtV3evePgqcBK45ezJKDf6NXKfWXCDDfW8ygWWqWqWq+4FS9/mavSZV3ej5u9mCsxJgc2rK+9SY6cA6VT2rqueAdcCMGNX1TeAvPr12o1T1bZwveY3JBP5NHVtwVnXsj8/vVZsPgiYaCBzy3D/sbusFlKmzuI53e7T6quox9/ZxoO8Njl/EtX+Uv3Sbir8SkQ4tWFNHESkWkS3hriqa7326mboAEJFxON/4vvRs9uO9auxvpMFj3PeiHOe9acpjm6smr+dwvl2GNfRv2VI1zXf/TXJFJLyUbXO9Tzf13G732TBgg2dzc7xXTdFY3b6+VzdcszgIRGQ90K+BXT9V1Zgsf3m9mrx3VFVFpNE5vG76j8FZ4S3sJzgfikk4c4x/DPy8hWoaqqpHRGQ4sEFESnA+8G6Zz+/Vn4BnVLXO3XxL71VbIyJPA+nAJM/ma/4tVfXLhp/BV4XAX1S1SkS+j9OKeqwFXrepFgG5qlrr2Rar96pFtIkgUNWpUT7FEWCw5/4gd9sZnKZYgvsNL7w9qppE5ISI9FfVY+6H18nrPNVCYIWqVnueO/wNuUpE/gD8XUvVpKpH3J/7RGQTMBbI4xbfJ7/qEpFuwGqc8N/iee5beq8a0NjfSEPHHBaRBCAF52+oKY9trpoQkak4oTpJVavC2xv5t4z2w+2GNanqGc/dV3DGgcKPnRzx2E1R1tPkujwWAT/ybmim96opGqvb1/fKuoYcW4HbxZn5koTzh1CgzqjMRpw+eoBnAD9aGAXuczXlOa/pq3Q/EMN983OBBmcc+F2TiPQId62ISCrwMLC7Gd+nptaVBKzA6UvNjdjn13vV4N/IdWrNBja4700BsEicWUXDgNuBj26xjpuqSUTGAr8H5qjqSc/2Bv8tW6im/p67c3DWMgen1TvNra0HMI2rW8LNWpdb2yicwdcPPNua671qigLgO+7soQeBcvfLjb/vVXOMhLem/4AsnP6zKuAEsNbdPgBY4zluFvAFTsr/1LN9OM7/tKVADtDBh5p6ASFgL7Ae6OluTwde8RyXhpP8cRGP3wCU4Hyo/Rno0hI1ARPc193p/nyuOd+nm6jraaAa2OH5716/36uG/kZwupnmuLc7ur97qfteDPc89qfu4/YAM338+75RTevdv/vw+1Jwo3/LFqjpvwG73NfeCIzyPPa77vtXCvyVXzU1pS73/s+AJRGPa8736i84s9yqcT6nngN+APzA3S/Ab9yaS/DMfPTzvbJLTBhjTDtnXUPGGNPOWRAYY0w7Z0FgjDHtnAWBMca0cxYExhjTzlkQGGNMO2dBYIwx7dz/Dz0MTKVFD3ZsAAAAAElFTkSuQmCC\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -585,7 +413,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Let's check how well the initial state was reconstructed, compared ot the (known) ground truth solution." + "Not too bad at the sides of the domain (the Dirichlet boundary conditions $u=0$ are fulfilled), but the shock at $x=0$ is not well represented.\n", + "\n", + "Let's check how well the initial state at $t=0$ was reconstructed. That's the most interesting, and toughest part of the problem (the rest basically follows from the model equation and boundary conditions, given the first state).\n", + "\n", + "And turns out, it's actually not that great, blue curve from PINN quite far away from constraits (in gray)... Solution get's better with larger number of iterations, but requires a surprisingly large number of them for a fairly simple case. The shock in the middle is not well recovered (the maximum is still much too low).\n", + "\n", + "... shown in blue, compared ot the (known) ground truth solution in gray ..." ] }, { @@ -596,7 +430,7 @@ { "data": { "text/plain": [ - "[]" + "[]" ] }, "execution_count": 9, @@ -605,7 +439,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -617,8 +451,6 @@ } ], "source": [ - "n = 128\n", - "\n", "# ground truth solution at t0\n", "t0gt = np.asarray( [ [-math.sin(np.pi * x) * 1.] for x in np.linspace(-1,1,n)] )\n", "\n", @@ -634,9 +466,10 @@ "metadata": {}, "source": [ "That's not very close...\n", + "especially the maximum / minimum at $x=\\pm 1/2$ are far off, and the boudaries at $x=\\pm 1$ are not fulfilled.\n", "\n", - "But we have the forward simulator, so we can use the $t=0$ solution of the network to \n", - "evaluate how well the temporal evoluation was reconstructed by the PINN." + "We have the forward simulator for this simulation, so we can use the $t=0$ solution of the network to \n", + "evaluate how well the temporal evoluation was reconstructed by the PINN. This measures how well the temporal evolution of the model equation was captured via the soft constraints of the PINN loss." ] }, { @@ -654,7 +487,7 @@ { "data": { "text/plain": [ - "[]" + "[]" ] }, "execution_count": 10, @@ -663,7 +496,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD6CAYAAACs/ECRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nOydd3hU1daH352eUENHkOZFKYqUiNQE7PdeP7ELlosVexcFpWMBbNd2VazYQK8VvdghCR1CB5FeQ+9I6szs7491AkNIn5MyYb3Pk2dmn7PPPmtOZs7v7L32XstYa1EURVFOXkLK2wBFURSlfFEhUBRFOclRIVAURTnJUSFQFEU5yVEhUBRFOclRIVAURTnJcUUIjDHvG2N2GWOW57PfGGNeNcasNcYsNcZ09NvX3xizxvnr74Y9iqIoStExbqwjMMbEA38BH1lrz8xj/z+A+4F/AOcCr1hrzzXG1AJSgDjAAguATtba/QWdr06dOrZZs2YB260oinIysWDBgj3W2rq5t4e50bi1NtkY06yAKn0QkbDAHGNMTWNMQ6AX8Ku1dh+AMeZX4BJgYkHna9asGSkpKW6YriiKctJgjNmU1/ay8hE0Arb4lbc62/LbriiKopQRQeMsNsYMMMakGGNSdu/eXd7mKIqiVBrKSghSgVP9yo2dbfltPwFr7XhrbZy1Nq5u3ROGuBRFUZQSUlZCMBn4lzN7qAtw0Fq7HfgZuMgYE2uMiQUucrYpiqIoZYQrzmJjzETE8VvHGLMVGA6EA1hr3wKmIDOG1gJpwC3Ovn3GmNHAfKepUTmOY0VRFKVscGvWUL9C9lvg3nz2vQ+874YdiqIoSvEJGmexoiiKUjq40iNQlGDmwAGYMweWLIE//oD9+yEtDaKioEULOOMMuPxyaKQTm5VKigqBclKycyd88glMngwzZ4LXW3D9Bx6ASy6Bxx+HhISysVFRygoVAuWkwVpIToZXXoHvvwePR7aHhkL37tCxI5x1FtStC1WqwF9/wbp10luYPBmmTIEffxQxGD0awsPL9/MoiluoECiVHmvhp5/g6adh1izZFhoKl10GN9wAF10ENWsW3MaePSIgzz4LY8dCYqK0WdhxihIMqLNYqdQsWADnnw//+IeIQK1aMGIEbNkC330H115btJt5nTrSC0hOhiZNYO5cuPVWERlFCXZUCJRKycGDcM89EBcH06ZBbCyMGwebNsHw4dCwYcna7d5d2qtRA775Bl591V27FaU8UCFQKh3ffQdt28Kbb0JYGDz6qIz1DxwIVasG3n6LFvC+s/Jl4ECYP7/g+opS0VEhUCoNO3bANdfIVM/UVDj3XFi4EF54QXoEbnLllXDvvZCdrb0CJfhRIVAqBV9/DW3awJdfyoyfV16RaaFnnVV657zqKnndsKH0zqEoZYHOGlKCmrQ0ePhhGD9eyhdfDG+/DU2blv65c86xeXPpn0tRShMVAiVoWbIE+vWDlSshIkKGgO67D4wpm/M3aiTnSk2VNQlh+mtSghQdGlKCDmvhtdfEB7ByJbRqBfPmwf33l50IHAZeioTQJeC7FLZtK5vzKkppoEKgBBW7d8tCsAcegMxMGDBA1gqcfXbZnD8TeB5oBjwJeM4C7pdpqYoSrKgQKEHD77/LDf+HH2QR2H//K/6AmJjSP7cFvgRaA48D+4BzcnbGwSb1EyhBjAqBUuHJzoZBg+DCC2H7dujZU/wDV19dNudPARKAa4ANQFvgJ2AuUOUQUBMWHy4bWxSlNFAhUCo0q1dDt24S38cYCQ8xdaqEeShttgL9kSf/6UAd4E1gMXAxYIBme6XuEg1ApwQxOs9BqZBYC++8I1ND09Lkxv/pp9CjR+mf+wjiBxgHpAMRwIPAU0CNXHXbZcAKYJ0Gn1OCGFd6BMaYS4wxq4wxa40xg/LY/7IxZrHzt9oYc8Bvn9dv32Q37FGCm127oE8fuPNOEYEbbpChoNIWAR8wATgdGImIwFXAH4go5BYBgK4R8rqzDHooilJaBNwjMMaEAm8AFyK96fnGmMnW2j9y6lhrH/arfz/Qwa+JdGtt+0DtUCoHU6bALbeIGNSoIfGC+hWYEdsdEoFHgYVOOQ54EYgv5LgLa8lrWivwWAgro+mriuImbvQIOgNrrbXrrbVZwCSgTwH1+wETXTivUolIS5PYPf/8p4hAQgIsXVr6IrAGuALojYhAY+BjxBFcmAgAnFETzBagGixQh7ESpLghBI2ALX7lrc62EzDGNAWaA1P9NkcZY1KMMXOMMZe7YI8SZCxcCJ06wX/+I1m/xo6VqaKl6RDeBzwMtAG+BWKAUcAq4EaK/sMwBqr+Ke9/O1BwXUWpqJS1s7gv8KW11j9DbFNrbaoxpgUw1RizzFq7LveBxpgBwACAJmUxZUQpdbxeCQsxdKhMEW3dWhzCHToUfmxJyQb+g/gA9iMzf24FRgOnlLDNBqmy0niuxxUTFaXMcaNHkAqc6ldu7GzLi77kGhay1qY6r+uRodo8bwPW2vHW2jhrbVzdunUDtVkpZzZvlsxhgwaJCNx3H6SklJ4IWGAycCbwECICOcNB71FyEQBo6fQElkcHZKKilBtuCMF8oKUxprkxJgK52Z8w+8cY0wqIBWb7bYs1xkQ67+sA3ZFJGkol5rPPoF07SEqC+vXFQfzaa6W3QngRcD7iuFqNzAqaDPwOuDFLob1PXrfUAW/BVRWlQhKwEFhrPcB9wM/ASuALa+0KY8woY8xlflX7ApOsPS7La2sgxRizBJgGjPGfbaRULg4ckKmgN9wgqST79IFly+Dvfy+d821Dhn06IV+uWsCrwHLg/5BhITdoXQ9IB0+4xCJSlGDDFR+BtXYKMCXXtmG5yiPyOG4WUIqpQ5SKQlIS3HSTJI2PiYF//xtuv710ooWmAS8AY5334cD9wBCkSxpw+3vTWDNlDVtmbmHPn3uo2ScesltAtPggFCXY0JXFSqmSlQXDhknieGvhnHPEIdyypfvn8gGfAoM55qS6AhEEN053ePthZr0wiwVvLSA77dgt3xc5H/7VAlAhUIITFQKl1FizRtYBLFgAISEwZIjMEAovhbg8ycAjwAKn3BF4CQkWFygHNh5g5riZLHp/Ed5M8QI0P785dVrVYf4b88ncsf+oAqR70F+VEnToV1ZxHWthwgSZCXTkCDRrBp98At27u3+u9cBA4GunfArwHMVbC5Afe1fvZcZzM1j6yVJ8HvEIt76qNT2f7EnDjg1J35fO/Dfmc2DDfky2xWI4koX+qpSgQ7+yiqscPAh33QWTJkm5b1946y0JF+EmfwHPImEgspAFYU8gYSKqBNj2rhW7mP70dJZ/vhwsmBBDuxvb0WNwD+q2OTZ1OSo2isgakWQezCRmZxpHTq0iPQJFCTJUCBTXmD0brr8eNm6EKlXgjTfgX/9y1yFsgc+Q5DA52SFvQnoBeS5nLwY7l+0keVQyf3wpE9dCwkNof3N7uj/RnVqn1TqhvjGG2Bax7Fi0g1ob93MkToVACU5UCJSA8XrhueckV4DXK+EiPvsMTj/d3fMsBB4AZjrlOOA1oEuA7e5YvIPk0cms/HolAKERoXS8oyPdn+hOjVML7srkCEHspv1soTEZupBACUJUCJSA2LFDegHTpkl54EB4+mmIiHDvHLuQXADvIT2CesAYJGlMIH6AbQu2kTw6mVXfrQIgLCqMjgM60v3x7lRvVL1IbcS2kAmptTbtB9AegRKUqBAoJSYxUWYF7dghK4Q/+gguusi99rOR+OYjgIPIl/VBYCh55wYoKqnzU0kelczqH1YDEBYdRtxdcXQb2I1qDasVq60cIai5RYRAewRKMKJCoBQbnw/GjJGpoD6fhIyeOBEaNnTvHL8gMYFWOuVLgH8DZwTQ5ta5W0kamcTaH9cCEB4TTtzdcXR7rBtVG1QtUZs5QhC7RQIOqRAowYgKgVIs9u6VFcI//ijlJ5+EkSMhzKVv0gYkPPR3TvlvwMvAPyl5SIgts7aQNDKJdb9IUNvwKuGcc+85dHu0G1XqBTbH6GiPIFV7BErwokKgFJk5c+DaayVMRK1asjbArThBWchU0NFIisiqSEiIh4DIEra5afomkkYmseH3DQBEVI2g8/2d6fpIV2LquBPhrkbTGpgQQ/WdBwnN8pLhDXWlXUUpS1QIlEKxVqKDPvooeDzQpQt8/rl7iWOSgLs5NgzUD4kVVNLQ0JuSN5E4PJGNiRsBiKweSecHOtP14a5E13I3VnRoeCg1mtTgwMYD1Nx4gExb29X2FaUsUCFQCiQ9HQYMkKd/gIcekgxibswK2o2sCp7glFsiSWMuKGF7W+dsZdrQaaz/bT0AkTUi6fJQF8598FyiY0svWUBsi1gObDxA7Pr9ZDZVIVCCDxUCJV82b4YrrpBUkjEx8OGHcM01gbfrA95HFoXtByKAJ5GVwVElaG/7ou0kDks8OgsosnokXR7pQpcHuxBVsyQtFo+aLWrCVEQITi28vqJUNFQIlDxJTJSb/p490KIFfPstnOVCwPClwF0cy050ITJFtCTRQXet2EXi8ERWfiWDSuFVwjn3wXPp9mg314eACuLozKH1+8nsWWanVRTXUCFQjsNaePVV8Qd4vbIuYOJEcQ4Hwl9InuCXkSxeDZz311H82UB71+wlaUQSyyYuAysLweLuiaPHEz0CngVUEo4TAl+Zn15RAkaFQDlKejrceSd8/LGUn3gCnnkGQgOcCPMdkhhmC3LTvw94muIvCjuw8QBJo5NYMmEJ1msJCQ+h04BO9HyyJ9VOKd5CMDfxF4IsFQIlCFEhUADxB1x5peQOiImBDz6QqaKBsAkRgO+dckfgbSRGUHE4lHqI6c9MZ+G7C/Fl+zChhg63dyB+SDw1m9YMzEgX8BeC3T6Le0kwFaVscEUIjDGXAK8AocC71toxufbfDDzPscRRr1tr33X29UemjAM8ba2dgFKmJCbKTX/3bmjeXPwB7dqVvL1sZNhnJJIqshrwDHAP8gUpKn/t/IsZY2aQ8maKJIQx0O7GdiQMT6DW3wIcq3KR6FrReMNCiTycRXaGB0mOqSjBQ8BCYIwJRfx9FwJbgfnGmMl5JKH/3Fp7X65jawHDkYdECyxwjt0fqF1K4eSsD3jkEff8ATMQZ/AKp3wdkimsOGsC0vamMeuFWcx7dd7RlJBtrmlDrxG9jssHUFEwxuALDyXU48WT5UWFQAk23OgRdAbWWmvXAxhjJgF9gNxCkBcXA79aa/c5x/6KhJWZ6IJdSgGkp0sCmY8+kvLjj8Ozz5bcH7AHmf75vlM+DVkTUJwYdBkHM5jz8hxmvzSbrMNZAJz+f6fTe1RvGrRvUDLDyghfeBikZ5GdrTEmlODDDSFohPgBc9gKnJtHvauMMfHAauBha+2WfI7NM7+IMWYAMACgiVtLWk9StmyR9QE5/oD334frritZWz5kQdhAYC+yJmCQ81fUCZxZf2Ux97W5zHp+Fhn7MwA47aLT6D26N406B5pupmzwhYuCerI0DrUSfJSVs/h7YKK1NtMYcydy7zivOA1Ya8cD4wHi4uKs+yaeHCQlyfqAHH/AN9/A2WeXrK3lSGiIGU75PKQXUNQIodnp2aS8lcKM52aQtjsNgKbxTen9dG+a9mxaMqPKCRsmQuDN0h6BEny4IQSpgP96ysYccwoDYK3d61d8Fxjnd2yvXMcmumCTkgtr4fXX4eGHxR9w4YXiD6hdgogIR5DgcC8CHiRRzMtIjKCizJfxZHpY9N4ipj8zncPbDgPQuEtjeo/uTfPzm2PczG1ZRvjC5aekQqAEI24IwXygpTGmOXJj7wtc71/BGNPQWrvdKV7GsfhiPwPPGmNinfJFwGAXbFL8yMgQf8AEZz7WwIHiDyhJ6OgfkHUAm5Cb/t3IjKDYgg5y8GZ7WfLREpJHJ3Nw00EAGnRoQO/RvWn5j5ZBKQA5HO0ReFQIlOAjYCGw1nqMMfchN/VQ4H1r7QpjzCggxVo7GXjAGHMZ8gC5D7jZOXafMWY0IiYAo3Icx4o7bNki6wNSUiA6WvwBffsWv53NSHawb51ye2RNQOciHOvz+lg+aTlJI5LYt1b+vXXb1qX3qN60urwVJiR4BeAojo/AZquPQAk+XPERWGunAFNybRvm934w+TzpW2vf59hkE8VFkpPh6qvFH9CsmawPKK4/IBt4FZnjewTJE/A0cC+Ff3msz7Ly65UkDk9k9x+7AajVsha9RvSi7XVtCQkNJONwxSKnR+DToSElCNGVxZUQa+GNN8Qf4PHABRfApEnF9wfMQtYELHPK1yC+gMLm8VhrWf3DahKHJbJj8Q4AajarSfyweM6+6WxCwiqPABzF8RFYHRpSghAVgkpGRgbcfbeEjAZ47DF47rni+QP2IdM/33HKzZEVg4UlI7PWsv7X9UwbOo3UeTJfoNop1YgfGk+HWzsQGlF5s3cZHRpSghgVgkpEbn/Ae+9Bv35FP94CHwGPIQvEwpGcAU9R+JqATcmbmDpkKpunbwagSr0q9Bjcg053diI8+iRYaZsjBNojUIIQFYJKQnKyrA/YtUv8Ad98A+3bF/34lcgMoCSn3AtZE9C6kOO2znWygv0qWcGia0XT7fFudL6vMxFVXEhjFiQYZ2gIXVmsBCEqBEGOtfCf/0gKSY8Hzj9f8gkX1R+Qhjh/X0Acw3WR9QE3UvCagLyygnV9tCtdHupCZPWSppsPXkKcHgHaI1CCEBWCICYjA+65R0JGgySTGTOm6P6AKcjsn41O+U7gWaCgmHMVJStYRSPHR2DUR6AEISoEQcrWreIPmD9f/AHvvgvXX1/4cSABnR4CvnLK7YC3gK4FHLN3zV6SRiax7LOKkRWsohGa0yPwao9ACT5UCIKQ6dNlfcCuXdC0qawPKIo/wAO8BgxDUkdWAUYBD5D/F6GiZgWraIRE5PQIVAiU4EOFIIiwFt58Ex58UPwB550n/oA6dQo/di4y9LPEKV8J/Jvjg0T5U9GzglU0cqbGGvURKEGICkGQkJEB994rISJAksmMHVu4P2A/8CQSDsICzYDXgX/mUz9YsoJVNEIjwvABIeojUIIQFYIgIDVV/AHz5hXdH2CBT4FHgV3IP3ogkhM0Jo/66fvSmfn8zKDJClbRCIsIJQvtESjBiQpBBWfGDPEH7Nwp/oBvvoEOHQo+5k8kP/A0pxyPrAlom0fdnKxgc16eQ+ahTCB4soJVJMIdIQhRH4EShKgQVFBy+wN694YvvijYH5COTP8ci6wJqIOsD/gXJ64JyDqSxbzX5jFz3MygzQpWkQiLlJ9SiEeHhpTgQ4WgApLbH/DwwzBuXMH+gJ+RXsB6p3w7MAbIva6sMmUFq0hEOM7iEB0aUoIQFYIKhr8/ICpK/AE33JB//W3Aw8AXTvks4E2ge6563iwvC99deFxWsEbnNuK8p88L2qxgFYmIKBGCUB0aUoIQFYIKRHH8AV4kIugQ4DDiAB6JJI/xD/Hm8/hY8tESkkYlVbqsYBUJ7REowYwKQQWguOsD5iN5AhY65cuBV4AmfnWOZgUbmcS+NU5WsDZ16T26EmUFq0BERstPKVQT0yhBiCtCYIy5BLkXhQLvWmvH5Nr/CDJs7QF2A7daazc5+7wcy32y2Vp7mRs2BQvF8QccQEJCv4lMD22CrBT2v2DWZ1n5zUoSh/llBftbLXqNrHxZwSoSUTlDQ9ojUIKQgIXAGBOKjFJciISxmW+MmWyt/cOv2iIgzlqbZoy5GxgHXOfsS7fWFiNgcuWhqP4AC0xCfAE7kX/ao8BQJEwESFKYNVPWMG3oNHYskqxgNZrWIGF4QuXNClaBOCoEWTprSAk+3OgRdAbWWmvXAxhjJgF9gKNCYK2d5ld/DhLl+KSmqP6ANchsoN+ccg+kR3CmU7bWsuH3DUwdMpXUuceygvUc0pOOt3Ws1FnBKhLROUND6ixWghA3hKARsMWvvBU4t4D6twE/+pWjjDEpyLDRGGvtty7YVGEpqj8gA5n++RyQhYSGfh64Gch5tt80fRPThk5jU9ImAGLqxtDzyZ4nT1awCkS036whS8G5HBSlolGmzmJjzI1AHJDgt7mptTbVGNMCmGqMWWatXZfHsQOAAQBNmjTJvTsoKKo/4FekF7DWKd+KLBLL0YrUealMGzqNdb/IZYqKjaL7490lK1jVkycrWEUiOkaEICzTgxedhaEEF258X1M5PohlY2fbcRhjLkB8nQnW2syc7dbaVOd1vTEmEegAnCAE1trxwHiAuLg464LdZUpR/AE7gEeAiU65LTIM1DNn/5IdJA5LZNXkVQBEVIs4mhUsqkZUmXwOJW8iYnJ8BF6yUSFQggs3vq/zgZbGmOaIAPQFjguJZozpgATAvMRau8tveyyQZq3NNMbUQdZBjXPBpgpFYf4AL5IY5kngEJIofjjiHI4Adq/cTeLwRP74r7hdwmPC6fxAZ7o91o2Y2nmFkFPKmqgYx0eQKUJw8uZqU4KRgIXAWusxxtyHRDkIBd631q4wxowCUqy1k5Hh7arAf50FTDnTRFsDbxtjfMjQ95hcs42CmqL4AxYgawJSnPKlyJTQZsC+dfskK9iny7A+S2hkKOfccw7dn+hO1fpVy/jTKAURWeX4HoGiBBOu9GCttVOQFLj+24b5vb8gn+NmIVERKh2F+QMOItM/3wB8yNjaq8h0q0ObDzJ5dBKLP1h8LCvYnZ3o+VRPqjeqXg6fRimMHCEIy/SoEChBhw5llgIF+QMsEhfoYWA70oV6DBkKstsP8+Oz01k4fiHeLC8m1ND+lvbED40ntnlsOX0apShE+K0szszp3ypKkKBC4DIF+QPWAvcCvzh1uyK+gdN2H2Hm2JnMf2M+ngwPGDjr+rNIGJ5A7dNzxw9VKiJhkc7QUKaXtGwgsnztUZTioELgEgX5AzKR6Z/PIu9jEY94v/3pzH1xNj/8ew7ZR2RAofVVrek1ohf1zqxXbp9FKT6hkceGhtI9qBAoQYUKgQsU5A/4HVkTsNqp2x945lAma1+Zw2svzibzoMykbfnPlvQe1ZuGHRuWwydQAiUnhEeI15KW6YMqOjakBA8qBAGSnz9gBxIP6DOnXmvg9bRsIt+Yx6djZ5K+Nx2AFhe0oNeoXpza9dS8T6AEBcYYPBGhhGV5SUv3ok4CJZhQIQiAvPwB7TrIIrDByMygaGBohof48QuY/ex0juw8AkCTHk3oPbo3zXo1K78PoLiKN1yEID3dy/FZIRSlYqNCUALy8wdsriMO4PlOvX9me7n/g8X8MTqZ37YeAuCUc06h9+jenHbRaZoUppLhDQ8DssjI0MBzSnChQlBM8vIHDBkHI8PgdWRNQGOPjxGfLuWvkUnM2XAAgPrt6tN7dG9O/7/TVQAqKZ5wcRhnpKsQKMGFCkExyO0PeOddiLhBQkJvB0J9lse/WEGjEYlsXbUXgDqt6tBrZC/aXN1Gs4JVcnw5QpChOQmU4EKFoIjk9ge8+j/4T1uJq2F8lj7frCRhZBKHlu1iPxDbIpaEEQmcdf1ZmhXsJEGGhtChISXoUCEohNz+gF4XQ5ev4LoqkOmzdPr2T64YmYRn6U4OAdVPrU780Hja39ye0HBNCnMy4QuT/3emDg0pQYYKQQHk9gdc9QYsvxvGYGn17SquGJlE5OIdeIDqjavT48kedLi1A2GRellPRryOEGRpAnslyNA7Vj74+wMim0BcInzVzHLG96t5YEQitZy8wNVOqUaPJ3vQ8faOKgAnOTk9Ao/6CJQgQ+9ceXDUH7AXYkdB9mDL7h9Xc9fVSTRYuB2Aqg2r0mNwDzrd0YmwKL2MCvgcH0F2pvYIlOBC72B+HOcPiIcq71rq/LGGXl2TaJSyDYCqDarSfVB3Og3QvMDK8eT0CLJ1aEgJMlQIHI76A34F84mlVcSf9LxuBo3miwBUqV+F7k90J+6uOBUAJU9sjhBk6tCQElyoECD+gMv7wsLuXtoNW06PUTOp98duAGLqVaFHjgDEqAAo+ZMzNOTVHoESZJz0QpA8Ay7/2MNpFy/i/vdmEbtRVgJXObU6PQd2o+NtHVUAlCJhQ6VH4FUfgRJkuCIExphLgFeQhFvvWmvH5NofCXwEdAL2AtdZazc6+wYDtyE53B+w1v7shk2FYS08+HkmC+akcOvkOVTb8RcA0afX5sJB3Wl3QztCI3QdgFJ0rLNuxJutQqAEFwELgTEmFEm9eyGwFZhvjJmcKwn9bcB+a+3fjDF9kTwt1xlj2gB9gbbAKcBvxpjTrbWl+kuanprGC6Pn0vrzeVx0IAOA8A4NuOzJnrS5opWuBFZKhuMj8GWpj0AJLtzoEXQG1lpr1wMYYyYhOdj9haAPMMJ5/yXwupHIa32ASdbaTGCDMWat095sF+w6gT9SD/GfMbOp8f4COqZJRrAjHZrQ/9metLlYo4EqgZHjLPZpj0ApJXbvhrp13W/XjUffRsAWv/JWZ1ueday1HiRUf+0iHusKK7ceYmKLV6n7+hwi0rJZf1ZLzv7gFsYtvIW2l/xNRUAJnKM9AhUCxX3eeMPS/dxNzJ7pc73toHEWG2MGAAMAmjRpUuzjIzKrs+HM5mSGR3IotjufftyQOnXctlI5mTFh8nOy2To0pLiHJ9vyUP9VZM6dwQ0bUpn49TV07d7G1XO4IQSpgH+excbOtrzqbDXGhAE1EKdxUY4FwFo7HhgPEBcXZ4tr5GmnQZ2EfoQQcjSfsKK4iuMstjo0pLiAz+Mj+aPlfDdyBnU3y3T2I3ViOLVdluvncuN2OB9oaYxpjtzE+wLX56ozGcnbPhu4GphqrbXGmMnAZ8aYlxBncUtgngs25cnLL4agI0BKaWGcoSF0aEgJAE+mh4UTlvDjczNh435qAocaVWPPnd146pGOnF4lwvVzBiwE1lqPMeY+JDR/KPC+tXaFMWYUkGKtnQy8B3zsOIP3IWKBU+8LxLHsAe4tzRlDKgJKaRIS4fyctEeglABPhoeUt1OYOm4W2dsOA7D3b7WYe013BvY/m6vPKL3p7K4MkFhrpwBTcm0b5vc+A7gmn2OfAZ5xww5FKU+O9gjUR6AUA2+2l8UfLGbq6GTSnNzmO9rVZ/qtPfBsbUPSQyHUr1e6NuhIuaK4xNFERP0brpMAACAASURBVB73Z3UolQ+f18fyictJHJHI/nX7ARGAaU/0YlXKGVw51/DJexAdXfq2qBAoikuEOD0CowvKlAKw1vLnN38ybeg0djsxzfacXptpo3rxh22Lfdgw6GZ45hMIKaO1rSoEiuISoY6PwHjUR6CciLWWtT+tZdqQaWx38pocaFqDxOEJrP772aTdHkLoT/DWW3D77WVrmwqBorhEztBQiM4aUnKxMWkj04ZMY/OMzQCkNazKtCHxLLqtI3W+DiXtb1A9FL78ES68sOztUyFQFJcIc4IUao9AySF1XipTh0xl/a/rAfDUjmbqoB7Mv+ccTgsJp961sG0yNG0K//sftG1bPnaqECiKS4Q5Q0MhOmvopGfn0p1MGzqNVZNXAWCqRzLr0a4kPtSF0OqR3LIaJnWFQ/vgnHNg8mRo0KD87FUhUBSXCI/QoaGTnb2r95I4PJHlny8HC6Ex4ax7oDOfD+xOeq1o/g50/RhG3gJeL1x5JXz8McTElK/dKgSK4hIROUKgQ0MnHQc2HSBpVBJLJizBei2hEaF47urEi4N7cqBBVeoB73ph9sMw7DU55sknYfTospsZVBAqBIriEuERoXiAEJ0+etJwePthpj87nQVvL8CX7cOEGhre3oG3hiawqEkNAO4AnjoId14HP/8MERHw7rtw003la7s/KgSK4hKRkWF4gFANMVHpSdubxsyxM5n3+jw86R4wcPr1Z5E0IoHhLWsDcAYSJbPxevjH/8Eff0CdOvDNN9CjR7mafwIqBIriEhERoRwBQlQIKi0ZBzOY8/IcZr80m6zDEgW01RWtyBjVm4fOrMcuIAJ4EhgEzJ8B514Be/ZAmzbwww/QvHk5foB8UCFQFJeIihIfgfYIKh9ZR7KY9/o8Zo2bRfq+dABOu/g0znj6PIbFncJPTr144G2gFfDRR3DHHZCVBZdcApMmQY0a5fQBCkGFQFFcIipafk6h6iOoNHgyPSwYv4Dpz0znyM4jADTp2YT4Z87jy55NGQCkAzWBF4BbAHzw5BB47jlp44EH4MUXK3YOlApsmqIEF1GRTo9Ap48GPT6Pj8UTFpM8KpmDmw8CcErcKfR+uje7LjqNK4xhmVP3euAloD5w6BDceCN8/z2EhsKrr8I995TThygGKgSK4hIx0SoEwY71WZZPWk7i8ET2rd0HQL0z69F7dG/q9zmDJ43hbcACLYA3gYucY1evhssvh5UrITYWPv+8fMJFlAQVAkVxiagImRAe6vFhfRYTopmQggVrLau+W8W0odPYtXwXALX+VoteI3vR5rq2fBkawkPADuSm+TgwBMiJEP3TT9C3Lxw8KGEivvtO0uMGCyoEiuISMeEGT2QoYZlevFlewqL051XRsdayZsoaEocnsn2BRAStfmp1EoYlcHb/s9kcHsqlcNQZ3B1xBrc9ejw8/zwMGiTvr7gCJkyAatXK/rMEgn5TFcUlosPAGyFC4Mn0qBBUYKy1rPtlHYnDEkmdlwpA1QZV6TG4B53u7ISNDOMFYCTHnMHjgNuAnIXAaWkSLnriRCmPHAlDhlSMlcLFJaBvqjGmFvA50AzYCFxrrd2fq057ZCitOuAFnrHWfu7s+xBIAA461W+21i4OxCZFKS+iw8ATGUbk4Sy86ieokFhr2TB1A4nDEtkyawsAMXVj6DGoB3F3xREeE85s4E7I0xmcw+bN4g9YtAiqVpV4QZdfXqYfxVUCfWQZBPxurR1jjBnklJ/IVScN+Je1do0x5hRggTHmZ2vtAWf/QGvtlwHaoSjlTlS49AgAsjK9VClne5Tj2Zi0kcRhiWxK3gRAdO1ouj/enXPuPYeIKhEcQBaCvUXezuAcpk+Hq66C3bvFD/Ddd+UXPtotAhWCPkAv5/0EIJFcQmCtXe33fpsxZhdQFziAolQiIvyEIFN7BBWGzTM3kzgskQ1TNwAQFRtFt8e60fn+zkRWi8QCnwGPkr8zGMQH8Oab8OCD4PHIjKBJk6BWrTL+QKVAoEJQ31q73Xm/g+N7TydgjOmMrMBe57f5GWPMMOB3YJC1NjNAmxSlXAgPB4+TkyAjUxeVlTdb52wlcXgi636R201kjUi6PtKVcx88l6gaUQCsAO5DnmABuiHxgXI/4B85AnfeCZ9+KuVHH4UxYyr2IrHiUOjHMMb8BuSVMuEp/4K11hpjbAHtNAQ+Bvpba33O5sGIgEQg1/8JYFQ+xw8ABgA0adKkMLMVpcwJCwNvuPYIypttKdtIHJ7ImilrAIioFkGXh7rQ5eEuRMfKM/5h5Ebzb8AD1AHGAjdzzBmcw6pVMhS0YoXkDXj3XejXr4w+TBlRqBBYay/Ib58xZqcxpqG1drtzo9+VT73qwP+Ap6y1c/zazulNZBpjPgAeK8CO8YhYEBcXl6/gKEp5Ee4/NJSpQlDWbF+0naQRSUezgoVXCefcB86l66NdiaktmV8s8AXwCLANMMDdwNNAXiM8X30Ft9wChw9Dq1ZSbtOmLD5N2RJox2Yy0B8Y47x+l7uCMSYC+Ab4KLdT2E9EDHA5sDxAexSl3AgPB2+Y4yzWHkGZsXPZTpJGJLHy65UAhEWH0fm+znQb2I0qdY+57P9EhoF+d8qdgTeAuDzazM6WtQEvvSTla6+VnkCwrQ8oKoEKwRjgC2PMbcAm4FoAY0wccJe19nZnWzxQ2xhzs3NczjTRT40xdRFhXgzcFaA9ilJuhIeDJ1x+UpkZ6iMobXb/sZukkUms+GIFAGFRYcTdHUf3J7pTtX7Vo/WOAKORKaDZyJP/GI5fE+DPtm1w3XUwY4YM973wggSOM5V4oXhAQmCt3Qucn8f2FOB25/0nwCf5HH9eIOdXlIpESMixHkFmuvYISos9q/aQPCqZZROXSV7giFA63dmJHoN6UO2UY4/sFvgaeBjYgjxt3gE8B9TOp+2kJBGBnTvhlFPgv/+Fbt1K+QNVACqJz1tRKgY5zuKMDBUCt9m3dh/Jo5NZ+slSrM8SEh5Cxzs60nNwT6o3rn5c3dXA/cAvTrkTMgx0bj5t54SKePJJSSrfu7dMDa1Xr9Q+ToVChUBRXMTrzCfMSNOhIbfYv2E/yU8nH00MHxIWQofbO9DzyZ7UbFrzuLppwLPA80AWEOuU7wBC82n/4EG4+Wb49lspDx4Mo0ZVnqmhReEk+qiKUvocHRrSHkHAHNx8kORnkln8/mJ8HkkM3/7W9sQPiSe2eexxdS0yU+UhxFkJcCviC6hbwDmWLpWpoWvXSvawjz+G//u/0vg0FRsVAkVxERWCwDm09RDTn5vOwncW4sv2YUIM7W5qR/zQeGq3PHF0fx3wADDFKbcH/gN0LeQ8EybA3XdDejq0bw9ffhlcoaPdRIVAUVzEF5rjLNahoeJyePthZoyZwYK3F+DN9IKBs64/i/hh8dQ5o84J9dORJ/6xQCZQA1kPcBcF39gyMiRMxPjxUr71Vnj9dYiOLuCgSo4KgaK4SFZMJADZh7PK2ZLg4a+dfzFz7ExS3kzB40y7bXttWxKGJ1C3Td4DOz8gvYANTrk/IggFxrgBNm6Eq6+GBQsgMhLeeANuu82VjxHUqBAoiotkxkgMm6wDGeVsScXnyO4jzHp+FvNen4fH6UG1vrI1CcMTqN8u71v6BuBB4HunfBYyG6hnEc43ZYrkE96/H5o3l6Ggjh0D/xyVARUCRXGR7CoiBNkHVQjyI21vGrNfnM3cV+eSfSQbgDMuO4OEEQk07NAwz2MykJlAzzrvqyGxgu6j8JuY1ytJY0aPlvKll8JHH0leYUVQIVAUF8lyegQeFYITyDiQweyXZjPn33PIcobOWv6jJQkjEmh0TqN8j/sRWROQE7L4BkQU8paM49m7F66/Hn75RRb8jR4toSOCMYtYaaJCoCgukiMEXh0aOkrmoUzmvDKH2S/OJvOgRJk/7aLT6DWyF427NM73uE3IdFBnej9tkWGghCKed8ECmRq6aRPUrSspJc8/IQ6CAioEiuIq2Y4Q+A6pEGQezmTea/OY9cIsMvbL9Wh+XnN6jexFkx75h5LPBF5EZgClA1WBEYhzOLyI537/fbjnHsjMhM6dxR9w6qkBfJhKjgqBoriIxxECexILQdaRLOa/MZ+Z42aSvjcdgCY9m9B7VG+a9WpW4LG/AfciISIArkNEIf+Bo+PJzJQAcTlTQ++8E155RWYIKfmjQqAoLpIjBBw++YQgOy2blLdSmDl2Jkd2HQGgcdfG9B7dm+bnNccUEL5zG5Ij4HOnfAYyDFSckZwtW2QoaP58ufG/+abkElAKR4VAUVzEFyVCYA5lYK0t8OZXWfBkeFgwfgEznpvBXzv+AqBR50b0GtWL0y46rcBr4AFeA4YjWcOigaGIKBTnIf7336FvX9izB5o2ha+/1qmhxUGFQFFcJIQwPJGhhGV68WR4CI8u6qh28OHJ9LDovUVMf3Y6h1MPA9CwY0N6jepFy3+0LFQEZwL3AEudch8kdWSzYthgLYwbJ1FDfT64+GLJK1w7vzjTSp6oECiKi0RmQkbNKKruPELGgYxKKQTeLC+LP1xM8tPJHNpyCID6Z9en18henHHZGYUKwG4kOfkHTrkZ0iu4tJh2HDokQz9ffy3lIUNgxAgIzS/MqJIvKgSK4iK5haBaw8qT29Cb7WXpx0tJHp3MgY0HAKjbti69Rvai9RWtMSEFC4APeAcYDOwHIhBBGIwMCRWHlSvhiisksXz16hI19LLLivuJlBxUCBTFRaIyIT1WbmsZlWQtgc/jY9lny0galcT+dfsBqNOqDgkjEmh7TdtCBQBgATIMNM8pXwi8DpxeAnv++18JFPfXX3DmmdIjaNmyBA0pRwlICIwxtRBHfzNgI3CttXZ/HvW8wDKnuNlae5mzvTkwCckctwC4yVqr0bqUoCUqS3oEEPxC4PP6WPH5CpJGJrF39V4AarWsRcLwBM7seyYhoYUvzz0ADEHCQlvgFMQPcDWSOrI4eDySNOaFF6Tcrx+88w5UqVLwcUrhBNojGAT8bq0dY4wZ5JSfyKNeurW2fR7bxwIvW2snGWPeQvJJvxmgTYpSbkRn+wnB/uAUAuuz/PHlHySOSGTPyj0AxLaIJX5YPO1uaEdIWOECYIGPgYHALiQ72EPI7KCSDJbt2iW5hBMTT56E8mVJoELQB+jlvJ8AJJK3EJyAEY/SecD1fsePQIVACWJECGTiY7D1CKzP8ue3f5I4PJFdy3cBUKNpDeKHxnP2v84mNLxoXtjlyKKwZKfcA+kRnFVCu+bMkdDRqanQoAF88QX0LEq4UaXIBCoE9a212533O8g/HHiUMSYFmTY8xlr7LTIcdMBam5PBYysFLCA0xgwABgA0aZL/8nRFKU+qW9gSZEND1lpWf7+axOGJ7Fi8A4DqjavTc0hPOtzSgdCIognAX8BIZOjHg6SIfB74F8UfBhK74K23JIlMdjZ07y7+gYZFiTanFItChcAY8xvQII9dT/kXrLXWGGPzaaaptTbVGNMCmGqMWQYcLI6h1trxwHiAuLi4/M6jKOVK/WhYExocQmCtZe2Pa5k2bBrbF8jzXLVTqtHjyR50vL0jYZFFe060wFfI0E8qctO/G3gGSR5fEtLTJY3khAlSfuABeP55iIgoYYNKgRT6n7bWXpDfPmPMTmNMQ2vtdmNMQ2Q4MK82Up3X9caYRKAD8t2paYwJc3oFjZHvkaIELfWjISOmYguBtZb1v65n2rBppM6Vn1yV+lXoMbgHnQZ0KtbahzVIToBfnHIcMgx0TgD2bdggoSIWLZL0ke+8AzfcEECDSqEEOjQ0GckSN8Z5/S53BWNMLJBmrc00xtQBugPjnB7ENGQCwaT8jleUYKJedciwIgRpFUwIrLVsnLaRacOmsWXmFgBi6sbQY1AP4u6KIzym6AKQDjyHzPbIAmo65TsQx3BJ+eknyR+wf78kkv/6a2jXLoAGlSIRqBCMAb4wxtyGhA+/FsAYEwfcZa29HWgNvG2M8QEhiI/gD+f4J4BJxpingUXAewHaoyjlSu1akHFIhOCvCiQEm5I3MW3YNDYlbQIgunY03R/vzjn3nkNEleKNt/wPSRSTky/4ZkQQ6gVgn88HzzwDw4eLb+DSS2WRWM2aATSqFJmAhMBau5c8AgRaa1OA2533s8hnwoC1dj3QORAbFKUiERsLGWkiBOkVQAg2z9xM4vBENvwut+2o2Ci6PdaNzvd3JrJa8WIz504UcyYyxa9HgDYeOAA33QQ//CDTQUeNgqee0ixiZYmuLFYUF4mNhYzt5e8j2Dp3K4nDE1n3syR4jKweSZdHutDloS5E1YgqVltZwEtIjuCcRDEjkV5BoJGUli6FK6+Edevk2n36Kfz97wE2qhQbFQJFcZHY2GM+gqxyEIJtC7aRODyRNf9bA0BEtQi6PNSFLg93ITq2uBF9YBoSGuJPp3wtIgpFTRRTEJ99BrffLjOE2reHr76CFi1caFgpNioEiuIi/kKQvb/schLsWLyDxBGJrPpuFQDhVcI594Fz6fpoV2JqxxS7ve3AY8BnTrklkijmQhdszc6Gxx6DV1+Vcv/+kkQmuvg6pbiECoGiuEhYGBhPGNnRYYSne8hOyy62M7Y47Fq+i8QRiaz8aqWcPzqMzvd1ptvAblSpW/wgPB7khj8MOAREIQuGBlK8RDH5sX07XHMNzJwJ4eGSRvKuuzRURHmjQqAoLhPlhKIOT/+LjAMZpSIEu1fuJmlkEiu+WAEWwqLCiLs7ju6Pd6dqg6olanM2shBsiVO+FHgVaO6OycyYISKwYwc0aiQJ5bt0calxJSBUCBTFZWI8IgTVtosQVG9U3bW296zaQ/KoZJZNXAYWQiNC6XRnJ3oM6kG1U0qW+2APEi0yZ+52U0QA3Arvby289ho8+qhEEO3VCyZNgvr5BaRRyhwVAkVxmSpe90NR71u3j+RRySz9ZCnWZwkJD6Hj7R3p+WRPqjcumdD4kJv/IGAfMgNoIDIUVHyvQt4cOQIDBohjGEQMxoyRITSl4qD/DkVxmeq4JwQHNh4g+elkFn+4GOu1hISF0OG2DvR8qic1m5Z8tVXuRDHnI4liWgVk7fGsWSNTQ5cvl5wBH3wgQ0NKxUOFQFFcpqYJXAgObj7I9Gens+i9Rfg8Pkyoof0t7YkfEk9si5KGcpMn/yHAW0iwuIbAi0BfShYhND++/14WiR08CKefDt98A23auHgCxVVUCBTFZWJDSy4Eh1IPMeO5GSx8ZyHeLC8mxNDupnbED42ndsvaJbbJB3yIxHTZw7FEMcOQHoxbeL2SQP7pp6V8xRXw4YeSV1ipuKgQKIrL1A6HjcUUgsPbDjNj7AwWvL0Ab6YXDJzZ70wShiVQp1WdgOxZiCSKmeOUE5BhoDMDavVEdu+WgHG//SbhIZ59Fh5/XKeGBgMqBIriMvWi4M8iCsGh1EPMHDuTBeMdAQDaXNOGhOEJ1GsbSBg32A8MReIB+ZCkIi8C/XB3GAhg9my49lrYuhXq1oWJE+H8E6KQKRUVFQJFcZkG0YXnLT6UeogZY5whIEcAWl/VmoRhCdRvF9i8Sh/wEfA4sBsZBnoYyQPr9ghN7qmh3bpJKslGbsSgUMoMFQJFcZkGMfn7CA5uOciMMTNY9O4ivFnHegDxQ+Opf1bgE+sXI8NAs5xyT2SlcEnzBRfE4cMSK+iLL6T88MMwdqysGFaCCxUCRXGZxtUhI8sJRe30CA5uOciM52aw6D1HAAy0vbYt8UPjqXdmYENAAAcQx+8bSI+gPvACcAPuDwMB/PGHZBH780+oWhXef1+nhgYzKgSK4jINah7LSbBx6gbG1R5H5uFMfNk+cQL3PZOeQ3oG7AMAuel/jMwG2olkfnoQCRNdI+DW82biRLjjDlks1ratRA0944xSOplSJqgQKIrLxMbCjoj6bOjdjJZztpK+L/3oLKD4IfHUbVPXlfPMRm76851yd6RHcLYrrZ9IZqZEDX39dSnfeCO89ZYsFlOCm4CEwBhTC/gcaAZsBK611u7PVac38LLfplZAX2vtt8aYD5HZbAedfTdbaxcHYpOilDc1aoB3XxgTpvZnRbal6f40AKrUc+eOmYqEhfjEKTdEUkXeSOkMAwGsXg39+sHChRARIVFD77xTp4ZWFgJNBjcI+N1a2xL43Skfh7V2mrW2vbW2PXAekAb84ldlYM5+FQGlMhASAqFH5P32vwxV6lVxRQTSgaeB0xERiETiAq0GbqJ0RMBa+Ogj6NhRRKB5c4kiqqGjKxeBCkEfYILzfgJweSH1rwZ+tNamBXheRanQhDvf8G1HAm/LAl8CrZF1AWnAVcBKRBhKFnS6cA4dkjAR/fuLP6BfP1i0CM45p5ROqJQbgQpBfWvtduf9DmSyQkH0BSbm2vaMMWapMeZlY4wbuS8UpdyJzJLXHQE+8iwGegPXIMnj2wFTEWFwK09AXsyfL72ATz+FmBgJGPfppzLspVQ+ChUCY8xvxpjlefz18a9nrbXIw0t+7TREpjP/7Ld5MOIzOAeohUx+yO/4AcaYFGNMyu7duwszW1HKlehsed1ZwuCjqcBtQCcgCaiNBIpbiAhDaeHzwfPPy8Kwdeskl/DChXDzzToUVJkp1Flsrb0gv33GmJ3GmIbW2u3OjX5XAU1dC3xjrc32azunN5FpjPkASZOanx3jgfEAcXFx+QqOolQEqshaMfZkFe+4Q8A4JEF8OvIDvR8YDpQ85mjR2LwZbr0Vfv9dyg8+KAvEIrWfXukJdGhoMtDfed8f+K6Auv3INSzkiAdGsntfDiwP0B5FqRBU88nrPk/R6mcjgeBOA55BROBqxA/wb0pXBKyVoZ8zzxQRqFtXwkj/+98qAicLgQrBGOBCY8wa4AKnjDEmzhjzbk4lY0wz4FSkl+vPp8aYZcAyoA7i+1KUoKeGM4yy31dwPQt8BbRFnvz3IOsBZgP/Bf5WeiYCkkz+ssukJ3D4sISNXr4cLr20lE+sVCgCWkdgrd2LJDfKvT0FuN2vvBE4IQyVtfa8QM6vKBWV2FB5PZTPfovMoR7KsQVhpyPrAfpQeusBjp7fwiefwEMPwb594gR+/XW44Qb1BZyM6MpiRSkFaju/rL/yuKkmIlnCZjrl+ogP4HYkb3Bps26drAP47TcpX3wxvPsuNG5cBidXKiSBDg0pipIHdZ2x9SN+j1qzkfHT3ogI1EYcw+uAuyl9EcjOhnHj4KyzRARq1ZLsYT/+qCJwsqM9AkUpBepJzDkO1ZfEMD8AU5x9NYBHkThBZZXBcfp0uP9+WLJEyjfeCC+9JI5hRVEhUJRSoLlzh09vAvc426oiN/9HKf2poDls3izpIj//3LGruQSKu+iiMjJACQpUCBSlFLisBTQYDzsioUccXNIWBgBl9QCeliYLw8aOhfR0iI6GJ56AgQNlpbCi+KNCoCilQIiB12pJspYtTeHxNWWTucvjgQkTYMQIyR8Mkkv4+eehSZPSP78SnKizWFFKiSuvhFatYNMmidNTmlgrCWLOPFPSR27dKuEhkpJkWEhFQCkIFQJFKSVCQmDwYHn/3HPytO421sJPP0HnznD11bBqFbRoIcKzYAHEx7t/TqXyoUKgKKVIv37ioF29Gm65Bbxed9r1eiVpfKdO8Pe/Q0oKNGgA//kPrFwJ118vQqQoRUF9BIpSioSHywreiy6SV2Mkrk9oaMnay8iQdsaNgzVrZFv9+vDII3DvvZo2UikZ+sygKKVMt26yaKtKFfj4YxmumT276Md7vTB3Ltx3HzRsKInj16yRnsabb8LGjTJFVEVAKSnaI1CUMqBnTxGDq66CWbNEHC64QP66dIF69aBaNcjKgoMHxdm7YgUsXiyrgPfuPdZWp07SA7j2WgjTX7DiAvo1UpQyomdPWLtW5va/9JLc4HPi/RRG8+YSJfSWW+Dss0vXTuXkw0hiseAiLi7OpqSklLcZilJidu0SEUhOljzABw9KjuDISIkEWq8etGkDbdtCQgK0bKlRQZXAMcYssNbG5d6uPQJFKQfq1ZOZPddfX96WKIo6ixVFUU56VAgURVFOclQIFEVRTnICEgJjzDXGmBXGGJ8x5gQHhF+9S4wxq4wxa40xg/y2NzfGzHW2f26MiQjEHkVRFKX4BNojWA5cCSTnV8EYEwq8AfwdaAP0M8a0cXaPBV621v4N2A/cFqA9iqIoSjEJSAistSuttasKqdYZWGutXW+tzQImAX2MMQY4D/jSqTcBuDwQexRFUZTiUxY+gkbAFr/yVmdbbeCAtdaTa7uiKIpShhS6jsAY8xvQII9dT1lrv3PfpHztGIAkeaKJBldXFEVxjUKFwFp7QYDnSAVO9Ss3drbtBWoaY8KcXkHO9vzsGA+MBzDG7DbGbCqhPXWAPSU8tjRRu4qH2lU81K7iUVntaprXxrJYWTwfaGmMaY7c6PsC11trrTFmGnA14jfoDxSph2GtLXHqV2NMSl5LrMsbtat4qF3FQ+0qHiebXYFOH73CGLMV6Ar8zxjzs7P9FGPMFADnaf8+4GdgJfCFtXaF08QTwCPGmLWIz+C9QOxRFEVRik9APQJr7TfAN3ls3wb8w688BZiSR731yKwiRVEUpZw4GVcWjy9vA/JB7SoealfxULuKx0llV1CGoVYURVHc42TsESiKoih+VEohqKgxkIwxtYwxvxpj1jivsXnU6W2MWez3l2GMudzZ96ExZoPfvvZlZZdTz+t37sl+28vzerU3xsx2/t9LjTHX+e1z9Xrl933x2x/pfP61zvVo5rdvsLN9lTHm4kDsKIFdjxhj/nCuz+/GmKZ++/L8n5aRXTc7U8Fzzn+7377+zv99jTGmfxnb9bKfTauNMQf89pXK9TLGvG+M2WWMWZ7PfmOMedWxeakxpqPfvsCvlbW20v0BrYEzgEQgLp86ocA6oAUQASwB2jj7vgD6Ou/fAu52ya5xwCDn/SBgbCH1awH7gBin/CFwdSlclmbNFwAABGZJREFUryLZBfyVz/Zyu17A6UBL5/0pwHagptvXq6Dvi1+de4C3nPd9gc+d922c+pFAc6ed0DK0q7ffd+juHLsK+p+WkV03A6/ncWwtYL3zGuu8jy0ru3LVvx94vwyuVzzQEViez/5/AD8CBugCzHXzWlXKHoGtuDGQ+jjtFbXdq4EfrbVpLp0/P4pr11HK+3pZa1dba9c477cBu4ASrzMpgDy/LwXY+yVwvnN9+gCTrLWZ1toNwFrcmy1XqF3W2ml+36E5yOLN0qYo1ys/LgZ+tdbus9buB34FLiknu/oBE106d75Ya5ORh7786AN8ZIU5yGLchrh0rSqlEBSR8oiBVN9au915vwOoX0j9vpz4JXzG6Rq+bIyJLGO7oowxKcaYOTnDVVSg62WM6Yw85a3z2+zW9crv+5JnHed6HESuT1GOLU27/LkNebLMIa//aVnadZXz//nSGJMTgaBCXC9nCK05MNVvc2ldr8LIz25XrlXQ5iw2FSQGUm4Kssu/YK21xph8p2w5an8WshAvh8HIDTECmUb2BDCqDO1qaq1NNca0AKYaY5YhN7sS4/L1+hjob631OZtLfL0qI8aYG4E4IMFv8wn/U2vturxbcJ3vgYnW2kxjzJ1Ib+q8Mjp3UegLfGmt9fptK8/rVWoErRDYChIDqTh2GWN2GmMaWmu3OzeuXQU0dS3wjbU226/tnKfjTGPMB8BjZWmXtTbVeV1vjEkEOgBfUc7XyxhTHfgf8hAwx6/tEl+vPMjv+5JXna3GmDCgBvJ9KsqxpWkXxpgLEHFNsNZm5mzP53/qxo2tULustXv9iu8iPqGcY3vlOjbRBZuKZJcffYF7/TeU4vUqjPzsduVancxDQ0djIBmZ5dIXmGzFA/P/7Z0xS8NAFMd/56KDS9VFJy0IHRUcRHdBh6Lg4CCCuvgdXNz0KwiObgpCBkGoOgpOiiiodRNEN0dxqMO9wFmLrdhE4f4/CG0uebl/Xy55ybv0ko6BBD8YA6kFEtteK9v9kpu0k2Gal5/FvxgoF13OuUKaWnHO9QGTwM1f+8v23QE+f7pft6yd/mrYXr7ROw+cmH8SYMH5p4qGgGHg/BdafqTLOTcKbAPlWq32EpQ33Kc56uoPZsv4IWjA3wVPmb4CMMXnO+NMdZm2Er7z9Swoy9JfzUiAJXt6aBx4tQud9vgqix7wv56AOXyu7A14Bo6sfAA4DNabAe7wEX09KC/iD9QqsAd0tklXL3AM3AMVoMfKx4CdYL1BfKTvqLM/Aa7wJ7RdoDsvXcCE1X1pn6v/wV/AIvAOXATTSBb+atRe8Kmmsn3vst9fNX8UA9t1s7sFptvc3pvpqthxkPonabZPc9K1CVxb/adAKbBdMT9WgeU8ddn8BrBVZ5eZv/AXfU/Wlh/xfTlrwJotd/g3PT5Y3WOB7a99pX8WCyFE5MScGhJCCIECgRBCRI8CgRBCRI4CgRBCRI4CgRBCRI4CgRBCRI4CgRBCRI4CgRBCRM4HcoVTD6IIiUgAAAAASUVORK5CYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAD4CAYAAADvsV2wAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABKJUlEQVR4nO2dd3hU1daH351KD1WkFylSRYhIUZAiRRSQ3hQQ7Oi1fV7LvdjuvYq9YUF6lw4KSkfEQkea0pEOgRBISE/298eaIUOY9EmZZL3Pk2fOnLPPmTUnyW/WrL32WsZai6IoipL/8cltAxRFUZScQQVfURSlgKCCryiKUkBQwVcURSkgqOAriqIUEPxy24CUKFu2rK1evXpum6EoiuJVbN269by1tpy7Y3lW8KtXr86WLVty2wxFURSvwhjzd0rHNKSjKIpSQFDBVxRFKSCo4CuKohQQVPAVRVEKCCr4iqIoBQQVfEVRlAKCCr6iKEoBIc/m4Sv5D2vhr7/gjz9gzx44dgwuXoTwcChcGIoXh6pVoUkTCA6GOnXAmNy2WlHyDyr4SrZy+TIsWQLffw9r18K5c+k/t359GDQIHnoIKlSQfdHANuBP4C8gBIgA4oFyQHmgGdAOKOm5t6Eo+QKTVxugBAcHW11p650kJsKKFTBuHCxbBjExSccqVIDbboMGDaBWLShdWjz76Gj5cDhwAHbsgJ9+gtBQOSewGTR/G+LbwVY/iE2HDT7AXcBooC0QGxHLqa2nCD0YyuXjl4kOi8a/qD+BJQKp1qYalVtUxujXCSUfYIzZaq0NdndMPXzFY0REwPjx8MkncPSo7DMG2raF3r2hU6f0h2kOxcEbh2FBcbhSEX527DcWGhloDNwMVAKKAb6It38C+AnYGJfA4V+O89+l+/l+5WGK7zqHTUzZuSlVsxTBTwTT8rmWKvxKvkUFX8kyly+LyH/8cZJXXr06PPwwDBsGFSum7zoWWA+8Dyz1B1tX9peMg4DlcO4bsBvg/lEwejT4+iY731qO/3qcFjN2sXvOHqIvRF09luBrCGpagRoNyhFUNYjCZQoTdyWO8NPh7Fu0j4uHL7LyhZVEno+k49sds3Q/FCWvooKvZJqYGPj8c3j7bbhwQfa1bAn//Cfcdx/4pDMHLB6Yjwi9M4gXCPQEhgMd/MF0hf9ug9e/gzffhIMHYepUEf3YiFh2ztjJ5s83c2530iRBmTplqHJfHWbcU5tFLSrjW8SfmUD7ZK/f9dOu7Jmzh0UPLuKXd36hcKnCtH6xdabvi6LkVTSGr2SKFSvgqadg/3553ro1/Oc/Er5Jb0QkHpgM/AdwlvcrC4wCnkAmYZOzahXcf7+Ejx7qcYE+1Tbzx5QdxFySiYKi5YvS+IHGNB7cmPK3lMcYQ5zjmuOQD5LNQCM31941cxcLhiwACwO/H0idbnXS90YUJQ+hMXzFYxw7Bs8+CwsWyPO6deHDD6Fr1/QLvQUWAq8imTYAtYHngQeBwqmc27EjzP3iHJOH/0yVxbvZ5NhfpXUVbnvyNur3ro9vwLWxHn/gK+QDZiIwABH9Ismu3WhQI0IPhrLutXVsH79dBV/Jd+jCKyVdxMdL6Obmm0XsixaFMWNg50645570i/1PQEugNyL2NYEZju1HSV3sz+w4w5w+c9j44JfUS9hNIj5sowllX32EhzY8RKOBja4TeycG+BSoC+wFnkvhNZqObAoGDvxwgJjwmBRGKYp3ooKvpMm+fRKyeeUViIqC/v1lAdWLL0JAQPqucQLoh6RKbgRuAD5D8ukHkfof4vm/zvNtr2/5+tav+XP+n/gG+nLbqNuo+cnTLKEHz71Xga1b07ahKDAbCAC+Bta6GVO8YnGqtq5KQkwCB5YeSN+bUxQvQUM6SookJsLYsTIJGxUFVarAhAlw993pv0Ys8AnwBnAFCaO8iIRviqVxbvjpcNa9vo7tE7ZjEyx+hf0IfiyYVi+0onjF4gBs/BO++gr69oVt26BkydSv2QR4BXgdeBtZoJWcen3qcWzDMfbO20vDAQ3T+U4VJe+jHr7ilhMnoHNnePppEfsHH4RduzIm9usQgX0REfveiEf/GqmLfUx4DGtHr+WzWp+xbdw2AJo92oynDz1N5w87XxV7gI8+gmbN4MgRePXV9Nn1tOP1VwLuvhjU61UPgAPLDhB7JT3LvBTFO1DBV67jxx/hllskI6ZsWZg/H6ZMgaCg9J1/GYnHt0MEvhbwAzAPqJrKedZadk7fyed1P2f9W+uJi4zj5p4388TuJ7j3q3spXqH4decUKgSTJ0t65pdfQnoSu0o57AMY4+Z4UJUgKreoTHxUPAd/OJj2BRXFS/CI4Btjuhhj9hljDhpjXkplXG9jjDXGuE0ZUnKXhAR47TWZhA0Nlcyb3buhV6/0X+NHoAGSAumPhHJ2A13SOO/0ttNMumMSCx9YSMTpCCo1r8Twn4fTf2F/yt5cNtVzGzaUzCFr4fHH5X2kxbMO++YB7iL19fqIl7937t60L6YoXkKWBd8Y4wuMBboC9YGBxpj6bsYVB/6BzNkpeYyQEBH4N9+U5//5jxQ8K18+feeHAQ8hfwQngNuA7Ugtm8BUzosKjeL7x75nXPA4jv96nKI3FKXHpB6M+G0EVe9I7fvAtbz2GlSuLB7+uHFpj6+EpIBa4GM3x+veJ8t8j204lm4bFCWv4wkPvzlw0Fp72FobiyRC9HAz7i3kG3S0B15T8SAbN8Ktt8LKlVCunCyqevXV9K+UXYssZJqEiPsY4FfE008Jay27Zu1ibL2xbP16Kz6+PrR4tgWj9o+iybAmGJ+M1bMpVkxKO4B8aEVFpTockMVYAAuAxGTHStUshfE1hJ8KJz4mPkO2KEpexROCXwk47vL8hGPfVYwxTYEq1tqlqV3IGPOIMWaLMWZLSEiIB0xT0mLmTFkde/IktGolmS4d01lKJhaZkO2A/NJvB3Y49qWW/hV2NIyZ3WayYNACrpy7QrU21Xjsj8fo/GFnCgUVyvR76dVLJnDPnIGvv057/C1ANeAMshDLFR8/H0pULgHA5eOXM22TouQlsn3S1hjjA3yIZOKlirV2nLU22FobXK6cu4X1iqdITJQCZIMHS02cRx+FdeskLJIe/gRaAO8hi5peAzYgFSxTfM34RH778De+aPAFB384SKGShbhv/H0MXTuUcvWz/vs2Bl5/XbbHjEnbyzdAd8f2YjfHS1YvCcgHlKLkBzwh+CeBKi7PKzv2OSkONATWGWOOIjqxRCduc4/ISBgwAN56S8I2n3wiGS7+/mmfa5EJ2aZIjL4GIvSvk7pXf3r7aca3GM+K51cQFxlHg/4NePLPJ2k6ommGwzep0a1bxrx8Z+xxiZtjJauVBFTwlfyDJwR/M1DbGFPDGBOAlCq5+v9jrb1krS1rra1ura0O/A50t9ZqZbRc4MwZCeHMnSuNR77/XnLt01MaIQJ4AElpjAaGIiGclqmcEx8Tz6qXVvHNbd9weutpgqoGMfD7gfSZ3YdiN6a19CrjuHr577wjjVVSow0QBOwBDiU7FlRd8lDD/g7zqI2KkltkWfCttfHI/Ndy5Jv+HGvtHmPMm8aY7qmfreQk+/dL+eItW6BGDfjtN8nMSQ97kMybGUiJgulIpcsSqZxzauspxjUbxy9jfgELtz9zO0/seSLbi5J16yZ9cc+ehTlzUh/rD9zj2E7u5TtDOpeOXvKsgYqSS3gkhm+tXWatrWOtvcla+1/HvtHW2uu+KVtr71LvPufZtEnq4Rw9Ki0GN26UNoPpYSqSivUXkne7GRicyviE2ATWvraW8bePJ2RPCGXqlOGhXx6iy0ddCCiWzuI7WcAYGOVIwRk7Nu3xzrBO8ji+xvCV/IautC0A/PADtGsH58+LR792raRfpkUUMBIJ3UQi4ZxNQL1Uzjm76yzjbx/P+jfXYxMstz9zO49uf5TKLdI5G+whBg6EUqXkgy6t1bddEE//Z8DVl78aw9eQjpJPUMHP50ydCt27y0Tt0KGweLGUNk6LA8js+gSgEDAemIKEc9yRGJ/Iz2//zLhm4ziz4wwla5Rk6LqhdPmoC/5F0jEb7GGKFIHhw2U7LS8/CLgVycV3ra1TonIJjI8h/GQ4CbHpWL6rKHkcFfx8zCefiMjHx8NLL8GkSenLxFkKBAM7kcYkvwMjkDRGd4QeCmXSnZNY88oaEuMSafZYMx7f+TjV21b3zBvJJI8/Lo+zZye1YEyJ2xyPrvn4vgG+FK9UHJtouXxCc/EV70cFP5/yv//BM8/I9kcfSfOStDJxLPA/4D6kAFovpMfsLSmNt5Ydk3fwdZOvOfH7CYpXKs6Q5UO498t7cyRWnxa1akGXLpKpM2VK6mOdgp88+qOpmUp+QgU/n2EtvPyylEYwRurXO4U/NSKQBiXOCsNvAXNJOQsn6mIU8/rPY/HwxcRGxFK/b30e3/U4N3W6yQPvwnM8/LA8Tp+e+jjnopDkK26vTtxqHF/JB2gDlHxEYiL84x/w+efg5wfTpskCq7Q4gmSq7EJWyc1AvPyUOLruKAsfWMjlE5cJKBZA18+7csuDt2DS2+cwB7nnHinrvH077N0L9a8r6yfcjMxP/A2EkNRA/Wouvnr4Sj5APfx8QkKCeLOffy5tB+fPT5/Yr0a8211AHSQLJyWxT4hNYNVLq5jSfgqXT1ym0u2VeHTHozQZ2iRPij1Ivfw+fWR7xoyUx/kCzRzbrl6+M6SjufhKfkAFPx+QkAAjR8LEiZKd8v33kpmTGs6ywJ2BUGTx0UZSroUTejCUCa0m8MuYXzDG0GZ0G4b/PJzSN5X23BvJJoYMkceZMyXklRLuJm41pKPkJzSk4+UkJopnP3myiP2yZVI6ITXikKXRzrLxrwBvIl6uO3bP3s13j3xHbHgsQdWC6DWjF1Vbp79WfW7Tpo0UhTt6FH79VRaguSNVwdeQjpIPUA/fi0lMFM9+0iQR+6VL0xb7MKRJyTgkv3428F/ci31cZBxLHl7C/IHziQ2PpX6f+jy24zGvEnuQAnEDB8p2apO3roLv/CJQokoJMHD5xGUS45NXzVcU70IF30txevaTJkHhwiL2d92V+jmHkEJnq4EbkCbj/VMYG7I3hG+af8P28dvxDfSl25fd6DOnD4VKZr5efW4y2FELYt68lFsg1gDKAOdIavDgF+hH8QrFsQmWyyc1F1/xblTwvZDERHjkEYnZp1fsf0FWzv6F1KreiDQsSY61lu0TtzMueJzUwalbhpEbRxL8WHCenZhND40bS17++fMS1nGHwX16ZlA1ydS59LdO3CrejQq+l5GYKM1KJkwQsf/+e6mTkxozgPbAeaRuzC9AdTfjYi7HsHDIQpaMWEJ8VDy3DL2FR7Y8wo233Ojhd5HzGAM9e8r2okUpj2vqePzDZV+RskUAWXugKN6MCr4XkZgo5QLGj5d0w+++g/btUx5vkSbiQ5B2hKOA73C/mOr0ttOMazaOXTN34V/Un55TetJzcs88sWLWU/RwlMVctCjlbB1nltIBl33Otosxl2KyyzRFyRE0S8dLsBaeew7GjROx//576NAh5fHRwHBkUtYH+ISkpt3XXtey+YvNrHhuBQmxCZRvXJ4+c/pQtm7Z7HgbuUrLllIl9PBh2L0bGjW6fkxtx+N+l32BJQMBiA5Lo5uKouRx1MP3Et54Q4qh+fuLh5qa2J8D2iFiXxzx6t2JfWxELAsGLeCHUT+QEJtA8BPBjNw4Ml+KPYCvb9L6hMXumtgii89APHznlwCnh6+Cr3g7KvhewEcfieD7+MCsWdC5c8pj9yOZOL8DVZF4/T1uxoX8KVk4u2fvxr+oP71n96bb2G74FcrfX/rSiuOXAUoD4cBZxz5nZlL0JRV8xbvJ3//d+YCJEyWUAzJR27t3ymN/Q8oiXECyTb4D3E237p69myUjlxB3JY6y9crSb34/ytVLR0eUfECHDtIPYOtWOH4cqlS5fkxtJItpP3L/AoM0pKPkD9TDz8PMnZtU7fGTT2DYsJTHLkIycS4A3ZAc++RinxCbwLKnljF/4HzirsTRaFAjHt70cIERe5DMpk6dZHvZMvdjnGEdZxzf6eHrpK3i7ajg51F+/FEWCyUmwptvwtNPpzx2LFK7Php4GBH/5J2pLh2/xKQ2k9j8+WZ8/H24Z+w93D/9/nyVhZNeunSRx+XL3R93jeODxvCV/IOGdPIgP/8MvXpBXJyEc/71L/fjEoGXgXcdz99C6tknXx51aMUh5g+aT9SFKIKqBtF3bl8qNa+UXebneZxzIKtXyz1O3gUseaaOevhKfkE9/DzG1q3QrRtERUmdnPffd9+pKgZpKv4u8qk9CfgX14q9TbSse2Md07tMJ+pCFLW61OKRbY8UaLEHqFYNbr4ZLl+G33+//njykI7G8JX8ggp+HuLPPyXcEB4O/frBV1+5F/swpADaTKAY0oN2WLIxkecjmXHPDH56/ScA7nrjLgYtHUSRMkWy7w14EU4v311Yx+nhHwIS0CwdJf+ggp9HOHIEOnaUWi9du0q3Kl83JSyPA3cCa4EKwM9Ap2RjTm46yddNv+bQ8kMULlOYIT8Ooe3othgf762F42lSE/xiyL2NQe63awzfplZQX1HyOBrDzwOcPg133w2nTknt9nnzpGtVcnYiOfUngXrAD0A1l+POVbPLn11OYlwilW6vRN+5fQmqEpQTb8OraNsWAgMlhBYSIitwXakDnEbCOtUL+eEb6EtCTALx0fH4F/Z3c0VFyfuoh5/LXLggYn/oEDRrJvVxiriJuqxGPPuTQBtkQZWr2MdGxLJgsKyaTYxLpPlTzRm+friKfQoUKSIfrtbCypXXH78uNVMzdZR8gAp+LhIeLk229+yBevUkFbOEm8pmM5CY/WWgH7AcKOVyPOTPEMbfPp7dsxyrZmf1puunXfENSKmHlQLpi+NfTc3UTB0lH6AhnVwiKkrqumzaBDVqiJdZNlkJGwuMQVIvAZ4D3uPaT+nd3+5myYiCuWo2q3TsKI9r1oin7zpBrpk6Sn5EBT8XiIuD/v1h3TqoUAFWrYJKyTIlE4CngC+RVMsPgWdcj8cmsOKFFWz6bBMADQc25L5x9xXIhVSZpVEjKFMGTpyQkFqtWknHUvLwNVNH8WY0pJPDJCTA0KESqy9dWjz7mjWvHROJrJz9EggE5nCt2F86fonJbSez6bNN+Pj70PXzrvSa0UvFPoP4+CR1Clu79tpjzvmR48gCN43hK/kBFfwcxFoYNUoqXhYrJjH7Bg2uHROC1MRZgsTpVwF9XI4fWnmIcU3HceL3E5SoUoLhPw+n+ZPNvbr9YG7i7BaWXPCLIlUzY5HfibMmvsbwFW9GQzo5yMsvy2IqZ7eq22679vghpAXhQcTD/JGkDkw20bL+P+tZ9/o6sHBT55voNb3X1fZ7SuZwFfzkcfwqQCiOXPyS6uEr3o8Kfg7x9tswZgz4+UmeffKm45uAexFvsimyetZZ7TLyQiQLhyzk4I8HwUDb19vS5l9t8PHVL2hZpV49KF8ezpyBffuk5IKTqkhv22NA2SCN4Svej0cUwxjTxRizzxhz0Bjzkpvjzxlj9hpjdhpjVhtjqrm7Tn7liy/glVfEe5w2TWrluPIdcBci9p25trTxyU0nGdd0HAd/PEjhMoUZ/MNg7nrtLhV7D2FMynF8Z6l89fCV/EKWVcMY44tU6O0K1AcGGmPqJxu2HQi21jYG5pFU4DHfM306PPmkbH/1FQwYcO3xr4GeQBTSg/Y7pC2hc9XsxDsmcunYJSrdXolHtz1Krc61UDyLsxH8mjXX7ncK/jGS0jI1hq94M55wE5sDB621h621sUgr1R6uA6y1a621kY6nvwOVPfC6eZ7Fi5Oalrz7LjzySNIxi5QyfgzJAnkNmAD4I6tmFw5ZyLInl5EYl8hto26TVbNVddVsduCM469bJ/0HnFR1PKqHr+QXPBHDr4T8Tzg5AdyeyvgRSBmY6zDGPAI8AlC1alV3Q7yG1aul4mVCArz6Kvzf/yUdiwVGAtMAX8TLH+E4dv6v88zpPYeQvSH4F/Wn+/juNBzQMKfNL1DUqgUVK0oto7/+gvqO76fXhHSCdKWt4v3kaCDYGDMEabf6nrvj1tpx1tpga21wueTVrLyI33+HHj0gNlbSMN96K+nYJaQA2jQk9e87ksR+16xdjAseR8jeEMrWK8vDmx5Wsc8BjIE775TtDRuS9jtdjmOoh6/kDzwh+CdJcoZAwjUnkw8yxnREohjdrbX51k3auVPKG1+5Ag88IL1onal+zsJnq4HywE/IxEd8TDxLn1jKgkELiLsSR8OBDaXXbH3v/dDzNu64Qx5/+SVpX0VklfNpwNdZWkGzdBQvxhMhnc1AbWNMDUTTBgCDXAcYY25FIhddrLXnPPCaeZL9+6VBdlgY9OwJEyfKak6APUiO/QmgLhLTqgGEHQ1jbt+5nNpyCt8AXzp/3Jngx4J1IVUO4xR8Vw/fH6mLfwq4qB6+kg/IsuBba+ONMaOQIo6+wERr7R5jzJvAFmvtEiSEUwyY6xCyY9ba7ll97bzE0aPQoQOcPSuPs2ZJzj1ImmVPJJzTCllFWwbY990+Fj24iOiwaEpWL0nfuX2pGFwxV+wv6DRqBMWLw+HDEsuv6Pg1VEUE/3TxQDAQGx5LYkKipsUqXolHFl5Za5cBy5LtG+2y3dETr5NXOXVKKi+eOAGtW0t2TiFxCJkNDEUmansB04HA+ERWvrqaX9/9FYA699Wh55SeFC5VOHfegIKvL7RqJaWSf/kF+vaV/VWQtLITPobAEoHEXIoh5nKM/q4Ur0TdlCwSEpLUwKRpU1i6FIoWlbTL94GBiNg/jRRBiz8dztQOU/n13V8xvoaOYzoyYNEAFZA8gLuwjmsuvmbqKN6OllbIAmFh0kRj714pgrZ8OQQFSWnjZ4HPHOM+cDw/uuYI8wfO58q5KxSrUIw+s/tQrU2BWnScp3En+K65+I1KFuLSsUsax1e8FhX8TBIRISUStm+XPG5nA5MoYDCwEAgApgL9Ei0/v/0z60avwyZaarSvQa+ZvShWvliuvgflWpo3l3mXHTukG1nx4tfm4gdrpo7i5WhIJxNER0ue/a+/QtWqssiqQgWphdMREfuSwErgvguRzLx3Jmv/tRabaLnzX3cyZMUQFfs8SJEi0lc4MVHWUoDm4iv5CxX8DBIbC336SN2VG28Usa9aFfYBLYFfEa9wA1Bz4wm+vvVrDv5wkMKlCzNo2SDav9VeMzzyMK1by6MzrONuta0KvuKtqPJkgIQEGDJEJmbLlJHWhLVqSdplS6SefVPgN2uJ+HQjk+6cxOXjl6Xw2fZHqd21dqrXV3Kf5HH8ckhoLhTw1SYoipejMfx0kpgII0fC3LlQogSsWCETtVORujhxSMW4iZdjWD1yCXvn7gXg9n/czt3v3o1vgG8uWq+kF6eH//vv0nvY31+8/ENAjHr4ipejHn46cLYmnDxZ4rw//AC3NoXRSI59HJKF88XOs8wIHsfeuXsJKB5Anzl96PJxFxV7L+KGG6BOHYiMlMlbSArrXNFG5oqXox5+GlgLTz8NX34JgYGwZAk0bQVDgJnIJ+ZnQMtJ25n0xDLio+Mp37g8fef2pUydMrlrvJIp7rhDymRs2CBtKCs59kc4s3TUw1e8FPXwU8FaePZZ+PxzCAiARYvglg6SiTMTqRWxOCqOSiMWs+ShJcRHx9NkeBNG/DZCxd6LSR7Hdxa7CHOEdGIvx+a8UYriAdTDTwFr4YUXpNplQAAsXAg1u0ALJJ5bGZh94AK7+szl7M6z+BXy454v7uHW4bfmsuVKVnEVfGuhoqOOXWixAIKQBjWK4o2o4LvBWvjnP+HDD2XSbv58KHaPiP1F4Fbg03l7Wf/QYmLDYylduzT95vWjfOPyuWy54glq1ZJY/rlzcPAgVHQkV4UUV8FXvBsN6STDWmk4/t57supy7ly4eK+EcS4C3WMTeOOZH1nddy6x4bHU71OfR7Y8omKfjzDmWi/fGdI5WywAgJhwTctUvBMVfBeshX//G955R8T+2zmwvQc8iCMT58Rlut81mW2fbMTH34cun3Shz5w+BJYIzG3TFQ/jKvjOSdvTDsFXD1/xVjSk48BaeO01+O9/pVTutDmw8H4pZ+wDvL/6MPED5nPifCQlKpeg79y+VG5RIHqxF0hcBb+CY9/x4vLBroKveCsq+IjYv/wyjBkjYj9uLnx1v7QgLJpo+ejtnzntKHxW8+6a9JrRi6Lliua22Uo20qQJFC4s6ZkR56F0WYhwevjhKviKd1LgQzrO1MsxYySM89FieNch9tUuRvF+91mcchQ+azO6DYN/GKxiXwDw95fqmSBF8ioCcUX8AYiLjCMxITH3jFOUTFKgBT8xEZ54QlIv/f3hf6vhrW5SCO3Obad5qtk4zi49QKFShRi0dBDt3minhc8KEK1ayaNT8K2Pwcfh5cddics9wxQlkxTYkE5CAjz8MEyaJO0In/8FRjeFaGDw5B3c/Nj3RMQkUKFZBfrN60fJ6iVz22Qlh3HW1fn1V7jJubNYAETEEhsRq5P1itdRIAU/Ph6GDoWZM6FwERi6Hf5XB0x8Is+/sILin2wkAWj6cFO6ftoVv0IF8jYVeFq0kMfNm6F1AuALiZqpo3gxBU7JYmNh0CBZTFW0GHTfC19VgcIXInmp3zzsmiP4+Ptwz9h7aPZws9w2V8lFypSBm2+Gv/6C+GNADYgrHoA/mouveCcFSvCjo6FfP/juOyhREjr+CbNuhAq7zjKqx2zijoRRtHxR+s3vR9XWVdO8npL/adVKBP/CLqAGRBcTwVcPX/FGCswM5KVL0KWLiH2pcnDnQVhwIzT4bh+Pt5xA3JEwKgZX5JEtj6jYK1dxxvH//k0eIzUXX/FiCoTgnzsH7drBTz9BhWoQfACWloE7PttI357fkngljkaDGzFs/TBKVC6R2+YqeQhnps6elfIYrrn4iheT70M6R49Cp05w4ADcVB+qbYZVgYn0+Mdybv10EwB3vXEXbf7dBmNMrtqq5D3q1IHSpeHsH2AshBeTXHz18BVvJF97+Lt3y1fyAwegyW1Qeyv8bGN5oNccbv10Ez7+Ptw/7X7ajm6rYq+4xccHWrYE4qFENMRoSEfxYvKt4P/2G7RpA6dOQZt2UHsD/Hz5CiPbTqbmkn0UKlWIB1Y+QOMhjXPbVCWP44zjB4RArFbMVLyYfBnS+fFH6N1b+pJ27wEV5sG3J8IY0WkapQ+EUqpmKQYtG0TZumVz21TFC3DG8WOOJAm+eviKN5LvPPy5c+G++0Tshw2DVvNh4V/nGNF6IqUPhHJjkxt56NeHVOyVdHPbbVJn6fI+iCmugq94L/lO8CtWlLo4L7wAnSbC55uOM7zNJIqfCqdam2oMXTeUYuWL5baZihdRpAjceitw0sXD1ywdxQvJdyGd1q1lsvZETXj0x4M82HsOAZFx1O1el96ze+Nf2D+3TVS8kFatYPMpiG2sHr7iveQ7Dx8gpia8OGsXfe+bRUBkHLcMa0K/+f1U7JVM06oV4uFrlo7ixeQ7wT8DPDt2E10GL8A3PpEWL7Skx8Tu+Pjlu7eq5CCtWgEnNKSjeDceUUFjTBdjzD5jzEFjzEtujgcaY751HN9ojKnuidd1x4TPNtJy1A8YC23GdKTze500x17JMpUrS29bzdJRvJksC74xxhcYC3QF6gMDjTH1kw0bAVy01tYCPgLGZPV1U+KxrrUxlYpz1/j7aPdi6+x6GaUAckcDiPEXwY9WwVeyifMRsZw/E5Et1/aEh98cOGitPWytjQVmAz2SjekBTHFszwM6mGxyu8vUKs1L+0bRdkTT7Li8UoBp3QpiLzsEXxdeKdnApQuRvN1xKmPunsbJ0CiPX98Tgl8JOO7y/IRjn9sx1tp44BJQJvmFjDGPGGO2GGO2hISEZNqggKIBmT5XUVLijjsg9qKjxaF6+IqHuXTyMu+2mUyJjSdJjIglNCza46+Rp2YyrbXjrLXB1trgcuXK5bY5inINjRsDYX4k+hpsTAIJcQm5bZKSTwg9GMrHd0wiYG8I5+uXo+eG4TSqWcrjr+MJwT8JVHF5Xtmxz+0YY4wfEARc8MBrK0qO4esLVYzRiVvFo5z54wxf3DERjoZxonklas8eRuxf2VOm3ROCvxmobYypYYwJAAYAS5KNWQIMdWz3AdZYa60HXltRcpT6QZqpo3iOYxuO8U3bySScvcLhDjXw/+JBRt9ZhPvvl05rnibLK22ttfHGmFHAcsAXmGit3WOMeRPYYq1dAkwAphljDgKhyIeCongdLSrDmeKBQLgKvpIl9szZw/wHF2JjEtjbqx6Xnu3FyuZ+JCbC/fdDlSppXyOjeKS0grV2GbAs2b7RLtvRQF9PvJai5CZta8E0h4cfejqWcvVy2SDF67DW8su7v7D6pdUAbH6sGSf73cOOOyXg8q9/wRtvSC8GT5PvaukoSnZSq1BSSGfHpljqts9lgxSvIiEugWVPLmPbN9sAWPHe3Zxq0ZKjbQz+/jBpEgwenH2vr4KvKBngBpIE/48dMfTPXXMULyLmcgxz+83l0PJDxBfyY8G0+wmpXJ+QO6FYUVi4EDp2zF4bVPAVJQP4AqaICP7eoxrDV9LHpeOXmNltJud2nSOyXBFmLhnIpYDKhLeGcqVg2TIIDs5+O1TwFSWDFHI0QTkdFktMDAQG5rJBSp7m9LbTzLx3JhGnIwitW4ZpywYTc6YUkXdCtfKwYgXUqZMztuSphVeK4g0UCRLB9yscy6ZNuWyMkqfZv3Q/k9pMIuJ0BMfbVuObX0cQ93cpIttDw5rw6685J/aggq8oGaaYI4YfUDiWdety1xYl77L5i83M7j6buCtx7BnSmMnLhxCwuTARnaBhbVi7Vjr05SQq+IqSQUo4Bb+QCr5yPTbRsvz55Sx7chk20bJhdBvmTu1J0Ao/LnWDm2vBqlVQNhfaamsMX1EySKnigZwFAnxjWL8BjeMrV4mLjGPBkAX8tfAv8PNhyfj72Da0CTfMh3N9odZNsHo1lC+fO/aph68oGaSMw8Mv7B9HdDRs3pzLBil5goizEUxpN4W/Fv6FT1AgU5cPYdvQJlScDef6QI3qsGZNzodxXFHBV5QMUt6RpROApGVqWEcJ+TOECS0mcHLTSXyrl+Sz30ZwuH0N6s2DUwOlY9qaNdlTLiEjqOArSga50eHh+0XHgK8KfkHnyNojTGw1kbCjYfjeVpF3fh9BSL1ytF0Gf/aFEiUkz7569dy2VAVfUTJMEeekbUQsVJLUuhhtgFUg2TFlB9M7Tyc6LBrf+2/mzXXDuFK+GP02wE/dwM8P5s+HRo1y21JBBV9RMkhgcZmhDYiIpVp7iIrSOH5Bw1rL2tfWsnjYYhLjEvF5tgWj5/Ylrog/o3bBvLYy7uuvs79cQkZQwVeUDBLg9PDDY6nRQfatXZuLBik5SnxMPIuGLmL9m+sxPgY+78roDzuDrw+v/Q2TWkJiolS9fOih3Lb2WlTwFSWDBLiEdMo46p+sWpWLBik5RnRYNDO6zGDntJ34F/UnbvEAXn+yOT7A2HCYeCdcuQJDhsCbb+a2tdejefiKkkFcBZ8aFh8fw2+/QUQEFCuWy8Yp2cal45eY0XUGIXtCKFahGBe/H8R/m1bAF5iaCJN7w/Hj0KIFjB8PxuS2xdejHr6iZBDfAF9MgC++8YmcsgkEB0NcHKxfn9uWKdnF2V1nmdByAiF7QihbryyRv424Kvazgb2jYeVKKFcO5s7NuwvxVPAVJRMEliwEwKmwaO6+W/ZpWCd/cmTtESbdOYnwk+FUvaMqURseYnS1kvgA04HA7+C//5UOVbNnS859XkUFX1EyQdHShQGIDI2idWfZt3JlLhqkZAu7Z+9mRpcZxFyKoV7vekSufID/c/zuJwDBB+GBB2Ts//4H7fN4BzQVfEXJBEUc//SFQ6O44XYoUgR274YzZ3LZMMUjWGv59YNfmT9wPgmxCTR/ujnh3/ZhVCGZ9vwC6BcJvXvDpUvQsye8+GKumpwuVPAVJRMUdgr+hUhOBECbNrJfwzrej020LH9uOStfkK9sd79/N+Efd+FhX5HLD4HHgWeegZ07oXZtmDw5b07SJkcFX1EyQWEXD/8waBw/n5AYn8iioYvY+PFGfPx96DWzF1HPt2KIMVjgLeBZYNEi+OYbmZydNw+CgnLX7vSiaZmKkgkKlZZJ28KhURwBRjpWU65YAdZ6h7enXEt8dDzzBsxj3+J9+Bf1Z8DiAVzsUJOeQBzwD+BV4PRpGDlSzhkzBho3zjWTM4x6+IqSCYqUKQIkefiNGkGlSiIGO3bkqmlKJogJj2Fmt5nsW7yPQqUK8eDqB0noUJOuQAQwCAnl2EQYPhwuXIBOneCpp3LX7oyigq8omSB5SMcYuOceObZ0ae7ZpWScqNAopnWcxpE1Ryh2YzGG/TQM39sr0wkIAToDkxCx/PxzWL4cypSBSZMkFdOb8DJzFSVvkCT40RwBLNCtmxxTwfcewk+FM6nNJE5uOknJGiUZvmE4hRuVpwtwFGgOzAMCkCwsZybON9/kbiOTzKIxfEXJBE7BD7oQSTRwBujQAQICYONGOH8+d3qWKunn4uGLTLt7GhcPX6Rc/XIMWTGEIpVKcC+wE6gLLAWKIeWvBw+WxxEj4P77c9X0TKMevqJkAqfglwiNAuAwUkenbVuZtP3xx1w0TkmTkD9DmHjHRC4evkjF4IoM+2kYxSuVYBSwHCgHLAOcn9lvvikpmLVqwccf55bVWUcFX1EygVPwi7gIPiTF8ZctywWjlHRxdtdZJredTMTpCKq1rcaDqx+kSNkifAh8DRQClgA1HeO3b5dsHGMk396bC+Sp4CtKJihcRgTfzyH4+xz7nXH8H3+E+PhcMExJlTM7zjCl3RQiQyK5qdNNDF42mMASgSwA/s8xZirQwrEdFyc17RMSJCOndevcsdtTqOArSiYILBGI8TWY8Fh84hLY7dhfu7Z87b94UVofKnmHU1tPMaX9FKIuRFH7ntoMWDwA/yL+bAKGIBPvbwN9Xc55/31Js61eXQqkeTsq+IqSCYwxFC6VlJq52+VYjx7yuHBhztuluOfExhNM7TCV6IvR1O1Rl34L+uFXyI+jwH1AFDAC+KfLOX/9BW+8Idvjxnl3KMeJCr6iZBJnHL+4Ixf/imN/797yuGCBTOAqucuxX44x7e5pVyte9p3bF79AP8KAbsA5oAPwJeBcIJ2QINk4MTES0nGWzvB2siT4xpjSxpiVxpgDjsdSbsY0Mcb8ZozZY4zZaYzpn5XXVJS8glPw64ZGYYE/Hftvv11ytI8dg61bc808BTj601Gmd55ObHgsDQc0pM/sPvj6+xKHhG72AvWRXHt/l/PGjpWQXIUK8MEHuWF59pBVD/8lYLW1tjaw2vE8OZHAg9baBkAX4GNjTMksvq6i5DpOwa/tmLjd5djv45OUp71gQS4YpgBwZM0RZnSdQdyVOBo/0Jj7p92Pj59I3rPAKuAGJNe+pMt5x47BK6/I9pdfQknXg15OVgW/BzDFsT0F6Jl8gLV2v7X2gGP7FPINqlwWX1dRch1npk5Vh+C7xvF79ZLH+fM1rJMbHF13lJn3ziQ+Kp4mDzWhx6QeV8X+G2Assnp2MVA92bnPPSeNyPv0SZqPyS9kVfDLW2tPO7bPAOVTG2yMaY7c50MpHH/EGLPFGLMlJCQki6YpSvbi9PBvdCP4bdpIvZX9+2Hv3lwwrgDz9/q/mdktSey7f9MdH0ct+1+AJx3jviIp/dLJ8uXyIV20KHz0UQ4anUOkKfjGmFXGmN1ufq757LPWWiSzKaXrVACmAcOttYnuxlhrx1lrg621weXK6ZcAJW/jFPzSF64XfD+/JO9w/vwcNqwAc2zDMWbcM4O4yDhuGXoL3b/pjvGRqdjjQG+SSh0PT3ZuTExS9cvRo/N2b9rMkqbgW2s7WmsbuvlZDJx1CLlT0M+5u4YxpgQSKnvVWvu7J9+AouQWTsEPDI2iCHAKCHU53qePPM6apWGdnOD4r8evidl3n5Ak9lHA/cBZoD3wvpvzP/gADhyAm2+Wblb5kayGdJYAQx3bQ5GQ2DUYYwKAhcBUa+28LL6eouQZnIIfHRpFA8e+PS7HO3aEcuUkn3v79hw3r0Bx4vcTTO8yndiIWBoNaiQxe0cYxwIPA1uBGsAcrq8a+fff8J//yPbnn0sRvPxIVgX/HeBuY8wBoKPjOcaYYGPMeMeYfkAbYJgxZofjp0kWX1dRch2n4EeFRtHQsW+Xy3F/fxgwQLanT89R0woUJzedvCb1sueUnlfFHuADYAZQFPFIy7i5xrPPQlQU9O8vVU/zK1kSfGvtBWttB2ttbUfoJ9Sxf4u1dqRje7q11t9a28TlZ4cHbFeUXMWZpeMq+LuTjRkyRB5nzdLaOtnBqS2nmNZpGjGXY6jft/41qZcAP5K0enYq0MjNNX74QVZFFy2av3Lu3aErbRUlk1z18C+49/ABbrtN6uucOQNr1uSoefme09tOX7OCtteMXteI/X5gAJAIvAb0cnON6OikidrXX5c2lfkZFXxFySSuIZ0mjn3bAVdH3pgkL1/DOp7jzI4zTO04leiwaG7ueTO9Z/XG19/36vFLyCKhS8hk7egUrvP++3DoENSvD//4R/bbnduo4CtKJikUVAgMxFyOoUxcArWQejp/JBs3eLA8LlgA4eE5bGQ+5OzOsyL2F6Op270ufb7tc43YJwCDgb+AhsiKUHdCd/Qo/O9/sv355zLnkt9RwVeUTGJ8kipmRodFc4dj/4Zk4266Ce68U1ZvzpqVoybmO87tPsfUDlOlxHG32vSZ0wffAN9rxoxGcsBLI5O0xVO4lnOiduBAaNcue+3OK6jgK0oWcA3rOHtj/OJm3KOPyuNXX2lOfmYJ2RvClPZTiDwfSa2uteg3vx9+gdcmWH4L/A/wRdIva7q5DkhHskWLpOTx++6S8vMpKviKkgVcM3VcPfzkmt67t5Ra2L4dtmzJSQvzByF/OsQ+JJKbOt9E/wX9rxP7HSStnv0AKXnsjuhoePpp2X7jDalsWlBQwVeULOCaqVMXyfE+DRxNNq5QIRg2TLa/+irHzMsXnN93nqntp3Ll7BVqdqxJ/4X98St0rdiHIJO0UcAw4OlUrvfeezJR26BBUoZOQUEFX1GygGtIx0CqYZ1HHpHH2bPh0qWcsM77ubD/AlPaTSHiTAQ12teQtoSFr51djUVq5BwDbufaRibJOXIkaaJ27NiCMVHrigq+omQBp+BfCZF+V07BTz5xC1CnjkwORkbC5Mk5Yp5Xc+GAQ+xPR1D9ruoM/G4g/kWuV+h/AD8DFYAFQKFUrvnMMxLSGTQI2rbNFrPzNCr4ipIFSlYvCUDYkTAgdQ8fkkIIH3+sK29TI/RQKFPaTSH8VDjV2lRj4Pfuxf4rx08gsAhILRz//fewZAkULy5hnYKICr6iZIHStUoDEHpA6mQGI+KzG7joZnz37rLy9uhRmKelBN1y8fBFEfuT4VS9oyqDlg4ioOj11cx+Apwh+G+A5qlcMyqq4E7UuqKCryhZoHRth+AfFMEPJEl41roZ7+sLzz8v2++9pymayQk7GsaUdlO4fPwyVVpXYdCyQQQUu17sjwJ9kFXNzwMPpHHdd9+V+H3DhjBqlMfN9hpU8BUlC5SqWQqMCFVCbAIA3RzHrqsV7uDBB6Vs8rZtsNbdp0IBJezvMCbfNZlLxy5RuWVlBi8bTGDxwOvGXUEycs4DnYExaVz30CF4+23ZLogTta6o4CtKFvAL9COoahA20RJ2NAxIauz8HdfW1XFSuHBSLH9MWmpVQLh07BJT2k3h0t+XqNS8EoN/GExgievF3iJplzuB2sAsZJFVSlgLTzwh3ayGDJHWkwUZFXxFySJlakuF9QsHLgBQ1/FzEckecccTT8gqzxUr4JeUZngLCGF/Sxgn7EgYFW+ryJDlQ6ROkRv+C8wDSiDdl0qlce1vv5V7XKpU/i99nB5U8BUli5SqJbLjjONDkpefUlinTBmp5QLw6qsFN5YfeiiUyW0mc/HwRSo0q8ADKx6gUEn3Yr8Q+DeSYz8LuDmNa4eFJbUqHDMGbrjBU1Z7Lyr4ipJFnB6+M1MHJMYMkiqYkpY//7x4nj/9BKtWZaeFeZPz+84zua0jZt+iMg+uejBFsd+CVMAEeBu4Jx3Xf+UVOHsWWreGESM8ZLSXo4KvKFnkamqmi4d/O1Ae+JvryyU7CQqCF1+U7YLm5Z/bc47JbSdL6uWdVRmyYkiKYn8MuI+ksgkvpuP6GzdKCQs/P3n0UaUDVPAVJctcTc108fB9gO6O7YWpnPvUU1C+PGzeDHPnZpuJeYozO84w5a4pXDl7hRrta8gErZtsHIDLwL3AGaAd8DUpl01wEh8v1UmtlW9RDRumcUIBQgVfUbJIqRrXp2aC5IkDTEaacrijaFF4803Zfv55qZmfnzm15VRSieMutRj4/UC3i6pAMpz6I20j6wLzAfcjr+XTT+GPP6B6dRidUqurAooKvqJkEb9C16dmAnQEaiAhiR9TOX/ECGjaFE6cSCrslR85/ttxpnZI6lTVf1H/6wqhObFIjZwfgbJIQ5O0MnIADh6Ef/9btseOhSJFPGJ6vkEFX1E8gLs4vg/g6HvCl6mc6+srLfZAmnEcPJgtJuYqh1cfZnqn6cRcjqF+3/r0ndf3unr2rrwLfIF49IuAm9LxGgkJMHy4FKcbNAjuSc/MbgFDBV9RPIAzju/MxXfyECJay7i+Rr4rLVvKCtzYWHjssfw1gbt33l5m3jOT2IhYGg1uRO+Z1zYcT84E4CUkVj+VpIJ0afHJJ7BhA9x4I3z2Wdbtzo+o4CuKB3Dn4QOUQ2L5FhiXxjXefVfy81evhq+/zg4rc54tX29hbr+5JMQm0Pyp5tw/9X58/FKWnUWAo20AnyEx/PSwd69kOgF88w2ULp15m/MzKviK4gHc5eI7edzxOB6ITOUa5cvDF1/I9gsvwOHDHjUxR7HWsv4/61n62FKw0O6tdnT5pAvGJ+Ucm5+AAUAi8BrwZDpfKyoK+veXOvfDh8O992bd/vyKCr6ieIAydUXwz+w4g028Nh7TGmiGtOEbm8Z1+vWTnytXRLwSUkrvycMkJiTy4zM/svbfa8FAty+70eZfbTAmZbHfgaSxxgBPIIKfXp5/HnbvlrLTn36aJdPzPSr4iuIBytQpQ4nKJbhy9gqnt5++5phBasAAvAOk1d1w7Fjx9tevl9rt3kTslVjm9pnLpk834ePvQ59v+xD8WHCq5+xFql5eBvoBn5J2rr2T+fPhyy8hIEDq5hQrliXz8z0q+IriAYwx1O5WG4ADSw9cd7wT0BYIBd5P41ply8KMGbI69K234IcfPG1t9hBxJoIpd03hr0V/UahkIYYsH0KDvg1SPWcPsqDqHHA3MkmbWvVLV/78M6kx/Hvvwa23ZtbygoMKvqJ4iDr31gFg//f7rztmkBowAB8BZ9O4VocOSQuyhgyRDll5mXO7zzH+9vGc2nKKkjVK8tCvD1GjXY1Uz9nNtWK/GGkgkx7CwqBHD4iIgAEDkspNK6mjgq8oHqJG+xr4FfLj1OZTRJyJuO54S6QmzBXghXRc7+WXJZc8NBS6dRORy4scWnmIia0nXi2CNvL3kZSrVy7Vc3YD7ZF5jU6I2BdO5+slJMiH4IED0LgxjB8PqUwPKC6o4CuKh/Av4k+N9uLVHlh2fVgH4ENE2KYjDVJSw8dHQjsNGkjaYa9ekqefV7DW8st7vzCjy4yrC6oeXPMgRW8omup5uxDPPgSJ3S8i/WJvrZSVXrpUUi8XLZLyFEr6UMFXFA9S+96U4/gAtUiawH0U943OXSlZUsTtxhulHeKwYXkjcyf2SizzB8xn1YursImWO1+9kz6z+6RYKsHJBmQu4zzQhYyJPcDHH8uiqoAAWLgQaqQeNVKSoYKvKB6kTjeJ4x9acYj4GHcNDuFpoBVwGhhFyvXynVSrJqJfrBjMmiW1d3JT9EMPhjKhxQT2zNlDQPEA+i/sT/v/tE81xx6kU1VH5EOuO1JF1H1BZPfMmZPUAH7yZG1XmBmyJPjGmNLGmJXGmAOOxxTrGxljShhjThhjPs/KaypKXiaoahA3NLqB2IhY9s7b63aMLzAR8WxnIitK06JpU1i2TIqBTZkCDz+cO6K/77t9fHPbN5zbfY4ydcswcuNIbu6ZVu8p+BhJuYxBFqLNJ2Niv2wZDB4sIZ2334aBAzNjvZJVD/8lYLW1tjaw2vE8Jd4C1mfx9RQlz3P7P24HYN1r60iIc6/KdYFJju3ngDXpuO6dd4qnX7gwTJok2SnR0Z6wOG3iouJYNmoZs7vPJjosmro96vLwpofTnJxNRN7fs8g3mbeRxWcpl027nnXroHdvqXP/wgvwz39m8k0oWRb8HsAUx/YUklp5XoMxphnSAGhFFl9PUfI8TYY2oUzdMlw8dJHtE7anOK4/4iElIN7vX+m49l13SV5+iRIwbx506ZL92Tvn9pxjfPPxbB67GR9/H+5+7276L+hPYInUkyjDgF5IGqo/MI2komjpZdUqyVCKjoZHHpF6Q5qRk3myKvjlrbXOZYVnEFG/BmOMD/AB6chEM8Y8YozZYozZEhISkkXTFCV38PHzof1/2gPw05s/ERcZl+LY/wDdgAtAB+BQOq7fti38/DNUrCj9cG+/XRYheRprLZu/3Mw3wRLCKV27NCN+G0GrF1qlGa/fAQQj6ZZBwA/AkAy+/nffSV2cyEiZrP7iCxX7rJKm4BtjVhljdrv56eE6zlprcT//9ASwzFp7Iq3XstaOs9YGW2uDy5VL/auiouRl6vWuR4VmFYg4HcEv7/6S4jhfYA6SuXIKyU3/Ox3Xb9wYfv1VHvfvh+bNJWvFU1w8cpHpnaez7IllxEfH0+ShJjy67VEqNquY5rmTkDUHh4AmwFbkwywjTJggaagxMfDEE/LcN71LcJUUSVPwrbUdrbUN3fwsBs4aYyoAOB7PublES2CUMeYosqr8QWPMOx58D4qS5zDGcPd7dwOw/q31HFqRsu9eBPge+Uc5hmTw7EzHa1SrJqLfr5+sOO3VC0aNkuqRmSUxIZHfPvqNLxt+yeGVhylcujC9Z/emx4QeBBRLvcFgFPAw0gMgGhgB/Er6mpc4SUiQOP3IkRKzf+klaQ6jTcg9Q1Zv4xJgqGN7KPIN7hqstYOttVWttdWRsM5Ua21qk7uKki+o0a4GbUa3wSZa5g2Yx8XDKWfdF0PCHm0QT/9OJAsiLYoWhdmz4YMPwN9fCq/ddhts2ZJxe8/tPsfE1hNZ8dwK4iLjaNC/AU/++SQN+6fdBXwDcAtSAroQkoU0nozl2J89KyuLP/gA/PxkBe3bb2sYx5NkVfDfAe42xhxAUmzfATDGBBtjxmfVOEXxdu567S7q3FeH6IvRzOo+iyvnUu5SHgQsB/oilSM7IxOeaeXpGwPPPQe//w5168KePRLX/8c/4PLltG2MCo3ix2d+5Otbv+bkxpMUr1ScAUsG0Gd2nzRXzV4BnkE+qA4ADYDfgOFpv+w1rFkDTZrAihVSPG7lSllvoHgWY/NoL7Xg4GC7JTNuiqLkMaIvRTOh5QTO/3meMnXK8MDKBwiqGpTi+ETgZaSvK0gGzzdAiXS81pUrUlL5ww8lPFKpkqxM7dnzek85IS6BzV9s5qc3fiL6YjQYCH4smA5vd6BQUNpZ8uuR8M0hZC7iJeDfpL8AGkj46ZVXZAUtyIT0jBlit5I5jDFbrbVua1Kr4CtKDhBxNoIZXWZwZscZSlQuwYAlA6hwa4VUz1kADAPCgWrAZOCudL7eH3/Ao4/Cxo3y/L77pEF6nTpgEy1/Lf6L1S+t5sJ+6cFbo30NOn3YiRtvuTHNax9DPpBmOp43QiZqm6XTNic//yyx+v37JYTz739Lm0KdnM0aKviKkgeIDotm1n2zOLbhGL4Bvtz9/t00H9U81U5Q+4HBgPM/YRSSypny94MkEhKkN+7LL0tox983kafa76H68Q2E/iX5FaVrl6bT+52oc1+dVO0A+eB5BykAF4148i8BryCN2tPL+fOyeGriRHneoIGsHm6W0U8MxS0q+IqSR4iLimPF8yvY8qX8bd/U6Sa6fNqFsnXLpnwO8D9kqXoCUAFZ2DKA9C1iOnE0nvce2AkbNlDaWa6teHHaj25Nq6eD8Q1I3aWORb5djCapjv9AZNVstXS8vhNrRdhfeAEuXJACaC+/LJk4hTJSZ0FJFRV8Rclj7J2/l+9Gfkd0WDQ+fj40f6o5rf6vFcUrFE/xnD+QOjS/OZ7fhnjc7VMYH3oolG3fbGPHpB1XJ4uji5RiRWRr/uAWylf04623YOhQ92GUK0io5l3guGNfS8TDb5HB97t1q0wsr3cUV+nQQRZS1amTwQspaaKCryh5kCvnrrDmX2vYNn4bWPDx96HxkMbcOuJWqrSs4nY1ayIiwv9ClrYD3AH8H3AvEHYolP3f7Wf37N2c3Hjy6nnlG5en9UutadC3AT/97MMLL8C2bXKsYUPprtWjh+S7HwC+BiYg5RFAsm9GIxlEGcmSPHgQXnsNZjoC/jfcIBPKgwZpumV2oYKvKHmY09tO8/P/fubPBX9ezcEsXrE4tbvVpnKLylQMrkhQ1SACgwKvxtnDExL55NwVZhwNo9iOM1Tceppa645S4lBSrr9/UX/q965Ps8eaUblF5Wti9ImJkr//yivw999ATaj4CBQZAQddokstgBeRolkZyeHesQPGjJGSxomJEBgITz8tIZxSKdbUVTyBCr6ieAGhB0PZ8tUW9s7dy6Vjl6477lfID99AX2yiJS4yDptw/f9uVKlCHO5Yk5C+9bmpWx1uLeJPLaAyMsnqizRSP4sUa9uaACvDIaRk0jVMBNxyCP5VCnpXTb/9Z85IB6oJE5IWfvn7wwMPwOjRsjJYyX5U8BXFi7DWcmrLKf7+6W9ObjrJ2T/OEn4qnNiIa/sbFilXhBKVS3BDwxu4sVkFzrSozOLgiizy9eH6j4vUKWnhpkNw+ms49QUQKfsbNZIKnc2aSby9TBlZ3RseDhcvwr59sHOnxOa3bnW5XkkpePbcc1ClSubvhZJxVPAVJR8QGxFLQlwCxsfgV8gPv0D3VeUTkGqVPyFe/EEk3h+LZPyUBm4AqgO3Ak0dP35IJs3KlTB9OixenL6Vuk4KFYL27SU+36uX1O1Xcp7UBD8jfQgURclF0ipe5sQXWQSVmbR2Y6BTJ/mJiYENG2DzZgnRHD8OoaFSqK14cQgKgptukm8BzZrJKlkV+byNCr6iKG4JDJT0yQ4ZrW2s5Fm06KiiKEoBQQVfURSlgKCCryiKUkBQwVcURSkgqOAriqIUEFTwFUVRCggq+IqiKAUEFXxFUZQCQp4trWCMCQH+zsIlygLnPWSOJ1G7MobalTHUroyRH+2qZq0t5+5AnhX8rGKM2ZJSPYncRO3KGGpXxlC7MkZBs0tDOoqiKAUEFXxFUZQCQn4W/HG5bUAKqF0ZQ+3KGGpXxihQduXbGL6iKIpyLfnZw1cURVFcUMFXFEUpIHi14Btj+hpj9hhjEo0xKaYwGWO6GGP2GWMOGmNectlfwxiz0bH/W2NM+loKpW1XaWPMSmPMAcdjKTdj2hljdrj8RBtjejqOTTbGHHE51iSn7HKMS3B57SUu+3PzfjUxxvzm+H3vNMb0dznmsfuV0t+Ky/FAx3s/6LgX1V2OvezYv88Y0zmzNmTSrueMMXsd92a1MaaayzG3v88ctG2YMSbExYaRLseGOn7vB4wxQ3PQpo9c7NlvjAlzOZZt98sYM9EYc84YszuF48YY86nD7p3GmKYux7J+r6y1XvsD1APqAuuA4BTG+AKHgJpAAPAHUN9xbA4wwLH9FfC4h+x6F3jJsf0SMCaN8aWBUKCI4/lkoE823K902QVEpLA/1+4XUAeo7diuCJwGSnryfqX2t+Iy5gngK8f2AOBbx3Z9x/hAoIbjOr4euj/psaudy9/P4067Uvt95qBtw4DP3ZxbGjjseCzl2C6VEzYlG/8UMDGH7lcbpIXw7hSO3wP8ABigBbDRk/fKqz18a+2f1tp9aQxrDhy01h621sYCs4EexhgDtAfmOcZNAXp6yLQejuul97p9gB+stZEeev2UyKhdV8nt+2Wt3W+tPeDYPgWcA9yuJswCbv9WUrF1HtDBcW96ALOttTHW2iNI7/DmOWWXtXaty9/P70BlD712lm1Lhc7ASmttqLX2IrAS6JILNg0EZnngddPEWrsece5Sogcw1Qq/AyWNMRXw0L3yasFPJ5WA4y7PTzj2lQHCrLXxyfZ7gvLW2tOO7TNA+TTGD+D6P7j/Or7SfWSMCcxhuwoZY7YYY353hpnIQ/fLGNMc8dwOuez2xP1K6W/F7RjHvbiE3Jv0nJtZMnrtEYiX6MTd79NTpNe23o7fzzxjTJUMnptdNuEIfdUA1rjszs77lRYp2e6Re5Xnm5gbY1YBN7o59Kq1dnFO2+MkNbtcn1hrrTEmxdxXx6d3I2C5y+6XEeELQPJx/wm8mYN2VbPWnjTG1ATWGGN2IcKWaTx8v6YBQ621iY7dmb5f+Q1jzBAgGGjrsvu636e19pD7K2QL3wGzrLUxxphHkW9I7XPw9VNjADDPWpvgsi+371e2kecF31rbMYuXOAlUcXle2bHvAvJ1yc/hqTn3Z9kuY8xZY0wFa+1ph0CdS+VS/YCF1to4l2s7vd0YY8wk4IWctMtae9LxeNgYsw64FZhPLt8vY0wJYCnyYf+7y7Uzfb+SkdLfirsxJ4wxfkAQ8reUnnMzS7qubYzpiHyAtrXWxjj3p/D79JSApWmbtfaCy9PxyJyN89y7kp27LidscmEA8KTrjmy+X2mRku0euVcFIaSzGahtJMMkAPkFL7EyE7IWiZ8DDAU89Y1hieN66bnudfFDh+g54+Y9Abcz+tlhlzGmlDMkYowpC7QG9ub2/XL87hYi8c15yY556n65/VtJxdY+wBrHvVkCDDCSxVMDqA1syqQdGbbLGHMr8DXQ3Vp7zmW/29+nh+xKr20VXJ52B/50bC8HOjlsLAV04tpvutlmk8Oum5EJ0N9c9mX3/UqLJcCDjmydFsAlh0PjmXuVXbPROfED3I/EsmKAs8Byx/6KwDKXcfcA+5FP6Vdd9tdE/ikPAnOBQA/ZVQZYDRwAVgGlHfuDgfEu46ojn9w+yc5fA+xChGs6UCyn7AJaOV77D8fjiLxwv4AhQByww+Wniafvl7u/FSQ81N2xXcjx3g867kVNl3NfdZy3D+jq4b/1tOxa5fgfcN6bJWn9PnPQtreBPQ4b1gI3u5z7kONeHgSG55RNjuevA+8kOy9b7xfi3J12/C2fQOZbHgMecxw3wFiH3btwyT70xL3S0gqKoigFhIIQ0lEURVFQwVcURSkwqOAriqIUEFTwFUVRCggq+IqiKAUEFXxFUZQCggq+oihKAeH/AWUXr2kkSynPAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] @@ -722,7 +555,7 @@ { "data": { "text/plain": [ - "[]" + "[]" ] }, "execution_count": 11, @@ -731,7 +564,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD6CAYAAACs/ECRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nOydd3hUVfrHPyeVEnoHpSmKgEiJSCcUld3frr2ADdtiwy5KUaQL6OraFXsFXVdW3FVZDQm9S++ICER6TyPJzPn98d6BMaTPnSSTvJ/n4cmce88998wk3O+c8zZjrUVRFEUpv4SV9AQURVGUkkWFQFEUpZyjQqAoilLOUSFQFEUp56gQKIqilHNUCBRFUco5rgiBMeZ9Y8x+Y8y6XM4bY8wrxphtxpg1xpgOfucGGWO2Ov8GuTEfRVEUpeAYN+IIjDE9gWTgY2ttmxzO/xl4EPgzcAnwsrX2EmNMTWA5EAtYYAXQ0Vp7JK/71a5d2zZt2jTgeSuKopQnVqxYcdBaWyf78Qg3BrfWzjXGNM2jy5WISFhgsTGmujGmARAH/GitPQxgjPkR6A9My+t+TZs2Zfny5W5MXVEUpdxgjPktp+PFZSNoBOzya+92juV2XFEURSkmQsZYbIwZbIxZboxZfuDAgZKejqIoSpmhuIQgCTjbr32Wcyy342dgrZ1qrY211sbWqXPGFpeiKIpSRIpLCGYCtzneQ52BY9baPcAs4DJjTA1jTA3gMueYoiiKUky4Yiw2xkxDDL+1jTG7gWeBSABr7VvAd4jH0DYgFbjDOXfYGDMOWOYMNdZnOFYURVGKB7e8hgbmc94CD+Ry7n3gfTfmoSiKohSekDEWK4qiKMHBlRWBooQyR4/C4sWwejVs2ABHjkBqKlSoAM2bw/nnw1VXQSN1bFbKKCoESrlk3z749FOYORMWLACPJ+/+Dz0E/fvDk09Cr17FM0dFKS5UCJRyg7Uwdy68/DJ8+y1kZcnx8HDo1g06dIALL4Q6daByZUhOhl9+kdXCzJnw3Xfw/fciBuPGQWRkyb4fRXELFQKlzGMt/PADjB8PCxfKsfBwuOIKuPlmuOwyqF497zEOHhQBmTgRJk+GxEQZM7/rFCUUUGOxUqZZsQL69oU//1lEoGZNGD0adu2Cb76BG24o2MO8dm1ZBcydC40bw5IlcOedIjKKEuqoEChlkmPH4P77ITYWEhKgRg2YMgV++w2efRYaNCjauN26yXjVqsGMGfDKK+7OW1FKAhUCpczxzTfQujW8+SZERMDjj8te/9ChEBMT+PjNm8P7TuTL0KGwbFne/RWltKNCoJQZ9u6F668XV8+kJLjkEvj5Z3jhBVkRuMk118ADD0Bmpq4KlNBHhUApE3z9NbRqBV99JR4/L78sbqEXXhi8e157rfz89dfg3UNRigP1GlJCmtRUePRRmDpV2pdfDm+/DU2aBP/evnvs3Bn8eylKMFEhUEKW1ath4EDYuBGiomQLaMgQMKZ47t+okdwrKUliEiL0f5MSoujWkBJyWAuvvio2gI0boWVLWLoUHnyweETAAvOBu6PB7APvzfD778G/r6IECxUCJaQ4cEACwR56CE6ehMGDJVbgoouK5/6zgc5AD+BTwFsHuErcUhUlVFEhUEKG+Hh54P/nPxIE9s9/ij2gUqXg3/tn4HKgL7AUqANc7ztZT+0ESmijQqCUejIzYdgwuPRS2LMHevQQ+8B11wX/3luBAUBH4H9AVWA8sB0Y5+ukQqCEOGreUko1W7ZIPqDlyyEsTKKCR44MvmF2DzAWeBfIAqKBIcBwoJbTpx6nX6gQKKGMCoFSKrEW3nlHXENTUyW/z2efQffuwb1vJvAqUms1GVky3+m0G2frWw2I8EBWFdi+N7jzUpRg4srWkDGmvzFmszFmmzFmWA7nXzLGrHL+bTHGHPU75/E7N9ON+Sihzf79cOWVcM89IgI33yxbQcEWgfnIFtDjiAhcAawF3uNMEQAwQG2njsGvqcGdm6IEk4BXBMaYcOB14FJgN7DMGDPTWrvB18da+6hf/weB9n5DpFlr2wU6D6Vs8N13cMcdIgbVqkm+oIF5VsQOnP3AU8CHTrsZsir4vwJcWz8M9gK7M2UVU1wxDIriJm6sCDoB26y12621GcB04Mo8+g8EprlwX6UMkZoquXv+7/9EBHr1gjVrgisCHuAt4HxEBKKAUcB6CiYCAI3C5WdaFcl4qiihiBtC0AjY5dfe7Rw7A2NME+QL12y/wxWMMcuNMYuNMVe5MB8lxPj5Z+jYEd54Q6p+TZ4srqKNc9qPcYkVQBfgPuAo4hq6DhgDVCzEOPV8K4B6GkughC7F7T46APjKWutfIbaJtTYWuAn4hzHmnJwuNMYMdgRj+YEDB4pjrkqQ8Xjkod+5M2zaBBdcIAVfnnxSKogFgyPAA8DFwDLkG8s/ge+BFkUYTz2HlLKAG0KQBJzt1z7LOZYTA8i2LWStTXJ+bgcS+aP9wL/fVGttrLU2tk6dOoHOWSlhdu6UymHDhkmcwJAh4iLaPsfffuBY4GOgJfAG8of/BLARuA4x/BYFFQKlLOCGECwDWhhjmhljopCH/RneP8aYlkANYJHfsRrGmGjndW2gG7Ah+7VK2eLzz6FtW5gzB+rVEwPxq68GL0J4FdALGIQYhns4x54HqgQ4tgqBUhYI2GvIWptljBkCzALCgfetteuNMWOB5dZanygMAKZb+4cqrxcAbxtjvIgoTfL3NlLKFkePikH488+lfeWVEisQrAXeQeBp4B3AC9QFXgBuoegrgOz4C4HaCJRQxZWAMmvtd8B32Y6NytYencN1C4Eglg5RSgtz5sCtt0rR+EqV4B//gLvvDo67ZRbwJuIBdBT5I3/YaRegTn2epB1OY9mby9g1X/wjUitE0HBkD36v11BXBErIopHFSlDJyIBRo6RwvLVw8cUSIdyiKJbZfLDA18BIYLNz7DLgH8jSMxCO7z7OgucXsPLdlWSmZv7hXOdKkXz9+jUqBErIokKgBI2tWyUOYMUKyRP09NPwzDPiIuo2CcAwJDMowDnA35Ho4EAWHUd3HGX+pPms+mAVngxxdjvn8nNof1d7jvxyhPjh8VTdcwKqQ9IhLVCjhCb6J6u4jrXw0UfiCZSSAk2bwqefQrdu7t9rJZIIbpbTrodsAd2NBIgVlcPbDjNv4jzWfLIGb5YXDLS+oTXdR3Sn/kX1Adi3Zp8Iwb4UuaiO1EhQIVBCDf2TVVzl2DG4916YPl3aAwbAW29Jugg3+QUxBDu3oSrwJGILiAlg3AMbDzBvwjzWTVuH9VpMuKHtrW3pMaIHtVvW/kPfmPpyp5i9yXKgnrjCKkqooUKguMaiRXDTTbBjB1SuDK+/Drfd5q5BeC9SB2AqYhSO4nR66Np5XJcfuxfvZsHkBWz6ZhNYCIsIo90d7eg+vDs1z6mZ4zUVa1XEhBmiDqcRlunBWy9chUAJSVQIlIDxeOC552D0aHndsaO4iJ53nnv3OIa4fr4IpCK+xrcjKSGKmonCWsu2H7axYPICfpsjvp/h0eG0v7M93Z7qRvUmefsYhYWHUalOJVL2pVB5fwon6lUlK6uIk1GUEkSFQAmIvXtlFZCQIO2hQ2H8eIgKZIPej5NIJPAE4JBz7ApgItC6iGN6s7ys+2IdC6csZN+afQBEV40m9v5YOj/c+dSWT0GIqR9Dyr4UYvYmc6JeVV0RKCGJCoFSZBITxSto716JEP74Y7jsMnfG9iL7/yOBHc6x7sAkJPy8KGSmZrLy/ZUsfGEhx36TVKExDWLo/GhnYu+JJbpqdKHHjKkXwz72EbMvRW0ESsiiQqAUGq8XJk0SV1CvV1JGT5sGDRq4M/5PSH2An512a+A54C8UzRU09VAqy15fxtJXl5J6UCrI1DqvFl2HdqXtrW2JiC76f4PK9SrLz33JKgRKyKJCoBSKQ4ckQvj776U9YgSMGeOOy+RqRAB8rqANEcPwICR3SWE5tvMYi15cxM/v/HwqCKxRp0Z0e6ob5195PmHhgafa8glBzN5k6KxCoIQmKgRKgVm8GG64QdJE1KwpsQF/+lPg4+4BRgAfIdHBVZHgsIeBouSh279uPwumLGDdtHUSAwCc2/9cuj3VjSa9mmBcdGM65ULq2xpKd21oRSk2VAiUfLFWsoM+/rhEznbuDF98EXjhmJPAy8i3/mQgEqkVMJKiuYLunL+T+ZPms/W/WwEwYYY2A9vQ7clu1G9XP7DJ5kJMPRGCyj4h2BaU2yhKUFEhUPIkLQ0GD5Zv/wCPPCLFZALxCrLAf4DHAN9z80rEPfTcwo7ltWz5zxYWTF7AroWSCC6iQgTt72pPl8e7UKNZjaJPtAD8YWuoFqRvCurtFCUoqBAoubJzJ1x9tZSSrFQJPvwQrr8+sDE3AY9w2g5wAbIquLSQ43g9XtZ/uZ75E+ezf91+ACrUqECnIZ3o9GAnKtepHNhEC0j26OI0T169FaV0okKg5Ehiojz0Dx6E5s3h3/+GCwNIGJ4MPAu8gkQEV0OCwe5HtoQKiifDw+pPVrNg0gIObzsMQJVGVejyeBc6/q0jUTEuBTAUkFNbQ/sl31C6CoESgqgQKH/AWnjlFbEHeDwSFzBtmhiHi8q3yN7/LsT9czAwHihMPZrMtEx+fvdnFj6/kOO7jgNQo3kNug/vHrALaCD40kxUOpxGeIaH9KwgFVtWlCCiQqCcIi0N7rkHPvlE2k89BRMmFL2Q/O/AQ8C/nHZHJEdQh0KMkZWexbI3l7Fg8gJSnCyfdVrVofuI7rS5sQ1hEW5UWy06YeFhVK5bmeS9yVTen8JJT9USnY+iFAUVAgUQe8A110jtgEqV4IMPxFW0KHiBt5BEcMeBykiKiCEUPB7A6/Gy+uPVJD6beGoF0KBDA3qM7EHLq1piwoJQ2qyIVK7nCMG+ZNJVCJQQxBUhMMb0R2x+4cC71tpJ2c7fjtQKT3IOvWatfdc5NwjJKAww3lr7kRtzUgpOYqI89A8cgGbNxB7Qtm3RxlqLbP0sdtp/BV6j4InhrLVs/mYzs0fO5sCGAwDUvbAufSf2pcX/tXA1BsAt/NNMnFQbgRKCBCwExphw4HXE8WM3sMwYMzOHIvRfWGuHZLu2JmJDjEW8Clc41x4JdF5K/vjiAx57LHB7QBoSD/A8YgxuALwKXEPB00LsmLOD+GHx7F68G4DqTavTe1xv2gxs40oUcLDwdyHNCMCWoiglhRsrgk7ANmvtdgBjzHTELTy7EOTE5cCP1trDzrU/Av2BaS7MS8mDtDQpIPPxx9J+8kmYOLFo9oCfgHuRYjEG8QSaiHgGFYS9q/YSPyKebd9LVEGlOpXo+UxPOg7uWGJG4MLgcyGtvC+ZdJcL8ChKceDG/7JGiEOIj93AJTn0u9YY0xPYAjxqrd2Vy7WNcrqJMWYwsutA40BDWss5u3ZJfIDPHvD++3DjjYUf5wASFObEmtEGMQZ3KeD1R7YfIeGZBNZ+vhaAqJgoug7tSudHOxNdpfCZQEuKUyuCfSlkFDYiTlFKAcX1detbYJq19qQx5h4krUyfwgxgrZ2KPGeIjY217k+xfDBnjsQH+OwBM2bARRcVbgwLfAg8ARwGKiB1gp+gYDEByfuSmTtuLiveXoE3y0t4VDix98fSY0SPYgsEcxNfLEHM3mS1ESghiRtCkASc7dc+i9NGYQCstYf8mu8CU/yujct2baILc1KyYS289ho8+qjYAy69VOwBtWoVbpwtwD2c/iX1QzyEzinAtenH0ln4wkIWv7SYzJRMMHDRoIuIGx1H9aZ5VwMrzZzeGkrhpLeEJ6MoRcANIVgGtDDGNEMe7AOAm/w7GGMaWGv3OM0rgI3O61nARGOMLyHMZYjXoeIi6eliD/jI8ccaOlTsAYVJHX0SmIy4gWYgSeFeAm4mf2NwVnoWy95YxryJ80g7lAbA+VecT58Jfajbpm4h303p4/TWUDIZKgRKCBKwEFhrs4wxQ5CHejjwvrV2vTFmLLDcWjsTeMgYcwXiUHIYKTeLtfawMWYcIiYAY32GY8Uddu2S+IDly6FiRbEHDBhQuDHmI8YZn3rfgXgH5beYyCkWoHH3xvSd1JfG3cqOncd/a+iQbloqIYgrNgJr7XfAd9mOjfJ7PZxcvulba98H3ndjHsofmTsXrrtO7AFNm0p8QGHsAUeQQjHvOO0WwNtA73yuyzUW4Lm+tPhz6YwFCISKtSriDTNUPJJORoaHopXRUZSSo/T75imFxlp4/XWxB2RlQb9+MH16we0BFvgCyRK6DzEAD0OKx1TI59pQjQUIhLDwMLzREYSlZZKZqUKghB4qBGWM9HS47z5JGQ3wxBPw3HMFtwfsQOIAnEqUdEdWAa3yuW7vqr3ED49n2w+hGQsQKF4n51FWlroNKaFH2f8fWo7Ibg947z0YOLBg12YB/0DCvFOB6ohr111AXt/jD/9ymIRnElg3bR0QurEAgeKNlFWAJ0OFQAk9VAjKCHPnSnzA/v1iD5gxA9q1K9i1yxBj8CqnPQDxCMqruGPy3mTmji87sQCBYh0hyPKoECihhwpBiGMtvPGGlJDMyoK+faWecEHsASeQbH+vIRlDmwBvAnnVoz8VC/DiYjJTy04sQKCcWhFkqf+oEnqoEIQw6elw//2SMhqkmMykSQWzB8xEisXsRkybTwCjkZTROZGZmsnS15eyYNIC0g6XvViAQPGtCLxqI1BCEBWCEGX3brEHLFsm9oB334Wbbsr/uiSkWMzXTjsWcQ/NbRfJk+lh5XsrmTN2Dsl7pC5v4x6N6ftc2YoFCBjHWOzRrSElBFEhCEHmzZP4gP37oUkTiQ/Izx7g4XSxmBNADBIl/AA5Ozt6PV7WTV9H4qhEjmyXrOD129en78S+nHP5OWUuFiBQ7KmtIRUCJfRQIQghrIU334SHHxZ7QJ8+Yg+oXTvv69YgxuAlTvsKxC5wdg59rbVs+XYLs0fOZv+6/QDUOr8Wvcf1ptW1rUpVZbDShE8IrAqBEoKoEIQI6enwwAOSIgKkmMzkyXnbA1KBscDfEffQhkixmKvJOT/Qrwm/MnvE7FPBYFXPrkrc6Dguuu2iEq8NXOrx2Qg8aixWQg8VghAgKUnsAUuXFtwe8D/gPmA78tB/ANkKyqluStKyJGaPnM32H7cDEgzWY2QPYu+JJaKC/okUCF0RKCGM/i8v5cyfL/aAffvEHjBjBrRvn3v//UixmM+c9oVIEYfOOfQ9sOEACc8ksPFrSScXXTVagsEe6UxUTJSr76OsY6IcS4sai5UQRIWglJLdHtC7N3z5Ze72AAt8AAzldLGY0YgoZC8Wc3THURJHJ7LmkzVYryWiQgSdHupE96e6U7FmxaC9p7KMcbbOrFeFQAk9VAhKIdntAY8+ClOm5G4P2IwUi5njtC9FAsOyF4tJ3pvM3AlONHCml7CIMDre05GeT/ekSsMqwXgr5QddESghjApBKcPfHlChgtgDbr45574ngUlIofgMoA6SGuIm/mgMTjuSxsLnF7Lk5SWnooHb3tKWXqN7UfOcmsF9Q+WEMJ+NQI3FSgiiQlCKKIw9YB7iErrJad+JJInzzyyRkZLBkleWsHDKQtKPpgNw/pXn03tcb+pdWC9o76M84rMRGF0RKCGICkEpoDDxAUeAJ5HCzwDnIWmi4/z6eDI8rJi6grnj55KyLwWApr2b0ndiX87qfFYQ30n5JSxKbARGbQRKCOKKEBhj+gMvI0Gq71prJ2U7/xhwN+LOfgC401r7m3POA6x1uu601l7hxpxChYLaAywwHSkWsx8xAPvKvvmKxXg9XtZ8uoY5o+dwdMdRABpe3JC+E/vSvF/zYng35Rff1pDaCJRQJGAhMMaEA68jNsrdwDJjzExr7Qa/biuBWGttqjHmPmQX40bnXJq1toAJk8sWBbUH/IrEBMxy2j2QVcAFTttay6YZm5j99GwObjwIQJ1Wdeg9vjctr2qp6SCKgXDdGlJCGDdWBJ2Abdba7QDGmOnAlcApIbDWJvj1Xwzc4sJ9Q5qC2AMyOV0sJg0pFvM8Yg8IQwRg+0/bmT1iNr8v/x2Q0pBxY+K48OYLy2xpyNJIeFQYFjBeNRYroYcbQtAI2OXX3g1ckkf/uzhdCRGggjFmObJtNMla+28X5lRqKag9YCliDF7ttLMXi9m9eDfxI+LZkbADgMr1KktpyL91PPXtVCk+wqPCyQLCdEWghCDFaiw2xtyCZD7u5Xe4ibU2yRjTHJhtjFlrrf0lh2sHI89GGjcOzfTHBbEHnABGIknhLNAUiQno75zft3YfCU8nsHnmZgAqVK9At6e60enBTkRV1mjgkiIiWoRAt4aUUMQNIUjij4ksz3KO/QFjTD/kGdfLWnvSd9xam+T83G6MSQTaA2cIgbV2KpItgdjYWOvCvIuVgtgD/g0MQT68cCQq+FmkWMyR7UdIGJXA2s/XgoXISpFc8sgldH2iKxVraDRwSRPhsxGo15ASgrghBMuAFsaYZsgzbAAS03QKY0x7xL7Z31q73+94DSDVWnvSGFMb6IYYkssU+dkDdgMPIkIAcDGieO2AE3tO8N9xc/n5nZ/xZnkJiwwj9t5YeozsQUy9mOJ+K0ouRFQQIdCtISUUCVgIrLVZxpghiFNLOPC+tXa9MWYssNxaOxOxccYA/3Q8WHxuohcAbxtjvIj9c1I2b6OQJj97gAd4A1km+YrFTATuBzKOpPHT5AUseWUJWWlZmDCjtYFLMZFOHEG4CoESgrhiI7DWfgd8l+3YKL/X/XK5biGSILPMkZ89YC3wN04Xi7kSqRVQLyWDhdmigVte3ZI+4/tQp1Wd4n0TSoGJ8q0I1GtICUE0sjgI5GUPSAPGIUskX7GY14ArMjyseGcFX4w7HQ3crG8z+k7sS6NOjUrkfSgFJyJahCDc48HrhTD13FVCCBUCl8nLHpCAuD1tQ5LC3Q9M8Hj57fO1vPZsIkd/1WjgUCUy6vSKIDMToqNLeEKKUghUCFwiL3vAYaROgLNLRCtgqrXUmrmZaU8nnKoNXPuC2vQZ34eWV2s0cKjh8xoK93hUCJSQQ4XABXKzB4RHSH6gh5H8QFHA08CAxB3MHR5/qjZwtcbViBsTR9tb22o0cIiSXQgUJZRQIQiQ3OwBO5Gtn/86/XoAk1b8zvYRs/n8fxImUalOJXo+3ZOO93QkIlp/FaFMRORpryEVAiXU0KdPAORkD2jbXtKwjgRSkGLxEzcdpPYzCfz4lXjGRleNpssTXej8SGeiq+geQlkgSlcESgijQlAEcrMH/F4buiJ5ggAG7jzGFWMS2fLhag44tYEvHnIx3Yd1p1KtSiX5FhSXiYj0BZR5ycoq4ckoSiFRISgkOdkDxkyB5yJOu4Q2P5jK4xPncfj1ZWzO8GDCDR0Gd6DXqF5UbVS1JKevBAmf11B4lq4IlNBDhaAQ5GQPaHAzdEBcQqNSMhj60mJqTFnAgRMZALQZ0Ia4sXHUalErr6GVECdKhUAJYVQICkh2e8CHM+HjtvABEJbp4a/vr6TL6Dlk7E0mAzi3/7n0mdiHBu0blPTUlWIgUo3FSgijQpAP2e0BvfvAwBlwY1XYby0Xfr2Ra0fMhi2HyECCwfpN7kez3s1KeupKMXJqayhThUAJPVQI8iC7PeCusfD7SBgcBk3m/sajT/5ItSWScbvmuTXpM7EPra5rpcFg5ZAon7E4y6tCoIQcKgS54G8PiK4E18+B6bFQee0+bhseT/P/bgWkMlivZ3vR4e4OhEdqZbDyir+NQL2GlFBDhSAH/O0BDfpDza/g20PH6HdHIu0+WoWxEBUTRdehXenyWBeiYrQyWHknSreGlBBGhcCPP9gDIqDJZ3Dw8jTajJ7H1a8uJeKk51RhmJ5P96Ry3colPWWllBDlMxarECghiAqBwx/sAX2g5oeZnDVtKQPOnU9Fpy5AmwFt6D2+NzXPqVmyk1VKHRV0RaCEMCoE+NkDtkHEB14u9K6md5cEqiadAKQuQL/J/WjYsWEJz1QprZzaGspQIVBCj3IvBPPnw7XXwf44S8uHttBnYjx1NxwAoF77+lw6uR/nXHpOCc9SKe1E+7yGMr1kqBAoIYYrOY+NMf2NMZuNMduMMcNyOB9tjPnCOb/EGNPU79xw5/hmY8zlbsynIFgLb7wBcYMg+old3JH0IQNumU7dDQeo3LQ613x2DfcsH6wioBSIsHCDNRDmtaRnaLlKJbQIeEVgjAkHXgcuBXYDy4wxM7MVob8LOGKtPdcYMwCYDNxojGkFDABaI1UbfzLGnGetDWoF8PR0uG8I/CfzINe1iueCoZsACKtdiUuf6UmspoVWCokxBk9kOBEZHk5meHHpO5aiFAtuPO06AdustdsBjDHTkVrs/kJwJTDaef0V8JqRqKsrgenW2pPAr8aYbc54i1yYV44kJcFVD56ggU3k/pkrCfNavJUiiX2sM5cN7UZ0VU0LrRQNT5QIQXqGB911VYLByt2ZtD8r0vVx3fhrbQTs8mvvBi7JrY+1NssYcwyo5RxfnO3aoFVqn/W/dF76+wIun7eYyLQsvOGG2vd25LZRvajSoEqwbquUEzyOwfhkelAXtEo55Mjxkzw+bAl1py9iwdRBDLmuvqvjh8zXFmPMYKT2O40bNy709f9bcJTZN06ly9E0ANKubsX9k/rQ+DzNCqq4gzdCtoNOZqoQKO6QkZzBZ68sZfMLC2lyRJ5da2dugFIoBEnA2X7ts5xjOfXZbYyJQAp3HSrgtQBYa6cCUwFiY2NtYSfZp2s1/nVeXY6EwVUv9OPP3c4q7BCKkideZ0WQkaFCoARGZlom815fRuLkBYQfTKUisLP92TS6vjdvD3c/oaUbQrAMaGGMaYY8xAcAN2XrMxMYhOz9XwfMttZaY8xM4HNjzIuIsbgFpwt8uUqEMQybNYBG1aKJ0qRwShDwRogQZKrXkFJEvB4vqz9ezQ+jEsnYfZxwYHenRsy/oDcvD2rOZb2D8+wKWAicPf8hwCwgHHjfWrveGDMWWG6tnQm8B3ziGIMPI2KB0+9LxLCcBTwQTI+hZtUrBGtoRcHrxBJkZOmKQCkc1lq2freV/w2L59C6/QDsvage8YP6kvr9ufw0zNCyZX2Bd5YAACAASURBVPDu74qNwFr7HfBdtmOj/F6nA9fncu0EYIIb81CUksRnLM5UG4FSCJKWJvHjkz/y25zfADjapBqzn+3D2vUX0ulfhvlfQ926wZ1DyBiLFaW0Yx1jcZauCJQCcHjbYWaPnM36L9cDkFajAnOf7smy9heTdW8E118EH/0IFSsGfy4qBIriEr6tIV0RKHmRsj+FOePmsOKtFXizvGRViGDxw5ew6LHupEysAENh2JMwYQKEFVNcogqBoriEdYzFniw1FitnkpGSwaIXF7FwykIykjOwBlbd3o6EsXFEnahGSlcI3wFvvQ133128c1MhUBSX8LmPenRFoPjhzfLy83s/M2f0HJL3JgOw488t+G5SX5Jb16PuS7BjKFStAl99D5deWvxzVCFQFJewkb4VgQqBIp5Am7/ZTPzweA5uOghA6sUN+XLKpeyIa8olKZAUBzvmQZMm8N//QuvWJTNXFQJFcQmfsdjjUSEo7+xcsJOfnvyJXQsl+07EOTWYObEvS69vRRVjeHgDfNAVjh+Diy+GmTOhvrvBwoVChUBR3MLZGvLqiqDccnDTQeKHx7Pp35LRuEKdSmwe1YuPB3fEExXO5UD3j2H0neDxSEGsTz6BSpVKdt4qBIriEr6tIatCUO44secEiaMTWfneSqzHElkpkoqPd+G5J7pyoGo01YAXPLD6UXjmVblmxAgYN674PIPyQoVAUdzC8RryetVrqLxw8vhJFjy/gMUvLiYzNRMTbjhvcAc+Hx3Hf5yMxn8BphyHR2+AWbMgKgrefRduvbVk5+6PCoGiuEWkfLXTraGyjyfDw/K3lzN33FxSD6QCcP5VLTnwXF8Gt6xNMlADeAXosh2u+Cts2AC1a8OMGdC9e0nO/kxUCBTFJYyzNYQai8ss1lo2/HMD8SPiOfLLEQDO7no2Laf0Y0S3xsxx+l0LvAZsmw+dr4aDB6FVK/jPf6CZ+8lDA0aFQFHcwjEWWxWCMsmOxB38+OSP/L7sdwBqnV+LPpP68f2V59PPGNKAukjd3uuAjz+Gv/0NMjKgf3+YPh2qVSvBN5AHKgSK4hLGEQK8KgRliX1r9hE/PJ6t320FIKZ+DL1G96LCXR24MyKMJU6/W4B/ADW8MOJpeO45Of7QQ/D3v0NEKX7aluKpKUpoYRwbAZpiokxwdMdREp5JYM1na8BCVEwUXZ/sSuxjXXi5chRjgAyktu7bwP8Bx4/DVbfAt99CeDi88grcf3+Jvo0CoUKgKC4RFqkrgrJAyoEU5k2Yx7I3luHN9BIWGUbsfbH0HNmTrXUr0x1Y5fT9G/A8UnJxyxa46irYuBFq1IAvviiZdBFFQYVAUVxChSC0yUh2ksK9sJCMExlgoO0tbYkbG0elZjUYB0xGKmg1A94B+jrX/vADDBgAx45JmohvvoFzzimhN1IEVAgUxSVMtAiBUffRkMKT4WHF1BXMHTeXlP0pAJz7p3Pp+1xf6l9UnwXAYKSMogEeRippVQasheefh2HD5PXVV8NHH0GVKiX1boqGCoGiuES4Yyw2uiIICazXsm76OhKeSeDIdnEFbXRJI/pN7kfTXk05CtwDTHX6nwe8D3Rz2qmpki562jRpjxkDTz9dOiKFC0tAQmCMqQl8ATQFdgA3WGuPZOvTDngTqAp4gAnW2i+ccx8CvYBjTvfbrbWrUJQQJDzKeQJ41FhcmrHW8susX4gfHs/eVXsBqN2yNn0m9qHlVS3BGL5AvvnvAyKBYcAIwFf1fOdOsQesXAkxMZIv6KqrSuLduEOgK4JhQLy1dpIxZpjTfipbn1TgNmvtVmNMQ2CFMWaWtfaoc36otfarAOehKCWOb0UQpiuCUkvS0iR+GvYTOxJ2AFClURXixsTRblA7wiLC+A24n9MF2LshK4JWfmPMmwfXXgsHDogd4JtvSi59tFsEKgRXAnHO64+ARLIJgbV2i9/r340x+4E6wFEUpQwRcWprSFcEpY19a/aR+Gzi6aygNSrQfXh3Og3pRGTFSLKAl4BRyDfXasAU4G7At9NjLbz5Jjz8MGRliUfQ9OlQs2YJvCGXCVQI6llr9ziv9wL18upsjOkERAG/+B2eYIwZBcQDw6y1JwOck6KUCBGOsThMI4tLDQc2HmDO6DmnCsRHVIzgkocuodtT3ahYQ6rCL0eMwSuda25AAsMa+I2TkgL33AOffSbtxx+HSZNKd5BYYcj3bRhjfgJyKpkw0r9hrbXGGJvHOA2AT4BB1lrfV6bhiIBEISuwp4CxuVw/GPl90bhx4/ymrSjFjgpB6eHQ1kPMHTuXtZ+vxXot4VHhdLy3Iz2G9yCmfgwghslRSE4gL9AEeAP4c7axNm+WraD166VuwLvvwsCBxflugk++QmCt7ZfbOWPMPmNMA2vtHudBvz+XflWB/wIjrbWL/cb2rSZOGmM+AJ7IYx5TcQz4sbGxuQqOopQUkdFhZKE2gpLkyK9HmDtuLqs/Xo31WMIiw+gwuAM9R/ak6llVAbDAp8BQxBgcBjwOjEFcQv3517/gjjvgxAlo2VLarVpR5gh0YTMTGARMcn5+k72DMSYKmAF8nN0o7CciBrgKWBfgfBSlxIisEC5CoCuCYufYrmPMmzCPle+txJvlxYQb2t3Zjl7P9KJ60+qn+q0BHgDmO+2uSJK4dtnGy8yU2IAXX5T2DTfISiDU4gMKSqBCMAn40hhzF/Absr2GMSYWuNdae7dzrCdQyxhzu3Odz030M2NMHSROYxVwb4DzUZQSIyo6nDQg3OPBWjCmpGdU9jmx5wTzn5vPirdX4MnwYMIMbW9tS69Rvah57mkr7jHgWWQbyIN4qzwP3MppY7CP33+HG2+E+fPFBvDCC5I4riz/PgMSAmvtIU5HWfsfX44Y3LHWfoqsxHK6vk8g91eU0kSkz0bg9eL1StIxJTik7E9hwZQFLHt9GVnpWQC0vrE1vZ7tRZ0L6pzqZ4HPkD1n3zbQEGAcUP2MUWHOHBGBffugYUP45z+ha9dgv5uSp4zYvBWl5PHFEYR7PGRmqhAEg7TDaSx4fgFLX11KZkomAC2vbkncmDjqXfhHp8W1yDbQPKfdBTEGZ98GgtOpIkaMkLpCvXuLa2jdusF7L6UJFQJFcYkIJw11uFeEoEKFfC5QCkz60XQWvbSIxS8tloRwQIv/a0Hvsb1p0KHBH/oeB0YjZSJ920BTgNs4cxsIJFHc7bfDv/8t7eHDYezYsuMaWhDK0VtVlOASkW1FoATOyRMnWfLKEha9sIj0o+kAnHPZOcSNieOszmf9oa8FPke2gfYiD/0HkG2gGrmMv2aNuIZu2ybVwz75BP7612C9m9KLCoGiuESUTwiyVAgCJTM1k6WvL2XhlIWkHpTi8E16NaH3uN406dHkjP7rkIf+XKfdBfEGap/HPT76CO67D9LSoF07+Oqr0Eod7SYqBIriEhGRvoAyrwpBEclKz2L528uZ/9x8UvZJSuizu55N73G9adq7KSab685xxP//ZWQbqDayDTSInLeBANLTJU3EVCet6J13wmuvQcWKQXhDIYIKgaK4RKTf1lBWVglPJsTwZHj4+b2fmTdhHieSTgDQMLYhvcf15pzLzzlDACwwDdkG2oM89O8HxpP7NhDAjh1w3XWwYgVER8Prr8NddwXhDYUYKgSK4hKRPmOxbg0VGE+mh9UfrWbuuLkc2ynZ6OtdVI/eY3tz3l/PO0MAANYj20BznHZnZBuoQz73+u47uOUWOHIEmjWTraAO+V1UTlAhUBSXiFQbQYHxerys/Wwtc8bO4cgvUsKkTqs6xI2J44JrLsCEnSkAJzi9DZSFbANNBm4n920gEHfQMWNg3Dhp/+Uv8PHHUldYEVQIFMUl1FicP9ZrWf/lehJHJ3Jo8yEAaraoSdzoOFrf2Jqw8DMf6RapfvU48DuShuA+ZBsovwzQhw7BTTfB//4nlcPGjZPUEaFYRSyYqBAoiktERfqEwEtGhkUeWQpIVbBNMzaR+Gwi+9dJbsrqzarT69letL25LWEROT+ZNyCRwAlO+xJkG6hjAe65YoW4hv72G9SpIyUl+56RB0EBFQJFcY3IMIM33BDmsWSkewENLbbWsvW/W0kYlcDelVIWsurZVen5TE/a3d6O8MicP6MTSD76fyDbQLWQbaA7yHsbyMf778P998PJk9Cpk9gDzj7bjXdUNlEhUBSXiAA8keGEebLISCvfQmCtZfuP20kYlUDSkiQAYhrE0GNkDzrc3YGI6JwfPRb4EniM09tA9wITyH8bCOTB/9BDp11D77kHXn5ZPISU3FEhUBSXiAQ8UeFEpmeRme5xjpQ/fk34lcRRieycvxOAynUr021YN2LvjSWyYu6fyUZkG2i2074YyQ0UW8D77tolW0HLlsmD/803pZaAkj8qBIriEhGIEABkpJW/mgQ7F+wk4ZmEU4XhK9asSNcnu9JpSCeiKkflel0ysg30Eqe3gZ4D7qJg20AA8fEwYAAcPAhNmsDXX6traGFQIVAUl4gAvE4sQUZ6+RGCpKVJJIxK4JdZUoo8ulo0XR7vQueHOxNdNfc9GQv8E9kGSkK2ge5BtoFqFfDe1sKUKZI11OuFyy+XusK1CjqAAqgQKIpr+K8IMsvBimDv6r0kjkpk88zNAERViaLzI53p8lgXKlTPO/XqJmQbKN5pxyLbQBcX4v7Hj8vWz9dfS/vpp2H0aE3/XRRUCBTFJXw2AijbK4IDGw6Q+GwiG77aAEBkpUg6PdiJrkO7UqlWpTyvTUG+8b8AZCIGYN82UGGe3xs3wtVXS2H5qlUla+gVVxTl3SigQqAoruHzGgLITPeW7GSCwKGth5gzZg5rP18LFsKjw4m9L5buw7oTUy8mz2stUtD8YWCnc+xuRARqF3Ie//ynJIpLToY2bWRF0KJFYd+N4k9AQmCMqYkE/TUFdgA3WGuP5NDPgxQMAthprb3COd4MmI5sCa4AbrXWZgQyJ0UpKf6wNVSGVgRHfzvK3HFzWfXhKqzHEhYZRoe7O9BjZA+qNqqa7/XbgYeA/zrt9sg2UOdCziMrS4rGvPCCtAcOhHfegcqVCzmQcgaBrgiGAfHW2knGmGFO+6kc+qVZa3OqEDcZeMlaO90Y8xayQnwzwDkpSokQyWljsScj9IXgeNJx5k2Yx8/v/ow304sJN7S/qz09n+5J9aY5Vfz9I+lIgfiJzuuqyLbQfRQ+wmL/fqklnJhYfgrKFyeBCsGVQJzz+iMgkZyF4AyMpBXsA9zkd/1oVAiUEOUPK4KToSsEyfuSmT9pPsvfXI7npAcMtL2lLT1H9aRWi4K548xCjMHbnPYtiCjUL8J8Fi+W1NFJSVC/Pnz5JfToUYSBlFwJVAjqWWv3OK/3AvVy6VfBGLMccROeZK39N7IddNRa68vcvhtolNuNjDGDgcEAjRs3DnDaiuI+/kKQnhx6QpB6KJWFLyxk6StLyUyVrHmtrm9F3Og46rSqU6AxdgOPAl857VZIbqC4IszHWnjrLSkik5kJ3bqJfaBBg/yvVQpHvkJgjPmJnIV8pH/DWmuNMTaXYZpYa5OMMc2B2caYtcCxwkzUWjsVmAoQGxub230UpcSI5LSx+Pix0DEWpx9LZ9GLfywMf95fz6P32N7Ub1ew7/CZSF6gMYhnUGXgWeARihZfnZYmZSQ/+kjaDz0Ezz8PUbnHpSkBkK8QWGv75XbOGLPPGNPAWrvHGNMA2J/LGEnOz+3GmETEXvQvoLoxJsJZFZyFxJUoSkgSxukVQfLx0r8iyEzNZPHLi1n4/ELSj5wuDN97XG8adcp1cX4Gc5BCMeud9rVIlHBRc7z9+qukili5UspHvvMO3HxzEQdTCkSgW0MzkfKgk5yf32TvYIypAaRaa08aY2oD3YApzgoiAbgO8RzK8XpFCSWsk045uRRvDVmvZe3na4kfHs/x3ccBKQzfZ3wfGncv+LbrQaRUpPOlnXOB14DLA5jbDz9I/YAjR6SQ/NdfQ9u2AQyoFIhAhWAS8KUx5i7gN+AGAGNMLHCvtfZu4ALgbWOMF/nSNMlau8G5/ilgujFmPLASeC/A+ShKieJ1VgQpKaVTCHYt2sWsR2aRtFQW3w06NKDf5H4069ssx7KQOWGBT5DUEIeAaGAE8CSQdzxx7ni9MGECPPus2Ab+8hcJEquev3OS4gIBCYG19hBwRqkHa+1yJF4Ea+1C4MJcrt8OdApkDopSmrCOjSAttXQJwbGdx/hp2E+sm7YOgJj6MfR9ri8X3XZRjmUhc2MbkhbalxqiL/AWshooKkePwq23wn/+I+6gY8fCyJFaRaw40chiRXERGyVPr7S00mEszkjOYMGUBSx8fiFZ6VmER4fT9YmudB/WnaiYglteM5C0EOOQmIBawIvArQRWh23NGrjmGvjlF6kh/Nln8Kc/BTCgUiRUCBTFTZytoZPpWfl0DC7Wa1nz6Rrih8dz4vcTALS+sTX9JvejepPC7bcsQvy21znt24C/U/jUENn5/HO4+27xEGrXDv71L2jePMBBlSKhQqAoLnKyruQ7iEw7gddb/Nsbvspg8SPi2bNCQnwaXtyQy1+6nMbdChd/cwwYjmz9WOAc53WuboQFJDMTnngCXnlF2oMGSRGZihUDHFgpMioEiuIiyedL5G3NrMMcP168xs5di3YRPzye3+b8BkCVhlXoO6kvbW9uWyg7gAW+Bh4E9iAPiSeBp4FAn9V79sD118OCBRAZKWUk771XU0WUNCoEiuIiKU4KhlpZhzhypHiEYN+afcx+ejZbvt0CQIUaFeg+rDudhnQislLhwrl2IakhZjrtzkgUZ47eHoVk/nwRgb17oVEjKSjfubCZ55SgoEKgKC6S1kJKrNfMPMzhw5ZmzYL3VffwtsMkjEpg3fR1YCGyciSdH+1M18e75lsYJjseJAbgaaR0ZFUkRfS9FLxcZG5YC6++Co8/LhlE4+Jg+nSol1tCGqXYUSFQFBexNSqSUrsSlQ+msnfrCeiYf5rmwnI86Thzxs5h5XsrsR5LeJRTF2B4/nUBcmIVYgxe5rSvAV4hj8RfhSAlBQYPFsMwiBhMmiQZRJXSg/46FMVFIoBD59Wi8sFUDmw8hHy3dofUg6nMnzSfpa8txXPSgwkztLuzHXHPxlGtcbXCj4ek+30RWRGchSSIc6vQ19at4hq6bp3UDPjgA9kaUkofKgSK4iKRiBA0XriLo78cBpoFPGZmWiYLX1jIwucXnkoK1+r6VvQe25vaLYvmxDkLqQvwKxIH8BAwHqgS8GyFb7+VILFjx+C882DGDGjVyqXBFddRIVAUF4kADjt2guSdhwIay1rLphmbmPXYLI79Jsl6z+1/Ln0m9KFBh6LlYt6PpIl2dmq4CDEGuxXe7/FIAfnx46V99dXw4YdSV1gpvagQKIqL+LaGAE7+XnQh2L9+Pz88/AO/xv8KQL229ej/cn+axjUt0ngW+ABJEncEcQMdQ9HTROfEgQOSMO6nnyR+YuJEePJJdQ0NBVQIFMVFIoFDzorAHjpc6OvTj6aTOCaRpa8uxXosFWpUoM/4PnQc3JGwiKL572wB7kHKB4JkB30TNzatTrNoEdxwA+zeDXXqwLRp0PeMLGRKaUWFQFFcJAI4fK4IQfixw3izvAV6gHs9XlZ9uIr44fGkHkgFAx3v7Uif8X2oVKtSkeaSAUxB9v5PAnWQ4jEDCSw/kD/ZXUO7dpVSko3ccDlSig0VAkVxkQggs3IUxypUpVr6cY7tPEaN5jVy7W+9lo1fbyRhVAIHNx4EoHH3xvR/pT8N2he9JuMCxCXUl+/9DqRmcMEqDheMEyckV9CXX0r70Udh8mSJGFZCCxUCRXER3zPwcExNqqUf59CWQzkKQUZyBqs/Xs2SV5ZwaLPYEqo3q06f8X1oM7BNgWsDZOcop/MDAbQA3gZ6F2m03NmwQaqIbdoEMTHw/vvqGhrKqBAoiov4/kMdqlqLZgd3cGjrIc7tL9n6vR4vOxJ2sOaTNWz8eiMZyeIKWvXsqvQY0YP2d7Yn3MleWlg8SLGYEUh+oEik6tNIil4sJjemTYO//U2CxVq3lqyh55/v8k2UYkWFQFFc5LQQiJ3gwPoD7Fq0i00zNrH287WcSDpxqm/j7o3p9FAnLrj6giIbgkFiAp4E1jjtrohLaOsij5gzJ09K1tDXXpP2LbfAW29JsJgS2gQkBMaYmsAXQFNgB3CDtfZItj69kVrWPloCA6y1/zbGfAj0QjLeAtxurV0VyJwUpSQ5JQTVZTd+xdsrWPH2ilPnqzerTttb29L2lrbUahHYjv1qYCjwo9NuDEwAbiLw/EDZ2bIFBg6En3+GqCjJGnrPPeoaWlYIdEUwDIi31k4yxgxz2k/5d7DWJgDt4JRwbAP+59dlqLX2qwDnoSilAp+N4GjThmQSQSRZ1Dq/Fs37NafNwDac3fXsIu//+9iFJIf7BIkPqIZsAT2I+9tA1krt4Pvvl62gZs3giy/g4otdvpFSogQqBFcCcc7rjxBX5ady6wxcB3xvrU0N8L6KUirx/YfyNqzCKzzEvHlwUXd3EjccQzKC/gNxB41EUkaPxF1vIB/Hj4sAfPaZtAcOlAIy1Qqf1kgp5QS6gqxnrd3jvN4L5JdYdgAwLduxCcaYNcaYl4wx0QHOR1FKFJ8QVKwGJ6jCyajARSADeBmpEDYZEYEBwCYkYVwwRGDZMujQQUSgUiVJGPfZZyoCZZV8VwTGmJ+A+jmcGunfsNZaY4zNY5wGSH2LWX6HhyMCEoXYt54CxuZy/WDENZrGjQtXck9RigvfX6a9QH4eLnxw8Sks8BXyn+QX51hPJB7ArdxA2fF64e9/hxEjJECsXTupHaBeQWWbfIXAWptriVJjzD5jTANr7R7nQb8/j6FuAGZYazP9xvatJk4aY3ypUHKbx1RELIiNjc1VcBSlJOnu/DzRVn4eOZJr1zyJRwxuy532Bchq4C+4FxWcnZ074c47IT5e2g8/LAFi0bpOL/MEujU0ExjkvB4EfJNH34Fk2xZyxAMj1rOrgHUBzkdRSpSLkeXtsbOB6oUXghXAZUiB+OXIUvxtxDX0rwRHBKyVrZ82bUQE6tSRNNL/+IeKQHkhUCGYBFxqjNmK/O1OAjDGxBpj3vV1MsY0Bc4G5mS7/jNjzFpgLVAbSYuiKCFLBUQMCAO6FnxraAuyZI5F3EGrARMRF7vBBC/gZ88euOIKWQmcOCFpo9etg7/8JUg3VEolAf19WWsPAWfkGLTWLgfu9mvvIIfKd9baPoHcX1FKI92RXD90hyMH8+67C/n28x4SHVwBcQMdBtQM4hythU8/hUceEbGqVk0CxW6+WWMDyiNux50oSrmnh+9F99xXBBuRRHDNEcOXRb45bUUyhgZTBH75BS67DG67TeZ3+eWyCrjlFhWB8ooKgaK4TFffi05wMPmP55YhxeFbAx8CXsQVdD3wDlI3OFhkZsKUKXDhhVI8pmZNqR72/fdwVjBvrJR6NNeQorhMDaBZMvwaA7vqybf9eMSA5jjkEIWsCIYi8QHBZt48ePBBWL1a2rfcAi++KIZhRVEhUJQg0ClDCsNv7A+xXvjZWXtXQYrGPwIUvdpAwdm5U8pFfvGFtJs1k0Rxl11WDDdXQgbdGlKUIPBXpwRBxl9EBOogCeF2IvEAwRaB1FQYMwZathQRqFhRisqvW6cioJyJrggUJQhcZqBaOhzbCzXfg62joFoxVO7KyoKPPpKH/u7dcuyGG+D550ED8pXc0BWBogSBOsDBKDj/T3B4PMz4LLj3s1YKxLRpI+Ujd++W9BBz5siKQEVAyQsVAkUJEhFhMGK4vH7uOfm27jbWwg8/QKdOcN11sHkzNG8uCeJWrICePd2/p1L2UCFQlCAycKAYaLdsgTvuAI/HnXE9Hika37Ej/OlPsHw51K8Pb7wBGzfCTTdBmP7vVgqI2ggUJYhERkoE72WXyU9jJK9PeNFKE5OeLuNMmQJbt8qxevXgscfggQe0bKRSNPQ7g6IEma5dJWircmWp9tWzJyxaVPDrPR5YsgSGDIEGDaRw/NatstJ4803YsUNcRFUElKKiKwJFKQZ69BAxuPZaWLhQxKFfP/nXuTPUrQtVqkBGBhw7Jsbe9eth1SqJAj506PRYHTvKCuCGGyBC/wcrLqB/RopSTPToAdu2SY7/F1+UB/xPPxXs2mbNJEvoHXfARRcFd55K+cNYG3o1XmJjY+3y5cvz76gopZT9+0UE5s6FlStlFXD8uOT/r1ZNVgitWkHr1tCrF7RooQnhlMAxxqyw1sZmP64rAkUpAerWFc+em24q6ZkoihqLFUVRyj0qBIqiKOUcFQJFUZRyTkBCYIy53hiz3hjjNcacYYDw69ffGLPZGLPNGDPM73gzY8wS5/gXxpioQOajKIqiFJ5AVwTrkIJLc3PrYIwJB14H/gS0AgYaY1o5pycDL1lrzwWOAHcFOB9FURSlkAQkBNbajdbazfl06wRss9Zut9ZmANOBK40xBugDfOX0+wi4KpD5KIqiKIWnOGwEjYBdfu3dzrFawFFrbVa244qiKEoxkm8cgTHmJ6B+DqdGWmu/cX9Kuc5jMDAYoLEmV1cURXGNfIXAWtsvwHskAWf7tc9yjh0CqhtjIpxVge94bvOYCkwFMMYcMMb8VsT51AYOFvHaYKLzKhw6r8Kh8yocZXVeTXI6WByRxcuAFsaYZsiDfgBwk7XWGmMSgOsQu8EgoEArDGttnaJOxhizPKcQ65JG51U4dF6FQ+dVOMrbvAJ1H73aGLMb6AL81xgzyzne0BjzHYDzbX8IMAvYCHxprV3vDPEU8JgxZhtiM3gvkPkoiqIohSegFYG1dgYwI4fjvwN/9mt/B3yXQ7/tiFeRoiiKUkKUx8jiqSU9gVzQeRUOnVfh0HkVjnI1r5BMQ60oiqK4R3lcESiKoih+lEkhKK05kIwxNY0xPxpjtjo/a+TQF/kPqQAABUpJREFUp7cxZpXfv3RjzFXOuQ+NMb/6nWtXXPNy+nn87j3T73hJfl7tjDGLnN/3GmPMjX7nXP28cvt78Tsf7bz/bc7n0dTv3HDn+GZjzOWBzKMI83rMGLPB+XzijTFN/M7l+Dstpnnd7riC++5/t9+5Qc7vfasxZlAxz+slvzltMcYc9TsXlM/LGPO+MWa/MWZdLueNMeYVZ85rjDEd/M4F/llZa8vcP+AC4HwgEYjNpU848AvQHIgCVgOtnHNfAgOc128B97k0rynAMOf1MGByPv1rAoeBSk77Q+C6IHxeBZoXkJzL8RL7vIDzgBbO64bAHqC6259XXn8vfn3uB95yXg8AvnBet3L6RwPNnHHCi3Fevf3+hu7zzSuv32kxzet24LUcrq0JbHd+1nBe1yiueWXr/yDwfjF8Xj2BDsC6XM7/GfgeMEBnYImbn1WZXBHY0psD6UpnvIKOex3wvbU21aX750Zh53WKkv68rLVbrLVbnde/A/uBIseZ5EGOfy95zPcroK/z+VwJTLfWnrTW/gpswz1vuXznZa1N8PsbWowEbwabgnxeuXE58KO19rC19gjwI9C/hOY1EJjm0r1zxVo7F/nSlxtXAh9bYTESjNsAlz6rMikEBaQkciDVs9bucV7vBerl038AZ/4RTnCWhi8ZY6KLeV4VjDHLjTGLfdtVlKLPyxjTCfmW94vfYbc+r9z+XnLs43wex5DPpyDXBnNe/tyFfLP0kdPvtDjnda3z+/nKGOPLQFAqPi9nC60ZMNvvcLA+r/zIbd6ufFYhW7PYlJIcSNnJa17+DWutNcbk6rLlqP2FSCCej+HIAzEKcSN7ChhbjPNqYq1NMsY0B2YbY9YiD7si4/Ln9QkwyFrrdQ4X+fMqixhjbgFigV5+h8/4nVprf8l5BNf5FphmrT1pjLkHWU31KaZ7F4QBwFfWWo/fsZL8vIJGyAqBLSU5kAozL2PMPmNMA2vtHufBtT+PoW4AZlhrM/3G9n07PmmM+QB4ojjnZa1Ncn5uN8YkAu2Bf1HCn5cxpirwX+RLwGK/sYv8eeVAbn8vOfXZbYyJAKohf08FuTaY88IY0w8R117W2pO+47n8Tt14sOU7L2vtIb/mu4hNyHdtXLZrE/+/vbNniRyKwvBzbXYLGz+atVJBsFzBQnZ7QYtBYYspRFAbwZ9gs537FxYst1MQUgiCH6VgpSy7oI6dINpZyhZjcc7IdXZ0RkyicN8HwkxucpN33tzkJOdmkhw0daQrogqsxAUF+tWOp3Tn4lXKqaGHZyAFu8ulCmR164FpPAMJXvAMpA7IfHmdLPe/3KQfDBt5+RnsxUCl6Aoh9DRSKyGEfuAr8Pet/fJtt4XlTzebpuXpV8v28ozeb8C++5MB1WB3FQ0BI8DRK7S8SFcIYQz4CVTq9fpNVN5ym5ao61M0WsEeQQN2FTzp+nqASR5fGReqy7WNYp2vh1FZkX61IwPm/e6hCeDWT3Ty8aqIHvC3HoBZLFd2B1wDO14+AGxH800DZ1hEX43Kh7EdtQZsAB9y0tUH7AHnwC7Q6+XjwHo03yAW6bua6u8Dv7ED2i+guyxdwBdf94l/Lr0Hv4A54B9wHA2fi/CrVXvBUk0V//7Rf3/N/RiO6q56vVNgKuf23k7Xru8HDX+ydtu0JF1rwB9f/wEwGtVddB9rwEKZunz8O/CjqV5hfmEnfVfeli+xvpxlYNmnB+xNjxe+7vGo7qu90j+LhRAicVJODQkhhECBQAghkkeBQAghEkeBQAghEkeBQAghEkeBQAghEkeBQAghEkeBQAghEuceWIFqBK6RbAYAAAAASUVORK5CYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAD4CAYAAADvsV2wAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABH2klEQVR4nO2dd3hU1daH351GQkkgIfTe+wUJSBMQUAGVppfeEWzotd2r6LV/XsVewIJ0kI70XlWqFAEB6TXUQAgkpGf298c+Y4aQQCCTmWSy3ueZZ86cvc85a04mv9mz9tprKa01giAIgufj5W4DBEEQBNcggi8IgpBHEMEXBEHII4jgC4Ig5BFE8AVBEPIIPu42ICOKFi2qK1So4G4zBEEQchU7duy4pLUOTa8txwp+hQoV2L59u7vNEARByFUopU5m1CYuHUEQhDyCCL4gCEIeQQRfEAQhjyCCLwiCkEcQwRcEQcgjiOALgiDkEUTwBUEQ8gg5Ng5f8Dy0hgMHYPdu2LcPTp2CK1cgOhoCAqBQIShXDurXh7AwqFYNlHK31YLgOYjgC9nKtWuwcCEsXgzr1sHFi5k/tlYt6N0bBg+GkiWzz0ZByCuonFoAJSwsTMtK29yJzQYrV8KYMbB0KSQkpLaVLAmNGkHt2lClCgQHm5F9fLz5cjh8GHbtgl9+gchIwAv8i8ITL8DwZ6BykIxSBOFWKKV2aK3D0muT/x3BacTEwNix8NVXcOKE2acUtGoFjz0GDz54azdNDLAFsAEJNtgdC2f9Id4HRmEeAKFAI6AV0AmokZ1vShA8CBF8Ictcu2ZE/ssvrVE5UKECDB0KAwdCqVIZH3sZmAvMB9YAifYGL6Cg2cyfAklXIEkDIRDhBUsxj1eBDsArQBunvitB8DwkSke4axIS4LPPoFIleOstI/ZNm8L8+XD0KLz+evpibwOWAY8BJYEnrddJQEPgBWAm8CcQC1z3hrgi8O53gB9QHpqOhv42CLCObQv0A65m71sWhFyNjPCFu2LlSnjuOTh0yLxu3hz+7/+M+yYjl811YCzGNXPE2ucFPAT8E3gEKJ7B9by94c03NWHVY3hxUBQRwxP4x6xE1r/kw/Li+RlduhBTywTyq1LMBJo4640Kggchk7bCHXHqFLz4Ivz8s3ldvTp8/jl06JCx0McC3wEfA/YgnfLAU0B/ICOPT0J0AsfXHufUhlOEbwrnwp4LJMYkZtAb4soEcrhVeY70qsPoDlVp4SUxnULeQyZthSyTnAyffALvvw9xcVCggHHjvPAC+Pmlf0ws8D0wklShbwSMwEy2eqdzTFxkHPtm7+OvuX9xYv0JbEm2G9oDggMoUrkIcQSwZYcvXrZkapWPxftaJIRfo95Pf1Lvpz+ZWSuUiyNa0LVPXZQE8wsCIIIvZIKDB6F/f/j9d/O6Rw/49FMoUyb9/jbgJ8yE6jlrXyPgHcwEa1r5taXYOLryKDt+2MHhpYf/FnnlpSjbrCwV21akbLOylAorRf6i+f8+LuQn6NsX/M7Bxg2asv4XObj0MCtHbaPo/gj+7DePa/MP0OPHRwkoEuCkuyEIuRdx6QgZYrPB6NHw6qtmVF+2LIwbBw88kPExO4DngM3W64bAe6Qv9InXE9k5didbv9xK1IkowIh8pXaVqNOrDtUeqXaDwKfH00/D999DxYqwcycULgwJSSk8NXk3JV9cQb7oRALLBdF7cS+K181ohkAQPIdbuXRE8IV0CQ+HQYNg9Wrzun9/+PprCApKv38E8AZmUlZjJl9HYiJn0oaCxV2JY9vobWz9aiuxl2IBKFyhMA2fbEj9gfUpWKJgpu2Mj4cWLWDHDnjmGfMFBSbcs/mxK7TsOYfS285SsGRBBm8cTJGKRTJ9bkHIjYjgC3fE8uXQp48JsyxaFH74Abp1S7+vBmZgRvWXMT7CF4A3gcA0feMi49j48Ua2fbuNxGgz+Vq6cWlajGhB9U7VUXc5ybp3r8m/Y7MZt1OY9VFfDXSIT6Zvh5+osP4EwVWDGbxhMAWKFbir6whCbuBWgu+UOHylVHul1EGl1BGl1Gu36PeYUkorpdI1RnAvKSnw9tvQsaMR+w4djJhmJPbngW5Ab4zYt8XEzn/CjWKfnJDM5s8383WVr9k4ciOJ0YlUbFuR/mv6M2TLEGp0qXHXYg9Qp46JHNLauHhSUsz+dsBz/j5MX9CTa/VLEHk4kpldZ2JLsd3yfILgqWR5hK+U8gYOAQ8A4cA2oJfWen+afoWAJZilM8O11rccvssI37VERJhR/apVJrzy/fdhxAjwSmdIoDGTss8DV4BCwOfAEG7002ut2T97P6tfW03U8SgAKrapSJv/taHMvRnM+N4lMTFQs6ZxRX37rRF+gGtAJSDhfAwjwsaQdCaa9l+3597n7nXq9QUhp5DdI/zGwBGt9TGtdSLmF37ndPq9j3HrxjvhmoIT2boVGjQwYh8aahZVvfFG+mIfCTyO8c1fwSya2gs8wY1if2HPBSa0mMCcHnOIOh5FaK1Qei/pTb/V/Zwu9gAFC5rUDgDvvWcmmcH80ngDiClRkF9GdwRg7etruXpa1uQKeQ9nCH5p4LTD63Br398ope4Bymqtl9zqREqpYUqp7Uqp7REREU4wTbgd06aZ1bFnzkCzZibSpV279PtuAOoDP2OEdDwmrUE5hz5JsUmsfm01YxqO4fSm0xQoVoBHfniEp3Y/RdWOVbM1Jr5bN2jYEM6fN/MOdp4GygIrO9egQLeaJMYksvSZpeTU+StByC6yPZeOUsoL84v/5dv11VqP0VqHaa3DQkNDs9u0PI3NZhZO9eljcuI8+SSsX59+bH0K5udZK8w3e2PgD2AQN47qjyw/wre1v2XjyI3YUmw0Gt6I4YeG03BYQ7x8sj9tk1Lwzjtme+TI1FG+P/Cu1WfyNx3IF5iPQ4sPcXTF0Wy3SRByEs74LzyDGUDZKWPts1MIqAOsV0qdwKQ5WSgTt+4jNhZ69jR+ei8vk+nyu+/A1/fmvucwk59vYRZUvYoZ6Vdy6BN3JY6f+/7MTx1+IupEFMXrFWfI5iF0/KYj/kH+LnhHqTz8cPqj/H6YXyJ/lipE8ddbALDx440utU0Q3I0zBH8bUFUpVVEp5Qf0BBbaG7XWV7XWRbXWFbTWFTApzzvdbtJWyB7OnzcunNmzTeGRxYvh+efTz4OzEbgHWI+Jq18JfAQ4fi8cXXWU7+p+x58//YlPgA/tPm7H0O1Ds8VPnxkcR/kffWTi9MGEiw6z+ix5Mgy/Qn6cWHeCs9vPusFKQXAPWRZ8rXUyMBxYAfwFzNJa71NKvaeU6pTV8wvO49Ahk754+3azMnXzZhN6mRYNfAu0xoRetgJ2Y8Kw7CTFJrF0+FKmPjiV6DPRlGlahqf3PE3zfzfH2ze9LDmu4+GHTVz+hQswa1bq/iEY4Z9f2J/qTzYEYNMnm9xhoiC4Bac4VrXWS7XW1bTWlbXWH1j73tJaL0ynb2sZ3bue3383KYxPnDAlBrduNWUG0xIHDAaeBZIxi6hWcWPa4rPbz/JDgx/YNnobXr5etPlfGwb9OojgKsHZ/j4yg1IwfLjZtq+8BSgBdMXMSez5VxO8fLzYP2c/V45dcYOVguB6pABKHmDZMrj/frh0yYzo160z4ZdpOQPcB0zEFBb5CfiCVBeO1potX21hXLNxXD50mdDaoQz9fSj3jbjPJZOyd0KvXlCkiPmic1zOYYXn82OZQGr3qYu2mfckCHmBnPVfKjidyZOhUyczUTtgACxYYFIbp2UHJvpmB1ARk/yst0N73JU4ZnWbxYoXVmBLstH4ucYM2z6MEvVLuOJt3DH585tcQHDjKL81pgbuWSD5ebP4au/0vdiSZfWt4PmI4HswX31lRD45GV57DSZMSD8S52fMyP4sxl+/DfiHQ/uZ38/wQ4MfODD/APmC8tF9bnc6fN0BH/+cnV3bvtp2xgy4fNlsK6CP1b6sQQlCqoUQGxHL8XXH3WGiILgUEXwP5X//M8VJAL74Aj788OZIHI2JunkM47sfhInECbG3a83vo39nfIvxXD15lVJhpXhy55PU7FbTNW8ii1SpAu3bm0idSZNS9z9mPS9Qipo9zUTGvpn7XG+gILgYEXwPQ2uTA+eNN4zAjxuXKvyOJGGiVkZYrz8CxmESHQEkxyezcPBClg1fZlw4zzdm0IZBFKmUu9ILDx1qnqdOTd1X03pcAWJ61AHgr7l/kZKY4mrzBMGliOB7EDabian/6CPw8TFpEwYPvrlfNKZg+ATM5OxczIIq+w+Aq6evMuG+CeyauAufAB+6TetGh6864JMvZ7tw0qNjR5PD/48/YL9DOj/7KH9ZrVCK1ytOfFQ8R1fKylvBsxHB9xBSUsxodtQoU2N27lyzmjYt5zETlyuBUOAXTIpjOyd+OcGYhmM4u/0shSsUZsjmIdTtVdcF7yB78PeHxx832z/9lLrfLvjzgFqWW2fvjL0utU0QXI0IvgeQkgJPPAHjx5volMWLTWROWg4BzYCdQGVgE6bWrJ0dY3Ywue1kYiNiqfRAJYZuH0qJf+TMKJw7oW9f8zxtmnF5gZmUroQprh5vuXUOLjhIcnyyO0wUBJcggp/LsdnMyH7iRCP2S5emX3N2K9AcOA6EYcS+iv0cKTZWvLyCxU8uRqdomr7SlD5L+5A/5Nb1ZHMLLVuapHAnTsAma2GtIvWXzdJKRSherziJMYmc3nw6g7MIQu5HBD8XY7OZkf2ECUbslywxeXLSshpoA1zCFBNfBxSz2hJjEpnVbRZbPt+Cl48XncZ34sFPHsxxC6mygpeXWYgFN07e2os2rAAqtqsIwLHVx1xqmyC4Es/5r85j2Ef2EyZAQIAR+9atb+43D3gYiMVkjFwA2EuEXwu/xoT7JnBw4UH8i/jTb1U/Ggxq4KJ34Fr6WMH3c+aklkC8F3MvDgBB7Uz+z+NrJB5f8FxE8HMhNhsMG2Z89rcS+0mY6lSJmCLjE0lNk3B2x1nG3juW87vOE1wlmCe2PEGF1hVcYr87qFfPxOVfupTq1vHFLDQDOHBfebx8vTi77SzxUVKUTfBMRPBzGTabKVYybpwR+8WLTZ6ctHwNDMTksH8L+IrUP/aB+QeY2HIi0WejKd+yPEO2DCGkWsjNJ/EglIIuXcz2/Pmp++3FvdYW9KNMkzJom+bE+hOuNU4QXIQIfi7CZjPpAsaONeGGixZBmzY39tGY6lT/sl5/hqn2ZI+x3/LVFmZ2m0lSbBL/GPAP+q3q5zGTs7ejs+W0nz8/NVrHLvirgYqWW+fYGvHjC56JCH4uQWt46SUYM8aI/eLF0LZtmj7AK5gRvRcwFnjJ3mbTrPz3Sla8sAI0tPmgDZ0ndMbbz725611J06YmS+ixY7DXCrmvjUn9fA7wbmsmbo+vFj++4JmI4OcS3n3XJEPz9TUj1LRinwIMxRQP9gVmYlInAKQkpjCv3zw2f7oZLx8vukzuwn2v35etBcVzIt7eqesTFiwwzwqw38o/GpfGr6Aflw5c4tqZa+4wURCyFRH8XMAXXxjB9/KC6dPhoYdubE/BFC0Zh0mVsAgzWQuQcC2BaQ9P489pf+JbwJfeS3rzj37/IK9yKz/+Gl9vyrcqD0i0juCZiODncMaPN64cMBO1jz12Y3sKZnJ2MlAAWAbYvw9izscwsdVEjq0+RoFiBRj4y0AqP1jZRZbnTNq2NfUAduyA09YaK/sIfz1Q1hJ8WYAleCIi+DmY2bNTsz1+9RUMHHhjezImtn4qJp58GalhhpcPXWZc03F/h10O3jSYUg1LucjynEtAADz4oNleutQ8l8OkWbgGJFjF18/+LsXNBc9DBD+Hsny5WSxks8F775ksmI4kA32B6UAhYDmmiAlA+NZwxjUbR9SJKEo1KsXgjYMJrpwz6s3mBNq3N88rVqTua2Y9H7ynJMpLcWHPBZLiklxumyBkJyL4OZDffoNu3SApybhz/vvfG9uTMOUHZ2LEfgUmTw7A0VVHmdx2MnGX46jasSoD1g2gQLF0ahrmYexzIGvWmHsM0NRq21LQj2J1imFLtnH+j/NusU8QsgsR/BzGjh3w8MMQF2fy5Hz66Y2VqpKAXsBsIBCT5tguVvvn7Gfaw9NIup5Evb716DG/B34F/NJeIs9TvjzUqAHXrsEWq365/R5uAko1Nq6vM7+fcYt9gpBdiODnIP76y7gboqOhe3f4/vsbxT4R6IEpWBIErAKaWG07x+5kTo85f1en6jKpC96+eSfG/k6xj/Ltbp26mEnvY0Bg49KACL7geYjg5xCOH4d27Uyulw4dYMoUEzduJxHojkmGVhizMrSx1bbx440sGroIbdO0frc17b9sj/LKWzH2d0pawfchtTbAebvgbxXBFzwLEfwcwLlzJof92bMmd/ucOaZqlZ0ETIWmBUARYA0mp73WmtWvrWb1q6sB6PBNB1q91SrPLai6G1q1gnz5jAstIsLss7t1dtUuhk+AD1eOXSH2UqzbbBQEZyOC72YuXzZif/QoNGxo8uPkd0htE48p1LEYCMaI/T2YoiWLn1zMxpEbUd6KrlO70nh44/QuIaRD/vzmy1VrWLXK7LNH6mz28fo7hPXMNhnlC56DCL4biY42Rbb37YOaNU0oZmBgans80BVYCoQAa4EGQHJCMnN7zWXnjzvx8feh5/ye1OtTzx1vIVeT1q1jnw/ZBpSQiVvBA/FxtwF5lbg4k9fl99+hYkUzyixa1KEd6IKJwimKGdnXw1SomtltJsdWHSNfYD56LepF+Zbl3fAOcj/trJwKa9eakX5RBVWBw0Cy5ceXBViCJyEjfDeQlAQ9esD69VCyJKxeDaVLp7bHAp0wYh+KKUlYD4iLjGPKA1M4tsqkShiwfoCIfRaoWxdCQiA83LjUINWPf6yRJfjbRfAFz0EE38WkpMCAAcZXHxxsRvaVKqW2xwKPYqJwimPyu9QBos9GM7HVRMK3hBNUPohBGwZRskFJN7wDz8HLK7VS2Lp15tk+C7KrQmH8Cvlx/eJ1rl+87g7zBMHpiOC7EK1h+HCT8bJgQeOzr107tf06pv7sWqAERuxrAZFHIxnfYjwX916kaM2iDN4wmJCqnl2hylXYq4XZBf8ea/9OL0WxOqbU+4U/L7jeMEHIBkTwXciIEWYxlb1aVaNGqW0xQEeMyJe0nmsAF/ZcYEKLCUQdN3lxBv06iMAygTefXLgrHAVfa+M68wL2AUXrFQfM30AQPAERfBfx4YcwciT4+Jg4e8ei49FAB+BXoBRG7KtjUvRObDWRmPMxVGxTkf5r+pO/aN4oR+gqataE4sXh/Hk4eNCstq2BSTudWNeM8C/+edGdJgqC03CK4Cul2iulDiqljiilXkun/SWl1H6l1B6l1BqlVJ6aafz2W3j9dZMmYcoUkyvHzjWM2G8AygC/ANWAoyuPMqXdFOKj4qnRpQa9l/QmX6F87jDfo1HqZj++3a1zXkb4goeRZcFXSnkDozG6VQvopZSqlabbH0CY1roeMAf4OKvXzS1MnQrPPmu2v/8eevZMbbsKtAc2AmUxI/sqWEnQHplGUmwS9QfW55+z/4mPv0TQZhf2QvBr15pnu+Dvs3z4EfsisKXYXG+YIDgZZ4zwGwNHtNbHtNaJwAygs2MHrfU6rbV9jfoWzGDW41mwILVoyccfw7BhqW1XMZWpNmMKcKwHKgM7x6UmQbv3hXvpNK4TXj7iectO7H789etN/QG74O8oEkBg2UCS45OJPBLpLvMEwWk4Q0lKA4714MKtfRkxBFOc6SaUUsOUUtuVUtsj7AlOcilr1piMlykp8MYb8O9/p7ZFAQ8AW4HyGDdOJWDTp5tY9IRJgnb/+/fz0OcPSRI0F1ClCpQqZRLXHTgA9a39e4DQusatI358wRNw6dBRKdUXk/frk/TatdZjtNZhWuuw0NBQV5rmVLZsgc6dITHRhGG+/35q2xWM2G8DKmLEvrzWrHl9Dav+bZK6dPimAy3/21KSoLkIpeA+q1zYhg0m9XRVTIZSr3pWaKb48QUPwBmCfwbjgrZTxtp3A0qpdsAbQCetdYITrpsj2bPHpDe+fh369TO1aO26HQm0A7ZjRvTrgbIpNpY8s4QNH26QJGhupEUL87xxo3m2u3UiZYQveBDOEPxtQFWlVEWllB/QE1jo2EEp1QD4ASP2Hvufc+iQKZAdFQVdusD48WY1J8AloC2wEzMx+wtQOjGFeX3nseP7Hfj4+9BjXg9JguYm7IK/YYN5tgv+EYnUETyILAu+1joZGI4prfoXMEtrvU8p9Z5SqpPV7ROgIDBbKbVLKbUwg9PlWk6cgLZt4cIF8zx9uom5B7gI3A/swrgK1gPFY5OY0WUGe2fsxa+QH32W96H6o9XdY7xA3bpQqBAcO2bqEtgFf1v1ELx8vbhy7AqJMYlutVEQsopTfPha66Va62pa68pa6w+sfW9prRda2+201sW11vWtR6dbnzF3cfasybwYHg7Nm5voHH9/03YOaA3sxSzo+QUIiYpnyoNTOLLsCPmL5mfg+oFUaFXBTdYLYKqLNbMS4m/c6DBx6+tN0ZpmPuniXo/9cSrkESTeL4tERKQWMLnnHliyBAoUMG3hQCvMz546mJF9oQsxTGw9kdMbTxNYNpBBvw2i5D2SBC0n4OjWKYpJcRED5K9tBP/SgUvuMk0QnIKs5skCUVGmiMb+/SYJ2ooVEBRk2k4CbTBFsetjCo77nIxiQrspRB6JJKRaCP1W9SOoXJCbrBfSktaPXw/zCy2uhilUIIIv5HZkhH+XxMSYFAl//GHiuB0LmBzHjOyPAQ0xxUtsey8yvvl4Io9EUqJBCQb9NkjEPofRuLGZd9m1y1Qjs0+fX7AL/l8i+ELuRgT/LoiPN3H2mzZBuXJmkVVJyytzBGiJGeHfi8lrH/3bSSbcN4HoM9GUb1meAesGUKBYAbfZL6RP/vymrrDNZtZS2AX/sIzwBQ9BBP8OSUyExx83eVdKlDBiX66caTuIEftwoDmmYtX5+QeY8oBJglazW036ruiLf5C/2+wXbk3z5uZ5wwaoa+3bUS0ElKlLkJKY4jbbBCGriODfASkp0LevmZgNCTGlCatUMW37MW6cc9bzcuDQD9uZ9dgsUhJSaPhUQx6f9bgkQcvhOPrxa2AmuQ76+xBUsQg6RRN5VHLqCLkXEfxMYrPBE0/A7NkQGAgrV6ZWq9qDCb28gFlJu0Rrtr+zniVPLfk7L87D3z6Ml7fc7pyOfYS/ZQt4JRnR14CfuHUED0AUKBPYSxNOnGj8vMuWmRBMMAnQWgERmFTH81NsrH1qMb+8+wvKS/Hoj49KXpxcRLFiUK0axMaayVu7Hz+uhikpKRO3Qm5GBP82aA3PPw/ffQf58sHChakLdNZh0iVEAV2A2XFJLH58NjvH7Pw7VcI9T9yT0amFHIqjW8fux78gI3zBAxDBvwVaw4svwqhR4OcH8+ebtAkAizEVX64DfYHJkXHMemAKB+YfwL+IP/1W96N6J0mVkBtxFHz7CP9QTVl8JeR+RPAzQGt45RWT7dLPD+bNg/btTdtMoCuQADwFfH36KlPum2BWz5YJZPCGwZRrXs59xgtZ4oYRvjbb2x1G+FprN1kmCFlDBD8dtIZXX4XPPwdfX5g7Fzp2NG1jgV5AMvAf4K1d55nQZBwR+yMIrR3KkM1DCK2Ve3P5CybyqlgxuHgR4o5AEeBM0fzkCwkgMTqRmHMx7jZREO4KEfw0aG0Kjn/yiVl1OXs2PPKIafsCGIqJ2vgAGLLsMBPvm0D02WjKtyrPoN8GEVgm0H3GC05BKYf8+A5+fF9rlB/xV+6uxibkXUTwHdAa3nwTPvrIiP2sWWZFrQbeAV6y+n0NPPj9dmY8Op3EmETq9qlL3xV9CSgS4DbbBeeS3sRtvEzcCrkcEXwLreHtt+GDD0yq3BkzoGtXSAGeAd7F3KxxNk2N/6xiydNL0Cmalm+2pOuUrvjkkwVVnoSj4Nex9l2oKTl1hNyNqBRG7EeMgJEjjdhPmwaPPQbxmAicuUA+YFpcEikD5rNp9n68fLx4ZMwjNBjUwL3GC9lC/foQEGCqmJWJAgrDkepFCQEuH7rsVtsE4W7J8yN8e+jlyJHGjTNtGnTvDlcxYZdzMUWtF0dc50rbyeyfvZ98gfnos7yPiL0H4+trsmcCXNtknndXM4uvIg9LegUhd5KnBd9mg2eeMaGXvr4wZ44R+/OYVAnrgRLA4n0X2d9kHOGbwwkqF8TgjYOp1LaSO00XXIB9gd2eX6EMcL5iYZS3IupkFMnxyW61TRDuhjwr+CkpJjfO99+bcoQLFpgJ2qOYTJe7MPVnZy05xG9Nx3Hl2BVKhZViyJYhFKtTzK22C67Bnldn0ybjx7f5euNbsQhoJImakCvJk4KfnAz9+8OECSY3zuLF0KED/AE0wxQuCdOa0Z9tYu2j00mMTqR299oM/GUghUoWcrP1gqto0sQ8b9sGNa2syIni1hFyMXlO8BMToWdP46svWBCWLzfpEpZhctlfBB5ISObVIQvZ9Moq0ND63dY8NuMxfPP7utd4waWEhECNGqbgTcETZt/lqsHmWSZuhVxInorSiY83PvpFi0zt2eXLzShuDCb0MgXoG3Gd1t1msW/DKXwCfOgyqQu1/1nbzZYL7qJZMzhwAK5vASrDiWohEqkj5FryzAj/6lWTC2fRIggONhWrGjeB14AnMWL/xp8XCGs8lvANpyhUuhCDfhskYp/Hsfvxjy8FBRwQl46Qi8kTI/yLF43Y//EHlCoFK1ZAlTomJ84swBv4YvY+ogctIOp6EqUalaLngp7irxf+jtTZuh6qaLhoCb6M8IXciMeP8E+cMKsm//jDJMXauBFK1DF57GcBgck2vnt1FZHd55B0PYm6vevK5KzwN9WqmV+EZ89CpVi4ViYQ5e9DzPkYEq4luNs8QbgjPFrw9+41P8kPH4YGDcwy+aQK0BTYBFS+FMtHHX7i7MebUN6Kh754iK5Tu+IbIJOzgsHLC5o2Ndv5j4H2UqRUsSZuD8soX8hdeKzgb94MLVuakVmrVrBuHfxV3Ij9EaDVznM8HTaGi6uPkT80P/1X96fJC02kFKFwE3Y/fuzv5vmq+PGFXIpHCv7y5dCuHVy5YhZTLV8O04PgAeAy0G/ybto1H0/MyauUblyaJ3c+SYXWFdxstZBTsfvxTy4xz+ESminkUjxu0nb2bOjd2yyuGjgQvv0RXvKB7wDvxBRef2kFfqO3kQI0eKIBHUd1lEyXwi1p1MjkWTq4BPw0HKsWQl1E8IXch8cpXalSJi/OCy/Aqx/Dw8oUGw89foUXe8whcdtZvP286TCqAw2HNnS3uUIuIH9+Mwe0bRuUiYHL4tIRcikeJ/jNm5vJ2thK0Bg4DjSZ9xePDFpA4tUEgsoH8fjMxylzbxl3myrkIpo1M4Jf8AQcdXDpaK1l3kfINXikD39vJTM5eyoxhf4vLKd9t1kkX02geqfqPLnzSRF74Y6x+/HjtsH1YgXQgfmIj4on9lKsew0ThDvA4wR/DNAF8DkRxSstxlPpq614+Xjx4OcP0mN+DwKCpQyhcOfYBT98OaAUMeLWEXIhThF8pVR7pdRBpdQRpdRr6bTnU0rNtNq3KqUqOOO66dECaDD/AC80+IGAbWcJKhfEoA2DaPpiU/npLdw1ZcpAuXIQZ4VmnpdIHSEXkmXBV0p5A6MxBaJqAb2UUrXSdBsCXNFaVwG+AEZm9boZEf3NVjp1nQlR8caF84e4cATn0KwZcAryJcIZSbEg5EKcMcJvDBzRWh/TWicCM4DOafp0BiZZ23OAtiqbhttVO1YlICSABz8TF47gXJo1AzQUOiWROkLuxBlROqWB0w6vw4F7M+qjtU5WSl0FQoBLjp2UUsOAYQDlypW7K2OCKwfzr2P/Il9gvrs6XhAyokUL85ywQ/LiC9mHDYgEimbDuXPUpK3WeozWOkxrHRYaGnrX5xGxF7KDevWgUCGI3gSRVS2XzuHLaJt2s2WCp3AeaG89ErPh/M4Q/DNAWYfXZax96fZRSvkAQZgsB4KQa/D2ttw6eyG+sD8JxQqQHJdM9Nlod5smeADLgHrAoV9OkH/Udg5lwzWcIfjbgKpKqYpKKT+gJ7AwTZ+FwABr+3FgrdZahkVCrqNFC2Cv2b4kbh3BCSQALwOdY5No+MJyBrWeROvnlnF90UWnXyvLgq+1TgaGAyuAv4BZWut9Sqn3lFKdrG7jgBCl1BHgJUyhKUHIddx3H3ARvK9IMRQh6xwBmgGzN53mqfrf0+SrrdhQRNRoQc0WIU6/nlNSK2itlwJL0+x7y2E7HvinM64lCO6kcWOTqynpj9RIHcmLL9wNS4D+8ck0fHMtj362GaXhIqEED+nC6DGl8MqGGVaPy6UjCNlJQACEhcHmvamROpGHJDRTyDwa+BD4au9FevSaS/G9F7Gh2OTVnP7jWtF3YPbJsgi+INwh991nCf794tIR7owYYKDWnPpuO0NfXolvfDKXCGF5QBe+W1iGdu2y9/o5KixTEHID9onbSKvU4ZVjV7Al29xrlJDjOQa0uhSLb5eZPPzsUnzjk9lJA+YWHcb0X7Nf7EFG+IJwxzRvDuyD5ABfrpYLIujUVaJORBFsfQEIQlq2AUN/PUnbXnMJPBtNok8+FiQ/Skz52qxfCdWqucYOGeELwh0SHAx1ywMnZcWtcHsWa82/P91E5zaTCDwbzcWCZRmd/BSqTm02bXKd2IMIviDcFa1aAXsdInVE8IV0+OFaAlP/OZv7/70KrxTNgeLN+T5mIGXrFGbdOlOhz5WIS0cQ7oLWrWHUXrhU3Qj+pYOXbn2AkKfQwNv7LnKl2yxqHrqMDszH1pAuLD9egxo1YPVqKJodyXJug4zwBeEuaNkS2AuXapj/2ssHZIQvGGzAy9P+JKXxWIoeuoxX3eL8UmEYy4/XoEoVWLMGihd3j20ywheEuyA0FCrHpwr+pQMywhcgMTGFES+vIGjUNgAK96nHz8ce4dfNvlSsCGvXut6N44iM8AXhLmlXGq6VCiIpwIeY8zHEX413t0mCG4m6eJ0320wicNQ2Uny9qDSqIxsTuvDrZl/KlDFiX7bs7c+TnYjgC8Jd0q4F6KMqdeL2oLh18iqn91zgk8Y/kn/jaaJLF+LeDYPZe6oRs+coAgNh6VKoUMHdVorgC8Jdk9aPL26dvMmfCw/yY/Px+J28yrl7S9Np21BO7yzNxx+Djw/MnQt167rbSoMIviDcJcWKQeh5Efy8itaaXz/eyNwuM/COSeRg77oMXTeAmD8K8eyzps8PP+CSFbSZRSZtBSELhPnAaRH8PEdyQjILhy3mz8m7UcCmD9rw8YgW2HYpuncHmw3++18YPNjdlt6ICL4gZIEu5eHtkiL4eYnrF68zo+tMwjedJjG/L8undOWHbjUpfQnu6QzXr0PfvvDee+629GZE8AUhCzzeBIZfs9IkH4nElmzDy0c8pZ7KhT0XmP7odK6eusrVsoHMX9iLqfVL0CAFOvSG06ehSRMYOxaUcre1NyOfTEHIAsFFIOC8H1HlgrAl2bhy/Iq7TRKyiQMLDjCu2TiunrpK+L2lmfz7UMbVL0Ez4O23YdUqsz5j9mzIl8/d1qaPCL4gZJFaiTJx68lordnw0QZmdp1J0vUk9vSpy9T1A5laoiD3A4sWwQcfgJcXzJgBZcq42+KMEcEXhCzSLgQu1bBy6ojgexTJ8cnMHzCfNSPWgIbV/2vDvCldmezvQ3vgyBHo18/0/d//oE0bt5p7W8SHLwhZ5J9VYLk1wj/9hwi+pxBzIYaZXWcSvjkcrwK+zJjajf1davA1pkB3bCw89hhcvQpdusB//uNmgzOBCL4gZJHafnClohH8Yztkta0ncH73eaY/Op1rp6/hXzaQbxf14tQ/SjACeM7q88ILsGcPVK0KEyfmzEnatIjgC0IW8QZ8S4QCEHc6Aq01Kjf89wvpcmD+AX7u+zNJ15MIaVqGkfN6EF68IIOAD6w+8+fDjz+aydk5cyAoyI0G3wHiwxcEJ/CP0gWIDQnAJy6ea+HR7jZHuAu01vz24W9/T85W61ePL9cOILx4QR4GxgAKOHcOnnjCHDNyJNSr50aj7xARfEFwAm2LKi7WKQbAlgUX3WyNcKckxyczv/981r6+FhS0+rAt30zqwlF/H8KAmRh3iM0GgwbB5cvw4IPw3HO3OXEOQwRfEJzAPQou1DWCv3WxCH5uIuZ8DJPun8SeqXvwLeBL93k9+P61FmxWirLAQqCA1XfUKFixAkJCYMIEE4qZmxAfviA4gbrA5VpG8E/tEcHPLVzYc4Fpj0zj2ulrBJULoteiXnxTrzgzgULAEqCk1Xfv3tRInB9/dG8hk7tFBF8QnIAfEFTbCL53zEUuXXJPzVIh8xxafIi5veaSGJNImaZl6DGvB3OLF+QDzET8LMwXOUBCAvTpY56HDIGuXd1nd1bIZT9IBCHnUusfRvBD4yJYttTmZmuEjNBas+XLLczoPIPEmETq9q7LgLUD2Fm8IEOtPt8A7R2Oee89E4JZpQp8+aXrbXYWIviC4CQaB/lztWwgvsnJrJ4lOXVyIilJKSx5egkrXlyBtmlav9uarlO7Eu7vw2NAEvAC8LTDMX/8YaJxlDLx9gULusFwJyEuHUFwEvcCS+sUI+j0Nfavv0Bycgg+8h+WY4iPimf2P2dzbPUxvPN502ViF+r0rMN1oAtwCTOq/9ThmKQkk9M+JQWefx6aN3eH5c5DRviC4CQqAdesSJ0CPhfZtMm99gipRB6NZFzTcRxbfYwCxQowcP1A6vSsgwYGAbuBqsA0jP/ezqefwq5dph7tBx/cfN7chgi+IDgJBRS2YvGLFYpg3jz32iMYTv52krH3juXSgUsUq1OMJ35/gjJNTErLD4HZmIicBUARh+MOHIB33zXbY8bkbleOHRF8QXAilS3BL55wgZ9/Bq3dbFAeZ/fk3UxuO5m4y3FU6VCFwRsHU7h8YQAWAf/FfFFPA2o6HJeSYqJxEhKMS+eBB1xueraQJcFXSgUrpVYppQ5bz0XS6VNfKbVZKbVPKbVHKdUjK9cUhJxMo5qh2LwUwZcjOXsqmR073G1R3kRrzfp31zN/wHxsSTbu/de99FrYi3yBpjLJX0AfQGPy4zyS5vjRo2HTJihZEj77zLW2ZydZHeG/BqzRWlcF1liv0xIL9Nda18bMiXyplCqcxesKQo7kXn8fIqsG42XTFPWO4Oef3W1R3sOWbGPxU4v55Z1fUF6KjqM70v7L9n+XnrwCdAaigR7cLFqnTsHrr5vt776DwoVdZnq2k1XB7wxMsrYnYSa7b0BrfUhrfdjaPgtcBEKzeF1ByJGEADH/KAFAydLnmDtX3DquJCkuiVmPz2LnmJ34+PvQ/efuNHqm0d/tKUAv4DBQHxiHcek48tJLphD5449D586ustw1ZFXwi2utz1nb54Hit+qslGqMWZR4NIP2YUqp7Uqp7REREVk0TRDcQ2CYWYxfLuQchw7B/v1uNiiPEBcZx5QHpnBwwUH8i/jTb3U/anSucUOf14EVQFFgPqk5cuysWAFz50KBAvDFFy4x26XcNkpYKbUaKJFO0xuOL7TWWimV4VhGKVUSmAIM0FqnuwxRaz0Gk4WUsLAwGRcJuZLqYaWIAMoknAWMgNSu7V6bPJ3os9FMeWAKEfsjCCwTSN8VfQmtdaMjYR7wMSbscg5QPs05EhJSs1++9VbOrk17t9x2hK+1bqe1rpPOYwFwwRJyu6CnmzVKKRWIyUP0htZ6izPfgCDkNO6/x4zwixy5gDcpTJ8ubp3s5NqZa0xsPZGI/RGE1g5lyOYhN4n9YWCgtf0x0Cqd83z2GRw+DDVqmGpWnkhWXToLgQHW9gBMKOsNKKX8MF+uk7XWc7J4PUHI8dQI8udq1WB8ElOo3OAiBw6Y5fmC87l6+ioTW00k8nAkJRqUYNCvgwgsE3hDn1jgceAa8BjwYjrnOXkS/u//zPaoUeDnl712u4usCv5HwANKqcNAO+s1SqkwpdRYq093oCUwUCm1y3rUz+J1BSHHogAVZnLn3tPIuHWmTnWjQR5K1MkoJraayJWjVyjZsCT91/QnIDjghj4aeAbYg1lJO56bJ2kBXnwR4uKgRw9o2zbbTXcbWRJ8rfVlrXVbrXVVy/UTae3frrV+wtqeqrX21VrXd3jscoLtgpBjKd3QuHWCEkxMw/TpkJzsTos8i6gTUUxqPYmo41GUalSK/qv7E1Ak4KZ+YzHhgwHAXCDwph6wbBnMm2cmaj0p5j49ZKWtIGQDYdYI33vvWapUhfPnYe1aNxvlIVwLNz77qBNRlL63NP1W9cO/sP9N/XYC9gqEP5Ca296R+PjUidp33oHSpbPH5pyCCL4gZAONG5gRfsieC3R4xgztxa2TdeIi45j60FSunrxKmSZl6LeyH/5BN4t9JMZfnwA8CfTL4HyffgpHj0KtWvCvf2Wf3TkFEXxByAb8A/ORUD0E7yQbxWqb4LWff4boaDcblotJik1i+qPTTTROrVB6L+n9d6oER2xAf+AEEAZ8mcH5TpyA//3PbI8aBb6+2WB0DkMEXxCyiUDLrRN+7Cz33WdWb06f7majcim2ZBtzeszh9KbTBJY1cfZpJ2jtfISJAS+CyYR58/jfYJ+o7dUL7r8/e+zOaYjgC0I2UduauI3cdpahT5l9338vMfl3itaaRcMWcWjxIQKCA+i7ou9NoZd21gBvWttTgQoZnHPpUpg/36Q8/vTTDDp5ICL4gpBNNGhWFoDiG05R9jEICTHx+Nu3u9mwXMba/65l14Rd+AT40HtJb0Jrpp+K6wwmT44Nk/a4Ywbni4831avA5LsvVcr5NudURPAFIZsoeU9JdH5fih68zJqoGAYONPu//96tZuUq9s3ax4b/bUB5K7rP6f534ZK0JGEW/ERgFgS9c4tzfvKJmaitXTs1QievIIIvCNmEt683QdYof9dvpxg2zOyfMQOuXnWjYbmEi/susmCwWbz/0OcPUbVj1Qz7/gfYBJTh5jKFjhw/njpRO3p03piodUQEXxCykXotywGQ8ssJAquZycHYWJg40b125XTir8Yzs+tMkq4nUbdPXRo/1zjDvrMxkTg+wCxunXv9hReMS6d3b2iVXkIdD0cEXxCykSqtKgBQ/tdTrCDVhfDll7LyNiO0TTN/wHwiD0dSvF5xHh3zKEqllxABDgCDre3PgKa3OO/ixbBwIRQqZNw6eRERfEHIRko3Lg1+3hT/8wLLI+Po1AmqVjUx4HMklWC6/PbhbyanfWF/uv/cHd/86ftdrmOSosVgKlfdyh0fF5d3J2odEcEXhGzEx9+HYveWRmk4uPEUNm94+WXT9sknEqKZliMrjrDuzXWgoNu0bgRXDk63nwaGAfuAGpicOen/BjB8/LHx39epA8OHO93sXIMIviBkM9VbmVIbRX89yRqgf38IDYWdO2HdOvfalpO4cvwKc3vNBQ2t32lN1Q4ZT9J+h5mcLYBJilbwFuc9ehQ+/NBs58WJWkdE8AUhmynf0gh+hV9OMhMICEj15Y8c6T67chJJsUnM6jaL+CvxVHukGi3/2zLDvluAF6ztH4Fatziv1vDMM6aaVd++0DLj0+YJRPAFIZsp27QsyseLkjvPsTQqngSMCBUsCCtXwsaN7rbQvWitWfzUYs7vOk9wlWC6TumK8krfQXMekxQtCRiOWWh1K2bONPe4SBHPT32cGUTwBSGb8SvoR7nmZfFK0YSuOMIKzKrbF63SS2+8kbd9+du+3caeKXvwze9Lj3k90k11DKmLq84CLYDPb3PeqKjUUoUjR0KxYs6yOPcigi8ILqDao9UAqL7oEDOtfS+/bEaev/wCq1e7zzZ3cnrTaVa8sAKATuM6UaxOxqr8CvAbUAoTe387V/zrr8OFC9C8OQwZ4iSDczki+ILgAqo/Wh2AqksPszDZRiwQFAT/+Y9pz4uj/Ohz0cx6fBa2ZBtNXmpCnZ51Muw7FfgaI/JzgBK3OffWrSaFhY+PefYSpQNE8AXBJYRUCyGkWggBV+IJ2XSaxdb+556D4sVh2zaYPdutJrqUlKQU5nSfQ8y5GMq3Ks8DIx/IsO8fwFBr+xtuvbgKzIK2J580X6Avv2xCMQWDCL4guAi7W6faooP8aO0rUADee89sv/yyyZmfF1j5ykpObThFodKFeHzm43j5pC9Fl4FuQDwwBBN7fzu+/hp274YKFeCtt5xmskcggi8ILqLaI0bwayw6xGrgkLV/yBC45x4ID09N7OXJ7Jm6h9+//h0vXy+6z+lOweLpR9GnYKJwTgCNgFHcenEVwJEj8KaVEH/0aMif31lWewYi+ILgIso2L4t/YX9CDl4m+PBl7FmSvb1NiT0wxTiOHHGbidnOifUnWDhkIQAdvumQYbpjMDntV2GSoc0l48pVdlJSYNAgk5yud2/omFFC/DyMCL4guAhvX2+qdKgCQM2f/2IiEGu1NW1qVuAmJsJTT3nmBO6FPReY0XkGKYkpNBreiIbDGmbYdyamVKE3JgNm2Uyc/6uvYMMGKFECvvnGOTZ7GiL4guBC6vQyM4hNJ+7mitZ/h2iCyfcSEgJr1sAPP7jHvuzi0sFLTG0/lYRrCdT6Zy3af9k+wwyY24GB1vZnQOtMnH//fhPpBPDjjxCcfgqePI8IviC4kKodqlKgeAEKHrhEma1n+AaTCAxMtM6335rtV16BY8fcZaVzCd8azvjm44k5F0OF1hXoOrkrXt7pS88ZoDNmkvYJ4PlMnD8uDnr0MHnuBw2CRx5xnu2ehgi+ILgQLx8v6vWrB0DTibv4A1ji0N69u3lcv27EKyXFLWY6jcPLDjO5zWTiLsdR9eGq9F7SGx9/n3T7xgJdMCtpWwKjuf0kLZjopr17Tdrpr792luWeiQi+ILiY+gPrA1B7xl584pJ4h9RRPpjokuLF4ddfTe723MruybuZ0WkGSbFJ1B9Ynx7zemSY215jCplsBypiJmn9MnGNuXPhu+/Az8/kzSl4q7SZggi+ILiaYrWLUapRKbiaQJN5B9jBjaP8okXhp5/M6tD334dly9xl6d2z6dNNzB8wH1uyjeavNafT+E54+2ZUaRbex0zUFgIWAUUzcY2//uLvwvCffAINGmTZbI9HBF8Q3ED9QfUBeGjsToCbRvlt26YuyOrb11TIyg1om2bFyytY9e9VADz0xUO0+7BdhhO0AOOAtzHum+lA7UxcJyoKOneGmBjo2TM13bRwa0TwBcEN1O1VF79CfqSsO0HdreHsgBsidgBGjDCx5JGR8PDDRuRyMimJKczrP48tn2/By9eLbtO60eSFJrc8Zi6pq2e/Ah7OzHVSzJfg4cNQrx6MHQu3+D4RHBDBFwQ34F/Yn0bPNgKg9we/AfAScM2hj5eXce3Urm3CDrt1M3H6OZHEmESmd5rOnz/9iV9BP3ov6U3dXnVvecwSoDdgA97l1jVp7Wht0kovWWJCL+fPN+kphMwhgi8IbqLpi03xCfAhYdEh2u06zzmMa8ORwoWNuJUoYcohDhyY8yJ3rkdcZ1KbSRxdcZT8ofkZsG4AlR+ofMtjpmMichKBfwFvZvJaX35pFlX5+cG8eVCxYlYsz3uI4AuCmyhQrAANnzSrTbv/7ze8MCmAd6XpV768Ef2CBWH6dJN7J6eIfuTRSMY3H8/ZbWcpXLEwgzcOplRYqVseMwroAyQD/wG+IHPhl7NmpRaAnzhRyhXeDVkSfKVUsFJqlVLqsPVc5BZ9A5VS4UqpUVm5piB4Es1eaYa3nzdn5+znX7vOYwP6kZpywc4998DSpSYZ2KRJMHSo+0X/zO9nGNd0HJGHIylRvwSDNw4mpGpIhv2TgKcxrhuNSZ0wksyJ/dKl0KePcel8+CH0ul1tQyFdsjrCfw1Yo7WuCqyxXmfE+8CvWbyeIHgUgaUDCXsmDDRUG7aI6ik29mLcHGm57z4z0g8IgAkTTHRKfLyrLTYcXHiQia0nEhsRS+UHKzPw14EUKlkow/4XgQeB74F8wGTg1Uxea/16eOwxk+f+lVfg1cweKNxEVgW/MzDJ2p6EccvdhFKqIVAcWJnF6wmCx3H/u/dTqHQhLmw7y4ffbsMfGIup8pSW1q1NXH5gIMyZA+3buz56Z9u325jZdSbJccnUH1SfXot7ka9Qvgz7bwLuAdYDJYFfML9iMsPq1SZCKT4ehg0z+YYkIufuyargF9dan7O2z2NE/QaUUl6YHEiv3O5kSqlhSqntSqntERERWTRNEHIH+QLz0XGUyeV74PW1fBFuYnWGYcQyLa1awW+/QalSph7uvfeaRUjZjS3ZxoqXVrD02aVom6bVO63oNC7jBVUa459vhcmR0xyzkvbeTF5v0SKTFyc21kxWf/utiH1Wua3gK6VWK6X2pvPo7NhPa625ce2InWeApVrr8NtdS2s9RmsdprUOCw0NzfSbEITcTo0uNajRpQaJMYn495vHkKQU4jBx6X+m079ePdi0yTwfOgSNG5uolewi5kIMk9tNZssXW/Dy8aLTuE60frt1hguqrgH/xISaJgMvA+swBcgzw7hxJgw1IQGeeca89s54oa6QSW4r+FrrdlrrOuk8FgAXlFIlAazni+mcoikwXCl1AvgU6K+U+siJ70EQPIKOoztSsGRBTq4/QafnltFFa6Iwvu+D6fQvX96IfvfuZsVpt24wfLjJHulMjqw4wg8NfuDkLycpWKIgA9YNoMHgjPMYbAPCMIuqAq3nTzEFyG9HSorx0z/xhPHZv/aaKQ4jRcidQ1Zv40JggLU9AFiQtoPWuo/WupzWugLGrTNZa32ryV1ByJMUKlWInvN74p3Pmz9+2MEro37nfoyvtBmwIZ1jChSAGTPgs8/A19ckXmvUCLZvz7o9iTGJLB2+lJ/a/0TMuRjKtSjHsJ3DKNeiXLr9U4APLVsPA/UwLpxumbzehQtmZfFnn4GPj1lB++GH4sZxJlkV/I+AB5RSh4F21muUUmFKqbFZNU4Q8hqlG5em83jjLV39/HLe+XILjwCRmH+w9CZylYKXXoItW6B6ddi3z/j1//UvuHYtnQNug9aafbP2MarGKLaN3oaXrxdtP2zLgPUDMozEOQW0AV7HuHBeALYCVTN5zbVroX59WLnSJI9btcqsNxCci9I5tJZaWFiY3u6MYYog5EI2f76ZlS+boLYm/27Ggo/a8Z2XGer2wSxeKpzOcdevm5TKn39u3COlS5uVqV26ZG6kfGL9Cda9tY5Tv50CoFRYKR4Z8wglG5RMt78GpgHDgSigBDAReCiT7zMuDl5/3aygBTMh/dNPxm7h7lBK7dBah6XbJoIvCDmTPVP3sGDQAmzJNsq1LE/c2Ef5d9UQYoEywMdAT9JfuLR7Nzz5JGzdal4/+qgpkF6t2s19bck2Di0+xJYvt3Dyl5MABAQH0PbDtjQY0iDD6lQHgWcxC3AAOmHCSTMbbvHbb8ZXf+iQceG8+aYpUyiTs1lDBF8QcilHVx1lXt95XL94HR9/H6r/uxlfPteYjaEmY1hjTGrlh7jZP5uSYmrjjhhhXDs+PuZL4K23oFgxiNgfwd4Ze9k9aTdXT10FTFK3Ji81ocm/mpAvMP3Y+tPAB5i0xslAMPAJMIjMrZq9dMksnho/3ryuXdusHm6YcU1z4Q4QwReEXEzs5VhWvrSS3ZN3A+Dj74Nfn7rM6VqDnW0qkhzgS01M/HN3oFia48+dMyI/Y9x1SukzVPc9RsPCRyHi0t99gqsE0+jZRtQfVB//IP+bbNDAZuBHjAsnEfMFMwgzcZeZgiVaG2F/5RW4fNkkQBsxwkTi+N98SeEuEcEXBA/g5G8n2fTxJg4tPpS609+HiNqhnK0ZytXyQSQW8qNCgC814pOpeD2R/GeiiT55lYi/Iog+E33D+RKUP8EtatL5jTpUeaAiyuvG8fk14HdgGbAYsF9VYb5Y3gZqZtL2HTvMxPKvVnKVtm3NQqr0XExC1hDBFwQPIuKvCPbN3MfhJYc5u/1spo/TBf3wa1CChFrlWXW5Mr9HlSHF15tyVaDTAKjQAMK94ASwn1SBt1MMGAg8Qeajb44cgbffhmnTrHMUMxPKvXtLuGV2IYIvCB5KXGQcEfsjiPgrgpjzMVy7lsDRuGROB/hwPL8vp0sUJKpCYa5UDiaySjDaK/Mq6wfUxYSDdsSsoMzM4imAXbtg5EiT0thmg3z54PnnjQunSIY5dQVncCvB93G1MYIgOI+A4ADKtSiX4WKoq5jUDIcwk61nMK6aaMyEKylw9hQc3QFxZ0yHItegZ0N4tjXUzuxQHjh/3lSgGjcudeGXr6/Jg/PWW2ZlsOBeRPAFwYMJAlpYj3TxBipCfElTVOTrxSYR23eYR926JkNnw4bG3x4SYlb3RkfDlStw8CDs2WN88zt2pJ62cGEj9C+9BGXLZuMbFO4IcekIgvA3WptVrlOnwoIFd7ZS198f2rQx/vlu3UzefsH1iEtHEIRMoRQ8+KB5JCTAhg2wbZtx0Zw+DZGRJlFboUIQFASVK5tfAQ0bmlWyIvI5GxF8QRDSJV8+Ez7Ztq27LRGchSQdFQRByCOI4AuCIOQRRPAFQRDyCCL4giAIeQQRfEEQhDyCCL4gCEIeQQRfEAQhjyCCLwiCkEfIsakVlFIRwMksnKIocOm2vVyP2HVniF13hth1Z3iiXeW11ulWmsyxgp9VlFLbM8on4U7ErjtD7LozxK47I6/ZJS4dQRCEPIIIviAIQh7BkwV/jLsNyACx684Qu+4MsevOyFN2eawPXxAEQbgRTx7hC4IgCA6I4AuCIOQRcrXgK6X+qZTap5SyKaUyDGFSSrVXSh1USh1RSr3msL+iUmqrtX+mUsrPSXYFK6VWKaUOW89F0ulzv1Jql8MjXinVxWqbqJQ67tBW31V2Wf1SHK690GG/O+9XfaXUZuvvvUcp1cOhzWn3K6PPikN7Puu9H7HuRQWHthHW/oNKqYfu1oa7tOslpdR+696sUUqVd2hL9+/pQtsGKqUiHGx4wqFtgPV3P6yUGuBCm75wsOeQUirKoS3b7pdSarxS6qJSam8G7Uop9bVl9x6l1D0ObVm/V1rrXPsAagLVgfVAWAZ9vIGjQCXAD9gN1LLaZgE9re3vgaedZNfHwGvW9mvAyNv0DwYigfzW64nA49lwvzJlFxCTwX633S+gGlDV2i4FnAMKO/N+3eqz4tDnGeB7a7snMNParmX1zwdUtM7j7aT7kxm77nf4/Dxtt+tWf08X2jYQGJXOscHAMeu5iLVdxBU2pen/HDDeRferJXAPsDeD9o7AMkABTYCtzrxXuXqEr7X+S2t98DbdGgNHtNbHtNaJwAygs1JKAW2AOVa/SUAXJ5nW2TpfZs/7OLBMax3rpOtnxJ3a9Tfuvl9a60Na68PW9lngIpDuasIskO5n5Ra2zgHaWvemMzBDa52gtT4OHLHO5xK7tNbrHD4/W4AyTrp2lm27BQ8Bq7TWkVrrK8AqoL0bbOoFTHfCdW+L1vpXzOAuIzoDk7VhC1BYKVUSJ92rXC34maQ0cNrhdbi1LwSI0lonp9nvDIprrc9Z2+eB4rfp35ObP3AfWD/pvlBK5XOxXf5Kqe1KqS12NxM56H4ppRpjRm5HHXY7435l9FlJt491L65i7k1mjr1b7vTcQzCjRDvp/T2dRWZte8z6+8xRSpW9w2OzyyYs11dFYK3D7uy8X7cjI9udcq9yfBFzpdRqoEQ6TW9orRe42h47t7LL8YXWWiulMox9tb696wIrHHaPwAifHyYe91XgPRfaVV5rfUYpVQlYq5T6EyNsd42T79cUYIDW2mbtvuv75WkopfoCYUArh903/T211kfTP0O2sAiYrrVOUEo9ifmF1MaF178VPYE5WusUh33uvl/ZRo4XfK11uyye4gxQ1uF1GWvfZczPJR9rpGbfn2W7lFIXlFIltdbnLIG6eItTdQfmaa2THM5tH+0mKKUmAK+40i6t9Rnr+ZhSaj3QAJiLm++XUioQWIL5st/icO67vl9pyOizkl6fcKWUDxCE+Sxl5ti7JVPnVkq1w3yBttJaJ9j3Z/D3dJaA3dY2rfVlh5djMXM29mNbpzl2vStscqAn8Kzjjmy+X7cjI9udcq/ygktnG1BVmQgTP8wfeKE2MyHrMP5zgAGAs34xLLTOl5nz3uQ/tETP7jfvAqQ7o58ddimlithdIkqpokBzYL+775f1t5uH8W/OSdPmrPuV7mflFrY+Dqy17s1CoKcyUTwVgarA73dpxx3bpZRqAPwAdNJaX3TYn+7f00l2Zda2kg4vOwF/WdsrgActG4sAD3LjL91ss8myqwZmAnSzw77svl+3YyHQ34rWaQJctQY0zrlX2TUb7YoH0BXjy0oALgArrP2lgKUO/ToChzDf0m847K+E+ac8AswG8jnJrhBgDXAYWA0EW/vDgLEO/Spgvrm90hy/FvgTI1xTgYKusgtoZl17t/U8JCfcL6AvkATscnjUd/b9Su+zgnEPdbK2/a33fsS6F5Ucjn3DOu4g0MHJn/Xb2bXa+h+w35uFt/t7utC2D4F9lg3rgBoOxw627uURYJCrbLJevwN8lOa4bL1fmMHdOeuzHI6Zb3kKeMpqV8Boy+4/cYg+dMa9ktQKgiAIeYS84NIRBEEQEMEXBEHIM4jgC4Ig5BFE8AVBEPIIIviCIAh5BBF8QRCEPIIIviAIQh7h/wGA2+WEWnoupAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] @@ -757,31 +590,35 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "And the error in the PINN reconstruction. Not surprisingly grows over time. \n", - "\n", - "The shock is not \"undone\" well towards $t=0$.\n", - "\n", - "(Old: BC at 0, the last state at $t=1$ in purple doesnt capture the sharp shock very well.)" + "Not surprisingly, the errors grow over time. Especially the steepening of the solution near the shock at $x=0$ is not \"captured\" well. It's a bit difficult to see in these two graphs, though, let's quantify the error and show the actual difference:" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 20, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[(2048,), (2048,)]\n", + "Mean absolute error across 16 steps: 0.01397\n" + ] + }, { "data": { "text/plain": [ - "[]" + "[]" ] }, - "execution_count": 12, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD4CAYAAADhNOGaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAA2UUlEQVR4nO3deXzU9Z348dd7coeEkJtwhiPcIGBQtIr3UWsFux7oWrHaqrXddtutra7bY93tVtvfrnZ321q86rHVViyVKkoBBY+KErnvhHAlhNxAEsg1+fz++HwnDMPkYr7J5Hg/H495zPec+eSbmXl/P7cYY1BKKTVwecKdAKWUUuGlgUAppQY4DQRKKTXAaSBQSqkBTgOBUkoNcJHhTsDZSEtLM9nZ2eFOhlJK9SmfffZZhTEmPXB7nwwE2dnZ5OXlhTsZSinVp4jIgWDbtWhIKaUGOA0ESik1wGkgUEqpAU4DgVJKDXAaCJRSaoDTQKCUUgOcBgKllBrgNBAo1UW73tjFm19/E2+TN9xJUcoVGgiU6qK/fvevfPbUZxSuLAx3UpRyhQYCpbrg2KFjVBdWA1C2rSzMqVHKHRoIlOqCA2tP9dDXQKD6Cw0ESnXB/jX7W5c1EKj+QgOBUl3gnyOo2FlBi7cljKlRyh0aCJTqpOPFx6kqqCI6IZrEYYk01ze31hco1ZdpIFCqk3y5gVEXjyLznExAi4dU/6CBQKlO2r92PwCjLxlN+lQ7t4cGAtUfuBIIRORaEdktIgUi8lCQ/fNEZIOINIvITQH7vCKyyXkscyM9SnWHA2tsjiD70mwypmUAUL6tPJxJUsoVIc9QJiIRwK+Aq4AiYL2ILDPG7PA77CBwF/C9IC9x0hgzM9R0KNWdao/UUrmnkqhBUWTNzsITae+hNEeg+gM3cgTnAQXGmEJjTCPwKjDf/wBjzH5jzBZAm1ioPql0aykAWbOyiIiKIH1yOghU7qnE26hDTai+zY1AMBw45Lde5GzrrFgRyRORdSKyoK2DRORe57i88nLNjqueVbGrAoDUSakARMVHkTw2mZbmFir3VIYzaUqFrDdUFo82xuQCtwNPisi4YAcZYxYbY3KNMbnp6ek9m0I14FXutj/2aZPSWrf56gm0eEj1dW4EgmJgpN/6CGdbpxhjip3nQmANMMuFNCnlqtZAMFEDgep/3AgE64EcERkjItHAQqBTrX9EJFlEYpzlNOBzwI72z1Kq57UWDU1Mbd2WkpMCwNH9R8ORJKVcE3IgMMY0A98EVgA7gT8aY7aLyKMicgOAiMwRkSLgZuC3IrLdOX0ykCcim4H3gMcCWhspFXaNdY0cLzqOJ8pD8pjk1u3RCdEANJ1oClfSlHJFyM1HAYwxy4HlAdt+5Le8HltkFHje34DpbqRBqe7iqwxOGZ/S2mwUIHqQEwjqNBCovq03VBYr1av5ioX86wfAthwCzRGovk8DgVId8FUU+5qO+kQNsoGgsa6xx9OklJs0ECjVgWAthsAvR6BFQ6qP00CgVAdai4YmnR4IWusItGhI9XEaCJRqh2kxrZXF/k1H4VSOQIuGVF+ngUCpdhwvPk7TiSbi0+OJS447bZ+vjkBzBKqv00CgVDvaKhYCiIyNBAFvg1enrFR9mgYCpdrR2mIooFgIQES0CanqFzQQKNWOtvoQ+GinMtUfaCBQqh0VO20gSJ8SfMRbzRGo/kADgVLtKN9h575oMxBopzLVD2ggUKoNJ6tPUnuklqj4KJJGJQU9RnMEqj/QQKBUG3zFQmmT0hCPBD1G6whUf6CBQKk2dFQsBNqpTPUPGgiUaoMvEKRNCd5iCLRTmeofNBAo1YbWFkOTO84RaNGQ6stcCQQicq2I7BaRAhF5KMj+eSKyQUSaReSmgH2LRCTfeSxyIz1KuaFTRUOaI1D9QMiBQEQigF8BnwemALeJyJSAww4CdwG/Dzg3BfgxcD5wHvBjEUlGqTBrrG3k2MFjRERHkDy27Y+kr7JY6whUX+ZGjuA8oMAYU2iMaQReBeb7H2CM2W+M2QIEDshyDbDSGFNljKkGVgLXupAmpULSOln9hNTTpqcMpM1HVX/gRiAYDhzyWy9ytrl6rojcKyJ5IpJXXl5+VglVqrM6UywEfkVDWkeg+rA+U1lsjFlsjMk1xuSmp7f/5VQqVJ1pMQSaI1D9gxuBoBgY6bc+wtnW3ecq1W06myPQDmWqP3AjEKwHckRkjIhEAwuBZZ08dwVwtYgkO5XEVzvblAqrzjQdBc0RqP4h5EBgjGkGvon9Ad8J/NEYs11EHhWRGwBEZI6IFAE3A78Vke3OuVXAv2GDyXrgUWebUmHTWNtI1d4qPJEeUnJS2j1WB51T/UGkGy9ijFkOLA/Y9iO/5fXYYp9g5z4HPOdGOpRyw5HNR8BAxrQMImPa/4pohzLVH/SZymKlekrJhhIAhs4e2uGxrXUEWjSk+jANBEoFOLLhCABZs7MAMO0cq4POqf5AA4FSAXw5gmHnDuM3QBa263wwOsSE6g80ECjlp+lkE2XbyxCPsHNGJt8ESrGtIb4NeAOO1+ajqj/QQKCUn7KtZRivIWlyGrfHR9ECfAGIBv4beCDgeG0+qvoDDQRK+fEVC22fnUUFdjCsN7CDYAG8BPjXBvgHAtPSXm2CUr2XBgKl/PgCwdbZWWRih8uNAOZhh9Y9ie3w4iMeITLWNjFtrm/u0bQq5RYNBEr58QWCktlZfAPw7052ifO8NuAc7VSm+joNBEo5vI1eSreWAVA1cyj3BexvMxBoPYHq4zQQKOUo215GS6OXigmp3Dw4hoyA/b5A8BHg/5OvLYdUX6eBQClHwad24NuS2Vl8O8j+ocBEoA7Y4LddO5Wpvk4DgVKOD9ceACD24lHMaOMYX65gjd827VSm+joNBEoBLcZwzAkE11wyus3jgtUT6MBzqq/TQKAU8P7eauIO13AyLZ6b25mMxhcIPgR8jUV14DnV12kgUAp4Y81+ACIvGU2sSJvHDQfGAzXAFmeb1hGovk4DgRrw6oDDTrHQnHaKhXx89Qd7nGetI1B9nSuBQESuFZHdIlIgIg8F2R8jIn9w9n8iItnO9mwROSkim5zHU26kR6mu+KMxDF+7H4C5l2R3ePw453mv89waCLSOQPVRIc9QJiIR2FF6rwKKgPUisswYs8PvsHuAamPMeBFZCDwO3Ors22uMmRlqOpQ6W/+37ygXHzqOJyWOjGmBvQfONNZ5LnSetUOZ6uvcyBGcBxQYYwqNMY3Aq8D8gGPmAy84y0uAK0TaKYhVqodsASqd3MDYeaMRT8cfy8BA4Kss1joC1Ve5EQiGA4f81oucbUGPcSa7PwakOvvGiMhGEVkrIhe7kB6lOu03QLZTPzCuE/UDoDkC1f+Eu7K4BBhljJkFfBf4vYgMDnagiNwrInkikldeXt6jiVT9Uw3wf94Wxr9dAMCYy8d06rxR2C/OIaABrSNQfZ8bgaAYGOm3PsLZFvQYEYkEkoBKY0yDMaYSwBjzGbb+bUKwNzHGLDbG5BpjctPT227nrVRnvQwkf1xEQlkdQ8YMIWN6x/UDYCepGYWdy/gA2qFM9X1uBIL1QI6IjBGRaGAhsCzgmGXAImf5JuBdY4wRkXSnshkRGQvkcCrHrVS3MdhioUlLdwIw6cZJdKXayr94SDuUqb4u5EDglPl/E1gB7AT+aIzZLiKPisgNzmHPAqkiUoAtAvI1MZ0HbBGRTdhK5PuNMVWhpkmpjqwBthrD1KW7AJh84+Qune8fCLRDmerrQm4+CmCMWQ4sD9j2I7/leuDmIOe9DrzuRhqU6orHgMwtpSTtO8qgjEGMuGBEl873BYK9aIcy1feFu7JYqR63AfgrMMPJDUycPxFPRNe+Cr5OZf45Aq0jUH2VBgI14DzuPM91AsGkGyd1+TW0jkD1JxoI1ICSj62MytxTScSWUqITozvdbNSffyCI1DmLVR+ngUANKP8GtAB/v/gzAKbcPIXImK5XlSVj20DXAse0Q5nq4zQQqAHjM+AlIK6+mbTnNwEw5+tzzuq1hFP1BIf86giMMaEmU6kep4FADQgG+Cdn+dtLdtBYdZKsc7MYljvsrF/TVzy0PyoCT5QH02LwNnhDTapSPU4DgRoQlmGnl0wFxjyVB0Du/bkhveZp9QSxtnipuaG5zeOV6q00EKh+7wTwPWf5ka2llHx0iOjEaKYtnBbS6wYLBJojUH2RBgLV7z0EFABTgTFPrgNgxh0ziE6IDul1fQNsFUFrhXNzveYIVN+jgUD1a6uB/8F2of9NfiVbXtiMRAhzvzM35Nf2jbVehF/RkAYC1Y1qS2u75XU1EKh+6yjwFWf5R0D5v67FeA0z75pJak5q2yd2km9QimK0jkB1L2+jlzU/WcOTo5+kaF2R66/vylhDSvU2zdhhcA8Bc4Cvbi9j8e+34onyMO+H81x5jxQgBjgOSEyEfd8BkiNoOtHEyeqTtDS1AJAwNKE1GCp3Fa8vZtk9yyjbWgbA/jX7GTG3a2NjdUT/cwEajjdQvL6Yyj2VVBdWU1daR1NdE80NzUTFRRE1KIpBGYMYPHIwQ7KHkDk9k6TRSV0awlh1v+9gh8NNA/4AvP/D98DAufeey5DRQ1x5D8EWDxUC3n5cNGSMoWJnBflv57P/3f2UbS/j2IFjZxwXnxZP2qQ0Ms/JZOjMoWSek0nGtAyi4qLCkOq+r+ZwDe8+8i6bXtgEBpLHJXPDszeQfUm26+814AOBMYaSz0rYsWQHe1fspXRLKaala52CohOjGTF3BKPnjWb0JaMZPme43h2F0S+B/8VOIPNnoOmtPexauovIuEgu/md3Z0P1BYKmmP7XaqiuvI7NL25m4zMbqdhVcdo+T6SH+LR4ImIiMF5D7ZFaTlSc4OCHBzn44cHW48QjpE5MZeg5Qxk8cjCRcZF4Ijw01jbSWNeIJ8JDZGwkSaOSmHrLVAZlDOrpP7PXOXbwGB8/8TEbFm+g6UQTnigPc/9xLhf/5FI+iI8iuxvec8D+WtWV1bHxuY1seHoD1YXVrdtbojyUzBlG6dR0qselUDMskcZBUXhjIomsbyaqrpGEI7VkHTxGVkE1SVtLaSyto3BlIYUr7Zw6ETERjJg7gpzrcph4w0RSJ6ZqjqGH/BenOo49A+Qeb+DX978FwGX/dhmJwxJdfT9fBr2xH+UIju4/ykc//4iNz21sDWzxafGM//x4xl87nqzZWSSPSyYiKqL1HNNig0HZtjKObD5C6eZSjmw6QsWuCip22kdH3vnOCuK+kIP3P66gbEo6ccAY7JSF5wGx3fLX9g7eRi/5b+ez5aUt7PrzLozX3oxOunESV/38KpLHp3Af8DTwBPCPLr//gAsElfmVfPT4R2x5aQveRvshN1kJbPy7yWxdMImiC0bSHB/FSOwQAhOwNerNQCVQhh2q4KTfayaU1DDqw4Nkv3+AiWsPkLS1jANrD3Bg7QFW/WAVKeNTmHDDBCbNn8Soi0YhHg0KbjPAfwD/4qz/Gvgy8NbDqzhedJxhucOY++3QWwoF8rUcqu8HgaD2SC3v/fg9Nj670f4QCeR8IYfZX5tNznU5p/3wBxKPkDgskcRhiYy7ehwGqAOq6pup2FFOxeYjnCyro+lkM03NLZxMiKYmIZqiFsPhk03IR4cYtzyfE2/spnFlIe/++jo2L5rZ+vqxwMXAlc5jJn27pUvTiSbKtpVR/Gkx+1bvY997+2g41gCARAjTb5/OhQ9eyNCZQwH4ATYIxALndkN6BkwgqCur4+1vvc2O13ZgWgziERK+OIGXv57L5qvHYSI8XAE8AlwPZLbzWi3YSshdzmN7ViJ5N09lxc1TWQ7EVZ1kzLv7mPCXPUx4aw8UVLHuv9ax7r/WkTAskWm3TmXabdMYljtMcwouOAHch52DWLA5gbuBvSv3kvfrPDyRHm549gY8ke7/dPgCwcmYCGLpm62Gmhua+dsv/saHj31IU10TEiHM+PIMLnr4ItInd25+8J3AUiAP2Iydy9kLEBsJs7PsowNTSmu56sGVJL+0hRvveoMFHxxk36+/wOboCDYDK50HwGBsMJjl9zwFCGdthGkxnKw6yYmKE5yoPMHJytOX68rrOH7wONX7qjm67+gZRdAZ0zOY8eUZTL9tOoNHDG7d/jPg59gf6yXYgOg2VwKBiFyLLZqNAJ4xxjwWsD8GeBEbzCqBW40x+519DwP3YD833zLGrHAjTYFikmI48P4BJEKYds8sln//czw7PgWAS4GfAhd28rU8wGjncY3f9pPARmB9Shyf3jSFT2+awrLmFkZ8fIiJy3YzZclO2H+UdU+sY90T64gZn8I5C6eSe9t00qd07gunTrcHuAX74zMI+B12UuzqfdW8vtBOfjfvh/PInNFeaD97vkBQFxtpA0EfyxEUrirkrQfeoirfzhA7cf5ErnzsStImpXV47gngOWAxsDXI/njsD3Y09ochAvvdiQGGOo8p2B+Fc4GUzATMCwvYdFk2y7+xnOZnN3Lpnkp+86dbqU2L511gFTYYHATedx4+0cA0bFCY7vdw85tVV15H+fZyyraVUb6znJqiGmpKaqgtqaX2SC0tzS2deh2JEDKmZTB05lCyL8tmzBVjzmjE4MXO6/vf2BucF4EvuPi3nJaeUEdLdCaf3wNche1bsx64zRizw++YB4AZxpj7RWQhcKMx5lYRmQK8gi0CHIb9P08wxrRb45abm2vy8vK6nNb9a/ZTPz6FW0cMZgsQB/wncD/2QneHSuAjnA+tMZR+UsyUV7Yy9Y87SDxyqnNI84xMRi46h+vumMEIrTDrUDO2PuDHQD0wHntHOg2b7X72wmcp3VxKznU5LFy2sMszkHXWx9gbiK888Bajf5PHdb+6jjkPnN2Ipj2psbaRFd9dwYanNwCQNjmN6351HWMu63huhjrsj9MTQLmzbQhwI3A59g49B/uDf7ZKNpTwyhdfoeZwDcljk7n5tZvJ8stVHMHedG0ENjnPBW281lBODwzjsXUPWbRfvORt8nJ4/WH2vbePA2sPcGTTEU6Un2g33bFDYolPjyc+NZ74tHjiUuOIS41rXfe1Nkwek9xug5KjwJ3AX7C5nOeAO9p9584Rkc+MMWcMsuVGILgA+Ikx5hpn/WEAY8zP/I5Z4RzzsYhEYv+P6TiT2PuO9T+uvfc820Ags4E3sSFnF/aTu6vLLxOaBOBCkItayE7cz/TN25j8553EHa0HwBvpIf9zOWwcM5P80hxaPoqwDdXVKVcAv8De+gG8AHwbOAYeWriZ15jMLipJ4Wm+Rn13VjOOBA7CNV97hwue+YQVXM3HXNB97+eCERziSywlhWqaiWAtl/A3LsRL23UAgL2lvwt4FPsdAvgUO+XbXwCXp2NIpIbbeIVhlODFw2qu4GMuwLR125YIzMBGIv9f/rbaB9QD+4D92F6BxZCys4qJW3YxrqiQUbUHiTan/1ENRFNGBmWkU046xxhCDQnUkkgtCTS7UchyGzbKZmLvJG8EPji1O5Sf7LYCgRtFQ8OxReY+RcD5bR1jjGkWkWPYgSCHA+sCzh1OECJyL3AvwKhRo7qcyL1gb8sTgDXAl4Dqdk7oLrXAX8H81cM+xrIvdixv5X6BnGF7mFW0iZxP8pm0djeT1u6mNmMQW+6ezqbzZlF2IAPeAz7E5skHoguAHwKfd9YPYisH3rGrQgs3spTJ7KKeGF5lYfcGAYASoAWaU+xXKZLeWzTkwcslrOViPsSD4QiZ/IkvUUZGxyffiC0/neysrwcexo7h0U1qSOQ5vsJVrOR81nM1K5nMTlZwNUWtIz2ddoLNfn/kt02wZbjTsUFiKjY7MBbIAJloGFZzmIkf7mLSn3eTsaP8tJcsn5jG/jnZ7JuUTXHKCI41DIYSaQ0cFAOHsdmkUCRge0DeB/h+pj/AVna1ldVxUZ+pLDbGLMYWR5Kbm9vlmDgWuDfB3gQ8fSlEV7mbvtBEYL9hkyk/Usvylzaz7/lNJOys4MIn13Eh6yjOHcamr8xk56vTmJEcx+XAZdjfxriwpr17NWFvNp/AxkCwN3gPA98eBfFv220tzS0s++oyNr+wjeiEaO5ZeQc/m9sz9S5DgeZ4+1X61x81c9m/9sjbdkn1vmqW3LKEw3mHQeDCBy/kskcv4zcdzM62Bptt/8RZH4uNB7fMAc+qbk2yIwq4jj1vjmfZV5cxsrSIr/Ick780mfO+dR6j543ucoOLhpoGClcVsv3NPRQsL6DBr4i2JSmGqutyKLx+Alsuy6Yoq3PNjROwRRwZzrP/ciq2/sr3PfViY1YpNjPyKbZoy5f3SMVWDt91MXjyu/SnnTU3AkExnBaeRzjbgh1T5BQNJWEzPZ051xWCbVLoofvqA9yQPjSBRQ9+DvO9Cyn+tJj1z29i+yvbGJ53mOF5h7nmuyvY+aXJ/P7uWfz08jFEe4S50BoYzsdWmvVlBvvFeA1b+XvE2T4E+Aa2FMj/J76hpoHXF75O/vJ8ouKjuH357a53wW/PCMDbi0cfLVhRwOu3vU59dT1Jo5JY8OKCdnunGuBdbOmbr+VGBna8pq8Rns/XhOsn8A/5/8BHj3/Ex//5MTv/tJOdf9pJ2uQ0Js6fyLirxjFszjBiEk+vmTDGcKL8BKVbSilaV8SB922zbl/TcYDBIwczcf5EJs2fxOh5o4mIPlVEVo+94S8O8uy/XOs89p3l3yfY1kBfwzZ26OmbOzfqCCKxlcVXYK/JeuB2Y8x2v2O+AUz3qyz+kjHmFhGZCvyeU5XFq4Gc7qos7quaTjSxc+lONj2/iX2rT33UToxKYv1d57DxrpkcHZMM2A/Q57AVmOdjL2zH7T/CrwV7Z7QE+BOnf6EmY3PMd3Nmce+xg8d4df6rHNl0hLjUOBb+eSGjLup60WEo5gNlT67j2u+s4Lxvncfnf/n5Ds/pCcYY/vaLv7HqoVVgbJ+AG1+6kbjk4D8z+4HXgecB35c3EXgQO2RHQg+kuTNqDteQ99s8Njy9gdqS00fjjEuNI2FoAhhb2VtzuIamuoDKC4GRF4wk5/ocJlw/gYxpGSE14zbYarxybD+j8oDlKmxprq9ENwKbQ8jE/uidix0PazDdr9sqi50Xvw54Evs3PmeM+amIPArkGWOWiUgsdrrYWdjrstAYU+ic+wj2O94M/KMx5u2O3m+gBQJ/R/cfZdMLm9j0/KbTxntpunwMG+6eycovTaY5YGyXsdig4AsMM7AfxHBqAbZgq23WOs/+fU+HYoulbwMuIngubufSnSy7Zxn11fWk5KRw+1u3uzKqaFc9AKx/Ko/rv/4W5953Ltc/dX2PpwFskUMB9gt2tMnLvm8sp9xpFTTuJ5cw6YeXEOMRooEGbPXGQeyd2zpObwKahf277qf33kh4m7zsW72PwlWFFK4qpGJXRdAhPmKHxJI6IZXhc4cz8oKRjL1yLPFp8WFIcfh1ayDoaQM5EPiYFsP+NfvZ+NxGdr6+s7VIIjophkG3TaP47lmsyx1GnsgZdcuCrS+bhq07m4ptUpeNLQJwu+isFnuHuQ37Y7MV2IBtIudvJLYO/yZs3UdbbVjqj9Wz8vsr2bDY/sjlXJfDghcXEJ8ani/3T4Elz29kwd3LOGfROSz43YIee+9jwLPYqTjzsHWWUXWN3Pp3f2T8ir00xUay9KUb2XHTlA5faxC2M+XNwBfpe0WMpsVQV1ZHXVkd4hEkQkjMSiR2SH8enKJrurPVkAoD8QhjLh/DmMvHUP+/9Wx7dRubnt9E8afFND71GfFPfcatU9P56V0zibh1KttGJvEJtvhlJ3agtELsD4i/OGxAGIW9E0z1ewzGVt1FOo8ooBH741PHqXLSEmwZYZHzaGuUmdHAJcA853kc7QchYww7luzgnW+9Q+2RWjxRHq76+VWc/+3zw9pDewTQ3MNDTNRi+1AsdpZ9xh1v4AvX/56UDw7SlB7P9mW3kTp3BOdjKyMbnUcEtlhiGLa15fnAbPp2wwPxCAlDE2zRkOoSDQT9QOyQWHLvzyX3/lzKtpWx8fmNbHlpC+Xby1n94Ep4cCWjLhrFvQun8uRNU4jOTCCfU3fp27Hlw/uxxQo7nYdbooBJnN60+xxODdjWGQc/OsiqH6zi0Ee2pfKIC0Zw/W+vJ3N69/QY7orhnAoEPTH66EZsS8M9zvrlwNeB84/Ws+Kalyn+tJjE4YncufpO0ib21oId1ZtoIOhnMqZlcM1/XsOVP7uS/OX5bHtlG7v/srt1eOB3vvUOYy4fw9SFU/nijZO5JeX0e8Bj2HFiDmGbdfkeFdgmb17snWWz8xyNLVJI8HvOxP7I+x7pnN0AYcbY4q+PHv+IvSv2AnYUzMv+/TLO/dq5vWbwvuH0XKuh32NnXWvEFu39DlvZ2HSyiZdveIXiT4sZkj2EO9+9k2SnAYFSHdFA0E9FREcwacEkJi2YRENNA3v+sodtr26j4J2C1sq1N+97k1EXjSLnC7b1RNqkNJJEmIGtUA6XhpoGtr2yjc9++xklG0oAiBoUxQX/dAEX/tOFxAwOZfAC951WNNSNg869gR12wIttRfUEtiinxdvCn/7+Txz84CCJwxO5a+1dJI1K6rZ0qP5HA8EAEJMYw/TbpzP99umcrD7JrqW72PbKttYxVA6sPcCq769iyJghjL92vJ1gZ95o18fub0/TiSYK3ilgx2s72P2X3a1N/uLT4jnvW+cx54E5YasM7kgiEO0EgvpuyhG8ix1cz4sdavvf/Pat+M4Kdi3dReyQWO5YcYcGAdVlGggGmLjkOGbdPYtZd8+i/mg9e/+6lz1v7iF/eT5H9x0l7zd55P3GtshKHpfM6HmjGTZnGJnTM8mYnkFskjstMBrrGin5rIRDHx9i36p9HPjgwGnl66PnjWb212Yz+e8m94mpDjOcOYtPdEMgOIBtStsIfBM71I/P1le28un/fEpEdAQLly0kY2onhotQKoAGggEsdkgsU2+ZytRbptLibaH402L2v7efA+8f4NBHh6jeW0313mo2Pb+p9ZzBIweTOT2TwSMHkzgskYSsBBKzEolPj8cT6cET4UEiBE+Eh5bmFuqP1nOy+iTHi45z/NBxqvKrKN9RTmV+ZessTAAIDD9vOJNvmsyUm6b0ufLtoU6OoMHlyuIW7Dhvx7Ed137JqZZVFbsrePPeNwG49pfXMvri0a6+txo4NBAoADwRHkZeMJKRF4zk4n++mJbmFo5sOsKBDw5QurmUsq1llO8o5/gh+4MeKvEIQ2cOZfj5w8m+1I7HPig93N3czt4wp7K40eUcwS+x4/1kYGeo8lW6N9c3s+SWJTTWNjJt4TTOva875q1SA4UGAhWUJ9LDsNxhDMsd1rqtpbmFqgJ7R19z+NSEHDWHazhZeZIWbwvGa1qfPZEeYpJiiB0SS+LwRAaPGEzy2GTSp6STNjGNqPjeX+TTWcNjIzkBeF0MBLuwg+uBnXXNf3ylDx/7kNItpaTkpHD94ut1pjsVEg0EqtM8kR7SJqV1avaqgWZUbCS7gBYXWw19DzsUxFewPX19qgqq+PAxOxbrDc/ecMZAa0p1VV+e/1mpXiPbqSzGpRzBWuAtbL8M/3lfjTEs/+ZyvA1ezll0jtYLKFdoIFDKBdlOZbHHhUBggO87y9+H06aN2bV0F3tX7CV2SCxX/fyqkN9LKdBAoJQr0iM9tHgEj9dQ1ckJzNuyBDsm1FDs5OU+psXw7r+8C8Bl/34Zg3Rua+USDQRKucAjQotTPFQYQj1BC3YCGICfcPpw4bve2EXFzgoGjxzMuV/TVkLKPRoIlHKLUzx0IITioeXY1kKjsJN0+Bhj+PA/bAXxhQ9eeNosWkqFSgOBUi4RJxAcDKFT2f9znv8RO2qrT+GqQg7nHSY+PZ7Z98w+69dXKpiQAoGIpIjIShHJd56DdgcVkUXOMfkisshv+xoR2S0im5yH9o9XfVak06ms6CxzBOuxrYUGA/cE7PPlBuZ+Z26/6n+heodQcwQPAauNMTnY+YYfCjxARFKwc2j4Zkr8cUDA+HtjzEznURZiepQKmygnR3D4LOsI/tN5vo/T56+t2FXB/jX7iU6MZs4Dc0JKo1LBhBoI5gMvOMsvAAuCHHMNsNIYU2WMqQZWAteG+L5K9ToxTiA4chY5ggPAa9gent8K2Lf5pc0ATL1lqmuD/inlL9RAkGmMKXGWj2DnJAk0HDvPiU+Rs83neadY6IfSTj95EblXRPJEJK+8vDzEZCvlvjin1VDpWQSCp7Ethm7m9JnbTIthy0tbADjnznNCTqNSwXQ4xISIrMI2aQ70iP+KMcaIiAlyXHv+3hhTLCKJwOvAl4EXgx1ojFmMnaKV3Nzcrr6PUt0uzskRnGzwcpzTi3fa04SdgB7g/oB9+9fu5/ih4wzJHsKoi0a5k1ClAnQYCIwxV7a1T0RKRSTLGFMiIllAsDL+YuBSv/UR2AEVMcYUO881IvJ7bB1C0ECgVG8X6QSCyPpmDmDnZu6MN7HZ6cnAxQH7trxocwMzvjyj10zNqfqfUIuGlgG+VkCLsLPpBVoBXC0iyU4l8dXAChGJFJE0ABGJAq7HzqWuVJ/kazUUWd/M/i6c91vn+V5OzTUAdvKeHUt2ADYQKNVdQg0EjwFXiUg+cKWzjojkisgzAMaYKuzMeuudx6POthhsQNgCbMLmHJ4OMT1KhY0vRxDR0Ex+J8/ZB/wV+2W4M2Dfnr/sobG2kREXjCA1J9W9hCoVIKRhqI0xlcAVQbbnAV/1W38OeC7gmDpA+8mrfiPCqSyOrG9mfSfPeRo7yNzNQErAvvy3bDiZcvMUl1KoVHDas1gpl/jXEXzSieObOHV3dF/APtNiKFhRAEDO53PcSqJSQWkgUMolvkAQ3+BlH8FbTvh7AygFpgCfC9hXsrGEE+UnSBqdROpELRZS3UsDgVIu8RUNZTv9CDrKFSx2nu/j9EpigIJ3bG5g/LXjdRpK1e00ECjlEl+OYGRDx4FgL7aLfSy288wZ+9/ZC9hAoFR300CglEt8gWBEJ3IEvuZxtwCBIzXWH63n0MeH8ER6GHP5GLeTqdQZNBAo5RJfP4JMJxB8ih02ItBJ2q4kBihcXYjxGkZ+biQxg3VietX9NBAo5RJfjiC2wcsI4Dh2kplAzwHlwCzggiD7/esHlOoJGgiUcokvEDTXN3O+sy2weKgReNxZ/hfOrCQG2P/ufgDGXT3O9TQqFYwGAqVc4ms11FzfzFxnW2AgeBk7FO8Ugo/ZXldWR3VhNVGDosicEWwwX6Xcp4FAKZf4cgTeBm9rIFgGVDnLzcDPnOV/JviXr+iTIgCGzxmOJ1K/nqpn6CdNKZf4Fw1dgB1KtwQ71koL8H2gABgH3NrGaxStcwLB3OFtHKGU+0Iaa0gpdYqv1VBzfTMRwCvYCuGlwGxgM/YL9wRtf/GKPykGYMTcEW0coZT7NEeglEtacwROh7KxnOo9vBlIBJYDX2zj/BZvC8WfOoHgfA0EqudojkApl/gXDfncCuwA3sZ2ImtvssmKnRU01jSSNDqJhKEJ3ZhSpU6nOQKlXOJrNeRt8J62/V+xncs6mnHYVz+gxUKqp2kgUMolwXIEXaGBQIVLSIFARFJEZKWI5DvPgcOm+I57R0SOisibAdvHiMgnIlIgIn8QkehQ0qNUOGkgUH1VqDmCh4DVxpgcYLWzHswvCD7I4uPAE8aY8UA1cE+I6VEqbFpbDTV0PRDUH6unfEc5EdERDJ011O2kKdWuUAPBfOAFZ/kFgneWxBizGqjx3yZ2kPXLgSUdna9UXxBKjuDIxiNgIPOczNaAolRPCTUQZBpjSpzlI0BX+sSnAkeNMb5vTRHQZi8aEblXRPJEJK+8vPzsUqtUN/IfYqKryrbZ+cx0WAkVDh3eeojIKiBYXvUR/xVjjBER41bCAhljFuM0y87Nze2291HqbPnu5L0NXowxXZpZrHRrKQAZ0zK6JW1KtafDQGCMubKtfSJSKiJZxpgSEcmi42la/VUCQ0Qk0skVjACKu3C+Ur2KeISI6Ai8jV68jd4uFfGUb7O53IzpGghUzwu1aGgZsMhZXoSdj7tTjDEGeA+46WzOV6o3OpviIWNMa9GQ5ghUOIQaCB4DrhKRfOBKZx0RyRWRZ3wHicgHwGvAFSJSJCLXOLt+AHxXRAqwdQbPhpgepcLKfwTSzjp+6DgNxxuIT48nIVN7FKueF1LzBGNMJXBFkO152EEXfesXt3F+IXaQRqX6hbNpOaT1AyrctGexUi46m74ErcVCWj+gwkQDgVIuOpscQdlWrR9Q4aWBQCkXnVUg8PUhmK59CFR4aCBQykVtjUDaFm+Tl4qdFQCkT03vtnQp1R4NBEq5qKs5gqqCKryNXoZkDyEmMaY7k6ZUmzQQKOWirgYCrR9QvYEGAqVc1NVWQ9piSPUGGgiUclFXcwSt9QNTtH5AhY8GAqVcFBHbtSEmKvMrAUidkNptaVKqIxoIlHJRa9FQJwKBMYaq/CoAUnJSujVdSrVHA4FSLopOtLOtNtY0dnhszeEamk40EZcaR1xyXHcnTak2aSBQykUxg20T0IbjDR0e68sNpOZosZAKLw0ESrkoNikWsHMQd0TrB1RvoYFAKRfFJDk5gmOdzxFo/YAKNw0ESrmoK0VDlXtsjkADgQo3DQRKuchXNNSVHIEWDalwCykQiEiKiKwUkXznObmN494RkaMi8mbA9t+JyD4R2eQ8ZoaSHqXCzVc01FEdgWkxVO11iobGa45AhVeoOYKHgNXGmBxgtbMezC+AL7ex70FjzEznsSnE9CgVVp0tGjp26BjeBi8JQxN0sDkVdqEGgvnAC87yC8CCYAcZY1YDNSG+l1K9XmeLhrR+QPUmoQaCTGNMibN8BDibmTV+KiJbROQJEWnz1khE7hWRPBHJKy8vP6vEKtXdfDmC+mP1GGPaPE7rB1Rv0mEgEJFVIrItyGO+/3HGfurb/uQH9zAwCZgDpAA/aOtAY8xiY0yuMSY3PV0H6FK9U0R0BJGxkRivoflk28NM+PoQaI5A9QaRHR1gjLmyrX0iUioiWcaYEhHJAsq68uZ+uYkGEXke+F5XzleqN4pJiqG5vpn6Y/VExUcFPUZ7FaveJNSioWXAImd5EfBGV052ggciItj6hW0hpkepsOtMhbGvjkCLhlRvEGogeAy4SkTygSuddUQkV0Se8R0kIh8ArwFXiEiRiFzj7Po/EdkKbAXSgH8PMT1KhV1HFcYtzS0c3XcUgORxQVtcK9WjOiwaao8xphK4Isj2POCrfusXt3H+5aG8v1K9UUd9CY4dPEZLcwuJwxOJigtedKRUT9KexUq5rKOioerCagBSxmlFseodNBAo5bKOioZ8PYq1WEj1FhoIlHJZR0VD1XttjiB5rAYC1TtoIFDKZR0WDfkCgeYIVC+hgUApl3U0J4HWEajeRgOBUi5rb5YyY4zWEaheRwOBUi7zFQ01Hj9zAvsTFSdorGkkJimGuBSdsF71DhoIlHJZe5XF/hXFtkO9UuGngUApl7VWFgepI2idjEbrB1QvooFAKZe19iMI0mrIV1Gs9QOqN9FAoJTLOlU0pIFA9SIaCJRyWXtFQ9qZTPVGGgiUcll0QjTiEZpONNHS3HLaPq0jUL2RBgKlXCYiQXsXN51oorakFk+Uh8EjB4creUqdQQOBUt3Af+5in+p9tlhoSPYQPBH61VO9h34aleoGrcNM+OUIfPUDWiykepuQAoGIpIjIShHJd57PqAETkZki8rGIbBeRLSJyq9++MSLyiYgUiMgfRCQ6lPQo1VsEG4q6YncFAMnjtaJY9S6h5ggeAlYbY3KA1c56oBPAncaYqcC1wJMiMsTZ9zjwhDFmPFAN3BNiepTqFYIVDZVtLQMgc3pmWNKkVFtCDQTzgRec5RewE9CfxhizxxiT7ywfBsqAdGfC+suBJe2dr1RfFKxoyBcIMqZlhCVNSrUl1ECQaYwpcZaPAO3e6ojIeUA0sBdIBY4aY5qd3UXA8HbOvVdE8kQkr7y8PMRkK9W9AvsStDS3UL7Tfm41EKjepsPJ60VkFTA0yK5H/FeMMUZETDuvkwW8BCwyxrR0dcAtY8xiYDFAbm5um++jVG8Q2Lu4qqAKb4OXpNFJrUFCqd6iw0BgjLmyrX0iUioiWcaYEueHvqyN4wYDbwGPGGPWOZsrgSEiEunkCkYAxV3+C5TqhQLHGyrdWgpobkD1TqEWDS0DFjnLi4A3Ag9wWgItBV40xvjqAzDGGOA94Kb2zleqLwosGirb5tQPTNdAoHqfUAPBY8BVIpIPXOmsIyK5IvKMc8wtwDzgLhHZ5DxmOvt+AHxXRAqwdQbPhpgepXqFwOkqtcWQ6s06LBpqjzGmErgiyPY84KvO8svAy22cXwicF0oalOqNAouGtMWQ6s20Z7FS3cC/H0FjXSNVe6vwRHpIm5QW5pQpdSYNBEp1g/i0eADKd5Rz4P0DYCB1YioR0RFhTplSZ9JAoFQ3SJ+Szuh5ozlZeZKldywFtFhI9V4aCJTqBuIRbnz5RmKTYzlZdRLQFkOq99JAoFQ3SRqZxA3P3NC6ri2GVG+lgUCpbjT5S5O55MeXMPLCkWRfmh3u5CgVlNh+XX1Lbm6uycvLC3cylFKqTxGRz4wxuYHbNUeglFIDnAYCpZQa4DQQKKXUAKeBQCmlBjgNBEopNcBpIFBKqQFOA4FSSg1wGgiUUmqA65MdykSkHDhwlqenARUuJsctmq6u0XR1jaara/prukYbY9IDN/bJQBAKEckL1rMu3DRdXaPp6hpNV9cMtHRp0ZBSSg1wGgiUUmqAG4iBYHG4E9AGTVfXaLq6RtPVNQMqXQOujkAppdTpBmKOQCmllB8NBEopNcD1y0AgIjeLyHYRaRGRNptaici1IrJbRApE5CG/7WNE5BNn+x9EJNqldKWIyEoRyXeek4Mcc5mIbPJ71IvIAmff70Rkn9++mT2VLuc4r997L/PbHs7rNVNEPnb+31tE5Fa/fa5er7Y+L377Y5y/v8C5Htl++x52tu8WkWtCScdZpOu7IrLDuT6rRWS0376g/9MeStddIlLu9/5f9du3yPm/54vIoh5O1xN+adojIkf99nXL9RKR50SkTES2tbFfROS/nTRvEZHZfvtCv1bGmH73ACYDE4E1QG4bx0QAe4GxQDSwGZji7PsjsNBZfgr4ukvp+jnwkLP8EPB4B8enAFVAvLP+O+CmbrhenUoXUNvG9rBdL2ACkOMsDwNKgCFuX6/2Pi9+xzwAPOUsLwT+4CxPcY6PAcY4rxPRg+m6zO8z9HVfutr7n/ZQuu4C/jfIuSlAofOc7Cwn91S6Ao7/B+C5Hrhe84DZwLY29l8HvA0IMBf4xM1r1S9zBMaYncaY3R0cdh5QYIwpNMY0Aq8C80VEgMuBJc5xLwALXErafOf1Ovu6NwFvG2NOuPT+belqulqF+3oZY/YYY/Kd5cNAGXBGz0kXBP28tJPeJcAVzvWZD7xqjGkwxuwDCpzX65F0GWPe8/sMrQNGuPTeIaWrHdcAK40xVcaYamAlcG2Y0nUb8IpL790mY8z72Ju+tswHXjTWOmCIiGTh0rXql4Ggk4YDh/zWi5xtqcBRY0xzwHY3ZBpjSpzlI0BmB8cv5MwP4U+drOETIhLTw+mKFZE8EVnnK66iF10vETkPe5e312+zW9errc9L0GOc63EMe306c253psvfPdg7S59g/9OeTNffOf+fJSIysovndme6cIrQxgDv+m3uruvVkbbS7cq1igwpaWEkIquAoUF2PWKMeaOn0+PTXrr8V4wxRkTabLvrRPvpwAq/zQ9jfxCjse2JfwA82oPpGm2MKRaRscC7IrIV+2N31ly+Xi8Bi4wxLc7ms75e/ZGI3AHkApf4bT7jf2qM2Rv8FVz3F+AVY0yDiNyHzU1d3kPv3RkLgSXGGK/ftnBer27TZwOBMebKEF+iGBjptz7C2VaJzXZFOnd1vu0hp0tESkUkyxhT4vxwlbXzUrcAS40xTX6v7bs7bhCR54Hv9WS6jDHFznOhiKwBZgGvE+brJSKDgbewNwHr/F77rK9XEG19XoIdUyQikUAS9vPUmXO7M12IyJXY4HqJMabBt72N/6kbP2wdpssYU+m3+gy2Tsh37qUB565xIU2dSpefhcA3/Dd04/XqSFvpduVaDeSiofVAjtgWL9HYf/oyY2tg3sOWzwMsAtzKYSxzXq8zr3tG2aTzY+grl18ABG1h0B3pEpFkX9GKiKQBnwN2hPt6Of+7pdjy0yUB+9y8XkE/L+2k9ybgXef6LAMWim1VNAbIAT4NIS1dSpeIzAJ+C9xgjCnz2x70f9qD6cryW70B2OksrwCudtKXDFzN6Tnjbk2Xk7ZJ2MrXj/22def16sgy4E6n9dBc4Jhzo+POteqOGvBwP4AbsWVlDUApsMLZPgxY7nfcdcAebER/xG/7WOwXtQB4DYhxKV2pwGogH1gFpDjbc4Fn/I7LxkZ6T8D57wJbsT9oLwMJPZUu4ELnvTc7z/f0husF3AE0AZv8HjO743oF+7xgi5pucJZjnb+/wLkeY/3OfcQ5bzfweZc/7x2la5XzPfBdn2Ud/U97KF0/A7Y77/8eMMnv3Lud61gAfKUn0+Ws/wR4LOC8brte2Ju+EuezXISty7kfuN/ZL8CvnDRvxa81pBvXSoeYUEqpAW4gFw0ppZRCA4FSSg14GgiUUmqA00CglFIDnAYCpZQa4DQQKKXUAKeBQCmlBrj/D/24iEkUwMnNAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] @@ -793,6 +630,9 @@ } ], "source": [ + "error = np.sum( np.abs( np.asarray(vels[0:16]).flatten() - np.asarray(velP[bc_tx:bc_tx+steps]).flatten() )) / (steps*n)\n", + "print(\"Mean absolute error for re-simulation across {} steps: {:7.5f}\".format(steps,error))\n", + "\n", "fig = plt.figure().gca()\n", "fig.plot(pltx, (vels[0 ].flatten()-velP[bc_tx ].flatten()), lw=2, color='blue')\n", "#fig.plot(pltx, (vels[steps//4].flatten()-velP[bc_tx+steps//4].flatten()), lw=2, color='green')\n", @@ -804,17 +644,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "All steps over time, with a color map... (note x axis does not show actual simulation time)" + "This should show a mean absolute error of ca. $1.4 \\cdot 10^{-2}$, which is significant for the value range of the simulation.\n", + "\n", + "And for comparison with the forward simulation and following cases, here are also all steps over time with a color map... (note x axis does not show actual simulation time)" ] }, { "cell_type": "code", "execution_count": 13, - "metadata": {}, + "metadata": { + "scrolled": false + }, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAC8CAYAAACDmO49AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAk4klEQVR4nO2da4xk13Wdv3VuVfc8OCRFip5MSDqkAyaIIsAxQ8gCZCiCmYfEKB4HEAjZgULJDAYBJFtOYlik9cP6YQVU4shhYEPGxGRMBoxGtK2ABKLYkgULgoGQlijTehG0qZc1xJCUEdGPiOyuqrvz49ZIDaq7eqZ6VdXuvmcNBt1dVX36nHvuWXvvtfc5VxFBRUVFRcXBQll1ByoqKioq/KjkXlFRUXEAUcm9oqKi4gCikntFRUXFAUQl94qKiooDiMGqOwBw6eBIfM/6Zbb2ZGupoqKiIi+e+tYzfxYRV233Xgpyv2r9cu76O7fb2hPe8s6S2FrU0Gt+SLUMuGJ/4+Sn/v3XdnovBblHwLh1MqivraJgkpgDMhse8BtaKyL5xTMi+31S4UcKcgfSEujETADuRea+bn4OyMsqpUeeu/s+qcYiP1KQewAjI4lmlirqIpsf7ijAbbidyD6vWZ0xyOxOLBd5yN0oy2RfGE6UHh0fIfVnYkt/prVX63WZ2JXcJd0LvBF4LiJeOX3tPwL/DNgEvgS8LSKen753J3A7MAF+KiJ+Z7e/EeH1BDJ7FXZZJrGfYu9Zj6Keibm9kjj3YZcWE8/rMnEhnvuvA78M3L/ltY8Bd0bEWNL7gDuBd0l6BfBm4O8Cfx34XUl/KyJm3qtuWcYJt8TTtxu5L6SS2VAAtImdADcyy7LLxK7kHhGflHTdS1776JYfHwHeNP3+JHAmIjaAr0h6CngV8H9m/g1g1F5Er2fA7xknv1mMBLUIQ+GMLDLPg+n2XRgyG1k3+jPS2XBo7j8BfGj6/dV0ZH8eZ6evfRcknQJOAVw+uMyW3PInLMMeIruwCNkjsweaetEmj8j6YmQhv6FdFvZE7pLeDYyBBy72dyPiNHAa4OpDV8emcUa860KpCc/dt8zVgZlLF/uUX/DnA8xIbmiXhbnJXdJb6RKtN8d3nvjxNHDtlo9dM31tJgJwkbt7HorwSh++poDcnrZ/rHkHazey3uYWEtG64DYWmQ3tMtfrXOQu6fXAzwL/ICK+teWth4H/Ien9dAnVG4A/2K29CJ/mDt7JdU9Gdk87M0llToBOInd9tXu8kXi0eXsGsURx8UJKIT8IvA54uaSzwM/TVcesAx+b1h4/EhH/OiK+IOlB4It0cs3bd6uUAW9CFbw3cp/Isyg3gboNRZ+iHjelOO+TPkWzyzSKF1It82PbvHzPjM+/F3jvxXQiM7m79UCnslCUm/Aye7N9MmSQOxndp7G2S+xcjh2qEWyYVprkJWTJq/VmjgQyGzKoEdlekF1edEHUIz7OIwW5t4GN3AEGxtnoWvL1rTEzaDVke2jP2FZmQwa55yIzd2aP8GYhBbl31TLG7Lt5MvImBbWA5LHRkLkJyk6g/TBki4jIMhNelSo75CD3gE3T3VIEE+PVcxNUYySUIm96ppg9d7e+aPUW1cmBzvaccM7sBHPi3dgWdOvfCf9ceNEvcicYhSmjGl4CnZg3MbmP0HHKPApZ65fdN7FTbsPsQbm9z8YcCjgJr/NmjU6AraUOfTM+OyEFubfAi61nK0NBXu8YWSfD3TdrSZo5Ge3OL7js/3lkJvfWzADuqGdiZLzMifwiWTdZmZXPmUhC7sGLMbK0VRBN+G6XRoVidLed5O5uz23IBuYwJbOG3+VmjBGjOYLyV8u4ixZ88Boy8/OYra3NRgpyD4INjOROY2kLYBDFumgHRsMDnfFxQcDA2N5EQTFeu7FxoRWz3CbJevKi3fA4n3Rm9tzdEZQ1E2WW75Z5snkScm/Z0Ialrc5z9w1rQoOM9jaMhgegtYbHYuKslglZPbzGmmQMc0TmPSOlMVqeSXiP/O1KZm3NeSOe8J5744563PmKWUhB7i3Bhl6wtFWiMNS6pS2ANlqKldx9wrEoDIyLtiCrh9f57c7qG++icEYpLd4opTWWGhVk9RhlzvW4k8fO1txjLfI6ZLOQgtyDlhEezx1BayTQAQNk9LbbGNraAgh87YliJaggbCtNiDArllYSMHtkzqhC8kYpMstt9goyq2ccVolsmUcjpCH3Df7K0lanfPrIfaIBxUjuE0bWSGBiFAOaaMx980paE2NbBTE2lt8UZJZ5jIbMXB7cjdO52c3L7m3i3cLLfMh7GnIfh8lzB0K+RdswtBKUUzICGBoJaqKSOkqZGG9Xd+K9IK8sYw7dW7NhdML9fFd3e5mjnllIQu7BOF5cdTe2RdAioxcVtFZj4bxPij15PLEaC2u+IhaQrzBeO2ffwJ94txqyxIaxSGYNH2vRwiykIHeiZdJ6PHepYYzPUIQmKIwVLolPSSo0NM5bQtAd629CGKMeTazGoqvQ8klkYTa0TgTejT1NFG97TmcsumS5C8vy2iEJuXee+6alLUWhkXGRyeu522Gtgii0xgStM7ENeKOUKDgffd66w+0At7FwwZ14t8PoGE/wErLMUcosXMiTmO6le1bqcxHxyulrVwAfAq4DvgrcGhHfVJctuBu4BfgW8NaI+MxufyMIn+dOIYozUdZSjBuP3MbCSVCFIa3R055oZE1GW2UZFQZOQ2Y+G6HR0JrcdvavTP+50Jr3frglLScZu6OUWbgQz/3XgV8G7t/y2h3AxyPiLkl3TH9+F/AGuuem3gD8IPCB6dfZiKBtfaTiJIHQhFbOxFtr8ywKxZo8lkY08hFeiaGV3FtjRFZorPfJWN4qKGfUU6LQOufV7LmPw2ss3BsFM+dSZv+tXRARn5R03UtePkn3XFWA+4BP0JH7SeD+6M5SfUTS5ZJORMS5mX+DoDWdLQNYj5mzyzLGplq8uppoCKeHp5ZivHbFWH1TaKzGomG4NI/sYjEx7/0oZjJuNLSW9PqjFB8h2wsqZmBebji+hbCfAY5Pv78a+PqWz52dvvZd5C7pFHCq+6mxeu7WYpRorOTuntix1e4MrIsWfGe6S8WquYcxgoKpE5A0AeqMngBCjbW0MvOB6UFLa5Rl3cZiFvbs+EVEaI6j0yLiNHAaoGgYbXjIXSpWQ1EKRPi8CpkPDvNGKRPCGL5bEZiP1BsRTpnHLEE5CWrCyJoot5fMug2jOaHqlCqDNpXmvh2ePS+3SDoBPDd9/Wng2i2fu2b62kwEQZjIPaZVuDa4nyRghGi8UQrFKstEMS9a41xI/ZKgMm/sc8Oah6LYZR7n3o9ZmJfcHwZuA+6afn1oy+vvkHSGLpH657vp7edh89wpOBlv4tbIrMZibK2WEQ2l+FT8aL3XzlkF1ZXMGsfqDt+NBFVUrHs1FrGxzwn34XxOo90wxLr3YwYupBTyg3TJ05dLOgv8PB2pPyjpduBrwK3Tj3+ErgzyKbpSyLddWDcCF+tFtGBctArvzeK8jd0SlNQSpidiARQNvcloq+fuPYOoWI9G8Oc9ilNaMG/sc5e4utGY936453cnXEi1zI/t8NbN23w2gLfP0xFniOy0jEEx3zBG2SNaitGQufM8QeudV7MEpaR9c59+6UYnfTotrbGp8Bptt7HoDjbMLcuY4fPcwftAW8n9gFyjp02xbjqSO1/hhtlzd0cVrvacUtsiIBovuZvhTIC6jUXRgInpqXO7IQm5+ypShLylUAFeMcWr8zrlgJg+cqIP6Dx3owdV8JdWJj32QkuUFlaNYpbvlnmgexJyN2ruYHW1RQvWg4icGnmxJaLPt+d8KI4zqnBDUZAxaWl3ZI3GQvJWQUnFv2vb1tY+yFf0S5YBn0kTVonHrc1ao4oWb/F3sXrubpmnSlDzwS1BZc5XdCvCayysx5kwgL7JMj4E3nN1vVKFdVGAXYKyPlLMWGnkjirMDxOiZWw2ZCOfhh8TirHiA8zli2ZD5lxh9uTxEnEAyR3cj8h1RwJOuKMKdzLaBXeJK/aoZ2AvrUxbaWQ+ksO56SjCejBCt/ytO169B8zNwgEldyfcGRD3hg1zVGFPRjvh1PC9Z9UQY2tuxp1Lce+HyLuxD7Mh8ya2RbO0ooVK7vse5qjCeY6OPRlta8pf4iqm0YCrPWMVVHjJuNPcc56UCvjzFWYHallVUJXcl47ER+DhlSqC6FUy2tueudLIvNktq+YOpJag3MZiFhKRuzVGNraVHXnzC131jbEsNXkyOut+iA5uScsrQTkJNLMEVRiad+PvjCTkLrxej/vi9cVY+CuNnPCWacoso0Dme9gtQbkrl1yEJ3suxdgWXRXUspCE3KeLzQRvwqIl9d1ihzsSyAlnRAH5k9HuElfveTC+tsL8fDL3k5OcO8p3Qxpyd4Z5zvDdn9nOXDOb3fDkFWcz5xdgEclo80ZBZ5LRWGmEin0/xLKQhNyFTAmfMHtQAmv4nttY5PW0F4OaX5gH7mS021hk3g9hf5jQDKQhd9cF7DwA76YIbwiaV4fukDmyyIzc8+qNKtxrzNbUFHn3Q7ifDzELScjde25y+npoZ3PWqML9oNJqKLKgL1FFB+89nHn9z8KeyF3SvwH+FZ0q9Tm6Jy+dAM4AVwKPAW+JiM1dWrLJMiwgseU1PO76ZWNTNapIhOT5Besic2928147ezJ6SZibUSVdDfwU8IqIeEHSg8Cb6R6z90sRcUbSrwK3Ax+Y2Rb4dChzyChacxjlDJbcXoX52lVjkQiJ8wsLKUv1Iet5S7thr0wzAA5LGgFHgHPADwM/Pn3/PuA97ELuSNbHxXmP6GzJayy8ZJw9BM1vLJzIbHj8O5mdyCwb7QvPPSKelvSLwJ8CLwAfpZNhno/vaA9ngau3+31Jp4BT0B2mU4qP3J071LoHO3nPJPdmy83JI7uxyOuR+fMVTmSPUryRgBN9iipmYS+yzMuAk8D1wPPAbwCvv9Dfj4jTwGmAphwK19NOIlqKs2Q2vARVZD7K1V32VfMV8zVljyqyG4t+YCH5hSVhL8zwD4GvRMQ3ACR9GHgNcLmkwdR7vwZ4eteWJJvn3pGxM2RsCflOSmxb8zka7g0bVo/MvWHD7OH1SoLKvkEtL+yRwJKwF0b9U+DVko7QyTI3A58Gfg94E13FzG3AQ7s1JLBp7h0Ze+vcncYic7QdtObTB9xRhfkY3MxaajUWBxLLvG570dwflfSbwGfoXLQ/pJNZ/hdwRtIvTF+7Z/fWCk1Zn7crL+mXt7qlbUdWY6HwPqzYbSycffNGFeYHWNiroNwHfeWVoIjWfBZUNRSLgGKZ6dsdMGwuiSsu+X5LW0FLGB84MYmx3Vg44SQ8d36hjeRjtYY93va8tdrmxPa0TRuWqENfLPIbns3HIuKm7d5JsUNVKgxMnnsbrfVYTanxGovifZq6dY3JTAJ512znBCQumc1fBWVszi1DG+9ht0a+L2QZJ4QYcMjSVqsJrTVh6U2ouglvYiwNamPkNTyZ8wuaeKMUc4mr9TZZSBWUtz0remUsdkYSci8MddjSVtAyMXruE/pDeJI3H5A5vxBhjqASI/dGPMDcv9TGYp+UQtogCuscsbU3YsPW1kQjWnyee8PQ2p5KY2sr8HqzY2eVETBpffPq1tzVmg2ZE+Zk9GIkqKwH1mWXoHZ+KwW5FxqOxCWWtlqCIWuWtgDGGlsjgZF8BAXQmDZ/QUd4ExnzFWZyL1bZozVX37gNmfvIX+8zSr35Cm8UpdS5lOU9PjEJuYtD4ZNlxvgIb8KYsdNzd5IxLY1zrBpZHwOWPUpxkvvEvfPYiKD1ynelIYzz6jwuxJ0oh9ZqLKzlwbsgBbkLcdhEUm23bC1tAYxjyMR4Iw/wEVRLWCWoVuv2KMW50Ir12k0YG6+dKNb9EG5MjGONhZRW+uA2Fs5H47mfoTprFlKQe0EcKUZyN4pko5jQGi/TKIwHpBGMkkcpTnIfGaOelok1ipqYK42cMk/Q2o+8cJYHZ0aE9wHZvXuGaiNxydDjlUXAqPWR+yQaWmNt6qh1tgajcBJUy9hJxnGY1tjehjFfMWHERL6FNtKGN/FucnZgGqWEMcIzG7KxOcLzHlbXWiMBdx5qVpydhNzh0jXPoCNgYmTPcRv29pzYaI06dGCNejaM3l1EsBGejW4wjXqM+udIm1YnYEMvWAlvQ9+ytTVhZNWOx+VFWmeVlnGs7sT7pN1YmqSVgtyLxLGhp0aoNZN7G/J62kZy76IUX22V+9qN28aa2tqcOKOUYGwt+zxsjXo2wlcaHLRsyFONBjBmYs3NbOgFa75isxgNWYysO97HrTdK+asXdn4vBbk3gkuMPXESlLMt8JIxwNhJ7njH6zRkAJsTryEbO3MzbRdduLDRejf1jIzGYhQTa9HChvEMopZgpF0e2XwRGDOxli9PmpFVqvwGj+z4XhJyDy4behZGS7dwXQg6790Ft7HwRineE38nIetcOA1jABNjWDE2Xzt/hOfMQ3nX2KbZCRgZDeMkvAUakwirfPfHM95LQu5w+dB5zocXzh1qrXmLmnldWAnK3TfntYvw3ifuLe9j+7y67zuvofXCWDKb/FDI335+5/dSkPtAwVXr3uNhs6Io993ipAD3WIvzsXiEtX8FkLG9xtk3BcPiM2VNCRqjRr42MG50U1jbGzQtzcA31uHahNL45vbOJ3d+b0/kLuly4NeAV9IZ4J8AngQ+BFwHfBW4NSK+OaudQQmuWPfpWplJwHmaXlHYCcU51qa01v55SQAGxvaaQUtTfGMdHPL1rTTB4LDxHl6Dsu67kcvRBhkXrS71Jd41HMAhnw+s9SEMfJEFD+z81l57fTfw2xHxJklrwBHg54CPR8Rdku4A7gDeNauRRi2XHfKRe2P0Uoq8HtmgcdbzhpWgJGiM/RustWAkvOEhI0E1QfGcMg10ZKeBkfCOGQllUNBRH+FxaABDY/+OHvJ5ZKXAUePEDhpY95XgxqG16bOKF4+5Z0jSZcBrgbcCRMQmsCnpJPC66cfuAz7BbuTeBJcefXHernx3e8YwqimBjARVht5ndw7WzYTnO3ONcljW+7gcNaqIA6EjRoI6PISBb7A65jlrCYCmgUuMhDccwprxebZHj3gJ74hxrCrEmnFRNE1ngJaAvczQ9cA3gP8m6fuBx4B3Ascj4tz0M88Ax7f7ZUmngFMA1xw9ypFLPeVLKtCYKm8AyjCsp5E2h526DJRDRkIZFjBtJgMoR4dejeyoz4PS2gDWjd7skfVu4bpw7KivrSLisNFYrA2tY41D615yd5JxKWadt+wLch8ANwI/OX1Y9t10Esy3ERGhHTSNiDhN90Bt/v5fuzIOHzcRcgGtGfW7YWMNt3VkYL1ZdNhIUGuDThN04fCa90Z2h9uHfe3F+rp3rMa+UUrXPxcGA+9YB42X3J19MxNxLInYYW/kfhY4GxGPTn/+TTpyf1bSiYg4J+kE8NzuvRDNlR5S0cDrfWp94A23D5u9Cmd7a4Mu5HbhiNcjC2e43QzgkPHaDde8C3c49BLLmnFe3d7nPibQzJib3CPiGUlfl/S3I+JJ4Gbgi9P/twF3Tb8+tFtbagrlZaaFW2QNt7XmJXcOr3uTR+t5yT29N+skvMbszTr7Bl3/XMhOxpnJ3bjBajfsdcZ/EnhgWinzZeBtdAr1g5JuB74G3LprK43QMdPCHTTWTD6HzKVLVoKSN9wemsdqJnfrWEvp5AUXnNcN7GTcKwKtAPZI7hHxOHDTNm/dfFENNQ1cZkogFZm92QUkj5wJGquW2sDQd+3CKfGcJ2MnqTgToMUrVVQyToQlettOpNihSlPgMtOpdUVeaWFt6PWinDrvIsq0rN6sN3lsnQfwk3El0BxITMbaR7KMB00hXKVfKl69ctBYScWq86rkLvsyk3E4DQ/kJuMlbXSZC4kfsecmdjsZ947cVXzyQilez30w8IbvTjIGr9ZrroJIT8aZCdSNSsjzw9le78i9yEruVq13ETW9LiygJM2q9VYyzoFFELuRpFKTsbu9JRrZHOQu4yaL/VAFkTXxVsk4D9wkkFiHtqJt/WN1zsUSzxDOQe5FcMi5QaUnVRCVjHMhq/TRN9nDbhidD3TonefurXBJXQWRnUDdBqMvHmNyT9tKyO45nfgeQA3kJuNFRBY7IAe5IxupLKQkLTMhZ674yEzsfSJjyO0d2x/ZZR5rZsM4AynIPWSurHCTcWYCdaMS8txI7R27k4LZvWNnWzWhuhco76lwfcIiiL1POnRmcnd72pnHOjbLPOZrt6yNTDnIXVRCnhfV054LC5E9Mnt4bk87K7knl4zkNjwzkIPcK+ZDZu8O8sse2ck4M4EmvnYa+x49CeQ2PjNQyX3Z6BEh273j5OG2Fe6xZiYot1SRfKzLQiX33dAjMobkScEqVcwPZ7lhdqkie2llrzR3NzLr0E60bf6SOSdqydx8MFe3pE8eZ67kcUtGM3DwyD29t2iWPTKTe+aSuewENfGSgN07do7XPFb/fWK+h/eL5i6pAT4NPB0Rb5R0PXAGuBJ4DHhLRGzObCTIm6Bxyx6ZF1lmMobcOnSfyHgR94mVkBOTsTtRPgMOz/2dwBPApdOf3wf8UkSckfSrwO3AB2Y3EWkJObXsAblvvMzecZ+kiv1AxmmdO2/f9s3DOiRdA/xT4L3Av5Uk4IeBH59+5D7gPexK7uS9gMnLvqwaXnZPO7N3nFyWsc6FO/fhToCadW0rn+wjzf0/Az8LHJv+fCXwfEScn62zwNXb/aKkU8ApgO+99nvyVmlkLoVahLeY1ZAtolwuu3fsbKtHUoX3PkkcVeyCucld0huB5yLiMUmvu9jfj4jTwGmAm268IXoT0mbWUs2L1r6ZJHMkkL2qwl0KmZWMwX/tnIS8Tzz31wA/IukW4BCd5n43cLmkwdR7vwZ4eteWnAnV9Ppij7zjzGQMVaqYE1pEJOBE5uqb/UDuEXEncCfA1HP/mYj4F5J+A3gTXcXMbcBDF9Cad0LcWmpfyNg91sxkDN6FljiXshAyzipVQu48lHtNzMAi6tzfBZyR9AvAHwL37PobEX5CdsHsQaWWKrJHPT0Kt+33SeIdqvZ5zXyf7LNSSCLiE8Anpt9/GXjVxTVAXkLum3fcFzJehG7sJL30W+gTt5f4Punn2TJJNffU514spC49MUFVqWLOtnpExmCWZZJHKTOQg9zDp7nbN5MkJqj0JW6ZpYrk5XzpyThrQrWNvH2Dfa+5Xzwi0ObsEwouCu4St8xShXmsvakRXgQZp5bbEhuLzIbRbsh6J8tkrpbJvWi9uywXQMZZvahFEEriqCc9GaeVtJJHAjOQg9ydCdVF6MbmyU29nTnrxp79QCh9kRcykzHA2EygxmsX7nmdgSTkHj6SqrrxHtozE1Rqw1PJeE/tOdEnMo5eyjImeaGN3FKFfWNP4gRtZsOzCDJOfe3yyjJhfwiLmYyz5gN2QQ5yj0CbI09b2XXj7GScdayLaM8dCThRvdn5kT1fsSQkIXd8ExKtv861N557YmkBFiDL5F20YTdkeY1F6gTo+TYztrULkpB7wMjkuYOf8BJr+FYPL7O0AOaxJpcWspNxZsIzRz3Wue2d5u5MqELuxJs73HYffpV60frGWqWFPbaV+D6xk3HmSGAG8pC7i5CzJ96y68ZmWca60PqUKLNr7t55SO3NZr3nANoFRHk7IAm5A5vGCpfUskxizx3zjeeWFqo3Oxeijd4RqAv2CK+XmruT3Ks3Ox8W4c1mHau5b/k1d+e18zUF5mu3kISqr6llee2QidytskxiMu6TN5tYWrB7s3ZZJrEOnVyDDvO1s493Sfyeg9zBRwSL8IydJJC5Wga8BOrum5uMqze7hzZ9TeXexORrCvaJ5y7pWuB+4DjdJTgdEXdLugL4EHAd8FXg1oj45szG2iAyyzJO2DX3PpXzecm4N97sIpJ4fSFQ9zlf+4HcgTHw7yLiM5KOAY9J+hjwVuDjEXGXpDuAO+gevbczImDkTKjmrYKwe7OVQHO0l32s1u0LeaOArj2nfGdrqsPyDoXc0wOyzwHnpt//paQngKuBk8Drph+7j+7xe7uQO7BprGF2Eqi9ftlNxr6mslcGpNZSe+Z9ZiY9f9+W5207YdHcJV0H/ADwKHB8SvwAz9DJNtv9zingFMD3vuwSHyG7Nx20kVtf7JOx6BmBurAIIs5MoEvcBHrx2A+e+3lIugT4LeCnI+IvJH37vYgISdte6og4DZwGuOnaq4KRUyf3NZXam90HUkAl0DlhT9AaG3NHZG4yTh0FmNubgT2Ru6QhHbE/EBEfnr78rKQTEXFO0gngud3aiQhfyJ29CsJeQWJsahFaak8INLMnC2YCzWx4IHX/lhlV7KVaRsA9wBMR8f4tbz0M3AbcNf360K6NBbBprProC4GayRPcHp6xLar3OS/6RJ6wiLnQ7p+5QNjnYgb24rm/BngL8DlJj09f+zk6Un9Q0u3A14Bbd20pIEaeUYdZIwdSe59hLDICcmufmUklc9/ITXiwXNK7GPjnwXvdZmEv1TK/D+zU05svsjHC6bmbF21vPMbkBJXZm+0beXqliuUR3sUi/X0yAzl2qIbPA41FSBV9IdDMfcM9D/0hT/ATaFZPG/aDoV2OMUtB7hHQjnImQTN7n5A82ZOYQPtGnrnLA3OTZ+prNwMpyN3puS+iBrd6jHtoz0h61VucH8vyFueB+9r1aayzkIbcW9dT9lqlJrzsHp4TfSO8rB7eIsgu61gBWvsay2ssZiEFuUdAu+m5gNnJMzPhZSe7zIvM/yyMxGPtmbHInPCdhRTkTsBkbLyAyT08F7KTZyW8PbZZCW8uZF2vsNx7OAW5ByLGxddeYtLLvGD7FM7a75HEZAe558J+32WfiyVxQApyt3vuRmQnvMzGwi+R5bxHIHdUAbkJL/M9nH1eZyEFuXdP2fN47tk9skpQ88M+F5VU5kZuY5G3b7C8E4RTkDshJkZZpk9hXiWo+ZB5TiF3/7Ifb5772vVOc4exyXN3IzNBQe4b2d23Sio5UNfE/OgfuYeYtDnJPfeNsuoezEbua5e3b1Cv3V6QOZpdJlKQO8DEWpGS9+bLvzDy9i/7tXMiM0G1O54XmAOZ7+FlIgW5R8B40qy6GzsiM6lkJgHITQR9IoF6D+dA/2QZxCipLONGZkLJTACQmwTSX7vERtaN7HLlsrAwcpf0euBuoAF+LSLu2umzESTW3Ffdg52xCELJTAJ9WrTZjYUTme+5/YyFkLukBvgV4B8BZ4FPSXo4Ir640+9YNffEN4v9MaWJSSDzPLjRJ8PjRuZodj9jUZ77q4CnIuLLAJLOACeBbck9EBPjBDsJz01QbhLo08JIfABmemR2AioWg0WR+9XA17f8fBb4wa0fkHQKOAVwfP0Yk/DIMm1g1+/75IE6Ub3ZioOA/WoYV5ZQjYjTwGkASd94ze//4v8D/mxV/VkRXk7/xgz9HHcfxwx13IvG39jpjUWR+9PAtVt+vmb62raIiKskfToiblpQf1Kij2OGfo67j2OGOu5V9mFRJSqfAm6QdL2kNeDNwMML+lsVFRUVFS/BQjz3iBhLegfwO3SlkPdGxBcW8bcqKioqKr4bC9PcI+IjwEcu4ldOL6ovidHHMUM/x93HMUMd98qgyLxLp6KioqJiLuTcFlpRUVFRsSdUcq+oqKg4gFg5uUt6vaQnJT0l6Y5V92eRkPRVSZ+T9LikT09fu0LSxyT9yfTry1bdz71C0r2SnpP0+S2vbTtOdfgv0/n/rKQbV9fz+bHDmN8j6enpfD8u6ZYt7905HfOTkv7Janq9N0i6VtLvSfqipC9Ieuf09YM+1zuNO9d8R8TK/tNV0nwJ+D5gDfgj4BWr7NOCx/tV4OUvee0/AHdMv78DeN+q+2kY52uBG4HP7zZO4BbgfwMCXg08uur+G8f8HuBntvnsK6b3+jpw/XQNNKsewxxjPgHcOP3+GPDH07Ed9Lneadyp5nvVnvu3z6CJiE3g/Bk0fcJJ4L7p9/cBP7q6rngQEZ8E/u9LXt5pnCeB+6PDI8Dlkk4spaNG7DDmnXASOBMRGxHxFeApurWwrxAR5yLiM9Pv/xJ4gu7okYM+1zuNeyesZL5XTe7bnUEz6yLtdwTwUUmPTc/WATgeEeem3z8DHF9N1xaOncZ50O+Bd0wliHu3SG4HbsySrgN+AHiUHs31S8YNieZ71eTeN/xQRNwIvAF4u6TXbn0zuhjuwNem9mWcwAeAvwn8PeAc8J9W2psFQdIlwG8BPx0Rf7H1vYM819uMO9V8r5rcL+oMmv2OiHh6+vU54H/ShWbPng9Np1+fW10PF4qdxnlg74GIeDYiJhHRAv+V74TiB2bMkoZ0BPdARHx4+vKBn+vtxp1tvldN7r05g0bSUUnHzn8P/GPg83TjvW36sduAh1bTw4Vjp3E+DPzLaSXFq4E/3xLS72u8RE/+53TzDd2Y3yxpXdL1wA3AHyy7f3uFJAH3AE9ExPu3vHWg53qncaeb7wSZ51voss1fAt696v4scJzfR5cx/yPgC+fHClwJfBz4E+B3gStW3VfDWD9IF5aO6PTF23caJ13lxK9M5/9zwE2r7r9xzP99OqbP0i3wE1s+/+7pmJ8E3rDq/s855h+ik1w+Czw+/X9LD+Z6p3Gnmu96/EBFRUXFAcSqZZmKioqKigWgkntFRUXFAUQl94qKiooDiEruFRUVFQcQldwrKioqDiAquVdUVFQcQFRyr6ioqDiA+P8ndKOniLodNwAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] @@ -832,6 +676,72 @@ "\n", "show_state(sn, run_session=False)" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "More important, though, the mean absolute error (MAE) for the whole solution, i.e., from start to end:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "error_full = np.sum( np.abs( np.asarray(vels[0:16]).flatten() - np.asarray(velP[bc_tx:bc_tx+steps]).flatten() )) / (steps*n)\n", + "print(\"Overall MAE: {:7.5f}\".format(error_full))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "... store solution , just for comparison ..." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Vels array shape: (128, 33)\n" + ] + } + ], + "source": [ + "vels = session.run(grid_u) # special for showing NN results, run through TF \n", + "vels = np.reshape( vels, [vels.shape[1],vels.shape[2]] )\n", + "\n", + "# save for comparison with other methods\n", + "np.savez_compressed(\"./temp/burgers-pinn-solution.npz\",vels) ; print(\"Vels array shape: \"+format(vels.shape))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercises\n", + "\n", + "This is just a starting point, the parameters were chosen to compare to run relatively quickly by default. The solution can be improved however. E.g., try to:\n", + "\n", + "* Adjust parameters of the training to further decrease the error without making the solution diverge\n", + "* Adapt the NN architecture for further improvements (keep track of the weight count, though!)\n", + "* Activate a different optimizer, and observe the changing behavior (this typically requires adjusting the learning rate). Note that the more complex optimizers don't necessarily do better in this relatively simple example.\n", + "* Or modify the setup to make the test case more interesting: e.g., move the boundary conditions further back in time, to let the reconstruction go \"further backward\" in time." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -850,7 +760,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.8.5" } }, "nbformat": 4,