{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Simulation Archive\n", "A Simulation Archive (Rein & Tamayo 2017) is useful when one runs long simulations. With the Simulation Archive, one can easily take snapshots of the simulation, and then later restart and analyze it. Since Spring 2018, the default Simulation Archive version is 2. Version 2 works with all integrators and very few restrictions that apply (you need to be careful when using function pointers)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To illustrate the Simulation Archive, let us setup a simulation of a two planet system and turn on the Simulation Archive. This is done with the following code:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2023-09-24T21:28:43.938569Z", "start_time": "2023-09-24T21:28:43.859966Z" } }, "outputs": [], "source": [ "import rebound\n", "import numpy as np\n", "sim = rebound.Simulation()\n", "sim.add(m=1.)\n", "sim.add(m=1e-3, a=1.)\n", "sim.add(m=1e-3, a=1.9)\n", "sim.move_to_com()\n", "sim.dt = sim.particles[1].P*0.05 # timestep is 5% of orbital period\n", "sim.integrator = \"whfast\"\n", "sim.automateSimulationArchive(\"archive.bin\",interval=1e3,deletefile=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first argument of `automateSimulationArchive` is the path and name of the binary file to write to, the `interval` argument specifies the interval at which snapshots of the simulation are saved (in whichever code units you work). The smaller the interval, the larger the file size, but the faster the access. The `deletefile=True` flag makes REBOUND delete the file if it already exists." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now integrate the simulation forward in time. This should take a few seconds." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2023-09-24T21:28:45.235981Z", "start_time": "2023-09-24T21:28:43.946068Z" } }, "outputs": [], "source": [ "sim.integrate(1e6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now delete the simulation. Note that we could also have run the simulation using the C version of REBOUND. This might be useful if one wants to run a long simulation on a cluster and doesn't want to bother with installing python. In C, one can initialize the Simulation Archive with (you need to delete the file manually if it already exists):\n", "```c\n", "struct reb_simulation* sim = reb_create_simulation();\n", "...\n", "reb_simulationarchive_automate_interval(\"archive.bin\",1e3);\n", "```" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2023-09-24T21:28:45.238423Z", "start_time": "2023-09-24T21:28:45.236970Z" } }, "outputs": [], "source": [ "del sim" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now look at the Simulation Archive. You could do this at a later time, on a different computer, with a different version of REBOUND and it will still work. " ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2023-09-24T21:28:45.241941Z", "start_time": "2023-09-24T21:28:45.239853Z" } }, "outputs": [], "source": [ "sa = rebound.SimulationArchive(\"archive.bin\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's first print the number of snapshots and the time of the first and last snapshot in the archive:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2023-09-24T21:28:45.244521Z", "start_time": "2023-09-24T21:28:45.242817Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of snapshots: 1001\n", "Time of first and last snapshot: 0.0, 1000000.0\n" ] } ], "source": [ "print(\"Number of snapshots: %d\" % len(sa))\n", "print(\"Time of first and last snapshot: %.1f, %.1f\" % (sa.tmin, sa.tmax))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can access each snapshot by indexing the Simulation Archive. This returns a REBOUND simulation object that corresponds to that time. Everything is accurate down to the last bit. That means one could use this simulation object and restart the simulation, the final coordinates of the planets will be exactly the same as in the original simulation." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2023-09-24T21:28:45.247607Z", "start_time": "2023-09-24T21:28:45.245577Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "500000.311856871 \n" ] } ], "source": [ "sim = sa[500]\n", "print(sim.t, sim.particles[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One can also step through every simulation in the archive using the generator functionality, for example to store the eccentricity of the inner planet as a function of time:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2023-09-24T21:28:45.279895Z", "start_time": "2023-09-24T21:28:45.249146Z" } }, "outputs": [], "source": [ "eccentricities = np.zeros(len(sa))\n", "for i, sim in enumerate(sa):\n", " eccentricities[i] = sim.particles[1].e" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we want to access a simulation at a specific time, such as in-between snapshots, one can use the `getSimulation()` function:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2023-09-24T21:28:45.283178Z", "start_time": "2023-09-24T21:28:45.280710Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "12000.226030496653\n" ] } ], "source": [ "sim = sa.getSimulation(12345.6)\n", "print(sim.t)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By default, the function returns a simulation that corresponds to the snapshot that is nearby. To get closer to the requested time, one can use the `mode` attribute:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2023-09-24T21:28:45.287145Z", "start_time": "2023-09-24T21:28:45.284245Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "12345.628564279925\n" ] } ], "source": [ "sim = sa.getSimulation(12345.6, mode=\"close\")\n", "print(sim.t)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the above code, REBOUND looks up a nearby snapshot and then integrates the simulation forward in time to get close to the request time. As one can see, with `mode=\"close\"`, one gets a simulation very close to the request time, but it is still slightly off. This is because `WHFast` uses a fixed timestep. If we want to reach the requested time exactly, we have to change the timestep. Changing a timestep in a symplectic integrator can cause problems, but if one really wants to get a simulation object at the exact time (for example to match observations), then the `mode=\"exact\"` flag does that." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2023-09-24T21:28:45.291778Z", "start_time": "2023-09-24T21:28:45.289450Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "12345.6\n" ] } ], "source": [ "sim = sa.getSimulation(12345.6, mode=\"exact\")\n", "print(sim.t)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Requesting a simulation at any time between `tmin` and `tmax` only takes a few seconds at most (keep in mind, REBOUND integrates the simulation from the nearest snapshot to the requested time). To analyze a large simulation, you might want to do this in parallel. We will use the multiprocess module. If the following code throws you an ImportError, install the module with `pip install multiprocess`. In the following example, we calculate the distance between the two planets at 432 times in the interval $[t_{min},t_{max}]$." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2023-09-24T21:28:45.375397Z", "start_time": "2023-09-24T21:28:45.292750Z" } }, "outputs": [], "source": [ "from multiprocess import Pool\n", "import rebound\n", "def thread_init(*rest):\n", " global sat\n", " sat = rebound.SimulationArchive(\"archive.bin\")\n", "def analyze(t):\n", " sim = sat.getSimulation(t,mode=\"close\")\n", " d12 = sim.particles[1] - sim.particles[2]\n", " return np.sqrt(d12.x*d12.x+d12.y*d12.y+d12.z*d12.z)\n", "with Pool(initializer=thread_init) as pool:\n", " times = np.linspace(sa.tmin, sa.tmax, 432)\n", " distances = pool.map(analyze,times)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that in the above example, we use an initializer function so that each thread has its own Simulation Archive." ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "# Note\n", "\n", "Since Spring 2018, the `SimulationArchive` object always returns a new `Simulation` object when you request a simulation from the archive. In earlier versions, it kept a reference to one `Simulation` object internally, updated it when a new time was requested, and then returned a reference." ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "# Manual Snapshots\n", "\n", "With the new version of the simulation archive you can also add snapshots manually, giving you further control beyond the automated options used above. This can be useful to save snapshots when particular conditions like collisions or ejections occur. Here we give an example that saves logarithmically spaced snapshots" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2023-09-24T21:28:45.379855Z", "start_time": "2023-09-24T21:28:45.376748Z" } }, "outputs": [], "source": [ "sim = rebound.Simulation()\n", "sim.add(m=1.)\n", "sim.add(m=1e-3, a=1.)\n", "sim.add(m=1e-3, a=1.9)\n", "sim.move_to_com()\n", "sim.dt = sim.particles[1].P*0.05 # timestep is 5% of orbital period\n", "sim.integrator = \"whfast\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now iterate over an array of logarithmically spaced times, and save a snapshot after each using the manual `simulationarchive_snapshot` function. If no file with that filename exists, it will create a new one first. Note that if it doesn't already exist, it will always *append* a snapshot to the file, so you need to delete any existing file when starting a new simulation." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2023-09-24T21:28:45.646365Z", "start_time": "2023-09-24T21:28:45.380871Z" } }, "outputs": [], "source": [ "filename = 'testsa.bin'\n", "\n", "# remove files if it exists\n", "try:\n", " import os\n", " os.remove(filename) \n", "except:\n", " pass\n", "\n", "Nout = 1000\n", "times = np.logspace(0, 4, Nout)*sim.particles[1].P\n", "for i, time in enumerate(times):\n", " sim.integrate(time, exact_finish_time=0) # need outputs on the nearest WHFast timesteps to the times we pass to get symplectic behavior\n", " sim.simulationarchive_snapshot(filename)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now plot the energy error at each of the snapshots" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "ExecuteTime": { "end_time": "2023-09-24T21:28:46.199232Z", "start_time": "2023-09-24T21:28:45.647329Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAG1CAYAAAAV2Js8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAA9hAAAPYQGoP6dpAACSnElEQVR4nO2de3gV1bn/v5NAIAkQwj2BhCAKGIEQISCCaIQeiSgitKViq6BSW6O2hyIGrVpbFaTqwUusChUv/YkcC2i9wLHiBUJUInKJykUwMTSGSyQECZFAsn9/hNnMnr3WzJr77L3fz/PwaGbvPbNmzZq13vVepUAgEABBEARBEEQMEud1AwiCIAiCILyCBCGCIAiCIGIWEoQIgiAIgohZSBAiCIIgCCJmIUGIIAiCIIiYhQQhgiAIgiBiFhKECIIgCIKIWUgQIgiCIAgiZmnjdQP8TktLC7777jt07NgRkiR53RyCIAiCIAQIBAL44YcfkJ6ejrg4vt6HBCEOxcXFKC4uRlNTE/bu3et1cwiCIAiCMMG+ffvQp08f7ucSldjQpr6+Hp07d8a+ffvQqVMnr5tDEARBEIQAR48eRUZGBo4cOYKUlBTu90gjpINsDuvUqRMJQgRBEAQRYei5tZCzNEEQBEEQMQsJQgRBEARBxCwkCBEEQRAEEbOQIEQQBEEQRMxCghCH4uJiZGdnIy8vz+umEARBEAThEBQ+r8PRo0eRkpKC+vp6ihojCIIgiAhBdP0mjRBBEARBEDELCUIEQRAEQcQsJAgRBEEQBBGzkCBEEARBEETMQoIQQRDEaWrqG1G6txY19Y1eN8UxYuEe3cLLvqTnaB9Ua4yDXH2+ubnZ66YQp6mpb0RFbQP6dUtGWkqi478zi9vX413X6XZ4dZ9OsaKsCvNXlaMlAMRJwIKpQzA9L9PrZgEI7WsApvvd7Xu0a4y4PbZF8HK8qK9958RBGNInJWreRbeh8HkdIi18vqa+EZ9VHsaRxpMAgNSkBAzvmxrxL4fZSceJyUprEvZqclRf9+rc3li9pdqxdvhZaDBDTX0jxix8Hy2K2TBeklBSlO/5u6Psa7l0ZADG+92uexQVQuwaI26PbRG8HC+sa8s43R9+EECNILp+k0YoilhRVoWileVQvx8SgIXTvFmotu2rw6bKwxiZ1QU5GammzlFT3xicCAGgJQDcteoLjBvQXfNlNPs7LbQmd73rOTWJsK678vPq4Od23Lfe9ew8vxdU1DaELSzNgQAqa497ek/qvlY20Wi/LyupsHyPosKNXWPE7bEtipfjhXVtGSf7I9o2P0rIRyhKqKlvZApBQOvkOX9Vueu25D/871ZcVVyKB9/eiauKS/GH/91q6jxak44Tv+PBm9zlftW63oqyKoxZ+D5mLPkUYxa+jxVlVabawEJrYlS3w6nr2Xl+L+jXLRlxUuixeElCVrckbxp0Gr1nK9rvNfWNWLKhIuy4BAjfo97412t3cyCAzZV1hvxa3B7bong5XljXVuJEf4g8+0j2WSJBKEqoqG1gCkEyLQG4Olls21cXsnMDWndy2/bVGT6X2UnH7slKTwDgXS8pIU54ATGD3sQot8OuSVrrPiN1IkxLScSCqUMQL7XeWLwk4aGpgz3XcOk9W9HnypsftOYM9cJmRABmtVsCcPurWwxtBtwY22YWcLfGC6tt6murcUIg03v2Tm703IAEoSihX7dkaM0XcZL4zs8ONlUeZh7/rNK4IGR20jHzO61JUU+w4l2voanZUQ0K67rTzu/t2CTNut6U3HRc/XRpxE6EADA9LxMlRflYPvsClBTl+0Ltr+5rCYC8/hl5rlrzw7KSyrBjrIXNyMZC3W55oTG6GXB6bFtZwJ0eL1ptU157/uWDQvpj3sSBqKhtsHVDovXsjWgK/Qo5S+sQSc7SXB8hCVjosj132746XFVcGnb8jcILLfkKVdYeR1a3JMN+BiK/E7GBryirwl2rvkBzIBCchNXfUV/PLcdK1nXN9JfR6yUlxOHqp0t96WgcLSifJQBTz/XZj/ZiwZqdYcfjJGBj0aXBc2mN1/W7D+mOf1a7v284gVtf2RL2+fLZF2B0/666bXdibPvZQd5o2+T+2F59BA+v2emIHw9v7ivdW4sZSz4N+77os3UScpaOQabnZWLcgO7YXFmHI41NAFqjxs73IGosJyMVlw/phXfK9wePTTu/t2khCGjdHZq5D5HfiTp3yn2sNQmrryfvatWTiN3PhHVdJ5+7fP7SvbW+dDSOJljP1ig3X9wf3x5uwCuf7gs5LpvN5XNqmUFExj+r3TX1jYiTELawi2qpnRjbfnWQB4y3TT527dJPHAti4D17WVtk9tn6ARKEooy0lERckeP94rOirAprvzgjBBVe0h93TBzkYYu0MTLxmJmEjS4gkUQ0TISxwm2XnoNXN+3TfFZ6z9PM+HdjM8CKytSK1PTzuDXTNjcEO9azN/ps/RiCT4IQB0qoaB61dgUAnvnoG/xydF/fDHw1bkyKvAXEjxODEdzSeBHWEXlWTj1PJzcDLLM2AE1Tt3yf81eWowWtfkx+GbdmnoEbcxhvrhJ9tn4NwScfIR0iyUdIRk6qKEkSMlIT0dDU7Ooi62ebsRYi/j9OXNOPE4MZnPZJIozDW7hEnpWfnqfWZoHlTxMHAAyhQO1j49T7Z2dGbSPPwMk5zGpfeeGTRT5CMQrPYdrNRdbPKmct3DZfGU0653fNkdM+SYQxtBYukWfll+eptwCzTEItQFhuALWZyKnEoHYKV0afgVNzmB195WefLAqfjyK0kiq6GdLo15wsIqSlJGJ0/66utNVIXpZIz9NBuIvRkGa/JsMTuQ9WaHccoBvq70RiUD+Ekjsxh9nRV35NWgqQIBRV6CVVdDMDq99ysvhxohedGPwwuRKRRbQI2SL3kZaSiKtze4d85+rze+tuxpxYmKMx6zpgT1/5eYNMprEoQk6axhOG3Ja+I0W17hWiDpF+VikTrfjNbClqnvZ73TiR+6ipb8TqLaFZ7F/f8h3mXjYQJUX5YfmHlM/JbqfwSHUL0MOuvvJr9CwJQlFEWkoiFk4bwjSP+Un6dhO/T/QiE0O0Tq7Rgh8F7WgRskXuQ+selCYi3nOyc2GO5ghKu/rKLxtkJSQIRRnKpIqSBPRJTcTxphZfSd9mMbPr9vtED+hPDNE8uXqFnVE9TgvaZtsaLUK23n2Iao20npOd75KXWg+nNZN+FGLsgAShKMQvSRXtxOyuOxImehH8qlJ2CzsneDs1OE4L2lbbGi1CttZ9WNUaRYvA4EfNZKRAghDhe6zsuiNlohchWndjetg5wdutwXFS0HbLrBsNQrYdWqNIxu8uAH6HBCHC91jdzUXDRB+r2D3B260ZcFLQdlOLEQ1Ctlmtkd8c3c0QCS4AfoYEIcL32LGbi4aJPhaxe4J3QjPglKAd7VoMt2E9J7u1jV4JVDRWrEF5hDgUFxcjOzsbeXl5Xjcl5vFz/gkn8WPuI7exO9eLU2PJiSR2Xo37aB53yudkZ34ur3MxxeocaRdUa0yHSKw1Fq34qfaR0/jF8dEPZgMn6idF0lgSbasdz8ov484oZu7drpqIdtXQMvv8lL8DEDHj2g2o1hgRdcSKecsvjo9+WRSdMD1F0lgSaasdz4o17uavLEdyuzYY3jfVt/3ldUSpHeZbs/fgl3c00iHTGEH4DD+k6XeqrIdZs4sTpqdowa5nxSteeusrW3xXekPGyr3bZU6yar41ew9Uesc+SCNEED7DTcdHnjreiSgUv+5e/WD+s4Jdz4o17mSc1kqafQZ+iCi1Gjlo9h4oUsw+SBAiCJ/hVu4jLcHEbmHML+Y+NX4Vzoxg17NSjzs1Ti2yZp9BTX0jvj92whcRpVYEKrPPjyLF7INMY0REEc0RLUqm52WipCgfy2dfgJKifNsXZz21ut1RKH4w96mJFtOCnc9KHndPXZNre2V2FmafgRylddvyrQgEgNO37mm0lFnzrdnn56dIsUifl0kjREQM0bB7N4KTDr0ianU7nZT9uHuNJtOCXc9KNlENz0p1RStp5hmohacAgLgA8NSMXJxvwanbSxOp2efnh2Sx0TAvkyBERAR+Na1EKqKCiV3CmB9LnfhROLOC1WfFWtBKivIdXWTNPAOeU3eX5Hae+K/ZJUCZfX5eRkBGy7xMpjEiIvCjaSWS8UKt7rS5zyh+Mi14DW9BA+BotJ6ZZ2B3kk0rJlKvEyl6TbTMy6QRIiKCaNu9+wEv1Op+y9/jB9OCH/DSTGj0GditXTR779GiDbFCtMzLJAgREYGVyS/Sw6OdxG+CiSh2PtNI7QM78XpBM/oM/OC/Fk0+Zmbxo8nbDCQIERGDmckvGhz5iFDomdpPJC5oXvuveS08+oVo0KpSrTEdqNZY5GJXDSDeuUnL5D5OPlMismqw2Y2Ze3eiDh5hH1RrjIh5nFJdx6pGwg/CX6yYI7zq61g2E5q592jQhhAkCBFRjBOq61h1kPSL8BcL5ghlX0sAZl/UD7PG9ovq8RXJxLLwGC1Q+DyH4uJiZGdnIy8vz+umECZxIjw6WsJFjeCnDMzRHvLOShb43IaKmAzNJgi3II0Qh8LCQhQWFgZtjH6npr4Rn1UexpHGk0hNSsBwCxlWowm7VdexoJFQ4zdzVDSbI1h9DcSO5pEgvIAEoShgRVkVilaWQzl/SgAWTosN3xU97FRdR2J0jVX8KPxFqzlCqwJ8NPpCEYQfINNYhFNT3xgmBAGtKvX5q8ojtgieErsK+tlxnpr6RmR0ScKqW0b7JkOyjFOFDyPNHOVWAUgnriP3NWti9lr41CLSi256gbLPqP+8hTRCEU5FbUOYECTTEkBwB+mW6Uy+jiRJtlyD5aQ7bkB34YgaOfqmvLoeD6/Zqensqxepw2rL6P5dDZ3DSDQQ67u836sdbG+5pD8GpXUUeg7yOZMT4tHQ1Mxsm5Y5yo4IJ+U5AIS0R6tdakScukXbq9UvTjmPy4L26sIL8fb2/Vha8g1aAuHCp/oejN6Tme/xjj1fUoG/l1RY7guRcSh6DpF3Ru8zO1FfR/2+AqeLx7ociOCHSFA/QHmEdPBjHiFZ2Pj28HHsrDmKt7bvZ34vTgI2Fl2K9bsPuWI6U5volNfYtq8O7+04gB4d22NCdk/hjNDqnDESAOm06UBv0lBONmrUuWfUC9udEwdhSJ+UkIVGL3+N3uL47Pq9WLhmJwIG2y5/FwDz/Ky2KdF61qw+Yt0/DzsED96ioEZPELbjGen1i3x9J3IZ8YR+tfCp/t7Vub2xeku1oXsy+j0gfOwBYGqjeX2hNQ60+ltuo9FxNPuifujasR13A2Sn0Kz1fdbc8vDandz3NQ7AEzNykZGaaFog5LUJOLPJeGt7DZaWVCDgUHSiH4Qs0fWbBCEd/CYIsfyBWEgSsPD0RHrhgve5C8vGokttGaQ19Y3M68RJwMTBvfBOeaiw9rCAEFa6txYzlnyq+R2tSVdLOACA5bMvwOj+XTW/K0+QGV2SmG156ppcXJGTrrsIP/vRXixYs9N02+MABCQgoDr2xIxcAMCtr2zh3yjYz1qkj7QWTCuCh3L3f/XTpZptUKIlCPPGi9ZzZj2DbfvqMOXpUrBmxnhJwuPXDGP29x8nnYtJQ9NMvU+ibRN5ZqK/Yy24AJjfg8pviXVMidznMlpCh9Y9xUsSVt0yGm9tr2FqnYyOI7lvWPcpX0vui/W7D2m2Wa1hZ31/UK+OYWMpDkCLdjNDMKMlYmnCtTYZVq7FQk/IdEtIooSKUQjPH0jNA1POw/hzW7UupXtrhUxnVuGZ6FoCCBOCgNbdpV4EjJbjqAzPgZQXfSOj9LfQ+q4crbPqltHMttz+6hY0NJ1CRpckzbD6hSohyGjbW4CwGawFrQKQqhA39z7U19LrI/l3vGglvWgyXtj9kcaTIZOzkZ1YAGeEQXXb9Jy6RaLf9DYazYEAcHpyV5/rgbd34KF3dphatN7a/p1QZN7mb+t0nxnrd7wxpRTo4iTgprH9hMcer5OUfS4LDFq5t7TGYXMggKuKS0OvzRhHosh9E0CA2d9KoUU5NlsCwPyVrXMWS8PO+n7RynIA4d3UglZhXlQFofUO6mmglIhczo7oRL1ca2rNXVHBINx8cX9T17ILcpaOILT8gZT0794xOIj7dUvWXCi3Vx+xo2lITog39H15YdYi6Dh6+gZY9yFJYDqQarUnDgjxt9Bre3MggONNLUwnVvklT06ID7ZTeZ2khDjuc4vjtF1e0EURGROsa4leh5cnifV75SLIWrSbAwEsVCxeVtXRyrbpOXXrtVeewLXaFC9JGJ6VGnIdJfJ42LavTsj5dUVZFcYsfB8Pvh0uKKudo1eUVeE2Hc0f655K99Yyxyer7Us3VDDHscgxnD4m97l8b7ct36q5STA63uXfLzQoBAFn+oZ3TaVwwhJgnly3hysoq48FGMfkNhQVDGKOHx6sd1Du3xlLPg3mmVILIWawmhdNa8OxbV8dilR5shas2Yln1+8132AbIEEogtATaoDwBS8tJRFFBYO43394zU5bIhUampqZxy/L7sk8zhMCWAS0Fk3OC89rD4AwiUrzuzgzeU7PywyaopQoBSXl5NYC4OqnS1H+n3rmpHtnwSDmristJRF3FgwK/kb0JZ0xMpN5Hem0alp9LbXgwEMW6Fjt5AkeK8qqmOajOLB3wiJLQhzje2phYXpeJkqK8pkRfXqCkogWUf6+fJ0/Tjo37HuyZkG5QLHQWrRYztF6QhpwRhABgAff/iq4UF79dCkmntdLXxgCcNPYs0L6aMG0IWH9pj4WB+DX4/ph9S0XIqNLErbtq9NckJXPjTcOtca9BHGNivKacp+qryn6ji3fVGVJeJefz83j+mPVLaMhKgupxzlP6yKiMTRyLTPRbLwNx/bqI5hSzDY527UOmYVMYxFEWkoiFk4bwt2RSGAveEP6pHDPaZd5jGWWkAC8+9UB4XaqEZn8A2C3X8usJmJSkVEvSMP7pnLNL6P7dw3zCWgJAIvW7sKdBYOwaM0uNAcCiEOrEHTzOLY6eEVZVYjp6LeX9MffPtqru0jfNv5s3Db+bFTWHkdSQhz2HW6EJAHna0SNKaPBkhLicLypBdurjwTbCpwR6FgmH1Y0mWzCVcNzFI2XJDx33fm46aXNIZOkBOCpGbnok5qI400tyOqWhPW7DwVzOMUBuHFsVth1tHIMaUW/8cbw0uuHo7GpBZBan7/yOpOGpuGhd3aEmyE4ZgEly077vKi5Z9K5uFzlayRixgSAJ36Ri4amU2H+ei0B4J0vzpioeSbJeEnCrLFZmDU2K6yPWP2mPLZ+96Ggn46WyZOVfoE1DpMS4rh+PyICYUug9VrzJg7E0D6dw563+ppTikt1z6v1udJ/jeWPEwdg9S0XIiejdQw1NDULCXMsoZhnSuWZbeX2Qcckp97MmHEmZ+Va+83FZ7UGinCua6ebhhlIEIogauobkZQQjz9POQ9HG09iR81R1B47ge4d22FUv65BvyA1sibJiHnGKOrBr+UQ+HrhmclAC9HJf3v1kbAwdnV71Cj9KFgvLm/yZN3nvIkDg99hTW7NgQCG9u6MkqJ83WzIrBILz3z0TYggFS9JmJKbjte3fMdM6ij/V6SP5e8r2zO6f1dc0K9LmEDHW9DVv/+s8jBzrN0/+Tz8anQWOie1DUtIOf7cXljISFQ5aWh6yDnkxWtZSSWWlnyD5zZUYGlJhSG/HJ6gJD9b9UbjnfL93KgskXHP8tmpqW/Ekg0VYW2IkxAmBAFi/nLxkoSMLom4+mn9BV2+llogZY0jGVa/ycdY4zbsegCenJHLFcxZ51f2rYizr3wfq24ZHRSetRZXZft/MTIDyzft0z33vIKBWPhO6KIuScDU3N5Y9Xl18NjU83uHvaM5GakhDt6sZyoBmD2uHyYNSQu7B71IWNlsq+yzabm9MSi9E/KyUtGjU/swYVP5X+VmhqVxGtSro5AzuVLI3F59JKy/WG33MkcWCUIRgpYTpwRg7Nl85zaeJolnMjGLcvB/33CCG8m0bsdB9OjUXve6IpM/ACxaswuTc9LDzie3Z3NlHW5/dQvXiVbddr3Jc3peJo40ngz6KDy8dic6J7XF9LxMlP+nPuz78ZIU9BXSyy90uKGJudNjCVJzLxvoWJkJnkDH2rWpd4Uf7/2eec4uyQkA+H3N0y6x+k3OrwOYd/BknXvcgO4hjqwBACsVixvrWmrNglqLwZrkeX5jN409S1NIUwqKLGG4oalZaPMQAPDkL3LRtUO7sEXQDLxNi1IzwxJs9RCZU64YkoZ3vqgJuY7IJoAVWaXHvIKBQU2uvLhLAG65uFVrK58iAOD1Ld+FCWSs1AfyM4wDcNO4fpg1hh3CLmpKnZ6XiY92H8I75fsRAPDPLdXAlmpDWh2en4+sNVMLpbIz+aBeHYN9L5/r2qWf6ApBXidoJUEoAtCLFgtAPwpLKRQcaWxCalKCpsnELModFk8L9cT7e/Dk+3t08xilpSTizomDwsLO1WiVHkhLScQVOYmorm8MTna8F0+5I9VLwvbw6XxAQOhu6eG14W29bHDP4OLImozUURTqfpMXUvWOWTlpKf+2A60ILGXfqHeFd04cxNxVS2g10Snbzmtv4PTd81TzdtQ+M3JuNaxrKe+HV4JF2W+s/o0DMIth6pNhCYpqYbimvlFo8yBrD+waM7zxIqqZ0UI5p7CucfcV5+LuK841tCnQ0qxoMbR35zPv/+ljAQB/+3AvUxN4vKklqK1maVlYwhIP3tj85QWZ+NnwPkEBZNu+OmakLkuI570HvE1oQPXfkPMDmPJ0KRYq5jctAfnOiYOYWncvIEEoAhCJFhOxscpCgVOos0pr+TOJCG+Atn+TjJ5aVe1zM2/iQE0BTM82zluIyyrZjoprvtjPNTGxTAoSwnfSrD5yKrsxwK+pphR8WLvChzl+AJOGpOleUyuxolLY/P7YCUu1z1gL0vyV5Uhu1wYZqYm6goSeOZklsLCelZmadSxhWMt0KwG4ZmQG+nZLDjGtyg7VpXtrbcnlwhsvouZZK9fgmfJ4mI2skscYLxWBOiRePSZ584ZSWFK2Ub0R4wkn//ikCq98WhV8/zdVHubeg0h6C3luWjB1COavLDeU8ygQ0Pe/VPtK+QEShCIALR8fGVFfH6dKbfCySpfOvxTLP63CE+/vCfuNiPCmd+96CwhL0Fi0dhcmDws3pbG+z9pF8Xa/eVnhjtRxCJ+4lJMRK8pDabbg7ZZE2slDNJmZekE/ePTHEL8h3q6Q9bzeKq/BO1/UhCXCU2bu1vMxUeZ5kR1TAzrCIgutnDpqcwULnvlKiVq7yHpWJUX5Qn5jRlGabgMB4NWyfVgwdUjItdbvPhRMKGiXEC1iXraaSM+ICZt3bZb5WYnS6VlGPcZY7/+8goFhwqayfaLFi3kbHLUgqET5/o/M6sK9NyN5tabnZSK5XRuuiwPPZ6s5EMDmyjpckRPufykHivhJCAJIEIoIeD4+Mlq+PkrBZ0fND1j+aWj4pyywWJkEWaY7WeOzsehSXDMqE0++v4eZdVpPeGPduyQBRYJqVd7LLr+oot9X7qIqahvCnJfl3S/L6ZoVJZXVLSkoPKoRMVuYNQ8Z1SLJC7pwRnONz+TJWpkIT5m5W8i3RSEoxQXORJU1NDVj2746oZIEehGFsrli3+HGMN8yPfMVEL7Yaz2r0f272m4W4JluS4rygxm2zQrRemiZPO3SYGpdg4ee+VlGfpfVEWzKeYanmZqel4nJOelcIU1PowXob3Cm52ViUK+OeO2z/+Afn4amZWgOBPD29hpMGpqGaef3DvFtA0JzPAFighkrShbQz1ItJ5qdnpep6VPpF0gQihCUPj6SBPRJTdQNjxZZvERNVFpoZZWWJ3uWMCMaQp/RJQmvF14oFA6uhrfoKV9Uve8rBRe1P4xaGGPtWFlRUgCYqQHUk5WR+9IzD5ldALXSGCh3z3HgJ5GTkRPhqRdpXuZuLVoAbNtXj9uWq4QVKbwcglIw0dpZy2083tSCK3LS0dB0Kkyw1fLJ4tULs2LKM4qekGyHj5USES2Pk8KXSPv0zM+sKFEj2lLlb8z8Tkbv2ej5Nimzm183ui+WrK/AW+U1rfet+o2IYMbS6PxiVAZe3bRP811VPl8AYYK5nKXba98gGRKEIgi1j4+WelG0HAdgPYcDz3yl1PioBTkRYcaOHSTP1s2biHmTA4CwiXzR2l3MWmHqyZA1+ZXurWVOJL84vYMSvS8jPiZmF0Ath0dlYVCtSMHgb8A2Fb69fb/hBHlxCI0ek1E+W16Ir2hEoToMmFfAE9A2gV2dG7pDn5LLNs2KoiV86AnJRoVote+f8nqi76jdwpcIWqYwEfOz1jmVQrVRtH6nF6Qg4tuk3Fy880VN8HgA4f6JGV2SdJ211fNXRW0DXvlUO80AoF3OpAXAspJK3MVISOoFJAhFKaLlOADruYR45iu1xseIs7beDtKIrwHP1s3L75KUEI8/XZWNLorIOpbgwvs9q13qyY8nPL5aVoXbxp8tNMEa9ZfgOS5+33ACNfWNhiZntcOj/ExYCQkl1c6bVXl7yYZvwky2aj8N9bluHJuF5xi5eIAz5k+tMSSPR7XWh+dIfO3ST8LOJedVSU6Ix6bKw1wz7OotoWaK17d8h7mXDTS1kOoJHyJOxaJCNM/3b3peZrBcgkiuKTMaTBF475ueKSwOMBw152RwgozWs2ElUQSAX43KxMsMMxkreEOes1gbBLXDtrpdyr5izQfqIrzK58ua65aWfINZY7N8oRUiQShKEXGwBuzLJaQOzw8ASG7XRnOB1UJrB6mVyEuJcpLUyggtozXpi0zkRibKtJREzL6oX9hCblQ7Z2RXqp5k5fEhOwnz2subnNUaSd73WMKaOiWCepwGAMweexb+XlLBPRcALNlQwTXZ7T74g5DwqhYoWY7EvKK6vCr1MvGSxKzSblYbImJiEtnpizo283z/jjSeZCbJ492XGQ2mHrz3jWcKU86HAQDrdx8SFmTcNO2xns2z6/diwTvsenQ/HdEH/29TVdjcxArekHOaWbkXLa05K+u7XXOdk5AgFCFs21eHTZWHcVa3ZBxvamaqqZWwtDQyM0ZlIDutk+25hNJSEtHQdAj3vP4lU5gwAk/wEH2JjYYra036ynBSrd8bnVxmje2HpaoyC7xdstVoG/n34wZ0x7yCgVigWsT02iuqfdLynZARTYnAK/Ug/3dFmXbdpyfWhUcq8jRgskDJe448HyaRcgUZqey+2rjnkOYunIURHxJ53Gd1S2KGyesJ0Vq+f7xyCVpaHisRX2q03jdWH8nCkPJvI4u/Vr/Ln9uRhkBG+Wye/WgvM5ea7E/ICtLQOs5KumlUMFdufOXSM2kpidys70bmOi8gQSgC+MP/bg2LAAD0hQy3kijKiAgTogs6T/AQeYnNhCvrOXynpSRqTuRmfCBEd8lWVfKs/DwsRNorumPU+h6vppfS7KWXH0Z+xjx48omeBkwr14toCRkgtF5Y6d5a5nee/nAvrr2gr6H30YgPSUsAKFpZfsaZ3eDY4WmVJbAFQBFHf7N+NWq03jeeKVek9AkPXr9vrz4SNJk6YS6rqW/EQk5C2Sd+kYsrclozdRvN1m7UR4w1Z7M08+MGdGdmfS8pyrddI2gnMSEIVVRU4IYbbsCBAwcQHx+PTz75BMnJyV43S4ht++qYQhAgFvFlxC/HKnrChKhJS8bsS2wmXDk5IZ7ZBrX/FG8iN+sDobdLtqqSF8nPY6S9dmDEhMaD58CtZw6WP+P1o9ZzHN2/q2YpDeX3lfXCWGVX5DYYNQ1oCc8sP7YAxArA8q7FS12h9vOyM0me3mappr5RM6kmq49+c/FZePqjvSECXBzEfSNZ55w3cWBIaQ4nzGW8OTVOavVxUreRdV31caM+YiLmR/neH79mGHfutVMjaDcxIQjNnDkTDzzwAC666CIcPnwY7dq187pJwmhlCQX8Y2etqW/EnoM/MD+Lk2DaLm3mJTYqlMgvuxoj/lNGJhdW5AnvGlajbUQL14qG7duFiAlNC96uf8n1wzH7pc1C98wrlaHnaBz0c2KE4LNMpqyyK/J3zQievL4Tqc1nxQQSEu0pIaxkjR1CkJ72M8wJWmIn1WRF+6m1WEb9hFjRU3b5fvHgPdM7CwZxryGidRf1ETNifmwOBIAAO9mkPM7t0gjaTdQLQl9++SXatm2Liy66CADQpQs/66Yf0coSCthXPd4KmgVhT09mdtilZfReYqNCCSsk9YYxWbhqWLqhyV1kcjFq5rIabaPnNM8q9CiyI7fDJ8LKpMh7xuPP7aWZI0gJrx/N+EPxCpdqpR6wIniy+k7dJ6y8TmaEL7VW2WjJGlH0Kp4nJ8SHaTflpJosk7/8tzLaT4lRPyH5nMrvmn039WoZKj9jZWaWC7+qMRqwoecjZsT8GC9JqK5vDBE4JZ1xbtdcYhXPBaH169fjr3/9KzZv3oyamhqsXr0aU6ZMCflOcXEx/vrXv2L//v3IycnBk08+iZEjRwqd/+uvv0aHDh1w5ZVXorq6Gj/96U9x1113OXAnzpCTkcrMEgpYi/iyq9SGVr6iB6ach/Hn9jRll9ZD7yUWXcx4C9XzGyvxQmmlZmI+o+0yY+ZiTYQ36mQ2Vv+eFbEBhPqxyBjZkTsVQmy2BAhLG3C86SRuemlzmDZAFkQAdr0t+TnW1DeGfC63LTkhPpjFWsvh2e1aS6wIODv9MoyWrDECt+K5oqyK+lVtAdAluZ3h91t5frMaHCMbLiWsxKxD+qQwixjL75faMZmF3WV3tDZhWqZCZXdLAQSTKur1gxNziSieC0INDQ3IycnBDTfcgKlTp4Z9vmLFCsyZMwfPPPMMRo0ahcWLF+Oyyy7Drl270KNHDwDAsGHDcOrUqbDfvvvuuzh16hQ2bNiArVu3okePHpg4cSLy8vLwk5/8xPF7s4tHfz4M143ui88q65DVLQmNTS2GMywrYWlwzEZ3aeUr6t+9Y4hJweikYXW3IKJx0Cu3oJeYzwhmVenyRMiKxhBpQ9cO4aZgtR8LIJa7iVWsdFCvjrYt6mZLgPCOl+6tZTr2PvGLXDQ0ndKst6Vuy9W5vbF6S3WoUCOw63aqGKlIziq7/TJ4Y/jt7TXIy0oVKnHCg1vxXMO/TW8zpWcutOoXZ7R/We+QHBEmBzIo/djkYsDVRxo1k3kC9pXdUQpmWnO2iKmwBWzXDS8zjbPwXBAqKChAQUEB9/PHHnsMs2fPxqxZswAAzzzzDN5++208//zzKCoqAgBs3bqV+/vevXtjxIgRyMjIAABcfvnl2Lp1K1cQOnHiBE6cOBH8++jRo0ZvyRFyMlJtmzxZGpwAzJXaEMkqLWNk0nBrt6BeqNSIJOZjYXSHJQIrGkOkPAbLR2VeQXgyPzOlGVoATHm6FAtteD5OTI68Ps/okhji7Cwi9LG0siJtVJvQGpqaTefXkrHTBCKCUhPGEiweeHtH8P+tZoHXi8xTlsYQiVJT584Cx6/ILEb6V0tDxTosFwMOOcYZc8kJ8UGfKRm9dBxqc6NSMJOf46pbRqOssg55WeFrkIipMCkhLkzr6kWmcS08F4S0aGpqwubNmzF//vzgsbi4OEyYMAEff/yx0Dny8vJw8OBB1NXVISUlBevXr8fNN9/M/f6CBQtw//33W267X9HS4JiNYjFSR0xk0nB7t6BXbsFoQjzR6tF6E7FSmNIqHtulA19rxpt4h/buHHZMK3dT6d5a7iIYsOn5ODE58vpcz2dN1Mlc/TstLY0dWkXA/feDpRl7fct3XB8sK+1Rvot1jU24740vw8ajXkkI3jmViTjNasisaqlFHNpFUL8X8jNSC0F66Ti0/AdbAsbSL7DetSm56cENh/L3TmUaN4uvBaHa2lo0NzejZ8+eIcd79uyJnTvZkRhq2rRpg4ceegjjxo1DIBDAf/3Xf+GKK67gfn/+/PmYM2dO8O+jR48GtUnRgJbzrFnHazN1xLQQXRDtdLSTHUJZ5RZEslIr26RXPVpEK8ZSV7Ny79y2fEur06gij4eyT4xMOCIT2dW5vbH682pLOVl48BaJ7dVHDCceVGImDYORBUt+b7S0NHaWjHFzN81q9+tbvgtqCZSaILvaoxQYWZFhPM24Vh+yNmBaxXNZiGrhWO1QHtPSQMv3qzfulIlBgdA6iPLnq24ZHdZXRtJpyJ8bSb+g1n5qaV39lFfI14KQXeiZ35S0a9cuosLrjcLS4ADWS23IggQLowKL3eUsjMATVERfWpFFSk8rxlp8Fq3dhTsLBmHRml3BCVR5Ga3dm5EJR28ie33Ld1hy/XCmA7JVgSUtJRF3ThwUlkV30ZpdmJxjzRlX3ed6EzHr8wvP7ooNX4cnR7xp7FkAwovyKid9O0rGyLi5m9ZKMDlpaBoeemcHc9E22x5meYwAUMyJDJMxMh+YmTtEtXCscwMI29Qs/kUO4iQJ/znSGHynlfm0WNppGXkjKycGvWlsP6bJ+nhTuGHRiKaThYiAq/TP05oL/ZRXyNeCULdu3RAfH48DBw6EHD9w4AB69erlUasiHzczTpuZdPQWKdFJyazGiCWo8LQKdvsBAfzFZ2jvzigpysfmyrqgJkgJb/dmdMLRm8iSEtqiyCGBhVV+wylth16/sEwqsnO1TByAWWOzdAVgqyVjlLi5m9Yq1JvVLUkol5IReOUxtu2rx6Sh6czfGDEVmjUrimxweJm9ZZ8k+ZjaB4eV7Z6lnZ43cSB6d04MEZBaAsDSDRXCcw7veQZUvkVAuPO21nlZiMyFdviv2YGvBaGEhAQMHz4c69atC4bUt7S0YN26dbj11lsdvXZxcTGKi4vR3Nzs6HW0UIa4y1gJdVeipcGxg5r6Rvz7q/24742vdLP5srBazsIJjZHypTXqBwSww7SVaDmkKsNWu3Tg+3nx+kRkwpHr2Y3M6oKcjFRNU5UZgUVEMHVS28G6vl6/yJ/Lv1Vq5dQLvl4iOTvrPrm1m1a3W62NUGo3+qQmGvLd4W0kWKZ7rUrlevOBiK+dXn+LjEueEMd7WeX5sKQon6lJZT1j1uakBcCMvEy8Wlal60SuNT+prQRFBYPQOamtaYHbb+YvLTwXhI4dO4Y9e84UR6yoqMDWrVvRpUsXZGZmYs6cObj++usxYsQIjBw5EosXL0ZDQ0MwiswpCgsLUVhYiKNHjyIlJXzSdxrNJIUwF+ruFlptbw4E8N5XB/DjqebggsuDt0jpTUpOO5Ma9QNSVjOXAMy+qB9mje0X0hYth1T1BMITUNQLiBEBQl3Pbtr5vfHoz4dxTVWsIqQi2bv1BFOrkydP2LIiGLP8tYb26RyWEVsd8TRvYmhkHrOq+Ed7w66nrB2mJTi6tZuW2/3kuj14ZVNV8DhLu2G2T5UbCaOVyrXmA/V1Ljsv3JIg+p7cOLYf/n66cKhoRns9jNb349Xpk4UgCfoJLnnabXXE2aK1uzTrM4rgJ/OXFlIgoJN+1WE+/PBD5Ofnhx2//vrr8cILLwAAnnrqqWBCxWHDhuGJJ57AqFGjXGmfLAjV19ejU6dOrlyzpr4RFy54X3PXHycBG4su9d3AEmm7EnnBNcqKsqqwxVJ++Uv31mLGkk/DfrN89gVcHxY9B0dlPxs5f019Y5g5BQiv26P+jl50jPL+5WyzrN2bSDLIbfvqcFVxadj9vFF4IRqamrn3WnW4IUx1L+cfUZsoWfdXUpSvqT0yOnny8qEkJ8SH1QWTrw9oVw432vZn1+9trcwuIHDxxsb8ywcBgPB53EDkvdZ7pspzafUp61qSBJRqzHes+WDcgO7M/lUz/3J+pmb53Ern7dmqTOxh311ZrlmQV4lon6mvoZc93Og5zcyZkYDo+u25RuiSSy6Bnix26623Om4K8xNaIe4yWjskt5FNeJLUalU2Ilmv/Lwa143uazhHktZOw2ytMS0HR+VCZOT8POdEpRZJyyGVNwnx7p91TE8bwqtn91llHS4fmsb0KUhKiGPWc5IXi6KCQbj54tbFZdnpXbT6/rRC/41qO/QS1akfQXMgEExQqaUlMmJKqalvDKlppee7drihiTk2vq09HqZ50dJoulGmQGROEvXlMmWe0rm4qBmJBSuVhAzLefvvGyoxa0w/bjsG9eoYzIYtEwfgyRm5TOdoK1qW7xtOhOUZMuNT57dwdrfxXBAiwtGrDwX4o8YYoG0GUyIBmHlhFpaVVoZ99lllnalkkbzF0oh5hZctWZk7SL0QGTm/lrpcnrBY1clFJiHW/auPiZgJefXsRmSlht0r0OqTcPXTpSGCg7KeUwCnhRAJmJyTjiWM8h4SEHT6tEPjYTRRXRzCE1TKWXyVPnhWhV4t3zUJ4UJaHIDlCiGIdx4ZtxKPiph9RBdO1vwmKeYzltAVgP7GT8SMZLTNZoS2nIxULGTMD7Kz9+ScdMumIqXvmh0CTCT58zhBnNcN8CvFxcXIzs5GXl6e69dOS2kNcZc4n1sNdZepqW/Em9uq8fInlXhr+3fBnBRGfs8SguQJXtnehdOGYEouO+pjRJZxIUiP6XmZKCnKx/LZF6CkKJ+7OPCyJfMmP6PnlycY1osmRw2JZn42g1ZJBPl5y/XslBQM7hXMgDw9LxOrbhkNSfFQZYFK1kawFpuH1+zE5m/rNBO2qc9lFnnR00L+PF6ScNNF7JDjW1/ZggsXvB/03ZGfX/zpmxcRepUo/X3e3FbNzOGibhdTcGNsfHhCrpV+5KHuhzgAlw/uJdQvIgQCwOZv61BT38jtRzmxp+j9qdusRqTNWs9UC635IS0lEaP7d7Xl/WY9FyO1CEXbHO147iPkd7zwEZKpqW8MhrjLsELdZdPUt4ePo+lUC8YP6qGrYbGj3hjPrgwAT12T23pOKTTBIs8p1y3UZgSWv0IcEJZN2ozdXX1dpSlGnoQzuiQ5apvn+aEA4RqEbfvq8FllHeqON+HpD/eGaBm02pnVLYnrP/LUNblh+VB42k6r96z0nVCj9rkCwkPh1Sh9R0R9lli+KkB4wjslT12Ti64d2mm2i+XH4oVfh7ofzPhyac0bStO0OrGnXOfNqOZr2746pqlqdaFY4Vstf0S/oJ5f/OBX5gdE128ShHTwUhASgWea0hIwtBwfjThh886jdw55wR3BqF2jPr/se2RHygCeGYG3eDkx+bEWEqOOxLzzsvxEauob8XxJRTDaRY36WlqO2zyHYzn6SR1dJn+uroA+b+JAPLx2pyP3LPfv9uojYb4Y6uenJTgB5gMSlM8Y0Ba4WPfNcoSX/a3U17Fj7NiBnp+S8nNArE8AMBN7Kr8j4jNlh8CoJ/C54ael1z7ee2ulEG6kEzHO0oR5eKYpQNsJ2a56Y7IJT7TOmIxIAVm1gGc1ZYCWr4wRx2OrqP0YWLb5eRMHGkr/ryXgKf1RrhjaC29t3x/yW7W/g5bjtpYPwc0X9wckBB2mlZ+zio5q5eMRQati9uj+XTG6f9cwXwz1YqVMLMpKUGk2IEH5jLUcdnn3zRuP6vb7xa9Dz0+J9bleoePK2uNB85FehmK9towb0N2yH42W835YVBkjPYbT8N5bWRNGGiJtSBCKYPQiOXhOyHbWG7O7zhjAFvACaDUvmM0FpOf0KOJ47BS86CuRyYsn4A3q1THMH+Wd7ft1FwQt5+DR/btqCoc3j+vPdQRNSwkvOsrKxyOCVoSYOieNXuRcWkprYtHqI41MjZbVgAReJt8ndUpGqMcer/1e52kRqaHG+rykKB+rbhnNTNugnoNEHda1rmWHwMjTQKrfs+c2VGBpSYWrggfPMdxInbBYhpylOXjpLC2KLNDw4Dkh85yxzTphty4m6Zg01Fp5BRmegCfv0GVq6huFnSfNOj0awUh71KSlJCKrW1JQCALEnF95Al5ZZR3TGfimsWdpOrjqOQfrOXryPufVTzOzeGtFiLH6TMSp+OaL+2P+5YNCHJft0K6w+nPBtCGG3hW99tvpfGsUrQ2G3ucNTeys/TeNPcvQmBRpi1VH4BVlVRiz8H3MWPIpxix8HyvKqrjXBJx1XGfBcppWow74IM5AGiEOXmeWFoFlmpKZdn5vTfOTm/XGjMLTWCl3ikbDhp02I9gRxmwmVJe3W87LSmUenzU2C7PGZmlqEJzQMogsmFaK8rLOq2fuU/erlkbLCkb6k6V1cLPavFH0tDV6n7O0ZbMYUU8ifah3LbMaXi2tl0h6DLeekVbBZMD4xs9rvyc3IUEowlEKNN8ebkDTqRZcKhA1Bjhfb8wser5HIrlxWC+xU2YEu0p6mElqxhPwcjJSdQU/LT8ku82CvHvbXn0kmIPIbFFeNUbMfaxz23HfLH8evfPyhGk3kt1ZKVCsNc70Pr+zYBDTr4x3La22ObXZ0RJER/fvigVThzCzSXuRkFDZR1b6wq38VH6BosZ08KrEhhwtlZGaiKrDx22LnIok5PQBat8jvSgQt19iO8OYzYbq8qJaWMe9muTU92Y1esxshJjTIdBm+lcvAszJ9qudfYs4UWp67deLqtIah2ava6YtZs6nF53HS4/htfCgNS/wBF8/RSNahcLnbcJtQSiSi626hdaLCoSH5jr9Ets9cdg9kavP7eUkp7y3itoGIQFSRFsh0mdO9qvyGmb6V0SYdqL9WvXOtOpvOXFdPy+2ooKon8Ps5WuXV9drBmSIjsVIMJtR+HwEohUOD1iPnPILVl8iLRW4kVBbu9pkt0reyWg1r/1N1PemZ/LhhUOrn5VInznZrzJm+1fE/OVE+7Wygk/OsSf4QfS6fvF7YiFqVtd6Rl6am5TXVsIy4+uNxWg0m5Eg5CMirdiqGex6iXgTEy9c+fuGE6ipb2T2G69NRoQjr8OYRfFTcUU9AZLle1W0shzS6faLVHd3e9dqtn+ddubXai8rMMHpecZP41AUK4KoXX6EdlxbjVoA1RqLXt6Hk5AgxKG4uBjFxcVobmaHeDpBJBVblTGS/dnul4g1MalfYrk/b31lC3Ph5LXpSONJQ/l8eO1hYccC7ZRzq9toCZAsrUEAYrlRvNq1WulfL4TptJREFBUMciSHkt513RyHXptyvNSAaaWbANjPmjcWI02TJwoJQhy8CJ9nRUspMZrnRxZSjjSeRGpSgu3O1kazP7v1Eikj6ZR1rlgLJ69NC9fsdCQZmR0LtNVzaC24XiwYPAFSpHo4a/x4vWu1ItA4ab7jPVutrOBO4pbgZ9Z53c73wEsNmNZ7pPWsWWMxEjV5IpAg5DPUmZr7pCZi3+FGw1mbjRRVNVPTy0z2ZzdforSURHTpoC948UxpTghsrAV6/spyJLdrY6jf7VjkWZOc32z/aq1BHE5rhBTfYY0fP+xa3fBHMoLes3Uqh5IeTveTmffFiffAS00s69rzJg40ldXdbxpluyBByIekpYTm9xHJCaSE53TNElTM1vTSy/7M22G4+RKJOqCyJglWWLdVgY21QLeAb7YTPYdTQpofbP9qrYG6gCtr/ETSrtUNDZzos3VTeHNL82j0fbHrPXAzj5kIdl47UvwhjUCCUBQiWlTVSk0vkezPLNx8iXiCF9AaIqouvqlsU+ektrq/M4qWilp0wnVqkfeDFoWHcoEWGT9pKYkhifriAMybONDz+1DjlgbOb8/WTVOV0ffFjr7Suj8vNYV2XttvGk+rkCAUhYgWVTWj1ZFh+TOJ+jCJvER27RhZGgU5fwmvQKeR3xlBLZipEZlwndKqRZIWRW/8rCirCq3ZBuDhtTvROamtb8J83dTA+enZihRpVb/3VgRGo++L1b7yq2aV0IYEoSiE53StFlTManVknKg8D9i/U5YXTqOTlNnfyWipx9WO3ID4hGu3Vk1u550Fg8IyNEfa5M0LFXZqQTIrsNtZe00PP/l1aN33+t2HmDmjrAoWRt4Xq33lN+2bH/E6go8FCUIcvAiftxORoqpWtDrKc9hZr8zJHZXZScrM7/TU41fkJKKh6ZTpCdcu1bS6nXdOHGTKidIvaIUKNwcC2FxZhy4d7JmERQV21sTP0zxs3HMIM5buRcBmc5lf/Dp4952UEMd87x+/ZpgtgoWR98VKX2lplPwoALiN3wIyZKjEhg5e1BpzG15NLy+ws26XGrNp/Y3+zsj33Sj7wCPSyhyIwCsZAbQGAogmYzRzHVbfaU386rIN/3VeT6z5Yn/IdSL9ebBglavI6JLEfO+fuiaXqTn1c5+w7g+ALwUAN/FivqESG4Qwdmt1rGDURm9kl2VW7W30d0Y0SF46HUajGp/nhyWH3tulaRTpOz3tplLzkJQQhynFpWHXMfo8jGodvNBSsDQuNfWNzPd+eFaqoXfPD1oX9f0BofUP7dByR8JzVuPn+YYEIcJXGBE6zKhZzaq9jfzOT86pWkRKO42iFjCON7Xg+4YTuPWVLSHfszIJi/SdyMQvC8Kle2t1gxu0qKlvxPMlFfh7SYXw++ClmUK9AdB670XfPT+ZXZT3Z7b+IQ+j92nFhGsnfp5vSBAifIfIxGcm+kTGrBaG9TvWdfzgnCoyqfmhnUYwqv1TfoencTA7CYv0nZGJv/w/9czr3FkwSPdeWclT9bQObkQ3GV1Ytd57vXfWzoAGu7FTADB6n6Lfd0OI9PN8Q4IQ4Uv0Jj6j0SdO7Ay1Jg+nIrtEJmwjk5pfnGj1sDpROzEJ6/Wd6DVr6hvx8NrQWl8AUJjfHzeP66/ZBnmhY2mTtLQOTpopzGinZMxuUuwOaLATO8ee0fu0w4RrJ36dbwwJQqdOncJDDz2EG264AX369HGqTTGLsjaYjBM1wqIBo9Endu90P6s8rHsdpyK79CquG71/L/2URLBronZiEtbrO54/jFKo5UW6jT27u+71taLktLQOTpkpzGin7MCMb6Gb+X7sGntG79OKCXdzZZ0jvqN+nG8MCUJt2rTBX//6V1x33XVOtSdmYU0gMqJlL2IB5SLC2mU1NDU76pCnFErUOOH4Z3TC9rNDolnsvCcvJmHlNVlC7bgB3U0LJbxs5XESNLUOTmjIzGqn7MDJgAY722j13Ebv06wJFwBuf3ULGppOCa87fnDINoth09ill16Kjz76CFlZWQ40Jzbh1QaTCUCs7EUkYabQK2sRKSnKF4o+scMhj5esz+7rKNGbsNWTj58dEs0SLffEE2pLivJNCyXqhS4OwE3j+mHWmH66v7dbQ2ZWO2UX0RjQwEIdDNDQ1Iya+kbu/YqacOevLEeL4rgRLZmfHNXNYFgQKigoQFFREcrLyzF8+HAkJyeHfD558mTbGuclbiZU1KoNJtMS0C97ESmYKfSqtYgo8ws56ZCnN9HL17FzZ6Q1YfMmH786JJrFz06WRtASaq0IJVZ+y9NSmBnDZrVTdiKqdfH7mNLr/7SUREO+kCIm3OR2bUxFVkZDWRHDCRXj4uL4J5OkiM3EzMONhIo19Y24cMH7msJQnARsLLo0YgYWD9696t2f0USLTiQqZCUEiwPw5IzcYCJKJ3ZGrARt4wZ010xO5mWiRqeI9HuKlASWVsawcqwa0U55hR/HlEj/OzGWzJ7TySS4VnEsoWJLS4v+lwhDpKWwa4PJGC174RZmzFtmC70aVWU74QvC20VOGpoOwLmdEWvHr5ebxI8OiVaJ9HvyuxYCsD6G/RoVxMOJMWVFIyza/074OJkdn5FsZpSh8HmfoK4NJsOqEeYHzJi3APOFXv2yiGhN9E46YKon7EibfCLZkdJO/C4o2DGGtYSLaB8HVjXCov3v1PtvZnz6ZW62gilB6KOPPsIjjzyCHTt2AACys7Nxxx134KKLLrK1cbFGWop/Sl1owXLuFnXoZmm/RDVefllEeBO9m8JJJE0+ke5IaTd+1mw5OYajfRzYoRFOTohnHk9KCHVJcfL9NzM+/TI3m8WwIPSPf/wDs2bNwtSpU3H77bcDADZu3Ijx48fjhRdewIwZM2xvJOEsyvxFInmLzJq3ZJTaL6OFXv28iLghnCh31H6dfJRtBOAbR8po00Y4cT9OjeFIdKg12r92aNMamtg+tmWVdejRqX3Iefz2/huZm/32LhoWhB588EEsWrQI//3f/x08dvvtt+Oxxx7DX/7yFxKEIgxW/iI9M5dZ85aSSNF+GcXJyYm3o/bDRCKjbuNNY/v5Iq9RtGkjnLwfJ8ZwpOW3MtO/dmjTeJF3D7y9Aw+9syOsHX7eGPLw47vIDwHj8M033+DKK68MOz558mRUVFTY0ijCHXj5i2QzV019I/N3snlLUhzzq0M3i5r6RpTureXen1XSUhIxun9X2zVBrB21U/dgBlYbl26oQJwU+j23fZkioe+0UI9XN+7H7jEsL/BK/OrTZrZ/ZW1avNR6o2a0aepzKHFy3Do9Jyqv48d30bBGKCMjA+vWrcPZZ58dcvy9995DRkaGbQ0jnEcrf5GemcuKectL/LgbEcHvO+qa+ka8tf27sDa2APj12LPw95IKz3yZ7O47N9X6rPGa0SXJ12OBRST5tFkZL3Zo0+RzvL29Bg+8vcNUO4zg5pzo13nMsCD0hz/8Abfffju2bt2KCy+8EECrj9ALL7yAxx9/3PYGEs7BM3EBYmYuJ81bTiw2keinIOPnKDGtsiPxkoRZY7Mwa2yWZ74Mdvadm4sGb7yuumU003yyvfqI53lbtPCbTwsPq+PFDnNVWkoiJg1Nw0Pv7HD0nXd7TvTrPGbYNPbb3/4Wr776KsrLy/H73/8ev//97/HFF19gxYoVuPnmm51oI+EQLBMX4L2Za0VZFcYsfB8zlnyKMQvfx4qyKlvOq7Ub8Tt2qN2dQKvsiLKNTpgLRbGr79xW6/PG6/GmFtw5cVDY9xet2eW5iUEJy9zi5TgQxYt3jddXTrfD7TnRr/OY6erzJSUlTrWJcBF1/iKv8xY5uUPx625EDU8b5scdNa/syD2TzsXlQ9N80UbAnr5zW62vNV4DDD2u1yYG5bg1Uv7Bj7j5rmlpGZ1uhxdzoh/nMcPV5xctWhQT1efdrDXmNX6K4HI6KaHf/RTUk+KdEwdhSJ+UoFDktygR3kTqJyFIxmrfub1o6I1XPwn1ynEra5jlpkWSCVqJG++ayMbPyXZ4NSf6bR4z7CM0fvz4mKg+X1hYiMLCwmCtEsIdnF5snNyNWPVrYk2KC9bsBODfXbWZidTtHCJ2Xc+LRYM3Xv0g1Mv9mpwQHzJuWT6HXmur/IofnIf9qKFxG6o+T/gKoxO8mUXOid2IHU60WtXt/byrNjKRuh21Z/f1vFg0eOPVywVMrQHiRZ/K+NEE7Qf8Yq73m4bGbaj6vA5uVJ8nwhGpCu2XUHi7KkGzzqPGDxWdzeJ29fVIqfYeaYiMUwmtQRctgTMOsX7TZvqFFWVVYRs/6it7oOrzRESjt0PxUyi8XepttTZMTaTvqt02A/jB7BCN8DSXcSrBJ9bNLaLaajJNeY8hQejkyZNITEzE1q1bMXjwYKfaRBC66IV9uumDkpwQD0kCAjaot5WT4vbqI1i0ZpdvHbuN4rYZwGuzg9/qKdlBTX0jvj92gtmvq24ZjeNNLUhKiAvWzIpU7aVV9LTV6rER66YprzEkCLVt2xaZmZlRZ/4i+MgFWb89fBzfH2vCWd2SMSG7p+0vrXwdSZJ0i74C7EUuDsCb27/Dq5uqXPdBUQtBstDCWwxFjo/u3xWTc9LDdorq35pdcL1YqG8c2w9/L6kI0RxYvS91kVflb8w4FNvRn34LHxe5J73vqP2CZOFf7tecjFRfmKtF5xKj76aR66u11UUryzGoV0fkZKTi2fV7sXDNTgRcSsqpvhe73nveebbtq8OmysMYmdUFORmput/3A4Z9hP7+979j1apVePnll9GlSxen2uUbYtlHiFWQVeZhjaKsVq+jV/RV+Tt5keM5bGr5hIi+mFovttpXIg7A6sILNRcFo8fV96z8ztW5vbF6S7Xmb1iCQnl1PR5es1P4d1aFB/UiOntcP8wa0y/4XdH7Ul+HF7at/o2o2YH1DMYN6K7bD1rh4wB7HDq1EIvck/ys5WtpjQdZsPjdq1vDxvqTM3KDecf84JMlOpdYeQd5yH15uKEJt76yJexzCcDEwb2w5ov9Iced6KOa+kY8X1IR3HTI9wLA8v2pBX0JwOyL+mHW2H545P92YeXn1cHfTDu/Nx79+TDPBGTR9duwIJSbm4s9e/bg5MmT6Nu3b1jU2Oeff26uxT7FDUFInmiONJ4MHktNShDSjDhFTX0jLlzwPjcaJE4CNhZdarl9vOuInr+mvhGbK+tw26tbwBvJLAdj0RfzD/+7lfliA0Dp3lrMWPIp83pZ3ZKYi8KqW0bj6qdLhY+XFOUDQDBMWf0dNfK5GpqamRMWICYwGpm4RMwAWgukiPNtvCRhXsHAkMX6zomD8PDandzf6S0wLA2Uuh1Kp19eP2zbV4cpT5dyx5/MU9fk4oqcdABiC7FygTEriGr1vXJsqBH5DhD6br21/TumAPDUNbno0iHBcU2A6FzC6xOtd9CIAC0SRadGKwjCqGDM28DGAQDDpClyf0otltY8wuKvPx2CeSvDtebK998pTZFjztJTpkyx0i5ChZbWRVQz4gRaBVkB/aKsVq8jev60lERs/08FdxFi+YSIOlpv21cXIgQBwMrPq3Hd6L7IyUjV9EHh+TCVVdYxjy9ZX8E8vqykEktLvhGeYJsDgeCirJ6wtH6rdCKuqW8MGZMtAaBoVTnTEV2kL/WclrXSBii/L0/E8nUeXrMTWqEbWo7RosVMA0DINdX3pvX+qrn91S1oaDqFcQO6M/tsUK+OYfl4nttQgaUlFaYFUV7fb66s0xRwmgMBvPfVAdz7ry+F3i25H9RIAG5bviVESyeiYTOD6Fxi9N3Um4fU74BRIUirrqNRTYrcFmY/MBoncn/PfrQ3mM+McQpd7vhn+LiQr+sXE7JhQei+++5zoh0xiXrBURNAqxrTi0gorYKsgFhRVhGSE+Itnb+mvhHPbajgnoPlEyIaTbSp8jDzvJ9V1iEnI1XXB4Xlw5SXlco8/nZ5Tdh1JCAoBAHiE1DAxISsXNQ2f1sX9ttAAPj82zpMGmq8L/Wcllmfq5GAsAVZL35VeQ21edBIMVPevWktOqxds3ydx68ZxuyzdTsOMq+tFRGpJ4jy+l6tGWC1/943vuSOIbUfHK8f1PdftLJcV8MmijKhY0NTc2vQAsLHvXou4fUJ690Uca4XEeS1uLNgENd0bzQyVqstPI2Q1v3V1DdioUIIsot4SUJSQpxvIn8NF10FgCNHjmDp0qWYP38+Dh9uXSw+//xzVFdX6/ySUKKndQHO7GbcJi0lEUWXDworyAq0TpJWi7LKRQb31bGLRI49u5vQ+StqG7ifPfGLXOYkK0+ESlgTwsgstg/ciKwzfkLT8zJRUpSP5bMvQElRfvB6spCkvEwAwM79P4QVHbzpon7McTBpSBo3TFn+7bTzewfPZeplRrjTMs9azjos0pdyX6gLLQKt5kUAIZ+zuGZkZth1tO5XeU/qIr7LStjat+NNLbrtUN6bVhj5wmlD8OSM3LDPmgMB1DU0Mc/9xPt7uNflFcLUi57k9f3wvqlh/SmjZfqIA1A8IzdkrBsRBAJA2MInFxplFR7loXymVxWXYsaST3H106WYen7vsDnrzomhggavT3IyUk0VBOW9A/NV86ckIex9nV8wCDeP6888r5mCqKy2AKeFzmlDDN+f1hrFf0u0kTeoDU3Nhu/PKQxrhLZv344JEyYgJSUFlZWVmD17Nrp06YJVq1ahqqoKL730khPtjEr0tC6AfZoXo6woq8LDa3aGte3is7vhZyMzMLxvKvN3oudW+62oKdnTOiGKTEK8XeDwLHYb01IScXVu7xCz15Tc9LBr5WSkYtr5vcN8hJQO0/L5WO0cN6B7SFh9AK0Tf0lRPkqK8oMOvACwVLU4x6HVofidL2q4Ycqy8+/cywaisvY4khLiwnwclD4u0ukDcqTPvIkDMbRP5zAn4hFZXcL6VAK7P0Ujs9S5UtbvPhT005A1AyVF+a3mGJUmQgIwPa8PcjJSQq4zb+LAMB8hlgOvete5dEMFd+c/un9XDOrVkenzo9Yw8iIXV9/S6ixfU9/IvE5qckJYP+rB27mLpAhQ9r0ytF393OZNHIjvjzVhyYZvuHPSnZcPwqSh6bptiIO+xg7QN5Hwop5YmvSWAPD6lu/weuGFWFH2HyzfVIUAgIfX7kTnpLYhmyJe7h4zOX3W7z4UMlak0+Nkel4mJuekY3NlHSQJwTEpv6965zeT/kH9PsYBuOl0YALQKtio5w8t9LS1487phpI9tWgJnBGsBvXqiM8q69ApsU2Yb5DI++HFemdYEJozZw5mzpyJRYsWoWPHjsHjl19+OWbMmGFr46KdtJRELJw2hO8jJFnXvJhBvXgo+WhPLT7aU2tarS1qTzfiI6TuQ71+q6lvxOotodrLVQrfHyWP/nwYrhvdF59V1mFEVmrY51po7ehG9+8a0j6WMCHvUFnH1X0gn4v1feXEDkB3Epb7dP7KcrSgdfJaMG0I17GRtdCyhFi5nTyVv+wMHWaWA3D106VBYUnZ/s5JbcPuV7lQs55BC4Bfjz0Lfy+pYApvDU3NTO3XE7844+ws34/W8+F9Lmtj9LQo6gSFrOclKoimpSQyhQ21QD5mIT9AAmhti/rZstrAElKBcD83LRPJkcaTzEg2lulWpjkQwL7DjXi1rEq36CtvA8M7rkYOclGbBaVA6yZIPpe6oLXW+dXvl5n0DyxhTr35LCoYJJTjKS0lEXdOHBTiIyQTALBxz/dYfcuFYYLVzv0/4E61EHT6Geq9H14ECBkWhMrKyvDss8+GHe/duzf279/P+AWhhTxoN1fW4UjjGZV5alJCcAfhNiKqbrP2XN65WROk6M5A2YfKnZeRNgQATCkuDXFOV05KN150llBblBjZ0dm1Q9Uq0ikj8rz0JlO1IMxbaFmCMk9AXPhOuBAkI4+3kqL8kAlcr394z2DW2CzMGpsVIgSU7q1Fv27J3N+wNGJ61+d9rt61BxA+/kV37iJjhCd8KvuzdG+t7nv/wNs78NA7O8KeLasNSiE1Dq2+MCzBlWciUTvHy/ONVqAzz//J7oziyndBTQvMBZLw3i/1RkYep1rnVwpbrM3ngjU7AQlcs5xy7hvSJ4V7HdmkrHwneRtp1mMbN6A7Fv8iB3GS5Nl6B5gQhNq1a4ejR4+GHd+9eze6d+9uS6NiDdauwUtEnFcBc5ML79zqRcDozsBIH/LMaQGccU63I5pB1ASn/L6VHare942GqWpNpmpB2Ihjp8gYYMEbb1r9o7fr5Al4akFl3sSBhp+b1ucsU6Ge5k8L+fyyz5z6eiJO7eX/qRe6lqiGhSegqY+xTCRx4AszLNMtcMZ0ydK4WTG5sNIsaEXcmbmW3vujtxHRgrf5XPjOTkzOCZ+P1Ne5c+Ig7nrAulfe9WTXAPme/JB8U8awf+XkyZPx5z//GSdPtua8kSQJVVVVuPPOOzFt2jTbG+gVxcXFyM7ORl5entdNcR21MyEPCcCegz8IOTeKnjsOwKpbRjv6QqSlJGL2Rf2Yn7UEEBZarHbqVMNz8mSZ4F7f8p2h/rILtcPwirIqQ78XKWki6vgojwGjk4+VsiUsh3ZAewGaVzCw1b8KrX4mRvtMj7SUxKCJVKuNIug9Xz2n9pr6Rjy8Ntz8UZjfH3+cdG7YcVGnVuU98o6p54R4ScKdBYO47ZVNt8rxc8XQXlh9y4WYnpfJPJ9Zk4uyXy9c8D6e/Wivpsbc7LU2f8sP3Qf441RkLpE3fmoCAJaVVIYcY11n0dpduLNgEHPOZm3seA7bynuycj9OYFgQevTRR3Hs2DH06NEDjY2NuPjii3H22WejY8eOePDBB51ooycUFhbiq6++QllZmddN8QTlxHxrfn/mwA4AuOeNL3HhAmMLq3xu1gTbAuB4k/HCvrIwsm1fnVDkyayx/ZiTQ5wETdW6GtZEKWMm6sMJ7Jh0eAtpUkIcSvfWIjkhXigST2Z6XiaeYERVKX+rjLBhleMQjTAC2AsyoJ1n52GGaaamvtHwtUXhtZGFsg0iz1dPOOAt7mPP7o5JQ9MMPVszyHPCU9fk4vFrhmHysHTN9k7Py8TG+Zfi1xedhTgJeGv7flz9dGlwHrIqWAJ8k9LG0z6SSljRdKKsKKtiJqIEgKSE1iXaylySlpKIooJBzM+WlnwTMk541xnauzNW3TIaalmItbHT2ujo5VnzImIMMGEaS0lJwb///W9s3LgR27Ztw7Fjx3D++edjwoQJTrSP8BBZJTu6f1dce0FfVNYex/Gmk7jxxc0h31OalER3QmkpiZg0NA0PvbPDsgqbZa/XU7XKu0qWk7Woal3P9u510U8ZO6qws0xMU3LTg1FqclmM17d8J+z4yHManjEqA7ddeg7SUtgRNnaq1I3k2VEnuPRKna++/5vG9hN6vlq+RFpj1S2nVj1nbtb1lHm2WOYkKyZinnD4tw/34s6CQWEFkdXRdCLIcwgPeVPIi8z7vuGEUHTtzRf3x7eHG/DKp/tCjquDUvSSxKr9fHjziDzWlO+LXp41ryLGABOCkMyYMWMwZswYO9tC+Bh5UpHzvqgRjfJSn9PqBMuz14s4c2s5WYu0izdRPrzmjO3dD1ERdglk6ugwZai+HLpsJDSXF5GyYtN/cNul5wS/ozyPmSRzem0QjeyKQ/jCO3+luwlPjaYDUKPlh6Y1Vs2ElVu9L5ZzvBIzAr4RIZrnS9gSAIb27qwrpImgZ2aTn6H6+cjtuvWVLcIC+W2XnoNXN+3THCd648DIPJKWkoi7Jp0bEpSgNod6PTfKmBaEiOhDWfOMV+tMK2+PWf8NM1ERMloTiYjWg+dkLTLxa02U8nW1zuNWNWaRSUe0LUqBmLUIqSNI9GBFpGg9Nzu0W+p7FYnsipck3Dg2KyyLeQta/SzuYph5nYDlS6KXDkAUvTGvdp63c+yaea5GBXyjQrRsUlIL6kpNmdV75wUOsLLiKzdut7+6xfBmQFT40Io8NSO88Bz5nRaujUCCEAGAXTNJQnitMy2TktmBbCUqQivCzaqqVW+i05sotc7jdsSE1qRjpi3JCfEhySIBc/1tdDGzqt3i3SvrGbGE9CUbKsIE36Ul32DW2CxLZhjRtrPqebHSAVh9F/XaoTdejN63HckD9RZmM8LWzRf3ByQE8xnZrblQ34MyASJPOOvSwfxmQFT44I0DM8KLXtoNLwUgGcPV52MNN6rPe41WpXleFXi56rtI3h7RNmhVKNdiRVlVcCJR/lbO7sq7nl0L1LPr94ZNlHqFEc3eq92YaQvLJ0vkvnkon5/IeYx+X8aOfn/o7a+Yte1Y1cPtFHZZbQfc91MS6UMzhUIrahtQXl0f5ncj+lxFFmYrz1/0GmYxcn4/zR96eN1Wx6rPE9GHVj0Znu8Pz6RkpQ127HKSEuJ0fVTMLFBagtPN4/pjck668ERm1bxjpxBntC0snyw55YGRvDdK7EoaqYcdZrVZY/sxy6GonVbt9mXimYDV2a6dRq8Pjd43K2cNq+yLFlpaBTsyNetdww6MnJ+lRbpxbJZjbbOCHe+cGxgWhC6++GLceOON+NnPfobERP/cCGEevZpnew7+4LgN16rJQ3QiMbNAsdLT33xxaEZWIxOZlXu126RmtC28khVmUh4oMbrQmFmY7HAaF3Va5RV2NbsAGMl2LYJZYVqvD40sfLycNXZpC0QyNZu9jlv+fTzUUVnPbajA0pIKT5MSsvBL5KwehvMI5ebmYu7cuejVqxdmz56NTz75xIl2ES4i+/3w0ifKuYKe/WivoVw9RttgVxI0LbQWKBa8EPln1+9lfl+EtJRE3FkwKJiTg+UYKdIWVr4YM21R9rve7lKk2jyv7U7k3jGCXWNMmfNGks5sIOTnsW1fHZYwzGdWCijb+X5YSa6p1w4j48PJXDJa70paSmIwHNzMeLSanNROWOkDvHzH1Lg1r1vFsEZo8eLFeOSRR/Cvf/0LL774IsaNG4ezzz4bN9xwA371q1+hZ8+eTrSTcBh5h/HeVwdwzxtfhn0uCwBK7PZPcCNE1+gCJRIib5QVZVUhdbV4UW8ibbFDzWxkd2nGvOCnVPp2jTEtp9WySnZR0JvGnmXLc7LSdjtMdlrtYI2PeRMHMkt/JCfEM88vJxG0gta7YqV8jt0mTytEitnJT9FhPEz5CLVp0wZTp07F1KlTcfDgQTz33HO45557cNddd+Hyyy/H7bffjksvvdTuthIOk5aSiP49Ogh/34lJwElbPM8X6vLBadzf8CZrM3mTgNaJVB2dB4glpHRazayVnE6JkYnNTwuHjF1jjPc88rLYOYhm2eDHIbebV1NMD7sWT60+VI6P7dVHgoEEEoDZF/XDrLGtEVENTc3M31s1swL8Z8OrdC86Hv0kfESK2QnwT3QYD0ui96ZNm3Dffffh0UcfRY8ePTB//nx069YNV1xxBebOnWtXGwkX4dWl4eFEWnSnzCi8GjhvldcwVdwryqpw9dOlzHOZnXB4wpgsWGnhpJrZqJkiLUWsHITfUunbCe955GSkhh1fMM18egklVs0yZk2bRpHNT7IQBLRqlZ/bUBFst5Nt4T0bXqV7ZU0vrbnHrf4Twch84AfTtJ8xrBE6ePAgXn75ZSxbtgxff/01rrzySixfvhyXXXYZpNMPZObMmZg4cSIeeeQR2xtMOIvsL8TSWrCwexLgmVHscE5Uq+2VqHeGWhWmRQUQVputJqR0Ss2stYM2kuBS9Lx+3LWagfc8nHhOdmjXrEROGYVnVpbbXVKU72hbWM+AVeleHucPvv0V/n7ah5BnMnOz/9Sw5hORceYn07RfMZxHKCEhAf3798cNN9yAmTNnonv37mHfOXr0KK666ip88MEHtjXUK2IhjxALOU/QkcYmpCYl4D9HGoM5PmSs5I5RX0vOaH3fG1+GTVLzCgYGd5Z2vMg19Y14e3sNHnh7R9hncj6Y0r21mLHk07DP75l0Li4fmqY78WlNPurklZIELFTdkxHBz64IFnV+nim56Vi9pdpyv5vN+2MWkf6wo8/cjhzijUlWDiM9jObFMXOvvNxHMnK7nc7Ro4Y1zld9Xh22OdHKd+NFm80IM0bz+HgdDWc3ouu3YUFow4YNuOiiiyw3MFKIVUGIhfzyi+TqEYWV0VoNK4Ox1RBbvQnCavI1vd9qJaQ0MunZvdtTPmNlLTEj9691XqcXDpH+sKPP3NplKxcmAJ4kp7NyryvKqjB/ZTnUXj9eJwDUGudKzAiZdmNlLjIiPNsxpv0mSImu34Z9hGJJCCJCkf1CcjJShfxD9OA5DiuJA7gVj62gZ1+34o8j4heTlpKIK3LSMWloeohw9Oa2auEQeafC6Uf376rrS2H2vE5OjiL9YUefOdHvLNT+QOt3H3I9FNnqvU7Py8TG+Zfi1xedFfStUbbbK98VrXEu4xcTrhU/O1GfJjvGtJ/SChjFsI9Qbm5u0BdIiSRJaN++Pc4++2zMnDkT+fn5tjSQiF60MloDCIbePrx2Z9huyI4JSs++btbPw4xfDKtshQwvKsXJCBbWPcRBPLRZa2fo1K5RpD/s6DM3Ioe0qrHbUfVcFDvuNS2FXYXcSob35IR4NDQ1Wx5DRoqeeoUVPztRnyY7st37LTrUCIYFoYkTJ+Jvf/sbhgwZgpEjRwIAysrKsH37dsycORNfffUVJkyYgFWrVuGqq66yvcFE9MBzHJYAPDUjN2gy6pzU1jHnRL2wTjNhn0YdKrUcswH+pOekIzLLsbwFwNVPl+ouWHr+UU6ZlET6w44+s+McesKg1sJkt2ZNqy12jjHlu2Q1w7uM1TGkHud6RU/ltrtp/rHqoC2yobP6nP2UVsAMhgWh2tpa/OEPf8A999wTcvyBBx7At99+i3fffRf33Xcf/vKXv5AgRGjCilCTHYcnDT1TP8nPCbl4k6KRNvOiawBt84fVCVJvQp+el4lBvTpiytOlQfOk3oKltcABsLRr1GuvSH/YEfVj9RwiwqAbwpZIW5yKkrKjxh1gj+bByLvqVQSW1TlQZMNn5TlHenSoYWfplJQUbN68GWeffXbI8T179mD48OGor6/Hzp07kZeXhx9++MHWxnoBOUs7j5VK9urJ3s3dml2TIssZMg7AkwqtmN7v1SHCVhdAGaORSlrfDyBgOurJSF/L4wkSMJzTf3Y4b5s5hxHHVyvRdiL9ZaQtdju7G3UA5o0rGTecmr2upO4GVp6z29GhIjhWfb59+/YoLS0NE4RKS0vRvn17AEBLS0vw/wlCj1bHYeMTiboYasHgXlj75X5Xdmt22sR5uzGlVkzv9/I1RRdA0bYb3elplU3o0am9qV2j0b4WKaFgxuSpxsw5jGhCzGoBRPvLSFvs6C/1+YxoIHi+PIB7mgc7/Gj8FFHFQm2+NNJeP2vu9TAsCN122234zW9+g82bNyMvLw9Aq4/Q0qVLcddddwEA/u///g/Dhg2ztaEEoYRVDPWdL/YHP3faWc9um7ibdaSMLoBGFiytsglm1e9WK5r7yWnTqGBpRgDZ/G2dUH95bc4wMuZZPmuAu0U8rfRXpCU1NNteuwVmtzAsCP3xj39Ev3798NRTT+Hll18GAAwcOBBLlizBjBkzAAC/+c1v8Nvf/tbelppk165dmD59esjfy5cvx5QpU7xrFGEZLb8aGSed9ZxYRKxOIqICg9G2G1mw9M5tRuAz0l6/O2065XMjI+flUsPqL6fbIoKRMa8cO3bmMhPFbH/5XThXE2nttQNDgtCpU6fw0EMP4YYbbsC1117L/V5ion86a+DAgdi6dSsA4NixY8jKysJPfvITbxtFWIYXcabEyd2tW4uIEfW0aDVvM1FtWm1Qfy7isOyUc7LXWg4RnDIhyAuY+p3QCgX3uzlDPba81jiY6S+/C+dqIq29dmBIEGrTpg0WLVqE6667zqn2OMq//vUvjB8/HsnJyV43hbBIWkoiigoGYcGanczP4wDMmzjQ0RfX6UXEqHraSDVv0bbrtYH3ud39InpOP2g5RHBiQedpSZ/4RS6uyOH7m7khXJjxj/GrOclof5kVzp32KeKdPxI2E3ZjOLP0+PHj8dFHH9nWgPXr1+PKK69Eeno6JEnC66+/Hvad4uJiZGVloX379hg1ahQ2bdpk6lr/+7//G2ImIyKbmy/uj/mXDwrJWHv54F6QpNacNw+v3elKdtOAUHlaMeRMu9v21RnO9Gq0MnZaina2Z71ss1qf653bDKLnnJ6XiZKifCyffQFKivJ9sXi6Ae/5D89K9aZBpzGTcdit7N1uIAvnRjKCO52lWev8Ztob6Rj2ESooKEBRURHKy8sxfPjwMO3K5MmTDZ2voaEBOTk5uOGGGzB16tSwz1esWIE5c+bgmWeewahRo7B48WJcdtll2LVrF3r06AEAGDZsGE6dOhX223fffRfp6a07oaNHj6K0tBSvvvqqofYR/ubmcf0xOSc9pG6QaM4bq9i9Y1VHwanFKz31tBFtiMhuU09F7mcVutcmFC/wozbMrL+Jn8eWGYxoSZ320RE5v2h7IyESTgTDgtAtt9wCAHjsscfCPpMkCc3NbPU8j4KCAhQUFHA/f+yxxzB79mzMmjULAPDMM8/g7bffxvPPP4+ioiIACPoAafHGG2/gv/7rv3TD+k+cOIETJ04E/z569KjAXRBeIi96pXtrXZs87Z6sWFFwakTU0yITmKgAp6ciF1GhR8tE6WeUfew3nx+zAk00mmdEhXOnhUDR8+u116+mSzMYNo21tLRw/xkVgvRoamrC5s2bMWHChDMNjovDhAkT8PHHHxs6l6hZbMGCBUhJSQn+y8jIMNxuwjxWijAaNQ1ZQbQQouj98Pw7WIUq9dAyIRkxOeipyPU+t1O971VxTr/D6mMnzJJmMftOxqJ5RsbpecyO80eT6RIwoRFS8uOPPzqaOLG2thbNzc3o2bNnyPGePXti5062kyyL+vp6bNq0CStXrtT97vz58zFnzpzg30ePHiVhyCWs7jDcNA2I7FiN3A/vfKtuGW1rmLDR3abZwrR2asyiaedpJ5EQ5mzlnfSbdssJWBpTp+cxO84fbaZLw4JQc3MzHnroITzzzDM4cOAAdu/ejbPOOgv33HMPsrKycOONNzrRTkukpKTgwIEDQt9t164d2rVr53CLCDV2TepuTZ56k4nR++GdLyfDXkdXMyYHPRU563O7JspIWOy9IlIWIyvvZDT7emkJ+E7PY1bPb9V06TeTuWFB6MEHH8SLL76IRYsWYfbs2cHjgwcPxuLFi20VhLp164b4+PgwIebAgQPo1auXbdfxgpr6RnxWeRhHGk8Gj6UmJXBrI0U7dk7qbk2eWpOJmftxQ4hzS2tml49HpCz2Mm5O8JHkR2PknfTbIukEIgK+0/OYlfNbmUf8qOE1LAi99NJLeO655zB+/Hj85je/CR7PyckxZK4SISEhAcOHD8e6deuCmaBbWlqwbt063HrrrbZeS01xcTGKi4tt93sCzmR/ZTnESgAWTvN+YLhNJE3qSniTidn7cUOIc1Pgmr+yHC1odUY0I3BF0rhwe4L3Y5SYVdSRk0UFg3Dzxf1db4fTwtiykoqIEvBZmJlH/KrhNSwIVVdXhxVcBVoFlJMnTzJ+oc2xY8ewZ8+e4N8VFRXYunUrunTpgszMTMyZMwfXX389RowYgZEjR2Lx4sVoaGgIRpE5RWFhIQoLC4PVa+2ipr6RKwQBrdFC81eVez4w3MbtSd3pic7vi5RrJgc5D4Ck90U2fu9HGa8m+Gjyo2FFTi5YsxOQWtNkuIXTAm1NfSOWbKgIOx4nwZcCPgvl/Dm6f1fh3/lVw2tYEMrOzsaGDRvQt2/fkOP//Oc/kZuba7gBn332GfLz84N/y47K119/PV544QVMnz4dhw4dwr333ov9+/dj2LBhWLt2bZgDdaRQUdugm36vJQDPB4YXuDWpu7Vzj6ZFyih2CgaR0I9eTvDR4kfDi5x8eM1OTM5Jd+Ue3RBoeWvATWPPiojnaGX+9KuG17AgdO+99+L6669HdXU1WlpasGrVKuzatQsvvfQS3nrrLcMNuOSSSxAIaIsGt956q+OmMLcQqZEVSTsDu3F6Und75x4ti5RR7BYM/N6PRif4WPCDMQpvbnRzY+iGQMsaKwDQtWOCLed3Eqvzp181vIbzCF111VV488038d577yE5ORn33nsvduzYgTfffJOKmQqQlpKIhdOGcC0F0mkJ2+uBEa2I5v8hrOFmTic/YCTvjdPlEyKVtJTW+oFq3Bw3bozbtJRE3Dkx/D4Xrdnl+zw8duRP82MJHFN5hC666CL8+9//trstvsJJZ2lZ1b+5sg5HGpuCx1OTEnB+jEaNuYVfVbPRhl93fk4iYsLzq7OoEi+1VTdf3B+QWs1hLQH3Eym6NW6H9An3O/WDr4weduVP85uGVwro2aU4NDU14eDBg2hpCa1snZnpvXRnJ7KzdH19PTp16uR1c1xBDu2XJCkqw/lXlFWFTXR+2JVEIzX1jb727XGb0r21mLHk07Djy2dfYMjp1Cn8Etrs9bhx+vo19Y0Ys/D9MIGipCjf9++J1vzpt/sSXb8Na4S+/vpr3HDDDSgtLQ05HggETNUaI/yFOrTfyXB+rwSuSHC+jRbc8Pnyi6+NSFv8rJH0k7bKrnFjdny4kcMnUjWmdudP8wOGBaGZM2eiTZs2eOutt5CWlgZJMhkXS/gOVmi/U+H8bgpcLPymmvUTfhIutPCL9sJIW9QLYByAG8dm2dYOK88uUhcxHn4aHywieUNmd/40rzEsCG3duhWbN2/GoEHhzl5EZMML67Q7asNNgYswtji6vXiYXbj9pL0w2hZ5AVxWUomlJd/guQ0VWFpSYbmvrT67SF3EWPhpfGgRbRuySNV0mcojVFtb60RbfIWTztJ+hRe+anc4v1sCF2FscXR78bCycNuhvbBL82W2LUtLvrGtr+14dpG6iLGINu2WPFaTE+LR0NTsa21tJGq6DAtCDz/8MObNm4eHHnoIQ4YMQdu2bUM+jxaHYqcyS/sZObQ/xGTlQDi/WwJXrGN0cXRz8bC6cFvVXtip+TLTFjN9rSW42fXsInERYxFN2i3lWJXxo6lPSaRpugwLQhMmTAAAjB8/PuQ4OUtHB8rQfklCWDi/HTsTtwQuUSLFJ8YoRhdHNxcPqwu3Fe2F3ZovM20x2td6gpudzy7SFjEW0aLdUo9VGb+a+iIVw4LQBx984EQ7CB+RlpKIK3LYieDs2pnoCVxu4XeHSisYXRzdXDzsWLjNai+c0HwZbYuRvhatVK4+37yJA1FR2xD8PNaIBu0Wr+wIENmmPr9hWBC6+OKLnWgH4XOc2JnwBC63iBSHSrOYEWzcWjzsErrMaC+c0nyp26KnaRTta1HBTXm+7dVHgkkJo03AN0Kka7d45TiAyDD1RYq23VRm6Q0bNuDZZ5/FN998g9deew29e/fGyy+/jH79+mHs2LF2t5HwAdG4MxFZYCLlReZhRrBxa/HwasfuhubLSDi93nWNCG7yua5d+knUCvixhHqsykSCqS+StO2GBaGVK1fiV7/6Fa699lp8/vnnOHHiBACgvr4eDz30EN555x3bG0l4T6TvTFjoLTCR9CJr4eddsVdtc1II89oHKdoipmId5VhNSojD8aYW35v6Ik3bbrjo6gMPPIBnnnkGS5YsCYkYGzNmDD7//HNbG+clxcXFyM7ORl5entdN8QXyZCwXlZSJhJ0JD/U9Ke+F9yL7vSgiIU5aSiJG9+9q+9h1orCvkUKVsVbwNhaQx2pORqojY9ZuIq24tWGN0K5duzBu3Liw4ykpKThy5IgdbfIFsRg+r0ck7kz04GkGaFdNmMUtHySt70VDxBSLSDdVxwqRlr7AsCDUq1cv7NmzB1lZWSHHS0pKcNZZZ9nVLsKn+NnMYhbWPfn9RaYFwb/4QRAZN6A7Fv8iB3GS5FlEpt1Ei6k6FvDDO2AEw4LQ7Nmz8bvf/Q7PP/88JEnCd999h48//hhz587FPffc40QbCcJ1/Pwi04Lgf7wM3XZjfLgtiEeaz4lMLG9YIil9gWFBqKioCC0tLRg/fjyOHz+OcePGoV27dpg7dy5uu+02J9pI+IxISvduBT++yJG6IMQiXmhPjY4PMwu1F4J4JJqqacMSORYEw4KQJEm4++67cccdd2DPnj04duwYsrOz0aFDByfaR/iMSEz3bgW/vciRuCAQ7mFkfJhZqL0SxP1uqlZDG5bIwnDUmExCQgKys7MxcuRIEoJiBL2kihRR5TwUERRZ1NQ3onRvraV3w8g5RMeH2ahIr6KBtCI8/UikRU3FOqYSKsYCsVh9Xo9oTKoYafjZd4kIxQ7TiNFziI4Ps5pFLzUzfjRV84g0DVasIwUCAc7SRgAIhs/X19ejU6dOXjfHU2rqGzFm4fvcpIolRfm+npz8hFUnypr6Rk8XhFh2AhWB9a4YfUesnENvfFg594qyqjBBKxrN4lahfvIe0fWbNEKEME6ke4/FBdUOTYGXvkvkBKqPHb5cVs6hNz6saBYjSTPjJdRPkQMJQoQh7EyqGCsLqlLYAxDRTpTkBCqGHaYRp80rVhZqvwUR+BXqp8jAlLP0yy+/jDFjxiA9PR3ffvstAGDx4sV44403bG0c4U/sSPceKyUsVpRVYczC9zFjyacYs/B9LCupiGgnSnICFcMO5143HISdKjNCEJGEYY3Q3/72N9x77734/e9/jwcffDDoTNy5c2csXrwYV111le2NJKKPWAgDZwl7SzdURLQTJTmBimOHaYTMKwThPIY1Qk8++SSWLFmCu+++G/Hx8cHjI0aMQHl5ua2NI6KXWAgDZwl7LQBuGnuW78KARUO0Iy2M2Wvs0LiQ1oYgnMWwRqiiogK5ublhx9u1a4eGhgZbGkVEP7EQBs7Tnswam4VZY7N8s8s36qtFWgoiFonFwI5YwbAg1K9fP2zduhV9+/YNOb527Vqce+65tjWMiH6ifUHVE/b8cL9mnZ/JCZSIJWIlsCNWMSwIzZkzB4WFhfjxxx8RCASwadMmLF++HAsWLMDSpUudaKMnxGpCRbfriEX7gup3YS8WfLUIwgoUKRn9GBaEbrrpJiQmJuKPf/wjjh8/jhkzZiA9PR2PP/44fvGLXzjRRk8oLCxEYWFhMCFTLBBrdcTcws/CHjk/E4Q2tFmIfkyFz1977bX4+uuvcezYMezfvx//+c9/cOONN9rdNsJFqI5YbELOzwShTSwEdsQ6hjVCDzzwAK699lr069cPSUlJSEqiwRANUB2x2MXv5ju3IGdYgkUsBHbEOoYFoddeew333XcfRo0ahV/+8pf4+c9/jm7dujnRNsJFWCYSGdr9RD9+Nt+5ATnDElrQZiG6MWwa27ZtG7Zv345LLrkEjzzyCNLT0zFp0iS88sorOH6csstGKmoTiQztfohoJ1aynBPWoHxO0Yvl6vMbN27EK6+8gtdeew0//vgjjh49alfbfIGT1edr6hvxWeVhHGk8idSkBAzvm+r5SyZXrbZaR4wg3Masaat0by1mLPk07Pjy2RdgdP+udjaRIAgXca36fHJyMhITE5GQkIAffvjB6ulihhVlVShaWQ6lFCoBWDjNW5V8rJtI/Aj5ruhjxbRFkXMEEduYihqrqKjAgw8+iPPOOw8jRozAli1bcP/992P//v12ty8qqalvDBOCACCA1srkpJInZNRFW1eUVXndJN9h1bSlNgvHAZg3cSAJnQQRIxjWCF1wwQUoKyvD0KFDMWvWLFxzzTXo3bu3E22LWipqG8KEIJmWAChCiwDgz0RuftRO2ZHnZXpeJo40nsTCNTvREgAeXrsTnZPaksM0QcQAhgWh8ePH4/nnn0d2drYT7YkJ+nVLhgQwhaE4CaSSJwD4L5GbXyOr7DBt1dQ34uE1OxHwkdBJEIQ7GDaNPfjggyQEWSQtJRELpw2BKkcXpNOLC028BOCvRG5+jqyyIymkltBJEIQ5auobUbq31hfzhBZCGqE5c+bgL3/5C5KTkzFnzhzN7z722GO2NMxrnK41Juel2FxZhyONTUhNSsD5PogaI/yDnxK5+U07pcZqnhcRrZKTZkE/mhwJwgp+1SCzEAqfz8/Px+rVq9G5c2fk5+drfveDDz6wrXF+wMnweYIQQU5p4GUqg5r6RoxZ+H6YoFBSlB81C/eKsqowoVOeuJ2c1CNpwSAIEfwyX4iu35bzCEU7JAgRRCtagkK0wBI6nZzU/bJgEKSVsxO/5OZyLI/QDTfcgMcffxwdO3YMOd7Q0IDbbrsNzz//vPHWEgThe2KhzAArj5aTZkG/mxxjBdLK2Uuk5eYy7Cz94osvorEx3PGpsbERL730ki2NIgjCGaw6L0ZjmQG9PklOiGceT0owlYYtBD85xMcqfg4EiFTsCGBwE2GN0NGjRxEIBBAIBPDDDz+gffv2wc+am5vxzjvvoEePHo40kiAI69CuNxyRPmloYgdMHG9qsXx9PznExyqklXOGSNIgCwtCnTt3hiRJkCQJAwYMCPtckiTcf//9tjaOIPxCpPsP+DE5o9eI9onTan6RBSPSx5+fiTQzTiQRKSWbhAWhDz74AIFAAJdeeilWrlyJLl26BD9LSEhA3759kZ6e7kgjCcJLokGTEk27XruEAtE+cUNro7VgRMP48zOklSOEBaGLL74YQGudsYyMDMTFWbePE4TfiRZNSrTseu0UCoz0iVdq/mgZf34nksw4hP0Ylmb69u2LuLg4HD9+HDt37sT27dtD/hFENBHpGYdlR2AAEeW8yMJup1ajDp1eOIrbNf4iJcOvl0RjIAAhhuHw+UOHDmHWrFlYs2YN83OnMjEThBdEsiaFpT0pKcr31a7XiJnLCfOe3zUBdow/Mq0RhDaGNUK///3vceTIEXz66adITEzE2rVr8eKLL+Kcc87Bv/71LyfaSBCeEWlhoDI87QkA3+x6V5RVYczC9zFjyacYs/B9rCir0vy+U6HmftYEWB1/FBpOEPoY1gi9//77eOONNzBixAjExcWhb9+++MlPfoJOnTphwYIFmDRpkhPtJAjP8LvWgIXfnaPN+L7EqlOrlfHn93FAEH7AsCDU0NAQzBeUmpqKQ4cOYcCAARgyZAg+//xz2xtIEH4gUsJAZfxu0jO7QEeiUGoHZsef38cBQfgBw6axgQMHYteuXQCAnJwcPPvss6iursYzzzyDtLQ02xtIEIRx/G7Ss2Lm8rMpy2/4fRwQhB8wXHT1H//4B06dOoWZM2di8+bNmDhxIg4fPoyEhAS88MILmD59ulNt9QQquhpZUOK5UPxQuZ5HLBRx9Qt+HgcE4RSuVZ+Xw+gzMzPRrVs3K6fyJSQIRQ4UHRN50AJNEIRTuCYIRSvFxcUoLi5Gc3Mzdu/eTYKQz6mpb8SYhe+H+UKUFOXTAksQBBGDiApCQs7Sc+bMEb7wY489JvxdP1NYWIjCwsJgRxL+hqJjCIIgCDMICUJbtmwROpkkSfpfIggHoOgYgiAIwgxCgtAHH3zgdDsIwhKxmmOGIAiCsIbhPEIye/bswd69ezFu3DgkJiYiEAiQRojwlFjNMUMQBEGYx7Ag9P333+PnP/85PvjgA0iShK+//hpnnXUWbrzxRqSmpuLRRx91op0EIUSkJT4kCIIgvMVwQsX//u//Rtu2bVFVVYWkpDP+F9OnT8fatWttbRxBEARBEISTGNYIvfvuu/i///s/9OnTJ+T4Oeecg2+//da2hhEEQRAEQTiNYY1QQ0NDiCZI5vDhw2jXrp0tjSIIgiAIgnADw4LQRRddhJdeein4tyRJaGlpwaJFi5Cfn29r4wiCIAiC8Iaa+kaU7q1FTX2j101xFMOmsUWLFmH8+PH47LPP0NTUhHnz5uHLL7/E4cOHsXHjRifaSBAEQRCEi8RSySLDGqHBgwdj9+7dGDt2LK666io0NDRg6tSp2LJlC/r37+9EGwmCIAiCcIma+sagEAS0Jqq9a9UXtmqG/KRtMqQROnnyJCZOnIhnnnkGd999t1NtIgjCIDX1jaiobUC/bsmUPoAgCEs4XbLIb9omQ4JQ27ZtsX37dqfaQhCECfw2qRAEEdkYKVlkdBPG0zaNG9Dds02cYdPYL3/5S/z97393oi0EQRjEDRU2QRCxhVyyKP50tQheyaIVZVUYs/B9zFjyKcYsfB8ryqp0z62lbfIKw87Sp06dwvPPP4/33nsPw4cPR3Jycsjn0VJ9niAiAadV2ARBxCZ6JYvManb8WCDbsCD0xRdf4PzzzwcA7N69O+QzqjVGEO7ix0mFIIjoQKtkkdlNmB8LZBsWhKgSPUH4Bz9OKgRBRD9WNmF+K5Btuvo8QfiFWI+Y8tukQhBE9GN1E+anAtkkCBERDUVMteKnSYUgiNggWjZhhqPGCMIvUMQUQRCEt6SlJGJ0/64RKwQBJAgREYwfwzAJgiCIyCImBKH/+Z//wXnnnYfs7GzcfvvtCAQC+j8ifI/srKeEIqYIIhQ/lTKIRaj//U/U+wgdOnQITz31FL788ku0bdsW48aNwyeffILRo0d73TSCQ019Iz6rPAxJkjC8bypX5UoRUwShDfnQeQv1f2QQ9YIQ0JoE8scffwTQWi+tR48eHreI4LGirApFK8sh6+wkAAun8SePaHHWIwi78WMpg1iC+j9y8Nw0tn79elx55ZVIT0+HJEl4/fXXw75TXFyMrKwstG/fHqNGjcKmTZuEz9+9e3fMnTsXmZmZSE9Px4QJE9C/f38b74Cwi5r6xhAhCAACAOavKtdUK0eDsx5B2A350HkL9X/k4Lkg1NDQgJycHBQXFzM/X7FiBebMmYP77rsPn3/+OXJycnDZZZfh4MGDwe8MGzYMgwcPDvv33Xffoa6uDm+99RYqKytRXV2N0tJSrF+/3q3bIwxQUdsAlvdWSwA0eRCEQbzwoSN/mDOQD2Pk4LlprKCgAAUFBdzPH3vsMcyePRuzZs0CADzzzDN4++238fzzz6OoqAgAsHXrVu7vX3vtNZx99tno0qULAGDSpEn45JNPMG7cOOb3T5w4gRMnTgT/Pnr0qNFbIkzSr1syJCBMGIqTQJMHQRjEbR868ocJhXwYIwfPBSEtmpqasHnzZsyfPz94LC4uDhMmTMDHH38sdI6MjAyUlpbixx9/RNu2bfHhhx/i17/+Nff7CxYswP3332+57YRx0lISsXDakFAfodMTKk0eBGEct3zoyB+GTST4MMZ6Zn7A54JQbW0tmpub0bNnz5DjPXv2xM6dO4XOccEFF+Dyyy9Hbm4u4uLiMH78eEyePJn7/fnz52POnDnBv48ePYqMjAxzN0AYRp44NlfWQZKA8zWixgiC0MeNrONmC3DGAn7O+k5avFZ8LQjZxYMPPogHH3xQ6Lvt2rVDu3btHG4RoUVaSiKuyPHnxEEQRDhWCnAS3kBavDN47iytRbdu3RAfH48DBw6EHD9w4AB69erlUasIgiAIJbI/TLzU6h1M/jD+h6LazuBrjVBCQgKGDx+OdevWYcqUKQCAlpYWrFu3Drfeequj1y4uLkZxcTGam5sdvQ5BEEQ0EAn+MMQZSIt3Bs81QseOHcPWrVuDkV8VFRXYunUrqqqqAABz5szBkiVL8OKLL2LHjh347W9/i4aGhmAUmVMUFhbiq6++QllZmaPXIQiCiBYop1fkQFq8M0gBjwtvffjhh8jPzw87fv311+OFF14AADz11FP461//iv3792PYsGF44oknMGrUKFfad/ToUaSkpKC+vh6dOnVy5ZoEQRAE4QY19Y1Rq8UTXb89F4T8DglChAgUgkoQBOEvRNdvX/sIEUQkQCGoBEEQkYvnPkJ+pbi4GNnZ2cjLy/O6KYSP4YWgUokBgmBDZTgIv0EaIQ6FhYUoLCwMqtYIggUlkiMIcUh7SvgR0ggRhAWosCJBiEHaU8KvkCBEEBagEFSCEIMS+BF+hUxjBGERSiRHEPpQAj/Cr5BGiAM5SxNGoERyBKENaU8Jv0J5hHSgPEIEQRD2UVPfiM2VdYAEDO+bSoIQ4RiUR4ggCILwHet3H6LIMcJXkGmMIAiCcAWKHCP8CAlCBEEQhCtQ5FhkEGtJL8k0RhAEQbgCRY75n1hMekkaIYIgCMIVoiFyLJq1JbFquiSNEIfi4mIUFxejubnZ66YQBEFEDZGcdyvatSWxWjKIwud1oPB5giAIYtu+Okx5uhQBlVmvpCg/aoSEmvpGjFn4fpjpMlLvUXT9JtMYQRAEQWiwoqwKU4pDhSAg+hy9o8F0aQYyjREEQRAEB9lvhmU68Zujd019IypqG9CvW7Jp4SWSTZdmIUGIIAiCIDiw/GaAVh8hP2lL7PRfSktJ9M19uQGZxgiCIAiCgxzyryQOwOpbLvSNo3SsRnvZBQlCBEEQhK1EU4g5y29mwbQhyMlI9bhlZ6BEldYg0xgHCp8nCIIwTjSGmPvdb4YSVVqDwud1oPB5giAIMaIt/DqSWFFWhbtWfYHmQCAY7RXpAqhVqPo8QRAE4SqxmpDPD/hda+VnSBAiCIIgbIFMNN4Sa9FedkHO0gRBEIQtxGpCPiKyIY0QQRAEYRtkoiEiDRKECIIgCFshEw0RSZBpjCAIgiCImIUEIYIgCIIgYhYShDgUFxcjOzsbeXl5XjeFIAiCIAiHoISKOlBCRYIgCIKIPETXb9IIEQRBEAQRs5AgRBAEQRBEzEKCEEEQBEEQMQsJQgRBEARBxCwkCBEEQRAEEbOQIEQQBEEQRMxCghBBEARBEDELCUIEQRAEQcQsJAgRBEEQhAvU1DeidG8tauobvW4KoYCqzxMEQRCEw6woq8L8VeVoCQBxErBg6hBMz8v0ulkESCPEhWqNEQRBEHZQU98YFIIAoCUA3LXqC9IM+QQShDgUFhbiq6++QllZmddNIQiCICKYitqGoBAk0xwIoLL2uDcNIkIgQYggCIIgHKRft2TESaHH4iUJWd2SvGkQEQIJQgRBEAThIGkpiVgwdQjipVZpKF6S8NDUwUhLSfS4ZQRAztIEQRAE4TjT8zIxbkB3VNYeR1a3JBKCfAQJQgRBEAThAmkpiSQA+RAyjREEQRAEEbOQIEQQBEEQRMxCghBBEARBEDELCUIEQRAEQcQsJAgRBEEQBBGzkCBEEARBEETMQoIQQRAEQRAxCwlCBEEQBEHELCQIEQRBEAQRs5AgRBAEQRBEzEKCEEEQBEEQMQsJQhyKi4uRnZ2NvLw8r5tCEARBEIRDSIFAIOB1I/zM0aNHkZKSgvr6enTq1Mnr5hAEQRAEIYDo+k0aIYIgCIJQUVPfiNK9taipb/S6KYTDtPG6AQRBEAThJ1aUVWH+qnK0BIA4CVgwdQim52V63SzCIUgjRBAEQRCnqalvDApBANASAO5a9QVphqIYEoQIgiAI4jQVtQ1BIUimORBAZe1xbxpEOA4JQgRBEARxmn7dkhEnhR6LlyRkdUvypkGE45AgRBAEQRCnSUtJxIKpQxAvtUpD8ZKEh6YORlpKosctI5yCnKUJgiAIQsH0vEyMG9AdlbXHkdUtiYSgKIcEIYIgCIJQkZaSSAJQjECmMYIgCIIgYhYShAiCIAiCiFlIECIIgiAIImYhQYggCIIgiJiFBCGCIAiCIGIWEoQIgiAIggghlorOUvg8QRAEQRBBYq3oLGmECIIgCIIAEJtFZ0kQIgiCIAgCQGwWnSVBiCAIgiAIALFZdJYEIYIgCIIgAMRm0VlyliYIgiAIIkisFZ2NCY3QI488gvPOOw+DBw/GP/7xD6+bQxAEQRC+Ji0lEaP7d416IQiIAY1QeXk5XnnlFWzevBmBQAD5+fm44oor0LlzZ6+bRhAEQRCEx0S9RmjHjh0YPXo02rdvj8TEROTk5GDt2rVeN4sgCIIgCB/guSC0fv16XHnllUhPT4ckSXj99dfDvlNcXIysrCy0b98eo0aNwqZNm4TPP3jwYHz44Yc4cuQI6urq8OGHH6K6utrGOyAIgiAIIlLx3DTW0NCAnJwc3HDDDZg6dWrY5ytWrMCcOXPwzDPPYNSoUVi8eDEuu+wy7Nq1Cz169AAADBs2DKdOnQr77bvvvovs7GzcfvvtuPTSS5GSkoILLrgA8fHxjt8XQRAEQRD+RwoEAgH9r7mDJElYvXo1pkyZEjw2atQo5OXl4amnngIAtLS0ICMjA7fddhuKiooMX+Omm27C1VdfjUmTJjE/P3HiBE6cOBH8++jRo8jIyEB9fT06depk+HoEQRAEQbjP0aNHkZKSort+e24a06KpqQmbN2/GhAkTgsfi4uIwYcIEfPzxx8LnOXjwIABg165d2LRpEy677DLudxcsWICUlJTgv4yMDPM3QBAEQRCEr/HcNKZFbW0tmpub0bNnz5DjPXv2xM6dO4XPc9VVV6G+vh7JyclYtmwZ2rTh3/b8+fMxZ86c4N+yRoggCIIgiOjD14KQXRjRHrVr1w7t2rVzsDUEQRAEQfgFX5vGunXrhvj4eBw4cCDk+IEDB9CrVy+PWkUQBEEQRLTga0EoISEBw4cPx7p164LHWlpasG7dOowePdrRaxcXFyM7Oxt5eXmOXocgCIIgCO/w3DR27Ngx7NmzJ/h3RUUFtm7dii5duiAzMxNz5szB9ddfjxEjRmDkyJFYvHgxGhoaMGvWLEfbVVhYiMLCwqDXOUEQBEEQ0YfngtBnn32G/Pz84N+yo/L111+PF154AdOnT8ehQ4dw7733Yv/+/Rg2bBjWrl0b5kDtFHJ2gaNHj7pyPYIgCIIgrCOv23pZgnyVR8iP/Oc//6GoMYIgCIKIUPbt24c+ffpwPydBSIeWlhZ899136NixIyRJCh7Py8tDWVlZ2PdFj8th+fv27fM8USOvzW6fz8jvRL6r9R0zn9EztPd3bj9D1rFofYZWziX6W6vPT+tzegcj4x3U+twPzzAQCOCHH35Aeno64uL4LtGem8b8TlxcHFOSjI+PZz40o8c7derk+QvMa5vb5zPyO5Hvan3HzGf0DO39ndvPUOv70fYMrZxL9LdWn5/W5/QORsY7qPW5X56hiI+vr6PG/ExhYaEtx/2A3W0zez4jvxP5rtZ3zHxGz9De37n9DP38/AB722flXKK/tfr8tD6ndzAy3kGtzyPpGZJpzCNEa6AQ/oWeYeRDzzCyoecX+fjhGZJGyCPatWuH++67j7JYRzD0DCMfeoaRDT2/yMcPz5A0QgRBEARBxCykESIIgiAIImYhQYggCIIgiJiFBCGCIAiCIGIWEoQIgiAIgohZSBAiCIIgCCJmIUHIp7z11lsYOHAgzjnnHCxdutTr5hAGufrqq5Gamoqf/vSnXjeFMMG+fftwySWXIDs7G0OHDsVrr73mdZMIgxw5cgQjRozAsGHDMHjwYCxZssTrJhEmOH78OPr27Yu5c+c6dg0Kn/chp06dQnZ2Nj744AOkpKRg+PDhKC0tRdeuXb1uGiHIhx9+iB9++AEvvvgi/vnPf3rdHMIgNTU1OHDgAIYNG4b9+/dj+PDh2L17N5KTk71uGiFIc3MzTpw4gaSkJDQ0NGDw4MH47LPPaB6NMO6++27s2bMHGRkZeOSRRxy5BmmEfMimTZtw3nnnoXfv3ujQoQMKCgrw7rvvet0swgCXXHIJOnbs6HUzCJOkpaVh2LBhAIBevXqhW7duOHz4sLeNIgwRHx+PpKQkAMCJEycQCARA+/7I4uuvv8bOnTtRUFDg6HVIEHKA9evX48orr0R6ejokScLrr78e9p3i4mJkZWWhffv2GDVqFDZt2hT87LvvvkPv3r2Df/fu3RvV1dVuNJ2A9edHeI+dz3Dz5s1obm5GRkaGw60mlNjxDI8cOYKcnBz06dMHd9xxB7p16+ZS6wk7nt/cuXOxYMECx9tKgpADNDQ0ICcnB8XFxczPV6xYgTlz5uC+++7D559/jpycHFx22WU4ePCgyy0lWNDzi3zseoaHDx/Gddddh+eee86NZhMK7HiGnTt3xrZt21BRUYFXXnkFBw4ccKv5MY/V5/fGG29gwIABGDBggPONDRCOAiCwevXqkGMjR44MFBYWBv9ubm4OpKenBxYsWBAIBAKBjRs3BqZMmRL8/He/+13g//2//+dKe4lQzDw/mQ8++CAwbdo0N5pJaGD2Gf7444+Biy66KPDSSy+51VSCg5X3UOa3v/1t4LXXXnOymQQHM8+vqKgo0KdPn0Dfvn0DXbt2DXTq1Clw//33O9I+0gi5TFNTEzZv3owJEyYEj8XFxWHChAn4+OOPAQAjR47EF198gerqahw7dgxr1qzBZZdd5lWTCQUiz4/wNyLPMBAIYObMmbj00kvxq1/9yqumEhxEnuGBAwfwww8/AADq6+uxfv16DBw40JP2EqGIPL8FCxZg3759qKysxCOPPILZs2fj3nvvdaQ9bRw5K8GltrYWzc3N6NmzZ8jxnj17YufOnQCANm3a4NFHH0V+fj5aWlowb948inTwCSLPDwAmTJiAbdu2oaGhAX369MFrr72G0aNHu91cgoHIM9y4cSNWrFiBoUOHBn0bXn75ZQwZMsTt5hIMRJ7ht99+i1//+tdBJ+nbbruNnp9PEJ1H3YIEIZ8yefJkTJ482etmECZ57733vG4CYYGxY8eipaXF62YQFhg5ciS2bt3qdTMIG5g5c6aj5yfTmMt069YN8fHxYU57Bw4cQK9evTxqFSEKPb/Ih55h5EPPMLLx2/MjQchlEhISMHz4cKxbty54rKWlBevWrSPTSQRAzy/yoWcY+dAzjGz89vzINOYAx44dw549e4J/V1RUYOvWrejSpQsyMzMxZ84cXH/99RgxYgRGjhyJxYsXo6GhAbNmzfKw1YQMPb/Ih55h5EPPMLKJqOfnSCxajPPBBx8EAIT9u/7664PfefLJJwOZmZmBhISEwMiRIwOffPKJdw0mQqDnF/nQM4x86BlGNpH0/KjWGEEQBEEQMQv5CBEEQRAEEbOQIEQQBEEQRMxCghBBEARBEDELCUIEQRAEQcQsJAgRBEEQBBGzkCBEEARBEETMQoIQQRAEQRAxCwlCBEEQBEHELCQIEQRBEAQRs5AgRBCEa3z44YeQJAlHjhxx/dqSJEGSJHTu3NnyuUTu44UXXrB8rUsuuSTY7q1bt1o6F0EQbEgQIgjCES655BL8/ve/Dzl24YUXoqamBikpKZ60admyZdi9e7cr15o+fXrItf70pz9h2LBhhs6xatUqbNq0yeaWEQShhKrPEwThGgkJCejVq5dn1+/cuTN69Ohh6RwnT54U+l5iYiISExMtXatLly44evSopXMQBKENaYQIgrCdmTNn4qOPPsLjjz8eNO1UVlaGmZRk89Fbb72FgQMHIikpCT/96U9x/PhxvPjii8jKykJqaipuv/12NDc3B89/4sQJzJ07F71790ZycjJGjRqFDz/80FRb//a3v6F///5ISEjAwIED8fLLL4d8LkkS/va3v2Hy5MlITk7Ggw8+GPxs48aNGDp0KNq3b48LLrgAX3zxRfAzpWnshRdewP33349t27YF++OFF15AIBDAn/70J2RmZqJdu3ZIT0/H7bffbuo+CIIwB2mECIKwnccffxy7d+/G4MGD8ec//xkA0L17d1RWVoZ99/jx43jiiSfw6quv4ocffsDUqVNx9dVXo3PnznjnnXfwzTffYNq0aRgzZgymT58OALj11lvx1Vdf4dVXX0V6ejpWr16NiRMnory8HOecc45wO1evXo3f/e53WLx4MSZMmIC33noLs2bNQp8+fZCfnx/83p/+9CcsXLgQixcvRps2bfDNN98AAO644w48/vjj6NWrF+666y5ceeWV2L17N9q2bRtynenTp+OLL77A2rVr8d577wEAUlJSsHLlSvzP//wPXn31VZx33nnYv38/tm3bZqivCYKwBglCBEHYTkpKChISEpCUlKRrCjt58mRQKwMAP/3pT/Hyyy/jwIED6NChA7Kzs5Gfn48PPvgA06dPR1VVFZYtW4aqqiqkp6cDAObOnYu1a9di2bJleOihh4Tb+cgjj2DmzJm45ZZbAABz5szBJ598gkceeSREEJoxYwZmzZoV/FsWhO677z785Cc/AQC8+OKL6NOnD1avXo2f//znIddJTExEhw4d0KZNm5D+qKqqQq9evTBhwgS0bdsWmZmZGDlypHD7CYKwDpnGCILwlKSkpKAQBAA9e/ZEVlYWOnToEHLs4MGDAIDy8nI0NzdjwIAB6NChQ/DfRx99hL179xq69o4dOzBmzJiQY2PGjMGOHTtCjo0YMYL5+9GjRwf/v0uXLhg4cGDYb7X42c9+hsbGRpx11lmYPXs2Vq9ejVOnThm4A4IgrEIaIYIgPEVtRpIkiXmspaUFAHDs2DHEx8dj8+bNiI+PD/meUniyk+TkZEfOm5GRgV27duG9997Dv//9b9xyyy3461//io8++iisDwiCcAbSCBEE4QgJCQkhDs52kZubi+bmZhw8eBBnn312yD+jEWnnnnsuNm7cGHJs48aNyM7OFvr9J598Evz/uro67N69G+eeey7zu7z+SExMxJVXXoknnngCH374IT7++GOUl5cbuAuCIKxAGiGCIBwhKysLn376KSorK9GhQwd06dLFlvMOGDAA1157La677jo8+uijyM3NxaFDh7Bu3ToMHToUkyZNEj7XHXfcgZ///OfIzc3FhAkT8Oabb2LVqlVBh2Y9/vznP6Nr167o2bMn7r77bnTr1g1TpkxhfjcrKwsVFRXYunUr+vTpg44dO2L58uVobm7GqFGjkJSUhH/84x9ITExE3759he+BIAhrkEaIIAhHmDt3LuLj45GdnY3u3bujqqrKtnMvW7YM1113Hf7whz9g4MCBmDJlCsrKypCZmWnoPFOmTMHjjz+ORx55BOeddx6effZZLFu2DJdcconQ7xcuXIjf/e53GD58OPbv348333wTCQkJzO9OmzYNEydORH5+Prp3747ly5ejc+fOWLJkCcaMGYOhQ4fivffew5tvvomuXbsaug+CIMwjBQKBgNeNIAiCcBpJkrB69WquxsavVFZWol+/ftiyZYvhzNQEQehDGiGCIGKGa665Bn369PG6GcIUFBTgvPPO87oZBBHVkEaIIIiYYM+ePQCA+Ph49OvXz+PWiFFdXY3GxkYAQGZmJtfsRhCEeUgQIgiCIAgiZiHTGEEQBEEQMQsJQgRBEARBxCwkCBEEQRAEEbOQIEQQBEEQRMxCghBBEARBEDELCUIEQRAEQcQsJAgRBEEQBBGzkCBEEARBEETM8v8BQsb+6FnfUSkAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sa = rebound.SimulationArchive(filename)\n", "sim0 = sa[0]\n", "P = sim0.particles[1].P\n", "E0 = sim.energy()\n", "\n", "Eerr = np.zeros(Nout)\n", "for i, sim in enumerate(sa):\n", " E = sim.energy()\n", " Eerr[i] = np.abs((E-E0)/E0)\n", "\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "\n", "fig, ax = plt.subplots()\n", "ax.plot(times/sim0.particles[1].P, Eerr, '.')\n", "ax.set_xscale('log'); ax.set_yscale('log')\n", "ax.set_xlabel('time [orbits]'); ax.set_ylabel('relative energy error');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One can also add manual snapshots when using automated intervals." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.6" } }, "nbformat": 4, "nbformat_minor": 1 }