diff --git a/2nd/06_Programmation/1E_decouverte.ipynb b/2nd/06_Programmation/1E_decouverte.ipynb new file mode 100644 index 0000000..e71d466 --- /dev/null +++ b/2nd/06_Programmation/1E_decouverte.ipynb @@ -0,0 +1 @@ +{"cells":[{"metadata":{},"cell_type":"markdown","source":"# Étape 1: Tour d'horizon\n\n"},{"metadata":{},"cell_type":"markdown","source":"## Decrire un programme\n\nCi-dessous, vous retrouverez des programmes. \n\n!!! question \nVous devez les executer. Puis écrire une phrase par ligne de programme pour décrire ce qu'elle fait.\n!!!"},{"metadata":{},"cell_type":"markdown","source":"### Programme 1"},{"metadata":{"trusted":true},"cell_type":"code","source":"print(\"Hello les 2nd\")\na = 2\nprint(a + a)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Description"},{"metadata":{},"cell_type":"raw","source":"\n\n\n\n"},{"metadata":{},"cell_type":"markdown","source":"### Programme 2"},{"metadata":{"trusted":true},"cell_type":"code","source":"age = int(input(\"Quel age as-tu?\"))\nif age >= 18:\n print(\"Tu es majeur, tu peux passer ton permis\")\nelse:\n print(\"Tu es mineur\")\n \n print(\"Il te reste \", 18 - age, \"ans avant de pouvoir passer le permis\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Description"},{"metadata":{},"cell_type":"raw","source":"\n\n\n\n"},{"metadata":{},"cell_type":"markdown","source":"### Programme 3\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"def f(x):\n resultat = x**2 + 2\n return resultat\n\nprint(f(0))\nprint(f(10))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Description"},{"metadata":{},"cell_type":"raw","source":"\n\n\n\n"},{"metadata":{},"cell_type":"markdown","source":"## Modifier le programme de la momie\n\n\nCi-dessous, vous avez un programme qui code un jeu de hazard. \n\n"},{"metadata":{"trusted":true,"scrolled":true},"cell_type":"code","source":"# Programme de la momie - tiré du livre les maths ensembles et pour chacun\nfrom random import randint\n\ndef choisir_porte(nombre_portes):\n print(\"Il y a \" + str(nombre_portes) + \" portes devant toi.\")\n porte_choisie = int(input( \"Laquelle ouvres-tu?\"))\n return porte_choisie\n \n \nnombre_portes = 3\npoints_de_vie = 5\nscore = 0\ndegat_momie = 3\n\nwhile points_de_vie > 0:\n print(\"Tu arrives dans un long couloir et tu avances. Jusqu'à ce que...\")\n porte_momie = randint(0, nombre_portes)\n porte_choisie = choisir_porte(nombre_portes)\n if porte_choisie == porte_momie:\n print(\"Une momie attaque!\")\n for i in range(degat_momie):\n print(\"Elle te touche une fois\")\n points_de_vie = points_de_vie - 1\n else:\n print(\"Rien! Tu as survécu à une porte en plus.\")\n score = score + 1\n\nprint(\"T'es mort. Tu n'as plus de points de vie.\")\nprint(\"Le jeu est fini, ton score est de \", score)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question A vous de jouer\nLancer le programme et interagir avec lui plusieurs fois. Décrire ce que fait ce programme dans les grandes lignes.\n!!!"},{"metadata":{},"cell_type":"markdown","source":"\n\n\n\n"},{"metadata":{},"cell_type":"markdown","source":"!!! question Mots Clés\nLes mots clés sont ceux mis en en évidence en vert dans les programmes.\n\nNoter les mots clé rencontrés dans les programmes précédents et décrire l'action de chacun d'eux.\n!!!"},{"metadata":{},"cell_type":"markdown","source":"\n\n\n\n"},{"metadata":{},"cell_type":"markdown","source":"!!! question Opérateurs\nLes opérateurs sont les sympboles mis en évidence en rose.\n\nNoter les opérateurs rencontrés et décrire l'action de chacun d'eux\n!!!"},{"metadata":{},"cell_type":"markdown","source":"\n\n\n\n"},{"metadata":{},"cell_type":"markdown","source":"!!! question Variables et fonctions\nLes variables et les fonctions sont écrit en noir\n\nNotes quelques variables et fonctions utilisés dans les programmes rencontrés\n!!!"},{"metadata":{},"cell_type":"markdown","source":"\n\n\n\n"},{"metadata":{},"cell_type":"markdown","source":"Maintenant que vous avez un peu joué à ce jeu et que vous avez décrit les éléments clés. Vous allez créer des variantes de ce jeu. \n\nVous devez faire dans l'ordre les variantes 1, 2 et 3. Les autres peuvent être fait dans l'ordre que vous souhaitez en fonction de ce qui vous inspire.\n\n\n**Pour chaque variante, vous copirez puis collerez le programme précédent avant de le modifier.**"},{"metadata":{},"cell_type":"markdown","source":"!!! note Variante 1\n Modifier le programme pour que chaque ouverture de porte sans momie rapporte 10 points\n!!!"},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! note Variante 2\n Modifier le programme pour que l'on commence avec 5 points de vie mais qu'il n'y ait que deux portes à chaque fois.\n!!!"},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! note Variante 3\n Le programme comporte un gros bug. Il est possible de ne jamais être dévoré par la momie. Proposer une façon de corriger ce bug.\n!!!"},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! note Variante 4\n On part fixe le nombre de porte à 3. Quelle est la probabilité de tomber sur un momie? Transformer le programme pour la probabilité de tomber sur une momie soit de 3/2.\n!!!"},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"---\nLes variantes suivantes peuvent être faites dans l'ordre que vous souhaitez."},{"metadata":{},"cell_type":"markdown","source":"!!! note Variante 5\nModifier le programme pour qu'à chaque fois que l'on tombe sur une momie, on ait une chance sur deux de perdre 1 point de vie et une chance sur 2 de ne perdre 2 points de vie.\n!!!"},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! note *Variante 6* \nAjouter d'autres monstres cachés derière d'autres portes qui enlèvent plus ou moins de points.\n!!!"},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! note Variante 7\nÉtonnez nous avec une variante bien à vous!\n!!!"},{"metadata":{},"cell_type":"raw","source":""}],"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"}},"nbformat":4,"nbformat_minor":2} \ No newline at end of file diff --git a/2nd/06_Programmation/1E_tour_dhorizon.ipynb b/2nd/06_Programmation/1E_tour_dhorizon.ipynb deleted file mode 100644 index 25decb6..0000000 --- a/2nd/06_Programmation/1E_tour_dhorizon.ipynb +++ /dev/null @@ -1,402 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Étape 1: Tour d'horizon\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Decrire un programme\n", - "\n", - "Ci-dessous, vous retrouverez des programmes. Vous devez les executer. Puis écrire une phrase par ligne de programme pour décrire ce qu'elle fait." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Programme 1" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hello les 2nd\n", - "4\n" - ] - } - ], - "source": [ - "print(\"Hello les 2nd\")\n", - "a = 2\n", - "print(a + a)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Description" - ] - }, - { - "cell_type": "raw", - "metadata": {}, - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Programme 2" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Quel age as-tu?1\n", - "Tu es mineur\n", - "Il te reste 17 ans avant de pouvoir passer le permis\n" - ] - } - ], - "source": [ - "age = int(input(\"Quel age as-tu?\"))\n", - "if age >= 18:\n", - " print(\"Tu es majeur, tu peux passer ton permis\")\n", - "else:\n", - " print(\"Tu es mineur\")\n", - " \n", - " print(\"Il te reste \", 18 - age, \"ans avant de pouvoir passer le permis\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Description" - ] - }, - { - "cell_type": "raw", - "metadata": {}, - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Programme 3\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def f(x):\n", - " resultat = x**2 + 2\n", - " return resultat\n", - "\n", - "print(f(0))\n", - "print(f(10))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Description" - ] - }, - { - "cell_type": "raw", - "metadata": {}, - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Modifier le programme de la momie\n", - "\n", - "\n", - "Ouvrez le programme édupython \n", - "\n", - "Ci-dessous, vous avez un programme qui code un jeu de hazard. \n", - "\n", - "**Copier puis coller tout le programme dans édupython** puis lancer quelques parties pour comprendre ce que faire ce jeux.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tu arrives dans un long couloir et tu avances. Jusqu'à ce que...\n", - "Il y a 3 portes devant toi.\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "Laquelle ouvres-tu? 1\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Rien! Tu as survécu à une porte en plus.\n", - "Tu arrives dans un long couloir et tu avances. Jusqu'à ce que...\n", - "Il y a 3 portes devant toi.\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "Laquelle ouvres-tu? 1\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Rien! Tu as survécu à une porte en plus.\n", - "Tu arrives dans un long couloir et tu avances. Jusqu'à ce que...\n", - "Il y a 3 portes devant toi.\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "Laquelle ouvres-tu? 1\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Rien! Tu as survécu à une porte en plus.\n", - "Tu arrives dans un long couloir et tu avances. Jusqu'à ce que...\n", - "Il y a 3 portes devant toi.\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "Laquelle ouvres-tu? 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Rien! Tu as survécu à une porte en plus.\n", - "Tu arrives dans un long couloir et tu avances. Jusqu'à ce que...\n", - "Il y a 3 portes devant toi.\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "Laquelle ouvres-tu? 3\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Rien! Tu as survécu à une porte en plus.\n", - "Tu arrives dans un long couloir et tu avances. Jusqu'à ce que...\n", - "Il y a 3 portes devant toi.\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "Laquelle ouvres-tu? 1\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Une momie attaque!\n", - "Elle te touche une fois\n", - "Elle te touche une fois\n", - "Elle te touche une fois\n", - "Tu arrives dans un long couloir et tu avances. Jusqu'à ce que...\n", - "Il y a 3 portes devant toi.\n" - ] - } - ], - "source": [ - "# Programme de la momie - tiré du livre les maths ensembles et pour chacun\n", - "from random import randint\n", - "\n", - "def choisir_porte(nombre_portes):\n", - " print(\"Il y a \" + str(nombre_portes) + \" portes devant toi.\")\n", - " porte_choisie = int(input( \"Laquelle ouvres-tu?\"))\n", - " return porte_choisie\n", - " \n", - " \n", - "nombre_portes = 3\n", - "points_de_vie = 5\n", - "score = 0\n", - "degat_momie = 3\n", - "\n", - "while points_de_vie > 0:\n", - " print(\"Tu arrives dans un long couloir et tu avances. Jusqu'à ce que...\")\n", - " porte_momie = randint(0, nombre_portes)\n", - " porte_choisie = choisir_porte(nombre_portes)\n", - " if porte_choisie == porte_momie:\n", - " print(\"Une momie attaque!\")\n", - " for i in range(degat_momie):\n", - " print(\"Elle te touche une fois\")\n", - " points_de_vie = points_de_vie - 1\n", - " else:\n", - " print(\"Rien! Tu as survécu à une porte en plus.\")\n", - " score = score + 1\n", - "\n", - "print(\"T'es mort. Tu n'as plus de points de vie.\")\n", - "print(\"Le jeu est fini, ton score est de \", score)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Maintenant que vous avez un peu joué à ce jeu. Vous allez créer des variantes de ce jeu. \n", - "\n", - "Vous devez faire dans l'ordre les variantes 1, 2 et 3. Les autres peuvent être fait dans l'ordre que vous souhaitez en fonction de ce qui vous inspire.\n", - "\n", - "\n", - "**Pour chaque variante, vous copirez puis collerez le programme précédent dans un nouveau fichier dans édupython avant de le modifier.**" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "*Variante 1* Modifier le programme pour que chaque ouverture de porte sans momie rapporte 10 points" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "*Variante 2* Modifier le programme pour que l'on commence avec 5 points de vie mais qu'il n'y ait que deux portes à chaque fois." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "*Variante 3* Le programme comporte un gros bug. Il est possible de ne jamais être dévoré par la momie. Proposer une façon de corriger ce bug.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "*Variante 4* On part fixe le nombre de porte à 3. Quelle est la probabilité de tomber sur un momie? Transformer le programme pour la probabilité de tomber sur une momie soit de 3/2." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "Les variantes suivantes peuvent être faites dans l'ordre que vous souhaitez." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "*Variante 5* Modifier le programme pour qu'à chaque fois que l'on tombe sur une momie, on ait une chance sur deux de perdre 1 point de vie et une chance sur 2 de ne perdre 2 points de vie." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "*Variante 6* Ajouter d'autres monstres cachés derière d'autres portes qui enlèvent plus ou moins de points." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Variante 7 Étonnez nous avec une variante bien à vous!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Bilan\n", - "\n", - "Noter les mots écris en vert dans différents programmes manipulés et décrire l'action de chacun d'eux." - ] - }, - { - "cell_type": "raw", - "metadata": {}, - "source": [ - "\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/2nd/06_Programmation/2E_variables_et_types_de_donnees.ipynb b/2nd/06_Programmation/2E_variables_et_types_de_donnees.ipynb index bff4307..c0388fb 100644 --- a/2nd/06_Programmation/2E_variables_et_types_de_donnees.ipynb +++ b/2nd/06_Programmation/2E_variables_et_types_de_donnees.ipynb @@ -1,405 +1 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Étape 2: Variables, affectation et type" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Interagir avec l'utilisateur: input\n", - "\n", - "Pour demander une information à l'utilisateur du programme, on peut utiliser la commande `input`.\n", - "\n", - "Dans l'exemple suivant, la réponse de l'utilisateur est stocké dans la variable `reponse` pour être réutilisé à la ligne suivante." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdin", - "output_type": "stream", - "text": [ - "Dis moi quelque chose: \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Oh! Quelle chance, tu m'as dis \n" - ] - } - ], - "source": [ - "reponse = input(\"Dis moi quelque chose: \")\n", - "print(\"Oh! Quelle chance, tu m'as dis \", reponse)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1. Ecrire un programme qui demande le nom du l'utilisateur ou l'utilisatrice puis qui le ou la salue en réutilisant la réponse donnée." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2. On veut écrire un programme qui demande la ville de naissance puis le nom de famille et qui écrit une phrase du type \"M. ou Mme .... vous êtes né.e à ... \" " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3. Un vendeur vend des tomates à 2€ le kg. Ecrire un programme qui demande la quantité de tomates souhaitée (en kg) et qui revoie le prix. *(essayez mais dans l'état actuel de vos connaissances, vous devriez avoir un comportement bizarre.)*" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Type de variables\n", - "\n", - "Le problème que vous avez obtenu est un problème de types. La quantité, pour vous, est un nombre (entier ou à virgule) tandis que pour l'ordinateur c'est une chaine de caractères.\n", - "\n", - "Il est possible de transformer un type en un autre." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "entier = 23\n", - "virgule = 2.3\n", - "chaine = \"23\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Pour transformer en entier (integer en anglais) on utilise `int()`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "int(entier)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "int(virgule)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "int(chaine)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Pour transformer en un nombre à virgule ou flottant (float en anglais) on utilise `float()`.\n", - "\n", - "Tester la fonction `float()` sur les variables (comme au dessus)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "float(entier)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Pour transformer en une chaine de caractères (string en anglais) on utilise `str()`.\n", - "\n", - "Tester la fonction `str()` sur les variables." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3bis. Reprendre l'exercice du vendeur de tomates et corrigez le pour avoir le bon prix." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "

\n", - " À partir de là vous pouvez continuer à explorer les types de variables ou alors allez à la fin faire les exercices.\n", - "

" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Identifier les types de variables\n", - "\n", - "Pour nous (humain) les trois variables qui suivent sont itdentiques" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "a = 1\n", - "a" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "b = 1.0\n", - "b" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "c = \"1\"\n", - "c" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mais pour Python ce sont trois choses très différentes. Le premier est un **entier**, le deuxième est un **flottant** (nombre à virgule) et le dernier est une **chaine de caractères**." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "4. Trier les variables suivantes en fonction de leur type" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "a = 3\n", - "b = 4.5\n", - "c = \"coucou\"\n", - "d = \"6\"\n", - "e = 8\n", - "f = 5.0\n", - "g = \"09\"\n", - "h = \"0.4\"" - ] - }, - { - "cell_type": "raw", - "metadata": {}, - "source": [ - "Les entiers:\n", - "Les flottants:\n", - "Les chaines de caractères:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Exercices\n", - "\n", - "Dans les éxercices suivants vous devrez coder un programme qui fait ce qu'il est décrit. Vous pouvez les faire dans l'ordre que vous souhaitez." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Calculateur de TVA\n", - "\n", - "Écrire un programme qui\n", - "\n", - " demande le prix HT d'un objet\n", - " calcule le prix TTC avec une TVA de 20%\n", - " affiche le prix TTC" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Variation d'une grandeur\n", - "\n", - "Écrire un programme qui\n", - "\n", - " demande la valeur initiale\n", - " demande le taux d'évolution\n", - " affiche la valeur finale" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Taux d'évolution\n", - "\n", - "Écrire un programme qui\n", - "\n", - " demande la valeur initiale\n", - " demande la valeur finale\n", - " affiche le taux d'évolution\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} +{"cells":[{"metadata":{},"cell_type":"markdown","source":"# Étape 2: Variables, affectation et type"},{"metadata":{},"cell_type":"markdown","source":"## Interagir avec l'utilisateur: input\n\n\n!!! hint demander une information\nPour demander une information à l'utilisateur du programme, on peut utiliser la commande `input`.\n\nDans l'exemple suivant, la réponse de l'utilisateur est stocké dans la variable `reponse` pour être réutilisé à la ligne suivante.\n!!!"},{"metadata":{"trusted":true},"cell_type":"code","source":"reponse = input(\"Dis moi quelque chose: \")\nprint(\"Oh! Quelle chance, tu m'as dis \", reponse)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question\nEcrire un programme qui demande le nom du l'utilisateur ou l'utilisatrice puis qui le ou la salue en réutilisant la réponse donnée.\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question\nOn veut écrire un programme qui demande la ville de naissance puis le nom de famille et qui écrit une phrase du type \"M. ou Mme .... vous êtes né.e à ... \" \n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question\nUn vendeur vend des tomates à 2€ le kg. Ecrire un programme qui demande la quantité de tomates souhaitée (en kg) et qui revoie le prix. *(essayez mais dans l'état actuel de vos connaissances, vous devriez avoir un comportement bizarre.)*\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Type de variables\n\nLe problème que vous avez obtenu est un problème de types. La quantité, pour vous, est un nombre (entier ou à virgule) tandis que pour l'ordinateur c'est une chaine de caractères.\n\n!!! hint Types\nVous pouvez etre amené à rencontrer 3 types de variables\n- Les entiers (**int** en anglais): 2, 3...\n- les flotants (les nombres à virgule - **float** en anglais): 2.3, ...\n- les chaines de caractères (**string** en anglais): \"boubou\", \"2\" ...\n!!!\n\nIl est possible de transformer un type en un autre."},{"metadata":{"trusted":false},"cell_type":"code","source":"entier = 23\nvirgule = 2.3\nchaine = \"23\"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! hint\nPour transformer en entier (integer en anglais) on utilise `int()`\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"int(entier)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"int(virgule)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"int(chaine)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! hint\nPour transformer en un nombre à virgule ou flottant (float en anglais) on utilise `float()`.\n!!!\n\nTester la fonction `float()` sur les variables (comme au dessus)."},{"metadata":{"trusted":false},"cell_type":"code","source":"float(entier)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! hint\nPour transformer en une chaine de caractères (string en anglais) on utilise `str()`.\n!!!\n\nTester la fonction `str()` sur les variables."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question Vendeur de tomates\nReprendre l'exercice du vendeur de tomates et corrigez le pour avoir le bon prix.\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! note\n À partir de là vous pouvez continuer à explorer les types de variables ou alors allez à la fin faire les exercices.\n!!!"},{"metadata":{},"cell_type":"markdown","source":"### Identifier les types de variables\n\nPour nous (humain) les trois variables qui suivent sont itdentiques"},{"metadata":{"trusted":false},"cell_type":"code","source":"a = 1\na","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"b = 1.0\nb","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"c = \"1\"\nc","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Mais pour Python ce sont trois choses très différentes. Le premier est un **entier**, le deuxième est un **flottant** (nombre à virgule) et le dernier est une **chaine de caractères**."},{"metadata":{},"cell_type":"markdown","source":"4. Trier les variables suivantes en fonction de leur type"},{"metadata":{"trusted":false},"cell_type":"code","source":"a = 3\nb = 4.5\nc = \"coucou\"\nd = \"6\"\ne = 8\nf = 5.0\ng = \"09\"\nh = \"0.4\"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"raw","source":"Les entiers:\nLes flottants:\nLes chaines de caractères:"},{"metadata":{},"cell_type":"markdown","source":"## Exercices\n\nDans les éxercices suivants vous devrez coder un programme qui fait ce qu'il est décrit. Vous pouvez les faire dans l'ordre que vous souhaitez."},{"metadata":{},"cell_type":"markdown","source":"\n!!! question Calculateur de TVA\n\nÉcrire un programme qui\n\n demande le prix HT d'un objet\n calcule le prix TTC avec une TVA de 20%\n affiche le prix TTC\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question Variation d'une grandeur\n\nÉcrire un programme qui\n\n demande la valeur initiale\n demande le taux d'évolution\n affiche la valeur finale\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question Taux d'évolution\n\nÉcrire un programme qui\n\n demande la valeur initiale\n demande la valeur finale\n affiche le taux d'évolution\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.13.7"}},"nbformat":4,"nbformat_minor":2} \ No newline at end of file diff --git a/2nd/06_Programmation/3E_conditions_if.ipynb b/2nd/06_Programmation/3E_conditions_if.ipynb index 80c4779..ea41c73 100644 --- a/2nd/06_Programmation/3E_conditions_if.ipynb +++ b/2nd/06_Programmation/3E_conditions_if.ipynb @@ -1 +1 @@ -{"cells":[{"metadata":{},"cell_type":"markdown","source":"# Conditions\n\nQuand on veut gérer des situations différentes, on utiliser une structure `if`.\n\nTester le programme ci-dessous avec différentes valeurs de `a` et `b`. Que faut-il mettre pour avoir les messages suivant?\n\n- a est plus petit que 10\n- a est égal à b\n- J'ai rien à dire"},{"metadata":{"trusted":true},"cell_type":"code","source":"a = int(input(\"Choisir un nombre (a): \"))\nb = int(input(\"Choisir un autre nombre(b): \"))\n\nif a < 10: # Si\n print(\"a est plus petit que 10\")\nelif a == b: # Sinon si\n print(\"a est égal à b\")\nelse: # Sinon\n print(\"J'ai rien à dire\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Exercices"},{"metadata":{},"cell_type":"markdown","source":"1. Un musée accorde des tarifs réduits aux groupes contenant au minimum 6 personnes de plus de 18 ans. Un informaticien du musée veut écrire un programme Python pour les clients qui achètent des billets en ligne. Ce programme doit demander au client le nombre d’adultes de plus de 18 ans du groupe puis afficher, suivant la réponse du client, l’une des deux phrases suivantes :\n\n - \"Vous avez droit au tarif Groupe !\"\n - \"Vous n’avez pas droit au tarif Groupe !\""},{"metadata":{},"cell_type":"markdown","source":"L’informaticien a commencé à écrire le programme ci-dessous. Complétez-le :"},{"metadata":{"trusted":true},"cell_type":"code","source":"nombre_adulte = int(input(\"Combien ...\"))\n\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"2. À l'achat d'une voiture neuve, l'état applique un malus écologique. C'est une taxe qui dépend de la quantité de CO2 rejeté par le véhicule. Voici quelques montants de cette taxe\n\n| Emission de C02 (g/km) | Montant du malus 2022 |\n|------------------------|-----------------------|\n| Moins de 127 | 0 |\n| De 128 à 151 | 1074 |\n| De 152 à 200 | 18 188 |\n| De 201 à 224 | 36 447 |\n| Plus de 225 | 40 000 |\n\nÉcrire un programme qui demande l'emission du véhicule et qui affiche le montant du malus."},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"3. **Questions flashs et correction automatique**\n\nPréparer une série de 4 questions flashs simples où la réponse est un nombre ou un mot. Écrire un programme qui demande une réponse aux questions flashs et qui dit si oui ou non la réponse est juste."},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Comparaison et logique"},{"metadata":{},"cell_type":"markdown","source":"En anglais, `True` signifie `vrai` et `False` signifie `faux`.\n\nQuelques opérateurs pour faire des comparaison entre nombres"},{"metadata":{"trusted":true},"cell_type":"code","source":"print(2 == 2)\nprint(2 == 3)\nprint(2 != 2)\nprint(10 != 5)\nprint(4 < 5)\nprint(4 <= 4)\nprint(34 > 2)\nprint(34 > 50)\nprint(5 >= 10)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"4.Faire la liste des opérateurs et écrire une phrase pour décrire ce qu'ils signifie."},{"metadata":{},"cell_type":"raw","source":""},{"metadata":{},"cell_type":"markdown","source":"Pour combiner plusieur condition, on peut utiliser les mots clés `not` (pas), `and` (et) et `or` (ou)"},{"metadata":{"trusted":true},"cell_type":"code","source":"print(2 == 2 and 4 == 4)\nprint(2 == 2 and 3 == 4)\nprint(2 == 3 and 3 == 4)\nprint(\"---------------\")\nprint(2 == 2 or 4 == 4)\nprint(2 == 2 or 3 == 4)\nprint(2 == 3 or 3 == 4)\nprint(\"---------------\")\nprint(not 2 == 2)\nprint(not 2 == 2)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Exercices"},{"metadata":{},"cell_type":"markdown","source":"5. Programmer une IA au jeu Qui-est-ce?\n\nVoici 4 visages.\n\n![qui-est-ce.png](attachment:qui-est-ce.png)\n\nEcrire un programme qui demande de choisir un personnage, pose 2 questions et qui arrive à déterminer le personnage choisis.\n","attachments":{"qui-est-ce.png":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAvwAAAEHCAIAAABdhwWfAAAgAElEQVR4nOyde1xTV7r3V+53SAj3ayIWbBWJtVoFKyCt1jtoa6tTFObMdERti1M99hTPGTynemprrZ5TKzPnfc+A+NqZzoziWNvqFAvWW7G2QbQFqjYCIqhIQsKdkPePpelmJ3tnJ9k7N9b3M5/5lGRn7yWsPOv3XNazWBaLBSAQCAQCgUAEOmxvDwCBQCAQCATCEyDRg0AgEAgEYkyARA8CgUAgEIgxARI9CAQCgUAgxgRI9CAQCAQCgRgTINGDQCAQCARiTIBEDwKBQCAQiDEBEj0IBAKBQCDGBEj0IBAIBAKBGBMg0YNAIBAIBGJsYHHE6dOnvT1GhKdhsVgOJwZ1eDyet/9BCE/z1ltv0TV/Xn75ZW//axCeRigU0jV/LBYLi8Xy9j8I4Wn0er3dyeA40tPT0+OB8SF8CgutJ7INDw/TeDeEX6DX6+m61f379+m6FcJfGBwcpPFu9Bo0hF8wNDRk93WU3kIgEAgEAjEmQKIHgUAgEAjEmACJHgQCgUAgEGMCrrcH4Cs8KhbD/wjl8cL4fADA3cHBe0NDAICb/f29IyPeHBwCgQhoxGx2glAI/9tqgm729/eazQCZIASCPlwUPc8+++yECRPoHYqHERuNsvv3Zffvy7q6uBQqbYe5XKNCYQwJMYaE9MpkHhihxzh69OhPP/3kySdGRka++OKLnnwigjmam5sPHz7s4Ye+8MILUVFRHn4ovUDjI7t/X2w0UjFBA0KhMSSkW6EwhYQMiEQeGKHHOHDggIfL1ZOTk+fPn+/JJyKY48qVK1988QXFi10UPXl5eatWrXLts96l59at+g8/vFFZ6ewHucPDirt3FXfvAgB4MlnEtGnJeXkR06czMEZPc+3aNQ+Lnvj4+Pfff9+TT0QwxxdffOF50VNUVDRjxgwPP5QWOmprfzp61AUTJOjvF7S1hba1AQAk0dER06enrFsniYlhYIye5uTJkx4WPVOmTEEmKGD4n//5H8ZFjz/SUVvbWFHReuqU+7caMhpbT51qPXUqfNq0lHXrAkP6IBAIRmk9darhwIE7Fy+6f6uetrYblZU3Kitj58wJGO8LgfAAY0L0DHZ3XygupkXu4Lhz8WJVQYFiwoQZ27cr/Dzfh0AgGKLn1q3Tr77a1dBA+52t3tfUN95AJgiBcEjg797qamj4bPlyJhQP7hGNFRXMPQKBQPgprVVVny5fzoTisXLn4sUv8vNvHDnC3CMQiMAgwEVPY0XFZ8uX97S1eeBZl95++/Qrrwx2d3vgWQgEwi+49Pbbp199dchoZPpBQ0bjha1bL739NtMPQiD8mkAWPfX79nnYBLSeOlVVUIB0DwKBAABcKC72cAAYunnIBCEQRASs6Llx5Ej9hx96/rldDQ1I9yAQiEv/+Z8ubNFyn66GhgvFxZ5/LgLhFwSm6Omorb2wdSvFiy0AWAAA2BPpLBYw+oA6/AWkIKODQIxxWquqGg8epHjxA/Pi0MJQNkGtp04hE4RA2CUwRc+3O3c6vghaGYuFBQALAMBi/fwWizXqR+sFFgvF43pbT51CRYUIxNhksLv7PAXNYXWlHpiX0TbHDvACKvIIgBuVlR21tY7HikCMMQJQ9DQcOOBgowQ0GdDKODQ0WFgswHr4AUd259LOnSjJhUCMQer37SOvXIa2A+9rUeSh1XIofFCwB4GwJQBFj4cqBx1ZqyGjEW1iRyDGGoPd3Q4SWxaL80rHDizgwPXqaWtD8WYEAkegiZ6uhgaSDeoPLIQL3hUJxHbHK2WMCATCi7RWVTm4gkb7A3PuJINhsj8ZAuGPBJroIfNsLBYW5UpAWuhpa2O0IxkCgfA1yHQGE/aHVEK1njqFkuwIBJZAEz1kIsPZCh6KkBsdh24fAoEIIByYIIYgllPI70IgsASa6BkymbzwVM8GkBAIhM9CmF5n1EoQyykkehAILIEmeoi+4cyqEmRxEAgEAD6YS/LACRgIhB8RaKKHCA9X81iRREd75bkIBMLz8IOCvD0EBAJBRqCJnvAnnvD2EEYhiYnx9hAQCITn4Eml3h7CKMKnTfP2EBAIHyLQRA+hp8VcCSEpigkTvPJcBALhFYi+8hYmTRBJHFuK/C4EAkOgiR7viAzi3BkSPQjEmIIouMuk5CHL3aNgMwKBJdBED0kNDYNFPcQ+HMrxIxBjCrLICmOVhUQGyNfS/QiE1wko0dPV0NDV2Ej0rsOu7a5BckeeTHb6lVcaKyrQHi4EYixw5+JFso7wHk+ydzU2XiguRiYIgbDC9fYA3KXn1q3WU6c6ams7Ll50vDmTAaNDcscho7H11Clrh9bwadMipk+PmDYNlRYiEAFDV0PDnYsXW6qq7ly8SH7lA7+LditEfMMho9F6GA5PJouYNi1i+vTwadNQ2h0xZvFX0QO1zo3KSqc8GAvcu06j0XHmbncuXrxz8WI9AACA2DlzkPVBIPyXroaGG5WVrVVVJKEdxrFYLCyqBgjrg1kFUOycOajoBzGm8D/R01FbW//hhw6dKruwAN3BHlfvZrU+kujo2OxsaH3oHBgCgWAGd0zQgyNC6bNCrt3IKoAuvf02NEHjcnKQA4YYC/iT6HHL1jyEtmCPMz4WCT1tbY0VFY0VFZLo6HG5uckvvYRqnxEI34QWE0QndIgnZIIQYwr/ED002hoagz30ZuZ72trq9+1rOHBgwurVyO4gED4FnXKH7mAPXUATdOPIkZT168fl5Hh7OAgEI/j67q3B7u4LxcVVBQW0eVd0beDC2iz6NoUNGY31+/Z9tny5tfwQgUB4kcHu7tOvvEKbCWJo1zp9t+1pa7tQXHz0mWeQCUIEJD4teroaGqoKCtz97uHMARMOFt0CyGp3Ompr3b8bAoFwja6Ghs+WL7duwHQRC8YoQFvB6AYu+kzQF/n5aK87IsDw3fTWjSNHLu3c6eIRwbDgBsaQPRxGho/DDsBVetraqgoKZrz11rjcXNqGh6AVnU538+ZNAIBer9dqtdYXdTod/G+NRiOXy63XZ2ZmAgBSU1OxLyJ8k8aKiktvv+3ih7E1f3QU/zkBTgC58fA7Fy9+kZ8/+7/+K2L6dBoGhmAArVZrMBjAaBOk1Wr1ej38b2hzICqVSqVSAQAyMjI8PE7fwUdFz6W3326sqHD2UxZrnQ20Ml7MmuMG4EbV84WtW3tu305Zt462sSHcoKamRqfTabVarVZbXV3t8Hqia+RyuUaj0Wg0KpVKo9EgGeRTwKy60wEeqDAe+lo+UbPjtg82ZDQi18unqKmp0Wq10Aq5Y4KgAMrMzIT/MXZkkM+JnsHu7qqCAudiqg/DuT5iZ+wAR2a1icA5QVa/b1/PrVsztm9naHQIEvR6/dGjR6urq6HQofG21dXVWHuk0WgyMzNzcnLGjvXxTboaGk6/8orT3XesksIHrRDWB3NJAF3YurWrsXHqG28wNEAECdAEVVZWQqFD121hQBpngnJycpYuXarRaOh6ig/iW6LHWcVjYaL1DnPY2EQL5S1gsA1j9h//iHZ1eQadTge1TqWTJWVsNovH5XJ5XB6XMzJiGRoaHhwaMptHHH4Qiqo9e/YAAHJycjIzMzMyMgLb+vggXQ0NX+TnU82qY6WD/1ghrM2kboIaKyqGjEbkenkMaILKysqcFTocNhvaHy6XOzJiHhwaHhocNo9QNUElJSVyuRyaoKVLlwZeBNqHRI8TiudhyMR3QzvUwMgfx45XV0PD6VdffbqsjNkxjW20Wm1NTQ11Q8PlcPh8nkDA4/N5PB6Xx+Ny2HY2B4yMWAYHh4aGh4eGhgcHhwaHhgcHh0huW1lZCcWWRqMpKioKSNPjgziheJyP1/omD7UPpcAP3FOCdA+jaLXa8vJyGNehcj2Py+HzeXw+TyDg83hcHpfDtm+CRgYGh4aGfjZBQ0PDRPfU6/VlZWVlZWUgEE2Qr4geqorHH10rilCwO3cuXrxQXIyMDhOUl5eXlZU5zJGz2SyhUCAU8EVCgUDAs2tfCD7FFwI+9sX+/oH+gaHBwaGBgcEBAg2k1Wrz8/MBAPn5+TDyTOVxCBeAW9MdKx6vbI9gGph+pxD1uVFZKU9OnrB6tQcGNaaAOaySkhKHWofDYYuEAqGALxDyBXw+m01pKrLZbJFQIBIKsC9aHbC+voG+/gG7H4QmCMZ+XnvttQCIPfuK6Pl2504nFE+AWRzgxL/oRmVl7Jw5sdnZjA5n7KDX6/fu3VtWVkZia9hstlgsgCaDz+fR9WihUCDE2KD+/sG+/oH+/oG+/oGREfyuY+h4qVSq/Pz8NWvWwC0YCBqpKijw5ilaPgC0QQ6lz7c7d0ZMn47OrKALnU4HTZB1v5UtHA5bIhaJhAKhkM/j0bZqwxARkIiAAoyMWPoHBvr6Bnr7BgYGBnFXWmM/ARD48Yk+PfX79jluxuOTPUwZwVGbjfPFxYPd3Z4ZSwCj1WoLCgoUCgWRdyUQ8BRyWWx0mDohKjJcGRwkpVHx2CIU8hVyWVRkqDohOjYmXBkSLBYJcQlcnU5XUlKiVqsLCgooRr8RVLhQXEy1lDDQrRALAId9fi4gE0QH1dXVubm5arV6z549dhWPUMhXhgTFxYSrE6LDwxQymZhGxYODzWaJRUJlSDB8XGR4SJBMzOHgFQIM/KjV6o0bN5KoNF/G+6Kntaqq/sMPya4IlPQ5Vaw7vAgYMhovFBd7bDiBR3V1dVZW1pQpU8rsFUgJBLzQkGBVfFRcTIQyJFgoFHi8zQpLKOAr5LLoqNBxquioCKVUIsKNoaysDEkfumg4cMCB08VQG2VfxeF072poqN+3zxNDCVDKy8vVanVWVpbdfRIioSAsVK5OiI6NDlfIgwQCvu01jMLhsKVScXhYiDohOj42QhkSjMuL6fX6PXv2qNXqbdu2+Z308bLo6bl16zz5+j12AjxYHP2TW0+daq2q8sxYAgmtVpuVlZWVlWVbu8PjcUMUQfFxkXExEXK5jMvleGOAeFgslkQiioxQqhOiIsJCRKJRpqesrGzKlCn+aHd8h66Ghm937iS7YmyaIOBA6jUePIiaNbsA9Ljy8/Nt3RWruxUTHRYcJLWNsngFPp+nkMtiosPGqaIjwkOkEpG1ikiv18PAs3+ZIC//Ws8XF7vYc3nMc+ntt1GEmTo6na6goGDKlCk4ucNms4KDpLHR4QlxkSGKID5j0WM3YbPZMpk4JipMnRAVqgwWPEy0+and8RFgE0KyK8as4gGOQ84o3uwUOp3OrsfF4bAVcll8bIRPuVu2sNlsmVQcGaFUJ0RHRijFYiF83WqCysvLvTtCinhT9NTv2+fgDL+xbHEAAKTJ9Z62NheaVo9B9Hr9tm3b1Go1LpklEgmiIpTjVDFhoXKh0NMBZJfhcDjyYFlcbERcTHhwkASmvax2Z+/evd4eoD/hYP/EmLc/5Lqnq6Gh4cABTw7HT4Eel1qtxskdiVgYHRWqTohWhgQzWi9ILywWSyoRRUeGqhOilCHBsMxIr9fDWh9nG5t5Hq+Jnp5btxyU8oCxVMdDAMtiITE69R9+2HPrlifH43dUVlaq1eqSkhLsi0IhPyY6LCYqTCIReWlcNCAQ8MNCFeqE6LBQhdXuFBUVZWVloZAPFTpqax2U8ox5+/MAUhOE4s3k7N2717Z8UCIWxsWER0WGikVCL42LBjgcDoxRRYaHwNizTqfLzc318Rpnr4keB6U8CIijjiCXUTkhAXq9Pjc3Nzc3F/v1Ewr50VGhsdHhuLo8/4XNZgUHSeJjIyLCQ6D0qa6u9gt/y+s4TmwhgAPlN2Q0ongzETCfVVRUhDVB4odyx/PlyQzBYrGkUnFcbER0ZCi0q3v27LEtJPAdvCN6bhw5QpbYIg1vjEFIfhc/HT3aUVvruaH4CTDAg134eTxuVIQyNjrcr10rIlgslkwqToiLjAgP4XG5dgUfAkv9vn0kXXksAIV5MJAmuRoqKlC82RYY4MEu/AIBPzY6LDqA5A4OsVgYEx0WFank8bhQ8PlmyMcLomewu/sS+XaJwGt46h4Ok1yeHIyPo9frCwoKsOs9h8MOD1PEx0b4dTKLIjKpOD4uIixUzuGwofKj8YTCgMFBbt1iQdYHD7FBHjIaUbwZi16vxwV4oMcVFxMuDJQAMwkSsSguJiJEEcRisfbs2ZOVleVrJsgLogceXEf4Norx2EKqAu9cvIiCPRCtVotLnwcHSRLiIoNkEn8/po06LBYrOEiaEBepkMsMBj1RO6KxjINFesxMFecgtsw/HT2Kgj0Q6GlgAzwhiqAx4nFZYbNZIYogaHhhlxCfyrZ7WvQ49LE8OBZ/AwV7SIFNa6zdL7gcTkxUWFioguLxWAEGm81WhgTHx0WKxcKCgoKCggJvj8hX6Kit/enoUcK3kQkigfiXg4I9AICNGzdiY8x8HjcuJhzGPLw7MK/A5XJgiL2/rzc3N3fbtm3eHtEDPL0eOPaxxuT8oAQK9hCDW9dlMnF8XASuld8YhMflRkeGhiqDoSL0wfy653HgdCH7QwSpcR7jwR5YRbdnzx7rKwq5LD4uMlDLd6jD5/NiY8IVcllJSYmPVBl6VPQgH8tdULDHBphBt2ZwWCxWRHhIRFjI2Azw2EUeLIuLCb96pR6V+DjYQoEUj0NQsMcGaIKsGRwOhx0dFaoMCfbuqHwKZUhwdFTosWN/94USH48uDCix5S4o2DMauEfAmkHn83nxsREyqdirg/JFBAJ+XGyEeXhwypQpPpVf9zDIBDHH2Az2aLVarC8hEgriYyMCcouom4hFwvjYiKbGH7yuezwnejpqax34WMjNogKxaR5rDTNg2TLW3MRGhzF3CrG/w2azI8JDwsMUBQUFXne2vMKNI0dItqkj+0MJ8u3rY6xBM6zStaZspBJRTHQYh+Oj50h4HQ6HEx0VxmaNeFf3eE70kDU/RT4WdYhNc+upU2PH07I1N9FRoSil5ZAgmUQk5M6Z4/0gs+dBYR6muXH06Nhp0IwzQfJgWUR4iHeH5BeEKIL4XFZubo636ns8tEj03LpFVs2DcIoxn1bHmRuZVBwRHjI2t0i4gEQsFAt5Xg8ye5iO2loU5qENAhM0dho040yQMiQ4VBmMTBBFgoIk/b3GzMxMr+geD4kessUY7Zigj5/GgKdlq3jCwxTI3DiFSCSQSvj5+Wt8YTOFZ0BhHtogLUVoGAOix1bxKOQy7w7J75BKxXc6bnlF93hC9KAwD82QptUD29OCGyVQjMd9hAJ+V2dHRkbGWNA9jgsKEU5B3CN+yGi8ceSIh4fjSXCKJ0QRhBSPa0jEwrt3bmVmZnr4uZ4QPSRhHp8+48Y//b+GiopADfbgFI9QwA8PU3h3SH4Nn8/r6mz3VpDZk4zZhg5MQRrsCeDfNuzHY/2+SMTCEEWQd4fk14hFwrsdt/Lz8z35UMZFz2B3d+upU0TvsrwlLCwUHmzzrbbYPfvTK/8E4mDPkNHYWlXl4eF4ho0bN1rLUDgcdmSkEsV43EQg4N9pb83NzfX2QBik59YtsjCPl7BvTCh8xGJrvbxigogf2tPWFpDtM6DTZe35zuNxUeWy+4jFwuOfVBYVFXnsiYyLntaqKsKTthiq5sF8Gy2A4Mvp0mrJAsDOp1isUQ/C/j+jEP8LGg8eZPzpHqeoqAh7hlRkuJKLtobSgUQiulz3bQA37yHZR830t9QC5Yk9a2DfmJDCsv4P9923a4KYhsUieUxAJtmxTheLBaIilGi7KC3Ig2V//N//gz2wjFEY/5uRLcA0Kh6LxWJ1fzC3ZdH7FGJ+ftDD/3fBk3MOYtPW1dAQYJ5WZWXl3r17rT8GB0nRERM0EqIIWvubXwdqkusGcUEhnZFmrAmy3h/KE6+YIEAtnu3mEwkIvPYZJSUlWKdLGRLM5/O8N5xAIyxU/uorGzzzLGZFT1dDQ1dDA+Hb7nwlcSaGxWL5WKrD1pN7EJemyxCRelpkXZH8Db1ejz1Xi8floBbvtCOVCIqKXvX2KOjnxpEjTEWacSLH90yQbTybZhMEyGx4IJkgrVaLPS9TKOAHB0m9OJ7Ag8VimYxdmza97oFnMSt6HASWXTAR1m+sD5oYRzyISz8cNSYJ56INIvnnB1JL+IKCAmwQIlQpZ7P96y/vB7BYrKovTngswuwxSMI8LioeTETZ3yzQKBNEmPqniUDau451ugAAqEcGE3A47P9XUWYtmWIOBkXPYHc3yU516lNm1PcygE6rwCThWMBlDyzQPa3q6mpsuQmfx5VIRF4cTwAjFPB/WZDv7VHQCV0lzDgTFBgGyDbvZnGhJIh0R0Vg7F0vKyvDtvGUiIUoscUQEolozZrVTD+FQdHj1rkTmMBxYJgYh/wcBKKpGjEwPC1sHh0AgDaIMkp3d1dJSYm3R0EbbpUwY5Pn9AzH12FZS4KcMkGBvqMCW00IkAliEhaLpf3uW5zNpx0GRY8TDQmt3y7rfwSKO+UKmGpExyHogN67rtPpysvLrT9yOGwU5mEUmVSMM/F+DVkJM+7nh3FWbJkgQ6PyA7AF0Q4FEOmOCrKaTn+guroaG+YRCHgCAd+L4wl4ZDLGTRBTR1L33LpFON1x9YPYHz1oaHTmYfgf7RZzv6OLVawHu6PlLJac7bmd0tgQtAVuNrH9FRH/0m5UVsZmZzM2OsbBSX6pRDSWxbAH4HK5/X29lZWVOTk53h6Lu5A0y7CMFj0WjJPlsenVb7G0j5gBAP0AtFvMDq/3lgnCCyDoZWG/hiyWhfj31nDgwMwdOxgfJGPgTJBMIvbSQMYKIqHg8uXLOp1OpVIx9AimRA9ZYJnFAhaLnQ2WDAAtC5Q17SPmPmCB/+H+nVVsDgBAAdhyNjuSxZGzWJEMWyJKAmg0cOOoJCaG0YExx9HRnrpUiiwO44jFwsAQPS3EYU7W6MWbUaGjHzHrLRasCdLRYX+EAECDE8niiFgsFYsjZN4EEQkg8r3rg93d/CB/TQnhTZAMmSDGkUpEe/bs2bNnD0P3Z0r0kHVhBkwJHavE6bJY2i3m9hHHIRyXgZZLB8xg5OcXFSx2MIsVyeJEstkKwFZxmPr14gQQIDbcNyorU9avZ2gYjKLT6bCBZS6HIxKi3jxOkJ4yfnnGE7/94E9OfUoiFpaXl+/Zs0culzM0MM9AYoKYc7egCdJZzPqRkdtghBb/yv6DsCYIAzRBajY3mMWKYnEYlEG2AsgeMMk+zj9bfmu1Wuy+UZFQgBqiOsXSWZrHEmL+8/8dd+pTErHw6NGjfiZ6uhoaetramLizLTrzcLvFrBsxt1tGuiwjjj/AJF2WkS4L0AHzA0M0BCLZHAVgRbI5KhYnks0RMmBnye/ov6IHt30aVfM4RdHzz6x6egYAYHnGE3+r+Yb6BwUCPpfDqays9PCBOPRC1p6HVvotFt2Iud1i/mlkmFEviyIPTBBGbEWyOVGAHclmR7I4TLlhpGat8eBBPxU9uDblErHQWyPxOwQ87tbVi+dNnwQA+FLbcOHqdeqfFYmEN3S66upqhs4iZeQ7wOhORf2I+SeL+abZzKgjRRftI+Z2AH4YeVA/pGCxVSxOJJutYnMZj0UDAADoaWtrraryx8oebJgHACCRIItDiXCFbFfhCxMSouCPryzLPlv/Y/t9A/U7iESC8vJyvxY9ZGEet2kfMd+2mG+azTqL2euOlkPaR8zt1oD00AMNlMDhMBsHwtDV0OCnSXbkd7lGXHjIrnUr1FFh8MeteYteKCnt6R+g+HE2myUU8svKyvxJ9NBucaA79dPIcOPIsO9bGRK6YDhqBAAwAABQsTlqNpe5IBDET8uZsaKHzWKh3BYVMjTJ/7ZmsUz8s3UWC/m/y19SuNuJ/gVCIb+6uprRWkJGIT/k2DXaR8y6kWFohbweznEHqIG+GxkCDwuDoAliLhcPAGg4cGDqv/wLc/dniLq6Out/8/k8Ho/BX1HAMOfxR3+Xv0SE2eMWrggqWvHM9gOfUL+JUCA4Sn33t5PQ/1fsqK2lJbdlFTo6i9n3IzquoRsxWwPRjwXLCmdquJ3G+z+2DvcP0vgUPy1nxlocsViI9m055I1fLFg2e6rt61OTVblPPX7kq28p3kcoFAAAtFqtn4oeujo16EfMDQEhdIjox5qgITArPHT1k5PN7fdpN0E3jh71O9Gj1+uxBT0ot0WFf141/7mMJ2xfX5o+5R+1V2sbfqJ4H6GQ397RqdVqNRoNrQMEgAnR42Yj4AbzcGALHbssz5i6YVm25GEwo/vWXWPr3Xs/tnZda+3roqE0oaWqasJqxjtd0ohOpxtVQihCFoeMpNiI7S8vT4hQEl3w2nPPnK5r6uw2UbmbgM9jsVhardZP93C5E+aBvlaDecgvUlc0UrBgVuHSLOuP3bfu3v+xtfNaKy0CCHZn9q/KHlx6HZ1wTM4kdfS/rlliTWnZUrx60XP/tn9oeJjK3YQCPgDAb0SPCxan32L5YWSo0TxsrX0ZO8SGK/69IHfSuFFhmKCYsKCYsJgnHwMA9N3vvv9j670fW69dahCPuNimubGiwu9ED/ZHsRhZHEJWz0vbsMxB+lIs5G9e+ewbv/8rxXvy+Tw/PYfLtdwWDOr8MDJMy35y/+LRhKiSgqW45QqaIFXmFPBQAN1rarl19SeXG/O1njrlX6IH63QBAFB6nQiRgLcuZ86KrGnkwfgopXztkoz/PkwpCsvlcthsNkPncNEseroaGqhvmhjLhgYAwOWwf/HMzF8vns3nkv0VRCFBMU8+FvPkY/Jnpq7dVhpv4SRwOGoWx6kGZT1tbR21tRHTp7s9ai/A43J4pL+iMUtUSPD2l5dPUlNKXM55/NEZj4278P0NKhfz+VyDwYnaZ9/BqdwWjCv7e6Wgywj5vMKcrBfnTCdfrqwCiNWo27bnkIrFUbO5KifLEP0uyY6N9IhEApRet8uTj47bumZxBLWjOVY9M+P4hcs32u5SuZjP5zLkd9G8llDZt9U+Yv7OPOQwgaxjYkQAACAASURBVLVl1QJ1dGjlV999/nU9fQP0FSYkRP1uzZLEmHDqH0mIUC5f8NQfjtXAIkS4EYy6ALpRWelHoger8V3LbSXFR7798nPV3zV8duHyj7fu0DYyn+H5rGmvLntawHfiK7x19eLl/7pvYMhxPJXP4+HC+/4ClTBPg3m4wTz0w8gQeaXOrvUv8Lmco199V/XtD3QNz3eYPkG9dc3iyJBg6h+Zmqx6fPrETy9cvmAeBADAThzUBZD/ts9wLcwzK2X8b1fM+7z2yqcXLrfe7aJ9VN4lWCL87Yvz50+fRP0jHDa7JH/p6h3/h8rFfB6PIb+LZtFDYnGccqoK5s9anjEVAPD4Iwn/vPLZz7+ur/zqu6bWDjrH6iVkIuH6ZXPsFpw65FeLZv/9rBZuP4YbwbACaAKHR2J9/Ks1Klb0CIVOx9RjwxQfvPaSXCp6ae7Ml+bO/On23aNntJ/X1t/v7qFzlF4iKT7yjZULcClRKoQrgn61KGPfEcexELhRRa/X+1eLQpLcFsyh3zSbHWodyL+tWTJ7chIAYMZjib39g19cunrsXF3dtRZax+sdwuSy366Ymz31MRc++9pzT3/53Q99A0Pg4UYw6gLIj0WP8wU9E1XR//ny8wI+91eLZv9q0WztteYTtVc+vXAZ/ur8neUZT6xdmhns/B7+CQlROU9NqfzqO4dX8nhchvwuOkWP3Z6E2t4eHZdN0dBAlmdMLcz5uaROKhI+lzntucxpP9xsO3z60smLV/103rBZrNzZj6/PnSN1oyy3aMUzb5TiKzOwAghan+jhkUfFEj7mLED/bY3qrJsVLpd9sPElufTnL6Q6Kqzo+Wc2LMuu0Tb86VSt/y5dyXERz2dNW5ymcTnYvurpJ/9ac7Hjfjf5ZVwuBwCg1WoZapXBELa5rV6z+XJ/n47HdqpecMuq+YvSUq0/ioX8JelTlqRPablz/6Oq2uPntX5qgnhc7ktzZ/zTgll8Hs+1OyhkkpcXZez92xe4120FUOSgeYpEgr3Gv5Ls2BVX6OQho4nRYf9d9AtsFFYzPl4zPn7j8898XnvlT1VfX7tFKcXjg0xURf/rmiXjogkLlh2yITf7ZO3V3gEH1fHQBDEBnaIHm9u6ZDR+0939jdEokksVcieiC0vSp2xZtcDuW48mRBfnRW98ft6nF+o+OXf5+5seavpMC6nj47asWjDemXyWXeZMeXRqUsKlpptEF0Dr09llCLaAbz/7rKO29s7Fix21tUMm042jR/1O9HA4bKfaY8ilot9vXhOttBOf4HLY2VMfy5762LVbdw59ceGTc3W21/gssWGKwqVZz0yb6OZ9eFzO5pXzN+37M/llftpu3xrm4UmlVa2tl4zGb4zGiPAQGceJI5PW585Zbm/bLQAgLjzkn1c+uz436+iZ7z4+dbGtU2/3Mt8kQ5P82xVzo+x9NZziF3NnHv7q25Y794kugCao/V7nVNX0P7/zDrQ/d775BvhVkt1ayCwU8J3yMVSRoaWb1tj1bPk8HlTP3zbe/Ev1Rf9Kmyqk4lefe3rhzFTHl5ISJBGtXZq1++MT5JdB0cNEX2Y6RU/rqVOxc+bEzpkTm539i+AHqWKFwAk3fWpSwtbVi8ivEQv5MPBz617XZxfqP/u6nuTr5wuoo8LWzEtbMHMyXTfc9OKzK//99+TXcDkcnU6nmDBBMWEC3LfV1dDQWlXlRxkuiLM+1u71K2NCFeTXjI8J/7c1S15Z9vTnX1/+x6Xvr9y45cYAGScqJPjXizOwgQc3mT05acr4+O+uNZNcw+GwATMWh1G6fvhBvXRpXHb2PaVyxZQp8EWRM+nR+dMnrXk2nfwaiVCw6ukZq56eceHq9S+++f6LS987dFu9yyR19G+WZj356Di6bvj6C/OK/vsj8ms4HI7BYIiYPj1i+nSY1eqore1qaKBrDB7DqfS6RMjfvf4Fh3mfx5MTHk9O6Ljf/dnXl09cvHrdt4sOpSLhi9nT8+bOFDlpjYl4MXv6X6svNpMu3Mz5XXSKnvl/+5vtgiqg/GsKV8jeXvs89cfFhCpguvSqru34+ctffHNFb+qj/nEPMGNi4qqnn5zxWCK9t02MCV+Srvn7WbJ8J1y0sEABRO9IPAD1+QMA+F3+EuqVLgqZeOXTM1Y+PeOuvvtE7dWT31xtuHnbpTEyhSoytGDhU/OmTWTTvXPk9ZXPvvQffyC5gMVicfwt2DPY3b30iwdpl2sP932wWSwu5a1/SXERxasXU3/ijImJMyYmbvnFgvNXr/3jm+9P1zX6VNqLw2ZlPf5o3tyZjyZE03vntEnjNY/Ea38k081cLhtXkwEFEL0j8QDUTRCLBd5ZuyI2PITi9REhQfnzZ+XPn9V65/6nX9f/4+LVmx2drg6TERIilC9kT188U+PUhgkqvPrc05s+/JjkAmh/mNi1Tue/xFbx8HhcNpuqvX5v/YsuFEYBACaqoieqov955bNfXf7xRG39yYtXXbgJjfC43CXpqS/Mma6KDGXoES8vziQXPWw2GzDW3MmTULc4i9M0roVew+RBsN659c79kxevfvZ1vddNz1MpjyyZpcnQMCVSk2Ijnn7isS+++Z7kGg7lb66PYDeESd1NFwv4u9e/yHf+qAEelzM7NXl2avLA4PDpusYTF6+ermt09ib0IhHyl2dMXZE1PZzaXmIXeHX50798+39JLoAmKAAQ8KnWP/1mcea0R9UuPCI2POTlxRkvL85ovHn75Dffn/zmisOqO6Z5YoLqF0/PTE8Zz9D9Z6cmP5YQTVKjApWDr4seW6hPlzXPpiXHRbr5uKcmP/LU5Efe+MWCqks/HD9fp/V4verkxNils6bMefxRCcOdrMIVshezp/+pqpboAhjpwfXX8kcEAkpTKCRI8tsVc918Vmx4yC8XPvXLhU81tXacrL1y6tsfPLzRNCk2Yv6MlAUzUhUyJ2pQXGNdzpyqb74naXbJ5rD9tD8hFuqiuej5uW5KBAGf+8y0ic9Mm9jTP3Dq2x/+cfEqxa5INDJ9gnphWmr24xNcLlWmyCR1zFMpj3xV/yPRBYEhelgsFp/aKjY+JuyXC59y83HJCVHJCVGvLM++fL3l5MWrX37XcFdPQ0d+6kSFBM+fMXlxeqrDIgH32bAse937ZGcC2uYraIFZ0UNxusilol8ucHe6WJGKhEtnTVk6a4qhp+/LbxvOXG668MONQQq9SVwmIiRoafqUhTMnu18kSJ2C+bNIRI+/Wxy43HI4bIqZ3XU5WRL6+sQnxUYkxUZsWJZ9/dads1eunb38I3kFjJtMVEVnTnk0e+qjsWGMGxorsWGKRWmaY+cI44X+PoUgFE3QIzHhOU9NoeuhEqFgcZpmcZqmb2Dw/NXrp+uavqprMvYxeH5XclzEvOkp859MUQZLmXsKjsLcOSSih8P2y7IwHNT99k0r59P43MmJcZMT4za9+OwPN9vO1l+rqWtsbG6n8f44RALeM1MnLkib/PgjCcw9BccTE1SPJyV8S7wph81mM+G3+4ToyV/wFF0VUliCJaKcp6ZAW9bU2vFjS/u1W3d+uHm7saW9p4/qMfdExIYrUsbFPv5IguaReJIzj5hDIZOseTat/PNzdt+F2w0YauPtMSh6q7HhiiXptK1YWBJjwhNjwlfPS+vu7fu28eZVXVvDzdsNzW2GHncXMGWQNH3S+OmPqadNUCtkEscfYIBfL55NJnoCogUtxXTVbzA9MmhEJODPefzROY8/CgC4cuNW/Y2Whpu3f2hu17Xfc//mqsjQJ5ISNEnxUx6JD3NmhyxdjI8JJ0mSBkYLYx61WpYnJqgYkguPJkQ/mhD9q0Wz73ebvm1qvqq79YPudkPzbfdr56UioWZ8rOaRBM34uMmJcbSM1lnW58z5p3f+SPQuPAGQ9ocyLHooWBy5VLT8KVc69TkF9N2tP97p6r52605TS3vrna62+/rbnd237pJVkiuDpAkRyrgIRVy4Uh0VNkkd7a2FCsuqp2ce+qLW7hFugSF6KFqcfEfbbdwnSCzKnDIhc8qDIpu2Tv2Ntrs/3b57s/1+6537uo57JG0PhXxekEQYJBaGBsuS4yMnqmKS4yM9GRQkIjIkmKQinsViYQ+691N4FHTz+Jgw2IeQUSaNi7FW2fcPDjU2t+va77Xc6dTd7rzZ0emwjCwiJCg+XJkQHhIbETIuKuwxdXSQ2JUKSHr59cLZgS16KPpdv1owm+mRhARJn37isaefeNBS8mZH583b96633bnZcb/5TmdLRye5JyYR8uMilPHhIarI0NhwRWJ0xCOx7vZPcZ+UxNgnJqi+adDZfZchv8v7kZ4VWdNprwx3SLgiKFwRlDZpVJVWT/9AT9+Asbff1DfAYbPFQp5YKBAL+b5gXOyikImfy5j6UdXXtm/5u8WBjYCpiGaFTMJQmIeEaKU8WimflfII9sXu3r7e/sG+/sHewaGh4eEgsTBYIvZkusEF8ufPIhE9/l4TxuVyqGykyJvHuGjGIeTzUsfHpY4f5V739g/2DQz2Dgz29g/2DgzyuByJgC8WCsRCnsxXTZA6OixDk1yjtVO4DS2Q3/W3xEHFBCXHRz6e7LmsECQhQpkQoZytSca+qDf19Q0M9PYP9g0MDY+YxUKBWMCXCPkSIZ/pGi+X+dWC2USih6FVjEG1QbGjIo2pdDeRCAUSoYC5/Q5M8NLcGX+t/mbIjD/FDNp6/120NBrN0aNHqZwzunSWr8yfILHIZ/UxEbFhimenT/q89ortW/6um8HDwzTIkYqE859M8cBgHCIW8sVCvhcy5e7xTwueIhA9/m2CIFwKU+j5TPutLD2PXCrCdqL3Cx5PTkgZF1t/o9X2LRYL1NTU0P5EBmsVqZSgzkp5JDRYxtwYAp4wedDidMJ92n56ZqQVDgXdnOszotlP+dWi2RaLnV1cUPP4dYaUiglaONMnFI//MiEhym4rMpa/tTywi8MpJOTznnnC3T7pY5x/ItjGxJDfxaDoobJi+U6Yx38haiDr1546XGsdWpypyQm+UBzj18RHKO2ejhIAZWFUtry6dvQvAkvBglm2L7KA388fQGEKzZs+kYldOGOKtJTxcnst+vxP9DhcscLlslnM1w8GPFFKudCevmSxgMFg8Px4aAHaSocW58U5/tfg1QdZmm6ng6Vfi2aIQxP0eFKCOsr1oxMRkCmPxLMBPlgYAKKZSoXGquwZHhhJwJNM7HfRnq9gRPTAPK7DEsIXs58MjG2xXidCbj9F6NfpLRaLRb7uhitkzPUsHlPEhin6CJo4+PWixXYkml9Aopkmghhux+oVHLaqmjI+Xu3GeeMIK8/OmDxE0EuP9rIwRkQPXGvJVywWAAvpO4NzjPNEsqqnl8HWZ17BoSBe8CSaP/QQH6Hs0uPb3sNCH78WPeQmSCoSPDX5EZILENThcziDg3bOHWOiENVjOAx2LkAFYTQRLBV1Gez3nvYP0QMhnzEzJo73hVY3AYPetlu5BQC/DvY4sjiL7SVlEC4QHxna2zcwYK/dmV/vviGfQM9Om8TcSc5jjac0yV14E0RyxokfcPPmTXILxOdxn3likqeGE+AES8RGY4959DZk6Hf5R3oLQj5jns/ylW1+AcCkxLi+/oH+0YsWNDn+u2iRz5/pE9RxlE8zRjgkSCLqMphsX/dj0QwczKEV2Si3RSdGU+/w8M+LlnVHoJ8GC3U6HYtUNi9OSxVTPs4WQU7K+DiLBejtmSDaYVD02NsG+4BopTx9ElPHt45BgqUiAIDB3ozxU4sDgANHcdXTqH6QTlIS40ymXrN5xNsDoQeH037GY4mqyFCPjGVMMCkxDgDQbbTTl9x/TZCF1Aa9NHemx0YyRjB0m2zbZ9B+7DEjogfOcrvNPyAvzZsZAHtDfIf4CCUAwIhftPy4JqOmpoZk/sSHh6SlINFMP4bun3Uz/PX76UkUDk3QShTmoRUSv8t/g80kfvvMieM9cA75mCJ9ctLIiMVo6rW+wlB+lJGOzNDijIzY9xoFPO6imYT99BAuEP/QZzV0m0IedpSG31g/FT0AADPB/AEAPJc5zeXb1l9rOXu56dNzWgCAwdRXf70FABAsFackxgIA4iOUC9I16ZOTgqVilx/hj8xKTTp7ucnQbVLIZQ8dEgvw2xWL3ATFhCpmTLTTT48KBlPvp+fqztY1Nnd0AgDO1DXB11MS44KlomCpOH1yUvrkpJTx3jnB0VsES8QAAPPIiNHUKxv93dFqtTk5OV4al4vA6ALR/AEAPJfpenuns3VNZy43na1rBAA0d3Q2t3cCjAlKSYxLT01akDZGCxb1BlPQ6GJf2v0uRkQPNJREofLF6VOE1E5fR1AnLkLZ0tE5etECwD9FjzWeaTaP2LbqEfC4S5wvYW5uv/dOxSfHz9UZMJ6EFYOp17p6HTp5HgAwKzVp5dy0ld6LYFNZXBekpcbTmqMxm0dMPX24Rau6utrvjk+C057IBK3IesKFSPNHJ8+XHq6CKtkW6+vHz2oBAPGRylmTk/45bxG9fyCnOFvX9Ok5LRyYdXGNj1TCwHBKYtyCNE16Kj2d0qwiT28wwfljzQ35owmCmG2O94FEK+VPOd9h7kxd4++PnDpT10Rugs7UNe0/XAUAWJiu+U3unFmpybYXe4bm9ntnL//46TktHLDVBM1KTQIAxEco01OT0yc/QtcMT0mMPXu5aXBwqL9/QAg7IFgY8bsYET2w+NHu6d8AgBWohJkB4iOULR2dtouWn6YnIEPDwxwOvlRwkZP1g1DuQClDnTN1TWfqmnZWHNuSt9iT0sdg6i09curTs1oqi+ub+z9OSYxbkK5ZmzvHzdBUemoSqAAAAMPDRcuKPwZ7YFtOu50/+DzuojTnIs0fnTy/s+IYFA0UaW7vPNR+/tDJ86vmzvSw9CFfXJvbH6gfuLgGS8WzUpNoWVyh3zUwMNg/MCgU8K2i0h9Fz8NIj8Wu3/Wck4dtnalrfKfiE6tooMjxs9rjZ7WzUpP+OW+RJ6UPNEEfnTxHNOFx/iFdJsj6cX13TyQUPQ89E3r9LkZED1xoBwftWJwZE1H9ICNAmQwAMHQ/WLRYLJbFYvHHFauyshL+x9DQsNCmxfuL2U9Sv9XOik92Hjjm8kia2zvXv1tWeriqomStB9atnRWflB6usrtWEVF/vaX+ekvp4aq1y7LdsTswPQEA6B8YHBgcEvB51liI36UndDod9LsG7YmexWmp1A8tr7/Wkrdtv1NyB8ehk+ePn6vbvvb5VfPSXL4JRVxYXA2mXroWV+h3AQAMBpMwPMTaMcAf/S7rpsXBoSERZ1TfRR6H7dTpSRveLXPW48Jypq7pTN3uWalJFSWFTOfcodzxlgmy+l0mU69ZGczhcKy6md5VjP5C5srKSjjEkZERW09r5RzXqzEQJFinWn//4MDoLmG0V78zjbWhWX8/vnPMJHVMQgSlg6gNpt68kv3uKB4r9ddbMgq3n6mzc5Q0XdRfa9HkvbnzwDGnzI0Vg6l354FjmrziQyfOuTYAbA0KrhzV7zx164QfGBi0rWV+6RmqcbtDJ84t2bzbHcUDMZh6N+wq3/BumZv3cfCId8uWbNrtbDjBypm6piWbdm94t8y1GQgAgCUp4MGOCrM1f6jX6/3O9bKaINvmVXMef1QqElK5SXP7vYy1b7mjeKycqWvKKHyr/pr96C8tHD+r1eQVu2+CXB6k1e8CABi6R20DpLdxBv2iB7vE4nrbS4T8mZNQC1RGwObm4aJlNTr+tWhZ3XQAQF8//myEl5dkULlJ/bWWjMK3YHUFLRhMvUs27Ya5dto5dOJcRuFbdC2uxfs/du3jcQ/VpNHUi60i9ztP3RopBDZTKCFCGRNGadPNhnfLNuwqd1kB2HLo5PmMtW/ReEMrze33lmzaTcvieujk+SWbdru2bmFd/G5jL7Y3pH91e7L67QCAXpvjWV5ekknlJvXXWjIKtxMlqV2gub0zo/Atl70acnZWfJJXst/9yWkw9WYUvlXqkp3E+l3d3T0A09/Yp0VPWVnZ3r17rT8aR/8S5z+JmnYzRTwm/mE09Y6MjFhnzLZt2woKCo4ePer7/pZer8/NzbX+ODg4hI1a8TmcGY853nRjMPW6mZIgonj/x7QbHbi40njD/Yerlmx6zwX7ZZ1CFovFaOyxHjyk1WqzsrL27t3rF+q5rKzs6NGj1h9xJiiPWnnWmx/+mRYNgaP+esuSTbvp1T1n6hrpXVzrr7cs2bzbBYdhlN/VbcKWim/cuBGaIHqGyCR6vb6goMD6Y29vP7YcPlQmodITtf5ay5LNNP+hIRt2ldPoy4EH7tx7tETErby5/2PX4pqTHgYLh81mU0+fdQrV1NTQaIJoEz06na6goAA7XQAAff0D/Q89rZERS9GKuXQ9DoEDW3FisVi6jb3WRUun05WVleXk5CgUioKCAp+VPuXl5VOmTMGJ+q6un8+EonJSEgzJMKF4IBt2ldOoe9zM9xNxpq4pr2S/s5+aNSpY2IM9MLi6urqoqEitVqvVap/Nlto1QUZjrzXJzgJgySzH1RiHTpwrPXKKkSECUH+9xYU/DeHdrrXklZTSvrjCkKGz8Z6UxJ899eFhMzbGptVqrSZo48aNvmmC9Ho9NEG44ekxZ0I9R2EXjsHUy5DigbjwpyG/m8spURIOnTzvgu7Buu6GbpPVBOn1eqsJysrKctME0SB6oDRWq9VlZWW2796592ACxSiD+VxG6qYRkPTJozJcdk+5LysrU6vV2GicL1BZWalWq/Pz822FvKmnr7evHwAwMjLy2xfnObxVXsl+il7vpMTY9MlJa3PnbMlbtCAtNZ3yHtTi0r/QYnR2HjjGhOKBnKlrctboTMIsWkPDw7YFVQAAnU6XlZWVm5vrU1EfGCAkMkF3Ox+YoCkUeuccP6ulGHgLkohg14AteYvW5s5Jn5wUR63a7Exd05sf/pnKleQwF04AD1dup+Z5sFQcJPm5QtxgMNqaIL1ev2fPHrVajU1B+gJ79+4lMkFdeiM8S3XEPPLLhbMd3op6MA+aoC15i7bkLYLtnah8Cv5pmtvvUbmYnA3vltEbN8Jy6OR5Z+c5Vjf39Q3YbTlRXV2dlZXljvfurgrRarXkFnBwcOjuva6wUMV//CqX6BoELVg3cAEAhoaHWWb7nUj0en1RUZFWq/3jH//owdHZR6/Xb9y40e5aZaXjTldsTNhkdWyYPIj8bodOnHPotcRFKLfkLZqVmmR3N9aZusaPTp7/iFSLGEy9xaUf/33X6+QPcjjUnRWfULkySCKCvXmgRTh08jzcI+P4ESfPB0lEO9a9QHFI1kJUiKmnj+jKysrK6urqL7/8UqPxfgu1yspKcgvY29vfpTcGB0t3Fq4gvxX8yzp84sq5M9fmZtttP9jcfu+jk+f3H67qJv7tAQBKj5xakK5xZ6sUDMZQX1yDJeKUxNhgqfhMXZOhp/fK9VYqj8jbtr9m/1bq+3FSEuOsJqi3b4CoGRIUqfn5+T5ignJzc8mDB+137sdEhy2Y7vh40Z0Hjjl0uqAJWpiuwf5itzz8j+NntaWHq6y/RrsYTL3FpX+pKCl0OB7yoVJ0uuIilPERStjhqf56C+zpSj7DIaVHTk1KjKO+b9G6gQtCYoLKysq0Wu2XX34pl8sp3tyKW6KnrKwMF0y2i6G758WnZ0weH+/OsxAOwXrqgLQHPwAA6gzvGh29Xp+VleWwSM1sNhu6uv99uwPRbDD1vnPQgYzYXriicFk2yQWzUpNnpSZvyVv0Usl+koXhTF3ToRPnXN6EDG2Ww8vsLq5bVi82mHrrr7d8elbrMAtTeuTU2mXZFDfb4y4jnz/wb+d13UPRBHXeN6ynsJm29HAVeWI0fXLSvs1rSH6f8ZGhW1YvXrssu/RwFbmoLd7/l5rSreTjIYHK4po+OWntsuxZqUm2iytshedwcW1u79x54Bh13Qz7elt/9AsTpFarHcYMBgeHzP2D//HycvLLmtvvkX8lgySiHYUryO3GwnTNwnTNmbrG9e+Wk7g3x89qz9Q1uqybm9vvOXS6giSiwmXZC9I0dvV9/bWW0iNV5P4hAKC49C84eUdCijNLGKw1dEH3uJ7e0mq1VMwNAGBSYuwbeYtcfhCCIrgZ45CysrKioiKGBuMQiooH8tZvnk9wtHKTr1hBElHN/q3kisdKfGTosV2vk/ckLC79i8uZBYf7QhekpWortu/bnG/X3ARLxbNSk3ese6Fm/9ZJo8MztjhVJU09xwce/gW9WJ9BUfEAACYlxha9+Cz5NQ5XrLW5c4699zoVBRksFW9ZvbiipBCb7sFRf73F5eIwKovrB5vWHHvvdaL1JlgqXpiuOfbe63/f9VuSQQIASo+cop5JmeS8CSopKXHqIzRCfQIHSUQVv1vr8LKdFZ+QfK8nJcYe2/U6RU9pVmry6dKt5N/H4v2OHSfCzzpyulbOnVl3cMeW1YuJDlRJGR+3b3O+tmL7AtJWn3ArO8VRBUvFFHPEEKh7nDVBLoqenp6erKwsKlfCv/RYO8nIK7hw3M/evXu9VZdaUlJCUfF8sGkNFUtBsgwESUTHdr3u1O8nWCretzmfRPfArm7Ub2jF4Yq1JW/RwW3rqCyuKePjTpf+6/bCFSTr1pm6JuodhlIcSSgcuK0unqSpqYm64jlGIRf50cnzJCvW2tw51AMekIXpGvLn/t7VcmlyITspMfZ06Vbqi2vdwR3k0pm6bnZ2/gAAtm3b5q36sNzcXIom6OC2QofWw2DqJQl7wEnorAk69t7rJH+a+ustrhUXnqlrJLddH2xas29zPpVVOz4y9OC2ddtJE8elR05RH6ezU0ir1Tqrm10UPRUVFVTkFaOKh8Xlc+VR/Kgk4bip/KgkrjyKiaf4F0556hCvLFrd3d1Uiqmhw0rFfJ+payRZsYjMDZxCwnFTheOmcuVRLC6++/O+zfkkv1J4aqmz1V000QAAIABJREFUkDex+GDTmi2rFzt1w8Jl2TvIjQ7lthnpzkfLKysrz5496+yn3IdiMX765CSKJujTc4TtiBakpRIpHq7igQnihSVwpHgnNWV83Aeb1hDdtv56iwvlqM3t90gK16DJdap7eLBUfGwX2eJ6pq6J4jjjI0PJ40Z28YoJam1tpeLvQRNEJYtEIiOCJKJ9m+xrCLZQCk2QIG6SXRN0bNfrJMGPj066Eix0aIKcTdwXLssmmecAgNIjVE2Qs/kKAMDevXsbG53oHOtiTc9XX31FfgGs1WKo8zpbKOVHJwvjU2ynyGBbY2/TecuwnY0nXoeriAIWMNJvHOk3Ob7aJWAK3/ojPGWQPG2v0+mCg4MZGg8Rt27dcnjNyrkzt1A+tOhTYouzcu5MW8XDC1OJk2eyhbKfXxo3FQAw0m/suVo93HXb+vKOwhUZhW/ZfyjxMkk21POEn1o5dybJV4YtlMIBD+tv495aNS/N0NNH1Jbw03N1BlMvlYU/JTF2y+hM9Jm6puaOTvLS6YqKCpJ3GeLbb78lvyAuQrlvM6XlCgDQ3H6PqEQmSCLatzkf9yKLy5dMzOSFqWyv77txaaC53mqCVs1L++jkeaLv4PFzdRRTrtiPEL0FI5okf2hogsymTpyFhLon9aU3iapTqY9zR+EK7Gxp7uisv95CXjddXV2dkJBA5eY08t133zm8ZkveorXLsik67SQuUOEyO2Xv/KgkcXKa7RJmNnb2XK02mx78DoOl4h2FK4jaHHx6vs7ZACQ8yZjo3e2kJUfQBFmGB63Ds7JqXtqV6y1EMWzyNQgLLrhuMPXWX291WDddVeVEO0T695DD6ifqc8VZiObKg3ejk3nh6p6r1UN3dUw83VlYXL4gPoUfpuLIflbrluFBs/Fe341L2MWVFmARHO5Fg6l3/btlJBP9p59+oncYDjEajSTvOiwXtYVESeCiICTLFQCALZTJpi7GSueU8XEr584kClw7W0tYf62FqPAIFjnavs5VRInGTeUqorEvmo2dg3d12MW1cFn2RyfPEa0ux89qqXggsA4X+wqsez104tyb+z8msjvXr193eGdP4oLHRaIkVs2diTNlgvgU0bipRCZING6qIDoJK523rF60ZNNuuxd/elbrrOj5E3EOZcvqxbZWl8Xli8ZN5YWrsBLfMjw43NXWd/0SbnElymT96eR5iuO0+2tvbr+3/t1ykpXP85VhPT09JO865XFBiAxskESE+06xhVLJxEzcN9oKR6YMmrF8oLm+78Yl+O1emK6ZlBhr96vd3N5Zf63FqawZSZgwLkJp96/MC1MJ4yfZmqCBtsaBlivWV7asXnzo5Hm7VoL6OG1NEGT/4SqSXvNOtWymWfQwXcHDC1NJJmaSX8Pi8qWpc3uuVg/epr/nklNwFVGSiZmjwgkAAJhVUUTLpkZ7Ji4VLBUf3LaOZNJ0d3fbfd0ruBBcBQAQKYlJibHY2cji8mVTF2MFqF340ckcWWj313+DPy5I0xCJnl/v+L+RSifiZO2dBqK3bFcsFpcvTprJj7YjqjgypUimxC+ueYsJPcJzlEQPEavmpaUkxr1Usp/ibnkvsnLuTNvAjEO6iXOjK+eO+r0J4lPESQ7aOkPpbLx0DP5pZqUmxz08jBPHpcafstZtpz5Os3nkyg37utbuigUNpq0+Y3H5vDAVL0yFjUutmpe2s+ITu+OEmTiXz9yNjww99t7rb374Z6JIgMFA+L3wMC7U/wEASHLrOC+UxeUHzXiOSDFbEcSnsEUyU91J+OPKuWlE1vuXb/1BKqZ0FhiEZLeHrdNFos84MqU4OU0QnWyNS8H6feJ4s9aFqlMrhcuyZ01OWrzpPSpb5cmhU/TERSgZVTzQR6d4sTg5zWzstI3CeQx+VJLD0fKjk7kh0d0X/uaBfFzhsuxPz2qphxm9gmuKh4SFaaMsjmjcVIeKB8KRKcVJM3ubzgMbs4Wl476h4z499nrh6E0QLC4/aMZyW8WMBS6uVn2/MF0TJBHZNQoGk7uWImV83Ja8RfSemEE76ZOTXFA8AACS7d9YS82RKh0qHivS1HmGM4ceOOtpqXbX+/6Bobofm50crH0W2myiEY2bKhw3lfxTonFT+WEqq74nGicAoLmj02XRA9mx7oXj5+p8XDe7oHgA6fxZMNoESVPnOVQ8EF6YShCfMtBcD0jLe6/fukN5mGQESUQ4Q8cWSh3qMxiXsur7hWmpRKLH/ZNSUsbHFS7LptjejAQ6z97akreI0V1attPFYDDUPATnKzilkGiHI1WKkykt3myhzGPj3LLapxsHxEUoXVM8JLuTsDWA0IjgLqirq4Pzx/ZYTUF8Clfhoer4SYmxuBXFbozQLuLkNGsJLVEZYMsdGlaaVfPSnNpQ6nlcnuFEohBXxi6ZlIm74ObNm1RMkAe2ry4YvWJxFVEOFQ8E6nu7N6GdLb7du2RBWqo70Qi7BEt/ruy2a1Ks88fWBInGTWULpQAAd/pYUsTWdEg1VPWZdWmOjwwlqoh33+8CAKxdlu1CpTwOOkUPQ2XLELZQipsu5eXlKpUq8yEqlaq8fJQbypEpbfdTeABo7OxOl5s3b9q+aHcxZoJZqcnuzxjmWEXtMEiniI/8eQIIokctYAaDISsrS6PRwPmj0WiysrJw65bgYWoJex8mCJbgq0bsVh3ZnT/Y+YYtY8dC12FkTPyN6CIuQsno2sBVROHsyd69e63zx64JIiodYxoWly9NtXNmi8FgsDuFrPMNNw+x1FNo4uwQRtcI98GlMqlD8fuFM0F1dXVqtdo6fzQaDW4jG4vLF9jLbjMBLpgkTpppd/UkMkHS1AcHaxJNIffTUgCAYKnYfRNEm+hhejXlyEb5wTdv3szPz8eWv+n1+vz8fJxYppjLoBeuIhr33KNHj6rVahaLpVKpWCzWtm3bcB8RxjtucE4LLmwI9BjpBAu2O2AtNW4K5efn4/aswjPtsK9Yv/bMnWBqF+FoEVxXV5eVlWWdP1lZWbbznKgukl6c7T7nSeIZjkLh5k9NTU1RURHOBBUVFeFWBY8FC7GCjx+djHO6tm3bplAo5HK5SqVSKBS2G/7hlCOJc5CUPTmFL/td2KiMU1B0inAywvaor7KyMtzq4LElzLZaH/sjzgTl5ubazPNo+K8j+h26n96yO04XoE30ML2ackf/7YlaLOBe53pF9Ix+aE1NTU5ODnZyl5SU4BQ9WyijGEh0E6YjFl6BxL+3WmoWlw8DxVbsTiHci9DiMHdgsl1sh4rTZ9XV1ZmZmXij45Ghurwq+DhE3wtsDRwVE6TX63HLGJRKzcwXsmCTvLihlpeXl5SUWPUZFGd2F1eSJnJBNGXofNnvYmJsVn/JVv7a3XNk1wRR7y/qMtgpihuqwWDIzMzEDqyysjIzMxMXF39oLe1HdBz2jqeI+34XbaKHlqIBEihqAtzWRxZPwMxwyMD53HbPEy4rK8MtWp5R9Ex7w76GdR+pa/MHfpC5g4itYGO/uJlQV1dnaxz1ej3ulFY464hyEHTV4nigtsArkHwvrDrAtSnE5vKBM31KXAa72OBMkN0DfXF9bFlcPkeqNPQQimYXui37HS5HI0jUEtGfnuIufRZXAGjKLZKDDWbjgppardZ2tDqdDm+CZEpAnMYiyZw6hft+F22ip7m9k1Evc9g4SlRlZGTYPWYsMzOT5FOegcUbZRyJmqzb9QiZxsNBC6c46+iAdBKIFnVr09uRfhNui1xOTo7t9bj5Az/lWudlp8A258XNBCLjiPMI4awj2s9Ml9h1oYOwxyD6t1OBStNbs40Jsnu9SqXC/jjU1XamrtED6dGzmGAALlJIBL7ymscnafI5FnC52DZYKiZK28HWoMBm/sjlcruH9eLmD/wUSXMmujh7ucm6OrC5lJYwnGniyEJJmnz6TpCYzi3rFBugucZwVxv2R5VK9f7772/cuBH7e8/Pz8dZIrPRCzZ6pM+Izd1mZmbaDfbgZrxnhuoBj8FlPj1X5+wJDFZIttoWl/6loqQQAGA2dmLDtu+//75Op8NKB7lc/rvf/Q77WbPx3pm6RqK2YxwOOz3FuTqk1rv3bxBsMf3o5Hn4z8fNBKjvbaUPTp+ZjZ3Hz2qJRC1daU1fnj8GU6+zjdqsEBWAA8xJ9UNdbULw836ozMzMP/7xj7g8dVFRUWrqqK3jZmPnO8SbbJPioyJDnOuHflrbYPd1bHPe4a7b2KmOW0et4Fqxm42dJE0+6Ur9MJ0TcIdPz2lJ+lOQszDdfjcvg6m39HDVltWLYSNj7NJw5MiRrKwsrKSA6xr248NdbYdOnCNSEgI+78nHEp0aZ2PzbaIuG9YVHBcswE1p7GhxQyU5fYyu+eOObwyhU/ScvdzEnOgZ6TeN9JuwHkx+fj7UE3A9gAXw2I9Yhgdpb3lMhaGu29hdG6+99lpZWRkuQ1FUVISzOJ4Zqi/36XGnAdrKuWlEouf4We3xs9qF6ZrBuzrsSiCXy7/88suysjJodORyeX5+Pi58eOfaFZKjjFdkP+lsV5j6ay1Eh1rAxTVYKradCe+//z5ucZXL5a+99hr2lWFjZ3EpYcdSXLMQl7lCUzUiQ3x08lzKeOe68kPgVluiftZQN5uNnZbhQWySC5oga5Df1gSZTZ0ffvwZSQ/cj7dvcHbCv/S7D+2q8Ob2zp0Hjll1M07fa7VanAnas2cP9seRftOHH39GscmnyxhMvR7eE+AUrh0sA0mfnES05O+s+GRBmiZlfNzw/Tas6FGpVD/99BPWBOE2UgAA7jY3vXOQUDQXLHzK2WMojp/VErUwfefgJ3AFx/ldGo0GhhiwL6pUqqVLl2Jfudd2k+QoZbpMkPvlcXSKHndmDBVM2hNBM5ZjX1GpVLazxErP1WpGx0PE8P023CvfffddWVkZ1GdyuTwnJyc/Px97gWeaKPpybgLiwlFEkJTxcURNbwEAG3aVx0coUwDgh6lwNXq4PwSW4a7bv9n8ryRpfheOdyUZp8HUu2FX+YOg1GiPMD8/X6PR7NmzBxpHjUZTVFSE02f/9eEfSJYTkkiGU5Cs376AC0cRWSFpenv8rHbDu2UfbM7vuVpt3ZoLUalUJIc8/3nfOyS9822bM1EhPTWZyNKWHjn1YHE1dmKLGeVy+Xfffbdnzx4YcoaLK06fXb+qJYlIubyXGwddW3gYwmDqhQ6SC59dmK4had25ZPPumv3FCdxLvHC17TYFok911J9d+KstJN9rF/4uJC1MrboZpvWx+r6oqEij0Vj1WWZmpq0J2rJjL1GkOS5CSVcDJPJz3KhAZ58eOGNovCEOs6mz/8YlihcPNNd76/gts6nT9gSM/Pz8ysrK6urqyspK21nec6XaAwPz5dwE5DM3qmdI+jcYTL1LNu8+flbbc/VLis2vu+7dyVmyiGQ+O2ylSPT9t+2ca+X4We3OA8eAvfkALU51dXV1dfWePXtwgeX/s+ftf9lbRnTbBWmpdDXHc6duxgM0t3e6vM9l1dyZJLupD508v+Hdsns/fU/9cJs/vL113VsfkFywJc9BMtfuFCKZP1A3G0y9g7ebbOOFRUVFcP7ArTfYt7ru3Vm+8iWysxSIH+oU7ucmmMblAr5gqXht7hyid6EJutxw3aQ9QfGG169+98yyVeROF+3J3J0Vnxw6cQ7YCxnAoCacQiUlJTjFs/W13xz67DTRbemaP4AO3Uyn6AEAkATYaaHvxiUqRmeguR4eIOAaBlNvXsn+9e+WuXyH3sZz1IM3vU3nPRPpOcv8vkeK8Pn2N8KcqWtyWTdvWb2YpBwV/k3/83/+1PLlnxyecn/q5GdTJqccP0N2jrfdw0Gt7D9clVH4lt3Q2lrSUNbOik+K939sNnVSn8C/K97y643/QnIB+ROp09x+z5cL4SEk4Qpy4MlBJBccOnl+yabdJ//8vw5NkF6vX/3ckt/8y3aSX1f65CSSiEJz+70lm94rPWzn7Oj4yNAFxEtI/fWWJZt2119rMdWdoKjvtVpt5qy0+h/tNJ2DLEhLdfMACuzwaLkPc3x08jzJvn1ytqxeTKKbm9s7Mwrf2nfgY1PdSYd/mv/9cO8TM5+qv0Z2RAm5Cdp54Jgm7027M5DcIGzYVV56uGrorg6egEGF19a9vP2//kByAV0miJaoCs2iB8bH6L0njp6r1aa6k0QVMGZTp/HSMXcUz/7DVZq84uNntR+dPO+y12gZHuy5Uu1wcQUADN5uoj633MFg6v3oHxc88CAqKBQKorfc0c37Nq8hv2DngWOTlxUWF+Z9/ckh23f1en15eXnGzCey5y24eZvsRBuSFQsuV8X7P25u7ywutVMPFB8ZSt6Mf//hqiWb3vux9kuHi2t1dfUUTeq/73iH5JoFaal07TN3/9QbD+CObi5clk2+t7/+esvijTuz5y/+0+6t99vtBL20Wu1r615Wx8dW/M2BGSRZsXYeOJZRuP1MXdPOik/s6mby1a7+esuSzbv3f/wZFd1TXl6elTH7cuN114bqFM3t94gSczwej5ZHUCcmJoboLZdNkEPdDAB4c//HE59dtXNjQVOtnfIXnU5X9r//VxUb/U/ri/RGB+fAE4V56q+1ZKx9a2fFJ83tnXZ186zU5JWkfY3f3P9xXsn+htPHHFaa6nS6zNmz/mv//5Bc4+x59ST8/oidf46zsCwWC/kVn3/++fz583EvTp069dIl+5mmYKlYW7HdA2fNcBVRPEU0WyRjC2Uj/cZhY6fZeM+dcmAYDMBWLaQkxtWUbnX5hiwuXzRuKtEREyP9pp6rX3qs1HrngWNEi5ZSqezsxIeaHE4M6rDZbNzdJkyY0NBgfxMKAGBL3iKXt3Gtf7eMZAcBlmCpePKE8SwuD3bC0N/vrPueksYlOYd5/+Gqdyo+wXpXf9/1W1vNYTD1pr70psO+7Kvmzlw8b86KdW/gigB0Ol1dXV1lZaXd/is4tBXbabE4BlOvOnej4+sesmnTpnfffdf95wIAnn/++b/+9a+4Fx955JEff/zR7vXxkcqa/VtdM0Eklea2PDU1hcXjs9hcwOZYzEOXrzbou41UPrg2d47d2qP6ay0bdpVjwyGzUpP+vut12ytJvs5W4iOVb+TnZOeuSpqOT7vodLqampqS3/2b7qaD407d+TLiIPluBgcH4/bPs9lss9lMy3MBACwWC/fKk08++fXXXxNd787Jx7PX/gfFupOEqPD42GgWh8PiCoBlRN/VRdEExUUoT5fan+G2E8OuBWhuvzd77VtUTFDeyhXzXlpn26Tq6NGjlUcOl5UfIL9DkERUd3AHLXrAqe8mAODu3buhoXZMn4uiZ8eOHW+++SbRRxama2A9ph9xpq4xr6TUNhi4vXCFa6W1VjhSJT9cxZEpObJQtlA63HXbbLxn7jcNtjV64HB1iMHUq8krJgq2P/bYY99//z3uRUZFz/Tp00UiUU1Njd3rg6Xiv7/7W5cL36gbHdeo2b/VdmywnMI2xhAfqdRW7LC9CckeCltmP/k4YHMUIUpDT7/dRmFEuD97rZCsshERER0dHbgXmRY9b7/99htvvEH0kVVzZ37g0nHrAIBDJ84xepj8yrkz7W76O3TiXHHpX2y/pBUlhbZhRYOpd/Gm96gurtHhCfFxLK5AERKiNxj19zu19VeofHBSYuyxXa/TsmI1t9/T5BUTvRsbG9vaOurfwrToefHFF8+fP2/3JCngnuvu1J/GBYicLlunHUKkm6nP82CpOHXSoyw2V65QGHr6Leahmq/OUhyt3dnrGiSiOSkpqakJ/w8nEj0uprcSEhLWrCFMJcDNDq7d2SvsPHBsyabddjUBznF3AbOps+/GJVPdScOZQ11f/AFm3waa6z2meAAAJB1cAABxcV5oDE+y5wUW/bn8az+263W6Wp7b8sGmNbbmpv5ay5JNu+1mVYgSvgvTNR9scpCMs3L6629Pn7949Pjn1dXV1BXPyrkz6VI8BlMvyWbUZcuW0fIUp8jIyCBqDwgAOHTyPKzHdIFV89K205TQsWVSYqxdxfPmh3+GNci2bxWXfmz7erBUfGzX6xTPsbrZduf0hUs1Z85V/v2T6poaioonSCI6WFJIV8zebp4FkpCQEBQURMtTnAK3aR+LwdRLtCI4JFgqPlhSyNARY0SK50xdoyav2O7mSqKE76p5aeRJLisGU+/pC5dqzn0NTRB1xfPBpjV0KZ7m9nskIfy0NCfCcq7X9JSUlOA6zWBxx+h4mPXvlpEEig2m3jeJN536BQZTL0mnhzVr1ng+oQ4AyMzMJNHNbhodhnSP3aD3mbrGJZt3k1Rolh45ZbcyY9W8NJLtHm5CFE5wjdLDVSR/C6csDo2Q6GYAwIZd5S6boMJl2eR1V66RPjnpmI3PbTD1Zqx9i0RTElVmOKV7nAUurnSVYjS33yMpKCTZs80oOTk5JLq5/noL9VgsjvjI0GO7Xqfr7BcrQRLRvs35torn0Ilz5NbSrm4GAOzbnE9R97jAyrkzaezbZ7c+EhIcHOwh0UPeIwe4Z3Q8g8HUu4FCCYg7Fc2+wIZd5SSdHrxlcYAj3Qz3obh2Z7ge0Ph9jotQ1uzfavsddmhuAAAGUy/RN3bHuheY0D0L0lLpKj4FAJypayTxCtasWRMZGUnXs5yCXDcDAIpL/+LOTpy/7/otjZJiS96iY+/hU0VQ3Dvc00RU0ZwyPo4J3UNSteYadisHrHjXBJG8e6auyeWURcr4uNOlW0n22TnLpMTY06VbbQMnVLJURLoZALBvcz6Ng7RCr9N16MQ5kt0J5DrEFrd2bxUVFSUkJJBcADe/ufMI5oDm5hCFote4CCVdh6V5nv2Hq0imS0ZGBq5jhydxqJvrr7dkrH3L5XjPvs35H2xa4/6SkD456XSpnToe6knxuPAQord2rHuBlkFa2ZK36OC2dXRlJQym3rySUpILyJcNpiHXzTBP6rLrNSs1+XTpVhdaUOIIkogqSgpty4EpKh4AwKTEWKJjoVLGx9Ud3EFjXBMurjQqng3vlpH8G9esWUN0SoYHcKibD508n1ey3/U817Z1tIQM1+bOsRt423+4yv36s4Pb1tGYzw2SiD7YtIZGxVN/rYU8zONR0SOXy+2eKoXlzf0f+2Z9z5v7P6ZibtbmzqHXBHiSM3WNJA1hAWlW2zOUlJQQHewCqb/eoskrdtlfX/X/2zv7sKiq7Y9vfElAdEZFIRVmFEUNccZulgIFimKlwmRd3wpneruJUkyJeROLQRFDUbBMKCsGKUwroBBLFBuNl14szjhagqAIppSijo7gS8Lvj51z+cHMPodzzszZA/vz3Oc+wZzZZzucWeu711p77ZkB+k+SVkbOZqcqAif4fp3yWscFOgCgRF/JxNx4eQz6OuU1dJvgRTMDeMnHwXvxtdcGgo5jCeuxAABSqRT9DMMCc9ab7b093Qs2Ld8aq2SXqujf12Vl5Gz9J0kWK5EZKp6VkbMPZ7yJMEEiN9fDGW/yEjJc8sS0wxlv8pXVAgDk7CtDLCxFIpHgJigtLQ1tggpLqfDYzazb2a9cPIfKXsc66gxNUNLS+R1NUM6+MrR5h4z3GX4ofTXaLETNDf065TXu+Tgvj0EFKct5zGoZTU2RCSjR2bExNC1c+/TI5fLMzEz0NTlF5azX6zYieUcBbVbL7K7ssP3eFtCu0ZVKpcVjfu2MTqdDGx2O63XYPANKH4bCon9fl8cDZFDuWGxyY6iuR3+2EKiYmbTJ8R/ldTjjTY7OleG9mLNq2y60VxY2zANRqVTtjontSPKOguiNWtYmCErnrbHKxwNkDNXzeJ/h66Lm6T9JWrl4jkUDwmTRxcRdmUlaOp+Lc10YNoXKXsf6EA+LoNfogJXH4h24dEfECwEMOUetY7308vZ0f2+Fispet+SJaQy/4F4egxaGTUGbINpFV/++Luui5qEVs5kg2Rj9J0nrouaxWx96eQzaGqvUf5LEb4AAXZvBIswDeDl7S6VS1dbWJiQkIK4x1NQHRyVujVXya5TZUVhK0a78FoZNSYqa56ByBzAoBMZhjQURi8VarTYkJKRdo462wPX68VNnWYdhofRZuXhOXcPFEn3VsZp6eCiH8XpTXUMjPAFY5Obi7+MFTy9Cj7YshcaDjvcZ/l6shZJDNItmBiyaGZCzr2xnUTnDo2HH+wxfGBawKGwK789qzr4yRHUtACA1NVXYMI8ZjUZTW1ublYXyATlF5YaasxY33zEE/nUAACX6ylJ9laGmHqacSo9WjfcZDjPgQTJfL49BswLl6D9Hem4x7aKLRYMc6FxXRs5Ozt5Toq+ydhRdW7w8BgXJfHlsH2fGfCaGtQskEgkLj2ULpFKpTqebOHEi4hqjqSk4KjEpah7r5sLenu5JS+cnLZ1f13CxsExf33ARmqC6PxuNpiZogrw9B4338QqiO18CrgPRtxvvM/wTTVRn/6xRc0MXhU3JKSrfWVTGcNd94ARffmuWzURv1KIbjWq1WhaimZ8DR5kYnbqGxkhNxum8VF7uyBqjqYm24SaXzlQ40LHFWUfYPS42Qi6X0xodAEB6brHfyOEc/zTenu6LuNn35B0FaHPAsbuJ2bkWllLHaurN21ChDIIlJgydK2vi0nenI6vxgoODMfFYEK1WS1GUXo8689hQUx+dksWl3SgkSDaGy+LNaGpCn5XRv69LUtQ81s85lD4AAEN1fcnRqmM19XCtDA1Cp5wrawzV9bRdJ/Lz87EyQZmZmc8++yz6slXpu8f7DOe4dPf2dOfYS2JVuuXdWGa4LNpFbq5Rc0Oj5oYaTU1wfQhNkPF607Gas+YStyCZ73gfryCZry1MkNHUFJe+G11xGxERoVAoWAzO2ynrTIyO0dRUoq8UNtiTkVuMCJdxNDc4UFhKoRdYgMPjYjsYGp29ZZSwf526hovo+AePMcJZgfJZgfKV3AfqDNZanLVFJBIxaQZtZ3Q6XUhICK3uqWvw+wf7AAAgAElEQVS4yHtUo1OgPRaPO6f8R3kJUozIpMA/Pj4eh9x6W1Qq1ZUrV159labt+N5SSlgXZqiuR4cJ+do5JXJzFcQE1TVcjNRkoBftEomEtQni8+wtiqLQlfAAgL22PIadCYj1KzQ3Dq14krP30O41kMlkGHosAIBKpfruu+/QyfW9ZXphi8PQHWuguXHcrChs9I5WPACAjse844BYLNbpdIjOK5BCK8c/2Qd0jzUYI3TQbROQ6I1aWsUjk8lwqAbriFqtpi1R3Vsu5PMDAMhAnj/F784p+1OirwyOWkdb7sYlU8HzgaNarTY1FZXAEvaJKSylEKeNWOz75CjABTrtaa9wjY5PVLkdISEhOp0O3QeBl4N2WYNwmYETfB3a3GTkFoev2IyIg0Li4+MFbKyCBuoe9NLrM2ZHs9kItORiUQeGD3UNF4OXJNI2AZHJZDqdzi4zYoNKpaqoqEAsveoaGllXNHPHaGpCiGYb1dbYjYzcYiY9aTMzM7l0WuFZ9AAA1Gp1Xl6etYdG2CdmZ5HVHUALw6bw1TDb/sBzbWjVgEgk0ul0uEWV2yGXyymKQuzn2lsmmOgxVNdbKw7t39eF9ox3nFm2UUtbKAAAUCqVeK7R26LVahHrdZjhsud82oIIda+MnO24iofhAh3zRReE1gQh/IitQRh5L49BPLYktT/BSxKZHH7AfdHFv+gBACgUCoRlFPCJsdbgC5by2HkyPFLILOmTlpaGueKBiMViiqKs6WYBM1wIm54UNU/YShEuoJePZpRKJZ6J0Y6oVKqYmBhrrwqY4bK2KW+8z3B+GyzZmZ1F5bTfSodYdEGkUimiBZ2A+QrEjjyH3m5sqK5n0rOKl0WXTUQPAABRJyvgE2PN4vj7eDnu4wIYROxFItF3332HbVbCIohHSKgMF8LieHvyfM6OPWHyeTqQ4oEgnnZhM1wW8eb7nCY7s5dORzqQ4oFIpVJrwR4B8xUIZRAk49o6XECYxO9jYmJ4MUG2Ej14PjHWELnZ5NA++0CrkaG5EfC4CXagdLNwGS5rwJ3ADgrt5+lwigcAIJfLrRWHCZXhQtzUoZ+fwlKKdvMERVEOpHggCN0sVL7CWrICAODQ6/ad+2nWIZmZmXw1lrOV6AFYPjHWumEeO8WoCxOeoD9MBzU3AACFQoFhhssawpZXc6Gu4SJimS4SiTIzMx1O8UBQwUIhMlyIBCjDXpR4ghbNwcHBOp0Ow+1+tGCYr/C33lPecU/FNlTXo9su5+Xl8ZimsKHoQTwxO/f/YLv7IrAWQ65raLS4ld1QXV+qryrVVyVn70nO3oPeriwUiK9ffHw8RVGOaG4guGW4xltfjm/4ZE/HZ6Ou4SJ8fjJyi+EjhKFhQrh/uNHGsbKibcEww2Wtx3+JvsriIw27P+8to+Dzw6T0ys6gC8JSU1N1Oh3mlcvWwDBfgQjnWOx42dEECVjFbw3EJvzg4GCKovjtKsdbc8KOwCfGYq8wo6mpsJSy/24pf5/h1lZUcem7v7m7Xqn7s9Ga8EzO3rNkbuiSJ6ZhEkss0Vdamyq2zTCYo1AorLX5FqRLISJrXtfQGByVCFW10dSMTr2/Hjkbh/NYIAj37yiV79aAGa4zZ850fEmoLoWzAuXWJEKkJn1WoBxKZ0PNWWvrq+TsgpWRc1ifscU7iOVHREQEVm27WaBSqay1K9xZVOY/is+jypjweIDc2hlKJfqq4CWJsFQDYYKSdxQsCpvyug0OHmENItKs1Wp5X7TbMNIDAEA88YKUZaCPTSnRV8H/IUJtRlNT8o4CfOI9iDWW4y7QzeCW4RK5uT4eYHUja11DI3x+0CVWJfoqfNbriIIwiUTicHVgHcEtw/V4AEpEFpZS8BFCPNt1DY1vbNuFjwn6zHo1Bm5t31mAW4bLf5QX4shSQ009ExOUU1SOjwlCFITJZDJbpClsK3qQtajC5NTNR4ewZmHYFIfQyF3A4gD8Mlxop8WQlZGzuQ/CC4iCsK7x/OCW4ZoVKGd4zjaCqLmhmESa4fG9Fl8SiURdYN2FYYZrEecgX/++LqyPTeUdhAmyUZjQtqJHLBZHRERYfAlmuGx6d4tw78eDj8fK2VdmTSNHREQ4bilPW3Dbw7VoZgBH3YyXaLa+Wu0CHgtguYeLownCymMhomVdQzQD/HbkrFw8h6Nuxkc0G01N9l+321b0APyclv8oryVPTGP9drw8lvUPsMtYHNwyXACA91YorZWjMgEf0VxYSiEKwhy6mqctqB0VAgV7EElSWvDxWAAZLesaohngl+ECAHBp/o6XaEYWhNmo/l1I0bOzqFyYldbS+azLAPHxWIJoZEFA/FsyrB8fazu8Pd0LUpaz0z2OIpq7jMcCyH9LRt5BO07kf7y3QjXe+t5jBFh5rC5fEAZBZ7hy9gkQ7AmSjdkay1L34CWarReE2c4E2Vz0IDJcQKCVFgDgvRUqFroHK4+F0MhKpdJB94haBCV68g4KEuzxH+XFTvfgI5pBNygIgyAyXEZTkyBOS+TmWpCynIXuwcpjdfmCMDMIB7zhE8t7qWzNopkBLHQPVqIZXRBmu0fI5qIHYOm0AADvrVBtje1cngIrj/W+9UVqF7M4iAyX0dREe6qzjfAf5XU4Y3Wn6nuwEs3doSDMDOIbIZTTErm5Hs54c2XkbOYmCCuPBZDJHUffqd4OxPNT19AoVGPSRTMDDqWv7pR0xko0C1UQZsM+PWYUCoVarTYajR1fMpqaMnKLhTppb9HMgFmB8mfi083Ne7w8BsFWK/4+w+HDEXi3NUtdQyM+HqtEX2ktsGxTjSwUarU6ISHB4kvv5xVHCeQJvD3dCzYtT88tjmtzODCUQSI3F3iwgJfHIHgsV11DI1aH43TtncbtUKvVW7ZssfgSzFDYv+cTZOXiOY8HyJelaI/V/NMUHmGCjKZmfDxWzr4yREFYFxPNUqlUqVRa6xn2fl6x/XvOQfxHeR3OeDN5R0Hb5j0IEyTUPC3yvvWehDYVzfYQPWKxGOG0MvIOCni8sMjNtWDTckN1vf8ourNv2Jce8o/F5puQrlSNYQbx/AjrtAAAUXNDZwXIRG6uNA4Jp+enRF9pLbAMuqLooXNaBwV8fmCqtK6hkd4E4QQiQtYlTZBGo7H2/JToq0r0lQK2G4XS2dtzkAOZIIRolkgkNt1FYY/0FgBArVajMhRCpNXb4ljmBu2xuqTFEYvFSqXVBLZQGQoz3p7u+CzBmYAQzV2sIMwMoju5oaZe2ONBRG6ujmWCEB4LdEXRDACQSqXBwcHWXkV8oeyD/ygvBzNB1o22rZ8fO4kesViMYS2Yg4L4gtlaIwsIwmkJmFZ3RLqhaAYASKVSxI4KwZ2WY4Gw2F2vIMwMwgSV6KswPNMKW9JzixGi2dYFYXYSPQD5LxFq458jgvZYjn7YFgKYobD2KiI9TGgHwsEHBwd3mZ3GHUGYIJihsOdkHBd0mKeLlTC3JSQkBBHssXYkFqEdRlMTOtJsa9FsP9FD57SEaZjhcKDDPF11mQ4hTos7OfvKuqdoBnROC5/TiDAHEebp2qIZIE2QUG3nHI6M3GLElm07mCD7iR6Ad1rdIei2YR6IXC5HOC1BGhU6HN3ZYwHkd4Q4LSagwzxd3gQpFAprPZ8AMUEMMJqaEB1B7RDmAXYWPSStzhHERySTybp2mAeCsKp7y/TEaaHp5h4LABASEoJwWiRDQQtCNCuVyi4vmgFaN+//Qai2c46C4GEeYGfRAwTKUFy5dt0Ww1okSfvVH39dssXI6DBPWlqaLW6KG+gMRVzG57a46aWrJlsMa5HvqUrb5Vm6eZgHIkiw5/JV+5mgtz74wkYWj4hmAIBKpUI0+E7eUWCLm9rThX158Cfdr7/bYmQcwjzA/qIH7bSiUyw3QmDNjVu3l2/59H7lahsJkXZsytmb8unewP+sscVmom5bf9oORECrsJTi/ZM/eOS3gBcSNud8w++wFvnjr0vKNRnLNmqfS/zA1HyD38GJx4IgnBawgQm6cu16pCZ9Zkzy1evN/I5skSVvf7z18/0BLyT8cKya98HRYZ6uummrI4ile0beQUO15baxrNlZVD7h6TfyD/3C77AWMVTXR6dkPfnfLavf//z233f4HRyHMA+wv+gBdHuPeVTKJ2rPBS9Zm7nn8JVrTU+teod3L9KO4iPHk7RfAwCuXm+O1KS/nJLVdOMWX4N382qetqCdVlzGbr4izLf/vhOX8fm/V73z1+Wr67RffWPjE5Wbb956atU7V641AQDyD/0S9J81P/9+isfxSZjHDHrvMY87SX84Vh3wQkJhKVV99s9ITfqdOy18jWyRD/IP7i7+EQDQcMk4e3lK4sf5f9/hzW8R0WxGpVJZazsHeNXNpuYbzyV+sGyj1tR8Myr5418ra/ka2SIXr1ybH/fuzdt/t7a2bvviQGh00sn6Br4GxyTMAwQRPbRpdV4izO/nHZy6dN3J+j/hj5VnzqvWfNDSYiuj89PxmsWa9NbWVvNvPt1X9vBLa45ZOSyiUxhNTYgvUnfzWMAuuvlkfUNodFL6lwfg37S1tfWFddt5X8OZab55a37cu5Vnzpt/U9fQ+Lh648ZPCnl5aNGNMbqVxwLI09wAAHEZn3PXzX/fuZP4cf7s5SkNl/45fud7qvKNbbs4Dosg97uf49L/l95taWndvPObsJeTeTGnRlMTInfcrcI84O4ZA9ZeNdTUp/NR0fzz76eC/rPGHOC5efvvBau3NjRaOM2JFxqNpvAVm82PKwDgWM3ZqUvX7dj7PS/jJ+8owCHMAwQRPYCuAIWjUm40mp7675Y3tu26efvvtr8/eOR4/PZcLiNbo0Rf+cTK1Oabt9v9/vS5C6HR69/dXdRWDLEgeUcB8VhtQQd7uEeYs/eWTF26znwcEqT55u35ce9evHKNy8gWab5564mVaR0jeXdaWtZnfT17+SaOyVlDdX3b08Ha0Q1FM9ppGU1Nq6x/XEyoa7gY9nLy5p3ftLT8vy/+h1/rsveWcBnZGrnf/fzi+o/udNDH1MkzD7+0dteBHziOH52ShYnHwgTEGQMAgA3clu4tLS0bPymc9erGdmYfRmKab/KWQDDTaDQ9/uqGE7Xn2v2+6cYtdeonkZp0jkVFJfpKTMI8QCjRo1AoENu4uESYK6pqA19MOPjLbxZffe+L/bx3QTxccWLeqnc7Kh7I7b/vxG//8siJ06zHRz8u3dBjQbRaLeJVLrpZteb9mNRsi6nJhkvG+XHv3rhl+W/NDlPzjbkr0346XmPtgh+OVa/5OI/LLdCfRjf0WAAAjUYjk1k9i2hnUTnrTRUHj/z28EtrqZNnLL4ak5rNe5Vozr6yF5I+tLayutZ047W0T/64cJn1+Om5xYhSue4W5oGIxWLEFwcdGEPTdOPWnNjN67O+/ttSMtRQU7/k7Y/ZjWyNC5evznp1ozkr0pHCUuq9Lw6wHh+dqQB2N0HCiB4AQFpami0izCOHDulzT2/EBerUbB67KaTnFv971TtoL/jW809MGjeS3fi4PS74EBISguh1ySXCPE46FPFqRdWZ8NjNfMV7TtY3hC5L+tG64gEAjBrusSnmada3SN5RYLCeY+22ohnYTDeP9vLo0QNlV59+6719PxxlN3g7/r5zJ377ly9v2oG+7MO4F4cNHsDuFnUNF9HNRLqtCVKr1YhNOaw3Vbg63+M1ZCDigoKSioVvvsdXvOfn309NW5ZUhazdecjP578cDgWPTslCZCpiYmLsLJoFEz1SqRStlNlFmEVurjlrlvbpbfX0+L/vtKxK3/38uu23/n/yq7Ncvd68YPXWuPTd6BL3iEf+pV7wKOu7oBNb3dljATrdzDrC/Hrk7Gn/ug9xwZHfTz3y0lru1Vr5h44EL0lELLAAAP1cnT9PesXNxZndLQzV9ejeM92k04FF5HJ5TEyMtVdZF4d5eQz6KO5FJycnaxc037y98M331mV+xTHr/cdfl8JeTqbNnr+68NHHprA/Xxud2LK/x8IKtG5mvaliy2uRY7zvRVyw74ejodHr6/+06hqY0NramvbZt7Ne3YiOAg4bPGDn2mU9e7KUCmjxJxKJ7C+aBRM9AAC1Wm2LCLPfyOFbXluMviZPd+TRmA3sisJaW1uzvyl58Nm3in40oK/09/HKWPksi1tACkspRGJLJBKhv3JdHrFYjPDZrCPMTk5OH61+0ctjEOKahkvGGS+/nac7wmJ8AEDN2T/nxb37XOJ2dIywRw+nTxKWSu51Z3cXQBeuiI+P76rH0zJEo9HYYlPFtAfuW77oMfQ1m3L2/nvVu9ebb7IY//bfd7bs+jbgxQRrSbQ2M/Fb/Sz7M6vTc4sRm0YlEkm3DfNApFJpfHy8tVdZ6+Y+9/T+dM1SN5c+iGtO1J57ZEliueEki/EBAFTVmdBl69d8lGcxiWbGpU/vz9e/Iu7Xl91daDMVWq1WLBazG5w1QooeYLMI87zpD708Lwx9DXXyzOTn45Oz93Sqf8aR308HRyXGbM7+6/JV9JVjpUNzk9XoXBsCJo9Ld15jQVQqlS0izCI31y/WvyJyc0Vcc/P238+v2/7vVe9UVNUyH/nq9eZV23YFvJhw4Kdj6Ct79ujxwX+ff1g+hvng7Vi1bRcisSWTybq5xwJ0uhlwMEFvKMNp4ysHjxyfpHrz/byDNztTJVZYSk1+Pj7hw7xrTTQ9OIJkvtmaJYiYExraxJYgHgs30LqZ9aaKkcOGfJKwtBcyvmI0Nc2J3fRi0oed2lje0Ghc8vbHodHraRWzS5/eu9a9PFaCSvejQYcJIyIiFAr2ipw1AoseG0WYAQAJLz45f/pk9DVXrzcn7yiQPbNqA530ab5564uDP82PezfslbfbbeqxiL+PV+Gm2EEit85Nug14Pi4YYqMI82gvz12J0bSXFf98PHTZ+gWrt9JKH6rqjGZ77v2L4zLyDjLp+rV91Qtzp05iONuOoOvfRSJRfn4+68G7ErSbKtgVhzk5OX26Zukj8rHoyxouGd/Ytuv+xatpT1y+cu169t6Sx9QbIjXpp89doJ3A1H+N27XuZZc+93Ri0v+fSE0GOrHVnXPrbbHR0v2RiWO3r3oBfU1LS+uX3/380HPx/1n/0ak//kJfXHa0KvadnH8p43YX/0ibWu3r3OeL9TFBMvaLLtrEllCZCqu1L3ZDo9Hk5+efOWNZdSZn7xnv4zUrkE0QPn3lsxeuXDt45Dj6MqOp6e0dBW/vKJCPltw/Vurv4zVhtNdYydBzFy7XNlysOfvnz7+d+qZcz7zT4ERfyZdvx7AOCQKMHxcMgRHmhIQEi6/WNTRGatK/TlnOYuQH/Xxy1ixd9NY22iuLfjQU/WgYOniAfLS33Fcy0VcycYy0paX19Lm/Tp27UHnm/FeHf2HiqMxka6LYPfMQJvXvJExoJi0tTafTGY2Wk90bsvcETfD1H+XFYuTshKg5y1OO0q31zzdeeWPbrjUf5Y738bp/jNTfx0s22ttnuEft+Qt1DY0n6xq+11fSJtPbEvaQ/2cMJDsCdP27TCbrztVg7YCbKrKyLH/jDDX10Ru1W1eoWIwc8ci/NkQvfH3rTtorvzj40xcHfxoxdLBstLd8tETuK5H7Sq7fuFl77kLNH3/9fvqPPN2Rtj140PRzdf5i/SuT7vNhMWdIXcNFDBNbEOFFD4wwP/HEE9YuiE7J8vYYxM7ofJoQ9fRb26ztYG8HdfIMbcSPlvvHSHOT1f37urAeAc88KM5oNBqtVmtNN5foq1Zt25W0dD6LkR+dItu5dtnihAwmsZlzFy6fu3B5bxmnxs19evfKWbtsKrKSmhba+ndEl5puCNxU8eqrr1p81WhqCl+xmcpeh053WqSfq3NusnruyjRa3QMAaL55++ffTv38G9c23LMDJ3785otcRqCtfyeLrnakpaXl5+db0805ReUBE3wXzQxgMfILESGtoPW/7+1iUvZ++tyF0+cucDywQtzP9asNr7FzuGZo698FzFQInN6CoCPMRlNTZEI6uyRFn3t6f7YumkuaoFM8Nyd4z+ZYjoonPHYz4h+rVCpJYqsjaCuckXeQdX+mmZMnfLE+pq8zqqiQL6T3uhe/t4qj4snZV0bq3zsLelMF7bcSwcD+boWbV3CpzWJOr5493lCGa9/6T6+ePVkPAu0t4gJS/94RJsVhrDs/vRgxdfsbz6Pre/hiwiivQ+mrOSqeVdt24Vz/joXoAXTbj+saGsNjN7MbuVfPntvfeP7FiKlsp8aIgf37fp70csori5zZVi5DolOyEFFliURCosoWQbftAfCDZdum+WH5mMLU2IH92ecrmfDMY4ElH8TfN2IYl0Fy9pWhw4RpaWkksWURtBY01KC6WqPp69Lni/Uxc4Imsns7Q7w8Bn27ZeWKZ2ahuwShgfIOESYk9e/WQG+qAABEajJYm6C5Uyd9lviySx9OzgVNjx5Ory187MDWN9AbV2lBL7oABpkKXEQPum0PuJsZZTe4k5NTcvSCba+r+rmy7HeCJnji2PIPNaGTxnMcJ3qjFr3bSPDHBWfQuhkAEL5iM+ve8BNGeR9KXz15/Ch2b0cDm0u989piV2f2ZacAHjeB3KUfERGBOKO+m4PeVAEAyCkqZ93xsnevntq3Xkp48cnevdjHYBDMC32odPtb94+RchwnUpOOWHSRMCEarVaLMEGwboH1sW7THriveOuq0V4ebGeHYqi7eO/mFaufU3CJEQIGiy4c6t9xET0AALVajV6sczE6AIAFM6Z8//6b8tFWtxeyYLSXR+ab/8nb8OrgAf05DrVq266conLEBTg8LjgjFot1Oh3iAqOpCb0hBc2wIQP3bFq+ShXOY5y5T+9eUXNDf81KfJRD+ziIobo+fAUqBUM8Fi1paWmIJBcAIC59N7smCAAAJyenl+eFFW99Y8TQwexGsMiEUV57U1dk/Pc51h0szURv1CKyEgAAjUZDElsIpFIpOhJvqKmP1KBSh2jGSoceynjzhfAQ1iN0pJ+r8xvK8J8y1z7ox75sGWKorkcrHkzChBiJHsDM6LDOjAIAvD3d97/73+ToBeJ+na5JbMewwQO2vBZZtl0T8ci/OA4FGIQEBc+DOgRyuTwzMxNxgaGG5muJpkePHrFPzzqc8eZDnA1Ezx49nnk08Jcdieui5g3gnDiDxbZoPUfChEzQ6XSItiuAW54UADDex6t0e/zKxXO4pyrGSO7dEb9Ex1MAMnqjFr3oIvXvTFCpVIh2heDuvgrW4zvf03vDywu/SV3h6+XJehDzUMuemkFlJ614ZhbHGDO4u+hCX4OJCcJL9MDFOjpJwSUzCgDo2bPHixFTf85c+8yjgezsTvjD9+9cu8yQ83bkY0Gsm3O3hTYkCLuq4PC44I9KpUInKQpLKdbNnyBjpUO/SXv9w1UvjBw2hMXbx/sM17wwV/9p0jvLFw91Z3kiUluYlNmS+neGiMXi/Px8dJKC9b4KiPM9vVdGzv7ho4Twh+9n8XY3lz6Lwqbkb3i1/EPNbJ7qhHL2laEVDwkTMkej0SD25QBu+yogD40f9cPHCSmvLBrqzsYpPOTnk6p+5rfPkte+9BT3FRcAoK7hIu2iKzMzE5MwofBb1tsBdU9ISIi17X8wM/p1ymssdpCaGSRye2f54g0vL9z/kyH/0C/f/fLblWs0Vix44th50yfPeXgi9zByW2hDggCA/Px8TB4XhyAtLY2iqEOHDlm7IDl7j5fHIHY7SM3MnTpp7tRJR6vrCr6v2PfjUdqWlUMHD3hy6qQF0yeP41aq3A6oeBB1GAAApVJJPBZz5HK5VqtFNNGA+yoOZazmchcvj0Hat166er352/KjubqfS/VV12/QHEnx6OQJ82dM5iW03BYmiy6dTkfq35mj1WpDQkL0eqvdK6JTsvx9vDhuknpuTvBzc4J/Ol7z1fe/HjxyvPLMefT1o708npz64Pzpk7mcbNMRJmUDSqUSn2pC7EQPAEAul6elpT37rNVTqww19eGxmznqHgCA8z295wTdPyfofgDAb6f/KDt6srbhwiWjqdFo6tmjx4hhQ7w9Bo0YOtjbY5DkXncuvU2twSQkmJmZSUp5Okt+fj6t0QEAcNQ9AIAJo7wnjPKOezbi6vXmH45V/3ri9F+XrzUar5mabwx1HyC5113i6S69193b091jICp+yZq49N1oxSOTyYji6SwKhSI1NdVa5x5wd1/Fuqh5HE1Q/74u86Y/NG/6QwAAqupMmeHk2T8bG6+aGo3X+zrfIx062NtjEPz/0ZzTGRYp0VfSLrp0Oh1ZdHUKGC+Uy+XWlu4AgPAVm7/eyLUdDgDgQT+fB/18APj3paum0qNVR0/W/3X56qWrpuabt4cPGTBi6GBvD3doiLicEGANR1x04Sh6AAAqlaq2ttZam13An+4xc9+IYRx3C3cWhiFBfASyAyEWi+FiC2F0+NI9kP59XcIe8g97yJ+X0RhCW4chk8nQxd0Ea6jVaoqirLXZBQDkFJUbas7yaIJgF11ehmKIobo+UpOBvgafrIRjIZVKdTrdxIlW84+wDm9rrJJL7/W2DOzvZl7D2w10jxUAQHBwMFaKB+BW09MWjUaD3sxlqKkPjkrkUt8jIIbq+uCodQ4UEnQ45HI57fFS0SlZHJPrAkKreCQSiU6nI6VgrNFqteh9FXDpxaW+R0BK9JVk0WVTaPdVGE1NkZp0BzVBRlNTeOwm9GZGmUyG4Rl/+IoewGAzV11DY/iKzQ6newpLKVpzg1tI0BEJCQlBGx0AQHRKFuumcwJCq3hI8Tsv0O6rcFDdk7OvjHbaMTExRPFwhHZfBXDMpRfMaqEbHMAwM4YmCGvRQ7uTAtwNEjqQ7snZVxapodn9gWFI0EFRqVToeCEAID23mHXfS/vzz+qQTvGQOgxeYLKf1FBTL4+McyATFJe+m7aOR6lUkubvvJCWlobezAUcTfcYquvlkXHorBTI88YAABIRSURBVBbc7oeh4gGYix5wNzOKvgbqHtZNw+xJ9EYtrbnBMyTouGi1WnR7eABATlG5Q+geQ3V9eCz9o56WlkYUD1/AfRXoaxxl6WU0NUVv1NK2eI2IiCCLLh6hzZMCAKJTshzCBDFJU2C+6MJd9AAGmVHgCMlRaG7QC3SAcUjQocnPz6c1OjlF5bQROGGB5ga9wAKkDsMGqFQqJiYIc90DUxJMTBBRPPwC44VMTBDmuodJmgJg32PFAUQPYGZ0AADRKVnJ2XvsMJ/OwtDc4BwSdGgYGp3CUio8lv35XDYlOXsPE3MTHx9PFI8tYK57MjgclWM7YIyQVjGTRZeNYK57sF16MUlTAEfoseIYogcw1j3JOwqClyRi5bcM1fXBUYm05gbzkKCjw9DoGGrqg6PWYeW3YBSTSRfp+Ph4claJ7WCoe1al78bNb8GNWkTxCAvzpZc8Mg6rag0mdYQQhwgzO4zoAQCoVKq8vDx0USHAzG8lZ+8Jjkqsa2hEXyaTySiKsqh4qqqq4uLinnrqKdtMsBvB0OhAvxUeuwkHvwUVMxMLmJmZSRSPrWG49MLHbxlNTXHpu5nsLyOKxw4wN0GRmvTojVocTFCJvpKJCRKJRNYUz6VLl7Zt2xYYGHj+PE3PaPvgSKIHAKBQKGg3UwA8/Jahuj54SSKTBTo0N+26vDc0NGzatGnixIljxoxJSkq6ceOGrSbanYBGh3YzBQCgRF8luN/KyC0OX7GZVjEjzA2Bd6DuYWKCBPdb0F3Rli0DACIiIojisQ8MdQ8AIKeoPDgqkcsB2xyBz3B4LCMTpNPp2pmgGzdu7Nq1a86cOZ6ensuWLSsvL/f0tElX8c7iYKIHACCXyxk+NEL5Lbi6YpLSAh0WWNeuXcvMzJw+ffqwYcNiY2Mp6p/JDxnC5mxLQkdgHwTafezg7ndekFRFib4yeEniqvTdtLe2aG4INkWlUjFZegHh/BZzdwUAUCqVpKWTPYG6h4kJgqe8CdJIbGdROUPv2a4wo6WlZf/+/SqVasiQIQsWLNizZ8/t27cBAAMHDnRycrLtpJnheKIH3NU9TNbr9vdbzFdXAAClUklRlFgsvn379ldffTVv3rwhQ4Y899xzxcXFLS0tba/08PCwzXy7KVqtlkmeAgBQWErZ02/BXX5Mak4BqQMTDuZLL/v7rU4l1+Lj48leLfsDz8mh7VsISc8tDl5iv7MH6houhsduWsYsSNm2MOOXX3557bXXhg8fHhYWlpWVde3atbZX4uPCHEb0REdHL1iwYO/evXfu3AF31+vx8fFM3gutQHL2HptKn06trgAAmZmZmZmZJSUlS5Ys8fT0VCgUn3/+ubU0Fon08A7DEjFw12+Fx26ytfTJyC2WR8YxKRgEAAQHB9fW1hLFIxTMdQ8AID23WB65ytYmCLorhms8kUiUl5dH6sDsxldffRUQEJCenn758mX4m7S0NIZLL3jmUvRGra336GTkFgdHrUO3WjajVCp1Op2Tk1NiYuK4ceMeeOCB1NRUa4U7+LgwTA8cbceNGzeysrJMJtOuXbs8PDyefvrpBQsWTJo0SaPRyOVylUqFOFcSYjQ1Je8oyMgtXhQ25aUnpnl7uvM4vbqGi+/nHcwpKmdo0UQiUVZW1o8//iiVSuvq6pi8BZNsaBcDloipVCrEeexmSvRVJfrNQTLf1yNnB8nG8DsTeNg1Q7kMAIiJiSENcwVHLBZTFKVWq7ds2UJ7cV1DIzRBS+aGLnliGl/HlN4d/OKG7D2FZXqGJgg24yGK2Z7s2LGjvLy8vLxcrVbPmjUrMjJy1qxZKpVKKpUqFApaFwYAyCkqzykqt4UJMpqa9pbpk7MLmJugxMTEAQMGzJo1q6yMUXs8Ino6R35+vslkgv/9559/bt68efPmzWPHjo2MjIyMjGTut4ympvTc4vTc4kVhU16PnM1d+pToK9/PO9ipsqF7773X3d1doVB06kbu7nyqNIIZuF5Xq9WI87TbAqWPv4/XkrmhC8OmcLw7tDUZucVMklkQ2Myps88PwXakpaWFhIQwWXqBNquvJXNDF86YzN0E7S2jMnKLGS7NIbDhMinisSdXrlwpKPhnU8utW7fy8vLy8vIGDBgwf/78yMjI2tpahUJx6NAhJkPxu/rq7IodAODi4iKXyxMSEmCxDkOI6OkcFh3SiRMn4uLi4uLiHnnkEaVSeeDAgb179zIcEEpm1tKHhS42c/78eRY79/BJiHY9YH49JCRErVYz8VsAAENN/bKN2uTsgpWRc9hJnxJ95WdF5QwzWWbgoWztNvoRBEehUFAUpVAomCy9wF3pk7yjgIsJ2llUnpFX3CkTJBKJNBqNWq3u7O0IHMnJyekoES5fvpyRkZGRkeHt7a1UKmUy2TvvvMNwQLP0WRgWwNoEdXbFDgDo0aNHc3NzeXnnDBfAyYU5gOj5888/v/32W8QFhw8fPnz4sLOz84MPPnjs2LGmJqaKFUoffx+vIJnv4wHyQJkv7VtK9VV7y6hO6WJewEcmd1VUKhVMlTL0WwCAuobGZRu1q9J3zwqQBcrGBE4YTeu92PkqQNwV9kilUoqiNBpNQkIC83eZTdDjgfLHp8j8R3mhrzeamo7VnN1ZVNZZuQzuHupHFLMg7NixA/FqXV3d2rVrAQB+fn7nz5+/dOkSw2FL9FUl+qrk7IKgCb6BsjGPB8ho06aG6vpjp86yW7EDANrtsGEOPhUamIqeGzdulJSUHDhw4MCBAxUVFQzf8tNPPwEAnJ2dO9XVxlBTb6ipT88tFrm5Bsl8Ayf4Ph4gM3uvuoaLpUdPHqupL9FXMc9B8IuTkxM+MrkLI5fLKYpKS0vTaDQMQz4AAKOpKeduzMaigC7VVxlq6kuPVhlq6tkZGhLgcRQ0Go1CoeiUdAZ3TVDyjgJogh4PkLcV0NBLleorDTVnWZsg0q3bzrS2th49evTAgQP79+///vvvGS7Fjx8/DgDo2bMn3K/DkLqGxpyG/5mgdgLaaGoqPVplqDlbqq/sVBqUXzCq0Gil45tvvun4rk8//ZT2jaxBx3Xsg7fnoCCZL7/Fhqxxd3e33afd2to6e/bsjjflcfyO7RkefPBBHsfnndOnT9MezE5LkMzX34dm4U6LSCRKTU0V+vOgYf/+/R1nHhsby9f4FtuRl5eX8zW+LUhNTWWyMRABFNBcRoAEBwdXVFQI/XnQcN9997Wbdo8ePXgcv+PHsmDBAh7H78jAgQO5/+24AAW0t+cgYadhpqyszHaf9gcffNDxjhcuXLB4MY5b1nHYU1DX0Fiir8KhCzgguS27I5VKdTpdXl6eRCJhPQj30CBs40RSWo6IWq2mKIpJAzprGGrqOa7LJRJJXl4e6eQkCN7e3sJOwGhqKtFXsQst2wJ8vBiOosfDw8PXl4clTpcBn8elW6FQKGprazMzM7lIH3YolcrTp0+TlJZDI5VKtVptRUUF96hhZxGJRPHx8XBPkJ1vTYBMnz5d6CngBT5eDEfRAwAIDQ0VegoYgc/j0g1RqVQURcXHx3PMVjCEyJ0uBuyJ8N1339lH+pjlDqngERbiwtrSu3fvfv36CT2LfyCixwEgVczCIhaLNRqNraM+RO50YUJCQqD04ZLwQiORSDIzM6HcIT14BGfq1Km9emG6T8j+DB06VOgp/A9MRc+0adOEngJGENGDA2KxWKVS1dbW8uu6ZDJZamoqkTvdgZCQEK1We/ny5fj4eB7Vc0RERF5eXm1trUqlInIHE/r06RMYGCj0LHABn/3qAFvRM2DAgPvvv1/oWeACET1YAV3X6dOnU1NTmZx6axGJRBITE1NRUQFLlYnc6T6YA4d5eXlKpZJ12lQmk2VmZl6+fDk/P5/U7mDI1KlThZ4CLgwePFjoKfwPfONv06dP//XXX4WeBRaQmh4MkUqlarVarVZfuXIlPz8/Pz9fp9Ohu/uIRCK5XB4SEqJQKMiGGoJCoYBihaIorVar0+lou/tIJBL4/ISEhJCgDubMmDGDVFZBsFq3Yy16NmzYIPQssICIHpyBaS+VSgUAoChKp9PB/z9z5oxEIpG3gYRzCBaRy+Xw+NgrV66Ynx94ElNwcLBUKpVKpSEhIfA/BJ4rgTEBAQF9+/a9fv260BMRHiJ6GDFjxgyhp4ALWMUGCQiguBF6FgRHRSwWm8M/hC5ASEhIYWGh0LMQHozaMWNb0wMJCQkRegpYgFUVGIFAIBCYQLr1QLByYViLHrJxHQDg6urat29foWdBIBAIhM5BXBgEqwoNInpwB6vHhUAgEAgM8ff3JwYcYFbTg7XomTRpEglykIIeAoFAcFBIkQYgNT3M6dWrF2l1gFU2lEAgEAjMITtyAGZeDGvRA0iGi0R6CAQCwWEhpwtgFeYBRPTgD1YamUAgEAjMGTlypO0O7HMIsCroAfiLHn9/f9x0op0hdXAEAoHguHTzDBduogff5oRmZsyYsXPnTlvfZdy4cWPHjh03bhwA4NixYxUVFfX19ba+KRNwe2IIBAKBwJzQ0NAPP/zQ1ncZNmyYn5+fn59f//79T506RVGUwWCw9U2ZgNu63QFEz7Rp0/gVPc7OzmPGjLnvLuPGjRs9enSvXu0/isuXL//6668Vd6mqqrpz5w6P02BINw90EQgEgkMzc+ZM3sf08vLy8/ODLgxqnX79+rW75ubNmwaDwezCjh492tTUxPtMaMGtLNUBRE9YWBiXt7u4uEBlAx8OKHGYvHHAgAGhoaHmoqLm5ma9Xg9lEEVRR44c4TIr5pBID4FAIDguAwYM8Pf35xJ38fb2hs4LCp3x48e7ubnRvqtPnz4PPPDAAw88YP7N8ePHKYqqqKjQ6/W//PLL5cuXWU+JObi5MAcQPd7e3iNHjjx16hSTi/v162cO4fj5+Y0dO3bEiBG8TMPFxWXy5MmTJ082/+bo0aMURVEU9euvv1IUhT5hmzW4xQYJBAKB0ClCQ0OZix6JRAKVDVyrjx8/nq9+dTAm9PTTT8Mfz5w5A9UPDAWdPXuWl7u0AzcX5gCiBwAQGhpqUfQMHDjwvv/PsGHD7DarCRMmTJgwYfHixfDH06dPV7Th3Llz3G/h5OSE2xNDIBAIhE4RGhqalpbW8fdOTk5SqRTGb8zpKldXV/vMSiKRSCSS8PBw+OOlS5fMFR0URVVWVra0tHC/C24uzDFEz4wZM7Zv3w4AkMlkY8aM8fPze/jhh8eNG4fVdu4RI0aMGDFi7ty58McLFy6YFXRFRUV1dTWLMQcPHuzk5MTrNAkEAoFgV6ZOndqrV6+WlpYRI0aY9Q3MWLm4uAg9u38YOHDg9OnTzYekNjU1HT161OzCDAbDzZs3WQxLRA8bHnvsscrKSl9fX6En0gkGDx786KOPPvroo/BHk8kEk6mQ48eP3759m8kgNp4mgUAgEGxL3759KYry8fFxdnYWei5McXV1bVfRodfr21Z0XL16lck4WMUmgKOIHjc3N8dSPB1xc3MLCgoKCgqCP966dev48eNmDaTX600mU8d34aaRCQQCgcACPz8/oafAFZlMJpPJlEol/PHUqVNtKzrOnz9v8V24Ld0dQ/R0Pe65556JEydOnDgR/tja2nry5Mm2D9CFCxcAET0EAoFAwJKRI0eOHDnyySefhD/+9ddfbZu81NTUtLa29u7dm8lGM3tCRA8WODk5+fr6+vr6zp8/H/7m7Nmzer2+d+/ewk6MQCAQCARahgwZ0rai49q1a6yLWW0KS9Gzdu3a999/n9+pECyybt06W9/i2LFjtr5FO37//ffg4GA735RgI+zT7aMdUVFR/fv3t/99CbagtrbWzncsLi4mJsg+ZGVl2foW1jJrFmEpek6cOHHixAl27yUQrl27dvjwYaFnQXBgKIoSegoEB+bChQuwhIDQ3cD9wFECgUAgEAgEXiCih0AgEAgEQreAiB4CgUAgEAjdAiJ6CAQCgUAgdAvoC5k9PT3JSQjdDX47o4vF4itXrvA4IAF/eOwm6u/v/+WXX/I1GsEhcHd353E0Z2dndkcoEBwXa0eYObW2ttp5KgQCgUAgEAj2h6S3CAQCgUAgdAuI6CEQCAQCgdAtIKKHQCAQCARCt4CIHgKBQCAQCN0CInoIBAKBQCB0C4joIRAIBAKB0C0goodAIBAIBEK3gIgeAoFAIBAI3QIieggEAoFAIHQL/g+lpBcJK8agyQAAAABJRU5ErkJggg=="}}},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"6. Programmer un pierre-feuille-ciseau. \n\nDéroulé du programme:\n\n- L'utilisateur choisit un nombre entre 0 (pierre), 1(feuille), 2(ciseau).\n- L'ordinateur choisit au hasard un nombre en 0 et 2 (vous pourrez utiliser `randint(0, 2)` pour faire cela.\n- L'ordinateur détermine qui a gagné la partie"},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"}},"nbformat":4,"nbformat_minor":2} +{"cells":[{"metadata":{},"cell_type":"markdown","source":"# Conditions\n\n!!! hint\n\nQuand on veut gérer des situations différentes, on utiliser une structure `if`.\n!!!\n\n\n!!! question\nTester le programme ci-dessous avec différentes valeurs de `a` et `b`. \n\nQue faut-il répondre au programme pour avoir les messages suivant?\n\n- a est plus petit que 10\n- a est égal à b\n- J'ai rien à dire\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"a = int(input(\"Choisir un nombre (a): \"))\nb = int(input(\"Choisir un autre nombre(b): \"))\n\nif a < 10: # Si\n print(\"a est plus petit que 10\")\nelif a == b: # Sinon si\n print(\"a est égal à b\")\nelse: # Sinon\n print(\"J'ai rien à dire\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Exercices"},{"metadata":{},"cell_type":"markdown","source":"!!! question Tarif\nUn musée accorde des tarifs réduits aux groupes contenant au minimum 6 personnes de plus de 18 ans. Un informaticien du musée veut écrire un programme Python pour les clients qui achètent des billets en ligne. Ce programme doit demander au client le nombre d’adultes de plus de 18 ans du groupe puis afficher, suivant la réponse du client, l’une des deux phrases suivantes :\n\n - \"Vous avez droit au tarif Groupe !\"\n - \"Vous n’avez pas droit au tarif Groupe !\"\n!!!"},{"metadata":{},"cell_type":"markdown","source":"L’informaticien a commencé à écrire le programme ci-dessous. Complétez-le :"},{"metadata":{"trusted":false},"cell_type":"code","source":"nombre_adulte = int(input(\"Combien ...\"))\n\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question Malus\nÀ l'achat d'une voiture neuve, l'état applique un malus écologique. C'est une taxe qui dépend de la quantité de CO2 rejeté par le véhicule. Voici quelques montants de cette taxe\n\n| Emission de C02 (g/km) | Montant du malus 2022 |\n|------------------------|-----------------------|\n| Moins de 127 | 0 |\n| De 128 à 151 | 1074 |\n| De 152 à 200 | 18 188 |\n| De 201 à 224 | 36 447 |\n| Plus de 225 | 40 000 |\n\nÉcrire un programme qui demande l'emission du véhicule et qui affiche le montant du malus.\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question Questions flashs et correction automatique\n\nPréparer une série de 4 questions flashs simples où la réponse est un nombre ou un mot. Écrire un programme qui demande une réponse aux questions flashs et qui dit si oui ou non la réponse est juste.\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Comparaison et logique"},{"metadata":{},"cell_type":"markdown","source":"!!! hint Vocabulaire\n\nEn anglais, `True` signifie `vrai` et `False` signifie `faux`.\n\n!!!\n\nQuelques opérateurs pour faire des comparaison entre nombres"},{"metadata":{"trusted":false},"cell_type":"code","source":"print(2 == 2)\nprint(2 == 3)\nprint(2 != 2)\nprint(10 != 5)\nprint(4 < 5)\nprint(4 <= 4)\nprint(34 > 2)\nprint(34 > 50)\nprint(5 >= 10)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question\nFaire la liste des opérateurs et écrire une phrase pour décrire ce qu'ils signifie.\n!!!"},{"metadata":{},"cell_type":"raw","source":"\n\n\n\n"},{"metadata":{},"cell_type":"markdown","source":"Pour combiner plusieur condition, on peut utiliser les mots clés `not` (pas), `and` (et) et `or` (ou)"},{"metadata":{"trusted":false},"cell_type":"code","source":"print(2 == 2 and 4 == 4)\nprint(2 == 2 and 3 == 4)\nprint(2 == 3 and 3 == 4)\nprint(\"---------------\")\nprint(2 == 2 or 4 == 4)\nprint(2 == 2 or 3 == 4)\nprint(2 == 3 or 3 == 4)\nprint(\"---------------\")\nprint(not 2 == 2)\nprint(not 2 == 2)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Exercices"},{"metadata":{},"cell_type":"markdown","source":"!!! question Programmer une IA au jeu Qui-est-ce?\n\nVoici 4 visages.\n\n![qui-est-ce.png](attachment:qui-est-ce.png)\n\nEcrire un programme qui demande de choisir un personnage, pose 2 questions et qui arrive à déterminer le personnage choisis.\n!!!","attachments":{"qui-est-ce.png":{"image/png":"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"}}},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question pierre-feuille-ciseau. \n\nEcrire un programme qui permet de jouer au Pierre Feuille Ciseau.\n\nDéroulé du programme:\n\n- L'utilisateur choisit un nombre entre 0 (pierre), 1(feuille), 2(ciseau).\n- L'ordinateur choisit au hasard un nombre en 0 et 2 (vous pourrez utiliser `randint(0, 2)` pour faire cela.\n- L'ordinateur détermine qui a gagné la partie\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"}},"nbformat":4,"nbformat_minor":2} \ No newline at end of file diff --git a/2nd/06_Programmation/4E_boucles_for.ipynb b/2nd/06_Programmation/4E_boucles_for.ipynb index a5de344..edea730 100644 --- a/2nd/06_Programmation/4E_boucles_for.ipynb +++ b/2nd/06_Programmation/4E_boucles_for.ipynb @@ -1 +1 @@ -{"cells":[{"metadata":{},"cell_type":"markdown","source":"# Étape 4: boucle for\n\nCe TP commence par la partie 1. Ensuite les autres parties peuvent se faire dans l'ordre que vous voulez."},{"metadata":{},"cell_type":"markdown","source":"## 1- Faire la même chose plusieurs fois, une belle punition\n\nBob n'a pas été sage, il a encore essayer de scotcher son voisin de classe sur sa chaise. Son professeur a une idée très originale pour le punir : lui faire recopier 100 fois \"je ne dois pas scotcher mon voisin sur sa chaise\". Alors Bob commence"},{"metadata":{"trusted":false},"cell_type":"code","source":"print(\"je ne dois pas scotcher mon voisin sur sa chaise\")\nprint(\"je ne dois pas scotcher mon voisin sur sa chaise\")\nprint(\"je ne dois pas scotcher mon voisin sur sa chaise\")\nprint(\"je ne dois pas scotcher mon voisin sur sa chaise\")\nprint(\"je ne dois pas scotcher mon voisin sur sa chaise\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Mais il en marre. Alors il se rappelle qu'il peut sans effort utiliser une boucle `for` pour cela."},{"metadata":{"trusted":false},"cell_type":"code","source":"for i in range(10):\n print(\"je ne dois pas scotcher mon voisin sur sa chaise\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"1. Modifier le programme précédent pour qu'il réalise la punition de Bob."},{"metadata":{},"cell_type":"markdown","source":"Bien sûr l'enseignant est fou de rage. Il lui demande de réécrire 100 fois \"Moi Bob, je suis un gros malin et j'utiliser la programmation\" mais cette fois ci entre 2 lignes il doit y avoir une ligne de tirés (\"---------\").\n\n2. Réaliser la punition de Bob"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Encore raté, l'enseignant ne sait plus comment construire une vraie bonne punition pour ce plaisantin. Mais il a une idée, il va lui demander de numéroter ses lignes de punition. Il veut des phrases du genre \"C'est la phrase numéro 10, il me reste encore 90 lignes à faire\".\n\nBob se rappelle alors qu'il peut utiliser la variable `i` pour compter le nombre de répétition. Il écrire alors"},{"metadata":{"trusted":false},"cell_type":"code","source":"for i in range(4):\n print(\"Je repète \", i, \" fois\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"3. Recopier et modifier le programme de Bob pour réaliser sa punition."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2- Dessins ASCII\n\nLe but de cette partie est de réaliser des dessins avec des chaines de caractères.\n\nQuand on multiplie une chaine de caractères (par exemple \"#\") par un entier (par exemple 4), python va répéter la chaine de caractères.\n\nQuelques exemples:"},{"metadata":{"trusted":false},"cell_type":"code","source":"print(\"#\"*4)\nprint(\"-\"*10)\nprint(\"_\"*3, \" \"*2, \"-\"*5)","execution_count":1,"outputs":[{"name":"stdout","output_type":"stream","text":"####\n----------\n___ -----\n"}]},{"metadata":{},"cell_type":"markdown","source":"On peut utiliser des boucles pour faire ensuite des motifs"},{"metadata":{"trusted":false},"cell_type":"code","source":"for i in range(5):\n print(\"-\", \"#\"*i)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"1. Réaliser le motif suivant:\n\n\n -\n --\n ---\n ----\n -----\n ------\n -------\n --------\n --------- "},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"2. Réaliser le motif suivant\n\n \n ##\n ####\n ######\n ########"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"3. Réaliser le motif suivant\n\n ######\n #####\n ####\n ###\n ##\n #"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"4. Réaliser le motif suivant\n\n\n #\n ##\n ###\n ####\n #####\n ######\n #####\n ####\n ###\n ##\n #"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"5. Réaliser le motif suivant\n\n # \n ### \n ##### \n ####### "},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 3- Calculer des images à pelle\n\nOn définit la fonction \n$$ f(x) = 2x - 1$$\nOn veut calculer les valeurs de $f(0)$, $f(1)$ jusqu'à $f(10)$. C'est une tache répétitive,on va pouvoir utiliser une boucle `for`"},{"metadata":{"trusted":false},"cell_type":"code","source":"for x in range(11):\n print(\"f(\", x, \")=\", 2*x-1)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"1. Calculer les images pour $x$ allant de 0 à 20 par la fonctin $g(x) = 4x^2 - 5x - 1$ (en python la puissance s'écrit avec `**`)."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"2. Calculer les images pour $x$ allant de -10 à 0 par la fonctin $h(x) = -x^2 + x - 1$ "},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"3. Pour x allant de -100 à 100, quelles sont les valeurs de $x$ qui ont une image positive par la fonction $i(x) = -x^2 + 600$."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 4- Accumulateurs\n\nDans le programme suivant, on veut ajouter tous les nombres de 0 à 100."},{"metadata":{"trusted":false},"cell_type":"code","source":"somme = 0\nfor i in range(101):\n somme = somme + i\nprint(somme)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"1. Adapter le programme pour qu'il fasse la somme des nombres de 50 à 100."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"2. Adapter le programme pour qu'il fasse le produit des tous les nombres de 0 à 100."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"3. On veut ajouter tous les nombres de 0 à 100 qui sont paires. Écrire le programme qui correspond."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"4. Écrire un programme qui fait la somme de tous les multiples de 5 de 0 à 1000."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 5- Plusieurs boucles\n\nOn veut énumérer les points du plan qui ont des coordonnées entières comprises entre -5 et 5. Pour cela il va falloir faire une boucles pour les abscisses (x), une boucle pour les ordonnées (y) et les imbriquer."},{"metadata":{"trusted":false},"cell_type":"code","source":"for x in range(-5, 6):\n for y in range(-5, 6):\n print(\"(\", x, \",\", y,\")\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"1. Lister tous les points à coordonnées entières qui ont une ordonnée égal à 2 (on note $y = 2$)."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"2. Lister tous les points à coordonnées entières qui sont sur $x = -2$."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"3. Lister tous les points à coordonnées entières qui sont sur $x = 2y$."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"4. En informatique, on peut coder une couleur en RGB (rouge, vert, bleu). Ce sont 3 nombres compris entre 0 et 255 mis sous forme de coordonnée.\n\nÉcrire un programme qui liste toutes les couleurs RGB possibles."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.2"}},"nbformat":4,"nbformat_minor":2} +{"cells":[{"metadata":{},"cell_type":"markdown","source":"# Étape 4: boucle for\n\nCe TP commence par la partie 1. Ensuite les autres parties peuvent se faire dans l'ordre que vous voulez."},{"metadata":{},"cell_type":"markdown","source":"## 1- Faire la même chose plusieurs fois, une belle punition\n\nBob n'a pas été sage, il a encore essayer de scotcher son voisin de classe sur sa chaise. Son professeur a une idée très originale pour le punir : lui faire recopier 100 fois \"je ne dois pas scotcher mon voisin sur sa chaise\". Alors Bob commence"},{"metadata":{"trusted":false},"cell_type":"code","source":"print(\"je ne dois pas scotcher mon voisin sur sa chaise\")\nprint(\"je ne dois pas scotcher mon voisin sur sa chaise\")\nprint(\"je ne dois pas scotcher mon voisin sur sa chaise\")\nprint(\"je ne dois pas scotcher mon voisin sur sa chaise\")\nprint(\"je ne dois pas scotcher mon voisin sur sa chaise\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Mais il en marre. Alors il se rappelle qu'il peut sans effort utiliser une boucle `for` pour cela."},{"metadata":{"trusted":false},"cell_type":"code","source":"for i in range(10):\n print(\"je ne dois pas scotcher mon voisin sur sa chaise\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question\nModifier le programme précédent pour qu'il réalise la punition de Bob.\n!!!"},{"metadata":{},"cell_type":"markdown","source":"Bien sûr l'enseignant est fou de rage. Il lui demande de réécrire 100 fois \"Moi Bob, je suis un gros malin et j'utiliser la programmation\" mais cette fois ci entre 2 lignes il doit y avoir une ligne de tirés (\"---------\").\n\n!!! question\nRéaliser la punition de Bob\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Encore raté, l'enseignant ne sait plus comment construire une vraie bonne punition pour ce plaisantin. Mais il a une idée, il va lui demander de numéroter ses lignes de punition. Il veut des phrases du genre \"C'est la phrase numéro 10, il me reste encore 90 lignes à faire\".\n\nBob se rappelle alors qu'il peut utiliser la variable `i` pour compter le nombre de répétition. Il écrire alors"},{"metadata":{"trusted":false},"cell_type":"code","source":"for i in range(4):\n print(\"Je repète \", i, \" fois\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question\nRecopier et modifier le programme de Bob pour réaliser sa punition.\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2- Dessins ASCII\n\nLe but de cette partie est de réaliser des dessins avec des chaines de caractères.\n\nQuand on multiplie une chaine de caractères (par exemple \"#\") par un entier (par exemple 4), python va répéter la chaine de caractères.\n\nQuelques exemples:"},{"metadata":{"trusted":false},"cell_type":"code","source":"print(\"#\"*4)\nprint(\"-\"*10)\nprint(\"_\"*3, \" \"*2, \"-\"*5)","execution_count":1,"outputs":[{"name":"stdout","output_type":"stream","text":"####\n----------\n___ -----\n"}]},{"metadata":{},"cell_type":"markdown","source":"On peut utiliser des boucles pour faire ensuite des motifs"},{"metadata":{"trusted":false},"cell_type":"code","source":"for i in range(5):\n print(\"-\", \"#\"*i)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question \nRéaliser le motif suivant:\n\n\n -\n --\n ---\n ----\n -----\n ------\n -------\n --------\n --------- \n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question \nRéaliser le motif suivant\n\n \n ##\n ####\n ######\n ########\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question\nRéaliser le motif suivant\n\n ######\n #####\n ####\n ###\n ##\n #\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question\nRéaliser le motif suivant\n\n\n #\n ##\n ###\n ####\n #####\n ######\n #####\n ####\n ###\n ##\n #\n \n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question\nRéaliser le motif suivant\n\n # \n ### \n ##### \n ####### \n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 3- Calculer des images à pelle\n\nOn définit la fonction \n$$ f(x) = 2x - 1$$\nOn veut calculer les valeurs de $f(0)$, $f(1)$ jusqu'à $f(10)$. C'est une tache répétitive,on va pouvoir utiliser une boucle `for`"},{"metadata":{"trusted":false},"cell_type":"code","source":"for x in range(11):\n print(\"f(\", x, \")=\", 2*x-1)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question\nCalculer les images pour $x$ allant de 0 à 20 par la fonctin $g(x) = 4x^2 - 5x - 1$ (en python la puissance s'écrit avec `**`).\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question \nCalculer les images pour $x$ allant de -10 à 0 par la fonctin $h(x) = -x^2 + x - 1$ \n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question\nPour x allant de -100 à 100, quelles sont les valeurs de $x$ qui ont une image positive par la fonction $i(x) = -x^2 + 600$.\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 4- Accumulateurs\n\nDans le programme suivant, on veut ajouter tous les nombres de 0 à 100."},{"metadata":{"trusted":false},"cell_type":"code","source":"somme = 0\nfor i in range(101):\n somme = somme + i\nprint(somme)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question\nAdapter le programme pour qu'il fasse la somme des nombres de 50 à 100.\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question\nAdapter le programme pour qu'il fasse le produit des tous les nombres de 0 à 100.\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question\nOn veut ajouter tous les nombres de 0 à 100 qui sont paires. Écrire le programme qui correspond.\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question \nÉcrire un programme qui fait la somme de tous les multiples de 5 de 0 à 1000.\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 5- Plusieurs boucles\n\nOn veut énumérer les points du plan qui ont des coordonnées entières comprises entre -5 et 5. Pour cela il va falloir faire une boucles pour les abscisses (x), une boucle pour les ordonnées (y) et les imbriquer."},{"metadata":{"trusted":false},"cell_type":"code","source":"for x in range(-5, 6):\n for y in range(-5, 6):\n print(\"(\", x, \",\", y,\")\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question\nLister tous les points à coordonnées entières qui ont une ordonnée égal à 2 (on note $y = 2$).\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question\nLister tous les points à coordonnées entières qui sont sur $x = -2$.\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question\nLister tous les points à coordonnées entières qui sont sur $x = 2y$.\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question\nEn informatique, on peut coder une couleur en RGB (rouge, vert, bleu). Ce sont 3 nombres compris entre 0 et 255 mis sous forme de coordonnée.\n\nÉcrire un programme qui liste toutes les couleurs RGB possibles.\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.2"}},"nbformat":4,"nbformat_minor":2} \ No newline at end of file diff --git a/2nd/06_Programmation/5E_boucles_while.ipynb b/2nd/06_Programmation/5E_boucles_while.ipynb index c8c326b..a15916c 100644 --- a/2nd/06_Programmation/5E_boucles_while.ipynb +++ b/2nd/06_Programmation/5E_boucles_while.ipynb @@ -1 +1 @@ -{"cells":[{"metadata":{},"cell_type":"markdown","source":"# Étape 5: boucle while\n\n`While` signifie `tant que` en anglais. Cette instruction va répéter **tant que** quelque chose est vrai.\n\n1. Exécuter puis décrire le programme suivant"},{"metadata":{"trusted":true},"cell_type":"code","source":"i = 0\n\nwhile i < 10:\n print(\"i vaut\", i, \". C'est plus petit que 10 je continue\")\n i = i + 1\n \nprint(\"i vaut \", i, \". C'est plus grand que 10. Je suis sorti de la boucle\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Description de ce que fait le programme"},{"metadata":{},"cell_type":"raw","source":""},{"metadata":{},"cell_type":"markdown","source":"2. Proposer un variante où l'on répète jusqu'à ce que `i` depasse 20 et où `i` augmente de 2 en 2."},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Dès que l'on veut faire quelque chose **jusqu'à ce que**, on utilisera un boucle `while`. \n\n3. Exécuter le programme et essayer de trouver mon mot de passe."},{"metadata":{"trusted":true},"cell_type":"code","source":"mdp = input(\"Quel est mon mot de passe?\")\nwhile mdp != \"les maths c bon\":\n mdp = input(\"Raté! Tu ne trouveras jamais. Quel est mon mot de passe?\")\nprint(\"Arf bien joué, tu l'as trouvé. J'ai plus qu'à le changer...\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"4. Écrire une programme qui pose la même question tant que la bonne réponse n'est pas trouvée (vous devez inventer la question et la réponse)."},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 1- Jeux de devinette\n\nDans cette section, vous programmerez un jeu où l'utilisateur va chercher deviner un nombre choisi au hasard par l'ordinateur.\n\n1. *Programmation du coeur du jeu*: coder le programme suivant\n\n L'ordinateur choisi un nombre au hasard\n \n L'utilisateur propose une réponse\n Si la réponse est égale au nombre choisi par l'ordinateur\n L'utilisateur est félicité\n Sinon si la réponse est supérieur\n On affiche que sa réponse est trop grande\n Sinon\n on affiche que sa réponse est trop petite"},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"2. *Programmation de la boucle de jeu*: reprendre le programme précédent et faire répéter *jusqu'à ce que* l'utilisateur trouve la bonne réponse."},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"3. Quelques propositions d'améliorations\n\n - À la fin, on le nombre de réponses données par l'utilisateur pour trouver le nombre.\n - Limiter le nombre de réponses que l'utilisateur peut donner."},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2- Simulation aléatoire\n\nLa boucle `while` peut être utile pour simuler des phénomènes aléatoires et les arreter en fonction d'une condition."},{"metadata":{},"cell_type":"markdown","source":"1. Le jeu est le suivant: on part avec 10 points. À chaque tour, on peut perdre un point, gagner un point, ne rien perdre ni gagner. Le jeu s'arrête quand on a plus de points.\n\nLe programme suivra l'algorithme suivant\n\n Notre score est de 10 points\n Affiche le score\n Tant que notre score est positif\n Au hasard notre score gagne un point, perd un point ou rien ne se passe\n Affiche le score\n "},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"2. Adapter le programme précédent pour qu'il calcule puis affiche le nombre de tours avant que notre score arrive à 0."},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2- Investissement"},{"metadata":{},"cell_type":"markdown","source":"Une banque nous propose le placement suivant: on place 100€ et chaque année ce placement augmente de 2%. On veut savoir combien d'année il faudra attendre pour que ce placement atteigne 10 000€.\n\nProgrammer l'algorithme suivant pour répondre à cette question\n\n C'est l'année 0\n Le placement est de 100\n Tant que le placement est plus petit que 10000€\n le placement est augmenté de 2%\n l'année est augmentés de 1\n Affiche le nombre d'année"},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"}},"nbformat":4,"nbformat_minor":2} +{"cells":[{"metadata":{},"cell_type":"markdown","source":"# Étape 5: boucle while\n\n!!! hint\n`While` signifie `tant que` en anglais. Cette instruction va répéter **tant que** quelque chose est vrai.\n!!!\n\n\n!!! question \nExécuter puis décrire le programme suivant\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"i = 0\n\nwhile i < 10:\n print(\"i vaut\", i, \". C'est plus petit que 10 je continue\")\n i = i + 1\n \nprint(\"i vaut \", i, \". C'est plus grand que 10. Je suis sorti de la boucle\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Description de ce que fait le programme"},{"metadata":{},"cell_type":"raw","source":""},{"metadata":{},"cell_type":"markdown","source":"!!! question\nProposer un variante où l'on répète jusqu'à ce que `i` depasse 20 et où `i` augmente de 2 en 2.\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Dès que l'on veut faire quelque chose **jusqu'à ce que**, on utilisera un boucle `while`. \n\n!!! question\nExécuter le programme et essayer de trouver mon mot de passe.\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"mdp = input(\"Quel est mon mot de passe?\")\nwhile mdp != \"les maths c bon\":\n mdp = input(\"Raté! Tu ne trouveras jamais. Quel est mon mot de passe?\")\nprint(\"Arf bien joué, tu l'as trouvé. J'ai plus qu'à le changer...\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question\nÉcrire une programme qui pose la même question tant que la bonne réponse n'est pas trouvée (vous devez inventer la question et la réponse).\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 1- Jeux de devinette\n\nDans cette section, vous programmerez un jeu où l'utilisateur va chercher deviner un nombre choisi au hasard par l'ordinateur.\n\n1. *Programmation du coeur du jeu*: coder le programme suivant\n\n L'ordinateur choisi un nombre au hasard\n \n L'utilisateur propose une réponse\n Si la réponse est égale au nombre choisi par l'ordinateur\n L'utilisateur est félicité\n Sinon si la réponse est supérieur\n On affiche que sa réponse est trop grande\n Sinon\n on affiche que sa réponse est trop petite"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"2. *Programmation de la boucle de jeu*: reprendre le programme précédent et faire répéter *jusqu'à ce que* l'utilisateur trouve la bonne réponse."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"3. Quelques propositions d'améliorations\n\n - À la fin, on le nombre de réponses données par l'utilisateur pour trouver le nombre.\n - Limiter le nombre de réponses que l'utilisateur peut donner."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2- Simulation aléatoire\n\n!!! hint\nLa boucle `while` peut être utile pour simuler des phénomènes aléatoires et les arreter en fonction d'une condition.\n!!!"},{"metadata":{},"cell_type":"markdown","source":"!!! question\nLe jeu est le suivant: on part avec 10 points. À chaque tour, on peut perdre un point, gagner un point, ne rien perdre ni gagner. Le jeu s'arrête quand on a plus de points.\n\nLe programme suivra l'algorithme suivant\n\n Notre score est de 10 points\n Affiche le score\n Tant que notre score est positif\n Au hasard notre score gagne un point, perd un point ou rien ne se passe\n Affiche le score\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"!!! question\nAdapter le programme précédent pour qu'il calcule puis affiche le nombre de tours avant que notre score arrive à 0.\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2- Investissement"},{"metadata":{},"cell_type":"markdown","source":"!!! question \nUne banque nous propose le placement suivant: on place 100€ et chaque année ce placement augmente de 2%. On veut savoir combien d'année il faudra attendre pour que ce placement atteigne 10 000€.\n\nProgrammer l'algorithme suivant pour répondre à cette question\n\n C'est l'année 0\n Le placement est de 100\n Tant que le placement est plus petit que 10000€\n le placement est augmenté de 2%\n l'année est augmentés de 1\n Affiche le nombre d'année\n!!!"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"}},"nbformat":4,"nbformat_minor":2} \ No newline at end of file