{ "cells": [ { "cell_type": "markdown", "id": "a0570cfd", "metadata": {}, "source": [ "# Advection, Diffusion, and Reaction Models\n", "\n", "## Overview, Objectives, and Key Terms\n", "\n", "Lesson 10 started with balance rows: what is in a cell comes from what enters, what leaves, what is created, and what is destroyed. Today we take the same bookkeeping seriously enough that it becomes a differential equation.\n", "\n", "The central move is to count an amount in a small cell first, then decide how that amount changes. Once the units are right, the advection-diffusion-reaction equation is much less mysterious.\n", "\n", "By the end of this lesson, you should be able to:\n", "\n", "- distinguish a density $u(x,t)$ from a cell amount $U_i(t)$,\n", "- write a one-dimensional integral balance over a fixed or moving cell,\n", "- identify advection, diffusion, and reaction terms by their units,\n", "- derive the fixed-coordinate ADR form from a flux balance,\n", "- recognize finite differences as one way to enforce the same local balance,\n", "- identify several reduced models as children of the same parent balance.\n", "\n", "**Key terms.** control volume, density, cell amount, flux, advection, diffusion, reaction, source, finite volume, finite difference, upwind." ] }, { "cell_type": "code", "execution_count": null, "id": "ab7fd42b", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from matplotlib.patches import Rectangle, FancyArrowPatch, Circle\n", "from pathlib import Path\n", "\n", "COLORS = {\n", " \"ink\": \"#1f2937\",\n", " \"muted\": \"#64748b\",\n", " \"grid\": \"#cbd5e1\",\n", " \"panel\": \"#f8fafc\",\n", " \"purple\": \"#512888\",\n", " \"orange\": \"#D55E00\",\n", " \"blue\": \"#2563eb\",\n", " \"green\": \"#059669\",\n", " \"red\": \"#dc2626\",\n", " \"gold\": \"#f2b84b\",\n", "}\n", "\n", "def style_axes(ax):\n", " ax.spines[\"top\"].set_visible(False)\n", " ax.spines[\"right\"].set_visible(False)\n", " ax.spines[\"left\"].set_color(COLORS[\"muted\"])\n", " ax.spines[\"bottom\"].set_color(COLORS[\"muted\"])\n", " ax.tick_params(colors=COLORS[\"muted\"])\n", " ax.xaxis.label.set_color(COLORS[\"ink\"])\n", " ax.yaxis.label.set_color(COLORS[\"ink\"])\n", " ax.title.set_color(COLORS[\"ink\"])" ] }, { "cell_type": "markdown", "id": "7298393d", "metadata": {}, "source": [ "## The L10 Picture Still Works\n", "\n", "In L10, each row of a linear system was a balance over a cell. That diagram was not only a linear algebra story. It was also the seed of a partial differential equation story.\n", "\n", "The only new idea is that the cell amount may now change with time and the cell faces may be allowed to move." ] }, { "cell_type": "code", "execution_count": null, "id": "411793be", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Input\n", "L10 figure path exists: True\n", "Output\n", "Microscopic motion is being averaged into a face-to-face balance.\n" ] }, { "data": { "image/png": "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", "text/plain": [ "" ] }, "metadata": { "image/png": { "width": 720 } }, "output_type": "display_data" } ], "source": [ "from IPython.display import Image, display\n", "\n", "# L10 visual callback: microscopic motion averaged into cell-to-cell balance.\n", "fig_path = Path(\"memos/figures/s10_escape_probability_sketch.png\")\n", "if not fig_path.exists():\n", " fig_path = Path(\"../../memos/figures/s10_escape_probability_sketch.png\")\n", "\n", "print(\"Input\")\n", "print(f\"L10 figure path exists: {fig_path.exists()}\")\n", "print(\"Output\")\n", "print(\"Microscopic motion is being averaged into a face-to-face balance.\")\n", "if fig_path.exists():\n", " display(Image(filename=str(fig_path), width=720))" ] }, { "cell_type": "markdown", "id": "286d9b79", "metadata": {}, "source": [ "## Count Beans Before Writing Derivatives\n", "\n", "Let $u(x,t)$ be a one-dimensional density. If we are tracking beans along a pipe, a useful unit is\n", "\n", "$$\n", "[u] = \\frac{\\text{beans}}{\\text{cm}}.\n", "$$\n", "\n", "For a cell with left and right faces $x_L(t)$ and $x_R(t)$, the amount in the cell is\n", "\n", "$$\n", "U_i(t)=\\int_{x_L(t)}^{x_R(t)} u(x,t)\\,dx.\n", "$$\n", "\n", "The units are now beans. That distinction is not cosmetic:\n", "\n", "$$\n", "\\frac{dU_i}{dt}\n", "\\quad \\text{has units} \\quad\n", "\\frac{\\text{beans}}{\\text{s}}.\n", "$$\n", "\n", "Every term in the balance must have those same units." ] }, { "cell_type": "code", "execution_count": null, "id": "a833d7df", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def draw_control_volume(ax):\n", " ax.set_xlim(-0.5, 10.5)\n", " ax.set_ylim(-1.3, 3.3)\n", " ax.axis(\"off\")\n", "\n", " # neighbors and active cell\n", " for x, label, fill in [(0.7, \"$i-1$\", \"#ffffff\"), (3.7, \"$i$\", \"#fff7ed\"), (6.7, \"$i+1$\", \"#ffffff\")]:\n", " rect = Rectangle((x, 0.25), 2.2, 1.5, facecolor=fill, edgecolor=COLORS[\"ink\"], lw=1.8)\n", " ax.add_patch(rect)\n", " ax.text(x+1.1, 1.0, label, ha=\"center\", va=\"center\", fontsize=14, color=COLORS[\"ink\"])\n", "\n", " # moving faces\n", " for x, label in [(3.7, \"$x_{i-1/2}(t)$\"), (5.9, \"$x_{i+1/2}(t)$\")]:\n", " ax.plot([x, x], [0.05, 2.15], ls=\"--\", color=COLORS[\"muted\"], lw=1.4)\n", " ax.text(x, -0.25, label, ha=\"center\", va=\"top\", fontsize=10, color=COLORS[\"muted\"])\n", " ax.add_patch(FancyArrowPatch((x, 2.25), (x+0.55, 2.25), arrowstyle=\"-|>\", mutation_scale=14, lw=1.5, color=COLORS[\"green\"]))\n", " ax.text(x+0.28, 2.48, \"$v_f$\", ha=\"center\", fontsize=10, color=COLORS[\"green\"])\n", "\n", " # flux arrows\n", " ax.add_patch(FancyArrowPatch((2.55, 1.0), (3.55, 1.0), arrowstyle=\"-|>\", mutation_scale=16, lw=2.4, color=COLORS[\"purple\"]))\n", " ax.add_patch(FancyArrowPatch((5.95, 1.0), (6.95, 1.0), arrowstyle=\"-|>\", mutation_scale=16, lw=2.4, color=COLORS[\"purple\"]))\n", " ax.text(3.05, 1.27, \"$j_L$\", ha=\"center\", color=COLORS[\"purple\"], fontsize=12)\n", " ax.text(6.45, 1.27, \"$j_R$\", ha=\"center\", color=COLORS[\"purple\"], fontsize=12)\n", "\n", " # source and reaction inside\n", " circ = Circle((4.8, 1.05), 0.23, facecolor=COLORS[\"gold\"], edgecolor=COLORS[\"orange\"], lw=1.5)\n", " ax.add_patch(circ)\n", " ax.text(4.8, 1.05, \"+\", ha=\"center\", va=\"center\", fontsize=14, color=COLORS[\"ink\"])\n", " ax.text(4.8, 0.45, \"$q_i\\\\,\\\\Delta x_i$\", ha=\"center\", fontsize=12, color=COLORS[\"orange\"])\n", "\n", " ax.annotate(\"cell amount $U_i=\\\\int_i u\\\\,dx$\", xy=(4.8, 1.8), xytext=(4.8, 2.85),\n", " ha=\"center\", color=COLORS[\"ink\"],\n", " arrowprops=dict(arrowstyle=\"-|>\", lw=1.2, color=COLORS[\"ink\"]))\n", " ax.set_title(\"A one-dimensional control volume\", color=COLORS[\"ink\"])\n", "\n", "fig, ax = plt.subplots(figsize=(9, 3.4), constrained_layout=True)\n", "draw_control_volume(ax)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "e86fdcac", "metadata": {}, "source": [ "## The Integral Balance\n", "\n", "Use $j(x,t)$ for the rightward physical flow through a face. In one dimension, its units are\n", "\n", "$$\n", "[j]=\\frac{\\text{beans}}{\\text{s}}.\n", "$$\n", "\n", "If a face itself moves with speed $v_f=dx_f/dt$, then material swept along by the moving face contributes $u v_f$. The relative flow across that face is\n", "\n", "$$\n", "F = j - u v_f.\n", "$$\n", "\n", "The one-dimensional moving-cell balance is\n", "\n", "$$\n", "\\frac{d}{dt}\\int_{x_L(t)}^{x_R(t)} u(x,t)\\,dx\n", "=\n", "\\left(j-u v_f\\right)_L\n", "-\n", "\\left(j-u v_f\\right)_R\n", "+\n", "\\int_{x_L(t)}^{x_R(t)} q(x,t)\\,dx.\n", "$$\n", "\n", "Read it in words:\n", "\n", "$$\n", "\\text{accumulation} = \\text{in through left} - \\text{out through right} + \\text{net creation inside}.\n", "$$\n", "\n", "If the cell is fixed in space, $v_f=0$, and this collapses to the more familiar fixed-control-volume balance." ] }, { "cell_type": "markdown", "id": "9201808a", "metadata": {}, "source": [ "## Mechanisms Are Easier When Units Lead\n", "\n", "A common closure for the face flow is\n", "\n", "$$\n", "j = w u - D\\frac{\\partial u}{\\partial x}.\n", "$$\n", "\n", "The two pieces mean different things:\n", "\n", "- $w u$ is **advection**: material is carried by a velocity $w$.\n", "- $-D u_x$ is **diffusion**: material spreads down a gradient.\n", "\n", "A simple net local source is\n", "\n", "$$\n", "q = s - \\sigma u.\n", "$$\n", "\n", "Here $s$ creates material and $\\sigma u$ removes it. In a neutron setting we might call the removal an absorption or reaction rate. In a general ADR model, \"reaction\" just means local creation or destruction." ] }, { "cell_type": "code", "execution_count": null, "id": "4f7fb359", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Input\n", "Check each model term before trusting the equation.\n", "Output\n", "u : beans / cm\n", "U_i = integral u dx : beans\n", "w : cm / s\n", "D : cm^2 / s\n", "j = w u - D u_x : beans / s\n", "s : beans / (cm s)\n", "sigma : 1 / s\n", "sigma u : beans / (cm s)\n" ] } ], "source": [ "# Input: representative units in a one-dimensional unit-area model.\n", "units = {\n", " \"u\": \"beans / cm\",\n", " \"U_i = integral u dx\": \"beans\",\n", " \"w\": \"cm / s\",\n", " \"D\": \"cm^2 / s\",\n", " \"j = w u - D u_x\": \"beans / s\",\n", " \"s\": \"beans / (cm s)\",\n", " \"sigma\": \"1 / s\",\n", " \"sigma u\": \"beans / (cm s)\",\n", "}\n", "\n", "print(\"Input\")\n", "print(\"Check each model term before trusting the equation.\")\n", "print(\"Output\")\n", "for name, unit in units.items():\n", " print(f\"{name:24s}: {unit}\")" ] }, { "cell_type": "markdown", "id": "16f7f945", "metadata": {}, "source": [ "## From Integral Balance to Continuum Model\n", "\n", "For a fixed cell, the integral balance is\n", "\n", "$$\n", "\\frac{d}{dt}\\int_{x_L}^{x_R}u\\,dx\n", "=\n", " j(x_L,t)-j(x_R,t)+\\int_{x_L}^{x_R}q\\,dx.\n", "$$\n", "\n", "Shrinking the cell gives the differential balance\n", "\n", "$$\n", "\\frac{\\partial u}{\\partial t}+\\frac{\\partial j}{\\partial x}=q.\n", "$$\n", "\n", "Now substitute the closure choices:\n", "\n", "$$\n", "j=wu-Du_x, \\qquad q=s-\\sigma u.\n", "$$\n", "\n", "The general one-dimensional ADR model is\n", "\n", "$$\n", "\\frac{\\partial u}{\\partial t}+\\frac{\\partial (wu)}{\\partial x}\n", "=\n", "\\frac{\\partial}{\\partial x}\\left(D\\frac{\\partial u}{\\partial x}\\right)\n", "+s-\\sigma u.\n", "$$\n", "\n", "If $w$, $D$, and $\\sigma$ are constant, this becomes\n", "\n", "$$\n", "u_t+w u_x = D u_{xx}+s-\\sigma u.\n", "$$\n", "\n", "The equation looks compact, but it is still bean counting." ] }, { "cell_type": "markdown", "id": "c1a1014a", "metadata": {}, "source": [ "## One Parent Balance, Several Child Models\n", "\n", "The parent equation is useful because we can simplify it in controlled ways. A \"cell\" does not always have to be a spatial volume. It can also be an isotope name, a precursor group, an energy bin, or any state that owns an amount.\n", "\n", "The linear pattern is the same as long as rates are proportional to the current unknowns and the source terms are known.\n", "\n", "| Assumptions | Reduced balance | Mathematical type | Physical reading |\n", "|---|---|---|---|\n", "| steady, no spatial variation | $\\Sigma u=s_0$ | algebraic balance | infinite-medium production equals removal |\n", "| time-dependent, no spatial variation | $u'=-\\Sigma u+s_0$ | first-order IVP | well-mixed point model |\n", "| steady 1-D, no diffusion | $w u' + \\Sigma u=s_0$ | first-order ODE with inflow data | advection-reaction in a flow |\n", "| steady 1-D, no advection | $-D u''+\\Sigma u=s_0$ | second-order BVP | reaction-diffusion in a slab |\n", "| time-dependent, named states | $\\mathbf{y}'=A\\mathbf{y}+\\mathbf{q}$ | linear system of IVPs | isotope chains / precursor groups |\n", "\n", "The point is not to memorize a menu. The point is to see the family resemblance: every line is still a balance." ] }, { "cell_type": "code", "execution_count": null, "id": "0503cdbb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Input\n", "Start from accumulation = inflow - outflow + creation - removal.\n", "Output\n", "infinite-medium reaction -> Sigma*u = s0 (algebraic)\n", "well-mixed inventory -> u' = -Sigma*u + s0 (IVP)\n", "1-D flow -> w*u' + Sigma*u = s0 (first-order ODE)\n", "1-D slab diffusion -> -D*u'' + Sigma*u = s0 (BVP)\n", "named isotope chain -> y' = A@y + q (linear IVP system)\n" ] } ], "source": [ "# Input: a small menu of linear balances descended from the same ADR parent.\n", "models = [\n", " (\"infinite-medium reaction\", \"Sigma*u = s0\", \"algebraic\"),\n", " (\"well-mixed inventory\", \"u' = -Sigma*u + s0\", \"IVP\"),\n", " (\"1-D flow\", \"w*u' + Sigma*u = s0\", \"first-order ODE\"),\n", " (\"1-D slab diffusion\", \"-D*u'' + Sigma*u = s0\", \"BVP\"),\n", " (\"named isotope chain\", \"y' = A@y + q\", \"linear IVP system\"),\n", "]\n", "\n", "print(\"Input\")\n", "print(\"Start from accumulation = inflow - outflow + creation - removal.\")\n", "print(\"Output\")\n", "for name, equation, kind in models:\n", " print(f\"{name:26s} -> {equation:28s} ({kind})\")" ] }, { "cell_type": "markdown", "id": "8dcaa025", "metadata": {}, "source": [ "## Named-State Balances: U-238 to Pu-239 as a Linear Chain\n", "\n", "A spatial cell is not the only kind of bookkeeping box. We can also balance named populations. A simplified transmutation chain might fold short-lived details into three buckets:\n", "\n", "$$\n", "{}^{238}\\mathrm{U}\\longrightarrow{}^{239}\\mathrm{Np}\\longrightarrow{}^{239}\\mathrm{Pu}.\n", "$$\n", "\n", "This is not a depletion-grade reactor model. It is a clean linear balance example. Let\n", "\n", "$$\n", "\\mathbf{N}=\\begin{bmatrix}N_U\\\\N_{Np}\\\\N_{Pu}\\end{bmatrix}.\n", "$$\n", "\n", "If $\\gamma_U$ converts U-238 into the next bucket, $\\lambda_{Np}$ converts Np-239 into Pu-239, and $\\rho_{Pu}$ removes Pu-239, then\n", "\n", "$$\n", "\\frac{d}{dt}\\begin{bmatrix}N_U\\\\N_{Np}\\\\N_{Pu}\\end{bmatrix}\n", "=\n", "\\underbrace{\\begin{bmatrix}\n", "-\\gamma_U & 0 & 0\\\\\n", "\\gamma_U & -\\lambda_{Np} & 0\\\\\n", "0 & \\lambda_{Np} & -\\rho_{Pu}\n", "\\end{bmatrix}}_{A}\n", "\\begin{bmatrix}N_U\\\\N_{Np}\\\\N_{Pu}\\end{bmatrix}\n", "+\n", "\\mathbf{q}.\n", "$$\n", "\n", "The rows are still balances. The off-diagonal entries are transfers between names instead of transfers between neighboring volumes." ] }, { "cell_type": "code", "execution_count": null, "id": "aece2dc7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Input\n", "state [U-238, Np-239, Pu-239] = [100. 2. 0.5]\n", "Output\n", "A =\n", "[[-0.02 0. 0. ]\n", " [ 0.02 -0.35 0. ]\n", " [ 0. 0.35 -0.004]]\n", "dN/dt = [-2. 1.3 0.698] per day\n", "total named inventory rate = -0.0020 per day\n" ] } ], "source": [ "# Input: simplified named-state chain rates.\n", "gamma_u = 0.020 # 1/day, effective conversion out of U-238 bucket\n", "lambda_np = 0.35 # 1/day, Np-239 to Pu-239 bucket\n", "rho_pu = 0.004 # 1/day, effective Pu-239 removal\n", "N = np.array([100.0, 2.0, 0.5])\n", "q = np.array([0.0, 0.0, 0.0])\n", "\n", "A_chain = np.array([\n", " [-gamma_u, 0.0, 0.0],\n", " [ gamma_u, -lambda_np, 0.0],\n", " [ 0.0, lambda_np, -rho_pu],\n", "])\n", "dNdt = A_chain @ N + q\n", "\n", "print(\"Input\")\n", "print(f\"state [U-238, Np-239, Pu-239] = {N}\")\n", "print(\"Output\")\n", "print(\"A =\")\n", "print(A_chain)\n", "print(f\"dN/dt = {np.round(dNdt, 4)} per day\")\n", "print(f\"total named inventory rate = {np.sum(dNdt):.4f} per day\")" ] }, { "cell_type": "markdown", "id": "f8770b49", "metadata": {}, "source": [ "## Geometry Changes the Weights, Not the Bookkeeping\n", "\n", "The same PDE idea also generalizes by changing the geometry. In one-dimensional slab geometry, fixed cells have equal volume per unit area, so the balance uses widths like $\\Delta x$.\n", "\n", "For radial diffusion in a cylinder, the shell volume and face area depend on radius. With radial symmetry and no advection,\n", "\n", "$$\n", "\\frac{\\partial u}{\\partial t}\n", "=\n", "\\frac{1}{r}\\frac{\\partial}{\\partial r}\\left(rD\\frac{\\partial u}{\\partial r}\\right)\n", "+s-\\Sigma u.\n", "$$\n", "\n", "The term looks different, but the story is the same: accumulation in a thin annular shell is driven by what crosses the inner face, what crosses the outer face, and what is created or removed inside. Geometry changes the face areas and volumes. It does not change the balance habit." ] }, { "cell_type": "markdown", "id": "96908162", "metadata": {}, "source": [ "## Finite Differences Enforce the Same Balance\n", "\n", "On a uniform fixed grid with width $\\Delta x$, let $u_i$ approximate the cell-average density. Then\n", "\n", "$$\n", "U_i \\approx u_i\\Delta x.\n", "$$\n", "\n", "The finite-volume balance is\n", "\n", "$$\n", "\\Delta x\\frac{du_i}{dt}\n", "= F_{i-1/2}-F_{i+1/2} + (s_i-\\sigma_i u_i)\\Delta x.\n", "$$\n", "\n", "A finite-difference method supplies approximations for the face flows. For diffusion,\n", "\n", "$$\n", "F^{\\mathrm{diff}}_{i+1/2}=-D\\frac{u_{i+1}-u_i}{\\Delta x}.\n", "$$\n", "\n", "For positive advection speed $w>0$, the upwind face flow is\n", "\n", "$$\n", "F^{\\mathrm{adv}}_{i+1/2}=w u_i.\n", "$$\n", "\n", "That is still a balance statement. We have only chosen how to estimate the two face terms." ] }, { "cell_type": "code", "execution_count": null, "id": "1d177391", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Input\n", "dx=0.25 cm, w=0.30 cm/s, D=0.015 cm^2/s, sigma=0.08 1/s\n", "u=[1. 1.4 2. 1.7 1.1]\n", "Output\n", "face flows F=[0. 0.276 0.384 0.618 0.546 0. ] beans/s\n", "du/dt=[-1.184 -0.394 -0.846 0.252 2.096] beans/(cm s)\n", "net amount rate=-0.0190 beans/s\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/MAAAFfCAYAAAACvZwfAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAYnVJREFUeJzt3Qd0FFUfh+FfSKihQxJ67x3pRaogoIiiCCi9iaiIiGJBUUFsYEEUEEE/UEEQLCCoIE3pIlVAmnRIQklCQkhI+c69mJhNgQQSks2+zzl7sjt7Z+bO7Gbv/Oc2t+jo6GgBAAAAAACnkSW9MwAAAAAAAFKGYB4AAAAAACdDMA8AAAAAgJMhmAcAAAAAwMkQzAMAAAAA4GQI5gEAAAAAcDIE8wAAAAAAOBmCeQAAAAAAnAzBPAAAAAAAToZgHkhjZao11ntTZsS+3rB5q11m/uLWnvv00uyOe/X0C6/Fvvb187f5+mvv/nTNFwCkhsXLlqtd556qXLel/d3NiL9tEz+YpqZtuqh8zWaq2egOu6x730ftA/8xZZUps67HpBnw6NNpeupCQy/bsjKx6yWz3HzXzl8ISNM8pMV+YrYJpAaPVNkKACBJ0ye/pTy5PWNf+/qd1Qcfz1SJ4kVVvWolzhwAp3Xu/AWNHP2qWt7eWONefkbZsmVTuTKllJH88utaTZn+uR5/pJ9a3d7E5hEZX+jly7asNJo0rJfe2QEyJIJ5AMkSGRmpiMhIZeciKMVqVKvMtwxApvTPkWO6EhGhe+/uoMYNblNGtP/AIfu3X68HVbhQwfTODgCkGprZA4k4ePiInhj1kurf3lGVat9um+aNfO5VhYWHx6bx8z+n58e+qcatO6tireZq3u4+vf/Rp4qIiEi1c3rk6HGNemGcWnV4QFVua6lGrTpr4LCntW//QYdaEbP/SZOnJ3ocpinXZ3O+TlG+j588ZdebNnOOPpw2y6apVKeFNmzaqsthYRr/1gfqeF9v1WzYVrUbt9d9PQfZmo/4AoMu6tkxr9s01eq1Vv+hI3Xs+MlEm7+bC8Lhz7yses2vnvO2d3fX7K++SdZ5uhgcoudenqA6Ta7up8+QETp85FiiaZOzn5iuEN//+IveeX+qGra8WzUatNHDAx7XoX+OOqTdvedv29QwZnsmrTnO02f8Em1mb7Z9z4P97fNnXhxv9xNzPhb9sMw+37p9V4J8m9qJCrWa2Sb6AJARmN+1B3o9Yp8//vQY+/sV02x95+69dpn5/TPN781fU66eOHk6wXbO+Prp+bFvqEmbe2y5ZH5HHx3xvPzPnnP4nX/97cm2PDJpTHn46hvv6dKl0Gvm0ex34r/lY/3bO123+1VAQKDGvPa23b7Zz+3tu9pyIG75P2zEC7ZbQVymbDbb/vGnX2OX7d6zzy5bseq3JPeXVNe7mHJ4wbdLYpeZ8tOcU3N+THljrlEe6v94gm4NptuDKZer1mtly8Teg5+0ZVV8ZtttOj0YWxYu/H6pUuqnFavV4d6H7TWCOVdxrzdCQi7ZLg3mmiM+c3zlajTV9JlfJLpd8/5tzTrEln8xZWXcLmvG2bPn7ffKXI+Y82HK1aCLwQ5poqOjNWfuN/a6xXwXazVuZ79f5nwm16nTvnpk+Gh7LWD2NeLZsfb6K/557z1ouBq0uMvux5zTN9/96Lrf0ZSsa47ffKbm+rDfI0/Z5+b/xlyXxf2OGua1OXdmW+bzMddIPfoN09ZtO1P13CB9UTMPxLNn3wF16/WIChTIp6ceH6KypUvKz/+slq/6TVeuXLE10yYgvrf7ALllcdPwRweqdMni+nPHLn047XN7oTJxwkupcl59/c+qQP58Gj1ymAoWLKCAgCBb2N7bY6B+XDhb5cuWVqGCBdSmVTMt/G6pnnp8sLJkyeJQUGfLmlX3dr5aIKY0359/MV9ly5TSi888ody5PVWmdEmFh19RQGCQhvR/SD4+3vacrNuwRUOffE7vvD5G93fpZNeNiorSoGGjtPOvfRrx2EBbO/3n9t3qO2REguM8cPAfdX14sIoX9dGLzw6XV+GCWvv7Jr0y4V3bT23EY4OSPEemIBryxLPaum2Xnnx0gGrVrKo//txpC7mb3Y+5gKtft5beeu0FXQwJ0VuTPrLHtGLJPLm7u9tC1hS+JUsU02tjRqlw4YLy9z9nL8pCQkISzW+NalXseTIXHE8M7a/WLZvZ5UV9vO1n+cbEKZrz1TeqV6dm7DrmRstX87/TnW1bycfbK8lzAQC30vChA1SnZjW9NG6inhnxqJo0qqc8nle7FJkypVyZ0urcsZ3y589ry9Ev5i1Sl+4DtHzxXBUskD82kL/nwQH2d27YkL6qWqmCLgQEau26TfaGsFfhQrbvdPc+j9q0MWn2Hzysd6fM0N/7D+nLWR/Kzc0tyW5OJlj5euFi/e+T95UnT277e5sYc7O6R//HdOzYST31+CBVqVxBW7bu0Mcz/mevDT6b9q5N16xJAy39ZaU9Jm+vwjbvm7ZsU44c2fX7hs26q0Nbm+73DVvk4eGuxg1Tp8VCv6EjFRUZqeeffkzFihXRhQsBtuwLungxNs1H0z+3Ny+63Xe3LWPCr1zRJ7O+1IO9h+r7r2epYoWysdcHphxq16aFLQ8vXgy2N/ZNGW+uEZJjz779GvfG+3rysUG2PP1+yc/2BsuVKxEaMuBheXrm0oNd79bc+d/r+VGPK2+e3LHrfjF3obJmzaoH7++c6LbNeTWfl7lm6H5/Z3V/oItdXujf702MoSOe190d7lD39ztr34FDevu9qXa5KWdjvPDKm/rm2x9ty4znnn7MXsNMnjpTXR8arGXfzrHfsesxgfzdHdrq4e5dr373Jn+iA4f+0XfzZilr1qvhlAmwW7VoqgG9eyhnrhw6dPiorRTZsWuP5n720TW3n5J1zfdt0GPP2PMyuN9D2vTHdlvxYr7bTw4bGJvGXAdt2brdbtP8b5oWltt27NbJ076qVzf1zg3SWTQABz37PRZds9Ed0WfPnU/yzDw/9s3oavVaR584edph+SezvoguXbVR9P4Dh2OXmdfvfvhJ7Ov1m/6wy8zflIqIiIgOD78S3arDA9Gvvfle7PLlK9faba5dt9EhbcOWd0cPffK5FOf72ImT9nWL9vfb/V0vT1euXIl+dsz46E5de8cuX7l6nd3GnLkLHdJ/9Mn/EpyT3oOfjG7cunN00MVgh7Qvj3snulKdFtEBAYFJ7n/V2vV2e7Nmz3NYPmXaZze8n5jPqN8jTzmkW7JshV2+dfsu+3rn7r329c8r1lzzHDVt2yV65POvxr7esWuPXW/+osUJ0pr8VqzVPNr/7LnYZYuXLrfpN27585r7AYBbLeb38seffr1uWREScim66m2tHH6vn3lxfHSFms2iDxz8r9yMz5QbZas3sb+dcS39+Ve775Vr1l1z3+Z31aQ7d/6Cw/IH+wy1jxhfzFtk05nf+rimfjrboYw9cvS4fb3w+6X29Zat2+3rCRM/jG7e7r7Y9XoNfCK660ODrpm3pK4JYsrhmHLi/IUA+3pmvLIurpOnzkSXr9k0euz4iQ7Lg4NDouvf3il62FMv2NeRkZH2+uCu+/tER0VFxaY7fuKU/SxMmXU9Jk2Zao2j/9q732G5OeYaDdpEX7oUal8fPXbCfnaf/m9ubJrQy5ej6zRpHz3qhXHX3If5vOKX4/E/02mfznFYPua1t215HnNcprw26WZ89qVDulOnfaMr121hP7NridlP3Gsu47vFP9nl3/6wLNH1zP7NtZEpt026Pfv2J9hmUq61rrmWSOw7aq5XWnd6MPa1+W6adHMXfJfkfm723CBjoJk9EIe5+7/pj2266862tpY0KSvX/K4mjW6Tj/fVO/Ixj1a3N7Xvb/zjz5TcUHPYRtzm7ua5uct+x909bHM/MwpvxdrN9c/R4zp46EhsOjOgj7l7uuDbH2OXmRpn0yT7wfs633C+72jTPPaOc1ymGeH9Dw+2zbtMnirUam5rPQ4e/q8Jesy2zJ3suO7p1C5BTcj6jVt0Z9uWypkju2O+WjRVWFiY/tyxO8nzF9M0Mab1Qex+7m5/0/u5o/XtDq9NLY1x8tTVZqKlS5VQvrx5bVM4U+Nkav5vVq8eXe3feQu+j11mugFUqVRejer/eysdADI408T6jUlT1PLOB2w5YR7V6rfWpdBQ2wUsxurfNqhxo3qqUP5qjXFiTNlVqWI5VatS0eG3u0WzxrZGfuOW5Je517J+0x/KlTOnOt3ZxmH5A/feZf+u2/hH7G+/GcDU1Lwbv63fbH+j7+vcQcdPnNLRYydsE+ctf+5Qs8YNUyVv+fPlVemSJfTJrC/06edf2WbzpgVcXGvXbVRERKS6dunkcJ6yZ8+mRg3qatO/5+nwP0ft9UGXu9o7tGgwx3Rb3f9ahV1PpQpXP5O47rmrve0SYboYGKVKFlebls1sTby53jF+WPKLbX3R9+EHdLPuaBOvnK5UwZbnZ8+dt69Xrv7dHqO5Roh7TkxLgqqVK2rj5uR9d8yYEHGZ1hem1UXc7hGmabrpxme6c5guBObayLQoMeJ+5xOTknXN8bRt3TzBcZ88dcbh/yp79ux6sGviLR9S89wgfdHMHogjMCjINkMqWiTxJngxTCGxYtXv9sc2MRcuBCb7vJqLkJ79HnNY9tvyRSpZvJjtAzV77kINHdjbFsT58uaxzehHvzTBBqex/8geHup6Twd9/uU3tlmiSffNdz/aZmotmje64Xx7Fy6cIM1Py1fpsZEv2hseQ/r3kpdXIXm4u9tgdv6ixQ79Dk1Blz9/Pof1TVP0uEw6c/Hx+ZcL7CPRfAUkfT5j9mO6I8QVv2nYjewn/jazZctq/16+fPXcmyaDX8/+2I6S/M770+z3x5zzHg90sc0bE7sRcj0m33d3vMM2q390cB/bnG/z1u2a8MpzKd4WAKSXJ5992Qa/TwwdoNo1qtquWiZwMGOKxC2/zl+4kGSz97j9oo8cO5EqZe61mHLC/AbHb7JvBs0z5Yx5P0azxvW15veN9vm6jVvUvElDG1CZtCbIN130TFnRvEmDVMmbyZPpTjB56ixNm/mFxr892Qb49959p0aNGKrcnp72PBkx47LEF9MNL6asS6wJtVmW2LgGiTFBX2LrX91HUOyyAb2766EBj9ubHi2aNdLsud/otjo1bbezm5VkOf3vd8xc95ibCCZIToy52XAjx2quu/Lnyxd7nObmVbfeQ+2Nk1FPPmK7KObMkUOnzvhq6PDnYq8bEpPSdc17ObJnT3Dc5iZGjPPnL9iKm7hdL+NLrXOD9EUwD8RhCkbTFzru4GWJKZA/v62lfebJoYm+b35Ak6tm9Sr6Yf5njut7Xe0X/e3in9X1no569inHeXAvBAQob97/+p4Zpn/c9FlfavHS5erc8Q7bx39An+72eG4034n1Qfx28U+2j/iUd8c7vB8eb+AVE8Sb4Nlc/MQN6OMOaGSYmm2TR1Oj0eehxO/Sm/0lJWY/5uKkQBruJynm4m3KpPG2QNz790F7E8X0NzN9J4cN7qMb0b93dzsY3vKVa+3FYt68eewFGwA4AzMA2a+r19n+u3F/B01ttemTG1fBAgV02vc6ZW6B/PY39e3xY5J43zGgu1GmPNm+c4/9PY9bvpmgx5QzpgyN0bRxA9sibfvOv+zj8UeuBtBNG9e3/eZNLalnrlyqW7vGNfdpak8N01f9ejcoTM352+NftM/NIK8//rRC7380U+FXIjThldH2PBlT35+g4sWKJrnPmLIyfjmZ1LKk+P978yCx9Qvkzxu7zJyTyhXLa/ZXC+SZK6dtVfD+W6/oVjCfmfksF8yZluiUhDHBf3KOtUicm06mBjsgMDD2OE2rDtPaYd7/PnaY1SEo6L/xDJJyM+smxYyztOXPnbb1RlIBfWqdG6Qvgnkgjhw5ctimzEt/XqlnRgyNHaAnvratmmnV2g12ALl8+f4rsG6EuZteq0bVRN8z1xLxf2BXrlmnM77+tplfXKaJYp1a1e2gNubH2wTXJsBP7XybH34zaE3cCx0zsN7ylY6j9Tauf5sdpXbxTyvUu8f9scsXL13hkC5nzhxq0vA2OxqvCYxTWniYuWfNfr5b/JMNgmOYZnypuZ/rMefDNDd8+bkRNqD/K5GRg5OqOUjsBk+9ujU19dM5tma+Z7d7lStXzlTNLwCkFfN7aALi+OXX19/8YFu/xWW6iX37wzI7U4gZ1DUxbVs200cz/meD0Bu56ZpczRo3sN3Ifv51jTrc0Sp2+aLvl/37fv04aevb45z04SfK4pYlthtU88YNNGHihzaYb1i/znVbaJX4N+je9/dBtWzeOHb5tUbAN8qVKWVbPSz7ZbX+2nu1vDEt8UwLgqPHT6pj+zZJr1u2tG1F9sPS5RrU76HY8tzUyP+5bZe8k1khYconMzBg3Kb2P/z4i3J75kpQ696vVze9+OrbCroYYlsvdLrTsQvejZSVyWGue6Z+OtteN5lWbzfquyU/2bI5hvmemBs8McF3zDmM/503reyu52bWTYr5vzKfhRncLqlBBlPr3CB9EcwD8YwZ/aQdzd6MGP/ooN4qXarkv83Tf7N3vk3wPfKJIba5mBkZ3YwAWr5MaYWFhevEqVM2WH597OjrNtVPjjatmtvAsHy50nb03l1/7dMnn32Z5LZN3ygzMqkZYdcEg/EvjFIj321aNtdPy1fbqXs6tW9jm4F9OPUzeXsV0j9HL8Wma3l7Y9W/rZadSig4OEQ1q1WxfdIX/Tv1Tdw7xWOfH2mnN+rW+xHbZ9zUPphmZ6ZZ5a+rf7/mKLCmyV7D+nX1xqSPdCn0smrVqGJHszctCOK7mf0kxqwzZ+5CtW/bUqVKFFO0ou25MXfTmzdNumml6fdoapnMyL8VypWxtTemVUTcker79+pupyAyhXzvf/vRA4AzyJPb0/4um/7dBQvkswGrGY/G1GSblkZxjXxisO3f273PUA0b0k9VKpa3o7ObVkkD+/a0v5ED+vTQsuWr9GCfoRrYp4e9IRsVHa1Tp8/ot3WbNahfz+vWgCdH1y4dbRPwUc+/ZgNbkxfT7/3jT/6n1i2aqnnT//q/m4C0csVy+m3dJjtSuLlhHDPSvWl9YB7meuJ6TNlpmuJ/PGO28uXLo+LFitjuCT8vX+2Qbu/fBzR2/CTbn9/MLGNmqjE1umaqWnOtYpjueWYWnokfTNOx46fszQGzTdP83oyKnjNnTnu+Tfn79PAhtsvekCdGq2e3LrbcMqPZp2T0clNuDX7sGTuavTkOc1PdXGOYUdFjzkcM0yrOjDS/+Y9tthtacm6om+stcz5MZYG50WJaT5pWGOY4k6v+bbXtDfFnxozXrr/22u+lOQ/+/mftZ1u5UnmHCoekmLLddCk034H9B/+xo9mbfuV3dbgaBNerW8u2AHzxlbf05GMDldXDQ98t+dl+btdzM+smxYxPZCp3Xnz1LR06ctRWfERHRWvbzr9UoXwZ+35qnRukL4J5IB5zh/n7r2fqvSmf2oLHBHumcDOFtamRNswd7cULPrd918yUL2fO+NkpWEyNgS08412s3Kixzz+lrB7umjrjfwq5FKoaVStr2gdvxM6ZG1/nTu302pvv2W4CMdOTxJUa+TbTzJw7f15ffv2t5i9aYoPYRwf3tvs085nGMBcLMz+aaPv1mRpmM4WdmebtvbdesfPfxp2ixkyVs2Th5/amwKTJ03Xu3AV7wVemdAm1/ndwvqSY/Xz60Tt2fIHps76I3Y+ZQqjtXf/V1N/sfhJjLqjM+qZlgK+/v/1+mNoSM8VfzIBJiTEXOaa56Acff6o+g57UlYgI+3mZqQVjmBsE5i69aU1g+s8BgDOZ/M6rdpqyNyZ+pMjICBuwfPHpZPV/dKRDOtN02UyZZuZ+nzpjtu2aZZoIm5vBJngzTMukBXOm21rErxZ8rxMnTil7jux2mlETPJsbs6nB9EOe99lHeueDabaMNP35zU3Wwf0ftkFWfGbf+/YfsrXxMUzwafrLm4Fqk9tf/t03X9Err0/Sm5M+UmRUlO5o1VyTJ45T5279YtOY6xDTh3nOvIU6fdrP3ugtWbKYnVau38PdYtM9NqSvKpYvq8+++FqLl/6isPArtr937RrV9HD3+2LTdb//Hvt32qdzbL9scw7NzZRNf/yZ7IHPqlWppG733WWvl8zUaqZG39zAGNS3Z8JzmyOH2rZqbmu44+bjet4e96Jt6WCmYjMtDu+/t5MmTXhZKfHGq8/Zmz1fzf9Wc+YuUlR0lO3OWO+2WqpTs3qytjF98pv2ZscX8761rSbNAHSmJV7MTQnTamTWtEm2AuOp0a/YgRTbtbldH04ar7sf6HvNbd/MukkxffrNddDHn8y234PPZn9tr/fMDQhT2ZKa5wbpy80MaZ/OeQDgQkxt9JPPjtXCLz+xF3dInGkJYi5ePpv6rlq3TPmNBgAAMgozJkDzdvepwW219dF7r6d3doBMg5p5AGnm+x9/ka+vv22qlSWLm7bt+Ms2uzRNuQjkE2emtztx6rS9Q29qPVq1aMI3FADglM6dv2CnwjNT55oui6YlH4DUQzAPIM2YQXA+XbZcH07/TKGhoXaqO9P8/OkkRtOHNGbc29q6baeqV62sSW+8nOiMAgAAOAMzaO8zL4633fzGvfRMqkxHB+A/NLMHAAAAAMDJJD7xIAAAAAAAyLAI5gEAAAAAcDIE8wAAAAAAOBmXC+bNTHyhl8PsXwAA4Lwo0wEArszlgvnLYeEa/tKH9m9qCAkN1x97jtm/4Pzdanz/OH/pie8f5y+zlekAADgTlwvmAQAAAABwdgTzAAAAAAA4GYJ5AAAAAACcDME8AAAAAABOhmAeAAAAAAAnQzAPAAAAAICT8UjvDADInCIjI7V563b5+Z+Tt1chNaxXR+7u7umdLQAAACBTSNdgfunKTfpz136d8T+vbB4eKl+muO7v1EJFvAtec72/Dx3X/MWrdcr3rPLnza07WzVQqyZ1blm+AVzbT8tX6dUJ7+m0r1/ssqI+3hr7wlPq0K41pw8AAABw5mb2+w8dV+umdfX84w/rqSHdFBkVpfdmLFBYeHiS6/ifD9DkmQtVsWxxvTyijzq1aaR536/U1p37b2neASQdyD864nmHQN444+dnl5v3AQAAADhxzfyIwQ84vO7/YAeNfPVjHT3hq0rlSia6zpoNO1SwQF716NLGvi7qU0hHTvjqlzVbVK9WpVuSbyDDiI62f477R8jdPUuGaFo/Zty7MdlyELPspfHvqUzlphmiyX1kZMTVJ4llGAAAAMjAMlSf+dDLYfavZ64cSaY5fPS0qlcq47DMvF63eZciIiPlES9AuBIRoYiIyDj7SLrWH3Am0dHRGvtliHo0k4ZPC9YRv/QP5qMCdyrirP810/j7++nup9cpS75aSm9lvKM0oZf0ypchentQNrm5uaV3lgAAAADnCuZNYGL6wVcoW1zFi3glmS7wYojy5M7lsCxvnly2iX5wSKjtQx/XspWbtHj5hjTLN5BejvtHaec/ETaYzyiiwy+karpbZcc/EfZ8lvJO/9YCAAAgaY93nJHs0zNl2WBOJTK1DBPMf/Xtrzpx2l/PDut53bQJas/+bSHrpoS1ah3bNFK7FvUdauZHvz49FXIMpK+wKxmvabhbtgKpms7VzycAAACQoYP5r777VTv2HNIzw7qrYP4810ybL4+ngi6GOCwLCr4k9yxZ5OmZsHl+Vg8P+wAyu48fy6PS6VyzHBnZTL16eensNZrae3l5a86kZuneZ/6oX6TeXhCYrnkAAAAAbpRHejetn/vdr9q2+6BGDe0ur4L5r7tOudJFtXPPIYdle/YfUekSPgn6ywOuxATyFYun940rD41/aaQdtT7+uHIxDWrGjXlKVUplT6f8AQAAAJlDul75f/XtCm3atk+P9btXObJnU2DQ1Rr3nDmzKVvWrPb5oqVrdSEwWAN7drKvWzaprVXrtunrH1apRaNaOnT0lH7fskuDH7o7PQ8FwL/MPPJT338jwTzzRXx8NPb5EcwzD2Riq9Zv08+rt9jxbYr5FFb3e1qrUrkSSaY3g9QuWb5BG//co6CLl1QgX251attYzRvWvKX5BgDAGaVrML96ww77d+K0rx2W93uwg5o1qGGfBwSF6HxAUOx7pvZ++MD7NX/xKq1ev1358nraaeqYlg7IWAF9uzYttHnrdvn5n5O3VyE1rFcn3ZvWA0g7W7bvszfaH77vDlUoU1xrNu7Q5JkL9eqo/ipUIG+i60yfs9h2levbrYO8C+fXxeBLdkBbAACQwYP5Ge+Mum6aAT06JlhWuXxJvTSiTxrlCkBqMIF7k4b1OJmAi1i+9g81b1BTtze6Ou2kudH+1/4jWrNhu7p2apEg/e59/2j/4RN64/lB8syV0y4rXDDfLc83AADOKr072AIAACcXERGpoyd91aF1I4fl1SuVsd3hErNjz0GVKeGjn1Zv0cate5QtW1bVqVZeXTo0i+1ql1izfLOvuDPUAADgqgjmAQDATQkOCVVUVLTy5snlsDxP7ly2/3xi/M8F6sCRk/LI6qFhfbvYbXz57QqFhF623e0Ss2zlJi1evoFPCwAAgnkAAJBa3OSWrGUxM9qY9wb1vEu5cl6d4eLBiFaaNucHPXRf20Rr5zu2aaR2Leo71MyPfn06HyAAwCVRMw8AAG5Kbs+cypLFLUEtvBnQLn5tfQwzgG3+fLljA3mjqHchO6XlhYBg+XgVSLBOVg8P+wAAAFIWTgIAALgZHh7uKl3cR3sPHHFYvmf/EZUvXSzRdcyI94FBwboc9l+/d1//C3Jzc1OB/Ln5QAAAuA6CeQAAcNNM8/ffNu/S75t36bTvOTtN3fmAi2rZpLZ9f9HStZo5d2ls+oZ1q9pR7D+f/5NO+Z7V/sPHteDHNWreoEaSA+ABAID/0FYNAADctAZ1qij4UqiWrNigwKAQFStSWMMHdlWhAlenmwsICtH5gKDY9DmyZ9NTQx7Q3O9W6vUPvrCBff3alXRvh+Z8GgAAJAPBPAAASBWtm9a1j8QM6NExwTLTR37kkG6cfQAAbgDN7AEAAAAAcDIE8wAAAAAAOBmCeQAAAAAAnAzBPAAAAAAAToZgHgAAAAAAJ0MwDwAAAACAkyGYBwAAAADAyRDMAwAAAADgZAjmAQAAAABwMgTzAAAAAAA4GYJ5AAAAAACcDME8AAAAAABOhmAeAAAAAAAnQzAPAAAAAICTIZgHAAAAAMDJeKR3BgAAAAAAaefxjjOSnXbKssF8FE6CmnkAAAAAAJwMwTwAAAAAAE6GYB4AAAAAACdDMA8AAAAAgJMhmAcAAAAAwMkQzAMAAAAA4GQI5gEAAAAAcDIE8wAAAAAAOBmCeQAAAAAAnAzBPAAAAAAAToZgHgAAAAAAJ0MwDwAAAACAkyGYBwAAAADAyRDMAwAAAADgZDzSc+f7Dx/Xz6u36OhJXwUGhWhY3y6qW6PiNdfZ+Oceu47f2QvKmSO7qlcuo253t1Juz5y3LN8AACChVeu32TI68GKIivkUVvd7WqtSuRKJnqq/Dx3TxGnzEyx/7Zn+KupdiNMLAEBGDubDwq+oRDFvNWtQQ1Nn/3Dd9Af+OaFZ85bZi4Na1copIDBYXyxcrv8t+FmP9bv3luQZAAAktGX7Pn39wyo9fN8dqlCmuNZs3KHJMxfq1VH9VahA3iRP2bhnByhn9uyxr/Pk5uY8AAAZPpivWaWcfSTX4aOnVbhAXrVtfpt97VUwv1o0rm1rAQAAQPpZvvYPNW9QU7c3qmVf9+jSRn/tP6I1G7ara6cWSa6XN3cu5cqZ4xbmFACAzCFdg/mUKl+mmL776Xft2ntYNaqU1cXgS/pz137VrJr0DYErERGKiIiMfR16OfwW5RYAANdgylnTZa5D60YOy6tXKqNDR09dc93X3ptt1y/qU0h3tW2sKhVKJZmWMh0AACcN5k2zvUEPddL0Lxcr4kqkIqOiVLtaefW8t02S6yxbuUmLl2+4pfkEAMCVBIeEKioqWnnz5HJYnid3Ltt/PjH58uRW7wfaq3RxHxvMb/zzL737yXyNGtpdlcqVTHQdynQAAJw0mD/le1Zzv1+pznc0UfVKZRVwMVjfLFlj+833e7BDout0bNNI7VrUd6iZH/369FuYawAAXIOb3JK1zCjiXdA+4ra+Ox9wUb+s+SPJYJ4yHQAAJw3ml63cbGvn72zV0L4uIS9lz5ZVb388T/d2aK78eXMnWCerh4d9AACAtGFmlMmSxS1BLbzpDhe/tv5aypUuZmetSQplOgAATjrPfHj4Fbm5Od7hz+L27yFEp0+eAABwdR4e7ra5/N4DRxyW79l/ROVLF0v2do6d9FW+PJ5pkEMAADKfdA3mL4eF69hJP/swzp4PtM/PXQiyrxctXauZc5fGpq9Vrby27Tqg1eu3y/9cgA7+c1Jzv/9VZUsWUf58CWvlAQDArWG6tP22eZd+37xLp33P2WnqTLP5lk1qJ1qmr/htq7btPiBf/ws6eeasff/PXQfUplldPjIAAJIhXdufHz1xRhOnzY99PX/xavu3Sb3qGtCjowKCQnQ+4Gpgb5j56M0NgJXrt2nBktXKmTO7qpQvpfvvSnrKGwAAkPYa1Kmi4EuhWrJigwKDQlSsSGENH9hVhQrks+/HL9PNoHcLlqxRQGCwsmb1ULEihTR8QNdrzlADAAAySDBfuXwpzXhnVJLvm4A+PjPHfMw88wAAIONo3bSufSSnTO/QuqF9AAAAF+gzDwAAAAAACOYBAAAAAHA61MwDAAAAAOBkCOYBAAAAAHAyBPMAAAAAADgZgnkAAAAAAJwMwTwAAAAAAE6GYB4AAAAAACdDMA8AAAAAgJMhmAcAAAAAwMkQzAMAAAAA4GQI5gEAAAAAcDIe6Z0BAEBCkZGR2rx1u/z8z8nbq5Aa1qsjd3d3ThUAAAAsgnkAyGB+Wr5Kr054T6d9/WKXFfXx1tgXnlKHdq3TNW8AAADIGGhmDwAZLJB/dMTzDoG8ccbPzy437wMAAADUzAOApKN+kel+HkzT+jHj3lV0dML3Ypa9NP49lancNEM0uY+MjLj6JLEMAwAAIE0RzAOApGEfXUz38xAVuFMRZ/2vmcbf3093P71OWfLVUnor4x2lCb2kV74M0duDssnNzS29swQAAOAyaGYPwCVlz5rxAs/o8Aupmu5W2fFPhI77R6V3NgAAAFwKwTwAl1TSK4tqlc1YjZPcshVI1XS3UtgVmtoDAADcShnrShYAbhHTJPzVhz2190iwJg/NLXf3bOl+7iMjm6lXLy+dvUZTey8vb82Z1Czd+8ybMQbeXhCYrnkAAABwZQTzAFzXv328S3p5yDNnRvg59ND4l0baUevjjysX0x193JinVKVU9nTKHwAAADIKmtkDQAZi5pGf+v4bKuLt7bC8iI+PXc488wAAADCSVRU17q33U3y2nnikv/Lnz8dZBoAUMgF7uzYttHnrdvn5n5O3VyE1rFcn3ZvWAwAAwMmC+Vmzv9ZtdWooa9asydroH3/uUN+HuhHMA8ANMoF7k4b1OH8AAABIVLI7iU6f/JYKFyqYrLTV67dJ7mYBAAAAAEBa9Jl/5/UxypMnd7I3OuGV0ckO/AEAAAAAQBrUzD9w710p2miXu+9MYTYAAAAAAEBy3dRcTCEhlxQVd+4kSXlye97MJgEAAAAAQGoH88dPnNLL4ydq45Y/FRYWHrs8Ojpabm5uOrx7fUo3CQAAAAAA0jKYf/LZsfbv2+NftP3iTQAPAAAAAAAycDC/7++DWvzN5ypftnTa5AgAAKSZu+7vk6L05qb9px+9oyI+3mmWJwAAcAuC+Vo1q+r0aV+CeQAAnNCefQc0uN9DypUr53XTmi50Uz+do/DwK8na9qr12/Tz6i0KvBiiYj6F1f2e1qpUrsR11zv4z0m9M22eXWfsyL7J2hcAAK4uxcH8W6+9oBdffUtn/PxVuWJ5eXi4O7xftXLF1MwfAABIZUMGPJzsKWQ//XxustJt2b5PX/+wSg/fd4cqlCmuNRt3aPLMhXp1VH8VKpA3yfUuhYZp1rylqlKhtIIuhiT7GAAAcHUpDubPXQjQ0eMn9cyL4x2a4DEAHgAAGd9vvyxSoYIFkp1++eK58vEufP10a/9Q8wY1dXujWvZ1jy5t9Nf+I1qzYbu6dmqR5HpfLPxFDetWVZYsbtq2++A193ElIkIREZGxr0Mv/zcQLwAAribFwfyzL45X9aqVNPmd11S4cEG5iQHwAABwFiWKF01R+mJFfa6bxgTYR0/6qkPrRg7Lq1cqo0NHTyW53rotu+R3LkADe96lH3/dcN39LFu5SYuXXz8dAACuIMXB/MnTZ+xAOGVKl0ybHAEAgFti9W8b5JkrpxrUq2Nfz/7qG81d8L0qViircWNGKV++pJvHxxUcEqqoqGjlzZPLYXme3Lls//nE+Ppf0MKlv+nZYT3k7p4lWfvp2KaR2rWo71AzP/r16claFwCAzCZ5pWccTRvV096/D6RNbgAAwC3zxsQpCg6+ZJ/v239Q49+erNYtmurY8ZMa99YHKd5eYq31ElsWFRWlGV8t0T3tm6qIV/L67htZPTyUM0f2OI9sKc4jAAAuWzPfttXtGvfmB9q3/5CqVDID4Dluol2bpPvFxbf/8HE76q1pmhcYFKJhfbuobo2K1+0vt2T5Bm38c4+CLl5SgXy51altYzVvWDOlhwIAgEs7fuKUKlQoY58v+2WV2rZqpmefelS79+xTv0dGJns7uT1z2j7v8WvhLwZfSlBbb1wOC9fRE746fspPc7/71S4zY+9ER0uPjJ6kEYO7qWqFUjd9fAAAZGYpDubNSPbG5KmzErxnBsI7vHt9srcVFn5FJYp5q1mDGpo6+4dkrTN9zmIFBV9S324d5F04v71QiIyKSsERAAAAI2vWrLocGmafr9u4RV3v6WSfm+b1wSHJH1nezGxTuriP9h44ottq/ndTfs/+I6pTvUKC9DmyZ9crTztOQbd6/XbtO3hcQ/t0VuGC+fiAAABI7WD+n79Sb+CZmlXK2Udy7d73j/YfPqE3nh9k+/gZFPgAANyYBvVqadzbH6h+3VrasXOPpky6OlPNP0eOq6iPd4q2Zfqyz5y3VKVLFFH50sW0dtNOnQ+4qJZNatv3Fy1dqwuBwRrYs5OtxS9exCtB/3pzUyD+cgAAkErBfHraseegypTw0U+rt2jj1j3Kli2r6lQrry4dmilb1qyJrsM0NgAAJO7VF0fppXHvaOkvKzV+7LMq8m8AbwbGa9m8cYpOW4M6VRR8KVRLVmywXeeKFSms4QO7qlCBq7XsAUEhOh8QxEcBAEB6BfOvvD5JpUuVUP/e3R2W/+/LBTpy7ITGPv+U0or/uUAdOHJSHlk9bP96M3rul9+uUEjoZfV7sEOi6zCNDQAAjtau26QmDeupeLEimjV1UoLT8/JzI27olLVuWtc+EjOgR8drrntP+2b2AbiSxzvOSHbaKcsGp2leALhAML9s+Wo7NV189erW1NRPZ6dpMG8GxzGj4g7qeZdy5cxulz0Y0UrT5vygh+5rm2jtPNPYAACQcPybgMAgtWjWSO3btrQj2OfNk5vTBABAZp6a7kJAoPLk9kywPLenp85fCFRaypfXU/nz5Y4N5I2i3oXs6LcXAoITXYdpbAAAcPTbL4s0f/ZUOyvNrNnzVP/2Tnqo/+P6bM7XOn7yFKcLAIDMWDNfplQJrfl9o8qULumw3PSvK1WimNJShTLFtXXnfjulTY7sV+eW9fW/YEfRL5CfGgUAAJKrauWK9vHE0AHy9fPX8pW/acWq3/Tmux+rbJmSat+mhe5ofbtq1ajKSQUAIDME84P69tTLr0/UufMBatq4nl22fuMfmvH5VynuY2eCcr+zAbGvz54P1LGTfvLMlUOFCuR1GPnWaFi3qpas2KjP5/+ke9o3tX3mF/y4Rs0b1EhyADwAAHBtPt5e6tWjq31cuhRqb9CbwL7vkBG23H/skX6cQgAAnD2Yf/D+zgq7Eq6Ppn+uD6ddnWu+RPGiGv/ys7q/y9WgO7mOnjijidPmx76ev3i1/dukXnU7UE78kW9NbfxTQx7Q3O9W6vUPvrDT09WvXUn3dmie0sMAAABJzALT6c429hEVFWW71wEAACcO5kNCLsnTM5d93rvH/fZx7vwF5ciePXZ5SlUuX0oz3hmV5PuJjXxr+siPHNLthvYHAAD+YwauNTfkO3dsZ18/9tSLdpo6H+/C+mzau7YZfqGCBThlAAA48wB4dZt1sM3t5sxbqDO+fnaZKeBvNJAHAADp66v536lYER/7/Lf1m/Tbhs363yfv2znmJ7zzIR8PAACZIZhf+ePXduqan35ZpRbt79c9D/bX5KmztPfvA2mbQwAAkCb8/M+p6L/B/K+r1+muO9va6eoeGdhbO3bv5awDAJAZmtmbZnj9ej1oH0EXg7Vq7XotX7nWDnyXL28eO+KtGfm2UYO6cnd3T9tcAwCAm2bK79NnfFWsqI/W/r5RTw9/xC6Pjo5WVGQkZxgAgMw0AJ6RN09udbmrvX1ERERo/aat+nXVb3rmxfEKDrmkV18cqXs7d0j93AIAgFTToV0rDX/mZZUtXdIOdNfq9iZ2+Z59+1W6VAnONAAAmS2Yd9iAh4dtkmcer44Zpd17/lYkd/MBAMjwXho9QiWKFdWpM7567unHY8fBMc3ve/e8P72zBwAAUjOYN3PPminhGtSrY1/P/uobzV3wvSpWKKtxY0apRrXKKd0kAABIB1mzemjIgIcTLB/YpwefBwAAmS2Yf2PiFD038jH7fN/+gxr/9mQN6ttT6zf9oXFvfaCJE15Ki3wCAIA0cPjIMW3c/KfOnT+vqKhoh/eeHDaQcw4AQGYJ5o+fOKUKFcrY58t+WaW2rZrp2ace1e49+9TvkZFpkUcAAJAG5i74TmNee0cF8ueTV+FCcnNzi33PPCWYBwAgEwXzWbNm1eXQMPt83cYt6npPJ/s8X768Cg4JSf0cAgCANDFl2uca9eQjenRQH84wAACZPZhvUK+Wxr39gerXraUdO/doyqTxdvk/R46rqI93WuQRAACkgcCgIDu3PAAAcD5ZUrrCqy+Okoe7u5b+slLjxz6rIv8G8GZgvJbNG6dFHgEAQBrodGdbrV23iXMLAIAr1MwXL1ZEs6ZOSrD85edGpFaeAADALWDmkn/3w0+0beduValY3k43G1f/3t35HAAAyEzzzEdFRenIsRM6d+68oqIdR75tVL9uauUNAACk8QB4uXLl1KYt2+wjLjMYHsE8AACZKJj/c8duPfnMyzp56oyi4wXypuA/vHt9auYPAACkkd+Xf8u5BQDAVYL5F195S7WqV9VnUyfJy6uwwzQ2AAAAAAAgAwbzR44d19T3J6hM6ZJpkyMAAHDLnD7jpxWr1urkaV9duXLF4b2XRjMeDgAAmSaYr1Oruu0vTzAPAIBzW7dhiwY9/oxKFi+mw0eOqlKF8jpx6rTtRlejWuX0zh4AAEjNYL7vw930+tuT5X/2nKpUqiAPD3eH96tWrpjSTQIAgHTw9vtTNbjfQxr5xBBVr99G0z54Q4UKFtCTz45Vy9uZbhYAgEwVzD/65PP277NjXo9dZvrNm7v4DIAHAIDzOHjoiCa/85p97u7hrsuXw+TpmcsG94Mff0a9e9yf3lkEAACpFcz/9suilK4CAAAyoJw5cyg8/Go/eR+vwjp6/IQqVSxnX1+4EJjOuQMAAKkazJcoXjSlqwAAgAyobu0a+mPbDlWsUFZtWja13ej+3n9IP61Yrbq1q6d39gAAQGoG8zEOHPxHJ0+fSTDybbs2LW50kwAA4BZ6afSTCrl0yT4f8dhghVwK1ZKfVqh0qRKMZA8AQGYL5o8dP6khw0fbO/cxfeWNmPnmD+9en/q5BAAAqa5UyeIOTe7Hv/wsZxkAACeRJaUrvPrGu3YKmz9+W6qcOXJo+Q9faf7sqapZvYrmff5x2uQSAACkicCgi5r3zfd6692PFRBwtZ/87j37dMbXjzMOAEBmqpn/c/tuffXZFDt1TZYsbnLLkkUN6tXR6KeG6ZUJ72rpotlpk1MAAJCq9v59QL0GDlee3J52fvme3boof/58+nnFGp08dUbvvjk2RdtbtX6bfl69RYEXQ1TMp7C639NalcqVSDTtgX9OaOGPa3XG/7zCwyNUqEBetWhcS+1a1E+lowMAIHNLcc18ZFSUPHPlss8LFMgvX7+z9nnxYkV0+MjR1M8hAABIE+Pf+kAP3NtJq3/6RtmzZY9d3ur2Jtr0x7YUbWvL9n36+odVuqttY708oo8qli2uyTMX6tyFoETTZ8+WVa2b1dUzj/bQa8/0t+t999PvWrtxx00fFwAAriDFwXzlCuW09++D9nmdWtU1feYc/fHnDn0wdZZKlfiv7x0AAMjYdu7eq4cevC/Bch9vL/mfPZ+ibS1f+4eaN6ip2xvVUlGfQurRpY0K5M+jNRu2J5q+VHEfNapbVcWLFFbhgvnUuF41Va9cVgf+OXnDxwMAgCtJcTD/+ND+io6Oss9HDX/ENsPr1nuoVq9dr1deGJkWeQQAAGkge/ZsuhgckmD54SPHVKhg/mRvJyIiUkdP+qpapTIOy6tXKqNDR08laxvHTvrq0JGTSTbLN65ERCj0clicR3iy8wgAgFy9z3zL5o0dRsFdsWSeHTAnX768sSPaAwCAjM9MJzt56ix99O7r9rUpx81N+rfe/Ugd2rVO9naCQ0IVFRWtvHmudsOLkSd3Ltt//lqeGT9NwcGhthvfPe2a2pr9pCxbuUmLl29Idr4AAMjMbnie+SNHj+vo8ZNqVL+OHSwnZoo6AADgHF54Zrj6D31K9W7vqMthYere51H5nz2nunVq6pknh6Z4e25yS9ayuJ4d1kNhYVd0+NhpLVq6Vl6F89vm94np2KaRwwB5pmZ+9OvTU5xPAABcMpi/EBCox556URs2b7V38FcvW2Br6Ee/NEF58+TWmNFPpk1OAQBAqjKj2H/zxSdav/EP7d7zt6Kio1SjamU1b9owRdvJ7ZnTznATvxb+YvClBLX18Xn925y/RFEvBV0M0eLl65MM5rN6eNgHAAC4gT7z4958Xx5ZPbT+1+/tPPMx7u54h9b8vpFzCgCAk2nauL6GDHhYQwf2TnEgb3h4uKt0cR/tPXDEYfme/UdUvnSx5G8o+mr/ewAAcH0pvr29dt0mzZ7xgYoW8XZYXrZ0SdvPDgAAOI91G7Zo5ux5Onj4iG0SX75caQ3o3T3FQb1p/j5z3lKVLlHEBvBrN+3U+YCLatmktn3fNKG/EBisgT072der1m1TwQJ5VcSroH198MgJ/bJ2i1o3uy0NjhIAgMwnxcF8aOhl5czx31y0Mc5fCFC2bFlTK18AACCN/e/LBRr31vvq2L6N+vd60C7btvMv9R860nab6/twt2Rvq0GdKgq+FKolKzYoMChExYoU1vCBXVWoQD77fkBQiM4H/DfnfFR0tA3wz54PlLt7FnkVyq+uHVuoReOrwT8AAEjlYL5h/Tpa9MMyPT38Efva9JuPiorSJ7O+VJNG9VK6OQAAkE4+njFbL40e4RC095c0u24tTZn+eYqCeaN107r2kZgBPTo6vG7b/Db7AAAAtyiYf2HUE+rRb5h27t6rK1eu6I2JU7T/4GEFBAZp4Zef3GA2AADArRYcHOIw5WyM25s21JuTPuIDAQAgMw2AV7FCWS379gvVrlnd9qe7FBqqDu1aaemi2SpdqkTa5BIAAKS6O1o3188r1iRYvnzlb2rbujlnHACADOyG5nfx9iqkkU8MTv3cABlIZGSkNm/dLj//c/Y737BeHbm7u6d3tgDgpnw25+vY5xXKl9GUTz7Xxi1/6rY6NeyybTv+0h/bdmpwv56caQAAMlswHxgYpK8XLr468q2bVKFcGXW7727lz391kJvk2n/4uH5evUVHT/rawXKG9e2iujUqJmvdg/+c1DvT5qmYT2GNHdn3Rg4DSNJPy1fp1Qnv6bSvX+yyoj7eGvvCU+rQrjVnDoDTMiPXx5Uvbx4dOPSPfcTImye35i9aoieGDkiHHMIZPd5xRrLTTllGhRAApEswb+7eD378WeXx9FTNGlXsss+/WKDJU2dpxkfvqHGD5A9mExZ+RSWKeatZgxqaOvuHZK93KTRMs+YtVZUKpRV0MSSlhwBcN5B/dMTzio52XH7Gz88un/r+GwT0AJzW78u/Te8sAACA9AjmXx43UXd3aKvxLz8b2+TYNEce89o79r1ffvgq2duqWaWcfaTUFwt/UcO6VZUli5u27T6Y4vWRgfwbMR/3j7BTE6U3+10e926CQN6IWfbS+PdUpnLTdG9yf9QvMl33DwAAAMCJgvmjx09q6gdvOAQy5vmgfj3tlHVpbd2WXfI7F6CBPe/Sj79uuG76KxERioj4L+gJvRyexjlEckVHR2vslyHq0UwaPi1YR/zSP5iPCtypiLP+10zj7++nu59epyz5aim9lfFO7xwAcDZmXvmnn3hEuXLlTFb6t979WI8MeDjFXekAAEAGC+ZrVKukg4eOqHzZ0g7LzbJqVZLX3/1G+fpf0MKlv+nZYT2SXYu7bOUmLV5+/aAft95x/yjt/CfCBvMZRXT4hVRNdytlz+qW3lkA4AQ+mzNfwwb3TXYwP2fuN+rZrQvBPAAAzhjM7/37QOzzfr0e1GtvvKejx06obu3qsSPfzp77jUaPHJZmGY2KitKMr5bonvZNVcSrYLLX69imkdq1qO9QMz/69elplEukRNiVRNqypzO3bAVSNd2tUrush0p6pX/LBgDO0SqqdacH5abk3QC8FHo5zfMEAADSKJjv1LWP3Nzc7AVAjDcmTUmQ7slnxqpzx3ZKC5fDwnX0hK+On/LT3O9+tctMfkyWHhk9SSMGd1PVCqUSrJfVw8M+kPF9/FgelfZO337okZHN1KuXl85eo6m9l5e35kxqlu595o3IyHAFB1/WKw972v9RALied14fk+KTVLhQ8m+iAwCAWyNZUe5vvyxSesuRPbteedpxCrrV67dr38HjGtqnswoXpC+fszOBfMXi6X3jxUPjXxppR6034g6EFxMrjxvzlKqUyq6MICQ0SnuD42QOAK7jgXvv4hwBAJAJJCtyKlG8aJrVtvudDYh9ffZ8oI6d9JNnrhwqVCCvFi1dqwuBwRrYs5Mdub54ES+H9fPkziUPD/cEy4GbYeaRN9PPxZ9nvoiPj8Y+P4Jp6QAAAAA4RzC/fOVatbq9qbJmTV6t6ao169Wk0W3KkSPHNdMdPXFGE6fNj309f/Fq+7dJveoa0KOjAoJCdD4gKFn7BFI7oG/XpoU2b90uP/9z8vYqpIb16mSIpvUAAAAAkKzo/JHhz2nL2h9VqGDyBv16YtQYLV00R6VKFr9musrlS2nGO6OSfN8E9NdyT/tm9gGkBRO4N2lYj5MLAAAAwDmDeTPQ3KgXxilbtqzJ2mhYGHO5AwAAAACQrsH8/V06pWijXe6+U7lze95ongAAQBo6dvykSpYoxiwYAABk9mB+4oSX0j4nAADglmjVsZs2r1kSO+XcYyNf1CsvjJRX4UJ8AgAAOIks6Z0BAABwa5nuc3GtXrtBoaGX+RgAAHAiBPMAAAAAADgZgnkAAFyMm5tbgv7y8V8DAICMLXkTxwMAgEwj/iw1YeFheuHVt5QrZw6HdNMnv5VOOQQAANdDMA8AgIuJP0vNvXd3SLe8AACAWxTMf/DxzGu+/+SwgTeYFQAAcCswSw0AAC4YzP+8Yo3D64iICB0/eUoe7u4qVbI4wTwAAAAAABktmF+6aHaCZReDQzTqhdd05x2tUitfAAAAAAAgLUezz5PbUyOfGKJJk6enxuYAAAAAAMCtmJouKOiiraEHAAAAAAAZrJn9Z3O+dngdLcnP/6y+/eEntWzeODXzBgAAAAAAUiOYnzl7nsPrLFmyqGCB/Haam2FD+qR0cwAAAAAAIK2D+d+Xf5vSVQAAAAAAQHoG8wAAAIlZtX6bfl69RYEXQ1TMp7C639NalcqVSDTtn7v2a/WGHTp+yk8REZEq5lNInds3VY3KZTm5AADcygHwAACA69qyfZ++/mGV7mrbWC+P6KOKZYtr8syFOnchKNH0+w+fULWKpTV8YFeNebK3KlcopSmffatjJ31ved4BAHBGBPMAAOCmLV/7h5o3qKnbG9VSUZ9C6tGljQrkz6M1G7Ynmt6836F1Q5UtWVQ+XgXUtePt8i5cQDv2HOLTAAAgGQjmAQDATTHN5I+e9FW1SmUcllevVEaHjp5K1jaioqIVFhYuz1w5kkxzJSJCoZfD4jzC+eQAAC6LPvMAAOCmBIeE2mA8b55cDsvz5M5l+88nx/K1WxQWfkX1a1dOMs2ylZu0ePkGPi0AAAjmAQBAanGTW7KWxbdp21798Mt6PdbvPuXN7Zlkuo5tGqldi/qxr03N/OjXp99EjgEAcF7UzAMAgJuS2zOnsmRxS1ALfzH4UoLa+sQGzpu94Gc90ruzqlUqfc20WT087AMAANBnHgAA3CQPD3eVLu6jvQeOOCzfs/+Iypcuds0a+c++/kmDHrpLtaqW53MAACAFGAAPAADcNNP8/bfNu/T75l067XvOTlN3PuCiWjapbd9ftHStZs5d6hjIz1umbp1bqlypYgoMCrGPS6FhfBoAACQDbdUAAMBNa1CnioIvhWrJig02KC9WpLCdQ75QgXz2/YCgEJ0P+G/O+bUbdygyKkpfffurfcRoUq+6BvToyCcCAMB1EMwDAIBU0bppXftITPwA/ZlHe3DWAQC4CTSzBwAAAADAyRDMAwAAAADgZAjmAQAAAABwMgTzAAAAAAA4GYJ5AAAAAACcDME8AAAAAABOhmAeAAAAAAAnQzAPAAAAAICTIZgHAAAAAMDJEMwDAAAAAOBkCOYBAAAAAHAyHum58/2Hj+vn1Vt09KSvAoNCNKxvF9WtUTHJ9H/u2q/VG3bo+Ck/RUREqphPIXVu31Q1Kpe9pfkGAAAAAMBla+bDwq+oRDFvPXRv22Sl33/4hKpVLK3hA7tqzJO9VblCKU357FsdO+mb5nkFAAAAACCjSNea+ZpVytlHcvXo0sbhddeOt2v7Xwe1Y88hlSrukwY5BAAAAAAg40nXYP5mRUVFKywsXJ65ciSZ5kpEhG2SHyP0cvgtyh0AAAAAAGnDqYP55Wu32Kb69WtXTjLNspWbtHj5hluaLwAAAAAA0pLTBvObtu3VD7+s12P97lPe3J5JpuvYppHatajvUDM/+vXptyiXAAAAAACkPqcM5rds36fZC37WI707q1ql0tdMm9XDwz4AAAAAAMgsPJyxRv5/83/W4IfvUq2q5dM7OwAAAAAAuFYwfzksXH5nA2Jfnz0fqGMn/eyAdoUK5NWipWt1ITBYA3t2ig3kP5u3TN27tFa5UsXs3PRG1qweypUze7odBwAAAAAALhPMHz1xRhOnzY99PX/xavu3Sb3qGtCjowKCQnQ+ICj2/bUbdygyKkpfffurfcSISQ8AAAAAgCtI12C+cvlSmvHOqCTfjx+gP/Noj1uQKwAAAAAAMrYs6Z0BAAAAAACQMgTzAAAAAAA4GYJ5AAAAAACcDME8AAAAAABOhmAeAAAAAAAnQzAPAAAAAICTIZgHAAAAAMDJEMwDAAAAAOBkCOYBAAAAAHAyHumdAQAAkDmsWr9NP6/eosCLISrmU1jd72mtSuVKJJo2IChYCxav1tGTvvI7e0Ftmt2mHl3a3PI8AwDgrKiZBwAAN23L9n36+odVuqttY708oo8qli2uyTMX6tyFoETTR0REKk/uXOrUprFKFPXmEwAAIIUI5gEAwE1bvvYPNW9QU7c3qqWiPoVsLXuB/Hm0ZsP2RNMXLpjPpmlav7py5siWrH1ciYhQ6OWwOI9wPjkAgMuimT0AINOJjIzU5q3b5ed/Tt5ehdSwXh25u7und7YyLVPLbprLd2jdyGF59UpldOjoqVTbz7KVm7R4+YZU2x4AAM6MYB4AkKn8tHyVXp3wnk77+sUuK+rjrbEvPKUO7Vqna94yq+CQUEVFRStvnlwOy00zetN/PrV0bNNI7VrUj31tauZHvz491bYPAIAzoZk9ACBTBfKPjnjeIZA3zvj52eXmfaQdN7kla9mNyurhoZw5ssd5JK95PgAAmRE18wCAm3bULzJDNK0fM+5dRUcnfC9m2Uvj31OZyk0zRJP7yMgI+/e4f4TKFs2q7FlTL+i91XJ75lSWLG4JauEvBl9KUFsPAABSB8E8AOCmDfvoYrqfxajAnYo463/NNP7+frr76XXKkq+W0lsZ7yhN6CUNnxasjx7LporFnbdI9vBwV+niPtp74Ihuq1kxdvme/UdUp3qFdM0bAACZlfNeOQAA0k1GrEWODr+QqumQMqYv+8x5S1W6RBGVL11Mazft1PmAi2rZpLZ9f9HStboQGKyBPTvFrnPs5NXuEGHhV3QxJNS+9vDIYueoBwAA10YwDwBIsZJeWVSrbMYqQtyyFUjVdEiZBnWqKPhSqJas2KDAoBAVK1JYwwd2VaEC+ez7AUEhOh/gOOf8uPdnxz4/esJXm7ftVaECefXmC0M4/QAAXEfGuhIDADgFNzc3vfqwp/YeCdbkobnl7p7+A5FFRjZTr15eOnuNpvZeXt6aM6lZBukzH67g4Mv2/JXyTv/8pIbWTevaR2IG9OiYYNmMd0bdglwBAJA5EcwDAG6M29Wm9iW9POSZMyMUJx4a/9JIO2q9EXcgvH+zqnFjnlKVUtmVEYSERmlv8NXzlxG7LQAAgIyNqekAAJmGmUd+6vtvqIi3t8PyIj4+djnzzAMAgMwiI1SlAACQakzA3q5NC23eul1+/ufk7VVIDevVyRBN6wEAAFILwTwAINMxgXuThvXSOxsAAABphmb2AAAAAAA4GYJ5AAAAAACcDME8AAAAAABOhmAeAAAAAAAnQzAPAAAAAICTIZgHAAAAAMDJEMwDAAAAAOBkCOYBAAAAAHAyBPMAAAAAADgZgnkAAAAAAJwMwTwAAAAAAE6GYB4AAAAAACdDMA8AAAAAgJPxSO8MIO1ERkZq89bt8vM/J2+vQmpYr47c3d055QAAAADg5NI1mN9/+Lh+Xr1FR0/6KjAoRMP6dlHdGhWvuc7fh45r/uLVOuV7Vvnz5tadrRqoVZM6tyzPzuKn5av06oT3dNrXL3ZZUR9vjX3hKXVo1zpd8wYAAAAAcOJm9mHhV1SimLceurdtstL7nw/Q5JkLVbFscb08oo86tWmked+v1Nad+9M8r84WyD864nmHQN444+dnl5v3AQAAAADOK11r5mtWKWcfybVmww4VLJBXPbq0sa+L+hTSkRO++mXNFtWrVUm3WtiVaB33j7DPzV939ywZomn9mHHvKjo64Xsxy14a/57KVG6a7k3uj/pFpuv+AQAAAMBZOVWf+cNHT6t6pTIOy8zrdZt3KSIyUh6JBKdXIiIUEfFf0Bh6OTzV8nPML1LDpwVrQi/Zv0f80j+YjwrcqYiz/tdM4+/vp7ufXqcs+WopvZXxTu8cAAAAAIDzcapgPvBiiPLkzuWwLG+eXIqMilJwSKjtQx/fspWbtHj5BrmK6PALqZruVsqe1S29swAAAAAATsGpgnnDzS1ewPdv03E3JR4IdmzTSO1a1HeomR/9+nRlVm7ZCqRqululdlkPlfRK/5YNAAAAAOAMnCqYz5fHU0EXQxyWBQVfknuWLPL0zJHoOlk9POwjLZTydtfkobkVHHzZ/nV3z6b0FhnZTL16eensNZrae3l5a86kZuneZ96IjAy35++Vhz0T3qgBAAAAADh/MF+udFHt3HPIYdme/UdUuoRPov3lb0Wz8JJeHtobLPvXM2dGOJ0eGv/SSDtqvRF3ILyYWHncmKdUpVR2ZQQhoVH2/MVmDgAAAABwXenarvlyWLiOnfSzD+Ps+UD7/NyFIPt60dK1mjl3aWz6lk1q2/e+/mGVTvue0++bd+n3LbvUvmWDdDuGjMjMIz/1/TdUxNtxdLkiPj52OfPMAwAAAIBzS9eq5KMnzmjitPmxr+cvXm3/NqlXXQN6dFRAUIjOB1wN7A2vgvk1fOD9mr94lVav3658eT3tNHXpMS1dRmcC9nZtWmjz1u3y8z8nb69CalivToZoWg8AAAAAcOJgvnL5Uprxzqgk3zcBfcJ1SuqlEX3SOGeZgwncmzSsl97ZAAAAAACkMoYPBwAAAADAyWSEEdsAAEAmsGr9Nv28eosCL4aomE9hdb+ntSqVK5Fk+r8PHbdd7E75nlX+vLl1Z6sGatWkzi3NMwAAzoqaeQAAcNO2bN9nB6i9q21jvTyijyqWLa7JMxfGDmobn//5APu+SWfSd2rTSPO+X6mtO/fzaQAAkAwE8wAA4KYtX/uHmjeoqdsb1VJRn0J2gNoC+fNozYbtiaZfs2GHChbIa9OZ9Ga9Zg1q6pc1W/g0AABIBpdrZh/978TroZfDU2V7ly+HKzz8ii5fDlMWtziTuoPzdwvw/eP8pSe+fxnz/OXInk1ubm66lSIiInX0pK86tG7ksLx6pTI6dPRUouscPnravh8//brNuxQRGSmPRGZfuRIRYfcV41JomP27fdceZcvqcpc0GUrglbPJTrt1+640zYsz4bxxzviuISnVqlS6bpnuciXf5bAr9u/o16end1YAAEh1k8c9oZw5st/SMxscEqqoqGjlzZPLYXme3Lls//nEmOXm/bjM+pFRUXZ7pg99fMtWbtLi5RsSLJ81/9ebPgbcnBx1syY77bQvf+Z0c974rt1i/I86o5+vW6a7XDCfP6+n3nrxEeXInjVVai5MDb+5MWC2mTNHNrkajp/Pn+8////8/mWs339zFz+9uMktWcti34tfDkdfe52ObRqpXYv6sa+joqIUEnpZuXPlTNPWCK5a1nHcfN6uwFW/56587KFOdNzXK9NdLpjPkiWLCubPk+rbNV+EW10TkpFw/Hz+fP/5/3dVrv77Z+T2zKksWdwS1MJfDL6UoLY+Rr48ngqKlz4o+JLcs2SRp2eORNfJ6uFhH3F55sqpW8VVP2uO27XwebsePnPnxQB4AADgpnh4uKt0cR/tPXDEYfme/UdUvnSxRNcpV7qofT9++tIlfBLtLw8AABwRzAMAgJtmmr//tnmXft+8S6d9z9lp6s4HXFTLJrXt+4uWrtXMuUtj05vlZto6k86kN+v9vmWX2rdswKcBAEAyuFwz+7Sojejcron964o4fj5/vv/8//P755q///E1qFNFwZdCtWTFBgUGhahYkcIaPrCrChXIZ98PCArR+YD/5pz3Kphfwwfer/mLV2n1+u3Kl9fTTlNXr1YlZTSuWtZx3HzersBVv+eufOwemei43aJj5moDAAAAAABOgWb2AAAAAAA4GYJ5AAAAAACcDME8AAAAAABOhmAeAAAAAAAnw2j2ybBq/Tb9vHqLAi+GqJhPYXW/p7UqlSuRZPq/Dx3X/MWrdcr3rPLnza07WzVQqyZ15ArH/+eu/Vq9YYeOn/JTRESkivkUUuf2TVWjclm5yucf4+A/J/XOtHl2nbEj+8pVjv9KRISWLN+gjX/uUdDFSyqQL7c6tW2s5g1ryhWO3xy3Se939oJy5siu6pXLqNvdrZTbM6ecyf7Dx+1xHD3pa0cmH9a3i+rWqHjNdTLTb19Kjz8z/va5Elcu5121jHfVst1Vy3RXLMtdtRzf72LlNzXz17Fl+z47B+5dbRvr5RF9VLFscU2eudDOjZsY//MB9n2TzqTv1KaR5n2/Ult37pcrHP/+wydUrWJpOx3RmCd7q3KFUpry2bc6dtJXrnD8MS6FhmnWvKWqUqG0nNmNHP/0OYu19+Ax9e3WQeOeHaDBD9+tIt4F5QrHf+CfE5o1b5m9yHllVD890ruzjhw/o/8t+FnOJiz8ikoU89ZD97ZNVvrM9tuX0uPPbL99rsSVy3lXLeNdtWx31TLdVctyVy3Hw1ys/KZm/jqWr/1DzRvU1O2NatnXZg7cv/Yf0ZoN29W1U4sE6dds2KGCBfLadEZRn0I6csJXv6zZkiHnzk3t44857hhdO96u7X8d1I49h1SquI8y+/HH+GLhL2pYt6qyZHHTtt0H5axSevy79/1jfxTfeH6QPHNdvXtduODVOaZd4fgPHz2twgXyqm3z22Ln0W7RuLa9Q+xsalYpZx/Jldl++1J6/Jntt8+VuHI576plvKuW7a5aprtqWe6q5XhNFyu/qZm/BtPUwjTRqFapjMPy6pXK6NDRU4muY34AqieS/ugJX0VERiqzH398UVHRCgsLl2euHHI2N3r867bskt+5AHVu11TO7EaOf8eegypTwkc/rd6iZ8ZN04tvzdSCxasVfuWKXOH4y5cppguBwdq197Cio6MVdDHENt+qWTX5hYqzyky/fanBmX/7XIkrl/OuWsa7atnuqmU6ZXnyZZbftpvlbL9r1MxfQ3BIqP1A8+bJ5bA8T+5cts9NYsxy835cZv3IqCi7PdP/JDMff3zL126xzV3q164sZ3Mjx+/rf0ELl/6mZ4f1kLu7c98ru5Hj9z8XqANHTsojq4fto2S28eW3KxQSeln9HuygzH78FcoU16CHOmn6l4sVcSXS/t/XrlZePe91vOubGWWm377U4My/fa7Elct5Vy3jXbVsd9UynbI8+TLLb9vNcrbfNef8RbrF3OSWrGWx77nFey/6+utkpuOPsWnbXv3wy3oNebiz8ub2lLNK7vFHRUVpxldLdE/7piri5Vz9yVLr8ze10ea9QT3vUtlSRW2N9IOdW2n9H7ud6k7+jR6/GTBm7vcr1fmOJrbf1ZOD7tfZ84H6YuFyuYLM9tt3ozLLb58rceVy3lXLeFct2121TKcsT+Z5ykS/bTfCGX/XqJm/BjNipekXFf+O5cXgSwnubMbIl8fTNq2NKyj4ktyzZJGnp3M017iZ44872MjsBT/bQUOqVXLOgWJSevyXw8JtUyQzGubc736NLQijo6VHRk/SiMHdVLVCKWXq739eT+XPl1u5cmaPXVbUu5A9BxcCguXjVUCZ+fiXrdxsa+fvbNXQvi4hL2XPllVvfzxP93Zonqnvamem376bkRl++1yJK5fzrlrGu2rZ7qplOmV58mWW37Yb5ay/awTz1zo5Hu4qXdxHew8c0W01/5vSYM/+I6pTvUKi65QrXVQ79xxyWGbSly7hIw93d2X244+5q/W/+T9r8MN3qVbV8nJWKT3+HNmz65WnHaepWb1+u/YdPK6hfTo73aAxN/L5m0DWjHpqLn5yZM8W2zzR3OktkD93pj/+8PAryhKvCWYWtywOd7czq8z023ejMstvnytx5XLeVct4Vy3bXbVMpyxPvszy23YjnPl3jWb219GuRX39tnmXft+8S6d9z9mpLc4HXFTLJrXt+4uWrtXMuUtj05vlZqoLk86kN+v9vmWX2rdsIFc4fvPP8Nm8ZerWuaXKlSpm53c0DzOdS2Y/fnPHu3gRL4eH6XtkChLzPHu2qwVhZv78zSi/ZsTbz+f/ZJucm7k+F/y4Rs0b1FC2rFmV2Y+/VrXy2rbrgL3Q8z8XYOcjnvv9rypbsoit3XAm5uLt2Ek/+zBMdwHzPGYqn8z+25fS489sv32uxJXLeVct4121bHfVMt1Vy3JXLccvu1j5Tc38dTSoU0XBl0K1ZMUG+8EWK1LYzkNYqMDVO7EBQSE6H/DfPJVm+orhA+/X/MWr7I+AaaJkpjxwpikdbub4127cYQfK+OrbX+0jRpN61TWgR0dl9uPPbFJ6/ObO/VNDHtDc71bq9Q++sBcB9WtXsk3MXeH4mzWoYQuRleu3acGS1cqZM7uqlC+l++9KeqqjjOroiTOaOG1+7Ov5i1c7/C9n9t++lB5/ZvvtcyWuXM67ahnvqmW7q5bprlqWu2o5ftTFym+3aNPxBwAAAAAAOA2a2QMAAAAA4GQI5gEAAAAAcDIE8wAAAAAAOBmCeQAAAAAAnAzBPAAAAAAAToZgHgAAAAAAJ0MwDwAAAACAkyGYBwAAAADAyRDMA7hhx0+eUplqje2j43290/RMLvh2Sey+Xn3jvTTdFwAA1xIdHa3nx76h2o3b23Lpr737M3U5f73j69730TQvmzds3hp7HTD48WfTdF/vTZkRu6+Zs+el6b6Am+FxU2sDgKQvZ36oalUrpem56NzxDrVs3kRDn3yOcw4ASFerf9ugb779UfP+97FKliiuggXyZcpPpFgRH21e82Ps8ZmAume/x7Rj43Lly5snNt30D96UR9ZbE1asXDpfhQoWSNN9DOn/sB7u3lVduvdP0/0AN4tgHsBNy58/nwrkT9sLmRw5cthH1lt0sQAAQFKOHT8pb6/Cqle3VqY+Se7u7vL2KpSs64BbxQTycW8kpAVPz1z2kSULjZiRsfENBWCdO39B9W/vpI+mfx57Rrbt2K2KtZpr7bpNKT5L8xcuVrvOPVWp9u1q0OIuvTx+Yux7ptnal19/qwGPPq0qt7VU27u7a+v2XTpy9Lhtqle1Xivd13OQjh47wacDAMhQnn7hNY19fZJOnj5jy7Nmd9wbW1v/QK8hqtnoDtVp0t6WcfHLsdNn/PT402Ns83xT1nXu1s+WtTFWrPpNdz/QV5XqtNDt7bvq/Y8+VURExDXzYpqcm3T1mndUjQZt9PzYNxUefiU2TVh4uF55fZJ932zX5HHHrj2x7wcGBunJZ17Wbc06qHLdlmrV4QHNX7QkQTN789zUyhu1G7ezy83+E2tmb7Y58rlXVatxO1vO9x0yQv8cOebQdc6cpzW/b7TXANXqtVafISPk5382xZ9HVFSUpn46Wy3vfMBeczRt00VTpn3mkP8ly1aoW69H7PHd82B/HT5yzJ4Dc/5j9m2ugwBnQzAPIPZO9zvjx9gLgp279yok5JKeGv2KevW8Xy2aNUrRWZozb6FeGj9RPR+8Vz99/6U+/egdlS5VwiHNh9Nmqes9HbV00RyVL1vGXki88MpbGja4rxbPv1oIx70BAABARjD2+ZEa+cQQFS3ibZug//BvmRUaGqpBfXvqh69n6ctZU5Qli5seGT7aBpuGKVdN0Ovnd1affvS2li2ao0cG9FJUdLR93wS2ptzt1+tBrVg8VxNeGa1vvvtRU+LcZE/M+o1/6ODhI5r72UeaPHGcfvl1jT74+NPY99+YOEXLlq/WxAkv6cdv/mfL4z6DRyggINC+P+nDT3Tg0BF9Pv09rVgyV+NffjbRbgOmyf20D96Ibepujt2ci8Q8/cI4ey3x6ZR3tOirT2WOsP/Qkbpy5b8bE5dDL2vGZ1/qvTdf0fw5U3Xq1Bm9/vbkFH8eb733saZ9+oWeeLS/li+eqw/eeVWFCxd0SPPeRzP0+ND++vGbz21rg+GjXtIbk6Zo7PNPaf6caTp27ITe/fCTFO8bSG+0VwUQq3XLpurRrYtGPDtWtWpUVfbs2TV65LAUn6Ep0z7X4H49NaB399hltWtWc0jT7b67dXfHO+zzoYN6q2vPQRo+dIBaNm9sl/Xv3V3PvDieTwcAkKHkzZM7tgl23CboHdu3cUj31rgXbW34gUP/qHLF8vr+x190/vwFG+zHNEsvU7pkbHrTMm7ooD564N677OtSJYvr6SeG6I1JH2nEY4OSzI/pfmZuxufMmUOVKpbTU48PtgH808Mf0eXLYfpy3iIbyLdu0dSmf/PVF9R8/X36euFiPTKwl06dPqPqVSvZct8oWbxYovsxQXC+fHmv29Td1MCbFgYLv/wkthvCB2+/qiZt7rE3Gu7q0NYuuxIRodfHjo692d/34Qf0wcezlBLBISH6bM58vTbm6djzZrbXoF6dBH3g415fmGD+q1lTVP+22nbZg/ffY2+cAM6GYB6AgxefeULtuzysH3/6VT8s+Ew5smdP0Rk6e+68fP381bRxg2umq1KpQuxzr0JX76BXrlQ+dlnhQgUVFhami8EhypPbk08JAJChmSb1ppbbNJu/cCFAUVFXa9xPnfK1wfyefftVrWrlJPuX79qzTzt273Xo7hYZFWXLwtDQyzZYT0zVKhUd3rutTk2FXLqkU6d9dTE42AbNcfv2m+Df3GA3tfmGGejt0RHPa/eev9WiWUO1b9vypsYCMNv18HBXnVrVY5eZcXXKlSkdu0/D5Dluqz0vr8Ipbup+8NARhYeHq1kKrjnM9UVi1xznztHMHs6HYB6Ag2PHT8nX76xt9nfy1BlVrVwxRWcoR47kBf8eHnF+ftwSLnP7d1lM80QAADKygcNGqWhRH7356vPy8S5sg/n2XR5S+JWr/devd3PcpH/q8UHqcEerBO9lz54txflxc3PTvy347fP4U+vFLDM19utWfKeVa9Zp3YYtemjAE+rT8369+OzwFO/z6raTWv7fPhNcB9hLAZPfJFZOxWuOmCzEXxYVzfUGnA995gHEMgPmPPnsWN3dsa1tnjf6pQnyP3suRWcot6enShQvqvUbt3BmAQAu4UJAoK11fuKR/mrWpIEqlC+rwKAghzRVKlfQ3n37Y/uqx1ejWiUd/ueYbXof/3GtUdX37jugy5cvx742LQM8c+WyffrLlCqhbFmz6o8/d8S+b/qt7/prryqUKxO7zDSbN93f3n/7Vb383AjNXfBdovsy27rejfaK5csoIiJS23f+5XB+/jl6zGGfqcGcGxPQr+OaAy6KYB5ArIkfTLNN8l554WkNHdhL5cuVsQF9Spm+fTM+n6vP5nxt+87t3rNPn38xnzMNAMiUTP9x05TcBMFmZhYzKN34eIO53dOpvbwKF9KQJ0bb4NpMb7fsl5V2Nhdj+KMDteiHpXpvygztP3BYBw/9o8XLltuy+VpMcP7sSxN04OA/WrV2vV2/z0MP2BsAuXLl1MM9umrCxCl2tH2T5rmxExQaGqbu93e265uB3375da3Nt9nvyjW/2/I/McWLFbG167+u/t02iTeD+sVXtkwptWvTQs+9/Ia2bN2uPfsO2LF4inh72eWpybR2GDqwt96Y+JEWfr/UdnX4c8dufb3wh1TdD5BR0cwegLVh81bNmjPPjoYb00f9vTfHqsN9vezo9L173J/sM2UGoQkLC9fM2fM04Z0PVaBAfnVq35ozDQDIlEzg/OHEcXplwrt23JlyZUvplRdGqkff/waRzZYtq2bP+ECvvzPZjuweERmpiuXL6rUxo+z7ZoC2mR9P0uSpMzV91hfK6uGhcmVLq8cD91xz300b11eZUiX1YJ+htoVd5053aMTj/w2YZwayjY6KslPFBYdcUq0aVTR7xvuxg9mZPvRvv/exTpw6bYNjM3jclEmJD0BbxMfbDrD31rsf20Fqu3bpqEkTXk6QbuLrY+xUdQOGjdKVK1fUsH5dfTbtXbuv1Db80QHycHe3NyXMTAHeXoX1UPf7Un0/QEbkFp3SzikA8C8zf+vt7brqx4Wz7Ui4t4KZ1qdalUp2OhkAAFyZmec9KChYM6a8LVeodDDz3O/YuDzJkfRTW7M77tWAPj00sE+PW7I/IKVoZg/gpt3/8GB1fWhwmp7J7xb/pGr1WmvL1v/6/QEAANfSpPU9emLUS2m6DzOjgLnmMDMCABkZNfMAblhERIROnDxtn2fLlk3Fivqk2dk0c8mePXvePs+bN48KFsifZvsCAMAZuFLNvBnk74yvv32eK1cueXsVSrN9mUEKAwKvDmBYsGAB5c2TO832BdwMgnkAAAAAAJwMzewBAAAAAHAyBPMAAAAAADgZgnkAAAAAAJwMwTwAAAAAAE6GYB4AAAAAACdDMA8AAAAAgJMhmAcAAAAAwMkQzAMAAAAAIOfyf3kcD7fy0iPuAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Input: a five-cell profile and simple ADR data.\n", "dx = 0.25 # cm\n", "w = 0.30 # cm/s, positive means motion to the right\n", "D = 0.015 # cm^2/s\n", "sigma = 0.08 # 1/s\n", "u = np.array([1.0, 1.4, 2.0, 1.7, 1.1]) # beans/cm\n", "s = np.array([0.0, 0.15, 0.25, 0.10, 0.0]) # beans/(cm s)\n", "\n", "# Upwind advection and centered diffusion at interior faces.\n", "# Boundary face flows are set to zero here so the example stays compact.\n", "F = np.zeros(len(u)+1)\n", "for face in range(1, len(u)):\n", " u_left = u[face-1]\n", " u_right = u[face]\n", " F_adv = w * u_left\n", " F_diff = -D * (u_right - u_left) / dx\n", " F[face] = F_adv + F_diff\n", "\n", "du_dt = (F[:-1] - F[1:]) / dx + s - sigma*u\n", "\n", "print(\"Input\")\n", "print(f\"dx={dx:.2f} cm, w={w:.2f} cm/s, D={D:.3f} cm^2/s, sigma={sigma:.2f} 1/s\")\n", "print(f\"u={u}\")\n", "print(\"Output\")\n", "print(f\"face flows F={np.round(F, 4)} beans/s\")\n", "print(f\"du/dt={np.round(du_dt, 4)} beans/(cm s)\")\n", "print(f\"net amount rate={np.sum(du_dt)*dx:.4f} beans/s\")\n", "\n", "x_centers = (np.arange(len(u)) + 0.5)*dx\n", "x_faces = np.arange(len(u)+1)*dx\n", "fig, axes = plt.subplots(1, 2, figsize=(10, 3.4), constrained_layout=True)\n", "ax = axes[0]\n", "ax.step(np.r_[0, x_centers, len(u)*dx], np.r_[u[0], u, u[-1]], where=\"mid\", color=COLORS[\"blue\"], lw=2.4)\n", "ax.scatter(x_centers, u, color=COLORS[\"ink\"], zorder=3)\n", "for xf in x_faces:\n", " ax.axvline(xf, color=COLORS[\"grid\"], lw=1)\n", "ax.set_xlabel(\"x [cm]\")\n", "ax.set_ylabel(\"u [beans/cm]\")\n", "ax.set_title(\"cell-average density\")\n", "style_axes(ax)\n", "\n", "ax = axes[1]\n", "ax.axhline(0, color=COLORS[\"ink\"], lw=1)\n", "ax.bar(x_faces, F, width=0.035, color=COLORS[\"purple\"], alpha=0.85)\n", "ax.set_xlabel(\"face position [cm]\")\n", "ax.set_ylabel(\"F [beans/s]\")\n", "ax.set_title(\"face flow used by the balance\")\n", "style_axes(ax)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "5c79d0ce", "metadata": {}, "source": [ "## A Steady Diffusion-Reaction Row\n", "\n", "If advection is absent and the model is steady, the fixed-coordinate ADR equation reduces to\n", "\n", "$$\n", "-Du'' + \\sigma u = s.\n", "$$\n", "\n", "The centered finite-difference row at an interior point is\n", "\n", "$$\n", "-\\frac{D}{\\Delta x^2}u_{i-1}\n", "+\n", "\\left(\\frac{2D}{\\Delta x^2}+\\sigma\\right)u_i\n", "-\n", "\\frac{D}{\\Delta x^2}u_{i+1}\n", "=\n", "s_i.\n", "$$\n", "\n", "That row should feel familiar from L10. It is the same nearest-neighbor balance pattern: left neighbor, center cell, right neighbor, and a known source." ] }, { "cell_type": "code", "execution_count": null, "id": "d3c889cb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Input\n", "N=7, dx=0.125, D=0.040, sigma=0.300, source=1.000\n", "Output\n", "max residual magnitude = 1.11e-15\n", "center value = 1.7318\n" ] }, { "data": { "image/png": "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ZgRYpP37UhDVRqwsLbBq0155Wl7UZN38zzG0blIHpiYm3I06tC/r1qqCy9d95cHq89AIWYN8/d+HUKl8WXl2gDQjITEJ/gHB8iaIoS7ivqIkn7bHPMwcF5Mm9WsgJi4euw6ekYGRa1lHWffWwT4j4xQRFYuwiKw6jqIkzbRxA7Bp5xH5Ry9OA4oSJ43qFqwsCmnPvjx+9qq8qGDdtkPyptCiUW2MHdqNu0pH9iPpz74U2eJ3JwzE+u2H8flPa2Wg3LiehzwNT7q1L1s1qSMDscOnL2PzrqOwsDBDjSoVMKBHGw2+C/J78gzfLtmk3BBico/s33vaHvMYpIuBc0RERERExGEVREREREQKHHNMRERERJSJwTERERERUSYGx0REREREmRgcExERERFlYnBMRERERJSJwTERERERUSYGx0REREREmRgcExERERFlYnBMRERERJSJwTERERERUSYGx0REJUxoWDgae3XHz0tXKZddvnoD1eq2xvFT5zTaNyIiTTNIT09P13QniIioeB05dhoTps7ElnW/oUold/QYMBLt27bCnA/f5a4gohKNwTERUQn16YJvcOqMD+rWqYlbd+7h700rYG5mpuluERFpFINjIqISKiEhAZ37DMfTp0HYsXklalavpukuERFpHMccExGVUP6PAxEUHIK09HQEBD7TdHeIiLQCM8dERCVQUlIy+gwZi1o1q6FKpYpY/sd67N2+FmUcHTTdNSIijWJwTERUAn3xzWLs3n8Ye7athZWlBYaOngJrK0us+PU7TXeNiEijOKyCiKiEOXP+Ilas2YAfvpoDG2srGBoayvs+l65izYYtmu4eEZFGMXNMRERERJSJmWMiIiIiokwMjomIiIiIMjE4JiIiIiLKxOCYiIiIiCgTg2MiIiIiokwMjomIiIiIMjE4JiIiIiLKxOCYiIiIiCgTg2MiIiIiokwMjomIiIiIMjE4JiIiIiJChv8DQTosJQ3REZwAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Input: solve a small steady diffusion-reaction boundary-value problem.\n", "length = 1.0\n", "num_interior = 7\n", "D = 0.04\n", "sigma = 0.30\n", "source_strength = 1.0\n", "left_value = 0.0\n", "right_value = 0.0\n", "\n", "dx = length/(num_interior + 1)\n", "x = np.linspace(dx, length-dx, num_interior)\n", "main = (2*D/dx**2 + sigma) * np.ones(num_interior)\n", "off = (-D/dx**2) * np.ones(num_interior-1)\n", "A = np.diag(main) + np.diag(off, 1) + np.diag(off, -1)\n", "b = source_strength * np.ones(num_interior)\n", "b[0] += D/dx**2 * left_value\n", "b[-1] += D/dx**2 * right_value\n", "u_interior = np.linalg.solve(A, b)\n", "residual = A @ u_interior - b\n", "\n", "x_plot = np.r_[0.0, x, length]\n", "u_plot = np.r_[left_value, u_interior, right_value]\n", "\n", "print(\"Input\")\n", "print(f\"N={num_interior}, dx={dx:.3f}, D={D:.3f}, sigma={sigma:.3f}, source={source_strength:.3f}\")\n", "print(\"Output\")\n", "print(f\"max residual magnitude = {np.max(np.abs(residual)):.2e}\")\n", "print(f\"center value = {u_interior[len(u_interior)//2]:.4f}\")\n", "\n", "fig, ax = plt.subplots(figsize=(7, 3.4), constrained_layout=True)\n", "ax.plot(x_plot, u_plot, color=COLORS[\"purple\"], marker=\"o\", lw=2.2)\n", "ax.set_xlabel(\"x\")\n", "ax.set_ylabel(\"u\")\n", "ax.set_title(\"steady diffusion-reaction balance\")\n", "style_axes(ax)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "1d94ced4", "metadata": {}, "source": [ "## What To Carry Forward\n", "\n", "- ADR is a balance law with three mechanisms: carry, spread, create/destroy.\n", "- Units decide whether a term belongs in the equation.\n", "- The integral balance is often the safest starting point because it counts an amount in a cell.\n", "- The differential equation appears when we shrink the fixed cell.\n", "- Finite differences and finite volumes are not just formulas for derivatives. They are numerical ways to enforce the same balance on a grid.\n", "\n", "Next, we will use this kind of model as a reason to solve differential equations, first symbolically and then numerically." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "name": "python", "pygments_lexer": "ipython3" } }, "nbformat": 4, "nbformat_minor": 5 }