{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Problem 1\n", "When $A -> B$ as simple reaction with the rate $-r_A = k C_A$ and the solution for A could be found in this way:\n", "$\\dfrac{d C_A}{dt} = -k C_A(t)$\n", "$C_{A0} = 10$ mole/L\n" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/bazilevs/anaconda3/lib/python3.6/site-packages/matplotlib/figure.py:2022: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\n", " warnings.warn(\"This figure includes Axes that are not compatible \"\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt # plotting modules\n", "%matplotlib inline \n", "plt.style.use('presentation') # just have in your script for prettier plotting\n", "# insted of 'presentation' you can use 'ggplot'\n", "import numpy as np # our matlab-like module\n", "from scipy.integrate import odeint # integration of ODEs so you don't have to write your finite difference yourself\n", "\n", "#step 1 definition of the function:\n", "\n", "def f(C_A, t):\n", " dcadt = - k*C_A\n", " return dcadt\n", "\n", "k = 1\n", "C_A0 = 10. \n", "time_start = 0.\n", "time_finish = 10000. \n", "N_points = 100\n", "time_array = np.linspace(0, 10., N_points)\n", "\n", "C_analyt = C_A0*np.exp(-k*time_array)\n", "\n", "C_num = odeint(f,C_A0, time_array)\n", "\n", "plt.plot(time_array, C_analyt, 'r-')\n", "plt.plot(time_array, C_analyt, 'go', alpha=0.8, fillstyle='none') # alpha - 80% transparency\n", "# fillstyle - none - means no filling of the circles\n", "plt.xlabel('t, s')\n", "plt.ylabel('$C_A(t)$, mole/L')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Now the same thing for B\n", "$ -(r_B) = -(-r_A) = - k C_A$\n", "so the design equation will have an additional equation:\n", "\n", "$\\dfrac{d C_B}{dt} = k C_A(t)$\n", "$C_{B0} = 0$ mol/L\n" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(100, 2)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/bazilevs/anaconda3/lib/python3.6/site-packages/matplotlib/figure.py:2022: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\n", " warnings.warn(\"This figure includes Axes that are not compatible \"\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt # plotting modules\n", "%matplotlib inline \n", "plt.style.use('presentation') # just have in your script for prettier plotting\n", "# insted of 'presentation' you can use 'ggplot'\n", "import numpy as np # our matlab-like module\n", "from scipy.integrate import odeint # integration of ODEs so you don't have to write your finite difference yourself\n", "\n", "#step 1 definition of the function:\n", "\n", "def f(C_list, t):\n", " C_A = C_list[0]\n", " C_B = C_list[1]\n", " dcadt = - k*C_A\n", " dcbdt = k*C_A\n", " return [dcadt, dcbdt]\n", "\n", "k = 2\n", "C_A0 = 10. \n", "C_B0 = 0.\n", "time_start = 0.\n", "time_finish = 10. \n", "N_points = 100\n", "time_array = np.linspace(0, 10., N_points)\n", "\n", "C0_list = [1, 0.]\n", "C_num_list = odeint(f, C0_list, time_array)\n", "\n", "print(C_num_list.shape)\n", "\n", "C_A_num = C_num_list[:,0]\n", "C_B_num = C_num_list[:,1]\n", "\n", "plt.plot(time_array, C_A_num, 'r--', fillstyle='none', label='$A$')\n", "plt.plot(time_array, C_B_num, 'g--', fillstyle='none', label='$B$') \n", "\n", "plt.xlabel('t, s')\n", "plt.ylabel('$C(t)$, mole/L')\n", "plt.legend()\n", "plt.show()\n", "\n", "# C_analyt = C_A0*np.exp(-k*time_array)\n", "\n", "# C_num = odeint(f,C_A0, time_array)\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 1.00000000e+01, 1.33716030e-08, -3.62401330e-11, -7.02789445e-12,\n", " -7.10567033e-13, -4.29853336e-14, -4.01868466e-14, -3.73883596e-14,\n", " -3.45898726e-14, -3.17913856e-14, -2.89928986e-14, -2.61944116e-14,\n", " -2.33959246e-14, -2.05974376e-14, -1.77989506e-14, -1.50004636e-14,\n", " -1.22019766e-14, -9.40348960e-15, -6.60500260e-15, -3.80651560e-15,\n", " -1.00802861e-15, -1.31043856e-16, -1.22262822e-16, -1.13481787e-16,\n", " -1.04700753e-16, -9.59197192e-17, -8.71386851e-17, -7.83576509e-17,\n", " -6.95766168e-17, -6.07955827e-17, -5.20145486e-17, -4.32335144e-17,\n", " -3.44524803e-17, -2.56714462e-17, -1.68904121e-17, -8.10937793e-18,\n", " -4.29817942e-19, -4.27054803e-19, -4.24291663e-19, -4.21528523e-19,\n", " -4.18765383e-19, -4.16002243e-19, -4.13239104e-19, -4.10475964e-19,\n", " -4.07712824e-19, -4.04949684e-19, -4.02186544e-19, -3.99423405e-19,\n", " -3.96660265e-19, -3.93897125e-19])" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "C_num_list[:,0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Problem 2\n", "\n", "A system of ODES\n", "\n", "$ A + B \\to C$, $k_1 = 1$ L/(mol s)\n", "\n", "$ B + C \\to D$, $k_1 = 1.5$ L/(mol s)\n", "\n", "with initial concentrations \n", "$C_{A0} = 1$ mol/L\n", "$C_{B0} = 1$ mol/L\n", "$C_{C0} = 0$ mol/L\n", "$C_{D0} = 0$ mol/L\n", "\n", "1. Calculate concentration of each component\n", "2. Calculate the selectivity parameters $S = \\dfrac{C}{(C+D)}$, S(t=0) = 1.0\n" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(100, 4)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/bazilevs/anaconda3/lib/python3.6/site-packages/matplotlib/figure.py:2022: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\n", " warnings.warn(\"This figure includes Axes that are not compatible \"\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt # plotting modules\n", "%matplotlib inline \n", "plt.style.use('presentation') # just have in your script for prettier plotting\n", "# insted of 'presentation' you can use 'ggplot'\n", "import numpy as np # our matlab-like module\n", "from scipy.integrate import odeint # integration of ODEs so you don't have to write your finite difference yourself\n", "\n", "#step 1 definition of the function:\n", "\n", "def f(C_list, t):\n", "\n", " k1 = 1.\n", " k2 = 1.5\n", " C_A = C_list[0]\n", " C_B = C_list[1]\n", " C_C = C_list[2]\n", " \n", " r1 = k1*C_A*C_B\n", " r2 = k2*C_B*C_C\n", "\n", " dcAdt = -r1\n", " dcBdt = -r1 - r2\n", " dcCdt = r1 - r2\n", " dcDdt = r2\n", " \n", " return [dcAdt,dcBdt,dcCdt,dcDdt]\n", "\n", "k1 = 1.\n", "k2 = 1.5\n", "\n", "C0_list = [1.0, 1.0, 0.0, 0.0]\n", "\n", "time_start = 0.\n", "time_finish = 3. \n", "N_points = 100\n", "time_array = np.linspace(0, 3., N_points)\n", "\n", "\n", "C_num_list = odeint(f, C0_list, time_array)\n", "\n", "print(C_num_list.shape)\n", "\n", "C_A_num = C_num_list[:,0]\n", "C_B_num = C_num_list[:,1]\n", "C_C_num = C_num_list[:,2]\n", "C_D_num = C_num_list[:,3]\n", "\n", "plt.plot(time_array, C_A_num, 'r-', label='$A$')\n", "plt.plot(time_array, C_B_num, 'g-', label='$B$') \n", "plt.plot(time_array, C_C_num, 'm--', label='$C$') \n", "plt.plot(time_array, C_D_num, 'k--', label='$D$') \n", "\n", "plt.xlabel('t, s')\n", "plt.ylabel('$C(t)$, mole/L')\n", "plt.legend()\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/bazilevs/anaconda3/lib/python3.6/site-packages/matplotlib/figure.py:2022: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\n", " warnings.warn(\"This figure includes Axes that are not compatible \"\n" ] }, { "data": { "image/png": "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yZMn07t370Db5MmTad++PTt27PCwMhGJJF4H3dvABmCymXUxs87AZGAjMDJzIzOrZ2bpZvZkLvu4Ft/pT522DEKlS5dmzJgxPPTQQ4G2+fPnc/HFF5OSknKSniIihcPToHPO7QcS8T2Z/H1gHLAeSHTO/Z5lUwOiyL3e2/DdpanJpINUiRIleO655xg+fDhmvvuM1qxZQ9u2bZk3b57H1YlIuLNIvhMuISHBJSUleV1GRJk4cSI333wzaWm+6UhLly7N6NGjufHGGz2uTERCiZklO+cS8rOt16cuJcJ069aNr7/+mrPPPhvwzaJy00038fjjj5ORkeFxdSISjhR0UuwuvPBCvvvuO5o2PTb5zTPPPEO3bt34/fffT9JTRKTgFHTiidjYWL799ttsww8mTZrExRdfzE8//eRhZSISbhR04pkKFSowdepU7r///kDbsmXLSEhI0KN+RKTQKOjEU1FRUbz00ku8++67lC5dGoBdu3Zx1VVX8Y9//EPThonIaVPQSVDo27cvs2fPpmbNmgA453jssce4/vrr2b17t8fViUgoU9BJ0Gjbti3ff/897dq1C7RNmjSJ888/n8WLF3tYmYiEMgWdBJVq1arx5ZdfMnDgwEDbTz/9xEUXXcTIkSN1KlNECkxBJ0GnVKlSvPLKK4wfP56YmBgADh06RP/+/enVqxd79uzxuEIRCSUKOglaPXr0ICkpiZYtWwbaxo8fT3x8PAsWLPCwMhEJJQo6CWrnnHMOCxYs4O677w60bdiwgXbt2vHss8/q+XYikicFnQS9M844g7feeovx48dToUIFANLT0/nb3/7GFVdcwYYNG7wtUESCmoJOQkaPHj1YsmQJF198caBt7ty5tGzZkjFjxuhGFRHJlYJOQkpsbCyzZ89myJAhREVFAbBv3z5uu+02rrvuOrZt2+ZxhSISbBR0EnJKlizJE088wbx584iLiwu0T548mWbNmjF+/HgPqxORYKOgk5B14YUXsnjxYu69995A244dO+jZsyfdu3dn69atHlYnIsFCQSchrXz58rz++uvMmDGDOnXqBNonTpxI06ZNee+993TtTiTCKegkLLRv355ly5Zx++23B9p27dpFnz596NSpE+vWrfOwOhHxkoJOwkaFChV45513mDlzJvXr1w+0z5gxg+bNm/OPf/yDI0eOeFihiHhBQSdh58or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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "S = np.ones(len(C_C_num))\n", "S[1:] = C_C_num[1:]/(C_C_num[1:] + C_D_num[1:])\n", "plt.plot(time_array, S, 'k-',label='selectivity')\n", "plt.xlabel('t, s')\n", "plt.ylabel('$S$')\n", "plt.legend()\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "here are more advanced equations:\n", "https://www.youtube.com/watch?v=8-V5T40aMEc\n", "https://www.youtube.com/watch?v=BRe7qKIAa34\n", "\n", "zombie apocalypse:\n", "\n", "http://scipy-cookbook.readthedocs.io/items/Zombie_Apocalypse_ODEINT.html\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Problem 4: Zombie apocalypse:\n", "\n", "Imagine we live in the world of where a part of human population is infected and could take over the world.\n", "\n", "S - Living people are Susceptible (S) victims, so they could be infected and become a zombie \n", "\n", "Z - Number of zombies, they could come from either infected people or 'ressurcted' dead people\n", "\n", "R - rate by which people die\n", "\n", "with the following notations:\n", "```\n", "S: the number of susceptible victims\n", "Z: the number of zombies\n", "R: the number of people \"killed\"\n", "P: the population birth rate\n", "d: the chance of a natural death\n", "B: the chance the \"zombie disease\" is transmitted (an alive person becomes a zombie)\n", "G: the chance a dead person is resurrected into a zombie\n", "A: the chance a zombie is totally destroyed\n", "```\n", "\n", "There are different reactions happening at the same time: \n", "\n", "\n", "**Rate of accumulation of the living people (Susceptible victims)**\n", "\n", "birth rate -> S (something is born -> S zeroth order reaction)\n", "\n", "S -> Infected -> Z ( S + Z -> Z second order reaction with a constant B => $-r_S = B \\cdot S \\cdot Z$ )\n", "\n", "S -> Dead ( S -> Dead, first with the rate $-r_S = d \\cdot S$) \n", "\n", "So the corresponding design equation will look like:\n", "\n", "$\\dfrac{\\delta S}{dt} = P - B \\cdot S \\cdot Z - d \\cdot S$\n", "\n", "\n", "**Rate of accumulation of zombies**\n", "\n", "S -> Infected -> Z ( S + Z -> Z second order reaction with a constant B => $-r_S = B \\cdot S \\cdot Z$ )\n", "\n", "Dead person -> Z (resurrection of a dead person into a zombie, first order reaction with a constant R)\n", "\n", "Z -> 0 (Killing of zombies by living people second order reaction S + Z -> 0 $-r_Z = A \\cdot S \\cdot Z$\n", "\n", "$\\dfrac{\\delta Z}{dt} = B \\cdot S \\cdot Z + G \\cdot R - A \\cdot S \\cdot Z$\n", "\n", "**Rate of dieing** \n", "\n", "S -> Dead\n", "\n", "S + Z -> 0\n", "\n", "Dead -> Resurrected \n", "\n", "$\\dfrac{\\delta R}{dt} = d \\cdot S + A \\cdot S \\cdot Z - G \\cdot R$\n", "\n", "\n", "Initial parameters\n", "```\n", "P = 0 # birth rate\n", "d = 0.0001 # natural death percent (per day)\n", "B = 0.0095 # transmission percent (per day)\n", "G = 0.0001 # resurect percent (per day)\n", "A = 0.0001 # destroy percent (per day)\n", "```" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/bazilevs/anaconda3/lib/python3.6/site-packages/matplotlib/figure.py:2022: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\n", " warnings.warn(\"This figure includes Axes that are not compatible \"\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAboAAAEYCAYAAAAqIzNgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xd4VFX6wPHvm0JCqKF3QkB6ACEgoCCiLlZsCCv2rmtdFVdlVXQtq+LadxVl9WdZRcWC7q5iQRQXBUKTiPQW6VVCCGnv7487SSbJECaTmbmTyft5nnnm3nPPufedeQLv3HLOEVXFGGOMiVYxbgdgjDHGhJIlOmOMMVHNEp0xxpioZonOGGNMVLNEZ4wxJqpZojPGGBPVLNEZY4yJapbojDHGRDVLdMYYY6JanNsBRJpmzZppSkqK22EYY4ypREZGxk5Vbe5PXUt05aSkpLBgwQK3wzDGGFMJEdngb127dGmMMSaqWaIzxhgT1SzRGWOMiWquJzoRGSEi6uO1t1y9ZBF5RUR2isgBEflSRNJ87C9RRJ4QkS0iclBE5orI8PB9ImOMMZEkkh5GuRmY77VeULwgIgLMADoBNwF7gLuBWSLST1WzvNpNBU4HJgBrgRuAz0VkiKouDu1HMMYYE2kiKdEtV9UfDrNtNHAcMFJVZwGIyFxgHXAnTpJERPoC44ErVPVVT9lsIBN40LMfY4wxtUgkJbrKjAY2Fyc5AFXdJyKfAGfhSXSeevnANK96BSLyDnCXiCSo6qFQBvqnL/7E8p3LAXBOREGQMuvFZXcMvYOh7YeWaX/Dv29ge872Mu18tQV4YMQDdGvWrUz7yz66jPyifJ/HLb/+xMlP0KJei5K2B/IOcNN/b6pwnMMd/4XTX6BObJ2S8s37N/Pg7Acr1PN1/KT4JB4/+fEysa/YuYK/z//7YY/nvZ9W9Vsx4dgJZdpnbM5gWua0Cu18xZDSOIVr068t0z5zeyYZWzJIiE0gIS6BxLhEGiU0IrluMsmJyTRObExCXALGmJolkhLdWyLSDNgLfA7cpaobPdt6Act8tMkELhGR+qqa7am3TlVzfNSrA3TxLIfMdxu/Y27WXL/qjk8bX6HsP6v/w/q96/1qf9Ogm+hG2UT39rK3ySvM86v9pOMnQb3S9UOFh3h18at+tQV47rTnyqzvPriblzJe8qttcmJyhUS3Yd8Gnp33rF/tezXvVSHRLdu+jCf+94Rf7U9IOaFCovvPqv9w55d3VtqublxdWtRrwehuo3n2VP9iNca4y/WHUYB9wJPAVcBI4C/AScBcESk+3WiCc1+uvN2e92Q/6zXxFYCIXCMiC0RkwY4dO6r+CVzifdbjyvFx9/jV4evM7FDhkU/2DxYcZMO+DezJrfhn9sT3T5D2jzRu+s9NzFgxg/2H9gclVmNM9bh+Rqeqi4BFXkWzReRbYB7OJck/AwKoj+bl/6f1t175GKYAUwDS09N9tffbYyc9xp7cPag6u1FPOMXr3mWD2g6q0P75U58nJz+npM7h2gIc1eSoCu1fO+s1irSownF9xdEsqVmZtvXi6zF19NRKj+ldHhdT9s+nTYM2/OP0f1R63OL1hNiKiaZb0248Peppn8crv5+mSU0rtB/QZgCPnfTYYeP3LuvcpHOF9r1b9OaiPhdxqOAQhwoPkZOfw77cfezJ3cPe3L3sObiHQi0EoGOjjhXaL9iygGXbl7Fs+zKen/88iXGJnNXtLC7pewmjOo8iNia2QhtjTOiJ9z/+SCIiPwObVHWUiPwI7FXVUeXq3Ak8BjRQ1WwRmQb0U9Vu5eqNxblv11tVK710mZ6erjYEmPFFVcnOy2Zr9laS4pNo27Btme09XujBLzt/8dm2e7Pu3HXsXVzY58IKPxCMMVUnIhmqmu5P3Ui4dHk43mdnmTj338rrCWz03J8rrtdJRJJ81MsDVociUFM7iAgNEhpwVNOjKiQ5gPlXz+eLi7/gzqF3ktaibBfPX3b+wmUfX8bAlwfyQ9bhHi42xoRCRCY6EUkHugI/eopmAG1F5HivOg2BMz3b8KoXD5zvVS8OGAfMDPUTl6Z2q1+nPielnsRjJz/G0uuXsvS6pdw+5HYaJjQsqbN462KGTB1iyc6YMHL90qWIvIXTH24hzhOXR+N0Bs8B+qvqThGJAeYA7XE6ghd3GO8D9FXVTV77ewcY5am3DrgeOAMYqqoLjxSPXbo0wbY3dy/P/PAMf/3+r+QW5DI+bTxvnvOm6w8TGVOTVeXSZSQkuruBC4COQBKwFfgvcL+qbvGq1wSYDJwNJAJzgdtUdUm5/dUFHsbpON4YWAL8SVW/8SceS3QmVNbtWcdj3z/G5N9Npn6d+m6HY0yNVqMSXaSxRGfckFuQS2JcotthGFNjRMvDKMZEPVXlnq/uYfirwzmQd8DtcIyJSpbojHGJqnLljCt5dM6jzN88nytmXIFdYTEm+CzRGeMSEWFgm4El6+9mvsvURVNdjMiY6GSJzhgXXT/weq7uf3XJ+s3/vZmVu1a6GJEx0ccSnTEue/qUp+nZvCfgjKV5w39usEuYxgSRJTpjXJYUn8Sb57xJjDj/HL9c+yXv/fyey1EZEz0s0RkTAY5ufTQ3DryxZP22z2/jYP5BFyMyJnpYojMmQjx4woO0rNcSgF/3/8qUjCkuR2RMdLBEZ0yEaJTYiInDJpasPzrnUXLyy88hbIypKkt0xkSQqwdcTdsGzswIcTFx9gSmMUFgE2MZE0ES4xJ57KTH2H1wN1cPuNqGBTMmCCzRGRNhLuxzodshuGfbNti5E/bsKX3l5EBurvM6eLB0+ZproFe5aSpvuAG2b4eiIigsdF7Fy0VFTp3irhvPPAM9e5ZtP2oUFBSUrVes/Prbb0OrVqXre/fC6NGHr1/e119DfHzp+po1cNlllbcp1qgRfPpp2bIff4Tbb/evfWoqvP562bL//AceecS/9oMGwd/+Vrbs9ddhip/3lU89FSZOPHK9ILFEZ4wJn/x8WL4cfvoJjjsOOnYsu/3EEyEz0799jRxZMdF98gls2uS7fnn79lUsmzXLidEfh8pNb1lQAN99519bqJgIc3Jgzhz/2jZtWrFs7174/nv/2vv67Nu3+9++Xr2KZVlZ/rfv0sW/ekFiic4YE1rLljkJaNYs5z/CHM8DNlOnwhVXlK2bnOz/fnNzK5bFxgYep4laluiMiVD5hfnMXDOTN5a+QdemXXnwhAfdDsl/u3fDyy/DG28c/gxt6dKKZZ07w44d0KSJk/SSk52zh7p1ITHReRUv9+tXsf2zzzqXN2NinKRX/IqJcV7Fk92KQI8eFdt/9lnZM63yk+N6r7dsWXZbo0Ywe/bh65cXV+6/39RU+Pbbw9evrC04lxP9PaNMSqpYduqp/rdv3Lhi2cUXw/Dh/rVv0cK/ekFi89GVY/PRmUjx2erPOPWtUwFo06ANG2/dSGxMhJ+x7NoFDz3k3KvJOUzXiA4dnCR1zjn+35MyppyqzEdnZ3TGRKiTUk+iRb0WbD+wnc37N/P1uq85ufPJbodVuSefhKefLltWty6ccQacfjqMGFHxvpwxIWb96IyJUHExcVzQ+4KS9Td/etPFaPx0553QrJmz3KcPvPqq85DDu+/CpZdakjOusERnTAS7uM/FJcsfLP+A3AIfD2BEksaN4YUX4MMPYfFi59Jk/fpuR2VqOUt0xkSw/q37c1STowDIzsvm63VfuxyRl1mzKl6mBBg7Fs4+u/IHMYwJI0t0xkQwEeGsbmeVrH/0y0cuRuNl7lw480z44x+dy5LGRDBLdMZEuLO7n12yPGPFDIq0yMVogJUr4bTT4MABZ/2ee/zvZG2MCyzRGRPhBrcbTPOk5gBsO7CNH7N+dC+Y7Gw491xnFA6A5s2doai8h7IyJsJYojMmwsXGxDK6W+kYiq5evrzuutIO4AkJzviI3bu7F48xfrBEZ0wNUJzoBGFz9mZ3gvjoI3jrrdL1F1+EdL/66xrjKuswbkwNMLLTSKaNmcbITiNpltQs/AHs3Qt/+EPp+iWX2KgmpsaIuDM6EflMRFREHipXniwir4jIThE5ICJfikiaj/aJIvKEiGwRkYMiMldE/ByAzZjIVL9Ofcb2GutOkgO4917YssVZbtkSnnrKnTiMCUBEJToRuQDo66NcgBnAKcBNwHlAPDBLRNqVqz4VuBq4DzgD2AJ8LiI+RoA1xhzRqlXOZcpiL7zgDLpsTA0RMYlORBoDTwG3+dg8GjgOuFhV31bVzzxlMcCdXvvoC4wH/qiqL6vqV8BYYCNQg4Z+NyaCfPtt6Yj+w4c7T10aU4NETKIDHgcyVfVtH9tGA5tVdVZxgaruAz4BzipXLx+Y5lWvAHgHGCUiCaEI3JhwyS/MZ87GOdw/637W7lkbnoNeeaUzp9zZZ8Pjj9uIJ6bGiYiHUUTkOOASfFy29OgFLPNRnglcIiL1VTXbU2+dqpafHyQTqAN08SwbUyNd9OFFvJvpjETSpkEbrk2/NjwH7t7dGb/SmBrI9TM6EYkHXgImq+qKw1RrAuzxUb7b857sZz2fNxZE5BoRWSAiC3bs2OFf4Ma44Ji2x5Qsf7fRz0kyjanlXE90wJ+AusDDldQRwNcMseWvofhbrwxVnaKq6aqa3rx588qqGuOq4zocV7I8Z+McFyMxpuZwNdGJSAdgInAvkCAijT0PpeC1HotzRubrbKz4TK74LO5I9Xb72GZMjXF0q6NJik8CYMO+DWzatyk0B8rOhr59ndnCs7JCcwxjwsTtM7pUIBF4EydZFb8A7vAsp+HcV+vlo31PYKPn/hyeep1EJMlHvTxgdVCjNybM4mPjGdxucMl6yM7qpk2DpUud/nOnnhqaYxgTJm4nusXACT5e4CS/E3CS0wygrYgcX9xQRBoCZ3q2FZuB07/ufK96ccA4YKaqHgrZJzEmTIZ1GFayHLL7dK+8Urp8+eWhOYYxYeLqU5equhf4pny50z+cDar6jWd9BjAXeFNEJuCc6d2Nc+/tca/9LRaRacDTnodc1gHXA52AC0P5WYwJF+/7dCFJdMuWwQ8/OMvx8XDxxZXXNybCuX1G5xdVLcIZ5eQL4O/Ah0AhcIKqlr9JcTnwKvAQ8G+gPXCKqi4MX8TGhM7gdoOJEeefbub2TPYf2h/cA7z2Wuny2Wc7U/EYU4NFZKJTVVHVP5cr262qV6hqE1VNUtUTVXWJj7YHVfU2VW2lqomqekzxmaEx0aB+nfr0btEbAEXJ2JIRvJ2rlp0x3AZuNlEgIhOdMaZyA9sMLFme/+v84O34xx9hk+ciSXIynHRS8PZtjEsiYmQUY0zVnJx6Mnty9zCwzUBGdRkVvB17n82dcw7UqRO8fRvjEkt0xtRA43qPY1zvccHdaVERvPde6frYscHdvzEusUuXxhjH/PmlncObNIGRI92Nx5ggCfiMzjNiSTecUUdifdVR1W8D3b8xJsy2boXWrZ0JVkePdroWGBMFAkp0InIv8Eeg0RGq+kyAxpjgKiwqJDammv/czjoLzjwTFi+GxMTgBGZMBKhyohORO4EHgH3AG8AmoCDIcRljjmDlrpU89O1DzN88n87Jnfl0/KfV32lMDPTvX/39GBNBAjmjuxr4FeivqjanjTEuemPpGwDsytmFqhaPKmSM8RLIwyjtgY8syRnjri5NutCgTgMAduTsYEv2FpcjMiYyBZLotmHdEoxxXYzE0Kdln5L1JVsrDBTkn8JCuOIKZyDnNWuc0VGMiSKBJLp3gZNFJCHYwRhjqqZfq34ly4u3Lg5sJ4sWwauvwtVXw7BhR65vTA0TSKK7D9gCvC8inYIcjzGmCvq27FuyvHhbgIlu1qzS5RNOALvPZ6JMIJcgM3HmfGsDnCYi+4C9PuqpqnauTnDGmMp5n9EFfOmyfKIzJsoEkuhicLoTbPQq8/UT0H4WGhNivVv0JkZiKNIiVu5ayYG8A9SrU8//HeTnw3dec9pZojNRqMqJTlVTQhCHMSYAdePr0q1pN5bvXI6i/LT9Jwa3G+z/DjIyIDvbWW7fHlJTQxOoMS6ysS6NqeGqdfnS7s+ZWqDaiU5EGopIexFpGIyAjDFV4/1Ayqrdq6rW2O7PmVog0LEuY4EJwFVAJ6/ydcArwGRVtWHBjAmD83udz9Gtj6Zvy760rN/S/4aFhTB3bun6iBFBj82YSBDIWJd1gM+A4wHFGetyC9AaSAEeBk4Rkd+pal7wQjXG+JKanEpqcgD31pYtK70/16YNdOwY3MCMiRCBXLq8DRgB/BvooaopqjrE85BKN+ATYJinnjEmUnmfzQ0ZYvfnTNQK5NLleGAZcLaqFnlvUNU1InIusBi4EPhr9UM0xoTEmDHQsqWT8NLT3Y7GmJAJJNF1AZ4rn+SKqWqRiPwXuKlakRljqiQ7L5ufd/xM3bi6pLVMO3KDZs3gnHOclzFRLJBLl3lA/SPUqQfkB7BvY0wAXl/yOg0ebcAxrxzD4/973O1wjIkogSS6pcAYEWnua6OINAPGAAGOR2SMqapOjUuHnc3cnuliJMZEnkAS3fNAc2CeiFwpIqkiUldEOonI5cCPnu3PBzNQY8zh9WrRq2R5+c7lFBYVVt7g118hzx6KNrVDlROdqr6L85BJR2AKsArIBlbj9KHrBDzhqWeMCYMmdZvQun5rAHILclm7Z23lDS6+GBo2hGOPhaVLwxChMe4JaGQUVb0HGAr8E1gErPW8/xM4VlXvClqExhi/eJ/VLdu+7PAVi4pgwQI4dAj+9z9ITg5DdMa4J+AhwFT1B1W9WlXTVfUoz/vVqjr3yK1LicgoEflaRLaKyCERyRKRd0WkZ7l67UXkfRHZJyK/icgHItLBx/6SReQVEdkpIgdE5EsR8eMRNGNqtt7Ne5csV5roVq+G/fud5RYtoF27EEdmjLsCGgIsyJoAGcDfgR1AB+Au4AcRSVPVDSKSBHwNHAIuxRmR5SFgloj0UdUDACIiwAycy6c3AXuAuz31+qlqVng/mjHh07tFaaLL3FHJAykLFpQuDxhgHcXDJD8/n6ysLHJzc90OpUZJTEykXbt2xMfHB7yPIyY6r7OmX1W10NdZ1OGo6kY/6rwNvF3umPOAX3Ce3nwSuBpIBbqp6mpPnaU49wevBf7maToaOA4YqaqzPPXmAuuAO4Gb/Y3dmJrG70uXGRmlywMGhDAi4y0rK4sGDRqQkpKC2I8Lv6gqu3btIisri06dOh25wWH4c+lyPU6i6Fxu/UivI9wNr9Quz3txX7zRwA/FSQ5AVdcB3wNnebUbDWwuTnKeevtwhiXzrmdM1OnZvPRq/4pdK8grPMxTlZboXJGbm0vTpk0tyVWBiNC0adNqnwX7c+nydZxLhfvKrQeVZ0aEWJynOf8KbAXe8WzuBXzso1kmcL7Xei+c4cl81btEROqranbQgjYmgjRMaEiHRh3YuG8jBUUFrNq1qsxZHuA8iLJwYem6JbqwsiRXdcH4zo6Y6FT1ssrWg+hHoPhf3Wqcy4/bPetNcO63lbcb8H5krAnOGaevenjqVkh0InINcA1Ahw5+X5k1JuIU36fr0awHBUU+ZsryfhCleXN7EMXUCpE0w/jFwGCcQaN/A74QkRSv7b7OIsunevGzXhmqOsXz1Gh68+Y+B3wxpkaY8fsZbLh1A59d9Bl9W/WtWKH8ZUs7w6hV6tevOHrjiy++yOuvv15pu6uuuoqff/45VGGFXCDz0RUCk1T1L5XUmQg8oKp+719Vl3sWf/QMCr0e5+nL63DO5pr4aJZM2TO93ZXUA99nhcZEjdiY2MoreCc6m7HAANddd90R67zyyithiCR0AjmjE45whuRVLyCquhfn8mUXT1Emzv238noC3j8zKqu30e7PmVpPFRo1cpbt/pyrJn0zCXlA/Hpd88k1Fdpf88k1ZepM+mZSYHFMmsTkyZNZvnw5gwYNKilfv349ffr0AWDEiBEs8HRLqV+/PhMnTqRv374MHjyYbdu2AbBmzRoGDx7MwIEDue+++3yePbolVJcuk4GAH5MRkZZAd2CNp2gGMFhEUr3qpADHerbhVa+tiBzvVa8hcGa5esbUTk8+CXv2OPfqTjzR7WhMBOnRowd5eXmsXes8MD9t2jTGjh1bod6BAwcYPHgwS5YsYfjw4bz88ssA3HLLLdxyyy3Mnz+fNm3ahDX2I/Er0YnI8OKXpyjFu8zrdYKIXIoz6eoKP/f9oYjcKyJnedpfC8wGCnD60AG8jHMp82NPvdE4T2FuAl7y2t0MYC7wpoj8XkRGecoEsLlLTK0wZ+Mcnp/3PDf8+wY2799csYIIdO4MDRqEPzgT0caOHcu77zrDFE+bNo1x48ZVqFOnTh3OOOMMAAYMGMD69esBmDt3Luef7zwEP378+PAE7Cd/76F9Q+lDHoozOsmlh6krQBFwu5/7/gEY66lfByd5fQM8qqrrAVT1gIiMBJ4C3vAc4yvgVu/LkZ5JX88AJuOMtJKIk/hOUNVNfsZjTI12z1f38N3G7wA4o+sZtGkQWb+ujWPSiElMGjEp4PZTzpzClDOnBC8gYNy4cZx//vmce+65iAhHHXVUhTrx8fElj/zHxsZSUODj6d4I42+iexAnwQlwH04imu2jXiFOZ+9ZqvqLPztW1ceAx/yotxE4z496u4ErPC9jap3uzbqXJLpfdv7CqUed6nJEpqbo3LkzsbGx/OUvf/F5NleZwYMHM336dMaNG8c777xz5AZh5FeiU9VJxcueS5MfqeqzoQrKGBO4Hs16lCwv37m8dMNrr0FsLPTpAz17QjXGDjQ1U05ODu28+k7edtttFeqMGzeOCRMmsG7duirt++mnn+aiiy7iySef5PTTT6dR8UNPEaDK3QtUNfABx4wxIdej+WES3V/+Ap4HDVi0CPr1C3Nkxm1FRUVHrHPHHXdwxx13lCn75ptvSpazs0sfXh8zZgxjxowBoG3btvzwww+ICO+88w7pEdR9JRJmLzDGBJH3Gd0vOz13EPbvL01ysbHQo4ePlsYELiMjgxtvvBFVpXHjxvzzn/90O6QSASU6z3Q4Y4BRQFsgwUc1VVV7ftmYMGvfqD1J8Unk5OewM2cnO3N20mzZqtIK3btDgq9/ssYEbtiwYSxZssTtMHwKZGSUBOA/wAhKh9zy7hyuHH4oLmNMiMVIDN2admPR1kUALN+xnGFLvcZV8HQCNqa2CKTD+J+AE3AmPm2Ok9QmAW1wxqnchDPrQJ3ghGiMqSrv+3S/7PwFfvqpdKMlOlPLBJLozgcWqur9qlo8bxyqulVV3wFGAmcAtwYpRmNMFXVv2r1kefnO5bB0aelGS3Smlgkk0XXGmfC0mAIlzymr6lrg38Bl1YrMGBOwMk9e7vjZEp2p1QJJdPmUHcdyP84lTG8bgFSMMa7o16of43qN4/7j7+eOduNgn2fe5ORkaNvW3eCMaz788EP69etX5hUTE8N///vfau33sssu4/33369QvmDBAm6++eZq7TsYAnnqMgvnSctiK4Eh5eocTelkp8aYMOvSpAvvjPGMTvHpp6Ub+vSxOehqsXPOOYdzzjmnZH3KlCm89dZbjBo1KiTHS09Pj4j+dIGc0X0PDPVa/whIE5GpInK6iDwBnIQzTJgxxm122TIyTZrk/Ojw53VNxWl6uOaasnUmTarS4VeuXMmDDz7IG2+8gYgwYcIEevfuTVpaGtOmTQOcjuLHH388Y8eOpWvXrtx111289dZbDBo0iLS0NNasWVOyvy+//JJhw4bRtWtXPvX8uPrmm29KBoA+cOAAV1xxBQMHDuToo4/m448/BiAzM5NBgwbRr18/+vTpw6pVqwi2QM7o/gW0F5EUz6DLTwNnAZfj3JcTnLnk7gpSjMaY6hg6FP74RyfhDSl/8cXURvn5+YwfP57JkyfToUMHpk+fzuLFi1myZAk7d+5k4MCBDB/uTFazZMkSli9fTpMmTUhNTeWqq65i3rx5PPPMMzz33HM8/fTTgDN/3ezZs1mzZg0nnHACq1evLnPMhx9+mJEjR/LPf/6TvXv3MmjQIE466SRefPFFbrnlFi688ELy8vIoLCwM+ucNZAiwb/A6W1PVHBE5FifZdcGZTucTVc0JTojGmGoZMcJ5GeNx77330qtXL37/+98DMGfOHC644AJiY2Np2bIlxx9/PPPnz6dhw4YMHDiQ1q1bA86gz7/73e8ASEtLY9asWSX7HDt2LDExMRx11FGkpqbyyy9lx/WfOXMmM2bMYPLkyQDk5uayceNGhgwZwsMPP0xWVhbnnnuuzxkTqisoQ4CpagEwPRj7MsYEx9JtS3n8+8dZvnM5aS3SeO3s19wOyXibNKnKlxvLmDLFeVXRN998w/Tp01m4cGFJmerhx/dI8BpFJyYmpmQ9JiamzBQ9Uu7eb/l1VWX69Ol069atTHmPHj045phj+Pe//82oUaN45ZVXGDlyZJU/V2VCNcO4McZlB/MP8tZPb7Fwy0IWbF7gdjgmAuzZs4fLL7+c119/nQZeE+8OHz6cadOmUVhYyI4dO/j2228ZNGhQlfb93nvvUVRUxJo1a1i7dm2FhDZq1Ciee+65kqS6aJEzcs/atWtJTU3l5ptvZvTo0Sz1vqccJEc8oxORSwLduaq+HmhbY0z1dG9W2ml81e5VFBQVEBdj47jXZi+++CLbt2/n+uuvL1N+991306dPH/r27YuI8Pjjj9OqVasKlx8r061bN44//ni2bdvGiy++SGJiYpnt9957L7feeit9+vRBVUlJSeHTTz9l2rRpvPnmm8THx9OqVSvuu+++oHxWb1LZKSuAiBRR9XErBWdQ59hAA3NLenq6Llhgv35NdHjydw0YsDKbJa3gnEc+pMPIs90OqdZavnw5PWzWiID4+u5EJENV/eq74M/Pu8sDCcwY474Rv8YzYAOM2ADzfv7REp2plY6Y6FT1/8IRiDEmyFTpmnWwZDWjRSFVu+tiTHSwh1GMiVbbttHgN2e0vv114Me4rS4HZIw7LNEZE628nl77qQVk7lruYjDGuCeQiVfX+llVVbVzVfdvjAkSr0S3tKUzAWuRFhEj9vvW1C6B/MXH4DxVWf7VGEjxvOoEuG9jTLCUS3QH8g+Q9VuWiwEZ445AhgCxGWPQAAAgAElEQVRLOdw2EekCPAvUA0IzHLYxxj/lEh3Azzt+pkOjDi4FZNwWGxtLWloa+fn5xMXFcemll3LrrbcSE1P985JJkyZRv3597rjjjiBEGlxB7T2qqqtF5FxgGXA/cHcw92+M8VN+PiwvvSd3/43v0TV1IO0btXcxKOO2unXrsnjxYgC2b9/O+PHj2bdvHw888IDLkYVW0C8vqmou8AVwQbD3bYzx08qVkJfnLHfsyMn9x9CxcUe7PxchRCRkL3+1aNGCKVOm8Pzzz6OqFBYWMmHCBAYOHEifPn146aWXAMjOzubEE0+kf//+pKWllUyvA86MBN26deOkk05ixYoVQf+egiVUf/UFQKsjVRKRMSIyXUQ2iMhBEVkhIo+KSINy9ZJF5BUR2SkiB0TkSxFJ87G/RBF5QkS2ePY3V0SGB/FzGVMz2Bx0xg+pqakUFRWxfft2pk6dSqNGjZg/fz7z58/n5ZdfZt26dSQmJvLhhx+ycOFCZs2axe23346qkpGRwTvvvMOiRYv44IMPmD9/vtsf57CCPvCdiDQDzgE2+VH9DmAjcA/OzOVHA5OAE0RkqKoWifMTZQbQCbgJ2INzSXSWiPRTVe+761OB04EJwFrgBuBzERmiqouD8fmMqRHGjIG0NCfhNW3qdjQmghUPAzlz5kyWLl3K+++/D8C+fftYtWoV7dq145577uHbb78lJiaGX3/9lW3btvHdd99xzjnnkJSUBMDo0aNd+wxHEkj3gsONuBkHtMeZl64R/t2fO1NVd3itzxaR3cD/ASOAr4HRwHHASFWd5YlhLrAOuBO42VPWFxgPXKGqr3rKZgOZwIOe/RhTO8THQ+/ezssjtyCXlbtW0jm5M/Xq1HMxOHOkMYbDZe3atcTGxtKiRQtUleeee45Ro8o+R/jaa6+xY8cOMjIyiI+PJyUlhdxcZyCCqlwqdVMgly4nHeb1Z+BSzz4fUtXHj7SjckmuWPH5b1vP+2hgc3GS87TbB3yCk1TxqpcPTPOqVwC8A4wSkQSMqaXGvDuGeo/Uo++LfZn36zy3wzERYMeOHVx33XXceOONiAijRo3iH//4B/n5+QCsXLmSAwcOsG/fPlq0aEF8fDyzZs1iw4YNgDO1z4cffsjBgwfZv38/n3zyiZsfp1KBXLo84TDlRTiXFX/xJJhAHe95L35krBfOU5zlZQKXiEh9Vc321FvnY2bzTJx+fV08y8bUOvXr1KdIiwCni8EJnQ73z9hEs4MHD9KvX7+S7gUXX3wxt912GwBXXXUV69evp3///qgqzZs356OPPuLCCy/kzDPPJD09nX79+tG9uzP9U//+/Rk3bhz9+vWjY8eODBs2zM2PVqlA+tHNDkUgACLSFucy45eqWjxXThNgvY/quz3vyUC2p96eSuo1CV6kxkSwHTtg/35ISQFP/6iezXuWbF6+04YCq60KCwsPuy0mJoZHHnmERx55pMK2uXPn+mwzceJEJk6cGLT4QiVinjUWkfrAxzhPbHpPDST4ng+v/MVhf+v5OvY1IrJARBbs2OHraqoxNchbb0HnztC4MTz8MAA9mpXO5fXzjp/diswYVwSc6ETkOBGZKiILRWSN5/0VETkugH0l4jxZmQqMKvck5W58n40le973+Flvt49tAKjqFFVNV9X05s2bVyl2YyJOcdeC/fuhfn3AzuhM7RZQohOR54DZOGde/XAe/e8HXIHz5OSzVdhXPDAdGAScpqo/lauSiXP/rbyewEbP/bniep1EJMlHvTxgtb8xGVOj+ehDl9I4hcS4RAC2Zm9l98HD/u4zIRQpT1vWJMH4zqqc6ETkJpz+aetwEl0noK7n/QpP+Q0icoMf+4oB3gJOBM5S1R98VJsBtBWR473aNQTO9GzzrhcPnO9VLw4YB8xU1UNV+JjG1EwFBbDM69ktT6KLjYmlW9NuJcXLd9hZXbglJiaya9cuS3ZVoKrs2rWLxMTEau0nkKcurwM2A+mquterfAPwmojMAH4C/gC8cIR9vYCTmB4GDojIYK9tWZ5LmDOAucCbIjKB0g7jApR0YVDVxSIyDXjac5a4DrgeJwFfGMDnNKbmWbUKDnl+07VtW6azeM/mPVmybQngXL48tsOxbkRYa7Vr146srCzsOYCqSUxMpF27dtXaRyCJLhWYUi7JlVDV3SIyHbjaj32d6nmf6Hl5ewCY5Bkd5QxgMvB3IBEn8Z2gquVHX7kcJ2k+hDNt0BLgFFVd6EcsxtR8S5aULvftW2aTPZDirvj4eDp16uR2GLVSIIluF849r8rkATuPtKPKpvwpV283zmXRK45Q7yBwm+dlTO1TyRiX9kCKqa0CeRjlI2C05/JgBSJSB2eUko+qE5gxJgCVnNEVJ7pW9VvRPMmeLja1RyBndPfgPCH5pYjcDcxVVfUMvjwUeBTnPto9wQvTGOOXSs7oujbtyrY7ttGiXoswB2WMuwJJdItxhtRqDXwHFIjITqCZ1/62AEvKDfipqtq5GrEaYyqzezdkebqgJiRA165lNsfGxFqSM7VSIIkuBmfw5I3lyjeXW/c1cokxJlR27oSBA53uBT16QFzQZ+EypkYKZKzLlBDEYYyprq5dYd48KCyEXbvcjsaYiGE/+YyJNrGx0ML3Jcq8wjwWblnI0m1L2Ze7jwnHTghzcMaEX7UTnWeUkkbAPlX9rfohGWNCZffB3QyZOgSAevH1uH3o7cRIxIztbkxIBDrWZayI3CUiq3GesFwP7BGR1Z5yO1M0JgK1rNeypGvBgfwDrNuzzuWIjAm9QMa6rAN8gTMCSQqwCZjneU/xlH/pqWeMCYeVK+Guu+Ddd2H9+sNWExH6tCztdvDT9vJjqBsTfQI5o7sNGAH8G+ihqimqOsTzkEo34BNgGDY6iTHh8+238NhjMG4cTKj8vltai7SS5aXbllZS05joEEiiGw8sA85W1VXeG1R1DXAuzpQ5NpCyMeGSkVG6PGBApVW9z+gs0ZnaIJBE1wX4r6oW+droKf8vYJ3DjQmXhV7jlvfvX2lVS3Smtgkk0eUB9Y9Qpx5Op3JjTKjl55cd4/IIia5n854lT1qu3r2anPycUEZnjOsCSXRLgTEi4nNUWBFpBozBmSLHGBNqy5eXzkHXoQM0a1Zp9brxdena1BkeTFE7qzNRL5BE9zzQHJgnIleKSKqI1BWRTiJyOfCjZ/vzwQzUGHMYVbg/V6x/69KzvozNGZXUNKbmq3KiU9V3gb8CHYEpwCogG1gNvIIzo/cTnnrGmFCrwv25YgNalybEjC2W6Ex0C6hjt6reIyIzgCuBo/GMjAIsAv6pqnODF6IxplLeZ3R+Jrqh7YdySpdTGNB6ACd2OjFEgRkTGURV3Y4hoqSnp+uCBQvcDsMY/xQWQoMGcPCgs751K7Rs6W5MxoSBiGSoaro/dat0RiciHYCBgALzVXVTAPEZY4IlM7M0ybVta0nOGB/8TnQiMhm4ldJ55VREnlJVG/7cGLe0bQuvvgo//AANG7odjTERya9LlyIyHngT50zuF5xk182z+SJVfTtkEYaZXbo0tZGqImJzI5uaoyqXLv196vJKoAA4SVV7qWpPYBRQ5NlmjKlhtmZv5bpPr2PgywMZPHWw2+EYEzL+XrrsA3ykqrOKC1T1SxH5GGeAZ2NMDVM3ri4vZbwEQKzEcjD/IHXj67oclTHB5+8ZXTKwwkf5L0Dj4IVjjPFbbi5U46npRomNSkZIKdRCFm5ZeIQWxtRM/ia6GHyPXZlP6cMpxphweuwxaNoUTjsN/vvfgHYxpN2QkuW5Wdb91USnqoyMYh3ujIkkc+fCnj1Oktu9O6BdDG0/tGT5f5v+F6zIjIkoVelHN0lEJvnaICKFPopVVQMaecUYcwRFRfDjj6XrQ4Ycvm4lyic6e/rSRKOqnNFJFV9+7VtE2onIcyIyV0RyRERFJMVHvUQReUJEtojIQU/94T7qxYjI3SKyXkRyRWSJiJxXhc9pTOTLzIS9e53l5s2hU6eAdtOzeU8aJTQCYNuBbazbuy5YERoTMfxKRqoaE8jLzxi6AGOBPcB3ldSbClwN3AecAWwBPheRfuXq/QWYhDN7wqnAD8B7InKan/EYE/lmzy5dHj4cAjwLi5EYhrQvPRv8fuP31Y3MmIgTyDQ9wfatqrZU1dOA93xVEJG+wHjgj6r6sqp+hZMcNwIPetVrAdwB/FVVJ6vqLFW9FpiFM+OCMdHBO9Edf3y1djW0nd2nM9HN9USnqkV+VBuN84TnNK92BcA7wCgRSfAUjwLq4Izi4u1NIE1EAru+Y0wkUYVvvy1dr26i875Pl2WJzkQf1xOdn3oB61Q1p1x5Jk5i6+JV7xDO3Hjl6wH0DFmExoTLL7/A9u3OcpMm0Lt3tXY3qO0gYsT5ryA7L5u8wrzqRmhMRKkpT0U2wbmHV95ur+3F73u14gCe5euVISLXANcAdOjQoXqRGhNq3pcthw2DmOr9Xm2Q0IBpY6bRv3V/OjXuZE9dmqhTUxKd4LsfX/l/kf7WK0NVp+DMlk56err1FzSR7ZtvSperedmy2JieY4KyH2MiUU25dLkb32djyV7bi9+TpeJP0vL1jKm54uIgMdFZHjHC1VCMqQlqSqLLBDqJSFK58p5AHqX35DKBBKCzj3oAP4csQmPC5c03nRFRvvgC+vZ1OxpjIl5NSXQzgHjg/OICEYkDxgEzVfWQp/gznMR3Ybn2FwHLVNV6w5rokJgIJ51U7ftz3lSVzO2ZPPvjs3y3obIurcbULBFxj05Eim8QDPC8nyoiO4AdqjpbVReLyDTgaRGJB9YB1wOd8EpqqrpdRJ4C7haR/cBCnGQ4EjgrTB/HmBrpse8f4+6v7gbgqqOvYljHYS5HZExwRESio2JH8b973mdTOt/d5cDDwEM4UwMtAU5R1fJzi0wEsoFbgFY40wuNVdVPgh+2MdHj2PbHlix/vuZzG/fSRA2p+CR+7Zaenq4LFixwOwxjKvriC/jwQzjlFDjhBGjQIKi7zy/Mp8XkFuzNdcbQXHTtIvq1Kj/CnjGRQUQyVDXdn7o15R6dMeb11+Ef/4CzznLmoguy+Nh4TulySsn6JyvsIoiJDpbojKkJ8vLg009L1889NySHObPrmSXLn676tJKaxtQcluiMqQm++aZ0Wp6OHeHoo0NymFO7nEqsxAIw79d5bM3eGpLjGBNOluiMqQk+/LB0+eyzA56W50iS6yZzXIfjStbt8qWJBpbojIl0hYXw0Uel6yG6bFns7O5nlyy/k/lOSI9lTDhYojMm0n39NWz1XEJs3hyOPbby+tU0ttdYxDM87Kx1s9i8f3NIj2dMqFmiMybS/d//lS6PHw+xsSE9XJsGbRiRMgIARfl0pT2UYmq2SOkwbozxZf9++OCD0vVLLw3LYa8dcC19WvZhfNp4BrYZGJZjGhMqluiMiWTvvw8HDzrLvXtDv/B04B7Xexzjeo8Ly7GMCTVLdMZEsq1bIT4e8vPhkktC9rRlMBUUFLB//35+++23kldubi55eXnk5eVx6NChkuXiV2FhIapKUVERRUVFJctHei8qKgp6/KEYLcpGoPLtggsuoF8YfrxZojMmkt19N1x+Obz4Ilx8sdvRkJ+fz5o1a/jll19YsWIFmzZtYvPmzWzZsoUtW7awY8cOcnJy3A7T1BD9+vWzRGeMAVq1gkmTXDn0pk2b+HTmp7zx7zfY8vMWstZkUVBQ4EosxgTKEp0xpoylS5fy/vvvM2PGDJYsWVLl9iJCgwYNaNiwIQ0bNqRBgwYkJSWRkJBAnTp1yrwSEhKIj48nNjaWmJgYRISYmJgyy5W9Fy8HWyhmbbCZICrqG6aJgy3RGROJ9u8P+uwElcnOzuaNN95g6tSpZGRkVFq3Q4cOdO/ene7du9OpUydat25NmzZtaN26NS1atKB+/fohST7GBMoSnTGRJisLevaEiy6CiROhbduQHWrXrl0899xzPPvss+zZs6fC9jp16tA2rS3rGq6D9tCrXy+W3rqUGLFEZmoO+2s1JtI88ohzRvePf8AFF4TkEDk5OTz88MOkpKTwwAMPlElyCQkJ/P73v+f9999n586dzPt2HvVOqgepkPlbJtN/nh6SmIwJFUt0xkSSn36CKVNK1ydODOruVZU333yTbt268ec//5ns7OySbampqTz77LNs3ryZt99+m/POO48GDRrQLKkZfxj4h5J6E76YwMH8g0GNy5hQskRnTKRQhT/8wRnEGWDECPjd74K2+7Vr13LyySdz8cUXk5WVVVLes2dP/vWvf7FixQpuuukmmjRpUqHt3cfdTdO6TQHYsG8DT/zviaDFZUyoWaIzJlL8858wZ46zHBcHL7wQlA7ihYWFPPXUU6SlpfHVV1+VlLdo0YIpU6awZMkSLrjgAuLiDn/LPrluMg+PfLhk/dE5j/Lzjp+rHZsx4WCJzphIsHIl3HJL6frttzsPpFTTsmXLGDp0KLfddltJR+6YmBhuu+02Vq1axdVXX11pgvN2Vf+rOLqVM+FrbkEuF35wIXmFedWO0ZhQs0RnjNsOHoRx4+DAAWe9Wze4995q7TIvL48HHniA/v37M2/evJLytLQ0fvjhB5588kkaNmxYpX3GxsTyf2f/HwmxCQAs3rqY2etnVytOY8LBEp0xbioshAsvhMWLnfWEBJg2DerVC3iX8+fPZ8CAAUyaNIn8/HwA4uPjefDBB1mwYAEDBwY+G0FayzT+etJfqRtXl/fPf5+TO58c8L6MCRfrR2eMm954Az78sHT96achwNEicnJyuP/++/nb3/5WZrDjwYMHM3XqVHoG4VIowM3H3MypXU6lW7NuQdmfMaFmZ3TGuOmii+Dss53l22+H666r8i5UlQ8++IBevXoxefLkkiSXlJTE008/zZw5c4KW5ABiJMZnktuVsytoxzAmmCzRGeOmuDh4+214/HHnVUWLFi3ixBNP5LzzzmP9+vUl5SeeeCI//fQTt9xyC7EhnpEcIOu3LHr9vRd3zLyDgiIb9NlEFkt0xoSLKrz+OuzcWbY8MREmTIAqjA+ZkZHB2WefTf/+/Zk1a1ZJedOmTXnllVf44osvSE1NDVbklTpUcIjz3j2PbQe28eTcJxn08iAWblkYlmMb4w9LdMaEmip8/jkceyxcein86U8B7ebQoUP861//Yvjw4aSnp/Pxxx+XbIuNjeXmm29m5cqVXHnllWEdKT+vMI9W9VuVrC/auoiBLw/k8o8vZ/Xu1WGLw5jDkWic+VZE2gNPAScDAnwJ3KqqG4/UNj09XRcsWBDiCE2tsG0b/Otf8NprsHRp2W1z5jiJ7wiys7P5+uuvmT59OjNmzGDv3r0V6px33nk8+OCDQb0PV1VFWsST/3uS+765j9yC3JLyGInhlC6ncOXRV3LaUaeRGJfoWowmuohIhqqm+1U32hKdiCQBS4BDwJ8BBR4CkoA+qnqgsvaW6EzANm92ugnMmQMzZ8LChc7ZnLf4ePjjH+G++yp0ISgoKGDVqlUsW7aMjIwMZs+ezYIFC3xOdBoXF8d5553HxIkTSUtLC+WnqpLVu1dz439u5PM1n1fYVjeuLhf3uZiXznzJhchMtKlKoovG7gVXA6lAN1VdDSAiS4FVwLXA31yMzdREubmwdy/s2VP66tSp4sglp55a4cytEMgG9iYksPecc5xXQgK7332XrKwssrKy2LRpE5s2bWLlypXk5VU+0khKSgpXXXUVV1xxBa1btw7u5wyCLk268NlFn/Hdhu/4y7d/4Yu1X5RsO1hwkNiYig/GPPH9E6zfu55OyZ1oXb81zZKa0SypGU2TmtK0blOS4pN8tjPGX9F4RvcVkKiqx5Yrnw2gqsdX1j7QM7qff/6Zp556CpYsQfftKykv/n69v+WS77x7d7Rp07JlCxaguaWXfrR8G+/l3r1Rz+ScJWU//ogW96FSLW3vWS8TS79+aJ06pe0LCmDhwrLH8nX84oX+/VHPvSBVdUb4yMz0+VnLlAHExkKfPqXbVZ2paVavLq1bPn7vfSYmQrduZdvv2QObNlUec/FyvXpox45l97l1K2ze7Hx/qs578XL59q1bo+3aUVhYyKFDh5zX5s3k5eRwCEpeRVRfWloap59+Oueddx4DBgyoUTNVr9m9hlcXv8p7P7/Hyl0r+fj3HzO62+gydYZOHcrcrLmV7ichNoGk+CTeGfMOv+tcdqDr0946jZz8HGJjYomLiSMuJo5YKV32njvvyd89SduGpfP75RbkctWMq4DSGcAFOez630/7O3Xj65a035a9jT9//We/vos6sXV44fQXypSt2LmCyf+b7Ff7FvVa8PCJD5cpm/frPF7OeNmv9l2bdmXCsRPKlM1cM5P3Mt/zq/3AtgO5ZsA1Zcrey3yPmWtm+tX+5M4nM7bXWL/q+qO2n9H1Aj72UZ4JnB+qg/7666+88sorVWu0upo36r0eJw/Ipk3Va795s7vtf/018LZ79jgTnAZqyxbnFWTt2rWjd+/epKWlMWTIEIYNG0azZs2Cfpxw6dykMw+NfIiHRj7E2j1raV2/4lnour3rjrifQ4WHOFR4iFipeGb3/abv+e3Qb37FM2nEpDLrBUUFvPXTW361BXjmlGeoS2mi23doH68s8u/ffVJ8UoVEtzV7q9/tuzTpUiHRrd2z1u/2wzsOr5Dolm1f5nf7/Xn7KyS6eb/O87t9g4QGQU10VRGNia4JUHGqZNgNJPtqICLXANcAdOjQIXSRmVpHRKhXrx7Jyck0btyYxo0b06hRIxo3bkybNm1o37497dq1o3379qSmppKc7PNPNCqkJvvu7vDi6S+yds9a1u1dx/YD29mZs5NdB3exM2cnuw/uJic/p6RuUnxShfZV6bdXfHYWqOq2N+6IxkQHZa9UFTvsX6iqTgGmgHPpMpAD9ujRgylTpsCSJfDbb2UuL5VcAilf1r07NG9edvv8+ZCbW1pXSv9pVWjfpw80alS2/fffg2rphxXxugRDybQvIgLp6ZCYWLq9oAB+/LHsscof33tfQ4dCTExp+5wc5/NT9ssublemLD4ejjmm7Pezbx8sX162/eHiT0qCfv3Ktt+5E9asOXx77++vUaOSe2wl23/7Dfbtg/h4pE4dqFPHWa5bt8x+vNvExsaSkJBQ8qpTp06ZdX9nBqjNzup+VqXbVZXcglxy8nNokNCgwvaZF80kvyifgqICCosKKSgqcJa1kPzCfLwvPLduUPaMMiE2gTfOecPrErvXpXAf6+WfGm1ZryVTzpiCP+JiKv4tdG3a1e/2DRMqDsI9sM1Av9t7dwEpdnLqyX639/VDZUzPMXRt2tWv9r1b9ParXihE4z26bcBHqnptufK/A+eravPK2ttTl8YYE/mqco8uGjuMZ+LcpyuvJ2AzRRpjTC0TjYluBjBYRErOs0UkBTjWs80YY0wtEo2J7mVgPfCxiJwlIqNxnsLcBFhPVWOMqWWiLtF5Rj4ZCawE3gDeAtYBI1U1283YjDHGhF9UPhLmGdPyPLfjMMYY476oO6MzxhhjvFmiM8YYE9Wirh9ddYnIDmBDNXbRDNh5xFrRz74Hh30Ppey7cNj34Kju99DxSP2ii1miCzIRWeBvJ8ZoZt+Dw76HUvZdOOx7cITze7BLl8YYY6KaJTpjjDFRzRJd8Pk3Qmr0s+/BYd9DKfsuHPY9OML2Pdg9OmOMMVHNzuiMMcZENUt0xhhjopoluiAQkfYi8r6I7BOR30TkAxGpVVOVi8gYEZkuIhtE5KCIrBCRR0Wk4kyZtYyIfCYiKiIPuR2LG0TkNBH5VkSyPf8+FojISLfjCicROVZEZorIds93sFBErnA7rlARkXYi8pyIzBWRHM/ff4qPeoki8oSIbPH8vzFXRIYHOx5LdNUkIknA10B34FLgYuAoYJaI1HMztjC7AygE7gFOAf4BXA98ISK19u9MRC4A+rodh1tE5Fqc2UMygHOA84H3gCQ34wonEekDfAnEA1fjjMM7H5gqIte7GVsIdQHGAnuA7yqpNxXnO7kPOAPYAnwuIv2CGo2q2qsaL+AWnP/gu3iVdQIKgNvcji+M30NzH2WXAIozc4TrMbrwnTQGtgIXeL6Hh9yOKcyfPwU4CNzqdiwufw+PAHlA/XLlPwBz3Y4vRJ85xmv5Ks/ff0q5On095Zd7lcUBK4AZwYyn1v7SDqLRwA+qurq4QFXXAd8DZ7kWVZip6g4fxfM9723DGUsEeRzIVNW33Q7EJVcARcCLbgfisjpAPk7S97aXKL2qpqpFflQbjfO9TPNqVwC8A4wSkYRgxROVX3KY9QKW+SjPBHqGOZZIc7znfbmrUbhARI7DOaP9g9uxuOg44Bfg9yKyRkQKRGS1iNzgdmBh9prn/VkRaSMijUXkauBE4Cn3wnJdL2CdquaUK8/E+XHQJVgHisr56MKsCc516PJ2A8lhjiViiEhb4EHgS1Vd4HY84SQi8Tiz2U9W1RVux+OiNp7XEzj3btfg3KN7XkTiVPUZN4MLF1VdJiIjgA8p/eGTD1ynqu+4Fpj7Kvu/s3h7UFiiCw5fve4l7FFECBGpj/MAQgFwucvhuOFPQF3gYbcDcVkM0AC4TFU/8JR97Xn67m4ReVY9N2aimYgcBUzHOVO5DucS5lnAiyKSq6pvuRmfi4Qw/d9pia769uD7l0cyvn+tRDURSQRmAKnA8aqa5XJIYeXpVjIR5wZ8Qrn7DAki0hjYr6qFrgQYXrtwnkD+olz5TJwnc1sDm8MdlAsewTmDO0NV8z1lX4lIU+AZEXnbz3ta0WY34KsbVrLX9qCwe3TVl4lzrbm8nsDPYY7FVZ5LdtOBQcBpqvqTyyG5IRVIBN7E+aFT/AKnC8YeIM2d0MIu8zDlxb/Ya8t/7mnAEq8kV2we0BRoEf6QIkIm0MnTRctbT5ynVFdXbBIYS3TVNwMYLCKpxQWeSzPHerbVCp6+cm/h3GA/S6sWc/kAAAuvSURBVFV/cDkktywGTvDxAif5nUAQ/wFHuA8976PKlY8CslR1a5jjcctWoJ+I1ClXfgyQSxDPXGqYGTh9C88vLhCROGAcMFNVDwXrQHbpsvpeBm4EPhaRP+Ncc/4LsAnngYTa4gWcP9iHgQMiMthrW1ZtuYSpqnuBb8qXiwjABlWtsC2K/QeYBbwkIs2AtcAY4HfUrnu3z+N0kv9ERP6Oc49uNE7/yqdUNc/N4EJFRMZ4Fgd43k8VkR3ADlWdraqLRWQa8LTnatA6nEEmOgEXBjWWWnAvOOQ892WeAk7GuSzzFU4n2fVuxhVOIrIe6HiYzQ+o6qTwRRN5RESBh1X1z27HEk4i0hB4FCfBJeN0N/irqv7L1cDCTEROxXlIqRfOpe01ONPUvBSt92s9f/O+zFbVEZ46xQ9tjccZYGEJ8Kdg/yC0RGeMMSaq2T06Y4wxUc0SnTHGmKhmic4YY0xUs0RnjDEmqlmiM8YYE9Us0RljjIlqluiMqQYRSReRL0Rkp4ioiCx2O6aaTkRSPN/la27HUhUiMsIT9yS3YzFl2cgoJmR8dBjNA37DGTVmIc64mDNraodZT2fof+N0AH4D2Ikz3JM5As/fRknHYWNCyRKdCYcHPO+xOKMf9AIuBq4EFojIhaq60q3gqmEQzoC8E1X1EbeDMcb4ZonOhJyv4b9EpCXwHM74mF+KSLqqbg93bNXUxvNeG6aaMabGsnt0xhWqug34Pc4AyO1xZqAuISIDROQZkf9v7+yDvKrKOP75LiXEO2iCAwQ4jhFM8RKToy6w5kSQMhCjjajUphhpWdJkVk7CWI6ik9XEizGKMDIkTiOCkkhaKyo1vCxkQiZpi0S6yUvIgjAST3885wfHy727S+yyzno+M3fO/s5zzrnnnHv3nnuec5776M+Sdks6KGmrpJ9K6pZJ+/WwNnJb3rkk9ZT0rqS/RHGdJP1I0kuS3pa0T9KrkpZI+nReOVHefkH1tjBEPRjOb5IqQ5oF4ffZkm6U9KKkdyRVReWUhbqvk1QnaX/4+/rgDSJ7XpNUJamHpPmSakOeNZJGhDQdJN0jaZukQ5I2S7o8W1ZDSLpY0sqo71+RdJekLjlpa8K3TvPKmRHqXRF+V0Yq7VFRv+WubUkaIOmxUI/9kp6XNDonXWWp/yWNCf20N6s+D+UtkLQ99E+tpMWSPp5T5rmhzeslvRXSb5M0T1LvxvRjKKedpN+E+s3Ou7aJ5iXN6BIthpkdkfQToAKYJGla5HH6OuCLwLPA07jacxjwHfwr6OeZ2b6QdhEwE5gi6Y6cNb9r8Hv9VwCSBKwELgD+CNyPe0PvE+ryHLChnqr/B1fHDsE9RS/D3fMQhSV+AYzA1/J+C8R1ewj/mO32UAcLbZ4DlJP/BfeuwAvAPuDXuNPfK4CnJJ0f2tgdeAJ3gTIJWCJpe2NdJ0maCswF9uNf3f833i+3AOMkXRi8NPw/bML7bjqwDVgQyaoyafvj1+clvF1n4S5cnpR0pZktySn/Mtyp65PAfUC/qF1jgEfxfnkcd5fUG5gIXCLpIjOrjsqaiHsE/wOwBl9jHoQ71R0XtBA76mtseClbjrvt+oGZ3VVf+kQzYWbpSEezHPiD2xpI0xb3vmxA/yi+L9AmJ/21Ie0tmfhZIf7STLxw9zD7gS4h7pMh7dKc8suAbo1sX2UopzJHtiDIdsTtiuSTgrwa6BjFdwDWB9mVef2JP8DLovjJIX43/gBvF8lGFLW1oE19gUP4pqEBGdmcUNa8THwNUFNQ3oyQpyKnLVUFefpFbb0nIxse7pc9QOeca3EEGJNTZreQZycwMCMbBNQB1Zn4XkDbnLJG4y8sczPxFaEOM6K+3IIPkFefqv+7dBx/pCl0okUxd664K/z8aBS/zfJ3Y87HH8JZZ55zQzg1Ez8anxksMbO9Gdk7OfU5YmZ7svEnwd1m9o+c+GtC+H0zq4vOvx+fOYHPHLIcAG42s9g792J8RtoN+LaZHYzKew4fiIY0sr5XA6cBs8zs5YzsVnwmOVlS20aWdzLsBW6PI8xsPe7gtys++82yzMxW5sR/OeSZbmZbMmVuxv1KDpU0MIrfYTnOP81sFe4dO3sPHkXSEHw22gsYa2aLitImmp+kuky8H1AIj66nyB0xTsXVcgOBLrx3TblXXICZbZa0Gldr9jGz7UH0tRDeFyXfgqvQJknqi6senwfWW9M7wVxbED8Mn31U5ciexWcMQ3Nkr9gxlS0AZvZfSbVABzN7LSfPDtybdWMYFsLfZwVmtkfSRmAkMAD3HdacVGfbGqgCvoL3z8KMrKi/zw/h4Ly1QODcEH4Cvz9KKu6r8NniYPxFok2Up+heKcdV7PuAkWbW3P2UaIA00CVaFEnt8DUlgLci0RL8jf01fCB6E1epAdyEqzyzzMEfwlOA6ZJ64p6cN5nZ0QdgGBg+C9yGr+nMDKJ9khbiayl1NA1FdnVdgN15A6uZHZa0EzddyJKdlZY43ICssf/rpc0mbxTIS/FdG1neyVBbEF/q0+M2xlDc36eH8LoGztkx+vte/F57A3gKf2EoaQEqKXY0PBTohK/rZWfFiRYgDXSJlqYcvw9rLXhklzQcH+SeBr5gZu+WEocda98rKOtR/OF4raTbyWxCiQnqyWnANEnnAKPwGeQ38Yf45KZoHNEsNcNeoLukD8ftA5D0IeAMXEV7qikNlj1x9VyWszLpwGempxWUdzIDYo+C+J45dShRX38DDDazFxs6saQzgW/hG2EuyM4sJU2qJ/ssXA1/PbBc0gQzO05Nnjh1pDW6RIsRBq1bw8/FkeicEC7PDgK4kfZH8soLae/H1Zrj8JldHb6mU4iZ/d3MHsAHuzp8J2VzsxH//xuZIxuJq8iqc2TNzcYQVmQFkrria30Hgb9Goj1Aj6BuzjK84DxHeK8aMI9hkjrlxJfqtjFHVkRpx+mIRqY/G78+q3IGud5BXoSZ2Q3Az/E14hWSOpxAXRNNTBroEi1CeGN+GH9ovQ7EXxapCWFFTp7ZDRQ9D1/fmoVvQlmc86DqL2lQTt5uuEr0VLx9zw/hnZLaR3VrD5S2oD9wCuqRZRG+q/HGMNON+THQGViU2aSxFp85fzVOLLcpvLDgPLtwc4766IKrl+Myh+PrZnuBpQ3kj3kQNwuZLukzWaHcprEiiqoJYbmkNlG6jvjGlQa1YWY2DbgTuAg3/+h8AvVNNCFJdZlodqLF/zKOfQKsHFd3rQWuMrOdUZZ1uK3YRElr8I0iPYCxwN+o50skZva6pBX42hzkqC3xjQVLJW3AVVP/wlVN43Ebq5k5eZoUM1ssaTzwJWCzpMdwtdsEfIB+xMzqnYk2U71qJN2Ev1BUS3oEXzsdhW/oeJlju0JL/BIf5OZKuhi3CxyM2yk+AVyac6pngCskPY7bLB4GVpvZ6ijNatw28jz8fijZ0ZUBU82s0apdM9sl6TJ8cPyTpGdw1ewR4GOhbafj3y3FzN6U9DC+GWqTpFX4wPs5fEa7iUbsZDWzH0o6iNsO/k7SmCbe1ZtoDC1t35CO1ntwzBaqdBzC7Zg24G/FY4jswTJ5u+ObS2rwB8ur+KyvPfXYbYW848P51hXIe4eyXuDYJpd/4kbGY0+gfZU0bEfXr578ZcANuN3cgXBsAL6R1y/Ub3tW2Cf4LkU7wWs3GliFqyUP4cbVdwNdC9KX4wPTAXxtcQXwKYrt6M7E1dW1+Aw8tj/rF34vwHdBLgv1OBCu2edP5Fpk0vXDZ/tbw331Nj54PwRMyKRtD9wR2n4QH8Bn4wPicX1Kxo4uI7uZY3aTZ7T0/+YH7VC4CIlEqyHMIKcDU8zX3hKJxAeYNNAlWhVh88JWXAXZx8wOtHCVEolEC5PW6BKtAkmX4MbO4/D1vO+mQS6RSEAa6BKth8vxr2XU4jvdftay1UkkEu8XkuoykUgkEq2aZEeXSCQSiVZNGugSiUQi0apJA10ikUgkWjVpoEskEolEqyYNdIlEIpFo1fwPbgBFd85+1+sAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\n", "#zombie apolcalypse\n", "import matplotlib.pyplot as plt # plotting modules\n", "%matplotlib inline \n", "plt.style.use('presentation') \n", "# plt.style.use('ggplot') \n", "import numpy as np # our matlab-like module\n", "from scipy.integrate import odeint # integration of ODEs so you don't have to write your finite difference yourself\n", "\n", "\n", "P = 0. # birth rate\n", "d = 0.0001 # natural death percent (per day)\n", "B = 0.0095 # transmission percent (per day)\n", "# # B = 0.001 # transmission percent (per day)\n", "G = 0.0001 # resurect percent (per day)\n", "# # G = 0.1 # resurect percent (per day)\n", "A = 0.001 # destroy percent (per day)\n", "\n", "# solve the system dy/dt = f(y, t)\n", "def f(y, t):\n", " Si = y[0]\n", " Zi = y[1]\n", " Ri = y[2]\n", " # the model equations (see Munz et al. 2009)\n", " f0 = P - B*Si*Zi - d*Si\n", " f1 = B*Si*Zi + G*Ri - A*Si*Zi\n", " f2 = d*Si + A*Si*Zi - G*Ri\n", " return [f0, f1, f2]\n", "\n", "# initial conditions\n", "S0 = 500. # initial population\n", "Z0 = 0 # initial zombie population\n", "R0 = 0 # initial death population\n", "y0 = [S0, Z0, R0] # initial condition vector\n", "time_start = 0\n", "time_finish = 10.\n", "N_points = 1000\n", "t = np.linspace(time_start, time_finish, N_points) # time grid\n", "\n", "# solve the DEs\n", "soln = odeint(f, y0, t)\n", "S = soln[:, 0]\n", "Z = soln[:, 1]\n", "R = soln[:, 2]\n", "\n", "# plot results\n", "plt.figure()\n", "plt.plot(t, S,'g--', label='Living')\n", "plt.plot(t, Z,'r--', label='Zombies')\n", "plt.plot(t, R,'k-', label='Dead')\n", "plt.xlabel('Days from outbreak')\n", "plt.ylabel('Population')\n", "# plt.title('Zombie Apocalypse - No Init. Dead Pop.; No New Births.')\n", "plt.legend(loc=0)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/bazilevs/anaconda3/lib/python3.6/site-packages/IPython/html.py:14: ShimWarning: The `IPython.html` package has been deprecated since IPython 4.0. You should import from `notebook` instead. `IPython.html.widgets` has moved to `ipywidgets`.\n", " \"`IPython.html.widgets` has moved to `ipywidgets`.\", ShimWarning)\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "85dc818dc2a14894908cddbe3ce4c49d", "version_major": 2, "version_minor": 0 }, "text/html": [ "

Failed to display Jupyter Widget of type interactive.

\n", "

\n", " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", " that the widgets JavaScript is still loading. If this message persists, it\n", " likely means that the widgets JavaScript library is either not installed or\n", " not enabled. See the Jupyter\n", " Widgets Documentation for setup instructions.\n", "

\n", "

\n", " If you're reading this message in another frontend (for example, a static\n", " rendering on GitHub or NBViewer),\n", " it may mean that your frontend doesn't currently support widgets.\n", "

\n" ], "text/plain": [ "interactive(children=(IntSlider(value=0, description='P', step=5), FloatSlider(value=0.0001, description='d', max=0.00030000000000000003, min=-0.0001), FloatSlider(value=0.0095, description='B', max=0.01, min=0.0095, step=5e-06), FloatSlider(value=0.001, description='G', max=0.003, min=-0.001), FloatSlider(value=0.001, description='A', max=0.1, min=0.001, step=5e-07), Output()), _dom_classes=('widget-interact',))" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.html.widgets import interact\n", "from IPython.display import clear_output, display, HTML\n", "\n", "def zombie(P= 0., d = 0.0001, B=0.0095, G=0.001, A=0.001):\n", " \n", " # solve the system dy/dt = f(y, t)\n", " def f(y, t):\n", " Si = y[0]\n", " Zi = y[1]\n", " Ri = y[2]\n", " # the model equations (see Munz et al. 2009)\n", " f0 = P - B*Si*Zi - d*Si\n", " f1 = B*Si*Zi + G*Ri - A*Si*Zi\n", " f2 = d*Si + A*Si*Zi - G*Ri\n", " return [f0, f1, f2]\n", "\n", " # initial conditions\n", " S0 = 500. # initial population\n", " Z0 = 0 # initial zombie population\n", " R0 = 0 # initial death population\n", " y0 = [S0, Z0, R0] # initial condition vector\n", " time_start = 0\n", " time_finish = 10.\n", " N_points = 1000\n", " t = np.linspace(time_start, time_finish, N_points) # time grid\n", "\n", " # solve the DEs\n", " soln = odeint(f, y0, t)\n", " S = soln[:, 0]\n", " Z = soln[:, 1]\n", " R = soln[:, 2]\n", "\n", " # plot results\n", " plt.figure()\n", " plt.plot(t, S,'g--', label='Living')\n", " plt.plot(t, Z,'r--', label='Zombies')\n", " plt.plot(t, R,'k-', label='Dead')\n", " plt.xlabel('Days from outbreak')\n", " plt.ylabel('Population')\n", " # plt.title('Zombie Apocalypse - No Init. Dead Pop.; No New Births.')\n", " plt.legend(loc=0)\n", "\n", "interact(zombie, P = (0, 100, 5),\n", " A =(0.001,10**(-1),0.5*10**(-6)), B=(0.0095,10**(-2),0.5*10**(-5)) )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Problem 5:\n", "\n", "Calculate the functions $T(t), C_{A}(t)$ in a mixer:\n", "\n", "Stirred Tank reactor:\n", "\n", "$T_{in}, C_{A0} \\to T_f, C_A$\n", "mixer\n", "$q = \\dot{V} = 100 m^3/hr$\n", "$V = 100 m^3$\n", "\n", "\n", "energy balance:\n", "\n", "$V \\dfrac{dT}{dt} = q (T_{f} - T(t))$\n", "\n", "mass balance:\n", "\n", "$V \\dfrac{dC_A}{dt} = q (C_{f} - C_{A}(t))$\n", "\n", "You need to give the program parameters \n", "$C_{A0}=0, C_{Af} = 1$\n", "$T_0 = 350$, $T_f = 300$\n", "\n", "you can call the python function:\n", "\n", "```python\n", "def mixer(X_list, t, Tf, Cf):\n", " ...\n", " return [dTdt, dCa/dt]\n", "```\n", "\n", "solution could be found here:\n", "\n", "https://www.youtube.com/watch?v=8-V5T40aMEc\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "# Additional problems : 2\n", "\n", "$$\\require{mhchem}$$\n", "Normal butane, C4H10, is to be isomerized to isobutane in a plug-flow reactor, because isobutane is worth more. This elementary reversible reaction is to be carried out adiabatically in the liquid phase under high pressure using trace amounts of a liquid catalyst which gives a specific reaction rate of 31.1/hr at 360K. The feed enters at 330K. \n", "\n", "Additional information: \n", "* $\\Delta H^\\circ_{Rx} = -6900$ J/mol $n$-butane\n", "* Activation energy $E_a = 65.7$ kJ/mol \n", "* $K_C = 3.03$ at $60^\\circ$ C \n", "* $C_{P,n\\text{-Butane}} = 141$ J/mol/K \n", "* $C_{P,i\\text{-Butane}} = 141$ J/mol/K \n", "* $C_{P,n\\text{-Pentane}} = 161$ J/mol/K\n", "* $C_{A0} = 9.3$ mol/dm3 = 9.3 kmol/m3 feed concentration of n-butane\n", "\n", "a) Calculate the PFR volume necessary to process 100,000 gal/day (163 kmol/h) at 70% conversion of a mixture of 90 mol% n-butane and 10 mol% i-pentane, which is considered an inert.\n", "\n", "b) Plot and analyze $X, X_e, T$, and $-r_A$ down the length of the reactor.\n", "\n", "\n", "You may use this code to use this code for your program.\n", "You just need to understand and plot it.\n", "\n", "```python\n", "DHrx = -6900. # J/mol\n", "Ea = 65700. # J/mol\n", "R = 8.314 # J/mol/K\n", "T0 = 330 # K\n", "FA0 = 0.9 * 163e3 # mol/hr\n", "CA0 = 9.3e3 # mol/m3\n", "\n", "def Kc(T):\n", " \"Equilibrium constant, as a function of temperature\"\n", " return 3.03 * np.exp(( -1* DHrx / R) * (1./T - 1./(273.15+60)) )\n", "assert Kc(273.15+60) == 3.03\n", "assert Kc(273.15+65) < 3.03 # le Chatellier's principle\n", "\n", "def k(T):\n", " \"Specific reaction rate in 1/hour, as a function of temperature\"\n", " return 31.1 * np.exp((-1*Ea/R) * (1./T - 1./360.))\n", "assert k(360) == 31.1\n", "assert k(365) > 31.1\n", "\n", "def Teb(X):\n", " \"Temperature from energy balance, as a function of conversion.\"\n", " Cps = np.array([141, 141, 161])\n", " Thetas = np.array([1., 0., 0.1/0.9])\n", " return T0 - DHrx * X / sum(Cps*Thetas)\n", "assert Teb(0) == T0\n", "assert Teb(0.5) > T0 # Exothermic\n", "\n", "def dXdV(X,V):\n", " \"\"\"\n", " dX/dV in a plug flow reactor is -rA/ FA0\n", " \"\"\"\n", " T = Teb(X)\n", " CA = CA0*(1.-X)\n", " CB = CA0*X\n", " rA = -k(T)*(CA - CB/Kc(T))\n", " return -rA/FA0\n", "```\n", "\n", "```\n", "Xeq = Kc(Teb(X))/ (1+Kc(Teb(X)))\n", "rate = k(Teb(X))*(CA0*(1.-X) - CA0*X/Kc(Teb(X)))\n", "\n", "#For Levenspiel plot you may use this:\n", "\n", "plt.plot(X, FA0/rate)\n", "plt.ylim(0,10)\n", "plt.title(\"Levenspiel Plot\")\n", "plt.xlabel(\"X\")\n", "plt.ylabel(\"$\\\\frac{F_{A0}}{-r_A}$\")\n", "plt.plot((Xeq[-1],Xeq[-1]),(0,FA0/rate[-1]), ':')\n", "plt.show()\n", "\n", "```" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "DHrx = -6900. # J/mol\n", "Ea = 65700. # J/mol\n", "R = 8.314 # J/mol/K\n", "T0 = 330 # K\n", "FA0 = 0.9 * 163e3 # mol/hr\n", "CA0 = 9.3e3 # mol/m3\n", "\n", "def Kc(T):\n", " \"Equilibrium constant, as a function of temperature\"\n", " return 3.03 * np.exp(( -1* DHrx / R) * (1./T - 1./(273.15+60)) )\n", "assert Kc(273.15+60) == 3.03\n", "assert Kc(273.15+65) < 3.03 # le Chatellier's principle\n", "\n", "def k(T):\n", " \"Specific reaction rate in 1/hour, as a function of temperature\"\n", " return 31.1 * np.exp((-1*Ea/R) * (1./T - 1./360.))\n", "assert k(360) == 31.1\n", "assert k(365) > 31.1\n", "\n", "def Teb(X):\n", " \"Temperature from energy balance, as a function of conversion.\"\n", " Cps = np.array([141, 141, 161])\n", " Thetas = np.array([1., 0., 0.1/0.9])\n", " return T0 - DHrx * X / sum(Cps*Thetas)\n", "assert Teb(0) == T0\n", "assert Teb(0.5) > T0 # Exothermic\n", "\n", "def dXdV(X,V):\n", " \"\"\"\n", " dX/dV in a plug flow reactor is -rA/ FA0\n", " \"\"\"\n", " T = Teb(X)\n", " CA = CA0*(1.-X)\n", " CB = CA0*X\n", " rA = -k(T)*(CA - CB/Kc(T))\n", " return -rA/FA0\n", " \n", "volumes = np.linspace(0,5,501)\n", "X = scipy.integrate.odeint(dXdV, 0., volumes)\n", "plt.plot(volumes,X,label=\"Conversion\")\n", "\n", "Xeq = Kc(Teb(X))/ (1+Kc(Teb(X)))\n", "plt.plot(volumes, Xeq,label=\"Equilibrium conversion\")\n", "plt.legend(loc=\"best\")\n", "plt.xlabel(\"Volume\")\n", "plt.ylabel(\"Conversion X\")\n", "plt.show()\n", "\n", "rate = k(Teb(X))*(CA0*(1.-X) - CA0*X/Kc(Teb(X)))\n", "plt.plot(volumes, rate, label=\"Rate\")\n", "plt.xlabel(\"Volume\")\n", "plt.ylabel(\"Rate\")\n", "plt.show()\n", "\n", "for volume, conversion in zip(volumes, X):\n", " if conversion>0.7:\n", " break\n", "print volume\n", "print conversion\n", "\n", "\n", "plt.plot(X, FA0/rate)\n", "plt.ylim(0,10)\n", "plt.title(\"Levenspiel Plot\")\n", "plt.xlabel(\"X\")\n", "plt.ylabel(\"$\\\\frac{F_{A0}}{-r_A}$\")\n", "plt.plot((Xeq[-1],Xeq[-1]),(0,FA0/rate[-1]), ':')\n", "plt.show()\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }