{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "
\n", " \n", " \"QuantEcon\"\n", " \n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Introductory Examples" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Contents\n", "\n", "- [Introductory Examples](#Introductory-Examples) \n", " - [Overview](#Overview) \n", " - [Example: Plotting a White Noise Process](#Example:-Plotting-a-White-Noise-Process) \n", " - [Example: Variations on Fixed Points](#Example:-Variations-on-Fixed-Points) \n", " - [Exercises](#Exercises) \n", " - [Solutions](#Solutions) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Overview\n", "\n", "We’re now ready to start learning the Julia language itself." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Level\n", "\n", "Our approach is aimed at those who already have at least some knowledge of programming — perhaps experience with Python, MATLAB, Fortran, C or similar.\n", "\n", "In particular, we assume you have some familiarity with fundamental programming concepts such as\n", "\n", "- variables \n", "- arrays or vectors \n", "- loops \n", "- conditionals (if/else) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Approach\n", "\n", "In this lecture we will write and then pick apart small Julia programs.\n", "\n", "At this stage the objective is to introduce you to basic syntax and data structures.\n", "\n", "Deeper concepts—how things work—will be covered in later lectures.\n", "\n", "Since we are looking for simplicity the examples are a little contrived\n", "\n", "In this lecture, we will often start with a direct MATLAB/FORTRAN approach which often is **poor coding style** in Julia, but then move towards more **elegant code** which is tightly connected to the mathematics." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Set Up\n", "\n", "We assume that you’ve worked your way through [our getting started lecture](getting_started.html) already.\n", "\n", "In particular, the easiest way to install and precompile all the Julia packages used in QuantEcon\n", "notes is to type `] add InstantiateFromURL` and then work in a Jupyter notebook, as described [here](getting_started.html)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Other References\n", "\n", "The definitive reference is [Julia’s own documentation](https://docs.julialang.org/en/v1/).\n", "\n", "The manual is thoughtfully written but is also quite dense (and somewhat evangelical).\n", "\n", "The presentation in this and our remaining lectures is more of a tutorial style based around examples." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example: Plotting a White Noise Process\n", "\n", "To begin, let’s suppose that we want to simulate and plot the white noise\n", "process $ \\epsilon_0, \\epsilon_1, \\ldots, \\epsilon_T $, where each draw $ \\epsilon_t $ is independent standard normal." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Introduction to Packages\n", "\n", "The first step is to activate a project environment, which is encapsulated by `Project.toml` and `Manifest.toml` files.\n", "\n", "There are three ways to install packages and versions (where the first two methods are discouraged, since they may lead to package versions out-of-sync with the notes)\n", "\n", "1. `add` the packages directly into your global installation (e.g. `Pkg.add(\"MyPackage\")` or `] add MyPackage`) \n", "1. download an `Project.toml` and `Manifest.toml` file in the same directory as the notebook (i.e. from the `@__DIR__` argument), and then call `using Pkg; Pkg.activate(@__DIR__);` \n", "1. use the `InstantiateFromURL` package " ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "hide-output": true }, "outputs": [], "source": [ "using InstantiateFromURL\n", "# optionally add arguments to force installation: instantiate = true, precompile = true\n", "github_project(\"QuantEcon/quantecon-notebooks-julia\", version = \"0.8.0\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you have never run this code on a particular computer, it is likely to take a long time as it downloads, installs, and compiles all dependent packages.\n", "\n", "This code will download and install project files from the [lecture repo](https://github.com/QuantEcon/quantecon-notebooks-julia/).\n", "\n", "We will discuss it more in [Tools and Editors](../more_julia/tools_editors.html#tools-editors), but these files provide a listing of packages and versions used by the code.\n", "\n", "This ensures that an environment for running code is **reproducible**, so that anyone can replicate the precise set of package and versions used in construction.\n", "\n", "The careful selection of package versions is crucial for reproducibility, as otherwise your code can be broken by changes to packages out of your control.\n", "\n", "After the installation and activation, `using` provides a way to say that a particular code or notebook will use the package." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "hide-output": false }, "outputs": [], "source": [ "using LinearAlgebra, Statistics" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Using Functions from a Package\n", "\n", "Some functions are built into the base Julia, such as `randn`, which returns a single draw from a normal distibution with mean 0 and variance 1 if given no parameters." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "-1.1100477539931022" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "randn()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Other functions require importing all of the names from an external library" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "hide-output": false }, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "using Plots\n", "gr(fmt=:png); # setting for easier display in jupyter notebooks\n", "\n", "n = 100\n", "ϵ = randn(n)\n", "plot(1:n, ϵ)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let’s break this down and see how it works.\n", "\n", "The effect of the statement `using Plots` is to make all the names exported by the `Plots` module available.\n", "\n", "Because we used `Pkg.activate` previously, it will use whatever version of `Plots.jl` that was specified in the `Project.toml` and `Manifest.toml` files.\n", "\n", "The other packages `LinearAlgebra` and `Statistics` are base Julia libraries, but require an explicit using.\n", "\n", "The arguments to `plot` are the numbers `1,2, ..., n` for the x-axis, a vector `ϵ` for the y-axis, and (optional) settings.\n", "\n", "The function `randn(n)` returns a column vector `n` random draws from a normal distribution with mean 0 and variance 1." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Arrays\n", "\n", "As a language intended for mathematical and scientific computing, Julia has\n", "strong support for using unicode characters.\n", "\n", "In the above case, the `ϵ` and many other symbols can be typed in most Julia editor by providing the LaTeX and ``, i.e. `\\epsilon`.\n", "\n", "The return type is one of the most fundamental Julia data types: an array" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "Array{Float64,1}" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "typeof(ϵ)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "5-element Array{Float64,1}:\n", " -1.2418433428846225\n", " 0.034815280479051795\n", " 0.097936162596475\n", " 1.2843849964476541\n", " -0.18536959442283946" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ϵ[1:5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The information from `typeof()` tells us that `ϵ` is an array of 64 bit floating point values, of dimension 1.\n", "\n", "In Julia, one-dimensional arrays are interpreted as column vectors for purposes of linear algebra.\n", "\n", "The `ϵ[1:5]` returns an array of the first 5 elements of `ϵ`.\n", "\n", "Notice from the above that\n", "\n", "- array indices start at 1 (like MATLAB and Fortran, but unlike Python and C) \n", "- array elements are referenced using square brackets (unlike MATLAB and Fortran) \n", "\n", "\n", "To get **help and examples** in Jupyter or other julia editor, use the `?` before a function name or syntax." ] }, { "cell_type": "markdown", "metadata": { "hide-output": false }, "source": [ "```julia\n", "?typeof\n", "\n", "search: typeof typejoin TypeError\n", "\n", "Get the concrete type of x.\n", "\n", "Examples\n", "\n", "julia> a = 1//2;\n", "\n", "julia> typeof(a)\n", "Rational{Int64}\n", "\n", "julia> M = [1 2; 3.5 4];\n", "\n", "julia> typeof(M)\n", "Array{Float64,2}\n", "```\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### For Loops\n", "\n", "Although there’s no need in terms of what we wanted to achieve with our\n", "program, for the sake of learning syntax let’s rewrite our program to use a\n", "`for` loop for generating the data.\n", "\n", ">**Note**\n", ">\n", ">In Julia v0.7 and up, the rules for variables accessed in `for` and `while` loops can be sensitive to how they are used (and variables can sometimes require a `global` as part of the declaration). We strongly advise you to avoid top level (i.e. in the REPL or outside of functions) `for` and `while` loops outside of Jupyter notebooks. This issue does not apply when used within functions.\n", "\n", "Starting with the most direct version, and pretending we are in a world where `randn` can only return a single value" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "hide-output": false }, "outputs": [], "source": [ "# poor style\n", "n = 100\n", "ϵ = zeros(n)\n", "for i in 1:n\n", " ϵ[i] = randn()\n", "end" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we first declared `ϵ` to be a vector of `n` numbers, initialized by the floating point `0.0`.\n", "\n", "The `for` loop then populates this array by successive calls to `randn()`.\n", "\n", "Like all code blocks in Julia, the end of the `for` loop code block (which is just one line here) is indicated by the keyword `end`.\n", "\n", "The word `in` from the `for` loop can be replaced by either `∈` or `=`.\n", "\n", "The index variable is looped over for all integers from `1:n` – but this does not actually create a vector of those indices.\n", "\n", "Instead, it creates an **iterator** that is looped over – in this case the **range** of integers from `1` to `n`.\n", "\n", "While this example successfully fills in `ϵ` with the correct values, it is very indirect as the connection between the index `i` and the `ϵ` vector is unclear.\n", "\n", "To fix this, use `eachindex`" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "hide-output": false }, "outputs": [], "source": [ "# better style\n", "n = 100\n", "ϵ = zeros(n)\n", "for i in eachindex(ϵ)\n", " ϵ[i] = randn()\n", "end" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here, `eachindex(ϵ)` returns an iterator of indices which can be used to access `ϵ`.\n", "\n", "While iterators are memory efficient because the elements are generated on the fly rather than stored in memory, the main benefit is (1) it can lead to code which is clearer and less prone to typos; and (2) it allows the compiler flexibility to creatively generate fast code.\n", "\n", "In Julia you can also loop directly over arrays themselves, like so" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "0.6462327258740999" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ϵ_sum = 0.0 # careful to use 0.0 here, instead of 0\n", "m = 5\n", "for ϵ_val in ϵ[1:m]\n", " ϵ_sum = ϵ_sum + ϵ_val\n", "end\n", "ϵ_mean = ϵ_sum / m" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "where `ϵ[1:m]` returns the elements of the vector at indices `1` to `m`.\n", "\n", "Of course, in Julia there are built in functions to perform this calculation which we can compare against" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "true" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ϵ_mean ≈ mean(ϵ[1:m])\n", "ϵ_mean ≈ sum(ϵ[1:m]) / m" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In these examples, note the use of `≈` to test equality, rather than `==`, which is appropriate for integers and other types.\n", "\n", "Approximately equal, typed with `\\approx`, is the appropriate way to compare any floating point numbers due to the standard issues of [floating point math](https://floating-point-gui.de/).\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### User-Defined Functions\n", "\n", "For the sake of the exercise, let’s go back to the `for` loop but restructure our program so that generation of random variables takes place within a user-defined function.\n", "\n", "To make things more interesting, instead of directly plotting the draws from the distribution, let’s plot the squares of these draws" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "hide-output": false }, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# poor style\n", "function generatedata(n)\n", " ϵ = zeros(n)\n", " for i in eachindex(ϵ)\n", " ϵ[i] = (randn())^2 # squaring the result\n", " end\n", " return ϵ\n", "end\n", "\n", "data = generatedata(10)\n", "plot(data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here\n", "\n", "- `function` is a Julia keyword that indicates the start of a function definition \n", "- `generatedata` is an arbitrary name for the function \n", "- `return` is a keyword indicating the return value, as is often unnecessary \n", "\n", "\n", "Let us make this example slightly better by “remembering” that `randn` can return a vectors." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "5-element Array{Float64,1}:\n", " 5.899343334685265e-5\n", " 2.7013292493691687\n", " 0.16482905026631123\n", " 0.4654169462547691\n", " 0.11479031913761378" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# still poor style\n", "function generatedata(n)\n", " ϵ = randn(n) # use built in function\n", "\n", " for i in eachindex(ϵ)\n", " ϵ[i] = ϵ[i]^2 # squaring the result\n", " end\n", "\n", " return ϵ\n", "end\n", "data = generatedata(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "While better, the looping over the `i` index to square the results is difficult to read.\n", "\n", "Instead of looping, we can **broadcast** the `^2` square function over a vector using a `.`.\n", "\n", "To be clear, unlike Python, R, and MATLAB (to a lesser extent), the reason to drop the `for` is **not** for performance reasons, but rather because of code clarity.\n", "\n", "Loops of this sort are at least as efficient as vectorized approach in compiled languages like Julia, so use a for loop if you think it makes the code more clear." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "5-element Array{Float64,1}:\n", " 4.222226913497673\n", " 0.00021621170414375565\n", " 6.1477590127192\n", " 1.5211032220967127\n", " 0.04802586215468419" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# better style\n", "function generatedata(n)\n", " ϵ = randn(n) # use built in function\n", " return ϵ.^2\n", " end\n", "data = generatedata(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can even drop the `function` if we define it on a single line." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "5-element Array{Float64,1}:\n", " 1.5975060667542837\n", " 0.00010504247374677952\n", " 0.0922752271698986\n", " 0.2872874054833071\n", " 0.14902112700768044" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# good style\n", "generatedata(n) = randn(n).^2\n", "data = generatedata(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we can broadcast any function, where squaring is only a special case." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "5-element Array{Float64,1}:\n", " 10.758319037101021\n", " 2.837540169374459\n", " 0.45372028461056974\n", " 0.360555253618547\n", " 0.012889014767242376" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# good style\n", "f(x) = x^2 # simple square function\n", "generatedata(n) = f.(randn(n)) # uses broadcast for some function `f`\n", "data = generatedata(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As a final – abstract – approach, we can make the `generatedata` function able to generically apply to a function." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "5-element Array{Float64,1}:\n", " 0.3252704877135321\n", " 0.0015107695272444906\n", " 0.7243858609405561\n", " 7.290455211280642\n", " 0.078307306608254" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "generatedata(n, gen) = gen.(randn(n)) # uses broadcast for some function `gen`\n", "\n", "f(x) = x^2 # simple square function\n", "data = generatedata(5, f) # applies f" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Whether this example is better or worse than the previous version depends on how it is used.\n", "\n", "High degrees of abstraction and generality, e.g. passing in a function `f` in this case, can make code either clearer or more confusing, but Julia enables you to use these techniques **with no performance overhead**.\n", "\n", "For this particular case, the clearest and most general solution is probably the simplest." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "hide-output": false }, "outputs": [ { "data": { "image/png": "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776bEJJKpZ588smPPvqosrLyD3/4w4IFC9Tdzpy31rp161pbW7du3bp3796mpqa2tjZRFE0ZiW39/e9/nzFjxp133jk4OPjggw9Go9Hf//73H3zwwW9+85tLL72UEFJTU2P2GG1k//798+fPv/766wkhfr+fENLT07N06dKnnnpq/vz5a9asoZRu2LDB7GHaQm1t7S9+8Qvl8RdffPH8889v27btww8/7O3tvf/++5XrXq/XvAHaws6dOxsaGg4ePLhixQolEO7bt2/t2rWvv/66IAi//OUvQ6FQU1PTE0888cEHH2zZsuWTTz5pbm5ubW2trKxUcz9uOCUX+eTJk8qX8+bNe+2114wfBuS88MILixcv5pzPnDnz6NGjZg/HjhYvXvz222/nX3n22WeXLFmiPN6/f39NTU06nTZjaLa2evXqX/3qV5zzZ5555r777jN7OLYzd+7cXbt2KY9vv/32jRs3Ko+ffPLJZcuWpdPpUCi0b98+5eItt9zy3HPPqbuRCXuEra2tgiDkCjsWLFhw/Phx44cBOSdOnJg1a5by+NFHH73tttsef/zxSCRi7qjs5sUXX1y2bNn69eu7u7sJIV988UVunef666/v7Ozs7Ow0dYC2MzIysmvXrlxny4MHDy5btmz16tWffvqpuQOzp3HviOPHj3d2dobD4dzFqYQSE5ZGu7q68sshy8vLOzo6jB8GKD766KO33nrr888/J4SsXr36sssuS6fTmzdv3r1796FDhy5afwOaWLlyZSgUcjgcO3bsUN7PXV1d11xzjfJdURRFUQyHw9OnTzd3nLbyt7/9rbq6etGiRYSQq6+++uGHH54+ffrHH3+8aNGif/zjHwsXLjR7gPaSHzgqKirC4XBXV5fL5cptq5WXlx85ckTdi5sQCP1+fywWy30ZjUaLahMAGjp48OCqVavefffdhoYGQsgjjzyiXF+6dGldXd2RI0eUvwKgtzVr1igPfv7zn19++eXvv/++z+fLvU3S6XQ8HsfbxGCvvPLKvffeSyklhCxZskS52NzcPDAwsGXLFgRCg+W/I4aHh4PBoN/vTyaT6XRaySNTLqp7cROWRhsbGwcGBnp7e5UvW1tbGxsbjR8GHD58eMWKFa+//vqNN9447luSJFVUVPT395syMDsTBKG2tra/v/+SSy758ssvlYttbW1Op7O2ttbcsdlKe3v7oUOH7rnnnvO/VV9fj7eG8fLfEV9++WVjY2NdXZ3T6Wxra8u/qO7FTQiE06dPX7Ro0ZYtWwghp06dOnDgwMqVK40fhs199tlny5cv3759+80336xc6e7uzh0PuWPHju7u7vnz55s3QBsZHh7+97//rTzeu3fv0aNHb7jhhpaWlj179pw5c4YQsnnz5ttuuw2Z1Ubatm1bc3NzXV2d8uWxY8dkWSaEdHR0bN++/ac//amZg7OllpaWl19+OZFIJJPJl19+uaWlRRTF5cuX/+lPfyKEnD17ds+ePS0tLSpffcp5PWqcOHHi0ksvnT17dnl5+ebNm00Zg82tWrUq/9dg9uzZn3/+eTAYrKurq66ubmho2LNnj9ljtItvvvmmsrIyFArV1dVVVVW9+uqryvU//vGPwWBw5syZP/jBD77++mtTx2gv6XR6xowZ77zzTu5Kc3Ozz+drbGyUJGn16tXJZNLE4dlBU1NT/h+o/fv3x+PxFStWVFdXh0Kh5cuXj4yMcM6/+uqruXPnzpw5s7y8fNOmTapvZ1qvUVmWOzo6qqqq8Dn3uyOTyYTDYafTWVVVZfZY7IVzHg6HOefj1j8jkcjg4GB9fb1ZA4OcwcHBgYEBZTnO7LHYV09PD+d83B+ojo6OQCDg8/lUvyyabgMAgK2h1ygAANgaAiEAANgaAiEAANgaAiEAANgaAiEAANgaAiEAANgaAiEAANgaAiEAANgaAiEAANgaAiEAANgaAiEAANgaAiEAANgaAiEAANja/wPfvLfdwME+CwAAAABJRU5ErkJggg==" }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# direct solution with broadcasting, and small user-defined function\n", "n = 100\n", "f(x) = x^2\n", "\n", "x = randn(n)\n", "plot(f.(x), label=\"x^2\")\n", "plot!(x, label=\"x\") # layer on the same plot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "While broadcasting above superficially looks like vectorizing functions in MATLAB, or Python ufuncs, it is much richer and built on core foundations of the language.\n", "\n", "The other additional function `plot!` adds a graph to the existing plot.\n", "\n", "This follows a general convention in Julia, where a function that modifies the arguments or a global state has a `!` at the end of its name." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### A Slightly More Useful Function\n", "\n", "Let’s make a slightly more useful function.\n", "\n", "This function will be passed in a choice of probability distribution and respond by plotting a histogram of observations.\n", "\n", "In doing so we’ll make use of the `Distributions` package, which we assume was instantiated above with the project.\n", "\n", "Here’s the code" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "hide-output": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAIAAAD9V4nPAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nO3deXwTdR7/8W+OXmmhLVdLW5RLQHGXYzk9QBBZREAuUcR1RVSoCMUfrAuiINfiCT9hH4gcguAu7MqhyyGKi4IgIGi576tc9oDeaZNMkvn9kTW/WkA6Icmk/b6ef2W+k8/Mp2mSd+ZKDKqqCgAAZGXUuwEAAPREEAIApEYQAgCkRhACAKRGEAIApEYQAgCkRhACAKRGEAIApEYQAgCkRhACAKQWpCA8e/ZsYWFhgBbudrsDtOTKTlVVvkLvRlwul94thC4enBtRVZU3nBupvI9MkIJw1KhR27ZtC9DCS0pKArTkys5utzudTr27CFE8bX4DD86NuFwuu92udxchqrS0tJJ+8mbXKABAagQhAEBqBCEAQGoEIQBAagQhAEBqBCEAQGoEIQBAagQhAEBqZr0bABAoGzZu3LVrlw+FlqioCRMm+L0fIDQRhEDVlJ+f/2i/Aa4er2iuLC2scWgpQQh5EIRAlWUOj3D1fk1z2dXz4tDqALQDhCiOEQIApEYQAgCkRhACAKRGEAIApEYQAgCkRhACAKRGEAIApEYQAgCkxgX1AFBFFBUVderUSa+1u91uozGAG1ddunSZNWtWIJZMEAJAFeF0Ok+fPr1161a9G/G/b7/9NnB/F0EIAFWHyWRq1aqV3l34X0ZGRuCCkGOEAACpEYQAAKkRhAAAqRGEAACpEYQAAKkRhAAAqXH5BABUWcXFxd17PWp3BWl1teOqbVr3WZBW5j8EIQBUWYqi7P3hByV1VTBWZrdGLRsWjBX5G0EIoDynw75s2TIfCuPj43v37u33fnArjCazuLNrMNZUklfx++7fv//HH388efLk0KFDmzRpErimKoIgBPBrhdlFJbaRizZrrXOX5NexZhCEqIjBgwffeeedmzdvfuCBBwhCACHGpQhTePHTH2kuvHhQXfmM//tBZXbkyJHi4uJ27dp5Jo8fP56bm9uxY8cjR44IIerXr69nc7/grFEAQKAUFRUNGDDA5frf6TqjRo06dOiQvi1diyAEAARK+/btExISNm7cKIQ4e/bs7t27n3jiCb2bKo8gBAAE0PDhwxcsWCCEWLhw4eDBg6tVq6Z3R+URhACAABoyZMiuXbtOnz798ccfv/DCC3q3cx0EIQAggCwWy+DBgwcPHpycnNy6dWu927kOghAAEFipqal79+4dPny4d6R///6NGjW6dOnS0KFDGzVqdPToUR3b4/IJAEBgGQyG2NjYsqfJzJ071263eydTUlL06Ot/CEIAqLJMJpM5LCzs42eCsTKnw224zvDGjRvffvvtkSNHRkdHeweTk5OD0VLFEIQAUGVVr1792682Hjt2LDiri4gYdO3g+vXre/bsmZaWFpwefEAQAkBV1qZNmzZt2ujYwLx583Rce0VwsgwAQGoEIQBAagQhAEBqBCEAQGoEIQBAar4EodvtPnPmzLFjxxRF8Q66XK7Dhw9funTJf70BABBwmi+fuHDhQs+ePVVVtVgsmZmZq1evbtu27blz57p37+4Z6dev37x58wyG611XCQAIGKPRqKrq6NGj9W7E/86cOWM2B+p6P83Lfeedd5o2bbpq1SohxOuvv/7qq69u3rx50qRJ3bp1mzdvXm5ubosWLQYNGtSlS5cAdAsAuKHY2Nj//Oc/+/bt02XtDocjLCwsQFtBjRs3btSoUSCWLHwIQkVRvF+Nk5KSoiiKy+X69NNPd+7cKYSoUaPGgAEDVq5cSRACQPB16tSpU6dOuqzaarVaLJbKuDtQcxC+8sorQ4YMGTt2rMVi2bRp09y5c7Oysmw2mzerGzZs+MUXX5SrcrlcR48ejY+PLzvYsGHDunXr+tw6AAC3TnMQFhYWlpaWWq1WIYTNZrt69WrNmjWFEJGRkZ47WCyW4uLiclUlJSWLFy9evXp12cHU1NT+/fv72HgZVqtVVdVbX07VY7PZTCZTWFiY3o2EomufpVVMcXFx8F8XbtVdVFQU5JUGk9PpVBTF6XTq3UgoKikpcblcobZFaLFYTCbTb99HcxCmpaUNGTJk3LhxQogNGzYMGzbsxIkTQojc3NyEhAQhxNWrVz03yqpWrdpf/vKXXr16aV1dRRgMhpiYmEAsubILCwsjCH9DtWrV9G4hgHR5SzIajFX7UfUEYVRUlN6NhCKj0VhJd41qvnwiLy8vMTHRc7tu3boFBQXR0dF33HHH999/7xn8/vvv//CHP/izRwAAAkbzFmGfPn2mT59eq1atqKioSZMm9enTx2QypaWl/fWvf61WrdqRI0e2bdu2YMGCQPQKAIDfaQ7CyZMnJyUlLVy4UFGUHj16eC5YefHFF00m06xZs+Li4rZs2XLtrlEAAEKT5iA0m82pqampqallBw0Gw4gRI0aMGOG/xgAACAa+axQAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNbPeDQCoKkryLmVmhUdF+1DavuM9323Z7PeOgIogCAH4SdEVd5jFPeO45sIzu/K+mx6AhoAKIQgB+I/BICK0bxGGRQagFaCiOEYIAJAaQQgAkBpBCACQGkEIAJAaQQgAkBpBCACQGkEIAJAaQQgAkBpBCACQGkEIAJAaQQgAkBpBCACQGkEIAJAaQQgAkBpBCACQGkEIAJAaQQgAkBpBCACQGkEIAJAaQQgAkBpBCACQGkEIAJCa2beyPXv27N+/v2bNmg888EB8fLwQ4sKFC19//XVcXNwjjzwSHh7u1yYBqeXl5eXl5WmtKiwsVFU1EP0AVYzmIFRVddiwYVu2bOnSpUtBQUFGRsaYMWN27tzZs2fPgQMHnjhx4u233962bVtYWFgg2gVko6pqq3seuFpQpLXQ7XI6FCUQLQFVjOYgXL58+Y4dOw4cOFC9enXv4JQpUyZMmPDKK684nc7WrVuvWbPm8ccf92ufgKRUVc04flAssGuuvJohXv99ADoCqhrNxwhXrlw5YsSIy5cvf/XVVzk5OUIIh8OxefPm/v37CyHMZnOfPn02bNjg/04BAAgAzVuEZ86cWbt27apVq5KTk7ds2bJixYomTZq43e7k5GTPHZKSknbt2lWuyuFwrFmz5tixY2UHO3fu3LJlS59b91IURWEX0PUoiuJ2u/XuIkRVlqeNJP9BVVUrxb/D6XQqimI2+3h2RdXmeU0ZDAa9G/kVs9l805Y0/zttNltUVNSmTZsMBsP8+fPHjBmzbt06IYR3TSaTyel0lqtyuVw5OTkZGRllBwsKClwul9YGruVyufyynKrH87AYjZwbfB2V5WkjSRAKVa0U/w7XL/RuJBR5HplQC0KTyeT/IExKSrrvvvs8y+3UqdNLL71Up04dIUR2dvZtt90mhMjKykpKSipXFRUVNXz48F69emldXUU4nc7IyMhALLkKMJlMnLh0XYqiVIqnjSRBaDAaK8W/w+l0mkymStFq8LlcrsjIyFALworQvK3QrVu3EydOeG4fP348KSkpJiamY8eOmzZt8gx++eWXXbt29WePAAAEjOYtwhdffLFNmzZjxoxJSUmZPXv2tGnThBATJ058+umnr169evjw4ezs7MGDBwegVQAA/E/zFmFiYuLevXvr1atnt9vXrl377LPPCiEeeeSRTZs22Wy2Nm3a7N69Ozo6OgCtAgDgf76c+5SYmDh27Nhyg23btm3btq0/WgIAIHg4nxAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1s8+VS5YsEUIMHTrUM/nFF1+sW7cuLi4uNTW1Xr16/ukOAIAA83GLcP369WPHjp0zZ45n8l//+tfQoUNbtWpVWlraoUOHgoIC/3UIAEAA+RKEBQUF48ePnzBhgnfkrbfeeuedd55//vnZs2c3a9Zs+fLl/usQAIAA8iUIx44dm5aWlpyc7Jm0Wq3p6eldu3b1THbt2nX79u1+axAAgEDSfIxwy5Ytp06dWrhw4YoVKzwjmZmZQohatWp5JmvXrn358uVyVVar9c0331y2bFnZwSeffLJ79+6+dP1rJSUlRiNn/VyHzWYzmUxhYWF6NxKKSktLTSaT3l3cnNvt1ruFYFDd7pKSEr27uDmn06koiqqqejcSijz/QYPBoHcjvxIZGXnTgNAWhFar9aWXXlq9enXZPzUiIkIIoSiK54bD4YiKiipXGB4e3qZNm1atWpUdbNasWWRkpKYGrsvpdPplOVUSQXgjiqJUiqeNJEFoMBorxb/D6XSaTKZK0WrwuVyuyMjIUAvCimwmaQvCH3744ezZs7169RJCFBcX5+fnN2rUKD093Ww2X7x4sVmzZkKIixcvJiUllSsMCwvr3Lmzp9DvjEYjW4TXZfyF3o2EIh6ZUFMp/h28pn6D55EJtSCsCG3/zg4dOhw+fHjz5s2bN2+eMGFCo0aNNm/eXK1atUceecSzp9Rms61du7Zv376B6RYAAD/TtkUYFRXVsGFDz+06depERER4JqdMmdK9e/cDBw6cOXOmUaNGAdryAyq1h/o+vnXTOl8qOSAFBJLvF9T36NHDe8yvRYsWx48f3759e82aNdu3b89+A+Ba323eqMw8KSJitJW5XWJUzcB0BECIWwnCGjVq1KhRwzsZFxfHhiBwE2FRItyircTtDEwrAP6HTTcAgNQIQgCA1AhCAIDUCEIAgNQIQgCA1AhCAIDUCEIAgNQIQgCA1AhCAIDUCEIAgNQIQgCA1AhCAIDUCEIAgNQIQgCA1AhCAIDUCEIAgNQIQgCA1AhCAIDUCEIAgNQIQgCA1AhCAIDUCEIAgNQIQgCA1AhCAIDUCEIAgNQIQgCA1AhCAIDUCEIAgNQIQgCA1AhCAIDUCEIAgNQIQgCA1AhCAIDUCEIAgNQIQgCA1AhCAIDUCEIAgNTMejcAAKK4IH/JkiU+FNarV69bt25+7wdSIQgB6C3z+IXMnFEff6u1zpV7qW1iBEGIW0QQAtCb02GIS7Q+tUhz4YGN7qMLAtAQ5MIxQgCA1AhCAIDUCEIAgNQIQgCA1AhCAIDUCEIAgNQIQgCA1AhCAIDUCEIAgNQIQgCA1AhCAIDUCEIAgNQIQgCA1AhCAIDUCEIAgNQIQgCA1PhhXkCbIS+M+uxf//Ch0O5w+L0ZALeOIAS02fiftSX/Z4uIq6u5ctxtAWgHwK0iCAHtLHEiuobeTQDwD44RAgCkRhACAKRGEAIApEYQAgCkpjkIz507N27cuPvvv//ee++dMGFCYWGhEMLlck2dOrVt27YPPfTQN998E4A+AQAICM1BmJ6eHhERMWPGjPfee2/Hjh3PPfecEOLdd99du3btwoULhw4d2rdv3/PnzwegVQAA/E/z5RP9+vXr16+f5/aMGTN69eolhJg3b968efNatmzZsmXLtWvXLlmyZPLkyX7uFACAALilY4Tp6elNmjTJz88/f/58u3btPIPt2rXbv3+/P3oDACDgfL+g/tixY2+88cZnn32WnZ0thIiLi/OMx8fHe0bKKiwsfO655ywWS9nBv/71r0OGDPG5AS+r1XrrC6mSbDabyWQKCwvTu5FQNHH62ytX/NOHwsKCQr83A6H6WOdyuYqLi/3aym9xOp2KorhcrqCtsRIpKSlxu90Gg0HvRn7FYrEYjTfZ5PMxCM+cOdO9e/dZs2Z16tQpKytLCFFSUhIbGyuEKC4u9oaiV0xMzLRp07p06VJ2sHbt2jExMb41cO3y/bKcKsZsNhOEN7J61ac5/d8XdRprLTRMaxuIfmTn65unyWQK5svfE4RRUVFBW2MlYjAYLBZLqAVhRfgShOfPn+/Wrdurr776zDPPiF/y7OTJk23atBFCnDx5sn79+uVKjEZj3bp1GzfW/KYDBFCN20SdRno3AUBnmo8RXrx4sWvXrqmpqSNGjPjfIozGwYMHv//++0KIy5cvr1q1yi87PAEACALNQbhu3brc3NyZM2fW+EVJScm0adNOnTqVnJzcvHnz4cOHd+zYMRC9AgDgd5p3jaampqamppYbtFgsO3fuzM7OjomJKXdGDAAAocyfP8NUp04dPy4NAIAg4PcIAVRi2Zcvzpgxw4fC5s2b9+3b1+/9oDIiCAFUWhk/nc4umLRT83WE6uUjPdMPEYTwIAgBVFqq21DrdlffqZoLf/iXyN0QgIZQKfEzTAAAqRGEAACpEYQAAKkRhAAAqRGEAACpEYQAAKkRhAAAqRGEAACpcUE9ABldvpAxb948rVVutzsjI6NBgwY+rLF169YdOnTwoRCBRhACkM+5vQfOZY1bc0BrnePIN8JgDL+zs9ZCZ8a+Uf0yCMLQRBACkI9LMaTcXfrEXM2FC582RUT4UrjpHaEWaK5CUHCMEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1ghAAIDWCEAAgNYIQACA1s94NALdk5w97Fyz6yIfC/IICvzcDoDIiCFG5PZs66ljte0St+loLDaUrAtAOgMqHIETl16qvaNRBc9Xnb/i/EwCVEMcIAQBSIwgBAFIjCAEAUiMIAQBS42QZhASr1XrkyBEfCm22Ur83A0AqBCFCwvCXx3+28UtzdHWthYWXzgeiHwDyIAgREk6ePGF9bLZo3l1rofEvt6mBaAiANDhGCACQGluEABB4qvr9999PeHWiD6U9/ti9c+fOWquKi4tn/G2mD6sTQjw+6LGWLVv6VlsZEYQAEHgnvtttV3cdjdBaZzj635hoiw9BOOYv4xd/f040bKe1MHzfmjubNSUIAQB+ZmjYXn1kguYq5RbOi27+kOj6otai8KsnfV9j5cQxQgCA1AhCAIDUCEIAgNQIQgCA1AhCAIDUCEIAgNQIQgCA1AhCAIDUuKC+KlMUZc6cOSaTyYfa7t27/+53v9NalZubu2TJEh9Wl5n5sw9VQNWnqtu3b3/vvfe01h08eEjcdkcgOqp6CMKqbNKUaXM37DbWb6210Hjk6+rVq/sQhENfTNt4PM+QqPnl57qcpbUEkIF6aueXbsd/xUWthe4jJ8VtgeioCiIIqzK73e763SOu7i9rLbTYR/i8Rmf7IaLNQK2Fpr1rfFsjUMWpLvXuhxXt381mOro1EO1USf48Rqgoih+XBgBAEPhnizA/P/+pp57atm2b2WyePHlyWlqaXxZbEXl5eYOGjsj8+bIPtQ8/2Pntv033e0s3cuHChX5PPWu32bQWOuy2kpLSuPh4rYU/Xzwv7h2ptUoI4S7OnfL2/52zaJnWwozz58Wj/XxYI4DKbsNXW6a9+bYPhWaDWDJ/ro6/d+GfIJw8ebLZbL569erZs2c7dOjQuXPnoP1JP/74485Dp6wD3tVceeK7Ogf2BaCjG1q9evUBW6zywKuaK1eOFcmtL94/VGud8R8vaV6XEEIIZ+bpS817Xvp9T62FpiWamwRQNcz94MNDyX8Ud9yrtTBm1cv5+fmBaKmC/BCEqqouW7Zsw4YNYWFhTZo0GTBgwMcffxzMbDdHx4o77tNcVnRFnA9qEAohjHFJvrQaFStq1POlMCJac4lXnUY+rNFgDvd9jQAqu6S7fHjfMFtiA9GLhgZufRE5OTn5+fl33XWXZ/Kuu+7asmVLufuoqlpUVJSbm1t2MDo6OiJC889UXkt1OYU19+b3K8de7HQ6y7VUQQaDQVVVrVUlJSWq0+5Lq26ncNp8KnQJpdSHQtXtEo4Sn9boFnarL4WqKmzFvhYW+VQoRGmBL4VCiJJ8ER7lY6FL46F0t0sI4UufpYVCqD69NIqEcPtS6LAKt8unwhLVt0LFJnx7+St24VR8KXQ5hGLwqdApFJ9exT4Xqj6+ilWn3Wq1+vDe6HK5hN2XV7Hqdmot8S9f3tDLOXHiRNOmTR0OR1hYmBBi8eLFH3300Y4dO8re5/77709PT/fcweuNN94YNmzYLa59+/btAx4f7NvfEB0e5nT6coJPQkJCVpbm0/3tdrswRwiD5tU5HXZhMJnDNH9qURwOg9FoNmsvVBSjwWgya74A0aG4TEaDyaT5JCyH4jIbDUYfCh1Os9lkNGp+WO0OJdxsNvhQaLeHh4cbDJoLbaWlkZFRPjwBbFZrZLT2jXtVtZWWRlosmuvcbofdHhGlOelVt8vhUCIiI7UWul0up6KE+1DodDpdrnDtn6ddiuJW1bBwzTswXIrDrRrCwsNuftdf8/lV7HTYhdHkw6vYqSgGn17Fwu02qq5yb9cVYYq0lJSUaF6dEEYhPlv9aYcOHXyovSmLxWI03uSNxQ9bhLVq1RJCFBYW1qxZUwiRl5eXkJBQ7j6xsbErV67s1avXra+unB49emRduhATE+P3JVcBNpvNZDL58ISWQVFRUbVq1fTuIkTx4NyI0+lUFCVK+6cEGVitVovF4sNnRN354fKJ+Pj4xMTE9PR0z+S+ffuaNWt264sFACAI/LBFaDAYnn/++SlTptx5551HjhxZt27djz/+eOuLBQAgCPxz+cTEiRPz8/PvueeemjVrLl26tHHjxn5ZLAAAgeafIIyIiJgzZ86cOXP8sjQAAIKm0v8M0759+6ZOnap3FyFq6dKln3/+ud5dhKiXX375woULencRinJyclJTU/XuIkRt2rTpww8/1LuLEPXmm2/u3r1b7y58UemD8MqVK3v27NG7ixB19OjRM2fO6N1FiNq+fXtRUZHeXYSikpKSrVv5vubrO3/+/KFDh/TuIkSlp6dnZmbq3YUvKn0QAgBwKwhCAIDU/PDNMhUxfvz4pUuXBuLKbkVRbDYbF/9eV0lJidFojNT+hR0yKCgoiImJMZm0f+9GVed2uwsLC+Pi4vRuJBTZ7Xan0xntwxf9SKC4uDgiIiLUvsHjyy+/9H4D6I0EKQgVRamk+44BAJVXYmLiTbM5SEEIAEBo4hghAEBqBCEAQGr++WaZIHv88cfL7tHt1avX008/7bk9a9asXbt2eW5Xr1590aJFOvSnn4KCgueff947OXDgwEGDBnknT58+/dprr50+fbpDhw7Tp0+vXr26Hj3q5tChQwsXLvzpp58iIiJ69uw5evRo70/b7Nq1a9asWd57Tpo06e6779apzWBTFGXGjBlffvll7dq1X3vttXbt2pWd+49//GPhwoVCiBdeeOHJJ5/UqUd9OByODz744L///W9OTk6zZs1effXVO+64wzs3NTX16tWrnttt2rR55ZVXdGpTH0ePHp08ebJ3Mi0t7d57//8P0+/evXv69OlXrlzp0aPHxIkTffgNqSAL9f6u67HHHvMEodPpfPbZZ5966invrJ07d9aoUaNbt25CCL/86m/lYrfb16xZs2LFCs9k2XOlXC7Xww8//Nhjj40fP37q1KnDhw/33k0SW7ZsqV279vTp00tLS9PS0vLy8qZNm+aZdfHixaNHj06aNMkzWadOHf3aDLbp06dv2rRp3rx5e/bs+eMf/3jq1CnP76kJIb7++usxY8b885//FEI8+eSTiYmJXbt21bXZoCosLPzuu++eeeaZlJSUTz755IEHHjh27Jj3BPX169enpaXdfvvtQoikpCRdO9VBTk7Orl273nvvPc9kvXr1vLM8+Tdz5sy2bdu++OKLBoPB+8oKXWpltm7duoSEBIfD4R0ZOHDghx9+qGNL+srKyjKbzdedtX79+ttvv91z++effw4PD//555+D11mI+eijj1q3bu2d/PTTT7t27apjP3pRFKVOnTpbt271TD700EOzZs3yzn300UenTZvmuT1t2rR+/frp0GJocLvdsbGx27Zt846kpKTs379fx5b0tXXr1rvvvvu6s959993u3bt7bn/77beJiYlOpzOIrfmich8jXLx48TPPPFPu1NilS5f27t173LhxFy9e1KsxHbnd7kGDBj3xxBOLFi1yuVze8f3797dt29ZzOzExMSkp6fDhwzr1qL8DBw6U+42U48eP9+nTZ9iwYZs3b9arq+D7+eefs7Oz27dv75ls3779/v37vXMPHDjgndWuXbuys2STkZFhtVobNGhQdnD8+PH9+/efOXOm1WrVqzEdXb58uW/fvn/+858/++yzsuPlnjaZmZmhf+1cpdw16pGdnb1x48a//e1vZQd79uwZHR1tsVhWrVrVunXrgwcPJiQk6NVh8EVEREydOrVVq1Y5OTkzZszYu3fv/PnzPbOys7Pj4+O994yPj8/KytKpTZ1t27bto48+KvsVtbfffvvEiRMbNGhw+PDhgQMHfvDBB5IcD8vOzo6KivIeRIiPj9+7d2/Zud7L6mvUqCHtE8bhcPzpT38aM2ZMSkqKd3DkyJF33XWXw+GYM2fO+vXrt23bJo/RHHIAAASlSURBVNWXMyQkJEyaNKlp06anTp164YUXMjIy0tLSPLOys7NbtGjhuR0VFRUVFZWVlZWcnKxfsxWg9yZpheTl5XX5hd1u9wy+88479913329UtW/f/v333w9Kg3pavny555GZOXNm2fG9e/eaTKbS0lLP5Ouvvz5kyBDv3CZNmqxfvz6ojeph7ty5ngfngw8+8Izs2bOnTp06X3zxxY1KZs+e3bFjx2A1qLMTJ04YjUbvnqspU6Y88cQT3rmJiYnffvut5/Y333yTnJysQ4t6czgcjz76aP/+/RVFue4dCgsLo6Ojd+/eHeTGQscnn3zSuHFj7+Rjjz3m3aOuKIrBYDh9+rROrVVU5dgijImJeeuttzy3vTtClyxZMm7cuN+oSklJycvLC3hzenvwwQebNm0qhKhVq1bZ8ZSUFJfLVVRU5PmKtfr163/11VeeWTab7eLFi57j/FVbnz59PHtpEhMThRD79u3r3bv3woULe/TocaOSlJSU/Pz84LWoq6SkJJPJdObMGc/5kKdOnSr7rKhfv/6pU6c6d+587SxJOJ3OIUOGuFyuf//73zc69bFatWqxsbHyPGeulZycXPad1vO08dw+ffp0WFhY3bp1dWqtwvROYh/t2LEjJiamsLDQM5mdnT116lSr1Zqenu4Z2bVrV0xMjPfzrCROnjyZl5enqqrD4Rg9enTz5s1VVd24cePnn3+em5vr/dw6b968Fi1a6Nxr0B09ejQ5OXnFihVlB+fPn//TTz/t37/fc8rV1atXO3XqlJqaqlOPOhg4cODo0aNVVc3IyIiPj/ecADJ9+vTz58/PmTOnffv2drvdbre3a9fu73//u97NBpXT6Xzqqaceeugh724VVVXT09Pnz5+fmZl5/vx5z8iCBQuqV69+5coVndrUx8GDBz0PS1FRUe/evQcMGKCq6rJly7Zv356enh4fH5+RkaGq6qhRozxXu4W4yhqEw4YNe+6557yThw4dMpvNV65cSUxMrFWrVkpKSlxc3OzZs3XsUBdLly6NiYmpV69ebGxs27ZtDx48qKrqyJEjn332WVVVly9fXqNGjSZNmtSrV0/CPTkjR44s+xEwMTFRVdWWLVsuWrRo+PDh0dHRDRo0iIqKGjhwoOfDhCTOnj179913N2zYMD4+3rtHKyIiYseOHaWlpf369UtISEhISOjfv7/NZtO31SA7ceJEuc2GlStXLl68uGXLlj/88ENsbGxSUlLt2rXr16//G3vaq6qJEydGR0fXr1/fYrE8/PDDly9fVlX1wQcffOutt1RVnTJlSlxcXMOGDX//+9+fO3dO72Zvrgp+12h2draiKElJSQaDQe9edOBwODIzM+Pi4q57vbzdbs/MzExJSZHqwH5FWK3W7OzspKQkCS8/VVX10qVLcXFxMTEx187NyckRQtSuXTvofYU0l8uVlZUVHh5e7pCEPEpLS7OyshISEqKioq6dW1RUVFBQUPb0olBWBYMQAICKq9zXEQIAcIsIQgCA1AhCAIDUCEIAgNQIQgCA1AhCAIDUCEIAgNQIQgCA1AhCAIDUCEIAgNQIQgCA1AhCAIDUCEIAgNT+H+FohfIwO7KLAAAAAElFTkSuQmCC" }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "using Distributions\n", "\n", "function plothistogram(distribution, n)\n", " ϵ = rand(distribution, n) # n draws from distribution\n", " histogram(ϵ)\n", "end\n", "\n", "lp = Laplace()\n", "plothistogram(lp, 500)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let’s have a casual discussion of how all this works while leaving technical details for later in the lectures.\n", "\n", "First, `lp = Laplace()` creates an instance of a data type defined\n", "in the `Distributions` module that represents the Laplace distribution.\n", "\n", "The name `lp` is bound to this value.\n", "\n", "When we make the function call `plothistogram(lp, 500)` the code in the body\n", "of the function `plothistogram` is run with\n", "\n", "- the name `distribution` bound to the same value as `lp` \n", "- the name `n` bound to the integer `500` " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### A Mystery\n", "\n", "Now consider the function call `rand(distribution, n)`.\n", "\n", "This looks like something of a mystery.\n", "\n", "The function `rand()` is defined in the base library such that `rand(n)` returns `n` uniform random variables on $ [0, 1) $." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "3-element Array{Float64,1}:\n", " 0.10127440130185938\n", " 0.8674278247892253\n", " 0.2651255434123343" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rand(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On the other hand, `distribution` points to a data type representing the Laplace distribution that has been defined in a third party package.\n", "\n", "So how can it be that `rand()` is able to take this kind of value as an\n", "argument and return the output that we want?\n", "\n", "The answer in a nutshell is **multiple dispatch**, which Julia uses to implement **generic programming**.\n", "\n", "This refers to the idea that functions in Julia can have different behavior\n", "depending on the particular arguments that they’re passed.\n", "\n", "Hence in Julia we can take an existing function and give it a new behavior by defining how it acts on a new type of value.\n", "\n", "The compiler knows which function definition to apply to in a given setting by looking at the types of the values the function is called on.\n", "\n", "In Julia these alternative versions of a function are called **methods**." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example: Variations on Fixed Points\n", "\n", "Take a mapping $ f : X \\to X $ for some set $ X $.\n", "\n", "If there exists an $ x^* \\in X $ such that $ f(x^*) = x^* $, then $ x^* $: is called a “fixed point” of $ f $.\n", "\n", "For our second example, we will start with a simple example of determining fixed points of a function.\n", "\n", "The goal is to start with code in a MATLAB style, and move towards a more **Julian** style with high mathematical clarity." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fixed Point Maps\n", "\n", "Consider the simple equation, where the scalars $ p,\\beta $ are given, and $ v $ is the scalar we wish to solve for\n", "\n", "$$\n", "v = p + \\beta v\n", "$$\n", "\n", "Of course, in this simple example, with parameter restrictions this can be solved as $ v = p/(1 - \\beta) $.\n", "\n", "Rearrange the equation in terms of a map $ f(x) : \\mathbb R \\to \\mathbb R $\n", "\n", "\n", "\n", "$$\n", "v = f(v) \\tag{1}\n", "$$\n", "\n", "where\n", "\n", "$$\n", "f(v) := p + \\beta v\n", "$$\n", "\n", "Therefore, a fixed point $ v^* $ of $ f(\\cdot) $ is a solution to the above problem." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### While Loops\n", "\n", "One approach to finding a fixed point of [(1)](#equation-fixed-point-map) is to start with an initial value, and iterate the map\n", "\n", "\n", "\n", "$$\n", "v^{n+1} = f(v^n) \\tag{2}\n", "$$\n", "\n", "For this exact `f` function, we can see the convergence to $ v = p/(1-\\beta) $ when $ |\\beta| < 1 $ by iterating backwards and taking $ n\\to\\infty $\n", "\n", "$$\n", "v^{n+1} = p + \\beta v^n = p + \\beta p + \\beta^2 v^{n-1} = p \\sum_{i=0}^{n-1} \\beta^i + \\beta^n v_0\n", "$$\n", "\n", "To implement the iteration in [(2)](#equation-fixed-point-naive), we start by solving this problem with a `while` loop.\n", "\n", "The syntax for the while loop contains no surprises, and looks nearly identical to a MATLAB implementation." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "hide-output": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fixed point = 9.999999173706609, and |f(x) - x| = 9.181037796679448e-8 in 155 iterations\n" ] } ], "source": [ "# poor style\n", "p = 1.0 # note 1.0 rather than 1\n", "β = 0.9\n", "maxiter = 1000\n", "tolerance = 1.0E-7\n", "v_iv = 0.8 # initial condition\n", "\n", "# setup the algorithm\n", "v_old = v_iv\n", "normdiff = Inf\n", "iter = 1\n", "while normdiff > tolerance && iter <= maxiter\n", " v_new = p + β * v_old # the f(v) map\n", " normdiff = norm(v_new - v_old)\n", "\n", " # replace and continue\n", " v_old = v_new\n", " iter = iter + 1\n", "end\n", "println(\"Fixed point = $v_old, and |f(x) - x| = $normdiff in $iter iterations\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `while` loop, like the `for` loop should only be used directly in Jupyter or the inside of a function.\n", "\n", "Here, we have used the `norm` function (from the `LinearAlgebra` base library) to compare the values.\n", "\n", "The other new function is the `println` with the string interpolation, which splices the value of an expression or variable prefixed by \\$ into a string.\n", "\n", "An alternative approach is to use a `for` loop, and check for convergence in each iteration." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "hide-output": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fixed point = 9.999999081896231, and |f(x) - x| = 9.181037796679448e-8 in 154 iterations\n" ] } ], "source": [ "# setup the algorithm\n", "v_old = v_iv\n", "normdiff = Inf\n", "iter = 1\n", "for i in 1:maxiter\n", " v_new = p + β * v_old # the f(v) map\n", " normdiff = norm(v_new - v_old)\n", " if normdiff < tolerance # check convergence\n", " iter = i\n", " break # converged, exit loop\n", " end\n", " # replace and continue\n", " v_old = v_new\n", "end\n", "println(\"Fixed point = $v_old, and |f(x) - x| = $normdiff in $iter iterations\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The new feature there is `break` , which leaves a `for` or `while` loop." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Using a Function\n", "\n", "The first problem with this setup is that it depends on being sequentially run – which can be easily remedied with a function." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "hide-output": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fixed point = 9.999999173706609, and |f(x) - x| = 9.181037796679448e-8 in 155 iterations\n" ] } ], "source": [ "# better, but still poor style\n", "function v_fp(β, ρ, v_iv, tolerance, maxiter)\n", " # setup the algorithm\n", " v_old = v_iv\n", " normdiff = Inf\n", " iter = 1\n", " while normdiff > tolerance && iter <= maxiter\n", " v_new = p + β * v_old # the f(v) map\n", " normdiff = norm(v_new - v_old)\n", "\n", " # replace and continue\n", " v_old = v_new\n", " iter = iter + 1\n", " end\n", " return (v_old, normdiff, iter) # returns a tuple\n", "end\n", "\n", "# some values\n", "p = 1.0 # note 1.0 rather than 1\n", "β = 0.9\n", "maxiter = 1000\n", "tolerance = 1.0E-7\n", "v_initial = 0.8 # initial condition\n", "\n", "v_star, normdiff, iter = v_fp(β, p, v_initial, tolerance, maxiter)\n", "println(\"Fixed point = $v_star, and |f(x) - x| = $normdiff in $iter iterations\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "While better, there could still be improvements." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Passing a Function\n", "\n", "The chief issue is that the algorithm (finding a fixed point) is reusable and generic, while the function we calculate `p + β * v` is specific to our problem.\n", "\n", "A key feature of languages like Julia, is the ability to efficiently handle functions passed to other functions." ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "hide-output": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fixed point = 9.999999173706609, and |f(x) - x| = 9.181037796679448e-8 in 155 iterations\n" ] } ], "source": [ "# better style\n", "function fixedpointmap(f, iv, tolerance, maxiter)\n", " # setup the algorithm\n", " x_old = iv\n", " normdiff = Inf\n", " iter = 1\n", " while normdiff > tolerance && iter <= maxiter\n", " x_new = f(x_old) # use the passed in map\n", " normdiff = norm(x_new - x_old)\n", " x_old = x_new\n", " iter = iter + 1\n", " end\n", " return (x_old, normdiff, iter)\n", "end\n", "\n", "# define a map and parameters\n", "p = 1.0\n", "β = 0.9\n", "f(v) = p + β * v # note that p and β are used in the function!\n", "\n", "maxiter = 1000\n", "tolerance = 1.0E-7\n", "v_initial = 0.8 # initial condition\n", "\n", "v_star, normdiff, iter = fixedpointmap(f, v_initial, tolerance, maxiter)\n", "println(\"Fixed point = $v_star, and |f(x) - x| = $normdiff in $iter iterations\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Much closer, but there are still hidden bugs if the user orders the settings or returns types wrong." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Named Arguments and Return Values\n", "\n", "To enable this, Julia has two features: named function parameters, and named tuples" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "hide-output": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fixed point = 9.999999918629035, and |f(x) - x| = 9.041219328764782e-9 in 177 iterations\n" ] } ], "source": [ "# good style\n", "function fixedpointmap(f; iv, tolerance=1E-7, maxiter=1000)\n", " # setup the algorithm\n", " x_old = iv\n", " normdiff = Inf\n", " iter = 1\n", " while normdiff > tolerance && iter <= maxiter\n", " x_new = f(x_old) # use the passed in map\n", " normdiff = norm(x_new - x_old)\n", " x_old = x_new\n", " iter = iter + 1\n", " end\n", " return (value = x_old, normdiff=normdiff, iter=iter) # A named tuple\n", "end\n", "\n", "# define a map and parameters\n", "p = 1.0\n", "β = 0.9\n", "f(v) = p + β * v # note that p and β are used in the function!\n", "\n", "sol = fixedpointmap(f, iv=0.8, tolerance=1.0E-8) # don't need to pass\n", "println(\"Fixed point = $(sol.value), and |f(x) - x| = $(sol.normdiff) in $(sol.iter)\"*\n", " \" iterations\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this example, all function parameters after the `;` in the list, must be called by name.\n", "\n", "Furthermore, a default value may be enabled – so the named parameter `iv` is required while `tolerance` and `maxiter` have default values.\n", "\n", "The return type of the function also has named fields, `value, normdiff,` and `iter` – all accessed intuitively using `.`.\n", "\n", "To show the flexibilty of this code, we can use it to find a fixed point of the non-linear logistic equation, $ x = f(x) $ where $ f(x) := r x (1-x) $." ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "hide-output": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fixed point = 0.4999999999999968, and |f(x) - x| = 3.979330237546819e-8 in 7 iterations\n" ] } ], "source": [ "r = 2.0\n", "f(x) = r * x * (1 - x)\n", "\n", "sol = fixedpointmap(f, iv=0.8)\n", "println(\"Fixed point = $(sol.value), and |f(x) - x| = $(sol.normdiff) in $(sol.iter) iterations\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Using a Package\n", "\n", "But best of all is to avoid writing code altogether." ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "hide-output": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fixed point = [9.999999999999973], and |f(x) - x| = 3.552713678800501e-15 in 3 iterations\n" ] } ], "source": [ "# best style\n", "using NLsolve\n", "\n", "p = 1.0\n", "β = 0.9\n", "f(v) = p .+ β * v # broadcast the +\n", "sol = fixedpoint(f, [0.8])\n", "println(\"Fixed point = $(sol.zero), and |f(x) - x| = $(norm(f(sol.zero) - sol.zero)) in \" *\n", " \"$(sol.iterations) iterations\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `fixedpoint` function from the `NLsolve.jl` library implements the simple fixed point iteration scheme above.\n", "\n", "Since the `NLsolve` library only accepts vector based inputs, we needed to make the `f(v)` function broadcast on the `+` sign, and pass in the initial condition as a vector of length 1 with `[0.8]`.\n", "\n", "While a key benefit of using a package is that the code is clearer, and the implementation is tested, by using an orthogonal library we also enable performance improvements." ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "hide-output": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fixed point = [9.999999999999973], and |f(x) - x| = 3.552713678800501e-15 in 3 iterations\n" ] } ], "source": [ "# best style\n", "p = 1.0\n", "β = 0.9\n", "iv = [0.8]\n", "sol = fixedpoint(v -> p .+ β * v, iv)\n", "println(\"Fixed point = $(sol.zero), and |f(x) - x| = $(norm(f(sol.zero) - sol.zero)) in \" *\n", " \"$(sol.iterations) iterations\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that this completes in `3` iterations vs `177` for the naive fixed point iteration algorithm.\n", "\n", "Since Anderson iteration is doing more calculations in an iteration, whether it is faster or not would depend on the complexity of the `f` function.\n", "\n", "But this demonstrates the value of keeping the math separate from the algorithm, since by decoupling the mathematical definition of the fixed point from the implementation in [(2)](#equation-fixed-point-naive), we were able to exploit new algorithms for finding a fixed point.\n", "\n", "The only other change in this function is the move from directly defining `f(v)` and using an **anonymous** function.\n", "\n", "Similar to anonymous functions in MATLAB, and lambda functions in Python, Julia enables the creation of small functions without any names.\n", "\n", "The code `v -> p .+ β * v` defines a function of a dummy argument, `v` with the same body as our `f(x)`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Composing Packages\n", "\n", "A key benefit of using Julia is that you can compose various packages, types, and techniques, without making changes to your underlying source.\n", "\n", "As an example, consider if we want to solve the model with a higher-precision, as floating points cannot be distinguished beyond the machine epsilon for that type (recall that computers approximate real numbers to the nearest binary of a given precision; the *machine epsilon* is the smallest nonzero magnitude).\n", "\n", "In Julia, this number can be calculated as" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "2.220446049250313e-16" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eps()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For many cases, this is sufficient precision – but consider that in iterative algorithms applied millions of times, those small differences can add up.\n", "\n", "The only change we will need to our model in order to use a different floating point type is to call the function with an arbitrary precision floating point, `BigFloat`, for the initial value." ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "hide-output": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fixed point = BigFloat[10.00000000000000222044604925031357388532909931412848377287867809936811555686155], and |f(x) - x| = 0.0 in 3 iterations\n" ] } ], "source": [ "# use arbitrary precision floating points\n", "p = 1.0\n", "β = 0.9\n", "iv = [BigFloat(0.8)] # higher precision\n", "\n", "# otherwise identical\n", "sol = fixedpoint(v -> p .+ β * v, iv)\n", "println(\"Fixed point = $(sol.zero), and |f(x) - x| = $(norm(f(sol.zero) - sol.zero)) in \" *\n", " \"$(sol.iterations) iterations\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here, the literal `BigFloat(0.8)` takes the number `0.8` and changes it to an arbitrary precision number.\n", "\n", "The result is that the residual is now **exactly** `0.0` since it is able to use arbitrary precision in the calculations, and the solution has a finite-precision solution with those parameters." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Multivariate Fixed Point Maps\n", "\n", "The above example can be extended to multivariate maps without any modifications to the fixed point iteration code.\n", "\n", "Using our own, homegrown iteration and simply passing in a bivariate map:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "hide-output": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fixed point = [9.999999961080519, 19.999999923853192], and |f(x) - x| = 9.501826248250528e-9 in 184iterations\n" ] } ], "source": [ "p = [1.0, 2.0]\n", "β = 0.9\n", "iv = [0.8, 2.0]\n", "f(v) = p .+ β * v # note that p and β are used in the function!\n", "\n", "sol = fixedpointmap(f, iv = iv, tolerance = 1.0E-8)\n", "println(\"Fixed point = $(sol.value), and |f(x) - x| = $(sol.normdiff) in $(sol.iter)\"*\n", "\"iterations\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This also works without any modifications with the `fixedpoint` library function." ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "hide-output": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fixed point = [10.0, 20.000000000000004, 0.9999999999999929], and |f(x) - x| = 6.661338147750939e-16 in 3 iterations\n" ] } ], "source": [ "using NLsolve\n", "\n", "p = [1.0, 2.0, 0.1]\n", "β = 0.9\n", "iv =[0.8, 2.0, 51.0]\n", "f(v) = p .+ β * v\n", "\n", "sol = fixedpoint(v -> p .+ β * v, iv)\n", "println(\"Fixed point = $(sol.zero), and |f(x) - x| = $(norm(f(sol.zero) - sol.zero)) in \" *\n", " \"$(sol.iterations) iterations\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, to demonstrate the importance of composing different libraries, use a `StaticArrays.jl` type, which provides an efficient implementation for small arrays and matrices." ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "hide-output": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fixed point = [10.0, 20.000000000000004, 0.9999999999999929], and |f(x) - x| = 6.661338147750939e-16 in 3 iterations\n" ] } ], "source": [ "using NLsolve, StaticArrays\n", "p = @SVector [1.0, 2.0, 0.1]\n", "β = 0.9\n", "iv = [0.8, 2.0, 51.0]\n", "f(v) = p .+ β * v\n", "\n", "sol = fixedpoint(v -> p .+ β * v, iv)\n", "println(\"Fixed point = $(sol.zero), and |f(x) - x| = $(norm(f(sol.zero) - sol.zero)) in \" *\n", " \"$(sol.iterations) iterations\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `@SVector` in front of the `[1.0, 2.0, 0.1]` is a macro for turning a vector literal into a static vector.\n", "\n", "All macros in Julia are prefixed by `@` in the name, and manipulate the code prior to compilation.\n", "\n", "We will see a variety of macros, and discuss the “metaprogramming” behind them in a later lecture." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercises\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 1\n", "\n", "Recall that $ n! $ is read as “$ n $ factorial” and defined as\n", "$ n! = n \\times (n - 1) \\times \\cdots \\times 2 \\times 1 $.\n", "\n", "In Julia you can compute this value with `factorial(n)`.\n", "\n", "Write your own version of this function, called `factorial2`, using a `for` loop.\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 2\n", "\n", "The [binomial random variable](https://en.wikipedia.org/wiki/Binomial_distribution) $ Y \\sim Bin(n, p) $ represents\n", "\n", "- number of successes in $ n $ binary trials \n", "- each trial succeeds with probability $ p $ \n", "\n", "\n", "Using only `rand()` from the set of Julia’s built-in random number\n", "generators (not the `Distributions` package), write a function `binomial_rv` such that `binomial_rv(n, p)` generates one draw of $ Y $.\n", "\n", "Hint: If $ U $ is uniform on $ (0, 1) $ and $ p \\in (0,1) $, then the expression `U < p` evaluates to `true` with probability $ p $.\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 3\n", "\n", "Compute an approximation to $ \\pi $ using Monte Carlo.\n", "\n", "For random number generation use only `rand()`.\n", "\n", "Your hints are as follows:\n", "\n", "- If $ U $ is a bivariate uniform random variable on the unit square $ (0, 1)^2 $, then the probability that $ U $ lies in a subset $ B $ of $ (0,1)^2 $ is equal to the area of $ B $. \n", "- If $ U_1,\\ldots,U_n $ are iid copies of $ U $, then, as $ n $ gets larger, the fraction that falls in $ B $ converges to the probability of landing in $ B $. \n", "- For a circle, area = π * $ radius^2 $. \n", "\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 4\n", "\n", "Write a program that prints one realization of the following random device:\n", "\n", "- Flip an unbiased coin 10 times. \n", "- If 3 consecutive heads occur one or more times within this sequence, pay one dollar. \n", "- If not, pay nothing. \n", "\n", "\n", "Once again use only `rand()` as your random number generator.\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 5\n", "\n", "Simulate and plot the correlated time series\n", "\n", "$$\n", "x_{t+1} = \\alpha \\, x_t + \\epsilon_{t+1}\n", "\\quad \\text{where} \\quad\n", "x_0 = 0\n", "\\quad \\text{and} \\quad t = 0,\\ldots,n\n", "$$\n", "\n", "The sequence of shocks $ \\{\\epsilon_t\\} $ is assumed to be iid and standard normal.\n", "\n", "Set $ n = 200 $ and $ \\alpha = 0.9 $.\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 6\n", "\n", "Plot three simulated time series, one for each of the cases $ \\alpha = 0 $, $ \\alpha = 0.8 $ and $ \\alpha = 0.98 $.\n", "\n", "(The figure will illustrate how time series with the same one-step-ahead conditional volatilities, as these three processes have, can have very different unconditional volatilities)\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 7\n", "\n", "This exercise is more challenging.\n", "\n", "Take a random walk, starting from $ x_0 = 1 $\n", "\n", "$$\n", "x_{t+1} = \\, \\alpha \\, x_t + \\sigma\\, \\epsilon_{t+1}\n", "\\quad \\text{where} \\quad\n", "x_0 = 1\n", "\\quad \\text{and} \\quad t = 0,\\ldots,t_{\\max}\n", "$$\n", "\n", "- Furthermore, assume that the $ x_{t_{\\max}} = 0 $ (i.e. at $ t_{\\max} $, the value drops to zero, regardless of its current state). \n", "- The sequence of shocks $ \\{\\epsilon_t\\} $ is assumed to be iid and standard normal. \n", "- For a given path $ \\{x_t\\} $ define a **first-passage time** as $ T_a = \\min\\{t\\, |\\, x_t \\leq a\\} $, where by the assumption of the process $ T_a \\leq t_{\\max} $. \n", "\n", "\n", "Start with $ \\sigma = 0.2, \\alpha = 1.0 $\n", "\n", "1. calculate the first-passage time, $ T_0 $, for 100 simulated random walks – to a $ t_{\\max} = 200 $ and plot a histogram \n", "1. plot the sample mean of $ T_0 $ from the simulation for $ \\alpha \\in \\{0.8, 1.0, 1.2\\} $ \n", "\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 8(a)\n", "\n", "This exercise is more challenging.\n", "\n", "The root of a univariate function $ f(\\cdot) $ is an $ x $ such that $ f(x) = 0 $.\n", "\n", "One solution method to find local roots of smooth functions is called Newton’s method.\n", "\n", "Starting with an $ x_0 $ guess, a function $ f(\\cdot) $ and the first-derivative $ f'(\\cdot) $, the algorithm is to repeat\n", "\n", "$$\n", "x^{n+1} = x^n - \\frac{f(x^n)}{f'(x^n)}\n", "$$\n", "\n", "until $ | x^{n+1} - x^n| $ is below a tolerance\n", "\n", "1. Use a variation of the `fixedpointmap` code to implement Newton’s method, where the function would accept arguments `f, f_prime, x_0, tolerance, maxiter`. \n", "1. Test it with $ f(x) = (x-1)^3 $ and another function of your choice where you can analytically find the derivative. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 8(b)\n", "\n", "For those impatient to use more advanced features of Julia, implement a version of Exercise 8(a) where `f_prime` is calculated with auto-differentiation." ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "(0.010000000000000002, 0.2)" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "using ForwardDiff\n", "\n", "# operator to get the derivative of this function using AD\n", "D(f) = x -> ForwardDiff.derivative(f, x)\n", "\n", "# example usage: create a function and get the derivative\n", "f(x) = x^2\n", "f_prime = D(f)\n", "\n", "f(0.1), f_prime(0.1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1. Using the `D(f)` operator definition above, implement a version of Newton’s method that does not require the user to provide an analytical derivative. \n", "1. Test the sorts of `f` functions which can be automatically integrated by `ForwardDff.jl`. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Solutions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 1" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "24" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "function factorial2(n)\n", " k = 1\n", " for i in 1:n\n", " k *= i # or k = k * i\n", " end\n", " return k\n", "end\n", "\n", "factorial2(4)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "true" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "factorial2(4) == factorial(4) # built-in function" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 2" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "hide-output": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4, 3, 4, 5, 5, 6, 3, 4, 5, 6, 6, 4, 6, 2, 3, 5, 3, 6, 6, 9, 1, 7, 4, 3, 5, " ] } ], "source": [ "function binomial_rv(n, p)\n", " count = 0\n", " U = rand(n)\n", " for i in 1:n\n", " if U[i] < p\n", " count += 1 # or count = count + 1\n", " end\n", " end\n", " return count\n", "end\n", "\n", "for j in 1:25\n", " b = binomial_rv(10, 0.5)\n", " print(\"$b, \")\n", "end" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 3\n", "\n", "Consider a circle with diameter 1 embedded in a unit square.\n", "\n", "Let $ A $ be its area and let $ r = 1/2 $ be its radius.\n", "\n", "If we know $ \\pi $ then we can compute $ A $ via\n", "$ A = \\pi r^2 $.\n", "\n", "But the point here is to compute $ \\pi $, which we can do by\n", "$ \\pi = A / r^2 $.\n", "\n", "Summary: If we can estimate the area of the unit circle, then dividing\n", "by $ r^2 = (1/2)^2 = 1/4 $ gives an estimate of $ \\pi $.\n", "\n", "We estimate the area by sampling bivariate uniforms and looking at the\n", "fraction that fall into the unit circle." ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "hide-output": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.142144" ] } ], "source": [ "n = 1000000\n", "count = 0\n", "for i in 1:n\n", " u, v = rand(2)\n", " d = sqrt((u - 0.5)^2 + (v - 0.5)^2) # distance from middle of square\n", " if d < 0.5\n", " count += 1\n", " end\n", "end\n", "\n", "area_estimate = count / n\n", "\n", "print(area_estimate * 4) # dividing by radius**2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 4" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "hide-output": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Count = 1200012300\n", "payoff = 1\n" ] } ], "source": [ "payoff = 0\n", "count = 0\n", "\n", "print(\"Count = \")\n", "\n", "for i in 1:10\n", " U = rand()\n", " if U < 0.5\n", " count += 1\n", " else\n", " count = 0\n", " end\n", " print(count)\n", " if count == 3\n", " payoff = 1\n", " end\n", "end\n", "println(\"\\npayoff = $payoff\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can simplify this somewhat using the **ternary operator**. Here are\n", "some examples" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "\"foo\"" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = 1 < 2 ? \"foo\" : \"bar\"" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "\"bar\"" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = 1 > 2 ? \"foo\" : \"bar\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using this construction:" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "hide-output": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Count = 0012012345\n", "payoff = 1\n" ] } ], "source": [ "payoff = 0.0\n", "count = 0.0\n", "\n", "print(\"Count = \")\n", "\n", "for i in 1:10\n", " U = rand()\n", " count = U < 0.5 ? count + 1 : 0\n", " print(count)\n", " if count == 3\n", " payoff = 1\n", " end\n", "end\n", "println(\"\\npayoff = $payoff\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 5\n", "\n", "Here’s one solution" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "hide-output": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAIAAAD9V4nPAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOy9Z5hdd3nuff/X2r1PH43KqEuWJVfZsoyxDcbGcnAAm2Pi0I55ISQv7Q2QkAA+IeUEwhVOKGkHCJDCSRyOLwg2tgm2bMfYRm7YsiRbbUaa0fSyZ/e+/u+Htcvaa6/d1+7P74Ou0Z6ZPWu3da+n3Q/jnIMgCIIgehWh1QdAEARBEK2EhJAgCILoaUgICYIgiJ6GhJAgCILoaUgICYIgiJ6GhJAgCILoaUgICYIgiJ6GhJAgCILoaUgICYIgiJ6GhJAgCILoaVomhCdOnEgkEmV/LJVKNeFgiBLQS9ByJElq9SH0OpxzcqNsLZzzxn0QWiaEb33rW+fn58v+WDgcbsLBECWgl6DlRCIR0sLWEo/Hk8lkq4+ip0mlUrFYrEF3TqlRgiAIoqchISQIgiB6GhJCgiAIoqchISQIgiB6GhJCoh1JUGsIQRDNgoSQaEdeXqFWdYIgmgQJIdGOPL1AQkgQRJMgISTaERJCgiCaBgkh0XbEUnhxmYSQIIgmQUJItB1nA3w+QkJIEESTICEk2o7TPh5JIljeiZYgCEIHSAiJtuO0HwAWoxQUEgTRDEgIibbjtI8DWIy0+jgIgugNSAiJtuOMn9sNWKKIkCCIpkBCSLQdp3w4MMwoIiQIojmQEBLtRSSJlRi/YoAtRlt9KARB9AYkhA2HEnxVccbPtzjYOhtbogkKgiCaAglhw3l+iU7oVXDaz3e42ZAVFBESBNEcSAgbS1zCf14gIayC0z7scGHYQhEhQRBNwtDqA+hynl3gNA9XFaf9/OohNkwRIUFUTyAQuP7661t9FA2Bc3799dd/4xvfaMSdkxA2lsfnJHJIqYrTPv6b24QhC80REkTVJJPJs2fPPvnkk60+EP154oknHn/88QbdOQlhYzk8y9fZWKuPopM47ec73Ri2suUo5wA9dwRRFaIoXn755a0+Cv05f/5844SQaoQNJJzEc0s8lKDUaKUEE/DFMWZjJgE2A9ZirT4ggiB6gLoiwr/8y79cXl6Wv96+ffuHPvSh7Lfi8fjXv/71I0eObNq06bOf/ezIyEhdh9mZ/GKBCwzBZKuPo3M44+fbXExgADBkZYtR3memmJAgiMZSV0T4rW99KxgM9vX19fX1OZ1O5bc+/elP//jHP77nnnsCgcAtt9wiSVJ9x9mRHJ6VbhpjIaoRVswpH9/hSivfMJUJCYJoCvXWCN/3vvcdOHBAdePa2tp3v/vdl156adeuXYcOHRofH3/00UdvueWWOv9Wx3F4ln9ol/BXx3rxIqA2Tvuxw53+etjKlqJUJSQIouHUWyP867/+60984hPf+973kslcBvDYsWMOh2PXrl0ABEG47rrrnn/++Tr/UMexFsfJNX7TGKOu0co5489FhNQ4ShBEc6grIrz99ts3b97MOf/617/+r//6r4888oggCAAWFhYGBgayPzYwMDA3N6f63Ugk8u53v9tisShv/MY3vrF582blLaFQiLGOjAkemRGuHhRNyXAwYQwGg60+nNpp5ksw5TcOrEsFgxIAjyhe8LMglViBcDicSqXkDxfREmKxmCAIRqOx1QdShlAo1OpDaCCpVKqGc6nNZiv72alLCL/61a/KX7zvfe8bHx//5S9/ee2118p/OBbLNfxFo9HBwUHV75pMpo997GNDQ0PKGzdv3uxwOJS3cM5Vt3QKz66mbt7Iht3mcDLRoQ9BppkvwUo8Od5vcjgYgPUu6bSPOxyWsr/V9TDGrFYrCWELMRqNHSGEiUQ3J6BEUWzQuUifOcK+vr6xsbH5+Xn5vxs2bJibm4vFYmazGcC5c+cuu+wy1a+IovjGN75x48aNuhxAG3J4ln/vBsEsggMJCUY6iVXAYpQPZ4Rv2IKnF1p6NARB9Aa1n579fn8gEJC/Pnz48Llz5y6//PKJiYn7779/7969mzdvvu+++wCcPXv22Weffec736nP8XYI4STOBvjlAwyAwwgqE1YCB1aiGLRkukatbJHsRgmiS3nllVe++93v/uEf/uGpU6dafSx1COHp06fHxsYOHDiwf//+O+6445vf/OaWLVueeeaZz372s4yxr3/965/+9KdvuummgwcP3nvvvevXr9fxoNufiQDf7GAiAwCbgYWSdEIvjzcGmwFmMf3fIQuWyG6UILqUu++++6c//enf/M3fTE5OtvpY6kiNXnnlldPT0ydPnjQajTt37pRTt+9617sOHToE4Oabbz579uyxY8fGx8d7TQUBnPHz7ZnuR4eBIsKKWIzwYWuuK4ciQoLoAk6cOBEMBq+++mr5vydPnlxdXT148OCJEycAqLojW0VdlSuPx3PgwIErrrgiW8C0WCzZflGXy3Xttdf2oAoCOOvHdlf6a7sRIep8rIClKIYUnTGDFqzFkSIpJIhOJhAI3HnnnalUSv7vxz/+8WPHjrX2kAoh0+2GcNbPL+6jiLA6VBGhyOA2YSWKYWsLD4ogOp5/OCk9MNWkK8oP7RLetilv2urAgQMjIyMPPfTQ7bffPjk5eeTIkfvvv785B1M5JIQN4Yyf//p4OtqmiLBCFqMYzp+VGLawxWieOhIEUS1XD7GBZk0h7enTuPEjH/nIt771rdtvv/3b3/723XffrfLjbAdICBvCGUVq1GFgwQRZhZVnqSD4G7ZiMQJofbQIgqiQff1sX38rzz/vec97Pve5z509e/Yf//EfH3jggRYeSTFouk1/EhJmw3zckUmNGmkBRVG++qo0E0onbZYiPDs7ITNkke1GCYLoYGw2291333333XevX7/+iiuuaPXhaEBCqD/nAny9jWUn6O0G0AKKYnztmPSrlfTXGqlRK9mNEkQ38Du/8zsvvPDCRz7ykewtd9xxx7Zt22ZmZu65555t27a99tprLTw8So3qzxk/trly/6WIsASBBJ8IpPPGSxE+ZM27MtvpZv82Id2zU3C0u7MVQRClYIy53e7f+I3fyN7yzW9+U+nEuWHDhlYcVxoSQv054+c73LkUn83AwjRQr4XEEUhgMpB+chYiGMmvEX78YuGUj9/6SPLhWw1O0kKC6Eweeuihr3zlKx/96Eftdnv2xraarKPUqP5MBPhWZ04InUYEKDWqRTAJiWMi7dOH5Zi6RsiAb14r7u1jhx5JJrprq6NEl0ZEz/Dggw/edttt9957b6sPpCgUEerPGT+/cV3uhE41wmL44xxIR4QpDm8Mg2b1zzDg764Td/8wedLH9/Z1Seftf5yXvneK//hmsfyPEkTn87d/+7etPoQykBDqz1k/trlyp2wHzREWwZ/AejuThXA1BrcJBq0MBQMu6WcnvN0ghNMh/vFnpJeWeWcu2SSI7oRSozojcZwL5qVG7eQsUwR/HBvsMAtYjGAxwocsRcVhjwcn1rohmfjux1I73fjVHYYVGgshiLaBhFBnpkO838xsikjbbqTtE9r44nAbscXJzgV5YaeMkos87LW1Jh5Zw5gM8P9vrzBgRoojQnkCgmgPSAh1Rmm3LWM3UGpUG3+Cu0xsi5NN+LnKaFTFnj52wtvxFxOxFLxxjFoZgAELW451/CMiiO6AhFBnlAuYZGgxbzH8cbiM2OrCZBBLBdP0Sna52dkA7/TG0akg32BnAgOAQTNWaNsiQbQHJIQ6o5qdAG2fKE4gAZcJckS4FFXPTigxi9hoZ2f8nR1CTYWwKTNGNWDBMgkhQbQH1DWqM2sxbMm3VqcaYTF8cbhN2OJkP5yQRMYuHSj1w3s87LU1fpGng7stzwf5eOYiadDClqNkxU7ojCAInPNPfOITrT4Q/ZmYmBCERkVuJIQ6E07Cmj8eRjXCYvgTfMzGtjoxGYDLVCo1CmBPH054ccfmJh1bIzgf4OPpDdYYtGA5VvKnCaJ63G73T37yk5dffrnVB6I/W7duHR8fb9CdkxDqTDgFW/6TajUgnkKKQ6Sr/3z8cex2Y9zBZsJ82Ipha6nLvYs87KHpzg6szwdxQ8ZpgWqERIO4/vrrr7/++lYfhf4kk8lEolFFJqoR6kwkyW0GtU8YBYWa+BNwmWAUMGJlR1f5UOmI0NPxjaNTQb4ps5xrIJ0aJQii9ZAQ6kwoqY4IAdjIZU0Lf5y7jAzAFifCSZTeRL/bw077eaqTteN8ENnU6IAZK5QaJYj2gIRQZyJaQugwykvqiTz8CbhNALDVyQwC+gqMRpXYDBi1somObRyVOGbDfINd1SxDEETrISHUmbCWEFJqVBNfHC4TAGxxsiFL+QbKPX0dbLQ2F+Z9ZlgyjVSDFooICaJdICHUmcKuUdBMfRHkgXoAW5wYLj5EmGWPh53oWKO180GMO3KPcZDmCAmibSAh1JlISt0sA1pSX4RAgrtMDMBWJxsqbjSa5SIPe71jI8KpIFcK4YCZUqME0S6QEOpMkdQoC1VZI1zq9nCBA4EEnOmIkJVYPZFlxMoWI50qHueD2OTI/ddhhMQRpssjgmgDSAh1RrNrtNoaoS+OB6Y63FizHMEErIb0bOWoTW3Ho4nbBF+80cfVKM4H+WZHntgPWtgK+W4TRBtAQqgnsiu0seBJrbZGeHSVv7DU5afI7OwEAAZcNVQ+IvSYsdbJQrgpXwgHzFQmJIi2gIRQT8JJ2Ao6ZVB9jfDVVf7SSrcLYSLdMipzdSVCaIK3Y0OoqfzUKKhfhiDaBhJCPdEsEAKwGRCuxnf7lVX+ykrHbx0qjT+eHiKUGbNVIoTM17HNt+fzm2Ugp0apX4Yg2gASQj3RbBkF4DSyQDVn8FdXeZJ38MxcJfgznTKVYzMgJSGWaswBNZLVGESWJ/yQNzHRKCFBtAEkhHoSSpSICCu9E4njmJffuoG9tNzNQuiLc7epahvyDi0TFoaDAAbNoAkKgmgHSAj1JJKCVUsIndU0y0wEeL+Z3TQmvNjVQhioPiIE4DGxtXjnPS3TBZ0ySKdGW3I4BEHkQUKoJ+Ek7EUiwsrHJ15Z4ZcOsCsHWXcLoS+uThVWgseEtQ5MJ67EMFiwW4NSowTRJpAQ6kmxZpmqTLePrvJL+3H5AHt1tZv7ZfyJtL9aVXhMHZkaDSTgKHiw1CxDEG0CCaGehJPcqtUsU9VA/dFV7OtnDiM22DvYUaws/njaX60qPOaOTI0GtfLAgzRHSBDtAQmhnpSaI6y4Rnh0lV/azwB0d3a0xyJC7jCqVX+A5ggJoj0gIdSTYqnRyiPCQAILEb7N1QNCGK9VCDuwrqYdEVrYcsf6AxBEN0FCqCeRVL01wqOr/OI+JjtwdrkQJmpJjbpNzNeBqdFAAg4tB1qAfLcJovWQEOpJ/RHh0VV+SX9aHq4YZK96ebJL+2Vqjwg7MjWqPStCy5gIoh0gIdSTSPFmmUgSlZzwXl3l+zJC6DRizMZe93XniVLlNVohfWZ4O1AIg1o1QpDdKEG0BySEeqK5nh6AwGAREVL0yzyzwDXTnsqIEMAOF84F9D/OdqDWiJCtdWBdLZjUjggHLVjpwJInQXQZJIR6Uiw1CsBuzGVHD8/ytz6SfKFACGfD/LU1fvlATgj7zWy1A8/7lVBbjbBDLdY05whBqVGCaA9ICPWkhBA6DCyU5AAenuZ3P548tEEonBH8i1ek/75TUPqt9Jnh7ZCIoaoUn7yevndqhJpdowAu7mOHZ0kICaLFFDltEzVRrGsUgN2IGx5MmQQEk/wnNxtWYvjG8bw1CrNh/i9npOPvyjtfdkpEKHHs+PfEqI0d2sDevVU4MFwm1AsnYRZgqP4yzG1CZ3aNatcIP7ZH2PXDxO9fIuxwVx0cEwShFxQR6kk4qb2GCcDjv2Z48m3iz28TT7zLeGCY7fbg9bW8H/jKUekDO4RRa96NndIbctzLh6zsBzeKoST+/JXyfa7+eC2dMkibbtfyi62lWETYZ8bv7hP/x0td2hlMEB0CCaGelEiNDpix1cm2OtmAGQA2O9hSlGerhvMR/PNp6TOXqF+OfjNWOyE1+vQCv26EXTHIfnObUEkziy/OXVoRUllsBki8w1YSJiQkOSxaXVQAPnGx8OSc9KuVzgtzCaJrICHUk2Jdo4UIDDtc7FRmNOJ/vyb95jahcEt7n5l5OyE1+uwiPzjMUHEzS22zEzLuTisTll44ZTfgc5eJ977QUdpOEN0FCaGelIgIC9ntYa9l+mX+a146tFHjteigiPDaEQbAY4KvEiGsaXZCpuNWEgYT3Fky/P2t3cLhOU4WMwTRKkgI9aRKIcTJNQ4gIeH5pbSQqOgzdUDX6EIEqzF+kUcWwopUqrb19DIdZzeq6a+mxCRgk52dD3aSuhNEN0FCqCclmmUK2e1mr60BwK9W+BYn82ilCjuia/TpBenaYSYwAHAaEUoiVe6Q60mNdtwERSABZ7kHu8WJyS51TiCI9oeEUE8iKVgrjggv6kvbpz29wN+gFQ4C6DNjLV6RN1sLeWaBHxxJv5EEBocB/nJCFSwXJJWg41YSVvJgtzjZZKCTHhRBdBMkhHoSTqZXClTCThc76+cpjl/M8+tGtYXQKMAiIlDxLsOWILeMZv9biVCFk7DXXiPsuIiwTI0QJIQE0VJICHUjKYEDxoqfUasBo1Y2GeDPLEjXFp9Ab5/G0YWIxo3RFF5d5fuHFEJYQb9MJMWtYq/UCINJbX81JZQaJYgWQkKoG+GU9nr6Euz24MEpbhDYZmdRVWiTxtFYCl98SaPF/4UlfpGHKePgSsYbwskqcsgqOi41GoiXGp+QUUWE06FOeoAE0emQEOpGVS2jMrs97B9OSsXyojJt0jj6rdelV1c1zs6/LOh3raRxNFL9c6W4/w5LjVYWEbJziq7Rw7M0TUEQzYOEUDeqahmV2e1mx7x5BbZC+i2tbxwNJfHnL6c0E56TAb7TrRLC8qnLGi4asrgrG1VsHyqpEfabIfGcwP/XHPe3d2GYILoJEkLdqCHdJ8/eaU4QZmmHiPCbx6VtLqYpP7MhjNnybqnEXCacqtSCp5A+U7sUTSukmNGois2OXHb0qQXeid7iBNGhkBDqRg3pvt0e5jJCuYm3kJbXCH0J9lfHUn91jehPaJyaZ8Nc5QxXUbNMPanRTltJWGwZoYpsmXAujNM+3llRL0F0NCSENVKoCTWk+wYteNsmoXT7ZJ+ZeVsaHHzjdfHXNwlXDrJQElLBgcyEsd6ed4u7ghphDWlkxf13WGq0wogw2zj61LwEdNhjJIiOpq59hKdPn/7JT34yMTExPDz8gQ98YPPmzdlvPfzww0ePHpW/FkXxM5/5TD1/qA2RfcX2eHJn89rqXh/aXeZapM/c4sb6/7gg3neTIDDYRAQSUO4NTnEsRfioVR0RHq2ka7TW1KjHhA7rGk1wRwVTNZud7LSPA3hqngPy2kVaUkgQzaCuiPDDH/7wxMTE3r17FxcX9+3b99prr2W/df/99//sZz/zZqj7ONuOqSB/eDrvdBxO1jIbd+O68m0UeqVGa9teFEyyQQsAuE1MlR1diPABi3q/biXNMiU2GJel41YSVhMRpoVwb592RZYgiEZQV0T485//3GhMf8TPnTt33333ffGLX8x+99ChQ7/3e79Xz/23M1NB/vC09Ol9OREI13RyL6ucfSbmjemzuPVVL98/WLVUB+Lppkc5J7lRkQidCWF9weooj5n54mUOuJ6uUZsBKQmxFMy1xpRNpqzptswWJ5sMwBvDZIB/YKdAQkgQTaMuIcyqIAC/3+/xeJTfffrpp/1+//bt2++66y6r1Vrw253NVBBPzXPlqrmq/NUqR8eI8MVlfuUgq0oJORBOMbnXw2VSm4jOhPl6u/r+3MaKBuprFkJk+mVGOuQ9FajMYVweJXxqXrpmmPWbodmaRBBEI9DnzP2DH/xgYmLinnvuyd6yffv2vr4+k8n07W9/+0tf+tJzzz3ncrmUvxKLxT760Y+qBPJP/uRPNm7cqLwlEomIYjte+Z/ziXFJeHgy8rYN6ROWLywYwcJhnVs8LRJWY8ZwOFz/Xb28KHrXp4qtStckmIBZMMQiYQAOUVwMJMPOXLR3zisMm9QP2SzBW+6AwwkDEolwuMZzvdtonPdHnLwzpCIQN4jJ8g+WAXaD4b4ziWsGYAW/EM49seFwmHMuCNTa1jJisZggCMpLf6LJJJPJRCLBq//UWyyWsp8dHYTw5z//+ac+9akHH3zQ7XZnb/yDP/gD+YvPfe5zV1999Xe+851PfepTyt8SRfHNb37zwMCA8sbBwUGz2ay8JR6Pq25pE2ai/OAwf2zBeOe2dEgUB3eaYTbrHBWOMnhjki5Pwmt+iRsM5mr2H62m4DAk5b/eZ+FhDrM5FwIuJfgGh/ohDwO+RJkDjqQkj81U81PlMUlhbmrL94UGwaTUbzOZKxollH5ygf3kLcLZAH89kHtik8mk2WwmIWwtJIStRRRFQRBqOBOyCrJg9Z61n3zyyfe+973333//VVddpfkDoiheeeWV58+fV/9hg+HOO+9UxX+av96eEeF0KPnRPeL/eFHKHl5UStkMTBR1Plv1WRFOSZyJhrrv+MSaFOfVPZ1hiTtNTP4dtykVSOU9wNlI6vpR9UPutyKQkASxaOMQB6IpyWEShVqbIoes3Jso8RfaCIkjmpJcloqOdasLR73SNSPialzyJ3IvlfwpICFsIfLz357noh6Bcy5JUoNegro+Ws8888xdd931b//2b9ddd518SzQaffDBB6PRaCCQbvlfW1t79NFHL7300nqPtM04H+Rv3SAYGE6spUP1OutexWCAxwRv3a0TixEsRREruzM3n0ACDkP6V1xGdY3wQohvKKgRiplBi2JEkzAKqFkFAYxY2XykM/KiwSTshkrHIDY7cdUQsxrgNjFyliGIplHXmfuee+5JpVLZ1tDbb7/9gx/84O233z49Pb1v3779+/fb7fZnnnnmjW984/vf/349jrZdiKXgj2PYgls3soem09OE9YwElEbexDRkqSsAOr7GAUSqnKBQLpUtHJ+YC2OdTeO33Ca2FuOuIgab9T9Ro1btnVBtSDDBHeWMRrNsdTL5yrTjTAMIoqOp64R0//33x2K5RomBgYHR0dGjR4+Ojo6+/vrrr7zySjQa/fKXv7x79+66j7O9mAry9XYmMBzaIPzVsdRn9gloWEQInRpHj3s5gGiVQuhPcKcxExGacMaf913NiBCZrs5NRe6zHlsZmRErmwx2RsAUqGyIUGazk21yZCZVyHSbIJpFXWfuvXv3Ft64b98+ACMjI7fccks9d97OTIfS43RvGmPveTw9RNE4IdTFd1sWwkiVy32CCWQDGlWYEk4iIcGj1XpTelNSpI5lhDKjNjy7WNc9NI0KjUZltrswaJGFkFKjBNE8qPxeC9MhLl+52w04MMyenOOQnWXqC3SK0W/WYRPTcS+3iFWnRpU1Qnf+HOFMSG23ncVjYmvFD7iGDcYqRjuoRlhNRLjVyVxGgFKjBNFcSAhrYSqITY70128YEZ5ZkNDI1GifWYdmmeNefkk/qzY1mi+EeWHKbIHddhZPycxePevpZUbaoEaYrMztJ5DglUeEWSwiOK/REo8giGohIayFqSDflKmNHRxhzy7KEWG9gU4x6q8RzoVhELDRwaLJartGeTagcRnz5O1CiBf6q8l4zKVyufVb8Iza2Hytw/h68ZnnUpV04AYSKLuVVxOXCbSblyCaAwlhLUwrmkQODLEXl3lSanjXaD33cNzLL/Ywa42p0fTXqnzdbFi9kjdL6cxe/TVCjwnRVNWNP/ry0DT/85fLR4XBamqESkqnlwmC0BESQg3KWUbnpUbdJmxysKOrvJ27Ro97+cV9zCJW3SyjSo3681KjGkajMp6SKwlrW9OhYsTKFlpaJgwl8L9eTT0xV+YYqqoRKqHGUYJoGiSEGjw6U+bslm2WkTk4zJ5d5PVPBRSj/q7RY16+t59ZxKqjKGX3v8uYF+ddCBWtEZaOCMNJ2Ot2qhq1YV4H+9XaCSf5d68X3/N4aq7kYfgVueWqKLQvIAiiQZAQquHA/ZOlQsLVGIxC3mW+XCasP+NXjL66u0ZPrPE9HmY11DBQz+2ZiNAsQmC5mHIuXKJrtOT4RKr2rbxZWh4RhpO4baPwwV3s00dKPafK+ZOq8JhLRdUEQegICaGaV1f5KX+pE9BUkG/MTwkeHGbPLjQ2NVpPRMgzqVFrTRGhcpeeW9HBMVO8RlhmfEKPK4ZRK+Zb1zialCABZhG/tlGQt+kWo67UKEWEBNEUSAjVPHKBh0rWZqZDPFsglNntYWtxLgGmxjydTmMp686yzIS4zYB+MywGFqm6azTvPO7KTFBwYL5ERGguM1Bf/xVDaycosqOQDiOCJV+aCrfyFkJCSBBNg4RQzcPTUqhkR8lUEMoCIQAGHBhmDZqdAOAwslCVAqbkmBcX9zEAtUaEuT/tzpQJFyNwGovuiC+dGtWlmNramfps9O8wIFjy3RJM1hoRGkkICaJJkBDm4U/gmQUeLnlqmw6pU6MADg4LDSoQArAbyoQdpTnh5bIQ1tI1GueaqdHJAN/sLCpmZZ1l9KgRtrJZJpRIa7nDyIIlV8kH4lWYbitxFVicEwTRIEgI83h0RrpsoEz4NRVMG40qOTjMGtQyCsAsglcw1FGMuXB68t1qqKtrFIrU6GSAbykuhLJeFnsSdUmNjtpa2SyTiwjLpUZrjwgpNUoQzYKEMI+Hp/mdW4TSEeH5IB93qDXgwHDaJbJB2A0oXbkswVIUgxYAMAvVCaHEEU3BpkiNZnv6JwLY6iz6i0YBJqHoAevSVdTaZpnsBIhFRJKXslvzx0kICaLdISHMwYFHLvB3jrNUyVPbTAgbCiJCpxH7hxq4MN1hZMFay4SrMfSbAcBW5fhEMAlb/lJZjzl9dj5XMiJEye5/XYSwteMTyuxu6TJhMFmjswwtoCCIpkFCmOPYKreI2OFmNhEl+mWWo3xQa0fuTWMNFcLaI8KVWPqALYbqvEYDca7yyczajZZOjaJkv0wkpYOzjEa55D8AACAASURBVKwu9ZRO60Fpl2ovWSasajGvEmqWIYimQUKY4+EL/NYNDIDdiGJlwriEuKR9jf/msQY+mWW7E0uwEsWAGQCq9RotXCrryrisTQSwpXhqFLIQFpl91GvgcqR1jaPKxldHyVamUJLGJwii3SEhzPGzC9KhjQIAu4EVKxOuxbRX0QIYsTbsyAB7uaaMEixH+YAl3TVaVY2wUAjlMCUpYTbMNxUUSpWss7HZIgsi9BLC0SpHCf/oxdRjs/oIp/IhOIxFr1GiKRgYDDV9yCg1ShBNg4Qwxykf9vUDgM2AYkK4GuP95gamQIthN5TK1pYgxeFLpGuE9QuhvBtoOsRHray0e8BmB84Ftb+lmxBWuYzpqXn+6qo+0hJK5OxSSzSOVrWeXoWb1jARRLMgIUwjcSxG+KiVAbAVV521ODzmph6YTNl5tWJ4Y3AZIZfkrIbq5ggDCe405am+HKaUzYsC2Oxk54p4j+lisQZ5lLCaiNCXgF79NSHF7skSqdFQrQVCADYDEhIStc7MEARROSSEaRYi6DfDKAAlZxW8MfQVSY02FEetEWG2Uwa6pEZN8McxGeBbS3bKANjiZMVMOCM6remotnHUF9dt4iI/NVr0GiVYa4FQxmmkoJAgmgEJYZq5MF+Xcc60F7c0W4tzTytSo2UHt2UKh+5Xoum8KABrlV6jwQKfTLmDo7StjMwWJyYD2t/SZfsEqq8R+uNcr4gwkuLWbLNM8RqhMoNaA7SblyCaAwlhGuW+9RIFubV40WaZhlKJy1o0hS+8oI74VmJcnqaHbLFWZ43QCF8CkxWkRscdbCrENc/iOjbLVJcajevmyqYcnyhxjVJnREiNo0TTWIzU5ezf6ZAQppkN87GMg6i9eLNMy1KjFfhuf/6F1JMFC9NXohjIhLDVmm4XqxFWkhq1GeAyagiPXPQy6vG+G7Gy2VClAVM0hbik28KKvNRo8WuUYILba60RgpbUE03kI79I/dvZ3q1IkxCmmQ3zbERoK1Uj5H1tmRp9ap7/w0mp8ES/EsNAJiIUGAwMsYq1sDAidBgRTeGMv8w0vYxmmTCc1CcvCmBvP1uM4nBlExG+OAbMWI5ySY9cYyi/RljsGqUwt1wVNEFBNI35CKeIkMBMCOttioiwiFp44+hrRddo6fGJUBIf/K/U371BLKyBLeX74FhExCq+7Cv0yWSZIxktspJXybiDnQ9qCKFe64vtBvz9G8QPPZWqpI3IF+f9FuY2YaWOFcdZlI+iRNa6ZsdtmayzK0E0mrkwpUaJwmaZIn2AraoRlo4I/+C51HWj7O5tgllUV5VWY2lbGRlr8axvIZrncY+JbXawSoJizX6ZSEqfllGZQxvZwWH2xy+VD3J9cbiNVY8eFkPpLONsXLNMyf3GBKEjCxEe6OG1XySEaWbDWJ+x0i4RfrUuNVpqjvD+c9IXrxCgNVGQ9VeTsVZjNxpIqL1GAbhN5TtlZDY72bmCiDCi0xBhlq8dFP/5tPTScpkH5YvDbdJtr73aWaZ4RGinZhmi7VmLI5qiiJBI1wjTJ/3SA/UtaZaxF/ca9Sfgj0M2PCs80a/E0v5qMlU1jhbWCAG4TCjbKSNTrEaoV2pUZsiCd28TnijoElLhi3O3iellT5rfNVp8jrCOgXoALmPa2ZUgGoqcJiEh7HUSEtbiGMo0lZTuGm2Rs0zR/p1TPr7Dnc5VFkaEy6qIsJrG0aCWQ5jbiEo6ZSC7rBWkRnUXQgADZuYtJxj+BNymqkcPi6HuGi2WGq1/fKKHz01Eg0gVfFbkMSRKjfY6c2E+bGFC5vRuL6463hjvM7UgNVoiIjy5xne504ekEREWNMtU7rKmGRF+/nLxzi0VPQPjDnYhpO7S1LFrNEuJTRdZMqlRvWqElaVG6/AaBaVGiQaQ4vin0+p+uYUIH7VSRNjzzIYxpti1azNoN8RLHMEk3C1qlikREe50p79WRYRcbpax5H7YaqgiItSsER4cZuMl905kMYsYsLCZfOHRt1lGppKmEl8cLiNGbfpEhCHlGqaSQlhfjZDGJwid+eGE9Oyi+k01H8Z2NyMh7BjmdHIGUaEsEKJ4atQXh8MAoQUBIRyGohvqT/mxs0hEGEjALEK5JqIqu1HNiLAqCrOjjUiN9pmYt5wVmT/BXSam1177Sr1G66sRUkRI6IvE8T9flrwF6ZP5CN/hIiHsHP7lTEO8D5T+aijeNeqNt6ZlFCX3EZZIjWY3EWap3G40KSEh1StahY2jeq2eUOIxVRQRyjXC+n23UxxJCRbl9okSNUJKjRJtw4/PS5MBvlpw1TgfwQ43C/Rw+qHDhPCBKWlRJ5csJTMhvt6eE4xiXaPeWGum6YF0VFfoqc2B036+IyeEeRHPcjTXASRTeUQYqM8VRUYzIqwnW6iJx4zCi1wV8gCoLl2jofyg1mZAJAnNO61nHyEya5AJQi/+/GXp9y8VCz8sc2G+w0U1ws5hIYKfz+gfFM4VRoRa74lWTdPLOLWCwtkQdxhyR6WKCFdjudUTMpWPT2gWCKulcIJCr9UTSvoqiAj9ce4ysUEL1mIaXXNVEckXQoHBImq/YUL1zhFSjZDQjQemJInjfdvZaoEQLkSwzcWiqXo/Gp1LhwnhYoQ/NK3/a6WuERpZWCt/2Kppehm7QaMWddKXKxCiICJcifKB/AOufHyi/gIhtNbzhpO5BUZ64TGztUrGJ4wQGfrNWIrW9efCBfsUi21iqrNGaDciJiHZu07IhJ782a+kL1wu9Js1CurzYT5qZZWsuOlWOkkIYykEEvjPGUn3y5aZUF5EWCw12qppehmHUeOoTvm4UghtBogsl+JYjua1jKKa8Yk6W/9ltjgxkZ8ajTSgWcZuQFIqYyYu1wgBHVzWCvt9ivXL1DlHyDJ7rwiiTn4xz/0JvGNccJkQTuVdXaU4VmMYtsJpYj07SthJQrgY5aM2tt7GjhS0/9bJTDivRigX5BIFV+KrrasRokgLz0kf3+XJizmGrWwxExQux/iQulmm0ojQn4CrbtUfd7CFCFf+xUZ0jaKCCYq1GHebtM13qqUw4enQemkkroPqu0xkLkPowNeOS5+4WBAYGOAxwav4sCxF0W+GyEotFOt6OkkIFyIYtuC2jezhC3pmi8JJJCR18c+mNUHR2tSo5rzaKR/f6cq7RXmiVxmNArCILFpZQB1IcEfdOUyRYZMjr0zYKCE0lcmO+hKZiLDufhmtiFDjpZH7Y+sctvFQ4yhRN1NB/uSc9L7t6bN9X352dD7MR20MgNPYu/0ynSSEixEMW3Foo6BvmXAmlFcglLFrzdS3NjWqmcE/6YMqIlQ2Rq7ENFKjFUaEQT1qhAC2u3DGnyeEujfLQL7ILd44mpCQzIyC6BIRViKEda6nl3FX0AdEEKX56xPSB3YI2UpHvxnKfpn5CEatAAlhp7Ac5UMWdnCYnQvwWT2MsmTmIlhXsF1Pc25vLd4aWxmZwkJUXMJMSL0sPj8iLGiWqXgN03wEQ9Z6jjfNdhc748/9txHOMgD6SqZGZVsZmfpd1iIazTIaxZVQfevpZahxlKiTcBLfPyV9dE/uVN+Xf9W4EOEjVgY5D081wvZnMYphKwwCbl4vPKxfUDibP0Qoo2ku0/LUqKoQddbPNzqYMf81HLFioXhEWHnX6HNLfP+gDg92u4upI8IGpUa1xoRl/Il0gRDQcFlzfD9RuEC4BBqpUUWwnjU/0icipFFCog6iKfzxS6k3jAhKo/z+fJP6+XB6zzZFhJ3BYoQPWxiA2zay+yYkvdrKZ8NYVxD6aHamtLxrVBWkniwoECI9QZH+WqtGWGnX6JFFfmBYJyH05T51jegaRRFzmecW028RnyKUV83UxyWEkqjKpUG7Rph5Vh+fS//RYH1beWXIXIaojbiErxyVtt6XOLHGv3x13nm+T50aTUeETiMCvfpm6yQhXIhg2AoA79wsMOCWh5OVn79KqOZsmI8VRISaExSt2sEkU7iA4pFpfs2w+hXMS43GCi3WKooIL4R4XFInXWtjuwvK1GiDmmX6zHmNcDLPLaUFTymEqk1M8tqKxWomC0vXCA/Ppv9oUA9rHhJCojbOBfhXX0397FbDA7cYdrnzPsh9+U5Myhph4TjsVJD3wpR9JwnhYoQPZ65cHrrV8IZRtv/HydfXyr9KvjimQ0V/TGUrI2M3aMzUt2oHk4zDyEKKDP5KDP8+KX14d6EQpscnwklwqBv9LWJFXqO/XNSQ2NrY7GSzYZ41hws3wFkGRVKjzy9x+SZfnLsyL9xwvueA3Gu6WE0fqVZqNN1aFUvhmYX0XYWSdU3Ty/Ry2Yaoh0ACG+1sX7/GO7DfzJR2owu5rlGNUvee/5uc8Hf/O7CThHApiuFMxUtk+NMrxbduYI/Nln+Rjnl5sY3zAGbDfF1h16jW2qO1eCsjQpW587del94xLowUJHWzEeFPp6WrCop8FUaERxb5gSF9JN8oYL095y/TqNSoVkQ4F8F0kEOOCDNZStmPLbslUb40rjI1quUskwCA036eveTSxZGAIkKiNvzFu75VzTIlukaXoggltd1FuoxOEsL5CFTn/S1ONlM81MvyygovURibDWN9QURYOEdYuNKoydgUDqgJCX93QvrkXo2jyc7J/a9Xpd/dp/6BCscnnl3kB0d0i32V2dFQgYroQp/Wbt5QAse8QH5q1CDAbsipi1wsWYpWFxGq4uxsRfn1NR5MwJ8A6nbclqlksQZBFOJXZEFUqOoIc5lIwFFQI5SvX3thyr6ThFAen1DessGOC6Hyv3h8jZeYGZjLZAaUFDbLrMW5p3V5UeRn8P99QtrpxqVaeQ+HERLH43N8MYLbN6lfX2tx0+1TvnQiMSHhlVV9WkZllI2jkQbNEWrZjYaT/JiXQzYaVXQ5DShSQ744F1hFEWFWOwtTo9lL6VM+AJgNcdTtuC3jMpKzDFELJbyClanRaArRVPrT4TKpI0K5m7rYlrFuomOEcC0Os6DuvF9vVy9A1+ToKi929g8kwJEbMsuiIYQt9VdD/hzh145Jv7uvqJ6MWNkfPp/6xMWCWKBlJSLCv39N+toxCcDRVb7FyXSZppfZkRHCs37uNMLSiGYZrYH6cBLHVjkKro6VA8XeODba2WIFEeFjs1L2bot5jcoV69kwAITqc9yWodQoURslhFDZLCMPEcpv08Ia4fkgAIR6oErdMUKY7ZRRst6GGa2IcEoxFsaBY6u8WIfIXFjDVgaAzcBUL7+3pTuYoNDm1RjO+PmhDUVPsiNWvL7GP7hL48W1GoqOT7y4zD//QuqlZf7LRX6NHoMTWbZlhPB/vy7ds7NO0zFtNFOIoSSOr2VqhIrXLk8IY9jlzosIi7Vf/exC+vYSFmsnfXyLk8luD3o5y9QghPUvHyY6HX9c4/pept+MbEQ4mxkiBOAwqCPCdGqUIsL2YTEzO6Fkg51d0KoRfvqIlN1FMB3ka/GidiqzYQ1bGcgD9fmRU2un6aE42x738j19rISejFjZ/7NL0LweLOY1KnG8vMK/fo149+Opx2Z1FsIdbpzxI5rC909JH7moIW+5wtRoLAXG8PoaT3H4ErlmGQD9FraSORGsxflON1OOTzw6yzWV8JGMEBaWOZVC+OYxJkeEus0RVlmheXia/7fHeuDURZSkxD7RPhPLRoSTAZ6dtXdqpEax3s40d212GZ0jhNH0NL0ShxEGQR0KTAX5j85Jv1pJn7aOrgIoWhibLRIRFnaNtnaaHgqv0eNefnFfKaEas+ETF2u/ssUiwpM+PmxlH94tXD/KfnRO0qtlVGaLk00H+Q/OSFcNMV1mEwuRzamVAhZOwmnEqJWd9XNfidRoDDvdbDmaE79XV3mhGelSFFNBLi8yDCdhy09Lyw29c2EYBezry0SE+swRVmex9k+npd84nMy62xA9S6D49hi5wCSfB876sdWZvr2wa/RckF/soYiwndCMCAGst6kbR799UhIZsquaXvWmh+o00RwihNZAfWun6aGwWDvu5Rd7SsnJRy4Sxh3aP1CsRvjiMt8/xAB8/aB4zTC7qOT9V4tJwDob++OXpP93TwP6ZAAARgFmMa+9TY7b9vazY16uSo0O5NcI19lgFnIZyDN+Xjg4JS/QOLmWfi+pQj05Ijzp47s9bMyO2RAgp0brjggdRkRTle7m/dox6Y9ekh54q4H6a4gS4xNQ9MtMBPg2VyYiLKwRBvjefu1dm6UJJ+u1tm8ynSOEUW0hVDWOJiT8w0npM5cIv8y4ihxb5WM2VqwwpjlECK1mmbN+vqnAgKaZZDsyjpWLCDW7SWVEBpEhXnBifXGZXznIANgMeOitBt3reNtdMAgoUdesH9UmJnnIYW8fjnkLa4S5rrm1GPeYmHKJ41k/lHujZORbTvnTQmhTj0+wYIKf9PFdbjZmS0eEujTLyLt5/cny9/PcEv+LV1JPvU28eoj1rGMkkSWQKFojhGKC4qw/ZyClighXYxAY1ttYDXOEv1jgnbXjt3OEMKKRGkVB4+iPzkl7POz9O4RsRHh0lV89xCJFbIKKRYSFzjK/WOBv0G+0rgay2lw2NVoazaAwK4RAQ5pjt7vYR3YLDemTyeDJHyWU5WpvHzu2yv2FzTKZoqA3jj4zhq3pfplYCtMhPhFQ3/lkAGYxFxFqeo2+viYLIWbkGqEe4xOoLDsaS+GeJ1NfOyhusDOLCIlrXOsQPYU/zp3Fx72y1YGJALZl/IpV75zzQT7uYJp7eMpyeFbqrHdgBwlhkdSoPa9x9O9fk377ImGnm/nifCGCuISzAX7FICveLKMdESqn1wH44jjr51foN1pXA0YBAsN0iEtcu8GnQgrLhCmOl1f4FQMNfHQX9zHNLlYdUY0JhzJCeNzLffHc9gkA/eZcs4w3hj4zhizpCYrJAJe4dkT4xlEmjwkWOssYBYgMr6zw3R6ss7H5MOc6OcsAcJvgT5R5ab74UuqiPvbureln2GWCv6DX9GvHpN9/rrLNI0TnUy4iZN4YjySxEuXrFSdAZVB4LsA3O5lDy3W5LI/P8lhHvdc6RwijGuMTyK8RvrbGT/rw9nGBAVcPsSOL0utrfKuT9ZmLzgzMFosI83cePbPA9w+qFx41H7sBzy3yPXWEg9BqHD3p4+tsrKGrFv/7TmHIUv7H6kFlNyqnRnd52GSQh1N59ZIBS65GKPskDFshN8Kc8cNh1BDCiQB/6wbhpC89KW8rqHU6DHhphe9yM4sIuwErUYT0GJ9ABUL4yir//inpb67NHZPLqOFQmm32IXoBf7xUjVCeu50M8nFHXv+508gCmfTD+SDGHdpLp0vji+PFZR4nIWwEi5Gc0agS5QTFv56V3rcjLVfXDAu/XORHV/m+fmYVSzTLFK0RKn/l6QXputFWhoMyDiM7slRXXhRam5iUedEGoUuSsDQekyoi5DYDMwnY4mB2A5QPL5sXkjgCCbhNGLakU6Nn/fzGdUwzNXrLejYZ4HEJCUnDE8BhZJEk5HLLmJ3NhnlQjxohKkiN/tccv3NLnuus06gRES5GNexziW6lRNcoMh+BCX8uLyqTFxEG+WYnk+vfVf3pJ+ekFEeMUqONILtGWcV6e7okA+DpBX7DaPoRHRhmR5b4q6v8kn5mNWiPT/jiEKB93WQzIKSoET41z9842vrnym7Ac0t8b91CqKoRvqDTDt7W0mfOqxGGEmn13dvP3PnFkmyzjC8OhwEiw5Al3Sxzxs9vXCcsRLiywpHimAnxXW42YmWvrXFrvqzKOIzY5mIGAQDW2zAb1sdrFIDLiEDJZpmpIFc1CRd6ZQFYjPDChSpEt+JPcFfx67A+M/PG+Vl/rmVURrlZ81wAmx3q3FglHJ7jAHooIozH49/73ve+8IUv/PSnPy387kMPPfSFL3zhe9/7Xjxer0lUUkIggX6tJo5sajTF8eIyvzozCX5giL2wxF9Z5Xv7NBy0ZeYj2uEgALshN0YaS+GlFZ1nzGvDYcQLS/WmRgsvC5oQETYBlblMJJVuadnbp876ZhdQrMW5x8wAjFjTKwnPBvguN1tvY0pzogshPmRhZhG73PjVMtfcnuEwIrv1bZ2NyVvcLHpMi3hM8MVLCmEIG+15t7i09tovRnpijQABoGyJWt7NOxFQ7xx1KXIJcrOMw1B1avTxWT5ibUhE2LgGnLqE8I477vj+97/vdrs/+clPfvnLX1Z+6ytf+crHPvYxt9v9z//8z+94xzvqO0gsRdFvhmbP4ZAVgQRiKZzw8lEryy5k7zNjzM4Oz/J9fcxaZAlfMVsZ5DvLvLjMd7n19N6sGblwXWdEaM2PCFMcR1f55Z0vhPJFbva/oURWCKESwuwCCm8sbZIwZGVL6YgQ213Y4oQyOzoZwBYnAOzysF+taG/PcBiw25P+esyG0z6uVza4rMvaVJCPq05nJo3FcovRUsvIiG4inIRFRKHVcJZ+M7wxeXYi73an4p1zPsjHncxRZUQoW09cMyzE9N7nm+J4fL5RabnaP6wvvvji008/feHCBbvdfuONN956662f/OQnrVYrgGg0+pWvfOWBBx44ePDgxz72sQ0bNjz//PNXXXVVzX+rWKcMAAass7GZsIZD5oEhNhvi4042HdI23Z4NadvKADAIEIBYCmYRT83zdigQAnAY2ZCF19l1YsnvGpU7ZUo0mHUK6vEJZURY8OjkBRRZ/9hhCxajSEqYDvItTrbVxSYDHJkMaNaGaqeb/XBCKuyUAXCRh12eabtdb2ePXNCnQAjAZWJzBTVLJVNBbCqICP35V/EcWI622BqJaBqlO2WQdlmTzgexNT81mq0R+uJIShgwQ+LV1Qgfn5XeOCrYDNC9a/TEGo56UW9QVYTaBfaxxx67/vrr7XY7gKuuukoQhJdffln+1ssvvyxJ0jXXXAPAarXecMMNhw8frucoi3XKyMgTFM8WCOE1w2xfP2OAtUhqdC6i3TIqk02OP73Ar2vpBGEWu7HecBCANb9r9PU1vltXH5lW4THnpUbDSW43MABbXaxwzZbcLLCW8Y+VB+qnQnzEyswitjiZ0lxmIsDl88UuN3t5RTs1+s1rxbsy0wtjNpzSNSIs0TUaS2Elps7wF45PeGNISJQa7RUCiaLLCGX6zViJ4VxQnRrNCuH5TOHZbqjOYu3xOf7mMWYS9E9jPreEyWCjzlS1f1jn5+dHRkay/x0ZGZmdnc1+a3h4mKWXe2B0dDT7rSzxePzee+91OvMi80996lPr1q1T3hKNRo1G40qIrbeyaFS7+3vULJxbSz27IPz2jpTyRy73sJfcLBqNiimEE2Lhr0/52AY7i0a1U+A2UfSGohYJv5gXvnk1j1azu7VBWJmw24Viz0OFGCEEormHc3xF2GbnxZ4EZF6Cev5ic7CDrURyr6YvIr+4EoAr+9SvsscozAdSi2G4DCwaTTgAb1w8thTf4mDRaHSjhb2wkPuVM2vCzWM8GuXjFvgTokWQSr8EgwY24Rf2eHidr5SMDcwblaLRqCAIi1E2bMl7H04EMGYV47G8P2Rlwmok7x077YPHJIQS+hxSDxKLxQRBSKU6owNkOcTsYtETJgAb8Nqa6DZyIRmNKnTOypg3wqJR6dQKNtmFaDTKgHhKDEWiJRKtSh6bET+4NXVsRQhGdT5nPjOPiUAtZz+TySQIZUK+2oVQEARJyol+KpUSRbHYt+SUqRLG2MaNGz0ej/JGi8WSvRMZURRFUbxzC+7cAkC792CDA6/52WwYlwyIylfrkn4cGIIoig4Twimo7hnAQgwHhjVul7EbEOXiQ7PY7sJYS83VsjhN2OkqesAVYjMiJrHsfZwJ4NphVuIu5Zegnr/YHPqt8CVyT05UgsOU/u8bRqF6BP0WrCWZL4E+M+SH5zHhhRVhuwuiKG514Xwod1fnQ9jqZKKIcSdsBtiNrPQTssGBuARnuR+rEI8Z/oQkiqIgCP9wBl+4NO+7M1FscqjfEm4TJoN5r+lKAlucOOmr983Ts8jPf6c8e6EUXKZSr/WAFcEELu1Xv0VdpvSHaCqMzZn3lc2AKBddFWjFTBhrcVw6KFomkOClzio18PwK98chVijICrIhWQlqF8KxsbETJ07IX0uSND8/PzY2lv3WwsJCVhpnZ2dvuOEG1a8bjcbf+q3f2rhxY+m/YjQay4Yjm5zSt16XrhyExZT3cIzAu7fDaITLgmgqUXg/85HkBqdoLFLLsRuTMS5+6dXUH10uGFs+Sw8AcJpSlwwKxQ64QmzGVAIs+4hO+5Mf2l30SUBlL0E7MGjjvkTKaEy/B6JSymlOP8x9g+qBh0FrypdkgRQfsKZ/ZtiSfG4Fbx4TjEZhZx8mg7k3zLlgYkefQX6KtruSDhMzGkt9xNc7IbKE08SyB1MPAzYeTHGj0eBLCD+YSP7x/rz7nIlI406uOp4+q/SqL+/G1YS02clfWZVEg7GhRnfdiiRJgiB0xAcBQFiS3Gb1u0LJsAiGxDaXoPoZj0Wai3KjUXx0PvmBHenznsOYiKOih/70knTjOm4yihZDKsWYjqdNfwLT4URSQkow6tKMraL2Az106NBTTz21srIC4IknnrBarZdffvnKysrRo0cvu+wyh8Px2GOPAfB6vU8++eRtt92m2yEXsN6G19f4Qa0yntxAXKxGWMxWRsZuxH0TksRx+3hbqCAAh5HVOTsBwCrmjU/IVtF13mc7ILtGZf+r9H8pfHjyAops1yiAYSt+uci3uwBg0IKElO7VjCSxFke2CLfLzTSbZZQYBAxbYddqLq2BbNfoz2ekyQBXzYBOhbDJof4VV8FA/WIEI1b1S090KyXW08sYBDiNUA0RIlMjXIvjmQX+axvT572s3X9Zsv3nZlHnZpnnl/hl/dhk13B90oXaT/EXXXTRXXfddcMNN3z84x9/z3ve86d/+qdGo/Hhhx++4447DAbDn/3Zn73//e//+Mc/fsMNN9x555179uzR8aBVrLczK2njOwAAIABJREFUACXm/Ip9/ovZysjYDfjmCeney9voAnq7CwN1O2JbDMhWBZaj4NA2ce04nEZEFBuLwkluLx7myjP1a/Hcaq1hK/PFc6eGLU42EeAAzgX5JnvOhmqXR+24rcmYjekyTQ+5WSbJADx8gUscZ/JXRE0FNZaiFI5PLEb5sEVjyybRlZRYT5+l38JUsxPICOEDU9KN64TsG7jyfpnjXn6xBwBMAotLeirWkUV+9SC2OKSzfh3vNUddqZvvfOc7hw8fnpyc/PCHP3zJJZcAuPnmm7dv3w7gnnvu2b9//5EjR97+9rffdNNN+hxsETbYwYBrhouKulEAAxISlJF6LIUkLzVzajOw7S68c3O7hIMADugx1G8VWdY056SP7+yKcBAAk63FMsYLhTsilPSb8dIyvDHeZ0q/vsMWMGBbpoluq5NNBvjlA2wiM0Qo83uXiJVEeroKIfPFOQcemZb29bPTvjxroakg/29b1G/RwvGJxQgu7mM2g/zSd8krThSjbEQIoM+Ewi3ZTiMLJKT7J3Hnlty3HBVfPx1fg2wAaRbLDL9Wy5El/ptbEEnirL8hb+C6hJAxphK5kZGRbCvpvn379u3bV8/9V8g6G9vuZqWn62S7UeVgdXaGrBh2Az5/WRuFgwA26tGzYxGxkpm365q8qIy8krDfzJDZPlGMfjNbiUnyDiaZISsbseYujLY4MRkAgMnM7IRMhQOXYzZ9HLcBOIyISeyFJe4xs1vWpzdgZJkKYrwwNVowPrEYxZusagddolvxlxufANBn1k6NzoZwISR9/4bcG73CiDCYwFIkPXGre2r0yKL0tasxHcDZdkuNtg8mAb++qcyrbivwFZM3spb4lf2DrPBauwtQrmE61UURIfJn6sMl1wHKCyjWYrmLoWELtiueiq0uNhHgkSQenUl/tqvio3uE9+7Q583DAIeB//skv3UD2+lmp3y5EwEHpkJ8k0PjdFYQEfJhCytcN010JZVEhBvtbKSgJuIw4sQav26UKYMEh5GFKqgRnljjuz3pIoK+c4TnAlxkbKOdbXWqSwN60SUn+neVUyxrwaJdZX1Ik49c1NhFsq1Cabp9cg273C09Gl1xm+DLCEC5iBCrMXjj6YF6AMPWXF4UwBYnOzzL996ftIh43/aqPyb7+tke/WwK3Cb2w0kc2ijsdLNTihPBUgR2g8bDdJmYP39hhbzO00ZC2BuUXkYos39I4/0py+ed+adTR2URoXJhuL4R4ZElLleF2rRG2D6ULZ7ZCrbRrpVLjTaiSbcdsChah076+C53l1wMIbeSkEFrfa4SuVnGr0iNDlvYdsVKmq1OpDj+7jrxlvWtvxpyGfhEENePstUYP62ICKdC6r0TMg4DwklIPGfPK5sUUmq0RyhrsQZAc+GM08gMAt6e3ydf4ZJ6pRCaBF2FcJEfGGIA3+yAbGdf/TBhGbrkJFj2aSlcSVg2Ndqt7HCzI4s8KSEpYTLAtxfUCToXpcta6dRonwmrMRgEZHplMGzN2822w8WO3mFoBxUE4DLyG9fBImKdjYWSuTaEqaBGXhSAwGA35DYxxSUEE+g3w15ZjovodMparAG4tF87InzTOqZqTa9wSb0qItQxNZqNCC0ihixsOqj/e7hLhLAsGjXCchFht7J/kG1x4v+clc4F+aiNWbskKQAoRu4kjmgKJR6aPEeVzYsCGLIw5TWBQWijlIDbxG7dIABgwA5Xrkx4PqgxRCijnKBYivBBCxgoNdor+CuoEWp+OgwC3ltQCLBXNkd43IuLM0Zh+qZGX17J7Ynb5sLZkh70tdErQmjVTI3WPZPXoXz+MvFLr0ivrfFuKhAivZKQA4ikYBHL5AkGzEy5jcFjxq52NR93GfmtG9Jf73Sz05ky4bTWEGHmV3L9MktRDFvSBsqUGu0FAhWkRotxZ0G/RSURoS+OtXhuHZiOc4TRFFI893C2udjZBvTL9IwQiupmGW+M9/VkahTAm8dYvxlfelnqptkJpEfugHJ5UZl+c96VEKt4NKL57B/IbQnY4UYlEaFTMUGxGE17JnRW12gwgXcfJiOcWvAn4Ko13VX4wXFUUCM8scYv8uQ8PXWMCFXmACSEdaGdGu3ViBDA5y8Tn13sqtkJKJbUhxKlOmVk+s3olCuhd27K1Vt2unOjhMVqhMiPCBcj6XWeNkPDa4Q63vv5IP/3CUn3tXa9QCDBnTqtw4Q8R1hOCI+t5gqEAMyCbhvqVTOR25yUGq2DQrvRnq0RyhzayK4cZF0XEaZrhOFUBRGhhfV1yJXQiGL10k4XkxtHoymcDfDNxYRQMUGRXedpNzY8NXpkketlrTUVBFDdMjwCAAeCFdQIK6eSJfXH1/KE0CQirl9EqHws2ykirAerqK4RemNc2SvRazDgc5cJuzzlf7KDyIxPIJQo7wg6YEanCKGS7Ez9V1+VbhoTivnEKiPChWxEKDY8NfrglOTXyc70fJADqGo9OgEglIDVoOeAgd2QM2UsxnFvnvOfnqnRRJ4j2FYXa8RMfa8Ioa0gIvTF4W7XmlBzeMe4sKE99izqRTY1WtpoVOYt69mb1nXew+8zwyTiVyv8a8dSf3F10c+v0mVtKVsjrODSvk4eucDXYvqcp6aCHMgNgRAVUomtTFVUUiM87uV7+nL/NemXGg0kuPLheEywiFiM6HPnWXpHCFkkVZ2zTNcjsG5zX86lRpOwlzsXvGNceHvbLNiqip1u9r4nUh/aJRSaJmdxGXMSshjhshNvo7tG5yN4aZn7dJKuqRCAika52593H07NhJoU2vp1LRCiAiGMJOGNQXlVbdY1NerKfzg/vMlQ9tNdLR15IqgBrfGJ3u0a7VY8ZiaPT5S2lel0drjYSpR/7rJSc455NcLc+ET5HFc9/OyCxJGze62T80FuEbtECH9yXlqKNulv6R4RljXdng3zMVveGnhdm2XUHbA3rmNlOwCqpYumqUui5SzT6xFh9+E2wp8Az9/K233sdLPr14mlT3ZOI07nIkJFarSRuvLwNDcI8iinDlchU0Hs9rBg5++NCiURTTUvx1vJMsKqKGu6PRPGenveLSaRxVP6XHLp/nA06RUhVI1PhJJ59lpEdyDbwQQTFaVGO5e3j7OLys3+541PRLPjEw2sESYl/HxGetM6pssiuqSEhQg/OCx0QUS4HG1qsTOQ4E5dc11lTbdnQnx9freBrs0y5e3i6qdXpEA1PtGzRqNdj7ySsJJmmc7l4j5Wdi9KNjU6H4FNTA+TNLRGeGSJjzvYbg9b00MIZ8J82ML6zN2QGl2JAkCgWe2v/gpWT1SFxYB4CiUCvJkw1tvybtEzNdqUiLBnhDB/fEK5kZXoJuR+mWAFzjLdjTPTLPPics6nsaER4UPT0m0bWbZxt07OBzHurHQBUJuzHAOa2PXjj9duK6MJ0+q6VzId5Kr+c5OIRMNqhI2gV4RQ1TWq3MhKdBPybt5IVzfLVILLmB6feHGZX5ERQnvBVk4deXiaH9oouE3MF9fhT0wF+biD2Y3dMEe40uzUqP4hVOnG0ZkwNuTXCBkgMn20kCJCPVF1jXrjnCLCrkSOSEpv5e0FXKZ0jVAZETbOa3Q+gvNBfmCIeUzQpUZ4PohNdjiMrAtSo8vp1GiT/py+/moydkOpBRSFNULoVyakGqGeqEJ7fxxuqhF2I3JE0t01wkpwGdM1wl8pIsKyxZ6a+c8L0lvWCwYBeqVGp4N8k4M5jd0wUL8ag9UAvx6BciXoPj4BOSJMAoCmf95sGGM29Y16lQkb8XAK6RUhtIp5XaOrMfRRarQbkXfzhnq+RihHhAsRBJN8S2bungGWAq9BXTgfxE43ALgzLnd1ci7Ixx2swpWwbc5ylG92sKYVOytZT18tjszgzQNTaht0iWM+zMds6rhCL7tRXzzPYq1B9IoQqiLC5jy5RPORIxKKCE0CRIZnFqQrBvImnSsxUK4Bf5zLKRb5QqR+poPY5ICjKyLClRg2O5tbI9T75JbtWvqP8/zoat6FzmIUfWYYC5TELLKYHskHlcVag+gVIbTmtwmsxbmnhx23u5hMapTbe7tZBoDLhMfncnlRmQaZy6xlnHv1qxHKqdGKdqO3OStRvtnB/Ho8LZXQkBqhkQUTXOJ4aFp6YTnvFbkQUreMyuiVGi20WGsEvSKEtvxmmR7fwdTFyOMTFBECcBnZE3O5ThkZm6Eh5jK+jHOv25R2uauHlRjMIpzGiuye25+VGDY7m6fogQQcuqdGDQgl8cIyX4jghaW8B6LZKQOdmmWSEmJSM8wxekUIVTVCEsJuJd01WsEapq7HZcKxVbUQNmgBxVo2NapHRHg+kF443B1CuBzFliamRvVdRigjvxA/nZJuGmOqiHAmpJ6mlzEJiNcdEQYScBia4bDXK0JoFMCBZOaF6fFlhF2MvJKQmmUAOI1wmbDNlR8RFpju6oI3031mFGAU6tXa80E+7pBdwrtioD7KNztYM2uEuguhPHjz4DT/3GXiRIArX99iqVFdmmWaMzuB3hFCyL7bmReGIsJuxW2Cr9u9RivEZWRXDjLVWaRBS+p9idwHylN34+hUEOMOAOiCGmE0hSTHOltT5wgdDagRnvbxcwF+/Sjb42Evr+RelELHbRldaoTNmaZHTwmh0miRnGW6FdlZJpzkVh1XdHcmLhMuH1A/CaUno2vGF89dudc/SjgV4hszqdFO7xpdjfF+M9wm1jSv0VASDr3TIQ4DfnROumWDYBCwf4gpy4SzWrMT0KlG2Bx/NfSUEFoNLJLpl6Ou0W5FXklIESEAlxGqAiHky0Gd1gIo8SlSLB5zvWXC+TDWWQHAJIBBtz0GLWE5igEzk6/CNafR9SUuQeIw672DzGHESgy3bWQA9g/mlQlnQmp/NRldxicaYRenSS8JYaY6wgF/It3tTXQZbiNWY5BAO7bgMuGKAiFsRNdoJAmG3MnXXXdEqLxOzXqadCgrMQxaIDBYm2IO0IhOGQAOI0SGQxsEFAjhhSJdoyZBj4gwrv8oiCY9dLbIriQMJGAVYeihh95DWA0QWDdv5a2c9Ta2w1UQETaga1RVcffU7bvtVRg/dXqZcCXKBywM6X0gDX8gjSgQArAbcGCYDVoAYE8fmwlx2clW/lczaDOLOnSNUmpUf7K+29Qy2t24TZQXBYAb12msLbQ1YAGFqtBQf41wNYb+jCe+3dDZExRLUQyagbSiN/zPNciZ025gb9uUFguR4dIB9tIyR/GWUeg0PtE0C7AeEsKsyxr5q3U3HhPr8R1MMnv7NZ6ERiygUH2g9E2NOk2d3S+TFXWnMR0/NZRgA6bpATiM6QKhTDY7OhvSsNuW0aVZpjn+augpIbSK6ZWEa3Fy3O5mPCaapgegPYZsb0CN0JefGq1/JaEy1+ro8IhwJcoHc6nRhv+5BtUIt7vYJf15Qvj8EgcwEy4aEerTNdoUfzX0lBBmI0JvjFpGuxm3iabpi9KIOcKsrYyMPMFSM+EkBAZLpsrrMLJgw5YJN4HlKAYsAOA0skDjNzEFEtzRgHTIoCXvuuqqIfbAlPT2n6f+zxlJc4gQnTY+0UMnjGyNkKbpuxuPiaV4B586G0ojUqMFzTLw1RH6eGO8TyGrne6ythLjA2YBTYsIkw1JjarY6Wbn3m18Yk56Yk5jVlVGlxph0wbqe0kIM3aj3hhoPX0X4zEjmqKIXxubgYWTeiwFUKCyp3Cb2FodniLeeN7Hs9NTo8tRDKUjwmYIYSDepBBq2Iq7tgp3bS36AyaBxeoenPQnuKspg1C9mBpdi3OKCLsYt5G6RovSmGaZ/NRofSsJVdepnT5HqEiNNkUIE/rbytSGfjVCPY6mHD0khNnU6HwYcvma6Eo8ZmalOcIiNEQIE3ldo3UuoFBdp3b6HOFqjPebGQBncZc1fwJn/fzFZf7EXL2PNJRsyBxhDejUNUo1Qr2xGdhKlAN4fI7/9kU9dAXQa9y4jhWrWxCNcJYpSI2inpWE3hhUNcK5cD1H10qSEoLJ9JPjNGIqqP1j976Q+tez0iYHe3WVz/ymUZ5br41AApsctf+6jujVLNOc8YkeEkK5RjgV5KsxfonWiBXRHbxhhF7cojSoa9Rjzl1ZekysntToagz9CiXo6IH6lRj6zZBtDUqkRo97+b+8yXDLenb5j5JTQV5PvqpBA/U1oNNAfV7WvXH0UGAk1wgfneVvWS8UOm4QRC9gN7CQ3tMIvniec6/NgJSUdxLkwH0TlZ4UVffWnNJag1jJ5EVR8oGcWON7PAAw7mDng3W9OsEuqhFyIJRskq73kBDKNcJHZ/jN60kGiR7F1nhnGcjZUcUo4XSQf+LZVIW+Kt54ngNiRzfLrEQxkGn8cRq1a4SrMUSSkMfSxx04XyR9WiHBxniN1kD9+whDCZgFNGedWg8JoXwKeGxWestYW7xRCKL5WEQkJeg7QLEWhyd/HklehpX97zEvFiP4n7+qKEAo6Brt4GaZlVguz1ksIjzu5Xv60j+zycGm6osI2yg1WveGen+CN6dTBj0lhFaRPbckeUxsk4OEkOhddF9JuBbnnvxCjqpx9NVV/p7twndPSROB8md55eoJdPgcYX5EiIBW6fTEGt/jST97OkSETRmor4T69xE2zV8NvSWEBsyF8RbKixK9jd2oZ+NoUkI0pT75qny3j3n5W8bYp/aJn31OIxRNSjjm5Vm1U+2y6GhnmewQIUpGhBf3ZYVQhxphu0SEdadGm+avhp4SQtmImfKiRI9j07VfxpeAy6g2+PaYVKlRvref/e5e4YVl/l/zudsfn+NX/Cjp+qfE/h8ns7teVRGhs5NrhMtRZWpUu0aoFEI9UqO8bSLCulOjzZqmR08JoVWEyPCmsR56yARRiL7JRs0Gd2VqNCnhlI/v8TCLiC/tFz5zJJ0v48DvHUn99kXC8nuNd20RzmWypmqLtSL60REsx9L+aigeEZ7wpltGAQxbEUzWNd8STKA5K93LUn+zTCDx/7d35/FtlWe+wH/vOdo3W94dW3YcsjRpwpImTiBJG0ougXAJA4QSSgtDO3A/naFAPxQonbJ02lsuMKTTtBfaBrhMmU8DbT6ZgU5ZktLSJiUhBBqDcUJIArHjeJXlRfty3vvHsWXpaLUlS7L0fP9yjrWcSPJ59Lzv87wvt+SkdwIlFQgNKqysZrS4Gilx2d3hT9FNL4scGv14lDcYmTwec/05AoAXT0oAdn8iAbj1M4JBhbnmybkxhy9qxnGWD43ycHe8XoUgRyA6Nth98ElomNjJiAFNxumPjnLAHSyUrVc0GbdPjAYoI5wBehWjCUJCknfmOaa4g9JIIE4gLI/YkrDdwZdZJy/0j7eK3z0seYJ46D3pB58br40Pz435JQSlqBlHjQCGLKxRkheD3qjVHMOv/HPHJbnP8kPHZKWMrNmUcAGalFwB6FUokCZpbcYN9aO5WkAcJRUIDSpsoHFRUvKSr955aGBqW1gN++IMjUb2EbYP8aXWyV99oZ4ttbLLXw9atbjcpiwScfiUnRiYza2Eg15URfx3wtOEv/pY+umHEoCOiAlCWVMG9TKFs+I2spQR5qzwp4QCg1GFC2nxLVLykmeEXS7e7ZrChTi2iRDRG1C0O7A0ekXDR1uFv/bxH35ucmX0ZhM+HQNiNiOUzd5WwgEvj80IQxzvDvJH20J9nrgZ4fTrZZwBbs7VpFpKWpH5M22f4NQ+kX0iQ052tiKkoJmSBsJRP44OT+HRYpeVAVCugcM3fhH8wMGXRic9i8vZ818Qv1A/ebDJxLrdXOLxw+osbSUMSHAHo/47ciBsd/BGI7tpgfDPh0MfxskIp99KWFAZYebFMnE/DDOEIgMhpSV5Rjga4B2OKWWEcXb3bK0WDg3wE6PcHUS3iy+wKL/Xbz0n6sqjFVGpZWfdXNE7MX7CmlkZCAe9qNBGNZbIr/zBfr66hj24XHylS3p7QBkIM2kldOZqZc50ZD40GvfDMEMoEBJSWhI1tMlG/Dg6PIUL8YgfsXOEtXrce574rYOho8N8YRlTpXGZkRdVUSw0KjOpZuUc4aBXuY+EWc3G/FwOhBY1frhC1ImoN0TdK5NimbFAoSwrg2wUyyiWVphRFAgJKS0pMkI/OqYSCIf9capGAdzxWeHjETz2vqQYF02k2cxOO7lioVHZLG0lHPRBsbNgZEYI4O8XCDctUF6BG4ys18Ontxhs4ay4DUAlgHNkMktIGSEhZKaYk3bmjQamkRHGOa4R8G8Xir85lW4gnGvCp2Pxw+osbSUc9PJqZUaIThd63OOrbAsM/2elqLiXWkCNjnW7pxNACmd9NVmG624rllaYURQICSktyTPCET8f9GLAm+6jDfuUK26HXdbIrmoWlqW3CbY8N+bwJRganZWBUJkRmtT4Q7e0ooqFtxbSKuMgADSbpzk6WlBDo8i4Xibuh2GGUCAkpLQkH2kcDUCvQvr1MiOB+Bmh7IlVwvmVaT3ORCCMMxo2S/sIYwOhWc3C46JJTLtepgAzwmnXy3BgNN5aDTMko2Jbr9f75z//+cSJE7W1tZs2bTIYJqd9Ozo6zp49K/8sCMIXv/jFjE6TEJIlqTJCrKhiR4d5ZHtDEnFn9cLOiakXTaTZjNNO6EVUxG2on4VzhANePt+iHBoNSLiwNkX60WScdkbIK3KVQqVDIzC/xKFckj0tI34YVTnalRcZBsL169drtdrzzjtv165d99xzz8GDB2tra+Vfbdu27Z133lm0aBEAlUpFgZCQApGyWOZ/2lj69TJxF92eBrmRvE6PsphuX4uanZlKj3+BGPRiVXXUEbMaDGitTvFyNZnY3+zTygiDaDJN434zRZdBRphkyH0mZBQId+/ePWfOHACc87Vr1z777LP3339/+Ldf+cpX7rnnnkxPkBCSVcmLZUb8/MJa4amjac3tyONXZdkYjjOqYFThoxEem182GvFWfxaeIscGvbxKFxXUzWqcY2HVukT3GFejR79nOs845i+woVFh+oEwl5UyyHCOUI6CABhj5eXlit+eOHFi165dhw8fzuQpCCHZlaSPMCjBJ2FFFetwpPVQYwHoRaTTJpiOZhPrcceZI5xnYZ+ksbV9oYkzR6hhKScIAVRqmd03zYywsIplxOm3EuaydwIZZoRh+/bt279//89+9rPwEYPBIAfCffv2nXfeeS+99JJaHfUWBQKB7du3WyyWyINf+9rXampqFDcLBGZhxVgRobcg7wKBgEqlEoTsBBwt4AzAHwjEXpKHfDCrUacNuoIYcAVSlir0O2HVIFsfD5sRhwdhFoOKx2vU4dRo1p5legKBwFRf/34PrKqo/4ueYWUlAoEUwaFMhUHPdP6/o37oGQKBQtmqQy3A7VO+m2kacKM8+qMVDAblP4SpPpRKpWIsxfePKT/o7t27R0ZGAFx22WX19fUAjh49ev311z/77LMtLS3hm23fvl3+YWxs7IILLnjuueduvfXWyMfhnDudTsVnKxQKSVLUp0SSJMURkmP0FuRddt8CBmhEweWXDDF//SM+mFUCl6SFFuHYMG+tSpGXDHpQoRWydW5NRiYyZhSVj2dVQ+LCkFfK42ai8jlN6X9q9wlWddQ9jCJaK5HyMaxqZvdBkqacFI75mUk1nTvOEA1j3tA0z2fIy8rUUfeVJmTvBCdNORB2dHT09/cDWLNmTX19/ccff3zppZc++uij1157bdzbm83mSy65pL29XXFco9F897vftdlsyZ/O7/drtTkcKiYx6C3Iu2AwqNVqs5URArCoAz5BGzsH43Xxcm1Iq9V+tiL0sYuta0jxjC7wCl0oWx+Pc8qkMk1IF+/RWszBbp+m1pzPkkhBEBTDWkm4ghBYwGqM+r80WmDVQp3qbaxXY9gf0GinXCviDgWtBlFbMIWjenVQEtI6H28IuuiWSheXKvVcG9FoKYqiIAgzdC2aciD83ve+F/759OnTGzdu/N73vvfVr35VPhIKhbq6umw2myiO/weCweChQ4duvvnmrJwuISRz8qKXdXrlFWpkYivUxeUsnVbCoay2PDebkOjR5GnC5VWFcolPKXahUQA1+rTuqxGgFTE29f3ZC2r3CQDa9KpGD/TzZz6Snl4XFQlz2U2PDOcIr7nmGrfb/cYbb7zxxhsA1q9ff+WVV7a0tHR1dW3atOniiy+2WCyvvfZaMBj8h3/4hyydMCEkU+YELeqjExffJeXszz2px6Acvjhtf9O2slp4dGX8X7WYcWosa0+UA7GVMlNSqWN275R34yuo/QiRXh/hf3fy6/8Y/Hyd8jYOHxoMce8xIzIKhD/4wQ9cLlf4n3Pnzq2qqtq5c2dlZeX27dv/9re/+Xy+73znO5s3b05/SIEQMtMStRKGmwIXl6e1K+FQVgNhvQHXtsQfN2wxp5WhFo6B6L3pp6pSC7sPLeap3WvWZYT/77j0z4dDDy0XX+1SfuvKcftERi/bpk2bYg9u3boVwPr169evX5/JgxNCZkiivXlH/eMZYYuZ9Xt4ogW1w4Z8vDIn41fzzOz3nbOpYivu0Gj6KrWwp73cq0xuVIi7eGm+pOwj/M47odcvU3lD2P2p8lcOH7dqc7cCKK01SkjJMatZ3EXLwpFPYLikQfhdqtgz5ENlBgOA6Wsx45NZNTQ64E13RjCuCt2UWwkLbcVtpNFH6PBhiZXpRHhjBuqzO9iQEgVCQkpOoqHR0QC3TEwyXT+PvXgqdSDMTddzi5mddvKC6QtIbdCbUa48jYzQGeDmgtmMUJY8IxwLQCNAI0CvgjfmZjluqKdASEjJSTQ0GjkWurlJ2NfLh3zJHmfIxysyGABMn06EVYueae3SlxeZFstokfyVjzXrMsJwXahOjBMIc7k9PSgQElKCLKnmCAGY1NjQILx0OllSOJzDr+3zzCwrhaNPHZX29854QLXHbE8/JZVTHxp1FmQgTJIRhjdh1ovME72TPU+84fMMoUBISMkxqdmYP95Od2jLAAAgAElEQVQcYfTmgtfPY79JOjpqz9UcIYAWc3ZWHP2vT6W2oRkPhAMe5fb0UzKNodGxAtuMEJPtE/GFZwF1KuUcoTMArYiYbUhmEAVCQkpOojnCMX/UPNMVNuFgPx9MfEV25HCvnHlmnMpGIOzzxBmIy7oMvyJMIyPM1n5YWZQqIxwf/NSL8ETfzOHj1tz+XygQElJyEjXUj0TvCW5QYWOj8J+fxk8KfSEEpNxlIXPNLCuFoz0enoNA2J/zjLDfg5QbPOWYRkg+RzieEaoFSByRg6M5biIEBUJCSpBZjVF/nOOjMRvabW5mr3fHT01yfLWal3hoNP3AFpQw6IUnOLNDoxwY9mdU/V+pg32KxTJ2HyoLbElgbbwqmLDwHCEAnQhPxDezYR9yvMA6BUJCSo5Zk6iPUDm89pky9vFI/LAx5OMVOazrm2dJuMra4YF0A9uAFxKf8aFRhw9mderFtZOo1DK7d2rRetCbUQ46E7Qi/Ilf6sjVRBUdFA5/ThcaBQVCQkqQSZWoj1BZqje/jJ0c5XEvyXZvTlueGwzM7o0/qvnXvnRjxlk3x1QyyOnp9cRZ0HxKLBp4QlPb1bbfi+oMWvhnQvKh0ciWea3IvBFjoznupgcFQkJKUNxiGTk8KNbosqhhVKPXHedBhv08l0OjAsNcc/z09EB/uoGwzwMgahRuJvR7MlpWBgADrFNsJbRn1sI/E9IfGtXT0CghJMfiBsLIJsJI8y3sxGicSDPkQy6HRgG0VrO3Y0ZB7T4cG043EPZ6eNz27ezqdfPazDJCAJVaNjSVwtFBb8EVy0x7aDTH3fSgQEhICTJr2FjMHGGi+vtzzPEDod2b6+qM1TXsYEzy1+nkna74g7exetyYa2YzPzSK+oy3EKrUTa1wtCCHRtPqI0TM4jI0NEoImXEmFdxBKC5Ro4HxXXkV5pfFD4S5/9p+YQ07EDMdeMbFPUEkaXaM1Ofhc01QrGOSdf0eXpONjDBRK+G7g3G/l/CqwhsaTWdlGcS0Ekb+KjcoEBJScgQGvQqu6NHR0QRbos+34ORonOO5/9q+1Mq6XHw4uvGjywkAnc60YluvGy1mFrvXQXb1eVCbcXKWqJUwIOH2t5ThxRmAyKAvpM0IAWgF+JKuNRpejUGREeZ4e3pQICSkNMVOEyYaGk0yR5jL/QEAqAR8roq9HT06esbFkX4g9PAcDI32ebIxR5iglfD5E9Lb/VxRjTmQ2faHM6RSh35Pwt86fJN9qDoVi2zuzPHWE6BASEhpMqmV04RTLZZx5LaPUHZhzDRhlwtWLTqdad2914O5JuWCXlmXpYwwTithQML//pukEXHWFfWrAqyUAbDAws64uDte/u0KQhSgmyhR1isyQj/KaY6QEDLTzGo4lRlh/PX+K7QQWJxJuFyuuB22uoYd6I/Khjqd/KIa1uVKKyPscfOWmc8IezyozzwQxssInz8htZjxuSrWHd3QMlB4lTIAVAIWWNjReDW9im9RMcUyuW4FoUBISCkyqzEaO0eYYDwqblLoyHmzF4DVNcKhgagdes+4cFGtkE5G6AqCc1TrZrZ9gsuLvGShWEY5RxiU8KMj0kPLxQYD61ZmhAXXRChbVsE+iNjr40PH+M+Kchi9KqqPMMd7MIECISGlKTYjHPVzS4ItzhMEwjwMjdboUaFlxyba6jlw1s0vqmWdaWSEvW5eZ2D66OmorHP4YFRlYQuhioiq0aCEY8P8X/4WajZhXR1rMEKRERbm0CiApVbW7ph8tf9vx3g2HzlBiOiM0B2EwCZHTXODAiEhpcgcM0eY5Gv4fAsUgVDiGAnkeosAWeQ0Yb8HFg0WWMZrR5PrcaNOH38/9Gn7NGYd8KxUygCo1I2vLPPnHm75VWDz3lC7A4+2igAajHEywgIslkF0Rjjkw86T4UAYtdGSLqJ9Ivd7MIECISGlKbZqNNXQaNSRET+MKoj5uPZGttV3ubjNyOoNzO5TFlLG6vXwOgPLbiDceSo2EGahUgYRxTIPvBv65Vrx+HWq3RvEFVUMQINBmREOeFFVkBnhsgp8MJER/qFbGvaj1wPEbF2iVzHvRJoeu+BtDlAgJKQUmWIDYeKh0XNihkZzvPVEpFU17FA4EDq5zcgEhjkGdibV6GivB/V6aEUEJCRe8GRqXj8jKcqIspsR7unmg17ccE7UhTpeRligQ6M2I/MEx6t+9nRzAMdHOJIOjToDMOVqk8swCoSElCKzGsqh0cTfxOdb2MnoQOjIbL+9TJxbwU6Mcrm2ossFmwkAmkypOyjkOULE1ChmYtSP/+6MSkV73dnJCDUCtCLuPhh6eLmgyLwbDOh2RR0Z9BXo0CiApROjo3vO8Itqx5dNTzI0OhaAKecrA1AgJKQUmdUszfYJALV6+EJwRFTz536h0TCNgCVWdmRovI++ycQA2IwsZU+9PEeIrAZCZxAvnY56XnkANisPXqljALa0KK/SDUbW7Y5aXrUAt6cPk+tlOoa5KGCTTfh4lCNmWSJdxGJszgA30xwhISQH4swRJmiol823sI8itkBy+HK90GikFVXsnQEOoNuNBgOQXkbYNxGislg46g5iT7cU2TPen6U5QgCVWvxghSDEvMw6ESZVVHOFvVCLZQAss7L2Ib7nDN/YwBaW4fgIILdPRM0RTrZPOIMwUkZICMmB2DnCREusyS5tZL+LGAO0+/KWEQJYUc3khac7nbx5IiNM2VMf7nPXCtnLCAN8STnb0z35ymS+K2/Y/2hgVzXHv0TLSaH8c4hjJJC3keqUllawDxx8T7e0sZEtsIwPjQ4lbqgfC8BMc4SEkBwwqzHqn4wcPNUF6Estwm8iKiSH/fnpnZCFM8IzLjQYAaDJlHpoNFzPqdj9LhPuIG6cL0SOjma+K2/YP5+fsCy30Tg5TWj3olyD2MSxQCyzsg+G+F97+RfnCAvK2MkxLnEM+1EW8WHTiyy8JYgrQBkhISQnzqtghwZ4eKUPVwA6EarE14PlVYyxyQ2AhnK+P0CkJeXj21D0efgcA0MaQ6MSx8DE7kg6MTvLjfpCYMC1Lez3nVJ4Z6dstU8AyYonIwtHB328ulDHRQFYtSjTsGUVrEwDowqVWtbl4sMxVaORQ6OUERJCcqHJxB5ZKd74p5BcpLD7UynlJNOXWthvTkkAghL+eJYvKsvBacanEnBuBft9p1SlY2oBkDPCpEOjdh/KNJBvrFchKzsxuYIwqmEzsiYT29/LAXCg35ud9onkGgyTQ6ODhdpEGLbUiksbx2PNAguOj8Dh59F9hJHtE9yUoI1n5lAgJKREfX2RcI6Fffdw6PvvSQ++K718aYpVrb40T/jtJ5wD29qlGh2ubMrn1WNFFfvP09xmHP+nRQ0Vi6prVehxTxZzZqtq1BXkRhUD8HfNwn+dlgA4fDBkY321lBqMODMxNDrgKdxKGdmyCnZpw/gZLihjH49whw+K9gnqIySE5Mcv14kvnOSvnpEOXqU6tyLFxfTcCqYVsfOk9Pj7oZ+vze1akDFWVLPXuqRG4+Q5J08Kez3jvRMYHxrNQtVoeDbr2hb24inJE0Rf9iplkotcd3vQV7i9E7J1dWxl9fjLsrCMtQ1xIGob4aihUQqEhJBcqtTilcvEP21S1aU3rXX9PPb3fw7df57YYs5zCrKiirmCCGeEGJ8mTBwI3bx+IiPUi9nZiUkeGgWwuJy1Vgs7PpKyOEGYXOS62wOeQh8avcI2uSbAAgsODXBFpVXk0Cg11BNCcu28CqZP+7rzpXnCeRXszqX5v24sKmMWNWym6Iwwcb2MIiPMWiCceOkevEB4/H3ptDMXE4SIKZYp8KHRyIrWhWWs3aFcVjsyR3cGaY6QEFLAlpSzXRvEvKy1rSAwXFDFIjPCOj3rcSfLCMNzhIrd75J7fyjhY7oiBvGWV7HzK/H4+1JuMsIKLTyh8f9FwS40Gtc8C+Nc2XsTmaPT0CghpNA1mwogDAIAVlaxpoiTqdZhwJvwxpG7xqefEQYl/Lg94a4W4WIZ2cPLxQ5H1tZXS44BcyYKRwc8Bd0+oaAR0GxiihXbFcUy1D5BCCFpWVHN5PXVZDV69HsS3rjXzWunXjV6coy/fFoKJgiFrujFwD5XxTY2sppcJWfhpbcHfaicPRkhgIVlUdvTA9Cp4AtBTr1piTVCCEnX6hoWmX5V69iAN+2q0fSGRjscfMiHt/rjP6wrMF4sE/bgcjE3GSEmVll74aR0cpTPMaS+feFYUMYUQ6MM0Ajj6247A9yc8znCnEdeQgjJBsUgbfKh0aiqURUb8afVPtExDIMKv++UVlnj/NYVk7tcWMNc2WjVT0eDAd85JJnV+OMm1ZxcRd+sWFjGBmO+sshpuk6kOUJCCJmuar0yIwz3CnpD8IYmh+PSHxrtcPCvLxJ+35UgI4yeI5TlbFjPZmLXtLDDf6daXjWboiCABRZWHrO8u1zBFJQQ5NDlvEmVAiEhpBhUaOEMIDAxnzcaQHgl1ciSUUxpaHSY37RAsHv5p/EaM2KHRnPpG4uFf1stpt/6UjgWlsVZsV0nMm+I56WJEBQICSHFgQGVWoSTwtNjvH0iEEaWjELeBjZhKeikEMfxEb64nF1uE17tjpN15aWsI0w9ay/ezSZWHzOWK6fpzmAeJghBgZAQUjSq9Sw8TdjpQvtEC2CfJ6rPPc0+wlOjvE7PjCpcYWOvnolzA3deA+HsJTAsr4w/NOrMU5JNgZAQUiRqdBiY6KDodPIPwhmhG3URdZVpbsPUMcyXWAHg0kbh4ECcKpjYYhmSptg14cYzQhoaJYSQTETWy3Q6ebtj/HhkySgAnch8aSy6/aEDn7UyAGY1VlTxP/Yob5CXDYOKlRwI87I9PSgQEkKKRrVusqe+04nTY3w0AEQ3ESLtodGjw3xx+XicW1mFcFgNcwdhoIwwS/QiPCG4gpyGRgkhZPoie+o7XVwtjE8TKgLhFIZGJwKhUQU3DY3OJJ2KeYPcGQAVyxBCyPTV6Cd76k+P4fP1TO6g6FEOjY4vYpKExPFRREZoEBE7R5iX1u9iJX87oaFRQgjJSHhxmaCEfi+/tEGQ62V6o4tl9GlkhJ+M8Wo9C8c5kzpOIKSMMIv04WIZCoSEEDJt1TrW7+EAzrh4rZ6dX8nahzgH+r1R7RM6Fbyp5gg7hvlnyyf/aRB5nEAY4EYqlsmSiT5CqholhJAMhIdGO11oMmFZBfvAwe1emNXQRFzq5EVMkj/Uhw4ssU4GOaMaroDyNpQRZpG83I8zT98tKBASQopEuFim08mbjKxODwYcsSt3jU9naLTDMTlBCMCoUvYR+iVgNi/vUmj0KuojJISQjFknlhvtdKLZBABLrewPZ6W66F3jU6416g3htTPS+vrIQKicI3QFKB3MJp3IPEFOc4SEEJIRebnRQS86nVzevH5pBdvbzRUrW6oEMIZE2+0C+M0paUU1azFP3sugUs4RuoLUTZ9N8gKwziBVjRJCSGaq9azfyztd3GZiAJZZ2RE7r9Urb5Z8dPSXx6T/9Zmoa6MpNiOkbvqsmlhrND9fLygQEkKKh7zc6OmxiaHRCiZxJNrrIK6OYf7JGK6wRV0bjWrmjhkapSbCLAovsUZDo4QQkhF5udEu18TQqJUxoC4mI0xSOPpkh3TrZ5gq+tIY2z5BJaPZJTfU56tYht5JQkjxqNbh2DAXGSxqADCr0WxmdTEZYaLlRl1B7DwptV2jvDDqVfCFIHEIbPKWFAizSH5HXEHKCAkhJDPVOvbu4Hg6KFtmZfEywvhDo2/28PMrWaNRGTgZoI9ebpS66bNLP75DfX7mCDP6StPe3u7z+eSfLRbLggULIn976tSpd99912azrV69OpNnIYSQNNXo8e4gX1k9+RV/WQXSzwgHvbwh5sYyuYMinK9QRphd+d2PMKPnvOaaa0RRNBqNAFpbW5988snwr1588cXbb7/98ssvf+uttzZt2rR9+/ZMz5QQQlKp1qHXgybT5JELKlmFVnmzRBmh3Rtnz1iZXoQryIHxMOmkPsKs0olwBhDk0M+6QAjgueeeW7VqleJgKBS67777nnnmmc2bN/f19c2fP/+OO+6YP39+hs9FCCHJVesYAFvE2OYX5wixKV6inZgcfl6ujZ8RmtRwRqyy5g5RIMwmvQoD3ry9pJnOER49enTfvn12uz3yYFtbm91u37RpE4Da2tp169b97ne/y/CJCCEkpWodgPHeCVlsOoiJGanY40M+VMa7PWIWl3EFkJctZIuVTsSAN29rFGQUf/V6/TPPPMM5P3LkyCOPPPLNb35TPt7d3V1fX69SjT+4zWbr7u5W3DcYDP7617+2Wq2RB6+++uqKiorII6FQKBRKYw9NMmPoLcg7+S3gPMU60QRApQYAbEae/EOrFbnbz0MxsXDQw63VcY6HQiGDyJx+KfyoY35erQP9aWSLGtwThNmU8CUNTZjqIwuCwFiK+Dq1QGi32w8ePAjAYDBcfPHF77zzjkajAbB///4NGzZs2rTpnHPOARAIBERRnHwOlcrv9yseKhQKvfvuu/L8Ytgll1xiNpsjjwQCgUAgZtV3kkP0FuRdIBBQqVSCQDXeqZkEqASxTpPiM6thgsvPAwFlwLN7BbMY53ggEDCI4rBn8mGdAcGmj3NLMj1qMEAwCFIgEH/tu2AwKP8hTPWRNRpNlgNhX1/f888/D6C2tvbiiy+WoyCAtWvXzp07t62tTQ6E9fX1AwMD4Xv19/cvX75c8VBarfaJJ56w2WzJnzEQCOh0CSavSU7QW5B3oVBIp9NRIExTvT4416oTk176jJpQUGA6nfIldQSC9RZRp4tpn2DMpBGCghi+i0cKlRviPAKZnjIRQMCiFXQ6TdwbBINBURRn6Fo0tUC4ZMmSF154Ifa43W7v7u6eM2dOKBTy+/3nnntuMBh87733li9f7vf7//KXv9x1111ZOmFCCEnmgiqWPApiYj/0WEO++HOKAIyqqGIZV562kC1WehEAzHmaI5z+15n33ntvy5Yt27Zte/zxx9etW/f5z39+1apVO3fuXLZsmdFovPPOO7/yla/88pe/vPbaaxcvXrxmzZosnjQhhCSyoir1xTRR+8SQl1cmqBo1qhXFMtRQn00qASohb8u3Tv8rzfz58zdu3Hjs2DGVSvXwww9v2bKFMbZy5coHH3wQwMMPP7x48eIDBw5ccsklt912W/ZOmBBCkvlcGoFQr2Ke4Pj03ogfZRoACEpwhxJuA6TYgIJ2n8g6vZi39onpP63FYrn11lsVBxctWrRo0SIAjLGtW7du3bo1o7MjhJApSjMjHAsAgDOAvd3SlhYBgMOPcg3idB0CAAwquCJKY2hlmazTiXnLCGmmlxBSVGpiVhaNFR4aPdjPP3WOHxxMPC6KeH2EtA1TdulElpddeUG7TxBCSlB4rdG/9vEh33ie5/DBmqBSBvGKZWhoNLv0KhhVs7ChnhBCZiOtCF8IAPb3SZaJmhe7jydaVgaAUQV3RH2NM8BNebpqFyudmHCCdqbR0CghpOToRXhCCHG83c/PuMYzwiEfKmM6CMOMariiM0JaYi27aI6QEEJyR64abbNzrYguV/pDo+O3DEjggIYun1mlV1EgJISQXJGLZf7ax69qFoZ8kFf1GvLxivSKZahkdCZ8Y7FwfuVsa6gnhJBZSg6E+/v45+tYrZ6ddXMA9sRbT0ARCPO0kXpxu36eMM9MgZAQQnJCDoRv9fG1dcxmRJcTSLq+GigjLGoUCAkhJUevwscjPCjxeWbWaGRyvcyQl1sTD41GNtRT70SRoUBICCk5OhGjAaytEwDYjOhyAVMbGqVu+qJCgZAQUnJ0IgCsqWUAJjNCHyoTb/KjV8EXgsQBGhotOhQICSElR96ucG2dHAhxxgWkqhplgE6EOwgAzgDP1xooZCZQICSElBx5o4PzKhgAm4l1uXhQgisIS9IBT5MaziAgb0ZIQ6NFhAIhIaTk6FRYXcPUAjCeEfIhX7KtJ2RGFXMHOYAzLswx5ORESU5QICSElBwGfHHO+NWvTs+GfOj1JBsXlYVXWet08iYTDY0WDwqEhJBStKFhPJIJDHV61u5ItuK2LFw42umiQFhUKBASQkpR5Eb2jUZ8MMSTLDQqM6nHd2LqdKLJOJMnR3KLAiEhpBSJERmdzcSO2JPtyiszqJgryAF0OnlznhYDIzOBAiEhpNQ1GtA2xCsSNxHK5KHRIR9ElqK+lMwuFAgJIaWu0ch63LBqUiR5JjVcAaqUKUIUCAkhpa7RCCDZsjIyOSPsdPJmCoTFhQIhIaTU2UwMSLb1hEwOhKedaDLl4qxIztB6eYSQUjeeEabuI2Rjfj7iBw2NFhnKCAkhpa5OzzTCVDJC6p0oLhQICSGlTmC4/bOCLVWeJ/cRUrFM8aGhUUIIwROrxJS3MYhysQyaaY6wuFBGSAghaTGq4fBxu4/XGSgjLCoUCAkhJC1GFTs2gjkGJlIcLC4UCAkhJC0mNbqcnHonig8FQkIISYtRBQ5QN33xoUBICCFpMaoAUDd9EaJASAghaTGqGYAmI2WExYYCISGEpGUiI6RAWGwoEBJCSFr0KgiMmgiLEAVCQghJCwMeaxWpWKb40MoyhBCSrruXUfJQhOhNJYQQUtIoEBJCCClpFAgJIYSUNAqEhBBCSlqhB8IbbrghGAzm+yxK2t1333369Ol8n0VJe+yxxw4cOJDvsyhpzz///O7du/N9FiVt7969Tz755Aw9eKEHwr1794ZCoXyfRUnbv3//2NhYvs+ipB05cqS3tzffZ1HSjh07dvLkyXyfRUnr6upqb2+foQcv9EBICCGEzCgKhIQQQkoa45zn5YmvvPLK9957TxBSRGKHw2G1WnNzSiSukZERk8kkimK+T6R0OZ1OrVarVqvzfSKly+PxMMZ0Ol2+T6R0+Xy+YDBoNBqnesfXX399yZIlyW+Tt0DocrmGhoby8tSEEEJKRF1dXcovkXkLhIQQQkghoDlCQgghJY0CISGEkJJWuIFwYGDg1ltvXbly5S233HL27Nl8n06p6Ovr+1KEl19+GQDnfNu2bWvWrNm4ceMf/vCHfJ9jcTp+/Pi2bdtuvvnmH/7wh+GDp06d+vKXv9za2vrNb35zZGREPvjGG29cdtlla9as+dd//Vea2sii4eHhp59++hvf+Mb1118fPnjvvfeG/xweeOAB+eCbb755+eWXX3TRRY899pgkSXk63yLU09PzwAMPbNiwYd26dffff//w8DAAzvmPf/xj+fqzZ88e+Zajo6N33nlna2vr1q1bT5w4keHzFm4glNeUeeaZZwwGw9VXX53v0ykVLpfrlVdeuW7CokWLAPziF7/4xS9+8cQTT9xyyy3XXntt5h87Eusvf/lLe3v78PDwvn375COhUOjyyy9vbm7esWNHb2/vbbfdBuDUqVNXX331TTfdtG3btmefffapp57K61kXlU8++eS1117TaDS//e1vwwf37t27ePFi+c/h4osvBtDZ2bl58+YbbrjhJz/5yfPPP//Tn/40f6dcbNra2kZHR++7774f/ehHhw4duvHGGwHs2LHjqaeeeuKJJ772ta9dd911x48fB/CP//iPp0+f3rFjx8KFCy+77LJMFyDjBamjo0On042NjXHO/X5/WVnZ22+/ne+TKgknT54sLy9XHFy6dOnOnTvln2+++eZ77rkn5+dVKn7yk59ceuml8s+vvPKKzWaTJIlz3tvbq9Fouru777vvvhtvvFG+wa5duxYvXpy3cy1SHR0djLHwP88///w33ngj8gYPPPDAddddJ//80ksvzZ8/P6fnVzKOHDmiUqmCweCyZct+/etfywdvueWWu+++W/5z6Orqkg/Omzfv5ZdfzuS5CjQjbGtrW7JkiclkAqBWq5cvX97W1pbvkyoVHo9ny5YtX/7yl3/1q19xzgOBQEdHx6pVq+Tfrlq1it6L3Ghra1u5ciVjDEBtbW1jY+OHH374/vvvt7a2yjdobW09duyYz+fL62kWv0ceeeSqq656+OGH5ZG6tra28J9Da2vriRMnnE5nXk+wOL3//vstLS2c8w8//DD8mZevPx0dHdXV1Y2NjZEHM3muAt2hvr+/P7KP3mq19vX15fF8SofRaPz+97+/bNmynp6ehx566IMPPvjWt74lSVJ5ebl8A3ovcibuX0F/f3/4vaioqOCc9/X1NTU15ekci9/NN9/c3NwMYMeOHWvXrj18+LDiLQDQ19cnf2sn2dLV1fXtb397x44dg4ODsdefrAeIAg2EFovF7XaH/+lyucrKyvJ4PqWjtrb2vvvuk3+eP3/+pk2b5AIBt9stf/KcTmf4Q0lmlMViiVxrW/4rMJvN4T8NORGht2NG3XXXXfIPV1xxRXNz85/+9KfIqxO9BTOhp6dnw4YN99577+bNm+WX2u12V1ZWYuL6ExsgbDZbJs9YoEOjc+fOPXXqVLgc68SJE/KXMpJLDQ0NXq9XpVJVVVWFC2TovciZuXPnhl92n8/X1dXV3NwcefDEiRNWq9ViseTvHEuIRqOpqalxOByKt8BsNst5IcmK/v7+DRs23HTTTXfffTcAg8FQXV2tuP7MnTv37Nmz4ViYhYtSRrOZMyYYDNpsthdffJFz/uqrr1ZVVXm93nyfVEn46KOPRkdHOec+n+/rX//66tWrOed33HHHddddJ0mS3W5vamp67bXX8n2aRSuyWMbhcJhMpgMHDnDOf/7zny9btoxzvmfPnsbGxoGBAc75DTfc8E//9E95PNuiFFksMzQ0dOLECfnnXbt26fX6U6dOvfnmm/X19X19fZzzm2666bbbbsvbuRadoaGh5cuXP/TQQ5EH77rrri1btkiSNDQ01Nzc/Morr3DOL7jggu3bt3PODx8+bDQaBwcHM3neAg2EnPO9e/fW1dUtWrSouro6w4ogkr6f/exnRqOxqanJbDavWbPm+PHjnPOBgYELLxf+hBIAAAF6SURBVLzQZrNVVFTccccdch0jya4XXngh8hvqV7/6Vc75f/zHf1RUVCxcuNBmsx08eJBzLknSXXfdZbVam5qaVq9e3d/fn+8TLx52uz3yLairqzt+/LjVaq2vr6+rq5szZ4781Zxz/u1vf9tqtTY3N69cubK3tze/p11Mnn76aUWqdvbs2cHBwTVr1sjXn9tvv12+/hw6dKipqWnhwoUVFRX//u//nuHzFvRao4FA4OzZs3PmzKF193PJ5/P19vZWVlYq5v/Pnj1rMBhoOiTH5LejsbExcgOQkZERl8s1Z86cPJ5YiZAkqa+vTxCE2trayOMjIyNOp7OhoSFfJ1Zqenp69Hp95PUnFAqdOXOmtrY2811BCjoQEkIIITOtQItlCCGEkNygQEgIIaSkUSAkhBBS0igQEkIIKWkUCAkhhJQ0CoSEEEJKGgVCQgghJY0CISGEkJJGgZAQQkhJo0BICCGkpFEgJIQQUtIoEBJCCClpFAgJIYSUtP8PGdvn2jer7gYAAAAASUVORK5CYII=" }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "using Plots\n", "gr(fmt=:png); # setting for easier display in jupyter notebooks\n", "α = 0.9\n", "n = 200\n", "x = zeros(n + 1)\n", "\n", "for t in 1:n\n", " x[t+1] = α * x[t] + randn()\n", "end\n", "plot(x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 6" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "hide-output": false }, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "αs = [0.0, 0.8, 0.98]\n", "n = 200\n", "p = plot() # naming a plot to add to\n", "\n", "for α in αs\n", " x = zeros(n + 1)\n", " x[1] = 0.0\n", " for t in 1:n\n", " x[t+1] = α * x[t] + randn()\n", " end\n", " plot!(p, x, label = \"alpha = $α\") # add to plot p\n", "end\n", "p # display plot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 7: Hint\n", "\n", "As a hint, notice the following pattern for finding the number of draws of a uniform random number until it is below a given threshold" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "10" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "function drawsuntilthreshold(threshold; maxdraws=100)\n", " for i in 1:maxdraws\n", " val = rand()\n", " if val < threshold # checks threshold\n", " return i # leaves function, returning draw number\n", " end\n", " end\n", " return Inf # if here, reached maxdraws\n", "end\n", "\n", "draws = drawsuntilthreshold(0.2, maxdraws=100)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Additionally, it is sometimes convenient to add to just push numbers onto an array without indexing it directly" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "hide-output": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "There were 43 below 0.5\n" ] } ], "source": [ "vals = zeros(0) # empty vector\n", "\n", "for i in 1:100\n", " val = rand()\n", " if val < 0.5\n", " push!(vals, val)\n", " end\n", "end\n", "println(\"There were $(length(vals)) below 0.5\")" ] } ], "metadata": { "date": 1591310620.9546807, "download_nb": 1, "download_nb_path": "https://julia.quantecon.org/", "filename": "julia_by_example.rst", "filename_with_path": "getting_started_julia/julia_by_example", "kernelspec": { "display_name": "Julia 1.4.2", "language": "julia", "name": "julia-1.4" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.4.2" }, "title": "Introductory Examples" }, "nbformat": 4, "nbformat_minor": 2 }