diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9030923 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.ipynb linguist-vendored \ No newline at end of file diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 8ed7835..2108b98 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -14,7 +14,7 @@ permissions: jobs: build: - + name: Build and test runs-on: ubuntu-latest defaults: @@ -36,7 +36,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install flake8 pytest + pip install flake8 pytest pyomo==6.4.1 if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - name: Install CBC run: | @@ -56,3 +56,7 @@ jobs: - name: Test with pytest run: | pytest tests/ + + - name: Open Journals PDF Generator + uses: openjournals/openjournals-draft-action@v.1.0 + diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml new file mode 100644 index 0000000..51a805e --- /dev/null +++ b/.github/workflows/draft-pdf.yml @@ -0,0 +1,23 @@ +on: [push] + +jobs: + paper: + runs-on: ubuntu-latest + name: Paper Draft + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Build draft PDF + uses: openjournals/openjournals-draft-action@master + with: + journal: joss + # This should be the path to the paper within your repo. + paper-path: paper/paper.md + - name: Upload + uses: actions/upload-artifact@v1 + with: + name: paper + # This is the output path where Pandoc will write the compiled + # PDF. Note, this should be the same directory as the input + # paper.md + path: paper/paper.pdf \ No newline at end of file diff --git a/.readthedocs.yaml b/.readthedocs.yaml index faafe06..277d6f9 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -4,6 +4,9 @@ build: os: "ubuntu-20.04" tools: python: "3.9" + jobs: + post_install: + - pip install pyomo==6.4.1 sphinx: configuration: docs/source/conf.py @@ -13,4 +16,4 @@ python: - method: pip path: . extra_requirements: - - doc \ No newline at end of file + - doc diff --git a/CHANGELOG.md b/CHANGELOG.md index 9942e36..69e6984 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] + +## [0.3.0] - 2024-04-04 +### Added +- Adds tests and examples +- Adds more objectives and methods in the `equations` module. +- Adds more helper functions in `utils`. + +## Fixed +- Updates the `README` to instruct users on current installation procedures. + ## [0.2.1] - 2022-11-01 ### Fixed - Fixes a bug where storage constraints were not initialized in the `DispatchModel`. diff --git a/README.md b/README.md index b516fdd..603de76 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Open source multi-objective energy system framework `osier` is available through [PyPI](https://pypi.org/project/osier/). It may be installed with ```bash -pip install osier +python -m pip install osier pyomo==6.4.1 ``` or by cloning this repository and building from source: @@ -24,6 +24,17 @@ cd osier pip install . # to also install the documentation dependencies pip install .[doc] + +# followed by +pip install pyomo==6.4.1 +``` + + +```{note} +Although `pyomo` is a dependency, the current version of `pyomo` (6.7.1, as of 2/29/24) has a bug +that prints erroneous errors during an `osier` simulation. Therefore, users are recommended to +install a specific version of `pyomo` after the main installation of `osier`. There is an open issue [#50](https://github.com/arfc/osier/issues/50) +related to this concern. ``` ## Documentation @@ -49,4 +60,4 @@ Contributions to `osier` are welcome. For details on how to make bug reports, pu ## Credits -Some of the documentation infrastructure was inspired by and borrowed from the [`watts` documentation](https://watts.readthedocs.io/en/latest/index.html). \ No newline at end of file +Some of the documentation infrastructure was inspired by and borrowed from the [`watts` documentation](https://watts.readthedocs.io/en/latest/index.html). diff --git a/docs/source/conf.py b/docs/source/conf.py index e1f6452..12c05b8 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -33,6 +33,8 @@ extensions = [ "myst_parser", "sphinx.ext.napoleon", + "sphinx.ext.duration", + "sphinx.ext.autosectionlabel", "sphinx.ext.autodoc", "sphinx.ext.autosummary", "sphinx.ext.intersphinx", @@ -41,6 +43,7 @@ "sphinx_design", "sphinx.ext.mathjax", "sphinx.ext.coverage", + "nbsphinx", ] # Add any paths that contain templates here, relative to this directory. diff --git a/docs/source/examples/capacity_expansion_tutorial.ipynb b/docs/source/examples/capacity_expansion_tutorial.ipynb new file mode 100644 index 0000000..2c13ea8 --- /dev/null +++ b/docs/source/examples/capacity_expansion_tutorial.ipynb @@ -0,0 +1,944 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Capacity Expansion Tutorial\n", + "\n", + "In this tutorial, we will use `osier` to optimize the capacity for a test energy system using \n", + "`osier`'s `CapacityExpansion` model. \n", + "\n", + "1. First we will size a natural gas plant and battery storage for a test system while minimizing total cost.\n", + "\n", + "2. Next, we will replace the natural gas plant with a wind turbine while still only minimizing for total cost.\n", + "\n", + "3. Lastly, we reintroduce the natural gas plant and co-optimize two objectives, total cost and lifecycle carbon emissions.\n", + "\n", + "\n", + "**Important Caveat**\n", + "\n", + "For simplicity and the sake of time, this notebook specifies a certain number of generations before the model terminates. Therefore it is unlikely that the capacity expansion models shown in this notebook are fully converged. These results should be used for instructional purposes only!" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Solver set: cbc\n" + ] + } + ], + "source": [ + "# basic imports\n", + "import pandas as pd \n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from unyt import kW, minute, hour, day, MW\n", + "import sys\n", + "\n", + "# osier imports\n", + "from osier import CapacityExpansion\n", + "import osier.tech_library as lib\n", + "\n", + "# pymoo imports\n", + "from pymoo.algorithms.moo.nsga2 import NSGA2\n", + "from pymoo.optimize import minimize\n", + "\n", + "\n", + "# set the solver based on operating system -- assumes glpk or cbc is installed.\n", + "if \"win32\" in sys.platform:\n", + " solver = 'cplex'\n", + "elif \"linux\" in sys.platform:\n", + " solver = \"cbc\"\n", + "else:\n", + " solver = \"cbc\"\n", + "\n", + "print(f\"Solver set: {solver}\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As before, `osier` needs two fundamental things in order to run the model\n", + "\n", + "1. A technology set\n", + "2. A net demand profile\n", + "\n", + "Let's create both of these, first. This time, we'll also create a dummy \"wind\" profile and a wind technology to use in the latter two examples.\n", + "We'll also borrow some code from the dispatch tutorial.\n", + "\n", + "## Creating the demand profile" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "n_hours = 24 # hours per day\n", + "n_days = 2 # days to model\n", + "N = n_hours*n_days # total number of time steps\n", + "phase_shift = 0 # horizontal shift [radians]\n", + "base_shift = 2 # vertical shift [units of demand]\n", + "hours = np.linspace(0,N,N)\n", + "total_demand = 185 # [MWh], sets the total demand [units of energy]\n", + "\n", + "demand = (np.sin((hours*np.pi/n_hours*2+phase_shift))*-1+np.ones(N)*(base_shift+1))\n", + "\n", + "np.random.seed(1234) # sets the seed for repeatability\n", + "\n", + "noise = np.random.random(N)\n", + "demand += noise\n", + "\n", + "demand = demand/demand.sum() * total_demand # rescale\n", + "\n", + "with plt.style.context(\"dark_background\"):\n", + " plt.plot(hours, demand, color='cyan')\n", + " plt.ylabel('Demand [MW]')\n", + " plt.xlabel('Time [hr]')\n", + " plt.grid(alpha=0.2)\n", + " plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating the \"wind\" profile\n", + "\n", + "Wind speeds follow a Weibull distribution \n", + "\n", + "$f(v) = \\left(\\frac{k}{\\lambda}\\right)\\left(\\frac{v}{\\lambda}\\right)^{k-1}e^{-\\left(\\frac{v}{\\lambda}\\right)^k}$\n", + "\n", + "Where $v$ is our random variable (velocity)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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3FyJgoqFexQqburssqLgmgQDx3KzFTgccz13W9yE3S2VqxWmVy8vIpdE0VFAsXALx2qzHpMQ8nX7/WRMbqRGPyolSgqJm2Qcy81OzIOnI27cJMCWm6wDinv0UGa2DodiboRbOOLmQ7v8CNgGdAOO96VGotSQuEnGsdzsIG5V90rcBNByk7W4qaur4+9//zu33HILp556Kl27dvWyXiIIKOZGuEVrcQPGNQVyTQl3kLhJprXlBtwXNwF2S2Utbi677DJWr17N17/+dV588UV2797Niy++yI033shJJ51E585Zh++IsKCYG+EWzjBwiRvhFRI3yTjiJtFy43bESCm4pf7nf/6Hf//3f+eoo45i2LBhXHHFFaxbt44ZM2awZMkSdu/ezaJFi7ysqyg2irkRbiHLjfAaR9zkGzBbZ5cVBdckGDhuKVlusqempobf/va3XH755Xz+859n9uzZNDc387nPfc7t+gk/UcyNcAvHcrMmYd1bmODiSmB40WskSg23LDe9gUjBtfGfVJabDhRzk7MvaeTIkZx22mmceuqpnHrqqfTu3ZvXXnuNX/ziFyxZssSLOgq/UMyNcINBmIvgIWBdwvoDmIR+n8JYb9YXv2qihChU3DgCIAqUA3sLrpG/JAYUO/+LRku15aGHHmL9+vW89dZbnHfeeaxYsYLzzz+fPn36cOaZZzJnzhxee+219g+UwLRp03jmmWeoqanBsizOOeecjNufd955vPDCC2zbto09e/bw2muvccYZZ+T0nSIHZLkRbuC4pKppmx1VrinhFoWKm4PAfnu5ouDa+I/XAcXdiJtHAmi5yVrcXHzxxcRiMWbPns1NN93E7bffzj//+U9isXzyXBvKyspYtmwZV199dVbbn3zyyfzv//4vZ511FpMnT2bx4sU8++yzTJw4Me86iAzkG1DcA5O7RAhIHW/j4IgbTaIpCqVQcQOl84AWId4eXrmlyhKWAyhusnZLHXvssS2uqGuvvZbu3bvzyiuvsGTJEl566SXefvttLMvK6csXLVqUUxDyNddck/T+Jz/5Ceeccw5f/OIXqaqqSrlP165d6datW8v78vJyAKLRKNGou/OGOsd0+7h+ESszwjWyP0Ik2r4T2tpnYcUsiEKkT4TI9uI6rkut/cNGuvaPjbEfgNbQ5jPrDQsLCyZApDxCpKEUgh38oSP3fytqYVWY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O+88a9y4cdbvfvc7q6amxjrssMN8r3vYX88//7x1ySWXWMcee6w1fvx469lnn7Wqq6utnj17qv2L8PrXf/1X68wzz7SOOuoo66ijjrJuvfVW6+DBg9axxx6rti/ya8qUKdbatWutqqoqa/78+S3rdQ4C8/K9AqF//eMf/7DuvffepHXvvfeeNXv2bN/rVuqvVOJm8+bN1g033NDyvmvXrtbu3butb33rW77Xt9Re/fv3tyzLsqZNm6b29+m1c+dO69JLL1XbF/FVVlZmrV692jr99NOtxYsXJ4kbnYNgvOSWKpAuXbowefJkXnjhhaT1L7zwAieeeKJPteq4jBw5ksrKyqTz0djYyJIlS3Q+PKB3794A7Nq1C1D7F5NoNMqFF15IWVkZr7/+utq+iPz617/mueee48UXX0xar3MQHDrkxJlu0r9/fzp37kxtbW3S+traWgYOHOhTrTouTpunOh/Dhw/3o0olzbx583j55ZdZuXIloPYvBscddxyvv/463bt3Z9++fZx33nmsWrWKz3zmM4Da3msuvPBCjj/+eE444YQ2n6n/BweJG5ewLCvpfSQSabNOFA+dD++55557GD9+fMrgebW/d6xevZqJEydSUVHBl7/8ZR5++GFOOeWUls/V9t4xZMgQ/vM//5Mzzjgj4zQLOgf+I7dUgezYsYNDhw61sdIMGDCgjXoX3rN161YAnQ+Pueuuuzj77LM57bTTqKmpaVmv9veepqYmPvroI9566y1+/OMfs2zZMr7//e+r7YvA5MmTOeKII3jrrbdoamqiqamJU089le9973s0NTW1tLPOgf9I3BRIU1MTb731FtOnT09aP336dF577TWfatVxWbduHVu2bEk6H126dOGUU07R+XCJu+++my996Ut89rOfpbq6OukztX/xiUQidOvWTW1fBF588UWOO+44Jk6c2PJ68803efTRR5k4cSJr167VOQgQvkc1h/3lDAWfMWOGdcwxx1jz5s2z6uvrrWHDhvlet1J8lZWVWRMmTLAmTJhgWZZl/eAHP7AmTJjQMvT+hhtusHbv3m2de+651rhx46xHH31UQzFdev3617+2du/ebZ188snWEUcc0fLq3r17yzZqf+9et912mzV16lRr+PDh1nHHHWfdeuut1qFDh6zPfe5zanufXq1HS+kcBOblewVK4nXllVda69atsw4cOGAtXbo0aWisXu6+TjnlFCsVCxcubNnm5ptvtjZv3mzt37/feumll6xx48b5Xu9SeKXjkksuSdpO7e/N6ze/+U3Ldaa2ttb63//93xZho7b359Va3OgcBOMVsReEEEIIIUoCxdwIIYQQoqSQuBFCCCFESSFxI4QQQoiSQuJGCCGEECWFxI0QQgghSgqJGyGEEEKUFBI3QgghhCgpJG6EEEIIUVJI3Aghis7NN9/MO++8U/TvPeWUU7AsC8uy+NOf/tSyfvHixcyfPz/n4w0fPrzleH78P0KI1EjcCCFcxbnZp3stXLiQO+64g9NPP923Oo4ZM4ZvfvObBR9n48aNDBw4kDvuuKPwSgkhXKOz3xUQQpQWAwcObFm+8MIL+dnPfsbRRx/dsm7//v00NDTQ0NDgR/UA2LZtG3v27CnoGJ07d+bQoUPU1tayb98+l2omhHADWW6EEK5SW1vb8tqzZw+WZSWt27t3bxu31MKFC/nTn/7EzJkz2bp1K7t37+amm26iU6dO/PKXv2Tnzp1s3LiRGTNmJH3XoEGD+P3vf8+uXbvYsWMHTz31FMOHD8+r3tFolF/84hfs3LmTLVu2cPPNNyd9blkW3/72t3nqqafYt28fN954Y17fI4TwHokbIUQg+OxnP8ugQYM4+eSTufbaa7nlllv485//zO7du/nUpz7F/fffz/3338+QIUMA6NGjB4sXL2bfvn2cfPLJTJ06lX379rFo0SK6dOmS8/dfcsklNDQ08KlPfYobbriBm266ic997nNJ29xyyy08/fTTfOITn2DBggWu/N9CCG/wfWpyvfTSqzRfl1xyibV79+4262+++WbrnXfeaXm/cOFCa926dVYkEmlZt2rVKmvJkiUt76PRqFVfX29deOGFFmDNmDHDWrVqVdJxu3TpYjU0NFjTp09PWZ9TTjnFsizL6t27d9L6xYsXW3//+9+T1r3xxhvWnDlzWt5blmXNmzcv5XFb/z966aWXvy9ZboQQgWDlypVYltXyvra2lhUrVrS8j8Vi7Ny5kwEDBgAwefJkRo8eTX19fctr165ddO/enSOPPDLn71++fHnS+y1btrR8l8PSpUtzPq4QovgooFgIEQiampqS3luWlXJdNGqeyaLRKG+99RYXXXRRm2Nt377dle93vsvBzyBoIUT2SNwIIULJ22+/zYUXXsi2bduor6/3uzpCiAAht5QQIpQ8+uij7Nixg6effpqpU6cyYsQITj75ZH71q18xePBgv6snhPARiRshRCjZv38/J598Mhs2bODJJ59k1apVLFiwgB49erB3716/qyeE8JEIJrJYCCFKnlNOOYWXXnqJioqKgpP4JXLzzTdz7rnnMmnSJNeOKYTIH1luhBAdjk2bNvHYY48VfJyhQ4dSX1/Pj3/8YxdqJYRwC1luhBAdhu7du7fE4+zbt4/a2tqCjtepUydGjBgBwMGDB9m0aVOhVRRCuIDEjRBCCCFKCrmlhBBCCFFSSNwIIYQQoqSQuBFCCCFESSFxI4QQQoiSQuJGCCGEECWFxI0QQgghSgqJGyGEEEKUFBI3QgghhCgp/j/bBEWJtfT/IwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "np.random.seed(123)\n", + "shape_factor = 2.5\n", + "wind_speed = np.random.weibull(a=shape_factor,size=N)\n", + "\n", + "with plt.style.context('dark_background'):\n", + " plt.plot(wind_speed, color='lime')\n", + " plt.grid(alpha=0.2)\n", + " plt.ylabel('Demand [MW]')\n", + " plt.xlabel('Time [hr]')\n", + " plt.show()\n", + " " + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`osier.CapacityExpansion` will normalize the wind and solar profiles and rescale the maximum values to the rated capacity of the installed technology (for each \"individual\" portfolio tested). Just for fun, let's plot the \"net demand\" if this wind speed were the true value.\n", + "\n", + "Also note that the weibull distribution is related to wind *speed*, not energy production. For simplicity, we will assume they're equal." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGwCAYAAABhDIVPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAADIX0lEQVR4nOydd1hT1xvHvwlDpoggoKiIIm5QUWud4NZq1Trbukdrh9rW+nO11dY6OtSq1S53h3vUrVVx74F7IA6UpSgyRFZ4f38cblgBcpOb3CScz/OcJ8m995z75uTm5s173qEAQOBwOBwOh8MxE5RyC8DhcDgcDocjBq68cDgcDofDMSu48sLhcDgcDses4MoLh8PhcDgcs4IrLxwOh8PhcMwKrrxwOBwOh8MxK7jywuFwOBwOx6ywllsAfalUqRKSk5PlFoPD4XA4HI4InJ2dER0drVNfs1ZeKlWqhKioKLnF4HA4HA6HowPe3t46KTBmrbwIFhdvb2/JrS9KpRIBAQG4cuUKsrOzJR2bUzR83uWBz7s88Hk3PnzO5aHgvDs7OyMqKkrn326zVl4EkpOTDaK8vHz5EsnJyfwCNyJ83uWBz7s88Hk3PnzO5UHqeecOuxwOh8PhcMwKrrxwOBwOh8MxK7jywuFwOBwOx6ywCJ+XknBwcIC7uzsUCoXWfZRKJby8vODj48PXRY2IseadiBAfH4/U1FSDnYPD4XA4hsGilReFQoHhw4cjODhYp/62trbIyMiQVihOiRhz3g8fPoyVK1eCiIxyPg6Hw+Hoj0UrL8OHD0fbtm2xfv163Lp1C1lZWaL629vb49WrVwaSjlMUxph3a2tr1K5dG/379wcArFixwqDn43A4HI50WKzy4ujoiODgYKxfvx67du3SaQwHBwe+rCADxpr3iIgIAMCAAQOwbt06/llzOByOmWCxDrtubm4AgFu3bsksCceUEa4Pd3d3mSXhcDgcjrZYrPIiOOeKXSrilC6E60OMMzeHw+Fw5MVilRcOh8PhcDiWCVdeOBwOh8PhmBVceeFYPPfv38f48ePlFoPD4XA4EsGVFxNEyDsyadKkfNt79uwpOh+Jtj/c9+/fBxGBiJCamor79+9j/fr1CAkJEXU+joljYwNw/x4Oh2PmcOXFRHn16hUmTZqEcuXKGe2cX375Jby8vFCrVi0MGTIEL168wIEDBzB16lSjycAxAEol0KED8OefwIsXwKVLbBuHw+GYKaXyDubg4FBkK1OmjNbH2tnZlXisrhw4cACxsbGYMmVKsce9/vrrOHLkCFJTUxEZGYmFCxeqzxsaGopq1arhp59+UltViiM5ORlxcXF49OgRjh07hvfffx8zZ87EN998A39/f/VxderUwa5du5CcnIzY2FisWbNGHZounHfRokVYsGABnj9/jtjYWIwePRoODg5YsWIFkpKScPfuXXTp0kXdR6lUYtmyZbh37x7i4+Nx69YtjBs3Lp98K1euxNatWzFhwgRER0cjPj4eP//8M6ytc9MVVahQAdu3b0dqairu3buHd955p+TJtlT8/YFZs4AHD4D//gMGDQIcHIDAQLaPw+FwzJRSqby8fPmyyLZ58+Z8xz558qTIY/fs2ZPv2AcPHhQ6RldUKhWmTp2KsWPHwtvbW+Mx9evXx759+7BlyxYEBARgwIABaNWqFX7++WcAwFtvvYVHjx6pLSpeXl6i5Vi4cCEUCgV69uwJAPDy8sKRI0cQFhaGJk2aoEuXLvD09MSGDRvy9Rs6dCji4+PRrFkzLF68GL/88gs2btyIkydPonHjxti3bx/+/PNP2NvbA2DKy+PHj9G/f38EBQXhm2++wezZs9GvX79844aEhKBGjRoICQnB0KFDMWzYMAwbNky9f9WqVahWrRratWuHvn374sMPP4SHh4fo9222lCsHvP8+cOoUcPs2MHUqUKUK8Pw5sGQJcO0aOy4oSFYxORwOR1/IXJuzszMRETk7Oxfa5+PjQ2vWrCEfH59C+4pj586d6uMcHBwoJSWlyGNDQ0PzjfvkyZNCx+jyvlauXElbt24lAHTy5ElatmwZAaCePXvmG3P16tX066+/5uvbsmVLysrKojJlyhAAun//Po0fP77EcxZ3XExMDC1ZsoQA0Ndff0179+7Nt9/b25uIiGrWrEkAKDQ0lI4eParer1QqKTk5mVavXq3e5unpSUREr732WqHzOTg4EAD6+eefaePGjfnm5f79+6RUKtXb1q9fT2vXriUAVLNmTSIiatasmXp/rVq1iIiKfG/FXSdm1WrUIKxbR3j1itRmtsxMwvbthD59CLa27LiFC9m++fPz9VcqldS4ceN8c8ub4Rufdz7npaUVnPfifr+1aRZbHqA4HB0di9ynUqnyvS7uX3vBqsfVqlXTSy5NTJo0CYcOHcK8efMK7QsKCoKfnx/effdd9TaFQgErKyv4+vpKll1YoVCol5yCgoIQEhKC5OTkQsfVqFED4eHhAIArV66ot2dnZ+PZs2e4evWqeltcXByA/PP7/vvvY9SoUfDx8YG9vT1sbW0RFhaW7xzXr1/PN+8xMTFo0KABALaclZmZifPnz6v33759GwkJCbq+dfNh1ixgwAD2/MoVYNUq4J9/gJx5VnPhAnvklhdOaaRxY9CzZ3JLwZGAUqm8iKlhY6hjteXYsWPYt28fZs+ejVWrVuXbp1Qq8dtvv2HRokWF+kVGRkpy/vLly6NChQq4f/+++pw7duwoFAkFMEVCIDMzM98+ZgjILNgFyhzH0X79+mHBggWYMGECwsLC8OTJE0ycOBGvvfZavuM1jSuMIWTJLZUVogMD2eOgQcDffxd9nKC8NGrEoo5K41xxSic1agCnT4Nu3QLyLDVzzJNSqbyYG5MnT0ZYWBju3LmTb/vFixdRr149dYFBTWRkZMDKykrnc48fPx7Z2dnYtm2b+px9+vTBgwcPClmp9KF169Y4efIkfvnlF3Vhxho1aoga4+bNm7CxsUGTJk1w7tw5AIC/vz9cXV0lk9MksbUF/PzY89DQ4o+9dQtITQWcnZnT7u3bhpePwzEFWrdmqQIaNECWs7Pc0nD0pFQ67Job165dw99//42xY8fm2/7dd9/h9ddfx88//4zAwED4+fmhR48e+SwxDx48QJs2bVCpUqV8EUGacHZ2hqenJypXrozWrVvjt99+wxdffIFp06apFaQlS5agfPnyWLt2LZo2bQpfX1907NgRy5cvV1tAdOHu3bto0qQJOnXqBD8/P3zzzTdo2rSpqDHu3LmDPXv24I8//kCzZs3QuHFjLFu2zPKrRdeqBVhbszDo6Ojij1WpWKg0wJeOOKWLJk3UT9NE/jHimB5ceTETvvzyy0LFA69evYq2bduiZs2aOHbsGC5duoSZM2fmW7756quvUK1aNURERCA+Pr7Yc8ycOROxsbG4e/cu/vzzT7i4uKB9+/b4/vvv1cfExMSgZcuWsLKywr59+3Dt2jUsXLgQiYmJhXyAxPDrr79iy5YtWL9+PQ4fPgw3NzcsXbpU9DjDhw/Ho0ePcOTIEWzZsgW///47njx5orNcZkHduuzx+nXtjheWjvLczDkciyePsv5KsFRyzBrZvZB1bbpGG2nbhKgX3ozbjDnvFhFt9M03LILot9+0O37IEHb8kSPqbTwCQ57G591Izdo6XySe+4YNfM6N3KSONuKWFw7H3KlXjz2KtbwITrscjqVTrx6QJ6kot7yYP1x54XDMHbHKS0GnXQ7H0hGWjGJjAQBpfn4gGcXh6A9XXjgcc6ZMmdxII22VF5UKEPLncKddTmlA8O9atw7IzITK2RkoInM5xzzgyguHY87UqgVYWbH0/zn/KrWCJ6vjlCaE6/zkSUBIOZGT3JJjnnDlhcMxZ8QuGQlw5YVTWrCxyU3ieOFCbn2v+vXlk4mjN7IqL9OnT1eXYRFa3jBfDodTAvoqL9xpl2Pp1K/PllcTEoB796DIKVNC3PJi1sieYffatWvo0KGD+rWUWVs5HItHV+Xl5k3mtFu2LFCzJnD3rvSycTimgGBdFGqeCZYX4bvDMUtkV16ysrLURfo4HI5IdFVeBKfdFi3YzZ0rLxxLRXDWFayNgvJSpw7zF+N/mM0S2ZWXmjVrIioqCunp6Thz5gymTp2qLgJYEFtbW5QpU0b92jmnPoVSqSyUml6fVPUcw7By5UqUK1cOvXv3lluUQmi6hkwdsrMD5aQ5V9y8CYVI+bMvXmTKS9OmUG7caJZzYO4Ic87n3XBk5ygviosXoVAqoYiMBKWmItvBAYpataC4dUtmCUsHBa91fa95WZWXM2fOYMiQIbhz5w48PT3xxRdf4OTJk6hXrx6eP39e6PgpU6ZgxowZhbYHBATg5cuX+bZ5eXnB1tYW9vb2cHBw0Ek+uzxJjYzJb7/9hkGDBgFgVZQTEhJw7do1bNy4EX/++afZVk22traGlZVViZ+HMefd3t4etra2qFOnjtkVcEytVQu3lEpYvXiBgEqVoKhUSVT/Z/HxeAjAqU0b1G7YEP45OV/0KfPAEYdSqeTzbkCybWxwOSAABKBuairKNGwIpVKJ+9HReObnh2o9esBVpvt8XtKqVsWrmjVR7uBBWKoHWsFr3dHRUa/xZFVe9u7dq35+7do1nDp1ChERERg6dCgWLFhQ6Pg5c+Zg/vz56tfOzs6IiorClStXkJycnO9YHx8fZGRk4NWrV3oV5pOjqF9WVhb27NmD4cOHw8rKCp6enujSpQu+//579OjRA2+++aZZ+gZlZWVBpVJpNafGmvdXr14hIyMDN2/exMOHD41yTqmgnCUj1eXLuCzkbRHTPysLmDEDKTVr4tLlywCAsLAw/iNqRIR/n3zeDQMFBYFsbIBnz3Bjzx4owOa83LVrgJ8f7js64qEO3x2pyf79dyAoCIqRI6FYtUpucQxCwWvdWc/K3iZlq0xNTcXVq1dRs2ZNjfszMjKQnJycrwFMi9PUzJn09HTExcUhOjoaly5dwpw5c9CzZ09069YNw4YNAwCULVsWv/32G+Li4pCYmIiDBw8iICBAPcb06dNx6dIlDB8+HA8fPkRycjKWLl0KpVKJiRMnIiYmBnFxcZg6dWq+c3/66ae4cuUKUlJSEBkZiSVLluTTkocOHYqEhAR06tQJN27cQHJyMvbs2QMvLy/1MUqlEvPmzUNCQgLi4+Px3XffFSosaUoUdQ2ZcqM6dZjw16/r1v/6dbXTbnaNGrK/H954k7pR48bsO3L+PCjPdjvBx6t+fdllzHZ1VTsV04wZyLa1lV8mIzV9MCnlRTDfGzRc2sFB60Yiji22SURoaCjCwsLw1ltvAQB27doFLy8vdOvWDUFBQbh48SIOHjyYb/mjRo0a6Nq1K7p06YK3334bI0aMwK5du1C5cmW0bdsWkyZNwqxZs/Daa6+p+2RnZ2PcuHGoX78+hg4dinbt2uWrLM2m0QGff/45Bg8ejDZt2qBq1ar48ccf1fsnTJiAESNGYOTIkWjVqhXKly9vkr4uZo2uzroCKhWQY3Hh+V44FolwXQvOujnYC8qLKYRLt2qV+7xKFWDsWPlkMTNkqzL5ww8/UJs2bahatWrUrFkz2r59OyUmJlLVqlW16i+6qrSDAxVKLGOMJrJK8sqVK2nr1q0a961du5auX79OISEh9OLFC7K1tc23Pzw8nEaPHk0AaPr06ZSSkkJOTk7q/Xv27KF79+6RQqFQb7t58yZNmjSpSHn69u1LT58+Vb8eOnQoERFVr15dve2DDz6gmJgY9euoqCj63//+p35tZWVFkZGRRb6vvI1Xlday3b3Lrq+2bXUfY/FiNsa8eby6sQyNV5U2cLt4kV3fvXvnm/MG7dqx7SqV6Puz5G3ePCbLw4fs8flzgqur/HMncbOoqtKVK1fG2rVrcfv2bWzZsgUZGRlo3rw5IiMj5RTLpFEoFCAiBAUFwcnJCc+ePcu3jObr64saOREoAPDgwQOkpKSoX8fFxeHGjRv5nH7j4uLg4eGhfh0cHIz9+/fj8ePHSEpKwpo1a+Du7p7P0fbly5e4d++e+nVMTIx6jLJly6JSpUo4deqUer9KpcJ5Ic8CR3/s7QFfX/ZcV8sLkPuPVDCvcziWQpkyuVl0C9x7bF68YOU0lEr58720acMep04FrlwBXF2BKVPklckMkNVh9+233zbuCVNTAREezvYODnglheOohM6nderUwf3796FUKhETE4Pg4OBCx7x48UL9PDMzM98+ItK4TXCmqlq1Knbv3o1ff/0VX375JZ4/f45WrVphxYoVsLGxKXZcHu5pROrUYTfeJ0+A+HjdxxFu6o0bg0zYJ4nDEU1AACsN8PQp8OhR4f3XrgFeXkzBOXfO+PIBrLJ7o0bs+eHDwLNnwJ49bOlo8WLNcnMAmECeF6MjQpFQiDze0ISEhCAgIAALFizA48eP4eXlhaysLEmjZJo0aQJra2tMmDBBbZ3p37+/qDGSkpIQHR2N5s2b49ixYwAAKysrtV8ORwL09XcRyJNpN71KFeDSJf1l43BMASE5XVEW32vXgA4d5PV7adGCJcqLiACiolgLDQVCQoBvvgGGD5dPNhOH/1U2UcqUKQNPT09UqlQJjRo1wpQpU/Dvv/9ix44dWLNmDQ4cOIBTp05h27Zt6NSpE3x8fPD6669j5syZCNLD+TIiIgI2NjYYO3YsfH19MWjQIIwZM0b0OAsXLsTkyZPRq1cv1KpVC0uXLkW5cuV0lotTAKmUlzxOu6l16+opFIdjQhQsC1AAhZBpV07lRVgyOno0d9v//scehwwxDYdiE4UrLyZK165dERsbiwcPHmDv3r0ICQnBuHHj0LNnT3WIWbdu3XD06FGsWLECd+7cwbp161CtWjW9yi1cvnwZn376KSZNmoRr167h3XffxRQd1l/nzZuHNWvWYNWqVTh16hSSk5OxdetWneXiFEAq5QVQ+72kCqHXHI4lULAsQEFyCjSanPJy/jywYQNbFp4zRx65zATZvZB1baKjjUQ2Y0a98CbPvJtttNG9eywyoXVr/ccaNoxARE7nzvGoFyM3Hm1koGZnR8jMZN8Rb2+Nc65wcmLRRkSEChXkkTE9nZ0/T+QmAIKfHyEjQ/9oQhNqFhVtxOGUWry8gL//Bo4cAcQupzk6ShNpJCBYXmrX5k67HMsgMBCwtmYRRVFRGg9RpKYCQsSkEJVkTJo3B2xtmXx5IjcBsEKpv//OnhfIscVhcOWFwzE2gwYxpeOdd5jZWGzUnbC8ExsLaKgBJpobN4BXr5Dt5AT4+ek/HocjNyUtGQnIuXSkackoL998A6SkAM2aAX36GE8uM4ErLxyOsahUCdi+HfjzT6B8eUAIae/VS9w4Uvq7ADzTLse06dCBhRSLoaRIIwFTVl6ePAGErOWzZzNLEkcNV144HGMwbBhTNnr0ANLTWUKq119n+0JCxC0dSa28AEBOCDvxZHUcU+KNN4D//gPEOvsXURagEILyYuxlIxub3O//kSNFHzdvHhAXB/j7A6NGGUc2M4ErLxyOIalcGdi9G1i5kikoZ8+ybLZz5gC3brFcEzY2QLdu2o8pKC83bkgmpoJn2uWYIoIFpX37XEtFSTg4AELYf0mWFyFcun59wJj+XkFBTM6nT1mupaJISWHLRwAwfbqoJKuWDldeOBxDMXIkuzl27QqkpbH8DS1a5Fc6tm1jj2KWjgxhecmrvHCnXY6pUL167vMvv9SuT2AgS/wWHQ2UVOQ3PJx9N52cgGrVdBZTNIIilpPEs1h+/53J6eUFfPaZYeUyI7jywuFIjbMzsHcvsGwZ4OICnDoFNGwI/PAD8y/Ji2AO79oVsLMreWwnJ8DHhz2XUnm5cQOKtDQmb57aWByOrOS9Fjt0yF1qKQ5tnXUB9n0ULB/G9Hspyd8lL1lZwLRp7PnEiUCFCoaTy4zgyguHIzWffw507gy8esX+KbVqBdy+rfnYixeByEimlLRvX/LYgjk8JgZISJBMZIVKBfvwcPZCuPlzOHIjWF4ERUQb64u2zroCxvZ7USrZPQHQTnkBgI0b2ZKzszPw1VeGk82M4MoLhyM1Qi2o994DFiwAcjIiF4mwdNS7d8ljG2LJKAcH4R8ojzjimAL29kDFiuz5e+8xC0TXriUr1yWUBSiEscsEBAQwC2dSUm6UnzZMmsQeR4/OnZdSDFdeLIC2bduCiODi4qLXOCtXruQp/PWlfn2gdm22jv7vv9r1EZSXN99k/8qKgysvnNKCYHV5/pxZKP/+m70uzvri6JibB0mbZSPA+OHSwpLR8eMl/7HJy+HDzFJTpgwwYYJBRDMnuPJiYrz//vtISkqClZWVepujoyMyMjJwtICJsVWrViAiREdHw8vLC4mJicYWl1OQfv3Y4759QHKydn2OHmU36AoVgJYtiz/WGMoLd9rlmAKC8iJkn509m/3Yv/km8yHTRKNG7A/A48csxFgbBOWlVi2W8dbQiPF3Kcjs2exxzBiWK6oUw5UXEyM0NBTOzs5oksc02rp1a8TGxqJp06awt7dXbw8ODkZUVBTCw8P1KsbIkRBBedm4Ufs+KhWwYwd7XlLUkQGVF/v795nFiDvtckwB4RqMiGCPd+4A69ax5198obmP2CUjgKXnT0hgSeBq19ZNVjHoo7zs28esUI6OwLhx0splZnDlxcS4c+cOoqKiEBwcrN4WHByMf//9FxEREWjRokW+7aGhoYWWjYYOHYqEhAR06tQJN27cQHJyMvbs2QMvLy91X6VSiXnz5iEhIQHx8fH47rvvoOD/tvWjXj1msk5Pz1VGtEVYrivO76VsWaBKFfbcAMqLIiuLZ9rlmA4FLS8AMGsWe+zTJ1eRz4uYSKO8GMtpt04dZmF99UqcgpUXwfoybhxz9C+llD7lxUH7Rg4k6vgim0gOHz6MkJAQ9euQkBAcPnwYR44cUW+3sbHB66+/jtDQUM1v08EBn3/+OQYPHow2bdqgatWq+FFINQ1gwoQJGDFiBEaOHIlWrVqhfPny6K2NwyinaPr2ZY/79jFnPDHs3w+kprKCiwEBmo8RIo2iogBDLREKN/2SlJfGjZnCdfIkT5zFMQyC5SWv8nLjRq5VU5P1RWykkYCxnHYFq8upU0Bmpm5jbN3KEly6urLlo1JK6VJeHAC81L69evpK1PFFNpEKzOHDh9GyZUtYWVnByckJjRo1wtGjR3HkyBG1RaZ58+ZwcHAoUnmxtbXFmDFjcOHCBVy6dAk///wz2ucJxf3kk08wZ84cbNmyBbdu3cKYMWO4z4y+6LJkJPDqFVNggKKtLwZcMhJQ5JQJKFJ5adiQOSJfuMCWuF5/HWjd2mDycEoxguVFWDYS+PZb9ti/P/NTEXB2Zmn0Ad0tL8ZSXnRZMhLIzgbmzmXPJ0xgDrylkNKlvJgJoaGhcHJyQtOmTdG6dWvcuXMHT58+xZEjR9C0aVM4ODggODgYDx8+xP379zWO8fLlS9zL848lJiYGHh4eAICyZcuiUqVKOHXqlHq/SqXCeV3NmBxmDq5Xjy0Zbd+u2xjC0lFRfi9GUF5QVJmAgABgyxbg0iXmMKlSscJxeeXicKRCqWRWSCC/5QUArlxhEXpKZW7yNiDXWTcykqXdF4M5KS8Ai7x6+JBl3R0+XH+5zJDSpbykAnDUvtlXsBd1fJEtVZyYERERePToEUJCQhASEoIjOYW74uLicP/+fbRs2RIhISE4dOhQkWNkFjBJEhGUJYXhcnRHsLrs3y9+yUhg506Wy6JhQ82pyo2hvNy4wZx2y5VjZvv69Zkl6fJlZhHKzgb++ostYf38c365OBypqFSJWRQyM4FHjwrvnzmTPb7zTu7ykq5LRkDuslHVqsy3TBsUipJTG+TF15fVOsvIAE6fFi9jXrKyWMZugJUdKYUVp0vfr1mq9k2RqhB1fJFNB0JDQxEcHIzg4GAcPnxYvf3IkSPo3LkzmjdvXuSSUUkkJSUhOjoazZs3V2+zsrJCEHfS1B19lowEnj/P/UemyfpijGWjvE67Gzeyf6R9+zKlZe1aJsPgwSzyQ6jRxJUXjtQICsmDB5pzoVy8COzaxWoYTZ3KtmlbSVoTiYm5SpI2TrsuLsC5c+w74O2t3TkEq8u5c2yZWF+WL2fh4L6+wMCB+o9nZpQ+5cVMCA0NRatWrdCwYUO15QVgysvo0aNhb2+vs/ICAAsXLsTkyZPRq1cv1KpVC0uXLkW5cuUkkLwUUrs2u+FlZOi+ZCRQVKFGF5fcm6SE1aQ1Itz8GzVijxs2MHP6O+8wR0EBQYmqW5fnheFIS1H+LnkRrC+DBzNLpT6WF0Dc0tGqVUxZqlWLKfna5IeRaslIIC2NZfAGgClTSt13kCsvJkpoaCgcHBxw9+5dPBF8C8CUl7Jly+Lu3bt4/PixzuPPmzcPa9aswapVq3Dq1CkkJyfz7Lq6Ilhd/vtP/yggQXlp1Qpwd8/dLlg3Hj3SfVlKW1avZrWTNm9mvi4DBmhWmO7eZQqbkxMzt3M4UqEp0qggZ86wZVobG2DOHN2ddQW0VV4mTGB/LtLTgRcvmNP6Tz+VPL7UygsA/PILk6FuXaBnT+nGNRPIXJuzszMRETk7Oxfa5+PjQ2vWrCEfHx+dx3dwcJD9PZbGZsx5l+I6wZUrBCLC0KHSyHX+PBtv+PDcbaNHs2179hhkHpRKJTVu3JiUSqVu771bN9mvG3NsOs+7pbd//mHX1WefFX9cy5bsOKHdv6/7nL/7Lhvj8OHiz5eZyY4bM4bQpQtBpWKvhw0rul+lSuyYrCxC2bLSztXMmWzss2fl/9xEzHtxv99ajQcOh6M7tWqxf2oZGdrXMioJTQnrjOGsqwuCPNzvhSMlmhLUaeLECSBv4II+EZMl5XqpUAFYv545x/79N/Drr8DevcD06Wz/L78UjtITENIJhIVJbzlduJDliGraFOjQQdqxTRiuvHA4+iAsGR04wMy3UiAsHXXsmJsAjisvnNKENstGAoLvC6Cf8nLzJoviKV+eRTvlRakE/vmH+Z3duAG8/37uvlmzmK+bnR1LJ+DmVnhsQywZCcTHA7//zp4LzsulAK68cDj6IEWUUUGuXwfCw9nNsEsXts3UlRch+y+Hoy9ly+b6e2mjvBw+zHxfsrOZ35muZGSwKDqgsPVl+nRm1Xj5kkXfvXyZu48IGDKEfWd9fFhUXsEQ6rZt2aMhlBcAmDePyR8SwnxwSgFceeFwdMXfnzm0ZmZKt2QkkDfqyNUVqFiRvTZ0pJFYeMQRR2qEJaMnT4CUFO369OoF1KzJQqj1QZPTbufOuaUIRo9mFpqCJCayZd6XL5nFVMgCDDBFTPjzcfy4fvIVxePHwJo17PmUKYY5h4lhscoLEQEArEth8h6O9gjXh3C9iCLvklFCgoRSIVd56d6dJa0DWEZNbW/mxiIigkVdODqyf50cjr5oEyZdkFevtLPSlETBAo2VK7OkjEol82lZu7bovtevAyNGsOdTpuT6rLVqlbs/Pl5/GYviu+9Y5usePYquj2ZBWKzy8uzZMwBAbWOUOOeYLcL1Ea/LTcUQS0YCp08DsbEs0+1HH7FtprZkBLCbpZD7hfu9cKRAjL+L1OR12rWxYTmO3N2ZL82nn5bcf8MGtoQDsJQDtWoZ1t8lL3fv5t6LJk827LlMAIs1S7x8+RKHDx9G//79AQC3bt1CVlaWqDHs7e3xSopMiBxRGGPera2tUbt2bfTv3x+HDx9GqkLB1rL37Mm/nl0UNWsCgYFsyUiwkkhJdjZzAnzvPaBPH7bNFJUXgC1lBQYy5WXXLrml4Zg7ulhepEKwvNSty5SQ119nVtV+/ZiFURsmTWJRRyEhLHJQyBBsaOUFYPluBg5kRSu/+oopNBaKxSovALBy5UoAwIABA3Tqb2tri4yMDClF4miBMef98OHD7DrZsIEpL1evsmRPRRS8VCNYXQ4elH7JSGDrVqa8CJiq8sIjjjhSIqfl5f59tjTr5ASMHcu2DR3KyhRoi0rFEjtevMgKtgocOyapqBq5coX9Aevalckwa5bhzykTFq28EBFWrFiBdevWwd3dHQoRDoVKpRJ16tTBzZs3ka2ptgbHIBhr3okI8fHxSE1NZTfLt95iOxo0YLVHBgxgiklRGHLJSODQIZYTQigUx5UXTmlATssLEbueX3uNvZ47F9ixQ/w4T58yi+nRo6zAZEQEEBUlraxFcfAgU15Kgd+L7Jn3dG36ZugrrvHMl/I0WeZ94UKWofLIEcLp07mZMD/5RPPxfn7smMxMQvnyhpVt7drc7KGOjnqPZ2dnR1ZWVtLOe82aTL6XLwkKhezXkDk1fp8p0KytczPYVqokz5wvXZqbaVfDd0VUGzGC3UvmzDHeHHbqxOS/cUP+z7OYeecZdjkcfShXLjdC4JtvWD6GVatYtdoFC9jzMmXy9xGsLocOsUrQhkTwp4mI0M4XRwPW1tZ44403sGHDBsTGxmLFihXSySfIlpYGODiwCrccjq5UqcIy2L56xeprycHMmcDnn7NoIZVKv7FWrAA8PIwbviz47dSsWfjeZWHIrpHp2rjlxfKa0ed94kT2L+Xy5fzbx43L/Qd4+nT+f4EXLrDto0YZXj4rK8KMGYSOHUX3DQwMpPnz51NsbCwJrFq1ispqqK2i97xfusTmpEcP2a8hc2r8PlOgdejArqPr1/mc69OePWPz2LCh/LIUMe/c8sLh6Iq1da5T3vz5+fctWsSSUz17xta/z58Hmjdn6/GNG7M04saowq1SATNmiMoc2qVLF4SFhSEsLAyffvopPD098eTJEyxYsAALFixAkiGqUvNMuxwp0LamkY50794d9YUcLpaMthWyzRiLdtjlcIqlb19mpo6N1Zx86tAhVuzs33/ZTeDw4dyIgdBQptiYICqVCoGBgUhPT8f27duxevVq7Nu3T3SqAFFwp12OFBjQWTcgIAA7cpxvg4KCJB/fpLh6lS2BW7Cixi0vnNLLZ5+xxyVLWF0QTdy/z3I9bNrE1o+Fqq2GjDLSASsrK/XzgwcPYtSoUahYsSL69++PXbt2qRWXbt264eLFi1i9erW0AnDlhSMFBgyTLlUJS0uB5YUrL5zSScuWzKry6hUrbV8cL1+ypE9ffslep6UZZ8lIS5ydnREXF4eNGzfCwcEB2dnZWL58ORI05J9RqVRo1KgRmjRpIq0QgvJSp07honQcjrYY0PLi7OwMANi9e7fkY5scXHnhcCwUwery55/a1RshYsXWXnuNpfuWoEZJnTp1MGfOHAwdOlSvcTp16gQ3NzcEBASwvDXFcC0n/bm/vz9sbW31Om8+7t9niqC9PY844uiOAS0v3t7eAIAoY+VbkROhzEHlyiyi0gLhygun9FG9OqtCCwA//SSu79mzLImdBLRt2xaTJ0/GmDFj9BrnzTffBAD8q0Vl66ioKCQkJKjLI0hGdjavccTRj/LlARcX9rykDNc6UKlSJQBAYGAgGliwRQIAkJycmxXYQt8rV144pY9x49jSxp49msvbG4EmTZqgTE4OhubNm6v/FYrFysoKb7zxBgBg+/btWvURrC+SR11wvxeOPghWl6gotjQrMcJ3rFmzZhg4cKDk45scFr50xJUXTunCxQUYOZI9LxgebUSGDx+On/JYfXoJliCRtGzZEm5uboiPj8epU6e06sOVF45JYuCyAILlBQCqVatmkHOYFFx54XAsiFGjWNG1q1eBAwdkE0NwmD19+jQA4C2htpJIhCWjXbt2QaVlNtCrOTc1yU3nXHnh6IOBCzJ+/fXX+O233wAAVatWNcg5TArB74UrLxyOmWNtzZaMAJb6XyZsbGwQGBgIAJg2bRoA5v/i5uYmeqyePXsC0H7JCACuXLmCmzdv4oGYSrnaICgvtWvziCOOeAycoG779u34+OOPkZWVBQcHh3yWGItEsLxYaK4XfofhlB769AGqVgXi4oB//pFNjAYNGqBMmTJ4/vw5Dh06hIsXL8LKykptRdEWa2trLFu2DEePHsX+/fu17nfixAnUrVsXY4XswlJx/z6QmgrY2eX+i+ZwtEW4ZgxYTTorKwv3cpSjWrVqGew8uuDo6KgO55aE27eBzEy2VF6linTjmghceeGUHoTw6KVLgfR02cQQlozOnz8PANiyZQuePHkCe3t7UeNkZWXhu+++Q9u2bZGSkiK5nKIhynWA5mUCOGIxoOXF09MTPXr0QIMGDXDnzh0ApqW8LF26FCkpKRg1apR0g2Zm5kYAWuDSEVdeOKWDFi2AZs1YFMMvv8gqSkHlZcGCBahYsSKWLl1qdFnEKkwlYmi/lzfeYGnPOZaFrS3LSQIYxPLSsmVLbN++Hb/++itu374NgOU6MhXi4uIAGMAPzYKddrnywikd5E1K9/SprKIIysu5nHwxqampyM7OFjWGm5sbBg4ciHI6JqAaO3YsEhMTMXfuXJ36F4khlZeAAGDnTmD3bpYMj2M5VKvG/KRSUgzy/RTCpKOjo7F+/Xp88cUX+LWkzNol8Pbbb+O9997TW7b58+fj3XffBWCACEALVl54YUaO5ePrq3tSOgPQu3dvNGnSBMeEIo85KBQK1KhRA3fv3i1xjB49emDlypU4c+YMmjdvLlqGpKQklC1bVvqb5Y0b7NEQysv48ezRwYFlOj58WPpzcOTBSGHSUVFRuHDhAlQqlXr5SBecnJzwT47f3NmzZxEWFqbTOHZ2dnj//ffh4OAAAKhXrx6USqXoPzNFYsHKC7e8cCyfceMAKytg797cH1cZefjwITZv3oxneapSe3t749GjRwgLC4OdnV2JY+QNkdYFIdeLwcKla9dmcy4V7u7AO+/kvm7dWrqxOfJj4DBpQXmJjo6WZLy8aQl69+6t8zjBwcFwcHBAdHQ0Xr16BQcHB1QXFDkpEJSX2rVZtKUFwZUXjmVTtqzWSelsbGyMIJBmoqKikJWVBUdHR3Tq1KnYY+3s7NTHiAmRzsuNGzeQnZ2NChUqwMPDQ6cxNPLgAStkWaaMtBFH77/PopiEH402baQbmyM/Bra8FKxrFBQUhI8++kjncOlXr15h0KBBAIB+/frpLJeQHXvHjh24kfPHStI/FJGRQFIS8ykyIQdlKeDKC8ey6dYNcHZmXvf//VfkYR9//DHS0tLQoUMHg4rz0UcfYcqUKaih4Yd9y5YtAEpOWNe+fXs4OjoiMjISly9f1kmOV69eISLnh0LSpaO8EUdSLR1ZWwMffsief/89e3z9dYv7J1mqMbLlZfz48Vi0aBGaNWum85g7duxAeno66tSpg7o6RtcJysuuXbsMlzzSQpPVceWFY9l07coeSyhauHjxYiiVSp0tGdoyZswYzJ49W2NRREF5efPNN2FdzA+zsGSkr6xmk2m3b1+gUiUgJgb4+mvg+XPA0RFo1Eia8TnyY+AEdQUtLw8fPgSge7j0u+++i0aNGuHo0aMAgL59+4oeo3bt2vD19UVaWhoOHjyIffv2Yfny5eooRMmwUL8XrrxwLBeFAujShT3fvbvYQ/fu3QvAAKHDeXB0dESdOnUAQOMN6uTJk4iLi4OrqyuCg4M1jqFQKNCjRw8A+isvZlPjSHDU/eUXlp9HcHTmfi+Wg4GXjUaPHo1PP/0Ujx49AgBERkYC0E15sba2xvLly3H48GGcOHECgG5LR4LV5fDhw0hNTcW6deswatQo7C7hXiUaC820azLKy+TJk0FEWCBj2naOhREUBHh4AImJwMmTxR7aq1cvpOVUsjVU8qpGjRrBysoKjx49Uud1yEt2dja2bdsGoOilo3r16qFixYpISkrCkSNH9JLn1KlT2LlzJy5cuKDXOIWQUnlp1gxo3pwpLTl1adTKC/d7sQw8PZklTaUCciwiUrNhwwb89NNPePXqFQCoS2Po8l2vU6cOypQpg8TERCxcuBAPHjzA4cOHRfvMKRQKxMXF6ex0rzUWankBAJK7NWnShO7du0dhYWG0YMECrfs5OzsTEZGzs7PkMimVSmrcuDEplUrZ56c0NUnn/auvCESEjRu1Ov7AgQNERPTBBx8Y5L198sknRES0ZcuWIo/p1KkTERHFxMQUOQfe3t7UqVMn0513Hx827+npBGtr/cb6+2821qpVuduaNWPb4uMJCoVBPitjNX6fAaFFC/Z53r9vtDkfOHAgERE9ffpUdP/BgwcTEdHhw4f1lkWhUJCtra36ta2tLQUEBJCbm5t079nVlc0vEcHJSbbPueC1ru/vt+yWF0dHR/z9998YPXo0EhIS5BaHY0l068YeSzDDVq1aFZ6enggNDQUAhISEGEScgpl1NREaGorvv/8effv2BRFpPCYqKkpULSOjExnJko3Z2uoXcVSpEiCY4xcuzN1+8SKLaHJzA3KW4ThmjIH9XWrWrImePXvms7IIy0bu7u4oX768qPEa5fha6ZrbJS9EhIyMDPXr3bt34/Lly+olJUlISAByfH0saelIdnf9JUuWYNeuXTh48CC++OKLYo+1tbVFmTJl1K+FIlZKpRJKiavYCmNKPS6neKSad3J3BzVtCgBQ7N8PRTHjzZo1C4MGDcKWLVtw9uxZXLp0ySCfe9MceS5cuFDk+CqVClOmTGFyKxRQKBSSy1EQDw8PEJGk13v2jRtAs2ZQNGgARXi4bmN88AFgYwMcOwbl5cu5laqzs5F96hTQoQMUbdtCIdRvMUP4fQbI9vNjT+7dM8g8vPXWW5g7dy7++usvDB06FEqlEhkZGYiMjETVqlVRp04dnDp1SuvxGjZsCAC4fPmyWl6lUolWrVohIiJC7RRcHJUrV0ZUVFShPyg3btxA+/btERAQIOlcZF+7Bnh7QxEYCMXZs5KNK4aC17q+709W5WXAgAFo3Lix+qZeElOmTMGMGTMKbQ8ICMDLly8llU2pVKprX0iW7ZBTIlLN+7OuXfFQqYT9rVuo4+nJ1tWLQLj+jh07po4eEG5QUmFnZ4eqVasCADIyMnQav2/fvggODsbGjRv19ncRmDp1Kvr06YMlS5bgZI5fkBTX+4O4ODwH4NW+PSrq8I8629YW1z78EFkAfHfsgGuB+Yq5excxHTqg3JtvwvfMGb3llQtLvM+oHB2R0KEDXPftg1WOH1lxPAgKwnMAldLS4CXx9w4AAgMDAbBCpg0bNlTP+Q8//IDk5GQQkajvY1BQEABW1kPoN2vWLHTp0gVLlizBihUriu2vUCiwb98+EBHef/99tf8NACQmJgIAWrRoIek96HFcHJ4AcA8ORpWcsiTGpuC17ujoqPeYsqx/Va5cmWJjYykgIEC9LTQ0tFifF1tbW3J2dla3SpUqERGRi4sLKZVKSZu1tTU1adKErK2tJR+bN8PPu9pXYvbsYo+ztbWl9PR0IiLy9fU16HuztbWlBg0aaHVscHAwLV26lAIDA9XbBJ+cTz/9VDKZJk+eTERE//zzj6TXu2LiRDb/69fr1n/ECNb/wQNS2NgU3t++PdsfGUkKA35mhm6WeJ/BX3+xz+bvv7U7/vhxAhEpBgwwiDwbN24kIqKxY8fqPefVq1cnIqL09HQqU6aMevuoUaOIiOjSpUsljtGsWTMiIkpMTMw3hlKppNdff52IiKKioiSdA8XQoewzCQ2V7booOO8uLi76+qzKo7z07NmTiIgyMzPVjYhIpVJRZmYmu6hLGIM77Fpek2TelUrmzElEaNmy2GPr1aunvpEI2xwdHalx48ayzsOmTZuIiGjmzJkEgMqVK6f+jlSvXl2y83Tr1o2IiC5fvizt9d61K5v/q1d163/pEus/caLm/fb2hIwMdoyPj6yflT7N4u4z/v6ErKxcB9ESvn8ACNHR7NigIIPIdOLECSIieuutt/Sec1tbW3rttdeof//++ba7ubmpv59+fn7FjvHVV18REdGmTZsK7XNyciKB8uXLSzcPjRrlOrnLdG0UnHezddg9ePAg6tevj4YNG6rbuXPn8Pfff6Nhw4YWY0LlyECzZsyZMyEBOH262EOFBG1CwrZatWohISEBhw4dgpWUtXlEUjDbbpcuXWBtbY3r16/jnoSOjUKul9q1axebGE80Qri0v7/4TLht2gANGwKpqcCyZZqPefUKEByfeci06TBtGqtplZ7OXi9enOurpAl7e6BiRfbcwNl1C/qilC9fHmPGjMHkyZO1HisjIwNnzpzBhg0b8m1/9uwZDh06BKDkhHV5s+oWJCUlBffv3wcgcfLImzdZKLqbW+58mzmyKS8pKSm4fv16vvby5Us8e/YM14UbH4ejC0JW3f37c2vhFEFAQAAA4MqVKwCA8PBwpKSkwMXFBY0bN5ZMpF27dmHZsmWoqOWNY9euXcjIyEDdunVRu3ZtybLqFiQyMhJJSUmwtbVV++RINDCQnMwijmrWFNdXSEq3Zg1TQIuCJ6szLWrUAN59lz3v2ZN9do0aAaNGFd1HiDRKSCj+s9YRhUJRZFHGsmXL4pdffsGMGTMkcY7dtGkTgOKVFw8PD3VJgqKS0Rkk83VaGiA4zltIxFHpdXHnWC5ahkgDhS0v2dnZamdYqUKm3dzc0K1bN4wcOVJrx/LExEQcOHAAAHNs75qjkP1bQpkDXRCsL35C1IdUCBW8xSSr8/FhP3wA+9deHFx5MS2mTmVWl127gH37gK++YttnzQJcXTX3MXCYtJubG2xtbZGdnY2YmJh8+yIjI5GWloYyZcrAx8dHq/FmzZqFkSNHwsnJqdC+rVu3IisrC0FBQfD19dXYX/genz9/XmOiSgD4888/MXnyZHXwgGTomqzO1lZaOSREtjUwfRv3ebG8pve8e3rmrrd7eJR4fJ8+fWj+/PnUoEED9baxY8cSEdHevXsleU+dO3cmIqJbt26J6jdy5EjKS2xsLCkMkJTtt99+IyKiP/74Q9rrffly9jlMn659n++/Z3327y/52HLlCCoVO75CBYNcj4ZuFnOfqVaNkJnJPovXXmPbrKyYzxMRYfFizf0++UTt2G0IuRwcHKhfv340ZswYjXN+9epVIiLq0qVLiWOVL19e/V0sW7asxmP+++8/tXOwpv3r168nIqIZM2YY/zP68ks21ytXat8nMJAQF0f4/HO9zy+1z4vseV44HEnp3Jk9nj8PPHlS4uGbN2/G5s2b820T1q5bt24NGxsbZGZm6iWSNsnpNLF9+3aoVCpYWVnh9u3bOHToUJGJ6/Rh9+7dePXqFW7fvi3twGLLBDg45C4x5E1KVxQvXrCKuQEBzPqS4yfEkYGpU5lv0759gBC6rlIBY8cCoaHABx8Av/+e++9fwMCWl9TUVGzcuLHI/bdv30b9+vVRq1YtdX2zohBClyMiIpCUlKTxmC+//BLTpk3D2SJyqSxcuBAPHz4sdM8xCrpYXmbMYCVWTLQIqvE1QIkat7xYXtN73tetY/8uvv5aLzni4uKIiKhVq1Z6v6etW7cSEdEnn3wium9oaCjdu3ePWrdubdrzrql17sw+i+vXtTt+zBh2/J072qf9//lnyimKZtD5Mat5N3arWjU38uv11wvvX79eHaZbaN+uXWzfqFGyzPmsWbOIiGjJkiUl9pswYQIREW3UstyIPq1GjRrUu3dvaSOOatRgc52ayiIySzq+cWN2fFYWoVYtSecdMONoIw5HcqysgE6d2PM9e0o8vF69emjZsqU6U3NehFIB7dq101sswfJyTofkUL1790b16tVxTPDvMCcEy0vNmixTbnEoFMC4cez54sWAthYmwS+A+73Ix+TJ7PM9cADQlKl24kQWORYcnFvuQcDAlpcmTZqgZ8+eRfqg3LlzB4B2BRoFy8ulS5ckk68oNm/ejC1btqBFixbSDXrvHiurYW8PaOPf9vXX7PHvvwGprbISYTSNV+rGLS+W1/Sa95Ytc3MZaNH/l19+ISKiWbNmFdrXsWNH+uijj/TOqeLl5UVERFlZWeTo6Cj7/BbVXF1dafjw4eTl5SXt2ImJ7DOpW7f44/r1Y8clJhLEfJ8rVsz9d2iA+4Chm9nfZypXZgU4iQjFWQcFf4uHDwkODmybUklISzNorh7Bn+urr77SOOfNmzcnIqJHjx6VONa1a9eIiKhbt27FHlelShX6/fffaceOHfm2f/HFF9SpUyeysbEp8Vx//fUXERFNmTJF2jk5c4bNd58+xR8nFD/NzCSUkLdG2ya15QWGuGCM1bjyYnlNr3mfNUud2VOb448fP05ERAMHDjTY+2nYsCHdunWLLl++LPvcFtcER8ORI0dKO/apU+wz6dcv/3YXF3YD/eMPwqNHuU7Wuiz/3L3L+nbuLPs8im1mf59ZtKjoJaG8zc6OVY3Ou6RbuTLlVCZkzr0GkG/Hjh1ERDQqz7JU3jm3t7enVq1aUYUSHL7t7OwoKyuLiIgqVqxY7LGenp6kUqmIiKhKlSoEgKpVq0ZELCmri4tLiXJPmjSJiFjma0nnRHCiL8lheM8edtzy5ZKdmy8bcThFIeR30SJEGsgNkxZyvBiCsLAw1K5dW710ZKoI4dL1xIQ1a4OwdNSgARAUxJKYHTsGxMcDmzYxB93KldmywqZNwDffiD8HD5mWh4oVgdGj2fOSPre0NOCzz9jz//0P8PXNrTj+4EGJ+Zh0xdvbG0DhBHUCr169wvHjx/H06dNix6lTpw6srKwQFxdXKOS6IHFxcepl3j59+gDITUx34sQJdf2i4tAn14u7u3txAyNn4KKPadEC6NIFyMwEvv1W9PmNBVdeOJZBpUrMIz47m0U8lICPjw/Kli2LjIwM9bp34SErYdSoUehXcJ1eB/SNWDI0QmLI+lInsBKUly+/ZBFg334LtGrFIlNu3ADmz2d+SuXLM38IXRKVcb8Xefjf/wA7O6Y85viIFcvWrcwvxs4OmDfP4P4uQNHZdcVy6dIlVKhQQZ2npSSEhHXCvaNbTu4pTVl1NZE347dNSf5ieVAqlbh8+TKuXr2KGoJymH9g9ljc91zwdVm5EsjJ9muqGMRcZ4zGl40sr+k870Ihv9OntTq+R48eRMQKqRV1zNChQ4mI6OTJk3q9H7nnVJv22muvERFRdHS0tGO//nruklBiImHzZsLo0SxCRapz+Pmx8dPSCGXKyD6XYq8Ps7zPeHqyqBUiQocO2verWzc3H8yJE+xx6VKDyGhjY0MC7u7uRc5569at6YcffihUr0ifVrFiRfW5a9asSampqUREVLck36887cWLF0REVL9+fa37tG7dmoiIEhISNPvWeHiwOVepWH2wgvvbtGH709Ol/Y5qmHe+bMThAKKXjISyAFcL5p3IgxBx1LRpU40ZNUuiSpUqePHiBQ4cOACFQiG6vzG5kZMNt2LFinBzc5Nu4FOngI4dgbZtWV2VPn2AP/5g5QOk4u5dIDYWKFMGaNpUunE5RfP55yxq5dQpZk3Rlhs3cjMnC5E0ERHSywfAy8sLAKtHFB8fX+Rxr7/+Oj7//HN1CQ4piImJwfHjxwEAP//8M+zt7fHw4UP190wbhKVcMUtHAwYMAMAsRUFBQYUPePKENaUSqFu38H5h+W/ZMmm/owaAKy8c88famv1AAlqFSAPa+btERkYiIiIC1tbWaK3DkkSTJk3g7OyM8uXLGyS5nJS8fPkSjx8/BmAAv5cDB9jSTlaWtOPmhfu9GI8KFVjSOUA3H6Wvv86fQNJAy0aCv0vBmkYFEZIzFhUurVQqsX37dsyZMwcODg5an19IjtcpJ32DtktGAnPnzkXfvn3VSTNLQqlUqusqhYSE4NChQ5r/NBXl9xISwv5kpKcDs2eLklUOuPLCMX9atABcXNgNUcsstj/88AM++ugj7ClB2RFuHLrke9E1s65c3L17F4DEBeGMBfd7MR4TJgCOjsDZs0AJWWk1kpgITJmS+9pAlpfw8HD079+/xKrRJSkv/v7+6NGjB8aOHYu0tDStz7958+Z8WavFKi87d+7E5s2bi6yBVJA2bdrA09NTnf3X3t5ebX3KR1HKi6CI/vYboKePkLEwyHqjMRr3ebG8ptO8z53L1mlXr5ZcnoEDBxIR0YULF0T33b9/PxERjR49WvZ51WbeP/30U/r444+plgTZNI3eAgNz/WrM6DtrdvcZNzdCcjKb6zfe0H0chYKwYQPhwAGCtbWsc25ra1tsGLRwDzhx4oTO56xXrx7Z2dkZ9H0tXbqUiFiNsoiICCIqIkO44B+Yt35Yx4652XdLCAWXat65zwuHI1SR1nLJSAyHDx8GwLJrli9fXlRfc7O8HDlyBEuXLpW+xpExuHqV/aMvWxYIDJRbGsvl008BJyfg4kVWPVpXiID+/YEOHQy7nKgFGRkZuJ8TVePv719ov5BZNywsTOdzXL9+XZTVRqBr16743//+V6LPnZWVlTose8OGDbiXsxRXXYjoyosmy4tgdfnlF6CEUHBTgSsvHPOmcmX2JVSpgP37terSpEkTDB06VOONqiCxsbFqJ7tGIoqTVa9eHa6urkhPT1c73nEMSHY2cOIEe86XjgyDkxMrtAjo5utiZDp06IBevXqhYsWKJR5b3NKR8L03RlmAgvz+++/47rvvtFrKHTFiBH777TeEhoYiImcpTmO4tOA07OUFuLuzYIfmzVmupe++k1J8g8KVF31o1QqYO5dFOXDkQYgyOnMGeP5cqy4DBw7EqlWr8NFHH2l1/IABA+Dm5oaDBw9qLVbTnKiXsLAwk8/xkpfAwEAMGTJE2ogjYyH4vbRpI68clkrjxsyy9egRsH273NKUyOTJk7F161aEhISUeKyQ60nTj70Ulhdd0TZZnUqlwq5duzBmzBhkZWWplReNlpeXL3P9jAICchXRn3/O70ht4nDlRVdq12ZhuZMmAcOHyy1N6UVkiDQgPrPutWvX8OLFC1FiJSQkYNeuXfjvv/9E9ZOb1atXY/Xq1WjWrJncooiHRxwZljp12OOVK9C6cKaMlJRdNy/ff/89KlWqhEmTJuXbXqlSJXh4eCArK0sWC6qumXaLtbywgdnj5MlAkyZASgrwww86yykHXHnRBUdHYPNmQKhG3KOHvPKUVmxt2Zo5IEp5EXK8GLIswP79+9G9e3d8+eWXBjuHITBYpl1jcP48S0Pv4QFosSTIEYmQF0RErhI5EbLrlhQqDbDlYU1p/6tWrYoXL17g1q1bOvms6IugvBT3fWzRogVmz56dT8G5dOkSZs+ejYULFxY1MHsUUkwsWsRKdpgRXHnRhWXL2BdZWKZo1w4QEf/PkYhWrZgCGRsLaGnSrVChAry8vJCdna3+odaG9957D8eOHVM7xVkquiTGMhkyMoDTp9lzbn2RHsHycvOmvHJogZOTE8qWLQtAO+WlKE6fPg1XV1e0bdtWKtFEoc33cdiwYZgyZQo+/PBD9bb79+9j2rRpWL9+veZOeZNzJiWxcg1mBldexDJ2LDBwICta1b07q/1gZ5drAeAYD2HJaM8erc3Ywk0gIiICqampWp/K398frVq1UiecKg5nZ2fN+RXMAOFmaZaWFyB36Yj7vUiPGSkvgtUlMTERL1++1KrPF198gS1btmj0E3mupT+d1Ny8eRNZWVlwc3PT6HhsbW2Nt956CwCLMtKavMrLTz9p7S9oSnDlRQwtWuRqqBMmsNTYO3aw13zpyPgIcy4iRFpQXoorC6AJbZPVNWvWDMeOHUNMTAy2bt0q6hymgKC8CFV0zQ7u92IYypZlkX2AWSgvYvxdBHr16oXevXublOKenp6O8PBwAJqtL+3atYObmxvi4uJwVHBYz8HLywtt27aFj49P4YHDw1lZjUePgAULDCK7oeHKi7Z4eAAbNgA2NsC6dbn1OQTlpXt3wMTr11gU9eoBtWqxVNYisnzq6u9y7NgxZGVlwc/PD1WqVMm3T6lUonfv3jh+/DjOnDmDwJw8I2Kik0yFBw8eICUlBXZ2dvDz85NbHPGcOsXC5n19gZwfMI4E1K7NHqOjWT4dE0eMv4tAwXDpsmXL4s6dO9i4cSOsra2lF1JLxowZg0aNGqlzTuWlf//+AFg2X5VKlW/f/PnzcfjwYXXJgHyoVCzSqF49QGQwgqnAlRdtsLIC1q5lN8MbN4BRo3L3HTnC1gy9vJjXNsc4CL4n+/YByclad5syZQo6d+6MtWvXijpdcnKyOtlc3tDLUaNG4c6dO9iyZQtatmyJjIwMrFy5Eg0aNMDPP/8s6hymABGZt9NuSgpLoAZw64uUmNGSEcCSS/br1w8/iIigEZQXIf9TYGAgatasiaZNmyJLxkR6R48eRVhYGDIyMvJtt7GxQe/evQFoXjIqNlwaAF69EnXvNDW48qIN337LnHKTk4G33mJx8gKZmewHFOBLR8ZE+DexebOobk+ePMH+/fvVeR3EoGnpqGHDhqhRowaePXuGb7/9Fj4+PhgxYoRZJ6abPn06unTponVBOJNDWDoKDpZVDIvCzCKNoqKisGnTJuzXMnElkJvrRbC8CMnp5Mjvog3t27dH+fLlERMTg2PCNZ8HIctukeHSZg5XXkqAevZksfAAMGIEoCl1+s6d7LF7d+MJVprx92dZdTMzjZosS/gxz1thesGCBfjwww9RtWpVfPnll4iNjTWaPIZi37592LdvHxISEuQWRTcEpat9e3nlsCTMzPKiCwWXjYTkdHJk1s2Lra0txo4di19//TWfH5qHhwfi4+OxadMmZGdnF+pXYq4XC8CoRbGkbIYuzFj3zTcJL16wglXz5hV9vLs7QaVix1WuLPu8mHPTqlDdlClsrnfvFjX266+/TjNnzqR27drpJJu9vT3FxcXR+vXrZZ8nY827j4+P7LKJbk5OhMxMdo1Uqya/PDrMu8m18HA2n8HB8suiRevbty/17t2bXF1dtZ5zR0dHEihXrhxdunSJiIh69uwp63tRKBSUkpJCRFSoaKq1tTW5uLho7Oft7U1ERBkZGWRlZSX7ZyJ1YUbI/Yb0aYZUXhSOjmR/+zb7wh49WnLl0+PH2bFjxsg+Lybd3N2LrVqq1c38wgU21yNHijr3jBkziIho2bJlOstftWpVqlOnjvzzKHHTNO8zZ86kzMxM6tq1q+zyiW7Hjul0jZjCvJtcs7PL/XPm4SG/PFq0Bw8eEBFRs2bNRM35o0eP6OXLl9SkSRPKyMggIqKqVavK/n7OnDlDRER9+vTRuo9CoaBXr14REVE1E1DieVVpI0G//IJX/v4sAdqAASVXPuUh08WjUADjxrHQvGvXAE9P3cbx9WU1VrKygG3bRHWVIrNuZGQkblqw6Twv9vb2sLa2xq+//gpnIZu0uSCUZRAyiHJ0x98fUCpZLhAzqH2jUCjUOVHEJqhr1KgRnJyckJWVBRsbGzx//hyRkZGGEFMUBcsE+Pr6ltiHiNTVsi1x6YgrL5p47z1g8GAgKwuKt9/WrkS4oLzwbLuF8fZmFZ8XLmQJ/cqXB95/X7exhCijI0eAZ89EdRWUF7E5XkorX331FSIiIlC1alXMmTNHbnHEceAAe2zfnqcw0BfBWddMlHZ3d3fY2toiOztbtA9afHw8iAgODg44f/48TgsZm2Umr/Jia2uLS5cu4cGDB4XSNhTk+++/x+jRo3Hr1i1jiGl0SjTPPHv2TFSLj483iqnNYMtGQUGE+/fJe8ECcebce/eYafXNN2U30ZlMGzCA8Pw5m5eXLwl//cWex8QQbGwKHV+iGf3UKZ2W5/KuZ7u7u8s/LybWipr3kJAQ9by1atVKdjm1btbWhKQkdq00bCi/PCLn3aTa11+zefz9d/ll0aIFBgYSEVFMTIz5znmB1q5dOyIiunPnDnXv3p2IiB49ekQKhUJ22bRtUi8baZV5p1y5cvjkk0+QqEVyIoVCgaVLl5pndk6BCxegaNQIHtWrQwubSy47drClkR49zKJkvEEpV46VWH/3Xfb67Flmzbp3j4WwensD/fsDf/+t/ZhVqgDNmwPZ2YDI7LVCzpKYmBjEm1kBMjkJDQ3FH3/8gdGjR2P58uUIDAyUpUCdaLKygMOH2XexQweta19xNGBmkUa6ZNcV8PPzw+zZs6FQKNCvXz+pRdMZIfVCjRo1MHz4cADAxo0bQWZQ3duQlKjhqFQqqlChgtYaUVJSEvn6+hpckzN0tJFo7bxDh1yrghlpxJK3du0IkZFsLjIzCTNm5Hd4njqV7Tt7Vty8jx/P+h05IlqmUaNGERHRvn375J8fE2zFzbuLiwtFRUUREdHs2bNll1XrNm4cu15M+DM3CyvAtWtsHrt0kV8WLZrwXd++fbvoOff19SUiIpVKZXJWjbi4OMpL8+bNS+xjb29PrVu3pjdNYDVAFoddKysrPH36VJtDAbC0yoKjUKmitGfbLVOG1X46eJBZScLDWeXnGTPyOzz//juQlgY0bcosKdoi+Lts2iRatHr16gHQz1m3tJKYmIgPPvgAycnJePjwodziaI/gtNu6Nbs2OeKxsgJq1mTPzSRBnT6WF+H6ViqVOvU3JCEhIRgyZAgAFjhw5syZEvtUq1YNR48exZo1awwtnixopeXY29vLrrkVbCZneQEIGzawfynffCP7/Bi1Va9OuHqVvXciwq+/Ehwdiz5+2TJ23Nq12s27l1duuKa3t2j5FAoFVa9enapUqSL/XJlg0+Z6d3Nzk11O0S0qil0zISHyy6LjvMva/P3Z/KWkyGZN7tSpE5UvX17r42vUqEF9+vTRGCatzZznRfb5L9D+/vtvIiL68ccftTrezs5O/V7EzKEhmmx5XtLT0+no0aP09ddfU3BwMNna2sr+QZqk8jJkCPuyX7wo+/wYtf33H3vfsbGEN94o+fiAgNxlpTzKSJHz/sEH7PiTJ+V/rxbYxF7vpmZSL7KtXs2uGxNd7jJ55aVXLzZ/58/Lcv6BAwcSEdG2bduMNucCycnJ8s9/nmZnZ0fJyclERNS0aVOt+z1+/Fh0H0M02fK8jBw5Erdv38Y777yDgwcPIiEhAQcPHsQXX3yBli1bylp106TYvZs5lDZqlFtC3tJp1ow5RWZmAq+/DuzaVXKfK1eYQ6W1NfDBByUfr2MtI470tG/fHteuXVOnUTdphJDpDh3klcNcEZx1ZVoyGjhwIACgW7duKFeunFHOOWjQICQlJaGPsExtIqSnp6Nr166YNWsWzp07p3W/Egs0mjGiNR5vb28aPHgwLVu2jCIiIigrK4uSk5Np7969RtXkTNLyApS+bLv//sve74oV4vr17s36PX3KsngWNe/u7oSsLJ3Tvbds2ZLWrl1LI00826qcTcz1vnPnTiIiOnbsmOlbYCpWZNeNSkXQkCpe7mbylpc1a9j8TZli9HPb29vTy5cv1ZaQwYMHa9Vv1KhR1Lt37yJdHbSZc5O/rkW0FStWEBHR1KlTZZXDJDLsRkVF4c8//8SoUaPQuXNnzJ49GyqVCh34vxuGLtl2hw9nRR9zSpybDQ0aAG++yaxNc+eK6/vvv8CDB4C7O/D220Uf16sXcxw8f54dL5IWLVpg4MCB/PqUCMF5t1WrVvjwww/lFqd4YmKA69dZhtiQELmlMT9kTFDXoUMHOORJ+KnN99fGxgZ//PEHtmzZkq+vWCwpBFmoLm1plhfRyouvry9GjBiBNWvWIDIyEhcuXEDTpk3x3XffoU2bNoaQ0fwQm2134EBg2TKWhvuvv5hCYC5MncoeN24EckrKa012NssFAwDjxxd9nGC+1XHJiGfWlZZHjx5h0qRJAIC5c+fC3d1dZolKQFg64qUCxKFQALVrs+cyLBtdv34d33zzDX766Se0bNkSw4YNK7GPUBYgPT0dz0Rm4LZULLm6tFYmmlWrVtHDhw/p+fPntGPHDpo4cSI1a9ZMVnOnyS4bAbnZdkuqSNqtGyEjI9fZlYhw9y6hXDlZTXxatZo1cyOAAgJ0G6NcORbJQERo27bwvLu65s5PzZo6nSMsLIyIiLp37y7/nJlo08Vh99q1a0RE1K9fP9nlL7Z1786un/Bw+WXRc95FNw8PwsGDhEGDxPetWpXNW3o6wQSqEmvTmjdvTkRE9+7dk2/OTaz5+PjQe++9Ry1atJBVDtmijVQqFd2/f58+//xzatSokewfiERvXuuJFt0WLmRf/D/+KPqY1q0JqansuD//JLi5ESIi2Otdu0w/0d3y5UzWIpJBad2WLmXjbN5ceN6HDmX7Ll/WaWwbGxtKT08nIiIfHx/558xEmy7X+88//ywqbFO25uTEotp09JkytXkX1SZOpJwKfeL7dunC+l67Jqpf2bJl6YMPPiDH4lIlGKj16dNH7Y8l25zzptW8G83npW7dupg7dy6CgoKwa9cuPH/+HNu3b8eECRMQFBQEBS9+lh9h6ah7d82F4Ro1YsfY27NSAsOHs0KDb70FvHoFdOsGTJ9uXJnFULUqS/cPALNm6TfW4sXssWdPkI9P/n16JKYDgFq1asHW1hZJSUnmlWDNDBCSZL322msyS1ICKSmAUGCvfXt5ZTE2gp9PtWqA2OgwHSONZs6ciaVLl2Lp0qXizpeHvn37olevXmq/FUdHR/zyyy8IDw+HnZ1dkf0qVaoEQHw1aY55opPWU6dOHRozZgytX7+eoqOjKSEhgXbs2GFUTc6kLS82NoTERPbPpWB8vb8/IS6O7QsNVUfaqNugQbnJ3rTJmSJHW7yYyXfggDTj7dvHxvvhh9x5d3YmpKWx7XXq6DTu22+/TUREx48fl3/OTLjpcr37+PjQ3Llz6Q1TvUbztunT2XW0bp38sug571o3a2tCcnLuvWTcOHH9f/+d9fv6a1H9hCKCREQODg46yX7r1q1CS5IPHjwgIqKexSzFz507l4iIFixYIM+cm2hr1KgRDRkyhPz9/WWTQbZlI03N09OTBgwYQL/++iu9ePGCsrKyjDoZJq28AJqz7VapQnj4kG0/d479QGvqu2gROyYhgeDnJ9sFp7F5ehJevZI2c2m3bmy8588psEULNu9vv8223bih87iffPIJpaen0y+//CL/vJlws/gbesuWuWH5YpZjK1QgrF9P6NvX/Oa9efNcxYWIsHu3uP5CyoeBA0X1UygUFB4eTkREw4YNEy13rVq1iIgoPT093719/vz5RES0Zs2aIvuuWbOGiIg+//xzeebcRNvmzZuJiGjs2LGyySCr8lKhQgXq168fLV26lG7cuEFZWVmUmppKhw8fpunTp1ObNm2MOhkmr7wI2XYvXWKvK1Qg3LqV+4Ps7l50XxsbwrFj7NgrV4pPtW/sNneu9NluFQrCnTsEIqoyezab982bJSm1YGNjQy4uLvLPmwk3i7+hW1sTkpLY9dSwofb91q1jfW7fNr95nzyZyX79Ont8+bKwlbe49uyZaGd84X1MmjSJiIhOnDghWu7//e9/RES0Z8+efNtbtWpFREQJCQlkY2OjsW/dunWpT58+VKtWLXnm3ETb999/X6JFytBNNuXl+vXrlJWVRWlpaXTs2DGaOXMmtWvXjsqUKSPbZJi88uLunhuNU7cu4cIF9vzBA0LlyiX39/IiREdrrAEkW3N1zf0RkHq5YOxYAhGVuXePFM7Ouc7MgYHyv28Lb7pe705OTtShQwfq0aOH7O+hxLZ9O7ueJk7U7viuXfNbLgyQ5M6gP6TCUuzHHxMePWLPO3bUrq+HR25yPy0VHmdnZ4qOjqY//viDqlWrRhkZGUREVK9ePVFynzhxgoiIxhRI8qlUKikmJoaIiLroUeG6NCov77//PhEVXWnbGE025WX27NnUsWNHkyrQaPLKC5BrehX+xcTGigv5bdEiN1T4009ln3N89VV+a5KUzdk510/ojz9MNrzVEpuu1/sbb7xBRETXr1+X/T2U2MaNY9fUvn0lH+vgwCJ08iovnTubzLyX2GxsclMQ1KuXWwh13jzt+gcH56Zt0PKcQ4YMyXctbNq0iYiIfvrpJ63H8PDwIJVKRURE3hoKsC5dupSIiH7//XfTm3MTbh07diQiomsiI8ekbCbl8yJ3MwvlZdKk3JtfQoJuVoQPP8wtYhgcLN+cOznlKmGGyu0hhJgLbe5cncdq1qwZnTt3jr777jv55sxMmq7Xu7u7OxERqVQqKlu2rOzvo9hWty67plJTCSVZjIWl0QcPcpcvv/rKZOa9xCb4+MTFsdd9+4oLexYKoYr4p753714iIpo2bRoBoM6dOxMR0e3bt7VOtz9y5EgiIjp37pzG/e3btycioidPnpBVgdwz9vb2NHbsWOrTp488c27CrXr16kRElJqaKlvpA6mVF62rKX755ZdaHTdz5kxthywdbNsGzJ4NpKWxsOnLl8WPsXQpK344dCiwfj0QFAQ8fiy5qCUyZgxQvjwrY2CgAomKn38GffwxS+cO6BwiDQCNGjVCkyZN8PTpU4mk4xQkPj4e9+7dQ/Xq1dG0aVMcPHhQbpGK5sYNIDoaqFQJaNECCA3VfFyDBsCECez5Rx+xMOO33gJMPSQ8L0KI9OHD7PHAAUClAurVA6pUAR49Kr6/ECatZVkADw8Pdfr+devWAQD+++8/9OnTBzt37tQ63X6jRo0AAP/++6/G/UeOHMHZs2dx+PBhODg4IDk5Wb2vatWqWLRoEV68eIHNvIBrPiIjI5GVlQV7e3t4eXkhJiZGbpEkQSstR6VS0aNHj+jChQt08eJFje3ChQtG1eTMwvICENq2Zf/69BnDzo5w8SL7N3TqlPET2NnZEWJi2Pl1iCAQM+9ljx7N/derx1hLliwhIqK5elhvSkvT53r/559/iEj+wm9atdWr2bU1e7bm/QoF+34RETZuZNuaNMmNVDKheS+2HThQuDjsiRNs26hR2vfX8rv+8ccfExHR6dOn9Za9evXq5OnpKbqfEKJd0hJmabS8AKC7d+8SEVGrVq1kOb9sy0a7du2i1NRU2rp1K/Xo0cMkPnizUV6katWq5eZtMHaWY2Hp6sEDFrlhoPMolUqq/c47zMHwgw/0Guvo0aNERPTuu+/K/9mZeNPneh8/fjwREf3777+yv48S2+DB7Do+e1bz/jFj2P7EREKlSmybjU1uaoAaNQw/7woFC3PW9d5ja5vr7J436ubLL/MrZcW1qCh2bLNmWp3z5MmTREQ0rohcMgqFQuecL9q2QYMGERHR/v37xc95KWjdu3enjh07yhZ5KavPi5eXF02ePJlu3bpF0dHRNHfuXFmT3pQ65QXIjSB4/33jndPamiktREyJMeC5pJz3hIQEIiIK0LXuUilq+sy7UE8mNjZW9vdRYqtUKTeKpmD0kJcX4cULtv+jj/LvO3mSbX/nHcPPu6BkTJ+u27ht2rD+0dH5tzdtyra/eFH8HxAXl1yfMy38mHx9fYmIKCsri7y8vArt79WrF4WHh5dYRkLMtWdjY0NdunTJ9/sjhGevWrVK/JzzZvAmW3kAAIiNjcXcuXNRu3ZtDBgwAB4eHjh37hyOHz9ebMpmjoTkpGQ36vr7oEGAjw8QGwusWGG88+pB5cqVUa5cOWRlZeHWrVtyi2PRXLp0CRkZGfD09IRPwfIOpkZ0NPN9USpz/UIEfvoJcHEBzp4Ffvkl/z5jfe9sbYGPP2bPR4/O9f0SQ0F/F4ELF1gJEheX4t+H4O8SFQUkJZV4utTUVHz99ddYsWIFYmNjC+3PzMyEn58fhg4dCltbW41jKJVKREREYMuWLahQoUKJ5/zll1+wZ88evPfee+ptQmmAqKioEvtzzB8dvhmMc+fOITQ0FDdv3kSjRo1gY2MjpVycojh7lj0aS3lRKoHJk9nzefOY47EZ0KBBAwDA7du3kZGRIbM0lk16ejreeecdNGzYEI/lcCQXy3//sceOHXO3de0KDBgAZGUB770HZGfn72Ms5aVvX8DDgz339i6sYGmD0KegQ3J2NrB/P3veuXPR/UXWNIqLi8OMGTPyKRJ52bt3Lx4/fgx3d3f06tVL4zEtWrRAtWrV0LZtWzx//rzEc+7cuRMA0EeofQbA29sbAK9rVBRubm4YNGgQRo0aJbcokiBaeWnevDl+//13xMbGYuzYsVi9ejUqVaqUz+ubY0CEm2jt2kDZsoY/X/PmrKBbQgLw66+GP59E2NnZITw8HGFhYXKLUirYvHkzLl++DJVKJbcoJXPgAHvMiY6BgwOL6AOY9UVTRKDwvWvYkFlHDMVHH7HHFy/Y45Ah4vrb2bHvLKA5mmrfPvbYpUvRY9Styx61jDQqCZVKhRU5FtuiFJyePXsCAHbt2qXVNbRv3z68fPkS1apVQ+PGjQFw5aUkqlSpgj///BOz9C2ka0Jotb40ceJEunHjBsXFxdH8+fOpfv36sq+hlUqfF4Bw7x5bj27XzvDn+vxzdq5Nm4zy3qSed7lyGphbM+nrXerm7MxyJhExJ/i8OV2Kcyp98kSUE6voeW/YkI2fkUHo3Zs9T04uXqaCLSSE9Xv8WPN+L69cn5+iypPs3Fk4UqmINnDgQOrZsyfZ2toWe1zVqlXVyeeqV69eaP+dO3eIiErM0ZK3bdiwgYiIZs2aRQCoYcOG1Lt3b41+N0XOudzXohFb2bJlScDJycno55fN52Xu3Lmwt7fHhg0bQEQYPnw45s2bV6hxjIAx/V5atGCPp04Z/lwGQNv8Ehz9sLGxwZgxY7Bs2TJYW2udPkoekpNzv0OffZY/p0tqatH9DP29+/BD9rh5M7B1K3D3LuDkBPTurf0YRS0ZCcTGAmFhbDk477JZXrRcNlIoFJg7dy62bduG7t27F3tsZGQk9uVYfQouW9SpUwc1a9ZEenq6+hhtEHK5CEtHYWFh2Lp1q0a/Gw6QlJSE+Ph4AED16tVllkZ/tFZejh49ivv376NevXpo1KiRxtawYUMDispRY0y/F0F5OXnS8OfimC2ZmZmYNWsWRo4ciYCAAIOdx9fXF15eXvoPJPi9jB0LWFsDGzcCu3YV38eAygu5uADvvsteCEtYf/7JHgcP1n6gkpQXoPilI3t7lpQPKHHZqEWLFvDx8UFiYiJ2795domh//PEHAGD48OH5FFxhyejgwYNISUkpcRyB3bt3Iz09HbVq1UK9evW07leaiYiIAADUqFFDZkmkQTYz1pgxY+jy5cuUmJhIiYmJdPLkSVEFt0rtslGLFsysGxNj2PNUr87Ok5ZWcjp1E5r3unXr0vPnz2nnzp3yf1Zm0qSY9z179hAR0Qd65ucpqgUFBVFaWholJydTgwYN9BtPSJ8v5HSpWLHkPh07Sl5vS5h3xSef5FaQF/YL37+sLO3kc3AgpKezPr6+RR8n1C2KjS2c7FJYuoqPL/F8Qp2hFStWaPVera2taenSpdS6det820+dOkVERO+9957o+du+fTsREf3www80btw46tq1q9ZzbpL3dgO3v//+m4iIJkyYYPRzyxoqLTWPHz/G5MmT0aRJEzRp0gSHDh3Cv//+i7qCwxhHMxcvsqgILy+W6ttQCFaXCxeA9HTDnUdiGjRoAFdXV7i6usotSqniTI5lolmzZpKP7eDggH/++QdlypSBk5MTtm/fDnd3d90HPHMmNwx4yhRAm3TpgsXTzw9wc9P93AUghQL0wQfsxZIluTvu3QNOnACsrIB33il5oJYtmTPxw4fA/ftFH3fiBJCSAnh6AoGB+fdpuWRkY2OD/v37AwD++eefkmUDkJWVhQ8//BDHjh3Lt33Tpk04ceIEduzYodU4efnqq6/QoEEDHD58GAsXLuTlaUrg3r17ACzD8qKV8jJv3jw4ODhoPejs2bO1+uHYuXMn9uzZg/DwcISHh+OLL75ASkoKmgve8hzNpKUBV66w54ZcOjLTJSMhTPrq1asyS1K6OJvz4/6aAa7JBQsWwN/fH48fP8bdu3dRrVo1rFmzRvcBs7KAt99m/i7aRtElJgJCziAJFbTkZs0Af3+mTP39d/6dwnvUZukoOJg9FszvUpDMTODQIfa84NKRlpFGHTt2hJubG2JjYxFa3BKVFsybNw+tWrXSqd5OWFgYrl27ps7xwiONiseSlo208qwbP3485syZg9TinNny8NFHH+GPP/5AQkKC1oIolUr069cPjo6OOFWEc6itrS3KlCmjfu3s7Kzuq9QlmVMJ8hQ3ro2NDezt7ZGUlITKlSsbPb9F9tmzQOPGQPPmUG7ZYphz5CgvitOnoZB4fouipHnXBsHn4tq1a5JfF5aKFPN+/vx5AMwB09XVFYmJiZLIVrVqVQwePBjZ2dkYOnQoYmNjsW7dOnzxxRf6fb5797IGaJ0MLvvsWZamoHlzKEU4lxaFUqlEfL9+7MWaNVCmpuaThTZtAi1aBAQGQhEYCEUxCnl2jr+L4siREr+vtG8f6M03gc6dofz++9wxcpQXxa1bxY7xbo5/jhDAIeZzqFmzJj766CNERkZi/vz5WvcrjsqVKwNgyktJskhxrZsrBw4cQLdu3XD79m2jv/+C867v+bVSXhQKBe7cuaN15Iajo6PWAtSvXx+nTp2CnZ0dUlJS0Lt3b9wsQuufMmUKZsyYUWh7QEAAXr58qfU5tUGpVMLf3x8AkF0wYRWAoKAg/P777+r93bt3R1xcnKQyFMez2Fg8BOAUEgJ/AzhKqxwdcbl+fQBA/eRk2BjJGbukedcGIe9DWloadyLXEinmHWBLwZUrV8bAgQPVy0hSMGTIEAQFBeHFixews7PD8OHDAcDon+/T6Gg8AlC2Qwf4FVH5WAyZFSviWtu2AIA6hw/DXsP7uXf8OF60b48Kn32GygsXahxH5eCAy02bAgDqxsWhTAnzkv7oEa4DQKtWaNCyJaxy7p83GjZEGoAaGRkoW8wYdXKWly5cuCD6M+jYsSPGjh2LpKQkODo64siRI0jSIpNvUXh7e+Orr74CABBRifJIda2bK3FxcShXrpzRvzsF512MnqAJrZQX4UYhBm1/yG/fvo2GDRuiXLly6NOnD1avXo22bdtqVGDmzJmTT1N3dnZGVFQUrly5InmSPEErDAsL03iBd+vWLd+x9erVExXmpy+UlgbMmIGUWrVw6epVKCRODkbt27O19nv3cF1I6mUESpr3knByclInq9q6daso619pRt95Fzh27BjefvttKJVKSRMEhoWFYUsRFsZmzZrB0dFR7+ULbaCcjNNJtWvjUlgYFPqO16cPSKmEIjQUt7du1XzMkiVA+/Z40qEDno4cCYWGz4e6dGFRU/fu4aZgTSqOsDAgPByoWRNX3N2hOHECZG0NyvGhi9i5E4pHj4rs3qRJE/j7++POnTtavc+83LhxA59//jnc3d0xY8YM3Lp1S69oobxLRTExMSVed1Jd6xxxFJx3YeVEH2T3gM7b/vvvP/r111+1OlbOaKPdu3cTEdG1a9eIiOjChQvGnSuFIreIXGCg9OMLxeH+/NOo70vfSAChSODjopJ08WaQeReat7c3ldWimJ82bejQodS8efNij2nRogW9evWKnj9/TjVr1jT8XFlb51Zs1vd8trYs4oeIFP36FX2cjQ2L/iFiEU+ajvnuO7Z/2TLtz79oEeuzdCl7Xbt2bmI8A8/jDz/8oE6YVlLBRm3a8ePHiYgoUIt7YWmONgJA3bp1o6+++orq1atn1PNaVLSRJhQKRT6/FlNEqVSiRY4/yCeffILMzEw0btwYtWrVMp4QRMC5c+y5AaI7zNVZNzs7G3v37sUBI1qLOLlERUXptQQgEBgYiN9++w3Hjh1TLwNq4vz587hw4QJcXV2xY8cOuLi46H3uYsnKYtF+gP7O8m+9BXh6wubJE6C4JajMTGDdOva8KMfdoooxFodgoRGcdoVIo2KcdR0cHCT5x7xs2TL1c12ijArSuXNn+Pv747Km0g6cfHzwwQf4+uuv0bJlS7lF0RvZNMBZs2ZRq1atyMfHh+rXr0/ffvstZWVlUYcOHbTqL5flpUGDBkRElJycTFZWVrRz504iIpoxY4Zx5/Dbb8X/29KmGdqqo+O881Y65t3e3p6uX79ORETbtm0r8XgPDw96+PAhERHt2bOHrKysDCvjvHnsu7F4sX7jHDtGIKKKv/xS8ry/9ho7Z0oKwdEx/76yZVkuGCKCt7f253dwYDmciAj+/oRp09jz1auL7DN69GhKTU1Vp+TXp02bNo0WLlxo9GvOlK51OdpPP/1ERERz586Vdd7N2vLi6emJP//8E7dv38bBgwfx2muvoUuXLib/r1nQWE+dOgWVSoW1a9cCAN5++23jCmKoTLt16wIuLiyN+rVr0o7NsXg+/PBDHDlypMgKwiXx/fffo27duoiJidGqAu6TJ0/Qs2dPvHz5El26dMH3eaJnDIIUmXYDAoBWrYDMTLgV4etS6Jx37gCOjoXLBbRuzfzTwsOBqCjtZUhNBYScK507a2V5eeedd2Bvby+JL9msWbMwfvx47ndiZCwl14usysuoUaPg6+sLOzs7eHp6omPHjiavuABAq1atAAAnTpwAAPz7779ITU2Fv78/goKCjCeIcBOtWxeQwJSrRlgyOnMGMIcqwXlwkzB5GEc3ateujTZt2qBNmzai+3bt2hUff/wxAGDYsGHqWiwlERYWhqFDhwIAPvvsM52CDLRG+N4FBgK6LnELdYy2bYOtlu9RXS6gYKVpbUoCFEXepaMSEtR5eHioP9N1wjIWx+wQcr2Ye30jk/N5MQe2b9+ONWvW4L+c+igpKSmYNm0a+vTpg+vXrxtPkLg4lk1TqQSkVJrM1N+lUqVKiI+PR2RkJKysrOQWp9QihEiLTVbn4eGBlStXAmBJ6fbv3y+q/+bNmzF9+nQAzAfCYDx8yL57trZAo0bi+5ctCwwaBABQCHWMtOGvv9hj+/ZATlI2ALr5uwgIEZLBwSVaXgICAqBUKnHz5k2j57XiSIelJKrTKlRaqN6pDUKFT0tmw4YN2LBhQ75tP/30kzzCnDkD+PgwE7YuNy9NmGklaSGzbnJyMlRmZjGyJIRMu40bN4aNjQ0yMzO16jdq1Ch4enriypUrmDJlik7nnjlzJm7fvl3o+yk5Z84Ab77JvnenT4vrO3QoW/65dg04ehTQNt/Ggwdsmad1a1Yu4McfAVfX3P66WF6uXWNLTTnpBZCezsoSaEDI0XH79m3x5+GYDA8ePAAAuLi4oHz58nj+/Lm8AumIVpaXxMREdUtKSkL79u3RpEkT9f6goCC0b99esoyaHBFI7ffi7s5SlQPib8oyw8sCmAbh4eF4/vw57OzsRFWYnj17Nj744AO88847SNexlhYRYf369Von1NQZffxehCWjpUvF54kRygUIS0etWzPL661bQGyseFmAXOsLwPxqilD8hWhKXXK7cEyHtLQ0teXMnK0vWlleRowYoX4+d+5cbNiwAWPGjFE7WimVSixdulSSEElTp2XLlkhKSsL169cLOZpVrlwZI0aMgEqlwqxZs4wjkHATlSpc+vXX2eP168CLF9KMaSS48mI6nD17Fl26dEGzZs1w4cIFrfv9qm2dIS2wt7eHQqHQuqyJKHRVXtq1Y+UFkpNzl4HEsHEjsHgx0KAB87nRx99FYO9eQLjHF+OsK1heuPJi/vTt2xcJCQlq511zRLTPy4gRI/Djjz/m++HOzs7G/Pnz8yk5lsqiRYtw5coVjctjtWrVwtdff41PP/0UNjY2xhHowgWWe8LbO9f0qw9m6u8C5NY04sqL/Gjr9+Ln54c1a9ZIkjskLwsXLsSLFy8wKMe3RHLOnQOys4Hq1Zm1UlsEq8uaNUyBEUtiIiDkRRk8WBrl5cCBXGtLMcrLzp078c8//4hSRjmmyZkzZ3Dnzh1kZWXJLYrOiFZerK2t1XUt8lKnTh2LL3Tl5OSEwJwS8ic1/LiHhoYiNjYWbm5u6NSpk3GEevUKEH6spVg6MlPlJe91yZUX+Tlz5gyePHmClJSUIo9xcXHBjh07MHjwYCwsomaPrjx//hy2trZom1M3SHKSknIrTGv7vatfH+jZkz0X46hbECHqaOhQZn0BgCNHdB8vIQE4fpw9zymuqYklS5bg3XfflbTsA4ejD6ISw8ybN4+ePXtGEyZMoJYtW1LLli1pwoQJ9PTpU5o3b55Rk94YO0ldhw4diIjo/v37JSYA+uuvv4w3F7/+ypJLffedfuPY2OSmPvf3N+pnWdy8a9Pq1KmjThyoUChkkd2cm9SJu0r6DKysrGjv3r1ERPTw4UPy9PSU9P0EBwcTEVFUVJTh5m3FCvZd+eabko+1sSFcvMiO37JFv3m3sSE8ecLGIiJcu6b/e6lShTBggFGvOblaaU9SB4B8fHxo2rRpNGnSJNnmXYLfb3EdFAoFTZw4kR4/fkwqlYpUKhU9fvyYJk6caPSLwdjKy/Tp04mI6M9i6v00a9aMiIhSUlLIwcHBOHMxfDi7iYWG6jdO06ZsnPh4o36OJc27Ns3X15cWLVpES5YskU12c27GvqEvXLhQ/T3Rph6N2GZnZ0dpaWlEROTn52eY9/H+++z7sn9/ycd+/TU79ulTQh5FTed5F+oSSZHpV4vm4eFBvr6+FvGDz5UX0GuvvUZERJGRkbLNu9GVl7zN2dnZIIqDmPMbU3nZv38/ERGNGTOm2L53794lIqIBxvonU7dubkE1fb6Q48ezcbZvl+0z5TcWy5t3e3v7fK/fe+89dVG+Xr16Gew9HTlyhIiIRo0aZZhzNGzIvi8vXrCSGkUd16QJITOTHdu3b4nz7uHhQdOmTSMvL6+ixxT+aBAR3nrL4NfHpEmTiIhodTGlA8yl8XsMyN3dnYiIVCpVoe+nseZd1vIAycnJSNbF6cwMsbKywus5kThCZt2iEMoFvPPOOwaXCwBbe09OBpycAD1KyxvD32XmzJmYN28eFArRQaIcM6Nbt254/PhxvpwrwcHB+PnnnwEAU6dOxbZt2wx2/sM5eY8M5vdy9SpLse/iAhRVlNXOjjnnWlsDa9cCmzaVOOzy5cvx7bffFp/F9tw54NAh4PFj4OBBHd+A9giRRuHh4QY/F8fwxMfHIyYmBkqlEg21zTNkYohWXjw8PLBmzRpERUUhMzMTWVlZ+ZqlEhAQACcnJ7x48aLELLpr165FYmIiYnXNuyCW7GxpKkwLYdIGUl7Gjx+PL774Ap999hl6F6zPoieNGjWCo6OjpGNy9CM+Ph7e3t75Io6SkpIQFxeHv/76C3PmzDHo+Y/kOLEGBwcb5gQqFYv2A4p22v32W5a5NiYGyCl7UBLdu3cHoIXS1bEjULUqi0AyMDzHi+UhJJMUmwnbVNAqz0teVq1ahapVq2LmzJmIiYkxfDIoE+HWrVvo1KkTvLy8SiwkduPGDXh4eCAjI8NI0oHlnWjXjt1Ely8X379yZaBKFRZ2LShCEvLaa6/hhx9+UL/++uuvsW3bNkmKsjk5OeHixYsAgPLly0tSNI6jP2FhYUhPT0eFChXg6+uL+/fv4+LFi2jatKlRPqNTp05h06ZNOHbsGKysrAyTdfnMGZYo7rXXgNWr8+9r3Rr49FP2fPRoQOpMpkYsaMhzvFgeZ86cQc+ePc1WeQFErjMlJSUZxMFOl2ZsnxeTbj17svXvy5d169+/P+t/9qzksrm6utKDBw+IiOjff/+l58+fF+nvoMu8C85n0dHR8n8OZtoMdb2fPn2aiIi+0SYixxxb377se3PhQv7tjo6EiAi2b9kyrefd2tpa7Q9UpUoV+d8f2PdXwNHRUXZ59G1md283UGvXrh0REd27d0+WeTe6z8ujR4+4v4IIGjdubJxKx0KZgHr1WN0UsRjQ38XKygrh4eEIDw/HoEGD8L///Q+DBg3C9u3bJRlfyKx75coVScbjSIdgmv7yyy/Rr18/maUxAEKm3YAAwN4+d/sPP7AEdg8f5lpftKBatWoAgNTUVJMpfihYXR4/foyXL1/KLA1HKs6fP4/s7Gx4enrCxcVFbnFEI1p5+eSTTzB37lz4+PgYQh6TpFKlSvjuu+/QrVs3Uf3+/vtvXLhwwXBZPvMSEwM8egRYWelWYdqAykt8fDw6d+6M4OBgJCcnY9myZfj7778lWTICeGZdU0bItAtANp84X19fwznPP3rEvnvW1kDjxmxbp07ABx+w58OHi8qk+/LlS3z11VdYtGiRySzJc38XyyQpKQkBAQFwcXEx27qEokw1z58/p7S0NMrKyqKkpCR69uxZviZ2PH2asZaN3n77bSIiOn36tKgxPvzwQyIiOnPmjHHmZONGZqaeOFFcPweH3FBOCU3V5cuXL/GYMmXKkJWVlcZ51/Y8oaGhREQ0ZMgQ48yzBTZDmdIdHBzon3/+oeHDh8vyvuzt7SkjI4OIiKpVqya6/xtvvEHe3t7FH7d1K/vufPYZoVw5wqNH7PXChTrPe9u2bWn79u30448/yn5tNGzYkGbOnGm4kHMjN75sZBrzru/vt2iH3U8++URsF7OnVatWAEoOkS7Ixo0bsXDhQjRr1gw1atRARESEIcTL5exZoG9f8WUCmjRh/xwfP2b/JCXA3d0dYWFh2LlzJz755BOkpaUVOmbQoEGYO3cuvvzyS6xcuVLnc/GCjKZLamqq8VIGaODVq1c4e/YsWrZsibZt2+LBgwda93V0dMTatWvh4OCAhg0b4tq1a5oPPHMG6NWLfe8CA5nz+507wOTJOsvt5OSEHj16mMRSaFhYGC8JwDFJZNfIdG3GsryEhYUREVHv3r1FjyOkQJ82bZrh56RNG/aP79Ejcf0mT2b91q+XRA6FQqF+3zdu3CjSye/TTz9VO4zZ2NgUmndtzlWxYkUiIsrKyiI7OztZrkNLaJb8b3TWrFlERLRy5UpR/YYOHap2VL1//z517dpV87EhIez7I5TWyMoiNG+u07w3a9aMatSoQb6+vkRElJGRof5u8CZNs+RrXWwrV64cLVu2jE6ePGnwsiomlWHXzs5OnWVXjmy7xlBeXF1dSaVSERGRh4eH6HGGDBlCRER37941fLkAR0d24yQiVKqkfb/t21mf8eMlkWPatGlERPTy5UuqV69ekcfZ29tTdHQ0ERG99957+eZd2xuLq6srjRs3jmbNmmXUa8/SmiXf0Dt27KhTVMXhw4cpL0X+AXF2JqhUuRlvZ8/Wed4fPXpERETNmzenhIQEIiKqX7++bHOnUCioQ4cOVLVqVdk/R6maJV/rYpuVlRW9fPmSiIhq1apl1Hk3uvLi4OBAixcvpri4OMrKyirUjDnxxlBeunbtSkRE4eHhOo3j5OSk/oFes2aN4eclLIzdQMWkXY+PZ32aNtX7/MHBwZSVlUVEREOHDi3x+LFjxxIRq7Fha2vLbywyNUued0dHR8rMzCQi0vpH2M/PT23R+/HHH4mIaPPmzUX3uXqVfYeuXCHY2uo0746OjmpFydXVlY4ePUpERO+8845sc1elShUiIkpPT8/nm2bOzZKvdV2acJ0Z2mdQ9lDp77//Hu3atcOHH36I9PR0jBo1CtOnT0d0dDSGDBkidjiTp0VOFM5xoWS8SFJSUjBw4EBkZWXBw8MDdnZ2UopXGCFkWlu/F39/wM0NePUK0HNd29PTE2vXroWVlRVWrFiB1QWTdmng999/x+PHj1GlShWMGjVKr/NzOJp4+fIlzuUkXtS2VMCwYcMAAPv27cPOnTsBsCzORfLTT8ClS8A77wA6Jqf08/MDADx9+hQJCQlqHy7Bp0sOhDDpiIgIwyT548iOEBFobsnqRCsvPXr0wIcffojNmzcjKysLx44dw6xZszB16lS8++67hpBRVurXrw9AvLNuXo4ePYq2bduiW7duGh1XJUUITdW2TIAQIn3uHJCZqdep//77b3h5eeHq1av4WMtU6Onp6Zg1axYAYNq0aaKVu27duiEgIADW1qJ9zzmlCDGlApRKpVp5WbFiBS5dugSAhVy7urpq7rR8OQuVLsqpVwsKhiQLzrpCKgA54GHSlo+5lgkQrbyUL18e9+/fB8DixMuXLw+AWSbatGkjrXQmQJ8+feDn54fNmzfrNc7Jkyfz5TWxtbXVVzTNCMpL06aAUouPV8L8LgsWLMDDhw/Rr18/vHr1Sut+y5cvx8OHD1GpUiV06dJF635WVlbYvHkzLl++jKpVq+oiMqeUsGbNGvTu3RsTJ04s8di6deuiXLlyiI+Px44dO5CYmIh79+4BgEGL2BVMwX/16lUkJycjPT3dYOfUVqbbt2/LJgPHsAiWl4CAAMOvDEiIaOXl3r176iyQN27cQP/+/QEwi8yLFy+klM1kiIiIkKwWS5kyZfD7779j69athslUfOMGkJICODuzgnAlIaHysmvXLvj5+Ym+0WVmZuK9995D06ZNRVUZ9vPzg52dHVJSUtQKNYejiZs3b2Lbtm14rkV9oWvXrqFixYro0aOHuj6ZUDursZCIzgAUVF5OnToFFxcXvPXWWwY7Z0lwy4vlExkZidjYWNjY2Bj0+pYa0crLypUrERgYCACYM2cOPvzwQ6SlpWHBggX5Cu9xNFOjRg0MGjQI3bp1w9SpU6U/QXY2cP48e16SGbBcOVZOAABOnZLk9LpmUd2/fz/OC3JrieALcP36dZPJRsqxDJKTk3H69Gn161OnTuHcuXMGLShZUHkRgpfkhBdkLB2cPn0at27dgrOzs9yiiEIvD+IqVapQ7969KSAgwOhe0oaONtq4cSNt3LiRgoKCJB172LBhRESkUqmoffv20s/N3LnsrvfgASsKN348oV07grt7/uO6dGHH3b6t1/lat25N48aNoxo1akgy7126dNHqM/3mm2+IiOiPP/4w6nVnia00RGD4+fnRjBkz6LPPPivyGBcXF9nm/a233qIZM2aQj4+PZOO7urrSZ599RosXLxbdt0yZMuo0EZ6enrJ/foaYc7llMZVmjEgy2UOlTakZWnl5+vQpERG1bNlS8vH/+OMPIiJ68uRJyenHxbY2bfLnncjbYmII+/cT5s0jbNvGtolM3lWwLV++nIhIklTm//vf/yg9PZ2mTp1a7HGjR4+ma9euERHRuHHjZL0OLaGVhht6t27dSkx7EBYWRhcuXDBabpWS5n3gwIF048YNWrJkiU7ju7u7q8Ov3dzcRPW1s7OjYcOGWVxF8NJwrZtik708AAA0bdoUwcHB8PDwgLKAU+iECRN0GdLkqF69Otzd3ZGeni56OUMbxo4di6CgIDRq1AgbNmxAcHAwMvWM9lFz9CiraNukCdCgAat426AB2+blxVrHjrnH6+nv0rlzZwAsrFRfoqOjYWtriwkTJmDbtm2oUaMGAgMDYW9vj2nTpqmP+/TTT1Enx6cnb/E/Dqcojh8/DpVKBT8/P3h7eyMqKirf/kaNGiEwMBBpaWmF9gmUKVMGVlZWSE1NNYbIyM7ORp06dXT2J4yPj8e1a9dQv359tGnTBlu3btW6b1paGlatWqXTeTnmiVKphFKplK2IqlhEaTtTpkwhlUpFN27coNDQUDp06JC6HTx40KianCEtL8LSzvHjxw0mv6+vLz1//pyIiBYsWGD4OXN0JDRrRhg5kvDTT4RDhwgHDxJcXXUes169ekRElJqaKkl6fmtra4qIiKCCJCcn50tfPXHiRJo1axZ17tzZqNecpbbS8m/03LlzRSZ+W7x4MRER/fPPPxr7Ll68mDIyMujDDz+UfN7r1atHHTt2pIoVK+bbX6dOHSIiSkpKEp2+vX79+nTixAn1d2ihFoUiS0MrLde62LZ8+XJKTk6m7t27G2Xejb5sFBsbq1XmVGM0Qyovv//+OxERff/99wZ9D927d6enT5+a7Y/wZ599RkREu3fvlmQ8pVJJ48ePJ5VKRRkZGRQWFkarV6+mzz77jMqUKSP7+7XUVlpu6D/88AMREf3222/5tpcpU0b9R6JDhw4a+wo+VsuWLZN83ufOnUtEVMg3xcrKitLS0oiIyNfXV9TY48aNy/cHICwsTFT/tm3bUnBwsNH9gAzdSsu1LratWLGCiIhmzpxplHk3eobd7OxsvRK2mQtCZt2TEoQQF8fOnTtRvXp1SZZc5EDKJSOBY8eOwcvLC05OTmjYsCGGDh2K+fPny5rvgmMZFJWsrlevXnB1dUVkZCQOHTqksa+QrM4Q4aRFRfWoVCpcv34dgPhkdcJ7/PHHHwEAgYGB6rxc2vDtt98iNDRU/R3nWDbmlmlXtPKyYMECfPTRR4aQxWRwdXVFvZwQYkMrLwALyzRH7O3t1YkJpVa+nj17ps6xweFIxbFjx5CdnQ1/f39UrFhRvX3EiBEAgFWrVuVLJpkXIddLvXr1JE8yWbNmTQCak8HpUiZAoVCoSyFs2LAB13Iy/4pJJMrDpEsXgvLStGlTw+QgkxjRysuPP/6IWrVq4e7du9i+fTs2b96cr1kCnp6eOH36NMLDwxEfH2+Uc1pbW2Pq1Km4evUqXFxcjHJOfalfvz4UCgUiIyNx69YtucXhcEokMTERYWFhePHihVphqFKlCjp06AAAxTqoPnz4EM+fP4etra36z40UKJVKdV0jTYqCLmUCAgICUL58eSQlJeHixYs4cuQI0tLSUKVKFa36lytXDh4eHgCA8PBwrc/LMV+uXr2K1NRUlCtXTq24mjKilZfFixcjJCQEd+7cwbNnz5CYmJivWQK3bt1Cy5Yt8c477xjtnFlZWRg4cCDq16+Pt99+22jn1Ydz586hfPny6Natm9yicDha0717d7i5ueHo0aMAgJiYGPTs2RPffPNNiZmahaWjYos0isTLywt2dnZIT09HZGSkxnOGhYXh7t27Wo8ZEhICgFmaVCoVpk+fjnLlymHx4sVa9Rd+vB4/foyXL19qfV6O+aJSqXDhwgUA5rN0JMpJJikpibp16ya7cxEkcPgprsnh1DV+/HgiIjp37pzscytX4850fN5NuX3//fdERPTzzz9LNu8fffQRERFdu3ZNMjm3bdtGRESff/65Tv0HDx5MRGT0CFJjNH6tF90Eh3Zd8wqJmXejO+w+f/4cERERYrtxtOCvv/5CRkYGmjRpImslWQ6ntCB2bT80NBRr166VNGhBKCoqpW9JfHw8nj17hsOHDxfap8175gUZSyehoaHYtWuX2gJj6ojSdoYNG0br1q0je3t72bVES7O8AKD169ebRU6GESNG0MWLF2n06NEWMe+lvZW2ef/yyy/p3r17dPHiRZo5cyZVqlRJtnl/8803adiwYSWmS7CysiInJyetx1YoFPlyw/Tt25fCwsJo3rx5JfbdsGEDERF98sknsn9Whpjz0nStm0qTPcPuuHHjUKNGDcTFxeHBgweFssIGBQWJHZKTh+XLl6N///4YNGgQ/ve//5lseHCXLl3QqFGjfBEbHI65UL58efj6+gJg/ivbt29HdHS0LLI8fvwYO3fuLDLKCQA+//xzzJw5E0uXLtU6izkVKOqoUCgQGBhY7HkE5s6di3379pWKtBgc80S08rJt2zYDiMEROHDgACIjI1G1alX06tUL69evl1ukQlhZWamjM8w1Pw2ndHPkyBF88sknAFhV8nPnzmndV6FQwM/Pr0gHW0Pw7Nkz2NnZabWc7Onpibi4uELbhRw3gYGBcHV1LbZC9sWLF9Wh4ZzSR8WKFWFvb4979+7JLUqxyG5O0rVZ4rIRwIoTrly5kgIDA2WfY02tefPmRET07NkzyeeHm3TlaaVt3t3c3NSZZ4urMq2pLViwgIiIfvjhB73lsLe3p9mzZ1P79u2LTf/fpEkTIiKKjY0tdjwrKyt68eIFRUZGUtWqVQvtv3HjBhERvfnmm7J/BnK10nati21C4MjatWsNOu9Gd9gFABcXF4wcORKzZ8+Gq6srAGZ6rVSpki7DcQrw/fffY/jw4bh8+bLcomhEyLh54MABrUzQHI6p8ezZM6xfvx4RERFYvXq1qL5C3hUpMu36+flhypQp2LRpU6Flnrxcv34d2dnZ8PT0VOdf0USjRo3g4uICJycnPH78uNB+wYG3YIbhvNSsWRMjRowwSCZhjukjJDQ09XBp0cpLgwYNcOfOHUyaNAmff/45ypUrBwDo3bs35syZI7V8HBPEECUBOBxjM3DgQPj5+eHZs2ei+kmZ60XbLLavXr1S53kpLtOuoJQcPXpU4x8LQXkRsu9qokOHDli+fDm++uqrYmXiWCbnzp1DdnY2fH19UaFCBbnFKRLRysv8+fOxatUq+Pv7Iy0tTb19z549olJPc0qmYcOGmD17NpRKnQxkBqFcuXJo1qwZAGD//v0yS8PhGJ/r168jIyMDrq6u8PHx0WssIcuvNmHS2mTaFZLTaQqRBnL9Xho2bKj+41mQWrVqaS0Tx/JISkpSZ0w3ZeuL6F/Fpk2b4rfffiu0PSoqCl5eXpIIxQFsbGxw8OBBTJkyRe0cawo4Oztj7dq1OHz4sEazNIdj6WRmZqpN6/ourYhRFEpSXqysrNC6dWsARSsvcXFx+O+///Dnn3/CyclJ4zE8xwtHqHMk/FE1RUQrL2lpaShbtmyh7bVq1cLTp08lEYrDbpB//fUXAGDkyJEyS5PLo0ePMHjwYPU/PA6nNCJE4ui7dCRYXrSpH3TixAls2rQJx48f17g/KCgIzs7OeP78ebH+cp06dcKwYcOK/PPBCzJyzKHCtGjl5d9//8VXX30Fa2sWZU1EqFKlCubOnWsxhRlNheXLlwMAevXqBXd3d5ml4XA4AoLyoq/lRYyicOjQIfTr1099XyhIXn+X4px/i8PW1hbVqlUDwC0vpZm8lhdTrTAtWnn5/PPPUaFCBTx58gT29vY4cuQI7t69i+TkZEybNs0QMpZarly5gvPnz8PW1haDBg2SWxx4eHgU6yzI4ZQWQkNDMXPmTCxatEjnMVxdXdUOkVJUbj569CgWLFigVW4oIWGdo6Njvu01atSAlZUVEhMT8eTJE71l4pgnV69exU8//YSPPvoIVlZWcotTJDrFWIeEhNCECRNo4sSJ1L59e1ni0S01z0veNmbMGCIiunr1qqxyAKBPPvmEiIjWrVtnsHOYyryXtsbn3fjNxsaG2rRpQ9OmTRM171WrViUvLy+9zn369GkiIurRo0e+7b169SIiorNnz8o+P4Zq/Fo3jXmXJc8LwP55zJs3Dz/88AMOHjyo6zCcEli7di1evXqF+vXry+48JYRInz17VlY5OBxLIDMzE8ePH8eePXu07vPzzz/j4cOH+Oijj/Q6d1hYGIDCIdOhoaFo164dpkyZotf4HI6hEaW8KBQKDB8+HDt27MDVq1dx5coV/Pvvvxg8eLCh5Cv1JCYmYuPGjYiJiZE1CaCdnZ36Rsfzu3A4gJubG7p27YqWLVsa7ZxCCGvB5dvWrVsjJCQEdnZ2Wo1TVLK6xMREhIaG8j+kHNja2qJVq1YYMmSI3KIUidZmmh07dpBKpaKLFy/SP//8Q2vXrqWwsDBSqVS0detWo5uhSsOyEQAqX748WVlZySpDx44diYjo0aNHBj2PKc17aWp83sW3zz77jIiINm3apFP/QYMG0XvvvUddu3bVet7btm1LRET37t3Lt33v3r1ERDR27FitxqlYsSIREalUKnJxcZF9Lo3Z+LWuXatSpQoREWVkZJCdnZ3k8y7B77d2Bw4bNowSExMpODi40L6QkBBKTEykwYMHG3VyS4vyYgrtxx9/JCKiZcuWGfQ8fN7laXzexbfg4GAiIoqIiNCp/6VLl4iIaPz48VrPe/ny5dU1mYT7no2NDaWkpBARUf369bU+/61bt4iIqHv37uptX3zxBQ0ZMoQcHBxkn19DNX6ta99iYmKIiOj111+XfN6N5vPy9ttvY/bs2RqTH4WGhmLu3Ll49913tR2OowNKpRItWrSQ5dy8JACHkx/Bb6R69epFZqstCoVCoc7x8vDhQ637PX/+HFFRUQCA+vXrAwCaNGkCR0dHPH36FNevX9d6LCHbrrB05OrqipkzZ2L16tUmGx7LMS6mnO9Fa+UlICAAe/fuLXL/nj17EBgYKIlQnMKUKVMGd+/exYkTJ9S5IYyFt7c36tevD5VKhQMHDhj13ByOqfLixQvcu3cPAEu3L4ZKlSrB0dERmZmZiI6OFtVXyLQr+L0ICSOPHDkiKr9LwTpHgjIVFRWFly9fipKJY5ls3boVv/32m7qelymhtfJSvnx5xMXFFbk/Li5OXWGaIz3p6enqlOQjRoww6rmfPn2KDh064LPPPkNCQoJRz83hmDLCTV1ssjqhLMC9e/eQlZUlqm/BMgGC5SQ0NFTUOIcOHcI333yDiRMn5pOJJ6fjCKxevRpjxoxRW+lMCa2VFysrq2K/ZCqVSp11l2MYhMyaw4YNM+pcZ2Rk4ODBg3ol5OJwLBFdywQI1lNdktPt3bsXc+fOxbZt22Bra6uOdiqqnlFRxMXFYfr06ep+vCwAx5zQ+hdQoVBg1apVSE9P17i/TJkykgnF0cyuXbsQGxsLLy8vvPnmm9iyZYvcInE4pRpdLS/6KAqHDx9WKxwtW7aEg4MDnjx5ghs3bogeS5NM3PLCMQe0trysXr0aT548QWJiosb25MkTrFmzRtTJJ0+ejLNnzyIpKQlxcXHYunWr0f05zImsrCy19WXMmDFGOaefnx/mzZvHCzFyOBo4ffo0hgwZgv79+4vqp4/lJS8nT55Ew4YNdV5Ktre3x5tvvonPPvtMVIVrDscUkC0Ma8+ePTR06FCqW7cuBQQE0I4dO+jBgwdah+mVxlBpHx8fUqlURETk5+dn8PO98cYbRER0/vx5o7w/U513S2983o3bvLy8qG3btlS5cmWd5t3NzY3atWtHvr6+esnh7e2tzvciUKNGDdnnx5CNX+umMe+ylQeQgq5du2L16tW4ceMGrly5guHDh8PHxwdBQUFyimXSPHz4ELt37wbAqk0bmsqVKwMAHj9+bPBzcTilhdjYWBw5ckR0pJHAwoULcfDgQQwYMEAvOaKionD37l0olUp8+OGH6NSpEx48eKDXmByOMTApD1sXFxcALJeBJmxtbfP51jg7OwNg+U+USmn1MGFMqceVgunTp+Pbb7/FuXPnDC5flSpVALCbnDHmwpTn3ZLh86471apVQ/fu3ZGSkoJVq1aJ6qvrvAuRh3PmzEFERAQ2b94sqn9ejhw5Aj8/P/j6+uK3335Ty2Wp8GtdHgrOu77zb1LKy/z583Hs2LEiEy1NmTIFM2bMKLQ9ICBA8rwESqVSvS6dnZ0t6dhSkJmZKTq3hC4I4ZjZ2dlGOZ+pz7ulwuddd0JCQvDjjz/i5s2b6sR1xVG3bl20a9cOly9fzpe3Scy8573fjRw5EhEREaLlFrh//z4AZglft26dzuOYC/xal4eC8+7o6KjXeCajvPz8888ICAhAq1atijxmzpw5mD9/vvq1s7MzoqKicOXKFSQnJ0sqj6AVhoWFmfQF7uDggNTUVIONb29vDwA4d+6cVjdmfTGXebc0+LzrzosXL/Djjz+iRo0auH79OjIzM4s9vl27dhg+fDjWr1+PJUuWABA/7/Hx8erUBbt379bruxkfH49vv/0W9evXh4uLi0nm9JASfq3LQ8F5F1ZOdMUklJdFixbhzTffRJs2bdSprzWRkZGBjIyMQtuzs7MNchEK45rqBb548WIMGzYMLVq0wNWrVw1yDm9vbwBAZGSk0ebB1OfdUuHzrhv37t1DQkICXF1dUadOnRIVCSGT7e3bt/PNuZh5j4yMVD/fv3+/Xp9Z3rE6deokOtmdOcKvdXnQ9XrXhOyLfosXL8Zbb72Fdu3acUcxkXh6esLJycmgYdN5fV44HI5mzp8/D4D9ESvpH6VUmWzr1KmDFi1a4NatW3qNAwADBw7E7t278d133+k9FodjLGQLnVqyZAklJCRQmzZtyNPTU920Lb9dGkOl87aQkBAiIkpKSiInJyeDnMPf35/atWtHtra2RnlP5jDvltj4vOvXgoKCKCEhgYiITp06RS4uLkUeGx0dTURETZo04fMuQ+NzbhrzLsHvt3xvpiiGDh2qVf/SrrwAuWXtR48eLbsspWneLa3xede/NW7cmOLj44mI6KOPPtJ4jHDPIiJycXHh8y5D43NuGvNu1nleFAqFxrZ69Wo5xTIrhNBGY2Xc5XA4mrl48SJCQkLw9ddfqx1xCyL4u8TFxSExMdGY4nE4FoXsPi8c/Vi9ejXS0tLQuHFjNGvWTNKxW7Zsia+++godO3aUdFwOx1K5evVqvnQOdnZ28PLyUr/mxQ85HGngyouZ8/z5c2zYsAGA9NaX9u3b4+uvv0bfvn0lHZfDKQ3Y2tpiy5YtOH78OKpWrQoAWL9+PapWrYr3339fZuk4HPPGJEKlOfqxaNEi3L9/H3/88Yek4/LSAByO7ri7u8Pf3x81atTA0aNH0a5dO9y7dw+PHj2SWzQOx+zhyosFcOHCBVy4cEHycYUcL1x54XDEEx0djTZt2uDQoUOoVauWWoHhS0Ycjv7wZSNOkXDLC4ejH9HR0Wjbti2uXbsGb29v3L59G1u3btU7uyiHU9rhyosF0blzZ+zatQtt2rSRZDyuvHA4+hMXF4fg4GB1UrpevXohPT1dZqk4HPOGLxtZEL169UK3bt2QlJSEo0eP6jWWg4MDypcvD4Bn1+Vw9OXZs2do3rw5fv31V9y+fVtjmRMOx+RwBeAO4D6ALJllKQC3vFgQv/76KwDgrbfegoeHh15jCf4uycnJSEpK0ls2Dqe08+LFCwwcOBDTp0+XWxQORzt6AbgDYIfMcmiAKy8WxOXLl3Hq1CnY2tpixIgReo11//59+Pv7o1OnThJJx+FwOByzolbOY7isUmiEKy8WhmB9ef/999UlyHUhKysL4eHhOH36tFSicTgcDsec8M951K+GqEHgyouFsWHDBjx//hzVqlVD586diz/4DQC/A7AzhmQcDofDMSsEy4sJRvdz5cXCSEtLw6pVqwAAQ4cOLf7gOQBGAxhQeNc777yD6dOnIygoSGoRORwOh2PqWAHwy3lugpYXHm1kgWzatAk1atTAmTNnij5ICaBmzvOmAArUwuzfvz969uyJ2NhYgyTA43A4HI4J4wPAFsArACaYFJorLxbIqVOn0KtXr+IPqoLc5aKmhXfzHC8cDodTisnrrEtyCqIZvmxUWvHP87whmIadB14agMPhcEoxJuysC3DlxaLx8PCAi4uL5p218jy3BRCQ+9LGxgZeXl4AeII6DofDKZWYsLMuwJUXi2X9+vWIi4vD22+/rfkA/wKvm+U+rVSpEgAgPT0d8fHxhhGQw+FwOKaLoLxwywvHmDx6xDysatasqfkAQXmJzHnMo7xwfxcOh8Mp5Qi/EdzywjEm4eEsJaK/f0ETSw7C5r9zHvM47XLlhcPhcEoxjgAq5zw3UcsLjzayUATlRaPlpQxYGBzAlJcpAGoDcAaQDGzbtg3+/v6wsbExiqwcDofDMSGEn40nAF7IKEcxcOXFQrlzh9n6qlevDisrK6hUqtydNcBsbi8AXAfwAEA1AEEADjNfF0H54XA4HE4pw8SddQG+bGSxREVF4dWrV7CxsYGPj0/+nQUvzHM5j83A4XA4nNKOiYdJA1x5sViICHfv3gWgYemooCPW2ZzHHL+XKVOmYPr06YWVHg6Hw+FYPmZgeeHLRhbM2rVrceDAAURHR+ffUVB5KWB5+eCDD1ClShXs2rULDx8+NIKkHA6HwzEZTDxMGuDKi0UzZ84czTsKKi8XAGQDqAooKylRsWJFADxBHYfDMRM+BtAVwDsAEmWWxRIw8TBpgC8blU4KrmemALjBnpbrWA7W1tbIyspCXFycDMJxOByOCCYAWAygG4A+MstiCXgBKAtABSBCZlmKgSsvFo6bmxsaN26cu6EcAI+c53kDinKWjuzasGqN0dHRyM7ONoKEHA6HoyNjAPyY5zUPOtAf4c/tfQAZcgpSPFx5sWA8PT0RHx+Ps2fP5uZsES7MKAAv8xyc47Sb1SgLAE9Qx+FwTJwhAH7JeX4s5/E1mWSxJMzAWRfgyotFExcXh+TkZFhZWaF69epsY1FrmTmWlyT/JBCIKy8cDsd06QtgRc7zhQAG5jyvD8BBFoksBzNw1gW48mLxFAqXLkp5uQIgHUhzTMM93OPOuhwOxzTpBuAfAFYA/gDwCYBoAI/BQlAaF9mTow1m4KwLcOXF4ilUJqCoCzMTwCX2tOWnLTF//nxjiMfhcDja0w7AZgA2YKVNxuTZJ+Sr4n4v+sEtLxxToEjlRdOFmbN0FFc1ji8bcTgc06IFgO0A7ABsBTAMLMWDwJmcR+73ojvWAHI8DLjlhSMrWltegEKZdjkcDsckaAxgN1i1471gPi5ZBY7hlhf9qQ6mwKSABXWYMFx5sXDyKS/eYF/+LLAwuILkWF6sX7OGvbO9kSTkcDicYqgHYD8AFwBHALwFzSG858EsMdWQmw6CIw4ziTQCeIZdi+fmzZtYtGgRbt++nWt1uYfC/1oAuD13QyYykWSTxI69YERBORwOpyAVARwA4AbgNIDuAF4VcayQbLM+mPVlpzEEtDDMxFkX4MqLxZOQkIDx48ezF+/nbCziwqziXQXlUR6HcIjle+HKC4fDkZPBYBlfr4Ol/08p4fgzYMrLa+DKiy6YibMuwJeNShclaNWVK1dGM2HBmK8bczgcuWmd87gMwAstjud+L/phRpYXrryUApydndG0aVM4NXZiG4rQqvMpL9xpl8PhyIkCQMuc58eKOzAPeZUXheQSWT7c8sIxJT777DOcPXsWDo1yUk8WY3lpKmgt9QFwn10OhyMX9QG4AkgGEKZln2sAUsFquNU0iFTyYQ9gI4DxBhq/LNgSHcAtLxzTIDw8HBnIQHzZeLahGOXFG95wSnJi3lCNjCYih8Ph5EdYMjoFVuFYG7IAXMx5bmn5XrqDlUX4BoaxKglLRjFgCqOJw5WXUkB4eDju4z6yFdmsGGO05uO8vb2hgALlwsuxDXzdmFMcAwH8AKCM3IJwLBJBedF2yUhASFZnafev9jmPZQHUMMD4ZrRkBPBoo1JBeHg47uSYW5R3lcjOl5YylzfffBPe3t6IHxoPBIH7vXCKpiKAlWDZTp0AfCCvOBwLRFflRfB7sTTLS7s8z4MA3JV4fDNy1gW45aVU8OLFC1xMYbZU51jnIo979eoV7t69i7SjaWyDpf1z4UjHRDDFBWD1ZQbJKAvH8qgOllQzA7mWFG0Rjg+E5VgFqyC/D48hik+ameWFKy+lhEsprOpipZRKJR98PufRD0B5g4nEMVcqIDdn0O6cx9/AMqFyOFIgWF3OAUgT2fchgCcAbMEUGEugXYHXQQY4B7e8cEyR28TU6ZoqzS74Pj4+WLZsGT7//HMgAbkXcBPjyMcxIyYAcAD7h9sDLHW7A1i1XycZ5eJYDrouGQlYWpFGQXkR/ixIbXlRoPiivSYIV15KCfdtWTGjm9tvatxfq1YtjBw5EoMG5dj/c+oc8aUjTj7KA/go5/lMsFoy7wJ4DGZ2XiaTXBzLQl/lxdKS1QnKy2IA6WAh5L4Sji/UvcuE5rp3JghXXkoDTkC6WzoAIHxXuMZDKleuDAB4/Pgx28ArTHM08QmYdeUigF052+IB9Ae78Q0A8LEsknEsBU8wK0A2gBM6jmFJlhd/AJXBlJbDAK7mbJfS+lJC3TtThCsvpQFhpegJikyxXUh54ZYXTkFcAIzLef5tgX2nwJx4AWAeLONHgyMPrXIerwJI1HEM4f5VE8xKYc4IVpeTYP4/Qs05Kf1ezMxZF+DKS+kgR6t2jHLEgAED4ODgUOgQQXmJiopiGy6BaeBeYFo/hzMOTIG5CmCbhv0LAWwCc5TcAFYJmMMRS5ucR12XjAD2J034ITb3P2CC8nIw51FIwmcIy4uZOOsCXHkpHeRcmD1q9cC6detQp06dQocUsrykIdc8ae5ffo7+OIMtGQHALABUxHEjwG6AVQH8BV5fhiMewd/lqJ7jWILfiwJASM7zQzmP3PICgCsvpYMc5cUl1gUAULNm4Ygjb29vAHmUF8AyvvwcafgQzFn3Flh9laJIBkth/gpAFwDTDC8ax4Ioi9zwZn0sL4BlJKsLAOAO9r0SlsKugfmXuYPlf5ECrrxwTJKcC9PqnhUAwN/fv9AhhSwvAHfa1YfXYDmFLR3AwqMBYDZQRILmXK4iN+Pu18hNa87hlEQLsF+luwBi9RzLEsoECEtGR5HrSJsOpsAA0lhfbAFUy3nOl404JkWOrpJ2hWV70mR5qVy5MmrWrIm7d/PknBY0/SYwTfN/I7DsrqYm2ygApwHMkVsQiXgfLDFdBIB/tOyzGixsWglgLVgoJodTEvqGSOflMtgPfQVIG1ZsTATF/1CB7VL6vfiBfU8TAcRJMJ6R4MqLuTEZwPfQ/gfbA8zJMht4dvYZAM3Ki1AaIDMzM3fjDbBCjmWRa1Y0FRRgSdF+ATBMXlEKIUTkdJdVCmmwQ24U0RxoX90XAMYCCAP78dgJdi3qQw0wR/JdJR3IMVukVF4ywK4/wDytL9bIdV4uqLxI6fdihs66AFdeioRAyLYpyT5uZEaB/YBMhPY/jMKF+RCIuB7BNmlYNtKICrkavql9+Zsj99/U5zAd60tTAA1yntcAK2BozowEew8PAawR2TcNzP8lDkBDAMcB+OgoRxBYqGhDAN1gmNouHHkpg9z7jBTKC2Defi9NwBzln4FZkfIi3JelUF7M0N8F4MqLZnoDdJ0QNT5KbklyCQTLrigwoagDC5BHq46IYMqLq6sr3Nxy41jbtWuHZcuWYfDgwYX7m6rfy9t5ntcFcw41BUYWeN1K41HmgS2ASTnPvwNzEhRLBNgc3AfLuXES4msgdQRLzuWBXH+bATrIwjFtmoEpMLGQrmLy/9s79/ioqmsBf2eSQDBE0GJQ5CkPERDiE1EgIuLVagWKSm9txVer2F61XssVa41aH7etF2x9lPZWqe1F2/pAgSr1UVArYAtFRKRaeQgEiAIxJCGExOz7x9onJ4+ZZB5n5swk65vf/p0zZ/bZe581e86ss/daa2ey3Ys7ZbSMlt597yEPlz2BKJaraxVXedGRl3ZALTAUPp/4OcaJ5BOaQg5H4mfkIjfxQ0AR0a071Gi9iurqambOnMnFF1/MgQMHGrKcfvrpXHPNNUyYMKHl+a7yclbcrfefLCSiK3jDp9+PkDeV5AFft/tr7TaTlZcZiDfDTuCJBMr5GOk/65Eb7VvAmCjP/ToyTdQVeBVxxQbv+1faD365SDfGvX+djEzDZBKusW7zKSMQb74P7H6io5AZtqaRiyov4XgFKIfaglqZngiaxxGjqk+AacDv7fFoRl+aadXz5s1j8eLFVFdXN2RpEaCuMW8hytJJwNdib3pSmIA8cewBLkWUzQkkZ6XVWLgUGeb9FzJSAZmrvGQDs+3+TxDDx0TYhSjcbyMRT1+j7dGy7wELgBzE6PdCJPhdJeIdkW6jgUpi+Gnv4vIvZKHZLnjTuZlALuJ5BV5wuub4NXWk00axM27cOBYtWkRJSQnGGCZPnhxkczwOAYtl11wS8MjLjYjdwCHkaXMfEn4de7xvG+dHYYwV1k3aZReyAB/ItNVRUbQ52bhTRs8g0xGxKHPJ5Fq7/TXeDXgUotBkGpcjNkWlwK98KrMMOA9ZGfcwYBFNp/9cHOCnwBz7fq5tTy3yxGl/mzr60o4I4f1Z+6m8QGbavZyJKDAlRL53u6POiYy8HInEiwFR9DKIQJWXvLw81q1bx3e/m34ruTnPWQvQaQRnDDoaeNDu34r3I3wPGULPBm5q5fwQMmIDDT+AgoICLrnkkiaKYqvKC8B/I1b7PWhqdxMEnYCv2v2n7daV0aXEbxCaKEORqZE6xE14J7LIWRbRT5GkCyHgdrv/P4jC4BcHgMl4IypP0XQhx2xEfrfa97OAW2g65/9Hu72M9DHUVhJjFDI9Xo4X2dsvMtHupfmSAOHwY+TFfbjdjvw2M4hAZwGXLl3K0qVLo87fqVMnOnfu3PA+P18eaUOhEKGQv3qY86qDqTTU96nHGePgrErtXdIcaTB/NHKDfxacRx2ckNcGM9dgJhm4FpwfOTj7W7bPDDCYTgYOglMi548ZM4ZnnnmGNWvWsHixPMK6ysvOnTvDy7EezLUGs8rAdHCecXAWJkce7ncZ6fs0FxpMdwM7wFlhZfI+1L9aL4ad34PQLanXyeuvtZakf4LQZyEIQf3b9XAcMA5Cr6X3DK0rcyfbkfD/Q4C94Pyyab/zhXowMwxmnxF36oeBAnB+6mCeMfBvQB041zo4v3NaPGKZPxtMhYG+BPLbjBeTZTAPGZxtDs5Ppc1t9feOghlvMBhYASFCvj5Wm9W27NObyjviPSbbSGTbd8GpD6Zv1U+U+4mzPPLvz7xnMPUGjgXnGAenNPa2mhOsbD4i6X2wudwTrS+jTJhmz57NXXfd1eL4yJEjqaqq8rWuUCjEZ+s+45OzPuGomUfR+2DqVic0jmHTQ5vY33c/nbd1ZujDQ8kqzGqap9Sw8eONHBx0kF7Fvej5u54tyikfU84mNpG7I5dhI4cBkJUl5Rx//PEUFhaSk5NDz55y7hFHHEFhYWGERkHJkyWUXlNK1rwshu0dRvZ+/7tPKBRqcOWur2/pqr75+s18zucULC+g9yjvO9n/wn4+nvQxoW+FGLFwBNkVqeva9dn1vH/1+9RRx8BlA+lWKMsw7PlkD9vYRtfzuzJkYZTu6QERCoXoc1ofPnzsQypOqwCg9+O9KRiUaHCWyJjfGHZn72bXzF3wQ8i6IYu6L9URqg4xYNYAuq3vJq7RYdjy1hbKvlzGUTek9reZCGUTythywxZMvWHkypFkVWa12d87Cpu/Ir/rXpt6cXTh0b6WXXuglvWshxPgxLNOJKc6J6LM6w6vY9OcTVSdVEWfB/pw1LOpnyf/ousXrDtNfKOHlw6nU2GniHk3fLKBmgE1HHfJcXR7u1vMdZWMLaGUUnrs60HfwrZsEBKjeV/Py8tLuEyTDskYYyZPntxqnk6dOpn8/PyG1KtXL2OMMd26dTOhUMjXlJ2dbQb+50BRS7dinJDjex2RkjPbkXoPYJzCyPU619h82zBOp5b5nBvt58/TcCw3N9fU1dUZY4w5+uijzYABA4wxxlRXV7fdri6OYQNS5m+J+bqilfupp55qsrOzW9af7xiqpH7ntKbX64Qcw7v2s9mp+65CoZBxLrVy3oFxcry6nWGNvsfOqW1TzOmckMn5LEfaW4FxLk9hf7/BMXxh+9VnGOeMtut2JlvZbsc4WWkuW5t41V6jwTgXSJtb6+8dJTkhx1Bq5TI2Od8lm235E52IMnf6Nbq/GQwvJece16Y8vmL79kdt18//2eu6Iz658Zw9/+bk/4aay71bt27GGGPy8/Pj1RuCV1yiVV6ap/z8/EQvPmIKhUKmcEyhYb/tyKenSBbjMdTZOq9uI28nDLts3n8P8/kj9rP7mx7fvHmzMcaYsWPHGsDk5uaafv36Rde+0Xh/NF/2//pDoZA5+eST5YfV/POv0/CjDnv+N+znO61sUvF9geFlW++Pwnz2mf3sjBS2J5bkYJiN1+fWYzg+gHZ8BcNvMQyJMn9nDJ/bNp+VBnJsKw3CNHndI8db7e8dJQ2xMqkmeb/b39s6bosg8xMx7LB59tntfgzZAchjjq1/XhR5v0fDA2pcdb1nzz8/+dfVXO6J/n937InWNgjVhLxQ5JemoMKeiOdMFmK02FZsjUPAI3b/1jCfR/A0+te/xKzcXSbg4MGDfPLJJ9G18R3E+wPgl4iRXapwPVOejvD5H4AdSETYy1PSIomDcp7dD/d9/dVu09Fl+kgkbP/9QBYcueRInDFOMC6Ti4EriD5QVg3wot3PBK+j6+3WNX5Ox/4QFK6L9DvIPS0ZtGa0ezbi4XQssuBhIeLVmU8wkZxbi+/SnEQ8jkJI4EjIODdp0DgvbeI8a42gLklyRSHE8+IY5Ad0Q5Tn/QKxEj8Z+RE2JkrlJWZ+iLjV9UZcWlPBkYghJ0RWXmqBh+x+qpYMuAr57l5H3Labk67KyxlIIL0vA9ViHNuvuB/OgcwwfgVEWQX5babznSwX6ScAd9rtaDLM4jCJJCO+S3MauUsbjHf8MmApsv7bG7Yt2+w+SPyoVNID8bwCiazbFu/abT/gS63kC0cfpG/WIDHEMozAXaVHjRrFqFHybQ0YMIBRo0bRp0+fIJvVlJfxgmJFE9E2Xm5CNO5KZJQnWre1fcB8u984zkkunttwK8rLddddx+OPP86kSZOib2s1Xhj8b+OFsU4m0xDPq3eBf7aS73+B/ciSARckuU0hvIivv46Qx70hjyV93HpvQqKY9kX6xmhw5js4adPAKHkV+ByJ2ptOEaCbcxmifG9FRi33InFuTgqwTelEKpSXfyBhDHrRsMK5ucmIAtwZiRn1b0h/AolkDi0fCJONqyy9B3wWRf79ePf3WEdf3OB0H+Mtu5FhpH5Oz6aioiITjvnz50d1frJtXhrm556284I/TpIssjB8Yuv4dhznD8SzQxlqj43Am79tlv+4444zU6ZMMYMGDTLPPPOMMcaY7373u7HX+7CtYzOGvCTIvfFnf7F1zYqinJ/YvH9J0vflpvNsPXsRG4xweXJoMDLmhCS2pQgxCH0Dw5s2vYXhrza9bZM7x20w/AFDfhtyT/f0hL2WR9KgLZHSStvG2fb9Ivv+5gyWu1/pWCuLOhr6YtLSP6Qu51LHFPyuwPsd/AxDqFneE2kwXk+p3csvbL1zYzjH/X/6rxjr+g8Ss5eJMflt80LKvpQkpJQpL9Pw/qSTcS1TbPmlRP4TbCs9b8v4pX3/Vft+VevnrVixwhhjzJQpU2KvsyuGLXg3AL/l7h4/Bk856xtFOb0xHLL5T0nSdwby528wPNRGvteJXzGNNtkbc1SvGgw3RCH3TEjn22vaTcs/oHRIhY1kXmCPzbLHns1gufuVvmZlsToFdbmKgWtEbzDcGiGvQzDG9h/aOi+K4Zxb7Tl/jLEu9+HzgdRcmxrsBsFLQBUSLj0ZBlxuhNH/Jf41ZNwlA65AQvhHuV5Fm9F1W6MS+Jbdv5Hk2XVchkzRvI3MR7fFDrwlA8IZMvtBD2CK3X+8jbzJtnsZiUxB1CDrT01DohB/FZhq0xSbJiN947EktSXVvIZMnfYExgfclnDMtNvngU/t/tt2exY0sb8IkmygewD1JmMxxki4di89kCCIVzhedO7mGFJv99IbsVP8gtjk4UbajXfaKAONdSG9zdzSh2qS53V0AmIz8gXivRMvbyMW9bmIsW8baxpNnDiR2bNnN9gXxaW8gPx5uPYeTyALoPlNW15G4Uj2kgHfRJYq+BtthzNPtvIyw24XI3P4zwMLbXrBphdtWoTYXrQX6pDrhfTzOjocz+vtF42Or0YUzaOBgaluVDO+BPwAeSgoQ+5zqbQfSoW9i8sbyH22AgbdOAhnQRs2XsvsNlXKi+tltBqxZYkWV3kZSGwKaBTr3qU7qRsS8zmlbNoIDJfYIbaPfb4ONxbLcz6Udakt61O8aYRLw+ddsmRJg41RbW1tYsPW3fBiJLxHQsOsLeR+HN6ceEGM5f2Z6KZ14kluMKtvRZG3K14clWN9bkc2DQG+uNBHuWdSmoQ37ZqVBu1x03dsu94P89lf5TPnSicYuQ9F4ogcIPzU4huITVcy23BEo/qOStF1n4Zx+kUp8+G2bVWI7Vqy2/YbW999cZy7yZ47Icr8wxrJ/kupkb1OGwXFS4gH0ED88xI4HO+p+ZHWMkbJ88hT9VF4bYygVbseRyBrGiUUmrwc+DpiHX8iMgr0GOJ+mChfs9vX8Ybdo8V1474GOMKHtriMQbyZqvCmp1qjEs+l0e/Rl/OBAmT15z/7XHamsAzYg8jh7GCb0gR3ymhemM/saJw5y6SqNcIk5F62EbgOGSldA3wDGQX+JTIqNB7pT6uR6cdkOKK5Izz/JDrPGj/4Ozjbo7yYDUi7DiM1izq6XpvRxHdpjhvvJdpFGn9utwsR77cMRJWXaDmA/OjBv5gvVwBdgQ+Izqe/Lb7Ai3Pi8nH4rI2Vl7injBrzJnLzewLpVTORG2SiQ/nxTBm5vIYoDV2RG7VfuG7ifwQqojzHHRYf12qu2LnSbv8PmULpiNQBz9n9dJk6GgcMRxTc34b53LV7OTOBOrKQWB3HIHYc3ZA/2ubxYzojfXY98AoSQqAe+eMaj4SAWIAoEdcji4nOsW0/BZHtBuR+5WdsmlROGcXLcrs9O8n1DEZsXmqAFXGcH4vdyzREUapGVmzPYFIzXJeElNJpIzBcZofZIoWnjyU5GP5py5vpY9u7Yiiz5W6PnG/SpEnGGGM2bdpkCgoK/JVfEYaNeMOSL2HoH4fcXXfvg8jUVDxtudyWsdWna8vHUGnLPDOG81yPtXd9lPORiBeLQVw7Eygro6eNwHAOnidJECHdm6enbHt+FeHzL9Hw+xg5YWR8cl/plRH2dQiZ8qhudKwCmUY9Loryv4QsY1DW6PwtyDIcfsjob7bMb6b2u4mpr8+0bXwtye26ztYTb3gHd+r0wzbydUHuhQbDXcHKXV2lU6m85OHNEY9KsI5zbTnliMLhZ/v/25b9SuQ8/fv3N8YYc/DgweT8YXXCcCeieLjzxt+nzT+WJnK/z567MIF25OLFWUnwDx4wXGvL+iDG83ra874gfkWseXJtKtYkXlbGKy9ZeLY/ybbVaCsV4CmVJ7WS7wPJc9xNx8Uu91PwFIraRvuRXlsx/Cfx9b18xL17d6PyHiF+JTGXhgUFqcPQJ7XfT0x9/QTbzgMkb92lXLw4VnfEWUYjZbjVeDl34/WHLsHKXW1eUkkVEnEXEvc6+o7d/gaxifCT+xB7j9sjZ9m2bRs1NTV07tyZvn2TsBT6IeAexI13GTKc/RNkbjYKl1aD8exd4pkycjmITB8BXJRAOS7X2m2kiLqRKEWWVAiR2FRBY66029/4VF4m8wXpM3V0NeKJ9g6yBEMkrN1LVWFV7HW406l/QCJPh5Dpoa6IfVcBMg0xALHTG4iEUyiPvSoqkN9uf+Aue+w7yBRUrCHpeyFTzJcjy3nMBLbH0aZUsRHYjdgGjU5C+YXIPXEC0odfbDV3ZPbihfiPZJM5AJhl92/BW2crg0mp9uVnSvnIC3hBldoanmst9cPzPgliBV+bXKZNm5b8+q6gaXCofyFPAUOb5nPl7oxxvGHuRJ8QvmXrfDvBcgbiPenG4x3hRoONx5ugeXI9IQ5h6JF4eRk/8gIyXWmQiMep8A4Jl0J4gRtntJF3huTLW5sXm9wdZErYYJgcwDV+BVlx2SCBO6Md0TwdQ4k97zMMZwfzHcXc190Itj/0sR0hZDTLHaHbSeIrO7uBSm+O8PlC+/mr6SF3HXlJNUuQp/khiGdNPFyPGNu9SqABgq644gpeeuklXnvttbYzJ8pvgaHAr5ARrEHIInUbkSePW5EnRYv5mpGdF0n8CcGN0XMGYtgYL9Ps9i/E5x3hp9HuDLtdgnjaKCLf3cg6QtGst9WTJn3OF85HRij24S0cGQk78nJg2AFMZxN9HeOQdn+ONxKcShYjv6WPkaf5FUggxNb4JhJnpRdiOHw6njFsurPcbv2K99IXuYf8GBmhW4j8lyxNsNzWPI7+DQlSWYsEFG0nBKKF+ZECGXlprOHeE0fZuXgjEBcHL8NA0mHICNYivDD+7ms5ps+9feRJxJBQ7JImaY0tLxHjwHdsGfGG+R9szz9I/MtAgNh3uPLx6cm7XYy8gBfyfH6Yz7IxjMdwP4a1eCNXfo5eLLblPhhlfmtH4ox1oq/DDXP/eMCyPgKxq3NfxcioUOM8Iby1xgzy9O+3jV+MKea+PsS2vZrEfrcgDgSf2/L2Y7jKx2u7wJa7odnxHDznkGj7ZQrkrga7QSgvX7cdYWMcZduhYraSnmuxpDodiSgDy2lpZOjn8L9rqPaHOM/vY8//gtiD5TVOrtFjLJ5KzZN7k/rUP/m0G+VlnJVNGWJg2QeZNnwOMY4P96rBHyW5H94aXIOiPOc5ye/8V5TKSzbew8+5aSDvLGQRQff1LN4ird0QT0P3dQ8tlZsAUlx93X1YKIqz3u54008GmcKOxuMrltTYKaDxQrnft8d3kfzFL2OQuyovQSgv+XjuhyNiLHu1PS+a1ZE7WuqNcb7vmC4bu4iM7vWx7NOs3D8nvj/8m2gYGUqoHc/acmJdAbZx+r0t4yH/5NNulJcQnl2Fu1J741cpht8iDyA98VyaD5K4zYHrHdeKl1/z5NxibbsWRXmOq7juJr2iCV+J51m4DlGs3HAJVUiYiaDbaFNcfX2BvZa74qjzHDwbpVrEoyhZ350b6dx9ODoGzz7pivSSuyovQSgvYHiB2DvzaLzhxxSFZM601GCw293x9ynNwRv1iDaEduP0pj33PxJsx822nMVxnt8d70+i0H+5Z7zyAk1HAuowvIXhB4h7cfM+lYWsxuv+LifFWWcOXv+aGv15zmirvOwJ07Zw6be2jp+ngZybpzOQp/vGr2207i4eQIqrr7tG/8tjrO/CRrL4EHmISub1LaLpfep39v0KAh/1UoPddOEZu43FZdpdPfppMjYkc6pw9jvSRf3C4EVIjtVluideKPPnW8sYBa7R7lnEF3L9a4hL7Ht4Sw4oTbkLuAP5bfZADFzvQwwam/epL5ClLZ5HFjV9EW+BvFi4FOknJcjil9GyFpyDjrgcD20jbxc8w9hEwgcki1VItN7V9v3b9v3awFrkH8vs9gykn0RDJ+Bndv8pxIX57z63qzmu0e7JyD3mG0g05e/i7/00DVDlJV4WI6GchwE303aHLsCLP+HHOkZK7Cyx21iVl6nIL2UV8ueUCO8icX2OQMLHx8oMu/1Ngu1oz5QjysqziEdOW9QhSuEiREFYDBRFWVc/JObPk/b9/yIKUZQ4dQ557+fJm7ZWc74IieOyFVgZfR0ppQS5jrGId06s65GlKx8j19YZWdssGm5E4uvsBL6NLDGTbNxlAk4HHrb7v250vB2hyku87MdblG8uckO5jciLEV6LaOKraJcdKSN4FQmeNwRZSyRaXBfp51rNFR1fIH0AYl+k8Xjkya8OWYtG8Y9aZPTkT0hAxSW0/v0cgzyEfISsG5SNjNr8T+xVd323q+y01R/cwHTRLAYaJIeQUZfaoBviM+7oSzQu00cho38gwULjiEMYF+7IyzBkpKcM+EGK6k4xqrwkwnVIpMmtyJDxA0iUwwfse5csvBVmddQlOCqQWBMAF0Z5zpF4i7L5obxA/PFe3FGXl2k/T7TpxCFEUf0zMsLxEi2fso8CHgQ2Ib/9TohSfAYSRyOOaNl570Yx8tIN+LLdT8cpo46Aq7ycHUXee5DvbA3hF+ZMFjuRaN4uP6TdxoFS5SURaoDHkKf4bwDvIx32NkSheQxZoXUyElTqUzxbGSUYYp06mow8Va8FtvjUBhucLKaRlxCyqi/olFEyqUGUkNeBfCRw2OlAd+BeYDPwn8j00l+RP7LzkKUA4qTr+q5ilzCIpg89jZmKTFl8gNg7Kalnud2ORr7/SIwAvmX3byb1tibu6Mt7wLwU151CVHnxA3cYfyTwFSTiZC4y2vIRXgf6FfJ0pwSHq7yMBw6PIr+fU0Yuq5A+0xfoE+U5E4FjkcitS9rIqyTGQeR3vBzpI68giusPkBGZ1Ugk3XF4I3kJkFWZJVFnIfLoiztlpKMuwbEZ2IaMtrU2SjYHGW1/Bu9BJZX8HLGJupKY7K8yDVVe/MQgfyxnIQZ/LyOd+Cjkz+qXwTVNsWxGliTIQZ6YW+NwYJLd91N5OYBn9xTt1NGVdvsUqgCngmpkdO4tZDS1OzKyOhU4DZla8pMVdhtuNK4Ab7kDVV6CZbndnh3h8wuRe0YN8F8paE84/ows/toevLxaQZWXZPEmMkd9EvALZD2jHYG2SHGJduroIuQp6wPgnz63IZapo8PxXGSfbC2j4itVyG/4bsQbaRTwQnKqct62fvPhnugvRR6C/obY2ijB0ZrRbg6ewfZc/JtmVsKiykuyeRe4AXg84HYoHq7y8mVa/wUkY8rIJRaj3cuQOfYNeDE0lNRQicSN+QNil5Is3rbbkxFvp8bolFH6sNxuTwPymn02E/EILAXuT2GbOijZQTdAUVLOCsSF8CjEGHNVmDyHIXYNkBzlxf2zGoHYRJXZ9HmY/attXh11ab9sA7YjNlCNV1zui4zG1NP2KtVK8tlqU3/ke3nFHj8SKLb7dyCejUpSUeVF6XjUIV4k/45MDYVTXi5AFJhNwLoktOEzW+4oxOW+Lb4A/i8J7VDSAgcH87aR6amxeMrL1+z2DWBXEC1TWrAMuAqxe3GVl2JEgVkHPBFMszoaqrwoHZMleMrLHWE+T+aUkctUxKulOxJxN9I2H5l21D+v9s1fEWWlsd2LThmlH8sR5cW1exmKmAYAfI/kTi8qDajyonRMliKjGaOQofrtjT7rjGfMm0zlZQvi1tgWDu1uXRIlDO5U4pmILdYQoBCJVJvMfqjExnK7PRVxnX8QL8LysgjnKL6jBrtKx2Qfnntq82i7k5DRju0kfyG1aFDFpWOwHll25HDEFsoddfkz0l+V9GAbEnIhG4mkeyESvuDWIBvV8VDlRem4RHKZdqeMnkcVByV1NF/3SqeM0hd3hOV7dvsIsnijkjJUeVE6Ln+y24l47qnZwMV2X4fqlVTjxv+5AVl25AAyHaGkF8sb7e8BfhRQOzowqrwoHZcNiNtjLnCOPTYB8RooxbNBUJRU4fa54Xa7mNStSKxEz/JG+8VIWAMlpajyonRsmk8duVNGC1GvASX1vIO48rvolFF6sgMx1H0SXfYlIFR5UTo2rvJyIRKCfYp9r1NGShBUIVG5QZ7mXw6sJUpbfJ92v/hhOqPKi9KxWY78YfQGvgP0RDw7lgfXJKWDs9xun0UX4VSUCGicF6VjUwO8ioy43GuPLaLp0L2ipJJ7kYCEGqlVUSKiIy+K4k4d5dutThkpQVIOzEGNQBWlFVR5UZSXGu1XICMxiqIoStqiyoui7AJW2/0lyFSSoiiKkrao8qIoAD9GImT+T9ANURRFUdpCDXYVBcSz49mgG6EoiqJEg468KIqiKIqSUajyoiiKoihKRqHKi6IoiqIoGYUqL4qiKIqiZBSqvCiKoiiKklGo8qIoiqIoSkahyouiKIqiKBmFKi+KoiiKomQUqrwoiqIoipJRqPKiKIqiKEpGocqLoiiKoigZhSoviqIoiqJkFKq8KIqiKIqSUajyoiiKoihKRpEddAP8ID8/3/cyQ6EQeXl55OfnU19f73v5SnhU7sGgcg8GlXvqUZkHQ3O5J/q/ndHKi3vxJSUlAbdEURRFUZRYyc/Pp6KiIubzHMD435zU0atXr7guvC3y8/MpKSnh2GOPTUr5SnhU7sGgcg8GlXvqUZkHQzi55+fns3PnzrjKy+iRFyDuC4+WiooK7eABoHIPBpV7MKjcU4/KPBgayz0R+avBrqIoiqIoGYUqL4qiKIqiZBSqvESgpqaGu+66i5qamqCb0qFQuQeDyj0YVO6pR2UeDH7LPeMNdhVFURRF6VjoyIuiKIqiKBmFKi+KoiiKomQUqrwoiqIoipJRqPKiKIqiKEpGocpLGGbOnMnmzZuprq5m9erVjB07NugmtSvGjRvHokWLKCkpwRjD5MmTW+QpLi6mpKSEAwcOsGzZMoYNGxZAS9sXt912G3/729/Yv38/paWlLFy4kCFDhrTIp7L3l+uvv55169ZRXl5OeXk5K1as4Pzzz2+SR2WeXG677TaMMcydO7fJcZW7/xQXF2OMaZJ27drVIo8fcjeavHTZZZeZmpoac80115ihQ4eauXPnmoqKCtOnT5/A29Ze0vnnn29+9KMfmalTpxpjjJk8eXKTz2fNmmXKy8vN1KlTzfDhw83TTz9tSkpKTNeuXQNveyanl19+2cyYMcMMGzbMjBw50ixevNhs3brVHHbYYSr7JKaLLrrIXHDBBWbw4MFm8ODB5t577zU1NTVm2LBhKvMUpFNPPdVs3rzZvPvuu2bu3LkNx1XuyUnFxcVm/fr1pmfPng2pR48eyZB78BebTmnVqlXmsccea3Lsgw8+MPfff3/gbWuPKZzysnPnTjNr1qyG9506dTJlZWXm29/+duDtbU+pR48exhhjxo0bp7JPcdq7d6+5+uqrVeZJTnl5eebDDz80EydONMuWLWuivKjck5OKi4vN2rVrI37ul9x12qgROTk5nHLKKbzyyitNjr/yyiuceeaZAbWqYzFgwACOOeaYJt/BoUOHeOONN/Q78Jlu3boBsG/fPkBlnwpCoRDTp08nLy+PlStXqsyTzKOPPsqf/vQnXn/99SbHVe7JZfDgwZSUlLB582aefvppBgwYAPgr94xfmNFPevToQXZ2NqWlpU2Ol5aWcvTRRwfUqo6FK+dw30G/fv2CaFK7Zc6cObz11lts2LABUNknkxEjRrBy5Upyc3OprKxk6tSpbNy4kTFjxgAq82Qwffp0Tj75ZE477bQWn2lfTx7vvPMOV1xxBR999BE9e/bkjjvuYMWKFQwfPtxXuavyEgZjTJP3juO0OKYkF/0OkssjjzzCyJEjwxqjq+z958MPP6SwsJDu3bszbdo0nnzySYqKiho+V5n7S+/evfnZz37Geeed12o4epW7/yxdurRh//3332flypVs2rSJGTNmsGrVKsAfueu0USP27NlDXV1di1GWgoKCFpqikhx2794NoN9BEvn5z3/OxRdfzIQJEygpKWk4rrJPHrW1tWzatIk1a9Zw++23s27dOm666SaVeZI45ZRT6NmzJ2vWrKG2tpba2lrOPvtsbrzxRmpraxtkq3JPPgcOHGD9+vUMHjzY1/6uyksjamtrWbNmDZMmTWpyfNKkSaxYsSKgVnUstmzZwq5du5p8Bzk5ORQVFel34AMPP/wwX/3qVznnnHPYunVrk89U9qnDcRw6d+6sMk8Sr7/+OiNGjKCwsLAh/f3vf2fBggUUFhayefNmlXuK6NSpEyeccAK7du3yvb8Hbp2cTsl1lb7qqqvM0KFDzZw5c0xFRYXp27dv4G1rLykvL8+MGjXKjBo1yhhjzM0332xGjRrV4I4+a9YsU1ZWZqZMmWKGDx9uFixYoC6MPqRHH33UlJWVmfHjxzdxY8zNzW3Io7L3P913331m7Nixpl+/fmbEiBHm3nvvNXV1debcc89VmacwNfc2UrknJ/30pz8148ePN/379zenn366WbRokSkvL2/4D/VR7sFfbLqlmTNnmi1btpiDBw+a1atXN3El1ZR4KioqMuGYP39+Q57i4mKzc+dOU11dbZYvX26GDx8eeLszPUVixowZTfKp7P1Nv/71rxvuJ6WlpebVV19tUFxU5qlLzZUXlXtykhu3paamxuzYscM8++yz5oQTTvBd7o7dURRFURRFyQjU5kVRFEVRlIxClRdFURRFUTIKVV4URVEURckoVHlRFEVRFCWjUOVFURRFUZSMQpUXRVEURVEyClVeFEVRFEXJKFR5URRFURQlo1DlRVGUhCguLmbt2rUpr7eoqAhjDMYYFi5c2HB82bJlzJ07N+by+vXr11BeENejKEr0qPKiKEpE3D/zSGn+/Pk8+OCDTJw4MbA2DhkyhCuvvDLhcrZv387RRx/Ngw8+mHijFEVJKtlBN0BRlPSl8dL106dP55577uH4449vOFZdXU1VVRVVVVVBNA+ATz/9lPLy8oTKyM7Opq6ujtLSUiorK31qmaIoyUJHXhRFiUhpaWlDKi8vxxjT5Nj+/ftbTBvNnz+fhQsXMnv2bHbv3k1ZWRl33nknWVlZ/OQnP2Hv3r1s376dq666qkldvXr14ve//z379u1jz549vPDCC/Tr1y+udodCIX784x+zd+9edu3aRXFxcZPPjTFcd911vPDCC1RWVnLHHXfEVY+iKMGgyouiKL5zzjnn0KtXL8aPH88tt9zC3XffzZIlSygrK2P06NHMmzePefPm0bt3bwC6dOnCsmXLqKysZPz48YwdO5bKykqWLl1KTk5OzPXPmDGDqqoqRo8ezaxZs7jzzjs599xzm+S5++67efHFFznxxBN54oknfLluRVFSR+BLaGvSpCn904wZM0xZWVmL48XFxWbt2rUN7+fPn2+2bNliHMdpOLZx40bzxhtvNLwPhUKmoqLCTJ8+3QDmqquuMhs3bmxSbk5OjqmqqjKTJk0K256ioiJjjDHdunVrcnzZsmXmzTffbHLsnXfeMQ888EDDe2OMmTNnTthym1+PJk2a0i/pyIuiKL6zYcMGjDEN70tLS1m/fn3D+/r6evbu3UtBQQEAp5xyCoMGDaKioqIh7du3j9zcXAYOHBhz/e+9916T97t27Wqoy2X16tUxl6soSnqgBruKovhObW1tk/fGmLDHQiF5fgqFQqxZs4bLL7+8RVmfffaZL/W7dbkEaWSsKEpiqPKiKErg/OMf/2D69Ol8+umnVFRUBN0cRVHSHJ02UhQlcBYsWMCePXt48cUXGTt2LP3792f8+PE89NBDHHvssUE3T1GUNEOVF0VRAqe6uprx48ezbds2nn/+eTZu3MgTTzxBly5d2L9/f9DNUxQlzXAQy11FUZSMoqioiOXLl9O9e/eEg9Q1pri4mClTpnDSSSf5VqaiKP6iIy+KomQ0O3bs4Kmnnkq4nD59+lBRUcHtt9/uQ6sURUkmOvKiKEpGkpub22APU1lZSWlpaULlZWVl0b9/fwBqamrYsWNHok1UFCVJqPKiKIqiKEpGodNGiqIoiqJkFKq8KIqiKIqSUajyoiiKoihKRqHKi6IoiqIoGYUqL4qiKIqiZBSqvCiKoiiKklGo8qIoiqIoSkahyouiKIqiKBnF/wPS0uilOQR8lgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "with plt.style.context('dark_background'):\n", + " plt.plot(hours, demand-wind_speed, color='white', linestyle='--', label='Net Demand')\n", + " plt.plot(hours, demand, color='cyan', label='Demand')\n", + " plt.plot(hours, wind_speed, color='lime', label='Wind')\n", + " plt.grid(alpha=0.2)\n", + " plt.ylabel('Demand [MW]')\n", + " plt.xlabel('Time [hr]')\n", + " plt.legend()\n", + " plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating the Technology Mix\n", + "\n", + "Let's try to meet demand with a properly sized wind turbine and storage combination." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Battery: 815.3412599999999 MW, WindTurbine: 0.0 MW]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "technologies = [lib.battery, lib.wind]\n", + "technologies" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setting up the Capacity Expansion Problem\n", + "\n", + "`osier.CapacityExpansion` inherits from a `pymoo.Problem` object. This class does not run the optimization itself, so we'll have to add the `pymoo` pieces later. Before we can instantiate the problem, though, we need to define the **objectives** to optimize over!\n", + "\n", + "### Defining objectives\n", + "\n", + "`osier` comes with a set of predefined objectives, such as cost and carbon emissions. Let's start with cost." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "from osier import total_cost" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "problem = CapacityExpansion(technology_list = [lib.natural_gas, lib.battery],\n", + " demand=demand*MW,\n", + " objectives = [total_cost],\n", + " solver=solver) # the objectives must be passed as a LIST of functions!" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Setting up a Pymoo algorithm\n", + "\n", + "Pymoo might seem intimidating, but it too requires only a few fundamental pieces\n", + "\n", + "1. An algorithm object (imported from Pymoo)\n", + "2. A problem to optimize (we created this in the previous cell!)\n", + "3. A stopping criterion.\n", + "\n", + "The rest is extra." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "==========================================================\n", + "n_gen | n_eval | n_nds | eps | indicator \n", + "==========================================================\n", + " 1 | 20 | 1 | - | -\n", + " 2 | 40 | 1 | 0.0515267085 | ideal\n", + " 3 | 60 | 1 | 0.000000E+00 | f\n", + " 4 | 80 | 1 | 0.0086827427 | ideal\n", + " 5 | 100 | 1 | 0.0247637865 | ideal\n", + " 6 | 120 | 1 | 0.0133694299 | ideal\n", + " 7 | 140 | 1 | 0.0041190723 | ideal\n", + " 8 | 160 | 1 | 0.0019521205 | f\n", + " 9 | 180 | 1 | 0.0019521205 | f\n", + " 10 | 200 | 1 | 0.0019521205 | f\n", + "The simulation took 3.694 minutes.\n" + ] + } + ], + "source": [ + "algorithm = NSGA2(pop_size=20)\n", + "\n", + "import time\n", + "start = time.perf_counter()\n", + "res = minimize(problem,\n", + " algorithm,\n", + " termination=('n_gen', 10),\n", + " seed=1,\n", + " save_history=True,\n", + " verbose=True)\n", + "end = time.perf_counter()\n", + "print(f\"The simulation took {(end-start)/60:.3f} minutes.\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Checking the results\n", + "\n", + "We can check the results by printing the results from the `res` object. The `res` object has two variables: `res.F`, which contains the objective function results, and `res.X` which contains the corresponding energy system portfolios.\n", + "\n", + "Seeing how the dispatch model uses each of the specified technologies can be useful for debugging purposes." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0.26153658])" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "array([0.77856667, 0.24877284])" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(res.F, res.X)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[NaturalGas_Conv: 4.097274671524196 MW, Battery: 1.3091886448082077 MW]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from osier import DispatchModel\n", + "lib.battery.capacity = res.X[1]*demand.max()*MW\n", + "lib.natural_gas.capacity = res.X[0]*demand.max()*MW\n", + "\n", + "technologies = [lib.natural_gas, lib.battery]\n", + "display(technologies)\n", + "\n", + "model = DispatchModel(technology_list=technologies,\n", + " net_demand=demand)\n", + "model.solve(solver=solver)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "with plt.style.context(\"dark_background\"):\n", + " fig, ax = plt.subplots(figsize=(8,4))\n", + " ax.grid(alpha=0.2)\n", + " ax.minorticks_on()\n", + " ax.fill_between(hours, \n", + " y1=0, \n", + " y2=model.results['NaturalGas_Conv'].values, \n", + " color='tab:orange', \n", + " label='Natural Gas')\n", + " ax.fill_between(hours, \n", + " y1=model.results['NaturalGas_Conv'].values, \n", + " y2=model.results['Battery'].values+model.results['NaturalGas_Conv'].values, \n", + " color='tab:green', \n", + " label='Battery discharge')\n", + " ax.fill_between(hours, \n", + " y1=0, \n", + " y2=model.results['Battery_charge'].values, \n", + " color='tab:pink', \n", + " label='Battery charge')\n", + " ax.plot(hours, model.net_demand, color='cyan', label='Net Demand')\n", + " ax.set_xlim(0,48)\n", + " # ax.set_ylim(0,5.5)\n", + " ax.legend(loc='upper left')\n", + " ax.set_ylabel(\"Demand [MW]\")\n", + " ax.set_xlabel(\"Time [hr]\")\n", + " plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Adding renewable energy to a model\n", + "\n", + "\n", + "The previous model used natural gas and batteries to meet demand. What if we wanted to include wind as well?\n", + "\n", + "#### How the Capacity Expansion model tests points\n", + "\n", + "By default, the capacity expansion model samples a set of values, $\\mathcal{X}_i$, between 0 and 1 (inclusive), for each\n", + "technology in the technology list where $\\mathcal{X}$ represents a fraction of the maximum energy demand (up to 100%). The capacity of \n", + "each technology is calculated by \n", + "\n", + "$\\mathcal{C}_i = \\mathcal{X}_i\\cdot \\max\\left(\\mathcal{E}\\right)$\n", + "\n", + "where $\\mathcal{E}$ is the energy demand time series.\n", + "\n", + "Therefore, the maximum possible capacity for any technology is equal to the maximum demand energy demand. This is fine for dispatchable technologies because we can always choose to turn a dispatchable technology on or off. This is not true for variable renewable energy sources,\n", + "such as wind. If we only built enough wind turbine capacity to match the peak demand value we\n", + "\n", + "1. cannot be sure that the peak production will align with peak demand and\n", + "2. it is extremely unlikely that peak production will be sustained for any amount of time.\n", + "\n", + "To get around this, we can specify a peak value greater than one. This value can be as high as you want -- but best results are usually found when the maximum capacity for a renewable source is \n", + "\n", + "$\\max\\left(\\mathcal{X}\\right) = \\frac{1}{CF}$,\n", + "\n", + "where $CF$ is the average capacity factor." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "problem = CapacityExpansion(technology_list = [lib.wind, lib.battery],\n", + " demand=demand*MW,\n", + " wind=wind_speed,\n", + " upper_bound= 1 / lib.wind.capacity_credit,\n", + " objectives = [total_cost],\n", + " solver=solver) # the objectives must be passed as a LIST of functions!" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "==========================================================\n", + "n_gen | n_eval | n_nds | eps | indicator \n", + "==========================================================\n", + " 1 | 20 | 1 | - | -\n", + " 2 | 40 | 1 | 0.000000E+00 | f\n", + " 3 | 60 | 1 | 0.0731198079 | ideal\n", + " 4 | 80 | 1 | 0.000000E+00 | f\n", + " 5 | 100 | 1 | 0.0023483206 | f\n", + " 6 | 120 | 1 | 0.0255449274 | ideal\n", + " 7 | 140 | 1 | 0.000000E+00 | f\n", + " 8 | 160 | 1 | 0.000000E+00 | f\n", + " 9 | 180 | 1 | 0.000000E+00 | f\n", + " 10 | 200 | 1 | 0.0002146070 | f\n", + "The simulation took 2.385 minutes.\n" + ] + } + ], + "source": [ + "\n", + "algorithm = NSGA2(pop_size=20)\n", + "\n", + "import time\n", + "start = time.perf_counter()\n", + "res = minimize(problem,\n", + " algorithm,\n", + " termination=('n_gen', 10),\n", + " seed=1,\n", + " save_history=True,\n", + " verbose=True)\n", + "end = time.perf_counter()\n", + "print(f\"The simulation took {(end-start)/60:.3f} minutes.\")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[WindTurbine: 10.135967781702929 MW, Battery: 2.7950442069865686 MW]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "'Max wind production: 10.135967781702929 MW'" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "technologies = []\n", + "for X,tech in zip(res.X,problem.technology_list):\n", + " tech.capacity = X*problem.max_demand\n", + " technologies.append(tech)\n", + "display(technologies)\n", + "# normalize the wind speed\n", + "wind_speed = (wind_speed / wind_speed.max()) * res.X[0]*problem.max_demand\n", + "net_dem = demand*MW - wind_speed\n", + "display(f\"Max wind production: {wind_speed.max()}\")\n", + "\n", + "model = DispatchModel(technology_list=[technologies[1]],\n", + " net_demand=net_dem)\n", + "model.solve(solver=solver)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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WDAajfTv35+oqKiOHk6XQBRF+vTpA9Clq/xptA5tHmhoc6DzMnhQetBtu4TxW8XhJVkFQWiyTGtz93n88cf517/+FXgeFhZGZmYmGzdurLPkn5aWhtfrxeVy1dKANbrdTb6XUON2u/EGqUO7fPlyJkyYwPz58wE1vOGpp55ClmXGjx/P0qVLMRgMjBkzhptvvhmn04m78j05nU6cTicejwer1crs2bO57LLLkGWZd955h3nz5nHZZZcBcOedd3L55Zdz1VVX8ffffzN37lzOOOMMfvzxx6A1cz0eT622hz+vua3KYz1v3jzmzp3LX3/9hcfj4aSTTsJqtXLHHXdwxRVX4PV6WbRoEYsXL+bYY48FwOfzIctyoG+/38/EiRM5dOgQkydPZuDAgbz11lusW7eO1157DYB33nmHHj16MH36dLKysjjnnHP47LPPGDx4MLt27Qrq/XUELpcLr9fL1q1b2b9/f0cPp0tQ5eVZv369dsE7itHmgYY2BzovphJT040q6RLGb5UnMTExMfAYID4+vtGl+JycnDpe3qb28Xq99ZaxlWW5zkTvqhP/p59+4tlnn0Wn02GxWBg+fDg///wzOp2OW265BVCTBa1Wa8ALXB9Go5Hrr7+ePXv2ALBw4UIeeOCBwOu33XYbC15awJcrvsZX6Ob666/n5JNPbts3Bzz33HN1kuqMRiOzZ89mzZo1gBozvm3bNkaPHs3atWvr7ae4uJjZs2cjyzIHDx5k6dKlTJ06lddee42ePXty8cUX061bN7KzswF45plnmDZtGrNmzeKf//xn277JEFDfnNZomKrPS/vMjm60eaChzYHOiawE/310iaCVvXv3kp2dzYknnhjYZjAYmDRpEr///nuD+61cubLWPgAnnXRSo/scDSxfvhy73c7o0aM57rjj2LFjB/n5+axYsYLRo0djtVqZPHky+/fvZ+/evQ3243A4AoYvQHZ2NvHx8QCEh4eTnJzMqr9WoVPDppEkiXXr1rXpewPqPYbP56u1ffv27RQXF9O/f/8G+9myZUutk1vN9zdixAhEUWTHjh2Ul5cH/iZNmkSvXr1C+G40NDQ0NDQ0GkMwN8+X22k8vzabjd69eweep6enM3ToUIqKijh48CDPPfcc9957Lzt37mTnzp3ce++9OJ1O3nvvvcA+b775JpmZmdx7770APP/88/z888/c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YMGCBWzevDngQf7ggw8YPXo0ANfccS2pQ8Yz4ZTzADhx8rEsfmEhi5YsYvgJI7juuuuYOXMm//znP2uN5eGHH+bzzz9n8ODBvPHGG7zxxhvMmjWrVpsrr7ySX375hT179tT7fubOncuVV17JVVddxbHHHkt0dHQg1rc+Ro4cyQsvvMADDzxA3759mTZtGj///HPg9ccff5zbb7+d+fPnM2DAAC655BJyc3Nr9fHoo4+yYMEChg0bxo4dO/jvf/8bMOzNZjN//PEHp59+OoMGDeKVV17h7bffZsyYMbX6mDFjBn6/nwkTJnDdddeRlpbG//3f//HZZ58xbNgwXn75ZR599NFa+wwaNIhvv/2WTz75hCFDhjB9+nSOPfZYFi5c2OD71dDQ0DhaSb9vOEkXmej7VI+OHopGB6LF/B6lnH766ZSXlwNgt9vJysri9NNPR1GqE9JqGlr79+/nmWeeYfr06Tz99NO43W4qKirw+/21DEGPpMbRlpQ4yc0vCGz/x6038vTCl3n3k3cB2LZvK/fffz9PPfUU8+bNC7R77733WLx4ceD54sWLmTdvHqNHj2bt2rXo9Xouu+wy7rzzzgbf22233cbjjz/OJ598AsD111/PySef3GD71NRUHA4HX331FRUVFRw4cID169cHPptbb72VOXPm8NZbbwGwZ88efvvtt1p9LFiwgK+//hpQY6H//vtvevfuzfbt28nKyuKZZ54JtF24cCHTpk3jggsuqKUmsmvXLv7xj38Enj/++ONs376du+66C4AdO3YwaNAg7rvvvkCbO++8k/fee4/nn38+0Mctt9zCihUruOGGG/B4PA2+bw0NDY2jifR7hmPrreV6HGnUSq4PEs34PUpZvnw5N9xwA6Auy99444188803jBkzhgMHDgBw3nnncdttt9G7d2/sdjt6vb5J5QudvTJWVakdej5iyEBGDR3M3bdeX/k66HQ6LBYLFosFl8sFwLp162rtl5OTw9KlS7nyyitZu3Ytp59+OmazuVZYQk3Cw8NJTk5m5cqVgW2SJLFu3bo6oQ9VfP/99+zfv589e/awbNkyli1bxqefforL5aJ///6YzWZ++umnRt/3xo0bA4+zs7MBiI+PZ/v27YiiyN1338306dNJSUnBZDJhMplwOBy1+jj8vfft25e1a9fW2na49N7IkSPp3bs3l156aWCb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w+dp/dXpdMz0QERERDGBwS9ppr6+3vt/tvwSERFRLGDwS5rxtPy2trbCarVGuTREREREcRL8zpgxA0IIn8uUKVP8bpeent5l/YMHD0aw5H2bJ/jlYDciIiKKFYZoFyAQBw4cwPDhwzs998orr+Duu+9GdnZ2t9tu2bIFM2fO9D52OByalJG68qQ7Y5cHIiIiihVxEfw6nc5OA6YMBgPuv/9+LFy4sMdt7XY7B1tFSWNjI8rKylBYWBjtohAREREBiJPg92L3338/hg4diuXLl/e47u233w6j0YjGxkbs3bsXf/rTnzoNxLpYYmIikpKSvI9TU1MBuDMW6HRx0UskpqxcuRIA4vq983z28fw3UHhYBwhgPSDWgVgWzGcSl8HvU089hW3btqGysrLb9bZs2YI1a9agvLwc48aNwyuvvILdu3dj8uTJfrs/vPjii5gzZ06X52+88Ua0tLSoUXyKMzqdDhMmTAAAKIoS5dJQNLAOEMB6QKwDsax///4BrysBENoVpXuzZ8/2GWh2NGXKFOTk5Hgfjxo1CuXl5XjkkUewfv36oI43fPhwlJeX47//+7+xYcMGn+v4avmtqqrCkCFD0NTUFNTxqHfQ6XSYNGkScnNzebLro1gHCGA9INaBWJaamorGxkYMHDiwx8bKqLb8Lly4EKtWrep2nbKysk6PZ86cCbPZjM8//zzo49XW1qK8vBzjx4/3u47D4fDZKqwoCit6H+b5/FkH+i7WAQJYD4h1IFYF83lENfg1m83ejACBmjlzJlauXAmXyxX08YYMGYLRo0ejpqYm6G2JiIiIKP7FVY/tO++8E1deeSWWLl3q8/WCggI88MADANx9P+bPn49vfvObGDNmDGbMmIFNmzbBZDL57fJARERERL1bXA14e+qpp7B//36cPn3a5+sTJ07EoEGDAACyLOOGG27A448/jsGDB6OmpgYZGRl49NFH0draGsliExEREVGMiKvg97HHHuv2dUmSvP+32Wy49957tS4SEREREcWRuOr2QEREREQUDga/fsyaNQv5+fk4cuRItItCRERERCph8OvH4sWLkZaWhqlTp0a7KERERESkEga/RERERNRnxNWAt2hKTU1lQus+SqfToX///qwDfRjrAAGsB8Q6EMtSU1MDXpfBbw+GDBkCAKioqIhySYiIiIioO6mpqbE9vXE8aGhoAACM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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "with plt.style.context(\"dark_background\"):\n", + " fig, ax = plt.subplots(figsize=(8,4))\n", + " ax.grid(alpha=0.2)\n", + " ax.minorticks_on()\n", + " ax.fill_between(hours, \n", + " y1=0, \n", + " y2=np.array(wind_speed), \n", + " color='tab:blue', \n", + " label='Wind Turbine')\n", + " ax.fill_between(hours, \n", + " y1=np.array(wind_speed), \n", + " y2=model.results['Battery'].values+np.array(wind_speed), \n", + " color='tab:green', \n", + " label='Battery discharge')\n", + " ax.fill_between(hours, \n", + " y1=0, \n", + " y2=model.results['Battery_charge'].values, \n", + " color='tab:pink', \n", + " label='Battery charge')\n", + " ax.fill_between(hours, \n", + " y1=model.results['Battery_charge'].values, \n", + " y2=model.results['Battery_charge'].values+model.results['Curtailment'].values, \n", + " color='gray', \n", + " label='Curtailment')\n", + " ax.plot(hours, demand, color='cyan', label='Net Demand')\n", + " ax.set_xlim(0,48)\n", + " # ax.set_ylim(0,5.5)\n", + " ax.legend(loc='upper left')\n", + " ax.set_ylabel(\"Demand [MW]\")\n", + " ax.set_xlabel(\"Time [hr]\")\n", + " plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Multiple Objectives\n", + "\n", + "What if we want to examine multiple objectives?\n", + "\n", + "We simply have to import the objective we want and add it to the list! Let's checkout lifecycle CO $_2$ emissions." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "from osier import annual_emission\n", + "\n", + "# the default emission is `lifecycle_co2_rate`" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "problem = CapacityExpansion(technology_list = [lib.wind, lib.natural_gas, lib.battery],\n", + " demand=demand*MW,\n", + " wind=wind_speed,\n", + " upper_bound= 1 / lib.wind.capacity_credit,\n", + " objectives = [total_cost, annual_emission],\n", + " solver=solver) # the objectives must be passed as a LIST of functions!" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "==========================================================\n", + "n_gen | n_eval | n_nds | eps | indicator \n", + "==========================================================\n", + " 1 | 20 | 6 | - | -\n", + " 2 | 40 | 4 | 0.0158631600 | nadir\n", + " 3 | 60 | 6 | 0.0046803095 | nadir\n", + " 4 | 80 | 13 | 0.0075483249 | ideal\n", + " 5 | 100 | 11 | 0.0286189132 | ideal\n", + " 6 | 120 | 16 | 0.0143108619 | f\n", + " 7 | 140 | 19 | 0.0038096293 | ideal\n", + " 8 | 160 | 20 | 0.0123935101 | f\n", + " 9 | 180 | 20 | 0.0488020532 | nadir\n", + " 10 | 200 | 20 | 0.0176305024 | f\n", + "The simulation took 3.743 minutes.\n" + ] + } + ], + "source": [ + "algorithm = NSGA2(pop_size=20)\n", + "\n", + "import time\n", + "start = time.perf_counter()\n", + "res = minimize(problem,\n", + " algorithm,\n", + " termination=('n_gen', 10),\n", + " seed=1,\n", + " save_history=True,\n", + " verbose=True)\n", + "end = time.perf_counter()\n", + "print(f\"The simulation took {(end-start)/60:.3f} minutes.\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualizing Multi-objective Results\n", + "\n", + "Rather than identifying a single solution, a multi-objective problem generates a *set* of co-optimal solutions. Rather than showing the optimal dispatch results, let's look the the Pareto front.\n", + "\n", + "\n", + "### Objective Results" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1.19945119e+00, 4.48339838e-06],\n", + " [5.20590010e-01, 4.22836310e-05],\n", + " [5.94956650e-01, 3.31273859e-05],\n", + " [6.39785553e-01, 2.43974513e-05],\n", + " [7.08193933e-01, 1.88392323e-05],\n", + " [1.03741440e+00, 5.01230981e-06],\n", + " [6.76877772e-01, 2.19705621e-05],\n", + " [7.63720969e-01, 1.58503836e-05],\n", + " [8.60297364e-01, 1.15062221e-05],\n", + " [5.53008596e-01, 3.79200937e-05],\n", + " [8.09557178e-01, 1.54093261e-05],\n", + " [9.93427512e-01, 7.06494072e-06],\n", + " [8.48928279e-01, 1.35553105e-05],\n", + " [9.43233259e-01, 1.05890851e-05],\n", + " [9.84786540e-01, 8.96392716e-06],\n", + " [1.03492980e+00, 5.01576660e-06],\n", + " [5.23407779e-01, 4.19378637e-05],\n", + " [9.56761295e-01, 1.01734675e-05],\n", + " [5.33459304e-01, 3.95948800e-05],\n", + " [5.43811675e-01, 3.82503906e-05]])" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(res.F)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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7oJj0qRJ5OXlcddddxUZuzFp0iQSExOZNGkSL774otOCFKksyzHf+qonjYqIlI/dl1Qef/xxxo0bV6TYAPMsrS+99BJRUXokkriPAsy3vn5qeVWxISJiP7sLjqCgoFKni09LSysymZqIiIh4NrsLjrNnz9KkSZMStzdt2rTYWVpFRETEc9ldcKxdu5apU6dSo0aNItt8fHx44403WLt2rVOCExEREfdg96DR1157jdTUVA4ePMicOXPYt28fYJ4Z9rnnnsPX15eBAwc6PVARERGpvuwuONLT0+nUqRPvv/8+06ZNs024ZhgGX331FaNGjeLHH390eqAiIiJSfTk0eZt1Svg6depw9913A3Do0CEuXLjg1OBERETEPZRrttiLFy/y/fffOysWERERcVN2Dxp98MEH2b17NwEBAUW21apVi7S0NLp06eKU4ERERMQ92F1wvPDCC3zwwQdkZ2cX2Xbp0iXmzZunp4yKiIhIIXYXHG3bti31ttfExETat29frqBERETEvdhdcDRo0KDE6egBrl+/zq9//etyBSUiIiLuxe6CIz09nTZt2pS4PTQ0lIyMjHIFJSLFMwERQIzl1e7/gEVEKond/79avXo1r7/+Or6+vkW2+fn58b//+7+sWrXKKcGJyE+igEPARuATy+shS7uISFVn922xU6ZMITo6mgMHDvDee++xf/9+DMOgVatWjBw5kttuu42pU6e6IlYRjxUFfA6sAp4C0oDWwCuW9r7A8kqLTkTk59ldcJw+fZrOnTvz17/+tciTRtetW8dzzz1X7NT1IuIYE5CAudh4HDAs7d9a1lcAM4CVQIELjh0OBAEZQJILjiEinsGhB38dP36c3//+99SpU4eQkBC8vLw4ePAgFy9edHJ4IhIONMV8ZsO4ZZsBTAOSLf02OfG4UZgLnaY3tR0FxqKzKSJiv3KNObt48SKpqal8//33KjZEXCTI8ppWwva0W/o5g/USzi7gfuB2y+suS7vGjYiIvTTIXaSKs97z1bqE7a1v6VdeJmA6P13C+RbI4adLOKswX8LR/zxExB5V6v8Z4eHhfPnll6Snp2MYBr179y61f0REBIZhFFlatGhRQRGLuF4S5ksZrwBet2zzAiYARyz9nCEM82WUeEq+hNMM8yUcEZGyqlIFh7+/Pzt27GDUqFF2va958+YEBgbaloMHD7ooQpGK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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "with plt.style.context('dark_background'):\n", + " fig, ax = plt.subplots(1,1,figsize=(6,4))\n", + "\n", + " ax.scatter(res.F[:,0], res.F[:,1], edgecolors='red', facecolors='k')\n", + " ax.set_ylabel(r\"Lifecycle CO$_2$ Emissions [MT/MWh]\")\n", + " ax.set_xlabel(r\"Total Cost [M\\$]\")\n", + " ax.grid(alpha=0.2)\n", + "\n", + " plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Design Results\n", + "\n", + "Below is a boxplot showing the range of values for each technology in the simulation. \n", + "\n", + "**Boxplots are not the best way to visualize these results, but they are the simplest.**\n", + "\n", + "Since we used boxplots, we lose information about which combination of technologies corresponds\n", + "to each solution in the objective plot, above.\n", + "\n", + "The spread of these values can suggest a degree of certainty about the level of capacity needed\n", + "to meet demand while minimizing cost and emissions. We can see a huge spread in wind energy and \n", + "very small spreads for natural gas and batteries. This indicates a no-lose scenario for pursuing\n", + "the latter two technologies, while addressing the question about the amount of wind capacity\n", + "necessary to meet demand is a lot less clear." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[2.53341702, 0.04144996, 0.55710663],\n", + " [0.81401452, 0.41946283, 0.30094145],\n", + " [0.97601979, 0.40287869, 0.35417943],\n", + " [1.1384407 , 0.39580232, 0.25387131],\n", + " [1.30377163, 0.39488571, 0.25098929],\n", + " [2.11218424, 0.09849739, 0.56117257],\n", + " [1.21045201, 0.42561055, 0.25098929],\n", + " [1.42508911, 0.41533998, 0.24747279],\n", + " [1.66520048, 0.39488571, 0.25098929],\n", + " [0.8920409 , 0.41946283, 0.30094145],\n", + " [1.47365324, 0.50706447, 0.25557499],\n", + " [2.03385808, 0.29352286, 0.26963251],\n", + " [1.56593795, 0.50884959, 0.25559555],\n", + " [1.75907345, 0.48251036, 0.34948459],\n", + " [1.88970608, 0.50711056, 0.25422291],\n", + " [2.10823443, 0.09849739, 0.55725319],\n", + " [0.82023035, 0.42580387, 0.29455337],\n", + " [1.79151691, 0.48189384, 0.34948459],\n", + " [0.86380735, 0.41930255, 0.26382456],\n", + " [0.88775931, 0.41930255, 0.26573897]])" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(res.X)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from osier import get_tech_names\n", + "with plt.style.context('dark_background'):\n", + " fig, ax = plt.subplots(1,1,figsize=(6,4))\n", + "\n", + " bplot = ax.boxplot(res.X,\n", + " patch_artist=True,\n", + " labels=get_tech_names(problem.technology_list))\n", + " ax.set_ylabel(\"Fraction of Peak Demand\")\n", + "\n", + " # fill with colors\n", + " colors = ['tab:blue', 'tab:orange', 'tab:green']\n", + " for patch, color in zip(bplot['boxes'], colors):\n", + " patch.set_facecolor(color)\n", + "\n", + " for median in bplot['medians']:\n", + " median.set_color('red')\n", + "\n", + " ax.yaxis.grid(True, alpha=0.2)\n", + " plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Correlation between Wind Turbines and Natural Gas\n", + "\n", + "Perhaps we can glean more information by examining the correlation between wind and natural gas." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "with plt.style.context('dark_background'):\n", + " fig, ax = plt.subplots(1,1,figsize=(6,4))\n", + "\n", + " ax.scatter(res.X[:,0], res.X[:,1], edgecolors='yellow', facecolors='k')\n", + " ax.set_ylabel(r\"Natural Gas\")\n", + " ax.set_xlabel(r\"Wind Turbines\")\n", + " ax.set_title(\"Fraction of Peak Demand\")\n", + " ax.grid(alpha=0.2)\n", + "\n", + " plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Interestingly, the capacity for natural gas is fairly stable while the capacity for wind turbines is less than double the peak demand. But the natural gas capacity drops off quickly once the wind turbine capacity *exceeds* twice the peak demand." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "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.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/source/examples/dispatch_tutorial.ipynb b/docs/source/examples/dispatch_tutorial.ipynb new file mode 100644 index 0000000..26c5335 --- /dev/null +++ b/docs/source/examples/dispatch_tutorial.ipynb @@ -0,0 +1,533 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Dispatch Tutorial\n", + "\n", + "In this tutorial you will learn how to run a dispatch model in `osier` using\n", + "\n", + "1. `osier` technology objects\n", + "\n", + "2. The `osier` dispatch algorithm\n", + "\n", + "A dispatch model determines the amount of energy each technology produces at each timestep. This implementation uses a linear program constructed with `Pyomo`. Since it is a linear program, the model has perfect foresight and \n", + "minimizes total variable cost.\n", + "\n", + "First, we must import some key ingredients." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# basic imports\n", + "import pandas as pd \n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from unyt import kW, minute, hour, day, MW\n", + "\n", + "# osier imports\n", + "from osier import DispatchModel\n", + "import osier.tech_library as lib\n", + "\n", + "\n", + "# automatically set the solver\n", + "if \"win32\" in sys.platform:\n", + " solver = 'cplex'\n", + "elif \"linux\" in sys.platform:\n", + " solver = \"cbc\"\n", + "else:\n", + " solver = \"cbc\"\n", + "\n", + "print(f\"Solver set: {solver}\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating the technology portfolio\n", + "\n", + "In order to run a dispatch model you must provide a mix of energy generating technologies. The technologies used in the dispatch model should be added to a python `list`. \n", + "\n", + "In general, **dispatch models do not optimize the capacity of each generator.** They only optimize the amount of energy each generator produces (i.e., dispatches). \n", + "\n", + "If you forget what technologies are available in `osier` (or what they're called), simply look at the catalog!" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Import NameTechnology Name
0batteryBattery
1biomassBiomass
2coalCoal_Conv
3coal_advCoal_Adv
4natural_gasNaturalGas_Conv
5natural_gas_advNaturalGas_Adv
6nuclearNuclear
7nuclear_advNuclear_Adv
8solarSolarPanel
9windWindTurbine
\n", + "
" + ], + "text/plain": [ + " Import Name Technology Name\n", + "0 battery Battery\n", + "1 biomass Biomass\n", + "2 coal Coal_Conv\n", + "3 coal_adv Coal_Adv\n", + "4 natural_gas NaturalGas_Conv\n", + "5 natural_gas_adv NaturalGas_Adv\n", + "6 nuclear Nuclear\n", + "7 nuclear_adv Nuclear_Adv\n", + "8 solar SolarPanel\n", + "9 wind WindTurbine" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lib.catalog()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[NaturalGas_Conv: 8375.1331 MW]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# create a capacity portfolio of only natural gas.\n", + "\n", + "technology_mix = [lib.natural_gas]\n", + "display(technology_mix)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Adding energy demand\n", + "\n", + "The other thing a dispatch model needs in order to run is a demand profile to optimize. We will create a dummy demand profile for a 48-hour period for our model to optimize." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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++23iIqKQnBwMDZv3ozPPvsMDRo0AAA0btwY27dvx2+//Ya+ffti9OjR8PX1xTfffFOjx585cyb279+PPn364N1338V7772HwMDAcse88cYbePvtt9G1a1ds2rSp1s+ZiBxHcOPGjZuqbfLkySI9Pb3S7StXrhRr1qwxX9+xY4fYtWuX+brRaBRZWVli1apV5tt8fX2FEEKEhoYKAOL//u//xMaNG8udt3Xr1kIIITp16mRVPPHx8WL16tXlbktJSRFPPfWUACACAgKEEEI899xzVZ634vPhxo2bvjb2ISIipxEXF2feLykpwZUrV3DkyBHzbVq/n5YtWwIAevXqhWHDhiErK6vSuTp06IDTp0/X+PEBICUlxfxYmv3791t1TiLSByZEROQ0CgsLy10XQlS6DQCMRtkboGHDhvjxxx8xe/bsSsckJyfb5PG1x9Ko7AxORDXHhIiIXNbBgwcxbtw4JCQkoLi4WHU4RKRj7FRNRC5rxYoVaNq0Kb788kv07dsXt956K26//XZ88sknlWp2iMi98RuBiFxWcnIyBg4ciDp16mDz5s04cuQIli1bhoyMDJSUlKgOj4h0xADZu5qIiCCH9i9btgxNmjSx6XlXrlwJHx8fjB071qbnJSLbYA0REVEFPj4+yMrKwhtvvFHrcw0aNAhZWVmcpJFI51hDRERURsOGDeHr6wsAyMjIwJUrV2p1vvr166N169YA5JIktlgShIhsjwkRERERuT02mREREZHbY0JEREREbo8JEREREbk9JkRERETk9pgQERERkdtjQkRERERujwkRERERuT0mREREROT2/j8KPF0EtTnlXwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "n_hours = 24 # hours per day\n", + "n_days = 2 # days to model\n", + "N = n_hours*n_days # total number of time steps\n", + "phase_shift = 0 # horizontal shift [radians]\n", + "base_shift = 2 # vertical shift [units of demand]\n", + "hours = np.linspace(0,N,N)\n", + "demand = (np.sin((hours*np.pi/n_hours*2+phase_shift))*-1+np.ones(N)*(base_shift+1))\n", + "\n", + "with plt.style.context(\"dark_background\"):\n", + " plt.plot(hours, demand, color='cyan')\n", + " plt.grid(alpha=0.2)\n", + " plt.ylabel('Demand [MW]')\n", + " plt.xlabel('Time [hr]')\n", + " plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The demand peaks in the afternoon and reaches a minimum around 6 A.M. Although reasonable, we could make it slightly more \"realistic\" by adding some random noise. We can also adjust curve so the area under the curve matches a known amount of demand." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjwAAAGwCAYAAACtlb+kAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABrO0lEQVR4nO3deXhU1f0/8PdMVhJCAkIStoQ1gAQIYRNli4hiCz+xoqitgnxdqBsWtQpVwbYiLRZE1NYVwVqsYsEFQQRRWYKiIQQhhDUs2YAQspF97u+Pk5OZ7LPcO/fOzPv1PPPMzWSWwyWTvOeczznHBEABERERkRcz690AIiIiIq0x8BAREZHXY+AhIiIir8fAQ0RERF6PgYeIiIi8HgMPEREReT0GHiIiIvJ6/no3QA9dunRBcXGx3s0gIiIiB4SFhSE7O9upx/pc4OnSpQuysrL0bgYRERE5oWvXrk6FHp8LPLJnp2vXrqr38pjNZgwePBhpaWmwWCyqPjc1j+ddHzzv+uB5dz+ec300PO9hYWHIyspy+m+3zwUeqbi4WJPAU1paiuLiYr4p3IjnXR887/rgeXc/nnN9qH3eWbRMREREXo+Bh4iIiLweAw8RERF5PQYeIiIi8noMPEREROT1GHiIiIjI6zHwEBERkddj4CEiIiKvx8BDREREXo+Bh4iIiLweAw8RERF5PQYeIiIi8noMPETUMn9/ICBA71YQEbmEgYeImnf77UB2NpCSAphMereGiMhp/no3gIgMKDoa+Oc/gWnTxNedOgGRkUBenq7NIiJyFnt4iKi+3/0OOHhQhJ3KSqC8XNzevbuuzSIicgUDDxEJnTsDn30GvP8+0KED8PPPwLBhQGqq+H63bro2j4jIFQw8RATMnCl6daZOBSoqgAULgKuuAn75BThzRtyHPTxE5MFYw0Pky7p2Bd58E/jVr8TXP/4I3HMPcOiQ9T4MPETkBRh4iHzV1VcDX34JhIeLOp3nngOWLQNqaurf7+xZcc0hLSLyYAw8RL7qD38QYWfvXuDuu4HDh5u+H3t4iMgLsIaHyFd16SKuFy9uPuwADDzku0wm4G9/g3L77Xq3hFTAHh4iX9W5s7jOzW35fjLwdO0KmM2AxaJtu4iMIjER+OMfoeTlWevcyGOxh4fIV0VHi+vWAk9uLlBdLbaYiIrSvl1ERtGjh7iOioLFn/0Dno6Bh8gXtWsHtGkjjltbPdliEdtLABzWIt9i8/Ne3bGjjg0hNTDwEPki2btTWAiUlbV+f9bxkC+y+XmvYuDxeAw8RL7I3uEsiYGHfBEDj1dh4CHyRTLw5OTYd3+uxUO+iIHHqzDwEPkie2doSezhIV/EwONVGHiIfBGHtIha5u9v/WAAoKpTJx0bQ2pg4CHyRY4GHjmkxcBDvqJLF7HuVC328Hg+Bh4iX+RsD0/nzoCfnzZtIjKSBuGegcfzMfAQ+SJHi5bz8oDKShF2bLr5ibyWDDyFhQAYeLwBAw+RL3K0h0dRgKwsccxhLfIF8uf8xx8BANXt20Mx80+mJ+P/HpGv8fMDIiPFsb2BB+DUdPItMvCkpAA1NfXfN+SRGHiIfE2nTqIYs6YGuHDB/sdxphb5EvlznpkJnDsnjrt00a055DoGHiJfI4ezzp1zbOdzBh7yJfLn/MwZa60b69c8GgMPka9xtH5HYuAhX8LA43UYeIh8jaMztCTW8JCvCAqy1uvYBh753iGPxMBD5GvYw0PUMhnqS0uBgoK6wKOwh8ejMfAQ+RpH99GSZOCJjgYCAtRtE5GR2A5nATDJ9woDj0dj4CHyNc728Fy4AFRUiBlenK1C3qxB4GENj3fQNfAsXLgQiqLUu6Snp7f4mOnTpyM9PR1lZWVIS0vDjTfe6KbWEnkJZwOPorCOh3wDA49X0r2H55dffkF0dHTdZcyYMc3ed/To0Vi7di3eeecdDB06FBs2bMCGDRswcOBAN7aYyMM5G3gA1vGQb2gYeLKzxXV0NGAy6dMmcpnugae6uhp5eXl1l/z8/GbvO3fuXGzevBkvvfQSDh8+jOeeew4pKSl4+OGH3dhiIg/n7CwtgIGHfEPDwJOXJ64DAoArrtCnTeQyf70b0LdvX2RlZaG8vBzJycmYP38+zsgfsgZGjx6NZcuW1bvtq6++wrRp05p9/sDAQAQFBdV9HRYWBgAwm80wq7wvinxOtZ+XWsbzbj8lJARKu3YAANO5czA5eM4sNvtp8bzrg+dde5aYGACAKSsLJrMZ5poaoKAA1e3bw9S1K0wXL+rcQt/Q8Gfd1Z95XQPPDz/8gFmzZiEjIwOdO3fGwoULsWPHDsTHx6OkpKTR/aOjo5Enk3atvLw8RLewNsL8+fOxaNGiRrcPHjwYpaWlLv8bbJnNZsTFxQEALI6sYEsu4Xm3X0W3bjgIwFxWhiF9+sDRzvnzAM4ACI+PR9+EBJ53HfDnXXv7e/RADYD+oaFok5AAs9mMY8XFuNS+PXqPGYN2fn56N9EnNPxZDw0Nden5dA08mzdvrjs+cOAAfvjhB5w6dQq33XYb3n33XVVe48UXX6zXKxQWFoasrCykpaWhuLhYldeQZPpMTU3lLyI34nm3nxISAgCwZGdjf2qq44+vLVYuDAtDau3jed7diz/v2lLatoVSOxJw+OuvYSopgdlsRkhWFhATg+NlZTA58d5Rm+LnB4SGwlRUpHdTNNPwZ12O0DhL9yEtW4WFhThy5Aj69OnT5Pdzc3MRFRVV77aoqCjktlB8WVlZicrKyka3WywWTX5ZyOflLyL34nm3k80u6U6dq1OnxHX37vXOOc+7e/G8a6hrV3F96RKUoiIotTf71260q0RFQTHCeX/vPeA3v4EyfDhw+LDerdGMmr9nDDUIHBoait69eyOnmWLK5ORkTJw4sd5tkyZNQnJysjuaR+T5XJmhBVinpUdFQQkMVKdNREbSsGC5VsD58+LAKFPTr78eCA0FfvtbvVviMXQNPEuXLsW4ceMQGxuL0aNHY/369aipqcHatWsBAKtXr8bixYvr7r9ixQpMnjwZ8+bNQ79+/bBw4UIMHz4cr776ql7/BCLP4soMLQDIzwfKysSx/CRM5E2aCzy1PTyGCDxt2wJytOP//T992+JBdA083bp1w9q1a5GRkYGPPvoI+fn5uOqqq3Ch9gcrJiYGnW1+uJKTk3HnnXfi/vvvx/79+zF9+nRMmzYNBw8e1OufQORZXO3hATg1nbybJwSeXr2sx4MHA7Gx+rXFg+haw3PHHXe0+P2kpKRGt61btw7r1q3TqklE3s3ZfbRsnT0LxMWJPwz8sEHexhMCT+/e9b+eOhXgSEerDFXDQ0QaU7OHh0Na5I1aCzxG2EdOBp7qanHNYS27MPAQ+RIVA4/CIS3yRq0FnuBgICLCvW1qSAaeTz4R1xMmALULilLzGHiIfIXJZC10dLZoGWAND3m3ZgKPuaICKCgQX+g9rCUDz+bNQHq62PJi8mR92+QBGHiIfEWHDuIXIwCcO+f883DHdPJW7duLqd6A9efcllF2TZeB5/hx4LPPxDGHtVrFwEPkK+Rw1vnz1rF/Z8hPvgw85G1k787580B5eePvGyHw+PsDtXt91Qs8v/qV+B41i4GHyFeoMUMLsAaeTp1gsdmYl8jjNTOcVUe+d/QMPDExItiUlYkAtmePCGjt2wPXXKNfuzwAAw+Rr1CjYBkALl0Cajf3rZRbVRB5g9YCj+zh0XOmlhzOOnECUBTAYgE2bhS3cVirRQw8RL5CrcAD1NU3VDXY247Io7USeEzZ2eJAzx4e2/odiXU8dmHgIfIVrm4rYav2D0IlAw95E08Y0moq8GzZAlRUAH36AAMG6NMuD8DAQ+Qr1OzhYeAhb2TvkJYRAs+JE9bbSkuBbdvEMXt5msXAQ+QrOKRF1DJPCjy2PTwAh7XswMBD5CvUmqUFsIeHvI/JZF1qobXAExYmdizXg9w4tGHg+eILcX3VVUCnTu5tk4dg4CHyFRoMabGHh7xGp05AUJCY9ZSV1eRdTCUldTMUdenliYoSQctiATIz638vKwv46SfAbAZ+/Wv3t80DMPAQeZJevcQCY44KDBQrLQPs4SFqihzOyslpeWFOPWdqyeGsM2eAysrG3//8c3HNYa0mMfAQeYq+fYG9e8WaG8OGOfZYGUxs9wNyRW0NT014OJSQENefj0hvrdXvSHrW8TQ3nCXJOp7rrxebnFI9DDxEnqBDBxF0ZC/NyJGOPV7N4SwAKCoSF4BbTJB38ITA01zBspSaKtofGgpce63bmuUpGHiIjC4wEPjf/0QPjzR4sGPPoXbgAbhrOnkXbwg8AGdrtYCBh8jo3ngDGD8eKCwEXnhB3DZokGPPoeYMLUnuJs3AQ97A2wLP1Kli5hnVYeAhMrL584FZs0QR5W23AR9+KG6Pj3fsebTo4ZGBp2tX9Z6TyFVRUcCOHeL94gh7A48RipZbCjzffgsUF4v9vhIT3dIsT8HAQ2RU06cDixeL40ceEcvHZ2QAVVVAeLjYNdleam4rUctU+4dBYQ8PGcm0acCYMcDzzzv2OEd7eNy9gWjbttbJB7arLDdUWQl89ZU45rBWPQw8REY0ciSwZo04Xr4c+Ne/xHFVFZCeLo4dqePRsoeHgYeMpGNHcd2/v/0fCsxma4Ax6pCWnKGVny+Gt1vCOp4mMfAQGU1MDPDpp0CbNmJdjSeeqP/9AwfEtSN1PFoGHs7SIiO54grr8fXX2/eYzp0Bf3/xgSIvr+X7ysDTvr17p37bM5wlffklUFMDJCQ41hPs5Rh4iIwkLEwsER8dLaaY3nmnWFXVllECj/wkzMBDRmIbeG64wb7HyF7KrKzG77eGLl0CysvFsXxfuYMjgSc/H9i1SxxPnapdmzwMAw+RUfj5iaLkQYNEYeTUqdZl7G05E3i0mKUlA09EhH77ChE1JIe0AOC668T7qjX21u9IegxrORJ4AA5rNYGBh8goli8X20Zcvix+Sckho4bS0sR1v35ijZ7WhIdbu95VDDym0lL4ycUHWcdDRmHbwxMRAYwY0fpjHA08eszUam2V5YZk4JkwQfQcEwMPkSH8+tdiJhYA/O53wM8/N3/fs2dFt3pAgCjMbI3sdi8oEFtLqCjg3DlxwMBDRiEDj/zAYM+wlrM9PO6cqeVoD8/Ro8Dhw+JDkb1De16OgYfICCZNEtdvvAGsX9/6/R0Z1tKifqdWoHxO1vGQUcghrbVrxbU9hctGH9Ly9wdiY8WxvYEH4GaiDTDwEBlBQoK43rnTvvsbJfDIGS3s4SEj8PMTw1iANfCMGmW9rTlGDzwxMSL0lJU5tpaWDDw33shVl8HAQ2QMMvDs32/f/Q0SeAIYeMhI5Oa6gKh1O3RIhKCJE1t+nNEDjxzOOnECUBT7H5ecLDb57djR+jvGhzHwEOmtRw9RWFxRIcbc7SELl+1ZfFCLGVq1AlnDQ0Yih7MuXhTr0MgVh1sa1goIsK5g7AmBxxHV1WKrCcA6bO7DGHiI9DZkiLg+eFAsfGaPX34R1926td5dr2UPD2t4yEhkwXJ+vrjeskVct1S027WrWGm5rAy4cMG+13H3LC1HC5Ztff21uGbgYeAh0p3sak5Ntf8xRUXAqVPiuLVhLQ320ZJYw0OGInt4ZOD57juxSGBsLBAX1/Rj5M9uc8tANEW+lyIjRQ+R1lwJPFu3iusxY9y7MrQBMfAQ6c3R+h3J3joeLYuW5ZBWWJgYliPSk+zhkT01ZWVi53Sg+V4eR+t3ABGoZG+sHA7TkiuB5/BhEeaCg0Xo8WEMPER6c6aHB7DW8egYeMzl5dZP0xzWIr01HNICWh/WcibwKIr1/eSOYS1HFx1sSPbyXHedOu3xUAw8RHoKDxdFy4DzPTwtFS77+QGdOoljDQIPAOsfCg5rkd4aDmkB1sLlCROaXpncmcADuK9wOTJSbN1isQCZmc49B+t4ADDwEOlLFiyfPAkUFjr2WBl44uObv09kpCjIrK6u/0dATbL2gYGH9NZwSAsQ75OcHCA0FLjmmsaPcTbwuKtwWQ5nnTkDVFY69xyyhycxsf5eYz6GgYdIT87W7wBARob4BdiunXUV1obkcNa5c63vAu0sRwJPu3bW7nkitTU1pAVYh7Wamp5u9B4eV+p3pHPnrEPg117reps8FAMPkZ6crd8BRK+NXLenuToeDWdoSSb5h6K1Gp6EBBHSMjLYG0TakL0XDaeXt1TH42rg0Xo/LTUCD8BhLTDwEOlLDmk5E3iA1hcg1LBguY49PTzXXiumCEdHiyXyr7xSu/aQ72quh0f+sR86VAzzSm3aWEOS0Xt4HF10sCE5rMXAQ0RuFxAADBwojp0NPK1NTXdH4GmtaHnGDGDTJjGcJblrwTbyLU0VLQPA+fNASoo4tv2DL3sli4sdr6HzpCEtAPj+e7Gae2ws0KeP6+3yQAw8RHrp3x8ICgIuXbIuIugoIwSelnp45s4FPvxQzI7573+tGzrKdhGpxWQC2rcXx02tmCxna9kOa8XEiGtHe3cAzws8ly8Du3eLYx+dns7AQ6QXVwqWJRl4+vVresqthvto1ZGBJyTE+gfHZAL+9jfg5ZfF16+8AtxxhzXYMfCQ2iIixDIMQNMzEmXgmTTJunO4s/U7gHWWVlSUmAmphbZtrQsbuhp4AJ8f1mLgIdKLq/U7gAgbly6Jupj+/Rt/3x1FyxUVYhYIIP6A+PsD770H/PGP4rannxY9PbaLtTHwkNrkcFZRUdN70u3eDZSUiJ89WfPmSuA5d05sUGq71pXa5IzG/HzHh9yaImuZrr3WGg59CAMPkV5cmaFlq6XCZXcMaQHWPxgDBgCffw7cfbeYRTZrlujpkWTwYuAhtTVXsCxVVQHbt4tjOT3dlcBjsViDvr0ztUaOBMaPt/811BrOkn7+GSgoEL1hw4ap85wehIGHSC9qDGkBLdfxuCvwyGGtd94BJk8GSkuBqVOB1avr3489PKSV1gIP0Hh6uiuBB3CsjicyEvj2W2DbNjEEbQ9Xt5RoyGIBvvlGHPvgsBYDD5EeunUTv6CrqoBDh1x7ruYCT2io2NQTcF8PT2ioKBi99lpg8+bG92PgIa00twaPLVnHM2aMqDlzZ+C5/34xDd7PTwzx2kPtHh7Ap/fVYuAh0oOs30lPF1NFXdFc4JHFjiUlosdFS+np4vrkSeDqq4Eff2z6fjLwhIeLX/5EarGnh+foUbEfVVCQGFpyV+AJCAB+/3vr1zNnAh06tP78WgQeWcdz9dXiA4oPYeAh0oNa9TsA8Msv4rpbN+ssKcA9M7Skd98Fbr9d1CgcPdr8/YqKgLIycSwDGZEamluDpyHZy3Prrda1oZwNPPbup3XLLaLOJydHvOdDQoAHHmj9+bUIPMePiw8mgYHAuHHqPa8HYOAh0oNa9TuACBFyF2XbXh43zNCqU14u1tlpaThBkgGMiw+SmpraOLQpso7nttvE9cWLYo0aZ9jbw/Poo+L6n/8EXnpJHD/8sOj5aY6/v3WPPFdXWW7IR4e1GHiI9KBmDw/Q9LCWuwqWHcU6HtKCPUNagCgarq62Duc427sD2Lef1ogRwOjRYqPfN94APvpI9Ax16SJWIW9OTIwIPeXl1p4ktfjovlqGCTxPPfUUFEXB8uXLm73PzJkzoShKvUuZ7B4n8hRt21qXdlejhwdg4CGyp2gZEOvZ/PCD9Ws1Ak9LPTyPPCKuP/xQTGOvqgJWrhS3/eEPzT/Odg8tRXG+jU355hsxY2vQIJ8aWjZE4Bk+fDgeeOAB7Lfjl39hYSGio6PrLrGyy4/IU8j1cs6caf3TqL08KfBwLR7Sgr09PIB1WAsATp92/jVb+1mOirL24siQA4iensuXgcTE5tfl0aJ+R8rPB/btE8c+NKzlr3cDQkND8cEHH+C+++7DM8880+r9FUVBXl6e3c8fGBiIoKCguq/Daqfpms1mmFVeDlw+p9rPSy3ztPOuDB0KBQDS0lRrs/LLL+I5Bw2Cyc8PJkWBpfZTp+ncOZg0ODfOnnclL0+0tXNnj/k/MxJP+3l3F0tt4DEVFLT68658/TWU558X9z97ttX7N3fOlXPnxM9yYCBMnTrB1CBsKQ88ACUwENi9G+aUFOsWFIWFsKxZA8yZA8ybB/OOHY3/PbIX+MQJTf6vLVu3isUHr78eZrnHncE0PO+ungfdA89rr72GjRs3Ytu2bXYFnrZt2yIzMxNmsxkpKSlYsGABDrWwjsn8+fOxaNGiRrcPHjwYpSpP1TWbzYiLiwMAWCwWVZ+bmudp5/3UxInIBxCdk4MuspbHRYq/P1KrqqCEheHKG29EUHY20nv1QhmAXiEhCFfpdWw5e94vBATgNIDwuDj01qBd3s7Tft7dQQGwr3Z7h4FRUQhs5edKqa5GWlERatq1Q4zZjCtauX9L5zytoADV7dujf1IS2hw7Vne7xd8fvzzyCKoB9Pj8c3Ro8BrlW7bg0Jw5wJQp6D91KoIbDK0dT0xEIYBuFRWI1OB9UpSZiWMAAiZPRnxCAkyqv4LrGp73UBen0esaeGbMmIHExESMGDHCrvtnZGRg9uzZSEtLQ3h4OJ544gns3r0bAwcORFZWVpOPefHFF7Fs2bK6r8PCwpCVlYW0tDQUFxer8u+QZPpMTU3lLyI38rTzbunaFQCQt2ULzqlVtAxAOXQIGDIEh/z8YEpNhaV2yu2JXbtgUvF1JGfPu1K79klhmzZI1aBd3s7Tft7dQQkLEwW+AA5+/z1MdtR2KkuWAL/7HU6/8w7OyC0imtHSObecOQO0b4/DhYX13mfKHXdA6dgRyMrCqWXLcLq6uv6TpqYCGzcCv/41Dk2aBLOcySWft7bHKuv775GtwftESU8Hli1DVWQkUisqYJJraRlIw/MuR2hcoehx6datm5Kbm6sMGjSo7rbt27cry5cvt/s5/P39laNHjyp//vOf7X5MWFiYoiiKEhYWpvq/yWw2K4mJiYrZbNblnPrqxaPOu5+fgsuXRcV9797qPvf774vnXbBAgcmkoKpKfN25s7HO+4gRol2nTun//+GBF4/6eXfXpWdP8TN1+bL7z/nmzeK1Z86sf3tysrj9T39q/rmTksR9SkoUtG9f/3vFxeJ7cXHanbctW8RrPPKI/v+Hdpx3V/9+6zYIPGzYMERFRSElJQVVVVWoqqrChAkT8Oijj6Kqqsqusbrq6mrs27cPfeRYJ5HRxcWJFYaLi9VfW8N2E9ErrhCfeC0W4Px5dV/HVZylRWqzdw0eLTQ1U2vkSOCqq8Qq6m++2fxjt28XMzVDQ4H77rPeHhkpZnNaLNY1trTgY9PTdQs827ZtQ3x8PBISEuoue/fuxQcffICEhAS7umrNZjMGDRqEHHcsrEakBjkWn5YG1aea2s7UkmHiwgWx5oiRyEkHgYH2La9P1BpHZmipranAI6eir13b+gcOWXLxyCN1w3J1M7TOnhXr92hFBp4JE6yv7cV0CzwlJSU4ePBgvUtpaSny8/Nx8OBBAMDq1auxePHiusc8++yzmDRpEnr27ImhQ4fi3//+N2JjY/H222/r9c8gcozcQ0uL2hUZeOLirCu0Gm1KOiB+gV+8KI7Zy0NqsHcNHi003F4iOtq6irPtVPTmfPiheJ926ya2uwC0nZJua/9+EcjCwoBRo7R9LQMw9LzGmJgYdLZJze3bt8dbb72F9PR0fPnll2jXrh2uvvpqpBuw2IqoSWqvsGwrKwsoKBCf1JKSxG1GDDwA1+IhdRmph+eBB0Tv5a5dQEpK64+vrARefVUcy4UI3RV4FEWsPA34xLCWoQJPUlIS/mCz8mRSUhLuueeeuq/nzZuHHj16IDg4GJ07d8aUKVM4y4M8y9Ch4lqtFZYbkr08118vro063Ms6HlKTUQJPYKBYWwcAXnnF/uf417/EprojRgBjxrgv8AA+ta+WoQIPkVeLjhbFiDU11h3O1SYLl+WKy0bt4WHgITXpOaRlG3huu038TGdlAf/7n/3PkZ8PrFkjjv/wB/cGHlnHM2qUdfd4L8XAQ+Ssrl2Bxx4T49/2kPU7GRni05wWZA+PxMBDvsAIPTwhIcCCBeL49dcdnyzw8svieto06/Yz7gg8p08DR46IofAJE7R/PR0x8BA5629/A5YvB1avtu/+WtbvSAw85Iv0DDzl5cClS+J4wADxdUtT0Ztz+DDw5Zdi+4m2bcVt7gg8ALBzp7j28pXPGXiInDVxori++WZg5szW7y9/mWhVvwM0Hipj4CFfoOeQFmCdqQWIqejOtmP5cutxfr7Y2d0d5LYWLe367gUYeIic0a9f/T/Wr7xinQreHHf08BQXAydPWr82etGyl/+CJTfRs4cHqP8+s2cqenO2brX20rqrdwdoei0hL8TAQ+QMOdb93XeiO7hdO1F02NwK4SEhYn0cQNvAA9Qf1mIPD/kCvXt4ZGDYsQPYt8+153rhBXEth5ncgYGHiJolA8+2bcDdd4uelXHjgHnzmr5/fLwIQzk5QCsbFbpMBp7ycvd1iTtK/oLt2BEICNC3LeTZ2rQRF0C/Hp7//EdMRpg/3/Xn+u9/RQ+yLIB2Bzkk16WL+15TBww8RM6Qgefbb8UQ0mOPia//+lfrlHBb7qjfkWTgMWrvDiBWWq6qEseRkfq2hTybHM6qqhIfPPSwaRPQv79YbFANR46IfbjcRX4AiYoCTCb3va6bMfAQOUrW75SVAT/+KG57913g00+BoCDg3/8WC5DZckf9jrRliwg9cl0PI1IU655aHNYiV+g9nOUN8vLERqUBAdbz6YUYeIgcJXt3kpPrfwq77z4xXDV4MPDnP9d/jJZ7aDVUUCDasHCh9q/lCtbxkBr0Llj2BtXV1sDoxXU8DDxEjrIdzrJ1/rwIPQDw5JPA2LHi2Gy2LiTGrVCsGHhIDQw86vCBOh4GHiJHNRd4AOCzz4B33hEhZ80asQpz795iIbHLl4GjR93ZUmNj4CE1cEhLHT4wU4uBh8gRcXGN63caeuwx4MQJoEcPsVy8rN85cECMk5PAwENqYA+POnwg8Pjr3QAij9Jc/Y6tkhKx8vJ33wGzZ1tnbXE4qz4uPkhqYA+POnwg8LCHh8gRtgsOtmTnTuDvfxfHI0aIawae+uQvWPbwkCvYw6MOWcPDwENEAFqu32lo4cL66+64Yw0eT8IhLVIDA4865AcQFi0TEeLixKef8nLghx9av39lJfC734n7FxUBaWnat9GTMPCQGjikpQ4fGNJiDQ+Rveyp32nol1+AxEQxa6u0VLOmeSS58GBoqJjFVlKib3vIM7GHRx0+EHjYw0NkL0eGs2ylpwMHD6rdGs9XWmrdCoC9POQsGXjYw+Ma2eMaFAS0b69vWzTCwENkL2cDDzWPw1rkioAAoF07ccweHtdUVFjPoZfW8TDwENnD0fodsg8DD7lC9u7U1ACXLunaFK/g5cNadtXw5DuYnBVFQWJiIk6fPu1Uo4gMx5n6HWqdl/+CJY3JguWLF8WGtOSanBwgPt5r3492BZ6IiAg89thjKCwsbPW+JpMJr7/+Ovz8/FxuHJFhjB8vrjmcpS728JArWLCsLi//AGL3LK0PP/wQ58+ft+u+K1eudLpBRIZk74KD5BgGHnIFA4+6vHwDUbsCj6O9Ne1kERmRN+jbV/wCKC8H9uzRuzXehYGHXME1eNTl5T08dhctBwYGatkOIuOSvTt79rB+R20MPOQK9vCoy8sDj91DWoWFhUhOTsb27duxfft27NmzB9XV1Vq2jcgYOB1dOww85AquwaMuLw88dvfwzJkzB6dOncLs2bPx3Xff4dKlS9iyZQuefvppjBo1CmYzZ7iTl2Lg0Y4MPJGRYjVqIkfIIS328KjDyzcQtfs3zOrVq3HPPfegZ8+e6NOnDx555BFkZ2djzpw52LVrFwoKCvDFF19o2VYi92P9jrbOnQMsFsDf3/ppncheHNJSl+zhCQ21LujoRZz6SHXy5EmsWrUKs2bNwoQJE/Diiy9CURRMnjxZ7fYR6Yv1O9qqqQHk7E8Oa5GjWLSsrrIyQC4/44W9PA4Hnu7du+Puu+/Gu+++ixMnTiAtLQ2jRo3CSy+9hKSkJC3aSKQfDmdpTw5reeEvWNIYe3jU58V1PHYXLb/zzjuYMGECOnTogF27dmHHjh148803sXfvXtTU1GjZRiL9MPBoLzcXGDKEPTzkOAYe9WVnA/37+3bgmTVrFk6fPo0XXngB27Ztw759+7RsF5H++vQR9TsVFdw/S0ucqUXO8PMDOnQQxxzSUo/s4fHCxQftDjwDBgxAUlISJkyYgMcffxxBQUHYuXMnvvvuO3z77bdISUmBwr1MyJvY1u+Ul+vaFK+mdeC5/35Rl/Df/2rz/KSP9u2txxcv6tcOb8MhLeDIkSM4cuQI3njjDQAiAI0fPx5JSUl44oknEBwcjJ07d2Lq1KmaNZbIrTic5R5aBp6+fYE33gAqK4H168U1eQc5nFVQIIrfSR0MPI2lp6cjPz8fBQUFKCgowO23344bb7xRzbYR6YuBxz20DDzy/zAwEIiNBY4eVf81SB9cg0cbDDxCp06dMGHChLqhrbi4OFRWVuLHH3/E8uXLsX37dq3aSeReffoAXbuK+h2uv6MtLQPPuHHW4169GHi8CQuWteHFiw/aHXgOHTqEuLg4VFdXY+/evVi3bh2+/fZb7Nq1CxVcn4S8Det33Ed+otQi8Iwfbz3u3Vv95yf9cFsJbbBoGdiwYQO2b9+OnTt3oqysTMs2EemPw1nuI3t42rcHgoLUW+CxRw+ge3fr1716qfO8ZAwc0tKGDDzt2gEhIcDly/q2R0V2B54FCxZo2Q4iY2HgcZ/CQtGLFhwsenlOnVLneW2HswD28HgbDmlpo7gYKC0V20t07gwcP653i1Rjd+B59tln7brfX/7yF6cbQ2QIvXuzfsfdcnNFj4wWgSc1FUhIYA+Pt+G2EtrJzhYzHH018CxatAjZ2dk4d+4cTCZTk/dRFIWBhzzfkCHiev9+1u+4i23gUYus31m1ClixgoHH27CHRzs5OdaNk72I3YFn06ZNuPbaa/HTTz/h3XffxRdffMGFBsk7XXmluD50SN92+BK1Z2p16SJm2tXUAP/5D7B8OdC2LRAZKXZoJ8/HomXteOnUdLs3D50yZQp69+6NH374AUuXLkVWVhaWLFmCuLg4LdtH5H4DBojr9HR92+FL1A48Y8eK69RU8QfxzBnxNet4vAeLlrXj64EHAHJycrBkyRL0798fM2bMQGRkJPbu3YudO3ciODhYqzYSuRd7eNxP7cAjh7O++05cnzghrjms5T04pKUdL12Lx6HAY2vv3r3Yvn070tPTMXToUAQEBKjZLiJ9mM1Av37imD087qP2WjyyYPn778W1LLxk4PEOJhM3DtWSl67F43Dgueqqq/Dmm28iNzcXjzzyCFavXo0uXbqguLhYi/YRuVdsLNCmjShWPnlS79b4DjV7eDp2BAYOFMc7d4pr2cPDIS3vEB4O+NeWoLKHR31eOqRld9Hyk08+iVmzZqFjx4744IMPMHbsWBw4cEDLthG5nxzOysgALBZ92+JLZOBR4xesrN85cMD6x5A9PN5FDmeVlHBDWC34euBZsmQJTp8+jY8++giKomDWrFlN3u/xxx9Xq21E7seCZX2o2cPTcDgLYA+Pt+EaPNqSNTwdOqi7+rnO7B7S+v7773Hy5EkMHDgQQ4cObfKSkJDgdEOeeuopKIqC5cuXt3i/6dOnIz09HWVlZUhLS+MO7aQuBh595OWJ66AgICLCtedqKvDIHp4uXcSQJXk2Fixr69Il6xpkWuxxpxO7e3iSkpI0a8Tw4cPxwAMPYP/+/S3eb/To0Vi7di3mz5+PL774AnfeeSc2bNiAxMREHDx4ULP2kQ/hDC19VFQABQViP63oaPEL1xnh4WJVZaB+4CkoEM8ZEQH07Mn/X0/HNXi0l5Mj3itduqi3+rnOnJ6lpZbQ0FB88MEHuO+++1BQUNDifefOnYvNmzfjpZdewuHDh/Hcc88hJSUFDz/8sJtaS16PPTz6UWNY65prxEy7I0eszydxarr34Bo82vPCOh67enj+8Y9/4Nlnn8VlO3dNXbx4MZYuXdpqgAGA1157DRs3bsS2bdvwzDPPtHjf0aNHY9myZfVu++qrrzBt2rRmHxMYGIigoKC6r8PCwgAAZrMZZrO6eU8+p9rPSy1T67wrXbpACQ8HampgOn4cJv4/tkjtn3dLbi4wYABMXbo4fe4tcv2dHTsatcty4gSQmAhTnz4e/X/L3zOARQaeixfdch588Zxbaj8wuPJ+dFXD8+7q+bcr8MydOxcvvvii3YHnoYcewltvvdVq4JkxYwYSExMxYsQIu543OjoaeXKsv1ZeXh6iW/hEOH/+fCxatKjR7YMHD0Zpaaldr2svs9lct/K0hTN83Eat8140ciSOAQg6cwYD5dAWNUvtn/eTFRUoANAlMRFRhw879RyHb7wRlwHEZmbiigY1hVklJcgD0HHUKHR3od5Qb/w9A5yOi8MFAJ39/dHZDf+XvnjOz1RW4jyAyIQEdNXp/dLwvIeGhrr0fHYFHpPJhCNHjti9d5Y9jerWrRtWrFiBSZMmoULDCvAXX3yxXq9QWFgYsrKykJaWpvraQTJ9pqam+sybwgjUOu/KNdcAACr270dqaqoaTfNqav+8W9LTgcmTkVVTgxwnzr8SGgqlf38AwOl//xtnTp+u//09e4BZs3A+LAz5Hvz/642/ZxQA6NYNOHsWTW9NXZ+ldgPr3IMHkeeG/0tvPOetUQ4cAG6/HXl+fjiv0/ul4XmXIzTOsivw3HPPPQ4/ccOemIaGDRuGqKgopKSkWBvj749x48bh4YcfRlBQUKMfrNzcXERFRdW7LSoqCrkNx+ptVFZWorKJdRosFosmP7jyeX3lTWEUqpx3Wb9z8CD//+yk6s+7rBmIinLu+UaOBAICgFOnoGRmotHHs2PHxHWvXh7//+t1v2cefhhYuRK47z4ob7/d+v1rV1lWzp+H4qZz4HXnvDVyanp0tK7/Ztvz7mo77Ao8a9ascelFmrJt2zbEx8fXu23VqlU4fPgw/va3vzX5D0tOTsbEiROxYsWKutsmTZqE5ORk1dtHPogFy/pydfHBhvtnNSSnpvfsKbYmsLPHmtzgrrvE9Zw5gD2Bh0XL2vPVomUtlJSUNJpKXlpaivz8/LrbV69ejaysLCxYsAAAsGLFCnz33XeYN28eNm7ciNtvvx3Dhw/H/fff7/b2kxeSdTsMPPpwdZZWU+vv2DpzBqiqAoKDxVTbrCznXofUdcUVwPDh4njYMBFIW9vWhevwaM8LNxA1dMl5TEwMOtuc7OTkZNx55524//77sX//fkyfPh3Tpk3jGjzkug4dgMhIcexkwSy5yJXAExQEjBoljpsLPDU11vVEODXdOK67TiwlIE2f3vpjuA6P9mQPT2Skdd8yD2eof0XDxQ2bWuxw3bp1WLdunbuaRL5CDmedOgWoPHuP7CQDT8eO4hdsdbX9jx05UvTc5OQAR482f78TJ4A+fcQWEzt2uNZeUscNN4jr7GzR8zZ9OrB0afP3b9tWBFyAPTxays8XPaIBAeJDyNmzerfIZYbu4SFyGw5n6e/CBRFyzGagUyfHHtvacJbExQeN5/rrxfWTT4oNe0eOBGJimr+/7N0pLwfsXCqFnKAo6m7qawAMPESAtYeHWw7oR1Gse2o5Oqxlb+CRhcvcRNQY4uOBrl1FcPnkE+v/X0vDWhzOch8vq+Oxa0jrk08+sfsJb7nlFqcbQ6QbztAyhtxc8QfQkcDj7w9cfbU4bm6GlsQeHmORw1nffiv2U/v4Y2DCBBF4GqyqX4cztNzHy2Zq2dXDU1hYWHcpKirCxIkTMVxW1UOsqTNx4kQUFhZq1lAiTXHTUGNwpnA5MVHUdeTnt/7/J3t4GHiMQQaer74S1+vXi2Gt0aPFQoRNYQ+P+8jA06WLvu1QiV09PLNnz647XrJkCT766CPMmTOnbq0cs9mM119/HUVFRdq0kkhLbdtaawbYw6MvZwKPHM7asaP1tXVkD09kpPh/LylxvI2kjjZtgLFjxfGWLeI6JwfYtUvcfsstgM2aa3XYw+M+zvTwtGsH9OgBpKVp0iRXOFzDM3v2bLz00kv1Fga0WCxYtmxZvWBE5DFqtyNAXh5gx4a3pCFniiRbW3DQVnExcP68OGYvj77Gjxcz606frr8UxMcfi+vm6ni4Bo/7OFPDM2UKsH8/sHmzNm1ygcOBx9/fH/3lHwgb/fv396mdZMmLsGDZOBzt4TGbgTFjxHFrBcuS7OVh4bK+Gg5nSf/7n7geM6bpoRQOabmPMz08N94orm22jTIKhxPKqlWr8M477+APf/gDrrnmGlxzzTWYN28e3n77baxatUqLNhJpiwXLxuFo4Bk0CIiIAIqKxKdKe7COxxiaCzxZWWJYCwB+85vGj+OQlvs4WsNjMln/Xzdt0qZNLnB44cEnnngCubm5ePzxx+tWQc7JycHSpUvxj3/8Q/UGEmmOa/AYh6OBRw5n7dwpVlK2B3t49Ne9u/igUVMDbNvW+Pvr1gHXXCOGtV59tf73OKTlPrarLZvNoqC8JcOHizW0CgsBA+5x6XAPj6IoWLp0Kbp164aIiAhERESgW7duWLp0qe/sIkvehUNaxiF/wdobeOxdf8cWp6brT/YC/PADcOlS4+/LpVDGjm38s8AhLfc5d06EUj8/69Y7LfnVr8T11187tlK6m7hUdFNcXIzi4mK12kLkfoGB1k/67OHRn+zhCQsDQkNbv78zgYeLD+qvueEs6cwZYM8e0atw8831v8chLfexWKyLgdpTxyPrdww4nAU4EXgiIyOxZs0aZGVloaqqCtXV1fUuRB4lLk58erl0ydq7QPopLbVOFY+Kavm+AwaI7vPLl4GffrL/NWQPT2ys+L8n9/LzExuGAs0HHsA6W+vWW+vfzh4e97K3cLljR2DECHFswBlagBM1PO+99x5iYmLwl7/8BTk5OVBaW/eCyMhYsGw8ublig8/oaGs4aYrs3UlOFpsc2isrS6zqGxQkFreTO6iTe4wYIQrNL14E9u5t/n6ffAL84x/i/zkyUgyvBAdbe/7Yw+Me9hYuX3+96JHbv986nd1gHA48Y8aMwdixY7Hf3hkRREbGgmXjkYGnuU+UISHA738PPPWU+NqR4SxALE548qRYf6l3bwYed5PDWVu3tlwEe+qUCEQjRgDTpgFvvmnt3amqEjPzSHv29vAYfDgLcGJI68yZMzCZTFq0hcj9WLBsPM3N1GrTBpg3T/T6vPSSGM46elT8IXQUp6brp7X6HVsNh7U4Q8v97Fl80ODT0SWHA89jjz2GJUuWIDY2Vov2ELkXh7SMp2HgadMG+MMfRK/MP/4hantOnADuuUf00Mn7O4JT0/UREQGMHCmO7Qk869aJ6wkTRI0IC5bdz54eHtvp6Lt3u6ddTnB4SOu///0vQkJCcPz4cVy+fBlVDcbOr5AJnMjo/PyAfv3EMQOPccgA06sX8NhjYuhKhp8TJ4C//hV4/33Xpr2yh0cf110n3ncHD4paqtacPAn8/DMwbJgY1pIbVDPwuI89NTxyOGvrVkNOR5ccDjyPPfaYBs0g0kHPnqJw9fJl1nEYifwFe+ed4gKIP3x//SuwZo06v1DZw6MPR4azpHXrROCZPh3YsEHcxhla7mNPD48MPF9+qX17XOBw4FmzZo0W7SByPzmclZHR+gqi5D5nz1qP1Q46Ehcf1IcMPHJ3dHusWwe8+CIwcaK11o49PO4ja3iio0WtTsOZ2VdcYR2mNOh0dMnhwGMrKCgIgYGB9W7jQoTkMeQMLRYsG8v27cALL4hhp3//27Ep5/aSgad9e1FX0tRqv6SuAQPElhLl5Y7NrDt2DEhNBRISgN/9TtzGHh73ycsTHwgDAkS4aXjub7jB8NPRJYeLlkNCQrBy5Urk5eWhtLQUBQUF9S5EHoMFy8ZUVQU88wywapU2YQcAysqsXfUc1nIP2bvz/ffi/DtCztbq1Elcs4fHfaqrrSGnqToeD5iOLjkceP7+97/j2muvxe9//3tUVFTg3nvvxcKFC5GdnY27775bizYSaYNr8Pg2Fi67lzP1O5KcrSUx8LhXc3U8HjIdXXI48EydOhUPPvgg/ve//6G6uho7duzACy+8gAULFuC3v/2tFm0k0kb//uKaQ1q+iYXL7hMcbN3Z3pnAc+QIcOCA9WsOablXc2vxeMh0dMnhwNOhQwecqP1FUVRUhA4dOgAAdu7ciXFyqXcio+vWTWxQWVUlagTI97CHx33GjhXrKZ09K6akO0MOawHs4XG35np4PGQ6uuRw4Dlx4gR69uwJADh8+DBuu+02AKLn5xIL/8hTyOGsY8c84o1KGmAPj/s4MzurIdthLQYe92ot8HjAcBbgxCytVatWYciQIfj++++xZMkSfP7553j44YcREBCAefPmadFGIvVxSwliD4/7uFK/I6Wni0L26Gj2yrpbU4sPetB0dMnhwPPyyy/XHW/btg39+/fHsGHDcOzYMRywHWMlMjLO0CLZw9O9u5hyq9WMMF/XtSsQHy+mNm/d6tpzzZ6tTpvIMU3V8Mjd0dPS7Fs12wBcWocHAE6fPo3Tp0+r0RYi9+EMLcrLA0pLgdBQIDaWvQZauf56cb13L3Dxor5tIec0NaTlYcNZgJOBZ/jw4UhKSkJkZCTM5vplQI8//rgqDSPSFBcdJED08gwaJIa1GHi0ocZwFumrYeAxmYDJk8WxNwee+fPn469//SsyMjKQl5cHxWaZaaXhktNERtSpkxh/tljEthLku2TgYeGyNsxmYNIkcczA47nkhr7BwWJ18j59xO/RoiJg1y592+YAhwPP3LlzMXv2bKxevVqL9hBpT9bvZGY6vuIreRcWLmsrLg7o0AEoKQF++EHv1pCzKirEcGSHDqKXRw5nff21R81ydXhausViwS4PSnSGYzYD4eF6t8K3sWCZJE5N15YcAjlzBqip0bct5BrbwmUPrN8BnAg8y5cvx0MPPaRFW3zDW2+JVUIHD9a7Jb6LBcsksYdHW1FR4loOiZDnknU88fEeNx1dcnhI66WXXsLGjRtx7NgxHDp0CFUNpnLecsstqjXO6/TsCcyaZR3XTkvTu0W+iWvwkMQeHm3JwJOXp287yHUy8Mi/YR40HV1yOPC88sorSEpKwvbt25Gfn89CZUc88oj4QQFESiZ9cEiLpMxMUbzetq0owjx/Xu8WeRcGHu8hA09Cgrj2sOEswInAM3PmTNxyyy348ssvtWiP9woLA/7v/6xfDxyoX1t8Wbt2Yh8tgIGHgMpKsb9TTIzo5WHgUVd0tLhm4PF8soZH8sDA43ANz8WLF3FcjnuT/WbNEn9s5R4wV14p1jIg95I7pGdnix1+ieSwFut41McaHu8he3gAj5uOLjkceBYtWoTnn38ebdq00aI93slkAh59VBwvWiSm+MnVXcm9WLBMDbFwWTsc0vIetoHHQ3ZHb8jhIa1HH30UvXv3Rl5eHjIzMxsVLQ8bNky1xnmNX/9aLNRUUAC8+y5w331iltbAgaKGgNyHBcvUEAuXtcPA4z1sA48HDmcBTgSeDRs2aNAML/fYY+L6rbeAy5eBX34RgSc+Hti4Udem+RwWLFND7OHRhsnEwONNsrOB8nIgMNDjpqNLDgeeP//5z1q0w3vFxwMTJ4pFt157Tdx28KC4ZuGy+8nZcezhIYk9PNpo317sQg8A587p2xZyXVkZMH064O8vCv09kFObh4aHh2P69Ono3bs3li5dioKCAgwdOhR5eXnIbljJ7evmzhXX//sfIHeVZ+DRR7t2Yi0kgGsgkZXs4enaVewVVF6ub3u8hezduXhRzIYjz+fhIxIOB55BgwZh69atKCwsRI8ePfDWW2+hoKAAv/nNbxATE4OZM2dq0U7P1LEj8LvfieMVK6y3y8AzYIBYl8dicX/bfJFc3frMGVFPRQSIP8iFhWLLl549OdypFg5nkcE4PEtr2bJleO+99xAXF4dym09CX375JcaNG6dq4zze/feLT4w//VR/Ct+JE6J7sE0ba48DaW/IEHG9f7++7SDjYR2P+rgGDxmMw4FnxIgReOONNxrdnpWVhWj5A05i7PrBB8Wxbe8OIHp05KdIDmu5DwMPNYd1POpjDw8ZjMOBp6KiAu3atWt0e1xcHM5zlVKr6dNFTUBODvDRR42/L4e1uMWE+zDwUHMYeNTHRQfJYBwOPJ999hmee+45+PuL8h9FUdC9e3f87W9/wyeffKJ6Az2RAlinor/+etMFeyxcdi+z2RouGXiooaNHxXXfvvq2w5uwh4cMxuHA8/jjj6Nt27Y4d+4c2rRpg++++w7Hjh1DcXEx/vSnP2nRRs9z1VXAyJFiReUmhv8AMPC4W9++QEiIWAfp2DG9W0NGk5Ehrvv107cd3oQ1PGQwDs/SKioqwvXXX49rrrkGgwcPRtu2bZGSkoJt27Zp0T6PpMhtJD74oPnNCGXg6d8f8PMT6/SQduRw1oEDnBVHjR05Iq579BALq3EatevYw0MG49Q6PACwa9cu7PLAzcO0VhkVBdxyi/iiYbGyrcxMoLRU7KnVu7f1Fy5pg/U71JK8POvU9N69OTVdDazhIYNxaEjLZDLhnnvuweeff44DBw4gLS0Nn376Ke666y6nXnzOnDnYv38/CgsLUVhYiN27d2Py5MnN3n/mzJlQFKXepayszKnX1sr5W28VK1Fu397y4naKYl3tl8Na2mPgodbIDx0c1nKdyQRERopj9vCQQTgUeD777DO8/fbb6Nq1Kw4cOICDBw8iNjYW7733HtavX+/wi589exZPP/00hg0bhuHDh+Obb77Bp59+iivljtZNKCwsRHR0dN0l1kA7jitt2uDCb34jvmipd0fiTC33YeCh1sjAExenbzu8Qfv2YmgQ4LYSZBh2D2nNmjUL48aNw8SJE/Htt9/W+15SUhI2bNiAu+66C++//77dL/7FF1/U+/qZZ57B73//e1x11VU41MxeR4qiIM+BTwyBgYEICgqq+zosLAwAYDabYTY7XLPdsrvuQk14OHDiBEwbN8LUyvMrhw6JGV3x8eq3xUsowcFQ/vtfIDAQpilTYGqi1kn+XzZ3DpUOHaB06wYAMP3yS6v/L2Sf1s67p1GOHBHvx379DP1v8oTzrnTuLM5lQQHM1dVilqQH84Rz7o0anndXz7/dgeeOO+7A4sWLG4UdANi+fTuWLFmC3/72tw4FHltmsxm33norQkNDkZyc3Oz92rZti8zMTJjNZqSkpGDBggXNhiMAmD9/PhYtWtTo9sGDB6O0tNSptjZFAZD+5JMoB9BtwwZEym0MWlBYXo7jAIITE3FlQoJqbfEWCoBTzz+Pi1OmAADibr8dobJXzIbZbEZc7adySxMFycUjRuAogMCzZxHPdVZU09p59zQXKyuRCSA0MRH9DPx+9ITzXjx8OI4CCLp0CQMNfC7t5Qnn3Bs1PO+hoaEuPZ/dgWfw4MH44x//2Oz3N23ahEfl7CQHxMfHIzk5GcHBwSgpKcHNN9+M9GYKBjMyMjB79mykpaUhPDwcTzzxBHbv3o2BAwciKyuryce8+OKLWLZsWd3XYWFhyMrKQlpaGoqLix1ub3OU666D0qsXzKWlyHnhBWRfutT6Yy5eBF55BeUxMdj3yy8wVVer1h5voDz6KJTasAMAR6KjYfrgg0b3k6k/NTW1yV9GyvjxAIDKn35CamqqNo31Qa2dd0+jmEzAiy+itEsXQ/+ceMJ5V2rroCpOnTL0ubSXJ5xzb9TwvMsRGmfZHXg6dOjQ4lBSXl4e2rdv73ADMjIykJCQULcD++rVqzF+/PgmQ8+ePXuwZ8+euq93796N9PR0PPDAA3juueeafP7KykpUNjHF1GKxqPuD26EDcO4crvjmG+RfumTfc2dmAsXFQFgYlN69oXBmiNW11wJLl4rjlBQgMRHK2LFQ5G0NyP/PJs/7oEHimr+sVNfiefc0hw+L68hIWNq1A+z40KIXw593m4Jlw7bRQYY/517K9ry7eu7tHhDz8/NDdQs9EDU1NXWrLzuiqqoKx48frxue2r9/P+bOnWvXY6urq7Fv3z706dPH4ddV3YcfwtSjBzr/61+OPY4LEDbWo4fYjsPfH1i9GnjgAXH72LHO1QKwYJnsUVoKyJ5iFi67hmvwkAHZnVBMJhPee+89VFRUNPl928JgV5jNZrufy2w2Y9CgQfjyyy9VeW1XmSoq4O/oMNnBg2Jl5vh4YN06bRrmSUJCgA0bgCuuAPbuBebMAaqqRE9YRIQ4Ty1N92/I398aJhl4qDUZGWIPvLg44Mcf9W6N5+IaPGRAdgee1atXt3qfNWvWOPTiixcvxqZNm3D69GmEhYXhzjvvxIQJE3DDDTfUvWZWVhYWLFgAAHj22WexZ88eHDt2DBEREXjyyScRGxuLt99+26HXNRT28NS3apXokcnLA26+GSgvF7fv2gVMngyMH+9Y4OnXDwgKAoqKxBAiUUuOHBHDqVyLxzXs4SEDsjvwzJ49W/UXj4yMxJo1a9C5c2cUFhYiLS0NN9xwA7Zu3QoAiImJqTdm1759e7z11luIjo5GQUEBfv75Z1x99dXNFjl7BAYeq6eeAm67TSzrf8st1uEFAPj+exF4xo0DVq60/znlcFZamljskaglXItHHdxHiwzI6a0l1HDvvfe2+P2kpKR6X8+bNw/z5s3TsknuJwNP376+vYfPjTcCixeL40ceET06tr77TlyPG+fY87J+hxzBTUTVwR4eMiCuoqS3rCwxG8Tf33c/VfbtC/znP6Ig+Y03gDffbHyfn34CysrE7A9H/hgx8JAjZA9P375iewRyjpylxRoeMhAGHiPw5S0mwsJEkXJEBLBzp+jdaUplJSCXJHCkl4eBhxyRmSmK5ENCRPEyOY7bSpBBMfAYga/W8ZhMwPvvA1deKXq6pk8Xf2ya8/334rp2IcFWRUaKWgKLBfjlF9fbS96vuho4flwcc1jLObJ+p6DAd4foyZAYeIzAVwPPQw8BN90kZmLdfHPr4/2OBh7Zu3P0KHD5svPtJN/CwmXXsH6HDIqBxwh8NfDccYe4/tOfxJo7rUlOFj1A3bqJxQlbw+EscoYsXGbgcQ7X4CGDYuAxAjnc0ru3WDPGF7RrB4wcKY7tXXCxrMwajOyp42HgIWfIHh4OaTmHPTxkUAw8RpCXB+TnA35+QP/+erfGPZKSxMy0I0eA06ftf5wjw1oMPOQMDmm5hmvwkEEx8BiFr83Uuv56cb1li2OPk4GntR6ewEBreGTgIUfIIa0ePayzjch+7OEhg2LgMQpfq+OZNElcf/21Y4/btQuoqQH69AG6dGn+fldeCQQEABcvAmfPOt9O8j15eWIrEj8/McxMjmENDxkUA49ROBN4unYFXnjBusiXp4iNFQu7VVcD337r2GOLioDUVHE8dmzz9+NwFrmCw1rOYw8PGRQDj1E4E3hWrQIWLABeflmTJmlG9u788IMIMI6yZ1iLgYdcwS0mnMcaHjIoBh6jkDO1evYE2rRp/f5JSdbgcOutYqq2p3B2OEuyp3CZgYdcwR4e58keZwYeMhgGHqO4cEEsw242AwMGtH5/udFmTY2Y7fTww9q2Ty1mMzBxojh2NvDs2CGuBw4EOnZs+j4MPOQK9vA4x3ZbCQYeMhgGHiOxd6bW1KnAVVcBpaXAnDnitgceAEJDtW2fGoYOBa64Qgxl/fijc8+Rn2/tERszpvH3u3YVr1FdDRw65HxbyXf5cg9Ply7ivfl//+f4Y2X9DreVIANi4DESe+p4TCZRqAwAK1YA77wjfjlHRACzZmndQtfJ4azt20UgcVZLdTyyd+fwYaCiwvnXIN919Ki4jowU7y1fMnUqMGKEc73GrN8hA2PgMRJ7As/ttwODBgGXLgFLlwKKYi1afuwxMWRkZM6uv9NQS3U8HM4iV5WUiA1tAd/r5enTR1z36yc+YDmCM7TIwAz+19HHyGGa5gKPvz/w5z+L47//XYQeAFi9Wqw306cPMGWK5s10WkgIcM014tjZ+h1J1vEkJEBp167+9xh4SA2+OqzVt6+4btMGiIlx7LFcg4cMjIHHSGQPT48eQNu2jb9/zz0i1OTlAa+8Yr398mXgjTfE8bx5mjfTaePGiYLGU6esQwbOys4Gjh0TPVoyREkMPKQGXw08socHcHyrG/bwkIEx8BhJQQGQkyOOr7yy/veCg4HnnhPHL7wgCpZtvfqq2El8/HggMVH7tjrD1enoDX33HQBAsV2AsE0b6ydUBh5yhS/O1DKZ6q8ubc+MUVsMPGRgDDxG01wdz+9/L9baOX3a2ptjKzsb+O9/xfEf/qBtG52lduCRdTy2gSc+XmwJkJfHX7rkGl/s4enWTXy4khzt4WHRMhkYA4/RNBV4wsLEisoAsGhR89M9ly8X1zNmtLzPlB6io0WxtcUCbNumznPKwDNiBGrkL2kOZ5FaZA9PXJxjxbv+/sAzzwAjR2rTLi3J3lGJQ1rkRRh4jKapwPPYY2KBvYwMYM2a5h+bkiKGeQICjLcQ4XXXiet9+8Q6OmrIzATOnAECAlA6aJC4jYGH1JKZKYaJQ0LE2k72uvde4C9/sX4A8SSyfic7W1w7G3hYtEwGxMBjNA1nal1xBfDEE+L42WfFysotkb9kH3hA/KI2Cjmc5ep09IZq63hKZN0SAw+ppboaOHFCHDsyrHXnneLatvjXU8g2b9worqOixOrJ9mIPDxkYA4/RyJWBu3cH2rUDnnpKXO/bB6xb1/rjP/9czF7q0AGYOVPbtjpC7fodqXZYqyQxEQoADB4sbmfgITU4WrgcE2OtKYuMtG9fPCORQ1qpqaL3FLC/l8d2W4lz51RvGpGrGHiMprAQOHtWHE+aZB2a+tOfxCKDrbFYxArMgBgKc3ThMC3ExwOdO4vp87t2qfvctYGnND5e/FEKDxerKx8+rO7rkG9ytHD59tvrf+3oOjZ6kz08x45Z30P2Bh7Zu3PpElc4J0Ni4DEiWcfz6qviE+LOncCmTfY/ftUq8UsnLg749a81aaJDZO/O99+rv79ORgZw7hyU4GAocu+fQ4dc27aCSJKBx94eHjmcJcXGqtseLdlOST96FEhPF8f2Tk1n/Q4ZHAOPEcnAI6d4yhla9iotBd58UxwbYYq6VsNZklx1efZscc3hLFKL7Uyt1gwcKGrIKiutPZmeFHi6dhUfsKqqxPIXzvbwsH6HDIqBx4hk4TIAbN5s/YPuiJUrRS/HtddaC3n1EBho3e9Ko8Bjqi1criuuZOAhtcgenh49rPUpzbnjDnG9aZOogQE8a0hL1u+cOCEmRzgaeLgGDxkcA48RyR4eQNTuOOPsWeDjj8Wxnr08V18tZovl5gIHDmjzGg0DIQMPqSU3FygqEotZ2q5A3BQZeP7zH7F9CuBZPTy29TuANfD06tV62APYw0OGx8BjRHv3Av/8J/Dkk2JtHWfJKep33GH99OVucjhr61btXuOXX+BXVGT9moGH1GRP4fKoUSIYlJSImZKnT4vbPTnw5OSISRR+fo0XJGwKa3jI4Bh4jEhRgAcfBF56ybXn2btXFDwHBgIPPaRO2xyl1fo7NkwWC0LlEMLZs2LneCK12BN4ZLHy+vVAWZln9vDIUGO7sa8jw1rs4SGDY+DxdsuWies5c+zrllZThw7AsGHiWMseHgBhP/0kDn7+WdPXIR/U2lo8fn5iOxdADGcB1sDTtav4vido2MMDOBZ4WMNDBuevdwNIY59+Kqaod+woPqHaFkRrbeJEwGwWryl3gddIp48/RvalS1DkBqpEammth+faa0Xvxvnz1mCfmyvWogkKEqFHDnEZlclkDTy2PTxyajp7eMgLsIfH21kswMmT4tjd3etaT0e3Ya6shOmFF6x/nIjU0tpaPHI466OPrOs/KYp1pWJ3vO/MZlFH5GxvUpcu1inpsncKsPbw2LMWT2SkuGYNDxkUA48vkL/A3D1F1o2Bh0gzMvBERgIREfW/FxwM/OY34lgOZ0nurON59FFgzx7nZ2TK+p2TJ+vv12c7pNXSqu0REaI3C+C2EmRYDDy+QI8Cyj59xNollZV1G3wSeaSSEuvu4Q1nK/3612Kvu8xMIDm5/vfc+b6bOlVc33CDc49vqn4HAI4fF70+oaEt7xgv63e4rQQZGAOPL9Aj8Mjend27xR5aRJ6sucJlOZy1dm3jve7c9b7z9xfDWQAwfLhzz9Fc4Kmutt7W0rAW63fIAzDw+AI91gThcBZ5k6YKl8PDrXvVNRzOAtwXeBISRA8MIIaWZHhxRFNT0iV7ZmpxDR7yAAw8vsDdNTx+fmLmCqDp+jtEbtNU4fJvfiPqVg4caHr2o7sCz5gx9b92ppenuR4ewLHAwx4eMjAGHl8gf/F27gwEBGj/evHx4tNvQYFrK0UTGUVTm4jK4aymencA933QkIFHDh2PGOHY45ubki7ZMzWda/CQB2Dg8QXnz4tfhmYz0L279q8n9xw6fFhMiyfydLKHp29fERCio629mB9+2PRjzp4VP/9t2linbGtBBp41a8S1oz08nTuL/e6qq+tPSZfsmZrOHh7yAAw8vsKddTw9e4rrzEztX4vIHU6erD9bacYM8QFi167mf86rqqwLbmrVy9Onjwgb5eXAG2+I2xITRdsceQ5A/BvlOkK2ZO9W586i57YprOEhD8DA4ytk4HFHHU+PHuJaLnhI5Omqq4ETJ8RxXFzrw1mS1nU8sndn714gLU1MoW/b1r6VkSVZsNxU/Q4gdovPyhLHzS2+yB4e8gAMPL7CnVPT2cND3kgOa02ZAowcKULQxx+3/Bh3BZ6dO8XwmdxLzpFhrZYKlqXWCpdZw0MegIHHV7gz8LCHh7yRDDxz5ojrr78W9XEtcWfgAQC5ia4jhcstTUmXWqvjkTVKDDxkYAw8vkKPwMMeHvImspalTRtx3dpwFqDp+07p2NE6xLR7t7jeu1dcq93D09JMLdttJRh4yMAYeHyFu2p4OnUShZ0Wi/F3iCZyhO3GtGVlwIYNrT9Gyw8a11wjrg8cEFs6ANYenoQE+5egaGlKutTSkJas3+G2EmRwDDy+wnZNkJY2AXSVrN/JyhL7aBF5C9nDAwCffSYKhFujZQ+PDDxyOAsQe18VFIhNTQcObP1JOncWH1Cqq1vukZWBp0+fxkGK9TvkIRh4fEVWltgFOSjI+olMCyxYJm+VmwsUFopje4azAGvgad8eCAtTtz1NBR7A2stjz7CW7N3JzGx6SrqUlQUUF4t9u+Q6WxJnaJGH0DXwzJkzB/v370dhYSEKCwuxe/duTJ48ucXHTJ8+Henp6SgrK0NaWhpuvPFGN7XWw1VXW6eWalnHw4Jl8mYPPggsWQJs3Gjf/UtLgfx8cazi+84SHAwMGya+2LWr/jcdKVxubUq6reaGtbgGD3kIXQPP2bNn8fTTT2PYsGEYPnw4vvnmG3z66ae48sorm7z/6NGjsXbtWrzzzjsYOnQoNmzYgA0bNmCgPV235J46HvbwkDf7z3+A+fNFb6m9NBjWKh04UAwtnT3beHVkRwqX7SlYlloLPOzhIYPTNfB88cUX2LRpE44dO4ajR4/imWeeQUlJCa666qom7z937lxs3rwZL730Eg4fPoznnnsOKSkpePjhh93ccg/ljpla7OEhqk+D911JQoI4aDicBVh7eAYNss6eao49U9Kl5qams4aHPIS/3g2QzGYzbr31VoSGhiI5ObnJ+4wePRrLli2rd9tXX32FadOmNfu8gYGBCLJ504fVjqObzWaYHVl+3Q7yOdV+XrVYZA9Pjx6atdFS28NjOn0aJjedB6Ofd2/F824ftd93ZrMZpUOHAgBMu3Y1ep8pWVlQ8vKAqCiYhg6F6ccfm29bbQ+P6cSJVt+vSkYGFADo37/ev8NSG3hM58+77T3vbvxZ10fD8+7q+dc98MTHxyM5ORnBwcEoKSnBzTffjHS55kMD0dHRyGvwKSIvLw/R8hNGE+bPn49FixY1un3w4MEoLS11qe0Nmc1mxNXupmwx4KaZ5y0WnAHQbtAg9JGfEFWkmExI7dEDCoAr27RBkAav0RSjn3dvxfNun7yaGmQBiBgyBL1UeE+Y/P2RNmQIAKDfhQsIaeI5jx09iqKoKHSdNg2RzcyWVADsj4uDBcAAf38Et9K2MgDpAMxXXokhCQmQcz0P9+iBywB6tmmDCDe9592NP+v6aHjeQ0NDXXo+3QNPRkYGEhISEB4ejunTp2P16tUYP358s6HHUS+++GK9XqGwsDBkZWUhLS0NxcXFqryGJNNnamqqId8USm0wLIqIQGpqqvrP36ULlMBAoLoah7ZsgcmROgcXGP28eyued/sovXoBAC61a6fK+86UkICakBCgqAgZ69bB1MS5t2zbBowZg7PR0chu5jWV6GgoISFATQ3SN22CqaqqxddVDh4EqqthadsWqXl5MNVujGqp7TU/uWcPTBr8XjEC/qzro+F5D3NxpqPugaeqqgrHjx8HAKSkpGDEiBGYO3cu5sjl223k5uYiqsGU6qioKOS2MDugsrISlU18wrFYLJr84MrnNeSbQtbVxMRo0z5ZDH3mDJSqKtH97SaGPu9ejOfdDiq/70yjR4uD5GQo1dVNv89sCpebfc3aIIbMTCgVFa2/XysqxDo//fpB6dcPipz1Wfs7WcnJgeLFPwf8WdeH7Xl39dwbbkDSbDbXq7mxlZycjIkTJ9a7bdKkSc3W/FADsngyIgJo107955cztFiwTGQl33ddugCBgS4/nVK7f5apqYJlSRYuDxggFhZsiiNT0qWGM7W4rQR5EF0Dz+LFizF27FjExsYiPj4eixcvxoQJE/DBBx8AAFavXo3FixfX3X/FihWYPHky5s2bh379+mHhwoUYPnw4Xn31Vb3+CZ7l8mXgwgVxrMVMLU5JJ2rswgXx3gOA7t1dfz65YajcP6speXnAmTOA2QzUFjg34siUdKlh4OG2EuRBdA08kZGRWLNmDTIyMrBt2zaMGDECN9xwA7Zu3QoAiImJQefOnevun5ycjDvvvBP3338/9u/fj+nTp2PatGk4ePCgXv8Ez6Pl1HROSSdqmlrvu5gYoFs3sZBoC7OvALS+AKEjU9Kl5gIPe3fIA+haw3Pvvfe2+P2kpKRGt61btw7r1q3Tqkne7/RpsUKrFosPsoeHqGmnTonhJVcDT23vTsjhwyi/fLnlupu9e4Gbb25+AUJnenjkZBK5Fg/X4CEPYrgaHtIYe3iI3E+t911t4Glrz2woLXp45Aaq3boBbduyh4c8CgOPr9Eq8Pj5WXuNGHiI6lPrfVe7Yahdgefnn8V1376iuNhWVJQILDU1jr1fL12y7pnVrx/30SKPwsDja7QKPF27ip2UKyqA2vU5iKiWGu+7iAggPh4AEGpP4Ll4UUwjB6wbjUpyOOvUKaCV9XcasR3WYg8PeRAGHl+j1Qaisn7n1ClAcecKPEQeQI3AM3q0mHWVkYGAggL7HiOHtRrW8TgzJV2yLVxmDQ95EAYeX6PymiB1ZP0OC5aJGpPvu+7dRWhxhpyOvmuX/Y+RCxA2rONxpmBZsg087OEhD8LA42vUXhNE4qKDRM3LzhZTyQMCAJulNhwiFxxsaf2dhlrr4XGkYFmSQ1oMPORhGHh8kRZ1PAw8RM2zWICzZ8WxM++7wEBg5Ehx3NIKyw2lpIjXjo0FOnWy3q5GD0/fvixaJo/CwOOLtKjj4ZAWUctc+aAxbBgQHAycO+dYr0xxsXUquW0vjww8zvTwnD0LlJaKEMZtJciDMPD4IvbwELmfK+87Wb+zcydMjj624bBWZKTYS8/RKemSolhDFAAUFnJbCfIIDDy+SO3AExAgpqUD7OEhao583znTs1q7/o5Dw1lSw8Jl2btz+jRQWen48wHWOh6AvTvkMRh4fJHagScmRsw8uXxZdLkTUWPOvu9MJtcCT8MeHlempEuyjgdg/Q55DAYeX6R2DQ/rd4ha52zg6dcP6NhRfKDYt8/x101NFTPEOncWPbGuFCxLtoGHPTzkIRh4fJHtmiAmhysCGmP9DlHrnA08sn5nzx4RXBxVVgYcPCiOhw93bUq6xCEt8kAMPL4oK0v84gwKsq6U6goGHqLWyZ7Vtm2BDh3sf5wzCw42JOt4hg9Xp4fn2DFR9Aww8JDHYODxRTU1IvQA6tTxcEiLqHUVFdZ6F0fedzYztJxmu3O6K1PSpYoK6wcc1vCQh2Dg8VVq1vGwh4fIPo4Oa8XEAL17i8UD9+xx/nVl4Bk3DggPF8/n6vt1yxax8eiPP7r2PERuwsDjq9ScqcUeHiL7OPq+u/tucf3tt0BRkfOve+CA6JVp00Z8feaM62vnPPSQWL05Lc215yFyEwYeX6VW4AkOtu4NxB4eopY58r4zmYB77hHH77zj2utWVtYPJq4MZ9kqLFTneYjcgIHHV6kVeOTji4qAggLXnovI28mhZHved+PHA716AZcuAf/7n+uvLQuXAdcKlok8FAOPr3Jl1VdbrN8hsp8jHzRmzxbXa9cC5eWuv7as4wHU6+Eh8iAMPL7KkU+aLZH1Oww8RK2zN/C0awdMny6O331XnddmDw/5OAYeXyUDT3i4uDhL9vCwYJmodTLwdOwIhIQ0f7/bbxcFxgcO1O+ZcUV6urXw2XbhQCIfwcDjqy5fBs6fF8eu9PJwSIvIfoWF1kLflt53cjhLrd4dQKy/NX06MGsWh7TIJzHw+DI1Cpc5JZ3IMa297wYOBEaNEmvc/Pvf6r72118Dq1er+5xEHoKBx5epsfgge3iIHNPahAE5Ff2zz4ALF9zTJiIfwMDjy1zt4WnbVtQiAOzhIbJXS++7gADgrrvEsZrDWUTEwOPTXA08cjgrPx8oLlalSURer6X33a9/DURGAtnZwFdfubddRF6OgceXqRV4OJxFZL+W3neyWHnNGutu5ESkCgYeX+ZqDQ+npBM5rrnA07kz8KtfieNVq9zbJiIfwMDjy+Qv3s6dgaAgxx/PgmUix8n3XZcugL+/9fa77gL8/ICdO4EjR/RpG5EXY+DxZfn5QGmpOO7e3fHHc0o6kePOnRM7lfv5Ad26WW/XYu0dIqrDwOPrXKnjYQ8PkeMUpfHWLldfDfTrB5SUAB9/rF/biLwYA4+vc6WOhz08RM5p+EFD9u589JEIPUSkOgYeX+dsD09EhLgADDxEjrJ934WGAjNmiK85nEWkGQYeX+ds4JG9O7m5QFmZqk0i8nq277vp08UinkeOALt26dsuIi/m3/pdyKs5G3g4JZ3Iebbvu759xTF7d4g0xcDj65yt4eGig0TOk4Fn+HAxNFxTIxYbJCLNcEjL18lfvN27AyaT/Y9jDw+R8+T7TtbBbdoE5OTo1hwiX8DA4+uys4HqaiAwUCxAaC9OSSdy3tmz9beO4HAWkeYYeHxdTY345Qs4VsfDIS0i51VXiw8bAHD+PPDFF/q2h8gHMPCQtXvdkToeDmkRuUa+795/H6iq0rctRD6ARcvUeNXX1nTsKNYOsVisjyUix/zjH0BxsbgmIs0x8JDjU9Nl7052NlBZqU2biLzdhg3iQkRuwSEtcjzwsH6HiIg8DAMPOV7Dw/odIiLyMAw85HgND6ekExGRh2HgIWvgadfOuhBaSzikRUREHoaBh8Tmn+fOiWN7enk4pEVERB6GgYcEe+t4TCZrKGIPDxEReQgGHhLsreOJjgaCg8VKsXKFZiIiIoPTNfA8/fTT+PHHH1FUVIS8vDysX78ecXFxLT5m5syZUBSl3qWsrMxNLfZi9k5Nl/U7Z87U3wuIiIjIwHQNPOPHj8drr72Gq666CpMmTUJAQAC2bNmCkJCQFh9XWFiI6OjoukusI3tAUdNk4Ln3XuDtt4EpU4CgoMb3Y/0OERF5IF1XWr7xxhvrfT1r1iycP38ew4YNw44dO5p9nKIoyMvL07p5vmXzZiA3VwxZ/d//iUtJibh9/Xpg40agsJAztIiIyCMZamuJ8PBwAMDFixdbvF/btm2RmZkJs9mMlJQULFiwAIcOHWryvoGBgQiy6akICwsDAJjNZpjN6nZwyedU+3nd4tgxKLGxwNixUG66CbjpJlHAPH26uFRVAd9+Wzdt3ZSZCZNB/p0efd49GM+7Pnje3Y/nXB8Nz7ur598wgcdkMuHll1/Gzp07cfDgwWbvl5GRgdmzZyMtLQ3h4eF44oknsHv3bgwcOBBZWVmN7j9//nwsWrSo0e2DBw9GaWmpmv8EmM3muhoki8Wi6nO7TUEB8N57UN57D2X9++NSUhIuTZiA8j59gEmT6u4Woyi4IiFBv3ba8Irz7oF43vXB8+5+POf6aHjeQ0NDXXo+EwBFhXa57PXXX8eNN96IMWPGNBlcmuPv74/09HSsXbsWzz33XKPvN9XDk5WVhYiICBQXF6vSdslsNiMhIQGpqale96ZQ+vQBbroJyrRpQNu2MF1/PUznz+vdLADefd6NjOddHzzv7sdzro+G5z0sLAyXLl1Cu3btnPr7bYgenpUrV2LKlCkYN26cQ2EHAKqrq7Fv3z706dOnye9XVlaisokdvS0WiyY/uPJ5ve5NceQIsHSpuECkZEMk5Vpee94NjuddHzzv7sdzrg/b8+7qudd9QHLlypW4+eabce211yLTiZk/ZrMZgwYNQk5OjvqNIyIiIq+gaw/Pa6+9hjvvvBM33XQTiouLERUVBUBMOy8vLwcArF69GllZWViwYAEA4Nlnn8WePXtw7NgxRERE4Mknn0RsbCzefvtt3f4dREREZGy6Bp4HH3wQAPDdd9/Vu33WrFlYvXo1ACAmJqZeN1b79u3x1ltvITo6GgUFBfj5559x9dVXIz093X0NJyIiIo+ia+AxmUyt3icpKane1/PmzcO8efO0ahIRERF5Id1reIiIiIi0xsBDREREXo+Bh4iIiLweAw8RERF5PQYeIiIi8noMPEREROT1GHiIiIjI6zHwEBERkddj4CEiIiKvx8BDREREXk/XrSX0FBYWpvpzms1mhIaGIiwszOVt7Ml+PO/64HnXB8+7+/Gc66PheXf177bPBR55wrKysnRuCRERETkqLCwMxcXFDj/OBEBRvznG1qVLF6dOVmvCwsKQlZWFrl27avL81DSed33wvOuD5939eM710dR5DwsLQ3Z2tlPP53M9PACcPln2Ki4u5ptCBzzv+uB51wfPu/vxnOvD9ry7cv5ZtExERERej4GHiIiIvB4Dj4oqKiqwaNEiVFRU6N0Un8Lzrg+ed33wvLsfz7k+1D7vPlm0TERERL6FPTxERETk9Rh4iIiIyOsx8BAREZHXY+AhIiIir8fAo5IHH3wQJ0+eRFlZGfbs2YMRI0bo3SSvMnbsWHz22WfIysqCoii46aabGt3n+eefR3Z2Ni5fvoyvv/4affr00aGl3uXpp5/Gjz/+iKKiIuTl5WH9+vWIi4urd5+goCC8+uqruHDhAoqLi7Fu3TpERkbq1GLvMGfOHOzfvx+FhYUoLCzE7t27MXny5Lrv85xr76mnnoKiKFi+fHndbTzv2li4cCEURal3SU9Pr/u+mudd4cW1y2233aaUl5crs2bNUgYMGKC88cYbysWLF5VOnTrp3jZvuUyePFn5y1/+okybNk1RFEW56aab6n3/j3/8o1JQUKD8v//3/5RBgwYpGzZsUI4fP64EBQXp3nZPvmzatEmZOXOmcuWVVyqDBw9WvvjiCyUzM1MJCQmpu8/rr7+unDp1SklKSlISExOV3bt3Kzt37tS97Z58mTJlinLjjTcqffr0Ufr27av89a9/VSoqKpQrr7yS59wNl+HDhysnTpxQUlNTleXLl9fdzvOuzWXhwoXKgQMHlKioqLrLFVdcocV51/8f6+mXPXv2KCtXrqz72mQyKWfPnlWeeuop3dvmjZemAk92drby+OOP133drl07paysTJkxY4bu7fWmS8eOHRVFUZSxY8fWneeKigrllltuqbtPv379FEVRlFGjRuneXm+65OfnK7Nnz+Y51/gSGhqqZGRkKBMnTlS2b99eF3h43rW7LFy4UNm3b1+T31PzvHNIy0UBAQEYNmwYtm7dWneboijYunUrRo8erWPLfEfPnj3RuXPnev8HRUVF+OGHH/h/oLLw8HAAwMWLFwEAw4YNQ2BgYL1zn5GRgVOnTvHcq8RsNmPGjBkIDQ1FcnIyz7nGXnvtNWzcuBHbtm2rdzvPu7b69u2LrKwsHD9+HP/+97/RvXt3AOqed5/cPFRNHTt2hL+/P/Ly8urdnpeXh/79++vUKt8SHR0NAE3+H8jvketMJhNefvll7Ny5EwcPHgQgzn1FRQUKCwvr3Zfn3nXx8fFITk5GcHAwSkpKcPPNNyM9PR0JCQk85xqZMWMGEhMTm6zB5M+6dn744QfMmjULGRkZ6Ny5MxYuXIgdO3YgPj5e1fPOwENEdnnttdcQHx+PMWPG6N0Un5CRkYGEhASEh4dj+vTpWL16NcaPH693s7xWt27dsGLFCkyaNIlbSLjZ5s2b644PHDiAH374AadOncJtt92GsrIy1V6HQ1ouunDhAqqrqxEVFVXv9qioKOTm5urUKt8izzP/D7SzcuVKTJkyBUlJScjKyqq7PTc3F0FBQXVDXRLPveuqqqpw/PhxpKSkYMGCBdi/fz/mzp3Lc66RYcOGISoqCikpKaiqqkJVVRUmTJiARx99FFVVVcjLy+N5d5PCwkIcOXIEffr0UfXnnYHHRVVVVfj5558xceLEuttMJhMmTpyI5ORkHVvmO06ePImcnJx6/wdhYWEYNWoU/w9UsHLlStx888249tprkZmZWe97P//8MyorK+ud+7i4OMTGxvLcq8xsNiMoKIjnXCPbtm1DfHw8EhIS6i579+7FBx98gISEBPz00088724SGhqK3r17IycnR/Wfd90rtD39cttttyllZWXK3XffrfTv31/517/+pVy8eFGJjIzUvW3ecgkNDVWGDBmiDBkyRFEURXnssceUIUOGKN27d1cAMS394sWLytSpU5X4+Hhl/fr1nJauwuW1115TCgoKlHHjxtWbMhocHFx3n9dff13JzMxUJkyYoCQmJiq7du1Sdu3apXvbPfmyePFiZezYsUpsbKwSHx+vLF68WKmpqVGuu+46nnM3XmxnafG8a3dZunSpMm7cOCU2NlYZPXq0smXLFuXcuXNKx44d1T7v+v9jveHy0EMPKZmZmUp5ebmyZ88eZeTIkbq3yZsu48ePV5qyatWquvs8//zzSk5OjlJWVqZ8/fXXSt++fXVvt6dfmjNz5sy6+wQFBSmvvvqqkp+fr5SUlCiffPKJEhUVpXvbPfny9ttvKydPnlTKy8uVvLw85euvv64LOzzn7rs0DDw879pc1q5dq2RlZSnl5eXKmTNnlLVr1yq9evVS/bybag+IiIiIvBZreIiIiMjrMfAQERGR12PgISIiIq/HwENERERej4GHiIiIvB4DDxEREXk9Bh4iIiLyegw8RERE5PUYeIjI7VatWoX169e7/XVnzpwJRVGgKAqWL19ed/vJkycxd+5ch59v/Pjxdc+nx7+HiOznr3cDiMi7KErLi7cvWrQIc+fOhclkclOL6issLES/fv1QWlrq8nPt3r0b0dHRWLFiBYKCglRoHRFphYGHiFQVHR1ddzxjxgz8+c9/Rr9+/epuKykpUSVsOEtRFOTl5bn8PP7+/qiqqkJeXh7KysoYeIgMjkNaRKSqvLy8ukthYWFdwJCX0tLSRkNa27dvxyuvvILly5fj4sWLyM3Nxb333ouQkBC8++67KCoqwtGjRzF58uR6rzVw4EB8+eWXKC4uRm5uLtasWYMrrrjCqXaHhITgnXfeQVFREU6dOoX77ruv7nuxsbFQFAW33XYbvv32W5SVleG3v/2tcyeIiHTBwENEhjBz5kxcuHABI0eOxMqVK/HPf/4TH3/8MXbv3o3ExERs2bIF77//Ptq0aQMACA8PxzfffIN9+/Zh+PDhmDx5MqKiovDRRx859fqPP/44fvrpJwwdOhSvv/46/vnPfyIuLq7efZYsWYIVK1ZgwIAB+Oqrr1z+NxORe+m+NTwvvPDinZeZM2cqBQUFjW5ftWqVsn79+rqvt2/frnz//fd1X5vNZqW4uFhZvXp13W1RUVGKoijKqFGjFADKn/70J2Xz5s31nrdr166KoihK3759HWrPyZMnlTVr1tS7LTc3V3nggQcUAEpsbKyiKIry6KOPNvm8Df89vPDCi/EurOEhIkNIS0urO7ZYLMjPz8eBAwfqbpN1N5GRkQCAIUOGICkpCcXFxY2eq3fv3jh69KjTrw8Aubm5da8l/fTTTw49JxEZBwMPERlCVVVVva8VRWl0GwCYzWIkvm3btvj888/x1FNPNbpPTk6OKq8vX0vSs9iaiFzDwENEHiklJQW33HILMjMzUVNTo3dziMjgWLRMRB7ptddeQ4cOHbB27VoMHz4cvXr1wvXXX4933323Uc8MERF/KxCRR8rJycE111wDPz8/bNmyBQcOHMDLL7+MS5cuwWKx6N08IjIYE0T1MhGR15s5cyZefvlltG/fXtXnXbVqFSIiInDzzTer+rxEpB728BCRT4mIiEBxcTGWLFni8nONGTMGxcXFXISQyAOwh4eIfEbbtm0RFRUFALh06RLy8/Nder7g4GB07doVgNgyQ40tK4hIGww8RERE5PU4pEVERERej4GHiIiIvB4DDxEREXk9Bh4iIiLyegw8RERE5PUYeIiIiMjrMfAQERGR12PgISIiIq/3/wHnMQBxrwgBIAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "total_demand = 185 # [MWh], sets the total demand [units of energy]\n", + "demand = (np.sin((hours*np.pi/n_hours*2+phase_shift))*-1+np.ones(N)*(base_shift+1))\n", + "\n", + "np.random.seed(1234) # sets the seed for repeatability\n", + "\n", + "noise = np.random.random(N)\n", + "demand += noise\n", + "\n", + "demand = demand/demand.sum() * total_demand # rescale\n", + "\n", + "with plt.style.context(\"dark_background\"):\n", + " plt.plot(hours, demand, color='cyan')\n", + " plt.ylabel('Demand [MW]')\n", + " plt.xlabel('Time [hr]')\n", + " plt.grid(alpha=0.2)\n", + " plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating the Dispatch Model\n", + "\n", + "\n", + "This is the simplest model in `osier`. The dispatch model minimizes total operational cost of the system and requires two pieces of data:\n", + "\n", + "1. A list of `osier.Technology` objects that can meet the specified demand.\n", + "\n", + "2. A **net** demand profile (i.e., if you want to model renewable energy, you should provide a production curve for the given time period of interest). The net demand is the demand minus the non-dispatchable energy production at each time step (e.g., demand - wind production - solar production). \n", + "\n", + "In order to solve the model, simply call `DispatchModel.solve(solver=\"SOLVER_NAME\")`. This function returns `None`, but you can check that it succeeded by printing `DispatchModel.objective`.\n", + "\n", + "The default values for the model are:\n", + "\n", + "1. Energy -- Megawatts [MW]\n", + "\n", + "2. Time -- 1 hour [hr]\n", + "\n", + "3. Cost -- million dollars per unit [M$/unit]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0041415950000000005\n", + "Model ran in 0.987957 seconds.\n" + ] + } + ], + "source": [ + "import time\n", + "start = time.perf_counter()\n", + "model = DispatchModel(technology_list=technology_mix,\n", + " net_demand=demand\n", + " )\n", + "model.solve(solver=solver) # add your preferred solver here!\n", + "end = time.perf_counter()\n", + "print(model.objective)\n", + "print(f\"Model ran in {(end-start):3f} seconds.\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Verifying the results\n", + "\n", + "Since this is only a dispatch model, the only costs that contribute to the merit order is the marginal cost of producing electricity (i.e., the variable costs). Although there are two types of variable costs in an `osier.Technology` object, fuel and operating and management (O&M). They are automatically combined into a single variable cost (`osier` tries to enforce consistent units as well by using the `unyt` library).\n", + "\n", + "In order to verify that the results make sense, we can divide the model objective by the total demand, and that should equal the variable cost for the natural gas technology (though I use the `np.isclose` command to account for any floating point wonkiness)." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tol = 1e-6\n", + "np.isclose((model.objective / total_demand), \n", + " model.technology_list[0].variable_cost, \n", + " rtol=tol)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The variables agree! Which means the model ran successfully and nothing strange happened!" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Checking the results" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NaturalGas_ConvCurtailmentCost
03.487597-0.00.000078
13.669428-0.00.000082
23.199753-0.00.000072
33.351018-0.00.000075
43.172340-0.00.000071
\n", + "
" + ], + "text/plain": [ + " NaturalGas_Conv Curtailment Cost\n", + "0 3.487597 -0.0 0.000078\n", + "1 3.669428 -0.0 0.000082\n", + "2 3.199753 -0.0 0.000072\n", + "3 3.351018 -0.0 0.000075\n", + "4 3.172340 -0.0 0.000071" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# show the first 5 hours of the system.\n", + "model.results.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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gui76R6POACDAfKUAUxgMtk7GrEH3QMCug9E94Ajc8mW4lMzVGI6adIkpk2blvSzl5cXAQEBEHQMokLtGJnYjcEIGCDwCJji7R2N2IPuAQHdB6J7wJG5eqX41AyVmEZHRxMdHX3/G6Z43YRZWeLnr3sg69I9IKD7QHQPOKyUfx4aiCEiIiIiDsGuLaaenp6UKVMm6eeSJUtSrVo1bt26xeXLl+0YmYiIiIikN7smprVr12bTpk1JP0+fPh2ABQsWMHDgQDtFJSIiIiL2YNfEdPPmzRgMBnuGICIiIiIOQmNMRURERMQhKDEVEREREYegxFREREREHIISUxERERFxCBkyMR06dCj+/v7s3r3b3qGIiIiIiJVkyMTUz88PX19f6tata+9QRERERMRKMmRiKiIiIiKZjxJTEREREXEISkxFRERExCEoMRURERERh6DEVEREREQcghJTEREREXEISkxFRERExCEoMRURERERh6DEVEREREQcQoZMTLUlqYiIiEjmkyETU21JKiIiIpL5ZMjEVEREREQyHyWmIiIiIuIQlJiKiIiIiENQYioiIiIiDkGJqYiIiIg4BCWmIiIiIuIQlJiKiIiIiENQYioiIiIiDkGJqYiIiIg4hAyZmGpLUhEREZHMJ0MmptqSVERERCTzyZCJqYiIiIhkPkpMRURERMQhKDEVEREREYegxFREREREHIISUxERERFxCEpMRURERMQhKDEVEREREYegxFREREREHIISUxERERFxCEpMRURERMQhZMjEdOjQofj7+7N79257hyIiIiIiVpIhE1M/Pz98fX2pW7euvUMRERERESvJkImpiIiIiGQ+SkxFRERExCEoMRURERERh6DEVEREREQcghJTEREREXEIDpGYDh06lPPnzxMZGcnff/9NnTp17B2SiIiIiKQzuyemPXv2ZNq0aYwfP56aNWty6NAh1q5dS758+ewdmoiIiIikI7snpq+//jpff/01CxYs4Pjx4wwZMoSIiAgGDRpk79BEREREJB0527NyFxcXatWqxaRJk5JeM5lMrF+/ngYNGtx3vqurK25ubkk/e3l5mf/HLYfNYxUHZTCCa3ZwywmmeHtHI/age0BA94HoHnBkrtlTfKpdE9O8efPi7OxMUFBQsteDgoKoUKHCfeePGTOGcePG3V/Q60dtFKGIiIiIWIOXlxfh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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "with plt.style.context(\"dark_background\"):\n", + " fig, ax = plt.subplots(figsize=(8,4))\n", + " ax.grid(alpha=0.2)\n", + " ax.minorticks_on()\n", + " ax.fill_between(hours, \n", + " y1=0, \n", + " y2=model.results['NaturalGas_Conv'].values, \n", + " color='tab:orange', \n", + " label='Natural Gas')\n", + " ax.plot(hours, model.net_demand, color='cyan', label='Net Demand')\n", + " ax.set_xlim(0,48)\n", + " ax.set_ylim(0,5.5)\n", + " ax.legend()\n", + " ax.set_ylabel(\"Demand [MW]\")\n", + " ax.set_xlabel(\"Time [hr]\")\n", + " plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see that the natural gas plant perfectly fulfilled the demand at each time step." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "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.10.13" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/source/examples/index.md b/docs/source/examples/index.md new file mode 100644 index 0000000..dad78aa --- /dev/null +++ b/docs/source/examples/index.md @@ -0,0 +1,14 @@ +# `Osier` Examples + + +This section has examples that guide users from basic usage to more advanced topics. + + +## Guides +```{toctree} +:maxdepth: 3 + +tech_tutorial +dispatch_tutorial +capacity_expansion_tutorial +``` \ No newline at end of file diff --git a/docs/source/examples/tech_tutorial.ipynb b/docs/source/examples/tech_tutorial.ipynb new file mode 100644 index 0000000..cb26b44 --- /dev/null +++ b/docs/source/examples/tech_tutorial.ipynb @@ -0,0 +1,1171 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# `Osier` Technology Tutorial\n", + "\n", + "An `osier.Technology` is the fundamental object in `osier`, representing power producing technologies such as power plants or energy storage. Other modules use and modify `osier.Technology` objects. This object contains all of the information one needs to run an energy system model.\n", + "\n", + "\n", + "Objectives:\n", + "\n", + "* Learn how to import a pre-defined technology from the ``osier`` technology library.\n", + "\n", + "* Modify the attributes of a technology object in the current instance.\n", + "\n", + "* Create your own ``osier`` technology! " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# recommended imports\n", + "from unyt import MW, GW, hr, year\n", + "from unyt import unyt_array\n", + "import numpy as np" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Importing from the Technology Library\n", + "\n", + "``Osier`` comes with some generic, pre-defined technology classes that you can use immediately in your simulations.\n", + "The cost data comes from the National Renewable Energy Laboratory's (NREL) Annual Technology Baseline (ATB)." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Import NameTechnology Name
0batteryBattery
1biomassBiomass
2coalCoal_Conv
3coal_advCoal_Adv
4natural_gasNaturalGas_Conv
5natural_gas_advNaturalGas_Adv
6nuclearNuclear
7nuclear_advNuclear_Adv
8solarSolarPanel
9windWindTurbine
\n", + "
" + ], + "text/plain": [ + " Import Name Technology Name\n", + "0 battery Battery\n", + "1 biomass Biomass\n", + "2 coal Coal_Conv\n", + "3 coal_adv Coal_Adv\n", + "4 natural_gas NaturalGas_Conv\n", + "5 natural_gas_adv NaturalGas_Adv\n", + "6 nuclear Nuclear\n", + "7 nuclear_adv Nuclear_Adv\n", + "8 solar SolarPanel\n", + "9 wind WindTurbine" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# import the catalog to see what technologies are available\n", + "from osier.tech_library import catalog\n", + "\n", + "display(catalog())" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Nuclear: 18609.404000000002 MW\n" + ] + } + ], + "source": [ + "# import some specific technologies\n", + "from osier.tech_library import battery, nuclear, solar\n", + "\n", + "# printing the technology will show the currently specified capacity.\n", + "print(nuclear)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "All of the associated technology data can be viewed in a dataframe format using ``osier.Technology.to_dataframe()``." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
technology_categorytechnology_typedispatchablerenewablefuel_typeramp_up_rate (1/hr)ramp_down_rate (1/hr)lifetimecapacity (MW)capacity_factorcapacity_creditefficiencycapital_cost (1/kW)om_cost_fixed (1/kW)om_cost_variable (1/(MW*hr))fuel_cost (1/(MW*hr))co2_rate (megatonnes/(MW*hr))lifecycle_co2_rate (megatonnes/(GW*hr))land_intensity (km/MW**2)heat_rate
technology_name
NuclearthermalproductionTrueFalseNone00251.86e+041115e-050.00017805.81e-0605.1e-060None
\n", + "
" + ], + "text/plain": [ + " technology_category technology_type dispatchable renewable \\\n", + "technology_name \n", + "Nuclear thermal production True False \n", + "\n", + " fuel_type ramp_up_rate (1/hr) ramp_down_rate (1/hr) lifetime \\\n", + "technology_name \n", + "Nuclear None 0 0 25 \n", + "\n", + " capacity (MW) capacity_factor capacity_credit efficiency \\\n", + "technology_name \n", + "Nuclear 1.86e+04 1 1 1 \n", + "\n", + " capital_cost (1/kW) om_cost_fixed (1/kW) \\\n", + "technology_name \n", + "Nuclear 5e-05 0.000178 \n", + "\n", + " om_cost_variable (1/(MW*hr)) fuel_cost (1/(MW*hr)) \\\n", + "technology_name \n", + "Nuclear 0 5.81e-06 \n", + "\n", + " co2_rate (megatonnes/(MW*hr)) \\\n", + "technology_name \n", + "Nuclear 0 \n", + "\n", + " lifecycle_co2_rate (megatonnes/(GW*hr)) \\\n", + "technology_name \n", + "Nuclear 5.1e-06 \n", + "\n", + " land_intensity (km/MW**2) heat_rate \n", + "technology_name \n", + "Nuclear 0 None " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nuclear.to_dataframe()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Battery: 815.3412599999999 MW,\n", + " Biomass: 0.0 MW,\n", + " Coal_Conv: 0.0 MW,\n", + " Coal_Adv: 0.0 MW,\n", + " NaturalGas_Conv: 8375.1331 MW,\n", + " NaturalGas_Adv: 0.0 MW,\n", + " Nuclear: 18609.404000000002 MW,\n", + " Nuclear_Adv: 0.0 MW,\n", + " SolarPanel: 2810.3015 MW,\n", + " WindTurbine: 0.0 MW]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# one can also import a list of all technologies\n", + "from osier.tech_library import all_technologies\n", + "\n", + "display(all_technologies())" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lastly, if you want to view all of the technology data in a single dataframe, you can simply import `technology_dataframe` from `osier.utils`." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
technology_categorytechnology_typedispatchablerenewablefuel_typelifetimecapacity (MW)capacity_factorcapacity_creditefficiency...fuel_cost (1/(MW*hr))co2_rate (megatonnes/(MW*hr))lifecycle_co2_rate (megatonnes/(GW*hr))land_intensity (km/MW**2)storage_duration (hr)initial_storage (MW*hr)ramp_up_rate (1/hr)ramp_down_rate (1/hr)heat_ratelifecycle_co2_rate (megatonnes/(MW*hr))
technology_name
BatterybasestorageTrueFalseNone2581510.50.85...003.3e-05040NaNNaNNaNNaN
BiomassthermalproductionTrueTrueNone250111...4.7e-0500.000230NaNNaN11NoneNaN
Coal_ConvthermalproductionTrueFalseNone250111...2.14e-0500.0010NaNNaN0.50.5NoneNaN
Coal_AdvthermalproductionTrueFalseNone250111...3.66e-0500.000370NaNNaN0.50.5NoneNaN
NaturalGas_ConvthermalproductionTrueFalseNone258.38e+03111...2.24e-0500.000490NaNNaN11NoneNaN
NaturalGas_AdvthermalproductionTrueFalseNone250111...2.75e-0500.000130NaNNaN11NoneNaN
NuclearthermalproductionTrueFalseNone251.86e+04111...5.81e-0605.1e-060NaNNaN00NoneNaN
Nuclear_AdvthermalproductionTrueFalseNone250111...9.16e-060NaN0NaNNaN0.250.25None5.1e-09
SolarPanelbaseproductionFalseTruesolar252.81e+0310.191...003.7e-050NaNNaNNaNNaNNaNNaN
WindTurbinebaseproductionFalseTruewind25010.351...001.2e-050NaNNaNNaNNaNNaNNaN
\n", + "

10 rows × 23 columns

\n", + "
" + ], + "text/plain": [ + " technology_category technology_type dispatchable renewable \\\n", + "technology_name \n", + "Battery base storage True False \n", + "Biomass thermal production True True \n", + "Coal_Conv thermal production True False \n", + "Coal_Adv thermal production True False \n", + "NaturalGas_Conv thermal production True False \n", + "NaturalGas_Adv thermal production True False \n", + "Nuclear thermal production True False \n", + "Nuclear_Adv thermal production True False \n", + "SolarPanel base production False True \n", + "WindTurbine base production False True \n", + "\n", + " fuel_type lifetime capacity (MW) capacity_factor \\\n", + "technology_name \n", + "Battery None 25 815 1 \n", + "Biomass None 25 0 1 \n", + "Coal_Conv None 25 0 1 \n", + "Coal_Adv None 25 0 1 \n", + "NaturalGas_Conv None 25 8.38e+03 1 \n", + "NaturalGas_Adv None 25 0 1 \n", + "Nuclear None 25 1.86e+04 1 \n", + "Nuclear_Adv None 25 0 1 \n", + "SolarPanel solar 25 2.81e+03 1 \n", + "WindTurbine wind 25 0 1 \n", + "\n", + " capacity_credit efficiency ... fuel_cost (1/(MW*hr)) \\\n", + "technology_name ... \n", + "Battery 0.5 0.85 ... 0 \n", + "Biomass 1 1 ... 4.7e-05 \n", + "Coal_Conv 1 1 ... 2.14e-05 \n", + "Coal_Adv 1 1 ... 3.66e-05 \n", + "NaturalGas_Conv 1 1 ... 2.24e-05 \n", + "NaturalGas_Adv 1 1 ... 2.75e-05 \n", + "Nuclear 1 1 ... 5.81e-06 \n", + "Nuclear_Adv 1 1 ... 9.16e-06 \n", + "SolarPanel 0.19 1 ... 0 \n", + "WindTurbine 0.35 1 ... 0 \n", + "\n", + " co2_rate (megatonnes/(MW*hr)) \\\n", + "technology_name \n", + "Battery 0 \n", + "Biomass 0 \n", + "Coal_Conv 0 \n", + "Coal_Adv 0 \n", + "NaturalGas_Conv 0 \n", + "NaturalGas_Adv 0 \n", + "Nuclear 0 \n", + "Nuclear_Adv 0 \n", + "SolarPanel 0 \n", + "WindTurbine 0 \n", + "\n", + " lifecycle_co2_rate (megatonnes/(GW*hr)) \\\n", + "technology_name \n", + "Battery 3.3e-05 \n", + "Biomass 0.00023 \n", + "Coal_Conv 0.001 \n", + "Coal_Adv 0.00037 \n", + "NaturalGas_Conv 0.00049 \n", + "NaturalGas_Adv 0.00013 \n", + "Nuclear 5.1e-06 \n", + "Nuclear_Adv NaN \n", + "SolarPanel 3.7e-05 \n", + "WindTurbine 1.2e-05 \n", + "\n", + " land_intensity (km/MW**2) storage_duration (hr) \\\n", + "technology_name \n", + "Battery 0 4 \n", + "Biomass 0 NaN \n", + "Coal_Conv 0 NaN \n", + "Coal_Adv 0 NaN \n", + "NaturalGas_Conv 0 NaN \n", + "NaturalGas_Adv 0 NaN \n", + "Nuclear 0 NaN \n", + "Nuclear_Adv 0 NaN \n", + "SolarPanel 0 NaN \n", + "WindTurbine 0 NaN \n", + "\n", + " initial_storage (MW*hr) ramp_up_rate (1/hr) \\\n", + "technology_name \n", + "Battery 0 NaN \n", + "Biomass NaN 1 \n", + "Coal_Conv NaN 0.5 \n", + "Coal_Adv NaN 0.5 \n", + "NaturalGas_Conv NaN 1 \n", + "NaturalGas_Adv NaN 1 \n", + "Nuclear NaN 0 \n", + "Nuclear_Adv NaN 0.25 \n", + "SolarPanel NaN NaN \n", + "WindTurbine NaN NaN \n", + "\n", + " ramp_down_rate (1/hr) heat_rate \\\n", + "technology_name \n", + "Battery NaN NaN \n", + "Biomass 1 None \n", + "Coal_Conv 0.5 None \n", + "Coal_Adv 0.5 None \n", + "NaturalGas_Conv 1 None \n", + "NaturalGas_Adv 1 None \n", + "Nuclear 0 None \n", + "Nuclear_Adv 0.25 None \n", + "SolarPanel NaN NaN \n", + "WindTurbine NaN NaN \n", + "\n", + " lifecycle_co2_rate (megatonnes/(MW*hr)) \n", + "technology_name \n", + "Battery NaN \n", + "Biomass NaN \n", + "Coal_Conv NaN \n", + "Coal_Adv NaN \n", + "NaturalGas_Conv NaN \n", + "NaturalGas_Adv NaN \n", + "Nuclear NaN \n", + "Nuclear_Adv 5.1e-09 \n", + "SolarPanel NaN \n", + "WindTurbine NaN \n", + "\n", + "[10 rows x 23 columns]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from osier.utils import technology_dataframe\n", + "\n", + "technology_dataframe(all_technologies())" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Entries with `NaN` values means that technology *does not have that attribute*.\n", + "\n", + "Entries with `None` values means that technology possesses that attribute, but it has not been assigned a value!" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Modifying Standard Technologies\n", + "\n", + "If you want to test different cost assumptions or optimize over an attribute that is not currently present in the technology, \n", + "you can add or adjust at will. However, unless you modify the source code, these changes will not be saved if you restart the \n", + "Python instance.\n", + "\n", + "When modifying a capacity or cost attribute, specifying the units with the `unyt` library is recommended!" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "WindTurbine: 0.0 MW" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "WindTurbine: 5000.0 MW" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from osier.tech_library import wind\n", + "\n", + "# modify the capacity\n", + "display(wind)\n", + "wind.capacity = 5*GW\n", + "display(wind)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Is `readiness` present in the `wind` technology dataframe? False\n", + "The `wind` technology now has a `readiness` level of 9!\n", + "Is `readiness` present in the `wind` technology dataframe? True\n" + ] + } + ], + "source": [ + "# add a new attribute\n", + "\n", + "print(f\"Is `readiness` present in the `wind` technology dataframe? {'readiness' in wind.to_dataframe().columns}\")\n", + " \n", + "wind.readiness = 9\n", + "print(f\"The `wind` technology now has a `readiness` level of {wind.readiness}!\")\n", + "\n", + "print(f\"Is `readiness` present in the `wind` technology dataframe? {'readiness' in wind.to_dataframe().columns}\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating your own `osier.Technology` object\n", + "\n", + "Why would you want to create your own technology?\n", + "\n", + "* The technologies in `osier.tech_library` are too generic or you want to model a specific technology version.\n", + "\n", + "* There is a technology that is not represented.\n", + "\n", + "The data in the `osier.tech_library` primarily comes from NREL's Annual Technology Baseline. This representation\n", + "is generic, though, and you may be interested in creating a vendor specific technology. Or perhaps an \"idealized\"\n", + "technology that doesn't exist, yet (e.g., fusion?).\n", + "\n", + "\n", + "`osier` offers several sub-classes of the `osier.Technology` class as well: \n", + "\n", + "* `osier.RampingTechnology`: A general class for technologies that typically have ramping constraints (e.g., nuclear, hydroelectric dams)\n", + "\n", + "* `osier.ThermalTechnology`: A class that inherits from `osier.RampingTechnology` for technologies that have heat rates. `osier`'s \n", + "current implementation makes this redundant, but may be useful in the future.\n", + "\n", + "* `osier.StorageTechnology`: A general class for technologies that primarily store energy rather than produce it.\n", + "\n", + "\n", + "Only the name is a required input." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# import base class\n", + "from osier import Technology" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "alien_technology = Technology(technology_name=\"AlienTechnology\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But that's too simple. So let's add some more values.\n", + "\n", + "Note: When applying units from `unyt`, $\\frac{\\$}{GW}$ is best expressed as $\\$*GW^{-1}$. `unyt` currently does not handle currencies due to exchange rate issues and unit conversion is one of `unyt`'s primary functionalities." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "alien_technology = Technology(technology_name=\"AlienTechnology\",\n", + " technology_type=\"production\",\n", + " dispatchable=True,\n", + " renewable=True,\n", + " capital_cost=5e4*GW**-1,\n", + " fuel_cost=1e2*(MW*hr)**-1,\n", + " capacity_factor=1.0,\n", + " lifecycle_co2_rate=0.0,\n", + " lifetime=1000,\n", + " om_cost_fixed=90*(GW)**-1)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you're ever unsure of what parameters a function or class take, you can always call the Python `help()` function!\n", + "\n", + "If you're using a jupyter notebook or ipykernel, you can use the magic command `?` after the function or class, as shown below." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1;31mInit signature:\u001b[0m\n", + "\u001b[0mTechnology\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mtechnology_name\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mtechnology_type\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'production'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mtechnology_category\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'base'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mdispatchable\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mrenewable\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mcapital_cost\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mom_cost_fixed\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mom_cost_variable\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mfuel_cost\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mfuel_type\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mcapacity\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mcapacity_factor\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mcapacity_credit\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mco2_rate\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mlifecycle_co2_rate\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mland_intensity\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mefficiency\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mlifetime\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m25.0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mdefault_power_units\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mMW\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mdefault_time_units\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mhr\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mdefault_energy_units\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mdefault_length_units\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mkm\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mdefault_volume_units\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mm\u001b[0m\u001b[1;33m**\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m \u001b[0mdefault_mass_units\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmegatonnes\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n", + "\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m->\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mDocstring:\u001b[0m \n", + "The :class:`Technology` base class contains the minimum required\n", + "data to solve an energy systems problem. Many optional data are\n", + "included here as well. All other technologies in\n", + ":mod:`osier` inherit from this class.\n", + "\n", + "Parameters\n", + "----------\n", + "technology_name : str\n", + " The name identifier of the technology.\n", + "technology_type : str\n", + " The string identifier for the type of technology.\n", + " Two common types are: [\"production\", \"storage\"].\n", + "technology_category : str\n", + " The string identifier the the technology category.\n", + " For example: \"renewable,\" \"fossil,\" or \"nuclear.\"\n", + "dispatchable : bool\n", + " Indicates whether the technology can be dispatched by a\n", + " grid operator, or if it produces variable electricity\n", + " that must be used or stored the moment it is produced.\n", + " For example, solar panels and wind turbines are not\n", + " dispatchable, but nuclear and biopower are dispatchable.\n", + " Default value is true.\n", + "renewable : bool\n", + " Indicates whether the technology is considered \"renewable.\"\n", + " Useful for determining if a technology will contribute to\n", + " a renewable portfolio standard (RPS).\n", + "capital_cost : float or :class:`unyt.array.unyt_quantity`\n", + " Specifies the capital cost. If float,\n", + " the default unit is $/MW.\n", + "om_cost_fixed : float or :class:`unyt.array.unyt_quantity`\n", + " Specifies the fixed operating costs.\n", + " If float, the default unit is $/MW.\n", + "om_cost_variable : float, :class:`unyt.array.unyt_quantity`, or array-like\n", + " Specifies the variable operating costs. Users may pass timeseries data.\n", + " However, :class:`pandas.DataFrame` is not supported by this feature.\n", + " If float, the default unit is $/MWh.\n", + "fuel_cost : float, :class:`unyt.array.unyt_quantity`, or array-like\n", + " Specifies the fuel costs. Users may pass timeseries data.\n", + " However, :class:`pandas.DataFrame` is not supported by this feature.\n", + " If float, the default unit is $/MWh.\n", + "fuel_type : str\n", + " Specifies the type of fuel consumed by the technology.\n", + "capacity : float or :class:`unyt.array.unyt_quantity`\n", + " Specifies the technology capacity.\n", + " If float, the default unit is MW\n", + "capacity_factor : Optional, float\n", + " Specifies the 'usable' fraction of a technology's capacity.\n", + " Default is 1.0, i.e. all of the technology's capacity is\n", + " usable all of the time.\n", + "capacity_credit : Optional, float\n", + " Specifies the fraction of a technology's capacity that counts\n", + " towards reliability requirements. Most frequently used for \n", + " renewable technologies. For example, a solar farm might have \n", + " a capacity credit of 0.2. This means that in order to meet a \n", + " capacity requirement of 1 GW, 1.25 GW of solar would need to \n", + " be installed.\n", + " Default is 1.0, i.e. all of the technology's capacity contributes\n", + " to capacity requirements.\n", + "co2_rate : float or :class:`unyt.array.unyt_quantity`\n", + " Specifies the rate at which carbon dioxide is emitted during operation.\n", + " Generally only applicable for fossil fueled plants.\n", + " If float, the default units are megatonnes per MWh\n", + "lifecycle_co2_rate : float or :class:`unyt.array.unyt_quantity`\n", + " Specifies the rate at which of CO2eq emissions over a typical lifetime. \n", + " Unless you are reading this in a future where the economy is fully\n", + " decarbonized, all technologies should have a non-zero value for this \n", + " attribute.\n", + " If float, the default units are megatonnes per MWh\n", + "land_intensity : float or :class:`unyt.array.unyt_quantity`\n", + " The amount of land required per unit capacity. May be either lifecycle\n", + " land use or from direct use. However, consistency between\n", + " technologies is incumbent on the user.\n", + "efficiency : float\n", + " The technology's energy conversion efficiency expressed as\n", + " a fraction. Default is 1.0.\n", + "lifetime : float\n", + " The technology's operational lifetime in years. Default is 25 years.\n", + "default_power_units : str or :class:`unyt.unit_object.Unit`\n", + " An optional parameter, specifies the units\n", + " for power. Default is megawatts [MW].\n", + "default_time_units : str or :class:`unyt.unit_object.Unit`\n", + " An optional parameter, specifies the units\n", + " for time. Default is hours [hr].\n", + "default_mass_units : str or :class:`unyt.unit_object.Unit`\n", + " An optional parameter, specifies the units\n", + " for mass. Default is hours [kg].\n", + "default_energy_units : str or :class:`unyt.unit_object.Unit`\n", + " An optional parameter, specifies the units\n", + " for energy. Default is megawatt-hours [MWh]\n", + " Currently, `default_energy_units` is derived from the\n", + " time and power units.\n", + "\n", + "Notes\n", + "-----\n", + "Cost values are listed in the docs as [$ / physical unit]. However,\n", + ":class:`osier` does not currently have a currency handler, therefore the\n", + "units are technically [1 / physical unit].\n", + "\n", + "The :class:`unyt` library may not be able to interpret strings for\n", + "inverse units. For example:\n", + "\n", + ">>> my_unit = \"10 / MW\"\n", + ">>> my_unit = unyt_quantity.from_string(my_unit)\n", + "ValueError: Received invalid quantity expression '10/MW'.\n", + "\n", + "Instead, try the more explicit approach:\n", + "\n", + ">>> my_unit = \"10 MW**-1\"\n", + ">>> my_unit = unyt_quantity.from_string(my_unit)\n", + "unyt_quantity(10., '1/MW')\n", + "\n", + "However, inverse MWh cannot be converted from a string.\n", + "\u001b[1;31mFile:\u001b[0m c:\\users\\sdotson\\research\\osier\\osier\\technology.py\n", + "\u001b[1;31mType:\u001b[0m type\n", + "\u001b[1;31mSubclasses:\u001b[0m RampingTechnology, StorageTechnology" + ] + } + ], + "source": [ + "# help(Technology)\n", + "\n", + "Technology?" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/source/getting-started/index.md b/docs/source/getting-started/index.md index b055fb2..bb3880b 100644 --- a/docs/source/getting-started/index.md +++ b/docs/source/getting-started/index.md @@ -1,20 +1,12 @@ # Getting Started -```{eval-rst} -:class:`osier` is intended to be extremely user friendly and most problems -should be solvable without an external solver. However, the current implementation -of the :class:`osier.DispatchModel` as a linear program requires an external solver -such as CPLEX, CBC, GLPK, or Gurobi (since these are all supported by :class:`pyomo`). +Welcome to ``osier``! This page will help you get started with +the installation and usage of ``osier``. -CPLEX and Gurobi are commercial solvers, however it is quite simple to obtain a free -academic license (instructions forthcoming). GLPK will work on Windows, but requires -installing external binaries. CBC is a good open-source solver for a unix operating -system such as Mac or Linux. - ``` -In order to use CBC on the latter two operating systems you must have a version -of [Anaconda/conda](https://www.anaconda.com/products/distribution) installed. -Then you can install it using -```bash -$ conda install -c conda-forge coincbc -``` +## Guides +```{toctree} +:maxdepth: 1 + +solver_install +``` \ No newline at end of file diff --git a/docs/source/getting-started/solver_install.md b/docs/source/getting-started/solver_install.md new file mode 100644 index 0000000..1267522 --- /dev/null +++ b/docs/source/getting-started/solver_install.md @@ -0,0 +1,93 @@ +# Installing LP Solvers +```{eval-rst} +:class:`osier` is intended to be extremely user friendly and most problems +should be solvable without an external solver. However, the current implementation +of the :class:`osier.DispatchModel` as a linear program requires an external solver +such as CPLEX, CBC, GLPK, or Gurobi (since these are all supported by :class:`pyomo`). + +CPLEX and Gurobi are commercial solvers, however it is quite simple to obtain a free +academic license (instructions forthcoming). GLPK will work on Windows, but requires +installing external binaries. CBC is a good open-source solver for a unix operating +system such as Mac or Linux. + ``` + +## Table of Contents + +1. [COIN-CBC](#installing-coin-cbc) +2. [CPLEX](#installing-cplex) + 1. [Install on Debian/Ubuntu](#debianubuntu) + 2. [Install on Windows](#windows) + + +## Installing COIN-CBC +In order to use CBC on the latter two operating systems you must have a version +of [Anaconda/conda](https://www.anaconda.com/products/distribution) installed. +Then you can install it using + +```bash +$ conda install -c conda-forge coincbc +``` + +## Installing CPLEX + +### Debian/Ubuntu + +Once you have obtained an academic CPLEX license from IBM and downloaded the binaries, +follow these steps to install it. + +1. Open your terminal and install a java virtual machine + +```bash +$ sudo apt install -y openjdk-18-jre +``` + +2. Navigate to the folder location in your terminal with the CPLEX binaries. + +```bash +$ cd Downloads/ +``` + +3. Run the installer file and follow the command-line instructions. + +```bash +$ sudo bash ILOG_COS_20.10_LINUX_X86_64.bin +``` + +4. Check that CPLEX was properly installed by typing `cplex` in your command line interface. + +```bash +$ cplex + +Welcome to IBM(R) ILOG(R) CPLEX(R) Interactive Optimizer 20.1.0.0 + with Simplex, Mixed Integer & Barrier Optimizers +5725-A06 5725-A29 5724-Y48 5724-Y49 5724-Y54 5724-Y55 5655-Y21 +Copyright IBM Corp. 1988, 2020. All Rights Reserved. + +Type 'help' for a list of available commands. +Type 'help' followed by a command name for more +information on commands. + +CPLEX> q +``` + +#### Troubleshooting + +If the CPLEX installer cannot find the java virtual machine, find the location of the JVM and tell CPLEX where to find it. + +```bash +$ which java +# usr/bin/java +$ sudo bash ILOG_COS_20.10_LINUX_X86_64.bin LAX_VM usr/bin/java +``` + +If `cplex` command is not found, try explicitly adding it to your path. + +```bash +$ export CPLEX_STUDIO_BINARIES=/opt/ibm/ILOG/CPLEX_Studio201/cplex/bin/x86-64_linux/ +$ export PATH=$PATH:$CPLEX_STUDIO_BINARIES +``` +In order to make this change permanent, add these lines to the bottom of your `.bashrc` file and the run `$ source ~/.bashrc` to enact the changes. + +### Windows + +The easiest way to install CPLEX on Windows is with the GUI that is automatically shipped with the Windows binaries. Just follow the instructions in the GUI and you should be good to go! diff --git a/docs/source/index.md b/docs/source/index.md index f06cccd..06eeb8d 100644 --- a/docs/source/index.md +++ b/docs/source/index.md @@ -18,6 +18,7 @@ This package is in active development. contrib reference/index getting-started/index +examples/index ``` ## Indices and tables diff --git a/osier/models/capacity_expansion.py b/osier/models/capacity_expansion.py index 55d6c2e..786ceb3 100644 --- a/osier/models/capacity_expansion.py +++ b/osier/models/capacity_expansion.py @@ -18,57 +18,60 @@ class CapacityExpansion(ElementwiseProblem): """ The :class:`CapacityExpansion` class inherits from the :class:`pymoo.core.problem.ElementwiseProblem` class. This problem - determines the technology mix that _minimizes_ the provided - objectives. + determines the technology mix that _minimizes_ the provided objectives. Parameters ---------- technology_list : list of :class:`osier.Technology` objects - Defines the technologies used in the model and the number - of decision variables. + Defines the technologies used in the model and the number of decision + variables. demand : :class:`numpy.ndarray` The demand curve that needs to be met by the technology mix. objectives : list of str or functions - Specifies the number and type of objectives. A list of strings - must correspond to preset objective functions. Users may optionally - write their own functions and pass them to `osier` as items in the - list. + Specifies the number and type of objectives. A list of strings must + correspond to preset objective functions. Users may optionally write + their own functions and pass them to `osier` as items in the list. constraints : dictionary of string : float or function : float - Specifies the number and type of constraints. String key names - must correspond to preset constraints functions. Users may optionally - write their own functions and pass them to `osier` as keys in the - list. The values must be numerical and represent the value that the function + Specifies the number and type of constraints. String key names must + correspond to preset constraints functions. Users may optionally write + their own functions and pass them to `osier` as keys in the list. The + values must be numerical and represent the value that the function should not exceed. See notes for more information about constraints. prm : Optional, float - The "planning reserve margin" (`prm`) specifies the amount - of excess capacity needed to meet reliability standards. - See :attr:`capacity_requirement`. Default is 0.0. + The "planning reserve margin" (`prm`) specifies the amount of excess + capacity needed to meet reliability standards. See + :attr:`capacity_requirement`. Default is 0.0. solar : Optional, :class:`numpy.ndarray` - The curve that defines the solar power provided at each time - step. Automatically normalized with the infinity norm - (i.e. divided by the maximum value). + The curve that defines the solar power provided at each time step. + Automatically normalized with the infinity norm (i.e. divided by the + maximum value). wind : Optional, :class:`numpy.ndarray` - The curve that defines the wind power provided at each time - step. Automatically normalized with the infinity norm - (i.e. divided by the maximum value). + The curve that defines the wind power provided at each time step. + Automatically normalized with the infinity norm (i.e. divided by the + maximum value). power_units : str, :class:`unyt.unit_object` - Specifies the units for the power demand. The default is :attr:`MW`. - Can be overridden by specifying a unit with the value. + Specifies the units for the power demand. The default is :attr:`MW`. Can + be overridden by specifying a unit with the value. penalty : Optional, float - The penalty for infeasible solutions. If a particular set - produces an infeasible solution for the :class:`osier.DispatchModel`, - the corresponding objectives take on this value. + The penalty for infeasible solutions. If a particular set produces an + infeasible solution for the :class:`osier.DispatchModel`, the + corresponding objectives take on this value. curtailment : boolean Indicates if the model should enable a curtailment option. allow_blackout : boolean - If True, a "reliability" technology is added to the dispatch model that will - fulfill the mismatch in supply and demand. This reliability technology - has a variable cost of 1e4 $/MWh. The value must be higher than the - variable cost of any other technology to prevent a pathological + If True, a "reliability" technology is added to the dispatch model that + will fulfill the mismatch in supply and demand. This reliability + technology has a variable cost of 1e4 $/MWh. The value must be higher + than the variable cost of any other technology to prevent a pathological preference for blackouts. Default is False. verbosity : Optional, int - Sets the logging level for the simulation. Accepts `logging.LEVEL` - or integer where LEVEL is {10:DEBUG, 20:INFO, 30:WARNING, 40:ERROR, 50:CRITICAL}. + Sets the logging level for the simulation. Accepts `logging.LEVEL` or + integer where LEVEL is {10:DEBUG, 20:INFO, 30:WARNING, 40:ERROR, + 50:CRITICAL}. + solver : str + Indicates which solver to use. May require separate installation. + Accepts: ['cplex', 'cbc', 'glpk']. Other solvers will be added in the + future. Notes ----- @@ -94,6 +97,7 @@ def __init__(self, curtailment=True, allow_blackout=False, verbosity=50, + solver='cplex', **kwargs): self.technology_list = deepcopy(technology_list) self.demand = demand @@ -105,6 +109,7 @@ def __init__(self, self.curtailment = curtailment self.allow_blackout = allow_blackout self.verbosity = verbosity + self.solver = solver if isinstance(demand, unyt_array): self.power_units = demand.units @@ -129,7 +134,7 @@ def __init__(self, xl=lower_bound, xu=upper_bound, **kwargs) - + def print_problem_formulation(self): """ Prints the problem formulation. @@ -142,7 +147,7 @@ def print_problem_formulation(self): print("Technology Name | Capacity \n") for t in self.technology_list: print(t) - + print("\nElectricity Demand:\n") print(self.demand) @@ -185,7 +190,9 @@ def _evaluate(self, x, out, *args, **kwargs): net_demand=net_demand, power_units=self.power_units, curtailment=self.curtailment, - allow_blackout=self.allow_blackout) + allow_blackout=self.allow_blackout, + solver=self.solver, + verbosity=self.verbosity) model.solve() if model.results is not None: @@ -212,6 +219,5 @@ def _evaluate(self, x, out, *args, **kwargs): out["F"] = out_obj - if self.n_constr > 0: - out["G"] = out_constr \ No newline at end of file + out["G"] = out_constr diff --git a/paper/images/osier-results.png b/paper/images/osier-results.png new file mode 100644 index 0000000..202fc60 Binary files /dev/null and b/paper/images/osier-results.png differ diff --git a/paper/images/osier-tech-results.png b/paper/images/osier-tech-results.png new file mode 100644 index 0000000..e624533 Binary files /dev/null and b/paper/images/osier-tech-results.png differ diff --git a/paper/osier_flow.png b/paper/osier_flow.png new file mode 100644 index 0000000..d66af28 Binary files /dev/null and b/paper/osier_flow.png differ diff --git a/paper/paper.bib b/paper/paper.bib new file mode 100644 index 0000000..db7c5b3 --- /dev/null +++ b/paper/paper.bib @@ -0,0 +1,212 @@ +@article{bertsch:2016, + title = {A Participatory Multi-Criteria Approach for Power Generation and Transmission Planning}, + author = {Bertsch, Valentin and Fichtner, Wolf}, + year = {2016}, + month = oct, + journal = {Annals of Operations Research}, + volume = {245}, + number = {1}, + pages = {177--207}, + issn = {1572-9338}, + doi = {10.1007/s10479-015-1791-y}, + urldate = {2024-02-25}, + abstract = {The energy sector continues to undergo substantial structural changes. Currently, the expansion of renewable energy sources and the decentralisation of energy supply lead to new players entering the market who pursue different objectives and have different preferences. Thus, multiple and usually conflicting targets need to be considered. Moreover, recent public reactions towards infrastructure projects highlight the importance of considering public acceptance as a key dimension of decision making in the energy sector. As a result, decision processes grow more complex at all levels from political to strategic, tactical and operational decisions in companies. We therefore present an approach combining power systems analysis considering grid constraints and multi-criteria decision analysis. The approach focusses on multi-dimensional sensitivity analyses allowing for simultaneous variations of the different preference parameters determined within the decision analysis aimed at facilitating preference elicitation and consensus building in group decisions. The focus of the paper is the demonstration of the presented approach for a power generation and transmission planning case study in the context of the energy transition in Germany.}, + langid = {english}, + keywords = {Multi-criteria decision analysis (MCDA),Participatory decision processes,Power systems analysis (PSA),Transformation of energy systems}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/UMBDFUR8/Bertsch and Fichtner - 2016 - A participatory multi-criteria approach for power .pdf} +} + +@article{blank:2020, + title = {Pymoo: {{Multi-Objective Optimization}} in {{Python}}}, + shorttitle = {Pymoo}, + author = {Blank, Julian and Deb, Kalyanmoy}, + year = {2020}, + journal = {IEEE Access}, + volume = {8}, + pages = {89497--89509}, + issn = {2169-3536}, + doi = {10.1109/ACCESS.2020.2990567}, + abstract = {Python has become the programming language of choice for research and industry projects related to data science, machine learning, and deep learning. Since optimization is an inherent part of these research fields, more optimization related frameworks have arisen in the past few years. Only a few of them support optimization of multiple conflicting objectives at a time, but do not provide comprehensive tools for a complete multi-objective optimization task. To address this issue, we have developed pymoo, a multi-objective optimization framework in Python. We provide a guide to getting started with our framework by demonstrating the implementation of an exemplary constrained multi-objective optimization scenario. Moreover, we give a high-level overview of the architecture of pymoo to show its capabilities followed by an explanation of each module and its corresponding sub-modules. The implementations in our framework are customizable and algorithms can be modified/extended by supplying custom operators. Moreover, a variety of single, multi- and many-objective test problems are provided and gradients can be retrieved by automatic differentiation out of the box. Also, pymoo addresses practical needs, such as the parallelization of function evaluations, methods to visualize low and high-dimensional spaces, and tools for multi-criteria decision making. For more information about pymoo, readers are encouraged to visit: https://pymoo.org.}, + keywords = {Customization,Data visualization,Evolutionary computation,genetic algorithm,multi-objective optimization,Optimization,python,Python,Task analysis,Tools}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/MPT3PNKG/Blank and Deb - 2020 - Pymoo Multi-Objective Optimization in Python.pdf;/home/sam/snap/zotero-snap/common/Zotero/storage/54WMEV9R/9078759.html} +} + +@article{carley:2020, + title = {Energy Infrastructure, {{NIMBYism}}, and Public Opinion: A Systematic Literature Review of Three Decades of Empirical Survey Literature}, + shorttitle = {Energy Infrastructure, {{NIMBYism}}, and Public Opinion}, + author = {Carley, Sanya and Konisky, David M and Atiq, Zoya and Land, Nick}, + year = {2020}, + month = sep, + journal = {Environmental Research Letters}, + volume = {15}, + number = {9}, + pages = {093007}, + issn = {1748-9326}, + doi = {10.1088/1748-9326/ab875d}, + urldate = {2022-08-11}, + abstract = {Abstract Public support is a key determinant of whether any energy project is developed in democratic countries. In recent decades, scholars have extensively examined levels of support and opposition to energy infrastructure, often with a focus on so-called Not-in-My-Backyard (NIMBY) sentiments. As the need for energy infrastructure grows, so does the need to extract insights and lessons from this literature. In this systematic literature review, we evaluate decades of research to identify important trends in topical focus, research findings, and research design. We find a disproportionate focus on wind energy, followed by solar, fossil fuels, and transmission, with most studies conducted in the United States or United Kingdom, and that individuals are more often supportive of energy projects than they are opposed. Scholars have examined the role of many factors in understanding attitudes toward energy infrastructure, and often find knowledge, trust, and positive perceptions about the benefits of projects to be positively correlated with support for projects, although with variation across energy types. NIMBY attitudes differ widely in approach and are often plagued by problematic research designs that limit inferences and the generalizability of findings. We provide a detailed discussion of these limitations and suggest areas in which the literature can expand.}, + langid = {english}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/BFTMQWYL/Carley et al. - 2020 - Energy infrastructure, NIMBYism, and public opinio.pdf} +} + +@article{hart:2011, + title = {Pyomo: Modeling and Solving Mathematical Programs in {{Python}}}, + shorttitle = {Pyomo}, + author = {Hart, William E. and Watson, Jean-Paul and Woodruff, David L.}, + year = {2011}, + month = sep, + journal = {Mathematical Programming Computation}, + volume = {3}, + number = {3}, + pages = {219--260}, + issn = {1867-2949, 1867-2957}, + doi = {10.1007/s12532-011-0026-8}, + urldate = {2022-08-11}, + abstract = {We describe Pyomo, an open source software package for modeling and solving mathematical programs in Python. Pyomo can be used to define abstract and concrete problems, create problem instances, and solve these instances with standard open-source and commercial solvers. Pyomo provides a capability that is commonly associated with algebraic modeling languages such as AMPL, AIMMS, and GAMS. In contrast, Pyomo's modeling objects are embedded within a full-featured highlevel programming language with a rich set of supporting libraries. Pyomo leverages the capabilities of the Coopr software library, which together with Pyomo is part of IBM's COIN-OR open-source initiative for operations research software. Coopr integrates Python packages for defining optimizers, modeling optimization applications, and managing computational experiments. Numerous examples illustrating advanced scripting applications are provided.}, + langid = {english}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/ULZKWVDV/Hart et al. - 2011 - Pyomo modeling and solving mathematical programs .pdf} +} + +@article{johnson:2021, + title = {The {{Dakota Access Pipeline}} in {{Illinois}}: {{Participation}}, Power, and Institutional Design in {{United States}} Critical Energy Infrastructure Governance}, + shorttitle = {The {{Dakota Access Pipeline}} in {{Illinois}}}, + author = {Johnson, McKenzie F. and Sveinsd{\'o}ttir, Anna G. and Guske, Emily L.}, + year = {2021}, + month = mar, + journal = {Energy Research \& Social Science}, + volume = {73}, + pages = {101908}, + issn = {2214-6296}, + doi = {10.1016/j.erss.2021.101908}, + urldate = {2022-11-17}, + abstract = {The role of participation in US energy governance sits at the heart of ongoing contestation around the crude oil-bearing Dakota Access Pipeline (DAPL). Theconstruction of the 1,172-mile pipeline raised questions about the public's ability to influence energy infrastructure development considered by the US government as ``critical'' to national security. While numerous scholars and courts have begun to question whether thefederalregulatory process that permitted DAPL sufficiently allowed for participation, less work has examinedstate-levelprocesses. In this article, we ask whether actors who participated in the regulatory process at the state-level had sufficient opportunity to influence the siting, permitting, and construction of DAPL. We focus on Illinois, analyzing the 2015 proceeding by the Illinois Commerce Commission (ICC) to permit DAPL. Drawing on fieldwork between October 2018 and May 2020, we argue the ICC regulatory process minimized the space available for pipeline opposition in three ways. First, the ICC is limited, in an institutional design sense, from integrating broad public opinion into its decision-making process. Second, as a function of its design, pipeline opponents required significant knowledge and resources to mount claims before the ICC. Finally, we contend that politically powerful interest groups, especially labor unions and industry stakeholders, shape pipeline politics in Illinois in ways that further limit avenues for formal opposition. Our work raises important questions about the impact of public participation in contemporary energy and environmental governance, as well as how democratic contestation surrounding oil pipelines can openspacefor resistance and transformativesocial change.}, + langid = {english}, + keywords = {Crude-oil pipeline,Dakota Access Pipeline,Energy infrastructure governance,Illinois,Participation}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/7VAUJT4S/Johnson et al. - 2021 - The Dakota Access Pipeline in Illinois Participat.pdf;/home/sam/snap/zotero-snap/common/Zotero/storage/INTYX64C/S2214629621000013.html} +} + +@article{liebman:1976, + title = {Some {{Simple-Minded Observations}} on the {{Role}} of {{Optimization}} in {{Public Systems Decision-Making}}}, + author = {Liebman, Jon C.}, + year = {1976}, + month = aug, + journal = {Interfaces}, + volume = {6}, + number = {4}, + pages = {102--108}, + publisher = {INFORMS}, + issn = {0092-2102}, + doi = {10.1287/inte.6.4.102}, + urldate = {2023-01-18}, + abstract = {Because public systems problems are frequently ill-defined and have fuzzy constraints and vague multiple objectives, their solution by means of formal optimization models is not widely accepted. This paper will explore the modes (both useful and otherwise) in which optimization has been applied to such problems. The need for optimization models which somehow ``fit'' the decision-makers' methods and backgrounds will be discussed. Several other aspects of public systems optimization will be considered, in a somewhat random fashion. This paper will raise more questions than answers.} +} + +@article{mckenna:2018, + title = {Combining Local Preferences with Multi-Criteria Decision Analysis and Linear Optimization to Develop Feasible Energy Concepts in Small Communities}, + author = {McKenna, R. and Bertsch, V. and Mainzer, K. and Fichtner, W.}, + year = {2018}, + month = aug, + journal = {European Journal of Operational Research}, + series = {Community {{Operational Research}}: {{Innovations}}, Internationalization and Agenda-Setting Applications}, + volume = {268}, + number = {3}, + pages = {1092--1110}, + issn = {0377-2217}, + doi = {10.1016/j.ejor.2018.01.036}, + urldate = {2024-02-25}, + abstract = {Decentralised community energy resources are often abundant in smaller, more rural communities. Such communities often lack the capacity to develop extensive energy concepts and thus to exploit these resources in a consistent way. This paper presents an integrated participatory approach to developing feasible energy concepts for small communities. The novelty lies in the combination of methods, the consideration of uncertainties, and the application to an exemplary municipality in Germany. Stakeholder workshops are combined with energy modelling and multi-criteria decision analysis (MCDA), and a high transferability is ensured with mainly public data. The workshop discussion revealed three values: economic sustainability, environmental sustainability, and local energy autonomy. A total of eight alternatives for the 2030 energy system are identified to achieve these values. We find that an alternative that seeks only maximization of economic sustainability should be rejected based on elicited preferences. Instead, several alternatives seeking a maximization of environmental sustainability with constraints on economic sustainability (i.e. total cost) and local energy autonomy consistently achieve the highest overall performance scores. A maximization of economic sustainability or local energy autonomy alone results in the lowest overall performance scores and should therefore not be pursued by the community. The intermediate alternatives demonstrate that an equivalent performance gain with respect to autonomy comes at higher costs than the same gain with respect to environmental sustainability. Similarities between the best performing alternatives in terms of technologies that can be installed by 2030 show that our methodology can generate concrete and robust recommendations on building-level measures for energy system design.}, + keywords = {Community operational research,MCDA,MILP,Sustainable energy,Uncertainties}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/N4X7U5L5/McKenna et al. - 2018 - Combining local preferences with multi-criteria de.pdf;/home/sam/snap/zotero-snap/common/Zotero/storage/DFTWLY3S/S0377221718300729.html} +} + +@misc{nationalrenewableenergylaboratory:2023, + title = {2023 {{Annual Technology Baseline}} ({{ATB}})}, + author = {{National Renewable Energy Laboratory}}, + year = {2023}, + urldate = {2024-02-26}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/URRFWYVN/data.html} +} + +@article{pfenninger:2014, + title = {Energy Systems Modeling for Twenty-First Century Energy Challenges}, + author = {Pfenninger, Stefan and Hawkes, Adam and Keirstead, James}, + year = {2014}, + month = may, + journal = {Renewable and Sustainable Energy Reviews}, + volume = {33}, + pages = {74--86}, + issn = {1364-0321}, + doi = {10.1016/j.rser.2014.02.003}, + urldate = {2023-01-16}, + abstract = {Energy systems models are important methods used to generate a range of insight and analysis on the supply and demand of energy. Developed over the second half of the twentieth century, they are now seeing increased relevance in the face of stringent climate policy, energy security and economic development concerns, and increasing challenges due to the changing nature of the twenty-first century energy system. In this paper, we look particularly at models relevant to national and international energy policy, grouping them into four categories: energy systems optimization models, energy systems simulation models, power systems and electricity market models, and qualitative and mixed-methods scenarios. We examine four challenges they face and the efforts being taken to address them: (1) resolving time and space, (2) balancing uncertainty and transparency, (3) addressing the growing complexity of the energy system, and (4) integrating human behavior and social risks and opportunities. In discussing these challenges, we present possible avenues for future research and make recommendations to ensure the continued relevance for energy systems models as important sources of information for policy-making.}, + langid = {english}, + keywords = {Complexity,Energy policy,Energy systems modeling,High-resolution modeling,Uncertainty}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/ZB9UXEB5/Pfenninger et al. - 2014 - Energy systems modeling for twenty-first century e.pdf;/home/sam/snap/zotero-snap/common/Zotero/storage/WG6LL95H/S1364032114000872.html} +} + +@misc{pfenninger:2022, + title = {Openmod - {{Open Energy Modelling Initiative}}}, + author = {Pfenninger, Stefan and Schlect, Ingmar and Trondle, Tim and Brown, Tom}, + year = {2022}, + month = dec, + journal = {openmod-initiative}, + urldate = {2022-12-13}, + abstract = {The Open Energy Modelling (openmod) Initiative promotes open energy modelling across the world. Energy models are widely used for policy advice and research. They serve to help answer questions on energy policy, decarbonization, and transitions towards renewable energy sources. Currently, most energy models are black boxes -- even to fellow researchers. ``Open'' refers to model source code that can be studied, changed and improved as well as freely available energy system data. We believe that more openness in energy modelling increases transparency and credibility, reduces wasteful double-work and improves overall quality. This allows the community to advance the research frontier and gain the highest benefit from energy modelling for society. We, energy modelers from various institutions, want to promote the idea and practice of open energy modelling among fellow modelers, research institutions, funding bodies, and recipients of our work.}, + howpublished = {https://www.openmod-initiative.org/}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/8FWR7W4F/www.openmod-initiative.org.html} +} + +@article{prina:2020, + title = {Multi-Objective Investment Optimization for Energy System Models in High Temporal and Spatial Resolution}, + author = {Prina, Matteo Giacomo and Casalicchio, Valeria and Kaldemeyer, Cord and Manzolini, Giampaolo and Moser, David and Wanitschke, Alexander and Sparber, Wolfram}, + year = {2020}, + month = apr, + journal = {Applied Energy}, + volume = {264}, + pages = {114728}, + issn = {03062619}, + doi = {10.1016/j.apenergy.2020.114728}, + urldate = {2022-07-14}, + abstract = {Energy system modelling supports decision-makers in the development of short and long-term energy strategies. In the field of bottom-up short-term energy system models, high resolution in time and space, the implementation of sector coupling and the adoption of a multi-objective investment optimization have never been achieved simultaneously because of the high computational effort. Within this paper, such a bottom-up shortterm model which simultaneously implements (i) hourly temporal resolution, (ii) multi-node approach thus high spatial resolution, (iii) integrates the electric, thermal and transport sectors and (iv) implements a multi-objective investment optimization method is proposed. The developed method is applied to the Italian energy system at 2050 to test and show its main features. The model allows the evaluation of the hourly curtailments for each node. The optimization highlights that the cheapest solutions work towards high curtailments and low investments in flexibility options. In order to further reduce the CO2 emissions the investments in flexibility options like electric storage batteries and reinforcement and enlargement of the transmission grid become relevant.}, + langid = {english}, + keywords = {Energy scenarios,Evolutionary algorithms,Linear programming,Multi-objective optimization,Oemof,Pareto,Photovoltaics,Wind}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/NUDYXC6P/Prina et al. - 2020 - Multi-objective investment optimization for energy.pdf;/home/sam/snap/zotero-snap/common/Zotero/storage/ERFKECIJ/S0306261920302403.html} +} + +@article{vagero:2023, + title = {Can We Optimise for Justice? {{Reviewing}} the Inclusion of Energy Justice in Energy System Optimisation Models}, + shorttitle = {Can We Optimise for Justice?}, + author = {V{\aa}ger{\"o}, Oskar and Zeyringer, Marianne}, + year = {2023}, + month = jan, + journal = {Energy Research \& Social Science}, + volume = {95}, + pages = {102913}, + issn = {2214-6296}, + doi = {10.1016/j.erss.2022.102913}, + urldate = {2024-02-19}, + abstract = {Energy systems optimisation models are used for analysing energy systems and questions of e.g. greenhouse gas mitigation aligned with the Paris Agreement. However, the techno-economic nature of energy system models has opened for discussions about how well societal aspects are represented. Studying justice implications in energy systems modelling is an opportunity to inform policy-makers and the broader society how long-term changes to energy systems may affect different social groups and how to minimise injustices. In this paper, we review how, and to what extent, aspects of social justice have been included in energy systems optimisation modelling as well as areas for future research. In addition to reviewing published journal articles and reports, we organise a workshop with energy system modellers and social scientists, providing qualitative information on past approaches and potential future venues. We identify 3 key findings: (i) Exploring alternative system configurations to cost-optimality is receiving increasing attention and typically done through a `modelling to generate alternatives' approach, (ii) among formalised definitions of distributional justice, equality (equal distribution) is the most common equity principle. There is at the same time little reflection on the choice and impact of equity principles, potentially contributing to an overly narrow understanding of justice. (iii) Among the workshop participants, participatory approaches which involves stakeholders and lay people are considered a potential future area of research, especially for making modelling results and processes more accessible and impactful to the wider public.}, + keywords = {Energy justice,Energy systems modelling,Optimisation,Social justice}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/EB5R8QJC/Vågerö and Zeyringer - 2023 - Can we optimise for justice Reviewing the inclusi.pdf} +} + +@article{zelt:2019, + title = {Long-{{Term Electricity Scenarios}} for the {{MENA Region}}: {{Assessing}} the {{Preferences}} of {{Local Stakeholders Using Multi-Criteria Analyses}}}, + shorttitle = {Long-{{Term Electricity Scenarios}} for the {{MENA Region}}}, + author = {Zelt, Ole and Kr{\"u}ger, Christine and Blohm, Marina and Bohm, S{\"o}nke and Far, Shahrazad}, + year = {2019}, + month = jan, + journal = {Energies}, + volume = {12}, + number = {16}, + pages = {3046}, + publisher = {Multidisciplinary Digital Publishing Institute}, + issn = {1996-1073}, + doi = {10.3390/en12163046}, + urldate = {2024-02-25}, + abstract = {In recent years, most countries in the Middle East and North Africa (MENA), including Jordan, Morocco and Tunisia, have rolled out national policies with the goal of decarbonising their economies. Energy policy goals in these countries have been characterised by expanding the deployment of renewable energy technologies in the electricity mix in the medium term (i.e., until 2030). This tacitly signals a transformation of socio-technical systems by 2030 and beyond. Nevertheless, how these policy objectives actually translate into future scenarios that can also take into account a long-term perspective up to 2050 and correspond to local preferences remains largely understudied. This paper aims to fill this gap by identifying the most widely preferred long-term electricity scenarios for Jordan, Morocco and Tunisia. During a series of two-day workshops (one in each country), the research team, along with local stakeholders, adopted a participatory approach to develop multiple 2050 electricity scenarios, which enabled electricity pathways to be modelled using Renewable Energy Pathway Simulation System GIS (renpassG!S). We subsequently used the Analytical Hierarchy Process (AHP) within a Multi-Criteria Analysis (MCA) to capture local preferences. The empirical findings show that local stakeholders in all three countries preferred electricity scenarios mainly or even exclusively based on renewables. The findings demonstrate a clear preference for renewable energies and show that useful insights can be generated using participatory approaches to energy planning.}, + copyright = {http://creativecommons.org/licenses/by/3.0/}, + langid = {english}, + keywords = {electricity scenarios,energy modelling,Jordan,MCA,MENA,Morocco,multi-criteria,stakeholder participation,sustainability,Tunisia}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/S3QTXVF7/Zelt et al. - 2019 - Long-Term Electricity Scenarios for the MENA Regio.pdf} +} diff --git a/paper/paper.md b/paper/paper.md new file mode 100644 index 0000000..e6013bb --- /dev/null +++ b/paper/paper.md @@ -0,0 +1,157 @@ +--- +title: '`Osier`: A Python package for multi-objective energy system optimization' +tags: + - Python + - energy systems + - genetic algorithms + - multi-objective optimization +authors: + - name: Samuel G. Dotson + orcid: 0000-0002-8662-0336 + affiliation: 1 + corresponding: true + - name: Madicken Munk + orcid: 0000-0003-0117-5366 + affiliation: 1 +affiliations: + - name: Department of Nuclear, Plasma, and Radiological Engineering, University of Illinois Urbana-Champaign, USA + index: 1 +date: 05 April 2024 +bibliography: paper.bib +--- + +# Summary +Transitioning to a clean energy economy will require expanded energy +infrastructure. An equitable, or just, transition further requires the +recognition of the people and communities directly affected by this transition. +However, public preferences may be ignored during decision-making processes +related to energy infrastructure due to a lack of technical rigor or expertise +[@johnson:2021]. This challenge is further complicated by the fact that people +have and express preferences over many dimensions simultaneously. +Multi-objective optimization offers a method to help decision makers and +stakeholders understand the problem and analyze tradeoffs among solutions +[@liebman:1976]. Although, to date, no open-source multi-objective energy +modelling frameworks exist. Open-source multi-objective energy system framework +(`osier`) is a Python package for designing and optimizing energy systems across +an arbitrary number of dimensions. `osier` was designed to help localized +communities articulate their energy preferences in a technical manner without +requiring extensive technical expertise. In order to facilitate more robust +tradeoff analysis, `osier` generates a set of solutions, called a Pareto front, +that are composed of a number of technology portfolios. The Pareto front is +calculated using multi-objective optimization using evolutionary algorithms. +`osier` also extends the common modelling-to-generate-alternatives (MGA) +algorithm into N-dimensional objective space, as opposed to the conventional +single-objective MGA. This allows users to investigate the near-optimal +for appealing alternative solutions. In this way, `osier` may aid modelers in +addressing procedural and recognition justice. + +# Statement of Need +There are myriad open- and closed-source energy system optimization models +(ESOMs) available [@pfenninger:2022]. ESOMs can be used for a variety of tasks +but are most frequently used for prescriptive analyses meant to guide +decision-makers in planning processes. However, virtually all of these tools +share a fundamental characteristic: Optimization over +a single economic objective (e.g., total cost or social welfare). +Simultaneously, there is growing awareness of energy justice and calls for its +inclusion in energy models [@pfenninger:2014; @vagero:2023]. Some studies +incorporate local preferences into energy system design through +multi-criteria decision analysis (MCDA) and community focus groups +[@bertsch:2016; @mckenna:2018; @zelt:2019]. But these studies rely on tools with +pre-defined objectives which are difficult to modify. Without the ability to add +objectives that reflect the concerns of a community, the priorities of that +community will remain secondary to those of modellers and decision makers. A +flexible and extensible multi-objective framework that fulfills this need has +not yet been developed. The `osier` framework closes this gap. + +# Design and Implementation +The fundamental object in `osier` is an `osier.Technology` object, which +contains all of the necessary cost and performance data for different technology +classes. `osier` comes pre-loaded with a variety of technologies described in +the National Renewable Energy Laboratory's (NREL) Annual Technology Baseline (ATB) +dataset[@nationalrenewableenergylaboratory:2023] but users are also able to +define their own. In order to run `osier`, users are required to supply an +energy demand time series and a list of `osier.Technology` objects. Users can +optionally provide weather data to incorporate solar or wind energy. + +A set of `osier.Technology` objects, along with user-supplied demand data, can +be tested independently with the `osier.DispatchModel`. The +`osier.DispatchModel` is a linear programming model implemented with the `pyomo` +library [@hart:2011]. For investment decisions and tradeoff analysis, users can +pass their portfolio of `osier.Technology` objects, energy demand, and their +desired objectives to the `osier.CapacityExpansion` model, the highest level +model in `osier`. The `osier.CapacityExpansion` model is implemented with the +multi-objective optimization framework, `pymoo` [@blank:2020]. +\autoref{fig:osier-flow} overviews the flow of data through `osier`. + +![The flow of data into and within `osier`.\label{fig:osier-flow}](osier_flow.png) + +## Key Features +In addition to being the first and only open-source multi-objective energy +modelling framework, `osier` has a few key features that further distinguishes +it from other modelling frameworks. First, since `osier.Technology` objects are +Python objects, users can modify values and assumptions, or assign new +attributes to the tested technologies. Second, contrary to conventional energy +system models, `osier` has no required objectives. While users may choose from a +variety of pre-defined objectives, they may also declare their own objectives +based on any quantifiable metric. The requirements for a bespoke objective are: + +1. The first argument must be a list of `osier.Technology` objects. +2. The second argument must be the results from an `osier.DispatchModel`. But + this may be a simple placeholder with a default value of `None`. +3. The function must return a single numerical value. +4. The final requirement, is that all `osier.Technology` objects possess the + attribute being optimized. + +These two features acknowledge that a modeler cannot know *a priori* all +possible objectives or parameters of interest. Allowing users to define their +own objectives and modify technology objects (or simply build their own by +inheriting from the `osier.Technology` class) accounts for this limitation and +expands the potential for incorporating localized preferences. Lastly, in order +to account for unmodeled or unmodelable objectives, `osier` extends the +conventional MGA algorithm into N-dimensions by using a farthest-first-traversal +in the design space. + +## Sample Results and Interpretation + +When solving a multi-objective problem, `osier` generates a set of co-optimal +solutions rather than a global optimum, called a Pareto front. +\autoref{fig:osier-results} shows a Pareto front from a problem that +simultaneously minimizes total cost and lifecylce carbon emissions. + +![A Pareto front generated by`osier`.\label{fig:osier-results}](images/osier-results.png) + +Each point on this Pareto front represents a different technology portfolio +(i.e., different combination of wind, natural gas, and battery storage). +\autoref{fig:osier-tech-res} illustrates the variation in solutions from +the Pareto front in \autoref{fig:osier-results}. In this case, the range of +wind capacity is wider than the range of capacities for natural gas and battery +storage. + +![The variance in technology options along a Pareto front.\label{fig:osier-tech-res}](images/osier-tech-results.png) + +## Documentation + +`osier` offers robust documentation with detailed usage examples at +[osier.readthedocs.io](https://osier.readthedocs.io). + +# Acknowledgements + +Samuel Dotson, the corresponding and lead author of this publication is +responsible for the conceptualization of `osier`, developing `osier` as a +software, in preparing this manuscript for publication, and for performing +analysis to validate `osier`. Madicken Munk provided resources and supervision +for the work, as well as assisted in the review and editing of the manuscript. +Samuel Dotson was supported by the Nuclear Regulatory Commission Fellowship +program. This research was part of the Advanced Reactors and Fuel Cycles (ARFC) +group in the Department of Nuclear, Plasma, and Radiological Engineering (NPRE) +at the University of Illinois Urbana-Champaign. To that end, the authors would +like to acknowledge ARFC members Oleksander Yardas, Luke Seifert, Nathan Ryan, +Amanda Bachmann, and Sun Myung Park for their contributions in reviewing pull +requests supporting the creation of osier. Additionally, Samuel Dotson was +supported by the Felix T. Adler Fellowship through NPRE. Finally, the authors +would like to thank the JOSS reviewers for their time and commentary in +reviewing this manuscript. + +# References + + diff --git a/setup.py b/setup.py index 9158301..45fcd3c 100644 --- a/setup.py +++ b/setup.py @@ -6,8 +6,8 @@ # Format expected by setup.py and doc/source/conf.py: string of form "X.Y.Z" _version_major = 0 -_version_minor = 2 -_version_micro = 1 # use '' for first of series, number for 1 and above +_version_minor = 3 +_version_micro = 0 # use '' for first of series, number for 1 and above # _version_extra = 'dev' _version_extra = '' # Uncomment this for full releases @@ -59,18 +59,20 @@ 'openpyxl', 'nrelpy', 'unyt', - 'pyomo', 'pymoo', 'pyentrp', 'deap',] EXTRAS_REQUIRE = { 'doc': [ 'sphinx>=5.1', + 'sphinx-autobuild', 'myst-parser', "sphinx_design", "sphinx-autodoc-typehints", 'numpydoc', - 'pydata_sphinx_theme' + 'pydata_sphinx_theme', + 'nbsphinx', + 'pandoc' ]} PYTHON_REQUIRES = ">= 3.6"