diff --git a/Accelerate introduction to python.ipynb b/Accelerate introduction to python.ipynb new file mode 100644 index 0000000..0cd6bff --- /dev/null +++ b/Accelerate introduction to python.ipynb @@ -0,0 +1,2699 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Python Weekend Crash Course

\n", + "
Written by Patrick Leung
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Welcome to the jupyter notebook!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Jupyter notebook is previously called IPython Notebook ( http://ipython.org/notebook.html ). It is a web based extension of iPython. It's very powerful and convenient and It allows you to mix code, annotation, text, figures into a single interactive document.\n", + "IPython is included in all of the most popular python distributions, like Anaconda , or Canopy. If you have one of those distributions installed on your computer, you can already start using the notebook." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What are we doing today?\n", + "\n", + "* a few general words about python. \n", + "* python as a calculator\n", + "* how to assign variables \n", + "* how to do simple input output : print to screen, read from keyboard\n", + "* how to operate with strings \n", + "* how to access the documentation\n", + "* \"if\" statements ( if we have time )\n", + "\n", + "Bonus ( only if we are really really fast ):\n", + "\n", + "* a few words about lists\n", + "* \"for\" statements " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1.0.0 What is python?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Widely used high-level, interpreted programming language for general-purpose programming\n", + "* Created by Guido van Rossum and first released in 1991. \n", + "* Python has a design philosophy that emphasizes code readability that allows programmers to express concepts in fewer lines of code than might be used in languages such as C++ or Java.\n", + "* The language provides constructs intended to enable writing clear programs on both a small and large scale." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1.1.0 What is a programming language?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1.1.1 Why do we need a computer to help out?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1.2.0 Why Python?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.2.1 Python is a very popular language" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.2.1 Python is a very clean & elegant language. Look how easy for it to write a program!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.2.3 Python is a nice language to do data analytics/ data science/ machine learning!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1.3.0 Navigating the jupyter notebook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before starting with real stuff ... a few words on how to navigate the notebook:\n", + "\n", + "* There are two main types of cells : Code and Text \n", + "* In \"code\" cells \"#\" at the beginning of a line marks the line as comment\n", + "* In \"code\" cells every non commented line is intepreted\n", + "* you can press \"m\" to access the \"text\" cell, which allow you to use markdown in the cell\n", + "* Ctrl+Return shortcut to execute a cell\n", + "* Shift+Return shortcut to execute a cell and create another one below\n", + "\n", + "Here you can find a complete documentation about the notebook. \n", + "http://ipython.org/ipython-doc/1/interactive/notebook.html\n", + "In particular have a look at the section about the keyboard shortcuts.\n", + "\n", + "\n", + "Here is a cleaner version for the short cut\n", + "https://www.cheatography.com/weidadeyue/cheat-sheets/jupyter-notebook/" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1.3.1 A few examples of markdown" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Markdown are useful for lists, markup and formatting \n", + "\n", + "* *italics*\n", + "* **bold**\n", + "* `fixed_font`\n", + "\n", + "#You can add titles of various size using \"#\" at the beginning of the line\n", + "# This has just 1 \"#\"\n", + "## this has 2 \"##\"\n", + "### this has 3 \"###\"\n", + "#### this has 4 \"####\"\n", + "##### this has 5 \"#####\"" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "hello! This is the first time you execute a python code!\n" + ] + } + ], + "source": [ + "# Anything that begins with \"#\" is a comment\n", + "# Try click on this box. You can edit and write this box like any notepad (Try it!)\n", + "\n", + "# You can execute the cell by Shift+Enter\n", + "print('hello! This is the first time you execute a python code!')" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ctrl + Enter execute the cell, and stay in the cell\n" + ] + } + ], + "source": [ + "# By clicking shift + enter, jupyter notebook brings you to the next cell. Now try Ctrl + Enter\n", + "print('Ctrl + Enter execute the cell, and stay in the cell')" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#Now click on this cell. Try click on the edge of the cell, then type a. You just created an empty cell above this cell.\n", + "#Now, try the same and click b. You just created a cell below.\n", + "# To delete a cell, click the cell and type dd. I don't recommend you to do that now though....\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2.0.0 Python as an object oriented language\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.0.1 What is an object?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Everything in Python is an object. Still, this begs the question. What is an object? You can think of it like a variables in mathematics. You can assign any value to this variable. E.g, you can assign:\n", + "\n", + "* x = 1\n", + "* cristano_ronaldo = 'a footballer'\n", + "* Ultimate_answer_for_everything = 42\n", + "\n", + "Why do we want to do this? Because it is a clean and efficient way to manage a large amount of information, especially when the program starts to grow very large. It is sort of like the naming system for military operation or typhoon. For example, It is way cleaner to call it d-day than \"normandy landing in June 6 1944. \n", + "\n", + "* d_day = \"normandy landing in June 6 1944\"\n", + "* hato = 'the #10 typhoon that hits macau in August 2017'\n", + "\n", + "In python, it means any value can be assigned to a variable/object, or passed as an argument to a function. (Don't worry about function for now)\n", + "\n", + "This is so important that I'm going to repeat it in case you missed it the first few times: everything in Python is an object. Strings are objects. Lists are objects. Functions are objects. Even modules are objects.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 2.0.2 Assign value to an object. \n", + "Use \"=\" to assign a value to an object. Let's say we want to assign the value 1 to x, then execute the cell by CTRL+ENTER" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#Let's say assign the value 1 to x, then execute the cell by CTRL+ENTER\n", + "x = 1\n", + "#From now on, python recognise x is equal to 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " Don't put x on the right & do it the other way round! 1=x would give you an error, because python thinks you are assigning x to the integer 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# This will create an error, called \"SyntaxError\". It means python doesn't understand it! \n", + "#(You should see this very often from now on)\n", + "1 = x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The value executed will be stored in the memory. From now on x = 1. You can try execute the cell below, it should return 1, telling you the value of x is 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 2.0.3 Python is case-sensitive!\n", + "Try wih capital X? What would you expect? Will the value be the same?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "X" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 2.0.4 You can re-assign the value for an object. \n", + "Let's try to assign another value for x" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# You can assign anything to the variable. \n", + "x = 'an expensive iphone'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 2.0.5 Now, try to execute x again on the cell below? You can also try to execute the cell 1.03 above. What would you expect?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 2.0.5 - What is the value of x?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "x = 1\n", + "x = 1 + x\n", + "print(x)\n", + "#what is X now?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 2.0.6 Object can be of any data type. Try execute the cell below" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "100\n", + "pretty\n" + ] + } + ], + "source": [ + "x = 1\n", + "print(x)\n", + "\n", + "house_price = 100\n", + "print(house_price)\n", + "\n", + "girlfriend = 'pretty'\n", + "print(girlfriend)" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'pretty'" + ] + }, + "execution_count": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "girlfriend" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 2.0.7 Reserved words - There are a bunch of words that you are not allowed to use\n", + "This is because they have special meanings in python" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "https://www.programiz.com/python-programming/keywords-identifier" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Don't use these words!! They have special meanings\n", + "False\n", + "None\n", + "and\n", + "if\n", + "for\n", + "from\n", + "import\n", + "as\n", + "is\n", + "in" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.1 Data type in python (Integer, Float, String)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 2.1.1 integer\n", + "Integer is literally, the integer, e.g 1,2,3,4. You can use type() to check the data type of the variable" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "int" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y = 2\n", + "type(y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also check the data type directly" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "int" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 2.1.2 Float\n", + "Float is also a number. However float contains more information because it contains decimal place" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "float" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z = 3.1416\n", + "type(z)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can use int() to transform float to integer, or float() to transform integer to float" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "int(z)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 2.1.3 String\n", + "String can be any character you can find on the keyboard, as long as it can be bound within \" or '." + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "this_is_a_string = 'Patrick'\n", + "this_is_also_a_string = \"$%%^&*()njfnksdjfsdyftuy32uygsjdhfbmnasd\"\n", + "number_can_also_be_string = \"123456\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#Anything within a \" or ' will be a string\n", + "myname = \"Patrick\"\n", + "type(myname)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "String can be concatenated by using +" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#example\n", + "firstname = 'Cristiano'\n", + "lastname = 'Ronaldo'\n", + "\n", + "fullname = firstname + lastname\n", + "fullname" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remember, string tend to contain less information. It doesn't treat numbers inside a string as numbers. What would you expect to see below?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "one = '1'\n", + "two = '2'\n", + "one+two" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can use str() to transform float or int to string" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3.0" + ] + }, + "execution_count": 99, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "float(one) + int(two)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2.1 Exercise - Work out your full name\n", + "1. Try input your first name and last name in the variable, and work out your full name\n", + "2. Now, realize there is no space between your name? Can you amend the code so there is a space?\n", + "3. Type in your age, and assign it as integer to the age variable\n", + "4. complete the code so it prints out \"[Yourname] is now [age] years old\".\n", + "e.g Cristiano Ronadlo is now 32 years old" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#exercise: Try input your first name and last name in the variable\n", + "\n", + "firstname = ''\n", + "lastname = ''\n", + "\n", + "fullname = firstname + lastname\n", + "print(fullname)\n", + "\n", + "#How do we add a space in between?\n", + "\n", + "age = 32\n", + "print(fullname + ' is now ' + 'years old.')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3.0.0 Operating with Numbers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3.0.1 Sum" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "13" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#you can use it like a calculator. Try 6+7? you should be expecting 13?\n", + "6+7" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#Let's say I want to know how much to does it cost to the buy whole set of iphone\n", + "iphoneX = 9998\n", + "airpods = 1288\n", + "price_for_new_iphone = iphoneX + airpods\n", + "price_for_new_iphone" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exercise 3.0.1 - Cost of Samsung S8\n", + "Using the previous example, now that samsung s8 cost $5200. \n", + "1. Assign 5200 to samsung_s8\n", + "2. Assign 0 to normal_headphone (becoz we already have one)\n", + "3. findout how much in total to buy samsung s8 & normal_headphone? asign it to variable called price_for_new_samsung" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#Your code in here!\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3.0.2 subtraction" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# You can also do calculation like excel\n", + "6-7\n", + "11-9" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "## read interactive input \n", + "a=input(\"enter the first number: \" )\n", + "b=input(\"enter the second number: \")\n", + "print \"a-b =\",a+b" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#example\n", + "\n", + "#Assign 2017 to a variable called THISYEAR, \n", + "THISYEAR = 2017\n", + "#Assign the year of your birthday to a variable called BIRTHYEAR\n", + "BIRTHYEAR = \n", + "\n", + "#work out your age by substracting BIRTHYEAR by THISYEAR\n", + "age = THISYEAR-BIRTHYEAR\n", + "print(age)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exercise 3.0.2 - Iphone vs Samsung\n", + "Using the previous example, you have the price to buy samsung s8. Find out how much more expensive are iphone, compare to samsung?\n", + "1. Create a new object called price_for_new_samsung\n", + "2. we already have an object called price_for_new_iphone\n", + "3. execute price_for_new_iphone - price_for_new_samsung, and assign to a variable called \"money_saved\"\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#Your code in here!\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.0.3 multiplication" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "7*6" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "780.0\n" + ] + } + ], + "source": [ + "#exercise\n", + "\n", + "#let's assign 7.8 to a variable called exchange_rate\n", + "exchange_rate = 7.8\n", + "#Assign 100 to a variable called usd\n", + "usd = 100 \n", + "\n", + "#workout how much hkd is worth of 100 usd\n", + "hkd = exchange_rate*usd\n", + "print(hkd)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exercise 3.0.3 - HKD & USD\n", + "Using the previous example, can you try to convert hkd back to usd?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#your code here!\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.0.4 divison" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "\n", + "## note that we are doing calculation among integers\n", + "6/7\n", + "## let's make sure that the interpreter understands we want to use floating point\n", + "6./7\n", + "## You don't need to define the type of variable. The interpreter will guess.\n", + "a=6\n", + "b=7\n", + "print(a*b , a+b, a-b, a/b) \n", + "\n", + "## As in the previous example, if one element is floating point, the interpreter will do an automatic cast\n", + "print \n", + "a=6. ## this is now float\n", + "b=7\n", + "print(a*b , a+b, a-b, a/b) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.0.5 Play around with logic!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " == means checking whether if they equal" + ] + }, + { + "cell_type": "code", + "execution_count": 205, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 205, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x = 1\n", + "x ==1 # Check if x equals one" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " != means check if they don't equal" + ] + }, + { + "cell_type": "code", + "execution_count": 206, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 206, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x!=1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "## Some basic logic operators \n", + "a = 2 \n", + "b = 3 \n", + "print \"a = \" ,a \n", + "print \"b = \" ,b\n", + "\n", + "## == stands for \"is equal to\" \n", + "## be careful and do not confuse \n", + "## == which is an operator that compares the two operand\n", + "## with = , which is an assignment operator.\n", + "print \"a == b is \" , a == b \n", + "\n", + "## != \"not equal to\" \n", + "print \"a != b is \" , a != b \n", + "\n", + "## greater and smaller than\n", + "print \"a < b is \" , a < b \n", + "print \"a > b is \" , a > b\n", + "\n", + "## the basic boolean types.\n", + "print \"True is ... well ... \" , True\n", + "print \"...and obviously False is \" , False " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " \">\" and \"<\" means bigger or smaller" + ] + }, + { + "cell_type": "code", + "execution_count": 207, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 207, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "iphone = 9000\n", + "samsung = 5000\n", + "iphone>samsung" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 3.0.5 - check if 1 equals 1.0" + ] + }, + { + "cell_type": "code", + "execution_count": 209, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "x = 1\n", + "y = 1.0\n", + "\n", + "#Your code here!\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4.0.0 Play around with strings" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 113, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## a string is just a sequence of characters within quotes \"\" or '' \n", + "mystr1 = 'python'\n", + "mystr2 = \"python\"\n", + "mystr1==mystr2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.0.1 Python can handle long text, or even an entire novel, or even the entire wikipedia!" + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Python is a widely used high-level programming language for general-purpose programming, created by Guido van Rossum and first released in 1991\n" + ] + } + ], + "source": [ + "wiki = \"Python is a widely used high-level programming language for general-purpose programming, created by Guido van Rossum and first released in 1991\"\n", + "print(wiki)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.0.2 Yoy can navigate each letter in the string by using square brackets and index" + ] + }, + { + "cell_type": "code", + "execution_count": 136, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "h\n" + ] + } + ], + "source": [ + "print wiki[3]\n", + "print wiki[-1]\n", + "print wiki[0:20]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.0.3 You can use dir(), help() or ? to seek help from python" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "## dir() gives information on the attributes of an object \n", + "dir(wiki)\n", + "## to learn more about something we can use help()\n", + "help(wiki.replace)\n", + "## or the fancy ipython version \"?\"\n", + "wiki.replace?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.0.4 Some very useful functions to find characters in strings" + ] + }, + { + "cell_type": "code", + "execution_count": 202, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PYTHON IS A WIDELY USED HIGH-LEVEL PROGRAMMING LANGUAGE FOR GENERAL-PURPOSE PROGRAMMING, CREATED BY GUIDO VAN ROSSUM AND FIRST RELEASED IN 1991\n", + "Python is a widely used low-level programming language for general-purpose programming, created by Guido van Rossum and first released in 1991\n", + "Python is a widely used high-level programming language for general-purpose programming, created by Guido van Rossum and first released in 1991\n", + "0\n", + "False\n", + "True\n", + "['Python', 'is', 'a', 'widely', 'used', 'high-level', 'programming', 'language', 'for', 'general-purpose', 'programming,', 'created', 'by', 'Guido', 'van', 'Rossum', 'and', 'first', 'released', 'in', '1991']\n" + ] + } + ], + "source": [ + "## manipulating strings is very easy \n", + "\n", + "## finding the location of a substring\n", + "print(wiki.find(\"Python\"))\n", + "\n", + "## changing to uppercase\n", + "print(wiki.upper())\n", + "\n", + "## replacing substrings\n", + "print(wiki.replace('high','low'))\n", + "\n", + "## these operations do not modify the original string\n", + "print(wiki)\n", + "\n", + "## we can count the occurrences of a letter\n", + "print(wiki.count('python') )\n", + "\n", + "#Lower change all the letters to lower case\n", + "wiki.lower().count('python')\n", + "\n", + "## \"in\" returns a boolean\n", + "print(\"python\" in wiki)\n", + "print(\"language\" in wiki)\n", + "\n", + "## .split() separates fields \n", + "print(wiki.split())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise - Change the shape of the song \"Shape of you\"\n", + "1. This is a popular song from Ed Sheeran called shape of you. You can listen to it from the youtube link (please wear your airpods, or plug in your earphone if you are not using iphone)\n", + "2. Count the occurance of the word \"baby\"\n", + "3. Count the number of words in the entire lyrics\n", + "4. Replace \"Oh I oh I oh I oh I \" to something else\n", + "4. find the most frequent word from the paragraph\n", + "\n", + "https://www.azlyrics.com/lyrics/edsheeran/shapeofyou.html\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 194, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The club isn't the best place to find a lover. So the bar is where I go (mmmm). Me and my friends at the table doing shots. Drinking fast and then we talk slow (mmmm). And you come over and start up a conversation with just me. And trust me I'll give it a chance now (mmmm). Take my hand, stop, put Van The Man on the jukebox. And then we start to dance. And now I'm singing like. . Girl, you know I want your love. Your love was handmade for somebody like me. Come on now, follow my lead. I may be crazy, don't mind me. Say, boy, let's not talk too much. Grab on my waist and put that body on me. Come on now, follow my lead. Come, come on now, follow my lead (mmmm). . I'm in love with the shape of you. We push and pull like a magnet do. Although my heart is falling too. I'm in love with your body. Last night you were in my room. And now my bedsheets smell like you. Every day discovering something brand new. I'm in love with your body. . Oh I oh I oh I oh I. I'm in love with your body. Oh I oh I oh I oh I. I'm in love with your body. Oh I oh I oh I oh I. I'm in love with your body. Every day discovering something brand new. I'm in love with the shape of you. . One week in we let the story begin. We're going out on our first date (mmmm). You and me are thrifty, so go all you can eat. Fill up your bag and I fill up a plate (mmmm). We talk for hours and hours about the sweet and the sour. And how your family is doing okay (mmmm). And leave and get in a taxi, then kiss in the backseat. Tell the driver make the radio play. And I'm singing like. . Girl, you know I want your love. Your love was handmade for somebody like me. Come on now, follow my lead. I may be crazy, don't mind me. Say, boy, let's not talk too much. Grab on my waist and put that body on me. Come on now, follow my lead. Come, come on now, follow my lead (mmmm). . I'm in love with the shape of you. We push and pull like a magnet do. Although my heart is falling too. I'm in love with your body. Last night you were in my room. And now my bedsheets smell like you. Every day discovering something brand new. I'm in love with your body. . Oh I oh I oh I oh I. I'm in love with your body. Oh I oh I oh I oh I. I'm in love with your body. Oh I oh I oh I oh I. I'm in love with your body. Every day discovering something brand new. I'm in love with the shape of you. . Come on, be my baby, come on. Come on, be my baby, come on. Come on, be my baby, come on. Come on, be my baby, come on. Come on, be my baby, come on. Come on, be my baby, come on. Come on, be my baby, come on. Come on, be my baby, come on. . I'm in love with the shape of you. We push and pull like a magnet do. Although my heart is falling too. I'm in love with your body. Last night you were in my room. And now my bedsheets smell like you. Every day discovering something brand new. I'm in love with your body. . Come on, be my baby, come on. Come on, be my baby, come on. I'm in love with your body. Come on, be my baby, come on. Come on, be my baby, come on. I'm in love with your body. Come on, be my baby, come on. Come on, be my baby, come on. I'm in love with your body. Every day discovering something brand new. I'm in love with the shape of you\n" + ] + }, + { + "data": { + "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgIC\nAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBAQEBAgICAgICAgICAgICAgICAgICAgIC\nAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv/AABEIAWgB4AMBIgACEQED\nEQH/xAAfAAABBAIDAQEAAAAAAAAAAAAABQYHCAQJAgMKAQv/xABgEAACAQIEAwUEBgYGBQcHCAsB\nAgMEEQAFEiEGMUEHEyJRYQgycYEJFJGhsfAVI0JSwdEKFmLX4fEkM3KClhcaNENWkqIlJkZTlbLS\nGTZFhpO31uInREdXZnOHo7bT8v/EAB0BAAEFAQEBAQAAAAAAAAAAAAACAwQFBgEHCAn/xAA/EQAB\nAwIDBQUGBQQBBAIDAAABAAIDBBEFITESQVFh8AZxgZGhExQisdHhFTJCwfEHUlOSCBYjYtJDgiQz\nNP/aAAwDAQACEQMRAD8A/P8A8GDBgQjBgwYEIwYMGBCMGDBgQjBgwYEIwYMGBCMGDBgQjBgwYEIw\nYMGBCMGDBgQjBgwYEIwYMGBCMGDBgQjBgwYEIwYMGBCMGDBgQjBgwYEIwYMGBCMGDBgQjBgwYEIw\nYMGBCMGDBgQjBgwYEIwYMGBCMGDBgQjBgwYEIwYMGBCMGDBgQjBgwYEIwYMGBCMGDBgQjBgwYEIw\nYMGBCMGDBgQjBgwYEIwYMGBCMGDBgQjBgwYEIwYMGBCMGDBgQjBgwYEIwYMGBCMGDBgQjBgwYEIw\nYMGBCMGDBgQjBgwYEIwYMGBCMGDBgQjBgwYEIwYMGBCMGDBgQjBgwYEIwYMGBCMGDBgQjBgwYEIw\nYMGBCMGDBgQjBgwYEIwYMGBCMfRj0/H+ice0SOfGvYr/AMQ8e/3a46z/AEUH2hl58b9igv58Q8e9\nP/6a+uGvbx/3j0+qd9i/+0+S8w1h5/djjj04v/RUfaCXY8ddiYPl/WHj7+7Xyx1J/RUu38/+nXYn\n/wAQ8ffgOzXCmysP6h4FILCNQV5k8GPUNS/0TT2h5hdOOuxCwte/EXaAOd7f/sz9DjM/5pN7RVh/\n59dh/wDxF2g/3YnHTNH/AHeoRsHgV5bcGPUc39Er9ogD/wCfvYafhxF2g3+/syx1H+iX+0QP/Trs\nQPw4i7QP7s8d9rH/AHdeS7sG17G3cvLtgx6hx/RMPaJPLjfsSt5/1h7QP7tMI9R/RSfaHi9/jLsZ\n+Wf8ef3bjBtt3G6RZeZDBj0qTf0Wvt+Q2PGXY3frbPuO/wCPZyOfz5YxT/Rde3sc+M+xwen6e45/\nu6x26F5tcGPSC/8ARf8At4Xnxp2Of+3uOf7usY5/oxPbsOfGfY7/AO3uOP7u8dAvkhecbBj0cf8A\nNie3c8uM+x3/ANvccf3eY6z/AEZDt1G/9cex4+n6e44/u9HLnzwv2TtwJ7lwmy85eDHosk/oy/bs\nLW4u7If93PeNj+PZ/tjr/wCbM9u17f1u7I//AG5xr/d/hYgf/b6FI9q3eQOS86+DHoyj/ox3bwxC\nji/siuepzzjawsL9Oz4nphUg/ovXb3JsvGPY6D659xz/AA7OzjhhcNW252K6JGnQjzXm5x9sfLHp\ncp/6K77QMuy8Z9jQP9rP+Oh+HZwfxwsp/RRvaJJt/XPsYv68Qcdj1/8A3b4aLbJd15irY+Y9Pw/o\nnntFN/6adiwt58Q8edfh2bHHbJ/RNfaJVGkPG3YrpXn/AOcHH9/l/wDozxxC8wGj1+7HwJ+bY3de\n0T9AZ249nVE1XUz8H8UuHREoeD63ijMq6YyOqDSuYcI5TToqXLySzTwxKisxYBbYZcX0NvFlJSUc\n3E/ar2JcFV1XTQVP6D4i4m4ulzimFS5SKGqp+HOBOIKeOoMgaIxR1ch7xHUG4xNgoJZM2RvcOQJ+\nQKiy10MZs+VjTwLgFp67v1xwxtKzn6NOioCiz+0B2EFmTvbRS9tEt10o+nwdjJF1VyTouNMFQ1yI\nmIWuA/or6TiGrSio/aR9mymqZjGsKZxxB2pZIJHlemjQK+adktIn+sqY4zqKqHWoUsPqtR3T5weo\nAJMMlh/4O79bAJpuK0xNhPETwDwVqcItjjj1AZJ/RQe37NaKlzHKu0bsEzPLayFJ6PMcu4s44raG\nsicbS0tXTdm0kE8Zts8bspOwY2NlUf0SD2jf+3HYf/xF2gf3Z4rpGFpsQRyOqmteCLggg7wvLVgx\n6jG/olXtFAX/AK9diB9F4i4/v/8Adljr/wCaX+0V/wBt+xP/AIh4/wD7s8ISl5d8GPUUv9Es9ok/\n+nXYgPQ8Rcf3/wDuz/Ix2f8ANKfaL/7cdiH/ABF2gf3aYELy44Meo7/mlPtF/wDbnsQH/wBYuP8A\n+7PHE/0Sv2iv+3XYh/xF2gf3ZYELy54Meok/0S32ihv/AF57Ef8AiHtA/uzxxH9Ew9on/tx2JH4c\nQ8f/AN2eBC8vGDHqI/5pf7RP/bfsT/4h4/8A7s8c/wDmlftFf9t+xP8A4h4//uywIXl0wY9Rf/NK\n/aK/7b9if/EPH/8Adljgf6Jd7RX/AG37E/8AiDj/APuzwIXl3wY9RH/NL/aK/wC2/Yn/AMQ8f/3Z\n44P/AETP2iV58b9ie/8A/EPH/wDdnjoF0Ly9YMenWo/oovtCxe/xt2K/EcQce2+/s2Bwgzf0WX2g\nI9m4z7Gvln/HV/s/5Ov4YWIzuF/NcJA1yXmowY9JEv8ARde31ASeMex4geWfcc/x7OxhDq/6Mv26\nwi7cXdkR9RnvGo/97s+X8cPNpXnRno5IMrRq4ea86ePtsbw+JfoB+2fKyxmzrs8l076afNuKH252\nHecHRXsNzcjYHED8V/RIdpGTzRQ1mb8FrJM2lAmYcQNv66uGUP2AnyBw5+Hy/wCN3g1yZNbCNZG+\na1a6T5Y4421cLfQ3dqGbRvJS5zwOEjI1d7mXES7Hy0cLSfbzHK18P7LfoKO1yqcImf8AZ5Hc2vLm\nvFAUH10cHO252907nlbfC24XOdInn/6n6FIOIwf5Wf7BaWAPlj7p9R9uN7zf0e7tkFr8U9lo2B3z\nri8Gx/8AqRjCk/o/fbChIPFPZhcW3GccXHnv/wBh8LGD1H+GT/U/+qPxGD/LH/sFou0+o+3H3T6j\nG8F/oDO1xQf/ADq7MDboM44tufhfggD1/NsJ8v0Dva0nPifs0N78s44qPL/6ljn0wr8Eqf8ADJ/q\n7/1XPxKn/wA0f+wWk3T6jBp9R9uN0b/QXdq68+Jezf8A9r8U/wD4OHn5YSpPoQ+1RRc8R9nf/tbi\nb/8ACGOfg1T/AIZP9Xf+qPxOn/zR/wCwWnAjHzG4OX6FPtQQXbiTs8tv/wDSvEvT48IjCPP9Df2k\nx+9xH2fkemacSW//AMTGD8HqP8Mn+rv/AFR+J0/+aP8A2C/Si4i9ovLaYCNJV5bnSdt/NRfntt0P\n2Q1m/tJCZisTah4t11dbWvcXHztimaZXNOQxLl+Qvc+d9ifK+HHR8LSmx0nf0/lbGWZRxj8xFt+/\nrNXD6t7sraqyNH2tvOebAG+2/wAPz/HEiZNx8upbuSLnYg25HFZMo4cdLE367Wtb7/IeWH9RZYyd\nSbfL+P8AngLWDIZDkmnPdvV1uG+PISouwFgnRvX0+GHrPxnTuNnUnbo1vw9MUTirJYrWkZR8ef5/\njhwZdxJMGszXXa1zf8738sJ9kDmltqXAWVzIsyRhrZgLfE89vL1wp0uawalu4O4PXb7RirlHxU5G\nnWTc/v8Alv5emHFS8QMLapBvyub/AMsdEZOS62XrJW4pM2p2A0kH4X8/hhKzQU8gJP53+G+INy3i\nM7ASbW6Gw5+X5+/DnWsklG77eV7/AH3H4YcZDbr7rr5+sl3VeTxSuQvntbre32csItZwifd0knYk\nXX4/gcPnLKZL3LAE23ve/P12w7hBEQL6b/54VtEZfRNGxzv8lWKt4SdjybfmbYRZOBZTuuoD5b+X\nX8fM4tm2SwPv9xIN/wDK98KtHwpFJsAL7cgPXnY4ksqHNGY9VH2AqO1nBVSpI8dtvLqAcIycJ1hP\n+qb52t+P5ONiLdnCSD3D8dF/4j8ccn7NNIN4x030jz6b4lx15tp5JD4Qf4utfC8JVY3MW1vLf7j+\nHzx3xcOzjnE3xsB91wdvUb4v/DwAt7NHttyQfz2wrJ2aQNv3P/hwr8QPA9eCYdQtJvv65qgNNkkq\nkXjb7P4k2w8ctyt7rdT06jFxl7KY227v/wAAPr54yv8AkvjQbQi/noH88KNWTrfyK57nbPavyzUB\n5JltgNW3PqD1PliTqHKwV62+P2fhh5U/Z8VY+A/DT8L/ALWHbTcJGMWtzI30+vlq3v8AHEGVxJ9A\npTAB5b9yjiSihhiklnZY4oo2llkdlSOKKNS8ksjtZUREBZ3chVUFiQATjQv7bH02XCfB8tXw92c0\nlNxTmsDvBPnlYKkZDFPHaOYUFPEKarzg0tQ8NM9QkkVD3rs8DV9PZ8Mv6a36Rymy1azsj4MzKGaU\nd5TcZ19HUqe8q2LxU3C0UkMhsBLFIudJeQNO1PQumiGqSo8gHHnH0kk89SNU00cqvGVhb9X9Wgqa\n6NwgnOkx/V8so9RsyCMuGjfu4n3fZrs4x59rPcjc39ysZjvaF7Lxw5bi/wCyuZ2y+3Lxtx9WGo4h\nz6ueGZI0SkkfuaSNqmonD9zQ0yClilNHSzLCyU4MaSHTLIiLGlOM27XcvDwvVq8xVcqKakeqqBHU\nSVU7xtq0RoAdcTBGaEAsIlVVUvX/ADniqQlE1mOESQIwMqyTkJlMUdOUe5RQmuWSQoxJlmqNgJA2\nIuq8xiexNmaSmpCvvAoUbuQxcHRCoSzs6qpudIYAlj6tTNjjDQxgaN4sPBea1DpZHHbJde2fj5q0\nA7eOHhAIpOFqitUwTd8k9VToj9zUyKqoBAxCtTyS0UhBaYQlDGy92DhpcQzdm2eSd3LlfEfDczST\nhamhekzCll/VGdHlpXCPp8chk7l1YF9bMqlYoYOWtgWfSsY0d/VICGsygw92o1IFUo5OvSDZifEb\nAELOV5xTiNJTpTRHRPY6gNcVR3b+PUWcSUzNHZdGu+liOWJntWuBBAz5BRWsLCCLg349fcHmr5+w\nZ7ZvaD7OHFUXFHBGdpxdwDLWUn9cuGY5K0UNbkgnpZa6ar4dnenqcp4hiyp6r9E59TQVFLTV5vWy\n1tIk1LJ+k72adoGU8YcNZDxZkNStZkfEuT5fnuU1cerRPl+Z08dVTPcgG/dyhW8K+JWsqqBb8rDh\n2eCN4JKOaehrYmqKWDMKaQ081MkTHL45e8iC9+DTVFJLUxuUR0ppVa7Tkr7Z/oB/pAoM+yTKuwPj\nCkpcp4o4XyvNqzgfMqcR0mW8U8MUOZfWXymCnRIqelzzh6kzSkSOgidhmGTxVNTBBFLllbAvnPbT\ns+DH7xE34m624cfCy33ZHHD7UQPdZuoBGp18Bw01GWq9ES5VrNgDY/n8/hjKj4dv0226j+eJPp8q\nQC9uXp/j8cKEeWgfs+X5/N8eQ+27/VepezFrqL04bHUH7R8RjuPDS+R+0YlH6io6fLyxiyxIOmO+\n1PRQABx8lGx4bHQH7sdEnDa77H7RiSLR9QPvwd1G3oPz+d8HtSlBRj/VlfX7RjgeHE9ftGJUFMp5\n/hjrkpowDy/D7N/4YDN1dKLCoqbh9enLHFsnAP59fX7+eH1UzxL+78NQFsIE+YwfvD7RjvtDzz5p\nAACQ/wBEL6fn54+fopRhQbNIRfdftGG7m/EcaL4WAt6jCwCdyOd/kuTUUYHMD47fjhJqY4gD4xyx\nEvEXaOIydLdBzNhz67fZ64i/MO1dt9xzNrNfy/s/5/LFjDh8jhqVCkqGNGZ8FPGZmO58Q6W5+Xw+\nOG3U/VeV1+31/P8AnivGY9qpIvrYemr88+eI3zPtVlW4Lg7fstvzHS3554tafCJDvO5QZcUiA0Cs\n9mb0iggMtzfrflb0xH2YJTEk6lv8bdLdfQYrPW9qMjE2c/N9P8Df8+eG3V9pUnLUD6mT/D1t8sXd\nPhDhvVTNisZ0A+X0U35/kWWTA6o1sdO2oH9odBvsfQ418e1D2X5VMaGRYUuksrAXG4PPn8B9uwxO\n03aE0n7Y3ttrHmDz6W+HnisHtC8YEpS3a92ce/yubHp64u4MPewXN8u/rmqeorWEZC3P7Jy9jnBV\nAtE4MKbEDn6+n8MTbHw/RJ4ljRSORXmLixt8QSOu2Ku9knFLfU5LP+0P2/U+mJEPGjJ+1sOus7fK\n2/8AjfF3FTnZFjbwVUZg7+DvUiZmgQABrqL2Hl93XbEfZlMLWvy/wwhVvGWsG7auf7drX+Rvf5cv\nsZ1bxBqJ3/8AF6eVsSo2luRzsNbc7qNJnolSrq7HnhmZlmZW9ut/4Y6qzN9X/wD19v7OGbmOYXv8\n+v8Ahh5Rw4LhW5ufz9n5GGTX52w325fnnjqzGtIv/P8AwxHmZZlcG18J2gkvaeCzsw4hNzy/a6HD\nCzbicm4BBtbzHT4YTsxqZGvpv16na/wwz6qORrk3/IwzJLuCdZE62nyW8nLuLKdbG/3D7MO+l42h\n2sb/ACX8/wCGKp5dRs1hq2J+XniUcjyMnT4v3bbjnv8Anpjwb8NG8r2BtQL/AHU6w8aLe4Nr+i/D\nrjPTjZLWubH4f54ZlFw62keLofLzPy+zCyvDJtubj4jfDQpA3QFPOlBsls8YI3Inb1H8b45pxcvK\n529F/HDbk4cPTb5j+eOr9AsP2sPMp75ZhI2wpDp+L/7RHyXywvU/GJJUBz06L/LEXUuSv+8bf4YX\nIMikPInp+bfLD3ufM+ITPvA5deKmjLONQoAub/BepJ8vz1w96HtHQC5LWv5L9nLFcUyKoY6UUta3\nT08zbCnBw1XtaySH5D+Y/wAMJdCBvHknBJ3eCtFT9qCAc22tbYfy3+eFGPtWUn3/ALbA/cB+GKyR\ncH5o3uxyC/oBf7TzHTClHwJmtvEkgPwXpy5HHGwNO/yCbdMQdB5/ZWspu1qMG5cAb+XkfTzOJI4Z\n7W6YhGLqSSN9un3dcUXPBGaKb6Zb9Nh/O3LClR8JZne1pDy8x+BN/nh73Vp328Eg1djbZ9Vs7oe1\nujKrqkW9uW3mcOam7QqWa2mQHyA/h+fjjWLScG5t0ElvLWfX164ljhnh7NISoAcC53vf9k9PI/dj\nhpANDfwCV70OHr9lsUy/NIZLMOtuYH5HLbDi+uRfvfn5bYp9k1fmUShW1WAH7Px8ufTlhxScSVtr\nWJt6W+474dZTCyadV5/c/RWiizCHz/P8MfWzCHfxcsV1yXNqyYr4GLHkFGom66uQv+ywPwIJ2O9F\nO3H6W/sK7OM2nyPiPjKvqM0o55KfM4eGeC+N+MqbLJqcXnhzDM+FuHs1yqmqIBr76lNa9ZD3cokp\ngY2GHYqBzj8Ldru6KZfXgDg7hf7cFtxWti5hh9mKY+3/AO0rJ2a9lfE/EGVzKnEE8FNkfDEWlHlf\nPc7njoqedI5PDIuXwS1GZyg7NHRugGsgiMeHvpDeyDO+C804+yvtBySt4SydVOa1aCsp62jllYxw\nUlTk1dT0udx19RNaCloXy9KqeVu7jja1h4/Ppafplcy7Ta2DIuGaZMj4TyiSZKVZnA4jq8zkkigq\n66tkWd4qGilyyt+qJR0yGSMSVfe11QtWlPSXGG4IXytL4yA03O0MuslU4jjdoiGPDnG4Ft2XFa3O\n3KtSmraiPMswTM81mqJMxzOq72ad5KunYVoi+saFR6qevocwkZ2ZIGeoMMsSATK+vzijiZJJKgGU\ngssiLCXVhGY+H6dLG0h1mSUh2YNpaS+u7AYYfEvaFNXTI0rK0rRxM4iBKEmlrO+EhZnMxeWaUlgf\nE4LtYMuppUlFW5gxWCB5A2qJRENKg1NIixGR3UJYSIAGd1V2IANmGN8JmssGC9ssh1bvWPFI4nak\nItrvOds+vBOquzppHOkWDVs7jUyt4Y8tWONrG/hcoHUAsFKhQOQw3hNaNGL3H1SnBswuSJPEvUju\nvcsulvDdxqO6smSwxazU11Om8TlEV6udDPDJTTIv1dY6Yd2UUsBUl44zCFVnsTwjrcqjUIIMynOo\nU4aSqp6VDHTxmSMskdLKwEriMkvIjRjwXUI74smSnUix71HdTC3w2PzOfNdTVKmQAKQv1yZ9JY3/\nAFaWCqHJbxavF71wPhjpjzCNYwNT2+qwqbi4F5yWIGkG4sGFgSxsQ2kWFluxH2b8z49y6bN6Z+H8\nto6XNcsydhVVNTPXz1mdMI0kEEec0J0xHQah46aT6hTSw1lTGtKzVbP/ADX2F+Jo5O5hfIKgzVuZ\n0tMv6QzjLmqIOHqKPN66ogjr8qrZaemNK0xBrxSyGegzLLoneroKqJemqAt8QHX1sg4WXaAEam27\nv3aZqqVHmqjvNEo1LFXWZA2pglGIyh1aQSWaNgynUWBL6nRSNj/sa+0NNwRx1wlxYKlhPwjxFQ5v\nA+4kEUFYtXX0ZkWxcVlBVVOVyR3P6irnbbSTjV/SrTTNKsNQI6oLVBoam0A1VUwiZYakH6u5aLWE\nWR4ZSRYG4CLLHCOZVENVoqInjmDzh4XHiPemWZQdd4yBDRKTKpa0ihHvIxu+KlsjJGOsQ5pGee7h\n1ZV0lGY3scBsuaRnmN/Hfl8l+yJl0UU6LLA/eQyqs0Mg92SGVQ8TD1aMrJ/v26ABeTKCRsPz8zjX\nP9Ed21Nxt7PHZnnUtUtXV0+StkFbMmsIarhurnyRtIkJc+CjjKaix7sgszEXGyMZpbrb7sfPOJxi\nOZ7B+lxHz3L3PC3GSFjzo5oyG/QJNqcqI6b4aNVl7YkB8yuOeEOpqgQbG/yP8sVr5QLXJHgrERDu\nUfT0bC++MNWZSVvy9B13/jh0Vkvx3v8AdhtTAknY/Z6Y4Jh3pLos8vklBqoAE+WGPnedsvK5tqty\nFuX2/P8AnhYkViLWP5/DDar8sZ7+E23ty3v88DJBcXz8114Njko1zXiCS5O/P06Aen554iXPO0V6\na5N7AAnZfMDqMTNm2QO3K49NvxvbfniCuKeCHnD31e76ef8APoP8cWMM7L2I9VBex+tr9ckwKj2h\nIldo7bjqQo8/LCfN2uGrFwVseXIctug9PliAuKeyup+tSMGYeMlfd89+tvL/ABw4Mo4GqY6fVck8\nr+EciR5+mLWH2ZOoUKV0mgb15eKdeaZ0Z7ksSLdbefI7fnzxGecVtrkEjn1t5Yc1Zlk6XUBtO1zb\n1/nbDMzDK5CTqDHnbax/hz2/yxeU8rWi9x6KqqWPcc2nr+OSYOZ5jISbO1r/AMB6YYOYVEl9mJNt\nvyMSjU5K250n7v54Q6jIyP2Wv6gj+Q/Pni3ir25ZjrxVPNRON7g5efXBRJUSSm9wevU9Pz+eeEaY\nueZI9Pz6Ylmpygi+x+7pf1wg1GVc9j+R8cWUOJ2ORCrzQDeCD1zUbyFhvfqOi+Y+eKwe0HWuq0gL\nbeM8hz2Pl5nFzXyjY2B5H8DipftH5K3+g2Vty3L4NiU7EARbbAvyCZ/DrZ2PmkvsinY0L2Jtq2+1\nsP6rmbz/ADbGF2N8LSnLy2llvp226XHn1tiSKnhWQHeNh9n8/wA/LDzMUbaxN7c7Jt1GeBHr+6ii\naZvP8MYEhJ5nz/HEk1HDbi/gPXy6fPCJNw9MOQIH+7ttv1v54V+KjdbxSPdHdCyYsr8yemG9Wb3/\nAD+eWJDquHZbG1/T89cIkvD0pPX8/kYScRBy08VwURBUYVNGWFzy+PLCBUZJc8h1/O2Jel4amvtG\nzevh32+I+GE+ThyoI3RyPl/P4YYkrxld1vX5aJ9lKc/hv1zUI1fDo8h16n+f5+GG3V5Da4t95/n/\nAJcsT9Pw/J/6tuvQfz/nbDWzHh+U3Aja/wAh0+OI5rRf8ydFPyI5WurX0BnUeIW/O38/liVcgzAK\nVBO/hHP44aTZRLf3fPqfwxlUdDMjjluRa3S2MMx4ItboLXODgdTZWFyrNLgAEADlvfqf54d1I+oX\n5Yh3JBILArc7/j6YnrhDLmqNLFNr2vz6HpyPly63xDmDQSbZBOxvccr92mSwig+Pw6Y+LRl+Q287\nfwxND8IR2usRGwPX+fpjCj4aAYjTy9SD+NsNw1DL5D18E8Ynjf8AJNfLeHGexC/LT6ed+nPliQ8l\n4BeZ0BBsSOS+f+9v6csLeWZe4t4LfDnyPK/554lzhuBo3QkEC687b2vy26X36b4JKoaDr5ojpxqR\nfzTj4L7GqZkBkUMQGvdQCfEbc2NtreeJoouyClTcQKLddIPS3LbnfzxlcO5uiIAALkG+wN9/XEl0\nWcpa++IBeSVODQG6aBNWl7MaQDxQrta3gA/PTCwOzyjAH6hPhpH5+7C1NxANgNrX6D09MZtFmYkA\nJJt06dbdLYfiab8lHdJY2UcV3Z5AVP6pen7IvzHrt/hhIi4AjU7RAefhG/l/H44nERhrX/E/zx3r\nRpztv8T/ADxL2QFGcQd2aiim4HisLxL67D88sOyj4Rp1Hu/Ow/D/ABw8BABy/j/PGtb6Qn6QgdjT\ncOcO5DkcfEXGvFVNmWa08eYTSUPD3D3DGSyUkGa8S5/WQq88i/XK+jynJsmoh9dzjM6pUSSCjo8z\nrKJ2KPacG8TYd50TL5A0XPVtVsI/qvCbALc3UW5e8bE3APLnbryx1twnB+0qIvVpCotbne5AOkXL\nAXZBYuFXfHgY9s/6a/2hJ2h1cY0+XZRUVcdFHl3BGSTZBItVVzLHRmKohzPMM0zCViYWagzGsfX4\nkpIEnaohkr32L9onbIvEuX8WdrfEufJlFNDPmMfAuZcTZiOIOJ7Gb9GPneVyztT5RkqNOKutfMJW\nzCSGkjpVyRopK2WgvGYM7QusToOX3VW7EASSGm3G53a5X/Zehf6QP2pqni2pjocpnzDKuDcmkmli\noYc7fJRxTV0z1AgzfN1y3XLmWRSFad8s4fqI58vaMfpbMGqKuSnpcr0FdpnErVMs0rzUZlaKSR1g\nqJJaaCPYwww08ixrCEiPcpEqU3foVjVUKsqMrt69oDjPjHMZqn62sS1TNGMtymN4YYdBm1Qd7Mau\neSZjCX1TAyW1LHUxBYVTXVxF2s5tQZlVZbnEpeOR4amjlmQieFK0mSFUaaLS13neOWOSolSYQySu\nr66dDr8Lw1sDW7QG0crqir6zbc7Z4aZL77QHaTmdDxHRRU8dQtHW00lZVUYlZKSprIWSmpaisjVY\n45aiGKolhWSUh0791CqE8VNMzn+ttevzODvWV5T9TJzBisVJA7Lqi7iFrmkYm1SQL3/W6QrZPtXZ\nsZarIJ0jaFO5rkYF52S8c0QCgySyrb9UJI1FrIULEGyiOOHM/wAvois1SyuVjssBGpGDB45Q4BuV\n7qSoCgkBmAUgr4cKFU0SyMJaA1xvtZZeHLrRDsPIijkY0uc9ugG8Gym/JMkpkcSUuVROqS95JU5m\n6VD/AFeCuNR3z036ujijNElaNDhwAssUkkhhJPCqzCJI4xWZjqSOSiX6vAYKenhWKGfM4o4oIDBE\nGhaSCJQgRmIMriKZmQRRRcaZ1xJWRZVw/QT5jUyyoEgp0IJkdaiHU7AiFFf6xKy6gpDux1FkQpfH\nsl+im7TeLUjzDO6yHKqV5EMkUJNTXCURrHoYlUp0l0KA1hIFsEvYEYiz49BH+UB5vuVlR9maqozN\n2jn1u8O5Ubrc8y+NEUSKQooBJoVFQFQ1TKyqGOkFitPp1KO70LYKmksiTimmaGRlEhIgYSgA6RPU\nytJIzhPcQxKe6JA/asbAg7qqz6MfhjhCNJ80oM04hki8ciGSWcuwQ7RUwkhhkIsCRuQpJvZQMRvN\nxN2ZZfWfoiThjPMsqllgpDHX5UdJbvaenijkpop6qo3kqaVCwTUgnUsHDXTO1naaYn4IfFaGHsfG\nwWlm2ST14/utZWRdsmaUVP3WVcQ8Q5TGKoVMtLk2eZnlsUxMAX6w8FHVRwvOr2QTsgkEBjUkDYOv\nh32jeK6RUNJxhmyaRGf11WKkNIirHoM0xknaMRzyOka1Cj62I6zStVTpUruL4Qz3s9lhhD8P5fUU\n0j91FW09LC4ilGuJ4w+pSXRriemnRXSRWUjUuFPjH2H+zviGgvQ5ZGsssUkv6QpXFLI796JlMhpp\nbJo2QxMoUElQunbEJnad7snN01G/wU6fsYdm7JcrfDoRYrRZCiTlmMoqGeSSQSSHvWklLrDT3LOy\n3bXqcXYr3URLMEAxLfCecNSSQ0+Za6miTw0lYqGpqqGXvptLJGNT1NPW1EMyT0jnaK9TA3eJ+sdf\nbN7G/FXB0dTmmWpJX5QmuR4WUvVRRwlSJFXu1DrHdv2ySAWYNfES9n+bR5iqUrLI7OAERXAYhlVF\nFydQAhd6dCCGaWqMzKe7BGlwrGGyZBpaTuOvrl3ZLBY3hMtNcyfE0b89esl+nH/R2aWYey/kUTS9\n+lPxnxzBBMk6VMMsCZuBHNBKjMjRTA94DEWjZmLggllXeEaBjzHw2Ix50v6K32qTZz7PnEPCFUpL\ndnnaNm+W0VQwH+lZVxDleVcS08llCJEIa6vzSkgjj71RRU1K7TPLM4j9MvcDyGPNcehJqpebzlw1\n8vut7gMoFLCBoGC3nxt+1+KZseW7e6cdr5WT1+Wn/HDvEVuVsfGG+KkQW6+6uPb9XH0TOGQ6hv8A\nZp5f+L+GOp+HQOgP+76f7WH2h5fPoPPGUoBtcfm2EOhz+5/ZLZISeWXBRW+QKP2enO3+OEmqydQP\ndHXp+d98SbmTabgbfIeY88NuQFvL7sRLdXUpv5b71FddlCH9gfZiNuIKZIgx0A2H7tuZt6+f+WLD\n1NBfe2G9mHC4qAbqLEG5+RP4jCgVy614cQ1cbVMimC51HTtz8/2fhhRynJpKinJWnKA3t4b8mYcr\nL5cvybPt2SQvU96yBvGTtq8/K9hiVMo7OqdIlURkbG/P94jlf8PxwRl21kSE2WA6gKh9T2eM4J7s\nj0Av1+Aw2qrs0axvGT8Y7/x/zxsaq+DoVBsi8htv5+d77c9sMjMeGlAICL18/wAcTW1L2/qNlF93\nG/LnbRa7K/s4Iue7t6d3/HV8+XxwxK/gJl6H5qbc/wA/djYfmPDF7nSvMefTb/HDDzHgoNtoG46X\n6G/I7fy+OJEeIyAjf4Jl9GzdYrXvXcEyb2APP9n4evphvtwRKf8Aq/mENvxxf2bs/Uk/qz9n59cY\nX/JvflGQPnizixY2zyPmoT8NYTfZ681RyDs9JP8Aq13uLBL8wR+9+bYrR7RfZmRJloKbEteyAc1v\nv4j5/m+24E9nDAbIB6/PzsD9+Kk+0n2e1LSUCourluP2boefqbfdhf4vzPp90w7DxZQh2MdmkQyw\nfqgeW/di53PXUeXL7MPjMezJLG8Z5eXrixHY92a1UWWRh0sDa4JIO7E/hiQ6zgKYblQB1Nz+edts\nPMxXXPz/AIXHYa2wy68iqC1HZolzaI+t01fZuMN2u7NQP2F+Bjsf/exfKo4NZSbhTflf0wjVXBy2\n3RT9uJLMVFhc/JMnDOGnXctfNT2dnl3Y+Sb4T/8Ak0N/9Xe/7yWt95xeip4SUG/dry8j8MYDcPRp\nvoX0/JwOxTLI/L6Lhw3jkOPRKpxD2VFgP1fn0t18v8cLKdjauDZV/wC7/wDm/hi2KZei/sC4v5ed\n+WMZ41VdlA+Q/j/PEd+JPtlmnmYcwX+JVFm7DlYm4X/u/wD5vhhIrOwmJRewJ/2bdPjfFsaua3JQ\nefQbcvz8sNLMa6VvCsZuOoVbHb1B+GIX4hIcySDwUhtJGBbZB5rqp+ySQi3cN9g9LfnphwUnY1Mf\n/wBW8uYGNpdL2TopF0BH+yPLyvhx03ZrELfqht/ZG/3/AJvjJtxGXcVdOoW6Gw68Vq7yzsPqCbiA\ngEchpsLbdTfEt5L2aSUtv1BFuW1+Yt09MbDaHgGFP+qX4WG3P8/m+Fw8EQ/+qH2L/LHBXS6HO/Nc\nbQMG8deSpZl/BrMq6o9PK11PXn0+GFwdm5l8QjBuPQctutvLFsv6rRxkeEW6XUdPn/DCrR5ZEAP1\na/8AdH5/wxIZM8HTgj3VvEev1VX6DgFoxfuxqvt157eVuR8/TGXNwrIlv1fO97W6W57jzxauCgh5\n6F+weWONRlsJt4F69B6YPbuOgz9Ue6t4t8z9bKuWT8PzCxCsBvbceo8/PD3/AEJKVtvz8vXEo01D\nEp2At5afz+GFlY4/IfZh8VDrC4TbqZvEfP6qJ6DheZmvY2Fuq8jf19Onzw86XJ2jADA7dfCfXkOX\nkcPqmMW1wOg8vTCn3ULeQ2/Pl/EYkQ1RCYkpQRx67lH8dKyndSMZPdtblh5PTRH0+X5/ljClgQWC\ni5NwB5n+A9fMgcyBix9uQQM7nQKCaVtr3y68E3o4m8vwxq8+k/8AYrzXtG4Xi4k4PpvrHHfClJKt\nHSqQkueZHLMKrMMoh7y0cldDJGtblyStolk+t0QAkr42p7ae0H7avZl2XQu/F3FGX01csTSx5HQy\npmWfzC3htlVKWqIEkIZUmqxTwswCK7SHSPOj7Vf9Ik4jqoK3Luzfh+l4ZopIXhizrNKs5pn7rPqj\nNRRRQLDluWVSrIBAEkzKVJVDpVjZBp8J7O4hVOHsYTs/3OFh4FZzFMaoaUf9yUF2Y2W58NVqAq+P\nOJJsyqaOeKnyOfK61qLMXGUwUWdxNJ38TQ1kzxwZrT1dv9Gq4lrr0Do5dkVzO8XZlwHSzzjv8zAq\namTuGSJIZJPrDAHvWDCTumqI3UzPLUhS/dxd8Lo0dP8Ato9qHP4svzmWsngra7N5nqsvmqJZajOm\nnl7yaaWoqA4FbQGaV42mzCUy0VSZTRyyWqqdtauZ+2Jx3SzTSzBQ8jL37xz1SiYRxPDGW0uBIwjd\nSrzCUh4oCgVIkjGkmgqKF+zURlwFrEC40PDkqunngrm3p5AHb2lwB36aLdBnHBzoTTuZkKsUcSVI\nlLxpLFZqkzU9JKojUiSJlVImd46iVJXXQaO+1Rww9JNk9bHoP6hqVyFQRyLI1NOsaNAsMbQxokjm\nZAY3EjaJUAUvK9D2451lOQcPTcTGgrcszxJpYWpKySc0lBWRLWQVsNbLoUxd/VfV1gaWrqo3Z50q\n4jKsxye3WhTPeEPrmWzfXIqKogr6dnpzKyq5kjMP+lApcDREkRLt3GgSCz6jqqeojqYbxnZtbvG/\nJZuaF8Exa4Hfrn6i61t8atBmFFltK8rSpI1XAjPJIGpJCYXTuVaR2WCNCskOwiJmmUM25xEPAnYd\nU5tmUlDUVa08kEsZkHhOqibxCrVyxBicK8aBSX7xSpF1YBc7Sc0mioaWQSq0kOY2k7sRJLqkiqSz\nE97LJu0ckWqaMDVFoBZI1xZ7so4ppJZKSreKMSCCOAymJQpj7wqYWRYwGDXZ0eSRQjGRhq1OIsLi\nsBmMoaSHtB7ytpg1T7FsJf8A/qkNj/42PpcfVbRvYa7GMm4eraUU9EndBIyJ30t9YJRvGxO95Fd9\n3bU1zdVAXV6FuFOJMuSFE0pHaJVAW8dk2u92AUWYL4b6t72sCRpg7O4qWioKKWGQj9XDVfVob6qW\n8YWN3ZbxppS91HugG4cuum2nDnG08wjeaRP1Vu8UGRkdI2LBrBAfECJFQBtgtz4rDL0MZYHMOvXF\ne1ULogxth8JGR3Zq7HFvDmWZk9wqWuLg6WA/WKwJQgm6hVaMFbi3LUNteXbx7POWtmMGe09JQVlf\nlciTUj1USGohELiSJSrI0U5pmHe0rS62pZ1SeNg4AxZzhnjCnqJJ4zWLppFjaadXA0PIFkSNjqZR\nLocNOG0mOMxlgVqFAycw4pyqoqzGXhnkUhXM3dsqg3UsGIKrYBjpJAKlGsL2xbve21r2vyUWtw1p\nvcXB3fJabOGfZnr8xznNM0icQS5nULPW0a0j06ThUELud5YXaNYomWQkTkzVGzJ3a4upwt2IZzkO\nTNmqzd1TpGveQSBCxSMC4ADb2uLgG9gdxzF+sty7LauFHpjSttqvCkahd/FpC6dRDavGrkBgVKHk\nG726ZAZ+CM8y+F3ilnyTNJBVRizRSCjldJLoYnjIcALodW1KLG52rDhwL7tFnZ57j1+6TDEY4STm\nBo0LW0va3w/nbDL6qsoqaqZnhSmdAxGsaGid7WtIxVWuQFUnTfdjon9qzsnfgbtAmeGL6rl2dM2a\nUkcZIhikWQJOkPdB5rS/q6mJ1VgkkrhSrKwWQ+Fuzvijg2KTOK3MXzfL6KSij7mU1lVX10k06RzV\nNOJpKioy96dWeWpSW0OtUpyp0/WBLXbLmI7Y8y4P7OOEsslzrtC/rDluR5EKbVUR5jNmzNTTUZqo\n4ZpaWnonniqMxe89JSRUlfPJLD9UeMR6OaSOoG04AjTLI+QWRx+RktK9uxZ2g0/de9f+jY+z3UcG\n+z7PxHWJLHUdp/F9ZxhTo6KmnJ6fJcl4eyzTGV1RwVEuT5hmdOhdiseYC7aSFX0Hd3+dsQv2C9lN\nJwHwVwhwTl7rLRcJcO5PkFPNHGKdagZVQQUTVX1dfDH9ZeKSoEe5RpXuzW1GakUnniBWTmWRz97n\nHy3KHhURjhjYdzbLgI7+ePjQb36fLGbGuO0qMR7KyLbpNWIY7QQPhjIdMYrDbnjjhcdcUpmR64JD\nzCVNVifuOMGCNTq38rff+fwxxr4yW5/L/G/T4Y5wAqDceWIIbnYqUHm1t3DxXRNFv+fzfHUsPT4/\nn0GFVdLc8YdTsDYW9b/k/n0w97AEG6jvltpmm2ygSHcc998LkEw0gA8vj5nDNqJ27wj+P+GHBQMd\nABF+e/zP5P245HRjwTZqeQXKru1xbb8+eG1VUGu9x525fP4dMPSSMEYTJ4tuX5/P8cSfdgN/zSBO\nT/CYEuRod2uL8/lyxiNw7CT7pt8Rh01UTEm2w2/D5ev4Y6Ega42w0+w0Smv4pu/1Zh/dP2jAeFEP\nQj0uP5YfEFITz25dMZggAFsAkAyugxk5gfJMROF4x68trjz+HTniv/bLwfDJLSEqLxknc32IBPL4\nD47WxbOpsgPw54qx24513L05Fhdip8Xmqi52PK9yOuwwPcCLXXNop68BcPwigC6eR6ctyT8r8/tw\ntVXDcH7pt8fz+fLDe7PM+RsvViQbkb38iR5dPzzw6587iBHiH2g/d+eXphv2PWSdMuQ+yYmYcJRG\n9kJuSBy5nEQ59RpBWfVwvPSSLjqo68ue338sWEn4gisbsNmHMDyY/wAMVJ7WOLYYc6is1rqtwCBy\nsB54cZCmZZrBOat4AEihkBKsAVa6gWv5GxHw2O+EBuzYm5N9vVf54nrh/NYJqOAsU3T3dQP329B0\nx3VVXTDlo6/tDbl6euJ8Qa3M3PJRJg5wsPmL/NVsrezwAc9vPw/hzwmxcERXAbe/Qkb/AC+OJzzS\nsgNwNFh/aH8sR5JUBTfUDb1t/PDkkrSMgR4KNHC8HPPxumo/AFORui+lhf8An6Y64ezWmO5Rd/Q9\nNvLDkmzxIxu4633B+3yxix8bQKANY6/tD+IxVzMJvYHXgreMs3kBbHtMVvTyA/kPz8MYzsgtbf8A\nhyxoUf6XbgYAH+suW2PK0/Pl/ax0r9LTwS7f/OXLRYjlPe9+XJtuXXz+OKamaf1RuHguT4hHukYe\n511vw+sIN72P5/hbHelRcY0Rt9KRwfIikcR5e2o2FpwSfLbXflbc7Yd1F9Jdwmq759Rg+XfIfuAO\nJzYt/s3W7lB/EmXttrdXJ4/l8evl5csfEgI5fh69MacYPpLOFPD/AOXqL/7ZP8/twsRfSQcLP7ud\n0THr+tX8eR/I9MLyOjXd1vslfiDLX9o3xcB9Vt5RLDAU1fLGphPpFeGTt+mKM3/tj4/vG32YzYvp\nDeGj/wDTFH/9ov8AD+P2Y6C0fpd6/RN+9xf5G/7Lav8AVdrgYb89c4kVdS6SdwBv94v9mNbI+kF4\nbaNgM3pCSpA8Y3Nzte1uvM7YiLhz6QXhyuzBaf8ATdEXWTSVEgvqH7JAGoMTZVHMkgAHDrACQA11\nzwF/Sy4a+Jovti3HaW6VY2FiDswBHy+PxxmIZBYi+kai7WsoRFDMS1iAFAJZm0hQQScac+1/6WXg\njgaCRZppc/4g0r3PD+WiW0Wm6o2Z5gyiloU12MkF6jMAil1owNHeefP2u/pT+PO0ZKhc/wAyXJuG\nTr7vhXIWqMvyx4wGMYzGR2aszlrKRKK2U0LTnWlJAqpTLtcC7C1daQdgxR67Th8gs9inbCnpgQHh\n7rZC/wBF6aPaO+lj7LuAVqKahrZeMc3gJjeDIJKZ8opZh4SlfnjyNSBgykyxZYM0qI9cZaKOImVP\nOL7XP06naNxKZsvyGvj4SymU6GoshEcdVLTSWZnqc5nD5m79wSYxls1FCw7xmSZTBINBPaX7QNRm\nEjLFNogiiaJI0Rwg3usQS+nVIjFSxXu9Kk+E2IrVVcVNUOCSwLa3jbUjWZhpnjOpPEzNYFWKCxvc\ngA49ywD+nlDTAGVvtpABm9ePdov6gVU20GOMbLaMO7wVmeN+3fNc0rKiWprZZ2qz300807yzTI+g\n96DvOX1NfvReVlUh3bVuwqziqCiozW5hGZjI/dU1O4KTVFTHod1DoB3FMscqSVkupJxTkJFoklj7\n2I4sxMpsjDXpdw5ltoWMBvrEimzAQBQzbXZGWNQdVsRxmubSVsuuQurBFip1YqGSlQs6B1RRdpmc\nzO5YeNipDql8eiMEUTGsiY0DMWAAtlxA5FYCOWWdzpJHOLQL/ETck8NL8zwS5n2Z1GZVEtXVSiWa\nY6nkCoB+qTQiU6qtoqeJCI4IoykQiAKrsAsC8W5ZBOGCxk+LmdXd3Gx3AYgXvazH+Ak4vGABuCV5\nW1MdhYqFHhB2KjZR0udQDPzTQL2Dh+bM5FhvsbLYt0vdRbl5HFZilFHJHYsaTxteyu8DldFNth7h\nbTO2XdvT77Aa+DMskm4aqI53myqaqq6PuKgwA09U5nbxxle7MbtUQFQdBik0cmYYm3s/4i4iycul\nP3WbUjqRU5ZXwxlTA1u9hjqgI6kiSJFj7vvayFXAkWkWRpZsUWy/iCfIc0ps4pEDtSEiSEbfWaaW\nySxEWKjbS6FtlmjjksdAxPcntF5XLmEdTS5mkMMskf1hTRS0jxGWRXdJ4HvDMiapo3MKvFYC2pRG\nreOywso53NJ2Wu04Zr2aUvqohKwbRsNoZHO/76+iy+LexOHiwV39VdCVDStUycH5nOKPO6OePX3i\n5PUSxmkzyleK793HPS5hSJKiVFJcFmr/ANn0tblEzUU0biSE1ENRT1CBJ4ozGsUsbLKFlpwAHR5N\nJmhjaQxqJAhF/ckbKs8WNqto6sSoskdVQkLLBokKxT0skWlllgYtpDskdwSsUYF8N3td4Rllq4an\nNpjmMkKIlJxHFGZaqakSJ1jhzujiL1lU1K40irhQZl3BgU/pDu4pqfj6NlxKyzidCLEEHUFRW1T9\ngxH4QDex47iD1yVqvZ87XUrqSpyTMqpo5AIKmBAyIalAWU0a1RfWqhzHZWd5gto3BsGe3vZ5nddH\nWSwLCrRojRyIJVVYpLWkdbi0vjQD9YGO55FsaYOHqauoanLqvvI9E8n6qaCeZopjSKCTGA89RJqM\nyPJA9K7UxWcVBFQp0bj+wbjHJocgOb1k0RmIZXijkMirUtqRVjKMwlUtrA7suze/cg6sZHH8PMTm\nytFmGxNt3RXp3ZPGxJGad7rvbk0cRuKsNw72f1lQS8VVIscsssrrLJHEZJnOp3HdFSEVyiDUSNAA\nt4Vs5eLuy2upsmzCupJUmqY6OaWnhp5BOHmjidlhWxIMjEGwZSNWx3Ixrv7Wu1btGo9PEWWZBNme\nRoS1VRwSaa6GjAKvNDQu4+saFLGo0ypKl2YI+jSzf4Z+kl4JraL9GznPKKvZVh7kRmlEaAt3sSxz\nyIygd6QhW5BLEk6Tpx8lSddgjgdrXuytkvQKeQ3Ac6xHEfM9+SuDwb9IzwNlEsGVV/DXEdIKONYa\nrNp6T/Ru+VSZWrHFQxp4wzOLyQJCihCZUUre+c3tB8KcT0c9HT10X+mZTWwtE5VHSN6SX9XNpdgJ\nXuyMoZgS4QW2tpD4hqZuL6bXkVa8uWgkGsk0GthqIi36s67vG2kagxDRMpQpcMuELs97EG4Rzqmz\naqz7NK9/q0dWKKZ6MUX1iXXE7qsUKSSql5HgRpAgLDUsjC2EUuKybYa45Z+CkVU4AILbWGXA9ysj\n7WfZnS0vZfxfxJRSfU6nKsmq6yM2kDSyd2RSSOp1Ry2keJVaS4k1+MOjvbcR/Rdvoe834ZSl9o/t\nOyiajzTMMpny/svyHMY5IqqjyqtWGKr4zrqaURTU9bmNNTTUmRxVKlmyvMKrNpFSaujWG3X0TX0b\nlJxvQRdpXatlBqeGZJsozHgrhau0ijzqfLKxc0g4gzqhfWarLIq6moTlNDVaIa6SF6+qjlpPqwk9\nSgr4kRUTSiIqoqqgVVVQFCqqXRVAACqllUWAA5Dk9Q0uyy4HLx65LBV8DpZBYfA035EcNw46pTp4\nOV9/iT5f4fx6nGcI7fLlhB/TcXSwPn+RjkucIedm8ulvtGIBelsaALBLQOObyAcsI/6XQDmB6f5D\nGJLmy7+IYQSSlga8ksPPjBaQnCFLm63HiHXz9PTHAZsv76/n4jAHFJBXfUv4rn1xiyVVl/P8sItd\nxBGh8TgcuhP4A4Q6riWIL7yte/mPxA/jhk3J0spDjYXTxpKksdzt8vX8/ZjOqT4ST88RzlnEiave\nUem+2/2YWaziWMI+p191tt99j6Yea4jd6/ZRS2+9JdRIvfG+2+3r/lthz5cQUBG43sfgx/A7Yqfx\nL2iwpVL4gAGK33G4I6EDz6bYmHhfjeKSJH1KfDve/wC8QDfle3K23TnhftTw9fskGIdfyphT+GMe\nVAdiNvLDLk4zgRGOpdrefnv08jhtP2jUpawkTnbk43v/ALOG31O4A+afip8s7DvIUmfVwen3462M\na76R+f8APDNj4tjYA3W9uX4faLYx6niZLEiw9fFt935+GIb3nr+FJjgA4eYTzkzFVHLzt+fswkVO\neqvTfry+X8OWI2r+JQA1mXe/n8rDDCzPiXa4ZbbfcLH7xhok8k44tHAcslLGYcVpY87W8h+fLFIv\naU40WIU5uBdza/oE9PX5bYkytzqR+VuQ3257dL9eWKDe1TVzGSiF9mBHTyG2JTWE/q9FFle2xIHh\n0Favsq4+1ZUpLcibWC/vt6fje2HXVcZSHZdQJ5Gw/kegOK0dilBL+h4zf9lenkwvv/ukYlt8rfqv\n4dPnibCQL3I3KK433WXPOOMqu6hXNtRuDpHkByFz1+75a9u3TtIro+I6eMu+6xarabG9vS42sMbA\nZco1AXHK/wB+34gf5Y18e0VkCrxFBIASbIW9AGt8+XLD7Z2tOl+u7mVGniLhqrt8J8dTDLaV7sTo\nX93e6m/Tb88hjvq+0WYc9Q5/u/Pp8P5nDN4VoT+joAQfcX/3fj+fLH2uoNjt58/53/ywplS0EfD1\n5IMTuPoueYdpUouNTbeieXww16ztTdbnULD4ddudsJWYZXe+3UdRiO82ydbEXtsLHyNx6ddh/IYn\nslYVBmZILkO9Eq5x2qSOr6Gta97Edb26ehtiIMx7T50Yt3nhJ2AbyAHzwkVNI3fSIbkXsNuWm9/x\nGIy7QKb6vTyypuVTrYX23525f44nQbF87HyVXI55zJNzz4ZfsvEdJwT30B0AgqLgi5vbfa5sOWIn\nnymZJCl5Lq1tmO9j8OnzxbPgiH6zFJbfY2vflbcfMXHXzG+ImkykvmskKqDeYg89vGB5/H7MWUtI\n0BlmtzOeSpY5RY+Oeilrso7M3qIPrkzy2EZ7sF2spHW2q3S3Lfn1th4NwiJnkSJ5yqkrcTSb7Eg7\nOLb2Nrnyvicspy5spyBHYKD3bdL89RHvA9D1xGPAFU0ryqWJYtfpzsL/AHA+nUb4sjTsaAwsbcjg\nOSh+2Lic8wevkqw8WZdWUNU8S1NYoLWUrVVC+fMCXp8ev2zV2S8LVtRTNLNWVrbOfFWVAvZiesp5\ncvhv6YT+0PJjNmoj6d4NuW5IA35+e17fwt32acE9zlDSbKdBtzNvER1vfYdb+nnhilw1pe74Qlvq\nLNHG/Wqoxx7V5lT10iR5rmqKDYBMxrUAtv0nP2YaS57nFrrnOcoFF2IzSv8Ale04Atvudr2BtcnE\nsdpuWaa+ZmIUBiSxICjY7sSQAF5tuPCDyxa/sU9kWlipafijtCSSmyaaOGfK+Gknmpc3zlJYzLFP\nmEkX1epyjK3HcvF3M6ZnXly1M1DHFFUVK6TBX1EpijiDuYHrpu70VOJRQx7cgbmMm2F/RVs7F+xb\ntB45qHbLM4zehyimfRmPEGY5xmsGTULjY0yTrKz5jmB3f9F0Ec1cihpaiKnhUy42JcCcGZF2cRtD\nw9NX51xA92q+Ls6kWXM2kk7tJ/0XC8k0WRxPEZFV6aeozIwvpqc1njncHr457YgUjy+ijpsroKCO\nOGiyzLYoYaChptKXigooR3CKXCRyyWlmcuzmpnLGZ6/8Q9pXcEtLMyao1ZSQG0OCACEeYlyltelS\nb2TvS0UYC+tYD2Ip6dofMGPkyNrXa09686xLtQ+YuEZ2GZg8/wB+5Shxrx0tEZZqud5Ze+mL97MF\nswcNrKku3icL3iiM2dTHJ47KKE9pfa1PmdTMsczGNtbFXBbUvKQCMae5LSOUKMAjBixIFolZHaV2\npzV0zNA7CNwLEaQto7WDpqcDWpvfYxkqI2AHhiWPMFCmaTcLfQbAWfSW7vSPD4ndjvcmwAIsMa9r\no47bFgBuGnlyPyWYkkkeNCQdL5nwS9m2YggEuVkHiZGY6rNqUEk3Noxs17AgdPdLebPCIym6gAux\nBPhZV0g2ClkvZdQBAY2vhmnM5He7gksTq2A94+LXaxZrkA3BAvcAEC2XQDvJQGayMpa5tZU5F2Pv\naUVC7GzGw2VyApR75e7m5DP6J1mFAW2s+N/l1yTqpsxjaEx2B+sAyTuriNnp427v6qDcsoqaju1a\nQ2sIZlUFWkv1tmLEuWupdtwo2Fio2bTcKFsABYFiGDb6Rgw0yssj6QgmPeJESxkCRIYoAXk1Eu6E\nz7H3JPe0krjOlk3NmWMsCLNZgQBv4tiDYWTa5ba4uWEmku4bR1Onqu1TWAtjaBlw8PD03LArZ5LH\nS4UEtbRYd4TYgl9tA6FgT5AYb9QVcnw6bIQTdjax1dV3Lghxc8iDyxm1VWgsgZyRdQCt73IsBbcG\n6302I6EnGFJVMbEKQQf2iqpcDSSylgelt+mwAG2HZJG3IL7cugpVNEQPy6b9E2M1oA4IKKb8g4uT\nuDcobGwtfVuBa9ja2IfzfgwNqZEKkXIPisxvzAAGoG3Pwk7WticC6lh7u/UMxYehW/luANrmzA45\nyQwvZTZr30ExkC5ts1iLEkAG3mOWMximCRVQzsToOgtbhmNS0tg24G++nlvUCcO8V53w5KJKV3MQ\nI1QtcxuCdZG9yPd5bgc7ed3ux32laOupoaepSCmzCnrC608pjlWrpmkidlElQF1iOMzMU1K+lLKx\nJTEGVHC0bqz6VZV8tSrYrYsLgrsCRYbA3JGK8cW8NS5bOHjLqLhlZNipZreEoNrtyHIcgBjznFcH\nqcOb7aMl8dzdhzsPG+l1t6DEabECYnARzfpOlz3b1uD4s4dggWrzDIZoAJtVXPw5VQx1WX5jGoRz\nJRwtYLVwxiVYZYV+sSjTGJHEZVuXYNxa0+bigkSPLadljqaqmkLpJFLAI0MDUTiOOXSJFhSoijha\ndAsUlLFIjqNcvZD7SdXlNRTUubhqqgjR6SSZUQ1MMMtgHIJRZAh3YMwZ11K5cEAbDkp6TPqI5pk9\nTTz1tPEazL6+GQKzJTIO/oKgRAWEtPMojSRSUlip0VywMjUNXVMrKeTYyeG3cw8d9vRWGH08tHVR\nOfm0OADm7xzH1W4HiIStw8mYLA0KQXkpp1GqJS6+MLJ4Nx3vIoElF7rYnGonts4f4M4tqZIM4ooO\nHc2aSQQ51QLEtJUFQI2qZotKNDNqAeYqwS77BrYu57MXtVpWZRDQVdWZKVkW2u0iyKFKpZLGy6AL\nhbBSCABpJw7uJOz7gXOUbNPqYppXEkzrC4eOqdHeRrxO7Kmsk3CaVdnUHSoUY8wmrrsA3NuDpuXt\ncJLcwNtr7Xvu8+a1T8A+zrxfw/m2XVeV8SUWeZc1XFNFNRTyLNqicf6PMg71ZtUS65QzEBAG8JNh\n6fPo4/YSzjtj4noeJ+JqGOl4C4fqo4a5Gp5QnEtVTRpUrluWRzRJHNQampo8zzIGWnJ+sUcIkqI5\nhHHHsKfR4Zn2lGl4grqWTIuzSnqXiTMqNxTyZ7KkogqspyDQGcCd3qFzLN9SGh0NBSO1b/q/bp2F\ndlGT5FlGW5RlGW0mWZXllFFRUFFSoUhpaWnTRDDGCxYhFAGuR3kYktI7MzFqhtaJH/AbAZG3FVlf\nI4fDfLcOF+ZzWVSVs9HBBSUlOsFNTQRU8EEaBIoYYUEcccaKqqiKiqqIBZVAA644NmeZMdlYDpzA\n+y38cTzLkMSAHSGLddxyt5H1OMD9HxAkGMXFvP8AnixVKQSNTbwUH/WswHMPb4n+WO+LM6vkSwPx\nO2JdraKBQeVv8R1/hhiyJCsp21XPS4t9h63+7bDZkCBESbfRJ31urYXu3246WesJtqf4bj+OHxSQ\nxsgIXbe258zhGrKtUOw2HT8/n8MNun4deiebT2/M63gEgGmrTvqb8/PHU1LVD3mYfM4d9FmEbXJN\ngBv68/ntb+eGdn/FlMj92ZACTa3Ijb8nA2Zd9gNxvzTFzinqy7WZrLbe/mbb7/x9MIE9PV6ebG1+\nRv8Ab/D54kikzWmfdvETzv1tvyvb1wnV3EFELrstjbYc7m38P5YR7xboLppxvNhx6KYGWrVBuUl/\nn54686qa1Y3A1g6DZiWAG3w68vmMTJkVXQvayggg2vfz+P718KGbrl7I9wD4Tty/E2+37sPMqr38\nOH2TZpv7XE8cgtXee1WYSVhRlNu9NiSSPeFyBYDyPPE88O/pAU0YUSC68xq6M24H+WJGnyjKWqGZ\no1BDMQdfW46Xt91sTlw7kVFLFH3SJbRsdz1N+Rtzv5fbhxtSLkdeiZkieN/oFWSqgzN4nC97e1x7\nx6j8/naLKDKs6aqIZpFXWLX1Wtc3tvbyvyxsfPCUehh3artz32+84asXCcCuLqm7G23kRhE1QN1k\nhsRJAUD5flVeUW5cnSOVzy2/Plyw4zkeYNcHUQeni/ntiwtPkcaqLIp9R1+XIYyPqEai+n8f54iv\nm6Fk+2kPP1/YqtL8IVbkatfwsetv7Xpjj/UCVjurEeWk/wDxYsi1KpOw5fnzxzWJBsRv+fXDJqDx\n9Ev3Yb/mVW08ByDmjEdfD8vPzxTX2lOz4yTZc3dEjXpI0eg359b/AHcz02pSqgPK3rz/ABv1xWDt\n2pKdmptQBsSR8QEseYvzPp8bYiyYiQ02+SlR0IdYG48So17I+DFiyqNe7tdV20ctz69Tv+b4f9Rw\nyouLWvzOjl8tX8cOHs+qUSgVQAdKA3tz3Nj8hYfLfzwuV8wsf5eo/Pxw7FWEj7InoWtNgbj5eqii\nfI1XyH+5z3HqcUD7e8gR+IY9WnSY1tceTXPX1/zxsar5STt09B5rjXl7QdV/5xQIeRAB6XBselj9\nm/PDrqk21Ud9NYadddblY3h3Koly2m5eJB+yNtIt59flbCTmVEgva3Xp+flhRyTMI0y6nvOoVUXo\nP2lX06lvvwl1GYUshb/SVHntz/y9MS2vyvfq6Ylitpl4Ji5hRLvbz8vL54YGY5cDt8P2fUevwxLN\ndLR2/wCkrzwwsyraJTcSqOXO+24Hnh+Ofn15KLIw6ZZqEJ8ivUOdiO8YHw8r29T5enLFcO3NhTUc\n4uLFbah6Dy3vv64tTW5tSd7JaYf6xjijnbtxPT6ZkaZWW7A36+npbl0xPhqXcL8+vooMtK22nlde\nWD/kE4jyGeto6ikqYY4KiSNJXj0CVI3I7wMCQLjbR9gucJ3CnZXmKZmZ5Yu8HeXjNxsb3Ny4PMFe\nVuW+9sekHtC4ZyzP6WvgIgM09paSQLHqKlS11tbkLqdzcXvjXTwhwxSRy11LWOsMtNWtCe8sGteR\ndQvbbwDrjczROIs0flzb5rExPacjmD9lUTj6pmmpoqM7EKqlQOWkW5iw+Y88M/s24fMdQ4fVswup\nHQjbltsNrX9R54n7j6koKeuKxzQswm0XLD9rcHkRt5feMdWQZEin6xTLrLVWjmLAEabGwNyL3HLe\n2KyirZX1ADwbN+EeisqugYyHabqRfdoFFWfdm09XncL06nu2dTYlfDbrzHny9Pji4cmUR5TkIgf/\nAFjaNXmfgBc7XCjbckWvqW8v9lfYJT1cgrKuWQMZUGm1ra9wFGvf4bdLdMSF2iZlw7wORVju8xzm\nkUtTRTustPl0rA6ZO4YSCSvsCsN0IpNTSgCViV9MwrCHSEhoI29Tl6eC88r8S2SADcN1VScl7Jsr\n4KP9a+LoBLxFJefJsiqVjmgyiPVGVrs0ha3fZyCS1DRSH6vlyd3UVcb1yCOCBu07tnqM2qZqmpqn\nmlnaZjrKygO7yIZCzCz2YoZV0sLqFVAyMI4y7Yu22pzCef63VSTSB2dn1mR+ZBazljEqOxdwzeJ2\nJ8OuSSSp+fcdPoKLMw0XClCAifuKBazDZQJXs0GlJDG7S68elYThsVK2zBZx/M7j1osNimKSTvvr\nuAzyHXzUqcS9pyLqKsGOn6vaPaLuWUx2ZNLCTQq7Bi/d90VsFdAa98UceSVREYdkcpofayBwdL3H\ndglTEW3Gwu1jpuQ0c5zx3CqTY7knWzC5Wxvq5sTZr7398MxbEe1dUV5NqFwVfwjUORBjFwNibc7c\nt+eJFVUbINs8kmhoHON3Cx3ZpXnr9MzBneQWUMCd+7U+FSbkFgAunSx8IsBthMzeuKxKivdCDfY7\ni5sx22KiwKncW5YRJq8ah4iAPELG4JG9rclsTsN9NzzFsJOZZhqK3vbQeQst7m/UA73DW2O9wDjO\ny1ps4cdFqKbDbubloM+tL/wl2GvWSPVq9xjewPUaVY32IYkLYAWBudgcPGklj7rUXKXXQHZSdIAE\nlUUa4OtI0jVQlyWliBYKWxClFmJhmKFtMZ2B1abHqhbS12tcWK33vbEiir1QwadQAjLl2ux1yuqJ\nGG1WVbQWDaRexsBsAiixEu+C/fpyU2uw3Y2SAdCQeR3euifEFUrsZEAVrAmwuFUBQoI3UBQAi7FG\nBG972xZFZ7gBjsx8JIawIN3Y3YLp5EHT5E9cGjkYxaNWhWBLFLknSF8T7jUgI0kOdOrxc8KMqajp\nUd0p5rpF+RsASiNYrcFdxz+WqiuWj+FkXx7Ly7jfw70nPHYSKo7u6ghFOpipPvawCzC3MCyjbUy3\nF0OQnmFVyC1iRuSSfEd2tvYWJ308yObgaIDw76QALM2rb+zf3bW20i4vzxjSHy1fsgAH903UAFGO\none1l1e91xySO/epsM44ZcU39Ev6xhe17agbAt53Hu+RHMi4HPGRQo7nSdIa2xI3BO3Q7g7/AAtv\na+MpI1YEazuxPmNx5E3Px1DpscJ0tQKdzquASBf3bjUL2JuBte+/7QN9t4/sw2ziMvrkpzXF12t1\nsfssyOWShJcNqjZu7bQrAsCASCSAAtyAQdyeewJwj9olGtbR1JC3qIRFUsE9ySAlSJQDaxQMxe+4\nC7gAYkRI4K+jJTax1Ovl71mDdbDTfbc9cMdu8pxC0hDNDM2XVKGwXuKhJBHq594qSlthswcgsAAM\nQsXhHsHtcdqNwy32KmYFKDUNdbYmjdmNLgZ/IeZVSM4oDC6kgjvAzKbg3Go3tbYDfrvuPPE8+zV2\nnZhkGf0UEET1tPmtTT0BoBKY1eoqauCGGRd9pAxCcrESem0Q8WktULH+1AiowAuSzjWSALW8OgaQ\nDY2BNybTh7PPDo/T7TOsFdBleQ5rnvfQv3goHpstFRHUvGLSJU5fWzwQBXVNGYWkp2m7le9+dPYk\nVj2sNhtWtuI4fsvb3yf/AIwe8XOyHZ2y535DO63A9mP0bdSOxBe2TLe0eGlyyHOK/J4MllyV+/mg\noKmjp4aiOqhr/wBaahKti5Mdo+41Lc+FvQv9FX9EHlOb0GRdoXaPxlHxJl1XHl2b5bwvllJLS0U0\nd4ayKnzeSu795KW5eGroqdI0nhCIkqEvq0q5txpm2Sdh/APZ2KOekyf9GjPKmX3YauqzetlrtIGh\nlvHCYIzrOvwgWsbLtF+jf9vzNso4eg4SbLcyrv0ZEkFJNSLPLCIUUpHG/dxssVgF6kbGy7bef49S\nbEkxaMmyWte1xfy1WlwyskLIi4kB0Yd5/ZetLtYzHKsryzI6HL4qWko6BqWkpaSnRYIKamgRY4IY\nYgdKRpGqgKpIHWx2xbrs4z2lelg0uhGi/lsR5Gx6jpt1x4r/AGsPpPs/graTLxkua0Ao545WkrFq\nII51C3PdM8al7GwB5c/LfYn7J30kXEHEVDTyRcOZuQFKd7IsyIbIp1DVFq0sfCDYAtYXJxSshkiH\ntTshhztcZJyStY5xbY365L1DZtnlOq7Mm673NuXxtfc4j8cRQ94QJQCeQDi3589xjT/xV7WvG31d\nZIuFq+RXQlT30l+ltu464jbKPaU7RpG7/wDqlX2FyEM8vnbn9XNuV+WOy4oSkt2bZ3/1PFbzqjOY\nyp/WC3obfiPxwzZain7wt33M7+ID8+uNN+be13x7SR6p+EK8CwJAnckbgD3YSTvbkOXphp03tj8Z\nVV3i4Xrrg7q80iHe/LVCL2t5fZfHHYmbajwIUgtaRy5B30W+PL8whVFAkUgA2ud92J+Hwt88NPP6\nyC2tpEvyAvsbe906Lc+ttrkjGmOi9sbjoeD+qVeAOpqG33327odb7+mGJx97Z3GMNM9+GMwjYDUC\nJDcXIFgFivuDb52tzwpuIB1htC/em3NaMwD5FbfuIO0CmoIJisi6VQkkXsB0J2v9l/sxrT7Rfako\n4eLKLLXqbLKpayyC5YBQLLu37ZHK17741j8Ye1h2t8RxTUWScB59Kz3TvmldIioNgwZ4Bz3vp1ct\n+mNbnaflHbJlObR8RZ3w1m8Mgb9SsSy1LRJcMFGhbi+nUTpHvWttjU4PFTyNPtpGtd+nNZbGMSna\n6MRRuIDhtENNrdcF644O2qnihYqw0WNySbb7cuY57fHGtPjz26alM7zKgpEcrT1XdBjq0sFJHgsy\n8gN7+YtyONS1Z7WXaTBkzO3CufAlWVHEE7OTsCe6EDOLC5tpY7dOkCcG8ccSyifM82y3MYGqJnlk\nknhmjAsbHVrjDgDmWIFje67b2GCUFP7R/tXNeNG5j5blzFMRlexgja5haM8jyXol4V+kBSkj01Ik\nvptYI5UnqR4ifjew+VscOI/pPKOFHtFKw0Hbupf4kcufyxoIzjtFrqlUjoIpZ3a26b2JF7FrW62+\nXK+Iy4rpOMZI5GGX1JQofF3qjYeu/wCdrY0kmGYe05szKz7MWrcwHGw1W6dfpOo56thHHKVMm5CS\nKUsTY+8Cbna9jbbG9L2Pe3OHiXIaCsd2BngU2bUDpLG9y3xBtfr6WH58+WV3EtPXtGaOqeVzYKja\niLuPDYX58gbeZtjfZ7D3tRcZ8MZfTUGZ8P5oaaCO0c4ZtLIXuLLYHwg6eQty3tqNDjtPTRxAwAXD\nrnkP38FfYHXTGb/vklpbw4r2cpmURhHjFrNvZh09QPvw0JczgQi8qDxN1+GNJsv0kkUAWJ8vzMMQ\nbnu5CAbHY2QfbcYiKv8ApMCakwJl2Ze/79pFUAnmSwAHLlc8je3XBTVL3ZAXWzBgGe0OvFehKfPK\ndRu6H1v/AAtf88sNyr4pp0NzKm3S/wAuZFv8rY8/Gc/Sj0NOTHMtRGwsLPIQ1wB0vt9pvscNzM/p\nMqZqd6nu6kQhb94HUoRccmUAkA+Q5dLYfZFI6wI7lGnqYh+V3eANy9Da8dUi/wDXJ8C2rl8BjNj4\nrppgGV0Yn1tyNuoH5GPIx2g/TE0NE5Wh+sVUoa2hJiDqJFl5eHrc7/Lq8+zz6YqiqUVq8TUUgXxr\nNUEC4YgaSAAbrpOFvwuo3R37s/3/AGTEWNU35XEZbyDr9l6oaniCE3IljO3nio3tFcYwQxxt3y7B\nyQDYbIOZNh1/IxqJy76V7h+tQslapGorYVGomwvtYD4/AXvioftX/SR01VlzR5dOWqHVhGq1DDUS\not+yb+nxwgYRUOs0xlodvOXV1LfjcAbtB1+A4rfX2fdsdA1KwWaM6SgPjAtZR52v62v/ACmqLjOk\neAS/WASfe8Vh9pH4Y8cnZ77bfE60sdoJhrI1sJmtzOm4IB5W5/xxeXIPbsqXy4I3fJMouyM8mrp0\nYWNvn8tji+g7J1BAOyfT9lnqjtbTA2uLhegLOu0ehjRyJlLeJR4jsTy5Dr9lxjSF7Znb9NQcU0sE\nL6zKybi/h3v+emK4Uftu11Tmf1edKiONn8Ls5Cncg2Hd78xfxC23O+1cu17tWpq3iiCrr5A6ll0B\niCQAfX89cSn9nXxG8jSR52yTUfaJk2THAO61W45O2OrTJomUuxWEWC89l8+Q5j5bYoXxx7ZeYZbm\nMkLJUAAkbK59wkc1I87dfkOdgeH+1DIzk1PCDFqkgGxZBbwoDvbex9BflbFKe1LKaOrzBp40Qqxk\ntZQQRcMDfbz/AD01PZzAoJXFsjNoDTLd13Kg7TY1LCGujeCd4vuS3mXt31hXYVH/AHJf4tzxG2a+\n25mbhikc/LnoYdfXfFduLOIKCiqhTtHHdjYEgbWA6W336XFuWF+jyamqIw6xppPPwg2xuGdlqEmz\nY81h5+1NZkdrZGfWqcE/tgZwZSypMCzC+x35/h5c8VX7aPaeq5ZXLGXvHBuCGHIADci3LzPTE9zc\nMU97mNfCb20De388a4Pa/wCIoclnJEa2NhyC2uo3vZr8ifS9ul8V+J4JTU8bi1nhu0UnDMbqZ5Nl\nzzkt8nYXwlVVVHSRzzSGZU0xySbsyFV8LbbWJIBG5JFziPvaL9j3PK2p/SWT1j0ssmlpIxGpR3W+\n7bA3NzuN+fLGwngJcqphRlNCpEijcgjfwkb2Xk22/wAN7DF1Mr/QtZHGpeK5RAPCDuVAIFgbcutr\n4uqzDASSMhyKoqKte3U58zkF40O0n2Qu1enr1liSCuiM6MVR5IJWTltriddjtfWvIfDE/wDZt2e8\nSZbFSR5tk1dSl6yFXaWLUmp7HZlDC7DwKDtcg2649XtZ2a5PIS1owTa9wijlbmbA7C5sdv2rY0pe\n3d7YPDeQzVGRcLPT1E9PdKzNY9TxCpjNnp6IqPejFg9St1bURE3N1rsN7NF8/wAAccwXOcNLK4rc\nb2YSXu3WaL66Ji9qPbdlvBGXNRUvdTZ08eqpDBHjoU7k6qeEAjXmUo72MtqVKIAKrNM7FNNXbJ2z\nNmE0qTzuNcjPLM+tm0PewUXVA2ze6G1A6S2q+Gb2idq0rzS1FRMpnmLvJIxd7yS6T3W7ldeh9GzN\nqL6pGYLdac8S8WPVSyKzKYtQKKCTo8K6TcjSdIuL6Rpt3e6gM3r1NTNgY0WG0NSvNp5XyE7N89/e\ns7NeIpJpJGlLC9nYEs92UCzFwo5GMEkkFuW9lswavM9UizEsbttvuNDLe/mbE3I8RBAF7YS6zMG3\nXk2rUAuyfHmOoPmSLbkAXQp6y4OokWsBa9vFey2uTpvcrtYajqPLCJK4DIZnvU2kwzlc/VLVVmCO\nQwFlW2obgkC13W3OzG2k+LfpsAjVMxCmMqoJGxDE2HvagCT+yCDzNjcDVY4R53YOpsAo5m6hbnkN\nyPD1YC5Jvew3xivWtICSdDeZuQp/sgb3JN9FrWHPzrZqm4Nz6rRQUAAbb+Oa6JqnQQp531IRuD5b\n7k35G/zF8YNWjkBidIUWLjYHUS3i8ufSxsMcql9auHPjIBtbcgXuVYXCuSR4WOwPnhMppzC2k3Ab\nnceL7vEvxsLjfrihnlz1y4rQQRWbpY917+n7LFqw5jQBbOpvffc32frzPh5AA7Nvvh+5LXtLl1Pd\nvG7GLkPD3VmUEaQG0vMx3JPj94gAKxcxUxs00I1oB73u+9YGyDdfIWxy4SzMM8kAbfWkyE+8SAEZ\nbfKO3Ta99ziCyf2c2eQOhGim1NL7WmJA+Jp2u4ZZcgrD5JAO4LkeKMqpPldSXtuQGU2bULGwPjA8\nOFCr0waebGzXA2uQCbWHSxW9hswYK2G3wlWrMlYoW4Soj1dCNmJFmI1kBGATfe+F93uwXQoAv3Y8\nS2A8jbU7EMAxtYrq6Xt6bh0ofE0jh8rLyiuhcyd7XXyPdqLro1a9ZClAnvG/MEbGxAJtvyAG3Xnj\nHlRdIKnWB743AJBH7PQ8x5/w73LbM4IN7Hxi2241ruOnLkdgd7Yy7GysAA0iGwIKAnUbftIoGx32\nUsNzbfE5zc1Ga+xy8r+aaTlYmBWO1vNmNuY8dybG3Oy7ddzfGXVUf1mEyqR4St10oD5jcG9wV+yx\n2JN1KaNG5JtZSpJtqXSbkX03t1QKV288fMvnUSd3u8RBBAW5VT74ItdeS2sLeHw3wh0IvY6EWHje\nyniZwF2j4hzTd4VzcUlWUlJaFro+y7XsACDdbi11sDq5tfey3xLS92agSk3FKZw4A/WPSMKsOALA\nu0URFzfwne++E7i7hpzH9ZpwGRQDyANgxS5BIO7C4Fr72IvjnT1DZnk8+nUamjgkpz+9LTVAFOrE\nHfVTPMX2FwjkkaYywoatrmwzU72m4Y4xc/HjyVtTbLpIalp2QXtbKOGeTvHMKoxkErSyup7yR2d+\ndy0kl9gCFsDcaNpFIuoYE2tBk9bJT5PkWTU8idyyrm9fEI41YvUGGojSqkCCSWExkVCQSO0KK0cg\njDqrLAeX8HPJHmFSXKpl0BnLWurSs/dpHf8AfZm8I67nkCcWe7JeHY63N8opGItXfoGKb9k/VXps\nvUxAjfVNdUe4vz2FiR5NhNEWzOdIBcXdna4t916jj9a0wNEZuC4NyzFyMvQ3/Zb/AHthgp4+zDh2\nOUj60uR5WVSSwZXOmVAL3X9XCwVza+kWxuf+iR7HshPAFBm8kED1VeY3keylyR3hdWvYX1MD4QNr\nHa+PO52qcYzZmJ0BP1SGRoaWFr6UghbTEgvv4IY0HituNsW89if28ZuzygfJqth9SLrJF4WIHiYs\nBa/Lbp/DHjPaKB0plLNDK7LS+d16jgxaxkBeMhGBY8A1egX23/Zz4Wz6hyuWoo4EmgzCB1JFiRGG\na2xFwTYlTseRFtsXs9jHscyOhyuHRTws5uSei+ADkpFxtYDl1548uXtAfSTTcSGkiy3xLHPE5Pdy\ngNYhdADKOqncddzbG332OvbBePJaSoqZGhLx2kiMMl7hbKLhiOt73ttbFFFgs8kbAQ4gbhflqm6n\nFqdk77hturr0ZQ8GZaVVGhhKqo0grcAb32JwuUPBmVjYUsBvzOjn9/Tlt+JxrApPbMjm0CDcHTqJ\nVhf93bUeXi963Pa+9pby72oLwGUblgL+8OXh6/DEj8DkGsZHgfokNxSJx+Eg+SuNxDwhlr7NTQkC\n1rpfr5db+v8ADDHh4DycSbUtPud7R2/C1vW1r8sUp4z9qapWK0KAnXsSSAPsOrffkD623xG+We1H\nmOod4umzC1ixvc/4Dl8+mI5weQ//ABDyT8eKs5eVltAfgjKLf9HhGw/YPkPXDR4k7NsmdFDUtOb8\nyy3PMdST8MUdrPakrI7Kym5AtvzuB6nkMIHEHtYOgYO4XYdGP7QtyB6/m2EuwV41j14XCd/E2H+3\ny6+ivdkHZvktNIGipoE5HwKOl/I7D8cMntQ4KyKqDfWKWmYAXBkRDuABezX+AB6ctjbGt7MPbgnp\nJGF1ZQTsQ1yBy09Qfl5Yrh20+3XnGYNHDRUrxICt5rjfwAk++DzJ5Da1rYjyYa8ZNYQd5J/hKZWR\nG5NjYjKwt8v2Vt6LhDKDWVkYpoGTvJB7g8NgbWFxY3A3Fj88Ur7eeBKJ6SuKooEYkZAq2AuAWuBs\nQeZBup6g2GIP7MPaazqsqpKaSVAzyTKwHM+E9NW3iA+QuL4ePaNxXmNZlciyyRgXOsBTq0Da5c7N\nzNhuR874tMFw6QStO07M772+ah4rWsdG4BjRYaC30VKOzbh/LVzOeFo7pFWuFXTcC51H47kkA352\nAsAMbGKXs0y2syuULTws2jwjSb+4rHa+/U79Mam4s3NBWyvEdVql7kkcybkfja1+WNoPYFxuKnK5\nHllJBuALgXvbz+3e3LG0xSLYbtk3sNL24c96yeFH2hLCwXJyNtVCmSezvRNnEczUUIIbnpP7/lcj\np5Y2odnPZHSR0saCCIWhC+6b2J1W+07W6eQGIv4Vho3tIXGq97FgeZ+z78Wjoc4jgp4dE2kBBZQd\nhffb4/jjEVlcZDbO3C+vgtrS4YGZkC/C2iRl7FsutO3cR6grNcpuDax6npccwPnisHap2dZZSUhZ\nokWzXv7rE9SCd7A9AbC/LFup+OI1Rj32k6GsWJsPCegH5Nsao/bG7S68UtQlFUFWYS7xkeIhRZje\n3U7eVzyw1QwbcgF7W4ruIMbGy+w0nut9VV/tpoMniq49egXZb2Kj/q9uVuir+ScNziajy+Th+Qwd\n0UVbBVBGxA2tyO9juDttjXP2gcRZ/XzOZp55GV9rPbTsAOtuQ6fO3LC5lfEWejKHp3qJNGhhYlt7\n2tz25/nljVx0nxAFzTs2tayyskxd8QjtqLaWVPO0OEDimWOE6UDvdF8K7sLbA2O+q23nyxO3CHAs\ntfTtKHsoDeG5sNIsLeW4uSLXNydycRgaRRmbTzai51AsSDdrjkBuPiftxbvs+zyCOjRCygqxPy1t\nvy/zxqsPDW2Jt4i/X1WUr4idL5HK2RzXLs27KZnrqajEZdZ5E6bDvAqjkPM+vp0tcj2ifY/hgyuG\nSCKISU8OuRNJB1BFJIbdunK9vTniKOEe1qhy/M6We8aiFoje97OrXAt1F+Z5W5G/O1/bx7VGVzZM\n86VELM0BS297tEo5AXJvt5e764qsakf7ZhjPwhwJFt1wrLC6cexftm5sbA7u6/W7Ra+OE8tNLRmJ\nIwzRsEPpYW9eXL7zviRVqwaRpDGEkCkqCAd/nccr4rrlvavT93MUdA7szaPELamLc7W358+R+WO2\nPtjiFPIjOgZlsBZz1B5hSOnU439LijGxtA2b7IuTxWElwqRz3XBHxHyStX8XyJUKDEb3vqAF2IN9\nuVrW6WHK45Yqz2ncXZhUZqk2t9KMoX3QRbbou/XnfD3ruNIqmZpA66QLEgHm19rWv08sRXxPN3tR\nG9wdXkfS34DFZW1+24gltvDgOYVrQYa+PiOfXcrV9n3aTmjyUavI2lVZN2uAdGo3Ft726g26WxdW\nHOVlpoXd1LFRqv5EC4ty3NvXbGqnhLOaiNlZLFEYFydlH22J522vz+ya827Vu7jCtMPCqja9htiV\nhFfDG51rA6DMJvF8OkeG3uRz6zTu7VuF2nrYZY3C2m267MNXW9/nv5HEtcLstPRIrtdmvc8+X+WK\n2UvaEK5AI5NZHhYANe/QbgX2ty2HxG2TmHEdfBB4YgLDmzAAX/3r/YPj1xdx17GuMg7jn5LPPw6Q\n2bs33KxFVndOSyg2Khr7eh/kemNNnt/yjMpZFppCjqyi4PkoXluOY8vxxd7hrN8yzGq+r6UGq4uG\n1WBNv3tunL49MV59orsYneqglnJZVIkBBUDUEKkWJ2ty358xtvjM9pMZD4jHGfiPPPP+VquzmDCK\nX2krct53KxnFft91WTw0aGcKz6E0CVwSSw35b2aw9fuNiuyP6R+pJh72aSQgxjQskmpiDYIoDMWZ\nmYKosLkgAY0FcY5PmVZW0MkiOy0zSMRoC7Wt10rza/ivbmN7DF/eAY8u4PynLuJK/Llm4hny+XMc\njoqpB9XyeBafXBn9Uj94JKyoVu9ymmaOSKCO1bIZpTSjF3hVTUVMoY3NgPxHlf7LO4tQxQxFxyfb\nJoOvRW4D2rvpEc0y3I4shoJmy/Ma2GF80qWmdZaKmq49QoQFOqOodJFarmZl7kI0GnUhbHne7Te1\nGszCRmllkBMxmCpOCVI9/UEAYM+2pGC7BW07EFA4r7VJc+q56qpkmkmqJrv3zeIhrsQ+mygXubsC\n3iYBltrMR1s7SyozrcjShNgLmLZibWBJGoG/PSGHLf2Gjpo4mDYILrfERxXmssskriHhwa0nZHEc\nM04OIM+DASOzkxgKo1uqsABZirL4nba7blWXVuH0iL5qoksX98guwJ3JO+/ox0sRbrYWHLPz+dTI\nqaiFiW5aw38KHSSRe4GkLfbc7i+7RrahHkuzSKHFtRA92yjxdALDa25FtzuTXVc5Di2/D5X/AH7l\nfYdQ/CDx9F3VUtlJuTYeFrGykm1ib8mItvb3uVhYtyondX3AOnUps19/Dvaw9bed+eFBKxSzCfXq\ntYe6Vsbg3Y7nmbFTcGxvhLzCjfaSNgVOokbXttba1zzPO9sVMkm0Lt3LS0dOGkA5X3+CBVjQu4ud\nQJ5E+d/e2I2sVAFgd8Jk8gLWuQoNyF3JIGoG3LUCAC3MjCXNO6MTuD7t7AG5UdBtytbbyO5x1tLf\nXq2I5AcvEx1BTzPrz2U7dDVy1V8uCuoqUCxBvdLC1PedVCkgFRufNtIuFV3IBuBuVA3sMfJqZZW0\nSEgEbSE6HXbbWpvbyJFyLC4vfDdiqNBsG07+QJPi+BJPUXKi/PSbYVIq/bVIQ4XxIWtqLb+FmWwF\n7XOpjf8AdPvYZMzAPi0PNSvdXXBb4ZZ6cl0yrU0ayPdJU5lSQNjtsLkEb7EfdhpPmsKTCoivHKCN\ncZ8AKn311Am/K4K33tsDY4zazNVmdixOlbqxGkXI3su58BAIFy2q58K8w3swqoHACx2KggmyjVyt\nsmkbDmbXNze++M7X1ILf+2/ZAOQdmRnuWhoaT+5ubhmRkLcxp6KyHZ1mglfMI0uTNDTVKFWawsRE\nxBFjdO+0abMWYm52JMqfVzoJK6n0FwfdHNb3HivYoQNJW7W5C6mrnZDnywZl3TGwlhkiiOxKs7xy\n2F/7aEjyJ/d2xaCHMFMQl33LKuksUACgqATa+k2JJYEHr0Po3YrEmTU/xOBLSWm3ELybtxQvhq/g\nb8Lg03O8+PJcXBCXIuLgMBpvq/bZWO6G4tYqx67YTZKlgx5graxvZgtiRvuQgBAv7lxcgk44SVw1\nMW0nvFQvqA5XOtlsBckDYKTq3OokYwJ6gXut15gEgclUWLc7A2uLdOak3xrHTDUG6zUcN9R/KWIW\n1aVCA2VgFu72tffu1JANvU72bphMk8IKhb3b3zZXUC9wE1BiG25kW3I64wqSpaM+SANcIzAm4Nhc\nNf3rBugO3I2w8qSnjmXUCSRHq0gWKub7MRa5Hx33uMOQ2laQfheOevC3PuXZiIszmDpyXXktcrER\nSBbFSrCyuNJ3tyY6rkksSLDkBzw4OF+FPqWb6oQWo62lrwGtsp+pzF4zqHicaQmnndgwva2GXIxj\nkSyWIHUMxPIC+4Xxctjva53viZuzbPQzxU8+gwh3YW03Qqj/ALRQ+IglfCCG1WdrDZ/2LHxuEps4\nB2yTrpf6KJNNLGdqLNspawt5kixGeo1VUOPEjpKFaCBu7LxSV1bp2MkpDmkhkXb/AFaIWCknQZdV\njscWG9lnIKifNqXNmiD0uSZRl9fsNRmq0p6KgowfNYqp2dtm8cR2BN0qnniz5nWVdVIr6ah55UXZ\nVGsMI9TDogVEVeWwFveJ3E+wT2GVknCebZ9Wo8cDQ02UxRuQrMYqufMpHCW2CK1PHrJ3cadhz8Sx\nVzmvqJPysEb2tPO4F17HRMAjpoiQ9xlY6S5zyHPn4aJw5symibvDpew57kk6VJ6b7knn5dMRUacy\njSpYdLrcE2vvsRbn93PD27TKo0srwDYA2UADkDfrueXU3w2OC3FVNGhO2pefW5v08refXHi1htGz\n73de1hqd/WS9XfXNLGjSw9APJPvs44bkkr6KHQ8rTSqgFixG5sSpPQjkSNiN8b3uBMtqMkyeGM90\nTHHqdFlIcAqDtZBextex5XNumNfnYtwJAs8NWEOqMSaWFzZ3NlYXNiRbre3pi8Oc520VAwkdgqIL\nE2GkKQANvSw3vfr1xZ0tc6F2wY76Z6jrVaLA+y1BW0c09RNsyAO2W7VjkDbzT5yDtzSmzVKcSlxZ\nGN5CBsfdsdVuoPLfp5XJoO3am+rDmDpFwH289jpGNH2W0VcMxeqIYK0jsqljdVLFiD6bjTe9rHz3\nl3+uteqOo12FgNwOQHQD89cXc04eASBnusF5TFCYpXtDvha8tadbgHLzC2S8T9ucZVQJVH6znq/w\n8r4U+G+2KkZ4+8mR772LDa1vzy5DGn3injeoCNZ3OmzAXsbkjfb4/D0wycn7VcyhfUjubG1mAN7c\nrbev4Yz5r2MeQ4aaBaE0b3C4OR5D9lvD417aKSPxCaJQq33dRewG1rbfeOtsU14+9otWmZYalWAH\n7MnOxv7oB8vPbFEOJ+0/M61TrRzcWsDpHIbXHi358+u22Il/SxmlbW7q/IaiAPW5HLa/zx2XE4To\n0b+PJdZQPG8523/dW9g7X6yuzOFmlfummCstyRZmFt9ugPTE8cYcVp9WR4lB0KtrWGrw/A9b/vY1\n35eJYykizLsQyjrdd+ZF/vth1Zvx5mJgEYZm82sljuTt4dtrDYdMUldUteW7Itry0/hWtFDsbe1n\nbj3Lt4Z7WqrL+LZUX/VvNqXxaVTVG9xe1jf4j+GLvZh2vrVZU6uyKdABAlF2178xqPht5dcahJ6m\nvirjVaJNZIOoo3TkfIeXr64f3/KbUrAI31bDe452tb3r2t6WHnfbEhtY2NrQB8fHruUZtM0uO07I\nZZ9c1N+aZ4DUz6TZe/Li7faL2HXe+2Jl7OO2qpyy9PrbSTawbSBt8CNrX/jiia8c62LFTcm9jbn/\nAI88LWW8dwK4ZtVupuedtuu29vwN8VdVWyyX2ybZWHFXNLSwtLS0gFbfuD+3upcqisfeCk94dvI2\n0fHa4t54skO3KpMKKJCxCge/blt5Y0r8K9qdLCf9aV1FCLnqNV+p8xiXB23xIo0z9Oex+4gj7uXr\nvijde+nor1hYAPjF/BbF8/7eqskqurcWt3nPf/Y29fO1tueK7cb5vLnVy/zVje/Lqbc7eW1uuKqV\nPbYJXDd7Yedl25+YHnbmP55lN2wJY/rAeV7hNrX/ALX5ticx2ybjK+qiTta4ZuvbknxB2WRysS8K\nkkk22tzNvu/nthF4x7P4qSjkKAWWO5FgL7j1OE2DtlAOzj/w/wCPn5/xwicY9qiVNM6hhZkIttvb\ncbjfp/PEhtQQQ4k5WVdLTR7BAAPDJa9uPJFp6tytwVZzpAte5HX0t5G9+lsNml49ngUpunrcm19/\nIeeJC4opErJ9ZVWB1HZyOZG5N79Nt7c74a03DET81Nttg6joBztf7TjVQYkwtHxW5cFlZaH4jko4\nzztEqo5GdWYrz3ZgBv526GxG3O2GxmfabVVcBWaoYrpbwl22tawBPn8uQ+Ul5lwtDY+E725gHr64\nYdfwlTjYgKt9wRa4NjzG/wB+Ouq2ah1z4JMdHYZ6eiZkfENSkXhkbxC4NyTYk2F9r25ch5Y+NxLU\nMGPfPsDtc/jf5/m2JDOQUxRrAEBVC2LbAKB0P554SIODY2FlsCdubH4/vdL9D/HCIaoOJBdbrmuS\nUgFsuKYGVcR1N3AkZgXS/iJ6t/PElR52bxiU76RuWtbl0tv+R0x003AEaG+1rgnxsPPzA+7bz6YU\na3haJrMdVkAvpkFuQt91sTGSA/r+SafA7c24UkZJnUcdGWLKDa5B62ItiDeK+OGepkRW8JJFgTyB\n8/XDpaltCqh3sRuLD+V8RpnPDJZi4L3OojYb9fLzw1G7ZcTfTTP7pVQ1zmtbsgX1Oumfn1opQ7Mu\nNokqYoyWS8iht7jxddwL/D4jFuO3fO0pMhFTFphXukbvLgBri43sOXLmb41tUNBPBOjamURyKSNJ\nuDYEG62877beeJj7X+NaisyEUrT6h3aLYrYbEctrDYEdPL1w9Nij2MIBvfQa/VN09A293juysnn7\nMHaxTz5zeepUoZE21Bj7xGmxtzI5/djYF20wZZmNOjN3akR6hyJ3BPS3Mb8+WPPdwLndTkGYJUoy\n2dt9NtiCSp3B6m21ufLFhuKvamzCVERi99OhhrA2Atbbyt0tyxVtmvOx7zcWzF1Jq47wuaweK2cc\nY9mHDfDWWT8Q53HCKeiK/VaVxvmVcqiSCj0AhjAqkT1jXRUpEkXvUd476yOIe0yp4iqs9rahiGmp\nJyrgqo1tLePuwpLIumRgiqFjiUlQqwqoWTPa27dKniHMNETyU9FEHhy+hDXFLQrIwE0hXQstTUyL\n30syxgFnZAdChRUHL65hTz90eUUgkK23Doy7i6jbxFSdQQ3YLudX0vgmCMpIQLf90/nOq+fcXxd1\nTNcfkysoj/SHdTlt9Fzr3XxcualiLke9632FiAqS8UCG7u1y1442HNj+9vysLrvYjmN98NnM5f12\nyXDctR1WAFr7366i1jcXvY23walRUAJLuIlsp22ZtQJ93mtr/EA4VLO+MnYNjry5q4joY5PZl4uL\nZ2tlwPgn3TmGWNWjdZDIwLuxIKNzuFNiNNzdlLKwvpN8N+vyYoXZLMAfeRioIWwBC872tp8ubWti\nMHlnpn/VyPYg3G9zY79eVreenyN8KlLxrLEWWVWZNrb3sLct13+432OGHYzE74ZWWta5Gd/IHI9y\nsW4JKwl0T9tpsQ3Q7ln1lJMASAw8vDe3I6bbcrg36X53thIo87kp20uLDyIPK2+x8Plvz9MKP/KL\nHe5AN/e5WPPfddun2cwTt0TcQZdUDxKurn0uL8uQHL5E2G+K6aeMnailaCP0nl5blYwU0wGzLA4g\n5bTdQlynko6zwtp5aiL7gHql/Mc9zb90+8Q8GxyqAktw3+qNj4+QtYjwE32BAA97kCcMnuqXvFkh\nm0G9138JH7QIuNBvueYKnn0CweLzR6fGJXAHL3ZSDYKoINhbYtpum5XYFTxldCW3mazaGVxv660S\n3UMoLRA9+74XDTrvXZWcMLCwUo7HUyKfCxZhpGmJQfFMCDex2A1WsNmnJkNbM20B0WuENvEo/ack\n2LnnqufMAk4zv6+OrMwF3e+pixAF+caAgjuwfKxkI1OWNrdM3H87GwVFJO3NtV1CnnYAXBNgMQZ5\nKN7s3OA/tboFbwwVcYs1oc7i85eA/dYbcFS6dUxYbbKxUE/adretrnlfDaq8gZP2TbfmRf5i9x6b\nb9L2wsVHE1bUc2dh+zcnw9bg8unnyxg/UK2obxNKQbXuDy9CefXcC3lfpVVUEEn5InvOljpyVpTv\nnaLzSRttrnn14JHopvqc8Uym7xsGsfQnUvwZdj8fTFw+HX+s0VKR4gY+82fRcXG2piNN08/OzWNh\nirUnDPcgNIevukcja/O46AkeEeW/PE4dmubRyZVJGSBJBJ3IubjQx71QBtfxBkO9gAp390T+ycJp\n5yx42GyA2bfQ7lne2cbaimEkfxujcLutuOXzT/aVYwTqb32AaI3NwbAFmG9r81Nue/LGDM6sCbMy\nrYa1DF7eDSSx2HhHNg1vdFhtjklmLG1rA3Unmw32AF9ywUeEj15YxZCQUAtZtz577hWIJ1bWso0b\nWuQbjHpN15lFFY+vDPr7LHeMF9rEgsCQXNyD4fE/TTvuPS9yMOHhjMRG4R2VVYqpBuS1t91Usdre\nG6r7x38kGSf/AFg1BdYAHdMSpNwTdjc+7cc78ibDCaZjG5cWtc2AW9jsdQN79W8wBtc7XRDUGJ4c\nM2g+hyzUp9MJmOYcjbL5/ZTXX5clVGZ4buy2LoQAedroAp2/2jsbk6wLBn5fxK9HVQCNrBJUZTpf\nmrC+xPUeEm19IuPPGfk2byxJHUQyBdNg5crYkkjSqg3YgG5bYXNtNxcvPPOA488gSryQd3mEaL32\nWxBxJKb7y0iEKzoEYSNEoZwisyhgmo39YTLHtw2uBct4jrcs7Sf9mRsc1ywusx39rtwPpoq3HhyP\n9P5nTxmokEOa1sAGoIDHFWSRKSWAuzW36fu9Tj0aexzXCLsoqAmqSeOrpqVw4dlikpcqpIZlUkeN\n3m7x2ZCyaXsG2xoQajjkzWuq1mm/0jMKqQDu2ALNVysGLj1a4DKpPXSbgelL2AOC6DMeyenp6VzL\nUHNc1GZs3vfWmmOgISb+CmEaC/O19uWPJu1OHFuHSOaLOdJYm+gOeZ60XouH4gZcRiZcgBlwDrdt\nhwz7xrktVPaTlVfUZpOTDIQH3YAeR8z1O3+GOvs7ySsp69ZGicLdBuOe7bCx/PnjeLVeyrRzSNI8\nEepmJP6lbi45XuMdA9lmkhIZIUBHXux+OrHilPhWyczfkvSS8nI3t1wUG9m3FqU9L4o7NotY35gk\nfw/Iw46/i4T81uduh6EHyxM0XYcIlKqignb3dx9+MqPsXUEGyi3XTf05asWbYXAWt8lw1MoGy0kN\n8vTuUPZbmZewCbeG/wB9uZ3+/wDm6jTB1DDa/TytcYlyh7K1j/ZB93knx5+LbCvLwCV5Jt5af8fn\nh1ocBa3qFGax17nPmqk8Q5EjKwKsV0gHYjqLcwOtsRBHwmVkLb2VrlfQ8vTpi9NbwI7/ALLH0KbH\n7+nP44aNd2aOLnSRe/Jbfx3t8rYq6qgD8ze6tqXES2w3dyq7JRRhRdCPT7fz8zhD0U1rabevlyxP\nPEPZ7VBCIk67bXPmevniv+dcJZjE2ytba4APnbzt1xQ1GGSNsW3H7q7hxJjvzZ+Fuua72yGmkW8b\nWY2uRsV8rXA35/d6Yzo+G2G8UzObf9YR8Lfy9MNei+twv443IuLm9th8j99sPelzqMbNZfi3X7B+\nbjFfIyRv5ge/JWMckbtCByz/AITUr8qmUFnhDja5UhjzHUtr5noPjtfCV3dKwKTRBfIOt/Q2v8r2\n9PTEjfWe92Di55Agb2367dPL78JtRlNQ1z3QkTrca7fDyv1tzt6YZEy66n+Em1x1zUd1HCuVyAnQ\nCT5AKNvS2G3X9n9MTqikdbDYCS7b89mAvb8AcSTVcPKwuI3hPUxkofsOq2GVW5TXRHVDKWA6SIRf\np/rNbW53903Ph2vcSY3g3vb5qIRskfCR6/K6ar9mtX70NU/wfSw9OW49fljAqOCM5RRoKzegYKOf\n9sr8/wCWHWeJMzpf9ZA5TqyHULL1tpB69Af5reVdqVOTpmIjIBuJfBbfyZQfhcbjcbHHHWvp6fZO\nXJ0fbln9FCGY5Jn9NfVT1FhuSoaT05KSD6+XPDPmzrMIns/fAjY6kZdNvMkAX8hfpi8MHHWWSrd0\nhBb3WVlW/wAQRttfr6Y6PruUTk94sRvaw/VPz97pbfbmCfLljnsxy9U8Xv8A7geVwqYDiirG5d/t\nBP8A3Qbj0uPI8sc/661Q63Pldd/sPzxbqt4K4eqhdqamJPRVWM7WG+gjyH44btV2F5LOCYnkgPTT\nMZF6X2cknb1254SYR+l1vMfuke8Furb37vqqtPxfKGuRYnn4T/l9mPknHbqNyPsOJqr+wHSx+r12\nq99ng1jpp8SyLp5m9wb7WtbDKzjsIzJSSjU8nL9pozyH7y6R/wB4/jhfuj/7j14pJq2b2ZpiHjQM\nNJAsfU9N/wCGE6q4ljZRe21+Vz5eQ9B+eWdmHZTm8IIejmvtug19R6j4YYFfw5WwEiSGaO17a4yL\n252J22v5nmL4YMEoz2k6ZYbbvP7pUkz9LHYf90H8d/zbCll2f0ysofQRfcFRY7ea35c/liJ6+KZC\nR4gfLSbcr8wSDz6ddvPDeklqk6fPQR/HHQJRqT5fQFcBi4eoVrcw4io2iBVYwLdCynkNhYdPW3T1\nxG1ZnUBJsTa/LvT8+nU4gaozytXwm9vgQNrYSKniCoGwQEed7eXoeW/XCw5w1/f7JBDDpkOGvyCm\n9818nk+JKt9oJ3/gd+mMSozQEbynrzRT9lsQevEUx/Zk+0H+WMZuJZLm6uPW/wDL+J+3HfeX7rjx\num/d2cR6qXXr2vtInzU3+4Ww187zUyRhC0bIttv1m+4/eAHPfe3LEd1PE5XrJ8SCF+R3v67c74RK\nniVb2PL1Nx9lh6dcKZK8/mN+F03JCMrc9MvmlLMIdd7Ip520lfhvc/Zf1w15MsIYlomHqLHp5i+M\ng5/Gb7gWx0SZ1Aep/wC8fwB+WF7ZTBjSjnWYyTK02osznQ97HSsfSwFgAWB8IC35C53b+TTle8sA\n47uQAkA2Ygm3utq90i3W1h1w3f05YWYcjcAggliNLbWuLLY32HkSdsZdBVd04cMCCDp9ORIHrYjl\ncfMnH2P7w1xuD55a5L5jbQujYQRwtlfr7JrZ5dJtJDaiQy6BcjUARsw5kEbkXAsL2GEd3dYzcC7E\nElbm9zt6bITytbVuosDh0VkAndnXdr3A+F7tv0uArDn6i1sJE+UTR8vdPJjp0j+yb33BANiBc4q6\nmncbuAuOXctVRzs2GNJsbDLTT9k2K+MMblSLC/hN2uRYlR0FgOZG1iN74RREhazq3oRyc89xc78w\nbczfrhwypJGzKwsLAMACGtswsTsfMW/esemPoy/vCSoVrknkb2uPeB3BFwBcDxXb3TilfSl2jTfh\nZXsVQGj8wt36dZJCXJqV1vpudtwTvvbwEnn6G4tyJJGMWbg5GGpNQ6+9tby2/wCstyXqeXLDno+H\npGa7Hw33YlCbAE2BDW3GxB/2Ta+M6eK7dxBGyop0FzZyvR/CLjvr6QxsRCQLgFsNHD2uHxR2cbW2\nRqe/q6dZibmuGxJcDNxOYaOFzr3KKaqg7oaY1JI23D28/wBYxNgbg6UUDwkEtqvbDXI6qQ7q2om+\npiCRbfqPLb7RyxYGg4WlZFUo2g31Hwg7XvpN+d7E3uS2pgednBHkKxnTL+zchrjbbcG17XFwb2tf\ne3LC4OxrpLlxLRkczl9M+Kan7ZsjyZZztLjf5ee9Vzg4PnbTfV8rna/rYA78tuY+Tqoez0sAefis\nyMWBtt1Fiux8977Hria5IYozbwgrb+1qJIKk6bgWGxDEMR7t7E4R67PlhDaWC9AqsCv7N9PO4NiQ\nvLe3PFk3szSw5vN7c8vmq13amrms1gsd3om7ScGQ06kyCwAJOpWa3kXAYHYqdLAFdVtQIBt05jXU\n9OipGrW0k7gEGwFimi3Pcseulbdb4eb8RawbNffTezDe/ui53WwBt5Xtve0b5rmGu+q3Xly3ty8h\nsOf88MVlXDFcRBo5mymUVDPM5rp3POeY0WLnWdNNdVuw1bEDxG3Ug/cPL44c/ZtVMwqKYbFpoHJs\nOWloz06g2t8+eIuqWv8An4YfPZpViPNFbQCncT60JABCwllFyRzkCcsefsxJzsQic4/DtWsMtbD0\nWyraJoopWNFvgOWuguFYuqGghCDfQNbAe6p2uVFgdgDe67kXvhOk0kixJHQufCT0UadtwGLW3UEd\nRfCZl+ZGeocLpKr4v7Wx8QAuCCSeqsDa9iL4V5JD+xf/AGiW1b72FtKixJA2AYDcWx6zFOHglugy\nXj7oDGQHDPXhqsfu+7szX0JckLYuPCvNlGkKL3BPXY3FgMhzC8S6NRGoli5BuwsR4QF02Db6iLg3\n6C2DIBtrGoWDaiDe9iDqvzIPobGxtYYxxUEEEWPd7qukoLddza9iF8gfIAnDhkBNiMuuXJOhhIvn\ntDwThyiGZnCRuFEgPLxkcgdSndCSNtPTcE3uXplsuaZJUU9WjSp3b94ssZvKjIwUEOfdKsVIvtuP\nhhm5bW/rEZvFYeFbcibnVb3dtxpNrHwi4GLGcJZnFViSGWOHWmiZS26XUCOW+zEsYyHNui2AJ2xp\ncJp2yjZa/Yd+nMW8fostjta+A7RjD4/1DeLbwba8won4tzRabiOkzSikWnjzmkosyrKJET6utazy\nx1xETDu41lmgNQYowYlknlSIRxKka+oL6NHhSbLuzODM5yv/AJfzKszOBY7MsNNG5pEHLQrS9yZC\nLHw8ze+PLh7QuTP/AFnoTS6qYJk+VpHA8ZULIpqGnLEbEGsMzIdgKdoQTqDW9DX0QOd5hJwTm+V5\nrmVDVSUmcSz5fQRVUTVkNJJEnezvAHaRYXmuB4QDIDfxXx532pMop6mEMdYS5kNJFhqeWenJb3Am\nxOqKOqMjNp1O0bJycNoA2/8AIjQnobhe9XyH2DCfVPysB1/ZX09Mc0Q25feMYFTKAbX3/wAseQhh\nBXppFhfUeqxjGG3Kg/IYxJYkXfSPyRb82xykqwNr4SZqwnfp+f8ADDgF006o2fyi19UrLOoHIfLb\nl8PyMdLVaNsVvhqVUz7sBt53Hy25+eMDv2BuRb5j+HphQYmHTEm/7p7hoW52J+Fvwwk1Ii5XW3qA\nfvOGRUZuY/CLW+3874wEzcsTc28tr+fp8MN2XTUOOqcNbRwE7hbH0FsR9mfDVHLfvEQ7WvY/Hpt9\n2Fievdj4W2+zpjpeJ9Gq91P3/b+emO+Xkk+1O4keKhrOuz2nbW0SoAdV7dPLl+ftxEGdcCmK5CqR\n05/Pfmd79eR25WxZOtVg3L8MIdTlZmGq12Pw6bdbdAMQ5qNj9QE/HWvbvuqjtkM0ZGliBz578tvX\n/DCl+k6mCO1ywUWPu7W89t7+vLp1vYqbhhH2dAU/aAFvh99jhBrOz2OYHSSAvTlz5c9umKmqwWM/\nlFlYwYs8EXOXfl5b1W2s4zdXYvEzDbkq+Q6gXxkZVxJSVLLGBZ3NlRQGJsCxte97AEm97Wv0w/OJ\nOzjTcb2FjfblYXOGDk/Dgp6l3kUuwWwJI59RsRyFz8tsUM+DubcsJ8vur6HF2mwNjuusvO8tiS11\nZbgnxAb+7yK2Bt5W2uPPDCreFKKtFpUjc8yGX/K/TCxx9XOtNIENyNkHIg25b+e3Lbb4Yrq/F+YR\nSqkZB6NdTcW9SRf0tiKGStHG3FSvascdQL2T7zfsgjkuaOpqqRiPCI5S6CxB9yRmU3AI5DncbgYj\nLMOCuKKIs1PWR1KJewkHduAOWwVgS3W5A2FuZtYXIeIZVj1VSkXPvIRp5eQJb05dcL/6XpJheOYE\nnmGJBv6AgE+vyw372BkWEddyUKHK7XZ7tT4Zn9lSSu7Q+JctJ+t0UxIIBdFDIdgRpI1dCAdveBGM\nvL/aYlS3eJKp/s6WPK39k/d59MW8q8vhl99FP9s332sN+XptfDKzPsiyPMbmeliZzYA6ALbjkRuP\nz8MOtmidqf2t3pl0MrNc+627wUYZZ7ScTmzPIPduJFVfPkevLfy223xIdB27UkqjUykG/h1RgDc+\ne+9r/wCGGTm3swURBahqJ4LarKWSWIk2tZXUNYWPMjntexxFOcdgWd0tzFFFVptpKMkbEEb317Cx\nuPePLy2DwYbfAQeGn1Ub2ufxNtz6CuFRdplFUDVdCeW/L7Bt92OubPKSoJV1R1bkNItv53+Vvhzx\nSinyOtoBaqp6qkbnd1026e8Lrvy59bcyMZuX5rIr6oql+Y6jmPw5/PphLqiVvNONjidlcglWtruE\nMlqbmWkiYGx2TT0A5qysft9OWGzV9jOSy3EYmiJG1pXc7b7CS4+PpvzxFg47rYLKJdTepufnY28u\neFii7TJzYPDG4PXY2sL9Dz22PnY4BXuH5m93WSV7i39Lr8dfBJfEPYRHb/RqlSTq2lRtuVr6bE8z\nfSDa2/TEXzez/mRJKiGXyEchH3MAR8D94tibJe02K6rIsi3vzu3K17aQdht/jjNo+06g1BRNY9A2\ntfj7yjryv8cdFXGc3C3XW9JNG8aHLvVY6jsbrafd6KSw8lLnc220i3X90/xxGvFPCDU9/A0dr3AU\nqb7c9Si/p5dcbC4+0OI7CZDy2Grp6HY25+mGvxPntLWIVdYpdQNtSr4b2vz5X+/Th/2sJyGXeo4a\n/j8vqtd9NkEcirr1hd7X3HM35mw3v036Yb+a8JpuseoEja9+m5+4HF8qfhnJZEkMtMu1tTR3S+3m\nrXO22w6YbVJ2U5VVM9p5oSR+yVsAN9JV1Ym1um3Xpjojafykc7gJHtTvWv6o4ZkTUS9gP8b8x/HD\nZqqCUX0PttY2U/HmPPGwfOewSSQf6LXK48VkkUi9yLXK7D5gc/jiLsx7CM4gkDfV45gDzilTrv8A\ntBG/8XoPR73TmPJMuqbHf4XVYhQJKTYC5Osk2CkW2JU6jrJ2tqHO2nCRNlU0b3DXXcWX3VHw30nl\ncX3sMc2zySMhpACt7sEC8zsCLD3t/LoN998uHi2EAh1sG2swAvsb7ixDjmTZuQBG9x9XiSneCHHY\nPDTrkvn6NlQ38o2288/4TXYVcJNo3cBriwPPmNwDtbcr1vfqDhUoc7qlO1O7qSAupCLqNypBF9JF\nxYb+WHHHxPDqLCIDa1t2AsALbk7qBcrzvfxEC5wK3jyOmJ7pIVB95bXjUclfUQzqRy0jxK2kAEXX\nBaKP4vb/AA8Nf5UljppSGe7AuGQNyLeASuY45I+9lpBGRbUHAG5tpEXgBdV3Hd3JOkFSdwOEVDBJ\ntFCNW5ck6UHiUnWGWMLtcgFyTba45Rbm/aE05uzM6nkoUKX1LdksjIqRElha4lcC7FCxUozcfOwN\ngVVQoRVsoUBRfSt2AubsVuQSeoxGdj0AOzdu4XsATkp8fZuptc3Bv+XaJDeHfdTg3DxYqfrFOVIv\naMhWVTtYc1jP7F07w7kK4U3VXpcmp4yQEplFgBGZVuVA3LNp5+74wQTtrLNZjWWTjmouQpc3N9Ph\nAJ6mwsBsOlttsJNTxpWNYB2W17gBSRe39na/W1r/AGYQO1VIw5xOJ3ZD+E9/0pWyDZMrWtPA8Mxf\nLPhcq1tVmQgXZ1VV298XBudhbxG6nnq5cgRbDAzbiiOx/WqWt7oPvX8IYtYXK3uGA3tsb2Ir7PxR\nWNzlci1rWXl1BGkjn574Tmq522MjEHncXviure2e2NmNjrcDYW0/ZT6LsMIyDJI0nlyUmV3ENzfv\n7W5Acul7gG1j5bbkna5Bbs+elti2sdDcg+W1jZT0O25BPW2Gcobe55254DFt/j+GM1LikryTnY+X\nyWrp8KhYAMrjfZZ8te+5JJ8Wq1+dxbfpcc7gC+EyWYtzx8kxjMx3+WKWondY3JOStoGC2gyWPJy+\nOFbhrMTTVkTiyg60N9xaSNo/uJDD1AwiyMd8fAvkN+nM9PIYzb5SJGPbcbBzViYw5pad4I9FPHZ6\n5kqqhma3dgG53JJubWHMW5Hy6A7CQ56izE3C2B57bJ4QOf7QAIvsSeR5lt9nuUo+XGuW7TS60mQ2\nAJhNiyadLBiDc7bk7+rjqyoFwBci1yPFe1je41FdQ94WCtdB0OPZcIBFMxxOT8147jZY6sewC2xZ\nvcQBfLvzWAzXJGkWB31Bguom1x4w29/CCBfbptjGeBQTckEEbWsp28a3v0uOd7kDcY65KvcnTbp+\nscNZxvfSLeWmwHI2tY2xz7pmN5DdtWq5IVPGw1bKF1X8hZegAxPL7+ijNYRrpn10Vm0E5QHa9rnZ\nt1W9yRt4rEXudADatze+HZlebVEEglDD9WVCgOUjdSrrfpc6fK3TVtcYaVGqggFXJO4sNv8AuDdh\nztqIuOW1sOqjcak2VCFUoWtZrE+4xG+1+WxOxLAAYsqGQtIAJbY3uD1dVdewOBuzaBBuCNxVlp+J\n4uM8pzqqqsvpaPPcgyuHMYs5QKDXUdHKlPVUM9HpSAs0dR9ZgqIiskE8RPjWZhh1+zX2oLw/n9Bm\n9HXzUtZTzKWlpaEP3sRK6qaUxSJKYJQpWSNCQV0nS2m2I57MOJcuM+bZdNR/XKaqyXMBWIG0MlOK\nSStCK6MrGZ1gYK6sohkKNe22I04okzPg/NjSI7d40cNTQVsaoY6qiqgJKWrpmK6DrS6SsUZ4amOe\nnsjRMcWlVK2wc+z4pAWSEDIO/hUcNM91mMBjli+ONt7HYsLZnPwyABFsl7QOBO03LeJMqgzbLJGM\nE2zwzDu6inkGktFJE4ViV1CzKulxc7Wtj7XZp4juRztfruOVxcgfDrjx4cF9rnFKVUNYeJqujdWG\nmV6muqHTba0UEgMvIDQS+oEgjTqxs74M+kqXh3KFoM+kj4uzKGMR002W04y50AVtIzConzCop5XL\nDTIIIVlUkgLsVXzTFexu0S+mfkc9g625XW8w/tM9rRHM25GReLkDv04dWW7iozI879QefkLfm+Op\na1eZO349MafeFfpSqKpnX9K8J1VJQuf+kUtak8sUfdklzE6gyOWB0Ios3IN0xs54D4zy/iPLaPOs\nlq0rsrr1101TDbTZbrLFMp1NFUQyHu5oWIaJwFYaixxlK7BKmkbtyx/Ad+vWq0NDjNPUuLGSfGNR\nby1UkyZgjIVtblvf+FsJ89SLAnZehvflYemMOqQqT8Nv4/H+H24Q3rwnhPMc/nviqKtAVxq0Dm63\nA8zvb/d2v5c9sYBQp+1f5W/icd81SJGuuwsdvkcdMcbOhIO4P+WGGjNdWOsxJ8v8sOimqiyBWIIH\nMefl8N/jhoyoy8jv+flywrRVSp4D7x5Hfpv8NxhTxZC6cy0De3XkP8MdEMiKoHd39eXPfy9bY4VF\nWDcNyJFzYH+GHBGsLIoRhe3Ow3/EbcvlhIcUJuiQEi4Fvl5Y5uFIsFB+FhbGLX07RnYhQLXvyF/i\nD8OfXHXFUd2pJZG5X+V/TBdCa3EmXhgbXuRbSOm3+XTEW5xkC92Stgwt4gLE7gc7+H7/ACxJmeZ0\nGLaLBttxuPdA5G48sIQqRKpDpz68uW/IWwzIBwG9Ka+xCrFn3DpkaxN7M3M6uvUfL7sR03BQWTW6\nh9yS3d2G5uOp5Cw+XTli3c2TRM7alUarafle/wCIwj5twtGI7Cwvz3PX5i3y/wA6+SlYSbkDl4d6\ns46ogCx+Sq1mtQkK6UF7A2uNt9uW/wCPlhhLmOhiWstybjT0+0W+7Fjs44LjNyVDkWsNTjqPIjlz\n+Vr9MRDnfC5Je6AAXt4m/n0xT1OGh24X168uCtKfEj/cUiRZ/sCsrKOlnPTY7HUAMKdNnsyb94Tb\npy9PXDHn4ekQkIbW5C5PPc87+Zx9eV4gdY3HXy+XLn6fdihnwog3GXcrmLEwR8Rvw65+ak5OMpUt\ne+n9og6rf+Hb/PphUg49p25kKf3m29Pd28vPyPXEP0OaIQTIdt7jlf7LcvTDM4n4rhiUge4DYW2P\nruLMd79duWIQhljOV/mpwngeNwKtM+dUFSpVhBIG2s2lxzvZR7o5efw3wyc47M8jrgWWnSB2udcJ\nVSS3U6dN7W2DXtfa1ziteV5w0xAjkeO97aDbkCfdB0H5g+fMCzyizfN6cB0fvUtezaQ1h5WXmQfP\nph81zm/nb42UV9E12bXeC4cSdglULPl1fqUHwxzR6iotv4lP71yL32ItiKK/g3iDLWINFNMii5en\nPfC24Pu+La99gdue24mmDtXkpz/plNNGBsWVNQJ587/b5csSBlXavlsoCtNED0WTQp+wg369eeH2\nV0TrB2R3KM6jkF7Gyo1Jnc6yHWjgrcES/qrHqDrOocv3d/S2MKDNmac6jYL0DeYB5j489742B1NJ\nkGbArPSQtrBu+hTq1DmCtiPT44iPO+wDJ5WZ8unkpnY3sjEqLADwxzFl35+HqTffEwRQyAfELqPt\nTM1uRuKrg1QkjBVcpe+wJB2F+Z2HLyPyxzkLoBpmk356nLcrWtvtz6c/kMOjO+xbOaMmSkkiro7e\nHYwvubWA0sCbHe55X5HESZ9NX0IIrKKqpyuq7d2zR+G2o61DAAbc2HPDUlD8Jy4fNOCsOmXl9kt1\nOe10N1So8G3h38gTc6vM35Y7sq4wzKJGkYK6ncK5KsfuPLn8B64hWXi9ZhJofVawDbEcrEbDobg+\nRGFan4o1QSBJNZIHiKobbgnptceXQ4i+6vGhIR7Vp1b8lL47WqmOxeDc32il328wQvmLW9cdg7c1\nj/1qTxnqDdreWy35jfa9wcQfltYj6tR8RIsfXe9vLmOgw7KHhBasNMJ9LtyB3vbw9b/u22DeXphw\nCVozdl3Zrm1HvNuVlTWfjKiF1klUhORW97+ViGNjsDdjsT1wjVHEmWyA2lKldgQrFQOQHuXUEAXI\nF+VgbHEbZnl+X2QwSlb87JJLY6NVr94F1E/q1UlSW/dw2u5Q3AkKi/VG8XkSFZgLb7E7G49T7jUd\nppmn8kUncc8utywsHZanGbXSt5HL9lJ1VxJEhIptVhYn3gWNttGoAjSx2Y2NrgcxhHOaNKQAEGne\nNH1Ebbtckbs27eJiLjwhCQCzVpzyjm1N1Glht/tHb7D8dwcOvhLgjiHPJe5yXK8xzNwdLGjpJpkj\nOxJllRTFCFBBZ5XRFBBZgMMQ4nUVLw1kM8jybNZE0vJPJrQSp8lFT07C97442NF3SSua0AcXOcQ0\neJCyXCzEsW0OQFYBWAsb3tcbgW/JAxgPljkkIwIA28SjYbdSPs9487YspkvsZcfVKa5osroW/wDV\n1uZxGU3Fx/0RatNuo17E2Iw4YfYp45W3+kcP+e+YTHf1/wBD+7G+pOw+NzMDvwWvc05gmB4JG7UA\nrF1H9Q8AhcWnG8NaWmxHvUJzGujjfzVQ1oGIuGOw8iP4bbb+VsfWy2S2q5sOZvsNr7jnvbbFu5/Y\n347hjZ0fI52W5EUeZESMf7PfUscd+q6nAvz9YT4x7MuLeHg0mb8PZhBTqCWrY4/rVCAFJJFfSiem\nBC3dkM4YDmqgbQMT7JV1G0vqsOroWAZukgeGADi6xA8SrLCu2OG1rtikxOhqZNBHFUwueb8G7W0f\nAFReaFhsQSfO18fUp7b9Be5+R5/d8Bzx0rnuo8nuTsBck+g2O/T154zmqDoP6iouOd4WAC7aWuRa\n7MQtja1xzJAOUbWU/wCkkcbXWkdHJvHqFgSRb46TYYyWdybLBM+wvaN9v/Cdudz0+e2NJR1TXIpa\ni3/8iW3Lz0Wsel/jhqSojOjvqnY4zvt5j6rAk2ucYRe98KyZPWuwRaSqLnkn1ebUbX1baOgsxsOX\nO1jhZqOz/NYoe/ema1ixjUhp1VQCxaHZvCGFwLkXFxuMVUs19PkpjXRjIuaCbWzGfX8Jlahj7fBJ\nAVYqdmHNWBDDlsQdwd+XTe+PoGlQzDnew23IselzbcdN+W3MUL5hdwOQ7uCm2yFs+uSsJ2J5q8SV\n8JsYm7hlW4BUsXWRgNjYqANVreGxO4BfPEKASNbVpOm2lhp2VQbb7eIHnitnCHEbUdUWc2SZe5c3\ntp1X0tex2RrG21x1G5xJ2Z57LLdUCkEJut2BOgciD05bC7HxWGPUezXaGN1GISfjY7Ib7H9s15tj\nuCP99M4tsSNA8QAO7dmlFalVYHWBa4PXTseeoahuRbwKCdt+WM2lqQxc6w/hI1bqTzsN9R6G1kW9\n7eWGnBUE2Ggcxf8AYA8iWFtW++/PcYWaaYASMwFxYGx03sTYnc3tudxvay33tdwVJvc5DioFRSgN\nI35cOIS/HUktZbbBRudPQfvN5+u/Pa9grZFm1EtZDHMw7tpV71l5qo8IXwqu/nzt+0BiMqurMhJv\np90WFhYABRyA8rE2B6ncnHDLKO7GQDYEWO/MHmACDvsNQI3I26Y63FXteNgNdbcevomX4Swxu23F\ntxlY9aK2WU5jR0s9StJZxWLMkjs29plmh1tpIUWWVjzItquFBGpz9qbSZhw1DOqNLJk1bI8bxqx0\nZRPS04riLarRxZkYHYAbrPPI3u3FdclqSgXe7Eg6m3up2A3OwA8JAIJG5PlYHhHjH6i0ImtPTkvH\nVQSjVBPS1amKrh0kkKslOxTfvBr0uVJRAu2pKoTwOYQ1tx5HxXn8sBpamOXadIBk+5JLm6H0VX86\nzt6OOlpo2RqqoiMsqeE9yky2jjLX0tIYwXYLZkZluAQRh2cLU2bTwxtTkU9JG3cGqcFTUSKSH7kM\nO+lAPSNdC8pCrXs08w4KmqONmyhO9qIVqpJy8YLP3GnbcKxALiODXYqpJfSFuBsa4Y9n6hNPDWcR\nZr+iqOGFAKChQJIsekCOgpLlK2aUhTaYSQwM665oUTxnzCTtC2llf7Z5vG4s2W6kBel1VBGYYxCx\nu1KwSkmxA2uOXpxVeOGVrYSNNVXSC1tGmyPfxAEOzErpIJFr23tpxs59iTt4fhrMhk1ZTFMrzqpj\n+uRdy0YSq7sQx5rTRBBHFUIBGmYQi0dZQRiWJVqqRVqoCyzg3gavmOU5NlecqIZGRMwl4krElZXQ\nGOZkEklLcO2p6YwPGbhDNcHCJnPBvGfA6T11K1Fxdw+sdRUzZfXr9RzOBadJHkFHWUQIepcwBKXT\nSgTVLpA0bkva2/6/w6phdTzRvbtAta8ja2Tpfvusf/0pVsnbPFNHtscDs32doX0uMs+J9F6UanL5\nUmemqFMckbaXjJUlT191mWxXTp35WseeEzMeFRbUguxt5eXmbeXniAfZF7bch484OyXNcjrXnSlo\nqPLK6nqWVswocwoaaGGemzCOO/d1GyvfcTqwmjLI/htnU1RVQthsPP5jp+eV8eaTNa1x2Tdlzsu4\ni+RXqMJdstDxZ9htDgd4Ue0mWPqtoN978tgRY9fX8nCrLljIhAU6QL7ffte/5FsZX6SZGLNYg87C\n38+uO2TNGdb6bABr3Oxvblt0/jiLsngnVHdW6b7+Y5Nz+z0OEvMm0gulyeltvj71gLC/MgnkLnCt\nUzxyswBQG5/a/hb+OFOqytZY7AC4FrW53I+zz9bY4WnguqEajNXLkAm9yN99/l+ThUy/O5Y1ZSPh\n4mF778hcDnh6T8JKiFlUE7k+Hc+oFzy64R4KSNDaRQCOZ5g738h02PluOmE+fkUloyTNzXiqVLpK\nxNraWCtc7gdBt87HCamdNUeFWb5+vK32b/LGdnWXGpcrEluXjYWAsbtf/dB5nnjAjyo0g1Eqyi3u\n9PPff8PxwlzhZdXTNlchN78/5fPGfTI0SbN4T1sfwtfb4Y7Jc8UDZfALeK/oL3FtrG42vy+xoZlm\n7kBA+kDyO53+VvvxHeL2S2NBOa4ZtmndsW1g2v57Wt+OGXVcYySsYhvp9GtyB5kAdehxnVkLSqQd\nyb2I5nzv59Ptw3jkJRdWkkkm51aepttpNrfH12vbCCw62UsEaBd0WeGZ9D2Z7jmDYdTf5X+7GRmu\nThgSoBBW407dOt/uwiUGWyrJ3uk7nlY+Xn8/LC1UyuWKXIuB1tbn06/aLYSWEg2HyRtBRdnOTgbH\nncbXHTdftJ+XliHM4oWJ06d2tbkevPby5gcvjiyeYZMXViSTa25/a2+O1th8umGPXZcigkIGYWI2\n9R/DEV8d9dydY+3ioW/QDhCo1IpA8TW1Em9yR5Ha21xiNuK+EdSHSrNYi/K3Ifj9x+GLDZnUOQ+3\nitawFrWuPLDBlkYqyyAkk772tvt0PS3XDD6ZpHNSI6kjuVTKB62jrGCagt9wRz+YFvv3xLsnGckS\noHSxtz87AeXLn1/yljJeBY62VmsFjQXklZAyk2NrC41bkddhva2I5434SEdQ0IuQtysixkJY29dr\n9Rc2xTz4cd49Rv69VZ01eb5ajd1ZYVLnQriAyJ4jYXBuSNrE/Lr9uOOd8DFo0lRbaubR+ADz52b0\n2BvhBRVpSqr4mjZTpTc2br6fZz2uLYk/OeN4o6IIoB8IJAIax1Dw30/f9oxVuw4G9uuvsrNuI7nC\n/coiXLK6kcLS1UgPMLqNjbls1gbXPXr5HHyq7RM7oLrLaYLtYqAdwDvZrdemOGWcTsZGaVQ2pjov\nsUFzyNvK3ly9MZ1bXUsrC7KWZdR1W2tta/XbrYWG3TeG+jkYTsHwT7ahrhc5ckoZd29RrYVUTwi+\n+gFxb4gedgfCevLnh5Sdp+UZipjaSJlYAFGGlmvzBVtPL/ZI3xBmc8PUptIllj2GoAb3NvCeu532\n5Xwxc04MkCmSK+lgSrBdz8bHawII+OFxVszPzZ8uuskmWlY8ZKw9T2b8LZru9HCJGN2aErHIbeEX\neMBuQHvBrCw8sRpnPsywAlsrrmQEf6ue0iIQelu7bcbbA2J32xB6VGaUDN3NVOltgC0hG48mYgbn\nDooe2TOqcjvT9YHXWSrcvOxA3seW9rYsYcVOjhlzy+agSYfa1h6rCzvsl4iy0FlpEnjBJ7yBlIsn\nUozBhcHYANex5WF0mk42rKA9xUR9yYxYiZWi97x7F7A+8DscTblPtEwaQlVFIhNgxZtUY53O68t+\nmF6q414ZzhNE60M992WXu97eHcOhPLbpsMS/eY3Zg2vuG7cmHU5ZmB65LSuuQMerD+0R4b+n5+GF\nSLhobF2Bv1YkKALXYkb7bWHXqDh0I0hBABuXJBHlp2O3qDvysVxl5blc9VKkKkXkljjQGy6nkJRL\nkkD3tC36X3tj3GLCKe4DWZuLQL8Sbb9/1WOmxeQAuLmgAXJB3DW/grDezX7M0PELnOM31/oOB3hS\nnjkkhnzKqRheNZY9LRUcSW+syxyLMXaOKGxMksO0zK8rpqGnjo6Gmgo6SIAR0tLEkMEYUWGmOMBS\nQP221OeZYm5Kdwpw1Bk2WZflNMuiHLqWKlVfDfWoLVDtpAUyTVLzTSsPflkd+uN0PsQ/Qr9qfbXw\n0OMaWryfhHhmqaVMlrs+FTLU553JKSVNFQUatLFlwmDQJWVTxd/JHI1PDLCFmb7i7N4RgfY/CYam\nvlpqWSQR+2qphd7ppBtexi2WukIbnZsbTk1z3AAEj8/O2XaPHe2eLzUmHx1NTTwulFNRwm0bYY3b\nPt5rubGHSZXfI7LaEbTpfT7gxav2vvY0457EeLG4R43oIY6qeH65lGY5fN9byzPcuMncrWZdLpSb\nwy/qZ6Wohhq6eayPEUeGSXZ72O/0ebto4q4PpuJqzMuGeF6/MaRa3LuGc5lrJMxaCVddMMyqKGGo\npctmqI9Eopx9blgSREqlhnWWCPZYn/UbA6Okpa2pxOljpK3/APlm29ts/ExiMOcWt0e7ZtGcnlpN\nl59hn9O8brKqpoqbDaqSqo7+9Q7Gw6C2QDy8taC79AveQZsDgtC+A8mU7q4KspAKup5qym6spHNW\nBB8sTnnns08dZdx+3ZdVcN1q8ejOI8hTh1Hp5KifMprGBIKhZTRy088TLUx1q1H1Q0p+stMsQZl3\nCcb/ANHV7bco4Rk4gpcy4VzrPKahauquEMvqqpK893D30tFQZlUxRZfW1ygNHHGxpYJ5V0R1BDIW\nMc7f4FQ+6srsRo4hXta6mD3h7Z432DZAWhzRC64tK8tiP92RRgnYLG633p9Dh1XKaBxFSY2Fr4JG\nXuz4i1xmbY/9pm1KP7V5Te2T2bMsnjqc64foKekzBA9RXUUKFaetjVSZZqWFfDT1agCSSGARQ1Cr\nJIgSoLLUU9g4RDaGdFRnQao5Cbu0dtRHi6d2Se7QAMByW5G4aeCamneKVJKepppmjlilVo5oKiBy\njxyRuA0csUiFXRgCjqQRcYob2j5BBlGc5hTQRmCF5RWUaIsl1StiVo41enKQJTrI8qxxypqRYwsk\nmgMR80f16/p5SURhxWhiZHFUPLJ44mtEftCNtkjQBsgPG1e1hcXGq+lf6Gf1Fra722F188k0tOwP\ngklcXSmMfA6J5cdpxjNrE52NiclClJw+o0oAq3O7G66tQ0qFWRDNINjJ+rRltpAuDbC9TcOJe7ga\nSIyWlUQRIL7E+IzrqF3KmI+CzR2BESrMBMZtG50frJCwIZgjAxsNVNKgW6gExPA9wTquA2PsJSIk\nBTq5uUDoyg2JtIqUMhaMaFupZRpGln0sW+bRGLbvLrcvozaN9XeZt1uSV+jo0RWC3BBXvZmZEOsM\nulu8/WNIS6m8Ueh2kQFh3YK/GycoGYIBq8QaUBI3u4S6IxLghQ+xWNXIVtTFQVXKaoCnUULRodql\nl0EEjT3kYWallIOqyG8wMzqxNksnI0sdnkHic6QTFJFCHBurqwlSmmdSLKqGaeQpDZD4WLOWbwHk\nEEm/hu7+tyZ82QUc41TQUr31lTVQiZZLbAlJI5GUqpNyzHVK0Ue5LHDTrezjKH8E+UUzyHcCFJaO\n6qS7/wDRZIACF1HWAyadKkWBxM0cMcccjWBvEdTrqp40CloBpJaGs1LF3jm1WQxZrKEeIYwY6cMm\n0bCOVi8ltZaxAA1wiJKiVFewYvBOonmkd9ZtaO+jjdqxp7wCpEdZKz8r3jdk49dygKo7KsjILJll\nSFA5w1lQrXYDSqifvllPvEFWVSASWsMM3O+Fhl0X+h/X3a4CfWBA8YQguQpRVJ3KqLvJq0sRZQVx\nbX6soAAIJVgFdEXvJCt+7RmRwYl1HSriKiMZ1MyFNWjAm4djbSxpwWVbubLbS5CkJYMpJ2a6mod0\nUksZGUBiOhbG7ajGwRvAy8tFKbishFpD7Qbg7O3cbXz09FSmk4l2CypER5rcH01Dna/Tl6WvdUmz\nuLuzYo2oGwTSmg23vsCSb7E3IsbEXxYfP+yShqQ5mieO+lUmHdxm50trIvIYywJZu9IdiUQoC8Ye\nOJ+wO7EJWzxBNIKyxhiCSTKgAWNgkfhtMyfV5NaqspbbFpFiEzRZzbjeb7/JPNFK+zidi27UdeSh\nxczUsQW+Wx59Lgb8/l8b4c9LmyMBpFlF9vQi3O97Dna9tsPhewVlJWSoqZDfxCLuARY6dk0ysQq+\n+62jJ8KsW2xItB7PeXU8En1uozDv9N440litZiqiTvFpzHclpIkWQXmbSEUFlV+09ZLtF2z58PJc\nq3UjhlJyyBP0uo5yusVzH5X3ckACw6j0sLW+d74cFRn4EYVj4rBmK3AKctuuoixA5YUuL+yWkyqm\nZstrK+tzRY4pPqEqQshhYMWaSQLTyKzizQQKJXaMa3Oho9VaswzyVteu0ciBkMZGllkB3LKeWk2U\n35E257YuGdojG118jbO2nXgqZnZxtQ8OaQWX4WI8NfHRWZ7JeMkm4rqs3kVpl/U0sNBS+OuzKql1\nmCkogQ7a2dhuQVjQtIEMkcZW8HG+V5tliUuacR8J8U8NUFavcpmVbFTVlCkhbSpqQskT062k0yKp\nK7uVDM0qLDH0XXC5zzjqlqa2WQ0uRU865esaliK7Mi5dkCRtJ3scTVJv75E4VWYqLbqPpQ+2mlyL\nskzPJ6nRNLnXeZRloaJVmR5g1POQH3YwxyPMryFXDxsWNg1vNMSqPbGSYm5cSQOZK3sXZweyuPhE\nbWsA4htgOgtI/C2f5hBmdVUMHt9el0yQreOXTK2lxMyLsY1RLI1oxZwuq742k9kPFGX51TxQVFXA\nKmUM2irdYgzi5eInaNe8cx63lD6VlDalXuymoTsagranLkR5pWlni1R08cYle36yRQFjAYuBo12u\nFYlRdGBxcLK8nkod6hJaBl/Vu0sTUyssjpFEx1KJFcGXXpIZjfSFXdMVIdYbr8eFlnZYRGSLEG9t\nLjLXzWwL2POy+XhLtT4gpssppqLK+IaDveJsoaawoM8o9VblGcUtOFYfVswp5sypamVHRfrUdONE\nvfh02yZoFjddW6kL+0dxpFhfa4t5WHltjSR7EfbnXV3F+TZBmcvd57kNc2WUIl7wPmOQVTLS5nw/\nN3wHfKsNsyyVGbTFUpLSQyHv0ik3EVuTVFYGPe8mKkW02KnTyJP7tzYkX3HPFrSTl7SD+nfxvnpu\n9U+y5sSbnTyyHpYeC68wzKmUc7AWuefUefrjkc0SWMIo2CsAbc7gdefT78MfOcplVdOrS6+E3GoA\n/wC7e/kCL/G2E3h6iKO3eys221hYLzvYc99vhbfCZxITZpz3D6pYvw9UpxUyRuzlb3J8/wCeH1Ex\nOwNx1NgPM9PhbETZnSkuCreG552va5ubc9N77gW88P7JKwOgSNl1jazXW1xbk1r7b7X+7CWmZgzs\nUA6pyyGKRdHunzud/hv6dPMc9sNLMMnZbke4TcCw6jffmd7/AMsd8mbtSSSRtpma4uQCLW1bbgBr\n35i/L1GOLZoKyMqdUQX3+gbe+3nsel/LzxwSynO4HJdUZ1Eb9+QVUX5orMSfO1z0975Yd1FwiaiE\n3jJiUXJcsGu1/wB09NO3zw0M2qjBU+BQD0Y7ryN+XPblz3tzwpx8X1XdGNS1mXQTyRS2yggkEX3t\n8MFng5ef2Q3PrnZIGbcPhZkhDJpJIAJsR57+8N79cMjO+C51J0x6x56mH4EYsxwj2e9+q1dXOytp\nuoVVZTuRupuRy+fTY4W5eGaMqXncrHEdA7sgXHTUCLCxII08zthLnP3j9k8Bbfr+yqDScOSxoGbd\nhfwfDny8v88dtW6RoNYDD4Dz3G1jty+WJD46zOgpZJIYWuQpKm9j8TcDn6eW9rjEERV89XO4ju4K\nkAtupOwsDe3x9b77YT8Ry0Sm8U7cuip3WQa1uo2vsBuOotfby689sRvxHOgkIp9TS6jfysCOXmPl\ntt64W3eWzixjKbMqFbX8r3senK+GM9SxldnUBgRy5tz947jbp8cOiNzRxTe1fLTms1qpxEwZjfa+\nw52+HTlhKoh9YF1sr2NgRfpvsbj3b8+W1sZ8cyVT91IwVudvkPl/nj5nFHLTx6aRDLKVvpUr1Nr3\nJA23PPodjywyYyf4TrX233Ue59ShSRoLMSRdb3G4vt7vXqPh6szMeHJZBri98gXXysLDVzsTYHb8\ncOL9BVfeh38UjsWcMdOg3Hhve3n1A22A3w66adKbSs6AN53uDvf5WBHP5bWOG3sI6snBIE1eHYKi\nghIaO6EllF+RsL78z8CSPS2GDxOZKp5WT9u9w1tK25DYeG9zbT5fDE8VWYxVCo4TQoBv5ctgDyO9\nuR8umInz3OaeJ2iQW3vcA+Jj73Q2ttzte+xNjhp43+ilQOAub6qEk4Uk/WPsrWt6gbHp6m4N72t5\nWwZfwge5d5LAFzpU3a23mb/jiYi5lQFY9RsL3I0+Qtv8L+uIwrc+mWd4g2ygr7rWvpItfYcvW2Ij\nohuCke0zGajzMcjiWSyLuXs+7fDz2/a5Wwys14YqqipSOjXU+6lQTYD+02+jmCPMYmWoyzvishYK\ndFwtxsR73T/Z6n06440NSuWzNLP4w8XhRN3PID3Li9hy6X5Xwy6mub26808ai2WqhXPaCupQEqIJ\nYgvJGTwC5tdZBdTbmd+Q8yMdNJxdBFGInOteTN+yLdFPP8jFr8r46y2qcxSVCMF1XSZQGPhNrqyH\nqAfdPntzCa+QcO1k0k01LRSsFY3OksC2w0hB13vcDlhp+GNcLDU8kuGvc056Z71VOrzOhrJBDCq+\nbuw8K3APPcnnbf1A6Y6K3gUMgZAu/MFg1/la+3PbywqcYcJUlJXGSijVQj+DTbRYqCb3texvptya\n9+mGxmXFVXTHu5dKA2uQCT4SNNtIPMc/LFNVYdskA8/SytIa4G9x16phZzwS6kkJe1z4enLnb7vh\n0xGGaZLJGxKeBr+fi5Dn9n2YshRcYU9VG4kkUBAQW0k3NjcAEX2t5dcMgcQZZUvLDJNGSN91AuB8\nfLl57csQjTPafh0Un2rH6m3XXgqHZnW1sDoqUyhpEDxjU8qsp2KqGC6yhCmwF1/VvzZcOzshy+sr\neMOFYq6Q91LxHkiyU5JJMTZlTd6ndiwW0d9Y0lgouQQMYlXmrW0GJO8H+rYMAy6gQGFwWAN3GkoP\nCFAsY4tE/dg3DoyvOuGq6tLfpLMs6yWOmSZirU9JPmUCNMYzpLSVMZ2GiQJGtw0RcFvcuz0ss2I0\nIkkcWGrp9rcNn2rbg25ZLy3HZxFQVro4m7TaWct3na9m61ib2zt3Lay7Frkndrknrdtyfvx+jP8A\nQ8dteUcb+z32fz5UIopOHcsThHN6OIr/AKFm+QpHTzxuigaDUwPS5jEGUM9PWwy7iQMfzlx9mPSP\n/Rw/asHDvaDnnZVmNQUy/j2mkzfI0YqIl4myOjeSriUk3EuYZFBIwAFn/RManxaMfb//ACT7IuxL\ns46ohBMuFSCsDR+qANMdRkMjsRu9rfcIznnn8Lf8b+1zcO7RMgmIEWKRmjc52rZi4Pgz3bcg9meJ\neOC3H/Tu+zjHxF2bZL2m0lAtbnPY3n1JxZJCIld63hcVlDLxJQSNYn6sI6KjzCUMrKq0LsQqGRsb\nh+yLtJyvjHhbh/irJJ46jKeIcny/N8vlidXRqaupo541DL4SYw/duBazqykAggOLi7hahz3KczyT\nNKeOry3OMvrMrzGllGqOpoq+nkpauCReqTQSyRsOqsRjTR9D1xTVcGy9pns255UPJm3Y1xPVPw/3\n7l5argPieZs6yOeNpLSyxwfX7FiCsMdXTQhlTu0X4XZM7EOz5h2nOmwKd00bbkj8Or3tbMQL5ewr\nRETYaVRJyavuN8TcP7QCbZa2HHIGwvfYA/iFCxzoQTb/AOej9oNdaZthckqJ/pEOzHK+zf2muwP2\niZ6VBkdXmzdn3GcvdgQUlbmuU53lHDmfVEhBRJIlzqWnllk03iy2ijV1K3HoOV1YAqQVYAqQbgg7\nggjYgjcW2I9MVC9vX2ZqXtf7JeM+A5lUVWa5WajJqgllejz/ACuWPM8lqo3SzoY8xpKdZdJHeU7z\nQveORwfKN2Pf0hvtY4G4YTgzibhHJOKOIOHYXyKLPsxrKzL69Zcs1UIXO6SmhkirqyleHu6meKSj\nkq3iZpgJneU67BuyGI9rsMo/w/YqK/BW/h80EkzInHD5JHz0UzDIWtIikkqIJBfaDWxEB1zbJYv2\ntw7sjidYa/bgoMacMQhnjifKBXxxtgq4XtjDnNMkcdPNGbbJc6QG1s6W/TUdhuXcBe0TxpRZQYVy\n7iGLLOMYaOFFQZfPn1OxzKlZUOkd5mlLW18fhS0FbEuk6db+fH2h5KePOKEu5jdsnglNpzThnSvz\nGBLza1RTpjhDBg11VNBLhYpNjHb3268TdpfF+d8ccX1wzHiDP6lKitnSNYKeJIYY6Wjo6OnTwU9F\nQ0kENLSwi5EUQaV5JnllfVf7WE5HEGURq5B/QMEhW0QuP0rnWwLK730qd1UaQ9ywtcfWH9T8Mnou\nxFHS10jZquljw+CWVuYdLGwMcWkgFwFrbRALvzEAlfKn9L8Qhre2tZVUUboaWofiFRFEci2J79to\nIBIB+IHZBIbfZGQUYz8UADwxIYxYFJv1oaIEs4NXKsaK/dWBNmfU5C++EfDr841PqeMozDV3kzER\nkMqgOk9UIUUbNaNYnCWWNAShTDJqaxYO60IFk1giMEtq0lCwbvmmqUIkaIIERUlSJg/6u6th5VN3\ns4DOEjFyyF1UAG2m0jGrqipXxXCIzNqspNy3xUZ7ZfsvswRdddBSzR1RCa42cLZ2KB+/Ia4fRDVz\nJAkaoTGB3YcE3P6sOQFUSmB316GkZu7kaSpWop2ksFZzJKyxU7CRybtI4Rg3hswYt5p1pSpmk7up\nkCBUdTIwAjMrhJan6zVKSU0sRAhZfCxKXwnzVRfuSWRqxyoCMLhjbu9ETyipqNayyE2FJSshBtI3\n/VPCRNZdft14p6RVKSCSSULGrMC9Q6JNSugUCyVMq09Ol4ozqaJ3VWARPFdz3SFkdkqF8RVpVWWQ\nMrEaZZUilqkDBw5jUiBdRY2BLDDWeq7p1WSNVlAjVliILAcl0LLLU1OrRCGOpIHcO0j6lKk49NmZ\nQtUaGkjClWZGLAsE7+yyiYsEjZ4QiSV0QYeLQ7Mqt3aKLcuuurp3oY0dtIKsFkjjEjSBtgYYnETF\npalIZWldDKsUbglVI0hyqw5muiysHijHisQISpDalaNS0cc3cpqIlmkmGlj3Ss1lYn1y8e5EauFi\nVoyFP6tDEqy7RRShpJHEjBa+dmVRq1gmTsbMwirCjyIvdNK0jJAH7nX3hMYlikdQ0UVzpo6eyPvI\nsfiZQeudb+vkpEmzRQAxVfAzKpZ9Tl2CMY0qSXlm0O8ayU8UckZUJDYgMwwoJkKSDwBkU+FFije+\nrStoIv8AobsQ7iqASVgid/C+lbR+udq7OZA2zBncFCIpA7tu0TgXklmSJkqq3TpAUoW8CLWXsHmM\nSWIOuNCFVh3SDulITuyFAVjOZIqFnRhqhnmZYY5Ftkzz0QRluPQUh5XojUVDQMPGXihnCiGMOVUT\nN9YHcSyP+sBru7RWYt3YChSyFxTxVDldD9daMPOxZKOMyPplYP3USeOIiWHV3lQ1SqwqyRyRGCYO\n+rBXOlEndRsFjWIywhioWOJdECAErOXLvKJ++1y6NbL9YgdEVKycY8UtmtcZrt9Vg1Q0dwEEgW5l\nnZNb+Odgzai0gIUgs73bCaiqDQG6X045fNLghBJNhZo5dbvmpDyLOHeV55Ze9qJ5WlmdpLs0jMGa\nRrjwgblF5xoESyrGA3T2i9mlPxBA1ZlypFnENy6RqoTMURSO7cqUBqggXuZwo71QY3UXVkieDMDG\n19RBJGw6kGxt0AuNwLC2xuu2JQ4T4pYMNTHWPKw5Ncchytbblbbliv2myDYPPfbuUqCodE8PabBu\no3EHW436pa9j32pJ+yurrZjlTVj1cqSjRJFBV07xp3SiVaiPQFLqrW7xJdf/AFZVjhb9qv2kM67Y\nKs5hm1T9RjyhZpsvoO91Ury1D6p5KiwhQ1TqLJOsISIPIigiVmxX3twy6OGtp83pE0rXoY6tLadO\nYxsxaYKDuKiEIRcG00dQbA6DiLOH62qq5VoKdO8kqiIAmxZ3kYKbEqx8RNieYB2tiiMUMQeyQkuO\nYz06K2r6uaWGN0TrMJBIy0vmO/8AdbffoxexCDj3MK2gzZMypclyKmhR6OkrqnLP0hXznv52qaqn\nZKmSPQ9lijlFMImUpHIkpSOUvbf7LJOz6oXK8ozbMKrh7imKpip8tzfMKiqzPhrOMrMGYJPQVVc9\nZWChrHWnoK6lRooJRK85ZZW0tsP9iTg1ey7galXOXjGZTUktZU1DFYxSwsTO6SyllPdUUOhBfSVK\nkDw84d4t7IMp7Uq2s48z6atySvrb0vBECV1VSNRZfEO+jq5qfvPqqVOYTmapqWljZxAaWma8UCRL\nXEDZtq4E58uatZcJBgyZd7gXXJ3HoLUfx9xLmPD2c8NcS0cr0lbT/o+rlqoZ1QGupKpWoKiKVX1q\nyyUhKtuVbQxN1Un0+8Fdq36UyrLc2ChI83ynLM1Tu5BJGf0jRwVZVWCINIaZtgvhPg/ZufNZXdnX\nEXHIn4aMMc/FdFmUSRx1QioZJMiesq6fJ86r0EYihp4YL1Fe8OuoMMXey09RVkJLvk4E4dGQZBke\nRJUST0uS5Pl2VRVMid204oKWKnafQQGVJZY3kjR/EkbIhtpsH8OuXHcDu9FjpYjH8OhGqnWt4idx\nawc6tRbWN7+Y0nlz54xIM7SO5EkettK6GtvzGzX2t18JvceW8fK2iNnJIBtpJJsLkDz63thvQprn\ntqDM7ApYnw6b32vbe48+WLI5pn2h6A+itHQcHGso2qmqVWVbsscY1eZsRfZSNyNwefWwhus4gfLK\nruXjvc31XCkW9baenX4c8OvK88q4qbu4pCpAIZgbFd9vCBp921tuW/niJOJZIO91tUM5t4rltx/Y\nJVT942+widtvUltn8U66ypDEFg5O1zbb3fFy5gm3pho/pqrlk0KNCqTou1tQ53It5k9T0x1cLVNE\nyHvpSFtqG5vYg2Fwb2233363w38zlmrKnRl0egRMAZXJEdrDcHe+53v1BwDJCdWbVUyaPB3sj3ts\nCqdSdi3S+/n8MJUmcSoniK3uCVX3iRewDWsSL8iotfn5OHI6+CBlgqHQvpuXst72NrXFhq5Ha2+2\n+G/xqhSKR4gEjYixXSdQsfIbfK17+mG5ZrZjXr9k7BFx06ITxybtVlhJikS9lGzMVI8IttuOViPT\ny6OyDPVqqWeeaeSJWayom1rlRcMbja/7h2225ilFBUVMtUSmoxXsdmN7bcxbla3TliQIuKatdMEU\ngEdzZbBtyDckkFj8ztzwn2wIv0Ep0Zus2tgK1lVab62CSyu6XcKdXhJYtceRGnkdt9sjLMrhRJJS\nyKwsdCoxDFt9mUgC197KbG/XDbzWuSmjaaeazsDqZdQ+AIY23ufdX444ZZxS7UjOjKI1vZylyw1H\n3VWwNjz258ybnHNsXvl5otbJJud5uWd0VVhdjf3LHztfSttut/S2Gh3BkY94/iFvdI6+f2enLCnl\ndZUZjNIkMD1J8Q0gPrax6ahbwjxHccsI3ElPmFAT3lDURAaiLpqBta9yFY7bEXI5ny2bH5Sd/wB0\nyFwq6AI6FJVVjzJJDfP+G+4sfTDgybNwhuQxCLbVbb777nlbzOIyy+pzHNZNMKCLR+0ef/ddQB/H\nn1wg5+cwoavupHlUdG06Vbn7ykaBy2sG3tytcDCnHtaAM7XupWrK3vqh5pQIaUA21eBmY8gbL6bG\n3U7b4T6uihmhZy11HJ9tv9o8xble2/PEVZlVZjUmGGGc2ZgZNViAARZ9ludN2NuW+45YfWf0posu\njT6ysskpAdfO+ptyAP4WGw2GObQvYpXs+BNllQVSzQvTQiIxgbSLz2sdrAlr2tfULXvvaxhvNqKG\nBpJpX1qrEad9StvcEnmDtbwgCx89pByqtho6YxoVEkgtqDhiCbDwg3sLbeEDmcMnM8vSoZrMWbey\nXJLke+bX6XF+u464jOjyTzNFhZVVq0bMGZUNyu/l6fH1wkZnS0yqZj3ZYnUeR3NgB08+e2M+ny0a\ne5Q6b3UKl2ZWY3Nwb/Zy8sOjMeA70BqZW0oCx0jnpTxK3LqbDqLYbAsl3USrVxd4hZV0rq25Dpty\n628ifjhuvEaqqbZUiPhjAP7W1ixsLINxcW/jjuq3FU4WnUgKsly2ynSPMfDYD52x35dUqlK8mlV0\nxm4kv4mDEE6h4glwfdI32w25xuuk3UcZvw3KJ5KiNu/TUU1AMPFb9oG+rnzIFjY22w2KOmqleZ7u\niIu9nYC4JJBHI8uYtz5YmLL82lrVelgQNEdpO4AYx6eZYdSWAHoMNHiah+pRSx+LURYKwKHe5Unz\n1X+VuW+B2RyS2uN1GOZ5rJHaViWB3s3jG9+h/H54jjiypnfTI6PEkgOlyuoG2xF/D12v66gDaxfk\ndV3pKyhVRNiD1It4T5X58747eLIfrtMUpkfWqEmPSr6NPiuDYqLAXPnbztiNJE05kX8TyUmNxUVU\nWXdzl8jQsRJJqZrrfTcbDc7k3Nx4SoAuDq2iL9DSGaSQs12BGoKAD5m3xFvliwppTDl8EPvSShS4\nIAKn9vVYC5e4uTcjTYWwwq6FULIFYBTyG4F9zubk3Jvudr7bAYiGHcBluyCeEtv5UUUdJR5JQx5p\nmCh61VjOX0kquLlwAlXOinU4guWpktdZgjzArSho4OXtFrP0zRZpUSvJJS11JVXBu4FNUxzKD0uN\nF18IYXIDCxun8ZcYT5lUvJLI8osoUPI7BNLEiwbVvbbw6RYKLBVVQwQHY8/w+6+NFFiL4pGPjyLH\nte08C0gg+YChxULXscJACHNLXDcQRY5c/wB16Qqavjqo46qEhoamOOphZTdTFUIs0ZB5FdDix6j4\n4kvsg7Ucz4I4q4d4wyVyma8M5xQZzQ+IqHloZ1lMDsNxFUxiSmltzilcdca0vY47coK/LKbhPNKg\nR5plyPHlUk8gH6RoQ7OlHHI5s1XRKxjgp7lpKKNEhB+r6Bef8/Z+eWP1V7F9paPtBg8UzCyVk9P7\nCrhJBLHuj2JopG8Dd1rizmkEL8r+3XZas7O4zNA8PjMNQZ6KcAhssQk24JY3aXFhtC92PBacwv1N\nvZ67d8g7SeDOHuNeG62CtyvP8rpK9DE4L0s08EclRQVcd9dPW0UzPTVVPKFkhmjZWG1z5nfbP9vH\ng/s59uHhTinKq+megy3hii4D7UsxpSZaZKXNqx6kxVEkFxPNkCHKa+rKd8acQCmYd/TSQx+W3g/t\nd4u4dp6mk4e4s4o4fpK0EVtLkXEOcZPTVgYFWFVT5dW00NQGUlT3yPdSQdiRhgyyM7M7szySMzyO\n7F3d3JZ3d2JZ3diWZmJLEkkkk48S7I/8ZafDq7EJp681FFVUtXRw0zYth7YqobF5nlzmvdC2xYGt\nAMgbIbbIafY+1v8AyVqMQocPhgoRT1lLVUtXNUPkEjHS0p2gIWBrXMbK64fd1wwuYL7Vx+sFBxFl\n8lAuaR11G+WtTfXFzBKmFqI0nd979ZFUrmEwd3+s70P3ejxarb4/M4+kB4y4b4i7b+1TPOEGifh3\nNONM4qsvnp1009a7SqmY5jT7Lqp8zzRK3MIJLASxVKyjZ8QND2xcYxZM3DkfF3FUfDrjS3D8fEmd\nJkTLt4Wyda4ZcybDwmmK7DbbEcjGl/o7/RB3ZarraqTEPezURCCJjIjE1sYft7UgL37UmQAtZrRt\nZnayzf8AWD+tje1FLRUrKD3QU0hnke+QSudKWbGzGQ1uzHYkm/xOIbcCyCcau/aa48lk4vr4qYCS\nOgp6XLiS7WD08feTqtldDaaZ9SSKyh+8UqxJU3q7Y+16i4PytquUxzZlOGTKcuJBkqZ7G08sYuUo\nac2aeZwI3bRTqWeSw0y1WY1NXLJPM8kk80rzTVE7ySzyzSNrkkdykd3ke7OxJLFmO5NsYb/kx23g\n9lTYNBIHzCX3iqDTcRhrSI43W/UdouLdWgNJ1W//AONXYiZr6nGamJzIXx+70m02xlu68srQc9hu\ny1gdo4l1r7JTtjzgysA0Be91OplIDNbU3do9PdtTSMD3Z3YLp2KYe1BxRHSp+qpZQP1hMkksTxyG\n+lXMIekYsFJRLd7pU2kD2bEWUpA/WE3ddgNUcJkL/wC4XZjc3Oo6S9ywscZ8Tu15CJFC7qQZpgxI\nZlWzmDSrC3JmuzDYbqPkBsxsOu7RfXHuzTnawysM+6ykhOIqWaRn1D9bIXaP6tLEhR2DgkaIA5sA\no/WT2N9yoOHBSZ1QqAqVkeqy3hkj7lWZIgygRK9PFKzzNp0d9KeojVJG7yHdRQKQiqoCrY0YVEvs\nGLMwQE31WJUX026DHRMQCuo04bc2SOBHGvVpJUAgAhQfCQxW24Gk4UKkjr6pk0Q66/i+qmuSaOcC\nMDXEblEaWJbtGWjsO8EEAXwzMUSgkuPHeS5kfqeeAab6f1ahVKgFhoDTFSO7lYDSFAUR0RUnVre8\ncWIOSqSMadd0uAyio09NJUaV0qdyLsrWYsTcXXHfHm8sZYFm7shkKSVHeICRsVLwnuyrjUhXTZmX\nxeE3ebW/3C/DRNGgduNvL69blMM+YEjWrJrIszIqgNoBQF2WSMSHvHfTG1U5cqx7scmx4p3llC3c\nxhRZSqrZ/wBU6hFKJHcojtqCVRAADEsRHhh0GZl2RpJolFt+9RpwCCT/AK2NVkjuGYs6NcsFvfYq\n55uJoaYESS05MkZQzU0kkjd3KF/VsjRU0zqsamN43mnjaQEvGFGjDnvLCL3smHUzwTlcjfx7rp7V\nNQE77XqeZbaTsmlgRMUbVG9SnePKqAoaODSrR/qwzuuTFmSojIoVYiySPEySlWManuEZdQEaO2uV\nzNr2A1VaxiV0Z+W0c086SzrKhCrIqaHSSZi7AFHZI5QHJuXSHR3MbESMGKBxZjmkeV0z1czglEld\n7nu2aVt0MQDh0m7wgJpdJkAhWbvljjmD7XWG1+nPPwUdsZc7ZtcnKwSL2g8TrBSmi1hJZRG9Uyxk\nSQ06NIXOr9qaodlhVpGeYIZ7TNGyYhCHMzL4kTRCp0qlxa1rgXPl/DDYr81qc3qp5pG0I7944JvG\nqgBY1soUaY4gqqAAuwawa+FpqUhUepJpKRbaSwtJORz7iMlWbUbDXsqi7XYjSad0+2SdwyBzzWhd\nQhjQwfmtnbO2mv03Jz5YwIeZksiWGq4sSdVxa97iwJAGwsTYEYKfNSkrOtrG1txvcBSefUC/+Iw1\nJs5+tsIoAYqZBpUKb3XlqY6Vu7c3PnbpjOp4V2G557k7nzPz+7CmS5C2ir5qVrdfzbwVIPF0n17h\n6rB8T0wpqhbbbRzxxymx2ssUkjtspJUEM1rFY9kqgB4wyXMmo56rLsnrYMwzGONIbJBCJDHK5la8\nzQ1AjmhgRHbvY1lVH7kqUHKR38NXTFtKz0dXTkkE6TJBIFcgXvpax+WLv+xl7NOc1PDub8RZHm9C\n1XNVUmXrQ1Jmjgq4Iu8apf6w8ZMEsKyE0yiN4pHYxyyJqRsU+JRPMgIG4C/ir7A6hjWFjzbZeTax\nvYq+XEPabQZ3mj1Us9V/Vkd3oonlLVFcyMD3c9kVUjLBo3jRFEhBRI+6scOrjTtJlz1qRY4+6qO9\nghy7KKbW9XOw3QJCgkaOFRqkKkco2ExC3BROzz2QKWnlWtzriGWq372XL8tjaOnWXvDqQZjMXeUM\nm7GHL6WRPdjey63ttwvQ5Hw5NJLk+U5fTTSqqS1UMINVLGvJZq06qp1HMq8zq58JWzG6Y6WQ3uci\nBY5LRVuOsFg1t7DZBz0VaOwHsW46y7tC404p4syihpaTNMupafJqpcxo6qrlaAQq8RoaKWfQhhVi\nzVYp5Ipe8jV5Q2mOyOYVeYmRralDMSoZGQEdNeq3pyw/p+LZqo9+o0b6UBck2NrtqKjSBbwrptvY\nHbeI+LOKpZZCrSOURiC8brtcXsBsTbl0xOhp9jR33WUlnDiXFuZTpkoJ5EN6sqxtY6D5i4uwC6bX\nAJIa/TDoynIKmOnEvdPJpUnvDIoB2vewawviPaTtBoxTiJmJO2rU5kY2II2NuoHPlhTHbNSQQGnc\nO6FSFGsKtwPID1G1/XDzsjdcaRax+Sz14uqge4toS7DY+IbknxMQDvyI26Y5Zvlf1qMW39VseRv6\n/wCHoMQvLxxFLXI6oQGdQUJtHZrAEbEDYb87m52vi0kFDqy1awlIF8NhpsLMVDW3BOxI5Dzx1hJv\nySXBg1Fzu/fcoeGWyQxlNTLZlF4/E+97KpW/vb3+WMiTjJaNVpIY5TUOPdKsGY8+oAvYjEsZHxbk\nquVm7gxoCveW8Ws38Viu7KV2N9t998NDiGQZnVKKCnFUsW6TCJmCXANmIU2JJJuC3wvtjt0bY7uS\nZWUpVNOs8qaWdrKkjsFS4IuAeXPrzxNOd5I60Inb9cwS/g2hTYGxt79/Xlb1xDvcVBzKGOaNGUsP\nBIxVeRJDRXCnSPELtswBttbD07WO0mDKsu7iEhAITqRdCqxCqABpuDbfptfCW622rjhZKNrfltff\n3a6Jr5dxbSaJtc6I4JUIsbarqdJsdJvYjax5WxFk+XZ5XV0klMnc0ikd3Mz+I/FA2/QbgW54h3gj\nPJ80zF5BMIogzM0bW0tc9dtufTnzsL4shw5xWYan6uZIY41uRq21KVYalud1HO+9+QF8MuhBPdr1\n19Ve8Fot5ZHuWJWZZmk6/VZD37MADZggAHvs9w1r7Wux5HYX37ciaTLi1NK3dLqBfWdWlQAfIA7E\nWA36WuMPetzulaUmkDVExHi7tWUXFtO/K3iY33AsDvyEP8c19NNDUmZ3jlC2KiQ3BXa2oczcXPqb\nWHQeGgAX7sj14JLHE52+SsbwhxdkeQ0UlfOwlkkLS+9udIspsRt4h7psOo3tit/FftWU2ZNNFSxu\nuqWazd2SouQD0tbw/PpigHG2Y8S1KS0tBJJJT2KazM5AC3fUCENtWy6eptvvs0uCMjzzL6c/XG8T\ntqs9wxA1b7knfUOnlhuCV2gGXRSJGZNPDX5LYbwv22xUrPI6xMW5gxkctutr8t7YZPFvajLmFQkz\nrsLaTpZ1Qnl7oN7kgWHxNhc4q9BUTFwDdmvsSCVUcydNgDz/AHh8sSvmuZSR06lUYLr2XQFAIIOp\nvDe22w2/evtbDrpjpx1TXs9rw/f+FLEXHASNHkjQMLA+Agknk2lNVtVuvK29sK9fEM0pY55FRNet\nVA2fQrMpN2uB7uwsCRawPMxJlEy1UcchjZpHZVcqbra/wHryBxK0MIqWip45RG5sugg6UC7X6BtQ\ntfYWJ5nDWzc5J5htrx7/AJLAzSkpqGmjjibxn3dILdd91BA8NxueWIvzOPNZLtHbRcaGSwIB/eBO\nrcWta1t/MYl7OctgpndFk+sNbwhVuY997i7Hle/LmTyBw2xmTOop4UUvc6nGh7A2AulgR16+e2ww\nr2dg0bxf5eSQXlQZWcU1NJWRRBgZ2HiHVLADfcjfn7x5325YnfKs+qaujiSvlCU+9io8bFhbcMGG\n1wd133A3tiOqzhOGCfvppP1rNq1aFBF99KoSSenUfDDoeupVp1H1mNWXdCDa1rEmxBB2v0+BB3DO\nzmb8rKTG+4ukzN+DXh7yaiV5oiC7SDQp53BYLHqPM7HSBvc4hvMuIEMn1Y6BIWKlmDd4SOi3F7Ls\nOWnbY2sTYmDj1Uy+SCHcOpSWYsoL3IAtsSF3JZdwdr8sRjLwVFVNNXxiNmibdyNwGBsFBO24tfy5\nDphl7s89euClM0Uo8JcSZFwtkrySMJ66WPUiQxlyS1jZSqk6NjtzHNtrnFJM07T3zvOahjTyiPUU\nhEiFCWBbYA2I3O5YAcrHriXuH6XRLK+YK0iq7KrneAAXKohtbYi2oEXva3TDZ4gjpYmqpKKmRZZl\ncqUUbaeuq3hA1+8N/TYWrooXNeXE3G4d6lPe17WgC1tVDC0zSZg7yfqo08Ui7GwsATcE9R0viQfr\n/wBXjkRo2JmX9WSCLi4BO4sLX62OH/wb2aZOmUyZtmz6pHZiEaoMSQ2vzXWrTayLglSADYBhbDQ4\nm4hpaiddKCOlEf6tiQjMwFl0rpvoAFgxO97Fb74dB1O7JR2km44d3W5RRVh/rkMarreYhE2JIYke\nEdeoueXrhR4myePLyFqBodgri2zFiAbHoLEKBfpvhvmtmhzOKohV9ImWzMfCoFySGItvt5X2xicY\nVtTmU5lMrBNal5L94WCiwVTcAGwsAL8r+YBI0lAaQ7PrRa05qcl7m1zz/Z6fu/HnpJt6Y5rCF9PL\nn089j/K1jzxgw51Kl1upU81cMw+e4bY7izXuNyRcHjJmzN+zGvP3RIL333/W9N7W8zh0yx8fRTjE\n6+4ddyXYJ2iZJI5THIjKyMjhXRlN1ZGsHVlNiGUgg7qRYYuD2e+2fxLliLTZrFBxBTrYRyVTimzC\nKML4U+t08YFSFAuDVxTTkkg1CoFRaO/pV+mn7G/i+Of6Yk8o/wDuv/8AHjSdnO29fhMhlw+snpnH\n8wjJ2HAaBzCSxw5OBWf7R9kKHFohDiFHBVMGntWguYTa5Y8APYctWOaTpott+We3JwzIt6zKM+pS\nLf8AR1y6uUnrYvW0BA6i9yb2JBwqP7bfBg5UvEtuhOW5Yt/j/wCXSB0GxPMY09/pdzzEY/3X/wDi\nxwOaP5R/90/xJx65B/yd7RMaGmanflbafSsLjzNtkei8kn/409mXuLvdpmA/pjq5g0dwLifVbf6j\n24eELfqKDiOd7AgS0mV00Z2ubypnFW49CIHvcXA3xEnGHtvZhPG0WRZTDlxdT3dZXMa+oQEC0iU/\ndJRiRbhlMyVEe41wkb41v/pmXzv6MzsOfUFreQ/3Accf0xJ+7H8l/mT91sVuLf8AIftFVsMfvzad\nrhY+7RNicQf/ADF3DvaQVZYX/wAfezdI9sjcPbM5pBHvMsk7bjix7th3c5rhyUucScUVmbVk1dnF\nVUV9ROQJJp5LuQo2VP1iCNFHurGqqt7LHY3KVT1KjceH+0O45npcFjy03sDYuOQFxHq59KBYKlvg\nf4MB92PhzyXyU/EyH7jIRjx6bEzLI6SWR0j3klz3u2nOJ3lxJJJ4nMr1qPDdhjY2MaxjAGta2zWt\nA0DQMgBoAALdyk79ISAFbgK3hOw8Wq9jaOMWHPZtrSciAbcmqv39t76lMxk1XIF1LixDFyLKL2Fw\nd8Rh+mpPKPy3TVsefM/nrjmueygWtHY+8oj8LActQv5WHTl8cJNe3j4XXW4e7iApCWdVa+yve/h7\nl7i9w1nYjVe40jYKnh8sDZi247xzq2JKhbXP76RsbA3AIYaBcpbUcR7+nZbEE3/2i5B36jVb1G3P\nHV+mHPNYx8j/AD6fEX/Dhr28SgUDuXmn41c2o77f2Sbbjf3gnO5JufeJOOyCrReqkXvZXYtve1v9\nJY7E202uB7xOI+GbP5R//wB0fg9sfWzmU7E3HW7S/wDx/D7Mc99bxShQu4Dz+yfVZm5ayhrE/wBo\nk7Wtp/VkqBc7aiCCL8sZmUUUskqSyam1vs0jMFtya+jQ63NtwQbeh3jqHOXRtQWM2I97vG6HleT8\nm3QYc+W9oVXSgd1HTBhY6ik2okAAAkTqOg3AFtIIN8KjrI7/ABE29Emaifazbd+/rxViaLNXy/W2\nqR4SSlRE1iRMRGCvd6ZUCIrMIpREjksZQsRtMkM8YZ/Jm9TDSxCURg7xnu9JKm0YDqo8EaEhWk0m\nON2G7EhmpmPHVVUm8ggOxFu7kPPfm0jH3twL21G5G7YS6LiOWnSRIliVpbd5MFcS23utzIRp3PID\n8MLqMUa7ZZnsDW32TFHhbo9p5DS/9OeifM08VBFoiCtMLXlZVaGNuZ7uMgidw17STA3NwoUWGG0I\n562QSyvJI52LSWO1iSNgAB6Da5w23zBncu4WQm3vhjsAFH7XkBhV/rTLo0LFAq/2UkB877y+duXT\nCDXMyzsBuspRpZA34SC86uPyCeMFMIlUAAEf4YUqdlAG2/xPniNhxJMP2Ivmr/d+s2/yx2Dimbfw\nQf8Ack//ANmHRiEXEjwVc/CZnZktJPNTvwxKBOgFrP3inmd2jdRzXzIxvx+jy4bhi7LaWWVkiFTX\n1kzMxYM9iFAG/wCzdgByXUCMea2i49rIHWREgDIbreOUi9rW/wBbyxbXsr+kM404O4fp+G8syzhe\nehppJZElrqLOJKpmlILa3gzuliKgjwBYFIF74cfiEdswSlQYVK1xPw589PRek+OClYFY2A3O7AWu\nCQACbkXB3Itz9/oHF2fZflX13u6+TTFK51CQspAG+kAEDYD5487EX0r3aCiGP9B8EsG5s2XZ/qHw\nI4mFvLYD7cNnNPpMuOasKXyjhKNl/ahpOIFbbz18SMp8uX2bHEc4mwbifJSH4dId7fP7L1Bdr3Cu\nV/V43yetCq6kNAF1ONNgp1KboACSSdQN9723o/mWTGklJqJ9mY6mUmTVudN0IFrLYGwAO5G1jjTP\nRfShcfwhVGVcJOF93vKLPG5fDiFfz8Mfa76T7jqpZmlyTgslrXP6Pz39lQB/6RHooGOjEo+BSRhb\n+LVuu4b4eSd2ldXK9PQW38Pum4uNwbXuNwDhbr8lodT2iIC2sGS9zvexB1DkOtuWNIlJ9Kh2gQIV\nhybgxAf3cvz0H13/AKx9fwx1/wDypnaAXDvk/BsjA6h3lBnpAPpbiO+/8Bvhk1ke69+uafFA7l5/\nZbraBsspqhfrEDM5sU/WWVbe7qCkL672573O+JTqu0WSoY08dlg7u4sAQhAJuFtbkLbggXudxfHn\nhrvpJuNKglpMj4NuxLNooc+Xcn9r/wA4rcuVr7W64zf/AJTXjeyj9B8HWQ3X/QuIL/b/AFlwpte0\nXzOfXFJfh7jbJvn9lvyqwG7t4I+9AGqQgBhd7cz7gvpbe1hbliXOAuIkpw0LUsiPqUosKCSWQsA1\ny3uqoJtta9hjztUH0snaDTBRHkHArBRb9Zl3ETfbfif8P5YUqH6XntFp21xcP8BpITfvP0bxHqX/\nAGbcU2t05fzxwYnbIXt3D9ikHDXk3uB43W+ztOq2hqndGgiMxBZJCBMh1DcFgVHLklhzuLXxAvEn\nDhzCC2mSoBILOzgqBe5CEWFzvsdiB5DGlnO/pQePsxlWapynhBmXoKHPNB26g8QsefrzGM2m+lM4\n9hTQmRcEiwKhv0dn2oA+v9ZAPuwj31vE+n1TpoH2aLt+Hf4LbvVZWMup3+o08UREd9bhpCzDZt1V\n91O5AAHQsLWxLHBlLlM1LdlNVWmIItSxdQrEgWjhDhAq3JBKE/djRF/8qBx73bwnJ+DmjkJLq2W5\nywJJJ68QeuOXDX0nvHGVPrpci4KY3uO9y/PiBsRZRHxJH4d9r/Zhxte3ffnpn6pLsPeRmW8jwXo5\n4Q4HossY5hVe60at3jM/iB1bBNIXwm/uee99sK/FfDmTZvC7pCkSmPU01hHGTa1jr3OrmSoG998e\ndjOvpc+02uUJJlvB0cf7kOX56q226ScRP5dCPUnDGzj6TTtBrIRC1Hw1CvXuKTOUJ589WfSKfkoH\nInffHXV0ZLTYi27JIZhrx+oeq3HZ/wAE01GzJRMCzMQHAZl2GrwoSQ17WuwOkeLpiCq/hStjro5K\ntxMksmiOO7WQkgG9ivvXGlUFhpNxuMa1Mv8ApGONKaMRDKeFJ1H/AK6jzxibcvc4gjGxsRYDlvcX\nBdnD30pHHOW1a1kPDvA0k8ZUxvUZbxBKF0m9gBxMpAJtqtz0r5DCTWs1Fxyy+q7+HP3lq2hUWTwZ\nazzVMOio7v8AVpJCRq07jSptq1LZb26eZuYrqs9zHMKmoWny+aohHj1QxalRf7ZQWVivi5aQNtgc\nUD42+k94+z+vXMK/K+EBKl9MUGX50kBBFiNL5/I9vLx/Zyw9+D/pcu0HI4Gp6Dhns+sQwM82U8QS\nT+JSreI8VBRdSRsnU4b96bnmfT6pX4c/i1XSyPiruUkhSleOeNSzLJa0TLfYaepv7tgTtvthWyHO\n82WVq250gXQSMihr76AClxcgkX39capOLvb44uziplq6jK+GIJp3Ly/VaPN41JvcbSZ3NYKSbAEe\n8b6trYVH7dvFsMZj/RvDcinpJSZq1vhpzpPwxwVrQd/kPqunD3EWyW4xszSGUz5hMzzy+FI4yoW7\nXUakiEZO7ftX5bYQhNmNFWrUTU/d07XKMpUsRcEeBhqU2I67362xqTf27+LGlhmbK+GWanYOgNHm\nxUsL2J/8tXNibjddx8ioZ77f3GGYMrT5dwwrKoUNFRZsraQbgEtnTkDz0nfbyw+2vYOJPgP3TQwx\n/Fq2e8VZ40k3fSl1Qrq8YAc2AUFR02A62PM8zhi5fm31syG0vcx2CvpI94hR1t1sdQPpjXNUe3Nx\nU6Kpyvhk2tuKTNtZt1Zmzk3Pz9BYbYT6X21eJ4YzHHl3DtiPeakzPWN77H9LkD78NurGHj6fVOx0\nD2gD4cuuC2kFoIKOV5JFVrMdWrfwldN15WGrxFQDvvfbH3gXjOWo1xhl7pQbsVHjvfcgqT+0dN+Q\n3AG2NUVV7YHEkyaZaDInubljT5lq+7NQpHlcG2O+H2yeJ4oe4joshRN91o64NuSeZzP18vLCTVM6\nt9Ur3J/Fvqtr/E+dxVRjhjvDTxm9wEjSSxvs2k+nmTyBGxERVnEsT1M1KqKlOqjXJ776b2YoWXdi\nByvpO1+Qxrsk9rbiOSeOeSiyNih1BTS15jJF7Bl/SQJ33HiFjY3x9z32tuIK+UTS5dkCNp02hpMw\nVbC1r68zcnl5+eGDOy98/IfVPMp3jc3z+yuRx9x2ta0dBRxzyxRNpUEOZDYWuzKLIoJI58rdBYRN\nLn1dNXrFOjdwhCA2Kk6bsTq2PIczz5XGK/we1FnkZuMuyLV1Y01fc+XLMrbCw5cgMdh9qHNDCYmy\nThp21a+/akzMz6jzOv8AS4Xz/Y6nCHyMIIG+2thp5pApXg3+Hz+yvnPxPkrU8NHpHeKoNyWuxsAw\nN3vt/HEeniOkneempkjRYgFUAnZyedrkE79b/ad6Yxe0Jmyyib6llLNqDWeCu0CxuPdzLVYdN744\nv7QeamZ5zQZPrkOprU9ba5AvYfpEHp54V7wOA8x9Fx1JITf4VAuPoPpj5gxCurRcrjy+/HHBgxxC\nMGDBgQjBgwY7fqwQjBgwYL9WCEYMGDBfqwQjBgwYL9WCEYMGDBfqwQvuPmDBguhGPoPpj5gxxC+3\n8tsfSR5ffjjgwIXIN6fb/lgJ9MccGO3QuzvPTHFmvjjgwXQjBgwY5dCMGDBgQuVx5ffj4T6Y+YMC\nEYMGDHb9WCEYMGDHEIwYMGO36sEIwYMGC/VghGDBgxxCMGDBjt+rBCMc1a2OGDBfqwQvpOPmDBji\nEYMGDAhGDBgx2/VghGDBgwX6sEIwYMGOIRgwYMCEYMGDAhGDBgwIRgwYMCEYMGDAhGDBgwIRgwYM\nCEYMGDAhGDBgwIRgwYMCEYMGDAhGDBgwIRgwYMCEYMGDAhGDBgwIRgwYMCEYMGDAhGDBgwIRgwYM\nCEYMGDAhGDBgwIRgwYMCEYMGDAhGDBgwIRgwYMCEYMGDAhGDBgwIRgwYMCEYMGDAhGDBgwIRgwYM\nCEYMGDAhGDBgwIRgwYMCEYMGDAhGDBgwIRgwYMCEYMGDAhGDBgwIRgwYMCEYMGDAhGDBgwIRgwYM\nCEYMGDAhGDBgwIRgwYMCEYMGDAhGDBgwIRgwYMCEYMGDAhGDBgwIRgwYMCEYMGDAhGDBgwIRgwYM\nCEYMGDAhGDBgwIRgwYMCEYMGDAhGDBgwIRgwYMCEYMGDAhf/2Q==\n", + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 194, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import YouTubeVideo\n", + "#import urllib2 # the lib that handles the url stuff\n", + "#\n", + "#data = urllib2.urlopen('https://00e9e64bacf6e0e64751a6e5a0c2cd135ec020252fdfa8858d-apidata.googleusercontent.com/download/storage/v1/b/bwdb/o/acceleratehk%2Fpython_class%2Fshape_of_you.txt?qk=AD5uMEvoreq5AO2jx0fJIMdexon1mQKCVuWsSxJ80vJS_oIeyJzHdSJU8fnx8r9HBVadcskZW13iMqbiyT9PJVUJoScpWVzdBJnVuS9EHdbSYt_IDJHi4KRUiRokEEjAlj_cHF0Fx9KleB44kLdBj7WA3O7E5j41fNOz85x16FuR0B7v53me0_qcwwGkunVAbJ9JwNyTwyW-oV67-qnax3LiHrTyjSBa35vLDTXq_LwJmV72DYTZRzD4I0RQHercrc1GF74-O3UcpWDV6_FYx4jUyICOYzAq_0Hl7N2hfMhOt4njjpcxn7x2IL9uy9_Br_zvx3XnlxdKQRZ1v_uMYzM8LH_7MDT4S0mH_QRFdu6kLl37cM65dn_KhnLobmty_BH9mBWN057oD6lsbJGMoQ6__jw8YtRSRC0ir3yjNcnp0w7PebOtAVTsnyXTdS3RpBsN6xen3B-1yxDJbd9r-auw5Io_OKz088UtzdlBc9VmDtVmJIT_TWpLGlrKpjNB6y28m_rNCgLsUGj4IrYTEko72ISrcPYCHJthbzL1uOf1-BHSn66J651Pv2cva19WIsy1oHwH0R750POlCIZOcGMLuk8LFegHunO-ZGiL-LKXDrFCYDB_Q_iHPqfRpCF1Ybnd3owihE6FZ9zCmoNc3k2KXnR6qnzAi3p2jHLZ69ny7pE0CcM9LLBXJSXaS9E12a_a2T34xnXMvsltE9OSPyViQH520oOXsy5T-3-Eb_MmRebRmZwjcwey60Q0uYPnNPfdBCLFb7x6tlb0eChSv2uz3ufLuH1fKw')\n", + "#shape_of_you = []\n", + "#for line in data: # files are iterable\n", + "# shape_of_you.append(line)\n", + "#shape_of_you = ' '.join(shape_of_you)\n", + "#shape_of_you = shape_of_you.replace('\\n', '. ')\n", + "\n", + "shape_of_you = \"The club isn't the best place to find a lover. So the bar is where I go (mmmm). Me and my friends at the table doing shots. Drinking fast and then we talk slow (mmmm). And you come over and start up a conversation with just me. And trust me I'll give it a chance now (mmmm). Take my hand, stop, put Van The Man on the jukebox. And then we start to dance. And now I'm singing like. . Girl, you know I want your love. Your love was handmade for somebody like me. Come on now, follow my lead. I may be crazy, don't mind me. Say, boy, let's not talk too much. Grab on my waist and put that body on me. Come on now, follow my lead. Come, come on now, follow my lead (mmmm). . I'm in love with the shape of you. We push and pull like a magnet do. Although my heart is falling too. I'm in love with your body. Last night you were in my room. And now my bedsheets smell like you. Every day discovering something brand new. I'm in love with your body. . Oh I oh I oh I oh I. I'm in love with your body. Oh I oh I oh I oh I. I'm in love with your body. Oh I oh I oh I oh I. I'm in love with your body. Every day discovering something brand new. I'm in love with the shape of you. . One week in we let the story begin. We're going out on our first date (mmmm). You and me are thrifty, so go all you can eat. Fill up your bag and I fill up a plate (mmmm). We talk for hours and hours about the sweet and the sour. And how your family is doing okay (mmmm). And leave and get in a taxi, then kiss in the backseat. Tell the driver make the radio play. And I'm singing like. . Girl, you know I want your love. Your love was handmade for somebody like me. Come on now, follow my lead. I may be crazy, don't mind me. Say, boy, let's not talk too much. Grab on my waist and put that body on me. Come on now, follow my lead. Come, come on now, follow my lead (mmmm). . I'm in love with the shape of you. We push and pull like a magnet do. Although my heart is falling too. I'm in love with your body. Last night you were in my room. And now my bedsheets smell like you. Every day discovering something brand new. I'm in love with your body. . Oh I oh I oh I oh I. I'm in love with your body. Oh I oh I oh I oh I. I'm in love with your body. Oh I oh I oh I oh I. I'm in love with your body. Every day discovering something brand new. I'm in love with the shape of you. . Come on, be my baby, come on. Come on, be my baby, come on. Come on, be my baby, come on. Come on, be my baby, come on. Come on, be my baby, come on. Come on, be my baby, come on. Come on, be my baby, come on. Come on, be my baby, come on. . I'm in love with the shape of you. We push and pull like a magnet do. Although my heart is falling too. I'm in love with your body. Last night you were in my room. And now my bedsheets smell like you. Every day discovering something brand new. I'm in love with your body. . Come on, be my baby, come on. Come on, be my baby, come on. I'm in love with your body. Come on, be my baby, come on. Come on, be my baby, come on. I'm in love with your body. Come on, be my baby, come on. Come on, be my baby, come on. I'm in love with your body. Every day discovering something brand new. I'm in love with the shape of you\"\n", + "print(shape_of_you)\n", + "(YouTubeVideo('JGwWNGJdvx8'))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#Your code here!\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 5.0.1 List" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5.0.1 Python list is bounded by square brackets" + ] + }, + { + "cell_type": "code", + "execution_count": 186, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "num_list = [1,2,3,4,5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5.0.2 Python list can be selected by index (it begins in zero!)" + ] + }, + { + "cell_type": "code", + "execution_count": 193, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2, 3, 4, 5]\n", + "3\n", + "[5]\n", + "5\n" + ] + } + ], + "source": [ + "print(num_list[0:5])\n", + "print(num_list[1])\n", + "print(num_list[3:])\n", + "print(num_list[-1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5.0.2 Length of python list can be obtained by len()" + ] + }, + { + "cell_type": "code", + "execution_count": 188, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "5" + ] + }, + "execution_count": 188, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(num_list)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5.0.3 Item can be removed by remove()" + ] + }, + { + "cell_type": "code", + "execution_count": 191, + "metadata": {}, + "outputs": [], + "source": [ + "num_list.remove(1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5.0.4 You can put any object in to list, even can create a list of lists!" + ] + }, + { + "cell_type": "code", + "execution_count": 195, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 2, [3, 4, 5]]" + ] + }, + "execution_count": 195, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = 1\n", + "b = 2\n", + "c = [3,4,5]\n", + "[a,b,c]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5.0.5 To combine list, you can use +" + ] + }, + { + "cell_type": "code", + "execution_count": 210, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Central', 'Wanchai', 'tst', 'mong kok']" + ] + }, + "execution_count": 210, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hkisland = ['Central','Wanchai']\n", + "kowloon = ['tst','mong kok']\n", + "hk = hkisland+kowloon\n", + "hk" + ] + }, + { + "cell_type": "code", + "execution_count": 211, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 211, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hk.index('Central')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5.0.6 To add item to list, you can use .append(). You can also create an empty list using [], and put items in it" + ] + }, + { + "cell_type": "code", + "execution_count": 201, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1, 2.0, 'three']\n" + ] + } + ], + "source": [ + "empty_list = []\n", + "empty_list.append(1)\n", + "empty_list.append(2.0)\n", + "empty_list.append('three')\n", + "print(empty_list)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5.0.7 You can also split string to create a list" + ] + }, + { + "cell_type": "code", + "execution_count": 183, + "metadata": {}, + "outputs": [], + "source": [ + "shape_of_you_list = shape_of_you.split('.')\n", + "shape_of_you_list" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 5.07 - find in the song shape of you\n", + "1. Find out the indexes of all the \"baby\" in the song" + ] + }, + { + "cell_type": "code", + "execution_count": 215, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['The',\n", + " 'club',\n", + " \"isn't\",\n", + " 'the',\n", + " 'best',\n", + " 'place',\n", + " 'to',\n", + " 'find',\n", + " 'a',\n", + " 'lover.',\n", + " 'So',\n", + " 'the',\n", + " 'bar',\n", + " 'is',\n", + " 'where',\n", + " 'I',\n", + " 'go',\n", + " '(mmmm).',\n", + " 'Me',\n", + " 'and',\n", + " 'my',\n", + " 'friends',\n", + " 'at',\n", + " 'the',\n", + " 'table',\n", + " 'doing',\n", + " 'shots.',\n", + " 'Drinking',\n", + " 'fast',\n", + " 'and',\n", + " 'then',\n", + " 'we',\n", + " 'talk',\n", + " 'slow',\n", + " '(mmmm).',\n", + " 'And',\n", + " 'you',\n", + " 'come',\n", + " 'over',\n", + " 'and',\n", + " 'start',\n", + " 'up',\n", + " 'a',\n", + " 'conversation',\n", + " 'with',\n", + " 'just',\n", + " 'me.',\n", + " 'And',\n", + " 'trust',\n", + " 'me',\n", + " \"I'll\",\n", + " 'give',\n", + " 'it',\n", + " 'a',\n", + " 'chance',\n", + " 'now',\n", + " '(mmmm).',\n", + " 'Take',\n", + " 'my',\n", + " 'hand,',\n", + " 'stop,',\n", + " 'put',\n", + " 'Van',\n", + " 'The',\n", + " 'Man',\n", + " 'on',\n", + " 'the',\n", + " 'jukebox.',\n", + " 'And',\n", + " 'then',\n", + " 'we',\n", + " 'start',\n", + " 'to',\n", + " 'dance.',\n", + " 'And',\n", + " 'now',\n", + " \"I'm\",\n", + " 'singing',\n", + " 'like.',\n", + " '.',\n", + " 'Girl,',\n", + " 'you',\n", + " 'know',\n", + " 'I',\n", + " 'want',\n", + " 'your',\n", + " 'love.',\n", + " 'Your',\n", + " 'love',\n", + " 'was',\n", + " 'handmade',\n", + " 'for',\n", + " 'somebody',\n", + " 'like',\n", + " 'me.',\n", + " 'Come',\n", + " 'on',\n", + " 'now,',\n", + " 'follow',\n", + " 'my',\n", + " 'lead.',\n", + " 'I',\n", + " 'may',\n", + " 'be',\n", + " 'crazy,',\n", + " \"don't\",\n", + " 'mind',\n", + " 'me.',\n", + " 'Say,',\n", + " 'boy,',\n", + " \"let's\",\n", + " 'not',\n", + " 'talk',\n", + " 'too',\n", + " 'much.',\n", + " 'Grab',\n", + " 'on',\n", + " 'my',\n", + " 'waist',\n", + " 'and',\n", + " 'put',\n", + " 'that',\n", + " 'body',\n", + " 'on',\n", + " 'me.',\n", + " 'Come',\n", + " 'on',\n", + " 'now,',\n", + " 'follow',\n", + " 'my',\n", + " 'lead.',\n", + " 'Come,',\n", + " 'come',\n", + " 'on',\n", + " 'now,',\n", + " 'follow',\n", + " 'my',\n", + " 'lead',\n", + " '(mmmm).',\n", + " '.',\n", + " \"I'm\",\n", + " 'in',\n", + " 'love',\n", + " 'with',\n", + " 'the',\n", + " 'shape',\n", + " 'of',\n", + " 'you.',\n", + " 'We',\n", + " 'push',\n", + " 'and',\n", + " 'pull',\n", + " 'like',\n", + " 'a',\n", + " 'magnet',\n", + " 'do.',\n", + " 'Although',\n", + " 'my',\n", + " 'heart',\n", + " 'is',\n", + " 'falling',\n", + " 'too.',\n", + " \"I'm\",\n", + " 'in',\n", + " 'love',\n", + " 'with',\n", + " 'your',\n", + " 'body.',\n", + " 'Last',\n", + " 'night',\n", + " 'you',\n", + " 'were',\n", + " 'in',\n", + " 'my',\n", + " 'room.',\n", + " 'And',\n", + " 'now',\n", + " 'my',\n", + " 'bedsheets',\n", + " 'smell',\n", + " 'like',\n", + " 'you.',\n", + " 'Every',\n", + " 'day',\n", + " 'discovering',\n", + " 'something',\n", + " 'brand',\n", + " 'new.',\n", + " \"I'm\",\n", + " 'in',\n", + " 'love',\n", + " 'with',\n", + " 'your',\n", + " 'body.',\n", + " '.',\n", + " 'Oh',\n", + " 'I',\n", + " 'oh',\n", + " 'I',\n", + " 'oh',\n", + " 'I',\n", + " 'oh',\n", + " 'I.',\n", + " \"I'm\",\n", + " 'in',\n", + " 'love',\n", + " 'with',\n", + " 'your',\n", + " 'body.',\n", + " 'Oh',\n", + " 'I',\n", + " 'oh',\n", + " 'I',\n", + " 'oh',\n", + " 'I',\n", + " 'oh',\n", + " 'I.',\n", + " \"I'm\",\n", + " 'in',\n", + " 'love',\n", + " 'with',\n", + " 'your',\n", + " 'body.',\n", + " 'Oh',\n", + " 'I',\n", + " 'oh',\n", + " 'I',\n", + " 'oh',\n", + " 'I',\n", + " 'oh',\n", + " 'I.',\n", + " \"I'm\",\n", + " 'in',\n", + " 'love',\n", + " 'with',\n", + " 'your',\n", + " 'body.',\n", + " 'Every',\n", + " 'day',\n", + " 'discovering',\n", + " 'something',\n", + " 'brand',\n", + " 'new.',\n", + " \"I'm\",\n", + " 'in',\n", + " 'love',\n", + " 'with',\n", + " 'the',\n", + " 'shape',\n", + " 'of',\n", + " 'you.',\n", + " '.',\n", + " 'One',\n", + " 'week',\n", + " 'in',\n", + " 'we',\n", + " 'let',\n", + " 'the',\n", + " 'story',\n", + " 'begin.',\n", + " \"We're\",\n", + " 'going',\n", + " 'out',\n", + " 'on',\n", + " 'our',\n", + " 'first',\n", + " 'date',\n", + " '(mmmm).',\n", + " 'You',\n", + " 'and',\n", + " 'me',\n", + " 'are',\n", + " 'thrifty,',\n", + " 'so',\n", + " 'go',\n", + " 'all',\n", + " 'you',\n", + " 'can',\n", + " 'eat.',\n", + " 'Fill',\n", + " 'up',\n", + " 'your',\n", + " 'bag',\n", + " 'and',\n", + " 'I',\n", + " 'fill',\n", + " 'up',\n", + " 'a',\n", + " 'plate',\n", + " '(mmmm).',\n", + " 'We',\n", + " 'talk',\n", + " 'for',\n", + " 'hours',\n", + " 'and',\n", + " 'hours',\n", + " 'about',\n", + " 'the',\n", + " 'sweet',\n", + " 'and',\n", + " 'the',\n", + " 'sour.',\n", + " 'And',\n", + " 'how',\n", + " 'your',\n", + " 'family',\n", + " 'is',\n", + " 'doing',\n", + " 'okay',\n", + " '(mmmm).',\n", + " 'And',\n", + " 'leave',\n", + " 'and',\n", + " 'get',\n", + " 'in',\n", + " 'a',\n", + " 'taxi,',\n", + " 'then',\n", + " 'kiss',\n", + " 'in',\n", + " 'the',\n", + " 'backseat.',\n", + " 'Tell',\n", + " 'the',\n", + " 'driver',\n", + " 'make',\n", + " 'the',\n", + " 'radio',\n", + " 'play.',\n", + " 'And',\n", + " \"I'm\",\n", + " 'singing',\n", + " 'like.',\n", + " '.',\n", + " 'Girl,',\n", + " 'you',\n", + " 'know',\n", + " 'I',\n", + " 'want',\n", + " 'your',\n", + " 'love.',\n", + " 'Your',\n", + " 'love',\n", + " 'was',\n", + " 'handmade',\n", + " 'for',\n", + " 'somebody',\n", + " 'like',\n", + " 'me.',\n", + " 'Come',\n", + " 'on',\n", + " 'now,',\n", + " 'follow',\n", + " 'my',\n", + " 'lead.',\n", + " 'I',\n", + " 'may',\n", + " 'be',\n", + " 'crazy,',\n", + " \"don't\",\n", + " 'mind',\n", + " 'me.',\n", + " 'Say,',\n", + " 'boy,',\n", + " \"let's\",\n", + " 'not',\n", + " 'talk',\n", + " 'too',\n", + " 'much.',\n", + " 'Grab',\n", + " 'on',\n", + " 'my',\n", + " 'waist',\n", + " 'and',\n", + " 'put',\n", + " 'that',\n", + " 'body',\n", + " 'on',\n", + " 'me.',\n", + " 'Come',\n", + " 'on',\n", + " 'now,',\n", + " 'follow',\n", + " 'my',\n", + " 'lead.',\n", + " 'Come,',\n", + " 'come',\n", + " 'on',\n", + " 'now,',\n", + " 'follow',\n", + " 'my',\n", + " 'lead',\n", + " '(mmmm).',\n", + " '.',\n", + " \"I'm\",\n", + " 'in',\n", + " 'love',\n", + " 'with',\n", + " 'the',\n", + " 'shape',\n", + " 'of',\n", + " 'you.',\n", + " 'We',\n", + " 'push',\n", + " 'and',\n", + " 'pull',\n", + " 'like',\n", + " 'a',\n", + " 'magnet',\n", + " 'do.',\n", + " 'Although',\n", + " 'my',\n", + " 'heart',\n", + " 'is',\n", + " 'falling',\n", + " 'too.',\n", + " \"I'm\",\n", + " 'in',\n", + " 'love',\n", + " 'with',\n", + " 'your',\n", + " 'body.',\n", + " 'Last',\n", + " 'night',\n", + " 'you',\n", + " 'were',\n", + " 'in',\n", + " 'my',\n", + " 'room.',\n", + " 'And',\n", + " 'now',\n", + " 'my',\n", + " 'bedsheets',\n", + " 'smell',\n", + " 'like',\n", + " 'you.',\n", + " 'Every',\n", + " 'day',\n", + " 'discovering',\n", + " 'something',\n", + " 'brand',\n", + " 'new.',\n", + " \"I'm\",\n", + " 'in',\n", + " 'love',\n", + " 'with',\n", + " 'your',\n", + " 'body.',\n", + " '.',\n", + " 'Oh',\n", + " 'I',\n", + " 'oh',\n", + " 'I',\n", + " 'oh',\n", + " 'I',\n", + " 'oh',\n", + " 'I.',\n", + " \"I'm\",\n", + " 'in',\n", + " 'love',\n", + " 'with',\n", + " 'your',\n", + " 'body.',\n", + " 'Oh',\n", + " 'I',\n", + " 'oh',\n", + " 'I',\n", + " 'oh',\n", + " 'I',\n", + " 'oh',\n", + " 'I.',\n", + " \"I'm\",\n", + " 'in',\n", + " 'love',\n", + " 'with',\n", + " 'your',\n", + " 'body.',\n", + " 'Oh',\n", + " 'I',\n", + " 'oh',\n", + " 'I',\n", + " 'oh',\n", + " 'I',\n", + " 'oh',\n", + " 'I.',\n", + " \"I'm\",\n", + " 'in',\n", + " 'love',\n", + " 'with',\n", + " 'your',\n", + " 'body.',\n", + " 'Every',\n", + " 'day',\n", + " 'discovering',\n", + " 'something',\n", + " 'brand',\n", + " 'new.',\n", + " \"I'm\",\n", + " 'in',\n", + " 'love',\n", + " 'with',\n", + " 'the',\n", + " 'shape',\n", + " 'of',\n", + " 'you.',\n", + " '.',\n", + " 'Come',\n", + " 'on,',\n", + " 'be',\n", + " 'my',\n", + " 'baby,',\n", + " 'come',\n", + " 'on.',\n", + " 'Come',\n", + " 'on,',\n", + " 'be',\n", + " 'my',\n", + " 'baby,',\n", + " 'come',\n", + " 'on.',\n", + " 'Come',\n", + " 'on,',\n", + " 'be',\n", + " 'my',\n", + " 'baby,',\n", + " 'come',\n", + " 'on.',\n", + " 'Come',\n", + " 'on,',\n", + " 'be',\n", + " 'my',\n", + " 'baby,',\n", + " 'come',\n", + " 'on.',\n", + " 'Come',\n", + " 'on,',\n", + " 'be',\n", + " 'my',\n", + " 'baby,',\n", + " 'come',\n", + " 'on.',\n", + " 'Come',\n", + " 'on,',\n", + " 'be',\n", + " 'my',\n", + " 'baby,',\n", + " 'come',\n", + " 'on.',\n", + " 'Come',\n", + " 'on,',\n", + " 'be',\n", + " 'my',\n", + " 'baby,',\n", + " 'come',\n", + " 'on.',\n", + " 'Come',\n", + " 'on,',\n", + " 'be',\n", + " 'my',\n", + " 'baby,',\n", + " 'come',\n", + " 'on.',\n", + " '.',\n", + " \"I'm\",\n", + " 'in',\n", + " 'love',\n", + " 'with',\n", + " 'the',\n", + " 'shape',\n", + " 'of',\n", + " 'you.',\n", + " 'We',\n", + " 'push',\n", + " 'and',\n", + " 'pull',\n", + " 'like',\n", + " 'a',\n", + " 'magnet',\n", + " 'do.',\n", + " 'Although',\n", + " 'my',\n", + " 'heart',\n", + " 'is',\n", + " 'falling',\n", + " 'too.',\n", + " \"I'm\",\n", + " 'in',\n", + " 'love',\n", + " 'with',\n", + " 'your',\n", + " 'body.',\n", + " 'Last',\n", + " 'night',\n", + " 'you',\n", + " 'were',\n", + " 'in',\n", + " 'my',\n", + " 'room.',\n", + " 'And',\n", + " 'now',\n", + " 'my',\n", + " 'bedsheets',\n", + " 'smell',\n", + " 'like',\n", + " 'you.',\n", + " 'Every',\n", + " 'day',\n", + " 'discovering',\n", + " 'something',\n", + " 'brand',\n", + " 'new.',\n", + " \"I'm\",\n", + " 'in',\n", + " 'love',\n", + " 'with',\n", + " 'your',\n", + " 'body.',\n", + " '.',\n", + " 'Come',\n", + " 'on,',\n", + " 'be',\n", + " 'my',\n", + " 'baby,',\n", + " 'come',\n", + " 'on.',\n", + " 'Come',\n", + " 'on,',\n", + " 'be',\n", + " 'my',\n", + " 'baby,',\n", + " 'come',\n", + " 'on.',\n", + " \"I'm\",\n", + " 'in',\n", + " 'love',\n", + " 'with',\n", + " 'your',\n", + " 'body.',\n", + " 'Come',\n", + " 'on,',\n", + " 'be',\n", + " 'my',\n", + " 'baby,',\n", + " 'come',\n", + " 'on.',\n", + " 'Come',\n", + " 'on,',\n", + " 'be',\n", + " 'my',\n", + " 'baby,',\n", + " 'come',\n", + " 'on.',\n", + " \"I'm\",\n", + " 'in',\n", + " 'love',\n", + " 'with',\n", + " 'your',\n", + " 'body.',\n", + " 'Come',\n", + " 'on,',\n", + " 'be',\n", + " 'my',\n", + " 'baby,',\n", + " 'come',\n", + " 'on.',\n", + " 'Come',\n", + " 'on,',\n", + " 'be',\n", + " 'my',\n", + " 'baby,',\n", + " 'come',\n", + " 'on.',\n", + " \"I'm\",\n", + " 'in',\n", + " 'love',\n", + " 'with',\n", + " 'your',\n", + " 'body.',\n", + " 'Every',\n", + " 'day',\n", + " 'discovering',\n", + " 'something',\n", + " 'brand',\n", + " 'new.',\n", + " \"I'm\",\n", + " 'in',\n", + " 'love',\n", + " 'with',\n", + " 'the',\n", + " 'shape',\n", + " 'of',\n", + " 'you']" + ] + }, + "execution_count": 215, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "shape_of_you.split()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 6.0.0 if statements : Where Indentation matters!!\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This works a bit like the function in excel" + ] + }, + { + "cell_type": "code", + "execution_count": 204, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "buy Samsung!\n" + ] + } + ], + "source": [ + "iphone = 9000\n", + "samsung = 5000\n", + "if(iphone>samsung):\n", + " print('buy Samsung!')\n", + "else:\n", + " print('buy iphone!')" + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [ + "## the indentation is used to identfy code blocks.\n", + "if condition_1 :\n", + " do something \n", + "elif condition_2 :\n", + " do something else\n", + "else :\n", + " do something else" + ] + }, + { + "cell_type": "code", + "execution_count": 227, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "can see a rated R movie\n" + ] + } + ], + "source": [ + "if age > 17: \n", + " print(\"can see a rated R movie\")\n", + "elif age < 17 and age > 12:\n", + " print(\"can see a rated PG-13 movie\")\n", + "else: \n", + " print(\"can only see rated PG movies\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 6.0.1 \n", + "\n", + "Ask the user for a number. Depending on whether the number is even or odd, print out an appropriate message to the user. Hint: how does an even / odd number react differently when divided by 2?\n", + "\n", + "Extras:\n", + "\n", + "If the number is a multiple of 4, print out a different message.\n", + "Ask the user for two numbers: one number to check (call it num) and one number to divide by (check). If check divides evenly into num, tell that to the user. If not, print a different appropriate message." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#your code here!\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 7.0.1 For loops" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For loops is a way to ask your computer to repeatedly do a task - until it finished the no. of times to keep on doing the same thing ! (Kind of like a slave!)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##for loops:" + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [ + "for i in some_range:\n", + " do something with i\n" + ] + }, + { + "cell_type": "code", + "execution_count": 228, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]" + ] + }, + "execution_count": 228, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## range(i,j) retuns integers beween i and j-1 \n", + "range(1,11)" + ] + }, + { + "cell_type": "code", + "execution_count": 231, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "3\n", + "6\n", + "10\n", + "15\n", + "21\n", + "28\n", + "36\n", + "45\n", + "55\n" + ] + } + ], + "source": [ + "## sum of first 10 integers\n", + "\n", + "result=0\n", + "for i in range(1,11):\n", + " result = result+i\n", + " print result" + ] + }, + { + "cell_type": "code", + "execution_count": 236, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "today I purchased somebananas\n", + "today I purchased somechocolate\n", + "today I purchased somecarrots\n" + ] + } + ], + "source": [ + "shopping_list=[\"bananas\", \"chocolate\", \"carrots\"]\n", + "## lists are iterators. \n", + "## We can automatically loop through list elements without using indexes\n", + "for thing in shopping_list:\n", + " print(\"today I purchased some\" + thing)\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 7.0.1:\n", + "\n", + "Using \"for loops \" and \"if statements \" answer the following questions :\n", + "\n", + "- who among us has the longest First name? and how long is it? ...... this is a very tricky exercise as it will imply that we can spell all our names correctly :) :) \n", + "\n", + "- and what about the shortest name?\n", + "\n", + "These are \"probably\" our names : \n", + "\n", + "Xiaoyan , Maitreya , Jason , Qihui , Chuck , Jeremy , Mihwa , Lina , Huijun , Raul , Warintra , Abhay \n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "## some tips \n", + "\n", + "## maybe I want to define a list containing our names \n", + "## and then go through each of the names and see how long they are , and note down the longest one(s)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 8.0.1 Functions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Function is one of the most important concept in programming. It packs a group of logic, that will be used repeatedly.\n", + "Every function will have an input argument, and an output" + ] + }, + { + "cell_type": "code", + "execution_count": 237, + "metadata": {}, + "outputs": [], + "source": [ + "def multiply(a,b):\n", + " return(a*b)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Finally\n", + "\n", + "You should try finish this at home :)\n", + "http://www.practicepython.org/" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.13" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +}