{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Week 3 Lecture 2b:More on sorting" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "%run \"boaz_utils.ipynb\"" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Time complexity review" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "__Algorithm:__ A receipe for instructions how to compute __output__ from __input__\n", "\n", "__Program:__ Coding up the algorithm in a __programming language__\n", "\n", "__Running Time:__ Depends on __algorithm__, __language__, __computer__" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "If __input is longer__ program is __slower__.\n", "\n", "__O notation:__ By how much slower? Ignore __programming language__ and __computer__, focus on the __algorithm__" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true, "jupyter": { "outputs_hidden": true }, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "def f(L):\n", " x = 0\n", " for i in range(len(L)):\n", " if L[i]> 100:\n", " x += L[i]\n", " return x" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 3 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "timer(f,genintlist(2000));" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def g(L):\n", " x = 0\n", " for i in range(len(L)):\n", " for j in range(len(L)):\n", " x += L[i]-L[j]\n", " return x\n", "g([243,45,90,23,54,758])" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdYAAAEjCAYAAACPRSDwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3Xd4VcXWwOHfSkILNQRUpElXei+CSpWiFBEUUEREQVAv2C5guTGIBa/4KV5BQZCidBGQjggqSBGpgSCE3qS3UFLX98fZwQPkpECSk7Le5zlPzpk9s/c6l2tWZvbsGVFVjDHGGJMyfLwdgDHGGJOZWGI1xhhjUpAlVmOMMSYFWWI1xhhjUpAlVmOMMSYFWWI1xhhjUpAlVmOMMSYFWWI1xiSbiDQQkdUi8ouITBGRbN6OyZj0whKrMeZm7AeaquoDwB6gvZfjMSbdsMRqTCJEpIKIbBSRCyLyLxHZJiKNvR2XN6nqEVW97HyMBmK9GY8x6YklVpNhiMg+EbksIuEickZE5otI8RQ4Z/NEqv0bWKGqeVV1hKpWUtUVyWh//TVfFJH1IhIhIuPjOV5QRH4QkYsisl9EuiVwrvDrXjEi8nly4rkVIlIKaA3MS6trGpPeWWI1GU1bVc0DFAGOAWmRREoC21LwfEeAocA4D8e/ACKB24EngFEiUim+iqqaJ+7l1L8MzLi+nrjUiKe8moj43syXEJF8wASgu6pG3sw5jMmMLLGaDElVrwAzgYpxZSJyp4h8LyInRGSviPzL7dhAETnsDOf+JSLNRGQSUAL40ent/fv664jIz0AT4H9OnfJxvdSktPcQ+yxVnQ2ciud6uYFHgbdVNVxVVwJzge5JOHUn4DjwWzzH7gKWiEgrt2vdBywD7oknjuedEYEvROSkiBwRkRZux/2AKcA7qvqXp4BE5E0RGeX2OUBEokQkp/P5hn+XJHxPY9I1S6wmQxIRf+BxYI3z2Qf4EdgMFAWaAQNEpKWIVABeBOqoal6gJbBPVbsDB3B6war60fXXUdWmuBLVi06dnW7H4m0vIiNFZORNfrXyQIz7dZzvFG+P9To9gIkaz5ZVqroXV8L+TkSaiEhdYBbwpKqGxHOuqkADXEn9NuArYKDb8a5APeA/IrJCRB73EFMVYJPb5+rAX6p6xdO/SxK+pzHpmp+3AzAmmWaLSDSQB1fvrKVTXgcorKpDnM97RGQM0AV4D8gBVBSRE6q6LzUDVNV+t9A8D3DuurJzQN6EGolICeABoFcCcf3q3K+dCcQAvVV1kYfqVYEPVXWxc/7twH1u55oETEr4qwCuxPp/bp+r4/pDASeGNPt3MSatWI/VZDQdVLUArl/ILwK/iMgduO6D3ikiZ+NewBvA7aoaBgwA3gGOi8hUEbnTS/EnJhzId11ZPuBCIu2eAlY6PdOEHMA1i1dIuHdYBdcIQJzKwPZEzn0NEckOlAG2uhVXw+nBZrB/F2OSzBKryZBUNUZVZ+Hq9TQCDgJ7VbWA2yuvqrZx6k9W1Ua4ErACw+JOdauh3GL76+0E/ESknFtZNRKfPPUUrolEHolIGWApriHd54EF8U2Kcmb6+gHu905rcO2QblJUBA6r6iXnvAI05p8ea0L/LsZkWJZYTYbkzHJtDwQAocA64LwzGSaXiPiKSGURqeM8h9pURHIAV3DNnI1xTnUMKH0LoSS7vYj4OZN3fAFfEcnpTAZCVS/iuvc5RERyi0hDXIsveBx2FZF7cd1XvmE2sFudO3FNVHpPVcer6vfAa7gmNF0ff1Vgq6q6P5taA7eEmERVgNtEpIyI5ALexZVA9zkxJfTvYkyGZYnVZDQ/ikg4cB7XvdMeqrpNVWOAtrju4e0FTgJfA/lxDRt/6JT9jWsyzhvO+T4A3nKGj1+7iXhuaC8iX4rIlwm0eQtXEhkEPOm8f8vteD8gF657yFOAvqq6zTn3QhF549rT0QOYpaoJDRefAl5V1aszdFX1O+dax6+rWxW33qmIBAJ3APFNckpIFWAxsBAIw/VHyB7gTed4Qv8uxmRYEs8EQmOMuWUishD42ukdG5NlWI/VGJNaquAapjcmS7EeqzEmxYlIAK6h39yqGuXteIxJS5ZYjTHGmBRkQ8HGGGNMCrLEaowxxqQgS6zGGGNMCrLEaowxxqQgS6zGGGNMCrLEaowxxqQgS6zGGGNMCrLEaowxxqQgS6zGGGNMCrLEaowxxqQgS6zGGGNMCvLzdgDplYioj4/93WGMMckRGxuLqoq34/AmS6we+Pj4EBMT4+0wjDEmQxGRWG/H4G3WJTPGGGNSkCVWY4wxJgVZYjXGGGNSkN1jTYaoqCgOHTrElStXvB1KmsuZMyfFihUjW7Zs3g7FGGPSNVFVb8eQLvn6+ur1k5f27t1L3rx5CQwMRCTrTHpTVU6dOsWFCxcoVaqUt8MxxqRjIhKrqr7ejsObbCg4Ga5cuZLlkiqAiBAYGJgle+rGGJNclliTKasl1ThZ9XsbY0xyWWI1xhgDwJZV66n3yAr2HP/b26FkaJZYM5CzZ88ycuRIAI4cOUKnTp28HJExJrOIioKVj4zj29m92LnT5t7cCkusGYh7Yr3zzjuZOXOmlyMyxmQW/fvH8sKJkfyrW0daNSri7XAyNHvcJgMZNGgQu3fvpnr16pQrV47Q0FBCQkIYP348s2fPJiYmhpCQEF599VUiIyOZNGkSOXLkYMGCBRQsWJDdu3fzwgsvcOLECfz9/RkzZgx33323t7+WMcbLdjR6lpKrCsK9hej5Rh1vh5PhWWK9SQMWDWDT35tS9JzV76jOp60+9Xj8ww8/JCQkhE2bNrFv3z4efvjhq8dCQkLYuHEjV65coWzZsgwbNoyNGzfy8ssvM3HiRAYMGEDv3r358ssvKVeuHGvXrqVfv378/PPPKfodjDEZS9jrX1Fh1Vie9c3PRw/50b7CYW+HlOFZYs0kmjRpQt68ecmbNy/58+enbdu2AFSpUoUtW7YQHh7O77//TufOna+2iYiI8Fa4xph04O8f/6DUx/2Ixo/6vX3pXvNJcvjl8HZYGZ4l1puUUM/SG3Lk+Oc/Bh8fn6uffXx8iI6OJjY2lgIFCrBpU8r2so0xGdPlo2fJ16EJPsTy3SsvEpZvBL1q9PJ2WJmCTV7KQPLmzcuFCxduqm2+fPkoVaoUM2bMAFyrKW3evDklwzPGZBCqsPr+f+Mfe5Fdjw7k47LLqX1nbarcXsXboWUKllgzkMDAQBo2bEjlypV5/fXXk93+u+++Y+zYsVSrVo1KlSoxZ86cVIjSGJPeDR8OzcJGM7vTJM599ihbj2+13moKsrWCPYhvreDQ0FDuueceL0XkfVn9+xuTGYQ+/xn/+aoo0rkT06ZB3/nPM3HzRI6+epT8OfPf8vltrWC7x2qMMVnGwUkrqPDVy4z38YexHbkcfYUpIVPoVLFTiiRV42JDwcYYkwWc3/U3t/Vo5Xo/aS658/owc/tMzkect2HgFGaJ1RhjMrnY6Fgiq9Ymu0aw59n3KdKtKQBjN46lbMGy3F/yfi9HmLlYYjXGmExuQ53eFLpymL2V21F2zCAAdp3axa/7f+WZ6s/Y7lUpzO6xGmNMJjZzJnTfNIJFFXy4f9OXV8vHbRyHj/jQo3oPL0aXOVmP1RhjMqndXy3l3e5/UaOBP/U3j0Z8Xb/yo2OjmbB5Am3KteHOvHd6OcrMxxJrBvfpp59y6dIlb4dhjElnTm/cT4nnH+L3iFp8PyMWt8XZWLhrIUfDj3pl0pKIjBOR4yIS4lb2jogcFpFNzquN27HBIhImIn+JSEu38lZOWZiIDHIrLyUia0Vkl4hME5HsTnkO53OYc/yu1PqOllgzOEusxpjrRV2MxKdebfyI4vhrH1Gk6LW/6sduHMvtuW/noXIPeSO88UCreMr/T1WrO68FACJSEegCVHLajBQRXxHxBb4AWgMVga5OXYBhzrnKAWeAuL8eegFnVLUs8H9OvVRhiTUDuXjxIg899BDVqlWjcuXKBAcHc+TIEZo0aUKTJk0AWLJkCQ0aNKBmzZp07tyZ8PBwAO666y4GDhxI3bp1qVu3LmFhYQDMmDGDypUrU61aNe6/32YGGpMZHC7VkAJRJ9nT4AlKfdTvmmN/h//NvJ3zeKraU2TzzZbmsanqr8DpJFZvD0xV1QhV3QuEAXWdV5iq7lHVSGAq0F5cs7CaAnGbVU8AOrida4LzfibQTFJp1pZNXrpJAwZASq9nX706fJrA2v6LFi3izjvvZP78+QCcO3eOb775huXLl1OoUCFOnjzJ0KFD+emnn8idOzfDhg3jk08+4T//+Q/gWi943bp1V7eRmzdvHkOGDGHx4sUULVqUs2fPpuwXMsakuS2N+lH1xHqOFqpCmd+/veH4xM0TidEYnqnxjBeiS9CLIvIUsB54VVXPAEWBNW51DjllAAevK68HBAJnVTU6nvpF49qoarSInHPqn0zpL2I91gykSpUq/PTTTwwcOJDffvuN/PmvXSllzZo1bN++nYYNG1K9enUmTJjA/v37rx7v2rXr1Z+rV68GoGHDhjz99NOMGTOG65dwNMZkLPPnw2Or+rMjoD637193w3FVZezGsTQs3pC7C92dWmGIiKx3e/VOQptRQBmgOnAUGB53rnjq6k2UJ3SuFGc91puUUM8ytZQvX54///yTBQsWMHjwYB588MFrjqsqLVq0YMqUKfG2dx/1iHv/5ZdfsnbtWubPn0/16tXZtGkTgYGBqfcljDGpYue3a3mmTyWK1axA8V9X4+N/Y51VB1ex89ROBjUcdOPBlKOqWjuZDY7FvReRMcA85+MhoLhb1WLAEed9fOUngQIi4uf0Wt3rx53rkIj4AflJ+pB0sliPNQM5cuQI/v7+PPnkk7z22mts2LDhmq3k6tevz6pVq67eP7106RI7d+682n7atGlXfzZo0ACA3bt3U69ePYYMGUKhQoU4ePAgxpiM5dhvf1GqeyM2RFTkxx8hd+74643dOJY82fPQuVLntA0wESJSxO3jI0DcjOG5QBdnRm8poBywDvgDKOfMAM6Oa4LTXHXtKrMc6OS07wHMcTtX3EO7nYCfNZV2oUnTHquIvAw8i6v7vRXoCRTBdeO5ILAB6K6qkSKSA5gI1AJOAY+r6j7nPINxzfCKAf6lqoud8lbAZ4Av8LWqfuiUl4rvGmnxnVPS1q1bef311/Hx8SFbtmyMGjWK1atX07p1a4oUKcLy5csZP348Xbt2JSIiAoChQ4dSvnx5ACIiIqhXrx6xsbFXe7Wvv/46u3btQlVp1qwZ1apV89r3M8Yk38Wj58nduC5+RBPzxn8o4eGx1PMR55m+bTrdKncjT/Y8aRukGxGZAjQGConIISAIaCwi1XHlhn1AHwBV3SYi04HtQDTwgqrGOOd5EViM6/f9OFXd5lxiIDBVRIYCG4GxTvlYYJKIhOHqqXZJtS+pqmnywnXjeC+Qy/k8HXja+dnFKfsS6Ou87wd86bzvAkxz3lcENgM5gFLAblz/w/o670sD2Z06Fd2udcM1Enr5+Pjo9bZv335DWUZRsmRJPXHixC2dIyN/f2Myo5ioGD3qX0oVdHfbfyVYd/T60co76OqDq1M1JiBG0yivpNdXWg8F+wG5nPFtf1w3qZM7NTolp18bY0yGtatcG+64tJcD5ZtReu5nCdYdu3EsFQtXpF7RemkUXdaVZolVVQ8DHwMHcCXUc8CfJHFqtFM/0L38ujaeyhOafp1l7Nu3j0KFCnk7DGNMCvn6a3hj37Psu60OxbcvSbDutuPbWHt4Lb1q9LIF99NAmiVWEQnA1dssBdwJ5Ma1asb1EpsanZLTr6+PsXfcFHFNnXvaxhhzy9aM2ULfPrGEP9iJYofXXV0D2JOxG8eSzScb3at2T6MIs7a0HApuDuxV1ROqGgXMAu7FmRrt1IlvajTXTY32NP3aU/nV6dfxXOMaqjpaVWuram37q84Ykx7t+3YldXtX57ecLZg+HfwSmYIaGRPJpC2TaFehHYVzF06bILO4tEysB4D6IuLv3PdshmumV3KnRqfk9GtjjMkwTm06QJHuzQEo9b9XuW6NmHjN/WsuJy+d9MqC+1lVWt5jXYtrAtEGXI/a+ACjcU2NfsWZAh3ItVOjA53yV4BBznm24Zrlux1YhDP92rmHGjf9OhSYrtdOv47vGsYYkyFcOXsF3zo1yU4EB18Yxu092yTeCNcwcLF8xXiwzIOJVzYpQuxeYvx8fX31+iX+QkNDueeee7wUkfdl9e9vjLeowoGCVSl5dit773+KUr9MSLwRcPDcQUp+WpI373uTd5u+m8pRuohIrKr6psnF0ilb0jALiImJwdc3S///3JgM7d13IdvZh3iiZIEkJ1WA8ZvGoyg9a/RMxejM9WxJwwxm4sSJVK1alWrVqtG9e3eefvppZs6cefV4njyuFVVWrFhBkyZN6NatG1WqVGHgwIGMHDnyar133nmH4cNd61z/97//pU6dOlStWpWgoKC0/ULGmATN/mw/QUGw46kPKL731yS3i9VYxm0aR9NSTSkdUDoVIzTXsx7rrWjc+Mayxx6Dfv3g0iVoE889kKefdr1OnoROna49tmJFgpfbtm0b7733HqtWraJQoUKcPn2aV155xWP9devWERISQqlSpdi4cSMDBgygXz/X3ozTp09n0aJFLFmyhF27drFu3TpUlXbt2vHrr7/a3qzGpAOhQ2fS7u3HmFz0VTqO/i/JeVhh+d7l7Du7j/eavpd6AZp4WWLNQH7++Wc6dep0daGHggULJli/bt26lCpVCoAaNWpw/Phxjhw5wokTJwgICKBEiRKMGDGCJUuWUKNGDQDCw8PZtWuXJVZjvGzf9LWUf/txFKH1hMfJkSN57cduHEuBnAV45O5HUidA45El1luRUA/T3z/h44UKJdpDvZ6q3rBqip+fH7GxsVePR0b+s7dA7uu2uOjUqRMzZ87k77//pkuXLlfbDB48mD59+iQrFmNM6jm2Zi9FHn8AH2I5NmIadzRL1i5snLl8hlmhs3i25rPkypYrlaI0ntg91gykWbNmTJ8+nVOnTgFw+vRp7rrrLv78808A5syZQ1RUlMf2Xbp0YerUqcycOZNOzjB0y5YtGTduHOHh4QAcPnyY48ePp/I3McZ4cv5IOP4Na5CdCA71/5g7XnosWe0joiN4Y9kbRMRE2LOrXmI91gykUqVKvPnmmzzwwAP4+vpSo0YNhg0bRvv27albty7NmjW7oZd6ffsLFy5QtGhRihRxbX/44IMPEhoaenV/1jx58vDtt99y2223pcl3Msb8IzISOj7pzxtaizJtK1Ly01eT1X7lgZU89+Nz7Di5g+drPU+NIjVSKVKTEHuO1QN7jvVGWf37G5OaYqNjGdh2Ox8vqsz48dCjR6JNrjofcZ7BPw1m5PqRlMxfkq8e/oqWZVumWqwJsedYrcdqjDHpwl/lHmbYvkVU7/UTT/RomuR283bOo+/8vhw+f5gB9QbwbtN3vbqRubHEaowxXrf53r5U27eQ03mK021U0mbkHws/Rv9F/Zm2bRqVb6vMzM4zqVfM9lpNDyyxJlN8M3OzArtlYEzq2NT1Q6qt/pLwbAXIfyAEyZbwr2VVZeLmiby8+GUuRl1kaJOhvN7wdbL7Zk+jiE1iLLEmQ86cOTl16hSBgYFZKrmqKqdOnSJnzpzeDsWYTGXLu3OoNnUwkZITv22b8Q3Il2D9vWf20mdeH5buWUqjEo0Y03YMdxe6O42iNUllk5c8iG/yUlRUFIcOHeLKlSteisp7cubMSbFixciWLZu3QzEmU9i8Gdo2PM1P0Q9w+4JvyN/U87Oq0bHRjFg7greXv42v+DKs+TD61O6Dj6S/JyZt8pIlVo/iS6zGGJMSDi3fxSOPZ+do9pKsXg3Fi3uuu/nvzTz747OsP7KetuXbMvKhkRTLVyztgk0mS6y2QIQxxqSpUztPEtCsJitOVGTRvGiPSTU6Npqg5UHUHlObA+cOMK3TNOZ0mZOuk2pSiMg4ETkuIiFuZf8VkR0iskVEfhCRAk75XSJyWUQ2Oa8v3drUEpGtIhImIiPEuT8nIgVFZKmI7HJ+Bjjl4tQLc65TM7W+oyVWY4xJI5fPXIHKlfHXcE51eYHK1eOf5rL/7H4eGP8AQ34dQrcq3Qh9IZTHKj2WWeZ2jAdaXVe2FKisqlWBncBgt2O7VbW683rerXwU0Bso57zizjkIWKaq5YBlzmeA1m51ezvtU4UlVmOMSQPRkbGcKlGDwKhjHGrQmRJTPoq33sztM6n+VXW2HtvK5I6TmdBhAgVzJbzhRkaiqr8Cp68rW6Kq0c7HNUCC3XIRKQLkU9XV6rqfORHo4BxuD8RtWjvhuvKJ6rIGKOCcJ8VZYjXGmFSmCiHlO1IsfAdH72pA8d+n31DnUtQl+vzYh84zOlM+sDybnt9E1ypdvRDtLRMRWe/26p3M9s8AC90+lxKRjSLyi4jc55QVBQ651TnklAHcrqpHAZyft7m1OeihTYqyx22MMSaVDR0Ks/e/xfQS5yize9kNx7cc20KXmV3YcXIHgxoOYkiTIWTzzbAz8FVVk7cdj0NE3gSige+coqNACVU9JSK1gNkiUgmIb0w8sZm4N9PmpliP1RhjUtHSJycw5D+RVH6qNqX3LQeff37tqipfrPuCumPqcubKGZZ0X8IHzT/IyEn1polID+Bh4AlneBdVjVDVU877P4HdQHlcvU334eJiwBHn/bG4IV7nZ9x2XYeA4h7apChLrMYYk0r+7PwBzb97mo2BDzJ2LLjPPTp16RSPTHuEFxe+SLPSzdjy/Baal27uvWC9SERaAQOBdqp6ya28sIj4Ou9L45p4tMcZ4r0gIvWd2cBPAXOcZnOBuC0MelxX/pQzO7g+cC5uyDjFv489xxo/e47VGHMrNvQZRY3R/Yj0yYlu30HOCiWvHvtl3y88MesJjl88zkctPqJ/vf6ZZcZvos+xisgUoDFQCDgGBOGaBZwDOOVUW6Oqz4vIo8AQXMPDMUCQqv7onKc2rhnGuXDdk31JVVVEAoHpQAngANBZVU87Cfh/uGYPXwJ6qur6lPzuV7+jJdb4WWI1xtyszYOmUHVYN6IlG5FrN5K7TiXA9WzqkF+GMPTXoZQLLMeUR6dQs0iqPU7pFbZAhCVWjyyxGmNuxu9LwqnTMgBBubR0Ffmau3ac2X92P91mdeP3g7/Ts3pPRrQekSm3d7PEarOCjTEmxWzYAK0756H/bf/j5f+VJsBJqjO2zaD3vN7ExMYwuePkjPoYjUkiS6zGGJMCdv+whS1dR1Lg9i95bmUfAorDyUsneWnhS0wNmUrdonWZ8ugUSgeU9naoJpXZULAHNhRsjEmqgyt2U7hJJXIQwYHZGynZvjqzQmfRd35fzlw+w38e+A8DGw7MEo/R2FCw9ViNMeaW/L3hCAWbViMHERx9+SNytyhG1++7MjVkKjWL1GRp96VUvb2qt8M0acgSqzHG3KSTYWfJVacS/nqRIz0Gs+65sjw/shJnLp/h3SbvZpleqrmWLRBhjDE34fx5mNfoA/LFnmVvm5681nYvHad3pGjeoqzvvZ637n/LkmoWZT1WY4xJpkuXoG1b+P3UMOT5wvy7zH85s/0MQxoPYVCjQZZQszhLrMYYkwyRV2I5VKQuVc73IHoAPF3gdarnrW73Us1VlliNMSaJYqJi2V+0AeXP/0nXwL/5quAxgu8PZnCjwdZLNVdZYjXGmCSIjYVtJVtS9fQ6QnIH8uK7gax/ZD7V7qjm7dBMOpOmk5dEpICIzBSRHSISKiINRKSgiCwVkV3OzwCnrojICBEJE5EtIlLT7Tw9nPq7nK2G4sprichWp80IZ9FlPF3DGGOSIjYWNt31MFWP/sTeHAX4fnY/1vVeb0nVxCutZwV/BixS1buBakAoMAhYpqrlgGXOZ4DWuLYIKgf0BkaBK0ni2g2hHlAXCHJLlKOcunHtWjnlnq5hjDEJio2FF/rGEnhwKwez5+fvrT8Q1DxDb0RuUlmaJVYRyQfcD4wFUNVIVT0LtAcmONUmAB2c9+2BieqyBijgbFrbEliqqqdV9QywFGjlHMunqqudTXInXneu+K5hjDEeqcK/nz3Nl6N9KN/gOYZPfpwG5Rp7OyyTzqXlPdbSwAngGxGpBvwJ9Aduj9tsVlWPishtTv2iwEG39oecsoTKD8VTTgLXMMaYeKnCpjKP8t7eeWy6733WtxnO263DvB2WyQDScijYD6gJjFLVGsBFEh6SjW/XX72J8iQTkd4isl5E1tsaysZkXaqwsWwnauydxcVcBVjV6DWCG79DoH+gt0MzGUBaJtZDwCFVXet8nokr0R5zhnFxfh53q1/crX0x4Egi5cXiKSeBa1xDVUeram1Vre3MezLGZDGqsLH8Y9Tc8z3nct9B0+B8lLyzAv3q9PN2aCaDSLPEqqp/AwdFpIJT1AzYDswF4mb29gDmOO/nAk85s4PrA+ec4dzFwIMiEuBMWnoQWOwcuyAi9Z3ZwE9dd674rmGMMVepwq9VX6Bm2AzO+9/BxDn92XwpjE9afmKTlUySpem2cSJSHfgayA7sAXriSu7TgRLAAaCzqp52kuP/cM3svQT0VNX1znmeAd5wTvueqn7jlNcGxgO5gIXAS6qqIhIY3zUSitW2jTMma1GF/v1hyeehLL2tOzm3zKT8+BrUK1qPhU8sxEaxksa2jbP9WD2yxGpM1qEK8+8dyuNrBtB7QB4++QReXPACX/35FVv6bqFi4YreDjHDsMRqKy8ZY7I4VVh/z5M8/Nd3/FFyFfd8spBtJ0L48s8v6Ve7nyVVk2y2bZwxJstShT8q9aDOX99xIVdh7tk8DVBeWfwK+XLk453G73g7xExHRMaJyHERCXEry1Qr8FliNcZkSaqwrnJP6oZO5ELOwuQ5vBPJn4/5u+azdM9S3nnAHq9JJeP5Z1W8OJlqBb5kJ1YJltwSLFl6/NwYk7Gpwvu9dlNn+wTCcwaS58hOJKAAkTGRvLrkVSoE2uM1qUVVfwWunzyaqVbgS/QeqwSLD9AFeAKoA0QAOSRYTgALgNEapLtSK0BjjElJqvD66zD8mzLc1uZ7nv22CRJUpxfBAAAgAElEQVRQAICRf4xk56mdzO823x6vuXkiIuvdPo9W1dGJtMlUK/AlZfLScuAnYDAQokEaCyDBUhBoAnwowfKDBum3qRWkMcakhNhY1z3VxjtOEvHifJ4d8QhxT9GcvHSS4F+CaVmmJa3LtvZuoBmbqmrtFDpXmq/AlxKSkliba5BGXV+oQXoa+B74XoLF/rQzxqRrMTGwuXQH6h2YQ3iuQjz00RVEcl49HrQ8iAsRF/ik5Sf2zGraOyYiRZyeZFJX4Gt8XfkKkrACXzzXSHGJ3mONS6oSLJ0lWPI679+WYJklwa4ZWvElXmOMSS8ir8SyvUhTah6Yw/m8Rcl9dDeS65+kGnLc9XhN39p97fEa78hUK/AlZ/LS2xqkFyRYGuH6EhNwZmgZY0x6dfky7L2jAVVOLOdswdLkOx6G5M939biq6/Ga/Dny2+M1aUBEpgCrgQoickhEegEfAi1EZBfQwvkMrnk8e4AwYAzQD8BZOe9d4A/nNcRtNb2+uFb4CwN241qFjwSukeKSs0BE3DJEDwGjNEjnSLC8k/IhGWNMyrhwAdq1g17nylHozssE7t8Aftf+2ot7vOazVp/Z4zVpQFW7ejjULJ66Crzg4TzjgHHxlK8HKsdTfiq+a6SG5PRYD0uwfAU8BiyQYMmRzPbGGJNmTh+5wrDqU/jtN/D57lsCD2+5Iam6P17Tt3ZfL0VqMpvkJMbHcI1rt9IgPQsUBF5PlaiMMeYWHNt1nuiSpXl3TzeWvb+Wbt3irxf3eI3tXmNSki3C74Etwm9MxnRo00ly17qbgNhTHGv4CLevnBVvvZOXTlLu83LUL1afhU8sjLeOST5bhD8Z91glWLYCW9xeW4EeGqTvpVJsxhiTLHt+O0ShByqRV89zrM3T3D7/G4914x6vGf7g8DSM0GQFyRkKfgDXrKzLuFZiCsE1kckYY7wuJAT2NX+WvHqeE13/lWBStcdrTHKIECBC1STXv9mhYAmWcsBbGqQ9Eq2cAdlQsDEZxx9/QKtWkCd7JKv+NZVig5/yWFdVafltS9YfWc+ul3bZTOAUllmGgkVYAbTDNbK7CTgB/KLKK4m1TXKP1UmkVznrAyc5gxtjTGrY+MUqytQN5P4ca1m+KvsNSTU8Mpzle5fz/m/v8/Dkhyn838Is3bOUoAeCLKmahORX5TzQEfhGlVpA86Q0TM5zrKMlWMoAh3HdY80JhEiw5NYgvZjciI0x5lb9MXQxNd5+CF9iGPvadgJK1WX36T2sPrSa1QdX8/uh39lybAuxriXOuafQPbSv0J7GdzXmiapPeDl6k875iVAE1xMxbyanYaJDwRIsokH/VJJgKQFUB6o5P6sAqkFaIblRp2c2FGxM+rbqlZnU/7/HEZQZr3Vncq2zrDm0huMXXUvA5s2el3rF6tGgWAMaFGtAvWL1KJiroJejzvwy0VBwZ+BtYJUqfUUoDfxXlUcTbZuExLoC12L7czRID7iVZwfuw7Xm4noN0hE3/xXSH0usxqRfPz4+moen9yEGH9o/mpMFVS5RPrD81SR6b/F7qVi4Ir4+Gf73e4aTWRLrrUhKYs0JPINrP9ZSwFlcw8C+wBLgfxqkm1M5zjRnidWY9CcmRmnf6y+2TsjFr361mTSkMdUf7UH9YvUp5F/I2+EZMk9idXqonwH1cW09txoYoMreRNsmZ1awsz1cIeCys/pSpmWJ1Zj0Zcffe/m9+su8emwc2RovZd7EstQtXsvbYZnrZKLEugb4ApjiFHUBXlKlXqJtbeWl+FliNSZ9iIqJ4v2Fn/Lwo2OoFbmLNXc1olbYcrL5JmfupUkrmSixrr0+iYqwRpX6iba1xBo/S6zGeN/qg6t54etBzB76FyVij3GiWGUK7914w2L6Jv3IRIn1Q1y3PqfiGgp+HMiBqxeLKqc9trXEGj9LrMZ4z5nLZxi8bDALpy1j03fHCdDznKjbhsKrfwQf21QrPctEiTWhe6mqSmlPB+3PPmNMuqGqTNs2jQGLBnA8tAKtZw4nnz7CiU59KTxjpLfDM1mIKqVutm1yFuEXXDODS2uQDnGeZ71Dg3TdzV7cGGPi7Dmzh37z+7F492LabunO4h/Hsbu0H4e/PUqJ2rd5OzyTxYjgD7wClFCltwjlgAqqzEusbXLGVEYCDYC43d8v4Iw1G2PMzYqKieLDlR9SaWQlfj/4O2N+6c/sWd/yc+4OrFqFJVXjLd8AkcC9zudDwNCkNExOYq2nQfoCcAVAg/QMkD0Z7Y0x5hqqStfvuzJ42WBal3mI72f0pNfyz4iRbNSeOYhAW8rXeE8ZVT4CogBUuQxIUhom5x5rlASLL67ZUUiwFAZikxmoMcZcNWnLJL4P/Z7g+z6g5dPrqXtwBBHZ8pBtyway3V0u8RMYk3oiRchFXM4TygARSWmYnB7rCOAH4DYJlveAlcD7yQzUGGMAOHDuAC8tfIn6hR8k/NXq1D34PRfz3EGOw3vxtaRqvO8dYBFQXITvgGXAwKQ0TO7KS3cDzXB1h5dpkIYmO9QMwh63MSb1xGosLSa1YO3mwxRduIU9u7Lza7dRNPiqJ+TM6e3wzC1I6HEbEakATHMrKg38BygAPIdrz1OAN1R1gdNmMNALiAH+paqLnfJWuJYc9AW+VtUPnfJSuJ49LQhsALqrauTNfRcCcS1pKMAaVU4mqZ09xxo/S6zGpJ4Ra0cw5v1v+H1uGGOz96Py/GE0T9JOlya9S+pzrCLii2sb0npATyBcVT++rk5FXEsK1gXuBH4CyjuHdwItcE0q+gPoqqrbRWQ6MEtVp4rIl8BmVR2V/O/BMlWaJVYWn+Q8blMb1550JZ12gmu7ONvs3BiTZDtO7mDNi3PYuH4rvsTQ/WkfAi2pZkXNgN2qul/E45yg9sBUVY0A9opIGK4kCxCmqnsARGQq0F5EQoGmQDenzgRcQ7pJTqwi5AT8gUIiBPDPhKV8uJJ7opJzj/U7XNOPHwXaAg87P5NFRHxFZKOIzHM+lxKRtSKyS0SmiUh2pzyH8znMOX6X2zkGO+V/iUhLt/JWTlmYiAxyK4/3GsaYtBURFc2SOq/z3fqfEeDimMkEfvWBt8MyKUtEZL3bq7eHel34Z4F7gBdFZIuIjBORAKesKHDQrc4hp8xTeSBwVlWjrytPjj7An8Ddzs/1zmsOSXzENDmzgk9okM5NZoDx6Q+E4sr+AMOA/3PrtvfC9ddFL+CMqpYVkS5OvcedoYEuQCWcoQERiRsa+AK3oQERmauq2xO4hjEmjZw/D8G1PmX4vnlc9vPHb81q8tSyAa9MSFW1dkIVnM5NO2CwUzQKeBfXDNx3geG4tiuNryurxN8p1ATqJ8fvwHSgkyqfi9ADV4dyHzA5KSdITo81SILlawmWrhIsHeNeyYlWRIoBDwFfO58FV7d9plNlAtDBed/e+YxzvJlT/+rQgKruBeKGBuriDA04N6rjhgYSuoYxJg3s3Qs1613mk7B/8UOF+8l17CDZLKlmZa2BDap6DEBVj6lqjKrGAmP4Z7j3EFDcrV0x4EgC5SeBAiLid115cnwFRDhJ9X7gA1x54xwwOiknSE5i7QlUB1rhGgKOGw5Ojk+Bf/PP868JdduvdvWd4+ec+t4YGjDG3KQ/J4SQv0whqu2eSWCfp2i8cTYULOjtsIx3dcVtGFhEirgdewQIcd7PBbo4twZLAeWAdbgmK5VzbvNlxzWKOVdds3GXA52c9j1wDeEmh6/bzjWPA6NV+V6Vt4GySTlBcoaCq2mQVklmgFeJyMPAcVX9U0QaxxXHU1UTOZZqQwPOvYDezvv4qhhjkuHnvtO5/8tu+BJD1Wr96fP6VAJyBSTe0GRaIuKP65ZdH7fij0SkOq7fzfvijqnqNmeW73YgGnhBVWOc87wILMb1uM04Vd3mnGsgMFVEhgIbgbHJDNFXBD9VonFNsHK/R5yknJmcxLpGgqWiBun25ETopiHQTkTaADlx3WP9FKfb7vQo3bvtcV39Q063Pj9wGs9DAHgovzo0EM81rqGqo3G6+r6+vvYckjE3KSYGVtz7Bk3XfUAsPjzxsD8Bz3flwTIPejs042WqegnXSKJ7WfcE6r8HvBdP+QJgQTzle/hnKPlmTAF+EeEkcBn4DUCEsrhGThOV5OdYJVhCcXWD9+Ba1ummH7dxeqyvqerDIjID+N5tYtEWVR0pIi8AVVT1eWfyUkdVfUxEKuG6gRz3XNMyXMMDguu5pma4no36A+jm/MUT7zUSitGeYzXm5pw/D7PrDKX7zreJ8MtNh5cKsLtULjb12UTu7Lm9HZ5JZZlhP1YR6gNFgCWqXHTKygN5VNmQWPvk9Fhb4iTTmwk0AZ667WOBSc5zS6dxjaF7a2jAGJMEe/dC27ZwYNcAmtz9Kx+9WZile6ayssNKS6omw1BlTTxlO5PaPtEeqwTLSg3SRhIsF7g2qcb1WPN5aJqhWY/VmOT5c0IIhZ95mI7+i/nwhwpcKj6X9lPb80ajN3iv2Q0jeSaTygw91luVlMSaTYM0Ko3iSTcssRqTNKqwtOtYmk7rgy8xnPj3R8h/nqbyqMoUyVOEdc+tI7uvrcmSVVhiTdpQ8FqgZmoHYozJeMLPx7K5yhO0ODCVWPHj0lffUvjZbjw6/VHOXjnLT91/sqRqspykJFZ77sQYc4MdO+BonfY0CZ/HxdyFybVxNbnLlWHS5kn8sOMHPmr+EVVuv+kn9IzJsJIyFHwI+MTTcQ1Sj8cyMhsKNsazGTPgmWegWrZt/FBhEIV/+wH8/Dh47iCVR1Wm6u1VWdFjBb4+WXpEMEuyoeCkrbzkC+QB8np4GWOyiKgoWFrvTRo9VoRa91xi2tZKFF79I/j5Eaux9JzTk5jYGCZ0mGBJ1WRZSRkKPqpBOiTVIzHGpGtH90dyskpjWlxYTYSfP0tG7yV70UoAqCof//4xy/YuY/TDoykdUNrL0RrjPXaP1RiTqD8mhVK2R0Oq6BnOFbmb/NtXQ4ECAISdDuOlhS+xKGwR7Sq049maz3o5WmO8KylDwYnulm6MyZxU4eOPodxTDSigZzjdoSf5j4RCgQJcib5C8IpgKo+szKoDq/is1Wd8/9j3ts62yfKSvKRhVmOTl0xWd/5sLL2fjmTanJz8t850+vWJwb9XVwAWhS3ixQUvsvvMbrpW7srwB4dTJG+RRM5osgKbvGSJ1SNLrCYrC/31OHma1edctD+LPw7hlVdABA6dP8TLi19m5vaZlA8sz8g2I2lW2ga1zD8ssVpi9cgSq8mqfh68lHs/bEcOrnC2ZlMC/lhKlMYwYu0IglYEEaMxvHXfW7x272vk8Mvh7XBNOmOJNXmL8BtjMrHwcFhXux9N/hqFIlwYOJSAD99k5YGV9J3fl5DjITxU7iE+b/05pQJKeTtcY9ItS6zGGNavh3c6buHHg6OIyJ4X3yULiahdnp5zejJ+03hK5C/B7Mdn065CO5ucZEwikjIr2BiTScXGwvRei2lQL5bNWpXQtyeT/ezfjMsdQoX/VeDbLd8yqOEgtvfbTvu721tSNSYJ7B6rB3aP1WRWqsqZK2fYGHKQXC1epsG55cy4ozMLPinGKXax4+QOwk6H0fiuxnzR5gsqFq7o7ZBNBmL3WC2xemSJ1WRk4ZHhLNuzjL1n93L4/GEOX3Be5w9z5MIR7vmlFj8t3UoA5ziQMzf39bnIpaKFKJq3KEXzFaVb5W50q9LNeqgm2SyxWmL1yBKryWgiYyJZsnsJk7dOZs5fc7gUdQmAHL45KJqvKEXzFuX2HHfRLNiP3jvHIyi7W7fHd9Jw7sxfzGb4mhRhidUmLxmTocVqLCsPrGTy1snM2D6D05dPUzBXQZ6q+hSPV36cKrdVoWCugogIW7dC165Qaec7RPvlgjmzKdumhbe/gjGZjiVWYzIYVWXzsc1M3jqZKSFTOHT+EP7Z/Olwdwe6Ve5GizItrtlcXBUWPjOdExMWcLLweBoseofszd4CP/vP36Q9EdkHXABigGhVrS0iBYFpwF3APuAxVT0jrnsRnwFtgEvA06q6wTlPD+At57RDVXWCU14LGA/kAhYA/TWNh2ZtKNgDGwo26U3Y6TCmbJ3ClJAphJ4Mxc/Hj1ZlW9GtcjfaVWhH7uy5b2hz4lgsu6p1osGxH4jFl1M7jnNbhYJeiN5kFYkNBTuJtbaqnnQr+wg4raofisggIEBVB4pIG+AlXIm1HvCZqtZzEvF6oDagwJ9ALScZrwP6A2twJdYRqrowVb6sB/YnqzHp2OWoy4zZMIbvtn7HusPrALi/5P30r9efThU7Eegf6LHtqjHbqNCnCffqCS7mvR3/db9YUjXpVXugsfN+ArACGOiUT3R6nGtEpICIFHHqLlXV0wAishRoJSIrgHyqutopnwh0ACyxGmNcPdRO0zux+dhmqt9RnY+af0SXyl0onr94gu0uXIDg/qf58Jtq+BLD2Qc7U2DhVPCxx9ZNmhARWe/2ebSqjnb7rMASEVHgK+fY7ap6FEBVj4rIbU7dosBBt7aHnLKEyg/FU56mLLEakw7N2TGHHrN74Ovjy4JuC2hdrnWS2q2YcZynX7+NAwcK0uWeblR+qz0Fuj2aytEacw1V1doJHG+oqkec5LlURHYkUDe+5730JsrTlP0Ja0w6Eh0bzaCfBtFhWgfKBZZjQ+8NSUqq58/D4qqvc99jd/By+BBWroTa2yeS05KqSWdU9Yjz8zjwA1AXOOYM8eL8PO5UPwS4D9EUA44kUl4snvI0ZYnVmHTiWPgxWkxqwbBVw3i+1vOs7LmSkgVKJtpu5ehthBcsTsutHxPjl5PnP6/EvfemQcDGJJOI5BaRvHHvgQeBEGAu0MOp1gOY47yfCzwlLvWBc86Q8WLgQREJEJEA5zyLnWMXRKS+M6P4KbdzpRkbCjYmHVh5YCWPzXiMs1fOMrHDRLpX655om7NnYfV9/6ZlyMcIytm6LSiwfDb4+6dBxMbclNuBH5wVvfyAyaq6SET+AKaLSC/gANDZqb8A14zgMFyP2/QEUNXTIvIu8IdTb0jcRCagL/88brOQNJ64BPa4jUf2uI1JC6rKp2s+5fWlr1MqoBSzHptFldurJNpu/nzo0wc+OPwUj2WbhXz3Hdk7t0+DiI1JmK28ZD1WY7zmfMR5es3txcztM3nk7kf4pv035M+ZP8E2Z07Fsr5hf/b9FUNA5ZHcM2s8OaqOhpw50yhqY0xirMfqgfVYTWoKOR7Co9MfZffp3XzY/ENebfBqogveL/9sC/e80oo7Yo9yMVcgfqeOkyOXTZMw6Yv1WK3Hakya+27Ld/Se15t8OfLxc4+fub/k/QnWP3Uilo33vkDTsK8QlHP3PUT+n2ZBdkuqxqRH9l+mMWkkIjqCF+a/wJM/PEmtIrXY0HtDgklVFaZMgeCyk2ge9iVR2XMTNXs++X+dB9mze2xnjPEu67EakwYOnz9Mx+kdWXd4Ha81eI33m71PNt9sHuuH/nmJZY+P5qXdA6hVqwdH6x2kyP/92xKqMRmA3WP1wO6xmpRyKeoSDcc1JOx0GBM6TKDjPR091g0Ph5/bfcqDyweRgwjmvPobbYc1wjdL37EyGYndY7UeqzGpSlXpO78vm//ezLxu82hTro2HerBs+CbKD3qEdjH7iBE/Lr3yNh0+bpTGERtjblWa3WMVkeIislxEQkVkm4j0d8oLishSEdnl/AxwykVERohImIhsEZGabufq4dTf5ezJF1deS0S2Om1GOCtveLyGMalt1PpRTNw8kaAHgjwm1bAw6Nb0b5q+XpPiMfs4V+0+fE8eI/fHQ9I4WmNMSkjLyUvRwKuqeg9QH3hBRCoCg4BlqloOWOZ8BmgNlHNevYFR4EqSQBCuvfnqAkFuiXKUUzeuXSun3NM1jEk1qw+uZsCiATxU7iHefuDtG45fvgwTuy2kcmWY/+cdbKv/LDELlpB/069Q0LZ3Myaj8to9VhGZA/zPeTV2tgoqAqxQ1Qoi8pXzfopT/y9ce/A1dur3ccq/wrV33wpguare7ZR3jasX1/b6ayQUn91jNbfiWPgxao6uSU6/nKx/bj0Bua4dJFnxZSglXmpP6ehdTKn2AY0XDqJIES8Fa0wKsnusXrrHKiJ3ATWAtaTNPnyermFMiouOjebxmY9z5vIZVvdafU1S3bczkv1Nn+b+w1Ndz6TeXZeui56GO7wXrzEmZaX5c6wikgf4HhigqucTqhpPWaruwycivUVkvYist9nS5mYNXDqQX/b/wui2o6l2RzUAIiLgvfcgT4WiPHB4CpE58xP1/Rzyh66FOyyrGpOZpGliFZFsuJLqd6o6yylOi334PF3jGqo6WlVrq2rtxJaXMyY+07dN55M1n/BinRd5suqTxMbCwg83Ua3CFd56C/4o04ULT/Uj58VTZO/YztvhGmNSQVrOChZgLBCqqp+4HUqLffg8XcOYFLPt+DaemfMM9xa/l+Eth/P7zCNszn8frQbX4ONzz7J0KbQO+5y8E74AH1v0zJjMKs0mL4lII+A3YCsQ6xS/ges+63SgBM4+fM5ee4JrYlMrnH34VHW9c65nnLYA76nqN055ba7dh+8lVVURCYzvGgnFa5OXTHKcu3KOul/X5dyVc0yruwbpMohGR6fjgxIeWAL/6RPwadrYy1Eak/ps8pKtvOSRJVaTVKpKx+kdmfvHelofXsfoqbW4k6NcyZkfnxGfkf25HomfxJhMwhKrrbxkzC0bsvT/KPR2DCX2/cISirC28UBa1jqF/0fv2JCvMVmQ9Vg9sB6rSUxUFIx+diwdJr5FUf4m5LbG+K9eTunS3o7MGO+xHqslVo8ssRpPVOGnEdso/u8uVIgMAeBszfsJWDgDbrNHpE3WZonV9mM1JllWroRGjeDuAS2pEBnC9vz52P/LPAL+/MWSqjEGsMRqTKJUYeUPx/m9UFveuW8pe/bAJ2270aaLsHvtJO66/yFvh2iMSUcssRrjgSr8MvUIawu24t6Od3DvqXmMvudT3pr5DZ/W+i+1nnuDdhVskQdjkiqBXc7eEZHDIrLJebVxazPY2bHsLxFp6VbeyikLE5FBbuWlRGSts5vZNBHJnrbf0u6xemT3WLMuVVi4EPI/0YYGZxfhg3IpT2H8PhzK5g41aPRNIxrf1ZgF3Rbg65OlbyUZc4OE7rE6K98VUdUNIpIX+BPoADwGhKvqx9fVrwhMwbWT2Z3AT0B55/BOoAWuVff+ALqq6nYRmQ7MUtWpIvIlsFlVR6X4F02A9ViNcajCknGHqFMHHnoIAi8e4kq+24n6egL+F46ztEVRmk9qTpE8RZjccbIlVWOSSVWPquoG5/0FIJR/NkuJT3tgqqpGqOpeIAxXkq0LhKnqHlWNBKYC7Z2FhZoCM532E3Al7jRlidVkebGxsPizULbkaUCLXsV5eO/nfP01lD69Hv9zR/F7pjvv//Y+bae0pUxAGX55+hcC/QO9HbYx6ZXEbWbivHp7qHQX/+xyBvCiiGwRkXFue2wnd5ezQOCsqkZfV56mbIEIk2XFxMDi4SEUD+rJg1fWA3CxYHHemlQevzYA2QmPDKfnnJ7M3D6TJ6o8wei2o/HP5u/VuI1J51RVaydU4fpdzkRkFPAurh3J3gWGA8/gedey+DqFKbLLWUqwxGqynIgImDYNPhoayaZd1fElhouFS5Hr6xHkaffw1Xq7T++mw7QObD+xnY9bfMwrDV7Bdj0y5tbEt8uZqh5zOz4GmOd89LSbGR7KTwIFRMTP6bW6108zNhRssoxjx+CHRyawK3d1evWIxCdndnZ0egtdtIQ8x/fg65ZUl+5eSp0xdTh8/jCLnljEq/e+aknVmFvkaZezuG09HY8AIc77uUAXEckhIqWAcsA6XJOVyjkzgLMDXYC56pqNuxzo5LT3ym5mNivYA5sVnHlsWHWJE88O5t4d48hLOApsensW1d555IalfFWV4auHM/CngVQqXInZXWZTOsDWKDQmqRKZFexpl7OuQHVcw7b7gD7OVqCIyJu4hoWjcQ0dL3TK2wCfAr7AOFV9zykvjWsyU0FgI/Ckqkak/Df1zBKrB5ZYM7boaJgzB35952eGh7TAj1hixI+LzduRb9xnUKzYDW0uRV3iuR+fY/LWyXSq2Ilv2n9Dnux5vBC9MRmXLWloidUjS6wZ05kzsGLADxz+4Q9euvA+ZUtE8kf4PeTo2Y1c778N2eN/Vnz/2f08Mu0RNv29ifeavsegRoNs6NeYm2CJ1RKrR5ZYM5bQzZHseyaY+htGEcAZYvDlxxlXaPuIH76J/Ce+Yt8KOs/oTFRMFJMfnUybcm0SbmCM8cgSq01eMhlYTAwsWAATywZTtnpuWm94n3xynvP3tsR3ZygdOiWcVFWVz9d+TvOJzSnkX4h1z62zpGqMuWWWWE2G81doLHNbfP7/7d15lFTlmcfx79NNb/aGtNC07M2iArIZILgAkW7GLeIYdNBEMhOXiYlGc05mxjk5QXPizKATs8zEE0UlLse4DHHBJbgghKAGGhWRTWiQBmTrFulma5qm3vnjvo0FdvVadnVV/T7n1Klb996q+zzn7b5Pve+9dS/X9FjIpZfCusruhNIzOXTT7aQeqCHv7QUweHCTn1FbX8v35n+PHy34EZcOuZRlNyxjSMGQJt8jItISGgqOQEPBnUt1NSz+z7c5/YFZjKpZQhr1lOeNZuUj73P55Y0fOq2tr2Vb9Ta2Vm+lorqCrdVbj0+vr1rPjv07uHPSncyaNIsU03dMkWjQULAKa0QqrLEXCsGiRfCHP8C9T55OETsx4HDWqYS+dTVZv7yLtVZF+d5yKvb5wlmz9fj07oO7T/g8wyjKLaJvfl/65vfluhHXcdmQyxrfuIi0iQqrCmtEKqyxs2ljiLW3PUjPhU8yrm4J+fkpLD9lEoWnp3LkF7fyalE1r296nTc3v0nlocrj78vqkkW/rv2CwpnX94vp/L70y0xPhAAAAA1CSURBVO9Hr7xepKd2+B2kRJKKCqsKa0QqrB3rwAFYdM8yev7uZ4zct5h0juKAV3+2kPqrj7J4+wJe3/w6ayvXAlCYXUjpwFJKi0sZ3mM4ffP7UpBVoJ/IiMSYCqsKa0QqrF+9mhp49eUQz72QwuAX7uXuo/+GAYcycll93nBmX268sn8FdcfqyOySycR+EyktLmXqwKmc3eNsFVGRTkiFVRfhlw5WVQXv/updus39JcN2LySPCfylxyscvmgiH67ux50lnzO/Vw3wLiMzRnLb0NsoLS7l/L7nk5WWFevwRUSapR5rBOqxRs/27fD88zDm599k1Gdvkc0hAOpS0nnr7DO4/MqNHHW19MzpydSBU5laPJWS4hIKcwpjHLmItJZ6rCqsEamwts/Gj0Osn/VH0t98hYv2PgVAVWoPslMOsW5QL35x7k6e77OfHtk9uHb4tXxnxHcYUzRGw7sicU6FVUPBEiX19bBiaS2fzX6I4r/MZXDtRwzmGA74rx/+C7vGL+fCynxW7a8ks8tWpp0xjVdGzqS0uJS01LRYhy8iEjXqsUagHmvTnIO1q0Ns/s2LzK8YxbNlA/jfmpnM5AkccDCnB5smDOXeKQf5Y20ZAJP6TeK6Edcxfeh08jPzY5uAiHwl1GNVj1VaYetW+Oj3S8l95mEGVCzmzNA2hhHicO4/kXLNXE7rdwvrVh/it5PreKzyDWrrFzMkewh3T7ibb4/4Nv279o91CiIiXzkVVolo714oe2Id6xfu4P71U0jfuJrVXABAiBQOFvRh34TR1H6rK1vTLuaqiiUcOuMQBfsKuH709cwcOZOxp4/VcVMRSSoaCo4g2YaCQyEoL4fyZ1aQPv9PnL7mDQYcXkMWteyiJzdcupMpU+Cqt65l7TcKeLRPJQsrFrHn4B4AzjztzOO/MZ06cKqucCSSpDQUrMIaUSIXVudg2zZY/9wabN483KbNXH34MaqroYZccjmAA2ozu3Jw6Cg2TR/F4yPqePOTN9nw2QYAeub0pKS4hJIBJUwpnkLvvN6xTUpEOgUVVhXWiBKpsO7eDStWQFkZDH/8Xzmv4km6h3bThSA/B9zwj9UMGHmAKevvI6XwIG+ck8PLe5ZStqOMkAuRnZbN5P6Tg2JaXMKw7sM0xCsiX6LCqsIaUbwVVudg1y4of28fh19dRNqKv5H7yQcUfr6ewmO7GMoaNqcMZGH6Nzj/yNtUnpLHuqJsFp11iEfPrObT7BNzTbVUxvUaR2lxKSXFJYzvPV7DuyLSLBVWFdaIOmthra6GjR/Vsu/P75DyzlKyN77PqVUb+YmbzUt13+QhbuAGHjm+fj0p7MrIYsaFxbw9ajNpGbX0yO1JYU4hhdmFXzyHT+cU0i+/H7kZuTHMVETikQprEp0VbGYXAb8FUoGHnXOzYxzSCZyDfftg144Qn6/bRe0H62DDx6RWfELGngrmpV/BI59fyVVVj/Eg3yd8ENYBZ/d6gJdGLuDZtC3kVg2iZlwf6i+YQMGQkRRmF/KwL5pdM7tqCFdEYqaz74ujISl6rGaWCmwASoHtQBlwjXNubaT3RKPHeuQIVO06SuW6beysquOT+gJ2b/6M8S/dR3blp+TuryKv9nNyjtbwAtO42c3hPJay1P+kJdwrmeO57KwbOSvjbeaWv8SOvnlUj+7JkUljKRg1gcHdz2BQt0HkpOe0K2YRkfZoqsfaln1xPEqWHus4oNw5txnAzJ4GpgFRb8yhFy/hgwUldOEY6YToBfQCUjibS1jFKWRxkIeBoKcZwqizLnQ97T26nfsfVOfuZck7A9jfPZuDfXKpG3Qahwf15ZTRY1lWeBaDu13JqVlzox22iEhH6LB9cSwlS2HtBWwLe70dGH/ySmZ2E3CTn27Thvr0CbEtqwhLhbr0dI5mZXA0O4uK4cO48+rn6FOUzspVs0gfNoysoSM5Nb+QvIw8ZlgKM45/yn1t2raISCdgZrYi7PUc59wcP92ifXG8S5bC2liV/NIYuG/8ORAMBbdlQ6/NmQxzKr40/xzgyoYXEy9ry0eLiMQD55z7WoRlLdoXx7uUWAfQQbYDfcJe9wZ2xCgWEZFklRT74mQprGXAYDMbYGbpwAxgfoxjEhFJNkmxL06KoWDnXL2Z3QK8RnCK91zn3JoYhyUiklSSZV+cFD+3aYvOeoEIEZHOTBeISJ6hYBERkQ6hwioiIhJFKqwiIiJRpMIqIiISRUlxVnBbhEIhzCzUyCIjAX/Q7CVqbomaFyRubomaFyR+bknfYdNZwa1kZiuauKpIXEvU3BI1L0jc3BI1L1BuySDpv1mIiIhEkwqriIhIFKmwtt6c5leJW4maW6LmBYmbW6LmBcot4ekYq4iISBSpxyoiIhJFKqytYGYXmdnHZlZuZnfEOp72MLMtZvaRma1suCmxmXUzszfMbKN/PjXWcbaEmc01sz1mtjpsXqO5WOB/fBuuMrMxsYu8eRFyu8vMPvVtt9LMLglb9u8+t4/N7O9iE3XzzKyPmS0ys3VmtsbMbvPz47rdmsgrEdos08yWm9mHPref+/kDzGyZb7Nn/F1rMLMM/7rcL+8fy/g7lHNOjxY8CO7EsAkoBtKBD4GhsY6rHflsAU47ad69wB1++g7gnljH2cJcJgJjgNXN5QJcAvyZ4Pd2XweWxTr+NuR2F/CTRtYd6v8uM4AB/u81NdY5RMirCBjjp3OBDT7+uG63JvJKhDYzIMdPpwHLfFs8C8zw8x8AbvbTPwAe8NMzgGdinUNHPdRjbblxQLlzbrNzrg54GpgW45iibRrwmJ9+DLgihrG0mHNuCbD3pNmRcpkGPO4CfwO6mllRx0TaehFyi2Qa8LRz7ohz7hOgnODvttNxzu10zr3vp/cD64BexHm7NZFXJPHUZs45d8C/TPMPB1wIzPPzT26zhracB0wxM+ugcGNKhbXlegHbwl5vp+l/mM7OAa+b2XtmdpOfV+ic2wnBDgLoEbPo2i9SLonSjrf4IdG5YUP2cZmbHyIcTdADSph2OykvSIA2M7NUM1sJ7AHeIOhh73PO1ftVwuM/nptfXg0UdGzEsaHC2nKNfdOK51Oqz3POjQEuBn5oZhNjHVAHSYR2/D0wEBgF7ATu8/PjLjczywH+BNzunKtpatVG5nXa3BrJKyHazDl3zDk3CuhN0LM+q7HV/HNc5RZNKqwttx3oE/a6N7AjRrG0m3Nuh3/eAzxP8E+yu2F4zT/viV2E7RYpl7hvR+fcbr+DCwEP8cXQYVzlZmZpBMXnSefcc3523LdbY3klSps1cM7tAxYTHGPtamYN150Pj/94bn55Pi0/rBHXVFhbrgwY7M+ASyc4GD8/xjG1iZllm1luwzQwFVhNkM93/WrfBV6MTYRRESmX+cBMf5bp14HqhqHHeHHSscW/J2g7CHKb4c/GHAAMBpZ3dHwt4Y+1PQKsc879KmxRXLdbpLwSpM26m1lXP50FlBAcQ14ETPerndxmDW05HXjL+TOZEl6sz56KpwfBmYkbCI4r/DTW8bQjj2KCMxE/BNY05EJw/GMhsNE/d4t1rC3M5ymC4bWjBN+Sr4+UC8Hw1P2+DT8Cvhbr+NuQ2xM+9lUEO6+isPV/6nP7GLg41vE3kdf5BMOCq4CV/nFJvLdbE3klQpuNAD7wOawGZvn5xQRfBsqB/wMy/PxM/7rcLy+OdQ4d9dCVl0RERKJIQ8EiIiJRpMIqIiISRSqsIiIiUaTCKiIiEkUqrCIiIlGkwirSDmZ2oPm1Wv2Z/c3s2iaWrW5sWTu3OdnMzg17/aiZTW/qPSLSOBVWkc6nP9BoYf0KTQbObW4lEWmeCqtIFPge32Izm2dm683syYY7eVhw79t7/L0sl5vZID//hF5hWO93NnCBv2/nj5vYZqqZ/beZlfmLu/9zC2K5xM9basH9TV/2F4v/PvBjv80L/CYmmtk7ZrZZvVeRllNhFYme0cDtBPfYLAbOC1tW45wbB/wO+E0zn3MH8Ffn3Cjn3K+bWO96gkv7jQXGAjf6y+I1GouZZQIPElzd53ygO4BzbgvBfTR/7bf5V/8ZRQRXErqMoNiLSAuosIpEz3Ln3HYXXGh9JcGQboOnwp4nRGl7Uwmun7uS4NZkBQTXmo0Uy5nAZhfc9zM8pkhecM6FnHNrgcIoxSyS8Lo0v4qItNCRsOljnPj/5RqZrsd/ufVDtemt3J4BtzrnXjthptnkCLG09ibT4Z+RFDeoFokG9VhFOsY/hD2/66e3AOf46WlAmp/eD+S24DNfA272tynDzIb4uxVFsh4o9sdUw2NqzTZFpBnqsYp0jAwzW0bwZfYaP+8h4EUzW05wJ5eDfv4qoN7MPgQebeI468MEQ7zv+x5vJXBFpACcc4fN7AfAAjOr4sTbk70EzDOzacCtbUlQRAK6u43IV8zMthDc5qyqE8SS45w74Avx/cDGZk6QEpFW0lCwSHK50Z/stAbIJzhLWESiSD1WERGRKFKPVUREJIpUWEVERKJIhVVERCSKVFhFRESiSIVVREQkilRYRUREouj/Ae6lyhkpD7p4AAAAAElFTkSuQmCC\n", "text/plain": [ "<Figure size 432x288 with 3 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "timer(g,genintlist(300));" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "compare_times(f,g,genintlist(300));" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true, "jupyter": { "outputs_hidden": true }, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "def h(L):\n", " x = 0\n", " for i in range(len(L)):\n", " x += L[i]*L[i]*L[i]\n", " \n", " for j in range(len(L)):\n", " x -= L[j]*L[j]*L[j]\n", " \n", " for k in range(len(L)):\n", " x += L[k]*L[k]*L[k]\n", " return x" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 3 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "timer(h,genintlist(500));" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY8AAAEKCAYAAADq59mMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3XmcjXX7wPHPZWzZt6xDiEQqMm3o97SijXoq2XqESKV9eWibGaXytCgVIUpRlDYVSrYiZIqyL1lHwox1MMbMXL8/vgdjGmbOzDnnPjNzvV+v85pz7nMv1z2Hc833/t7f6yuqijHGGOOPIl4HYIwxJv+x5GGMMcZvljyMMcb4zZKHMcYYv1nyMMYY4zdLHsYYY/xmycMYY4zfLHkYY4zxmyUPY4wxfivqdQDBUqVKFa1bt67XYRhjTL7y66+/Jqjq6dmtV2CTR926dYmLi/M6DGOMyVdEZFNO1rPLVsYYY/xmycMYY4zfLHkYY4zxW4Ht88jKkSNHiI+PJzk52etQTqlkyZJERkZSrFgxr0MxxpgsFarkER8fT9myZalbty4i4nU4WVJVEhMTiY+Pp169el6HY4wxWSpUl62Sk5OpXLly2CYOABGhcuXKYd86MsYUboUqeQBhnTiOyg8xGmMKt0KXPIwxpqBShVGjYMqU4B/LkocHhg4dSuPGjenatavXoRhjCoh9+6BzZ+jTBz74IPjHK1Qd5uFi2LBhTJ061TrEjTEBERcHt98OmzbBoEHw3/8G/5jW8gixvn37sn79etq3b8+QIUO8DscYk4+pwuuvQ8uWkJICs2fDk09CRETwj11oWx4PTXuIJX8vCeg+m1VvxuvtXj/lOu+88w7Tpk1j1qxZVKlSJaDHN8YUHomJ0KMHfP01tG8PY8ZA5cqhO761PIwxJp+ZOxeaNYNp01zL48svQ5s4oBC3PLJrIRhjTLhJS4OXXoLoaKhbF37+GaKivIml0CYPY4zJT/7+G7p1gxkzoFMnGDECypXzLh5LHsYYE+amT3eJY/9+N46jVy/weiyx9Xl4YOPGjdZZbozJVkqKu3uqbVuoUgV++QXuusv7xAHW8jDGmJBIS4P58yEhAfbscY/du0/9PCnJbdurFwwdCqVKeXsOGVnyMMaYEOjdG95775/Ly5eHChWOP8488/jzihVdh/h114U+3uxY8jDGmCB7/32XOB56CO64wyWFChVch3coBvQFgyUPY4wJomXL4N574Yor4JVX8m+yyMw6zI0xJkiSkuC221wL46OPCk7iAGt5GGNMUKhC376wZg388ANUr+51RIEV0paHiLQTkdUisk5E+mfxfgkRmeh7f6GI1M30fh0RSRKRx0IVc6Bt3LiRpk2beh2GMSbI3n0Xxo+HmBh3yaqgCVnyEJEI4G3gWqAJ0FlEmmRarRewW1UbAEOAwZneHwJMDXasxhiTF0uWwP33Q5s28NRTXkcTHKFseVwErFPV9aqaAkwAOmRapwMw1vd8EnCV+OZkFZGbgPXA8hDFGzRpaWn07t2bc845hzZt2nDo0CGvQzLGBMi+fa6fo3JlGDcOihTQnuVQ9nnUArZkeB0PXHyydVQ1VUT2ApVF5BDwX+AaICCXrB56yP11EEjNmrkKl9lZu3YtH3/8MaNGjaJjx4589tlndOvWLbDBGGNCTtWN59iwAWbNgtNP9zqi4AllTsxqQL3mcJ1YYIiqJp3yACJ9RCROROJ27tyZyzCDr169ejRr1gyAFi1asHHjRm8DMsYExPDh8Mkn8PzzcNllXkcTXKFsecQDtTO8jgT+Osk68SJSFCgP7MK1UG4Vkf8BFYB0EUlW1bcybqyqI4GRAFFRUZkT0wly0kIIlhIlShx7HhERYZetjCkAfv0VHn7YjQZ/4gmvowm+UCaPRUBDEakHbAU6AV0yrTMZ6A7MB24FZqqqAsdyuIjEAEmZE4cxxnhlzx7Xz1GtGnzwQcHt58goZMnD14fRD/gOiADGqOpyERkIxKnqZGA08KGIrMO1ODqFKj5jjMkNVejZE7ZsgR9/DP2Mfl4J6SBBVZ0CTMm07NkMz5OB27LZR0xQgguRunXrsmzZsmOvH3ss3w5ZMcYAb7wBX3wBr74Kl17qdTShUwgaV8YYExwLF8Ljj0OHDq6/ozCx5GGMMbmwaxd07AiRka5ibjhM0BRKha62laoiYf4pu3sEjDHhKj0duneHbdtg3jxXYr2wKVQtj5IlS5KYmBjWX86qSmJiIiVLlvQ6FGNMFlJS4D//gW++cSXWL7zQ64i8UahaHpGRkcTHxxPOAwjBJbnIyEivwzDGZLJ3L/z73zBzJgwa5OpXFVaFKnkUK1aMevXqeR2GMSYfio93AwBXrnRjOe64w+uIvFWokocxxuTG0qVw7bWu6OHUqXD11V5H5L1C1edhjDH+mjkTWrd2gwF/+skSx1GWPIwx5iTGj4d27aB2bViwAM4/3+uIwoclD2NMgTJypLsLauvW3O9DFV56Cbp1g1atYO5cl0DMcZY8jDEFxtixcPfdbtR37druEtPYsbB/f873kZYG990HAwZAp04wbRpUqBC8mPMrSx7GmAJh/nzo08fNF75iBTz7rJuU6c47XbXbLl1cZ3dq6sn3cfCguxV3+HBXVn38eMgwg4LJQMJ5wFxeREVFaVxcnNdhGGNCYMsWN1ivTBlXb+poZVtVl1TGjYOJE11JkapVoXNnd6vtBRccLyuycyfceCP88gsMHQr9+nl3Pl4SkV9VNSrb9Sx5GGPyswMH3Kx969a5Tu0mTbJeLyUFpkyBDz90o8NTUqBxY9ev0bq1K6u+dSt89BHcfHNozyGc5DR52DgPY0y+pQo9esCSJS4hnCxxABQvDjfd5B67d8Onn7pE8tRT7v3Kld1tuYWprHpeWPIwxuRbzz3nksDLL7vR3zlVsaLrH+nTx/WLfP89XHMN1K8fvFgLGksexph86bPPIDraFSl89NHc76dePXeHlvGP3W1ljMl3lixxSeOSS2DEiMI3l0Y4sORhjMlXtm+H9u2hUiU3/avNXuANu2xljMk3Dh924zASEtyo7+rVvY6o8LLkYYzJF1Shb1/4+Wf45BM3RsN4xy5bGWPyhSFD4P333cjx227zOhpjycMYE/amTnX1qm65xd1hZbxnycMYE9ZWrXIFCs87zxU5LGLfWmHBPgZjTNjatcvVmypZEr76CkqX9joic5R1mBtjwlbfvrBpE8yaBXXqeB2NychaHsaYsDRvnis98vTTbkImE14seRhjwo6qKzlSs2beSo+Y4LHLVsaYsDNxopuX4733rJ8jXFnLwxgTVpKToX9/OP98N2GTCU/W8jDGhJWhQ10n+ejREBHhdTTmZKzlYYwJGwkJMGgQXH89XHWV19GYU7HkYYwJG7GxblrZl1/2OhKTHUsexpiwsHo1vPOOm92vcWOvozHZseRhjAkLTzwBp50GMTFeR2JywpKHMcZzs2fD5MkwYABUrep1NCYnQpo8RKSdiKwWkXUi0j+L90uIyETf+wtFpK5v+UUissT3+F1Ebg5l3MaY4ElPdwMB69SBhx7yOhqTUyG7VVdEIoC3gWuAeGCRiExW1RUZVusF7FbVBiLSCRgM3A4sA6JUNVVEagC/i8jXqpoaqviNMcExfjz89huMG+cuW5n8IZQtj4uAdaq6XlVTgAlAh0zrdADG+p5PAq4SEVHVgxkSRUlAQxKxMSaoDh6EJ5+EqCjo3NnraIw/Qpk8agFbMryO9y3Lch1fstgLVAYQkYtFZDmwFOhrrQ5j8r8hQyA+Hl591ebpyG9C+XFJFssytyBOuo6qLlTVc4ALgQEiUvIfBxDpIyJxIhK3c+fOPAdsjAmev/+Gl16Cm26C//s/r6Mx/gpl8ogHamd4HQn8dbJ1RKQoUB7YlXEFVV0JHACaZj6Aqo5U1ShVjTr99NMDGLoxJtBiYlwdq8GDvY7E5EYok8cioKGI1BOR4kAnYHKmdSYD3X3PbwVmqqr6tikKICJnAI2AjaEJ2xgTaMuXw6hRcO+9cNZZXkdjciNkd1v57pTqB3wHRABjVHW5iAwE4lR1MjAa+FBE1uFaHJ18m7cG+ovIESAduFdVE0IVuzEmsB5/HMqWhWee8ToSk1shraqrqlOAKZmWPZvheTJwWxbbfQh8GPQAjTFBN306TJ3q6ldVqeJ1NCa37P4GY0zIpKW5AYH16sH993sdjckLm8/DGBMyY8fC0qVupsASJbyOxuSFtTyMMSGRlARPPw2XXAK3/ePitMlvrOVhjAmJgQNh2zaYNAkkqxFdJl+xlocxJujmzoVXXoHevaFlS6+jMYFgycMYE1RJSdC9O9St68qQmILBLlsZY4LqscdgwwaYM8eN7TAFg7U8jDFBM3UqjBjhbs+97DKvozGB5HfykFgpLbESEYxgjDEFx65d0KsXnHMOPPec19GYQMv2spXEShFcmZCuuIq2h4ESEis7caPFR2q0rg1qlMaYfOe++2DnTvj2Wyj5jxrYJr/LSctjFnAmMACortFaW6O1KnAZsAB4SWKlWxBjNMbkMxMnwoQJEB0NzZt7HY0Jhpx0mF+t0Xok80KN1l3AZ8BnEivFAh6ZMSZf+usvVy33oougf3+vozHBkm3L42jikFi5TWKlrO/5MxIrn0usXJBxHWNM4aYKd93lppf94AMoavdzFlj+dJg/o9G6X2KlNdAGN9f48OCEZYzJj959191hNXgwNGrkdTQmmPxJHmm+n9cDwzVavwKKBz4kY0x+tH49PPwwXHkl9OvndTQm2PxJHlslVkYAHYEpEisl/NzeGFNApaXBnXdCRAS89x4UsW+GAs+fj7gjbhbAdhqte4BKwONBicoYk68MGQI//QRDh0KdOl5HY0JBVNXrGIIiKipK4+LivA7DmAJv2TJo0QKuvRa++MIq5uZ3IvKrqkZlt16O74WQWFkK/JHhsRTortE6KNdRGmPytZQU+M9/oHx5GDnSEkdh4s9lq38Bo4BDuBHny3Cd58aYQur552HxYle/qmpVr6MxoZTjlodvUOBs3wOJlYbA00GJyhgT9n75BV54wbU8br7Z62hMqOW45eFLFsf46lmdF/CIjDFh7+BBlzRq1IA33vA6GuMFf8Z/jpRYORPYiuvzKAksk1gprdF6ICjRGWPC0v33w5o18P33UKGC19EYL2Tb8pBY1wWm0XqFRmsd4HbgW2AdUApYLLGyOqhRGmPCxvvvw5gx8NRTcPXVXkdjvJKTlscsiZXPgK80WjdrtG4GNkusTMNV1u0O2D2xxhQCS5e6oodXXAExMV5HY7yUk+TRDugJfCyxUg/Yg7tkFQF8D7yq0fp78EI0xoSD/fvhttugXDn46CM3mtwUXtkmD43WZGAYMMxXer0KcMg3ytwYUwioQp8+sHYt/PADVK/udUTGa34VTPaVXt8WpFiMMWFqxAg3udPzz7tLVsZY+TJjzCn99hs8+CC0bQsDBngdjQkXljyMMSe1Z4/r56haFcaNs2q55jib58sYkyVV6NkTNm+GOXOgShWvIzLhxJ/CiAJ0BeprtA6UWKkDVNdo/SVo0RljPPPGG65K7quvQsuWXkdjwo0/jdBhwKVAZ9/r/cDbAY/IGOO5+fPh8cehQwc3O6AxmfmTPC7WaL0PSAbQaN2NTUNrTIGTkAAdO0Lt2m5WQCuzbrLiT5/HEYmVCEABJFZOB9KDEpUxxhPp6a7g4Y4dMG8eVKzodUQmXPnT8hgKfAFUlVgZBMwFXghKVMYYTwweDFOnumllo7KdS84UZjlOHhqt44EngBdxAwVv0mj91J+DiUg7EVktIutEpH8W75cQkYm+9xeKSF3f8mtE5FcRWer7eaU/xzXGZG/OHHj6abj9drjnHq+jMeHO3xHmq4BVuTmQiETgOtivAeKBRSIyWVVXZFitF7BbVRuISCdgMK6KbwJwo6r+JSJNge+AWrmJwxjzT9u3Q6dO0KABjBpl/Rwme/7cqhsFPAWc4dtOANVozemEUBcB61R1PYCITAA6ABmTRwcgxvd8EvCWiIiqLs6wznKgpIiUUNXDOY3fGJO1lBTo3NkNCPz+eyhb1uuITH7gT8tjPPA4sJTcdZTXArZkeB0PXHyydVQ1VUT2ApVxLY+jbgEWW+IwJu+OHHEtjlmz3Dwd557rdUQmv/AneezUaJ2ch2Nl1RBWf9YRkXNwl7LaZHkAkT5AH4A6derkLkpjConUVLjjDjcQ8PXXoXt3ryMy+Yk/ySNaYuVdYAZw7K9+jdbPc7h9PFA7w+tI4K+TrBMvIkWB8sAuABGJxN3t9R9V/TOrA6jqSGAkQFRUVObEZIzxSUuDHj1g4kR4+WVX+NAYf/iTPHoAZwPFOH7ZSoGcJo9FQEMRqYebB70T0CXTOpNxMxPOB24FZqqqikgF3NS3A1R1nh8xG2MySU+H3r1docNBg+Cxx7yOyORH/iSP8zVac31F1NeH0Q93p1QEMEZVl4vIQCBOVScDo4EPRWQdrsXRybd5P6AB8IyIPONb1kZVd+Q2HmMKI1U3jex770F0NDz5pNcRmfxKVHN2dUdiZRQwRKNPuLU2bEVFRWlcnE2tbsxRqu7y1JtvQv/+8MILdkuu+ScR+VVVsx0i6k/LozVwp8TKelyfh7+36hpjPKLqLk+9+SY88oglDpN3/iSPtvgSRpBiMcYEgaq7PPXaa9CvH7zyiiUOk3fZJg+Jlbkara1xg/MyJo6jiaRckGIzxgRAbCy89BLcfTcMHWqJwwRGTloeVwBotNq4UxNyb7wBixe7AWzGfy+84JJHjx4wbJglDhM4OSmMuDDoURiThUOHYOBAGDvW1V4y/nnlFXjqKeja1dWrsvnHTSDl5J+T/a1iPPHpp7Brl3s+fbq3seQ3Q4e6mQA7dnSttogIryMyBU1OLludLrHyyMne1Gh9LYDxGHPM8OFw1lmwezd89x106+Z1RPnDyJHultybb3YDAYv6VTvbmJzJyT+rCKAM1gIxIbRkCSxY4O4Qiotz1V7T0+3SS3Y2boQHHoC2bWHCBChWzOuITEGVk+SxTaN1YNAjMSaD4cOhZElXrK9yZfjoI/j9d2je3OvIwlv//i7BvvsuFC/udTSmILM+DxN29u2D8ePdHBOVKkEbXw3l777zNq5wN2+eK3T4+OMQGel1NKagy0nyuCroURiTwYcfwoEDx6dCrV4dzj/fkseppKfDww9DzZrwxBNeR2MKg2yTh0brrlAEYgy40dDDh0OLFnDhhceXt23r/rJOSvIutnD20UewaBG8+CKULu11NKYwsO5HE1bmzoXly4+3Oo5q29bNejdrljdxhbMDB1xfR1SU3ZFmQseShwkrw4dD+fJuatSMWrWCUqVg2jRv4gpnr7wCW7fCkCF2N5oJHfunZsLGjh0waZK7wyrzpZcSJeCKK6zfI7OtW+F//4PbboPWrb2OxhQmljxM2Bgzxl2a6ts36/fbtoU//3QP4zz5pJuLfPBgryMxhY0lDxMW0tJgxAi4/HJo3Djrddq2dT+t9eHExcEHH7i7rOrV8zoaU9hY8jBh4bvv3OjozB3lGTVsCHXrWvIAd1faQw9B1ao2lazxhiUPExaGD4dq1eCmm06+johrfcycCSkpoYstHE2a5G5dfv55KGcz6hgPWPIwntu0Cb79Fu66K/uSGm3burEe8+eHJrZwlJzsBgKedx707Ol1NKawsuRhPDdypGtV9OmT/bpXXunKixfmS1dvvOEu8Q0ZYqXWjXcseRhPpaS4In7XXw916mS/fvnycOml3iePxYtdx/6UKaE97vbtMGgQtG/vEqkxXrHkYTz1+edufMe99+Z8m7Zt4bff3HZeSEtz84GvWgW33go//xy6Yz/zjJth8eWXQ3dMY7JiycN4avhwqF//eOXcnDh6y65XswuOGuXqSA0Z4qrX3nCDK6kSbH/8AaNHw/33u0myjPGSJQ/jmeXL4ccf3V/x/pTVuOACN8eHF5euduyAAQPcaPcHH3STVJUs6RLa5s3BO64qPPIIVKzoWh/GeM2Sh/HMO++4u6t69PBvu4gIuOaa47MLhtITT7hChMOGuU7+unVdva2kJNd6SkgIznG//hpmzICYGJdAjPGaJQ/jiaQkNzr6ttvg9NP9375tW9d5/McfgY/tZH78EcaOdZMtnX328eXnnee+3DdtguuuC3zZ+JQUeOwx10F/992B3bcxuWXJw3ji44/djIGnGlF+KqGeXfDIERfrGWfAU0/98/3LLnOz+P32G9xyS2AHMQ4bBmvXwquv2pzkJnxY8jC5tnFj7i4bHZ3w6dxzoWXL3B27Zk23faiSx+uvw4oV8OabrjR8Vtq3d2NWvv8e7rwzMJfUEhMhNta1tK69Nu/7MyZQLHmYXJk61RXja9TIDVrbty/n2/7yixsncc89rt8gt9q2dZNHBXt2wS1bXF9D+/Zw442nXrdnT3jpJdeyevhhlyhzQxV++MEdb/9+1+owJpxY8jB+U4XoaHebatWqrkBfrVruFtLVq7PffvhwKFMm77PeHZ1dcPbsvO0nOw8+6M556NCcrf/EEy5xDB3qpoX1R1oafPYZXHSRuylg0yZ3e+455/gftzFBpaoF8tGiRQs1wTF1qiqojhrlXv/yi+odd6gWK+aWt2vn1klL++e2iYmqJUuq9u2b9zgOHVI97TTVfv3yvq+T+eYbd04vvujfdmlpqt26nfh7OpXDh1VHj1Zt1Mht06CB2y45OXdxG5NbQJzm4DvW8y/5YD0seQRHerrqJZeo1qnjvvAy2rZNNTZWtXp19y/rrLNU33xTdd++4+u8+qp77/ffAxPPtdeqNmwYmH1ldvCgar16qo0b//NccyIlxcVXpIjq559nvc7+/aqvvaZaq5b7vTRvrvrJJ6qpqXmL3ZjcsuRhySMovv/e/asZPvzk6xw+rDp+vOrFF7t1y5ZVffBB1TVr3Bd9y5aBi+f1190x1q8P3D6Pevppt+9Zs3K/j6Qkl2xLlFCdPfv48oQE1eho1UqV3DEuv1x12jSXnI3xkiUPSx4Bl56u2qqVamRkzi+nLFig2rXr8UtaoPrhh4GLaeXK7JNZbqxapVq8uLv0lFcJCa71Uq6c6pQpqg89pFqqlIu7QwfV+fPzfgxjAiWnyUPcugVPVFSUxsXFeR1GgTJrlqvk+tZbcN99/m27bZubZnblSjfQrmTJwMSk6kZ5X3ABfPFF4PbZpo2rX7VqFVSvnvd9btnibkuOj3cj5Lt0gf/+1zrCTfgRkV9VNSq79UJ6t5WItBOR1SKyTkT6Z/F+CRGZ6Ht/oYjU9S2vLCKzRCRJRN4KZczmuNhYN76iVy//t61Rw93uOnFi4BIHHJ9dcMYMd+dVIEyc6G6THTQoMIkDoHZtNwNibCz8+acbXW+JwwSDqpKWnhb044QseYhIBPA2cC3QBOgsIk0yrdYL2K2qDYAhwGDf8mTgGeCxEIVrMpkzxz3++9/AfvkHQtu2bizEggV539feve422xYtoG/fvO8vo4YN4dln3Sh1Y4Jh456N3PjxjTw769mgHyuULY+LgHWqul5VU4AJQIdM63QAxvqeTwKuEhFR1QOqOheXRIwHnnvOzTHeu7fXkfzTVVcFbnbB6GhXM2v4cJulz+QfR9KOMHjuYJq83YTZG2dTrUy1oB8zlMmjFrAlw+t437Is11HVVGAvUDmnBxCRPiISJyJxO3fuzGO45qh589xloSeegNNO8zqaf6pQAS65JO/JY8kSV36kb1+48MLAxGbyZtiiYfT6qhdH0gJ0TbIAmrt5Ls1HNKf/jP60bdCWlfet5IGLHwj6cUOZPLIqRJG5tz4n65yUqo5U1ShVjTo9N6VaTZYGDnQjyQN9GSeQ2raFX3/NfUn09HRXLqVKFdfXYby3dPtSHpz2IGOWjOGeb++hoN7ck1uJBxO5a/JdXPbeZexP2c9Xnb7ii9u/oHb52iE5fiiTRzyQ8awigb9Oto6IFAXKA7tCEp3J0oIFrtDfY4+dvCBgOGjb1t0lldvZBUePduf6yivhNV9GWnoaK3euZE3iGjbs3sCWvVv4O+lvEg4msDd5LwdSDpCSlkK6hnhikyBLS0+j99e9qVCyAg9c9ACjF4/mpbkveR1WWFBVxi4Zy9lvn837S97n8ZaPs/ze5bRv1D6kcRQN4bEWAQ1FpB6wFegEdMm0zmSgOzAfuBWYqfbnhqcGDnR/jee2dHqotGgBlSq5iZk6d875dkeOuFuIn3wS/vWvvNfbCqTU9FTajmvLzA0zc7S+IBSLKEbRIkU5v9r59L6gNx3P6Ujp4qWDHGngvb3obRZuXci4m8fR5dwu7Dy4kydnPkn9ivW5ventXofnmVUJq+j7TV/mbJrDpZGX8s4N73BetfM8iSVkyUNVU0WkH/AdEAGMUdXlIjIQNyhlMjAa+FBE1uFaHJ2Obi8iG4FyQHERuQloo6orQhV/YbRokaue++KLrpBhOMs4u6Bq9tV6VWHKFNeiWrXKdbqPHp23Kr+BNnDOQGZumEn0v6I5q/JZHEk7Qmp6KkfSfT9P8jo5NZlpf06j5+SePPTdQ3Q9tyu9L+hN8xrNvT6lHNm8dzNPzniSdg3a0eXcLogI73V4jy37ttD9y+5EloukVZ1WXocZUoeOHOKFn15g8LzBlC5emhE3jOCuC+6iiHhY2zYnIwnz48NGmOfdDTe48hkZa1OFszFj3KjtJUtOvd4ff6hefbUeq781eXL4lQWZ/ud0lRjRHl/2yNX26enp+tOmn/SOz+/Qks+XVGLQFiNa6Ii4EbovOXw/0PT0dL1+/PVaalAp3bB7wwnvJRxI0IZDG2rlwZV1beJabwL0wHfrvtMz3zhTiUHv+PwO3Z60PajHw8qTWPLIi19/df86nnvO60hyLj7exTx4cNbv//23ap8+rlBhxYqqb7zhiheGm7/2/aVVX66qTd5uokmHk/K8v10Hd+nQBUO16bCmSgxaelBpveuru3Rh/EJND7OsOWHpBCUGfe3n17J8f03CGq08uLI2HNpQEw4khDi60FqTsEZvmXiLEoOe9eZZOmP9jJAc15KHJY88uekm1QoVVPfs8ToS/zRtqnrllScuO3TIlVQvW1a1aFFXWypDdPonAAAXlUlEQVQx0Zv4spOalqpXvH+FlhpUSpfvWB7Qfaenp+v8LfO155c9tdSgUkoMev7w8/WthW/p7kO7A3qs3Eg8mKhVX66qUSOjNDXt5GWFf9r0kxZ/rrheNuYyTT5S8GrWb0/arvd9e58WHVhUSw8qrQNnDwzpeVrysOSRa0uWuH8ZMTFeR+K/Rx91BQ2TktylqAkTVM84Q48VIVy92usITy1mVowSg763+L2gHmfPoT06fNFwbf5OcyUGPe3503Tg7IGn/NIOth5f9tCI2Ahdsi2b646q+vHSj5UYtMtnXULeetq2f5u+8OML+q/3/qUxs2J0055NAdlv0uEkfW7Oc1rmhTIaERuh93xzj/69/++A7NsfljwseeTaLbe4CrC7dnkdif+Olox/7jnVSy91z88/X3VGaFr8eTJj/QyVGNHuX3QP6XHjtsbpbZ/cpsSgl425LGBfhv6YsX6GEoP2n94/x9sM+nGQEoM+M/OZIEbmpKWn6Q9//qC3fnKrFh1YVIlBz37rbCUGlRjRaz64RicsnaCHjhzye99H0o7oyLiRWuOVGkoM+u+J/9ZVO1cF4SxyxpKHJY9cWbrU/at4Jvj/H4Pi6OyC4CalGj06f0ystG3/Nq32cjVt/FbjgPRz5MaHv3+oZV8oq+VfLK8Tl00M2XEPphzUM984UxsMbaAHUw7meLv09HTt+WVPJQZ9f/H7QYltR9IO/d/c/2mDoQ2UGLTS4Er6yLRHjn25b9i9QaNnRWudIXWUGLTiSxW137f9dPG2xTmKf/Kqydr4rcZKDNpydEudu2luUM7DH5Y8LHnkSseOqmXKhG+fQE68/rq75JZf7hJLTUvVq8Zepac9f5ou3b7U01jWJa7Ti0ddrMSgPb7sofsP7w/6MftP76/EkKsO4ZTUFL1q7FVabGAxnbl+ZkDiSU9P19kbZmvnSZ21+HPFlRi09ZjWOu73cSdtWaSlp+n3677XTpM6aYnnSigxaPN3muubC9/UXQf/2YRfGL9Q/++9/zvWGf75is/D5uYFSx6WPPy2fLmqiOqAAV5HUrgMnD1QiUFH/zba61BU1X0hPzXjKZUY0YZDG+qirYuCdqwl25ZoRGxErm9JVlXdfWi3Nnm7iZZ/sbyu2LEi1/tJPJioQ+YPOXY5qvyL5fX+Kffrsu3L/N7PWwvfOtafVOK5EtppUif9ft33uiZhjXb8tKMSg1Z9uaoOXzRcU1LD65a/nCYPmwzKHNOlC0yeDBs3ulHlJvhmb5zNVR9cRZdzu/DBTR8gYTRKcc7GOXT7oht/J/3NoCsH8VjLxwI6KC0tPY1LRl/C5r2bWXnfSiqdVinX+9q0ZxMXv3sxpxU7jQW9Fpyyqmxaehpb929lw+4NbNizgQ27N7AyYSVfr/ma5NRkLom8hLtb3E3HczpSqljeavIs3raY95a8x7g/xrE7eTcApYqV4vGWj/PopY9StkTZPO0/GHI6GZQlDwO4UdZNmsDjj8Pgwdmvb/Jue9J2mo1oRvkS5YnrE0eZ4uE3jH/XoV3c/c3dTFoxiSvrXckHN31ArXKZi2HnzpD5Q3jk+0f4+JaP6dS0U/YbZGPR1kX86/1/cV6185jUcRJ/7f/rhASxYY97bNqziSPpx6v0FpEiRJaL5PqG13N3i7s5v/r5eY4ls+TUZL5a9RWrE1fT+4Le1ChbI+DHCBRLHpY8ckzV1XT68kvYsMFV0DXBla7ptBvXjp82/8TCuxZ6Vp8oJ1SVMYvH8MC0ByhZtCSj24/mprNvytM+N+7ZyDnDzuGKulfwdeevA9bi+nLVl/x74r/RTMW4q5SqQv2K9alXoZ57VHQ/61esT+3ytSkeUTwgxy8Icpo8QlkY0YSZ/fvddKjDhsGKFa7VYYkjNF786UWmr5/OyBtGhnXiABARel3Qi9Z1WtPl8y7cPPFm+rboy6ttX83VZR1V5Z5v76GIFGHY9cMCeqnuprNvYlq3aazYueJYsqhboW5YXh7K76zlUQitXAlvv+0Sx/79EBUF990HXbtCsWJeR1fwzdk4hys/uJJOTTsx7uZxYdXPkZ2UtBSenvk0L//8Mo0qN6Lbed1oVbsVF9W6KMfVez9a+hFdP+/KG+3eCMmkRcY/dtnKkscJUlPh66/hrbdg5kwoXhxuvx369YOLLvI6usJjx4EdNB/RnDLFyxDXOy7f/kX8w/ofePT7R/lj+x8AREgEzao3o1XtVrSs3ZJWdVoRWS7yH9slHEyg8duNObPimczrOY+IIjbXb7ix5GHJA4AdO+Ddd+Gdd2DLFqhTx80IeNddYJMthla6pnPt+GuZs3EOC+9aGJSO2VDbfWg38+PnM2/zPH6O/5mF8Qs5lHoIgDrl67hE4kso51U7j16Te/HR0o/4rc9vnFvtXI+jN1mxPo9CTBUWLnStjE8/hZQUuPpqNz/3DTe4uS9MaO1J3sM9397D939+zzvXv1MgEgdAxdMqcl3D67iu4XUAHEk7wu/bf2fe5nnM2zKPHzf9yIRlEwAoXaw0B44c4MnWT1riKACs5VFAHDkC8+a5CY6mTIHly6FcObjzTrj3XmjUyOsIC6+fNv1Ety+6sXXfVgZeMZABrQfkq36OvFBVNu/dzM9bfmbelnnsO7yPkTeOpGTRkl6HZk7CWh6FQHy8m+lv6lT44QfX+V2sGFx2mevL6NYt/GcALMiOpB0hdk4sL859kXoV6jGv5zwujrzY67BCSkQ4o8IZnFHhDDqf68f8wCbsWfLIR462Lo4mjKVL3fLatd283dde66ZTLZs/+2ALlLWJa+n6eVcW/bWIns168nq71/Nt57gxWbHkEeZ274bPPnPJYvr0462L1q3hf/+D665zI8MLyVWQsHd0QN2D0x6keERxPr3tU25tcqvXYRkTcJY8wtjcudCpE2zdCpGRhbN1cejIIdI1PcdjCLyUeDCRPt/04fOVn3NlvSsZe9PYLG9XNaYgsOQRhtLT4dVXYcAAqFvXXaq69FJvWxep6als3LORNYlrWJ2wmjWJa9i0dxOVS1UmsmwktcrVIrJcJJHlIqlVthZVS1fN0T38qsquQ7v4c/ef/LnrT/czw/O/9v9FESnCedXOo1XtVrSu05pWtVtRu3ztPJ1PUkoSi7YuYkH8AhZsXcBv236jZtmatK7dmlZ1WtGqdqtTFtfL7If1P9D9y+7sPLCTl695mUcufSSgRQSNCTd2t1WY2bXL3SH19ddwyy0wejSULx+aY6sqCQcTWJ24+liSOPp83a51JxSTq3RaJc4ofwa7k3ezdd/WE94DKFqkKDXK1DghoUSWi6RsibJs3LORdbvWHUsSew/vPWHbGmVqcGalMzmzonukpqcyb8s8FsQv4MCRAwDULlf7WCJpVacV51Y996TJKl3TWZ2w2iUKX7JYtmMZ6ZoOQKPKjWhRswVb9m7hl62/cDjtMAANKjU4fozarTi7ytn/uEvqcOphnpr5FK/Of5Wzq5zNR//+iOY1muftgzDGQzZIMB8mj4UL3ajvv/5yLY9+/QLX2khOTebvpL9PeGzbv809P+Cer9u17ljZaIDiEcVpUKkBjSo34qzKZ9GociMaVXHPq5Q6XrM9XdNJOJhA/L544vfFs3XfVvd8f4bn++KPffEXLVKUuhXqHksOxxJFpTOpX7H+Seslpaan8sf2P5i7eS7ztsxj7ua5/LX/LwDKFi/LpbUvPfZFn5KWcixRLIxfeCxBlS9RnksiLzn2uKjWRSeUAj+cepjftv12wjESDyUCUPm0yrSs3fJYQildvDR3fnknv2//nXui7uGVNq/kuYS3MV6z5JGPkoeqG8D32GNQsyZ88knuS4akazqjfh3FnE1zXIJIcgliT/Kef6wrCKeXPp3qZapTvUx16leoT6MqjY4liTPKnxGw8hGqyr7D+9h7eC81y9akaJG8XzFVVTbt3cS8zfOOfdkv27HsWEXVIlKEplWbckmt48miUZVGfl1OUlXWJK45lkjmbZnHmsQ1x96vUqoKY9qP4cZGN+b5fIwJB5Y88kny2LsXevVyd1TdcAOMHQuVcjknTsLBBLp/2Z0pa6dwRvkziCwXeSwx1ChT4/jzsu551dJVA/IlHk72JO9hQfwCikcU58KaFwbl9tgdB3bw85afWZu4ljvOv4PqZaoH/BjGeMWSRz5IHosXw223uZn7XnwRHn0UiuSyj3Xu5rl0/qwzOw7s4LU2r3HvhfcWmlHMxpjAyWnysNtBPKAKI0a4O6iSk2HOHDeXRm4SR7qm89Lcl7j8/cspEVGC+b3mc99F91niMMYEVcG6ZpEPJCXB3XfDRx9BmzYwblzuq9vuPLCT/3z5H6atm0bHczoy6sZRlCtRLrABG2NMFix5hMiBA/DttxAdDWvWwHPPwZNP5v4y1Y+bfqTzZ51JPJjI8OuHc3eLu621YYwJGUseQZSU5BLGp5+6SreHDrmR4tOnw5VX5m6faelpvDj3RaJnR9OgUgOmdJlSYMp7G2PyD0seAZaUBN984xLG1KkuYVSrBj16wL9vSePsFjupWa4a4H8rYXvSdrp90Y0f1v9A13O7Mvz64VZszxjjCUseAbB//4kJIzkZqleHnj3hX9ftYG/Vb5m+cRod435g10+7KFO8DI2rNKbJ6U1OeNStUPekYxBmbphJ18+7sid5D+/e+C49m/e0y1TGGM9Y8silI0fc2IyJE13COHwYatSAO3umcmar34ivMJHpG6fx9qIVgCu50b5Re5pVa8b63etZkbCC6eunM/b3scf2eVrR0zi7ytknJJTGVRozYdkEYufE0qhKI6bfMZ2mVZt6ddrGGANY8vCbKnz1FfTvD6tXQ82ayi13JFLhgumsKfU+722Zw+G1hykRUYL/O+P/6NmsJ23ObEPTqk2zbCnsSd7Dyp0rWbFzhXskrOCnzT8xfun4E9brfn533r7u7XxRXdYYU/DZIEE/LFjgxmPMnQu16yfRsNNoVlT4H38fdPWVmpzehLZntqXtmW257IzL8lTnaP/h/axKWMWKnSuoUqoK1591faBOwxhjTsqmoQ2gdevcbbWffgqlKu6n/K0D2dJ4CPtKlaFtPZcs2pzZJqBzN5QtUZYLa13IhbUuDNg+jTEmUEKaPESkHfAGEAG8q6ovZXq/BPAB0AJIBG5X1Y2+9wYAvYA04AFV/S7Y8SYkQP9nD/D+qJJoxGG4fDCHW73BNU0v547zJnLDWTdQomiJYIdhjDFhJ2TJQ0QigLeBa4B4YJGITFbVFRlW6wXsVtUGItIJGAzcLiJNgE7AOUBN4AcROUtV04IRa+K+g/R7dg2TRjYkNbkkXPAuzTp9Ra//u45OTdedUI7cGGMKo1C2PC4C1qnqegARmQB0ADImjw5AjO/5JOAtcb3MHYAJqnoY2CAi63z7mx/oIEd/8we9u1VC9zbjtHOm0/OR5Tzcvh1nV7k70Icyxph8K5TJoxawJcPreODik62jqqkisheo7Fu+INO2tTIfQET6AH0A6tSpk6sg21xYn5r1NvHYf3fywO1XUUSuydV+jDGmIAtl8shqRFvmW71Otk5OtkVVRwIjwd1t5W+AALWrlSF+8Tm52dQYYwqNUJZkjwdqZ3gdCfx1snVEpChQHtiVw22NMcaESCiTxyKgoYjUE5HiuA7wyZnWmQx09z2/FZipbiDKZKCTiJQQkXpAQ+CXEMVtjDEmk5BdtvL1YfQDvsPdqjtGVZeLyEAgTlUnA6OBD30d4rtwCQbfep/gOtdTgfuCdaeVMcaY7NkIc2OMMcfYNLTGGGOCxpKHMcYYv1nyMMYY4zdLHsYYY/xWYDvMRWQnsMmPTaoACUEKJ9wV1nMvrOcNhffcC+t5Q87P/QxVPT27lQps8vCXiMTl5A6DgqiwnnthPW8ovOdeWM8bAn/udtnKGGOM3yx5GGOM8Zslj+NGeh2AhwrruRfW84bCe+6F9bwhwOdufR7GGGP8Zi0PY4wxfrPkgZtbXURWi8g6EenvdTyBJCK1RWSWiKwUkeUi8qBveSURmS4ia30/K/qWi4gM9f0u/hCRC7w9g7wRkQgRWSwi3/he1xORhb7znuir8IyvYvNE33kvFJG6XsadVyJSQUQmicgq32d/aWH4zEXkYd+/82Ui8rGIlCyon7mIjBGRHSKyLMMyvz9jEenuW3+tiHTP6lhZKfTJI8Pc6tcCTYDOvjnTC4pU4FFVbQxcAtznO7/+wAxVbQjM8L0G93to6Hv0AYaHPuSAehBYmeH1YGCI77x3A718y3sBu1W1ATDEt15+9gYwTVXPBs7H/Q4K9GcuIrWAB4AoVW2Kq97diYL7mb8PtMu0zK/PWEQqAdG4WV0vAqKPJpxsqWqhfgCXAt9leD0AGOB1XEE836+Aa4DVQA3fshrAat/zEUDnDOsfWy+/PXCThs0ArgS+wc1ImQAUzfzZ46YKuNT3vKhvPfH6HHJ53uWADZnjL+ifOcensa7k+wy/AdoW5M8cqAssy+1nDHQGRmRYfsJ6p3oU+pYHWc+t/o/50QsCX7O8ObAQqKaq2wB8P6v6VitIv4/XgSeAdN/rysAeVU31vc54bsfO2/f+Xt/6+VF9YCfwnu+S3bsiUpoC/pmr6lbgFWAzsA33Gf5K4fjMj/L3M871Z2/JI4fzo+d3IlIG+Ax4SFX3nWrVLJblu9+HiNwA7FDVXzMuzmJVzcF7+U1R4AJguKo2Bw5w/PJFVgrEufsut3QA6gE1gdK4yzWZFcTPPDsnO9dc/w4seRSC+dFFpBgucYxX1c99i7eLSA3f+zWAHb7lBeX30QpoLyIbgQm4S1evAxVE5OgMmhnP7dh5+94vj5vNMj+KB+JVdaHv9SRcMinon/nVwAZV3amqR4DPgZYUjs/8KH8/41x/9pY8cja3er4lIoKb3nelqr6W4a2M88V3x/WFHF3+H9/dGZcAe482g/MTVR2gqpGqWhf3mc5U1a7ALOBW32qZz/vo7+NW3/r58q9QVf0b2CIijXyLrsJN4VygP3Pc5apLRKSU79/90fMu8J95Bv5+xt8BbUSkoq/l1sa3LHted/iEwwO4DlgD/Ak85XU8AT631rhm6B/AEt/jOty13RnAWt/PSr71BXf32Z/AUtydK56fRx5/B5cD3/ie1wd+AdYBnwIlfMtL+l6v871f3+u483jOzYA43+f+JVCxMHzmQCywClgGfAiUKKifOfAxrm/nCK4F0Ss3nzHQ0/c7WAf0yOnxbYS5McYYv9llK2OMMX6z5GGMMcZvljyMMcb4zZKHMcYYv1nyMMYY4zdLHqZQE5GkIOyzroh0OcV7y7J6L4/HvFxEWmZ4/b6I3HqqbYzJC0sexgReXSDL5BFEl+NGUxsTEpY8jOHYX+6zM8yBMd43ShkR2Sgig0XkF9+jgW/5CX/dZ2jFvARcJiJLROThUxwzQkReFpFFvjkW7s5BLNf5ls31zc/wja/gZV/gYd8xL/Md4v9E5GcRWW+tEBNoljyMOa458BBuXpf6uPpYR+1T1YuAt3A1sk6lP/CTqjZT1SGnWK8XrkzEhcCFQG8RqXeyWESkJK5k9rWq2ho4HUBVNwLv4OasaKaqP/n2UQNXYeAGXEIzJmAseRhz3C+qGq+q6bgyLnUzvPdxhp+XBuh4bXD1hpbgyuRXxk3Wc7JYzgbWq+qGTDGdzJeqmq6qK4BqAYrZGMCVbjbGOIczPE/jxP8fmsXzVHx/gPkuKxX383gC3K+qJxSiE5HLTxJLVuWzTyXjPvzd1phTspaHMTlze4af833PNwItfM87AMV8z/cDZXOwz++Ae3wl8xGRs3yTNp3MKqC+HJ9r+/YM7+X0mMYEhLU8jMmZEiKyEPcHV2ffslHAVyLyC66C6QHf8j+AVBH5HXj/FP0e7+IuR/3ma7nsBG46WQCqekhE7gWmiUgCrhLsUV8Dk0SkA3B/bk7QGH9YVV1jsuGbUCpKVRPCIJYyqprkSzZvA2uz6ZQ3JijsspUx+UtvXwf7ctzMdyM8jscUUtbyMMYY4zdreRhjjPGbJQ9jjDF+s+RhjDHGb5Y8jDHG+M2ShzHGGL9Z8jDGGOO3/wdJ/LnFf8bOGgAAAABJRU5ErkJggg==\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "compare_times(f,h,genintlist(1000))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## MergeSort algorithm\n", "\n", "Recall: MergeSort splits the input list into two equal sized halves, recursively sorts each one, then merges the two sorted lists together." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "def merge(A, B):\n", " C = []\n", " i = j = 0\n", " while i<len(A) and j<len(B):\n", " if A[i] < B[j]:\n", " C.append(A[i])\n", " i += 1\n", " else:\n", " C.append(B[j])\n", " j += 1\n", " C += A[i:] + B[j:]\n", " return C\n", "\n", "def merge_sort(L):\n", " if len(L) <= 1:\n", " return L[:]\n", " else:\n", " A = L[0:len(L)//2]\n", " B = L[len(L)//2:]\n", " return merge(merge_sort(A), merge_sort(B))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 5, 6, 8, 11, 13, 20]\n" ] } ], "source": [ "print(merge([1,2,5,20], [6,8,11,13]))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]\n", "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n" ] } ], "source": [ "L = list(range(10,0,-1))\n", "print(L)\n", "print(merge_sort(L))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## SelectionSort\n", "\n", "This algorithm does the following on a list of size $n$:<br>\n", "1) Find minimum element and put it at the beginning.<br>\n", "2) Recursively sort the last $n-1$ elements. " ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": true, "jupyter": { "outputs_hidden": true }, "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "#This function returns the index of the minimum element in list L\n", "def find_min_index(L):\n", " current_index = 0\n", " current_min = L[0]\n", " for j in range(1,len(L)):\n", " if current_min > L[j]:\n", " current_min = L[j]\n", " current_index = j\n", " return current_index\n", "\n", "def selectionsort(L):\n", " if len(L)<=1: \n", " return L # a one-element list is always sorted\n", " min_idx = find_min_index(L) #non-recursive helper function\n", " L[0], L[min_idx] = L[min_idx], L[0] \n", " return [L[0]] + selectionsort(L[1:len(L)])" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "compare_times(selectionsort,mergesort, genintlist(300))" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "n = 16\n", "selection = [ \"*\"*(n-i) for i in range(n)]\n", "mergestars = []\n", "\n", "def print_stars(n):\n", " global mergestars\n", " mergestars.append(\"*\"*n)\n", " if n <= 1: \n", " return\n", " print_stars(n//2)\n", " print_stars(n//2)\n", "\n", "print_stars(n)\n", "def selection_vs_merge_stars():\n", " global mergestars,n,selection\n", " for i in range(max(len(selection),len(mergestars))):\n", " s = \"\"\n", " if i < len(selection):\n", " s= selection[i]\n", " s += \" \"*(10+n-len(s))\n", " if i < len(mergestars):\n", " s += mergestars[i]\n", " print(s)\n", "\n", " " ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "**************** ****************\n", "*************** ********\n", "************** ****\n", "************* **\n", "************ *\n", "*********** *\n", "********** **\n", "********* *\n", "******** *\n", "******* ****\n", "****** **\n", "***** *\n", "**** *\n", "*** **\n", "** *\n", "* *\n", " ********\n", " ****\n", " **\n", " *\n", " *\n", " **\n", " *\n", " *\n", " ****\n", " **\n", " *\n", " *\n", " **\n", " *\n", " *\n" ] } ], "source": [ "selection_vs_merge_stars()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Analysis of running time " ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 3 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "timer(mergesort,genintlist(1000));" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "If merging two lists of $n/2$ elements takes $n$ steps, time to sort $n$ elements is\n", "\n", "$T(n) = 2T(n/2) + n$\n" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def T(n):\n", " if n <=1: return 1\n", " return 2*T(int(n/2))+n\n", "\n", "plotfunctions(T,\"T\",lambda n: n, \"$n$\", lambda n: n*log(n), r\"$n\\log n$\", n = 500)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "__Claim:__ For $n\\geq 2$, $T(n) \\leq 2 n\\log n$.<br>\n", "__Proof:__ By induction <br>\n", "$T(2) = 2T(1)+2 = 4 = 2\\cdot 2 \\cdot \\log 2$ <br>\n", "$T(n) = 2T(n/2) + n$<br>\n", "$\\leq 2\\cdot 2(n/2)\\log(n/2) + n$<br>\n", "$= 2n(\\log n - 1) + n \\leq 2n\\log n$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## QuickSort" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "__Algorithm Quicksort:__ Input `L` of length `n`.<br>\n", "1) Pick random `j` in `[0,...,n-1]` <br>\n", "2) Let `x=L[j]` and reorder `L` so that locations `L[0],..,L[i-1]` are smaller than `x` and locations `L[i],...,L[n-1]` are at least as large as `x`. <br>\n", "3) Recursively sort `L[0],...,L[i-1]` and `L[i+1],...,L[n-1]`" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "def quicksort(L, beg=0, end=None):\n", " if end==None: end = len(L)-1\n", " if end <= beg: return\n", " x = L[random.randint(beg,end)]\n", " i,j = partition(L,x,beg,end)\n", " quicksort(L,beg,i)\n", " quicksort(L,j,end)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "def partition(L,x,beg,end):\n", " i = beg\n", " j = end\n", " while i<j:\n", " if L[i]<x: i += 1\n", " elif L[j]>= x: j -= 1\n", " else: L[i],L[j]=L[j],L[i]\n", " while j<= end and L[j]<=x: j+=1\n", " return i-1,j" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "[0, 0, 1, 2, 4, 7, 12, 14, 15, 15]" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "L = [random.randint(0,600) for n in range(300)]\n", "quicksort(L)\n", "L[:10]" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 3 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "timer(lambda L:quicksort(L),genintlist(400));" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "compare_times(lambda L: quicksort(L),mergesort, genintlist(500))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Quick sort is not necessarily faster than mergesort but the main advantage is that it sorts __in place__" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "[Sorting demo by Justin Johnson](http://cs.stanford.edu/people/jcjohns/sorting.js/)" ] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.5" } }, "nbformat": 4, "nbformat_minor": 4 }