{ "cells": [ { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false }, "source": [ "# Sujet 4 : Estimation de la latence et de la capacité d’une connexion à partir de mesures asymétriques" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false }, "source": [ "On commence par déclarer les bibliothèques utilisés :\n", "\n", "Note : `urllib.request` n'y est pas car elle n'est utilisée que dans le cas où on doit télécharger les données." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "hideCode": false, "hidePrompt": false }, "outputs": [], "source": [ "%matplotlib inline\n", "import re\n", "import gzip\n", "import time\n", "import pandas\n", "import io\n", "import os\n", "import datetime\n", "import matplotlib.pyplot as plt\n", "import statsmodels.api" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false }, "source": [ "## Connexion courte à l'intérieur d'un campus" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false }, "source": [ "On commence par récupérer les données à étudier :" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "hideCode": false, "hidePrompt": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Les données sont déjà présentes en local.\n" ] } ], "source": [ "def telecharger_fichier_si_necessaire(data_url):\n", "\n", " # Extrait le nom du fichier à partir de l'URL\n", " data_file = data_url[(data_url.rindex(\"/\")+1):]\n", "\n", " # Vérification de l'extention\n", " if data_file[-7:] != \".log.gz\":\n", " raise Exception(\"Le fichier nom de fichier \"+data_file+\" ne finit pas par \\\".log.gz\\\" !\")\n", "\n", " if not os.access(data_file, os.R_OK):\n", " import urllib.request\n", " print(\"Les données n'existent pas en local, on les télécharges.\")\n", " urllib.request.urlretrieve(data_url, data_file)\n", " if os.access(data_file, os.R_OK):\n", " print(\"Fichier récupéré.\")\n", " else:\n", " raise Exception(\"Le fichier n'a pas pu être récupéré !\")\n", " else:\n", " print(\"Les données sont déjà présentes en local.\")\n", "\n", "telecharger_fichier_si_necessaire(\"http://mescal.imag.fr/membres/arnaud.legrand/teaching/2014/RICM4_EP_ping/liglab2.log.gz\")" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false }, "source": [ "On définit la fonction qui va lire chaque ligne pour en extraire les données. La ligne retournée sera formatée en CSV.\n", "\n", "Comme ce qui nous intéresse est le temps mis pour latence (ou \"ping\") il faut impérativement que celle ci soit présente pour que la ligne soit reconnue, pour les lignes dans ce cas on retournera `Ǹone`.\n", "\n", "Si la ligne est totalement illisible on soulèvera une exception afin d'avertir l'utilisateur qu'il y a des lignes dont le format est illisible par le programme. Ceci est préférable au fait de retourner `Ǹone` car si c'était le cas on risquerait de masquer des données utiles, par exemple si `ping` avait retourné des données en secondes plutôt qu'en millisecondes." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "hideCode": false, "hidePrompt": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1421761682.052172,665,22.5\n", "\n", "None\n", "\n", "Exception (attendue) : La ligne \"[1421761682.052172] 665 bytes from lig-publig.imag.fr (129.88.11.7): icmp_seq=1 ttl=60 time=22.5 s\" n'est pas dans le format attendu.\n" ] } ], "source": [ "extractDataFromLineRegExp = re.compile(\"^\\[([0-9\\.]+)\\] ([0-9]+) bytes[^:]*: icmp_seq=[0-9]+ ttl=[0-9]+( time=([0-9\\.]+) ms)?$\")\n", "def extractDataFromLine(line):\n", " match = extractDataFromLineRegExp.match(line)\n", " if match and match[4]:\n", " return match[1]+\",\"+match[2]+\",\"+match[4]+\"\\n\"\n", " elif match:\n", " return None\n", " else:\n", " raise Exception(\"La ligne \\\"\"+line+\"\\\" n'est pas dans le format attendu.\")\n", "\n", "# Quelques essais\n", "print(extractDataFromLine(\"[1421761682.052172] 665 bytes from lig-publig.imag.fr (129.88.11.7): icmp_seq=1 ttl=60 time=22.5 ms\")) # Le retour à la ligne est inclus dans ce qui est retourné\n", "print(extractDataFromLine(\"[1421773281.582445] 13 bytes from stackoverflow.com (198.252.206.140): icmp_seq=1 ttl=50\"))\n", "print()\n", "try:\n", " print(extractDataFromLine(\"[1421761682.052172] 665 bytes from lig-publig.imag.fr (129.88.11.7): icmp_seq=1 ttl=60 time=22.5 s\"))\n", " print(\"On devrait avoir une exception ici.\")\n", "except Exception as e:\n", " print(\"Exception (attendue) : \"+e.args[0])" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false }, "source": [ "Lit les données du fichier, utilise la fonction `extractDataFromLine` définit précédemment pour extraire les données et les placer dans une variables `csv_data` qui contiendra les données au format CSV.\n", "\n", "J'ai dans un premier temps essayé de ne pas passer par une variable intermédiaire et ajouter les données directement dans le DataFrame mais c'était extrêmement lent. Il aurait aussi été possible de passer par un fichier intermédiaire. En cas de données plus imposantes cela aurait été nécessaire." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "hideCode": false, "hidePrompt": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Lu 44413 lignes en 0.196 sec\n" ] } ], "source": [ "def convertit_fichier_en_csv(data_file):\n", " nb = 0\n", " start_time = time.time()\n", " data = '\"date\",\"size\",\"time\"\\n' # La première ligne du CSV à les noms de champs\n", " with gzip.open(data_file, 'rb') as file:\n", " for line in file:\n", " line_data = extractDataFromLine(line.decode('utf-8').strip())\n", " if line_data:\n", " data += line_data\n", " nb += 1\n", "\n", " print (\"Lu %d lignes en %.3f sec\" % (nb, time.time() - start_time))\n", " return data\n", "\n", "csv_data = convertit_fichier_en_csv(\"liglab2.log.gz\")" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false }, "source": [ "Traduit le tableau du format CSV en temps que DataFrame pandas. Comme on lit depuis le contenu d'une variable on utilise `io.StringIO` qui permet de lire une variable comme on lit un fichier." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "hideCode": false, "hidePrompt": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
datesizetime
01.421762e+0966522.50
11.421762e+09137321.20
21.421762e+0926221.20
31.421762e+09110723.30
41.421762e+0911281.41
51.421762e+0948921.90
61.421762e+09175978.70
71.421762e+09114625.10
81.421762e+0988424.00
91.421762e+09142219.50
101.421762e+09118018.00
111.421762e+0999918.80
121.421762e+09102024.30
131.421762e+09713.45
141.421762e+09345.85
151.421762e+0918432.31
161.421762e+094071.14
171.421762e+093561.10
181.421762e+0915112.18
191.421762e+095871.27
201.421762e+098091.33
211.421762e+0913641.51
221.421762e+0911531.44
231.421762e+098531.30
241.421762e+0915102.17
251.421762e+091231.21
261.421762e+0919662.20
271.421762e+099331.34
281.421762e+099221.42
291.421762e+09241.12
............
440061.421771e+09177228.80
440071.421771e+09411.14
440081.421771e+0919442.32
440091.421771e+094001.98
440101.421771e+092263.01
440111.421771e+094667.45
440121.421771e+0935013.50
440131.421771e+09182945.90
440141.421771e+09195458.50
440151.421771e+0910741.45
440161.421771e+09461.11
440171.421771e+0918442.26
440181.421771e+096451.24
440191.421771e+094441.25
440201.421771e+0919402.46
440211.421771e+0914111.47
440221.421771e+09491.21
440231.421771e+094201.55
440241.421771e+092271.22
440251.421771e+099471.34
440261.421771e+0919602.43
440271.421771e+095311.19
440281.421771e+093741.14
440291.421771e+0915032.19
440301.421771e+095721.29
440311.421771e+0913381.47
440321.421771e+0915157.02
440331.421771e+0918752.33
440341.421771e+0910061.61
440351.421771e+0912731.35
\n", "

44036 rows × 3 columns

\n", "
" ], "text/plain": [ " date size time\n", "0 1.421762e+09 665 22.50\n", "1 1.421762e+09 1373 21.20\n", "2 1.421762e+09 262 21.20\n", "3 1.421762e+09 1107 23.30\n", "4 1.421762e+09 1128 1.41\n", "5 1.421762e+09 489 21.90\n", "6 1.421762e+09 1759 78.70\n", "7 1.421762e+09 1146 25.10\n", "8 1.421762e+09 884 24.00\n", "9 1.421762e+09 1422 19.50\n", "10 1.421762e+09 1180 18.00\n", "11 1.421762e+09 999 18.80\n", "12 1.421762e+09 1020 24.30\n", "13 1.421762e+09 71 3.45\n", "14 1.421762e+09 34 5.85\n", "15 1.421762e+09 1843 2.31\n", "16 1.421762e+09 407 1.14\n", "17 1.421762e+09 356 1.10\n", "18 1.421762e+09 1511 2.18\n", "19 1.421762e+09 587 1.27\n", "20 1.421762e+09 809 1.33\n", "21 1.421762e+09 1364 1.51\n", "22 1.421762e+09 1153 1.44\n", "23 1.421762e+09 853 1.30\n", "24 1.421762e+09 1510 2.17\n", "25 1.421762e+09 123 1.21\n", "26 1.421762e+09 1966 2.20\n", "27 1.421762e+09 933 1.34\n", "28 1.421762e+09 922 1.42\n", "29 1.421762e+09 24 1.12\n", "... ... ... ...\n", "44006 1.421771e+09 1772 28.80\n", "44007 1.421771e+09 41 1.14\n", "44008 1.421771e+09 1944 2.32\n", "44009 1.421771e+09 400 1.98\n", "44010 1.421771e+09 226 3.01\n", "44011 1.421771e+09 466 7.45\n", "44012 1.421771e+09 350 13.50\n", "44013 1.421771e+09 1829 45.90\n", "44014 1.421771e+09 1954 58.50\n", "44015 1.421771e+09 1074 1.45\n", "44016 1.421771e+09 46 1.11\n", "44017 1.421771e+09 1844 2.26\n", "44018 1.421771e+09 645 1.24\n", "44019 1.421771e+09 444 1.25\n", "44020 1.421771e+09 1940 2.46\n", "44021 1.421771e+09 1411 1.47\n", "44022 1.421771e+09 49 1.21\n", "44023 1.421771e+09 420 1.55\n", "44024 1.421771e+09 227 1.22\n", "44025 1.421771e+09 947 1.34\n", "44026 1.421771e+09 1960 2.43\n", "44027 1.421771e+09 531 1.19\n", "44028 1.421771e+09 374 1.14\n", "44029 1.421771e+09 1503 2.19\n", "44030 1.421771e+09 572 1.29\n", "44031 1.421771e+09 1338 1.47\n", "44032 1.421771e+09 1515 7.02\n", "44033 1.421771e+09 1875 2.33\n", "44034 1.421771e+09 1006 1.61\n", "44035 1.421771e+09 1273 1.35\n", "\n", "[44036 rows x 3 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "raw_data = pandas.read_csv(io.StringIO(csv_data))\n", "# csv_data = None # Libère la mémoire\n", "raw_data" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false }, "source": [ "### Premiers constats sur les données" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "hideCode": false, "hidePrompt": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD8CAYAAAB5Pm/hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJztnXt8VOW573/PzGQm9xBCQki4BCVBCShIGlDwAtSieAOt1ioce2pP3VWL+3Sfw0Xo2e3eWC97t2cXa7txH3vaLaK1R6kXwAsobbBCDIJyUQgVCCRAEgK5kUwyM+/5Y613Zc2atdasyYUkk+f7+fBhsmatWe961/s+7/s+73MhIQQYhmGY+MXV3wVgGIZh+hYW9AzDMHEOC3qGYZg4hwU9wzBMnMOCnmEYJs5hQc8wDBPnsKBnGIaJc1jQMwzDxDks6BmGYeIcT38XAABGjBghCgoK+rsYDMMwg4rdu3fXCyGyo503IAR9QUEBKioq+rsYDMMwgwoiOu7kPFbdMAzDxDks6BmGYeIcFvQMwzBxDgt6hmGYOIcFPcMwTJzDgp4ZctQ2teOedR+jtrm9v4vCMBcFFvTMkGPttkp8cqwBa7dW9ndRGOaiMCDs6BnmYjBx9Rb4AyHt7/W7qrB+VxV8HhcOrbm5H0vGMH0Lz+iZIUPZsjm4fWoeEhOUZp+Y4MIdU/NQtnxOP5eMYfoWFvTMkCEnPRFpPg/8gRB8Hhf8gRDSfB7kpCX2d9EYpk9h1Q0zpKhv8eP+GeNwX+lYbCivQh1vyDJDABJC9HcZUFJSIjjWDcMwTGwQ0W4hREm081h1wzAME+ewoGcYholzWNAzDMPEOSzoGYZh4hwW9AzDMHEOC3qGYZg4hwU9wzBMnMOCnmEYJs5hQc8wDBPnsKBnGIaJc1jQMwzDxDlRBT0RjSGiD4noCyI6QESPqcd/QkTVRLRX/bdAd81KIjpCRIeIaH5fPgDDMAxjj5PolQEA/yCE+JSI0gDsJqL31e/+txDiX/UnE9EkAPcCKAaQB2ArERUJIYK9WXCGYRjGGVFn9EKIU0KIT9XPzQC+AJBvc8kdAF4RQviFEEcBHAFQ2huFZRiGYWInJh09ERUAmAZgl3roUSL6nIh+S0SZ6rF8ACd0l52E/cDAMAzD9CGOBT0RpQJ4DcDfCyGaAPwGwKUApgI4BeDn8lSTyyOC3hPR94mogogq6urqYi44wzAM4wxHgp6IEqAI+ZeEEK8DgBDijBAiKIQIAfgPdKlnTgIYo7t8NIAa428KIZ4XQpQIIUqys7N78gwMwzCMDU6sbgjACwC+EEL8Qnd8lO60RQD2q5/fBHAvEfmIaDyAQgDlvVdkhmEYJhacWN3MArAEwD4i2qseexzAt4loKhS1zDEADwGAEOIAEb0K4CAUi51H2OKGYRim/4gq6IUQO2Cud99sc80TAJ7oQbkYhmGYXoI9YxmGYeIcFvQMwzBxDgt6hmGYOIcFPcMwTJzDgp5hGCbOYUHPMAwT57CgZxiGiXNY0DMMw8Q5LOgZhmHiHBb0DMMwcQ4LeoZhmDiHBT3DMEycw4KeYRgmzmFBzzAME+ewoGcYholzWNAzDMPEOSzoGYZh4hwW9AzDMHEOC3qGYZg4hwU9wzBMnMOCnmEYJs5hQc8wDBPnsKBnGIaJc1jQMwzDxDks6B1Q29SOe9Z9jNrm9v4uCsMwTMywoHfA2m2V+ORYA9ZurezvojAMw8SMp78LMJCZuHoL/IGQ9vf6XVVYv6sKPo8Lh9bc3I8lYxiGcU7UGT0RjSGiD4noCyI6QESPqceHE9H7RFSp/p+pu2YlER0hokNENL8vH6AvKVs2B7dPzUNiglJNiQku3DE1D2XL5/RzyRiGYZzjRHUTAPAPQojLAcwE8AgRTQKwAsA2IUQhgG3q31C/uxdAMYCbAPyaiNx9Ufi+Jic9EWk+D/yBEHweF/yBENJ8HuSkJfZ30RiGYRwTVdALIU4JIT5VPzcD+AJAPoA7APxePe33ABaqn+8A8IoQwi+EOArgCIDS3i74xaK+xY/7Z4zDxodn4f4Z41DX4u/vIjEMw8RETDp6IioAMA3ALgAjhRCnAGUwIKIc9bR8ADt1l51Ujw1K1i0p0T6vWTi5H0vCMAzTPRxb3RBRKoDXAPy9EKLJ7lSTY8Lk975PRBVEVFFXV+e0GAzDMEyMOBL0RJQARci/JIR4XT18hohGqd+PAlCrHj8JYIzu8tEAaoy/KYR4XghRIoQoyc7O7m75GYZhmCg4sbohAC8A+EII8QvdV28CeED9/ACAN3TH7yUiHxGNB1AIoLz3iswwDMPEghMd/SwASwDsI6K96rHHATwF4FUiehBAFYC7AUAIcYCIXgVwEIrFziNCiGCvl5xhGIZxRFRBL4TYAXO9OwDMs7jmCQBP9KBcDMMwTC/BIRAYhmHiHBb0DMP0CRwMcODAgp5hmD6BgwEOHDioGcMwvQoHAxx48IyeYZhehYMBDjxY0DMM06twMMCBB6tuGIbpdWQwwPtKx2JDeRXqeEO2XyEhIsLQXHRKSkpERUVFfxeDYRhmUEFEu4UQJdHOY9UNwzBMnMOCnmEYJs5hQc8wDBPnsKBnGIaJc1jQMwzDxDks6BmGYeIcFvQMwzBxDgt6hmGYOIcFPcMwTJzDgp5hGCbOYUHPMAwT57CgZxiGiXNY0DMMw8Q5LOgZhmHiHBb0DMMwcQ4LeoZhmDiHBT3DMEycw4KeYRgmzmFBzzB9SG1TO+5Z9zFqOWcq049EFfRE9FsiqiWi/bpjPyGiaiLaq/5boPtuJREdIaJDRDS/rwrOMIOBtdsq8cmxBqzdWtnfRWGGMB4H5/wOwK8A/Kfh+P8WQvyr/gARTQJwL4BiAHkAthJRkRAi2AtlZZhBw8TVW+APhLS/1++qwvpdVfB5XDi05uZ+LBkzFIk6oxdC/AVAg8PfuwPAK0IIvxDiKIAjAEp7UD6GGZSULZuD26fmITFB6WKJCS7cMTUPZcvn9HPJmKFIT3T0jxLR56pqJ1M9lg/ghO6ck+oxhhlS5KQnIs3ngT8Qgs/jgj8QQprPg5y0xP4uGjME6a6g/w2ASwFMBXAKwM/V42RyrjD7ASL6PhFVEFFFXV1dN4vBMAOX+hY/7p8xDhsfnoX7Z4xDXYu/v4vEDFGc6OgjEEKckZ+J6D8AvK3+eRLAGN2powHUWPzG8wCeB4CSkhLTwYBhBjPrlpRon9csnNyPJWGGOt2a0RPRKN2fiwBIi5w3AdxLRD4iGg+gEEB5z4rIMAzD9ISoM3oiehnADQBGENFJAP8I4AYimgpFLXMMwEMAIIQ4QESvAjgIIADgEba4YRiG6V9IiP7XmpSUlIiKior+LgbDMMyggoh2CyFKop3HnrEMwzBxDgt6hmGYOIcFPcMwTJzDgp4ZUHAQMIbpfVjQMwMKDgLGML1PtxymGKa34SBgDNN38IyeGRBwEDCG6TtY0DMDAg4CxjB9B6tumAGDDAJ2X+lYbCivQh1vyDJMr8CesQzDMIMU9oxlGIZhALCgZxiGiXtY0DMMw8Q5LOgZhmHiHBb0DMMwcQ4LeoZhmDiHBT3DMEycw4KeYRgmzmFBzzAME+ewoGcYholzWNAzDMPEOSzoGYZh4hwW9AzDMHEOC3qGYZg4hwU9wzBMnMOCnmEYJs5hQc8w/UBtUzvuWfcxajmLFnMRiCroiei3RFRLRPt1x4YT0ftEVKn+n6n7biURHSGiQ0Q0v68KzjCDmbXbKvHJsQas3VrZ30VhhgBRUwkS0XUAWgD8pxBisnrsGQANQoiniGgFgEwhxHIimgTgZQClAPIAbAVQJIQI2t2DUwkyQ4WJq7fAHwhFHPd5XDi05uZ+KBEzmOm1VIJCiL8AaDAcvgPA79XPvwewUHf8FSGEXwhxFMARKEKfYRgAZcvm4PapeUhMULpeYoILd0zNQ9nyOf1cMiae6a6OfqQQ4hQAqP/nqMfzAZzQnXdSPcYwDICc9ESk+TzwB0LweVzwB0JI83mQk5bY30Vj4pje3owlk2OmuiEi+j4RVRBRRV1dXS8XY2jBG3uDi/oWP+6fMQ4bH56F+2eMQ12Lv7+L1Cdwuxw4dFfQnyGiUQCg/l+rHj8JYIzuvNEAasx+QAjxvBCiRAhRkp2d3c1iMABv7MVKfwugdUtKsGbhZEzKS8eahZOxbklUFeughNvlwCHqZiwAEFEBgLd1m7H/AuCsbjN2uBBiGREVA9iArs3YbQAKB/tmbG1TOx59eQ9+dd+0AbXE5o297rF64z68VF6F+0vHYs2iKf1dnLiD2+XFo9c2Y4noZQAfA5hIRCeJ6EEATwG4kYgqAdyo/g0hxAEArwI4COAdAI9EE/KDgYE6M+GNvdiYuHoLClZswvpdVRACWL+rCgUrNmHi6i39XbS4gtvlwMMT7QQhxLctvppncf4TAJ7oSaEGCsaZyfpdVVi/q2rAzEycbOz152pkoK2EypbNwZrNX+C9A6fR3hlCYoIL84tzseqWy/u7aHEFbzgPPNgz1oZoM5P+1vUC0Tf2+nM10tv37ml9swC6eAyVDefBgiMdfV8zkHX0qzbuw4byKnjdLnQEQ2F63YGs6+1PPWlf3dtJfUdbRTz0YgWy0xJxX+lYbCivQl1ze9xuhsYzxvc80FaPF4te09EPdeTM5IUHvobsVB9OnrtgqestWrX5opattqkdC5/7CIt+/VHELNeJnjTWGbLZ+WbH5L3dOmPbgqxkSx2tfI5bny3Drc+WRTxPLLr1aKuI3rR4sat/+f3FXPH1xf0GwqrVDON7fmrLlyg/2oCnN3/Zrd/ry+ccCHUYF4I+1oo8WNOIKf/4Lg6eaox67j/fMRmHzzRj456TqGvxY3RmcoQQlZV446SRMZXZKCSMz6H/2+wZ126rxN4T57Gn6nyEYJNqivZOZWbd3hmppohVtWJ2vtmxa5/5EG/urUFQt1g8dvYCSp/YZiqcn9ryJfaeOI/91U3YX92EPVXn8dM3D2jfb3z4GgxP8YZdk+pzhw0csQ6+ZnV7sKYxpnakr/9rnvwgoj31VHUVa7s2u18sbd3pbzotp/7e0QZFO/S/X7TK/D2/vqcaAPDanmrtvXen7p7a/GWvC+WBYMwRF6qbf3h1L177tBp3XZWPn98zNer5N/7iz6isbUFhTire/9H1tudeunJTmMCSuAgIWVSdExXF6o37sH5XFQDgrmn5+Pm3pkaoJvTPlZTg1r57teIkOoKRqhHjvR96sQIfHalHiz8IFwHXFY7A7747w1a1UrZsDh59eQ+Wzp2AH6z/FH/4u5lY9NxfTc+3un/Zsjm47pkP0B4Ir6CbikfinxZOBgTw6Mt7sPfEeXRE+V2pS7fj2FO3oLapHcv+3+fYfjjc+U62CePSXtZ/TpoP1xaOwOt7qjEhOxVH6lqiquKs6g9QPAY9bkKnSaOR78apmsGpatDufWaleFHT2A4CsOmx2Zg0KsPydyQHaxqxYO0O0+/M2rZVOef8y3YcPduK8VkpmDZ2mCaM77oqH8tvusyxqkX/+xc6gnh9TzXcLkLQqgNC6Z8C6HbduQB89dQttuWKxsVQnzpV3QxqQR9rRRas2GT5W8d0L7W2qR0zntwGq6q5Y2oeGts6sf2QuUev1+PCYYsXaSckeoKLgG9MUgRpTlqi7bOWPz4PazZ/gTf3dvmyFWQl49W/uxprt1bipfIqpPk8aGoPoDAnFS99b0aEtcr1RYqT2/ZDdfAHQvC6CWmJCWhq7zQVcpL1D5Zi8QvlIABkM1g6YXhKAtZ/bwYmjcqIWq8EpePbDdBGjO1ICuif3DYJt6zdYe7ybYLbRbj1ilFYdcvlEYPM20tnRwi6WNt1bVM71mz+Am9/VoOQiP6MxwwCzDjwyImQcZCVbUSWt2jVFssJh1MWTMlFfUuHqcB32ldSfR60+AO259jVndkEIdp1TpDvxczKq7f2EYaEjt5qkNIf1y/7Ni+djWSvO+xcAvCr+8JXAWu3VUIIpWGbxXR4Y2+NpZCPxsaHr+nWddEICWBEqk/bmDIrt6T0Z9vChDzQpVqRS+KmdqXjVNa2aOf7AyEQAf5ACNmpPoxI9WkdsSMocLa1A0EbIQ8Ai18oB6AI3Z4IeQBoaO3EpFEZKFixKapAkLdyck+fR9nPeOGBkjC1h1yC3/ascyEPAMGQwBt7a1D6xDZN7QAAtc1+U3VW2bI5KMhK1v52u8jWDl2qyuSzRXtG4yTg6XcU/bYsX2VtCwBE1KlsI+NXbEJtczvmXa6EuJJ7MXIfyBODVNm87zTKjzZg5s+2RXwXoSI1adRjhyeh02SwcasnR7OUy0lPxO7j5yzLJ4Tolo5dDp4eF4X1m/6y8opqRz+Q6bAQKvrjsnNe/bNtpioYAeDRDXtx6xX5ETOIY2cvmP4+ESxn+wBs1REb1E7eF0g7/8UzxsYkiKKR4nXjyjHDUN/sx+HaFhTlpGJDeZWpQOn9tUp0YpmlO0F2yJ++dRDN/gBu+WW4YO+JB6BcWRjvN3H1Fhxac7PpLFYOFO/sP206u4x1Vb75sdkAur+6FABKn+gSzLJfyX0gF5k9pT0hoQxABGDXqnnISUsMM4eV5xipamgz/T2p1jHuTen15esd9MWOoMDMJ7dBAFi7tdKxdd3abZUoP9qAvSdcyMtIRPX5dowdntRvZqaDWnUzYeUmBEyK7yHA7Y6u2zXj9ql52PT5KVv9nxOMy+O+UtnEiptgOuB1BxcBHhfQMeh9n/sPNwG3XpmnLedrm9qx+o39eO/AmbDzrNQ8AFC0arPlpMcKn8cFIUTM10VjfvFIvGsou9PyyP2EW6bk4rn7pwPoModdv/N4zL95w8RsZKV60dIe0FSMvYGdOsdJP+8PHf2gVd1MXL3FVMgDwF8fn2dqXminzhg9LAkJblKsRXoo5BNMalWWpy9JUdVSbrM1rkpP+rVPXZNL1cbCafn9LuRjqVNZK3kZsS+dU7xu2/bjFBcBbl37CAqEzThz0hOx9WCkoKxt9uPapz80/c1YhbVUZexYPhfjdCoiWb78Ydb1Y9O0AKBbQh5QVjU1jYpqZNO+05r5rDSH7Q6jhyXh53dPxbolJabyYH6xcys5eU20UA5ly+ZEraP+mPANWkFftsy6skuf2BbhBdneGbJdTCZ53fho+VzkZiSG2X+bEa3SOk3eoyxPX9KqSt2eDlRmjB+RrDVQfyCEtz+rweufVvf6fWLFuNdgxdjhSQCAwpxUTBmd0S2hff/McVj/4IxuXNlFSABGlfL6XVWann7i6i2WaigrAbN56eyYnkcOLDnpiVpbSVAbff6wJHjd1i08WtOaXzwS08cOc1wWu3LrBWJ3BJVeTWLmFZ2d6nNcPq9DT+qc9EQsnGqfgiMhmoDpAwatoM9Jt5+V1Ta3o77Fj0XT8lGYk4oFU0YhO80bcd7w5ARcMiIFjW2dyElPxLzLcqLqmaN9L3WgRupb/Ljzqt7PwzJ7QhZyM3zabMVNyrK1t5oTAThaH75fEVStO6LNXgYKVQ1tEFA2l989cMaxBvlX356GopGpSPF5sGbhZMwuHKHVc6xYdXCiLiFupUp1AZYCZkEMFkBA+MBSnJeOxTPH4Y1HlDZ74lwbjlrsTTkhO9WH3VXnHZ9vVe4UrztsL6E7c+B3D5wJ86MwC8twQ9EI281juTq+8bIcx6EcWjsUazUriOiiO1ENWkEfjbVbK7FuSQmSE9w4cKoJw5MT8I1JuRHntfoDeOWhmShf9XUAXY2hJyx67q+mx9ctKcEv7pna68Jxx5GzuObSEdpsJQRl2RoLaT43cjPMZzjSLFG/7JUboH2weOh1fB5XxJL9hqIRttckJbhQvmoebr0yD+/99+u19jFx9RbNCc0pBKB81TzLgZcEAAHcs+5j/OmRWabnhGBtHtydcUcOLOuWlGDp3An4yVsHHM00U31uuG2+d7LBaYbZnaXNf9myOd2etNx2ZZdqz+gVvf1QHbYfroedJiWgNvBN+09j/c7jjqzt1i0pwSXZKbjzqvyIvu4mYMfyORfdiWpQC/ryx00DaALo8pjTe9C9pGuEYzOTkOJ1wx8UYZUtG35xXnq3BXK0De4bJ420HfG7wydHGyJmK7senxehgzUjI8mDJK8H8y5TdJb655Z6yYXT8sOWvQun5iPXRNc9EBuUPxBCe2f4kj0/075epKmqEaOu1wkCwOynPsCkvIyI69wu4LqJ2VrH36Da1xsZPSzJcqX40Yp5SPXZid9wFkzJNfWQvu2KPKRGUS92BAU+tuh3m5fOxu1T87o18Oh7jFxBSXLSE7FoWvdWwq99Wm0ZLsOunxLQo1DLclKXp064vOogGhQIM2O+WKGyB7V5ZU56ojazdCFcpeIiYFRGEupb/KabH1XnusyyjOGH126rxMFTTXATIdQdqySyHiHsduXlsyQmuNARCMU0Wz5xrg3rdx7HHytOaN6ts5/5MKrnKQA0tgUABPByeRUWzxyHhhY/Nu8/DZfO9rdOXenIYGAbdh23NK80vou+IifNh9mFI7BxTzUI5qsLNwFZqT5cWzQCD866RAtk5reZlbsImJSXbn5PQ2gJp3QEBfaeOK9tmEuCIYTNEq1mxElet6VXa056ojbzjEaaz6Pp5Y1tUXquGiEALheQmexFxeobw77Tv+tJeRlI83lM96icMHpYEp5/YLrpc1qVLRo+jws3TbYKRW1tBirQtf/Tk0inxXnpuGFijtZvTja0Ij3Ze9FDZQ/ECVhM3DhpJBbPHAe3YdkZEkD1+TZtFgooDlB6ixT5STqkCCBsFWDVeWKZPRmxCjZ251X5EOhqVPnDkmKa9etnHHKGduuUUUgymV7JJbqsCq9buXbn4/OwZuFkBIXA4pnj8PYPr9VWB/ol/tJ5E7Bz5byIjesRqV7cNT3/otnSf2PSSLT6AxA2KqSgUM77+d1TwwKZjc60Vm15XIR1S0os9ahyr6U71jutJmZKZmoxI5W1LZazPqfqJI9LGTBkIDeztjgqIxF3Tc/HgsmKmlOKwoVX5ocJ+fnFSr97e+m1WDxzHOYXj8TE1VvCVs2xkuAm/OTNg6Z6681LZ8e8N+ImoCNoLaB3LJ+DxCjeXS6gR6GWjeqi3313Rr+Eyh7UM3oAWofcX92ImvNtONviR1AoL9njduHWK0fhwVmX4LZnd0Q4QEnZIB1SvG7C7VPzIlz9P/yyFh1BAa+b0BEUCIYUQThj/HD88OU9Yb+ZnODG9mU3WJbXKia6fsZ827M7cOKcuSOIGXLm/fZnNXhDZ4ViNQt645HZeOyVPZoHpLEz6CM66k3b9HrFNYumYN5lOdhQrqyEOoIh3FScizWLpmD5/Mtw67M7UNts3jFknJKe2vTLVdjmpbPx3/5zN6rPh9dZbroPCW5XWAeNZucs3fzNnlfSE5tsFynCMyigzebcLsLGPdVae1g0NR8BIRzP+mRClU2f1djWZyCEsHdi1hbnXZaDNYum4KEXK5TVXWsHNu87hfJjDWG/ZdZGpMu/U0soyZWj09HcHkRNYxuONVwwdUyalJeBMZnJWpuNRtHIVGSlenFpdhrqLDY8r33mQ0dtISctsdsmnmbUG1bHVuXrTQa9oAeUDvnZyfOYkJ2Kuha/Jnjunj5aazAfr5yL25/7CHVN7RGdwU1Ko3/j0Vn45dbKsIb/VV0rOoICRTmp+Ld7p2kvZs3Cybh0ZeTm2IXOIK59+kNbhwizF63vOB+vnIvVb+zH1oNnwmaq11w6HHtPnMeFjvDGqbm+A2EDld5j1Osh5GUkoWBEChasLYsok1RflT8+LyLYlFWmLRfBtMHmpCeizkLIA8rAKt9RXkYiapv9jlUPekZlKO8sJy0xIrQFAJxuUsoghVttUzsuH5WOkek+/PlwXdgsWM5cgyGBa5/+0PR5pWrPKmhbNPSxY6wGeVmPMryEk1lfNIElGZWRiBe+E+5bYyV0jIPZiXNtKFixydbZp7smxPurm8L6pFUmt8a2ThSNTMXSuYVY+0ElzrZ04NyFDtPV3PGzF/Def7cPWFi2bA5uf+4jnG40F7QdgVCfzLStJlJ9yaD2jLWanSW4Cd/62tgIAapPIqLvcPqEItIT7w+fVFlGIASsnR70wseOaBEMV23cF7EMXjxjLOpa/EjxedDQ0oGyI/UIhkTYjO+XWyujPuOOyjr8t//cjbbOLjVCUoIb//HAdLyz73REJMJYgjNFmzHnZSRi7uUjtZVLsBfan8/jQkZSAlJ9bgxP8aFCjV1i9Dr90R/24vU91RiflWxpQugiYOfKeZbPq3f9dwpBscPe+PAsPPSi0s7XLSmxTXwSS4KUWIKLOfXK7G5ALlnu9w+cxhmbwV4yJjMJl2anWOqtre4l+09Wqhdb9p3WjssAcg9ddwl+8tbBqNExjTKhKCcVE0amYfO+UxiTmYSy5XOjPkN/4tQzdlDP6I1LVmPHNqKfvZh1OPk3ACydOyGsofs8hFRfAl78XilGpPjCvtMz77Ic24YlG+iYzCRTtYC+rGMyk3DFaMX55POT5zVdOaA00JBQ1EntnSF4SInLunnfKdx5VT4enHWJ5TPOLsxGgpvQ1tl1v7bOIBb/n3Ltb+OsykqvaBywjHlZjdQ0tmubxm4XEOyhZ61LtUHPSUvExNVb8JXO3j8olAB0bxhUCXZ24h63CznpifCQUq9GR5kEixDE+vLIGaaMieR1k1bGsuVzHYUpjmXWt2P5HNyz7uMw1aTPo5RTP9v1eVyOrUa6m49YlruuuR3ZaYm4qTgX3/t9ecTqZ0xmEl57+BrtulUb98Wkt5ZqtdHqXtaR2ha4SFmRpfk82LCryrZ/SeoNKtPDtS04rKqHnKxiBguDWtAbl6yyY1sFf5L6/Edf3hPWyMw6klln9wc6sGFnFdYsmqJ1An3HLsxJjbphc/WTSnC18qPK31bLVOPsTZa7trkdOWmJWgM9db4N276sxV+/qsfabZU439aJJI8bk/LSbYVKeyCEjCQPfnD9pfjNn/+GCx1B3DxllKVe2GqJb9Rj56QnauFyzQj7XQHcve5jHO+Bg86iafnac218+Brc8dxHCIWEMvC7CDlpPtS3+G2FsyTV58YH/+MGAMAnqk76xsvLuRHaAAAgAElEQVRykJnq0573o+VzccO/bscFi9gP+ueWixVpwisFjpXuv7uYWd14XC58c3o+NpRXaeW4dcqomFQRZu9c357snkPffu+aPiZidXriXBtKn9imtXunemvjilG/l/X7B0vxwAufhFkuWfUvs3J+vHIufvzGfryvqkzjKXn8oFbd1Da14/bndqCuuUPZ3FM7tp3qJJa8oycbLmjxN4wom2pkqnowa1R2Ko07plqvQiTG5CpOgyfdPX2047y2dvlxjdjFTL/6kuGoOH4+Ika41+NS9Z5dAbpmP/0BTjrYePa4EOHYUpSTivHZKVpnlXUkyyGfYem8Qtz5m7+G3acgK9kyOqkZ+nd62Y9jd5py+tvdwWnAPKeqCLsVhz5hjhGrxCoPvViBfScbcb6tUxsgXaQ4MzlVsejLZlQp5aYn4njDBe1d9yQG/Jx/+RBHz15wnLgkFvoir+2QUN0oIQtGhll+WKlOrDYUzTqZnHWbEWaXK2DZqIxIlYaZRYLdKsRY7tc+rdaEmRXSDt8fCGmdMtrMBojNGsCoopHPvmX/aWw/XG96zZ8enqVZ+6zdWoml8wqjCnmPixAICW1WSgBmTxiBY2dbNSFvJujkaquuxY+c9ESca+0A0KVaCYYEbigagb/VteLkuTbN+1emg5SbtWbv9PqibBysaUL1+baovg7SskifrMXut7uD08maU1WE2UzdbjDxuoGbp+RpzyGv/8c3DmBHZT3aA8GIFVVIXX17XBTT6sYYuri9M6QN2HojAb2pshPzRePzyfe6obyq1wS9Wb1erKTmg1rQA86Fk5Vg0ncyJzMjY8ORjS5aYoFoFglOkqg4QaqZjCZ6QLjpoBmx6IWtdLg7bAY0vbWP7JTRkCoJKScEgLIj9areW5mdWtcd8OGhurDQAbIDV59vQ9nyubjxF3+GgCKQQ1BitQhAy5rV3hnCR5XhA5dUAX7/xd0Yme7D1oNnTC25gkL5J9+J/rd704Z6x/K5piqwkWm+sA1RtzqQ/ZPFu7WbDBn7j940tiOo9AOjtdKW/aeNtwCgWIB1qDp7OWlxMhGRyD5/U3EuVv9pH6oaLmjvNdXnRknBcIzOTI7JfNGqm3lsArw5xa5e754+ulfVeFYMeocpo0OClWWCmWByE+HRDXs0Bw2n7u36oFD1LX4UZqdCCKAw215HLx1tRhkcbQqykrFjhdWS2joQlpFkrxt/Up07WjsCePuzmjAVgzFBd08DK5kFiZJ7G8aSu6BERow1cF9pQabp8Y6g0AS4WbjdFK8bAsDXL88xdVDzuF1h2ZSCQunsG8qrtOf6uhobqb61IyImiTTp/aquNUzIe1yEMZlJeOuH12pesPqAWGZ11lNy0hNN9zmMVi9BAaR4rQcWK2e+suVzImbSxoFt/a4q+AMhR2GjOyzMUp2GGJB9fnbhCBw7eyFsVdXiD2L7oTqs33lcc+6zkgl6diwPz+oFqP3S4ea1HWb1Kn1fLlYohEE/owecL3+Ms/8/H6rFyfNtYRuJxk3WeROz8bf6Vm3WoF8JGEdquWMvswUZkQ1u9tMfAIBmwREMiZhndUbn7UuyklGYm6YNeADwnd/uwrGzF3CqsV17ptuujFxid3c2YbUCkBuZ+vKFgAiHJieUH7NO8wZAq2tjaGbpgbpZZ3rn1Q3wkwz29Pr3apyZAtYrEKMDTyAkcOJcW9jqZZM6szXOVqOtmmJZ1t9QNCLsXVvx2p5q/PxbU02/i2ZpI/vPjPHDsfy1z8M2pGX4gpd22q/Spo8bhtomv6lDoJ0K04ism+njhuGLmmZc6AwvyxVjMrBl/+mYVEJy9ah3jHRiQRft/ZjVa6xOcT1l0M/oATiOBCdnAot+/RHW7zyOE+faIkZT2Zjf/qHi2u3xuDBrwghTnd/Gh6/B8BSvZlvvNPCRPjTs4pnjLOOqAKqbtmGFkZzgxnVF2chI7Bqn2wLBiJnL7747A7MmjEBHUGlgAl1LbGPAN/n83Z3l1za1Y/zKTShYscnWq9fY4LyxJBg1cFPxSJQtn4Papna0+gO4a3q+bchZObP+5FiDNhs3E2ply+bgG8Ujw0IRuEm5nwzcJd+JcYEio2POLx7Z7YBYgFKftz67w3GEQ/279kZZNtnNHO1WHLL/3HZlHvIN0VFlLB65ak1OMA8Tsvv4edMB301K7KJJeemO2p7s85fnpsNjeN6T59uwed9pxzNl2eYn5KRi8cxx+JNNv9T3j1giUBrrtbUjcFFDIfTI6oaIjgFohpJGMyCEKCGi4QD+AKAAwDEA9wghbKdlve0wFU3PJ3fu391/Cv6AgM9DuGnyKNOd+dqmdsz/t79g7uU5YUGx1i0pCbNAkDPsxTN6b5deUvy/3jGNkWKG8dnNHG/++Y7JWLP5C7y1twZCLfs3ikeittmPS0ak4PU91TFbG0hnpDGZSahtboffgdeo3tu4O6niXAR89eQtYZZUZhY20TBzsLNyWFuzaIrpd8ZyfVutbycWTEa6267171of4kJPrFYosZTP6yYcfmIBgOiWSS4CbirO1YLnCQATslNxpK6lW9ZeRnwegj8gtLb9zwsnW/oArN1a6dgyzYnVkVNicYqzwqnVTW8I+hIhRL3u2DMAGoQQTxHRCgCZQojldr/TE/NKpwLbiLGzWgloM3NMu8Y2v3hkzC/Liu7kmdV3Nius4pqbYWUy15My9gaxRPjUq7lyM3w419oJf8De9O6hFyuw98R51Df7cc2ELByrv4BJeelYt6QED71Yodlam3HDxGz4PK5udWKr+nQRsPPxeY6F80MvVuBgTROuGD0M+6obUdXQc5NB2QZ+ctsk/PtfvsK7+0+HqTml6a+8/86/nUVjeyDid6Q58Y//tD+qF7pRcBrNK42xg64vykbF8XM429KhXVOYk4r3fxQeDiFWgW3Xzntj8Owu/SnoDwG4QQhxiohGAdguhJho9zvdFfSAc4Gtx8mMye4cO1NJ4+/YEU3HJxNF62PeuNXOaiVkNi+dHdUueUdlHZa8UB41K5Hevt/K/8DK/Z4ApCd50NgW0Cw0CrKSNR2yNFPdvO+UpTOTdRBZ81AFTkhP9KDZH3A0077xF39GZW2LqaCQS3ijLb5e2HUHKciMAcqc/q6xTdmtSGNF3wYE0KNIlfo+EuuEzSyUiWwrdm0mWvgSM4FtHNyMVkdejwudMa7YepOLlRxcAHiPiHYT0ffVYyOFEKcAQP0/p4f3sMQsLKreIsYKO+sCq3O8bsWi4oXvlFiaSnrd5FgX60QHm5OeiOxUX5hQDwrY5qR0otd94Lf2Qt5FilVPNH0+YG2t8OKDpWj1B3HLFbl4S93vCIREWN7ZNJ8HH9k48NiVMSQUz2i9nhMARmcm2SaMaWqXYY2FpdVLwYpNYRY5lbUt2jGJuTcqcLbF3yNLJtm2gqJL/39JVnKE85kVT7/zJcqPNuDpLV9qbUzvLW1nmWaktqkdC5/7COPVZ7dK4qPnjql5WP9gaYQOX09Wijesj3RtVir16Q8IS331wZpG/OGTE1gwJRcbH56FMWoCIfkmzNqMi7r2c4z9Wqr3vRaWePqEMPq2FhSK6vFPvWg91Zf01OpmlhCihohyALxPRF86vVAdGL4PAGPHju3WzZ3Ynh+sacS31u3EH/5uppbQwEkcD7NzAIGfvnkQVQ0XTGcFHUHrBqonFuctGfOGiFDVcAEpXjdaOwK4c1q+aRhiKXvMftOpmuXm4lz4vG5s2ncKGx++JmwmY7QOsLJW+OlbBxEICRw+3YJJeen4Y8UJU0uWP+4+aVsWt6oWML7pm4oVe/Af/2l/mCXV9kO1EaudgqxknG5qd+wpuXnpbHzz3z82tSrRU2PYVAyEoDmLrXztc7zwnVLbZ7OivsUfFiK4+nwbXrHxfwCiO9bFYqcuWbutEntPKPlf9XUIKKa8Qd3ALdVCaT4PZhdmm0YTlZy/0KVWqW1qx4wnt0XYscu2YSzrY6/s1drVol9/5Kg9hwTw3sEz+HfV/+Hjv9WH9Wv9XpG0xLv6Z9siImrK59z48CxtZaS3cusOg8JhSghRo/5fS0QbAZQCOENEo3Sqm1qLa58H8DygqG66c38zRxGjU9AjL32KZn8Aj6z/FB/+zzlaxSZ73VEdrepb/BAifKkXLR627FDHnrrF9HsrYUtAxEqgtqkd7x08E9YJWjuCePfAGdsyAOZxOqIFHAOUhhwQApkJbpxv64yYyZgNivosOgvWloVZ3cjZMICIWP+yfI+9vAcff9UQUZabikcixecx9QSWqf6MJp4PvVgBAsKCwcmVhBPrBqv3c/J8W0TmIzvV0bYvFUctJ3smRowhgv1BERYXxgwnKlgZAE4Sy76LUUVljPVzc3FuWEygxrZOpPncaPZHGhHIdHoAcOe0fAihhGeoa/Fbmhoa95WcxqWXhARQtGoz7ikZg7rmjoiw48ZBw1hq4wTBKNy7K7B7O+6RFd1W3RBRChGlyc8AvgFgP4A3ATygnvYAgDd6WkgrctITI+ynpe2rXGrLSIVHz15AwYpNKP3ZNi3qnZ2j1cGaRvz1yFk8e9/UiGXo6GFJWDAlMtG4/M4qtyfQpRIyUjAiJaKBrN1WCaHqtvVqJjvjOSJr12/9KsXsN0ZlJMLjduHdA2cilukE60w7eqe1zUtnm9bX5sdmWw4Y5UcjhTwAvHPgjGW4h/W7qlC0anPE8XVLSlC2fC6eu/8qPHf/VShbPhfFeekRJoNWZqTG9+NxK96WI1K9EffSB76zokOdFsZitlq2bI6p+skfCFmqJc2cxozoA8AB1mbJZualgGLW69V5ihZkJWP990oVtZwQWj+auHoLapv9pkLeiFyVnjjXptWjse3WNrWjOC/dMnm9UzqCQpuZH65twYK1ZfhjxQmlzZiocwuyki37k1RrLfr1RzGbWgLK3padSrS36cmMfiSAjaR4QXoAbBBCvENEnwB4lYgeBFAF4O6eF9Mcs5nHiXNtmLh6i204WVmxdkvZx17Zi2Z/AGu3HolYhiapy9bFM8fhL4dqw/LP2uX2BKyTRBytb9XikADhqwj9bMpOqOhjvdutUuRK5lvrPkazP6Atu+ddlqMFhbLaGIu2TJ2Ul2FaX9LG2ph31i4Mgj4yqBm3XRk+YFrNqswcu1Zv3Gc6k5KDIRGQ4FJUUfOvyLV0MvrkmPkgpadgxSatjp3M3K595kPT51bUBtfgnnUfRzyjftKj35CUdViUk6rp+aOpDs32hgAgPzMJR+patLhSV43NxNptRyLK0pM4iR434V7V1FUiczgb98X0q4BY0c/QZbsZnZkUNhEJhoTlql+v1tLnKHCqIrv1ilF4fU+1lm2trx2mBn30Ssv4NQKY+/M/h21ieVwEt4tsTetiMT0sHT8cX9W1ID0xQYs93uIPoHzV123LfPtzO1Db5I+IFW4VLA3o6rwJLiViprET6iM5RltG2pnwffXkLd2yZAqrlye2YlhygpYJ6PyFTtM6Mb6/7iI7lV1kUhmb5rMT50037PQdU9o3Sx25WdTHWJJ92JXZDKWNRGY+uusqRc3x+p5q3DUtP2LweejFCnxV14ojtS1I9roxPMWLJ++8Aj96dS8mjUrD7747Q/v9aBEe9eaZgKIC8wdC+EZxbphn+YlzbWHRSAFlNayoQmKXLQRg16p5Wn6BvjDdlZYyi6bm4+T5NozJTMLre6oxelgSrtcl8jazTopWpmh7QHbXd8cHZ8hEr7TTHwdCSoV2RUAU6AgKW12tWf5RY25TvYv1/aXKRrJThwt9xE052zJLYmyM6S4/dhok/C2Tu3SjslFG0/uFLKbJQgBFq7egw2LT1OkmXvmqr2uDzfrvzbDUWRpVSbGKBbna2LL/dNgAbTaremrLl9oMzKgPvr4oG7XNfi3Wv5M0enJGFitOZm5KG8nBS7u62ggBYWqs1/ZU4zU1z+yhNTdHCJDWjiBaO9qw5IVdijluSGjPF1bvFsH47CxzjPeqbfaH7SFs2FUVVci7gIgk8m6X8qyy3TrZUwKUuEYdwZCjnANmTnoyN8SJc21aUhyrtl62bI5pmk8AEUlqrK43Boe7tigbWanePrXcGdSCHrCPXnl9UXaY08p7B06HzUjMVBtmqgeXixDUNaKT59twUh0IYklyoC/zndPy8d7BM8hO9WFkhi8iifF1hSOw+/h5NJuY1aV43Xj6m1Ow86tzONnQirozHfjVfdMsl+ReN2Hq2Exthn/blXkRQirV50ZrRxC3ThnVKzE4rAYb42qjvsUPFwjBmMV8lxneDkPn0WcDs1Lvdf2Gkhf4SF2LpYCRdfDQdZdg/MpNPVJN6E347DbuZCiBA9WNONvagbOtHaYjoTxUtmxOWNIM4/f1rR0RiT4Ks1NxuLYFRTmpOHnugqlKyIyyZXMw88ltEYLOHwg5XhGbiW25QNL3o29OH22wfIvEqdc4AIzPTrG11pmveojLQdGMPVXnIp79kqxkJPs8mJibbiuw5SDb3hnSHL1GD0vqcxv8Qa266S2Mwqf0ia3wdwbR2B5ARqIHTf4ACnOUpMS/eP8Qqs+3g6hLXy5nXbF4yNmpGZwmFSlbNgc3/7IMZ1s7cNe0fCy/+bIIASU9BRtaO+BCZNTBaPfobfd9s+eubWrHj9/Y78iayAyvm5CRnID6lo4wJ5rFM8bi1YqTMatYpIAxhjAA1E2zKElLMlRHMT0eF+F33/0a3tl/RjPhkyEbrNRs+kQqd07Lx6dV58LuKy3M5HXSwcu4Ao0Fo/rASg0oQ15I3C7C1y/PsfUYNr3fzMhww/p+JL1n7ysdi7t+8xE6AiHbZ1PMj80FvwvAV0/dYqoydBqGQT53coIbcy5TXIQ+P6msFOU7NVMbGhOxSBXbhJxUXKJLnhMrF8Uztrfob0GvFz5/3H0yqtes9MwjdG0WOhWKTrxyZUO0SsnndRMEYLpUlQ1WL/CscBOQlepDbbNfU50kJriQmezFNROyuuVJ2eXleFq7/+jMJNQ2+yNUQvrnlkJK4iQDlNzX8LgIr31aHZP6Z0xmEtYtmW7pIyAFzE3FuVj8wq6ovyeTUr9lk0bRblaqF7DRBnrpryD3DpzqsgnKjHXpvMKw57Yqq92+h15YudSBZfGMsbjQEYxZpaUfWCXG+/WWvl6aPRv7sNXGv5VqLBr6/hyrfImFIaGj7ylmqg4jXjeQlujFi9/rcn55Wc3DqW8XMuZHND2bkwQocnknEN4A5efOoLAUaALA/TPG4Q+fWFuzyI3joFD0q/I6QFmlzLssR+tk3XEGMYaGkAHGXKToMY0ZqcyW+07S/PkDobDE38Y6sYuHc+JcGyblZVju8ciBbfXGfQAiHYaMBEMiIgm5pCArGQUjUvDMXVco4Q0+PxVhFqxXV1jtoQDAXdPzwwZgwLpNlR9twCndhq6AEo9e/9xy0DBaf0Tb91i3pATf+W05Gts68YtvXYl39p/Bhl3HY5rNGwdWvSrJ2I+s9PXd2dsBIlW+H3xxBjWN7ZZWMJaJSVxAepIXrf5AhJGHlXwx6wd9nZc2LsIUdxcniUY6gsDZViUpuGTnynm4fWoe5GUJLsX1e+fj86LOfPUbYQkuRbAGAqGIZbscTPQdR362a9gJLsKahZPx0fK5uH1qXoQtdF5GIu6fMQ7rH5yBgqzkiO/Hj0jp0abQ1U9us/wuJCKzK+1Y1v3EDkkJLuSk+SLc2QFodTtHTd9nxsTVW1B9rg3ZqT688J2SMB+Biau77JwBZeDRCxhjvREUwSXNY+U5RErqw9/911Jc+8yHeHNvTYSQB8LDcBjNRiV3XZWPn989NcL3w8oo4YrRGcjLSMTw5ATkD1PaV7lqDioF3Z8emY3CnFQEQyLivUQLEzJa3dR+Z99prFk4GTtXzrMNP2GkvTOEtz6rwbVPf4h3D5zBYXVFd7i2Be8eOBNmU258RkDZWN209Fqk+dxafTvFGLJc5oaW76a9M3xT1SrUxx1T89HQ2mEZ7tqsDhdOy79o4YklcS/o7RxVzBqPVVuRDg1FqzZr18l+3xlCTC+rvsWPmybnatdvP1wXcY4cTGQjcdqIpYOOLKNephTlpGLK6AwtO8+sCSMiZmBH61vx7oEzihehAwcfWb+FqzajYMUmS/2pzLZUmJ2qOS5tKK9C6c+sB4ZotHWGUNvcZUetv7es222HIutWUrZ8ToSwksKzbNkczNc5Dbmoy0FIr7KTCCjCQT+Du7k4F/fPGKdtdG58+BrkZiRGZNmS2Ybe/qwGpU9ss1R9bFSPm7Vpszjy65aU4ExTOxoudKL6vHKutCDafqhOc3K7JDsFi2dGZgqzWu3oB0G9s0/pzyI3aKNxXVG2o9hT8hnvnJaPwpxU3DU9H0fqFKcn6ZgV7d4/W1QccaxsWaQAByInPPpQH/L1HTt7IcwSSlqPyfcNgmkdtvoDvZ5lLBpxIejthHk0jzV9B1k8cxxyM+yF9W1X5qFgxSbTYGpOLQ7ePXAGW3SZj1o7gpon75R/fBcHTzVGdDS9+saO9d8r1QJRGct4uLYF2w/VafV1tL4VPo/yg/JnZSe77cq8iHozq2dZv7npSr1Z5byQG2R6j0Q5mPWUBVfk4oaibLhjmdJBcXSx8kysb/HjvQNnNP2tgDIznz0hG9cXjYj62z4PoeFCBw6faUZWqg/lRxvwnf/7Ca4aMyxiMAwJaKs3u0fY+fg8y2B4xpSa29VcuWYDr1GIymtHpHpx+EwzHptXiHvWfYzq821YMDkXbiIsmJKrCSQpmGVRSf3NzUtnx+S9OiLVi2e+eYWj2FOynACwv6YJpxujJ2Y38vjGA2F/T1y9BaU/22aqJjSb8BTnpaMoJxUCipVNboYvYnDa+fg8jM5M1t6P1QAs39XSuRNw7kJnt4PgOSUuNmNjiRmf4AISEzxhQc706DeZYqkZIuDZb0/FrVeER5Y07rjbDQZjhyehqqFNC4srHXdmjB+OH768BwAwe0IWdhw566hMBVnJONFwQevsNxSNwDN3X4m1WysdJebWIxMZR9tUiobXDSQleNAZEvh/P7gaL+20joToBBcBb/9wNhas3RHTddPHDcPf6lrR2Nap6V/HZCbhtYevMU0lKO+V4GCTuztIC5qnNn/Zrc1MuZEng/j9ZslV+C8vlFt62H71ZGQsJtmP9JYnu442RIRqtutb93xtbEzvc8HkXNS3dmgOXodPN2Nibjpa/J2aYLcKfNYTjumsb6zCjRdkJWP6uEy8vqfa1mJNOmBZnWMVV//Rl/dozlrdDXM8JKxu7AKEbVo629Si4vOTjTha34rEBBde/8E1prHbv/PbcuyrbkRbZxBCCLQZNn/mF4/Ejsp6tBjMuMxihhsHoYM1jREOWXYce+oWXPfMB6hqaNPuP2vCcOw4Et31PlYIwJzLs1F2uF6z6CEog5iVwIh1VtWbpHjd+Nr44Th+9gKO1rf2+f28bsKO5XN7pG7qbYwJSeb863YcrW91tEkpLVB66uWrZ37xyJhNLAGlnS1SI7IavX7tkoSY4SbAYzEgyyikk0ZlxOQFb0TGnGrrDGlOiycbWpGe7NUszrxuQlpiAn5yxyQ8/tr+sMnlpSvNV1uxWt8MCUFf29SOx14Jj3xYkJWM4w0XtOQIxgQFZiyYkotf398Vgvbhl3aHJZU2Es1O2S7BgddNcLnsA2EBwKj0RJxqin051xPhe9dV+di4pzrq9f0t4PsDtwt469HZuOXZHb06s9STmZyAf1pYjP/56udoN7SduZdlIzUxwTIhSaxCK8FNqFSjakrb8GjvNcXrxh9/cDUgEBHGebCgX5kcrGnEnb/5q6PwG4kJLuSmJ+J4wwXL9y/NRI0rGmnbPz4rGTU2ydv1iX6cMiQEvdPGTQR8bVwmyo/Zpq7tNeTMz8zkTdp8J3tduNBx8VPwMQMbO2Erv9MHKpPxjQof3wQH8krD61FmpH2hhuotEtyEm6eM0nIb9wZZKV5cmpOKn9w2ybG6T5qg5mUk4upLs7C/uhHN/gBq1A1uvUmqma+IGfrJYk9SPMa9HX00Ie8mYMxwxelGCFw0IQ8oli/GeCLtneE23yzkGTOshDyRYqEyOjM5IuhWd1QQO5bP0YLn9aYg7U06g8JSf94dFkzJRcWxc/jkWAMee2Wv4+s6dEuo7YfqcLa1Q4uk6dbFCtoRJcWoHv2qTA7eHOumGwSFM6ebvqS+xY/xWSn4qr4VY4cnoSMYwunGgZ1yjBmYCKEIGalX70lWI5/H1afRIQcqenVsrIlLAGi29gC0GFRSYK/fVYWlXy80TTFqhtxDIQC5GYl449FZfWpLHxfmlQORiau34N0DZ/CVuklY1dDGQp4ZEMjgY0NJyPclMkGJNKd0gtD9f6qxHdc+/WGflQ8YxDP69Q+WYvEL5f1dDEvs3NgZpjcYCjPy7oY4uJhIzUGsJst6+vo9DtoZ/UAW8kBk3HiG6W0GgB1FnzMEHhEpXrdt+tHeYNAK+oQoXpAycFBWqhfrdQHJGGYwo/dO3rF8DlId6oQHKz3NEzsYaO0IYtFzf+3Tewxa88rapvaojiuFOamorG0ZFMs/homGxwV8ozgXm/edHhK+DHZ5n+MJArDpsdm2uaYtr3VoXjloZ/Q56dF3qOXOevw3FWYoEAh1WY70VMgTADfFFhvoYjMUhDygyKcFv4wthEesDFpBP9AZ6J2IiR+8VpHkbBAAggNgNc90oQ+q19uwoO8juBMxfY2LgOEpCWEOPU4pGZeJGxxE4WQuHmahmXsLFvQMM0ghAOcudHbr2orj57D9cH3vFojpEW/srekze/pBLegHcuFz0+PfWoDpX4JiaJhYDhVGZSTyjN7IxNVbMJBdRU43sRcswzDO6UsP2UEr6AeCWSjDMExv0ldSbdAKeuvsrgzDMIOTHYNNdUNENxHRISI6QkQrev8OPKNnGCa+GFSqGyJyA3gOwM0AJgH4NhFN6s17dJuZ+ogAAASoSURBVMekjGEYZiDTV8HN+mpGXwrgiBDiKyFEB4BXANzRR/diGIZhbOgrQZ8P4ITu75PqMYZhGMYCdx/9bl8JerOd0jBdCxF9n4gqiKiirq4u5hvITDsMwzDxwt/6SK71laA/CWCM7u/RAMISKQohnhdClAghSrKzs/uoGAzDMExfBbP+BEAhEY0HUA3gXgD39fZNeFbPMAwTnT4R9EKIABE9CuBdKGqn3wohDvTFvRiGYRh7+iw9jRBiM4DNffX7DMMwjDMGsWcswzAM4wQW9AzDMHEOC3qGYZg4hwU9wzBMnEMDIdwvEdUBON6DnxgBgNPlhMN1EgnXSSRcJ5EMpjoZJ4SI6og0IAR9TyGiCiFESX+XYyDBdRIJ10kkXCeRxGOdsOqGYRgmzmFBzzAME+fEi6B/vr8LMADhOomE6yQSrpNI4q5O4kJHzzAMw1gTLzN6hmEYxoJBLej7Pi9t/0JEvyWiWiLarzs2nIjeJ6JK9f9M3Xcr1bo4RETzdcenE9E+9bu1RETqcR8R/UE9vouICi7m83UHIhpDRB8S0RdEdICIHlOPD9l6IaJEIionos/UOvmpenzI1omEiNxEtIeI3lb/Hpp1IoQYlP+gRMX8G4BLAHgBfAZgUn+Xq5ef8ToAVwHYrzv2DIAV6ucVAJ5WP09S68AHYLxaN271u3IAV0NJCLMFwM3q8YcB/Lv6+V4Af+jvZ3ZQJ6MAXKV+TgNwWH32IVsvavlT1c8JAHYBmDmU60RXNz8CsAHA2+rfQ7JO+r0APXiBVwN4V/f3SgAr+7tcffCcBQZBfwjAKPXzKACHzJ4fSojoq9VzvtQd/zaAdfpz1M8eKE4i1N/PHGP9vAHgRq4X7TmSAXwKYMZQrxMoCY+2AZirE/RDsk4Gs+pmqOalHSmEOAUA6v856nGr+shXPxuPh10jhAgAaASQ1Wcl72XUpfI0KDPYIV0vqopiL4BaAO8LIYZ8nQD4NwDLAIR0x4ZknQxmQR81L+0Qw6o+7Opp0NYhEaUCeA3A3wshmuxONTkWd/UihAgKIaZCmcWWEtFkm9Pjvk6I6FYAtUKI3U4vMTkWN3UymAV91Ly0ccoZIhoFAOr/tepxq/o4qX42Hg+7hog8ADIANPRZyXsJIkqAIuRfEkK8rh4e8vUCAEKI8wC2A7gJQ7tOZgG4nYiOAXgFwFwiWo8hWieDWdBreWmJyAtlM+TNfi7TxeBNAA+onx+AoqOWx+9VLQHGAygEUK4uT5uJaKZqLfBfDNfI3/omgA+EqnAcqKjP8AKAL4QQv9B9NWTrhYiyiWiY+jkJwNcBfIkhXCdCiJVCiNFCiAIosuEDIcRiDNU66e9Ngp78A7AAitXF3wCs6u/y9MHzvQzgFIBOKLOHB6HoALcBqFT/H647f5VaF4egWgaox0sA7Fe/+xW6HOUSAfwRwBEolgWX9PczO6iT2VCWx58D2Kv+WzCU6wXAFQD2qHWyH8D/Uo8P2Tox1M8N6NqMHZJ1wp6xDMMwcc5gVt0wDMMwDmBBzzAME+ewoGcYholzWNAzDMPEOSzoGYZh4hwW9AzDMHEOC3qGYZg4hwU9wzBMnPP/AbIOYfH8LPbgAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "raw_data['time'].plot(style='*')" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false }, "source": [ "On remarque quelques points avec une latence nettement plus importante que d'habitude.\n", "\n", "Sinon en histogramme (attention l'échelle est logarithmique) :" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "hideCode": false, "hidePrompt": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "raw_data['time'].hist(log=True, bins=50)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false }, "source": [ "On remarque bien que la majorité des requêtes ont une réponse quasi immédiate. Beaucoup ont une réponse dans les 30 ms. Les durées de 70-80 ms semble être surprenamment courantes. Il n'y a que très peu de réponses dont la durée est supérieure à 90ms." ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false }, "source": [ "### Y a t'il une variabilité par heure ou par jour de la semaine ?\n", "\n", "Comme il s'agit d'un campus on peut s'attendre à une variabilité des performances due aux activités. On peut supposer que le réseau soit plus chargé durant les jours ouvrées et aux heures de travail." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "hideCode": false, "hideOutput": false, "hidePrompt": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def timestamp_vers_heure(timestamp):\n", " str_time = datetime.datetime.fromtimestamp(timestamp).strftime('%H:%M:%S')\n", " parts = str_time.split(':')\n", " return float(parts[0]) + (float(parts[1]) / 60.0) + (float(parts[0]) / 3600.0)\n", "\n", "raw_data['heure'] = [timestamp_vers_heure(ts) for ts in raw_data['date']]\n", "raw_data.plot(x='heure', y='time', style='*')" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false }, "source": [ "Il semblerait que seuls quelques heures dans l'après midi soit présentes. Les données ont été prises juste sur quelques heures ou plusieurs jours aux mêmes heures ? Il aurait fallu vérifier la durée des l'observation." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "hideCode": false, "hidePrompt": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "20/01/2015 13:48:02\n", "20/01/2015 16:26:26\n" ] } ], "source": [ "print(datetime.datetime.fromtimestamp(raw_data['date'].min()).strftime('%d/%m/%Y %H:%M:%S'))\n", "print(datetime.datetime.fromtimestamp(raw_data['date'].max()).strftime('%d/%m/%Y %H:%M:%S'))" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false }, "source": [ "Les données ne sont présente que pour une petite tranche horaire durant une seule journée. Il s'agit d'un mardi donc jour ouvré mais je ne penses pas que l'on puisse faire des statistiques liés à la variation de charge réseau. Les données ne montrent pas de fortes variations qui pourrait être expliqué par un usage très différent du réseau à un moment donné." ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false }, "source": [ "### Temps de transmission en fonction de la taille des messages et effet de la segmentation.\n", "\n", "On va commencer par une petite visualisation graphique du phénomène :" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "hideCode": false, "hidePrompt": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "raw_data.plot(x='size', y='time', style='*')" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false }, "source": [ "On voit bien les effets de la segmentation du paquet qui commence un peu avant 1500. C'est visiblement ce qui à été à l'origine de la bizarrerie que j'avais constaté et qui fait qu'il y a une augmentation du nombre de requêtes autour de 70~80 ms par rapport à des durées légèrement plus brèves.\n", "\n", "Il faut donc savoir si on veut tester la transmission avec ou sans la capacité des routeurs à segmenter les paquets.\n", "\n", "Le fait que la limite soit proche de 1500 laisse penser que le réseau est basé sur de l'Ethernet sans Jumbo frames ce qui est cohérent avec ce que l'on trouve habituellement dans les universités. Le MTU de l'Ethernet est de 1500 auquel il faut soustraire la taille de l'entête IPv4 qui est de 20 octets (sauf options mais peu probable). L'entête du paquet ICMP (8 octets) est normalement inclus dans le retour de la commande `ping` donc on ne le retranchera pas.\n", "\n", "Il aurait été intéressant de tester le MTU grâce aux commandes suivantes :\n", "```\n", "ping -4 -M do -s 1472 lig-publig.imag.fr\n", "ping -4 -M do -s 1473 lig-publig.imag.fr\n", "```\n", "Si le MTU est bien de 1500 (incluant l'entête IPv4) la première commande devrait réussir mais la seconde échouer. Je précise que contrairement à la sortie de la commande, le paramètre \"-s\" n'inclus pas les 8 octets de l'entête ICMP.\n", "\n", "### Cas sans segmentation (size <= 1480) \n", "\n", "On sélectionne donc les entrées de 1480 octets ou moins :" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "hideCode": false, "hidePrompt": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
datesizetimeheure
01.421762e+0966522.5013.803611
11.421762e+09137321.2013.803611
21.421762e+0926221.2013.803611
31.421762e+09110723.3013.803611
41.421762e+0911281.4113.803611
51.421762e+0948921.9013.803611
71.421762e+09114625.1013.803611
81.421762e+0988424.0013.803611
91.421762e+09142219.5013.803611
101.421762e+09118018.0013.803611
111.421762e+0999918.8013.803611
121.421762e+09102024.3013.803611
131.421762e+09713.4513.803611
141.421762e+09345.8513.803611
161.421762e+094071.1413.803611
171.421762e+093561.1013.803611
191.421762e+095871.2713.803611
201.421762e+098091.3313.803611
211.421762e+0913641.5113.803611
221.421762e+0911531.4413.803611
231.421762e+098531.3013.803611
251.421762e+091231.2113.803611
271.421762e+099331.3413.803611
281.421762e+099221.4213.803611
291.421762e+09241.1213.803611
311.421762e+0911221.6113.803611
321.421762e+099951.4413.803611
331.421762e+0913481.4613.803611
341.421762e+097601.3013.803611
351.421762e+0910761.4113.803611
...............
439881.421771e+09671.0416.437778
439911.421771e+092671.2516.437778
439921.421771e+0911691.3016.437778
439931.421771e+0911651.3316.437778
439941.421771e+0912721.3616.437778
439971.421771e+098321.3316.437778
439981.421771e+0914391.4116.437778
440011.421771e+099781.4416.437778
440021.421771e+0910971.3316.437778
440031.421771e+098551.4616.437778
440071.421771e+09411.1416.437778
440091.421771e+094001.9816.437778
440101.421771e+092263.0116.437778
440111.421771e+094667.4516.437778
440121.421771e+0935013.5016.437778
440151.421771e+0910741.4516.437778
440161.421771e+09461.1116.437778
440181.421771e+096451.2416.437778
440191.421771e+094441.2516.437778
440211.421771e+0914111.4716.437778
440221.421771e+09491.2116.437778
440231.421771e+094201.5516.437778
440241.421771e+092271.2216.437778
440251.421771e+099471.3416.437778
440271.421771e+095311.1916.437778
440281.421771e+093741.1416.437778
440301.421771e+095721.2916.437778
440311.421771e+0913381.4716.437778
440341.421771e+0910061.6116.437778
440351.421771e+0912731.3516.437778
\n", "

32667 rows × 4 columns

\n", "
" ], "text/plain": [ " date size time heure\n", "0 1.421762e+09 665 22.50 13.803611\n", "1 1.421762e+09 1373 21.20 13.803611\n", "2 1.421762e+09 262 21.20 13.803611\n", "3 1.421762e+09 1107 23.30 13.803611\n", "4 1.421762e+09 1128 1.41 13.803611\n", "5 1.421762e+09 489 21.90 13.803611\n", "7 1.421762e+09 1146 25.10 13.803611\n", "8 1.421762e+09 884 24.00 13.803611\n", "9 1.421762e+09 1422 19.50 13.803611\n", "10 1.421762e+09 1180 18.00 13.803611\n", "11 1.421762e+09 999 18.80 13.803611\n", "12 1.421762e+09 1020 24.30 13.803611\n", "13 1.421762e+09 71 3.45 13.803611\n", "14 1.421762e+09 34 5.85 13.803611\n", "16 1.421762e+09 407 1.14 13.803611\n", "17 1.421762e+09 356 1.10 13.803611\n", "19 1.421762e+09 587 1.27 13.803611\n", "20 1.421762e+09 809 1.33 13.803611\n", "21 1.421762e+09 1364 1.51 13.803611\n", "22 1.421762e+09 1153 1.44 13.803611\n", "23 1.421762e+09 853 1.30 13.803611\n", "25 1.421762e+09 123 1.21 13.803611\n", "27 1.421762e+09 933 1.34 13.803611\n", "28 1.421762e+09 922 1.42 13.803611\n", "29 1.421762e+09 24 1.12 13.803611\n", "31 1.421762e+09 1122 1.61 13.803611\n", "32 1.421762e+09 995 1.44 13.803611\n", "33 1.421762e+09 1348 1.46 13.803611\n", "34 1.421762e+09 760 1.30 13.803611\n", "35 1.421762e+09 1076 1.41 13.803611\n", "... ... ... ... ...\n", "43988 1.421771e+09 67 1.04 16.437778\n", "43991 1.421771e+09 267 1.25 16.437778\n", "43992 1.421771e+09 1169 1.30 16.437778\n", "43993 1.421771e+09 1165 1.33 16.437778\n", "43994 1.421771e+09 1272 1.36 16.437778\n", "43997 1.421771e+09 832 1.33 16.437778\n", "43998 1.421771e+09 1439 1.41 16.437778\n", "44001 1.421771e+09 978 1.44 16.437778\n", "44002 1.421771e+09 1097 1.33 16.437778\n", "44003 1.421771e+09 855 1.46 16.437778\n", "44007 1.421771e+09 41 1.14 16.437778\n", "44009 1.421771e+09 400 1.98 16.437778\n", "44010 1.421771e+09 226 3.01 16.437778\n", "44011 1.421771e+09 466 7.45 16.437778\n", "44012 1.421771e+09 350 13.50 16.437778\n", "44015 1.421771e+09 1074 1.45 16.437778\n", "44016 1.421771e+09 46 1.11 16.437778\n", "44018 1.421771e+09 645 1.24 16.437778\n", "44019 1.421771e+09 444 1.25 16.437778\n", "44021 1.421771e+09 1411 1.47 16.437778\n", "44022 1.421771e+09 49 1.21 16.437778\n", "44023 1.421771e+09 420 1.55 16.437778\n", "44024 1.421771e+09 227 1.22 16.437778\n", "44025 1.421771e+09 947 1.34 16.437778\n", "44027 1.421771e+09 531 1.19 16.437778\n", "44028 1.421771e+09 374 1.14 16.437778\n", "44030 1.421771e+09 572 1.29 16.437778\n", "44031 1.421771e+09 1338 1.47 16.437778\n", "44034 1.421771e+09 1006 1.61 16.437778\n", "44035 1.421771e+09 1273 1.35 16.437778\n", "\n", "[32667 rows x 4 columns]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "non_frag = raw_data[raw_data['size'] <= 1480]\n", "non_frag" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false }, "source": [ "On regarde les données sélectionnées sous forme de graphique :" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "hideCode": false, "hidePrompt": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "non_frag.plot(x='size', y='time', style='*')" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false }, "source": [ "Et l'histogramme de répartition des durées (attention échelle logarithmique) :" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "hideCode": false, "hidePrompt": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "non_frag['time'].hist(log=True, bins=50)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false }, "source": [ "On remarque bien l'absence du pic vers 70~80 ms que l'on avait avant.\n", "\n", "On tente une régression linéaire :" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "hideCode": false, "hidePrompt": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
OLS Regression Results
Dep. Variable: time R-squared: 0.000
Model: OLS Adj. R-squared: 0.000
Method: Least Squares F-statistic: 14.75
Date: Fri, 12 Jun 2020 Prob (F-statistic): 0.000123
Time: 15:14:57 Log-Likelihood: -1.0715e+05
No. Observations: 32667 AIC: 2.143e+05
Df Residuals: 32665 BIC: 2.143e+05
Df Model: 1
Covariance Type: nonrobust
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err t P>|t| [0.025 0.975]
const 3.2757 0.072 45.301 0.000 3.134 3.417
size 0.0003 8.5e-05 3.841 0.000 0.000 0.000
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Omnibus: 41906.256 Durbin-Watson: 0.637
Prob(Omnibus): 0.000 Jarque-Bera (JB): 31002700.511
Skew: 6.581 Prob(JB): 0.00
Kurtosis: 153.346 Cond. No. 1.73e+03


Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 1.73e+03. This might indicate that there are
strong multicollinearity or other numerical problems." ], "text/plain": [ "\n", "\"\"\"\n", " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: time R-squared: 0.000\n", "Model: OLS Adj. R-squared: 0.000\n", "Method: Least Squares F-statistic: 14.75\n", "Date: Fri, 12 Jun 2020 Prob (F-statistic): 0.000123\n", "Time: 15:14:57 Log-Likelihood: -1.0715e+05\n", "No. Observations: 32667 AIC: 2.143e+05\n", "Df Residuals: 32665 BIC: 2.143e+05\n", "Df Model: 1 \n", "Covariance Type: nonrobust \n", "==============================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "------------------------------------------------------------------------------\n", "const 3.2757 0.072 45.301 0.000 3.134 3.417\n", "size 0.0003 8.5e-05 3.841 0.000 0.000 0.000\n", "==============================================================================\n", "Omnibus: 41906.256 Durbin-Watson: 0.637\n", "Prob(Omnibus): 0.000 Jarque-Bera (JB): 31002700.511\n", "Skew: 6.581 Prob(JB): 0.00\n", "Kurtosis: 153.346 Cond. No. 1.73e+03\n", "==============================================================================\n", "\n", "Warnings:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "[2] The condition number is large, 1.73e+03. This might indicate that there are\n", "strong multicollinearity or other numerical problems.\n", "\"\"\"" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "size_stat = non_frag['size']\n", "size_stat = statsmodels.api.add_constant(size_stat)\n", "model = statsmodels.api.OLS(non_frag['time'], size_stat).fit()\n", "model.summary()" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false }, "source": [ "On regarde l'évolution de la durée en fonction de la taille du paquet (attention, échelle logarithmique) :" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "hideCode": false, "hidePrompt": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(non_frag['size'], non_frag['time'], marker=\".\")\n", "plt.plot(non_frag['size'], model.predict(), color='black')\n", "plt.yscale('log')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false }, "source": [ "Cela semble être cohérant, calcule les paramètres L et C de la connection :" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "hideCode": false, "hidePrompt": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "La latence est de L=0.003276s (soit 3.276ms)\n", "La capacité est de C=3064515 octets/s (soit 3.06 Mo/s ou 24.52 Mbps)\n" ] } ], "source": [ "print(\"La latence est de L=%fs (soit %.3fms)\" % (model.params.const / 1000, model.params.const))\n", "\n", "temps_en_ms_pour_1octet = model.params.tolist()[1]\n", "temps_en_s_pour_1octet = temps_en_ms_pour_1octet / 1000.0\n", "nombre_octets_dans_1s = 1.0 / temps_en_s_pour_1octet\n", "print(\"La capacité est de C=%.0f octets/s (soit %.2f Mo/s ou %.2f Mbps)\" % (nombre_octets_dans_1s, nombre_octets_dans_1s / 1000000, nombre_octets_dans_1s / 1000000 * 8))" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false }, "source": [ "### Cas avec segmentation (size > 1480) \n", "\n", "On sélectionne donc les entrées de plus de 1480 octets et affiche l'histogramme de répartition des durées (attention échelle logarithmique) :" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "hideCode": false, "hidePrompt": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "avec_frag = raw_data[raw_data['size'] > 1480]\n", "avec_frag['time'].hist(log=True, bins=50)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Le fameux pic vers 70~80 réapparait bien.\n", "\n", "Calcule la régression :" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
OLS Regression Results
Dep. Variable: time R-squared: 0.000
Model: OLS Adj. R-squared: 0.000
Method: Least Squares F-statistic: 4.050
Date: Fri, 12 Jun 2020 Prob (F-statistic): 0.0442
Time: 15:14:58 Log-Likelihood: -50605.
No. Observations: 11369 AIC: 1.012e+05
Df Residuals: 11367 BIC: 1.012e+05
Df Model: 1
Covariance Type: nonrobust
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err t P>|t| [0.025 0.975]
const 5.2898 2.244 2.357 0.018 0.891 9.689
size 0.0026 0.001 2.012 0.044 6.7e-05 0.005
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Omnibus: 6230.343 Durbin-Watson: 0.677
Prob(Omnibus): 0.000 Jarque-Bera (JB): 33724.913
Skew: 2.764 Prob(JB): 0.00
Kurtosis: 9.374 Cond. No. 2.02e+04


Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 2.02e+04. This might indicate that there are
strong multicollinearity or other numerical problems." ], "text/plain": [ "\n", "\"\"\"\n", " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: time R-squared: 0.000\n", "Model: OLS Adj. R-squared: 0.000\n", "Method: Least Squares F-statistic: 4.050\n", "Date: Fri, 12 Jun 2020 Prob (F-statistic): 0.0442\n", "Time: 15:14:58 Log-Likelihood: -50605.\n", "No. Observations: 11369 AIC: 1.012e+05\n", "Df Residuals: 11367 BIC: 1.012e+05\n", "Df Model: 1 \n", "Covariance Type: nonrobust \n", "==============================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "------------------------------------------------------------------------------\n", "const 5.2898 2.244 2.357 0.018 0.891 9.689\n", "size 0.0026 0.001 2.012 0.044 6.7e-05 0.005\n", "==============================================================================\n", "Omnibus: 6230.343 Durbin-Watson: 0.677\n", "Prob(Omnibus): 0.000 Jarque-Bera (JB): 33724.913\n", "Skew: 2.764 Prob(JB): 0.00\n", "Kurtosis: 9.374 Cond. No. 2.02e+04\n", "==============================================================================\n", "\n", "Warnings:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "[2] The condition number is large, 2.02e+04. This might indicate that there are\n", "strong multicollinearity or other numerical problems.\n", "\"\"\"" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "size_stat = avec_frag['size']\n", "size_stat = statsmodels.api.add_constant(size_stat)\n", "model = statsmodels.api.OLS(avec_frag['time'], size_stat).fit()\n", "model.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On regarde l'évolution de la durée en fonction de la taille du paquet (attention, échelle logarithmique) :" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD8CAYAAAB5Pm/hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzsvXtwHdWZL/pbvbdkLCPLQn5bloxsMLZsyLEMticJjxwgwxSEgKHMoyaVmgFDVebWTc2d1MzNw+NL5uQmdc7U5U4d6hKHSaXmVGwcsHlWmCEkxkAGy7JUMZYwwrawZEl+e1sWyNZ+9Lp/9F69V6+9Vvfq3r0fkvpXlSLe6sfq9fjWt77v930foZQiQoQIESJMXhjlbkCECBEiRCguIkEfIUKECJMckaCPECFChEmOSNBHiBAhwiRHJOgjRIgQYZIjEvQRIkSIMMkRCfoIESJEmOSIBH2ECBEiTHJEgj5ChAgRJjni5W4AAMyePZsuWbKk3M2IECFChAmFzs7Oc5TSOV7XVYSgX7JkCQ4cOFDuZkSIECHChAIhpF/nush0EyFChAiTHJGgjxAhQoRJjkjQR4gQIcIkRyToI0SIEGGSIxL0ESJEiDDJUVZBTwi5jxCybWRkpJzNiBAhQoRJjbIKekrpG5TSzXV1deVsRoQIUnT2J/DcnqPo7E+UuykRIhSEiuDRR4hQaejsT+DxF/YhmTZRHTfw6yfWo625vtzNihAhECIbfYQIEuzrO49k2oRJgVTaxL6+8+VuUoQIgREJ+ggRJFjf0oDquIEYAariBta3NJS7SREiBEZkuokQQYK25nr8+on12Nd3HutbGiKzTYQJjUjQR4igQFtzfSTgI0wKRKabCBEiRJjkiAR9hAgRIkxyRII+QoQIESY5IkEfIUKECJMckaCPECFChEmOSNBHiBAhwiRHJOgjRIgQYZIjEvQRIkSIMMkRCfoIESJMOUy1zKRRZGyECBGmFKZiZtJIo48QIcKUwlTMTBoJ+ggRIkwpTMXMpJHpJkKECFMKUzEzaSToI0SIMOUw1TKTRqabCBEiRJjkiAR9hAgRIkxyRII+QoQIESY5IkEfIUKECJMckaCPECFChEmOSNBHiBAhwiRH6IKeEPJNQsgvCCGvEULuDvv5ESJEiBDBH7QEPSHkl4SQM4SQbuH3PyeE9BJCjhJC/gEAKKWvUkqfBPBtAJtCb3GEwJhqiZwiRIhgQTdg6lcA/ieAf2M/EEJiAJ4DcBeAQQAdhJDXKaUfZy/5YfbvESoAUzGRU4QIESxoafSU0vcAXBB+vgXAUUppH6U0CeBFAPcTCz8D8BaltCvc5kYIiqmYyClChFKjUk/NhaRAWATgBPfvQQDrAPxvAO4EUEcIWUYpfV52MyFkM4DNANDU1FRAMyLogCVySqXNKZPIKUKEUqKST82FCHoi+Y1SSv8FwL943Uwp3QZgGwCsXbuWFtCOCBqYiomcIkQoJWSn5kpZZ4UI+kEAi7l/NwIYLqw5UwOd/YmyCNyplsgpQoRSopJPzYUI+g4A1xFCrgUwBOARAI+F0qpJjEo+3gHl24QqHVG/RPCCeGoGgOf2HK2IOaMl6AkhOwDcDmA2IWQQwD9SSv+VEPI3AP4DQAzALymlPX5eTgi5D8B9y5Yt89fqkBB08Ray6ItxvAtLCIWxCXm1pZIEpqwtqt8ef2EfrqRMGATY/NUW/MNfrPB8VtA2hPFcvwhzDpVjfAt5bxhtZs+or6kGAPSeGsUzb/ZUjEKnJegppY8qfv8tgN8GfTml9A0Ab6xdu/bJoM9wQ2d/Aru7BkEBrFpYh8RY0h5MHaEmToDt7QPY2TGA7uFLME2KqriBHU867xPvEf9dX1MNgxCAUvt4t719AG91n8Q9qxbgsXVyx7RqMnb2J/Dotg+RylBUxQi2fmOV4zu9+ofXPp5951N7ExpPmdjVNQgArt/DY3v7AH74yiGYAOIG8Mz9q9EzPAIKYOOaRgDAo7/Yh1TaRDxG8PDaxdi4plHa72zc2H1eC9Gtf8T27+oaxLnRcbzbewZpk9rjD8AxJ7bc24rEWBLDFy/jSsoEAJgUeP69Phw79wWevm0pAGB31yBeOnDC8SzWBn5sl8+vtYVBYiyJ+ppqhzBg7+Pbyo/tjs0bfPeF6nr+mt5To9jyWjdMmt9+r/7lx35nxwB6hkdgUgQSbm7v8PqbbNx0nrO9fQA/eq0bmezY7XhyvbLPZO3d3TWIs9m5lMpQUAAGAQxCkDGtf1eCvZ5QWn4/6Nq1a+mBAwcKfo4o2P/x9W6kMrnvMwgQNywBQwG8uH8AJrV+v3PFPJy+dAXzZl6Fp7ILmAmlqriBv/qzJXj+vb68d969ch62fWut/X5+wn17wxL84oPP7Em09b5WbH3DWtgxg+DH968CAHz/lUOO5z1121KHNrmraxAvdw4incnflL7/yiFsbx+w748RgAKOCc8ECy9AmHBKZSgMg4CAImNa9zLEYwQGIfZ7t9zbiq3ZPhU3FQB4+P/7T5iKsYkR62i7/3gi7/cff3O1vcF19iewaduHSGfHLW4AhmEgnTERjxm47fo5mFs7DQ9yG0Rnf8IxVmzzFX/fel8rtrx2CGkzv21/e/dyDF28jB3tA47FalKKuEHsRcyjOkashczPMQCrG+swb+ZVSIwl0cF9rwGrfyksJkPMsJ5vZm8nxPqdjfGurkHH2N6ypB5dAxeRMSmmVeU2J7ZxJcaSSIyl8Nm5z2GaQIzru5hBsHLBTGy6uQnL59fa8zRuEKTNXBsA4PF1TfhvD6y2/+2lFP30t4fz1gYB8Oi6JvzkgdWOzW7g/Bd49U9DaLqmBmua6tFz8pK9CYrCunt4BOdGx3FxLInO/gQy2bXKn6g6+xN49p1P8cGRc3a/Gtwa4Pvo6OlRdPYnYFKr75/4yrX4xft94IYPzdfUYPDiZcea5ec426i7h0fs9SMDa4dJ4dikf773GE5fuoJNNzcplTo/IIR0UkrXel43WQQ9W9TJ7ComQN7C5MEGQfW3O1fMw9sfn7Z/mz9zGk5dGs+/FsCdK+dhTu00x+YhwzUzqnHhi6T978fXNWHgwhjeP3LOcV11VtttXViHra93I8lNJiaU1rc0YF/feRw8cdHRTgYCS3BQmuuHGAGe/GoLfvXhcYynTGn/qPotRoBVi+pwcHAk71oCoL6mChfGUvIP93i2AeCfHliN7uER7O87j6Nnv3B9DmBtQl9bPhdzaqfhyOlRxwZyU2MdttzXit1dg/g1JygXzboKQxev5L+fADcuqsPBoRGolsOM6hi+SGY82+UHBqwxEmUFAfCV62ZjPJXJ2xh5rJhfi09OjbrOcxmWzb0ax858rrwvHiPYuXmDvVk+80aPPe4GgEfWNYEAOHJ6FBfGUjh65nPpc6piBF9aPMux2alw18p5+P3h0zBpjs7n9l0/eWC1Y3OQrbkYATbd0oSXD5xwrCEGNxnAQLKTtipuwDTNPCXBDTHD0uoJgBvm1+LTM6PIcPf/5IHVBQv7KSHo+WPYvr7z+O//0Rtam2qqDYwlc6OiEhI8qmIElFLtybBifi2Wz6/Fq3+Sk5WYoObBC2u2qXlNVj+IG9bz+GcSWBP9S411roKnEHhtzH5xVZWB1YvqHEIm7HcUihgBrp9Xi8OnRqV/l41/KUAAPLauCRSQaq06AtIvbmqsQ+/pUaUCIrv+7tb5+Oe3e6VtIQCmVRm4cVHx5myhYN9QiG9AV9CXtWZsIc5Y/jgZNyzNIUzwQh4Ahi5eQTxG0LpgJuqmV+E9QQsHgHSGYumcGVoaKQAcPjWqXOSAfJFnsjbiMGAIGj8ArGnKN69QAKZpemrsXmBmAhnClmeptImE0N5KEvKANZZ+x79U2NkxoFRYwhbyAHDt7BnYdHMTfvDqIa2BmjvzKpvOyPwnPObNnIbr59VK12mp4LVRfzQ4goODI7ZvoJg2/LKmKaaUvkEp3VxXV+f7Xp69kszQkuzamQzF3a3zMa0qJv17LEbQMufqgt6xbM4MxAxZLFr4aJlzNW5e4pxcvGmJR9qE8ogug/gFBgHuvXEB4iX6NhCC4+f1NtwITlDAl4lCFzOq5esGADr6E/jlB33am9vTty1F76lRLJ9XixXza/P+furSeFmFPAA01de4/p19ajJtYneW+FAsTNh89Gw3L5HYsDF6OYV3DufbxAGAUorbl89FdTxYtxIAP3voJvz4/lUFfReBZUaKeTzk+LnPnc5CgoI3KgZxvZoUeP3gsG2zLAQr5tfafax6VsakyCgcZZMBBgFuvW52Sd7VOOuqUJ7jprEOJS5rn4RvvW42ek+N4vuvHMLBwREcPjUqFfa6IFDPo0LQf2EMMSP3bLd3FHumTlhBz4ITHl3XpC3wvQQff51M8SQE2PaeWuvImMCe3jPY8eR6fO/ry/O0ZS/ctXIe2prrsXx+Ldb6vBcAVi6oxU8eWI2/+/pyvLh5A37z9J/hpkbnaYnAsg3etXIeTM5sw9geT922FE/f2oLaq9TaV1Cw9xU6qf9ywxJsva8VcYO4PouQ0k7wu1fOw08eWI2vCgLYIFmnHmsXrDFYNjd/U60SJqlqypoU+PS02uwTBticWLGwLhRB+Mdj5xELYUAogF9+4DRfprLMMJlQlQnyeIzg8XVNuPW62ZgxLVbwnLypsQ6zpudbwikFbl5Sb5lxFPfGjRyNuFiYsIIesIT9Tx5Yja33taK5wf2YRABcK2ir4uA3X1ODmxrr8ONvrsZLT/8Zvvf15biFE7iUwkEfJCRf2zlz6QramuuxvqXBdpbyUGlhTMgy30NnfyJvY4obFsXOMu842/H0rS347f9+K5Zzmk1bcz1WLco3i7UuqsPc2mmIG5bWXx0jeGxdk01F++V/HsfoFSfDJMyJEjcInr61BTc11mHF/FrppqqCAWRphElkPIzFm7/agkfWNSEeIyCw+k/c+GTgm2PAEr4yU5SI05eu4LF1Tbhn1QLH3yl12mpjBsGW+1rRMnuG4/67V87D//WNVbbpripGXJUFGQssLNy1ch7+7uvLsfW+VrzbeyYUjdM0KUyJSWjF/FrEXbQwa+yI3acfHDmHvnNO7f+aGdV2J8cIcGNjHZ6+tQXf+/pyPLauyd5o2Sa7c/MG1E6L470j5/D5uB6bStXC6riBLfe14vp5+acKkwL7jyekyiGBtQnsfOrPis6xL6szNgxsbx/AlmzAAyBnVjAP/LWzZzjszEvnzMCxs1/Y1w9dvIwTiTH0nu7Br59Yj+/csQzrWxrw+AsWFxvZIAiGu1bMw+3L5zp48JtubrKF9TjnJDII8E/fXI3EWBIfHD1nO7RuXlKP25fPtT3vz+05avseYsRiP7Bv4oOLfpDlz1NYwqh2epWU79y60CnYDAKbkx+PGdh0y+K854obFHPaMsSyP8RiBlbMr3VQLvk+58fByP5gGATP3L8Ky+fX2swhcQGtmF+L3tOjdh/FDCCW7XsWZNYroRXy76yKEdzVOh/7+s7DzAauUGpRRN3YHd/80kLUTIvbfHpCgIfXLgaBxUBhbbj1ujl5tNbu4RFsbx/AM2/2OByWbKNJZ2MWnsnGT7zbe8a+pipG8NRtS7Gv7zwYEy6doegauChppfObiQcLRmRSGVm+PuOT33vjArzbewYXL6fte5bOnoHv3LEMP3jlUF4sCrL3GgCqqww0zpruMLvMnzkN579IZr/XaiWl1IobMGkenXRNcz3+6YHVNsd8Q0sDRsfTjv7ecm8rdnYM4OCgFYAHmmP/xAyC8bSJdHacM9RydPaeHrWVl5c6B5FMW2N++OQlAMC/95zK6yuDWHOUmtb8fqit0Q62rK+pdqx1wPKp/eyhm9DWXI9Z2ahYLyyadRVOjlyBSYGDJ9zHNyxMWNYNYDFvtrzWbTM5CIDmhhocPz/muO4r183Gd++8HgCwNxvBVhUj+KuvtOCZN3uQSpsgJBe8wkey8fkr6muqsfWNHjsAhw9s4iNbmbDm53PcIFg+vxa9p0btyNjqKgP/cM8Kx24uJkaSRY4CwINrGrGra9CRQEmVc54XgKsW1eHQkBW9mMmYWDRruiPw6KUDJxzv4emc7F185CEAR/xC3LA2u9ppcQc76Bs3LcR182qlG5pBcpxjADh29nN846aFeO1Pw6CwhLwY8Svm02dj339+zFrsJrWpt3x/Prim0e67nR0DDl4zAJz/Iolbrm3AtKr8MXhwTaMj4vQPn5xxsIgypsVWETdKAuS1/7k9Rx3z9uG1i9HWXI/eU7kNznKKUsdz4jGC5mtqcPzCGKhJQQTlwzF2BsHXbpiLp29bil1dg7nNC8AjtzRh4azpdnSuyFzpyQrDM6POU0Nbs6WY8EF4v+s5haNnc2N99VVVOH1p3BbIm27JbZRiU2MGQevCOrQ112Pbt9balOm7Wufn9TdrE+ubm7PC9d3eM/gouwGwuU6RWwPfuWMZHmprtL+fzY0/b52fx2B79JYmx3v5tffcnqN5fXwLF4TIb9wMIhWVAJheFbN/S2YodnUNTm6NvtAUCPv6zjsmecwg2HzrUjv6FLDMEt+983q7I3ds3uAYRD4snQl9MfMcn/WRXc9PgsfWWVFurOhAfU01quOGQ2vMmNaA7u4atNt8o8SsAliau6jB82CL4dsblqDn5CW0Lphpf4Msex4vtDbd3ITe09Z3xmIGhi5eRmd/whaevPbGAo/amutt7VjG+d3x5HpHygL+79vet3wa/95zCn+5YYn9N1EAf/W6OXjn49OWcMtQvH5w2O67dIYiMZbEd+7IKQTsfjbOMQOOhWtSoL6m2jU9886OExDPf388eg4dxy9Iw+jF7J/P3L8KP3r1kEND7RkeQTxmfRf7OZWh2PbeMfx5tg9l389stD3DzoC0mJHThm9fPhfv9p5B37kvEI8ZeOiWxVi1sM6h7MjGjmE3pxiwyGK24Yq4Z9UCAMDc2mmO36+fV+sYh87+BH714XG7vYZB0Hf2c/ukWRU3sGphHd7qPimNLs6YFM+82WObHMUTKXvXc3uO5jnXO44nbAWBvW91Yx0OnxpFJuNcAxvXNDq+n43rqUtXbIXiqqpcv8jWnTjneNv6vr7zjo176ZwZuKWlIS9CnwJ5TudSEEomtOlmfYuleSVTpn0kfmydFeKtEjziIHoJcRGqSSDy+m9fPheAdTxnx08COIT//uNWLpMdXBQiP9FlDhr+Gra23z9yzhYKT3zlWtROr3J8gyjoWP+8dOAEXtw/YEWQPrEe9TXVjoW4QSHkxHwhqj6pnV4FwKld8c8TM/29f+QskikTELQgwyB5KV/bmuux9b5WO0+JYRgYHU/bGh2z5avGjJl0GNhiY6eh7qzAZbQ32fexufbMGz22Rkkp8FCbNW4s2IgCOH5+zN6ErsqmLxDHRTxRsbQNbMPZ13ce72SjR9lpjEVW8htOVYzkCXnVhre+pcFO9cBw98p59nMfXNOIlzotAWlktW8xUJEJPqYtA5Ym++Vls3HPqgV2Ph+VdYk/faoS/q1vaUBVjDgiXNn7mDmpKmsrZ+MrbtKy73/2kf+Cv9ywRDt/0Nb7Wh35m1SKCzPnAJZJj50mRFRnN91iY0ILetXguQljt2RPqvt0IPL63/74tJUrQ8gHs7PjhEP7SmWPbvv6zmPo4mXHRN+d/Z1vI/8eHuyY/8IHn2HnUxs8NzemgbiVFnzhg89wV+v8/CRqkrwyMrjl55Ylqdpyb6tUO733xgXSdyTGkrY9O5OxBAl/enHLBy4qCU985VrbPBUzCH5z4ISdb+elzkHld7Y112PLfa12n8RiuQ36ZcEMxsCbFJiAf27PUQxdvOzQCh9qa8wLkZf1J9twdnUNggCOPEAy9J4adfT9E1+51j55Tasy7FxP7PusHEHWhrr19W5AyH8UN5wC2CBWO7975/WO+WoQYEFdfoQ5/y2q+dLWXI8dmzfYeX3+8MlppLO5mQwjP0Geaqz8/M6gkwDR7eTIThPJlAkTLI8S0LqwDptubipJsrMJLegBfeHMDxZztpjZiR1GClEm1HiNPZk20TM84kgQ9cz9q2wtFLBMDrxzNJ49isZihjQjIn98ZHlBeLFoUqqVKU8mhH8nOKeYLVM8/jMNjgV6iO/ihbhs8qsWTmIs6dAsGd786KTD7KP6ho1rGrFRYV8VIVuYzDw1fPGyI5mYVvZB1u7sf/mjPA+WTqK+pto28zGNlx//KsmJzk2Y+BFWbN5Uxa0kcXs/PQuadWpuubc17zlsXChYArdcVsbEWBIPr13sIAZ8edlsh7mUjRGzx8+8qgqJsSSun1cLCstMpDp9it/PfuPJCOxkxpSVsAWnTmpxt+ya/LixhGgvdw7i0NAIek9bZqtJbaMvFmSpafkUvCanfSRTzoHTzVEugg3m37980GGDE51ZommJANiRTYSWyZi2k2zo4mU7QZqbczgxlsTo5RRe+OAzO82sV2Ub9j28Hbr31Ci2ve90TMWyJhP++0XR1T00Ytv42bNVdlYG1cKxN7Gs5sNgSjYcvs/FsdaFyozHTChMS/U6HTChrnICE4NgScMMXFNThWXzarFqYZ0t3Pl0tvz4u6UVZiYT1mYdiCdBCmuj/h3HHKKU2uYu/p287yeWDQoQbeA8MYAX8m3N9fj2hiV49U9DODM6bjOV4gZwYSyFdMZEx/ELtrBz27D4PuDJCDGDKLO7ivcFEaiiQsE2ad2U5+L7n9tzFOlMaUsOTjpBL8tN/cybPbamnUf74+y/sgED8h1EbsJ+XUuDQ9CLzix2HS8Yd0mcZCyVsGpyiW3gnaWAurKN6hutfORcvxDYNECxP6s5W+mhoRE8/sI+u190tB+VSYcX3PbmZVrsJDezj9dJwS94M4GOKUT1PQ+uaQSBdUR/5s0e9J018dHQCAjACd0c7ZAQS+MVzTUO/0/MACiV5r6XQRTWqkyPAEAIsQtniHnaZel6eUHHvlXsq+3tA9LcTGkTIKapna9dNrZsrgxfvGwrS7wZkidZ+Kk7IUJUrsTn8XOe1XFwm5NuJs1iYULTK2XY1TVoC/VU2sRb3SdtRxDvlU9nLG3qmftXSe3fOg4iGXjnFRPcbnDzM7hNLlUbvCrbqL6RN5kwzj+jirL+TKaso/qOzRvw7Duf4o/ZeACZVu42iVXfLC44GdPHYYIjTuezw0/iQ1OSLXQdUwh/j+hY5hc34JxDZ0fHLYotqF23gJ3IGAPFbcwAuYNb1kZZQY76LCWRjwOwaIDW+wE4zIsyE6RKkInz/a3uk8o+NAxk8+bnO9tFyOYt7+PYJShF/ByR0aZVfaRaW2w+8LRg9rz6mmpHauWXOwdtsxtvSeDb7WaiKgYmNL1SRGd/Ai93DubC+oll/+s4fsFBL+weHpFqH7IjWs/wiMNu6jUh25rrseNJf4Po5SSSTS7VZPWqbLO+pcGm/8ViTicYu5+xlwArtw/rTxM5yuJ377ze0a8yrdwPe0m14MRNYJhzWJuU4vn3+mzn37c3LLG1VUav9ILbQnerWiU7FTGIQomCs1PHDJuJxWzizAYu00jXtzSgvqbaYXKJW0q9dD7ybRaVHp6imhhL2gweglwWU6Ycidx8FWNGdYJj7WhdMDOv3gLAWE7Z8zWfH0IBNwVCnHMOMxXNFdaR9ZfOCVRsBytEEzOIrYTxzM9MxvJd8f3PfCL8OimFgGeYFKYbNqmGLl5GmouAManFS+Y1GV7bFbUP0XTAmAZV8fwIUv69fh1jfuHFXuG1BmYKoDR/YjPNxxQch24a9gsffGbfT+CkLAZ1DMrgtuBE6ioR8r+ye3pOXpLSK4O8120DEO9hi9ph3lI4iZnvxZJB1DaHiAqGqCXz37Xp5lywE2+rF/uJgis6I/hbHHZ3zhxEiJWKu/2zC1K+uAjZ3BT77ulbW9Bz8hIaZlTbtReYE5X5JrwErNt8k61Dvk1igB9v1vTLDAOQq0ZCCHqGRxxxCEygMx8Ir3R+O0vjZN9TSkx4QS/aL3ndwKSWjZAxa3R2b/bvTT//0GZNpNO5CFJ+oZSq+K+bIGapFihytDZZsI94LeBk1ciE874+Z0AaIU4tWSXQgzi/3BYcP24Zk+K/rpiHP3xyJhcoQ6zFJZ7e3LRd1i7Ve93mingPW9Ts2sRYElvubbWjpXlzkOh74U0/zEHfnRUe7HkshYdoDhQ3IkebORWTRd6K94jOeKbY/OrD40q+uAjZ3BRPoLXTq/C//nodnttz1FGVTKWQqMBvtHx/yjZkP2wvP9fu6zuPdJbKm8lYZjj+8HNXthQoAPym44StVFEKB2GCnQJLZb6Z8ILeIQQyJtqa63EgWxcScNoy7cLcimMc/0yHzZrThnRNJGFDJYh5/4NIawOcpx2HhgFvNgnjmrPNwaTA1jfc6WB+HKL8psmEo6yosyhYb18+F7Nrp9mOTv4eVdCbm2lIFUgkM3GxsRBt8qLjnCkBPKNEdi/fRnYqEGmWLG2DSpheSZl4fu8x3LF8rmPeV8WIXcSe3S9uSMyUw+Y8heVQ7B4ewU84m7wbxLmpYqnU11Q7Niy3It6q+eK6uaVNT8VFdS37O/se0d/z7Duf4rt3Xp/3bWwesjV40+JZ9vOeuX+VRXIwLfMRLy9YlHwpFEVgEgh6vuNjBsGfsgm2YgaxUoNmJ7ptS8tG0t24qE4Z9chz1XmHLb+43EwkXiiU7sW3k9kL40KqB/Ye/rRjc/SzASZebBImlPiaoSruPIOXCUZ0WLIcK0xrVdnIVY5p8RtUpwy3dskWOgAHN14MMhLfo7IRy5QAmX/i2Xc+tTdUFc1SFKZ8HpXffXwaFwVT1e3L5+JLi2cpTRr8nGVzKZmN5GUOxSDzk9/MxPFyE+5e60LWr34YLKJ93Y1tx8sAk1oZMzuOX8iLaAaQd0JjYFRqvh/YdTzzqhSK4oQX9Pyk4mlWMVDblskvPgoru93+4wnsP56QRj3KtK7O/gSGLl5GPGbYHGLVpHWbsGFRAG0QtUNLPO2oONpuaGuuR6tQFJydCvyYQvgso9OqLLs1n92TsXrcbOTfuWOZp2NaBS9brExTZNz4dIZm6ad6lEY/wod/N9MKqyQbmIi25nosmX21IxvrMSGHytzaaY4YBi8LPwlWAAAgAElEQVS/Ch/4JLObe0WWi+2TmXHEnEWyflD18ehlqzQkfxp1+yax3fU11dL1omL0bLm3FdveO2YnyhPZPgy6QV78aRNAXlLCYmLCC3oerQvr8jIV8h0vRq4C7rZ6XrN8dNuHWU3AyvynWoj8tVUxYuexYeAn1XjKXTtmz1NNItFeKGPYuPWHLjauacTL2bwtVTGCjWsaldQ9XvvmN0k+tUEyOwYxoYYsH9MgW3wA8jZb3QXiJhC8NEXCmenEADvAnePtRh8V320QYPWiOmkNARlkabc/H0+7UntVJx5AnhFV9o3xbNCUKkCJh86mJxIKRC46kM/H/zYXKc2+iaWSUNnaeXNrmlsvvPbOYgk6+xOO+BvmB5K1361P3a4rJcVywvPo3QSOTEvf1TXoyGOiIyx2dQ3aAULpbH4N1cDw1yYzFM/vPYZffCtXpJ3ZfpkG99KBE66bhpuWI5qthrlMlPw3FzqZ2prr87J+8ppaMmXmaby81ibzeWxcY+X5ZnztmOGMaXBjosQN4rrZun2H7Hp7oadyC53vu9HLqVxWTOTTNlUaodtmwDPBePbL4ZOXcGhoBLuyieaYAJON4dO3LcWebM6XuAH8wz0r7Pbwm6zu+GtvhkIaBJmi5JUGQ+wXXgFj6wLIOYJFPj6fstitf3k6LqW57Jk8/batud7Os8SyaT64plHp/wrL9Kq7QYSBCc+jd3MwAfIoyo1ZzUUn6hHITyPqxvoV//aHT87kCV9Zbmy/dmX2LFaQ4eOTl7Bj/4BDQLBrdCeTV74O1SbD5/KXaWMqn0fvqVFHVSCxOpbK7p0xKRZyefRl3+FnfPmFLgYtsU2N2cMNkk/b1NFaHc49YWNkQkmW9gJQR2a3NVvViVTmFFH4sbTWrG6Cqi9k2rGoVMjSIPD9z/uGHmprVNr7eZMqH7WeylDsaB/AbzpO4Jn7V+GeVQscfHyWRlnav2kTP3r1kGXCNWCfAPmTmUi/5fP5jKdMnBsdtzd/wyA2eyp002uJMOFNN35tr2wi+xkcP9GuD65ptP0EgKVFiAJalhubh4zrrLqOP14CwR07ficwL4jra6qx9fVupSNP5fPY8lq3HWiSylCb2aDapHTs3sx0ltTIPMlDFrTk5XeQ9YVKy1NtjLxyIqNe6jp2RdPKw2sX20KLIsvMyZ5KmMBUCfvO/gQ2/fw/kTatDZidnkQnpJtJkRe629sH8JsDJ7BTMGOK/cI2EBZkRmFlZN3yWjd2PrUBP3lgtaPAj+o5AOx5lTaBu26Ygy8tnqWsOdHZn8DBExcdjKU/fHIaT3ylJS9iWTUeXlp+WKeAoJjwgt6v7dXtiKkagLZmf9GuPBsiHvMnGHRNUSJTA9CjTKqg01cieEHcky2jp/IXiEJbNOdQ5Ip++E0DK34HzyHX/RY3Ya7zbi/lgZ0a3uo+idYFM3MpkWMG/nTiIn7wyiE8uKZRyr/32uz39Z3HwRMXc6kqMhTb2wcQi6mLp+/sGFCyX57fewxZeYkMBX7dnjspis5dEdvbB/B2zykYBnEkD0xnKH6+9xi2cWZM9gxeYegZHsHZ0XH8/vBpW1izpHbfuWOZ60mEPefgiYuO9A4EsNst0m950xGPjGmZh8TNXzZPdJKalfsUMOEFPeBue2V0KiBnkwsS9CR7h8q5xoQ8yynuRzB4maLYe0WmRjymR5lUwQ9TRAY3R57Ydv60wqIKKYV0k1ElMHP7Dr5AhZ9gHF32RBCw0xfj1m+51wpI2tkxYGeQ/M2BE1ZtWZM6+PdeSoGs/q214eZ+FZP59Zy8hI8GR2zfCC9Az1xy5osH8okDsrm/vX3AUVO19qo4Rq/k6tCeljwXyG0YvDB88qstyqR2KvCnmz3ZkqGAVfyHmU9lCgcfX8JQFSPSADzZeLgxwURHcymolDJMCkHvBnYEzFBYRRMAR4pYngniNgDixFbt0qLAVIWOq6Br7+VzaHz5OquST2Ismcf31oWuxlzI/W4OSdmRenv7gF05qVrCYFK1w0/mSfHeYi1A2Qa+cNZ0R81a/iSSzPo6WH/KKIkqIWUXbxds6cxGP70qht+xso1Z0wgf1LWhpSGv4DtzkLYurEPP8Ii0VoLoMJ038yqMXsmxgjbdLNfGZf1TO70Kz9y/Ku90o4O2ZosqquMHc5iOYga+1FiH8bSJTTc3OXjw/JwW54kdiCnE1Mgi10uVrVLEpBb0Fv2QO8ZnqJ3NknnhGRibQqap+I3IC1NgAvkph/mSfxRA64KZeVQw3SOijsasa1/0OvW4nVZkR2q+PJ6fIsp+BHapbKeqDZw/ffAF0k1YGr5pqrn7PFuIVS4SzX1Avi19e/uAw7TBC8LO/kQeo4WBbQrMoQk4577oMP2rL1+LgfNf4N97TuHPW+crzS6y/nGLLtaBlx+MQTQdsXfyBUHc3stOamY2eRpfuIXfiFWR66XCpBb061saUBV3FpCeXhWzI0R5LzyBZbdkKYzF/BYqnjVPyWMoVDPkj6AyTn5iLOlggfScvOTQ7HSPiDq2w0LsizIN3s0Onm/Ddz4vzCLKzPEp00x17/ezQagUAP70QQGbdUNgmV5kFEZVxDA7HcmKmvMQWUN8wjPeXm0Q2PnvxfUC5PuEmCBnWvjy+bW24PzVh8fzylK69U8Qn5FOf6uuVZlgAPfAML6dBBTdwyO2YiZuXuUS8sAkF/RtzZYTdXfXIM6MjmPvp2fxzuHTiMesbJR8pR+TwnFc5SeXTBtjzjUZJS8siJx8ptGKdMXWBTPRcfyCQ7OT8epF6CwmPtVqMmXmMWMAtdCTafC6iy/P1h4jNtuJCWmKHM/aj+CV2ba9THf8dwZNaCdTAPjfeNZNjBOwMnOAGDGs+pts4x66eBnVcQPptEUdFFN8MMWn6ZoabL51qTSMP6agTT62rskW+H6jmMX+8eszkp1OdeYpA+/TYymIvfqTxcWk0lYlsZe5Qupfu2GuwzzJNo5Ioy8C+N3699n825mMlY2S2eD4XC4MOjnW3Sh5QOFmARV/n99kWLZBfkKxmpQyXj0PL39AZ78zv7+JfGYMS20gSw/ALwKWGEz3tKOytXf2J/BI9pQDWAW4t35jVa7uqkYeH5ltWxYIxYP/Tj7CUie6WRdsXHmNWObsVwlPr41bpGA+us4ZdCaaggYujOGZN3scm4kqaZwMsvH3YwbUVQq2tw9gZ8eAxZJRnM7EFBzKzZlLkSBmEVVuVCxDpUmRormSkr/7+DT29p5xzM8pybopNDLWjyAV+bq8trtKyOVyU2MdttznLJIsE1B+OPx+M/UB7vx9PsAjKdi7dWtSei0my8fhpJ3x2fzuWbXAmdpA9i4h970fyPp8d9eg02mZ9buI1EKdDY7X6PlAKDGrZn1NteM7KXVmI3xx/4C0BKBfiMwckc4IqB1//HepNm5+I5AFnbH5oKoexq7Rmb/sdGKa2fmTTQznR+DpvEtk+gByU5eYgkO2Jth8ZxRhAu9Txb6+XE4kau0Pjqku+gWnJOumkMhY2TEVUNvT2CTe1TWYp+2KAlUU8iq4CUp+UY2nrEg9Cn0nKXs+z98Hco5ZvuoQH84N+KNKui0mWTAL20A+OHIOHx4778xVQ5wl4fhF4MZ88AK/ocu2i4YZ1Y7fZXZt8Zv5ucBHePLzitnKeScpsv++44a5Ni0yQ5HHXAkCcc6wzZR3rKocf/x3qdaAzrxoa1ZXD9OFzDSWMYsj8GSlCmX1DGRpx0WI/SNLD+11z7c3LMG29/scwVfMtFqqBGYyTFjTjXhMFav8qIJu2K4t5iXxW/6PfyYzKYgh43zaVzsC1OcE55//6C/22ZPloTZn1SHewSaaAIIuJlFwAFYNzA+OnMvmp6eIZwtb87ZehkK5+YD8ZBQjuf4kAM5/kXQEqckCx1T2241r1HnegVwlpJjwncvn12LPJ2fsjc6URED7jZYUSwa+f+Qc3j9yzt5svnbDXK5tVFpBy23j5sdTVp2KH2dVsW8diKYxNh6tC2biw2Pn4VUPwg9Eps/d2cIfsnkopuAQodoo/ZqYLo2nbWqnQYDa6VXaSe6KhQkr6EUhwkwYXqHJKuGjeySVQeUE49O+AoVFrrIiBch+57nRcUcRB1GoyahpQcK0xX4RtT1V/hT2LB1nlFeGTtGh++Nvrnb4BfjAFpmTUJYegAkw8ft4oWBSaxOtrpKb3uzCEtkNjzcH6kRLioyqxFgyL7AJyKUCYDVeAf2auCJYG8QcOC988Jnt+GVlBVm+f7/gC/ywXDeM+MDXyhXHenv7gDLFgQyd/QkkxpJ2qULZfeI8DEIR9oJ4j4zaKV5T6mjZCSvoZdqm2Lmqzgwjo6MbP5xtMny0qIqloPsOcfGfvnRFOXll7QHyk2Oxa1n/6RbJlvGOxQ1F1MJVtlk/GTr5RSM6Bd2chHx/JDMUv24fwEsHTkgDsPjTUOuCmaidXqWcJ8yZLzMHqsaAtVHGqNq4phHTqnLOUFHo83RT3Zq4sk1UZFLxpoZk2rTf6/f0yVNWmUDfel8rHlvX5GD0sFq5PHhbu1cuHvauYlKDC4GOjCmUPuoXE1bQA+r8zkx75FOUhtmZOvxwv5qEzjviBuwcJIeGRnD4VA8easvXuGTC0cvUtTGbllV2IlI5lVWTVfzdzTbrNeHdjtPidV6+hitcPhNVABbPrlHl3eGhMgeKYyCmWW5qmOF4DkG+aSUxlsTo5ZSdCiAel1MuVVD5sXgmFeHMYIBlIooRaL+DfxefTA5wCnQvM55oa3+r+6SroNcRlKUWpjy8TgZhmDX9YEILehHisTRukLwiFWHs8jJzAm8Td7Qhq8n7hfiOPb1nQDkdj7FfdrQPYLckNbFMOPLFFc6Mjue03JSJ7qERaUEPhzYsSa8rm6ziJHYr2q3rIGRt4f+tC9YfIo1WpK/msTMk7A1ZagXVqUMVAJTMULtgCDPnMROJTEDc1TrfFv7dwyM4NzqOObXTPL/b8U7uVMGYVGxz2X88Yd/z5Feutd/nRznhTygMfL3Y9S0NSv8AkG9rF9MQi/BivLH3lFKY+kFYlgVdTCpBD+RTyDbdshiLuPJ5QUvR8ZBpa7wJg9eOVcJYBv6YLTJe/vDJGQfzg0F1xJZpvDz3fu+nZxE3CNIZChPWCYEV9GhdWGcvRL4dsvS6Km1b/F1lWtGZ8GFszm3N9dhyX6vDoS3an/f1nXf0Mc8ickt/rHPq6D01CiPbf/bzYeUp8oqY5BUYPs2FG4UUgJSZtXx+rWPuLptXiwP9CTvKunZ6VSA7tbhp3tRYh003N+WZ7BhVVYy7EKNqvWz0qj73S2vWcYiKjmr+/wfJqcR/Q6lOGJNO0ItCeNXCOoc9MIwjk5u2lsraIXmeto69k5+gjBnA3jF88TK2tw/Y1xoEuHPFPLzbe8bXEZvn3rMasgMXxmzONOOFi4tTtMm7OZn4PtI1rXhN+LCO4G3N7umm17c02DZykUW0r889/bHbqYPPhyIWrdcNixeZLDp9wTt3mU1fx7flB0wIimU8t9zXKjUX7uw4oTwx8VG1OpDNG9lpW5YQjrXdj52fL6EYjxkwTdM2perWPVCdCouNSSfoVc7CsJ2x4iTjJ/nMaXEsn1eLaXEr17iOMOYnqElzxRa+c8cybG8fsAN0AEvQP3XbUjx121Jf3yHjCQNwmFVk1en5snh+IiMBf0wKlXbld3N209LYuPF0WCCnpckKpLC55Jb+2E1o8GNrgOKRm/0XabfZQJyjVsyxJLuHMbPEIEGZb8urPV4ZXLfel689i8w41YkpKHRZdbL7+HoOqghnx8YhlFDkz9e6uaWCFMUJA5NO0AO5xfyDVw7ZAylmmAyzc/nNg68vCgBP39riytxgWN/S4DjaswAjADYtjYFS5Algv+3k2yNqeG555f30nR8mhZug9LM5uz1HlqtGVuhazB0znrIE5RNfuRaXxtNSbczt1CGaUIJE0TLT21vdJ9EwoxpvfnQSJqXY+kYPuodHpGwudo9bqUl2nY4m6pXBVdSeVacH2YkpCMTxYXn1RV9A76lRxwbEfwtbVRS5+s1AbuMXTags7XNM0Oh1FBCvU2ExMSkFPWBNgpcOnLAHMiap9BQm2GL5y39td/zec/IS/tdfr9O6/4mvXGtvEhSwJyrjzzOIzB4/mqFsUbMc9vU11Y6FEvTEw9r1ds8px+88k0JMM+DFkBLbrfr23Rx1UMUe4nPVuBW63teXy/ufNile+OAz7HxKnhPfTZPsGc45gHVpkbI+ZamoWZg9ix1R+YD4e9g6CCpcZBsZf8pQnS6Cnh5028SPjxidLEY4sxw3/LfwFNaMaTGxdguBlzJFiAConRbHh33nMW/mVXlBWjKsbwlWFCcMTOhcN27Y15cLz3er9BQ2RPZA64KZ2vfWTq/KK0K9viUXYQvADjYB1Lx3HTBByZ9AeK07aF85Barzb4xJIUszUBXLZ0ipoEqk1tmfwM6OAenmzi9uSqndNrdC1+tbGhAziGv0K4Ps1MF45Ts7cv6VuE/KItsM3+o+adNDxbRBKh+QaNcvJGBPxSzym8E1zNO02/jw4w04+8ihpWezhKYzVhrmcxwbTWa6ZGPq3EBG8dRtSz3b29acS9R3bnQcszWYU2Fhwua68YI4MVWVnsIOQ35sXRMGzn+Bbe/3gVJ45uF2azNrkyPCNstNdjMV6ETAMkErYmfHQEHJuURt6a6V83AllXHY6GWLkGdIeUXRqiiQu7oGwX/SbdfPse/nN0wKK9/Jw2sX2/NCxQjio1+rPYQkb////iuH7JS1vKDVVTjEfDGyTKY3Ntbh8MlLtpASNWrR7FBIqUnAivikgMNMVOwMrl6444a5+MMnZ0CF8bFPG7ZvBI41xW/KvadG7TF+t/eMq8LhtoHofJ942tBh44WBSWu60bHrFityrnZ6FQB9tg3fRlmbVfVYZaYCnW8ShTGPnpOXXHPYe7Vf3KyelhxpVYuQCV239rtRIMVvmctpTOKGaZoUi7jsjarvZdGvLP+9Tn/I6rgy04FuaUlRGxffzZgtvJASNeqwiAfinOK/wYvPXqzI1Ly0Fjc7Uy6LpAxZMRbeRMc2Kxklm4fbBqKLsFhkfjBpBT1QOtoeD1bYIWYQ0Ax19Q2oFoLMqeblRJUxPFTfJC7OGxfV2UEz1EeWyaApJtwWoVecA2/njBE4HHpuaZ3Z33UKmMvAooi9NDCVucQt/YVM613fYuVyl526gNzJgG18FPL0u2GYStzmlNt4F1Og8c/mUy7Lktd5QXb6V93Hvnd31yDOZs0vftKayN5XCjv9pBb0Xgi7w6XHbcGgyvNomTNNZyGoNgAvIS77Jhkb4vEX9jnu0TlyqxayH+Ei2nS1xoQQEFib6PL5tY7v8spCGiQrI/+dybS8ypas/TrmEletl1qx0ARWYRSGuEFsrZqvH2wCGL2c0vomHehGmKrGu5gCTfbsoCeIICcfMX2IH4R10vKDKS3oVQ60oAMgO26LhZd5Hm1VjNj1a4Pyw2UajM4kEhenTPB7LRhm92al13Q3iKBUSsZ95otD6Gqw4jv9ZGVkQmU8ZQn794+cU+bB8Wq/7gmMkQmYwhA3LOqtmGZXzHj5wgefafuEVGDKyMudgzbtVBZh6jXWqr4Iw24ve3YhUe9+lJMwTiphnLT8YEoLeiC/ZqduBkcZxKAWgzjtdyKPNp2heGydXvCMKkGVyvRTyMTztWC40mu6FYRkC4X9Ljty81kRU8yZSvzZRgtZnG3NFrvkh68esg9objVmZf3f2e+sJ8ACZVRar/i7KpTfDzNIBTHEX/QxyDjyutqzbCzDstuLzy6VScTLL1FKTV0XU1rQi4OiEgZ+JrWbA0jGo9U1IaiEo67w8jMBRfrZkKLI+L4+Z+k13QpC4kKRFWFmz2fBTY6yfwC+vMw7R4z4TvH04advRO67qkqRCmI9ARaFqdJ62ebiFVXc1uyPGSRCdtLRoWSqzFnsb6q+VMU5BEHQ02yh4O30vGG2XGmRdTBlBb0s+dHwxctSU4ofbdBNm25rlhe81kF9TTUIISDZMnJDFy9jlZBfRGU68TsB+Yn80oETeHG/PCBHFNhuWSplz2ftFPuXT6HMooV5wVNdlcsR40uD4k4fDLp9w7Mt3KoUqXBmdNzxb/Y9fIoIUfOV5fqXgTGDggg4se/5OqluPgaRffLBkXNo/+yCo2iJLIArrCBGt+Rlqtw2YUN00It9uatrsGK0+ykr6B0aCZd+Nx4zsOmWxQ5PehhHQt6xpaJu8deJgnrr6902rTCVodjRPoBpQuUjQG7KCWq2GLgwhrSp5kjLNChdgSNuiGJOFJurnN3YmPOVZ6/42cAY20a07ev2jfitABylI93Q2Z/A3k/P2v+OGxYX3S1FhN8x0zHXqdg9Yv4jrzqpfH/wpSVT2ROLWwBXWEGM4olCFkBXTMjGR3TE8z6Ocmv3U1bQ84PCp9/NZEwHvxrQ5+Sr/i6LBGXh2Dr2S9G2D+QWE2875W3r4ynTLqzhd6MS2UNu9nBRwPj1D8gKtADOjIqifZolJNMtLNPZn3AU2+BNN376hn2bKseKCszEBVhjv+lmK/L42Xc+dVz3VvdJe6PUyaXu5zTjRuVVmY680NbsLCTOokxV5AIZjTEoxPVrp7QQ5kGxbOayecP35fDFy9ixf6AsRU9kmLKCXrSni+l3Zde72b9ljjYGfvcHvEPWxckh2vYBeaAGs0Oz6M+XOwdt7dcPu4hnDwWxh+vCTSN3Y664FZaRYV/feVvbBICH1y52CDS/2RuHL152zbEiXi8Kbcb4kaXL0M2l7tcc58WFL8QhKp50VH0Zpg2d92G0LpiJX314PFDwYCHvd6tBwJhLpeTKu2HKCnrAOcG9TA5uglF0tP187zFs+9Za+++iPVMVTafSLkXbfms2x76Msnb78rn43cenlfTD3lOjedQ5L9t7GELeD7WQfbPsnfw9YhQjIDen8FxzZPuPB784+ftlbBS2wfBpo3mmiyxDpkpoi8U2EmNJ12yQqn7wOs3onhB0xkwG2alO99qgEH0Y4onwuT1HMeSjlGhYCQL5v5WaK++GKS3oeRSisYvh6b//5IyDpSKeHlRamtvk8GofL4Sq4vLyiXwgF2szb+KRtcMt74wuVKaO9S1W9Cc79usIH9nx38tenxhL5iWLc+tDJph5Qc3YKGyD+dqKedjzyRkH00WZIdNFaPPFNjr7E9rCWMfkJEuzrJMyW9YffqnGxYZoo3+r+6TN+uHLeOrEqRRL8w9rUwsDkaDXgIoax7BxTSN27h+wiyxTCZdZd9CDTA43LbetORdIIsubwkw8q4RTAmtDGAtgX588nazVAOr8rwdUm6GbhqsjFMX7Raooz0ZhOXyeFgq/8PUPAIvGSal3MBwvOHW1QB2NUex3tzTLXv2xO8sgURXzKTVkrB+xjGc6Y2L1ojq0LqpzTT/BFyCpBHt6MRAJeg909ifQPTTi+E0USW3N9fjxN1cH5jLz71LZpd0WtMgRFye1vSi46kT8N6QUrIWw6GLrW+RBPQDs6E8+gtgLss3QTZjrCEUvqqiKjcJruTs56mA8Jq+4JEKmTYqBSW42b7f+UvW7Th87GCQxAy8dsEoAiieVYglF3ahbkfVDAccG8NHgCHpPj0odv3zfM39UJdjTi4FJJeiDCkq35/HpfFnedNmkKYTLLL5LzLGupVVLOOI8WI6X1oV12NkxgIOD3OZFIE0160YX8yq6zKOtWR3UE5bd2E2Y64y/7H7ZeKru3901iDTnLL/9+jlSJo5OkB6AULRnt37XuZf1x9DFy3gxyyDxc1IJCj8Bijzrh5nyNq5pzNsAZBsS3/cGCZ90UAkmLoZJI+hZHplUhqIqRrBj8wZXQek3aZfOROA1LL+DrDI96DjdGH1P5oCVRT62LqpzCPq1zfU4NDSCZNpZKYhf7DxdTOQt6wh91Ubox2HlJQBkGq4f+6vMKasTfCM79fFFJVQO2l8/sT7vJMFHCYehPesqILL5yveHG901bPiJIVBt8OIGINuQikE6YKi0KNlJU2FqV9egTT9MZqjtYFRpTH6iIf1OhCCDrDI96NiX3a6Rff/GNY14OZs3pipG8A/3rLDzmmdMK685AEekIU8X43nLfLCZriD1+k3Vp8++86nvwC8/QoO9x8/Yiac+AKjmTn1uDtp9fVb1IlWUsJf2HJQV4/ebRed8MYU8EE6Aoo65TueaoPA774qNSVNhSlaBB5BPGp1BkAXy6A5UkEFWTbpCJ6zs+9uaLbomTx18q/uknWrgSsrED145BEIgzTPPxx3wwWY6NL9CzFo6AVwi/AoNt7HzoojKTn06glsUxDrJzMLUGHXmK/t3KbRUPwLYKxOqzrorxjeEsVmFiUljulEVnVBNGrdBCLKIeCEQhDbI2qoS5KKw4TUrwD1IhU+OJTuWyyoiZbMPICnYjUX7tU6wmZ/+dBOmQQK4/GptqgWq+gavU5/4dy/FQbe9KlZMkI1UVyiVUkvVEcBBT3lhQpWyJKiSWCxMGkHf1qwuOsELDPZvt8VU6HF/y72tvmmDOpBptnFW3NglkZRbcixeiMpgZG32bpWwvGzAuv0ZVJh6wY/Wppobqm/wmktBzAMqXwP/DBUrJqjTVqeNXhtCKZ2PQU95hbZRDKIT/YJAaU49fjFpBD2gX3RCFFQiCj3uv9V9MhBt0AuiUGbvA/ynVRC/NZkyQYj1HJaqgZXqEyM2xWd4CdJCNcZi2lJlkH2PF32zEBu5F1TzV8aK8TJFqmzsumYO3dQUhRYi90KQU16h5i7x/luvm5PnF1w0a3pF2eYZJpWgV8Gvhl7ocV83Xa9f8EKZFTaJ+0wkxZsi2PdtubfVdsTyib9+nI1g9ROxKUMYGmOxbKm68DsnGFOFAr5riopw2wCZ+W23S14VmfYbVNtUjQPfxmSG4tftA9jZccIz4VtQBDnlFWp6Eu8/ff22JOwAACAASURBVOmK4+9E0i63tVLKE9CUEPRBHCOFHPcBa3GHschV7/FjoxfTGYiVoDauaXTkfAcAUGqnCghDoy5UY6wE6M4JljKDMXFePnDCpvsGgdf81TVFiifBMLVN1kbe1+OW8K1QBJkrhTpIxfs33dyEw6dy/qkHFQkEZSg1/XLSCXrRhsb+f9Bc4roQnZu8EC0G+MXT2Z/wbBsAB82PZ8qI0YSyCMFSadTl1tzDwL4+Z7bMVKYw852O8HDrt/qaahjEYvv4ZS35beOurkHs7DiRS/gWoulS9k7RAeq2poMqErIUFUzRkkU/68zhUtMvJ5WgF+2EIMSRofE7dyzD9vaBgosU6KT4LcYAyrQAQM/546D5ccU8+GjCUvGkKwnFOD6vb2lAVXbjBKxo6kKFatANkDnjTUp9JzYL2sZVC+usNWZSVFeFu6GoWC666Z399qNsza1vaSjY1q+qZlcsTCpB7xCyGQpmjOApglte67ZzfyQDCGKvI1cx+bOyTYR9h986rbLFMJkFu46AkC1YFijmp/RjW7PFAAvLRu8HbikWCChqp1cVvdReoelAVFCNl8M/4COATweFrDmvb5BVsysWJpWg54UZMYide8SksO3T7EgJWNTB9S3yOqsqeGnsfmx0fq9RbSI6G0ul279lCEvb1hEQsrFkaTUYs+KlzsG8FNUqlMMEpdI+yxG4w38/XxeXT8nsd2xV4+VY95oBfLrQXXO638N/g6yaXbEwqQQ9E2a7uwbRPTSCjwZHbPoV016nVVmsFSObFx1w2q69WAI6C8drketqkm6UOn5C+UltOxEEPFCayE/ZWPILdl+fs4RjJdHlZJB9p5hiodRtl9XFXT6/NtDYqtaeSDjwCuDzA501B+hz58u18U4qQc+wq2swL6ho6OJlAPlCka+zalJvlkAYmrGOHd+LUie2qZzCp5DsoLq+jqApkgE9ASFbsFvubXWUcKyEUHY3uH1nuebHW90n8/7tFZehgtva478xTLORW7ZU9m9ehgRNwlZsTDpBLwZSrF5Uh8MnL+HF/QPY3TWYl+97fUuDzUIB9FgChS4cnV2dvyaW3ag6+xNlFegiGH87SFQmc4pnTCotlO74fiFFcpiRn24LNjGWdJRwLGYAUBhoa5anuygWdDZ4sS7uPasWYPn82sBarc7aC2tj0z1V+tXSy7HxTjpBL3Z666I6HBoacbWp2zm7i8ASkEFnV+fNUC8dOOHYqCpB2Mhy5OhqZ539CadTPOXu6+BTJAc1n+gsLtmC9bMoy5F/XKQTi+kuAHWMRaHv1RGCYl1c9u9K9xf5qTw1Efxfk07Qy47jblGDQPFYAl7t1NFM9vWdR9osbnbIIM8Sg3AI9E0b+/rO2ycoADAMOf2Q9RGfIrmY5pNCFmyxAmDcxkJWa0A0d7EymLopl8MiJfDg6+IylNvcyODFxtKtPFUp36PCpBP0QH6n6yxenYEKMyGS7v06x8IwhUyQ42osZuChtkZtmhi7l3eAe5nKvMYwrI1ONg/8FqkJy2nrNRbiO8W6tgT6NEC/uWrK5VQMAtX46bCxilF5qhyYlIJeRBi7bSHClGmkQezMOkIuTCGj+6xCtN8g97qNYTG1aV0fRDEEn9dYiO8U69oC0D4JObjoGYrt7QPY5WIqnAjmCsB9boj8+2ff+RTfvfP6vH6d6EIemCKCPgwEFaaF2LIZvDaqMIWMn2cVsoGGedQtpjatO2684GMxG+z3oPAaC5Ww9Xua5d/FvtfLLs3eU2oB6Pfk5jY37JNlNkngH4+eQ8fxC/j1E+u1+00WI1CJmNKCXpw0bpMoqDCV2bL5uqxhIEztaqJoajyKqU37GTfWV2GdLnSd9l5mL933P7imEedGx/Hup2eRyRTHJBNGpTE/fes2N1j/PvvOp/jj0XN58Qdez5bFCFSqsJ+ygp5FPbKiAVu/sSqvcLOKBRLUxm7leyd2XVYVXz/IYghTuyqFpham87gYmxM/boZBYJoUJnUfN6Dw04XYL6UaC16AyhJ1hfme8ZRFmfWbwjhIbIXX3GhrrtcqJC6DLEYgEvQVBrGY+M6OAc8FGmTR8RON0QTdjsWlTl/Kv7dUWnyhC16GsAUiP246hT0YvKJtvVgvQcY+SDoNHqIATYwli5IPZ1/feds0FCSFcdDYCp1TTxBFQRYjUKmYsoJeLCY+b+ZV6D09WhQWAZtoXjRBHe5uMQQyy5/O2qWbzyUoCl3wYUA3rS0bN5Gi6xYxGTQ83uEc9BGTEDSdBkMpGDQsY6NBAJZVwqT+UhjLlKaw/DJBFAVVjEAlYsoKerGY+FO3LcVTty0tKhfdTXPQ4e4WS9tnXGvAEjC7uwaLKnTXtzQgZhA7YMprwYe9ufntR7/CmxcafsLj62uq7TKOJgVGL6c8v0XHVOR1TbH9MryZ1DCAGGDXQPC7qciUpphBMFymyHFZjEAlYsoIepntk08lC5QmdFr1Dh3ubjHYJQDyCoOrCoWLCCqA25q5aORsOlnVgg+yuXm1K0g/BhXefrRlVtGL4YUPPsNdrfO12DK66TSCJuIrBLyZNGMCd6+ch5sWzypoU2Gb064s/XV7+4Cv7KKlQDkipVWYEoLeTVjsymqzYaYXCCJIeKqXQYg0V0lYR2xxAm5c04iXD5ywHdM6VbHEvNp+AqYA/Whkv32pszEU0o+d/QkMXbyMeMzQYqb40ZbXtzQg7uOkwz+fV1j8tKGzP4Gf7z2G05euYNPNxdFORTPpnNppofgA2prrLZMa87WV4DSqi3L52lQIXdATQloA/ABAHaX0obCfHwQqYVEsDTmIIGlrrreLdKvYHfyC5eu/+mFIqCbgjs0bAvOTk2kTO9r95+LR0SL99qXOmPoRvmIuGT569JFbmvKiR1UmO50+8XPSEeGlsMjasL19AD989ZBtLjo4aFEFC8kZL4NoJn0wxPKaQU+jxUaxZEtQaAl6QsgvAdwL4AyldBX3+58D+H9hmd1eoJT+lFLaB+CvCSEvF6PBQaASFsVyQgW1eSbGknbRhPGUXDth/2YCx6ocBGkGSBlUE9Dv0T1IgI2IYtT51B1Tne91yyWTMSkWZotGsO9gudAL0eL4k45u4FUQocISy5mCZGQUwTA1UmYmLYYZI8hplAelFF988QWOHDmCw4cP45NPPnH8L5Xy9pPo4G9+CvyN5Pc77rgDb7/9NuLx4hpXdJ/+KwD/E8C/sR8IITEAzwG4C8AggA5CyOuU0o/DbmShUAkLHSFSiB3a74Re39KAeMywHbIvHTghzTfCL2zAn5ANsrm5OZZZigC/tS95QeJV8MVPX4bpWBQFqJhLhrFv+O/ImDTQpid+A1DcYhb7+pyJ5RgYRXA3V9OB/5bO/gRe7jyBTHIcX2uZgauTF3Ds2DEcPXoU7777Lrq6ujA2Nub7m8PC2p+U7dWBsGfPHqTT6coQ9JTS9wghS4SfbwFwNKvBgxDyIoD7AVScoAfUwsJNiPA508Pie3u18aG2Ruxot7j2GUVufNuez5y30M8c6VcQ6jiW+fwquoKNF6I6BV/8ICzHolcumbZmZ+EawJonlOY2PUopUqkUxsbGcP78eZw9exZ9fX04dOgQPvroI3z00UcYHBz0bMvaf9Jvt59rRTz+M+Bxye8yjfS/B3/NpMVVV12Fr/3F/Wg/Q4CrZ2N6/Xz8P3/9X/EXG25ETU1N2dpVyDayCMAJ7t+DANYRQhoA/DcA/4UQ8n9SSv9v2c2EkM0ANgNAU1Np6El+tHMxZ3ox+d58uzauafTkbIu2er9RjH4Eoa7NO8jpxavgSyqVwhdffIFLly7hwoUL+Oyzz/KO16Ojo77eWwj8CtBCBO5Uw9zGa3HDDTdgQ9uNuOGGG3D99dfj2muvxZw5cwrWdkvtGH1uz1EcfrsXJgViBDhtzC6rkAcKE/SiMx0AKKX0PICnvW6mlG4DsA0A1q5dW3Qfit/Blh1tmTBifw+Lby+2S4ez7SVcO/sT+M+jZ3HjvGlYUD2O48ePY2BgAP39/fb/BgYGMDAwANM0tdursjWGgb/5WfGePRlx9dVX48Ybb8Tq1auxcuVKXH/99Whubsb8+fNRV1cHwzACPff7rxzC9vYB+9+PrWvCTx5YnVcsHbCowP/H3cttFo1fUyc//0/HDTxcBCFcasdoKQLQ/KIQQT8IYDH370YAw4U1p3jwO9g3N88CvTiEy+eGkb50FplLZ2COnsO/vPU5vnu8H+lLZ4vSTi8tMNISC4NhGLjhhhuwYsUKrFixAsuXL0dzczMWLFiA+fPnY8aMGSBEpsOUDl7FRorNzd64phG/6RhA2gTiBmwHJ2NnPb/3GP7wyRlQgRkURHMuhRAuteAN008UFgoR9B0AriOEXAtgCMAjAB4LpVWa2L9/P9atWxfo3qCaaekMBZWDuro6zF3QiOHMDBi1c3BV/Tz87QNfxh1rW7Fo0SLMnj0b06ZN8yUgf5DVGims4+3fclohD5nwAJAXBu/2DDcwwVlT1YBlV1/t695iwE1Yqv5WDOFvGAaIaeadCtqa6/GLb62VvjNo/Eg8litgUwwhHIbg9dvHYfmJwoIuvXIHgNsBzCaEDAL4R0rpvxJC/gbAf8CiV/6SUtpTtJZKsHfv3lK+zjcaGhrQ3NyMpqYmNDU1obm52f53Y2MjGhoaUF1d7TmJ/Oa8ZgKBaTBhlJB7bs9R/DNnd6xduRzr1vkPemF5Y3Z2DNicZ7cFLgoPvjxe3CDagUuqtlRSUAvgLixlfwPCS4vMtyGdsRg3mYy+Xyaw5sxMpBIWUFhQCV7dhHCVNk/8Qpd186ji998C+G3QlxNC7gNw37JlwaLkvve97+F73/ue4zdRIAXR8rzA2DgsqMVt4P0kz1LdLxZ89ppkfgOCilHp3u1dfDEPAuChNv2SdXx5vIxJsemWxVg0a3ogTa1Utls/2qBbP8v+xieIkxVZD4KgYx1Ec97XZ9VEdmOZyRDGKcbttFjoSaXSUNYUCJTSNwC8sXbt2ifDemYp7HF8YJNXwe5CNYGgk0z36Kj7/DCOv+xdvJCfVmVIg1z4hSw6p/kMoCztQmd/As/tOarNqGKMJX6u1NdUaz9DF4UmUOOvlf2t99So3Z8mEEpBm0LG2q/JImhcRxgatjj3d3cN2hHG/HMr0bnqF5Mu101bs5VKgJk6irHz6g68jhD10kwKzcvitVj9PL9QuyP/LreC4rKFzJ/KRCHkZ+GL12651yqyEUZUqwxha4PiGCTGkjAI7GR4YmK0sN5TLAQ9BYTRp+Lcp5AXU69E56pfTDpBH8TU4Re6m4ko2IaEVKo6AirIJPNTjLyUk1j3XV4LWRRCfha+eC0rsqGTkTKIucAxBzTS6frVVouhbYZlFtF9RilOAar3iqdFMYYlaBu9UOrMlpNO0JfCnqa7mbCJxNIEvLjfmfgrDI1f1ja/xchLyRDQeZffhezn+qB5j4KaC9gcYBvvjv0D2OWS/M3v/A17o9a1W3tRQGWnprCEWtBv1kk4VwqlpxzO3bIK+kKdsTLoLvpCdlQ/i5EJ9LSZb9P3I1y88sGIbeP5C2HQ1kqpgfhdyH6uV13r9Qw/Yy6LZGZMFq/7g2irYW7UbiwnXvC7CSr+Gcm0qU1c8AO/36wrXEuh9JTDuTvpnLE6i77QHTUsjdOPcNHNB7O+xcppzkcv+ol8laEcGojbgiskFbDbtW7P8KNAyPpK9/5y24PdWE48pdNNUPHPICEleisUlcScKYdzd1KYbmQalNsgFjroYWqcXsLFKx+M7F0Pr12MX3Mh7BkTBU3sSlok5eI0F+pf8HvqKFf/yuzWsjrHboKKfwZzcpebsVJJzJlybOYTXtAHWfhBKV1+NhMRQRZvWzNXiMKkqK7Saysr9MDqwFbFiH2fboAIf00lLZJybjqF+hfKKcAZgsR1iBWsdAQV/wydSmLFBu8r8ZPgolgmy1LPhQkv6IMsfNVEVQ1qMbRI3QkUpBBFW7OzHi7PNff6DtU1lUIvq6RNR4ZK6isRhcxjWQWroKayctZSZf4GN4c4QylTThQbE17QB134ssnnllMlTC0ySBAN4C/UXbYQdTZFN9ODbFMo9YSvZEHKUAmauwxBT0O7FEVIgqCc6QT8fr/seiD8lBOlwIRn3YS18N2i5LxyqvgVeEEWnGrS+XmvzqZYqNOR/a2YgrhSBWkpUSin34/J8uXOnNmGEHjGArihVPRnWd+EQaKoJH+VH0wK1k0YC98tSs4tp0qpfATiPfU11b7fq2tbLcTpOBkSQJUDfoviFMLp96uUpDM51hYF8YwFcEOxTW9eFdH8mGxV1xebvl0MTHjTTViQsQ12S3KqiAjTR+DnnqCahc6mWIjTcaJqPOVEkKI4QfvYr1KkokqOpyw7dxCCQTFNb159o2OydbsesHxevO9LRCUqO5Gg5yBjG3hNyLB8BEHuKadTUrVgK91ZWonwK7iL0cc6Wu3o5RSef68PAOzi9Sph54Zimt789o3fQDhegMuS8fl9ZqkQCXoX6Gq/5XAOVoJTUtY/ldCuiQa/wkmnj8M0BbFxfm7PURDAttenM/pphUsFv/OvvqYaBiEAV9BdBV0BXonKTiToQ0C5nIOV6pQsdbsqzR7qF0FNebqaZ6GmID6tc1UsF3VdKUJMhM78YwVwXjpwAialMAyCLfe2hnKSqkRlZ8KzbiJMHcgEejHtoaXO7xPWO8I0BYn9u/Ubq9A9PAICKzCvHEKs0HGRF8ChWimevezzDJWmhE0K1k2EiQ+vxasS6MWyhwZJKFcpCNMUJPZvYiyJnzywutifoESYxXz4Ajhe/aRrn9f9hlJr+5HpJoIDYWhLfu/XWbyqoJ1i2UN5AaebUM4NpVjcqqpchZiCKs3eHMbGXl9TDZNL73rXynl46ralRWM68SgXI2dSCPqJbqOtFASdhLwNV1alyWt8dGzEfNBOzMjl7inUHuoWXOM3oZzbO4q9uL2qcnndq+q/Utibw6qpq4vEWNJ2KhsAblo8qyTvBcrHyJnwgr4SOavlhFu+niBBUOx3HZOKIUlJC3iHjHstIj5ohwB4eO1iT66zbl+5BdcESSgnQykWd9B36FY5Y+/g/10o/FRC49tS6MazvqUB06r85/wPY8Mr1wlpwgv6SuSslgtuSZh0NsMg0bd8/wMUMYOAclQ1nfFRLSJVEe8HC7CPqtouaxufUK7SF3fQd/B9MJ6yUn/I+j/serpBKqExFOroDCq0w3CwlouRM+EFfaXZEMsJleDS3QzFSaij4Yv9Lysbp0tJE08gxSxHB+jNnYmyuIO+Y31LA+Ixw3ZOvnTghL2Rup3UCv2GIA7RMFFOVkw53j3hBb3bBJ9qtnuV4PKzGYqTUEfDdxMwQQWQjO2hY3P2W5S6lIXRK5Gi2dZcj4faGrGjfQAUVl4ntqG7ndQKBT8nYwbBw2sXl42uGQQTTbYQSqn3VcV6eY5H/+SRI0dCffZUtd0XYqP3et6+vvP457d7YVIgRoC/vXu5tsPPL9j4sU1GZ/ym6pgXCllfA3D8VowT1UQTlgyVNM8IIZ2U0rVe101aHv1UtN3zCwcAnttz1F5EQTVKNw2/mMfsINp2MTn1QSijE0WIqfq6WKcdvm+KpSgUExNRtkx4040KQWz3hSzOci9sXsuIGwQgRJvJoItSO5L8bk7FSvblV3urJI1PF7K+Loa5aSL2jYiJ6BectILer1AqZAJWwuR1aBkZCiBc5xlDqRxJfpNy8YFCfuuCuiGI9qZzT7kVg3JhImrDIsrFnCkEk1bQA/6EUiETcF/feZsmlkyVZ/KKzi0QoqyIpYOwBVGxCmvI2Dl+6oJ6IYj25nVPJSgG5UIlaMNhzO1ysnaCYFILej8oZALW11TbNDEz++9SQ9QyAH9lBnmELYiKWVhDvPat7pOhaoxBtDeveyaDVhsU5daGSxWlXGnafiTosyhkAibGkjAIYFLAINDKglcMiFpG0EkWtiBSPa+Q2p6qYKp7Vi1Ax/ELoWqMQWmLqntkgWm847wcmKiZOv2i2JtspZ7WIkHPIegErITjaJjQMT34EQqy5wWp7cm/3y2YKoxo1mKC/75iRJ36RaUKJzcE3ZiKvVYr9bQWCfoQUO7jaNhw+54gQkH2vOf2HPVV25OHVzBVue2nOkKItdGrH0qBShVOKhSyMRV7rVaq0hcJ+pBQbuFSCETB5CaoggoFsX8KWRCVupgA93xDQc1UxUYltMEPgsxBsf/Z9WGbrCpV6YsqTE1xiPz725fPxbu9Z5A2qVRQiTbxoEKhkAVRqYsJUGcADWqmKhZEAVep/SmD342p0GR/flGJSt+kjYwtNyrN865qDy+YkhmKtz8+bf9NJajCCocvZEFU4mIC5EJIVTSlXFAJOD9tUpV1LFXeID8bU6HJ/iYDItNNESBbSEBwumMx2sPawAQTny4WcGYTdLOJV9qGBpS+TW7aMQBl0RR2b6kdoYUKONX8LuV3+NmYdJL9xQyC4YuX0dmfqJh5HCYiQV8EiAtpd9cgdmWDeMrBanBb2EwwsQIQmYyJWMzAQ22NjgLIsoXiJqTKtQGUutarl3b83J6jrkVTyqFVFmqTV5mnKlU7Vp0AxLm/Y/9AKEF2lYhI0AcAq4xDAGlqVXEhUZR3EXgtbCaYNq5plApn1UJx48eXi67HtymMWq9+3icbW7HvxaIp5XCEFmqTV7W5kh26qhMAM+GkM5W5SYWFSND7RGd/Ao9u+xDJjHUYf6lzEDueXO8qGAFgd9dg2RaB7sJ2Ow7L/qZa8KUISlGxhNa3hFfrVQc6m2gx8vUXCh3Th+pUpmrzRHLo8phorKMgKGs+eoa1a9fSAwcOlLsZSog52f/Hf/Q6KuP83de987JXoi07DKiccn5zyft5n+gYFgOOek+NOmq9FvtEoTu2XtcVa464PdetfkEYp7JyzPtipZWuxDU8IfLRTwR09ifw6C9yQmvrfa2oihFbo/dTXLhUi7fYUHGSGYJqqX4LmCfTJra9dyyP0fKdO5YVHB0blvDmr3MTnMUyd3n5UVR/E/v52Xc+xXfvvD7vBFXINxcDQX00XutzIkYP84gEvQdYJkTAmvA9wyPYsXkDdnUN4tzoOObUTit5m4qRdExXKOq+Owhdz0sQ8jx+JoT6z4+BAjDg3HQL2Vh1v9HPOHiZs8I2d7H+Grp4Wflct3cycwb7+wdHzqHj+AXpCSroNxdDWdnXl8skG6aPxu1bwlYKioFI0HtANGxR5JKFsUVeak99mEKhmJklvd7LT3qvhSSaa97qPokPjpyzhDwBvrxstq1xFgo3J7Num8Vv9LIDh2kn5k+h8RhB3LCKe4vP9XrnxjWN6B4awUeDI/aJyU92ULfnF0tD5jPJArkauH6VDlEgq76lGEpBMTBlBP329gG81X0S96xa4Itut3FNI14+cAKpDEVVjGBjljVRiMArdGcPUyiIR3Sv7wjj3bJJ7/ZcGY//u3de78hSGZaQV32j3zbLri+VU5Y/haYyFLcsqcdty+dqO1Ud0dIxA1Wx3EbhJzuo2zcVy2GfGEuCAI64BT47KHu3m59ERZf1wzwTUe7grCkh6Le3D+D7rxwCALx/5BwAaAv7tuZ67Ni8QbrDx2PZYIuYc4cPMpH8IEyhUF9TDTO7KkzqnUu/rbne1qjvWbUg0Ltlk/47dyzL+ya3tAvFZKvwz66vqVaaQFibd3dZAVG9p0YdTnvZ9W7t5M1NhTgUz4yOO38fuIi/v2eFtoltNxfJm8mYeOSWJiycNd1ui47/g2+/jKhQLKbL+pYGTKuyTE4EwJqmWdj6ejfSJkU8ZgCUOtJ7AE7BL47brq5BqT/Kb0oQ8XtLnZp6Sgj6t7pP5v1bR9B7TVYwxlL2vzpCPKydXWWD9huazmtARvbfXiwNZqPtOH4hkP1TtcjFheSVdkHsgzBtoKJ5Lh4zYBBrqMXoVhYMZ1KLhTWtymqvHXUZM3DwxEV8/5VDjiA0VZuDKAOiFs7qIwAApfrmi87+BF46cCKnEccMO1aksz9hCyc3lpnYlofaGrFqYZ1j/Pxu1H4YS3wQVMfxhP0tqewph5mhdnUN2qcf2SktZhC83Dlo115mc1BMLa2TEkRUHkqdmnpSJDXzmgT3rFpga/IAML0q5hnq7LXY9vWdR9q06rKms3ZAwDswqlBNxksIu4Wmxw2Ch9cuRiu36JgGxGsabgLW70Yla6/OIpeZa3SFi075QdnJwc28kE6bIEZ2SyS5irR8HhsgJ0QSY0lb23+xY8DOIbRz/wB+/M3VWD6/1hZGYhF38dt3C1qlDPw9mYyJO1fMwx8+OQOTWtqr7jxj8xqwNq2H2nJCXjcKWjQHbm8fAGD5UsQ55UVLZs/3y1haNGs60hnTQYOuilsafcakiBkEPUMjUsbWlntbsbNjAF8kM+g7+7n9HVte64ZJqR2noTM3ZQy1zf92AFdSWdNaicw4Ez6pmU5aWKa97+wYQPfwJfzu49N499OzjkAnHUcbkDvmyUwey+fXegpxJuSe33sMZy5dQe+pUV9Hc1Fo85G5qjbzSct+LSw60XbsWKSp3ORm19bXVIMQS7U1DIKhi5exvX1AqtG4LVDViYTB74aouwF5ZevkhRDfBpJd3MycwfqW134BJ/unrbkeu7oGkc2AAADIUOBHr3UjRiz7Oa9tsjY73msQvLh/ACbNnRRkfS3211O3LcVTty3N2yCYr6p1wUzUTq9yfU7MICDIrQ1eeD/zRg9aF9Vh1cI6/PDVQ/ZauHvlPNy+fC7iMcP2EzCIAlO1IfNmkcRYMs9sJppTZH4mx3dwKT0A4Pm9x/CHT87g4OAIAGdep87+BLa+3m3TpwFrrRBC7A2QzX2AghCiNHfK5n/vqVFH4kBDOB0WCxPedMPTqVhhbiA/wdJj65rQMzxiD24yqykBsDUrNrmfuX+V1KbGH0ebrqlxtKNneASPrWtS2pn5r3uCDAAADgNJREFUBdV7ahS/yw72wcFD2NN7Bk/fttT+Hjct1/7WDMX29lxujt5To3i755S1OE2KWMzA0MXLmDkt7ogUZXCzHVfHDSRTJkBgT+7xlInn9x7D3k/PIpP9LZVtA38fv3nudsna6HUy2d01iK9eNwdza6dJ00yIWN/SgLhBkMrQPNMK/76DJy46+pBfdOMpEz/KCq2qGMGOzRvyjtv8xrO7axApTiCITs/O/gR6hkby2mqaFCacjC5RYDy4phHnRsfx+0/OgL1iXLLx8hvntzcswat/GkLTNTXoPTVqmxnYmug9NerwVTEzkyxtspj/hZmimEA9OJhbSzze/vg03jl82vFxzDRI4BSY/HplcwGw1i4bIyaEGXOIEGBnxwmYJrXbfuT0qEPpGr2ccnU07/nkjD2HGb69YQnamq1CMPyYAkBNdQxjyYz973iM4C9WL8DrB4eRNimeebPHYcJk87e977xDc39+7zF0HL/gePbKBTMjG70ORi+n8gpzizs8C/Y4cnrUce+7n57Fix0nHIOeNi3u7c6nnIucp5Ul0yaOnvnc8awzo+P4wSuHQAHbDstoblbwBnDninl46raleT6D3318Gn/45AwIsYSAStMRqWNMgP587zGHwJpzdTXOfZ50CGGeicD+zTL28Ro5AHz1ujnWsZ/rFwrg94dPQ1gfDoib586OAYetl2lMu7oG8dKBE0hnLCYH2xz4v7HFVh0jeHBNo2d+Ieuj8k0rP/3tYbz6pyGc/TwJmj1uq0ABW6gmMxTP7z2Gp29biqGLl3HwxMW8jeenbx123H/60ji+c8cydPYnsPnfDuCdj0/DzH+Nw4RACEBhbcTPvNkDALb91iDEMQaE23ivpEz88JVDSJkUoBSrFtXh1T8NAwBOXRrH/uOJ3H2wxnpWTVXe946n5A7HfX25/C/jKRM7OwZw63VzcPrSFamA5yH28Y2NdegZHkHGtPwF9nUAdrT345/f7rXrLd+5Yh6SaacpLJk2sXJBLapiBg4NjdhKy3jKxN/v+ihvLf7ig8/Q1DDDMafZ2iTI9SHfD9ve78NdrfOl2vnn4xnHv7+0eBbe/Oik/Z1Xsn3Y1lyP7e0D+NFr3XkbSYbCVu54bLq5eAn3eEzoFAjb2wccx0YA+Op1s3HPqgX2YmEOsliMIJ3R/9a7V87Dtm+txfb2AWx5rTtvcvCIG5amwoQTAbB07tW4pqbKseAAS1P80uJZ6BB+F7Fszgz87KGb0Htq1Ga4JMaSjvQLDDOviuPSlbT2tzHwwp9pTqZpIi2TTpJ7ZKi9KoYvxjN5i/3uldYmx2trDI+va0LrwjplP6+YX4vDp3KbdMwA2prqMZ42saGlAaPjabR/dsFe8ATAXSvn4eJYMq///YBk38X3R4wAj9xitfenbx3O6/cvNdbhYJZ3rsKt183GlVQGAxfG0HRNDQ70J2xB9+Vls/HHo+fs/mNbVswg+LOlDXiP8zWFhdw7gK/dMA8AlH1nEKstotbrhuZrajBwYcy1T/i2EJK/WfhFjFjC1QAcm20s+2zZ42fVVGFkLKXVThEEwPyZ03Dy0rjntYDV1zOq47hhfq2SEaX1Xs0UCBNW0Hf2J7Dp5x9KBUN1NlUBH1QTBE/f2oJffPBZ3u7MQLIayNzaadjePhD4Pbr45pcW4s2PTrpuOpWK/7+9c4+R6qrj+Oc3M/tm2V32BdJtgQqIbRSBNmhaqgQ1JcZnRJsYTWpMJGraJprQ+EgT/2nx8YfRWNvUWK0oGhqKf2isTWFNQ5eXtIB0WVh5LLtld2FhB/bBsHP84547e3d2dndYmJ29Z36fZDJnzzlz93zv3Pu955y593cWVpdSN6ck9fBNkKgdliveReCNU71j5vXB++73n+njfN9gfhoWoDQWYWiy3oBy0+zY/JFpmX22Rh+ZVqtmAW+2Xxw37+xz/UaSnf/p4OF7F9gfTabHZCYP3q12e1q76YkPE5mBPbnrrU4+9YEFOdv+9PfU1Jy/PDRhT1dNfpTmtl4yHdY7D3fOCpMH1ORzwDNp04C3m9DO0a9dUkskIiQnGELuO913S8N2yM6A0n/QyyVJQ2oeNheo3c4O9LpXeBzr7M/p9kPbowcYuYl5QkVRlNnK0I2RqSvdAqE1ev+xc0VRlLCTzPFsWGiN/o2Tt//uA0VRlHyQ605raI3+9MWBfDdBURQlFITW6BVFUZTsCK3RR3N5L6CiKMoMMj/HK9WF1uir0h7nVhRFCSu/+srqnG4/tPfRb1rdxLPN7fluhqIoeUaAWhvfKZ2iCCSyvKNlXkUxd9aUcXkwQXVZEYczxPSZWxqjpryYkWSS+PANrgyOhsCoKothbCTbjsuDJG0so+qyItYtq6f5RA99AwkWVpeybnkDvfFh6ipLxq1RkAtCa/RbNq7gv139OYn94QKxtBgtPlPFqrkVBGisLOHd+OTxPiK3IZaJTzQiqRMqm21GI7C4bg5FEaHryhDxoQTZPo5RUhQhJkJJUYR1S+vpvDzIyZ5r3F1fQVlRNHUsRoDlafF5smXF/EriQwmG7ApJxbEIXVeGUtpWzK9k+fxKmtt6GTFJ+gduZPw+75pXzgNL68asPQDeE5hnLw2wdkktSxsrqSkv5mjnFQS45z1VY9J+9Mvg5/3gZ63vxlOxiURGpwZEYJHdvye6r2LMaPjn3a3dtPdeoygixIcSlBZFuXdhFQdOX2Lg+gib1jTx8Xvms+NQR8oE/QVL4oMJjnX1U1tRzNHzV0CEDe9rGBNqOT28sZ+/reUs2/efpSQWoaq8GIGUwQY1ZYqi6relfoIoqhNFYc3nQuCZyGusm8DCI99oa2ub1ja2tZxl6z+Oc3lwfFCvlXdUYYD2nqvEh0cQoKI4SjQqY67EuSQWFVY1VXPiwlWuXb8xLhhUScxbDWgkaagsiXFxIJEqW1Rbzrm+gXFxTwCqy2IpzbGosGlN05iewcEzfTzy3F4SIwYBNtigYuknxO7Wbtp7rrKkfs6Ycj9e/uK6Ci5eu55aazd48PvRAA2Mieq4reUsP9x5JGWgmcLhHjzTx2/2nKK99xpL6ipYUlfB8/9u94J7Bcw4MZJkXkUx722sHBMVdLKTKz6YYG/7RRrnlvLR5Q3jDGuq+OfB99dbu+nuH+JL99055apkky1oAmND8frPgUxlNpm2O1HZVNu53Uz1v2eb2bmI80HN0vFjQHfHh7OKYZ5+kPohcCtLYhzr6k8tzFBTXsyxTi9GS/pyaJkO9HSzSD/I/d5F49zSlLFO1K5UqGNr2JGI1wbfdG5mebWZPtEm6l1l8xk1BkXJjoIzepdRA1QUJRPZGn1o5+gLiamW3VMURZmM0N5eqSiKomSHGr2iKIrjqNEriqI4jhq9oiiK46jRK4qiOI4avaIoiuPMivvoRaQHODMD/6oOKISYCarTLQpBZyFohNuv8y5jTP1UlWaF0c8UInIgm4cLwo7qdItC0FkIGiF/OnXqRlEUxXHU6BVFURyn0Iz+uXw3YIZQnW5RCDoLQSPkSWdBzdEriqIUIoXWo1cURSk4Qm30IvJbEekWkaOBvKdE5LyIHLavjYGyJ0XkpIi0isgnA/mrReSILfuFiMyqpccz6bT537FajonI1kC+MzpFZHvguzwtIocDZS7pXCkib1qdB0Tk/kCZSzo/KCJ7bbv/JiJzA2Wh0ykiTSLyuogct+fhYzZ/noi8KiJt9r0m8JmZ12mMCe0LWAesAo4G8p4Cvpuh7vuBt4ASYDFwCojasn3Ah/EWQ/o78HC+tWWh82PAv4AS+3eDizrTyn8G/MhFncA//XYCG4HdjurcDzxk048CPw6zTmABsMqmK4ETVstWYIvN3wI8k0+doe7RG2OagUtZVv8M8GdjzLAx5n/ASeB+EVkAzDXG7DXe3v498NnctHh6TKBzM/C0MWbY1um2+a7pBMD2bjYBf7JZruk0gN+7rQI6bdo1ncuBZpt+FfiCTYdSpzGmyxhzyKbjwHFgIZ6eF221Fxltc150htroJ+HbIvK2HTr6Q6aFwLlAnQ6bt9Cm0/NnO8uAB0WkRUT2iMh9Nt81nT4PAheMMf7iwq7pfBz4iYicA34KPGnzXdN5FPi0TX8RaLLp0OsUkUXAh4AWoNEY0wXexQBosNXyotNFo/81cDewEujCG+6DNxxKx0ySP9uJATXAWuB7wF9sr9c1nT6PMNqbB/d0bgaeMMY0AU8AL9h813Q+CnxLRA7iTXVct/mh1ikic4AdwOPGmP7JqmbIy7lO54zeGHPBGDNijEkCzwP+j1odjPYeAO7AGx532HR6/mynA3jZeOwDknhxNFzTiYjEgM8D2wPZrun8GvCyTf8VR49bY8w7xphPGGNW4124T9mi0OoUkSI8k/+jMcb/Di/Y6Rjsuz+1mhedzhm9v3Mtn8MbKgLsAr4sIiUishhYCuyzw6q4iKy1PeKvAq/MaKOnx05gPYCILAOK8YIluaYTYAPwjjEmOLR1TWcn8JBNrwf8KSqndIpIg32PAD8AnrVFodRp2/QCcNwY8/NA0S68izf2/ZVA/szrzPev1rfywusRdAEJvCvi14E/AEeAt+1OXRCo/328HkQrgV+0gTV4F4RTwC+xD5LNltcEOouBl2y7DwHrXdRp838HfDNDfWd0Ag8AB/HuyGgBVjuq8zG8O1NOAE8H2xxGnfZ7M9ZvDtvXRqAWeA3vgv0aMC+fOvXJWEVRFMdxbupGURRFGYsavaIoiuOo0SuKojiOGr2iKIrjqNEriqI4jhq9oiiK46jRK4qiOI4avaIoiuP8H8rhpWQHqdNJAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(avec_frag['size'], avec_frag['time'], marker=\".\")\n", "plt.plot(avec_frag['size'], model.predict(), color='black')\n", "plt.yscale('log')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Cela semble être cohérant, calcule les paramètres L et C de la connection :" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "La latence est de L=0.005290s (soit 5.290ms)\n", "La capacité est de C=387760 octets/s (soit 0.39 Mo/s ou 3.10 Mbps)\n" ] } ], "source": [ "print(\"La latence est de L=%fs (soit %.3fms)\" % (model.params.const / 1000, model.params.const))\n", "\n", "temps_en_ms_pour_1octet = model.params.tolist()[1]\n", "temps_en_s_pour_1octet = temps_en_ms_pour_1octet / 1000.0\n", "nombre_octets_dans_1s = 1.0 / temps_en_s_pour_1octet\n", "print(\"La capacité est de C=%.0f octets/s (soit %.2f Mo/s ou %.2f Mbps)\" % (nombre_octets_dans_1s, nombre_octets_dans_1s / 1000000, nombre_octets_dans_1s / 1000000 * 8))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "C'est nettement moins performant !" ] } ], "metadata": { "celltoolbar": "Aucun(e)", "hide_code_all_hidden": true, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }