{"cells": [{"cell_type": "markdown", "metadata": {}, "source": ["# 2A.soft - IPython et commandes magiques - correction\n", "\n", "Aper\u00e7u des [commandes magiques](http://ipython.readthedocs.io/en/stable/config/custommagics.html) pour automatiser un peu plus les t\u00e2ches courantes."]}, {"cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [{"name": "stdout", "output_type": "stream", "text": ["Populating the interactive namespace from numpy and matplotlib\n"]}], "source": ["%matplotlib inline\n", "import matplotlib.pyplot as plt"]}, {"cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [{"data": {"text/html": ["Plan\n", "
run previous cell, wait for 2 seconds
\n", ""], "text/plain": [""]}, "execution_count": 3, "metadata": {}, "output_type": "execute_result"}], "source": ["from jyquickhelper import add_notebook_menu\n", "add_notebook_menu()"]}, {"cell_type": "markdown", "metadata": {}, "source": ["### Exercice 1 : votre propre magique commande\n", "\n", "On impl\u00e9mente la commande ``%monplot`` qui prend un fichier texte, appelle la commande [plot](http://pandas.pydata.org/pandas-docs/stable/visualization.html) et stocke le r\u00e9sultat dans la variable ``df`` qui est ajout\u00e9e \u00e0 l'espace de travail."]}, {"cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": ["from IPython.core.magic import Magics, magics_class, line_magic, cell_magic, line_cell_magic\n", "import pandas\n", " \n", "@magics_class\n", "class CustomMagics(Magics):\n", " \n", " @line_magic\n", " def monplot(self, line):\n", " df = pandas.read_csv(line, sep=\"\\t\")\n", " pl = df.plot()\n", " if self.shell is not None:\n", " self.shell.user_ns[\"df\"] = df\n", " \n", "ip = get_ipython()\n", "ip.register_magics(CustomMagics) "]}, {"cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [{"name": "stdout", "output_type": "stream", "text": [" downloading of http://www.xavierdupre.fr/enseignement/complements/marathon.txt to marathon.txt\n"]}, {"data": {"text/plain": ["'marathon.txt'"]}, "execution_count": 5, "metadata": {}, "output_type": "execute_result"}], "source": ["import pyensae.datasource\n", "pyensae.datasource.download_data(\"marathon.txt\")"]}, {"cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [{"data": {"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAD/CAYAAADrE0HrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xt8VPWd8PHPmTO3TDLJZHKBXLgmAhoQECiCCqh0XShW\n2q30sd22WO0u1do+qbXU7tput3W79YZ4we6Wtm6rz3atFlqt1boKogWVVFAMIoR77slMZjLJ3M+c\n549JhoSccMmFZOD7fr18Yc7MmfM9Z86c7/ldj6Lruo4QQghxEtNIByCEEGJ0kgQhhBDCUFoniOrq\n6pEOYcAk9pEhsY+MdI09XeOGoYldEsQIkdhHhsQ+MtI19nSNGyRBCCGEGEaSIIQQQhhSpJurEEII\nI+aRDmCw6uvrRzqEAXE6nQQCgZEOY0Ak9pEhsZ976Ro3nDr24uLiM/oMqWISQghhSBKEEEIIQ5Ig\nhBBCGJIEIYQQwlDaN1ILIS48WVlZKIoy7NtRVRWn0zns2xkOqqqSlZVFR0fHgD9DEoQQIu0oipK2\nvYvOpcEmN6liEkIIYUgShBBCCEOSIIQQQhiSBCGEEMKQJAghhBhC0WiUb33rW8yfP59p06Zx3XXX\nsWXLltTrb7zxBosXL+aiiy5i1apV1NXVpV7bvn07N954IxdffDELFizo89n3338/S5cuZcKECaxb\nt27Y90UShBBCDCFN0ygpKeF3v/sd+/bt46677mLNmjXU1dXh9Xr5h3/4B9auXUt1dTWXXnopa9as\nSa3rcDi46aabuOeeeww/e9KkSfzzP/8zS5cuPSf7It1chRBiCGVkZFBZWZn6e+nSpYwbN473338f\nr9fL1KlTWb58OQB33nkn06dP5+DBg5SVlTFr1ixmzZrFG2+8YfjZn/nMZwB47rnnhn9HkBKEEEIM\nq5aWFg4fPsyUKVP46KOPuOSSS1KvZWRkMGnSJPbv3z+CEfZPShBCiPOS9pVPDvoz1J/9YVDrx+Nx\n7rjjDlatWkVZWRnBYJC8vLxe7xnsaOfhJAlCCHFeGuzFfbB0XeeOO+7AarXyox/9CEi2MZycDAKB\nAFlZWSMR4mmdNkE88cQTvPvuu+Tk5PDAAw8A0NHRwcMPP0xLSwuFhYVUVlbicDgA2LRpE1u2bEFV\nVVavXs3MmTMBOHToEBs2bCAWizF79mxWr14NJDPsY489xqFDh3A6nVRWVpKfnz9MuyuEEOfGnXfe\nidfr5de//jWqqgIwdepUfvvb36beEwwGOXLkCFOmTBmpME/ptG0QV199Nf/0T//Ua9nmzZuZMWMG\n69evp6Kigk2bNgFQW1vLjh07WLduHXfffTcbN26k+4mmGzduZM2aNaxfv56GhgZ2794NwGuvvUZW\nVhaPPPIIn/jEJ3jqqaeGeh+FEOKcWrt2LTU1NTz55JNYrdbU8mXLlrF//37+9Kc/EYlEeOihh6io\nqKCsrAxIljoikQixWIxEIpH6/27xeJxwOIyu68RiMSKRCIlEYtj247QJYtq0aWRmZvZaVlVVxeLF\niwFYsmQJO3fuTC1fuHAhqqpSWFhIUVERNTU1+Hw+QqEQ5eXlACxatCi1zs6dO1Ofdfnll7Nnz56h\n27sLgC8cRx4rLsToUVdXx9NPP011dTUzZ85kypQpTJ06lc2bN+N2u/nP//xP/v3f/52Kigree+89\nnnjiidS6b731FmVlZXzpS1+ivr6e8vJyPve5z6Vev+uuuygvL+f3v/89jz76KOXl5cPao2lAbRB+\nvx+XywWAy+XC7/cD4PV6exWV3G43Xq8XVVV7Nczk5eXh9XpT63S/ZjKZyMzMpKOjY9TWyY02/76t\njk9d4mZ+aXpOSSzE+aakpITa2tp+X7/yyit5/fXXDV9bsGDBKdddt27dORkg121IGqmHcl72U90N\nV1dXU11dnfp71apVaTtXu9VqHZLYIwn4a2OEpRef2UPIh8JQxT5QNa1BJrkzUE1nf96NdOyDIbGf\n0F2nL07tVM+zeOaZZ1L/X1FRQUVFRZ/3DChBuFwufD5f6t+cnBwgWWJobW1Nvc/j8eB2u3G73Xg8\nnj7Lu9fp/juRSBAKhfotPRjtRLrOCe90Oock9khMY/uRNnz+vAFdMAdiqGIfqH95+SDfvqqESbn2\ns153pGMfDIm99+eJ09M0zfC4O51OVq1addr1z2ignK7rve7s58yZw9atWwHYunUrc+fOBWDu3Lls\n376deDxOc3MzjY2NlJeX43K5cDgc1NTUoOs627ZtY968eal1uotbO3bsYPr06WcSkugS0xKEYgka\nAtGRDuWc8Yc1Ypq0uwgx3E5bgli/fj179+4lEAjw1a9+lVWrVrFy5UrWrVvHli1bKCgoSA0rLy0t\nZcGCBVRWVmI2m7n11ltT1U+33HILjz/+eKqb66xZswC45pprePTRR/n617+O0+nkG9/4xjDu7vkn\npuk4LCZiiQvjghnTdDpjCeIXyP4KMZIUPc27wNTX1490CAMyVEXuz/12P5kWlW9fVcxFeRlDENnp\njWRVhycY48ubDvKv145j5tjM069wEqmmGRnDUcWUrsfiXOrvOBUXn1mbpczFlOZimk6GxYQ2fF2h\nRxV/WAMgLlVMQgw7SRBpTNd1YpqO3aygXSBVLv5IV4K4QPZXiJEkCSKNaTqYFLCoJuLpXVN4Rnyh\nOG2hOCAJQohzQSbrS2NRLYFFVTArXBAliEffasDblSAulEZ5IUaSlCDSWFzTsagmVJNyQbRB+CMa\nh9oigJQgxOjWPb3G1KlTmTJlCuPHj+d73/sekJyzrrS0NPXa1KlTWb9+fWrdaDTK2rVrmTVrFtOn\nT+fmm2+msbEx9frOnTtZsWIFU6dO5eMf/3hq2qLhICWINBZN6FhMCmaTckFUMQW62h9MCjIOQoxq\nPR8AFAwGmT17Ntdff31qmaIo7Nu3z3AWio0bN7Jr167URKZ33XUX99xzDz/72c/w+XzcfPPN3Hff\nfSxbtoxNmzaxevVqduzYQXZ29pDvh5Qg0lhM07GqSlcJ4vy/YAYiGmYT5GaYpQQh0sYLL7xAfn5+\nanAwJDuY9DcL6/Hjx1myZAlutxur1conP/nJVMKpqqqisLCQ5cuXoygKn/70p3G73fzpT38altgl\nQaSxmKZjNimYFeW8v2BqCZ1QPMGKqW7K3fbzfn/F+ePZZ59NPUu6m6IozJ8/n3nz5vHNb34zNXkp\nwE033cQ777xDU1MToVCITZs2cc011/T7+bqus2/fvmGJXaqY0lgs0V2COP8bqTuiGpkWEzdfVsiv\nd7dIghCndcPTg79o/v7z0wa1fm1tLW+//TYPPfRQapnb7ebFF1+koqKCtrY27r77bu644w6efvpp\nACZNmkRxcTFz5szBbDYzbdo07r33XiA5zVFTUxN/+MMfWL58Ob/73e84evQooVBoUHH2RxJEGotp\nOpbuKqbz/HoZiGo4bckZPM0m6cUkTm+wF/eh8OyzzzJv3jxKS0tTyxwOBzNmzACSjz649957mT17\nNsFgEIfDwXe/+12i0Sh79+4lIyODxx9/nM9//vO88MIL5Obm8otf/IJ//dd/5bvf/S5Llixh0aJF\nFBUVDUv8UsV0Fj5sDvLsB57Tv/EciWqJE43U5/kFMxDRyLJ2JwhFRlKLtPDcc8+d0aypiqKk2iT2\n7t3LqlWryM7OxmKx8OUvf5ndu3fT1tYGwPz58/njH//IBx98wPr16zlw4ACzZ88elvglQZyF4+1R\ndhwfPfO/xBNd3VwvgHEQHZFEjxLE+Z8QRfrbuXMnTU1NrFixotfyXbt2cfDgQXRdx+v18r3vfY+F\nCxemHnMwc+ZMnn32WQKBALFYjCeffJKxY8eSm5sLwAcffEA8HicQCPCDH/yAkpISFi1aNCz7IAni\nLITjCWrbIyRGSZfSaI8qpvP9ghmIajitkiBE+nj22WdZvnw5Doej1/Jjx47x93//96lxDDabjccf\nfzz1+j333IPNZuPKK69k1qxZbN26lZ///Oep15944glmzJjB/PnzaW1t7fXaUJM2iLMQjicIx3Va\nOmOMybKefoVhFtNOjIM43wfKBSIn2iAsqiJtEGLU+8lPfmK4/IYbbuCGG27od73c3FweffTRfl/v\nmUyGm5QgzkIknrwoHfePjofzxBJdJQjl/B8oF4hoZEkVE+/Wd4x0COICIgniLITjCcwmheP+yEiH\nApwYKGe+AAbK9ali0kY4oBGg6zo/2FJLMHYB7rwYEZIgzkI4nmCCy0pDIDbSoQAnejGd7+Mgquo6\n2H4swLSC5AORLKYLs4qpe5+7pxwRYrhJgjgL4XiCgkwLgejo+IHGEj0m60vj62VM0/nv91v6ff23\nH3j42vyxlLntAJjVC7OKqbtrb/dDk4QYbpIgzkIknqDAYRk1d3A9G6nT+YLpDcX4nz0eYgYt7W2h\nOMfbI1xWnJVadsGWILqOT/soOf/E+U8SxFkIx3XyM810jJYShHaikTqdq5g6owl0oDUY7/PalkN+\nLivKxKKemPUy3RPiQEW7ShC+cJzq5uAIRyMuBNLN9SyE4wnyHZZRcwcXS+g4rKa0v2B2J9ymjhhF\nzhPdh9840s6L+9u45+pxvd5/oY6k7v6Oq5uD/Pyvzfz3qikjHNHI0XUdp9M57NtRVRVNGx2/97Ol\nqirxeN+brrMhCeIsdLdBdIyWBKElsJjMyUbqNO7m2p0gmjt7N/6/fsTPF2cXMsFl67U83RPiQHVX\nMX3UGiYYS9DUEeWj1jCLJg79cwBGu46Oc9Pd1+l0EgiMntkTzobT6Rz0cZIqpjPQForz/D4vkXgC\nl11F05M9iEZaVNOxqt0liJGOZuA6osngmzpOJIiYluCDphCzijL7vP9CHSjXvc917clxOK8e8o+q\nucHE+UcSxBk46ovw0gEf4biOzWzCaTWNiobq7oFypjRvg+iIauTYVZo7Yxzyhlm/o54PW0KU5ljJ\n7hoc19OFXoLotrshiDc8uCoEIU5FqpjOQCiewBuKE0/o2M0msmwqHdEEeY7Trzucunsxqab0fkZz\nZzTB5Fw7TR0x3m/qZMuhdnwhjYXjjOuYL9wEoWNSIKFDYaaFA54QCb2rqlGVez0x9OSsOgPhWIJg\nLJEauey0qqOqBJHujxztiGpMK8ig1h9hf2sYh9XEB81Blpa7DN9/oTZSxxI6Lnvynu7SsQ66v/K2\n0Mifi2Lgjvsjo/aGRxLEGQh1VfDbzMnqHKdNHRWD5SLxRHKqDUUhPjrPrzPSEdUodlopzrbydm2A\nW+eM4e9nFhhWL0FyHMRo/UENp5iWIN9hxqoqXNw1qnxsloU2qWZKa/e9UTdquy1LgjgDoVh3gkge\nLqdtdJQg/GENl92MalJIpOkF8zd7WvGHNbKsJuaVZKGgsGhiNjdc7O53HfOF2kit6bgyzGy4fjJj\ns6w4bSoTXDa8BuNHLnT/8trxUTNe6VRiWoK69ijto3R0vLRBnIHuBGHvShBZVnXEuro2dUQxKQoF\nmRZ84Tg5dpVgLJGWd9SReIL/fr8Vq6qQaVVZON5JrT+K2aSccr0LtQQR72pzKsi0kGVVWT27gAOe\nMN7QhZMgdF3vehZ7//e2WkLnvcZOWjtjqacQjlZ17VE0ffSOjpcSxBkIxxOoCtjV7gRhGrG7k99+\n4OHe12uJaQkCEY0ce/qOg2jpGvcQ1XSyrCrjcmzceWXxade7UBupo4nk5IwAGRYTS8tcuDPMtF1A\nCeKv9Z382+t1p3xPWzhOQgd/PxfdYEwbNUn1iC85M/RoqLI2IgniDITiCcZkWbFbkj9Ou9lEeIQa\nSWvbo7SF4vxxfxsOq4o5NRfTiIQzKM2dMboLC1nWMz8VTQro+qlnsNV1HT0Nk+apxDQds9q7dJWb\nYR41F7tz4YAnxDGD6fZ//tcmPuyqx/d0Vbn1N6nh64fbefLd5uEL8iwc9UVw2lQpQaSzUCxBSbYl\n1QZhM5uIjMAVWdd1jvsjLJ6Yza6GIC57svicrnMxNXfGuHRMsq9w5llUBSiKgkVVUgPGjLy438ev\ndvc/Q2w66q5i6inXbsY3yhqpH95ez0etoUF9RkMganhOH26L4AnGe/3+/nK0nT/sa+OduuSoYU8w\nWTJtjySPS/tJx6c9ovUalDmSPmwJcekYx6ho0zQiCeIMhGIJ5pZk8fGyZLdLm6oQHYFuQ913RBcX\nOtjXEkp1eUynKpd12+t5r7GTjqhGS2ecSwod/PvHx5+23eFkZpPC1/94OHVxjGkJ9jR1pl4/4gtz\nqG10PNhpqES1RJ8SRLZ99N197veET5m8z8Tdrxxj7Z+P8siOBp7f500tP9wWwW420RA48flvHguw\naEI2Nd4w0LsE4QvF+cc/HOqVbDqiWp9pXUbCvpYQnmCMxZOyJUGks3A8wbhsW2rOG5vZRHgEpto4\n3h5hXI6Nkmwr4a5pP4Cu50GkR4LY1xLiw5YQlS8e4dVDfgoyLVxcePYjDs0mBZ0T7Rg1njCPvdWY\ner0hEKO+/fxKELFE3xJE9ijpUfdeYyd7m4PoevKZ7b6uaq/ms7hTbwxECcY0/OE40XiCT05zM60g\ng9/t9XLUF6EjqtEe0ZhemNHroV0NgShLJmVz0Bsmpul4gnEKHGb84WRbQzCWSNX1Q3JqF28oPuLT\n5fzvQR+fmJpLrt086pJ8N0kQZyAUT5BhOXGoRqqK6agvQmm2laIsCwr0KEGkxxPlolqCpo4Yf63r\noLkzRlsoTmGmZUCfZTElx6O0dnZVI0Q0WoNxEl2JsiEQpaUzPiLf03CJa4k+Ja3RMmhz+7EAT73X\nQntEI6rp+MJxtITOHX88RFOHcWkipiVSPQQBHvhLPf+xs4mjvggTXMkbsr8pd7FoYjZvHGnnSFuE\niS4bxdnWVAlC13UaAlGmFWTgMJv44nMH2HrYz2S3nfZIPNVQva/lRJVXdweTls6RrZprj2iM6equ\nPBq+QyOD6ub6wgsvsGXLFhRFYfz48dx2222Ew2EefvhhWlpaKCwspLKyEocjeYe4adMmtmzZgqqq\nrF69mpkzZwJw6NAhNmzYQCwWY/bs2axevXrQOzaUQrHeCcKuKoTPcRVTMKaxaa+XbywowqKaKMyy\npBKEmiaN1PXtUayqwn5PmEvHOqjzRylyDixBfHdxKa8e8tHSVd8ciGrEEzq+sEamxYQ/rFHkTF5I\nJubaDT/j3fqOXg8iGu26n//Rk8NqIhRPdnM+22q6oRSIaFQ3h9jdkKzm84U1atujhOM6de1Ryot6\nv98TjPGD12oZ57Jy15UleIIxGgJRvKE4MU3vNYPvVROyeeAvdeTYVSbl2ih2WtnV0ImWSCYim2oi\n06qyYlou3mCc3+9rY1Kujfcbg/jDccwmhTePtpNhMXHN5Bw6IhoWk0JzZ4ySbCsjJRxPkGE2kd3V\nSL1+Rz23zBlzyq65rx3yY1MVrphwbmbwHXAJwuv18tJLL/GTn/yEBx54AE3TePPNN9m8eTMzZsxg\n/fr1VFRUsGnTJgBqa2vZsWMH69at4+6772bjxo2pXiYbN25kzZo1rF+/noaGBnbv3j00ezdEQl1f\nZDeb2XTOi6c/q2pmVlEml45Nzm5a5LTiykivRuq69igzizKxqgozxjjY+Kky8hwDSxDleXYKMy2p\nKqbugUYtnTGaOmIUZlkYl2OlLtD37jXWdYf7gy21HG4LD3yHzrFoom8JwqQoIzoup1sgojHRZeO5\nvV7sZgVfOM7BrjaBeoPvYNuRdgqzLOxq6CSe0NlZ18FlRVl8/tJ8/nIs0CtBlLltBGMJ3joeYLLb\nzsLxTtojGr/a3UJj4MQzRFZenMfNlxWyeGI2FYUO2iMa/rDGnOJM/BGNn1U1EdMSdEYTTMy1nVX1\n13AIxxPYzSYcFhMxLcFrh9o5btBDq5uW0Hn6vRa2HPafsxgHVcWUSCQIh8NomkY0GsXtdlNVVcXi\nxYsBWLJkCTt37gSgqqqKhQsXoqoqhYWFFBUVUVNTg8/nIxQKUV5eDsCiRYtS64wWoVgCe48ShNWs\nnNOqi21H2jngCfGVuWNSy26eXcD80uRkdqpJIZ4GbRC17VHG59i4KM9ORaEDkzK4O958h4VDbRH+\n7fXaVD/y1s4Yde1RirIslGZbOerr/YMLRjW+srmGHceSc/xvPdw+qBjOJaNeTJBsh2g/RT/6b798\npFej7nAIRDWumZzDUV+EMrcdX1ijxhsm32Gmvj1KJJ7gr3Unnk1wwBPmyglOirKs/Ob9Vv7fe618\nvDyHJZNymJafkZpKBJK91i4d4+CD5hCTcm3k2M3847wxvFPbQX0gSnG2pdd7v3lFMeNdNvwRDV84\nzkV5djZcP5lxOTaqm0MEohqTc+009lP1NRwSut7npjIc07GbFZSu6XuAU/auqqrvwGY28WFLKFWV\nOtwGnCDcbjcrVqzgtttuY82aNTgcDi699FL8fj8uV7K3j8vlwu9PZjuv10t+fn6v9b1eL16vl7y8\nvNTyvLw8vF4v55Ku6zxX7elzR3HcH+FbLx0hntCx9Sja282mc1LFlNB1djd08st3m7nj8qLUSG6A\nibn21EmVLm0Qte1RSrKt/PDa8VQMoGH6ZAWZFj5oCvJ2bbJNI8Ns4oAnzC93NbNoYjaXFWfxTm3y\novRKjY+GQJQX97XQFtZ4cX8bM8Y4eONIe9qMlzCqYoKuqV/66fOf0HUOesN82DK4bqen0x7RmF+a\nRabFxEV5GfhCcQ56wlw5IZsjvgj/9/f7+MkbdbxS4wOS4xkuystgwXgnb9cGWLuohEvHZqKaFH5y\n3YQ+1YIzxmRiUmB8TrJkMcFlIxCJs+N4gHE5tj7xOK0qnVGNtlCcnK6q2LklmVTVddAR1ZiSb+83\naSZ0nbteOjKkN4Hv1Hbw8PaGXstCcS1VdV2QaWHmWAeNp0gQ+1pCLJmUTZZVpXaQvcTO1IATRGdn\nJ1VVVWzYsIH/+I//IBKJ8MYbb/R5nzLIu8Th9upBHz/YUsuvdrfw5rH2Xln+d3s9HPCEsZtNvfbD\nppqInIMqpm1H2nn87QY+OS2XqfkZ/b4vWcU0dNuNaTpHBln1Ek/ofQZw1bUnG9nVIaorL8hM/vAV\n4JA3wmS3jT/s8zKvJIvFk3K4uCB5oXr7eIAN7zTy+w+9PPt+E0vLcjjmj3LFeCconPJHOZrEDBqp\nIZkg+itBtIXixBPJC/JwCkQ0XBlmrp6cw+yiTDqiGsf8EZZMyqa6OYTbYeHBZRP57z2trN/RQGcs\nQZHTwmcq8nh0xeTT3jBcVpzJgnHO1Fgkk6JQMcbBhy0hlpb1nfVXNSmMzbJS3Rwip6u338yxmexu\n7CSh65S57f1eZOvbo+z3hFPtW0OhqSPW5zwLxfVU1fVP/mYCiyZm03iKkl59IEqx08rFBRl80HRu\nJvcbcCP1nj17KCwsJCsr2cj3sY99jI8++giXy4XP50v9m5OTAyRLDK2tran1PR4Pbrcbt9uNx+Pp\ns9xIdXU11dXVqb9XrVp1Vs+l9QZj7G/p5PIJJ06oVw4d57LSbBaV5bPloJfnPzrMD68rxxuK8W59\nkOXT8nn7mL/XdmwZCaLxwT0T12q1nnb9bUfrWbNgAkvK+5+4DsCR0NGG8Bm9/72rgf/e1cCzX5yF\n1dz3HuLk2P3hON97+QD3f2Jq6v3Pvt/Iqwe8PPF3lwDJUlpde4ypxW6ybEMzBZgjU+eacjetnTHe\nbwiwYOIYarwRVs+fgLOrbeP6ijHc92Y9n54xht/taWJGUTY3zSnlfw/6ubg4l0u9MQ4HdKYUD//z\njQdLo5XsTEef7zkvy04UC21xMxEtwUX5J57CdzzYgUVVONgW67Xe/pZO/vOtWh64fuqg4wrHNHQg\n35XNN69O/t6d2xuYXpRFRWk+uRm13HblJEqcZn75WRePbz/Ox8a5yMk+84ZWpxN+uLz37+CT04tY\nXB6nJN94WvhLxjr53wMeinKzcTqzmG53UNd+lBy7manFeTR1HMWRmcWRthD5Dgs5Gclzpq4heZEO\n6pYz+p2eiQ7NhzcU7/VZ4XiCgtyc1G9mUgFsPdLR7/aaOjXKx7rIynTwu/eb+Oyc8afc5ulif+aZ\nZ1L/X1FRQUVFRZ/3DPiXmp+fz4EDB4hGo1gsFvbs2UNZWRl2u52tW7eycuVKtm7dyty5cwGYO3cu\njzzyCCtWrMDr9dLY2Eh5eTmKouBwOKipqaGsrIxt27axbNkyw20a7cTZPC/2f3a38L+H/PziU2WY\nlGQ7wiFPkB9cXUJE03nkzQAWVeFnO45ysC3C968uJRrXqW4I9NqOricvyD5/+4Dvho2edRvVEjzw\nZj2fqcgjocP+lg6+c9XY0+6jruvJuWfa2wddr9/SGeN/djeQl2HmlQ8bDJ93fHLsm6s97GnoYOv+\nRnY3dBKOJfCE4nzUEuRwk5dcu5m2cJwMs4IeDTGU1eHfmF/IY28li+7zi+1Mzy/GooUJBJIloL+b\nls3fTUvuw4HmADfNGovbHGdqfgaFNo0yl5ndx9tYWNy3muJUIvEE975ey/evHjdkJaLTbjOmEY+G\n+5wPdiXB7to2fvnOcTQdbp8/lsu7HrZ0pLmdS8c42NMU5GCDl8Ks5EVwT62P9xva8fj8WFUT7eE4\nEU2nYADdjls6Yzitaq/nH+fYVeYVZRDs7ODnK8twOc2puG+bm6xqHuyznivcKqD2+zmTcpIlB0si\nQiCQrEYsdlrRgWioE5dd5WCjl/U7GphbnMVnpieruj+obwPgw3ofv6qq54fXlAy4JuRIW5g3jgZo\n6erW7fW1Y1GTA1u1hE442EGk67Oz1Th1/r7fbySeoLkzRp0/TLYpRl6uiQc8nbx5oJGKQke/vdd6\n/k67q1G798PpdLJq1arTxj/gBFFeXs7ll1/O2rVrUVWViRMnsnTpUsLhMOvWrWPLli0UFBRQWVkJ\nQGlpKQsWLKCyshKz2cytt96aCvaWW27h8ccfT3VznTVr1kDD6peu66kqpKffa6U1GGNCjo3SHBs2\nswmbGeaWZLF4YjYP/KWeW+cUclFeslrnX5eO6/VZiqJg7apmcpgGPlvk8/u8TCvI4J3aDv6m3MXu\nhk4aAzEleEgvAAAgAElEQVT+dWstMU3nriuLTzlrZc94utshTAZ11P15uzbAxfkZZHfV0XZENNb+\n+SifnZFHts3M1sN+wwTRrbkjRlRL8ML+NuaXZrHh7UbK3Xa8oTj1gSgLxjn5v388jM1s4uNlLkoM\n6oqHQvdYijFZFlz2/qvifnDNOLKzswkEAtx33QQALi5w8HJXvfjZaOqI8V5jkAOeMNMK+t8mJM+9\nF/f7WDQxO9VuNBCnqmLa9KGXW+YUUpBp4fmP2lIJoiUYozTbysyxmXzjxcNMdtv54bXjqGuPEk/A\nQW+YiwscPLyjgT1NQb4ydwx/08+DmiLxRKqKp6dAROvz7I7/u6Ao1TZwrhLoybp/v91VTACTcm2p\nUdQl2TYOesPsbw1hU5VUgqjxhLkoz87Oug72NAVp7Ej2lHq3voN3ajtY87GxvbbTHo6TZVP73JzF\nNJ3H3m7s1dXaG4oxJsua6uLaM/G4M8zJwYDheOo3CfCnA208W+0l02LCYUnuy6cvyePBN+v5wqwC\nPt7P99XTCx+14QnGWX1Z4RkfPxjkOIgbb7yRG2+8sdeyrKws7rnnHsP3f+pTn+JTn/pUn+WTJ0/m\nwQcfHEwohnRdT30BO44H0HX4xJRc/rCvjc9Oz+M3e1p7PbXsn5eUAsnpC6b3qBN12fseJptZIRLX\nGWAvzWTD+F4vV4x38ucaH9k2lT/X+Lh17hhmjHEQieu9xl6cjqokx0JYzvD6o+s6T7zdyPxxTm6+\nrBC72cQbR9uZlp/BiqluOiIaG95u5IAnxLv1neQ5zEwryGD7sQBzJ0AkFOSHrycT2f+Zkc/sokzu\nfOkIt8wppD2i8dbxAFdNzObiggzyHWbue7Oev73o9CfyQHTf9TpPM5+T0V3gpFwbbaE4nmDsrLrc\ntnbVT1fVdZBlNdEe0cjNMPNufSd7W4JMcNnIsZkZ67SwpzHIc3s9aLrO9VNzeae2g4+VZp31XWny\nCYJ9z4kcu0qR08LyKbkkdJ1H32pI7U9LZ4xip5Xrp7n5m3IX3/zTYY60Rahrj5LnMLO/NUwgkhyz\ncP91E/jnV48za2wmhVkWtITOb/a0csM0N2Etwe3PH+LHH59AboaZo74Is4qSVVmBqNYn8U12G489\nOZcm5dr4WGlWry7qk3PtBLsG55XmWPnDPi/jcmzsa02Owu6MaRz1R/j0JXn8v/eSc3ntawlR5LTy\nTm0H248F+Md5Y1LfXUxLcOdLR/n8zHwmumxENJ0xWRZMisJ3XznK+BwbDYEoR30RMq0mvMF4KkHY\nT0q2qklhaVkOv/nAwz/06LH41/pOIvEE43oc009X5JGbYeat2sAZJYh9rSE6o2ffUHnePQ+iOyl4\ngjHueukoaxeVYFLgpzub+KfFpZQ4rVwx3snEXDuzijLJNJhFdObYTINP7i3Zk+nsD3hDIEosoWOL\nqAQicf73oJ94QueFj9pQFLh0jANFUciwnP3cRCf3ZOqMarR0xsiyqWze62X6GEfqztLT9YztN4+2\n8/IBH19fUMRrh/x8dkay+J9lS150HniznjFZFqyqwjMfeGjpjHHQF+NQayffXFjMZcWZmBQFXdd5\n9BOTKO26a7ykK8F238UtOt7BlLzhuWgUZlrItJoGdKeqmhQuHZvJe41BrpmcrD9P6Pppq+paOuMU\nO61s/tDLKwd9aDrMHOugpTPG1PwM/vBhsieepoPLrlK5sJjNH3oZn2Pj37bV8dCyiZSd5UU01k83\n18UTs5ldlNlVulBYMM7Ja4f8dEQTVNV1csuc5PmcYTExc2wm7zV2Utce5epJOTy3N9n+952rSpiY\na+e6chebPkxeoJ5+r4Xn9nopdlqJajqZVpV/2XKchJ78nd11ZQkuu0pVXcegSkbDxaqa+KfFpb2W\nXT7OyZiuarYbprlZ++ej/E2Zi3fqOvjLsXbq2pOdFybk2NB0KM2x835TkCn5GexpChKMJXhyVwuF\nmRbyM83870E/vnCcPU1BNv61mTGZFhoCUYqzrUwvdPCP88aw9s/H+Kg1xMyxDlq75okKn9R1vttN\nM/L56vOH+LtL3OQ5LIRiCfa3hvnyZYWpdbvNLs7sGtth3Lutp0PeMAOZgPq8ShC+cJzv/Pkod15R\nzGuH/BQ5Lfx4Wx2FmRY+Oz0/1RMoq+tkHsxdjk09/ViIpo4o/7WrhcqFRak7vyfeacSqKlxa4uLa\nyS5eO+TnygnZbDvSzk0z8gdc13nyWIhgTOOeV4/T3BGlzG0nqukc8UWYX5rFbz/wpJ4Dffv8IjzB\nON979RiT3fbUXSHA9DEOXj7gY93yiWSYTfzkjXquGO/k+Y/auDg/g7klJ0YhK4qSSg5GvnlFUb+v\nDdY4l43LSwfekDi7KJPtx9q5fFwWfzka4P3GYJ/nUvz7tjpWXuxOVSe1dMZYNNHJzLGZTMnP4Mev\n17LjWIBffKocV4Y59cS3bJtKSbYVd4aZX+9uYf2OBkqzrbx5tH0ACcK4ismimshznLjY3DDNzbdf\nPkqW1cQYp5WJPQadXTrWwZ/2+2jpjPF3FW7mlWQxNsuCKyN5KVg2xcU3/ngYTzBOazDG5y7N5936\nTkLxBF+aVcC4HBtZVpXGjigPvFlPguSNyMcNehKNRsXZyUfbQrLkuW7ZRGxmE5cVZ/LjbXUoCvzw\n2vGp3ozXX1LAEzuOs+NYAJMJrhjvZPOHXsblWFGV5IDPb15RzINv1jPeZeXBZROpbY/wX7ta+MKs\nguTvItvK4bYw43NsvHLQh0mBwixLnxIEQLbdzKKJ2bx0wJfs4fVWAzPGOFg2JbfPe112M8XZVvY0\ndaZmBPCG4tz/Rh33fvxEA3YwpuEJJp+REdMShqXQ/pwXCSKe0Fm/vYHdjZ1YVYU/1/j4y7EAG66f\nzPuNQZ6r9rC0LGdIt2kzm4gYpOSPWkOUu+2oJoVXD/l5p7aD3+zx8IVZBRxpC3PUFyES1znqj3Hn\nwiKaO2NcPSmbDLMpdQc7ENk2FW8wnqoOe+mAj8JMCxNdNnY3dPLw8ol85fcH+W21hxcP+GgLxfnc\npfnkZpjJzTDz1I0X9blrXjwxB5fdnKr3XHtVMYqikO2wU5F3dnVrw9ndOdum8vUFA09A80uzePNo\nO2tfPkqWVWW/J8RXImNwWpN1xMGYxju1AQozzRzwhLi2LIfWYIzpYxypktJnKvKY4LKlLrSfmNr3\nB/3g305g29F2puZn8IPXjnOkLUJpjpUvX1aIoih82BykNRhPlgZUheaOGAWZllRVY7KK6fTHcbzL\nxuJJyVJFd4mx28yxmTz9XisFmcnv9eT2k3yHhYXjndhUE3ddWYw/onH784dRTfD1BUWptobCLAs/\nvWEy0bjO60faDUvi6aB7jMSU/Ax+3tV5BUjNjbRsWj6zCiw0d8bY1xJistuO22Fmy6Hk+K6bu+r0\nVZPCx0qSx7o029ar5FLadYOQn2nm+Y/a0HT4PzPyyDAbf5fLp+TyT68cIxDRiMQTfPuqkn7jX1qW\nw8s1vlSC2HLIz96WEMd8EWZ0NR8e9kaYmGsjENFo6IilxpKcibRPEFEtwbrtDcS0BPddNwF/ONnQ\numRSNq6ubHyqhtaBMpqwr6Uzxnf+fJSbZuRz4/Q8Xj/czncWlfDoWw3MK8nila7ZG/c2h9AwMa0g\ng3+5JtkAPtg5gabmZ/BRa/IE7oho/Gl/G9++qoQipxVvMNnoVe6281y1l0c+MZGn32tldo/SglGV\nSnmenfIe1ULdF/kvzi0ZdA+U0STHbuYH14xj7Z+PcqgtzJziLG57/hCXFGSw9qoS3m8M4sow88pB\nf+rxri3BOPk92iwuLnScdlbabLuZFVOTXTXvXlxKKJbg539tIsuqkpthZldDJx82BylyWknoydl7\nV03PY+XFycbTmJYwrGIy8tWTGlK7ZVpVHl0x6ZRTc9w+/0SyzXeY+PuZyTamkxuiHRYVh4VTPj88\nnfT8DThtKvcuHU+WzcxYp5WxTmtqmpu5JVkEYwlUk5Kq1vzEFBdX9XOdGZdjI99hZuG4bMZmWVm3\nvZ72iGZYguh+/4ppufz2Aw+Pr5hs2DGg2+KJOTy1u4WXDrTx8TIXrx7yM6FrxPiM8ckZcje808i1\nk3Oobg7S0DWbwZlK+wRx/5v1qIrCt68qwaqaKMzUyXOY+dszaLgZjGQVk05zRwxXhopVNfHKQR+X\nj3Pyh31eipxWzCaFOcWZrPnYWO57o46wluCn10/mYyVZ5GRnAUM3m+S0rsEzwViC56o9XDkhO1X/\n3z3514qpbhLojMmy8s0rTv9ozwuJoih8aXYh7zd2ctXEbOr8UV464OPOl45gUmDF1Fxe2NfGNZNz\neOGjNnQYUJfQbt0DwyLxBP9R1UQ8oaPrMDbLQiCqUZhpocxt5691nT0SxNBMyGdSlF69ZE7n+mnn\nRwI4W9PH9J/wv3xZIT2/ii/O7r930GXFmZTn2cnNMFOYZaE028aexqBhG0S3GyvyuHpSzmnPsQxL\nsp3liZ1NvFvfid2ssHxKLrsaOqnzh/n+a8dZMTWX66e5aQvH+ag1RH0gyu3FZ/b7T/sEEYho/PDa\n8amit2pS+OknJ59R99DBsJtNNHfGeOztBm6Y5ub6abm8UuPn+1eXkm1T2fBOI5++xI2iJBsNk/PU\nx8i2m8m2m3E6M4b0LnxaQQY/faeRY34b6z8xyfDEWjB+9A8GG0kVhY7Uhbs028a80izebwxSH4hy\n5Xgn107OIdumoirw/Edt5DsG//O5YkI2l49z8p9VTRxpi3DH5WNJ6DAux0pE0/nSczX4wnHCsURX\n/fHonpngQnGqu/qTqSaF3IwT58r0MQ7ePNreqwR/MkVRzvgG5OJCB99YUMSdfzrC968ZR2m2lV/8\ntZk1z+3l72fms7yr/WL5lFzufuUYGWaF25eeWexpnyB+cM24Pj+a4U4OkOzm+vR7LUxw2dh+PIDT\npjLBZWNirp2lZTm8dMDH4okn2hSGo5qrp9JsKwvGO1k9u3BQd7biBJOiMKsos1fDPcCX54zhkxe7\nz+oicSqqSeGLswpoj2ipmUkB7GaFqyY4+crmg1hUhc7omVcxidFreqGDzR96T1mCOFtlbjtPfHIy\nY7MsKIrCrz9zETZHJvHwiSk5ipxW7r9uQq955U4n7RPEUP1Iz3q7qgkduHtRCbe9cJhf725hbVdj\nUrnbzmMrJqVGrZ4LJkXhriv7b8wSQyt/oANg+pFpVQ2fy/21y4v42uVFBGMaL9R0pHrgifR1cWEG\nCvQanzEUet5cqCaFDItK4KQp1c725jHtE8RIcWWY+cSUXLLtZv5h7hjGZFlS3WgVRTGcYVKIgXJY\nVG75WOl51TngQpVlVZnstvXbSD2aSIIYoM9OPzFF+XBXHwkhzi9XT8rpdcc/WkmCGKDRPo25EGL0\nSpeeYaO/jCOEEGJESIIQQghhSBKEEEIIQ5IghBBCGJIEIYQQwpAkCCGEEIYkQQghhDAkCUIIIYQh\nSRBCCCEMSYIQQghhSBKEEEIIQ5IghBBCGJIEIYQQwpAkCCGEEIYkQQghhDAkCUIIIYQhSRBCCCEM\nSYIQQghhSBKEEEIIQ5IghBBCGJIEIYQQwpAkCCGEEIYkQQghhDAkCUIIIYQhSRBCCCEMmQezcjAY\n5Kc//SnHjx9HURS++tWvUlRUxMMPP0xLSwuFhYVUVlbicDgA2LRpE1u2bEFVVVavXs3MmTMBOHTo\nEBs2bCAWizF79mxWr1496B0TQggxOIMqQfzyl79k9uzZrFu3jvvvv5+SkhI2b97MjBkzWL9+PRUV\nFWzatAmA2tpaduzYwbp167j77rvZuHEjuq4DsHHjRtasWcP69etpaGhg9+7dg98zIYQQgzLgBBEM\nBtm3bx9XX301AKqq4nA4qKqqYvHixQAsWbKEnTt3AlBVVcXChQtRVZXCwkKKioqoqanB5/MRCoUo\nLy8HYNGiRal1hBBCjJwBVzE1NzfjdDrZsGEDR48eZfLkyaxevRq/34/L5QLA5XLh9/sB8Hq9TJky\nJbW+2+3G6/Wiqip5eXmp5Xl5eXi93oGGJYQQYogMOEEkEgkOHz7MLbfcQllZGU8++SSbN2/u8z5F\nUQYVYE/V1dVUV1en/l61ahVOp3PIPv9cslqtEvsIkNhHRrrGnq5xw+ljf+aZZ1L/X1FRQUVFRZ/3\nDDhBuN1u8vLyKCsrA+Dyyy9n8+bNuFwufD5f6t+cnJzU+1tbW1Prezwe3G43brcbj8fTZ7kRo50I\nBAID3YUR5XQ6JfYRILGPjHSNPV3jhlPH7nQ6WbVq1Wk/Y8BtEC6Xi7y8POrr6wHYs2cPpaWlzJkz\nh61btwKwdetW5s6dC8DcuXPZvn078Xic5uZmGhsbKS8vx+Vy4XA4qKmpQdd1tm3bxrx58wYalhBC\niCEyqG6uN998M48++ijxeJwxY8Zw2223kUgkWLduHVu2bKGgoIDKykoASktLWbBgAZWVlZjNZm69\n9dZU9dMtt9zC448/nurmOmvWrMHvmRBCiEFR9O6+pmmquwSTbs7XoutoJ7GPjHSNPV3jhlPHXlxc\nfEafISOphRBCGJIEIYQQwpAkCCGEEIYkQQghhDAkCUIIIYQhSRBCCCEMSYIQQghhSBKEEEIIQ5Ig\nhBBCGJIEIYQQwpAkCCGEEIYkQQghhDAkCUIIIYQhSRBCCCEMSYIQQghhSBKEEEIIQ5IghBBCGJIE\nIYQQwpAkCCGEEIYkQQghhDAkCUIIIYQhSRBCCCEMSYIQQghhSBKEEEIIQ5IghBBCGJIEIYQQwpAk\nCCGEEIYkQQghhDAkCUIIIYQhSRBCCCEMSYIQQghhSBKEEEIIQ5IghBBCGJIEIYQQwpAkCCGEEIbM\ng/2ARCLB3XffjdvtZu3atXR0dPDwww/T0tJCYWEhlZWVOBwOADZt2sSWLVtQVZXVq1czc+ZMAA4d\nOsSGDRuIxWLMnj2b1atXDzYsIYQQgzToEsSLL75ISUlJ6u/NmzczY8YM1q9fT0VFBZs2bQKgtraW\nHTt2sG7dOu6++242btyIrusAbNy4kTVr1rB+/XoaGhrYvXv3YMMSQggxSINKEB6Ph127dnHttdem\nllVVVbF48WIAlixZws6dO1PLFy5ciKqqFBYWUlRURE1NDT6fj1AoRHl5OQCLFi1KrSOEEGLkDCpB\n/Nd//Rdf+MIXUBQltczv9+NyuQBwuVz4/X4AvF4v+fn5qfe53W68Xi9er5e8vLzU8ry8PLxe72DC\nEkIIMQQGnCDeffddcnJymDhxYqqqyEjP5CGEECJ9DLiRet++fVRVVbFr1y6i0SihUIhHH30Ul8uF\nz+dL/ZuTkwMkSwytra2p9T0eD263G7fbjcfj6bPcSHV1NdXV1am/V61ahdPpHOgujCir1SqxjwCJ\nfWSka+zpGjecPvZnnnkm9f8VFRVUVFT0ec+AE8TnPvc5Pve5zwGwd+9enn/+ee644w6eeuoptm7d\nysqVK9m6dStz584FYO7cuTzyyCOsWLECr9dLY2Mj5eXlKIqCw+GgpqaGsrIytm3bxrJlywy3abQT\ngUBgoLswopxOp8Q+AiT2kZGusadr3HDq2J1OJ6tWrTrtZwy6m+vJVq5cybp169iyZQsFBQVUVlYC\nUFpayoIFC6isrMRsNnPrrbemqp9uueUWHn/88VQ311mzZg11WEIIIc6Sop+qASEN1NfXj3QIA3K+\n3pmMdhL7yEjX2NM1bjh17MXFxWf0GTKSWgghhCFJEEIIIQxJghBCCGFIEoQQQghDkiCEEEIYkgQh\nhBDCkCQIIYQQhiRBCCGEMCQJQgghhCFJEEIIIQxJghBCCGFIEoQQQghDkiCEEEIYkgQhhBDCkCQI\nIYQQhiRBCCGEMCQJQgghhCFJEEIIIQxJghBCCGFIEoQQQghDkiCEEEIYkgQhhBDCkCQIIYQQhiRB\nCCGEMCQJQgghhCFJEEIIIQxJghBCCGFIEoQQQghDkiCEEEIYkgQhhBDCkCQIIYQQhiRBCCGEMCQJ\nQgghhCFJEEIIIQxJghBCCGFIEoQQQghD5oGu6PF4eOyxx/D7/SiKwrXXXsvy5cvp6Ojg4YcfpqWl\nhcLCQiorK3E4HABs2rSJLVu2oKoqq1evZubMmQAcOnSIDRs2EIvFmD17NqtXrx6SnRNCCDFwAy5B\nqKrKl770JR566CHuvfdeXn75Zerq6ti8eTMzZsxg/fr1VFRUsGnTJgBqa2vZsWMH69at4+6772bj\nxo3oug7Axo0bWbNmDevXr6ehoYHdu3cPzd4JIYQYsAEnCJfLxcSJEwGw2+2UlJTg8Xioqqpi8eLF\nACxZsoSdO3cCUFVVxcKFC1FVlcLCQoqKiqipqcHn8xEKhSgvLwdg0aJFqXWEEEKMnAFXMfXU3NzM\n0aNHmTJlCn6/H5fLBSSTiN/vB8Dr9TJlypTUOm63G6/Xi6qq5OXlpZbn5eXh9XrPeNv64f2gmsFs\nBrOl69+u/1e7/jaZUBRlKHb1xHbb26D+ePLz1R7bTcXSc7llWGLoFU/9MQgFe8eg9jwmltQyxSRN\nT/3RdR20OMRjEI8n/9PiEIt1Le96zWyB8ZMH/Z3qiQRoGmgxiMWT//bcbvf2tDjxLCd60fhhPY96\nxabrXbF1x2MUW9fyMaUozuxzuN3YiX/Hl6FkZg3Jtocn7n7in1CG4hi6uHVdh0Qi9fkJLYbu9/WO\noXv7xcVn9JmDThDhcJiHHnqI1atXY7fb+7w+lCdzdXU11dXVqb9XrVqF8j8b0eOx5A84Hk/+fzzW\n9W/XgdH1rgukBcVsBosFpceFs/v/FbMFLF3v67rIKhZrn/dhUolufRHTmBJIaD22Gz/x/10XGT0W\n6xGDORVDu9mCrpp7b7v7dUuPZeqJdTjpvd3/JnxeYju2YCos6tr3Eydh8v+jXf92xago/X5Wn+Nh\n7rv9sNWGajKhqN3Hy/i9vWLueq/RfvRdxwpmFcWkGp4HejxOdNvL6D7vieMbj6NryfOg93cRPfGd\nxGJ0aBp6LNrrXOn5Olo8lWB7nQ/m7mXW1DFXi8ah5Ob12P6JY9x7GwbnRerCr504Hl3bop/zIuht\nwTz9MtQp07u2E+v1veon/dt7O/HUsep3nZNji8fBZOr9Xao9Y+o+R1USzQ2YL1+S3J+TtxuP0alp\nEI2efrvd36eq9r/dnr9fTUOPRsi49ZuQSBjue/dvILm90x2vnscoTmfiFHEbrN9v3Cf/TnQdvc2D\neeE1vWPtdT7H4aRztVf8fb7PWK/fdsBi7f+4LV7KM888k/pNVVRUUFFR0ee3NqgEoWkaDz74IIsW\nLWLevHlAstTg8/lS/+bk5ADJEkNra2tqXY/Hg9vtxu124/F4+iw3YrgT37mPninIKB3pXRdxw0za\nfYC1ri8nlf3jvf/ueRLEYyhfroRplxput98YtBNxZNltdHRnd+2kE7fHHZN+0l1kr9jD4a7kA8p3\nHwR3/mlj6XWX0efOrPuE7zoeJ931dP+YzWYzsY7ASbFETnxez7vL1PE9aR8M7pD73GkpSu+SWHfJ\nKBaF4vEok6Z2nfhWyMjsU2pSute1nPiMjOxsgtFY1w/H4L1m8xnd1CjRCFrVX1KJXzmTkluPkmXq\n/ap6xjdRWSaFwK83EHtvZ98Sc/cxsmeA6ux7LE4uZaunic3cFVs/SbrP8Ti4j9jh/f1uN8OZTSgW\nO4PtWrq2e2alXF3X0Tc/Rccv1p9Ugrf0+Y4NS/cnHy+LpdcxyHBmE4pG+4n7pHPnLOIG4L2dRGsP\ngyOrdy2E2dL7fEptt/e5rHTFq/TYr57fl9PpJBAI9Lv5VatWnTbEQSWIJ554gtLSUpYvX55aNmfO\nHLZu3crKlSvZunUrc+fOBWDu3Lk88sgjrFixAq/XS2NjI+Xl5SiKgsPhoKamhrKyMrZt28ayZcsG\nE1YfikkFqwpW29mtN9QxmNTkxQwwOZ0oltPHM9SVCYqiJO9yVBUY2PGwOZ1ET3HiDYVTJrJEAgqL\nBlQ6NTudKEMQu2K1oSy8ZtCfczZMmVmYPv/Vc7rNM6WUTUMpm9bv6xank/AwnDOKoqB86gvwqS8M\n+WfD8MUNoMychzJz3rB89lAZcILYt28fb7zxBuPHj+fb3/42iqJw0003sXLlStatW8eWLVsoKCig\nsrISgNLSUhYsWEBlZSVms5lbb7019QO/5ZZbePzxx1PdXGfNmjU0eyfS1mASmRBiaCh6d1/TNFVf\nXz/SIQzI6Yp/o5nEPjIk9nMvXeOGU8defIaN1NKdRQghhCFJEEIIIQxJghBCCGFIEoQQQghDkiCE\nEEIYkgQhhBDCkCQIIYQQhiRBCCGEMCQJQgghhCFJEEIIIQxJghBCCGFIEoQQQghDkiCEEEIYkgQh\nhBDCkCQIIYQQhiRBCCGEMCQJQgghhCFJEEIIIQyl/SNHhRBCDI+0LkE888wzIx3CgEnsI0NiHxnp\nGnu6xg1DE3taJwghhBDDRxKEEEIIQ2mdICoqKkY6hAGT2EeGxD4y0jX2dI0bhiZ2aaQWQghhKK1L\nEEIIIYaPJAghhBCGzCMdwEDt3r2bJ598El3Xufrqq1m5cuVIh9Sv22+/HYfDgaIoqKrKj3/8Yzo6\nOnj44YdpaWmhsLCQyspKHA7HSIfKE088wbvvvktOTg4PPPAAwClj3bRpE1u2bEFVVVavXs3MmTNH\nVey//e1vefXVV8nJyQHgpptuYtasWaMudo/Hw2OPPYbf70dRFK699lqWL1+eFsf+5NiXLl3KsmXL\n0uLYx2Ixvv/97xOPx9E0jcsvv5wbb7xx1B/3/uIe8mOupyFN0/Svfe1renNzsx6LxfRvfetbem1t\n7UiH1a/bb79dDwQCvZb9+te/1jdv3qzruq5v2rRJf+qpp0YitD4+/PBD/fDhw/qdd96ZWtZfrMeP\nH9fvuusuPR6P601NTfrXvvY1PZFIjEjcum4c+zPPPKM///zzfd472mJva2vTDx8+rOu6rodCIf3r\nX4bSAgkAAAPWSURBVP+6XltbmxbHvr/Y0+XYh8NhXdeT15Xvfve7+oEDB9LiuBvFPdTHPC2rmGpq\naigqKqKgoACz2cwVV1zBzp07Rzqsfum6jn5SX4CqqioWL14MwJIlS0ZN/NOmTSMzM7PXsv5iraqq\nYuHChaiqSmFhIUVFRdTU1JzzmLsZxQ70OfYw+mJ3uVxMnDgRALvdTklJCR6PJy2OvVHsXq8XSI9j\nb7PZgORduaZpqRhH+3E3ihuG9pinZRWT1+slLy8v9bfb7R7RE+x0FEXhRz/6ESaTiaVLl3Lttdfi\n9/txuVxA8gfm9/tHOMr+9Rer1+tlypQpqfe53e7UhWE0eemll9i2bRtlZWV88YtfxOFwjOrYm5ub\nOXr0KFOmTEm7Y98d+0UXXcS+ffvS4tgnEgm+853v0NTUxHXXXUd5eXlaHHejuHft2jWkxzwtE0S6\n+eEPf0hubi7t7e386Ec/ori4uM97FEUZgcgGJp1ive666/jMZz6Doij85je/4Ve/+hVr1qwZ6bD6\nFQ6Heeihh1i9ejV2u73P66P52J8ce7oce5PJxH333UcwGOSBBx7g+PHjfd4zGo/7yXHX1tYO+TFP\nyyomt9tNa2tr6m+v14vb7R7BiE4tNzcXgOzsbObNm0dNTQ0ulwufzweAz+dLNSqNRv3FevL34PF4\nRt33kJ2dnfpxX3vttamS5miMXdM0HnzwQRYtWsS8efOA9Dn2RrGn07EHcDgcXHLJJezevTttjjv0\njnuoj3laJojy8nIaGxtpaWkhHo/zl7/8hblz5450WIYikQjhcBhI3mG9//77jB8/njlz5rB161YA\ntm7dOqriP7nNpL9Y586dy/bt24nH4zQ3N9PY2Eh5eflIhJxycuzdP3KAt99+m3HjxgGjM/YnnniC\n0tJSli9fnlqWLsfeKPZ0OPbt7e0Eg0EAotEoe/bsoaSkZNQfd6O4i4uLh/yYp+1I6t27d/PLX/4S\nXde55pprRm031+bmZu6//34URUHTNK666ipWrlxJR0cH69ato7W1lYKCAiorKw0bWM+19evXs3fv\nXgKBADk5Oaz6/+3asQmEQBRF0ffBFkyNbMHEMiYQbMA2bELrsAMjWxgwFAvRzTb6brTiCPdU8Pgg\nFwabRlVVXW6dpknzPCvLssd/FfW2xxi1bZvMTHmeq+u679tyStvXdVXf9yqKQmYmM1PbtirLMvnb\nX21fliX52+/7rnEcdRyHzvNUXdcKIfz8PlPYfrV7GIa/3vy1gQAA3OuVT0wAgPsRCACAi0AAAFwE\nAgDgIhAAABeBAAC4CAQAwEUgAACuD8RgyWy0HCrZAAAAAElFTkSuQmCC\n", "text/plain": [""]}, "metadata": {}, "output_type": "display_data"}], "source": ["%monplot marathon.txt"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Sans pr\u00e9traitement, cela n'a pas toujours un sens. Mais cela devient pratique d\u00e8s qu'il faut automatiser la cr\u00e9ation d'un rapport \u00e0 partir de donn\u00e9es qui se pr\u00e9sentent toujours sous le m\u00eame format. D'une mani\u00e8re g\u00e9n\u00e9rale, cela revient \u00e0 r\u00e9duire la syntaxe des t\u00e2ches r\u00e9p\u00e9titives."]}, {"cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": []}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.1"}}, "nbformat": 4, "nbformat_minor": 2}