{ "cells": [ { "cell_type": "raw", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
This notebook should be viewed on nbviewer.jupyter.org to render properly.
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.core.display import HTML\n", "HTML('')" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import urllib\n", "response = urllib.request.urlopen(\"https://gist.githubusercontent.com/sgttwld/9deff60facb16918e54410cca3d65648/raw\")\n", "css = str(response.read().decode(\"utf-8\"))\n", "HTML(\"\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "%config InlineBackend.figure_format = 'retina'" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# imports\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "import pandas as pd\n", "import tensorflow as tf\n", "from RD_BA import BA\n", "from RD_GD import GD\n", "from RD_MA import MA, MA_iter" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# plot settings\n", "sns.reset_defaults()\n", "sns.set(\n", " rc={\n", " 'figure.figsize': (7,3),\n", " 'axes.titlesize': 10,\n", " 'axes.labelsize': 10,\n", " 'legend.fontsize': 9,\n", " 'xtick.labelsize': 8,\n", " 'ytick.labelsize': 8,\n", " 'axes.spines.top': False,\n", " 'axes.spines.right': False,\n", " }, \n", " style=\"white\"\n", " )" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "lines_to_next_cell": 1 }, "outputs": [], "source": [ "def get_source(num):\n", " return tf.constant( np.random.beta(a=2,b=2,size=(num)) ) " ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "lines_to_next_cell": 1 }, "outputs": [], "source": [ "def legend_string(r):\n", " return ['beta={}\\nN={}\\n{} iterations\\n{:.2f} seconds'.format(\n", " r['beta'],len(r['xhat']),r['episodes'],r['elapsed'])]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# parameters\n", "beta = 15.0\n", "num = 5000" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Rate-distortion: _Blahut-Arimoto_ vs. _gradient descent_ vs. _mapping approach_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Consider a continuous source $X$, for example distributed according to a beta distribution:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABM8AAAJJCAYAAAC9LhAxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAewgAAHsIBbtB1PgAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xt8z/X///H7e++NnTAbsjBymnLKOVQskvp85pBPEfaJyjFEiD4dhBgJn4gccyinyVTOZ6Ocz2HfhpoNOY+xQzu8378/9nu/PmZ7MYyN3a6XS5e21+v5er4ez/dQ3XseLHa73S4AAAAAAAAAGTjldAEAAAAAAABAbkV4BgAAAAAAAJggPAMAAAAAAABMEJ4BAAAAAAAAJgjPAAAAAAAAABOEZwAAAAAAAIAJwjMAAAAAAADABOEZAAAAAAAAYILwDAAAAAAAADBBeAYAAAAAAACYIDwDAAAAAAAATBCeAQAAAAAAACYIzwAAAAAAAAAThGcAAAAAAACACcIzAAAAAAAAwAThGQAAAAAAAGCC8AwAAAAAAAAwQXgGAAAAAAAAmCA8AwAAAAAAAEw453QBAAAAWZWSkqKVK1dq48aN+u2333T58mVJUuHChVW+fHk999xzat26tTw9PXO40keL3W7X3LlztWTJEkVHR0uSihUrpkmTJql8+fI5XB0AAMD9ZbHb7facLgIAAOB2fv/9d73//vs6fvz4Ldt5e3vr008/1csvv/yAKnv0ffXVV5o8eXK6axaLRXv37pWHh0cOVQUAAPBgEJ4BAIBc79y5c2rTpo0uXLigIkWKqEuXLqpfv76KFSsmi8Wic+fO6ddff9W0adMUExMjq9WqyZMnq3Hjxjld+iPh+eef17lz5/TUU08pODhYvr6+io+Pl6+vb06XBgAAcN+xbBMAAOR606dP14ULF+Tl5aXFixfr8ccfT3ffy8tL/v7+euGFF/Svf/1L165dU3BwsJ5//nk5ObHF6726ePGiJKlNmzaqVKmSJKlQoUI5WRIAAMADw79NAgCAXG/Tpk2SpMDAwAzB2Y3KlCmj7t27S5IiIyN15MiRB1Lfoy41NVWS5O7unsOVAAAAPHiEZwAAINe7cOGCJCkxMfG2bRs3bix/f38988wzSklJybTNxYsXNX78eLVq1Uo1atRQtWrV1KxZM3366aeme6qFhobK399f/v7+OnXqVKZtTp06ZbQJDQ1Nd++FF16Qv7+/Fi9erF9++UUtWrRQlSpV1LBhQ/Xv3z9d26SkJC1dulRvvvmmnn32WVWpUkXPPfec+vXrpwMHDpiOPT4+XtOnT9frr7+uOnXqqGrVqmrSpIk+/vhjnThx4lYf2y3H4vDhhx8a13bu3HnH40pOTtaCBQsUFBSkevXqqUqVKmrUqJH69+9/y3FJaYdF/Pjjj+rQoYPq1aunmjVrqn379lqzZo0kKSgoSP7+/po4cWK65xzXg4KCTPueOHFihrHebP/+/RowYIAaN26sqlWrqm7duurYsaMWLFig5OTkTJ+5sSabzaYFCxaobdu2ql27tp5++mm1atVK06ZNu+2v619//VXvvfeemjRpoipVqqhevXrq1KmTli9fnq7df/7zH/n7++vpp59WfHy8aX979uwxxnv06NFbvhsAALBsEwAAPARKliypEydOaMWKFWrfvr2eeuop07bly5fXzz//bHp/8+bNGjhwoGJjY9NdP3nypE6ePKkffvhB/fv319tvv51t9d/owIEDGjp0qBG4XLx4Md2m+3/99Zd69eqlw4cPp3vu/PnzWrlypVatWqUBAwbonXfeSXf/999/V/fu3XXmzJl010+dOqXFixcrNDRUH3744S1DpPs9rq5duyoiIiLdc2fPntXy5cu1fPlydenSRf3795fFYknX5vr163rvvff0yy+/pLu+d+9e7d27V926dbsvY5Ikm82mL774QrNmzUp3PSkpSbt379bu3bsVEhKiKVOm6LHHHsu0j6SkJL311lvavn17uuvh4eEKDw/XqlWr9P3332c4fOHvv//WkCFDtHTp0nTXr1y5ou3bt2v79u1avXq1xo8fLxcXF7Vs2VJLlixRQkKCNm3apH/84x+Z1rNs2TJJab9XbvV7CQAApGHmGQAAyPVat24tKW1m1euvv66+fftq1apViomJuaN+9u/fr969eys2NlZFihTRsGHDtGnTJm3fvl3ffPONKlWqpNTUVH3xxRdasGDB/RiKfvjhB/n4+Ojbb7/Vtm3bNHnyZCPQSk5OVteuXXX48GE5Ozure/fuWrlypbZv365Zs2apcuXKstvtGjNmjLZt22b0ef78eXXu3FlnzpyRt7e3hgwZoo0bN2rHjh2aO3euGjZsqNTUVH3++eda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nT59WlarVQMGDDCeGzRokDw9PZWcnKy3335b33zzjSIjI3X58mXt2bNH3bt317p16ySlbSaf1ZMjs0vPnj2NZYj9+/fX6NGjFRERoZiYGP32228aNGiQETzWqlVLr7zyivFsqVKl1LNnT0lSaGio+vTpo8OHD+vKlSvas2ePOnfunGlg6PDiiy8aX/fq1UsbNmzQpUuXdOLECY0bN06DBg0ywtmbPfnkk2rfvr2ktJMq//3vf+uXX37R5cuXFRUVpe+++05dunRRcnKy8ufPr4EDB97bB3WD6tWrq1WrVpKkadOm6aOPPlJ4eLhiYmJ08OBB9enTR2vXrpWU9msls9DOEZRt2LBBsbGxKlmypDGTEwAAZJ3FnhObXwAAANyh7du3a8iQIcaSSjMWi0X/+te/9PHHH2d6UuHmzZv1/vvvG4cC3MzZ2Vnvv/++3n777Qz3duzYoa5du2a6jM7FxUWjRo3SV199paioKAUHBxszriTphRde0OnTp9W6dWuNGjXKtP5Tp06pa9euxr5rN8ufP79GjBiRIRjcv3+/evXqpYsXL5r2HRAQoPHjx9/xQQj+/v6SlGFMUtbH9ccff6hHjx6KjIw0bVOtWjVNnTpV3t7e6a7b7XaNGDHCdGZf69attXTpUklpAVnv3r3T3f/000+1aNGiTJ8tU6aM+vbtq759+0pShuWPycnJ+uyzz/TDDz+Y1u3h4aFx48apcePG6a4HBQVp165dqlu3rmntEydONGaW3fzuxMREDRgwwAg+MxMUFKSPP/4403t2u10BAQH666+/JEk9evQwxgkAALKO0zYBAMBDoX79+lq+fLnWrVunrVu36rffftPly5d17do1eXh4qHjx4qpfv74CAwON5ZmZady4sdauXas5c+YoLCxM0dHRktI2h2/QoIHatWtnemLlM888o59++knTp0/Xtm3bdPHiRRUuXFh169ZVly5dVKlSJX311Vf3NM6SJUvqxx9/1MKFC7Vy5UqdOHFCCQkJKlq0qBo0aKC33nor0/pq1Kih1atXa/78+dq4caP+/PNPxcXFqWDBgqpatapat26tl19++Z5quxdly5bVzz//rMWLF2vNmjWKiIjQ9evX5enpKX9/fwUGBurVV1+V1WrN8KzFYtHHH3+sgIAAzZkzRwcPHlRiYqLKly+v9u3bq02bNkZ4lplhw4bpmWeeUUhIiI4cOaKkpCSVLFlSL7/8st56661Ml3M6uLi4aMSIEWrVqpUWLlyo/fv368KFC3JyclKpUqX03HPP6c0330w3SzG7uLq66uuvv9b69ev1ww8/6NChQ7p69aoKFCigp59+WkFBQWrYsKHp8xaLRYGBgZo2bZokTtkEAOBuMfMMAAAADz3H7LjMZp7lZePHj9eUKVNUtWrVW86eAwAA5tjzDAAAAHgE2e12LVu2TJKM/dMAAMCdIzwDAAAAHkHLli3T6dOn5erqmmGPPAAAkHXseQYAAAA8IubMmaOUlBSdOXNGCxculCS99tprpieKAgCA2yM8AwAAAB4Re/fu1Zo1a4zvS5Qooffeey8HKwIA4OHHsk0AAADgEVGzZk0VKFBABQoUULNmzTRv3jwVKFAgp8sCAOChxmmbAAAAAAAAgAlmngEAAAAAAAAmCM8AAAAAAAAAE4RnAAAAAAAAgAnCMwAAAAAAAMAE4RkAAAAAAABggvAMAAAAAAAAMEF4BgAAAAAAAJggPAMAAAAAAABMOOd0Abh/rl27pt9//9343t/fXwUKFMjBigAAAAAAAB4uhGePsN9//10dOnQwvp83b55q166dgxUBAAAAAAA8XFi2CQAAAAAAAJggPAMAAAAAAABMEJ4BAAAAAAAAJgjPAAAAAAAAABOEZwAAAAAAAIAJwjMAAAAAAADABOEZAAAAAAAAYILwDAAAAAAAADBBeAYAAAAAAACYIDwDAAAAAAAATBCeAQAAAAAAACacc7oAAAAAAADuB7vdrri4OMXGxioxMVGpqak5XRKAG1itVrm6uqpgwYLy8PCQxWLJ6ZIyRXgGAAAAAHjk2Gw2RUVFKSEhIadLAWAiJSVFf//9t65evSo3Nzf5+fnJySn3LZIkPAMAAAAAPFLsdnuG4MxischqteZgVQBulpqaKrvdLklKSEhQVFSUSpcunetmoBGeAQAAAAAeKXFxcUZwZrVaVbx4cXl6eubKGS1AXmaz2XT9+nWdPXtWqampSkhIUFxcnDw9PXO6tHT4kwMAAAAA8EiJjY01vi5evLgKFixIcAbkQk5OTipYsKCKFy9uXLt27VoOVpQ5/vQAAAAAADxSEhMTJaUt1cxtM1gAZOTp6Wks1cyN+xQSngEAAAAAHimOUzWtViszzoCHgJOTk7EnYW48FZc/RQAAAAAAAAAThGcAAAAAAACACcIzAAAAAAAAwAThGQAAAAAAAGDCOacLAAAAAAAAuYvdbtc777yjX375Re7u7vrxxx9VunRp0/bXrl1T69atFR0drVdeeUXjx49/gNWm5+/vb3qvYMGCKlasmOrXr68333xTpUqVyvb3nz17Vp6entl+0mt8fLxat24tX19fzZ49O8M7v/32W23dulVnzpyRJJUsWVKNGzfWW2+9JR8fnzt+3532uXv3bnXs2FHDhg1T27Zt726QuRThGQAAAJCJVJtdMbGJOV3GXSlc0FVWJ0tOlwHgIWaxWBQcHKwWLVooJiZGAwcO1Pz58+XsnHmM8NFHHyk6Olp+fn4aPnz4A642c2XKlJG3t7fxvc1m0/Xr1xUdHa3jx49ryZIlmjRpkho0aJAt70tKStI333yjb7/9Vj///HO2h2ejRo1SVFSUJkyYkO76nj171KNHD8XGxspqtcrPz082m01//vmnjh8/rp9++kkzZsxQpUqVsvyuu+mzTp06evnllxUcHKxnnnnmlmHrw4bwDAAAAMhETGyiOg9fm9Nl3JVZnzRTES+3nC4DeGg8zGG5dP8C82LFiunzzz/Xu+++q4MHD2ry5Mnq06dPhnbfffed1qxZIxcXF40fPz7bQ6O71a1bN7366qsZrsfHx+vzzz/XkiVL1K9fP23YsCFbaj5//rwmT558z/1kZt++fQoJCdGrr76abmZdbGysevfurdjYWD333HMaOXKkihUrJkmKjo7WBx98oH379undd9/VypUrlT9//tu+61767N+/v9avX69hw4Zp5syZ2fwp5BzCMwAAAABAnvYwh+XS/Q3MmzZtqrZt22rRokWaMmWKnn/+eT399NPG/d9++02jR4+WJA0YMEBVqlS5L3VkJ3d3dw0bNkxbtmzRhQsXtGzZMr3xxhs5XdYtjRo1ShaLRT179kx3PTQ0VJcvX1axYsX03//+N10IWKpUKU2aNEnNmzfXqVOntHr1arVs2fK277qXPkuVKqUWLVpoyZIlCgsLU6NGjbJh9DmPAwMAAAAAAICpwYMHq0yZMkpNTdXAgQMVFxcnKW2fs759+yo5OVkBAQHq1KlTzhZ6B5ydnVWzZk1J0rFjx3K4mlsLCwvTwYMH9eyzz6pkyZLp7u3cuVOSFBAQkOnsOW9vb9WoUUNSWtCZFffaZ7t27SRJX3/9dZbe9zBg5hkAAAAAADDl7u6uL7/8Um+88YaioqI0evRoDRs2TEOHDtWpU6fk6+urUaNG5XSZdyw5OVmS5OHhken96OhozZw5U7/++qvOnj2r/Pnzq2LFimrdurVeffVVWa1Wo21QUJB27dplfN+sWTNJ0ty5c1WvXj1JUkpKipYvX67Vq1fryJEjunLlipydnVWsWDHVq1dPnTt31hNPPJGhjrlz50pSprPGevTooZdeeinT5xzsdruktD3fsuJe+6xWrZrKli2rQ4cO6eDBg6pevXqW3pubEZ4BAAAAAIBbqlq1qnr37q1x48YpJCREbm5uWrZsmaxWq8aOHSsvL6+cLvGOxMbGavfu3ZKU6dLCtWvXauDAgUpMTJSrq6vKli2rhIQE7d27V3v37tWKFSs0adIkI3irWLGi4uPjdfjwYUlS5cqVlT9/fhUoUECSlJiYqK5duxqzukqUKKGKFSvq0qVLioyMVGRkpJYtW6Z58+bpqaeeMuq4cuWKtm3bJqvVqueeey5DndWqVVO1atVMx3n58mUj1CtfvnyWPpvs6PO5557TH3/8oRUrVhCeAQAAAACAvKFLly7aunWrdu/erdmzZ0uS+vTpo1q1at1Vf1euXNG8efN04MABubi4qEKFCmrevLmefPLJDG337dsnPz8/FSlS5K7rd5y2efToUY0dO1bXrl1TYGCgateuna7d//3f/6l///5KTk5Wjx491L17d7m6ukqSjh49qn79+mn79u367LPPNGbMGEnSJ598olOnTqlJkyaSpPHjx6c7bXL69OnauXOnChcurGnTpqULpw4dOqSePXvqwoULmjJlSrrTNHfu3CmbzaaKFSuqUKFCdzzmESNGKCEhQW5ubnrppZfu+Pm77bNWrVqaM2eOtm3bli3vzGmEZwAAAAAA4LacnJw0dOhQvfLKK5IkHx8fvfPOO3fVV1RUlDp06KDz588b1zZs2KApU6aoVq1a6tixo5599lklJSVp8eLFmjx5slatWnVH7/jwww/14Ycfmt4PDAzMdLnpxIkTlZSUpKCgIPXt2zfdvaeeekoTJkxQ69attWzZMnXr1i1LM7q2bdsmJycn9erVK8OsrmrVqumNN97QhAkTFBERke6eY6ZaxYoVb/uOm02ePFnLly+XJPXs2VM+Pj533Mfd9umo99ixY7p48eI9hZ65AeEZAAAAslWqza6Y2MScLuOu+RRylcViyekyACBXmjlzpvH1pUuX9O2336pr16533M+ePXv0999/64svvlDTpk0VExOjFStW6LvvvjOWRt6oQoUK8vb2vqN3lClTJt0zdrtdcXFxOnXqlOLj47V8+XKlpqZq5MiRcnNLO600KSlJW7ZskSS1aNEi0379/f1VqVIlHTlyRJs2bcpSeLZgwQIlJyeb/vPF8f7ExPT//Dx16pQkyc/P77bvuNHXX3+tiRMnSpKaNGmiLl263NHz99pn6dKl5eTkJJvNplOnThGeAQAAADeKiU1U5+Frc7qMu/bjmBaykp0BQAbplDMpAAAgAElEQVTLli3TkiVLZLFYVKtWLe3Zs0cTJkxQgwYNVKVKlTvqq1ChQvruu+/k7+8vKW3T/m7duunNN9/UwoUL9dNPP+nPP/+Uh4eHXnrpJfXt21fu7u539I5u3brp1VdfzXA9NTVVGzZs0IcffqiVK1fq+vXrmj59uiQpMjJSSUlJkqShQ4cqX758mfZ95swZSdIff/yR5XpcXFx09epVHThwQJGRkYqOjlZkZKTCw8N18eJFSRk34L906ZIkqWDBgll6R0pKioYNG6ZFixZJkp599lmNHz/+nv6n0N306eTkJE9PT8XGxhpjeJgRngEAAAAAgFs6efKkhgwZIklq27at3n//ff3jH//QhQsXNGDAAC1dutSYPZUVjr3Bbubq6qpOnTqpU6dO2VF2pqxWq5o1a6a4uDgNHjxYW7Zs0b59+1SzZk1du3bNaOfY/P9Wbmx/K9evX9eIESO0bNky45RPKS1Qq1y5sp588klt3bo1w3OxsbGSZOy5drt39OnTR7/++qsk6ZVXXtHo0aNNA8Cs1n23fbq5uSk2NtYYw8OM8AwAAAAAAJhKSkpSv379FBcXpzJlymjQoEFyd3fXyJEj1bVrV/35558aOXKkhg8fntOl3pEbA7zDhw+rZs2a6Wa37du3zzhN81717NlTO3fulKurqzp27Kjq1aurQoUKKl26tFxcXBQSEpJpeJY/f35Jtw/pzp49qy5duhh7pr399tsaOHDgPc04u9c+HaGZYwwPM8IzAAAAAABg6osvvtCRI0fk4uKisWPHGgHT888/rw4dOuj7779XSEiIGjVqpKZNm+ZwtVnn5ORkfG232yVJpUqVktVqVWpqqo4fP67q1atn+uyhQ4eUP39+lSxZ8rYB24EDB4yN/6dOnapnnnkmQ5uzZ89m+myRIkV07NgxxcTEmPZ/7tw5BQUFKSoqSlarVZ988oneeOONW9Z0O/faZ2JiohISEowxPOycbt8EAAAAAADkRevXr9d3330nSerbt2+Gvc0GDhyocuXKSZI++uijdKdn5nabN282vq5ataokydPTU3Xr1pUkzZ07N9PnoqOj1b59e7Vo0UKrV682rmcWxkn/2/RfUqZ7wyUkJGjFihWS0vZju9ETTzwhyTxcS0pKUo8ePRQVFSUXFxd99dVX9xycZUefN9ZbtmzZe6onNyA8AwAAAAAAGfz111/66KOPJEn169fX22+/naGNq6urvvzyS7m4uOjKlSsaPHhwuuAot9q1a5dGjhwpSapWrZpq1qxp3Ovdu7esVquWL1+u4OBgxcXFGfciIiLUtWtXJScnq0SJEgoMDDTu3bjk03GggJQ+PJo0aVK6Pc+OHz+uLl26KDIyUpKM2VoOjrr279+f6TimT5+uI0eOSJKGDBmiF198MWsfwP+v8cSJE+lqvdc+Hfbt2ycp7dTNR2HmGcs2AQAAAABAOqmpqXr//fd15coVeXl5afTo0aZ7XT311FPq06ePxo4dq19//VWzZ89W586dH3DFGU2dOlWLFy9Ody01NVXnzp0zZkaVLFlS48aNS9emVq1aGj58uIYMGaLZs2dr4cKFKleunOLi4nTy5EnZ7XYVKVJEM2fOTLdxvpeXl0qUKKHTp0/r3XffVdmyZfXee+/p+eef18svv6xVq1bp22+/VWhoqEqWLKkrV64Ys9IaNmyoX3/9VXFxcbp+/bo8PT2N687Ozvrrr7905swZPf7448b7kpKSNGfOHEmSs7OzQkNDFRoaavp5NGrUSN27dze+HzRokHbt2qW6desaswvvtU+HvXv3Skpb2vsoIDwDAAAAAORphQu6atYnzXK6jLtWuODtT2K8UxMmTDBmD40YMUKPPfbYLdu/88472rp1q3bt2qVx48apfv36qlSpUrbXdSciIyONGV0O+fLlU6FChdSgQQO98MIL+te//pXpKaFt2rTR008/rTlz5mjbtm06duyYLBaLypUrp8aNG+utt96Sj49Phue++uorjRgxQuHh4YqMjFRUVJQkaezYsWrQoIFCQkIUFRWl33//XYULF1ZAQIDatWunxo0bKyAgQGfOnNHG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\n", "text/plain": [ "
" ] }, "metadata": { "image/png": { "height": 292, "width": 615 } }, "output_type": "display_data" } ], "source": [ "# source\n", "X = get_source(num)\n", "ax = pd.DataFrame(X).plot.hist(bins=20,title='Source frequency')\n", "ax.legend([r'X ~ Beta(2,2)'])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Below we compare three algorithms that are designed to find the minimum of the rate-distortion \n", "Lagrangian (a.k.a. _free energy_)\n", "$$\n", "F_{RD}(q(\\hat X|X)) := \\mathbb E[d(X,\\hat X)] + \\tfrac{1}{\\beta} \\, I(X;\\hat X)\n", "$$\n", "with respect to conditional distributions $q(\\hat X|X)$, where $d$ denotes a distortion \n", "function (e.g. the squared distance $d(s,t) = (s-t)^2$, which is chosen in the simulations below), and \n", "$$\n", "I(X;\\hat X) = \\mathbb E_X [D_{KL}(q(\\hat X|X)\\| \\mathbb E_X[q(\\hat X|X)])]\n", "$$ \n", "is the mutual information between the source $X$ and the reconstruction $\\hat X$. All three algorithms \n", "make use of the fact that the rate-distortion Lagrangian $F_{RD}$ can be written as the optimum\n", "$$\n", "F_{RD}(q(\\hat X|X)) = \\min_{q(\\hat X)} F^{aux}_{RD}(q(\\hat X|X), q(\\hat X))\n", "$$\n", "where the auxiliary Lagrangian is defined as\n", "$$\n", "F^{aux}_{RD}(q(\\hat X|X), q(\\hat X)):= \\mathbb E[d(X,\\hat X)] + \\tfrac{1}{\\beta} \\, \\mathbb E_X [D_{KL}(q(\\hat X|X)\\| q(\\hat X))] ,\n", "$$\n", "since the optimal reconstruction distribution $q^\\ast(\\hat X)$ is simply given by the marginal \n", "$\\mathbb E_X[q(\\hat X|X)],$ and by construction we have \n", "$F_{RD}(\\, \\cdot \\, ) = F^{aux}_{RD}(\\, \\cdot \\, ,\\mathbb E_X[q(\\hat X|X)])$. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Blahut-Arimoto ([RD_BA.py](https://github.com/sgttwld/rate-distortion/blob/master/RD_BA.py))\n", "When the Blahut-Arimoto algorithm is applied to rate-distortion, the auxiliary Lagrangian $F^{aux}_{RD}$ is optimized alternatingly with respect to $q(\\hat X|X)$ and $q(\\hat X)$ by iterating the closed-form solutions\n", "$$\n", "q^\\ast(\\hat X|X=x) = \\frac{1}{Z(x)} q(\\hat X) \\, e^{-\\beta d(x,\\hat X)} \\ , \\ \\ \n", " q^\\ast(\\hat X) = \\mathbb E_X[q(\\hat X|X)]\n", "$$\n", "where $Z(x) := \\mathbb E_{q(\\hat X)}[e^{-\\beta d(x,\\hat X)}]$. \n", "\n", "This is often done by __discretizing the range of $X$__ (here the interval $[0,1]$) __into $N$ fixed parts__, so that $\\hat X$ has finite range (one value for each interval) and its probability distribution can be represented by an $N$-dimensional probability vector. The Blahut-Arimoto algorithm then iterates between (i) calculating the Boltzmann distribution $q^\\ast(\\hat X|X=x)$ for each sample $x$, and (ii) averaging the results over all samples in the dataset to obtain $q(\\hat X)$." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABLAAAAJTCAYAAAAYIe/ZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAewgAAHsIBbtB1PgAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3XlUVVX/x/E3oyAoYioWoiQBTjkn1fNoOTxOv7Q0tXKec6wwbdCHytQyyyFFc9Y0x8xyLM0xLZScsExFUZwHVC4yz78/WPc+EFxkELjm57WWa+E5e+/zPedyXOt+3fu7rdLT09MRERERERERERGxUNYlHYCIiIiIiIiIiEhulMASERERERERERGLpgSWiIiIiIiIiIhYNCWwRERERERERETEoimBJSIiIiIiIiIiFk0JLBERERERERERsWhKYImIiIiIiIiIiEVTAktERERERERERCyaElgiIiIiIiIiImLRlMASERERERERERGLpgSWiIiIiIiIiIhYNCWwRERERERERETEoimBJSIiIiIiIiIiFk0JLBERERERERERsWhKYImIiIiIiIiIiEVTAktERERERERERCyabUkHICIiIiIiYk5sbCxLliwhPT2dbt264ebmVtIhiYhICVACS0RERERELFZgYCCLFy8G4OzZs3z55ZclHJGIiJQELSEUERERERGLdObMGZYtW4arqyuenp789NNP/PrrryUdloiIlACr9PT09JIOQkRERERE5O969epFcHAwM2fOxM3Nje7du+Ph4cGmTZuwt7cv6fBERKQYaQaWiIiIiIhYnA0bNhAcHMwLL7xAmzZtqF+/PgMHDiQ8PJxFixaVdHgiIlLMNANLREREREQsSnR0NO3atcPKyorNmzfj4uICQFJSEl26dOHChQts2bKFKlWqlHCkIiJSXJTAEhERERERERERi6YlhCIiIiIiIiIiYtGUwBIREREREREREYumBJaIiIiIiIiIiFg0JbBERERERERERMSiKYElIiJiYVJTU0s6hCLxT70vebA9qL+XD2rc5iQkJPD000/j6+tLp06d7tk+LCyMxo0b4+vrS+PGjQkLCyuGKEVEpCQpgSUiIg+NFi1a4Ovrm+OfmjVrUr9+fZo3b87gwYNZt24dcXFxZse6fPmyqe/69evvW4xbtmxhzJgx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n36apk2bEhgYyO+//058fDzVqlWjbdu29OvXL8edx7y9vdm0aRPz589n7969XL9+HWdnZxo0aED//v1p3Lgx+/btM3tNc/eVWwLLycmJr776ih07drB+/XqOHz+OwWDA1dWVJ554ghdffJH27dsX6PMpLEuODTISNpMmTeKll15i9erVHD16lIiICKytrfHw8KBp06b06dOHypUr59jf2tqaDz74gLZt27Jy5UoOHz5MZGQkjo6O1K5dm27dutG+ffssfUrymdzv9y0/CvtuFORZFzRuS/q9TU5OZuTIkVy4cAHIuuNgbp566inq16/PsWPHWLVqFYMHDy723RJFRKTkWKWb24ZGRERERERERETEAqgGloiIiIiIiIiIWDQlsERERERERERExKIpgSUiIiIiIiIiIhZNCSwREREREREREbFoSmCJiIiIiIiIiIhFUwJLREREREREREQsmhJYIiIiIiIiIiJi0ZTAEhERERERERERi6YEloiIiIiIiIiIWDQlsERERERERERExKIpgSUiIiIiIiIiIhZNCSwREREREREREbFoSmCJiIiIiIiIiIhFUwJLREREREREREQsmhJYIiIiIiIiIiJi0WxLOoB/uujoaE6fPm36u6+vL2XKlCnBiEREREREREREHixKYBWx06dP06NHD9PfV6xYQePGjUswIhERERERERGRB4uWEIqIiIiIiIiIiEVTAktERERERERERCyaElgiIiIiIiIiImLRlMASERERERERERGLpgSWiIiIiIiIiIhYNCWwRERERERERETEoimBJSIiIiIiIiIiFk0JLBERERERERERsWhFnsAKDg6mf//+PPPMMzRo0IBXX32VrVu3FmrMTZs24evry+jRo822+fnnn3nttdd46qmnaNy4Mf369SMoKKhQ1xURERERERERkeJXpAmsjRs30rt3b4KDg6lVqxZPPfUUJ06cwN/fn5kzZxZozGvXrvHxxx/n2mbu3LmMGDGCU6dO0ahRI+rUqcPBgwfp168f69atK9B1RURERERERESkZNgW1cC3bt0iICAAR0dHvvnmG2rXrg1AWFgYvXv3Zs6cObRs2dJ0PC/S09N59913uXv3rtk2p06dYvr06VSqVIlVq1ZRpUoVAA4dOsSgQYOYMGECTZs2xc3NrXA3KCIiIiIiIiIixaLIElgrVqwgISGB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Dnd3d65cucLw4cOpXr06b775Js2aNaNdu3b8+OOPLF68mPXr11OlShUMBoNpdta//vUvfv31V2JjY4mJicHZ2blEnpO9vT2zZ8+mX79+XLx4kS5dulClShXKlCnDmTNnSE5OxtXVlUWLFlGhQoUsfadNm8b333+Pu7s7u3btynLuv//9L6GhoYSGhtKuXTt8fHy4e/euqfaVv78/zz77bLHdp+SPZmCJiIiIiIiIFANXV1fWrl1L165diYmJISwsjKpVqzJ8+HDWrVtH5cqVs7R/+eWX2bBhA6+88goVK1bkzJkzXLt2DS8vLwYOHMjGjRt5/PHHs13nyy+/pEGDBqSlpREeHm6ajTR16lQmTJjAk08+SXp6OqdPnyYpKYnmzZszb948Fi9ezGOPPQaQLflT3KpXr87GjRsZPnw43t7eREREcP78eapVq8bgwYP58ccfqV27dr7GdHV1Zc2aNYwYMQJPT0/CwsKIjIykSZMmzJo1iyFDhhTR3cj9YJVuroKc3BeHDh2iR48epr+vWLGCxo0bl2BEIiIiIiLm3TLE02/C9jy1XRLQmgrlHIs4IikpZ86cISUlBVtbW7y9vUs6HBEpBpb83msGloiIiIiIiIiIWDQlsERERERERERExKIpgSUiIiIiIiIiIhZNCSwREREREREREbFoSmCJiIiIiIiIiIhFUwJLREREREREREQsmhJYIiIiIiIiIiJi0ZTAEhERERERERERi6YEloiIiIiIiEgRunz5Mr6+vvj6+vLuu+/es/3BgwdN7YvSn3/+Se3ate95ndDQUPz9/Xn22WepU6cOLVq04KOPPuLGjRtFGp9IZkpgiYiIiIiIiBSTH374gd27d5d0GCQlJfHuu++SkpKSa7tDhw7RpUsXtm7dSlpaGj4+PkRGRrJq1So6dOjAyZMniyliedgpgSUiIiIiIiJSjAICAoiKiirRGKZPn87Zs2dzbWMwGBg2bBiJiYkMGjSI/fv3s379evbt20ebNm2Iiopi5MiRJCUlFVPU8jBTAktERERERESkmFhZWREREcHEiRNLLIbDhw+zdOlSHB0dc223fPlyoqKiqF+/PqNHj8bW1hYAZ2dnvvjiCzw8PLh06RIbNmwojrDlIacEloiIiIiIiEgx6dGjBwAbN25k586dxX79uLg43n//faytrXnjjTdybfv9998D0KVL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1arxxRdfFHq8onT+/HkmTpxIXFwcq1atKulwHmpFlsCqXLky48aNIyAggJ49e+Ln54e9vT1BQUEkJiby9ttvZ3k5p02bxvfff0+nTp2YPHkykLFEcOrUqQwYMIBFixbx888/4+vry6VLlzh16hS2traMHz8+ywyvd999lz///JM///yT1q1b07BhQ1JTUwkODiYpKYm+ffvSsWPHorptEREREREREZO7d+8ycuRI7t69S9OmTfnkk09MkzYuXbrEO++8w5EjRxg+fDhbt26lVKlSpr5jx47l6tWreHt7ExgYiKenJ5AxoeOtt95i9+7dLFy4kKFDh5r6nDhxwpS8at68OZ988olpYocxsTVq1CgqV65smmhiHHPq1KkAdOvWjffff5/SpUuTlpbGkiVLmDJlCoMHD2bz5s15XtH02WefER8fj6ura5bjK1eu5Pjx41SrVi3/D7SYbd68mf3792d5VkZbt24F4LHHHivusB5KRVIDy6hr164sWLCARo0acezYMQ4fPkytWrWYNWsWgwcPztMYDRo0YMOGDXTu3JmEhAR2795NREQEbdu2ZfXq1XTt2jVLexcXF1avXs3IkSOpVKkSQUFBhISEUL9+fQIDA3n//feL4lZFREREREREslm/fj137tyhUqVKzJgxI8tGZh4eHsyePRsXFxcuX77MTz/9ZDp37do1Dhw4AMDHH39sSl4BtGjRwrSiad26dVmu99VXX5GcnIyPjw8zZ840Ja8gYyO0fv36kZ6eblqhZDRr1iwA/v3vfzNhwgRKly4NgLW1NQMGDOD//u//SEhIME04yYvHHnsMLy+vLDH8k3h5eeHl5YWjo2bMF4cim4Fl1LRpU5o2bXrPdpMnTzb7Inh4ePDpp5/m+ZqlS5dmxIgRjBgxIs99RERERERERO63gwcPAtC8eXOcnZ2znS9fvjwNGjRgz549/PHHH7z44otARs0so78vLQR48skns7VLTU3l119/BaB3796mjc8y69OnD/Pnz+fkyZOcOnWKGjVqEBERwV9//QVkLfXz935btmxh9+7dGAwGypUrl6f7F7lfinQGloiIiIiIiMjDbOjQoXz22We8/PLLZtukp6cDkJaWZjqWeVmaMbmU2enTp7O1i4yMJC4uDoA6derkeK0KFSpQpkwZAEJCQgBMReWBbJuwGRkLv6empvLnn3+avZfM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WmQ2NjaMHj2agIAA9u7dy969e3FxccHPz49//etfPP/881SuXLnA92NplMASERERERERKQYxMTG88cYb/PrrrwC0b9+ezz77LMeZOj/99BMAvXv3NiWvMqtbty7PP/88O3fuZPPmzaYEFmQkxbZt28bq1av5448/SElJ4YknnuDll1/Gx8fHtOvf35MlnTp1onHjxqxdu5a//voLGxsbatasSZcuXfDw8DDVXjKXZCks4455xsLpuUlNTSU2NjZbcXJjoufvzp07x4cffmgqmG/k7OxM48aNuXnzptmkWV7FxsZmGdcc47m4uLhsSbj8zm7r1q0b1apVY8mSJfz2229ERUWxfft2tm/fjpWVFc899xzjx4//RySylMASERERERERKWLXr19n0KBBpllGAwYMYMyYMdlmEBldvXoV/p+9+4/vud7/P35/76f3RkPDaizMr2gpJ3RLGm8AACAASURBVK1kc8pQotAQZomR/Aw1R8469enXFNIvHyljxVGS5efnYJMfY9nx64iMtllGZRu9x+wH297fP/bd+1h7jw1vXtXterl0udTr+ev13OKP++X5fLykCnWgfqtFixZKSEiw1cW6mLe3t8aNG1fpeWlpqS2osXedrkmTJpoyZUql57/++qvt64P2vp53LZTX9IqKilJYWNg1m/fUqVMKCwvTqVOndOutt2rAgAFq27atmjdvrsaNG8tkMmnKlClXHWBdfDKtPIyzp7wIvoeHR5W//5oIDAxUYGCgCgsLtWvXLv373//Wtm3bdPDgQW3evFnPPPOMvv7662uy1o1EgAUAAAAAgAOdPHlSQ4cO1bFjx+Ts7KyoqCgNGjTokmNq166toqIiW5Fue06dOmXrW27Lli364YcfFBgYWKEQeLnk5GSdOXNGZrPZVrhdktatW6fjx4+rR48euu222yqN27Rpk6SyLxY2adLk0hu+Qs2aNVNKSkqFLx7+1s8//6yTJ0/qlltuqfZJsK+++kqnTp1S3bp19dVXX6l+/fqV+pRf/bsatWvXVoMGDZSdna0DBw7ozjvvtNvvwIEDkqSmTZte1Xrnz59XZmam8vLy1L59e9WqVUudO3dW586dNWnSJK1du1aTJ09WSkqKDh8+rDZt2lzVejcaRdwBAAAAAHCQ8+fP69lnn9WxY8fk6uqqd99997LhlSTdd999kqTly5erpKSkUrvFYrEVAS/vK0nr16/X22+/bfcrfVar1fY1wf79+1e4bvfFF19o1qxZ+uqrr+zuYcGCBZJku354NcpPAv32a4cPPvigpLIwrTyc+60XX3xRAwcOtHtKrCrlJ9RuvfVWu+FVamqq9u3bJ0mVftZVvWtVHnroIUnS0qVL7X4FMjc3V19//bUkKTg4uJo7sG/r1q3q2bOnRo0aZXetTp062f7d3v9DvzcEWAAAAAAAOMjHH3+sgwcPSpL+8Y9/qFu3btUa98wzz8jV1VXfffedIiMjdfr0aVtbZmamnnnmGVksFjVu3Nj2VTtJ6tevnyRp7dq1tqBEKrvSNn36dCUlJalu3boaPXp0hfXKxy1atEg7duywPc/JydH48eOVlpYmPz8/DR48uIY/gcrKr9qVX5Ms17NnT7Vq1UpnzpzRiBEjKpzEysvL08svv6wdO3bIZDJp1KhR1V6v/BpmSkqK1q9fb3tutVq1detWRURE6MKFC5KkgoICu++alZVVoYB6VUaOHClPT08dOXJEEydOrBDElf/ecnJy1KhRIz311FPV3oM9wcHBqlevniwWi6ZOnSqLxWJry8vL04wZMyRJt9xyi1q2bHlVaxkBVwgBAAAAAHCA8+fPKzY2VpLk4uKiFStWaMWKFVX279Kliy1Yat26tWbNmqXIyEitWbNG69evl7+/v0pLS5WamqrS0lL5+vpq/vz5FU5S3XPPPRo+fLhiYmI0depUzZkzR/Xr11d6eroKCgpUt25dxcTE6Oabb66w9mOPPaZNmzbpX//6l55++mn5+fnJw8NDaWlpunDhgnx9fbVw4UK7Bedr6vbbb5ck7dmzRw8//LBatGihDz74QK6urpo7d64iIiJ06NAh9erVS82aNZPZbFZGRobtS4HTpk2r0eml0NBQ/fOf/9SPP/6oCRMmyNfXV/Xq1dPPP/+sU6dOydXVVffee6+Sk5MrXSUsf9cTJ06oe/fuatiwoZYuXVplPakmTZrovffe08SJE7Vp0yZ16dJFLVq0UElJie33duutt+qDDz6wexqsJtzc3PTuu+9qxIgRWrdunRISEuTn5ycnJydlZmYqPz9fZrNZ0dHR1+T3dqMRYAEAAAAA4ABHjhyxFewuLi7Wnj17Ltn/t7WnevTooTZt2igmJkY7duxQenq6XFxc1Lp1a4WEhFT5hcKpU6eqffv2WrJkib7//nvl5OTIx8dHf/3rXzVy5Ei7taNMJpPeeecdderUScuXL9cPP/yg4uJi+fn5qVu3bho+fLi8vLyu4qfxX3369FF6erpWrlyp48eP68KFCyotLZWTk5OaNGmiuLg4LV26VOvXr1daWpoKCwtVr149BQUFaejQoerYsWON1qtdu7aWL1+ujz/+WN98842OHz9e4Wfy1FNPycPDQyEhIUpJSdFPP/2kW2+9VVLZ9czIyEgtWbJEWVlZOn/+vHJyctSgQYMq1+vcubPWrl2rhQsXasuWLTp69KhcXV11++236+GHH9aTTz5p9/d2JQIDA/Xll19q4cKF2r17tzIyMuTi4iIfHx917txZw4cPt+3l985kre5FTlyRXbt2aciQIbb/XrJkie65554b+EYAgBslx1Kgp1/dUO3+C6O6y7uu2YFvBACV1eTvKv6e+mMrDzBcXFz+ENePAFyekf/cUwMLAAAAAAAAhkaABQAAAAAAAEMjwAIAAAAAAIChEWABAAAAAADA0AiwAAAAAAAAYGgEWAAAAAAAADA0AiwAAAAAAAAYGgEWAAAAAAAADM3lRr8AAAAAAAB/dBkZGZo/f7527NihnJwceXl5qX379hoyZIgeeOCBK5ozKSlJsbGx2rt3r86dO6eGDRuqc+fOGjZsmJo3b16h786dOxUeHl7tud98803169fvit4L9rVu3VqStHDhQnXq1OkGv83vDwEWAAAAAAAOtG3bNo0bN06FhYUym83y9/fX6dOnlZCQoISEBA0fPlxTp06t0ZwffPCB3n//fUlS3bp11bJlS2VmZuqLL77Q119/rbfffls9evSw9a9Tp446dOhwyTkzMzOVnZ0tJycn+fn51XyjgAMRYAEAAAAA4CCnT5/WlClTVFhYqEcffVSvvPKK6tSpI0lavXq1pk6dqpiYGN11110VAqdLSUpKsoVXkZGRGjZsmJydnXX+/HnNnDlTsbGxeuGFF9S+fXv5+PhIktq2baulS5dWOecvv/yixx9/XJI0efJk3XPPPVezbeCaowYWAAAAAAAOsnz5cuXm5srX11fR0dG28EqSevfurf79+0uSPv/882rP+cknn0iSevXqpREjRsjZ2VmS5ObmpmnTpsnf319FRUWKi4ur1nwlJSV6/vnnZbFYFBwcrIiIiGq/C3C9cAILAAAAAAAHady4sXr16qXbb79dbm5uldrL6yL99NNP1Z6zQ4cOcnNz0xNPPFGpzWQyqVWrVkpLS6v2nEuXLtW///1v1alTR6+99ppMJlO13wW4XgiwAAAAAABwkJ49e6pnz55Vth84cECSdNttt1V7zrFjx1bZVlJSokOHDlV7TovFYruOOHHiRDVq1Kja71FuzZo1+uqrr3Tw4EHl5+erTp06atu2rR5//HH16tVLTk6VL3/l5OQoJiZGmzdv1okTJ+Tk5KTmzZvr0Ucf1ZAhQ+Tu7m53rWPHjmnJkiXasmWLfv75Zzk7O6tVq1bq16+fQkNDK61VUlKiFStWaNWqVUpJSVFBQYG8vb3VsWNHDRs2TO3atavQ//jx4+ratau8vb2VmJio5cuXa9myZUpNTZUktWrVSgMGDFC/fv3sBn0//vijPvnkE23fvl3Z2dm65ZZb1KdPn0ueasvNzVVMTIw2bdqkH3/8USaTSQ0bNtS9996r8PBwW8j5Z0eABQAAAADAdXbmzBl9+umnWrFihVxcXDRy5MirnvPYsWOaOXOmMjIy1KBBA7sntH7rww8/lMViUbNmzTRo0KAar/nmm29q0aJFkiRfX181adJEWVlZSkxMtP3z1ltvVRize/dujRkzRhaLRa6urmratKmsVqsOHjyoAwcOaOXKlfrkk0/UoEGDCuM2btyoyMhI5efny93dXS1atNCZM2e0d+9e7d27V8nJyXr77bdtwVJeXp4iIiK0d+9e2/v5+fkpIyNDq1at0po1azR16lQNGzas0r6sVqumTp2qlStX6qabblKzZs2UmZmpffv2ad++fTp69Kief/75CmOSkpI0duxYnTt3Th4eHmrVqpWysrL07rvvKikpye7Pz2KxaMCAAfrxxx/l5uYmPz8/ubq66scff9Ty5cu1cuVKzZ07V8HBwTX+3fzRUAMLAAAAAIDrZP369erVq5ceeOABvf/++/Lx8dGHH36ojh07XvGcs2fPVkhIiHr06KH169fr7rvvVmxsrOrVq3fJcadPn9ayZcskSaNHj5aLS83OuKSlpWnRokVyd3fXp59+qk2bNumrr77Stm3bNGPGDDk5OWnlypXat2+fbczJkydt4dWAAQO0Y8cOrVmzRmvXrtWGDRvUvn17paSk6Lnnnquw1rFjx/TCCy8oPz9fffv21fbt27VixQrFx8fr448/Vq1atbR69Wp9+eWXtjHPP/+89u7dqwYNGlR4v6SkJI0ZM0alpaV68803tWHDhkp7O3XqlNasWaPp06fr22+/1YoVK5SYmKjHHntMkrRw4UKdPn3a1v/MmTOaPHmyzp07p0cffVTbtm2z/Syio6NtIdpvffLJJ/rxxx/VoUMHbdmyRWvXrtXXX3+trVu3qnv37rpw4YLeeOONGv1e/qgIsAAAAAAAuE7279+vH374QefPn5dUdn3sm2++UV5e3hXPmZSUpMzMTJWWlkqSfv75Z23evPmy45YuXarCwkI1adJEvXv3rvG6hw8fliQ1a9ZMgYGBFdr69OmjQYMGqVevXra9StKCBQtksVj00EMP6dVXX9VNN91ka/Pz89PcuXNVu3Zt7dq1S1u2bKkwrqCgQHfddZfeeOONCsXwg4OD9eyzz0qSvvrqK0nSvn379M0330iS3nvvvQrv5+bmpokTJ2rgwIGSpJkzZ9rd3+DBgxUeHm4rku/u7q4XX3xRJpNJxcXF2r9/v63vF198odOnT6tp06aaMWOGateubWvr27evRo8ebXeNlJQUSVKPHj1Uv3592/M6dero73//uzp16qSOHTuqsLDQ7vg/EwIsAAAAAACuk6FDh2rv3r22kzm1atXS559/rqeeekrFxcVXNOfs2bP13XffacOGDRozZoxOnTqlt95665Ind4qLi7V06VJJUkREhC2kqYnyGlspKSmaMWOGMjIyKrS/9NJLmjVrlu69917bs/j4eEmynWT6LW9vbz3wwAOSZAugLv73/v37262pFRYWpjVr1uizzz6r0P/OO+9Uhw4d7K41fPhwSWV1q44cOVKp/cEHH6z0rF69erag6cyZM7bn5YFh79695erqWmlcVdczmzZtKqnsJNaqVat09uxZW1ujRo20cOFCvfrqq6pVq5bd8X8m1MACAAAAAOA68fHxkSR5eHiob9++at++vfr06aMDBw5o1apV6tevX43nbNKkiaSyQGnixIm67bbbNHXqVC1evFhhYWHy8/OrNObf//63srOz5e7urkcfffSK9tKuXTv17t1bq1evVkxMjGJiYuTr66v7779fnTt3VlBQUIWTSOfOndOJEyckSXPnztWnn35qd97yPunp6ZKkoqIinTx5UpLUpk0bu2Nq166tli1b2v67fOxvi7RfrGnTpqpdu7by8vJ09OhRtWrVqkJ7VQXty8OkkpIS27OjR49KUoV3uNjNN9+shg0bKisrq8LzESNG6F//+peys7P1wgsvyMXFRQEBAerUqZOCg4PVvn17vgr5/3ECCwAAAACAG6R58+bq1q2bJCk5OfmazNmnTx81bNhQJSUl2rVrl90+GzdulCR16dKlwnW8mnr77bf1+uuv66677pLJZNKJEye0fPlyPffcc+rUqZNee+012xXCi69JHjlyRHv27LH7T3lYVX4ayWKx2MZ5eHhU673K17rc3jw9PSWVhWu/Ze8k1cWsVqvt38tPY13q/by8vCo9u+WWW7Ry5Uo99dRTatSokYqLi7V37159+OGHGjhwoLp27Wo7tfZnxwksAAAAAAAcxGKx6Pjx47r11lsr1Di6mK+vryQpOzv7svNZrVZlZWXp+PHjuvvuu+1epyufMysrSzk5OXbbExISJEm9evWqzjaqZDKZFBoaqtDQUJ0+fVo7d+5UcnKytmzZohMnTtiu9P3973+X2Wy2jVu9enWlE09VuXicvaDJnvJg6uIrefaUt5f3v1J169ZVdnb2JWuZVVXH6uabb9aLL76oF198UYcPH1ZycrK+/fZbJSYm6sSJE5owYYI+//xz3XnnnVf1jr93nMACAAAAAMBBQkND9cQTT9iKi9tTfmWuqitrF/vll18UHByswYMH68CBA5eds2HDhnbbfvnlF5lMJt1///2XXbMqeXl5OnDggO26Xv369fXII4/oH//4hxISEmx1n1auXClJuummm+Tt7S1JSk1NrXLew4cP69ChQ8rNzbWNu/nmmyVJP/zwg90xWVlZGjBggCZNmqSzZ8+qefPmkqSDBw9WuU5aWpry8/Ml/bee15Vq1qyZJOnQoUN228+dO6effvqp0vOTJ0/q22+/tYVbrVu31tChQ/Xhhx8qISFBvr6+Kikp0Zo1a67q/f4ICLAAAAAAAHCQ8oLky5cv14ULFyq1Hz9+3HZF7KGHHrrsfLfccostnCkvwv5b69atU1ZWllxdXdW5c+dK7d99952kstDm4q8A1tR7772nJ554QjNmzKjUdnE4dnGtqL/+9a+SpMWLF9u+mnixs2fPKjw8XH369FFsbKzteXBwsCRVGQT+61//0n/+8x/95z//UZ06dWwF2Pfv3689e/bYHbNo0SJJZXXJWrdufZndXlr37t0llYV19k6JrVixosLPQSorpN+nTx899dRTdr8a6e3tbTulZu9n9WdDgAUAAAAAgINERESoVq1aysjI0JQpU3T69Glb2/fff68RI0aosLBQHTt2VNeuXSuMPXbsmNLS0ioV/h47dqykslDkf//3fysEY+vWrdP06dMlSSNHjrSdeLrY999/L6nqguPV9dhjj8lkMmnz5s365JNPKrzHTz/9pHnz5kkqq7NVbtSoUfLw8NDu3bv1wgsvVPh5nDhxQqNGjZLFYlGdOnU0ZMgQW1tERITc3Ny0a9cu/c///I8KCgpsbVu3btU777wjqawouiTdfffdtnUnTJignTt32vqfP39e7733npYtWyZJioyMvOpC6aGhofLz89Mvv/yiCRMm6NSpU7a2DRs2aNasWZXGuLi42Arov/7669q/f3+F9g0bNigxMVHSfwO8PzNqYAEAAAAA4CBNmjTRnDlzNGnSJK1fv17ffPONmjVrpqKiImVkZEiS7rrrLr333nuVQpRhw4bpxIkT6tu3r6Kjo23Pe/XqpbS0NM2dO1dz5szRggUL5Ofnp6ysLFsdrYEDB2r8+PF236m8SLq9ouI1cccdd+i5557TO++8o7ffflsfffSRGjdurIKCAmVmZqq4uFh+fn7629/+Zhtz22232X4ea9as0fr169WiRQtduHBBGRkZKi4uloeHh+bPn2+7NihJLVq00FtvvaXIyEgtWbJEcXFxat68uU6dOqWff/5ZktSvXz8NHjzYNuatt97S6NGjtXfvXoWHh8vX11f169fX0aNHlZeXJ2dnZz333HNX/BXGi5nNZr3//vuKiIhQYmKi/vrXv6ply5ayWCw6ceKEAgIClJ2drV9++aXCuEmTJmn37t36/vvv1b9/f/n6+qpevXrKysqyBZeDBg0iwNJ1CLCSk5M1b948HTp0SIWFhWrdurXCw8PVs2fPas9x7Ngxffjhh9q+fbssFosaNGigoKAgPfvss7rlllvsjtm4caNiYmKUmpoqq9WqgIAAjRo16qru9wIAAAAAUFMPPvigVq5cqQULFigxMVHp6emqVauW/vKXv+ixxx7TE088cdkv3v3WxIkTdd999yk2NlZ79+7V4cOH5eXlpa5du2rQoEEKCgqqcmz5qaeruT5YbvTo0WrRooWWLVumgwcP6siRI6pVq5Zuv/12devWTUOHDq30Zb4uXbpo7dq1WrRokbZt26ajR4+qpKRE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7xQcHKz4+HhNmzZNHTp0aDA+JSVFCxcubHK+hx9+WLNmzbqg9QAAAAAAAKB1eTXASktL0+zZs+Xn56fY2Fj5+voqIyND06dPV0FBgaZNm3bOOZxOpxITE7V//36Fh4dr4MCBysvL07p165Senq7169crLCys3mf2798vSRo4cKCuvPLKBnP27NnTnAUCAAAAAADA67wWYJWVlSkpKUl2u11vv/22evXqJUkqLCxUYmKiVqxYoUGDBnnam/Lqq69q//79uvfee/XCCy/Iz89PtbW1eumll5SSkqL58+crOTm53mcOHDggm82mV155RYGBgd5aIgAAAAAAAFqB187ASk1Nlcvl0ujRo+uFVN26ddOMGTNkGIbeeOONZudwOp1av3697Ha7nnzySfn51eVtPj4+mj17trp06aKdO3fq22+/9XzG5XKpqKhIXbt2JbwCAAAAAAC4DHgtwNq9e7ckKSEhoUFfQkKCbDabdu3a1ewcWVlZOnnypGJiYhQUFFSvz9fXV/Hx8ZJUb57c3FzV1NSc88kuAAAAAAAAXBq8EmAZhqGCggJJUkRERIP+oKAghYSEqKKiQiUlJU3O09wcktS9e3dJUl5enqfNff5VUFCQ5s2bp0GDBik6Olp33HGHXnvtNVVVVV3YogAAAAAAAHBReCXAqqioUFVVlRwOhwICAhod06lTJ0l1Z2U15ciRI/XGnq1jx44N5vjqq68k1W1h3L59u6KiohQdHa3vv/9ey5cvV2Jiok6ePHn+iwIAAAAAAMBF4ZUA69SpU5Iku93e5Bh/f39JajZMcve1bdu20X53+5lzuAOs4cOHa/fu3VqxYoX++c9/avPmzerRo4dycnL0yiuvnMdqAAAAAAAAcDF5JcDy8amb1maznXNsbW1tk32+vr4tmscwDM//p6amavPmzXruuefUpk0bT3uXLl20aNEi2Ww2vfvuu2wlBAAAAAAAuER4JcByOByS6t4I2BR3gNTUFsMz+5qax91+5hx2u10RERGe8OtMv/3tbxUWFqaqqirl5+efYxUAAAAAAACwAq8FWA6HQ5WVlU2GT+c630qSQkNDJTV9TlZpaamkn8/CaomQkBBJzYdrAAAAAAAAsA6vBFg2m83z5sDCwsIG/eXl5SorK1NQUJAnpGqMew732wjP5n6KKjIyUpJUUlKip556So8//niTcx4+fFiS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AAAsjQALAAAAAAAAlkaABQAAAAAAAEsjwGplWVlZGjdunG655RbdcMMNuv/++7V169bzmsPpdGrp0qW64447dN111ykuLk7PPPOMjh496qW7BqzHjFr6+uuvNXfuXA0cOFC9e/fWTTfdpL/+9a/66KOPWvT51157TVFRUfrmm28uZAmApZlRY2fbtGmToqKiNGvWrBaNf++99xQVFaW9e/f+ousCVmRWjaWlpWnUqFG68cYbdd1112nYsGF65513ZBhGg7HV1dVatWqV7rnnHvXp00fXX3+9hg4dquTkZFVVVZmxLMAyzKixI0eOaN68eZ6fFWNjYzVp0iTl5OQ0Op4aA7zL99lnn332Yt/Er0VaWpomT56s77//XjfccIOuvvpqZWdna+vWrTIMQ7Gxseecw+l0KjExUf/+97/Vrl079evXT8ePH9eePXu0efNm/eEPf1BgYGArrAa4eMyopU8//VQPPvigvvjiC4WEhKhv377y8/PTJ598orS0NAUEBKhv375Nfv7999/X888/r9raWo0ZM0bBwcFmLhG4qMyosbN9//33mjhxoqqqqhQVFaUhQ4Y0Oz47O1szZszQ6dOnde+996pLly4XuhzAcsyqsblz52r58uX68ccfddNNN6ljx47at2+fPvjgA506dUq33nqrZ+ypU6f00EMPacOGDaqqqlKfPn3UuXNn5efn68MPP9TevXt111136YorrvDWsoFWY0aNFRcXa+TIkcrKylJwcLD69esnm82mrKwsbdy4Uddee60iIiI846kxoBUYaBWlpaXGddddZ/Tp08fYt2+fp72goMD43e9+Z0RFRdVrb8qLL75oREZGGrNnzzZOnz5tGIZh1NTUeNonTpzotTUAVmBGLZ0+fdq47bbbjMjISOP11183amtrPX179uwxevXqZfTo0cPIzc1t9PMpKSlGr169jMjISCMyMtI4dOiQOYsDLMCs76sz1dbWGmPGjPHUzMyZM5sdv2XLFqNPnz6e8R9//PEFrQWwIrNqbOPGjUZkZKRx++23G8XFxZ72vLw846abbjIiIyONr776ytO+dOlSIzIy0rj//vuNo0ePetrLysqMkSNHGpGRkcZLL71k0iqBi8esGnvkkUeMyMhI49lnnzV++uknT/u7775rREZGGv369TNcLpennRoDvI8thK0kNTVVLpdLo0ePVq9e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\n", "text/plain": [ "
" ] }, "metadata": { "image/png": { "height": 297, "width": 600 } }, "output_type": "display_data" } ], "source": [ "# Blahut-Arimoto\n", "r = BA(X,beta,N=40)\n", "ax = pd.DataFrame(r['q']).plot.bar(title=r'Distribution of reconstruction $\\hat{X}$',rot=0)\n", "ax.legend(legend_string(r))\n", "xticks = np.arange(0,len(r['q']),8)\n", "plt.xticks(xticks,np.round(r['xhat'],2)[xticks])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Gradient descent ([RD_GD.py](https://github.com/sgttwld/rate-distortion/blob/master/RD_GD.py))\n", "Here, we use that evaluating the auxiliary free energy $F^{aux}_{RD}$ at the Boltzmann distribution \n", "$q^\\ast(\\hat X|X)$ results in\n", "$$\n", "F_{GD}(q(\\hat X)) := F^{aux}_{RD}(q^\\ast(\\hat{X}|X), q(\\hat{X})) \n", "= -\\frac{1}{\\beta}\\mathbb{E}_X \\Big[ \\log \\mathbb E_{q(\\hat{X})} [e^{-\\beta d(X,\\hat{X})}] \\Big].\n", "$$\n", "which can be optimized with respect to $q(\\hat{X})$ by using gradient descent. In particular, exactly as in \n", "the Blahut-Arimoto algorithm, we __discretize the range of $X$ into $N$ fixed chunks__, which transforms the \n", "infinite-dimensional optimization problem over distributions $q(\\hat{X})$ into an $N$-dimensional optimization \n", "problem over probability vectors. " ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABKQAAAJTCAYAAAA2ZM5LAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAewgAAHsIBbtB1PgAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xl0Tef+x/F3RokQogg1DxFTzUTdVq9UTVdVS1XN81C0jVld2lKtKqKoKjWX1FBaY6kaaqpZ3CpCiCGI0Ewic/L7I+ucX9LkZM45UZ/XWtY6OfvZz/7ufc7uWufT53m2VVJSUhIiIiIiIiIiIiJmYm3pAkRERERERERE5OmiQEpERERERERERMxKgZSIiIiIiIiIiJiVAikRERERERERETErBVIiIiIiIiIiImJWCqRERERERERERMSsFEiJiIiIiIiIiIhZKZASERERERERERGzUiAlIiIiIiIiIiJmpUBKRERERERERETMSoGUiIiIiIiIiIiYlQIpERERERERERExKwVSIiIiIiIiIiJiVgqkRERERERERETErBRIiYiIiIiIiIiIWSmQEhERERERERERs7K1dAEiIiIiIvJ0iIyMZMWKFSQlJdGtWzdcXV0tXZKIiFiIAikRERERETGLhQsXsnz5cgCuXr3Kl19+aeGKRETEUjRlT0RERERE8t2VK1dYvXo1Li4uVK5cmZ9//pkjR45YuiwREbEQq6SkpCRLFyEiIiIiIv9svXv35sSJE8yfPx9XV1d69OhBhQoV2LZtG/b29pYuT0REzEwjpEREREREJF/99NNPnDhxgo4dO9K2bVsaNGjAoEGDCAgIYNmyZZYuT0RELEAjpEREREREJN9ERETQvn17rKys2L59O8WKFQMgNjaWrl27cuPGDXbs2EH58uUtXKmIiJiTAikRERERERERETErTdkTERERERERERGzUiAlIiIiIiIiIiJmpUBKRERERERERETMSoGUiIiIiIiIiIiYlQIpERGRfJSQkGDpEvLFP/W85Mn2pH4vn9S6TYmOjqZ58+a4u7vz+uuvZ9re39+fJk2a4O7uTpMmTfD39zdDlSIiYmkKpERE5Ink6emJu7t7uv9q1apFgwYNaNWqFUOGDGHTpk08fvzYZF+3b9827rt58+Y8q3HHjh2MGzcuR/uaqim/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MFnz5s158cUXWbhwISdPniQqKopKlSrRrl07+vfvn+6Ttdzc3Ni2bRtLlizh4MGD3Lt3jyJFitCwYUMGDBhAkyZNOHTokMljmjqvjAIpJycnvv76a/bu3cvmzZs5f/48oaGhuLi4UL16dV577TU6dOiQo88ntwpybZAcwMyYMYPOnTvz/fffc/bsWYKDg7G2tqZChQq8+OKL9O3blzJlyqS7v7W1NVOnTqVdu3asW7eO06dPExISgqOjI3Xq1KFbt2506NAh1T6WvCZ5fb9lR27vjZxc65zWXZC+t3FxcYwaNYobN24AqZ+ol5GmTZvSoEEDzp07h4+PD0OGDDH70wBFRMSyrJJMPZpFREREREREREQkH2gNKRERERERERERMSsFUiIiIiIiIiIiYlYKpERERERERERExKwUSImIiIiIiIiIiFkpkBIREREREREREbNSICUiIiIiIiIiImalQEpERERERERERMxKgZSIiIiIiIiIiJiVAikRERERERERETErBVIiIiIiIiIiImJWCqRERERERERERMSsFEiJiIiIiIiIiIhZKZASERERERERERGzUiAlIiIiIiIiIiJmpUBKRERERERERETMytbSBTxJIiIiuHz5svFvd3d3ihYtasGKRERERERERESePAqksuHy5cv07NnT+PfatWtp0qSJBSsSEREREREREXnyaMqeiIiIiIiIiIiYlQIpERERERERERExKwVSIiIiIiIiIiJiVgqkRERERERERETErBRIiYiIiIiIiIiIWSmQEhERERERERERs1IgJSIiIiIiIiIiZqVASkREREREREREzMo2vw9w4sQJFi9ezMWLF4mOjsbd3Z0+ffrQoUOHLPfRqVMnLl++bHL7zp07qVatWl6UKyIiIiIiIiIi+SxfA6mtW7cyfvx4bG1t8fDwwMbGhmPHjuHl5cXVq1d59913M+0jNjYWf39/ihUrRsuWLdNtU7Ro0bwuXURERERERERE8km+BVIPHjxgypQpODo68t1331GnTh0A/P396dOnD4sWLeLll182vm/K5cuXiY+Pp3nz5syePTu/yhURERERERERETPJt0Bq7dq1REdHM2TIkFShU7Vq1Rg9ejQffPABq1atYtasWRn28+effwJQt27d/CpVREREREREMpGUlERkZCTh4eFER0eTkJBg6ZJEJB02NjY4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2ZnChQsb3z9z5kyGQVZ2vPPOOxw/fhwHBwd69epF/fr1cXNzo1KlStjZ2bFhw4Z0AynDE+/MLSYmxuST+VKO4rK1zTzeqFq1KgEBAQQGBppsY9hWuXLl7BUq2aY1pERERERERETM5Pr16yQlJaW77cKFCwDUqFGDChUqGNc8ymjB8vPnz3P58uU0T6FLz7lz5zh+/DgA33zzDRMnTqR9+/ZUr17dON3t3r172Tqf/DJ37lzq1q1L165dTbYxXK8SJUpk+OQ8g/r16wPJ1yE99+7dM06BbNiwYXZLlmxSICUiIiIiIiJiJqGhofz6669p3r937x579+4FwNPTkyJFitCsWTMAVq9enW5ft27dokePHnTq1Imff/7Z+L619f//1E8Zft2+fdv4um7dumn6i4qKYseOHQAkJCRk57TyXM2aNYmLi8PPzy/dKYtxcXGsWrUKgPbt22dpEfJ27doBcOLEiXTX3PLx8QGgWbNmlC9fPjflSxYokBIRERERERExo8mTJxtHKkFysDRs2DCioqJo0KABnp6eAIwaNQobGxu2b9/OZ599lmoUlJ+fH0OGDCEuLo5y5crx6quvGrelnO5nGPEDyVPWDL766qtUa0hdvXqVwYMHExAQACSHU5bUunVrY71eXl6pQqmHDx/y7rvv8ueff+Li4sI777yTat/79+/j7+/PzZs3U71fuXJlOnbsSEJCAqNGjeLGjRvGbT/99BPffvstAMOHD8+v05IUtIaUiIiIiIiIiJnUqVOHsLAw+vTpQ+XKlXF0dMTPz4+EhASqVq3Kl19+aRzt07hxY6ZPn86HH37IypUr+f7776lWrRqRkZHcuHGDpKQkSpYsybJly1I9ha948eKUK1eOwMBARowYQdWqVXnvvfdo2bIl7du3Z9euXSxfvpzNmzdTvnx5QkNDjaOn/vWvf3HkyBEiIyN59OgRRYoUsch1sre356uvvqJ///7cvHmTrl27Ur58eYoWLcqVK1eIi4vDxcWFZcuWUbJkyVT7zp07ly1btlCuXDn27duXatt///tf/Pz88PPzo3379tSoUYPw8HDj2lFeXl60aNHCbOf5NNMIKREREREREREzcXFxYcOGDbz55ps8evQIf39/KlasyIgRI9i0aRNlypRJ1b5Lly789NNPvPXWW5QqVYorV65w9+5dqlWrxqBBg9i6dStVqlRJc5wvv/yShg0bkpiYSEBAgHG00Jw5c5g+fTrPPfccSUlJXL58mdjYWFq1asU333zD8uXLefbZZwHShDnmVrVqVbZu3cqIESNwc3MjODiY69evU6lSJYYMGcKuXbuoU6dOtvp0cXFh/fr1jBw5ksqVK+Pv709ISAjNmjVjwYIFDBs2LJ/ORv7OKsnUamqSxqlTp+jZs6fx77Vr19KkSRMLViQiIiIiYtqD0Cj6T9+T5fYrprShZHHHfKxInkRXrlwhPj4eW1tb3NzcLF2OiGRDQb5/NUJKRERERERERETMSoGUiIiIiIiIiIiYlQIpERERERERERExKwVSIiIiIiIiIiJiVgqkRERERERERETErBRIiYiIiIiIiIiIWSmQEhERERERERERs1IgJSIiIiIiIiIiZqVASkRERERERCSf3b59G3d3d9zd3ZkwYUKm7Y8fP25sn5/++OMP6tSpk+lx/Pz88PLyokWLFtStWxdPT08++ugjgoKC8rU++edSICUiIiIiIiJiRj/++CP79++3dBnExsYyYcIE4uPjM2x36tQpunbtys6dO0lMTKRGjRqEhITg4+PDq6++ysWLF81UsfyTKJASERERERERMbMpU6YQFhZm0Rq8vb25evVqhm1CQ0N55513iImJYfDgwRw+fJjNmzdz6NAh2rZtS1hYGKNGjSI2NtZMVcs/hQIpERERERERETOysrIiODiYTz75xGI1nD59mpUrV+Lo6JhhuzVr1hAWFkaDBg0YO3Ystra2ABQpUoTZs2dToUIFbt26xU8//WSOsuUfRIGUiIiIiIiIiBn17NkTgK1bt/Lrr7+a/fiPHz9m0qRJWFtb8+6772bYdsuWLQB07do1zTZ7e3u6dOkCwPbt2/O+UPlHs7V0ASIiIiIiIiJPk969e3Pp0iVOnTrFhx9+SOPGjSlevHim+02cONEYEGXF6tWr8fDwSPP+F198wY0bNxg+fDh16tQxuf/9+/cJDAwEoFGjRum2Mbx/5swZ4uLisLOzy3J98nRTICUiIiIiIiJiRlZWVnz66ae89tprBAcHM336dObMmZPpfpUrVzYZDKWnaNGiad47duwYPj4+uLu7M2LECM6cOWNy/5s3bxrrrVChQrptypUrByQvkH737l0qVqyY5frk6aZASkRERERERMTMKlWqxOjRo5kxYwbbt2+nffv2tG7d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eM0AunTpkuo7UKFCBSZMmMCGDRuyNc2yINMaUiIiIiIiIiL57Nlnn6V379707duXFStW0KRJExwdHSlevDidOnVizZo1ODo6cvHixWw9+c6Ue/fu0b17d5YsWULDhg3ZuHEj//vf/zh06BDjxo0jICCAd999l6VLl+bB2aXvl19+AaBZs2bpLqwOGJ/299tvv5GQkJBme3rTFO3s7Pj111/x9fVNNbrIICkpicKFCwPJ60zlxr59+wDo3LlzqjDKwN7ent69exvbJiUlpdpuY2NDy5Yt0+xXrVo14+tHjx4ZX1eqVAmADz/8kGPHjhEXF2fc5unpyeLFixk6dGguzqjg0AgpERERERERkXzWsGFDGjZsaHJ7lSpVePXVV9mwYQN79+6lR48euTrenDlzuHHjBjVr1mTJkiXY2dkByaNzBg0aRMWKFRk1ahTe3t60adPGGITkJcOaWX/88Qdvv/12um0M0xgjIyMJCgri2WefTbU95XpUf1eoUCEePHiAr68vAQEB3L59m2vXrnHx4kXCwsIASExMzNU5XL9+HYA6deqYbGPY9tdffxEaGoqLi4txW7FixXBwSDsNtFChQsbX8fHxxtfjxo1j+PDh+Pr60q9fPwoXLkzTpk1p0aIF//73v9OMBnuSKZASERERERERKQBq1aoFJD9lLjeSkpLYvXs3AEOHDjWGUSm1adOGmjVrcunSJXbt2sWwYcNydcz0REREAPDw4cMsPR0uPDw8TSCVXpgDEBwczEcffcS+fftShU6Ojo4899xzJCQkcPr06VxUn8wweqlo0aIm2xQpUsT4OjIyMlUgld61/7uUo6patmzJpk2bWLp0KQcOHCAyMpKDBw9y8OBBPvvsMxo3bsy0adOM0xifZAqkRERERERERMwgMTGR+Ph4k+tDGYKJ3K7t9PDhQ+PIo6pVq5psV716dS5dupTrAMwUR8fktcQGDBhgXFg8L8TExNC3b1/8/f0pXrw4b7/9NnXr1qVatWpUrFgRGxsbvL298ySQcnJyIiwszBiupccwGsvQPrdq1arF3LlziYuLw9fXl+PHj3P06FHOnDnD6dOn6devH3v27DFOS3xSaQ0pERERERERkXzWs2dP6taty6xZs0y2uXDhAkCuR784OTlhZWUFJI8kMsUwainlCJ+8VKVKFeD/p+6lJyQkhNOnT3Pnzp006y+Z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AEdHR5NtChUqBCTfkBk5duwYK1eupFOnTrRt2zbvihQRERERERExo2nTpuHr60utWrX45Zdf2LJlC/v37+fzzz/H1taWBQsWcPTo0Sz3t2/fPubMmUNSUhLdunXjyJEj/PDDDxw6dIjx48cTHh7OkCFDuHXrVqZ9eXt7G2c6iZhDvgRS1tbJ3VpZWWXaNjEx0eS28PBwJk2ahKurK1OmTMmz+kRERERERETM6ebNm2zduhVra2tmz55N2bJljds6d+7M4MGDAViwYEGW+zS0feGFF5g+fbpxhpK1tTUDBw7kP//5D9HR0cycOTPDfk6f/j/27j1My6rQG/93GESHQTEFpI2gphwEaauJdhDygFq2Sy3YpRIvEqnoVkPNnRnurJ3StRPdmIfoRdGtlYc8i4cQEU81lxmZR2QUFEsYTE7CIIfn9wfvPFtiBlHnuUV/n891cV0za0whA10AACAASURBVK173WsN3DPj17XW/cdMnjx5o4tKoLVVJJCqra1NkjQ2NrbYZuXKlUnS4pa+JDnvvPPy2muv5YILLsg222zTuoMEAACAgtx2221Zs2ZN9txzz+y2224b1B999NFJkieeeCJ//etf37G/hoaGPPPMM0mSUaNGNdvm//yf/5MkeeCBB7Jo0aJm2yxfvjxnn3122rRpk1NPPXWT5gKtoW0lOq2trU1tbW2WLl2axsbGbLXVVhu0WbBgQZL/PUvqH/3lL3/JnXfemW233TY333xzbr755nLdvHnzkiR/+tOfcuaZZ2bXXXfN6NGjKzATAAAAeP9mzpyZJPnUpz7VbP0OO+yQbt265dVXX01dXV2OPPLIjfb39tCqX79+zbbZZZddkiRr1qzJU089lf3333+DNv/1X/+VuXPnZvTo0S32s6keeuihXHfddfnzn/+cJUuWpEOHDunVq1e+8IUvZOjQoWnXrt0G1yxbtixXX311fve732Xu3LkplUrp3r17DjnkkIwYMaLFxSkNDQ351a9+lalTp2bevHkplUrZZZdd8qUvfSnDhw9v9l733ntvbrzxxjz11FNZtmxZtt122+y111455phj8pnPfGaD9k2Huz/55JOZMWNGrrnmmjz77LNZtWpVdtlllxx55JE59thjs8UWW2xw7YIFC3LVVVdl2rRp+dvf/pbtttsuX/ziF3PyySe3+PVrbGzMNddck3vuuScvvfRSVq9enU6dOmXvvffOMccc0+K/nQ+rigRSVVVV6dmzZ2bOnJn6+voN/lEvWrQoCxcuTMeOHbPDDjs020fT2VKLFi3KHXfc0WybefPmZd68edl3330FUgAAAGy25s6dmyTp0aNHi22aAqk5c+a8Y39vPyKnbdvm/9P+7QeUv/rqqxvUP/bYY/n1r3+d3r175+STT84TTzzxjvdtyTXXXJOf/OQnSdYtPOnTp0/eeOON1NXVpa6uLvfcc08mT56c6urq8jX19fX59re/nVdffTXV1dXp3r17ttpqq8yePTuXXnppbr311vzyl7/Mrrvuut69/vjHP+aUU07J66+/nrZt22bXXXfNW2+9lWeffTbPPPNMHnzwwUyaNKkcSq1atSpjxozJ7373uyRJ586d06dPn8ybNy/33Xdf7rvvvowYMSJnn312s3O7+OKLc+WVV6Z9+/bZaaedsmDBgjz77LN59tln8+c//zkXXXTReu2fe+65jBo1Kg0NDdliiy3Sq1evLF68OFdeeWUeeuih8rnbb/fWW29lxIgR+dOf/pTq6urstNNOqampySuvvJI777wzd911V3784x9n6NCh7/nvaHNTkS17STJw4MAkydSpUzeomzp1akqlUgYNGtTi9fvtt1+ef/75Zv9ccMEFSZIvf/nLef755/M///M/lZkEAAAAtILXX389SbLddtu12GbbbbdNkrzxxhvv2N+OO+5Y/vjZZ59tts0LL7xQ/njx4sXr1S1btizf//7307Zt24wbN67ZVT6basmSJfnZz36WJBk/fnweeuih/Pa3v820adMyadKkbLXVVuVQqsny5cszevTovPrqqzn44IPzwAMP5N57781tt92W6dOn54ADDsirr76ak046ab3jgBYvXpzTTjstr7/+egYNGpTp06fn9ttvzz333JMbb7wx2223Xerq6nLppZeWrxk3blx+97vfpX379vnv//7vPPzww7npppvyyCOP5Nxzz03btm0zefLkTJ48udn5XXnllTnhhBPy+9//PrfeemseeuihHH/88UmSKVOmrPf1X716dc4444w0NDTk05/+dKZPn56bb745999/fyZOnJi//e1v+fvf/77BPX7729/mT3/6U3beeedMnTo1d999d26++eY8/PDDOfbYY1MqlfLTn/60fPzRR0HFAqkhQ4akpqYmkydPXi9lffHFF3PxxRcnWX+f64IFC1JfX1/eygcAAAAfFU2hSnNbyZo0vY1+Y+cxN9luu+2y1157JUkuv/zylEqlDdpcccUV5Y9XrVq1Xt1PfvKT/PWvf80JJ5yQvn37vvMENuKll17KypUr07Fjxxx++OHr1e2///45/vjjc9hhh60Xet14442ZO3du+vXrl0suuWS93VOdO3fOf//3f6dbt26ZM2fOekf4XH/99WloaEi3bt1yySWXpHPnzuW6/v375/vf/36S5JZbbsnatWvz2muv5Te/+U2S5Mc//nG+8IUvlNtXV1fn2GOPzWmnnZYk+fnPf54333xzg/kdeOCBOf3008t/P9XV1fnOd76Tjh07Jsl6mcd9992X2bNnp2PHjpkwYUI6depUrvv85z/f4gvbnnvuuSTJoEGD8k//9E/l8i233DLf+973sv/+++eQQw5p8SywD6OKBVJdu3bNOeeckxUrVmTYsGE57rjjcsIJJ+TII49MQ0NDzjjjjPTp06fcfvz48Tn88MMzfvz4Sg0JAAAAPhBv36r2TjbljfVJMmbMmLRp0yYPPfRQTj755MyaNSurVq3KnDlzctZZZ+X3v/99OTR5exg0bdq03Hzzzdl9991z4oknvruJNGPHHXdM27Zts3jx4nzve98rhytNTj755EyYMCGHHnpouaxpN9Xhhx/e7Ndmq622ymGHHZZk3aHsTZo+PuKII5o9r/qwww7LrbfemnvvvTdt2rTJjBkzsnr16nTu3HmDsKzJsGHDssUWW2Tp0qWpq6vboP6ggw7aoKxpW12yboVYk+nTpydJDj744PLX/u2+9KUvZeutt96gfOedd06S3HTTTfnVr3613iqqdu3aZdKkSbngggtaPPbow6giZ0g1GTp0aLp27ZqJEydm5syZqa6uTt++fTNy5Mj1/iECAADAR1n79u2zePHivPXWWy22adqO1VzQ0pz99tsv559/fsaOHZv7778/999/f7luyy23zI9//OPccMMN+fOf/5za2tok67YDnnvuudliiy3e91a9Jttvv31GjRqVK664IrfeemtuvfXWdO7cOZ/+9Kez//77Z9CgQRtsVZw1a1aSdSul3j7ut1u4cGGSdTutmrz88stJst4Cl7dr165ddt999/LnTdfuvvvuadOm+TU57du3zy677JJZs2blpZdeyoEHHrhefUshUNPf05o1a8plL730UpKkZ8+ezV6zxRZbZLfddsuf/vSn9cqHDh2am266KbNnz855552XH/3oR9l9993zmc98JgMHDsyAAQNaPCvsw6risxk4cGD5PKmNGTduXMaNG7dJfX71q1/NV7/61fc7NAAAACjExz72sSxevHij50M11W2//fab3O9RRx2VffbZJzfccEOeeeaZVFdXZ/fdd8+QIUPSvXv3XHbZZUn+N1Q577zz0tDQkFNPPbXFUOe9GDNmTPbYY49ce+21efzxx9PQ0JA77rgjd9xxR9q2bZvDDz885557bnl10LJly5Ikc+bMecdD3JcuXVr+uGnLWvv27TdpXE33aW5V0tt16NAhSZrdsvdOod3bt0s2rZba2PiaWznVoUOHXH/99bnyyitz5513Zu7cuXnmmWfyzDPPZNKkSdl+++3zne98J//6r/+60bF8mHy04jUAAADYDH3iE5/InDlzmn3bXZOmuqbtW5uqe/fuOeOMMzYof+ONN8p99u7dO0ly9913J0kmTJiQCRMmtNhnU/sLLrhgkxeEHHLIITnkkEOybNmy8tv1Hnzwwbz44ou5/fbbs3Tp0vK5VjU1NeXP/3FF0sY0XddccNScppVhbw+1mtMUJDW1f6+aDqZvCsKa09IZYR06dMipp56aU089NXPnzs0f/vCH/OEPf8iMGTPy+uuvZ+zYsdl2220/MjvOKnaGFAAAALDOP//zPydJZs6c2Wz9a6+9lr/+9a9JUj6s/J1MmTIlEydOzNy5c5utnzZtWpJ1Zzx17949SbL33nu3+KdXr17la5vKNmW1VmNjY5577rny2VEdOnTIQQcdlO9973u5++67y2HZAw88UA6GdtlllyTrvwnwH82ZMyd/+ctf1jtPqSmsa+m6VatW5eijj86pp56aV155JZ/4xCeSrHsT4dq1a5u9ZtmyZeVVWk3nQr1XTfNq6c2HpVIp9fX1G5S//vrrefzxx8tz3WmnnfKv//qvufDCCzN9+vTsscceSZLbbrvtfY1vcyKQAgAAgAprertbXV3demciNfn1r3+dJNl3332z4447blKf119/fS688ML89re/3aDurbfeyqRJk5Ik3/zmN9e7T0t/fvCDH2zQ7vOf//wmjeOII47Id7/73Wbf9vfZz362/HHTeUtNq6JuuummZlcMrV69OieddFKGDBmSn/70p+XypvHccccdzZ7HNWPGjDzxxBN56KGHsv3222fQoEFp27ZtGhoaMmXKlGbHf+2112b16tWpqanJvvvu+47z3Zim1UvTpk3L/PnzN6h/4IEH0tDQsEH5t771rRx77LG55ZZbNqirra3NnnvumWT986o+7ARSAAAAUGE777xz/uVf/iVr1qzJKaecst6qpttuuy3/9//+3yTJ6NGjN7j25ZdfTn19fRYsWLBeedNWusmTJ+fRRx8tly9cuDCnnHJK6uvr06NHjxxzzDGVmFLZF7/4xWyxxRaZNWtWzj///Cxfvrxc9/e//z0XXXRRknWrxJq2tB177LHp3Llz5s6dm9GjR5dXhzVd853vfCf19fXZYostMnLkyHLdMccck2233TZz587NmWeeWT5TKkmefPLJ/Md//EeS5Oijj0779u3z8Y9/vHzu0tixY3PPPfeU269duza/+tWvcskllyRJTjrppHc8a+qdHHDAAdl7772zfPnynHjiiXnllVfKdY8//njOOeecZq874ogjkiQ///nPM2PGjPXqHn/88fLKqE0JCD8snCEFAAAABfjBD36QWbNmZdasWfniF7+YXr16ZcmSJeVznsaMGbPeaqImI0aMyKuvvpqjjjpqvZeBfeUrX8m0adNyzz335LjjjkuPHj3Svn371NfXZ9WqVenWrVuuuuqqtGvXrqLz6tKlS84///x897vfzTXXXJObbropPXr0yJo1a/Lyyy9n5cqV+djHPpaf/OQn5Ws6duyYyy+/PKNHj86jjz6agw8+OLvttluqqqry0ksv5a233krbtm0zfvz48nlWyboD33/+85/npJNOyr333psHHnggPXv2zJIlSzJv3ryUSqXsv//+Oe2008rXnH322Zk/f37uv//+nHbaaenSpUu6du2aV155pXyQ/LBhw/Ltb3/7fX8t2rRpkwsvvDCjRo3KM888k8MOOyy9evXKihUrMmfOnOy4447ZYYcdNtjSN3z48Dz66KOZMWNGvv3tb6dLly7p0qXLeueAHXTQQRk6dOj7HuPmQiAFAAAABfjYxz6W66+/PpMmTcrdd9+d+vr6tG3bNvvuu2+++c1vvuvDqquqqnLRRRfls5/9bG666aa88MILWb16dXr06JFDDjkkI0eObPaNbpXwla98JV27ds21116bP//5z+XVTTvttFMOPPDAjBgxItttt9161/Tv3z933HFH/ud//ifTpk3L3Llzs2rVqnTu3Dn77rtvjjvuuGbfBDhgwIDceeedmTRpUh588MHMnj071dXV+eQnP5mvfe1rGTp0aNq0+d8NYe3atcull16au+++O7/97W/z1FNP5dlnn03nzp3z2c9+Nl//+tez3377tdrX4p/+6Z9y/fXX55prrsmUKVPy0ksvpUOHDvna176W008/PWeeeeYG11RXV+fSSy/Nr3/96/K/jeeeey7bbLNN9t9//xxxxBH58pe/nKqqqlYb5wetqtTcBk+a9fjjj+fYY48tf37ddddln332+QBHBAAALVu4aEWO+/F9m9z+qrGHptO2NRUcER9GTSFH27Zt07Nnzw96OMC7sDk/v86QAgAAAKBQAikAAAAACiWQAgAAAKBQAikAAAAACiWQAgAAAKBQAikAAAAACiWQAgAAAKBQAikAAAAACiWQAgAAAKBQAikAAAAACiWQAgAAoEXV1dVJkjVr1mTt2rUf8GiATbV27dqsWbMmyf8+x5sTgRQAAAAt2mqrrZIkpVIpy5Yt+4BHA2yqZcuWpVQqJUlqamo+4NFsSCAFAABAi7bZZpvyx6+99lqWLFlipRRsxtauXZslS5bktddeK5dtvfXWH+CImtf2gx4AAAAAm6/a2trU1NRkxYoVWbNmTV599dVUVVVtlluAgHXba5tWRiXrVkfV1tZ+gCNqnkAKAACAFlVVVaVHjx55+eWXs2LFiiTrtu+tXr36Ax4Z8E5qamrSo0ePVFVVfdBD2YBACgDeozVrS3ljSeMmtf3YNlulus3m94sAAGyKNm3aZKeddsqbb76ZpUuXlldLAZuf6urq1NTUZOutt05tbe1mGUYlAikAeM/eWNKY43583ya1vWrsoem07eZ3mCQAbKqqqqp06NAhHTp0+KCHAnwEONQcAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAolEAKAAAAgEIJpAAAAAAoVNtK36Curi5XXHFFnn322TQ2NqZ3794ZPnx4Dj/88E3u4+WXX86ll16aRx55JIsWLUrnzp0zcODAjB49Oh//+McrOHoAAAAAWltFV0jdfvvtGT58eOrq6tK3b98MGDAgTz/9dMaMGZMJEyZsUh9z5szJkCFDcuutt2brrbfOAQcckPbt2+f666/Pl7/85Tz33HOVnAIAAAAAraxiK6QWLlyYsWPHpqamJtdee2369euXJKmvr8/w4cNz2WWX5eCDDy6Xt+S73/1uFi9enFNOOSUnn3xyqqqqkiQ///nPc8kll2Ts2LG58cYbKzUNAAAAAFpZxVZIXXfddWlsbMywYcPWC5123XXXnH766SmVSrn66qs32secOXPy5JNPplu3buuFUUly0kknpX379nnyySezaNGiSk0DAAAAgFZWsUDqwQcfTJIMHjx4g7rBgwenqqoq06dP32gfO++8cx577LFceeWV64VRSbJq1aqsWrUqSVJdXd06gwYAAACg4ioSSJVKpcyePTtJ0rNnzw3qO3bsmE6dOmXx4sWZP3/+RvvabrvtsvPOO69XtmLFipx33nlZtWpVBg8enK233rrVxg4AAABAZVXkDKnFixdn5cqVqa2tTfv27Ztt06VLlzQ0NGThwoXZYYcdNqnfqVOn5te//nWefPLJLFmyJAceeGDGjRvXmkMHAAAAoMIqskJqxYoVSZKampoW22y55ZZJkuXLl29yv4899lgefvjhLFmypHyfOXPmvPeBAgAAAFC4igRSbdqs6/Yfz31qztq1aze53xNPPDF/+ctfMnXq1IwYMSK///3vM3z48NTX17/nsQIAAABQrIoEUrW1tUmSxsbGFtusXLkySVrc0teczp07p127dunevXvOPvvsfP3rX8/y5cvzy1/+8v0NGAAAAIDCVCyQqq2tzdKlS1sMpRYsWJBk3VlS79URRxyRJHn66affcx8AAAAAFKsigVRVVVX57XrNbadbtGhRFi5cmI4dO270QPPHH388Y8eOzY033thsfbt27ZIkq1evboVRAwAAAFCEigRSSTJw4MAk696M94+mTp2aUqmUQYMGbbSPRYsW5YYbbsikSZOaPWtqxowZSZJ+/fq1wogBAAAAKELFAqkhQ4akpqYmkydPzhNPPFEuf/HFF3PxxRcnSUaNGlUuX7BgQerr68tb+ZJk0KBB6datW1566aX87Gc/Wy+UmjZtWq644opUV1fnuOOOq9Q0AAAAAGhlbSvVcdeuXXPOOedk7NixGTZsWPbbb7+0a9cujz32WFauXJkzzjgjffr0KbcfP358brnllhx11FEZN25cknVb8i688MJ861vfyqRJk/K73/0uvXv3ziuvvJLnnnsubdu2zXnnnWeFFAAAAMCHSMUCqSQZOnRounbtmokTJ2bmzJmprq5O3759M3LkyBx66KGb1Mdee+2V2267LZdddlkefvjhPPDAA+nYsWO+8IUvZNSoUenfv38lpwAAAABAK6toIJWsO0uq6TypjRk3blx5ZdQ/6t69ey644ILWHhoAAAAAH4CKnSEFAAAAAM0RSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQKIEUAAAAAIUSSAEAAABQqLaVvkFdXV2uuOKKPPvss2lsbEzv3r0zfPjwHH744Zvcx0svvZSJEyfmsccey8KFC9O+ffv0798/I0aMyMCBAys4egAAAABaW0VXSN1+++0ZPnx46urq0rdv3wwYMCBPP/10xowZkwkTJmxSH3/84x/z1a9+NTfffHO23HLLfP7zn0+PHj3y8MMPZ9SoUZk0aVIlpwAAAABAK6vYCqmFCxdm7NixqampybXXXpt+/folSerr6zN8+PBcdtllOfjgg8vlzVm9enXOOuusLF++PGeccUa+/e1vp6qqKknyyCOP5IQTTsjPfvazDBw4ML169arUVAAAAABoRRVbIXXdddelsbExw4YNWy902nXXXXP66aenVCrl6quv3mgfdXV1mTdvXvr375/jjz++HEYlyec+97l8/etfz9q1azNlypRKTQMAAACAVlaxQOrBBx9MkgwePHiDusGDB6eqqirTp0/faB9vvvlm+vfvn0GDBjVbv/POOydJFixY8L7GCgAAAEBxKrJlr1QqZfbs2UmSnj17blDfsWPHdOrUKQ0NDZk/f3522GGHZvs55JBDcsghh7R4nyeffDJJ0rVr11YYNQAAAABFqMgKqcWLF2flypWpra1N+/btm23TpUuXJOvOmnovnn/++dx1112pqqrKoYce+p7HCgAAAECxKhJIrVixIklSU1PTYpstt9wySbJ8+fJ33f/rr7+eU089NWvWrMlRRx2VPn36vLeBAgAAAFC4igRSbdqs6/bth5C3ZO3ate+q7/nz52f48OGZM2dO9thjj5x77rnvaYwAAAAAfDAqEkjV1tYmSRobG1tss3LlyiRpcUtfc2bNmpWjjz46s2fPTv/+/XPllVdudBUWAAAAAJufigVStbW1Wbp0aYuhVNOb8ZrOknonjzzySI4++ui8+uqr2X///XP11VenY8eOrTZmAAAAAIpRkUCqqqqq/Ha9+vr6DeoXLVqUhQsXpmPHji2+Ye/t7rjjjhx//PFZtmxZhgwZkl/84hflVVgAAAAAfLhUJJBKkoEDByZJpk6dukHd1KlTUyqVMmjQoHfsZ9q0afn3f//3rF69Oqecckp+8pOfpG3btq0+XgAAAACKUbFAasiQ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QAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQgmkAAAAACiUQAoAAACAQrX9oAcAAAB8+K1ZW8obSxo3uf3Httkq1W2qKjgiADZnAikAAOB9e2NJY4778X2b3P6qsYem07Y1FRwRAJuzigdSdXV1ueKKK/Lss8+msbExvXv3zvDhw3P44Ydvch/Lli3LL3/5y9x7773561//mm233TYHHnhgTj311Gy//fYVHD0AAAAAra2iZ0jdfvvtGT58eOrq6tK3b98MGDAgTz/9dMaMGZMJEyZsUh/Lli3L8OHDc8UVV2TNmjU54IAD0r59+/zmN7/JUUcdlddee62SUwAAAACglVUskFq4cGHGjh2bmpqaXH/99Zk0aVImTpyYW2+9NZ06dcpll12Wp59++h37ueSSS/L000/nyCOPzN13350JEyZkypQpGTFiRObPn5/zzjuvUlMAAAAAoAIqFkhdd911aWxszLBhw9KvX79y+a677prTTz89pVIpV1999Ub7WLZsWW644YbU1NTk+9//ftq2XbfDsE2bNjnrrLPSvXv3TJs2LS+//HKlpgEAAABAK6tYIPXggw8mSQYPHrxB3eDBg1NVVZXp06dvtI+6urosX748++yzTzp27LheXXV1dQ488MAkecd+AAAAANh8VCSQKpVKmT17dpKkZ8+eG9R37NgxnTp1yuLFizN//vwW+9lYH0my2267JUlmzZr1focMAAAAQEEq8pa9xYsXZ+XKlamtrU379u2bbdOlS5c0NDRk4cKF2WGHHZpts2DBgnLb5nTu3DnJuvOqirB8+fL1Pn/++ecLuS8Am27xsrey4u8vbVLbP8/8Uzp2aPehuBfAe/Fuvk8l7+97VZH3AqDyevfuna233rpi/VckkFqxYkWSpKampsU2W265ZZINQ563a6rbaqutmq1vKt9YH63plVdeWe/zH/3oR4XcF4DKOOnRyz+S9wJ4r3xfBKDJddddl3322adi/Vdky16bNuu6raqqese2a9eubbGuurp6k/oplUrvYnQAAAAAfJAqEkjV1tYmSRobG1tss3LlyiRpcUvf2+ta6qepfGN9AAAAALB5qciWvdra2tTW1mbp0qVpbGxsdsvdO50PlaR8tlRLZ0Q1NDQk+d+zpCrtoIMOWu/zHj16bHRbIgAAAMCHUe/evSvaf0UCqaqqqvTs2TMzZ85MfX19+vXrt179okWLsnDhwnTs2LHFA82T/327XtPb9v7RCy+8kCTp1atXK4184z7+8Y/n2GOPLeReAAAAAB9VFdmylyQDBw5MkkydOnWDuqlTp6ZUKmXQoEEb7WOfffZJ+/btU1dXl6VLl65Xt2bNmjzwwAOpqqoq3wsAAACAzV/FAqkhQ4akpqYmkydPzhNPPFEuf/HFF3PxxRcnSUaNGlUuX7BgQerr68tb+ZJ1b+n72te+ljfffDPnnntu3nrrrSTrDjH/r//6r8ybNy+DBw/OLrvsUqlpAAAAANDKqkoVfEXdjTfemLFjx6ZNmzbZb7/90q5duzz22GNZuXJlzjjjjBx//PHltt/73vdyyy235Kijjsq4cePK5cuWLcvRRx+dWbNmpVu3btljjz3ywgsv5MUXX0y3bt3ym9/8ZqPnUAEAAACweanIGVJNhg4dmq5du2bixImZOXNmqqur07dv34wcOTKHHnroJvXRoUOHXHfddbn88stz77335oEHHsgOO+yQY445JieddFJhB5oDAAAA0DoqukIKAAAAAP5Rxc6QAgAAAIDmCKQAAAAAKJRACgAAAIBCCaQAAAAAKJRACgAAAIBCCaQAAAAAKJRACgAAAIBCCaQAAAAAKJRACgAAAIBCCaQAAAAAKJRACgAAAIBCCaQAAAAAKJRACgAAAIBCCaQAAAAAKJRACgAAAIBCCaQAAAAAKJRACgAAAIBCCaTeh7q6uowcOTKf+cxnstdee+Ub3/hGpkyZ8q76WLZsWS666KJ84QtfyCc/+ckMGjQo//Ef/5HXX3+9QqOGzU9rPEsvvfRSzj777BxwwAHZY489su++++Zb3/pWHnrooU26/tJLL03v3r0zd+7c9zIF2Ky1xjP2j+6444707t07Z5555ia1v/XWW9O7d+88+uij7+u+sDlqrWfs9ttvzzHHHJNPfepT+eQnP5mjjjoq119/fUql0gZt33rrrUycODFHHHFE9txzz/zzP/9zvvzlL+fyyy/PypUrW2NasNlojWdswYIFOffcc8u/K+63334ZPXp0Zs6c2Wx7zxhUXvUPf/jDH37Qg/gwuv3223PSSSflb3/7W/baa6/suOOOeeKJJzJlypSUSqXst99+79jHsmXLMnz48Nx9993ZZpttMmDAgCxZsiQPP/xw7rzzznzxi19Mhw4dCpgNfHBa41n64x//mGOPPTZPPvlkOnXqlL333jtt27bN448/nttvvz3t27fP3nvv3eL19913X/7zP/8za9euzTe/+c1su+22rTlF+EC1xjP2j/72t7/lxBNPzMqVK9O7d+8ceuihG23/xBNP5PTTT8+qVaty5JFHpnv37u91OrDZaa1n7Oyzz86ECRPy97//Pfvuu286d+6cp556Kvfff39WrFiRz33uc+W2K1asyIgRI3LzzTdn5cqV2XPPPdOtW7e88MILmTFjRh599NF86UtfyhZbbFGpaUNhWuMZmzdvXoYOHZq6urpsu+22GTBgQKqqqlJXV5dbbrkln/jEJ9KzZ89ye88YFKTEu9bQ0FD65Cc/Wdpzzz1LTz31VLl89uzZpc9+9rOl3r17r1fekvPPP7/Uq1ev0llnnVVatWpVqVQqldasWVMuP/HEEys2B9gctMaztGrVqtJBBx1U6tWrV+kXv/hFae3ateW6hx9+uNSvX79Snz59Ss8//3yz10+ePLnUr1+/Uq9evUq9evUqzZkzp3UmB5uB1vp59XZr164tffOb3yw/M2ecccZG2991112lPffcs9z+kUceeU9zgc1Raz1jt9xyS6lXr16lww47rDRv3rxy+axZs0r77rtvqVevXqVnnnmmXH7RRReVevXqVfrGN75Rev3118vlCxcuLA0dOrTUq1ev0k9/+tNWmiV8cFrrGTvllFNKvXr1Kv3whz8srV69ulx+4403lnr16lUaMGBAqbGxsVzuGYNi2LL3Hlx33XVpbGzMsGHD0q9fv3L5rrvumtNPPz2lUilXX331RvtYtmxZbrjhhtTU1OT73/9+2rZtmyRp06ZNzjrrrHTv3j3Tpk3Lyy+/XNG5wAepNZ6lurq6zJs3L/3798/xxx+fqqqqct3nPve5fP3rX8/atWs3WNb93HPP5bjjjsv555+fDh06pLa2tnUnB5uB1njG/tFVV12VP/zhDxkwYMBG273yyisZM2ZMxowZk1KplE6dOr2nOcDmrLWescsuuyzV1dW5+OKL061bt3J5z549M3LkyHz84x/PU089VS6/+eabkyQ/+tGPst1225XLt99++5x77rlJkrvuuut9zw8+aK31jD388MNJkn/7t39LdXV1uXzIkCHZeeeds3jx4jz//PPlcs8YFEMg9R48+OCDSZLBgwdvUDd48OBUVVVl+vTpG+2jrq4uy5cvzz777JOOHTuuV1ddXZ0DDzwwSd6xH/gwa41n6c0330z//v0zaNCgZut33nnnJOvODXi7f//3f8+jjz6a/fffPzfffLNtenwktcYz9nbPP/98Lrroohx44IH56le/utG2F1xwQaZMmZL+/fvnhhtuyCc+8Yl3NXb4MGiNZ+y5557L3Llz8+lPfzp9+vTZoP6EE07I9OnTM3To0CTrfu716NEjffr0WW+LUZOmn3sNDQ3vcjaw+Wmtn2Nt2qz7z97XXnttvfJVq1Zl2bJlSVL+XdAzBsVp+0EP4MOmVCpl9uzZSdLsN6iOHTumU6dOaWhoyPz587PDDjs028/G+kiS3XbbLUkya9as1hg2bHZa61k65JBDcsghh7R4nyeffDJJ0rVr1/XKP/WpT+X000/P5z//+fc6BdistdYz1uStt97KmWeemdra2vznf/5nZsyYsdH2vXv3zuGHH54vfelL661chI+K1nrGmlY+9e/fP6VSKQ899FAeffTRLFu2LL169coRRxyx3v+8rK2tzbXXXtviuP7yl78kyTs+07C5a82fY4MGDcpdd92Vs846K+edd1769euX+fPnZ/z48Vm4cGEGDx6cHj16JPGMQZEEUu/S4sWLs3LlytTW1qZ9+/bNtunSpUsaGhqycOHCFr9RNa3W6NKlS7P1nTt3TpIsXLiwFUYNm5/WepY25vnnn89dd92VqqqqDQ5dblpuDR9Vrf2MjR8/PrNmzcqECRM2afvdaaed9p7GDR8W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\n", "text/plain": [ "
" ] }, "metadata": { "image/png": { "height": 297, "width": 594 } }, "output_type": "display_data" } ], "source": [ "r = GD(X,beta,N=40)\n", "ax = pd.DataFrame(r['q']).plot.bar(title=r'Distribution of reconstruction $\\hat{X}$',rot=0)\n", "ax.legend(legend_string(r))\n", "xticks = np.arange(0,len(r['q']),8)\n", "plt.xticks(xticks,np.round(r['xhat'],2)[xticks])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "lines_to_next_cell": 2 }, "source": [ "Note that the above results imply that for our choice of $\\beta=15$ the optimal reconstruction has support on only two elements (which are located such that the average distortion is minimized). By increasing $\\beta$, there will be several phase transitions where more and more reconstruction points are added. However, __due to the fixed discretization of the range of $X$, the exact support and shape of $q(\\hat X)$ can only be approximated__. This issue is resolved by the following approach." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Mapping approach ([RD_MA.py](https://github.com/sgttwld/rate-distortion/blob/master/RD_MA.py))\n", "\n", "The [mapping approach](https://ieeexplore.ieee.org/document/340468) to \n", "rate-distortion makes use of the Borel isomorphism theorem, which allows to replace the expectation with respect to $q(\\hat{X})$ by integration over $u\\in [0,1]$ (with respect to the Lebesgue measure) and where \n", "the value of $\\hat X$ is replaced by the value $y(u)$ of some mapping $y:[0,1]\\to \\mathrm{ran}(X)$, i.e.\n", "$$\n", "\\mathbb E_{q(\\hat X)}[f(\\hat X)] = \\int_0^1 f(y(u)) du\n", "$$ \n", "for any measurable function $f$. Applied to the minimization of the Lagrangian $F_{GD}$ above, this allows \n", "to replace the optimization of $F_{GD}$ with respect to $q(\\hat X)$ by the optimization of \n", "$$\n", "F_{M}(y) := -\\frac{1}{\\beta}\\mathbb{E}_X \\Big[ \\log \\int_0^1 e^{-\\beta d(X,y(u))} du \\Big]\n", "$$\n", "with respect to the mappings $y:[0,1]\\to \\mathrm{ran}(X)$. \n", "\n", "Instead of discretizing the range of $X$, we can now __discretize the domain of $y$__, so that the optimization \n", "is over the values $y_i := y(b_i)$ where $(b_i)_{i=1}^N$ are the fixed representatives for each chunk of the \n", "discretization of $[0,1]$. Note that the difference to the other approaches boils down to how the expectation \n", "with respect to $q(\\hat X)$ is calculated from an $N$-dimensional vector,\n", "$$\n", "\\underbrace{\\sum_{i=1}^N q_i e^{-\\beta d(X,\\hat x_i)}}_{\\text{1. and 2. above}} \\ \\ vs. \\ \\ \\underbrace{\\frac{1}{N}\\sum_{i=1}^N e^{-\\beta d(X,y_i)}}_{\\text{mapping approach}}\n", "$$\n", "where $\\{\\hat x_i\\}_{i=1}^N$ is the fixed finite range of $\\hat X$ and $q_i:=q(\\hat x_i)$ are the optimization \n", "variables in the above approaches, whereas $y_i = y(b_i)$ are the optimization variables in the mapping \n", "approach. In particular, here the __possible values of the reconstruction $\\hat X$ can perfectly adapt to the \n", "source $X$__, whereas in the other approaches the possible values are fixed by the discretization. We have implemented two different variants of the mapping approach:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Direct optimization.__ Here we optimize the discretized version of $F_M$,\n", "$$\n", "F^{disc}_M(y) := - \\frac{1}{\\beta} \\mathbb E_X\\Big[ \\log \\sum_{i=1}^N e^{-\\beta d(X,y_i)} \\Big] ,\n", "$$\n", "directly with respect to $y=(y_i)_{i=1}^N$ using gradient descent. " ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABMAAAAJLCAYAAAAB7eq3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAewgAAHsIBbtB1PgAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3XdY1/X+//E7U2SY4EBFFEXAvdOOnexoJmnO1NIcaUk5y9lRy8xRjhS3ae78OSsXqGmGmhoHcm9xIThwoKAgG35/cPH5QgzBRXx43K7L68D7Nd7P94fkqsd5vV5vk5SUlBRERERERERERESMlGl+FyAiIiIiIiIiIvI8KQATERERERERERGjpgBMRERERERERESMmgIwERERERERERExagrARERERERERETEqCkAExERERERERERo6YATEREREREREREjJoCMBERERERERERMWoKwERERERERERExKgpABMREREREREREaOmAExERERERERERIyaAjARERERERERETFqCsBERERERERERMSoKQATERERERERERGjpgBMRERERERERESMmgIwERERERERERExagrARERERERERETEqCkAExERERERERERo6YATEREREREREREjJoCMBERERERERERMWoKwERERERERERExKiZ53cBIiIiUjj17NmTwMDAPI3p2LEjU6ZMeU4VibE6fvw48+fP58SJE0RFReHg4ED37t355JNP8rs0EREReUEUgImIiIiI0bp48SI9evQgPj7ecO3WrVvY2trmY1UiIiLyoikAExERkXxVrlw5fH19c9XXwsLiOVcjxsbHx4f4+HjMzMyYPn06r7zyComJiQrAREREChkFYCIiIpKvTExMsLGxye8yxEjdvXsXgKpVq9K6det8rkZERETyiw7BFxERERGjlZSUBPBEIWvTpk3x8PCgV69ej+0bFBRE9erV8fDwYNmyZXm+l4iIiDxfCsBERESkwAkICMDDwwMPDw/i4+Px9vamSZMm1K5dG09PT3x8fDKNOXr0KCNGjOA///kPtWrVolGjRvTo0YO1a9eSkJCQ7b0SExPZvHkz3bt3p3HjxtSvX5/333+fnTt3AqmH+Xt4eDB37txsawwICMh2/rQ+fx//pHVfu3bNMOe1a9e4desWkyZNokWLFtSq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iIiIiIiIiFFTACYiIiIiIiIiIkZNAZiIiIiIiIiIiBg1BWAiIiIiIiIiImLUFICJiIiIiIiIiIhRUwAmIiIiIiIiIiJGTQGYiIiIiIiIiIgYNQVgIiIiIiIiIiJi1Mzzu4DC6uHDh5w/f97wvYeHB3Z2dvlYkYiIiIiIiIiIcVIAlk/Onz9P9+7dDd+vXr2ahg0b5mNFIiIiIiIiIiLGSVsgRURERERERETEqCkAExERERERERERo6YATEREREREREREjJoCMBERERERERERMWoKwERERERERERExKgpABMREREREREREaOmAExERERERERERIyaAjARERERERERETFqCsBERERERERERMSoKQATERERERERERGjpgBMRERERERERESMmnl+FyAiIiIiIiKFR0pKCtHR0Tx48IDY2FiSkpLyuyQRyYaZmRlWVlYUK1YMGxsbTExM8rukJ6YATERERERERF6I5ORkQkJCiImJye9SRCQXEhMTiYuLIzIykqJFi1KhQgVMTQvmZkIFYCIiIiIiIvLcpaSkZAq/TExMMDMzy8eqRCQnSUlJpKSkABATE0NISAgVK1YskCvBCl0A9ttvvzFo0KBs21u3bs3MmTNfYEUiIiIiIiLGLzo62hB+mZmZUaZMGWxtbQvsahKRwiA5OZmoqCjCwsJISkoiJiaG6OhobG1t87u0PCt0Adjp06cBaNSoEY6Ojpna69Wr96JLEhERERERMXoPHjwwfF2mTBmKFSuWj9WISG6Ympoa/q5ev34dgIcPHyoAKwjOnj0LwFdffYWbm1s+VyMiIiIiIlI4xMbGAqnbHgvifzyLFGa2traYmJiQkpJSYM/wK3RrTU+fPk3RokWpXLlyfpciIiIiIiJSaKS97dHMzEzbHkUKGFNTU8N5fQX1za2F6rfO3bt3uXPnDlWrVtVBiyIiIiIiIiIihUSh2gKZdv5XmTJlmDp1Kn5+fty4cYNSpUrh6elJv379eOmll/K5ShEREREREREReZYK1QqwM2fOALBjxw42bNhApUqVqF+/PpGRkSxbtox3332XO3fu5HOVIiIiIiIiIiLyLBWqFWBpB+C//vrrzJgxAzs7OwDu3bvH0KFD+d///sfYsWNZuHBhfpYpIiIiIiIiIiLPUKFaATZ9+nS2b9/O7NmzDeEXgIODA9OmTcPa2po9e/Zw7dq1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HzlyhISEBCwsLHJdn8jjKAATERERERERKaBMTEz49ttvad++PXfu3GHixInMmDHjseNcXFyyDaKyYmdnl+H7li1bMnDgQJydnXM1PiQkxFBvdmOcnJwAiI+P5+bNm1SoUCHX9Yk8jgIwERERERERkQKsYsWKDBs2jG+++QZfX19atWpFixYtchzTr18/+vXr98T3bN68eZ76h4eHA6nnfVlaWmbZJ/3Ktfv37ysAk2dKZ4CJiIiIiIiIFHA9e/bk5ZdfBmDcuHHcv38/nyvKKCYmBoAiRYpk28fKyipTf5FnRQGYiIiIiIiISAGXthWyaNGi3L17l4kTJ+Z3SRmYmZnlqb+JiclzqkQKK22BFBERERERETECFSpUYPjw4UyaNIlt27bx1ltv0bJlyyz7Lly4kH379uV67rFjx1K9evUnrs3a2hqAuLi4bPvExsYavi5atOgT30skKwrARERERERERIxEjx492LlzJ3/99Rdff/01DRs2zLJfcHAwR44cyfW8Dx8+fKq67O3tAYiOjs72DY/pt206ODg81f1E/k4BmIiIiIiIiIiRSNsK2a5dO8LDw5kwYQLdunXL1G/KlClMmTLlhdXl6uoKQHJycrZveLx+/TqQek5Y2bJlX1htUjjoDDARERERERERI5K2FRJgx44d7Ny5M58rgpdeegkXFxcAjh49mmWftOt16tTJ85lhIo+jAExERERERETEyPTo0YNGjRoBsGbNmnyuJtVbb70FwIYNGzK1xcfH88svvwDQsWPHF1qXFA4KwERERERERESMTNpWSGtra1JSUvK7HAB69epFsWLFOHToEJMmTSI+Ph6AqKgoRowYQWhoKM7OzrRt2zafKxVjpABMRERERERExAg5OzsbtkL+E5QoUYJp06ZhYWHBqlWreO211+jUqRNNmzZl586dFCtWjO+//z7LA/JFnpYOwRcREREREZF/nKTkFO4/iM3vMp6YfTErzExN8rsMunfvzs6dOwkMDMzvUgBo1qwZv/zyCwsXLiQwMJBz585hb29Py5YtGThwIM7OzvldohgpBWAiIiIiIiLyj3P/QSx9Ju7K7zKe2PKxLSlZvOhzmbt8+fKcP38+V31NTExYtWrVc6kjvcaNG+e6Jg8PD2bOnPmcKxLJSFsgRURERERERETEqCkAExERERERERERo6YATEREREREREREjJoCMBERERERERERMWoKwERERERERERExKgpABMREREREREREaOmAExERERERERERIyaAjARERERERGRAm7dunV4eHjw008/5djv+vXrfPXVVzRv3pxatWrRvHlzhg8fzunTp3Mcd+nSJb788ktatGhBrVq1qFevHh07dmTBggVERUXlqda5c+fi4eFBt27dsmy/cOFCnubLT5cuXSIlJSXDtZ49e+Lh4cHMmTPzqSrJigIwERERERERkQLsxIkTTJs27bH9/vzzT9q2bcv69esJCwvD1dUVc3NzfH196dSpEytWrMhy3I4dO+jQoQM//fQTYWFhVKxYEXt7e86ePcvs2bPp1KkTYWFhT/0ct2/fZvjw4fTt2/ep53reoqKimDBhAu3atSMpKSm/y5FcMM/vAkRERERERETkyQQEBDB48GCio6Nz7BcWFsann35KdHQ0devWxdvbGycnJwAOHjzIZ599xuTJkylVqhRvv/22YVxoaCiff/458fHxdOjQgS+//BI7OzsAzp49y/Dhw7l06RJDhgxh3bp1uaq5e/futG7dmqJFi2a4fuDAAXx9fXF0dMzLR5AvTp8+zerVq7Nsmzp1KjExMdjb27/gqiQnWgEmIiIiIiIiUsDExcUxd+5c+vTpQ2Rk5GP7L1++nIcPH1KqVCkWLVpkCL8AXn31VUaMGAHA5MmTiYuLM7T9+OOPxMfHU61aNb799ltD+AVQrVo15s6di5mZGUePHuXQoUO5qt3BwQFXV1fKlSuX28ctUMqVK4erqysODg75XYqkowBMREREREREpAC5evUqnp6ezJs3D4AhQ4ZkCLSysm/fPgA6d+5M8eLFM7V36dIFa2tr7ty5w4EDBwzXAwICAGjVqhVmZmaZxrm6ulK5cmUATp069WQPJPICaAukiIiIiIiISAESFhbGzZs3qVu3LmPHjqVmzZqPPfz+xo0bANSsWTPLdjMzMypUqMC5c+c4fvw4b7zxBgBffPEF165do06dOtnOnXYIfG7Pwpo7dy7z5s2jfv36rF27FgAPDw9D+61btwzfnz9/PsPY3bt3s2HDBk6ePMnDhw+xt7enUaNGfPjhh9SoUSPTvdLmOXjwIFOmTOH333/H1NSUGjVqsGzZMszNzUlMTMTX15dff/2V06dPExERgbm5OaVLl6Zx48b06dOHSpUqGeZs3rw5169f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qFixIpMnT+b777/n+vXrJCUlcf36dezt7SlSpAjff/89O3bsYOPGjZw6dYqzZ89iY2ND48aNeeedd2jXrl2GrYm5MWPGDJo0acKGDRsICQnh/Pnz2Nvb06xZM7p27cp//vMfmjVrxo0bN/Dz86Ndu3ZA6iH1s2fPZsaMGVy+fJlr165x7dq1bAMwgPLly/PLL7+wdu1afv31Vy5dukRYWBhly5bltddeo3v37ri4uDzNR2hQunRpfv75Z5YuXcr+/fsJDQ3l5s2blChRgrfffpsePXo819V8/0QmKbnZrCrP3KFDh+jevbvh+9WrVxeq14+KiBRGdyNi6DNxV459lo9tScniRV9QRSIiz5Z+z0lOLly4QGJiIubm5ri5ueV3OSKSRwX977DOABMREREREREREaOmAExERERERERERIyaAjARERERERERETFqCsBERERERERERMSoKQATERERERERERGjpgBMRERERERERESMmgIwERERERERERExagrARERERERERETEqJnndwH5KT4+nk6dOhEUFMSuXbuoWLFifpckIiIiIiIi8lgxMTEsWbKEbdu2ce3aNWxsbKhZsya9evXi9ddff6I5/f39WblyJUePHiU6OprSpUvz73//m969e1O5cuUMfQMCAujVq1eu5548eTLvvPPOE9UlWfPw8ABg+fLlNGnSJJ+r+ecr1AGYt7c3QUFB+V2GiIiIiIiISK49evSI3r17c/z4cSwsLHBzcyMiIoIDBw5w4MABBg8ezKBBg/I057x585g7dy4AxYsXx83NjdDQUNavX8/mzZv57rvv8PT0NPS3s7Ojfv36Oc4ZGhrKnTt3MDU1pUKFCnl/UJFnqNAGYP7+/qxYsSK/yxARERERERHJkwkTJnD8+HGqVavG999/T9myZQHYvHkzX3zxBXPnzqV+/fq5XhXk7+9vCL8+//xzevfujZmZGfHx8UyfPp2VK1cycuRI6tSpQ5kyZQCoXr06a9euzXbOsLAw2rdvD8CwYcNo2LDh0zyyyFMrlGeAPXjwgNGjR1OxYkVKlSqV3+WIiIiIiIiI5EpISAhbt27F1NSU6dOnG8IvgA4dOuDl5QVgCLRyY8mSJQC0adOGjz76CDMzMwAsLS0ZPXo0rq6uxMXFsWnTplzNl5SUxIgRI4iIiKBp06b07ds317WIPC+FMgAbP348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qadmo402yo9+9KPccsstOeKII5Z5/tizzz6bKVOmpHnz5vnWt771ucbdYost0rdv39xzzz25/vrrc/3112eDDTbIjjvumG984xvZZZddllgJNWfOnEyYMCFJcuWVV+amm25a5nNr+7zxxhtJPvrzee+995Ikm2+++TLvadOmzRK7x2rv/fdD7j/uS1/6Utq0aZOampq8+eabdW/PrLW8FwLU/nNatGhR3bU333wzSZa7g61Dhw5ZZ511Mnny5CWuH3fccXnggQcyZcqUnHnmmWnWrFm22mqr7LTTTunVq1e22WabRvtWzkYRgM2dOzdJMnLkyOX2GTFiRJKP0l8BGAAAACujtdZaKzNnzlzh+V61bR06dKjImAcccEAuueSSTJ48Oc8999wyA7CHHnooSbLrrrsusZ3ws7r44ouzww475Pbbb8/f//73TJgwIXfccUfuuOOONPL9v0YAACAASURBVG/ePN/5zncycODArL766qmpqam7b1krrv5d7WqoGTNm1F1r1arVp6qrdqxP+mytW7dOTU1N5syZs1TbJ51FXi6X635duxpsRfW1bdt2qQCsU6dOueuuu3L11VfngQceyHvvvVd3qP8VV1yRDTbYIOecc0569+69wlqKqFEEYLVLFpdljz32yIQJEzJ8+PBP9UpXAAAAaCibbLJJ3nrrrbpVTctS21a7HW5FyuVyJk+enPHjx2fbbbdd5nbA5KM3Hk6ePDlTp05dZnvtopJ99933E8dckVKplIMPPjgHH3xwpk+fnmeeeSYjR47MY489lgkTJtT9fH/uueemZcuWdffdc889S624Wp6P37esoGpZWrdunSRLbClcltr22v6fV7t27TJlypQlQr5/t7xzvDp06JBzzjkn55xzTsaOHZuRI0fmb3/7W5588slMmDAh/fv3z//7f/8vW2+99ReqcVXTKM4AAwAAgCLYZpttkmSJNyF+3KRJkzJx4sQkybbbbvuJz5s0aVJ69eqVww47LC+//PJy+9WGauuss84y2yZNmpRSqZQdd9zxE8dcnpqamrz88st12w3bt2+fPn365Cc/+UlGjBhRd+7VXXfdlSRZc80107FjxyTJ66+/vtznjh07NqNHj87MmTPr7qtdHffaa68t857JkyfnO9/5Tk4//fTMnj07m2yySZLk//7v/5Y7zrhx4+p2oH3RBTYbb7xxkmT06NHLbJ8zZ07dP+ePe++99/K3v/2tLhzr3r17jjzyyFxxxRUZMWJENthggyxatCj33nvvF6pvVSQAAwAAgFXE3nvvneSjI35qg6KPqz2Ifvvtt8+GG274ic/r1KlTXbhTe++/GzZsWCZPnpzVVlst3/jGN5Zq/8c//pHko9Dn429h/KwGDx6cb3/72/nVr361VNvHw7WPn5W12267JUluueWWurdWftzs2bNz1FFH5YADDsiQIUPqrvfq1SvJv97y+O8eeOCB/P3vf8/f//73rLHGGnUH2L/00kt54YUXlnnPjTfemCRZb7310r1790/4tCu21157Jfko7FvWKrWhQ4cu8eeQfPQiggMOOCD/+Z//ucy3dnbs2LFuldyy/qyKTgAGAAAAq4gvfelL2XfffbNo0aKccsop+ec//1nXdtddd+Xaa69Nkpx44olL3fv2229n3LhxS50bddJJJyX5KFT53e9+lwULFtS1DRs2LD/+8Y+TJP/1X/9Vt+Lq41555ZUkyz+w/dPab7/9UiqV8uijj+baa69doo6JEyfmqquuSvLROWO1+vXrl1atWuX555/PmWeemenTp9e1TZgwIf369cuMGTOyxhpr5PDDD69rO/7447P66qvnueeey89//vPMmzevru3xxx/PoEGDknx0qHzy0Wq62nH79++fZ555pq7/hx9+mMGDB+e2225LkgwcOPALHzR/8MEHp0uXLpk0aVL69++fadOm1bUNHz48l1xyyVL3NGvWrO4FBBdccEFeeumlJdqHDx+eJ598Msm/AsDGpFGcAbYijzzySEOXAAAAAJ/aueeem1dffTWvvvpq+vTpk27dumXWrFl12xRPP/307LTTTkvdd/TRR2fChAk58MADc9FFF9Vd33fffTNu3LhceeWVufTSS3PdddelS5cumTx5cqZMmZIk+e53v5tTTjllmfXUvlGxbdu2X+hzbbnlljnttNMyaNCgXHzxxbn66quz4YYbZt68eXnnnXeycOHCdOnSJWeddVbdPRtttFEuvfTSnH766bn33nvz4IMPZtNNN82CBQvy1ltvZeHChWnVqlWuueaaJV4KsOmmm+bXv/51Bg4cmFtvvTV33nlnNtlkk0ybNi3vvvtukuSggw7KYYcdVnfPr3/965xwwgkZNWpUjjrqqGywwQZp37593nzzzdTU1KRp06Y57bTTPvdbMD+uZcuWueyyy3L88cfnySefzG677ZbNNtssM2bMyIQJE7LVVltlypQpmTRp0hL3nX766Xn++efzyiuv5JBDDskGG2yQtdZaK5MnT64LPg899FABGAAAALByW2uttfLHP/4x1113Xe6///6MGzcuzZo1y/bbb58jjzyybvvcZ3Hqqadmhx12yJAhQzJq1KiMHTs2bdu2zZ577plDDz00u+yyy3LvrV119UW2P9Y64YQTsummm+a2227L//3f/+XVV19NixYt8uUvfzn/8R//kSOPPHKpNyPuuuuuue+++3LjjTfmiSeeyJtvvplFixZlgw02yM4775xjjz02nTt3XmqsPn36pHv37rn++uvz1FNPZezYsWnevHl69uyZQw89NH369Fmif7t27XLzzTfnzjvvzN13352xY8dmypQpWXfddbP33nvn8MMPz1e+8pUv/GdQa/PNN8+dd96Z66+/PiNGjMhrr72WDh065Oijj84pp5ySAw88cKl7WrdunZtvvjlDhgzJiBEj8tZbb+W9997LWmutlT333DPf+c536raNNjal8sffs0nVPPfcc0ssv7z11luz3XbbNWBFANS3qTPm5ZhfDF9hnxvO2ysd27VcYR+AlZX/zrEir732WhYuXJhmzZp94a1yQPWt6nPYGWAAAAAAFJoADAAAAIBCE4ABAAAAUGgCMAAAAAAKTQAGAAAAQKEJwAAAAAAoNAEYAAAAAIUmAAMAAACg0ARgAAAAABSaAAwAAACAQhOAAQAAUO+aNm2aJFm0aFEWL17cwNUAn8XixYuzaNGiJP+ay6saARgAAAD1rkWLFkmScrmcmpqaBq4G+CxqampSLpeTJC1btmzgaj4fARgAAAD1bs0116z79aRJkzJr1iwrwWAlt3jx4syaNSuTJk2qu7bGGms0YEWfX7OGLgAAAIDia926dVq2bJl58+Zl0aJFmTBhQkql0iq7nQoag0WLFtWt/Eo+Wv3VunXrBqzo8xOAAQAAUO9KpVK6dOmSt99+O/PmzUvy0XbIhQsXNnBlwKfRsmXLdOnSJaVSqaFL+VwEYAAAAFRFkyZNstFGG2XOnDmZPXt23WowYOXUtGnTtGzZMmussUZat269yoZfiQAMAACAKiqVSmnTpk3atGnT0KUAjYhD8AEAAAAoNAEYAAAAAIUmAAMAAACg0ARgAAAAABSaAAwAAACAQhOAAQAAAFBoAjAAAAAACk0ABgAAAEChCcAAAAAAKDQBGAAAAACFJgADAAAAoNAEYAAAAAAUmgAMAAAAgEITgAEAAABQaAIwAAAAAApNAAYAAABAoQnAAAAAACg0ARgAAAAAhSYAAwAAAKDQBGAAAAAAFJoADAAAAIBCE4ABAAAAUGgCMAAAAAAKTQAGAAAAQKEJwAAAAAAoNAEYAAAAAIUmAAMAAACg0ARgAAAAABSaAAwAAACAQhOAAQAAAFBoAjAAAAAACq1qAdhJJ52U4cOH58MPP6zWkAAAAACQZtUaaMSIEXnkkUeyxhpr5Jvf/Gb69u2b7bffvlrDAwAAANBIVW0FWM+ePVMqlTJr1qzccccd+c///M/sscceGTRoUF5//fVqlQEAAABAI1O1AGzIkCF57LHHctZZZ2WLLbZIuVzOxIkTc80116Rv37458MADc+ONN2bKlCnVKgkAAACARqCqh+CvvfbaOfroo3PHHXdk+PDhOfnkk7PxxhunXC5n9OjR+dWvfpXddtstxx13XO66667MnTu3muUBAAAAUEAN9hbILl265OSTT86wYcMydOjQHHvssenSpUsWLVqUv/71rznrrLOy8847Z8CAAXn88cezePHihioVAAAAgFVYgwVgH/eVr3wlAwcOzIMPPpj7778/Bx10UJJk3rx5ue+++/L9738/vXr1yqBBgzJ58uQGrhYAAACAVUnV3gK5IuVyOc8880xGjBiRRx99NOPHj0+5XE6SrL766kmSqVOn5pprrslNN92UAQMG5PDDD2/IkgEAAABYRTRoAPbiiy/m3nvvzQMPPJBp06Yl+SgMK5VK6dGjR/bbb7/06dMnpVIpDz74YG666aaMGTMm559/fpo3b56DDz64IcsHAAAAYBVQ9QBszJgxue+++zJs2LBMnDgxSepWe2288cbZf//9s99++2X99ddf4r6DDjooffr0yWGHHZbRo0fnuuuuE4ABAAAA8ImqFoBdfvnlGTZsWN58880k/wq92rdvn3322Sf7779/ttpqqxU+o2XLltlnn30yevToTJgwod5rBgAAAGDVV9UArFQqpVwup3nz5tljjz2y//77Z5dddknTpk0/9XPmzp2bJOncuXN9lQoAAABAgVR1C+R2222X/fffP3vvvXfatGnzuZ6x77775lvf+lY6depU4eoAAAAAKKKqBWCPPPLIUud6fR5du3atQDUAAAAANBZNqjVQbfg1ffr0/O53v8sNN9ywVJ+77747++yzT6644orU1NRUqzQAAAAACqxqAViSPPPMM9lnn30yePDgjBgxYqn2d955J2+88UYuv/zy9O3bN6+//no1ywMAAACggKoWgE2aNCk/+MEPMmPGjJRKpay77rpL9fna176WvfbaK02bNs27776b//qv/8qsWbOqVSIAAAAABVS1AOzaa6/NnDlz0rFjx9x222255JJLluqz4447ZvDgwfnDH/6Q9u3bZ9KkSRkyZEi1SgQAAACggKoWgD355JMplUoZOHBgttxyyxX23WqrrXL66aenXC5n+PDhVaoQAAAAgCKqWgA2ceLEJMkOO+zwqfrvtNNOST46FwwAAAAAPq+qBWAtW7ZMkixevPhT9W/evHmSpEmTqp7TDwAAAEDBVC1d2nDDDZMkTzzxxKfq//TTTydJNthgg4rWUS6Xc9ttt+Wggw7K1ltvna9//es57LDD8uc//7mi4wAAAACwcqhaALbXXnulXC7nf/7nfz5xW+PkyZMzaNCglEql7LbbbhWt4xe/+EXOO++8vPHGG+nRo0e23XbbjB49Oj/60Y9y9tlnV3QsAAAAABpe1QKwQw45JB06dMi0adNy0EEH5corr8wrr7ySuXPnplwuZ+7cuRkzZkz+93//NwcccEAmTpyYNm3a5JhjjqlYDY899lhuvfXWdOrUKffff3+uu+66XHvttRk2bFg6deqUoUOH5rHHHqvYeAAAAAA0vGbVGqh9+/YZNGhQ+vXrl9mzZ+eyyy7LZZddtsy+5XI5LVq0yODBg9O+ffuK1XD33XcnSfr3759OnTrVXe/UqVMOP/zw/OY3v8kTTzyRXXfdtWJjAgAAANCwqnrC/Pbbb5977rknu+++e5o2bZpyubzUV5LssssuueOOO7LjjjtWdPyLLroo9913X/bee++l2ubOnZskadq0aUXHBAAAAKBhVW0FWK3OnTvnd7/7XWbPnp1nn3027733XmbOnJmWLVumU6dO2XbbbbP22mvXy9irrbZaNt1006Wujxo1Kr///e/TtGnT9O3bt17GBgAAAKBhVD0Aq7XGGmtkjz32aKjhkyRnnHFGxo0bl9GjR6ddu3a55JJLsuWWWzZoTQAAAABUVlW3QK5M3n///dx7770ZPXp0kqRUKuXVV1/NokWLGrgyAAAAACqp6ivA5syZk6eeeirjx4/PvHnzsnjx4k+85+STT654Ha1bt85TTz2V5s2b5/nnn88FF1yQK6+8MlOmTMn5559f8fEAAAAAaBhVDcDuueee/OIXv8js2bM/0331EYCtvvrq6dChQ5Jk1113zcYbb5z99tsvf/rTn/L9738/nTt3rviYAAAAAFRf1bZAvvTSSxk4cGBmz569zLc/ruirGrp06ZJtt902ixcvrtsWCQAAAMCqr2orwK6//vqUy+W0bNkyAwcOzO6775727dtn9dVXr1YJ+e1vf5t//vOfufDCC9OqVaul2mtrWbhwYdVqAgAAAKB+VW0F2HPPPZdSqZQzzzwzhx56aNZbb72qhl9J8thjj+WBBx7Iww8/vFTbrFmz8uKLLyZJtthii6rWBQAAAED9qVoANnPmzCRJ7969qzXkUr73ve8lSX7961/nrbfeqrs+c+bMnHnmmZkxY0Z69+6djTbaqIEqBAAAAKDSqrYFsmPHjpk0aVJKpVK1hlzKd7/73TzzzDO5//7707dv33z9619Ps2bN8tJLL2XmzJnZYost8stf/rLB6gMAAACg8qq2AmyHHXZIkjz99NPVGnIpTZo0yaBBg3L++edn8803z6hRo/Lss8+mU6dOOeOMM/KHP/whbdu2bbD6AAAAAKi8qq0AO/744zNs2LAMGjQoPXv2zLrrrlutoZdQKpVyyCGH5JBDDmmQ8QEAAACorqoFYF27ds2ll16aH/7wh9lvv/2y//77Z5tttkn79u3TrNmKy+jRo0eVqgQAAACgaKoWgH35y1+u+/W8efNy88035+abb/7E+0qlUl555ZX6LA0AAACAAqtaAFYul1f4ewAAAACoD1ULwG666aZqDQUAAAAAdaoWgG2//fbVGgoAAAAA6jRp6AIAAAAAoD5VbQXYx3344YcZMWJEnn/++UyaNClz5szJDTfckCS55ZZbsuWWW+arX/1qQ5QGAAAAQMFUPQAbNmxYfvnLX2batGlJPjoMv1Qq1bUPGTIk48ePT9++ffOLX/wizZs3r3aJAAAAABRIVbdA3nLLLTnjjDMyderUlMvldOjQYak+U6ZMSblczj333JPTTz+9muUBAAAAUEBVC8DGjRuXCy+8MOVyOXvuuWeGDx+eBx98cKl+w4YNS+/evVMul/OXv/wlw4cPr1aJAAAAABRQ1QKwG2+8MYsWLcrOO++cK664Il26dFli62Ot9ddfP5dddll69eqVcrmcoUOHVqtEAAAAAAqoagHY008/nVKplBNOOOET+5ZKpfTr1y9J8o9//KO+SwMAAACgwKoWgE2ePDlJ0q1bt0/Vv2vXrkmSmTNn1ltNAAAAABRf1QKwFi1aJEnmzp37qfrPmjUrSdK6det6qwkAAACA4qtaALbxxhsnSR5//PFP1f/+++9f4j4AAAAA+DyqFoDVvtlx8ODBGT9+/Ar7jho1KldffXVKpVL22GOPKlUIAAAAQBE1q9ZARxxxRH7/+99n0qRJ+fa3v50jjzwym2++eV37W2+9lfHjx2fEiBG54447smDBgnTs2DGHHXZYtUoEAAAAoICqFoC1bNkyV111VY455phMnz49V1xxRZKP3viYJH369KnrWy6X06ZNm1xxxRVp06ZNtUoEAAAAoICqtgUySbp375677ror++23X5o2bZpyubzUV6lUyp577pmhQ4dmm222qWZ5AAAAABRQ1VaA1Vp77bXz61//Oueee25GjRqVd955JzU1NWnRokXWX3/9fP3rX0+HDh2qXRYAAAAABVX1AKzWmmuumV133bWhhgcAAACgkajqFkgAAAAAqLaqrQC7/PLLP/e9J598cgUrAQAAAKAxqWoAVvvGx0+r9lB8ARgAAAAAn1dVzwArl8ufum/btm3zla98pR6rAQAAAKAxqFoANmbMmBW2f/DBB5kxY0ZeeOGFXH311Rk7dmx69eqVY445pkoVAgAAAFBEK80h+M2bN8+6666bPn365I9//GO6d++eiy++OC+88EJDlwYAAADAKmylCcA+rnnz5unfv38WL16cG264oaHLAQAAAGAVtlIGYEmyzTbbJIkVYAAAAAB8ISttADZ79uwkSU1NTQNXAgAAAMCqbKUNwG666aYkyXrrrdfAlQAAAACwKqvaWyCfffbZT+yzYMGCTJ8+Pffff38eeeSRlEql7LrrrlWoDgAAAICiqloAduSRR6ZUKn3q/uVyOe3atUu/fv3qsSoAAAAAiq6qWyDL5fKn+iqVStlpp51yyy23pGPHjtUsEQAAAICCqdoKsNozvVakSZMmadWqVTp37pw11lijClUBAAAAUHRVC8C23377ag0FAAAAAHVW2rdAAgAAAEAlCMAAAAAAKLSqbYH88pe/XNHnlUqlvPLKKxV9JgAAAADFU7UArFwuV2soAAAAAKhT1bdATpgwIeeff37mzJmTrl27Zu+99063bt2y5ppr5sMPP8zbb7+dxx9/PE888URKpVL23HPPbL755tUqEQAAAIACqloAtummm2bAgAGZO3duBgwYkOOOOy6lUmmpfkceeWQeffTRnHrqqRk5cmR+/OMfp1OnTtUqEwAAAICCqdoh+FdccUUmT56cI444Iscff/wyw69au+22W0455ZTMmjUrl19+ebVKBAAAAKCAqhaAPfLIIymVSjnssMM+Vf999903SfLYY4/VZ1kAAAAAFFzVArDp06cnSdq1a/ep+jdt2jRJUlNTU281AQAAAFB8VQvA1ltvvSTJc88996n6P/roo0mS9ddfv75KAgAAAKARqFoAtuOOO6ZcLufCCy/M5MmTV9h33Lhx+e1vf5tSqZS99tqrShUCAAAAUERVC8COOeaYtGjRIu+++27222+/XHPNNRkzZkzmzp2bcrmcOXPm5B//+EcGDRqUgw8+OO+//37WWWedHH/88dUqEQAAAIACalatgTbaaKP85je/yWmnnZYZM2Zk0KBBGTRo0DL7lsvldOzYMddcc03atGlTrRIBAAAAKKCqrQBLkt69e+fPf/5zdtlllzRp0iTlcnmpr9VWWy3f/va3c/fdd6d79+7VLA8AAACAAqraCrBam266af73f/83M2bMyHPPPZf33nsvs2fPTps2bbLRRhtl2223teoLAAAAgIqpegBWq127dundu3dDDQ8AAABAI9FgAdjixYszZsyYvPvuu6mpqcn++++fJHnnnXfSuXPnhioLAAAAgIKpegA2Y8aMXHHFFbnzzjszZ86cuuu1AdjJJ5+chQsX5sc//nF22mmnapcHAAAAQMFU9RD8cePG5cADD8wtt9ySmpqauoPvP27ixIl54403cvzxx+dPf/pTNcsDAAAAoICqFoDNnz8//fr1y7vvvpvWrVvnhBNOyJVXXrlUv+OOOy5rrrlmFi9enJ/97Gd58803q1UiAAAAAAVUtQDslltuyYQJE7L22mvnrrvuymmnnZYddthhqX4nnHBCbr/99qy33npZsGBBbr755mqVCAAAAEABVS0Ae/DBB1MqlXLqqadmgw02WGHfLl265NRTT025XM5TTz1VpQoBAAAAKKKq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AAAAQKEJwCps5MiROfbYY7Pjjjtm2223zfe+970MGzbsMz2jpqYmgwYNyt57752tt946vXr1yk9+8pNMmzatnqqGVUcl5tibb76Zs88+O7vttlu23HLLbL/99jnuuOPyxBNP1FPVsOqoxBz7d/fcc0+6d++eAQMGVKhKWHVVao7dfffdOeyww/L1r389W2+9dQ488MD88Y9/TLlcroeqYdVRiTk2efLk/Pd//3fd3xV79uyZE088MS+++GI9VQ2rppEjR2bzzTfP7bff/pnu+/DDD3P99denb9+++epXv5qddtopAwYMyNtvv11PlX6k6U9/+tOf1usIjcjdd9+dH/zgB3n33Xez7bbbZsMNN8wLL7yQYcOGpVwup2fPnp/4jJqamhx11FG5//77s+aaa6ZHjx6ZNWtWnnzyydx7773p06dP2rRpU4VPAyufSsyx559/PocffnheeumldOzYMV/72tfSrFmzPPfcc7n77rvTqlWrfO1rX6vCp4GVTyXm2L979913c8IJJ+SDDz5I9+7ds9dee9VD5bBqqNQcO/vsszN48OBMnz4922+/fdZee+28/PLLGTFiRObNm5edd965nj8JrJwqMcfGjx+fQw45JCNHjky7du3So0ePlEqljBw5MnfeeWc22WSTbLbZZlX4NLBye+ONN3LCCSdkzpw52WOPPbLFFlt8qvsWLlyYk046KbfeemuaNm2aHXbYIYsWLcpf//rXDB06NLvuums6duxYP0WXqYgpU6aUt9566/JXv/rV8ssvv1x3/fXXXy/vtNNO5e7duy9xfXl++ctflrt161YeOHBgecGCBeVyuVxetGhR3fUTTjih3j4DrMwqMccWLFhQ3mOPPcrdunUrX3311eXFixfXtT355JPlLbbYorz55puXx44dW2+fA1ZWlfo+9nGLFy8uH3nkkeVu3bqVu3XrVj7jjDMqXTasMio1x+68885yt27dyt/85jfL48ePr7v+6quvlrfffvtyt27dyq+88kq9fAZYmVVqjp1yyinlbt26lX/605+WFy5cWHf99ttvL3fr1q3co0eP8vz58+vlM8Cq4qmnnirvuOOOdX/Hu+222z71vUOGDCl369atfPTRR5fnzp1bd/2GG24od+vWrbz//vsv8XNaJdkCWSG33npr5s+fnyOOOGKJ5LNr16754Q9/mHK5nCFDhqzwGTU1NbntttvSsmXLnHPOOWnWrFmSpEmTJhk4cGA6d+6cRx55pN6XBcLKqBJzbOTIkRk/fny22mqr9OvXL6VSqa5t5513zne/+90sXrz4C2/3glVRJebYv7vhhhvyzDPPpEePHpUuF1Y5lZpjV155ZZo2bZpLL700G2ywQd31zTbbLMcee2w6deqUl19+uV4+A6zMKjXHnnzyySTJySefnKZNm9ZdP/jgg/OlL30pM2fOzNixYyv/AWAVMG3atPz0pz/Nsccem5kzZ2b99df/TPeXy+XccMMNSZLzzjsvLVu2rGs7+uij06NHj4wePTp/+9vfKlp3LQFYhTz22GNJkt69ey/V1rt375RKpTz66KMrfMbIkSMzd+7cbLfddmnbtu0SbU2bNs3uu++eJJ/4HCiiSsyxOXPmZKuttkqvXr2W2f6lL30pyUfnPkBjU4k59nFjx47NoEGDsvvuu+eggw6qVJmwyqrEHBszZkz++c9/Zocddsjmm2++VPv3v//9PProoznkkEMqUjOsSir1faxJk49+RJ40adIS1xcsWJCampokSbt27b5gtbBquuqqq/KHP/whXbp0yZAhQz7z8RivvvpqJk6cmE022SSbbLLJUu2187e+Mg8BWAWUy+W8/vrrSbLM/eBt27ZNx44dM3PmzLz33nvLfc6KnpEkm266aZKP/qWBxqRSc+w//uM/cscdd6R///7LbH/ppZeSJOutt14FqoZVR6XmWK0PP/wwAwYMSOvWrXP++edXvF5Y1VRqjtWu7Npqq61SLpfz+OOP56KLLsq5556bm266KTNnzqyfDwAruUp+H6v9H6UDBw7Mc889l3nz5uWtt97KGWeckalTp6Z3797p0qVL5T8ErAI6d+6cn/zkJ7n33nuz3Xbbfeb7GzrzaFYvT21kZs6cmQ8++CCtW7dOq1atltlnnXXWyZQpUzJ16tSsu+66y+xTu+pknXXWWWb72muvnSSZOnVqBaqGVUel5tiKjB07Nvfdd19KpZJDuml0Kj3Hfvvb3+bVV1/N4MGD6+8QU1iFVGqO1R6D0aZNmxx//PF1W7Vq/e53v8sVV1zhZS40OpX8Pnbuuedm0qRJdS9OqlUqlXLCCSfkpJNOqnj9sKo46qijvtD9DZ15WAFWAfPmzUuSJfav/rvmzZsnSebOnbvcPrVtLVq0WGZ77fUVPQOKqFJzbHmmTZuW/v37Z9GiRTnwwAOXua0EiqySc+zpp5/OjTfemP322y/f/OY3K1ckrMIqNcdmz56dJLnmmmvy8ssv5ze/+U2eeeaZPPTQQ/nud7+b6dOn58QTT7SVn0ankt/H2rVrlwMPPDBt27ZN586ds+eee6Z79+4pl8sZOnRonnnmmcoVDo1MQ2ceArAKqN0n/vEDtZdn8eLFy22rPWTxk55TLpc/Q3Ww6qvUHFuW9957L0cddVTeeuutbLnllvnv//7vz1UjrMoqNcdmzZqVs88+O+uuu27OO++8itUHq7pKzbEPP/wwyUdzbfDgwenbt2/atWuXLl265Oc//3l23333zJgxIzfffHNlCodVRCX/rjhgwICce+65Ofroo/PQQw/lyiuvzN13353LLrss77//fk466aS6bVzAZ9PQmYcArAJat26dJJk/f/5y+3zwwQdJstwluR9vW95zaq+v6BlQRJWaY//u1VdfzaGHHprXX389W221Va6//voV/p9DKKpKzbGf/exnmTRpUi688MKsueaalS0SVmGVmmO136M222yzZR48fOihhyZJvb09C1ZWlZpjTz75ZO6777707NkzP/jBD5b4IX2vvfbKsccemw8++CDXX399hSqHxqWhMw9ngFVA69at07p168yePTvz589f5nK+T9rrmqRuL/ry9rtOmTIlyb/2xUJjUak59nF//etf079//9TU1OQb3/hGBg8eXPeXJ2hsKjHH/vGPf+Tee+9Nu3btMnTo0AwdOrSubfz48UmSUaNGZcCAAenatWtOPPHEevgksHKq1PextdZaK0my4YYbLrO99vr777//RUuGVUql5lhtePyNb3xjme29evXK1VdfndGjR1egamh8GjrzsAKsAkqlUt1bDMaNG7dU+4wZMzJ16tS0bdt2hQcu1j5jeUtqX3vttSRJt27dvmjJsEqp1Byrdc8996Rfv36pqanJwQcfnKuvvlr4RaNWiTlWe1bDjBkzcs899yzxNWrUqCQfBWH33HNPnnrqqXr6JLByqtT3se7duyfJct9iV/uDQ4cOHb5oybBKqdQcmzVrVpJ/bdP6d82afbR+ZMGCBV+0ZGiUPinzqL1eX5mHAKxCdtlllyTJww8/vFTbww8/nHK5XPdK3eXZbrvt0qpVq4wcObLukNNaixYtyl/+8peUSqW6saAxqcQcS5JHHnkkP/rRj7Jw4cKccsopueCCC+r+MgON2RedYz179szYsWOX+XXhhRcmSfr27ZuxY8c6n4hGqRLfx3bYYYc0b948o0ePXuYP+Y8//niSfK5X08OqrhJzrGvXrkmSxx57bJntf/3rX5PEC5Pgc9pkk03SuXPnvPba/2/vfiK7/uM4gD+/Ndk/OuxQjBEdMp1SjURG0qEibaUp+meU0iGxSR3SIdYhithGJUvESrqkw/cyVkrqsEvZTqtDKh1WjOX7O/3mN379xO+7td/n93gc35+Pz+fzOrx8ePp8Xu93szsb/9XTp0+TJFu2bJmX+wvAqqSjoyN1dXW5detWXr16Nbs+MTGRq1evJkmOHTs2u/7x48eMj4/P2aWnrq4ue/bsybdv33LhwoXZQaeVSiV9fX2ZnJzM1q1bs2rVqgWqChaPavTYp0+f0tvbmx8/fuT48eM5efLkwhUAi1w1egz4uWr0WGNjY/bu3ZtKpZKzZ8/m8+fPs8dGRkZy586d1NbWZt++fQtQESwu1eixHTt2pKGhIc+fP8/AwMCcQdwjIyPp7+9PqVTKwYMHF6Ai+G/78uVLxsfH8+HDhznrBw4cSKVSyblz5zI1NTW7fvv27bx8+TKtra3ZtGnTvDxTqWJLwaq5f/9+zp8/nyVLlqStrS3Lli3L6Ohopqenc+bMmXR3d8+e29PTkwcPHmT37t25fPny7PrU1FT279+ft2/fprm5OWvXrs27d+8yMTGR5ubm3Lt375dnHEHR/Nse6+vry+DgYGpqarJ9+/af7j6ybt26dHV1LUhNsJhU4z32d4aHh9Pb25udO3fmypUr810GLFrV6LHv37+nu7s7L168SH19fdra2vL169e8efMmpVIpFy9eTEdHx+8oD367avRYuVzO6dOnMz09nZaWlqxZsybv37/P2NhYSqVSenp6cujQod9QHSw+f/bRpUuX0tnZOefYtWvXcv369WzcuHHO1/8zMzM5evRonj17lqampqxfvz6Tk5MZGxvL8uXLc/fu3axevXpentd/P1XU2dmZlStXpr+/P69fv87SpUvT2tqaI0eOZNu2bb90jcbGxgwNDeXGjRt58uRJyuVyVqxYka6urpw4ccIAfP7X/m2P/flryMzMTB4/fvyP5wrA+D+qxnsM+Llq9Fh9fX1u3ryZoaGhPHz4MKOjo6mtrc3mzZvT3d2dDRs2zHMVsHhVo8fa29szPDycgYGBjI6Oplwup6GhIe3t7Tl8+PDf7sAK/Lqampr09/dncHAwjx49SrlcTlNTU3bt2pVTp06lpaVl3u7tCzAAAAAACs0MMAAAAAAKTQAGAAAAQKEJwAAAAAAoNAEYAAAAAIUmAAMAAACg0ARgAAAAABSaAAwAAACAQhOAAQAAAFBoAjAAAAAACk0ABgAAAEChCcAAAAAAKDQBGAAAAACFJgADAAAAoNAEYAAAAAAUmgAMAAAAgEITgAEAAABQaAIwAAAAAApNAAYAAABAoQnAAAAAACg0ARgAAAAAhSYAAwAAAKDQBGAAAAAAFJoADAAAAIBC+wOtuZwe51kO0wAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "image/png": { "height": 293, "width": 608 } }, "output_type": "display_data" } ], "source": [ "r = MA(X,beta,N=10)\n", "ax = pd.DataFrame(r['xhat']).plot.hist(bins=100,range=(0,1),title=r'Frequency of $y_i$')\n", "ax.legend(legend_string(r))\n", "plt.xlim([0,1])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Iterative optimization.__ This variant is similar to the Blahut-Arimoto algorithm above, in that it makes use of the fact that the discretized version of $F_M(y)$ can be written as \n", "$$\n", "F^{disc}_M(y) = \\min_{q(I|X)} F^{aux}_M(y,q(I|X))\n", "$$\n", "with the auxiliary Lagrangian (see e.g. [Gottwald, Braun 2020](https://arxiv.org/abs/2004.11763))\n", "$$\n", "F^{aux}_M(y,q(I|x)) := \\mathbb E_{X} \\Big[ \\mathbb E_{q(I|X)}[d(X,y_I)] + \\tfrac{1}{\\beta} D_{KL}(q(I|X)\\|\\tfrac{1}{N})\\Big].\n", "$$\n", "Minimizing $F'_{aux}$ separately in each argument yields the closed-form solutions \n", "$$\n", "q^\\ast(I|X=x) = \\frac{e^{-\\beta d(x,y_i)}}{\\sum_j e^{-\\beta d(x,y_j)}} \\ , \\ \\ y^\\ast_i = E[X|I{=}i] = \\frac{\\mathbb E_X[X q(i|X)]}{E_X[q(i|X)]}\n", "$$\n", "where the solution for $y^\\ast$ is only valid for Bregman distortion measures (see e.g. \n", "[Banerjee 2005](https://ecommons.cornell.edu/bitstream/handle/1813/9264/TR001387.pdf?sequence=1)). Iterating these\n", "equation yields an algorithm similar to the Blahut-Arimoto algorithm, which will have performance characteristics that \n", "are different from the direct optimization above." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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REREzJoCMBERERERERERMWsKwERERERERERExKwpABMREREREREREbOmAExERERERERERMyaAjARERERERERETFrCsBERERERERERMSsKQATERERERERERGzZlXcBZRW8fHxhIaGmr739vambNmyxViRiIiIiIiIiIh5UgBWTEJDQ+nbt6/p+9WrV9O8efNirEhERERERERExDxpCaSIiIiIiIiIiJg1BWAiIiIiIiIiImLWFICJiIiIiIiIiIhZUwAmIiIiIiIiIiJmTQGYiIiIiIiIiIiYNQVgIiIiIiIiIiJi1hSAiYiIiIiIiIiIWVMAJiIiIiIiIiIiZk0BmIiIiIiIiIiImDUFYCIiIiIiIiIiYtYUgImIiIiIiIiIiFmzKu4CREREREREpPTJzMwkMTGRmzdvkpycTHp6enGXJCL/YGlpSZkyZShXrhwODg4YDIbiLum+KQATERERERGRhyojI4MLFy6QlJRU3KWISD5u375NSkoKcXFx2NnZUa1aNSwsSuZiQgVgIiIiIiIi8tBkZmbmCL8MBgOWlpbFWJWI5CY9PZ3MzEwAkpKSuHDhAtWrVy+RM8FKXQC2a9cuRo4cmWd7586dmTt37kOsSEREREREpPRITEw0hV+WlpY8+uijODo6lthZJSLmLCMjg4SEBK5evUp6ejpJSUkkJibi6OhY3KXds1IXgJ08eRKAFi1a4OrqmqO9SZMmD7skERERERGRUuPmzZumrx999FHKlStXjNWISH4sLCxMv0cvXboEQHx8vAKwkuD06dMAfPrpp3h5eRVzNSIiIiIiIqVLcnIykLXssST+JVqkNHJ0dMRgMJCZmVli9+4rdXNMT548iZ2dHTVr1izuUkREREREREod42mPlpaWWvYoUkJYWFiY9ukrqSe2lqo/bW7cuEFUVBR16tTRBosiIiIiIiIiIqVEqVoCadz/69FHH2XGjBkEBARw+fJlKlasSMeOHRk2bBjly5cv5ipFRERERERERKQolaoZYKdOnQJgx44drF+/nho1atC0aVPi4uJYtmwZ//nPf4iKiirmKkVEREREREREpCiVqhlgxg3wn332WWbPnk3ZsmUB+Pvvvxk9ejT/+9//mDBhAgsXLizOMkVEREREREREpAiVqhlgs2bNYvv27Xz99dem8AvAxcWFmTNnYm9vz969e4mMjCzGKkVE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NzcCAgKytX3yySeEhYURFhZGp06dqF27Njdv3jTt/TV69GhatWr10N5T8qYZYCIiIiIiIiIllLOzM+vXr6dnz54kJCRw7tw5qlWrxogRI/jxxx959NFHs/Xv0aMHmzdv5tVXX6VixYqEh4dz5coVPD09eeONN9iyZQs1atTI8Zyvv/6aJk2akJGRQUREhGk21OzZs5kyZQoNGjQgMzOT0NBQUlNTadOmDYsWLWLZsmVUqVIFIEd49LDVrFmTLVu2MGLECLy8vIiKiuL8+fNUr16dN998kx07dlCvXr17uqezszPr1q1j5MiReHh4cO78MQl2AAAgAElEQVTcOWJiYmjRogU+Pj4MGzbsAb2N3CtDZl675ckDdfToUfr27Wv6fvXq1TRv3rwYKxIRkQftRmwSA6f8nG+f5RM6UMHJ7iFVJCJStPTnnBREeHg4t2/fxsrKCi8vr+IuR0QKqKT/3tUMMBERERERERERMWsKwERERERERERExKwpABMREREREREREbOmAExERERERERERMyaAjARERERERERETFrCsBERERERERERMSsKQATERERERERERGzpgBMRERERERERETMmgIwERERERERkRIoMjISb29vvL29+fDDD+/aPzAw0NT/QcnIyKB37954e3tz+/btfPuGhYUxevRoWrVqRf369Wnbti0TJ07k2rVrD6w+Kb0UgImIiIiIiIiUcJs2bWLv3r3FXQZz5swhODj4rv2OHj3KK6+8wvbt28nIyKB27drExMTg6+tLly5dOH369EOoVkoTBWAiIiIiIiIiZmDChAnExcUVy7PT09OZMWMGS5YsuWvf2NhYhg8fTkpKCkOGDOHgwYNs2LCBX375hY4dOxIXF8eoUaNITU19CJVLaaEATERERERERKSEMxgMREVFMXXq1If+7IiICAYMGMCyZcsK1H/VqlXExcXRuHFjxo4di5WVFQCOjo7MmjULd3d3Ll68yObNmx9k2VLKKAATERERERERKeH69u0LwJYtW9izZ89De+7q1at56aWXCAoKonLlyrz//vt3HbNx40YAXnnllRxtNjY29OjRAwA/P7+iLVZKNaviLkBERERERERECqd///6cOXOGo0eP8tlnn9GsWTOcnJzuOm7cuHGmQKogvv/+e1q2bGn6/vfffzc9/9133+XkyZP5jr9+/TqXLl0CoGnTprn2MV4PDg4mLS0Na2vrAtcnkhcFYCIiIiIiIiIlnMFg4IsvvqBbt25ERUUxZcoUZs+efddxHh4eeQZRuSlbtmy27zt06MCIESNwd3cv0PgLFy6Y6s1rjJubGwCpqalcuXKFatWqFbg+kbwoABMRERERERExA9WrV2fMmDF8/vnn+Pn50alTJ9q1a5fvmGHDhjFs2LD7fmbbtm3vqX90dDSQtd+XjY1Nrn3unLkWExOjAEyKhPYAExERERERETET/fv35/HHHwfgs88+IyYmppgryi4pKQkAW1vbPPuUKVMmR3+RwlIAJiIiIiIiImImjEsh7ezsuHHjBlOmTCnukrKxtLS8p/4Gg+EBVSKljZZAioiIiIiIiJiRatWq8d577zF16lS2bdvGCy+8QIcOHXLtu3DhQvbv31/ge0+YMIHHHnvsvmuzt7cHICUlJc8+ycnJpq/t7Ozu+1kid1IAJiIiIiIiImJm+vXrh7+/P7/++isTJ06kefPmufaLiIggODi4wPeNj48vVF3Ozs4AJCYm5nnC453LNl1cXAr1PBEjBWAiIiIiIiIiZsa4FLJr165ER0czefJkevfunaPf9OnTmT59+kOry9PTE4CMjIw8T3i8dOkSkLVPWOXKlR9abWLetAeYiIiIiIiIiBkyLoUE2LFjB/7+/sVcEZQvXx4PDw8Ajh8/nmsf4/VGjRrd855hInlRACYiIiIiIiJipvr160eLFi0AWLNmTTFXk+WFF14AYP369TnaUlNT+emnnwB4+eWXH2pdYt4UgImIiIiIiIiYKeNSSHt7ezIzM4u7HABee+01ypUrx9GjR5k6dSqpqakAJCQkMHbsWC5evIi7uztdunQp5krFnCgAExERERERETFj7u7upqWQ/waPPPIIM2fOxNramlWrVvHMM8/Qo0cPWrdujb+/P+XKlWPBggW5bpAvcr+0Cb6IiIiIiIj8a6VnZBJzM7m4y7hvzuXKYGlhKO4y6Nu3L/7+/gQFBRV3KQC0adOGn376iYULFxIUFMSZM2dwdnamQ4cOjBgxAnd39+IuUcyMAjARERERERH514q5mczAKT8Xdxn3bfmEDlRwsnsg965atSqhoaEF6mswGFi1atUDqeNOLVu2LHBN3t7ezJ079wFXJJJFSyBFRERERERERMSsKQATERERERERERGzpgBMRERERERE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KlSoQN++fVm8eDEGg4EDBw6YNtovart27QKgRYsW2fbiulO3bt0AOHDgAOnp6TnamzVrluOatbU1e/bsISQkJNdZcZmZmdjb2wNZ+4QVhnEvs+7du1O+fPkc7TY2NvTv39/UNzMzM1u7paUlrVu3zjHO09PT9HVCQoLp6+rVqwPw2WefceTIkWyhZtu2bVm4cCFDhw4txBuZPy2BFBERERERESlhXFxcWLRoEcOGDSM8PJwBAwZka+/VqxcODg4sXbo021LGZ599Nt89vpo3b06rVq04dOgQu3fvLvR+YLkJDw8H4I8//qB379659jHOXktMTOTatWtUqVIlW/ud+4n9k62tLTdu3CAkJISIiAgiIyP5888/OX36tGk5aEZGRqHe4fz58wDUq1cvzz7Gtr///pvY2FhTIAlQvnx5ypTJuTzW1tbW9LVxDzeA999/n7feeouQkBAGDBiAvb09jz/+OK1ateK5557LMdtNclIAJiIiIiIiIlIC1atXjx07dvDDDz8QFBREcnIy1atXp1u3bjRp0oTx48cD5DnLKi9169bl0KFDREZGPoiyiY+PByA6Opro6Oi79r9582aOACy38AggKiqKiRMnEhAQkC3ksrOzo0GDBqSnp3Ps2LFCVJ/FODurbNmyefa5M3hMTEzMFoBZW1vf9Rl3zhpr3bo1P/74I0uWLGHfvn0kJiayf/9+9u/fz7Rp02jWrBmTJ082LQuVnBSAiYiIiIiIiJRQjo6ODBw4kIEDB+Zo++OPPwBybCKfnp5OZmZmnidIGoOj/E6YLAw7OzsABg0aZNqIviikpKTw+uuvc+7cOZycnOjduzf169fH09OTatWqYWlpydy5c4skAHNwcCAuLs4U5uXmzsMHHBwcCv3MunXrMmfOHNLS0ggJCSEwMJDDhw8THBzMsWPHGDBgAD///LNpmadkpz3AREREREREREqYo0ePsnz5cg4fPpxr+8WLF00bvT/55JOm623btqVevXqsWrUqz3ufOnUK4IHNJqpRowbw/5dC5iYmJoZjx45x+fLlHPtn5WX37t2cO3cOKysr1q1bx7vvvku7du2oUaMGlpaWAFy9erXwLwDUrFkTgJMnT+bZxxhAli9fPtvsr3uVnp7OX3/9xa+//gpkzR5r3rw5I0aMYPXq1axevRqDwUBUVFSe/z6IAjARERERERGREicwMJDp06fzzTff5NpuPD3x+eefz3Y6oKenJ5mZmWzZsiXbHlNGJ06cIDAwEMB0YuL9MhiyTsD8Z4DVpk0bAI4cOcK5c+dyHTt79mz69OlD//79CxyAGZdsOjg45Lon1o0bN9i3bx9Ajo31LSwscq01L8Z32LRpU7aZXkapqan4+voCWadPFkZ4eDgdOnTg9ddfJyoqKkd7kyZNTDPMCru3mTlTACYiIiIiIiJSwnTt2hVra2uOHz/OokWLTMFHSkoKX331FRs2bMDGxoZ3330327ghQ4ZgMBg4deoUn3zySbaTBgMDAxk+fDiZmZl07dqVBg0aFKpGYyhz/fr1bGFb8+bNefrpp7l9+zZDhgwhODjY1Jaamsr8+fP54YcfTPUaw6m7Mc7KiouLY+XKldnCrN9++42BAwcSGxsLQFJSUraxxmWDcXFx2T6TvPTu3RtXV1du3LjB0KFDuXjxoqktOjqad955h7CwMBwcHBg1alSB6s9LnTp1qF27Nunp6YwZMybbLLbU1FTmzp1LQkIC9vb2NG/evFDPMmfaA0xERERERESkhHF3d2fcuHFMmTKFOXPm8P333+Pq6sqFCxeIj4/H1taWefPm5dj/q0WLFnz00UdMnz6djRs3smPHDmrUqEF8fLxpBtWzzz7L1KlTC11j3bp1Abh06RIdOnSgUqVK+Pr6YjAYmDVrFkOHDiUkJITevXtTtWpVypcvz8WLF7l58yYAAwYMoFevXgV+Xtu2bWnSpAnHjx/niy++YMmSJbi6uhIVFcW1a9cwGAy0atWKw4cPc/36dTIzM02z1Ly9vbGwsCAlJYUXXniBSpUqsXTp0jyXLpYrV46FCxfy5ptvcvz4cTp06ECtWrWwsrIiPDyctLQ0nJycmD17dpGc0Dh37lx69epFUFAQ7dq1o2rVqtjZ2REZGcnNmzextLRk8uTJuLi4FPpZ5kozwERERERERERKoH79+rFixQpat25NWloaoaGhODg48H//939s2rSJ1q1b5zrutddeY+3atbz00kuUL1+es2fPkpCQwBNPPMHMmTNZtGgRtra2ha7viSee4IMPPsDNzY3r168TGRnJjRs3AHB2dmb16tVMnjyZFi1aEB8fT2hoKFZWVjz77LPMnz/fdIplQVlaWrJy5UrGjh1L3bp1SUpKIiwsDCsrKzp37szq1auZP38+tra2xMbGZpt5Vr16daZNm4aHhwexsbFcuXKFS5cu5fu8xx57DD8/P0aMGIGXlxcXL14kIiKCGjVqMGzYMLZs2cLTTz997x9cLmrVqsXGjRvp3bs3bm5uXL58mbNnz1KuXDl69OjB5s2b6dKlS5E8y1wZMgu6wFWK1NGjR+nbt6/p+9WrV2uqooiImbsRm8TAKT/n22f5hA5UcLJ7SBWJiBQt/TknBREeHs7t27exsrLCy8uruMsRkQIq6b93NQNMRERERERERETMmgIwERERERERERExawrARERERERERETErCkAExERERERERERs6YATEREREREREREzJoCMBERERERERERMWsKwERERERERERExKwpABMREREREREREbNWqgOw1NRUunTpgre3N3/99VdxlyMiIiIiIiJyT5KSkvDx8eGFF16gfv36tGzZksGDB7N///4ie8aYMWPu6+/Nb7/9Nt7e3kRGRhZZLZJT79698fb2xsfHp7hL+VezKu4CitOcOXMICwsr7jJERERERERE7tmtW7cYMGAAISEhWFtb4+XlRWxsLAcPHuTgwYOMGjWKkSNHFuoZvr6+bNu27Z7H/fe//8Xf379QzxYpSqV2BtiRI0dYsWJFcZchIiIiIiIicl8mT55MSEgIdevWZdeuXWzcuJG9e/cyY8YMrKys8PHx4fDhw/d9/xUrVjBp0qR7Hrds2TKmTp16388VeRBKZQB28+ZNxo8fT/Xq1alYsWJxlyMiIiIiIiJyTy5cuMCWLVuwsLBg1qxZVK5c2dTWvXt3hgwZAnBfy+KuX7/O22+/zbRp08jMzCzwuGvXrjFy5EhmzJhxT+NEHoZSGYBNmjSJ69evM3PmTGxsbIq7HBEREREREZF7snnzZtLT02ncuDG1atXK0d67d28AgoODuXz5coHvu2vXLjp27Ii/vz/ly5fn008/LdC4nTt30rFjR3bt2oWTk1OBx4k8LKVuDzA/Pz/8/Px46623aNSoUXGXIyIiIiIiInLPfvvtNwCaNWuWa7urqytubm5cunSJoKAgunfvXqD7njlzhqSkJLp06cKHH35ISkpKgcadPn2a5ORkunXrxgcffEBiYmLBXiQfx48fZ8WKFRw7doyYmBgcHByoUaMGzz//PH379sXBwSHHmJSUFHx9fdm+fTvnzp0jLS2NKlWq0KZNGwYNGpTnKrD4+Hh8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ExPx2qJGo1hv1GBseO2iRgPWa1SKgEYRUYr0IsL+/nBwPgmoRPfZB9Z5njHOGOesOdeav8Vwsg+vc8310EMP1S4RBAAAgJXZxhtvnLfeeivvvvvuZ/ZZ0ra8R+RWBdtvv3223377zJs3L88//3yee+65PP3003nttdfy2GOP5f33389f/vKXlEql2oDoV7/6VQ466KAVHmPJeSv61solb51cErh9liWPMX76LZVfxpIXGSwJ3pZnyUq/f9W0adMcddRROeqoo/Lee+9l+PDhGT58eIYNG5apU6fm4osvTk1NTfr16/eValxVNIg9wAAAAKBItt566yTJyy+/vNz2SZMm1a6E2mabbapWVyV89NFHGTt2bF555ZUkSU1NTXbaaaecfPLJGTJkSH77298mSV577bWMHTs2ySePJCap/Xl5Jk6cmP/93/9d6s2HS8LBJY9QLs+AAfzCDRkAACAASURBVAPy4x//OK+++mrtPl1vvvnmZ4ZmixYtyuuvv54kX3mhzZL7Gjly5Gf2WV7tM2bMyMsvv1y791e7du2yzz775IILLsgTTzyRnXfeOUly9913f6X6ViUCMAAAAFjF9O7dO8knW/2MHz9+mfbbbrstSdKtW7flbp6+Mnv88cfzve99L0cfffRy9zjbcccda79fsl/WbrvtliS57777Mm3atOVe9/TTT88PfvCDnHrqqbXHdtlllyTJI488Uvu44ae99tprGTZsWB5//PG0adMmXbp0yRprrJGFCxfW/hn/q3vvvTfTpk1LqVTKTjvttIJ3vXzf/e53kyQvvPBCRo8evUz766+/vtw9z372s5/lwAMPzHXXXbdMW9OmTdO1a9ckWerlAkUnAAMAAIBVzDe+8Y3sueeeWbRoUU444YTazdyTT1b1XHvttUmSY489dplz33777YwbN26plVArk1133TWtW7fOtGnTcsYZZywVTM2ePTu/+c1vkiQbbLBB7VsM99xzz2yyySaZPn16+vfvn3Hjxi11zi9+8YsMHz48pVIpAwYMqG3r27dv2rdvn+nTp+f444/P+++/X9s2bty4DBw4MEnSp0+frL/++mnRokV+9KMfJUkuueSS/Pd///dSIdLQoUNz9tlnJ0kOPvjgdOjQ4Sv9WWy++ebp3bt3yuVyjjvuuIwaNaq2bfTo0TnxxBOXe95ee+2VJLn11ltz7733LrWv2OjRo3PLLbckSe1KsIagQewB9nk+/fpTAAAAWFWceeaZGTNmTMaMGZM99tgjnTp1ysyZM2v3/vrpT3+aHXbYYZnzDj/88Lz77rvZd999c+GFF1a77C/UrFmzXHLJJfnRj36U++67Lw8//HA23HDDlEqlvPPOO5k7d25WX331/OY3v0mTJp/EGk2bNs2VV16ZH/3oR3nttdfSp0+fbLzxxmnevHneeuut2pfjnXXWWUutIGvevHmuvPLK9O/fPyNGjEiPHj2yySabZMGCBXn77bezaNGibLnllvnFL35Re86AAQMyYcKE3H777fnlL3+ZSy65JO3bt897772XyZMnJ/kkMDv99NMr8udx9tln5/33389LL72UffbZpzb0Gzt2bFq1apWuXbvmueeeW+qcPn365KmnnsqQIUMycODAnH/++WnXrl1mzZqVd955J+VyOdtss81SYWDRNfgADAAAAFZFX/va1/LnP/851113XR544IGMGzcuTZo0Sbdu3XLYYYelV69e9V3il7b99tvn9ttvz/XXX58XXnghb775Zpo0aZL11lsvO+20U4488si0a9duqXM23HDD3HXXXbn11lvz0EMPZfz48Zk/f37atGmTnXfeOf369cu22267zFidOnXK3XffnRtuuCGPPvpo3nrrrZTL5XTq1Cl77rln+vXrl6ZNm9b2L5VKOeecc9KrV6/cdtttefnllzNy5Mh87Wtfy+677579998/PXr0qNifRevWrTN48ODcdttt+etf/5p//vOfadq0aXr37p1TTjklV1xxxTIBWJKcd9552XbbbXP33XdnzJgxGTVqVFq2bJkuXbqkT58++cEPflAbIDYEpfKn18FRNc8//3wOOeSQ2p9vueWWdOnSpR4rAqCuTZk+L0ec89Dn9rn+rF5p27qmShUBVJa/51gRb7zxRj7++OM0adIkm266aX2XA6ygVX3u2gMMAAAAgEITgAEAAABQaAIwAAAAAApNAAYAAABAoQnAAAAAACg0ARgAAAAAhSYAAwAAAKDQBGAAAAAAFJoADAAAAIBCE4ABAAAAUGgCMAAAAKqmcePGSZJFixZl8eLF9VwNsCIWL16cRYsWJfn/c3hVIwADAACgapo3b54kKZfLmT17dj1XA6yI2bNnp1wuJ0lqamrquZovRwAGAABA1ay55pq130+aNCkzZ860EgxWUosXL87MmTMzadKk2mNrrLFGPVb05TWp7wIAAABoOFq0aJGamprMmzcvixYtyrvvvptSqbTKPlYFRbZo0aLalV/JJ6u/WrRoUY8VfXkCMAAAAKqmVCqlQ4cOefvttzNv3rwknzwO+fHHH9dzZcDnqampSYcOHVIqleq7lC9FAAYAAEBVNWrUKBtuuGHmzJmTWbNm1a4GA1YujRs3Tk1NTdZYY420aNFilQ2/EgEYAAAA9aBUKqVly5Zp2bJlfZcCNAA2wQcAAACg0ARgAAAAABSaAAwAAACAQhOAAQAAAFBoAjAAAAAACk0ABgAAAEChCcAAAAAAKDQBGAAAAACFJgADAAAAoNAEYAAAAAAUmgAMAAAAgEITgAEAAABQaAIwAAAAAApNAAYAAABAoQnAAAAAACg0ARgAAAAAhSYAAwAAAKDQBGAAAAAAFJoADAAAAIBCE4ABAAAAUGgCMAAAAAAKTQAGAAAAQKEJwAAAAAAoNAEYAAAAAIUmAAMAAACg0ARgAAAAABSaAAwAAACAQhOAAQAAAFBoAjAAAAAACk0ABgAAAEChCcAAAAAAKLSqBWDHHXdcHnrooXz00UfVGhIAAAAA0qRaAz366KN57LHHssYaa+S73/1u+vbtm27dulVreAAAAAAaqKqtAOvevXtKpVJmzpyZO++8M//3//7f9OjRI4MGDcrYsWOrVQYAAAAADUzVArDBgwdn2LBhOf3007PFFlukXC5n4sSJueaaa9K3b9/su+++ueGGGzJ58uRqlQQAAABAA1DVTfDXXnvtHH744bnzzjvz0EMP5fjjj89GG22UcrmckSNH5je/+U123XXXHHXUUbn77rszd+7capYHAAAAQAHV21sgO3TokOOPPz5Dhw7NkCFDcuSRR6ZDhw5ZtGhR/va3v+X000/PjjvumIEDB+bJJ5/M4sWL66tUAAAAAFZh9RaAfdrmm2+e0047LQ8++GAeeOCB7LfffkmSefPm5f7778/RRx+dnXfeOYMGDcoHH3xQz9UCAAAAsCqp2lsgP0+5XM7w4cPz6KOP5oknnsiECRNSLpeTJE2bNk2STJkyJddcc01uvPHGDBw4MIccckh9lgwAAADAKqJeA7CXX3459913X/7nf/4nU6dOTfJJGFYqldK1a9fstdde2WOPPVIqlfLggw/mxhtvzKhRo3LuueemWbNm2X///euzfAAAAABWAVUPwEaNGpX7778/Q4cOzcSJE5OkdrXXRhttlL333jt77bVX1l9//aXO22+//bLHHnvk4IMPzsiRI3PdddcJwAAAAAD4QlULwC6//PIMHTo0b775ZpL/H3q1adMmffr0yd57752tttrqc69RU1OTPn36ZOTIkXn33XfrvGYAAAAAVn1VDcBKpVLK5XKaNWuWHj16ZO+9985OO+2Uxo0br/B15s6dmyRp3759XZUKAAAAQIFU9RHILl26ZO+9907v3r3TsmXLL3WNPffcM9/73vfSrl27ClcHAAAAQBFVLQB77LHHltnX68vo2LFjBaoBAAAAoKFoVK2BloRf06ZNyx/+8Idcf/31y/S555570qdPn1xxxRWZPXt2tUoDAAAAoMCqFoAlyfDhw9OnT59ceumlefTRR5dpf+eddzJ+/Phcfvnl6du3b8aOHVvN8gAAAAAooKoFYJMmTcqPf/zjTJ8+PaVSKeuuu+4yfb7zne+kV69eady4cd5777386Ec/ysyZM6tVIgAAAAAFVLUA7Nprr82cOXPStm3b3H777fn973+/TJ/tt98+l156aW677ba0adMmkyZNyuDBg6tVIgAAAAAFVLUA7Omnn06pVMppp52WLbfc8nP7brXVVvnpT3+acrmchx56qEoVAgAAAFBEVQvAJk6cmCTZbrvtVqj/DjvskOSTfcEAAAAA4MuqWgBWU1OTJFm8ePEK9W/WrFmSpFGjqu7TDwAAAEDBVC1d+vrXv54keeqpp1ao/7PPPpsk2WCDDSpaR7lczu2335799tsv3/rWt7Ltttvm4IMPzl//+teKjgMAAADAyqFqAVivXr1SLpfzX//1X1/4WOMHH3yQQYMGpVQqZdddd61oHeecc07OOuusjB8/Pl27ds0222yTkSNH5mc/+1nOOOOMio4FAAAAQP2rWgB2wAEHZK211srUqVOz33775corr8zrr7+euXPnplwuZ+7cuRk1alT++Mc/Zp999snEiRPTsmXLHHHEERWrYdiwYbnlllvSrl27PPDAA7nuuuty7bXXZujQoWnXrl2GDBmSYcOGVWw8AAAAAOpfk2oN1KZNmwwaNCgDBgzIrFmzctlll+Wyyy5bbt9yuZzmzZvn0ksvTZs2bSpWwz333JMkOfHEE9OuXbva4+3atcshhxyS3/3ud3nqqaeyyy67VGxMAAAAAOpXVXeY79atW+69997stttuady4ccrl8jJfSbLTTjvlzjvvzPbbb1/R8S+88MLcf//96d279zJtc+fOTZI0bty4omMCAAAAUL+qtgJsifbt2+cPf/hDZs2aleeeey7vv/9+ZsyYkZqamrRr1y7bbLNN1l577ToZe7XVVssmm2yyzPGXXnopt956axo3bpy+ffvWydgAAAAA1I+qB2BLrLHGGunRo0d9DZ8kOeWUUzJu3LiMHDkyrVu3zu9///tsueWW9VoTAAAAAJVV1UcgVyYffvhh7rvvvowcOTJJUiqVMmbMmCxatKieKwMAAACgkqq+AmzOnDl55plnMmHChMybNy+LFy/+wnOOP/74itfRokWLPPPMM2nWrFleeOGFnHfeebnyyiszefLknHvuuRUfDwAAAID6UdUA7N57780555yTWbNm/Vvn1UUA1rRp06y11lpJkl122SUbbbRR9tprr/zlL3/J0Ucfnfbt21d8TAAAAACqr2qPQL7yyis57bTTMmvWrOW+/fHzvqqhQ4cO2WabbbJ48eLaxyIBAAAAWPVVbQXYn/70p5TL5dTU1OS0007LbrvtljZt2qRp06bVKiEXX3xx/vnPf+aCCy7I6quvvkz7klo+/vjjqtUEAAAAQN2q2gqw559/PqVSKaeeemoOOuigrLfeelUNv5Jk2LBh+Z//+Z888sgjy7TNnDkzL7/8cpJkiy22qGpdAAAAANSdqgVgM2bMSJL07NmzWkMu44c//GGS5Le//W3eeuut2uMzZszIqaeemunTp6dnz57ZcMMN66lCAAAAACqtao9Atm3bNpMmTUqpVKrWkMs48MADM3z48DzwwAPp27dvtt122zRp0iSvvPJKZsyYkS222CLnn39+vdUHAAAAQOVVbQXYdtttlyR59tlnqzXkMho1apRBgwbl3HPPzWabbZaXXnopzz33XNq1a5dTTjklt912W1q1alVv9QEAAABQeVVbAda/f/8MHTo0gwYNSvfu3bPuuutWa+illEqlHHDAATnggAPqZXwAAAAAqqtqAVjHjh1zySWX5OSTT85ee+2VvffeO1tvvXXatGmTJk0+v4yuXbtWqUoAAAAAiqZqAdg3v/nN2u/nzZuXm266KTfddNMXnlcqlfL666/XZWkAAAAAFFjVArByufy5PwMAAABAXahaAHbjjTdWaygAAAAAqFW1AKxbt27VGgoAAAAAajWq7wIAAAAAoC5VbQXYp3300Ud59NFH88ILL2TSpEmZM2dOrr/++iTJzTffnC233DLf/va366M0AAAAAAqm6gHY0KFDc/7552fq1KlJPtkMv1Qq1bYPHjw4EyZMSN++fXPOOeekWbNm1S4RAAAAgAKp6iOQN998c0455ZRMmTIl5XI5a6211jJ9Jk+enHK5nHvvvTc//elPq1keAAAAAAVUtQBs3LhxueCCC1Iul7P77rvnoYceyoMPPrhMv6FDh6Znz54pl8t5/PHH89BDD1WrRAAAAAAKqGoB2A033JBFixZlxx13zBVXXJEOHTos9ejjEuuvv34uu+yy7LzzzimXyxkyZEi1SgQAAACggKoWgD377LMplUo55phjvrBvqVTKgAEDkiT/+Mc/6ro0AAAAAAqsagHYBx98kCTp1KnTCvXv2LFjkmTGjBl1VhMAAAAAxVe1AKx58+ZJkrlz565Q/5kzZyZJWrRoUWc1AQAAAFB8VQvANtpooyTJk08+uUL9H3jggaXOAwAAAIAvo2oB2JI3O1566aWZMGHC5/Z96aWXcvXVV6dUKqVHjx5VqhAAAACAImpSrYEOPfTQ3HrrrZk0aVK+//3v57DDDstmm21W2/7WW29lwoQJefTRR3PnnXdm4cKFadu2bQ4++OBqlQgAAABAAVUtAKupqclVV12VI444ItOmTcsVV1yR5JM3PibJHnvsUdu3XC6nZcuWueKKK9KyZctqlQgAAABAAVXtEcgk6dy5c+6+++7stddeady4ccrl8jJfpVIpu+++e4YMGZKtt966muUBAAAAUEBVWwG2xNprr53f/va3OfPMM/PSSy/lnXfeyezZs9O8efOsv/762XbbbbPWWmtVuywAAAAACqrqAdgSa665ZnbZZZf6Gh4AAACABqKqj0ACAAAAQLVVbQXY5Zdf/qXPPf744ytYCQAAAAANSVUDsCVvfFxRSzbFF4ABAAAA8GVVdQ+wcrm8wn1btWqVzTffvA6rAQAAAKAhqFoANmrUqM9tX7BgQaZPn54XX3wxV199dUaPHp2dd945RxxxRJUqBAAAAKCIVppN8Js1a5Z11103e+yxR/785z+nc+fOueiii/Liiy/Wd2kAAAAArMJWmgDs05o1a5YTTzwxixcvzvXXX1/f5QAAAACwClspA7Ak2XrrrZPECjAAAAAAvpKVNgCbNWtWkmT27Nn1XAkAAAAAq7KVNgC78cYbkyTrrbdePVcCAAAAwKqsam+BfO65576wz8KFCzNt2rQ88MADeeyxx1IqlbLLLrtUoToAAAAAiqpqAdhhhx2WUqm0wv3L5XJat26dAQMG1GFVAAAAABRdVR+BLJfLK/RVKpWyww475Oabb07btm2rWSIAAAAABVO1FWBL9vT6PI0aNcrqq6+e9u3bZ4011qhCVQAAAAAUXdUCsG7dulVrKAAAAACotdK+BRIAAAAAKkEABgAAAEChVe0RyG9+85sVvV6pVMrrr79e0WsCAAAAUDxVC8DK5XK1hgIAAACAWlV9C+S7776bc889N3PmzEnHjh3Tu3fvdOrUKWuuuWY++uijvP3223nyySfz1FNPpVQqZffdd89mm21WrRIBAAAAKKCqBWCbbLJJBg4cmLlz52bgwIE56qijUiqVlul32GGH5YknnshJJ52UESNG5Oc//3natWtXrTIBAAAAKJiqbYJ/xRVX5IMPPsihhx6a/v37Lzf8WmLXXXfNCSeckJkzZ+byyy+vVokAAAAAFFDVArDHHnsspVIpBx988Ar133PPPZMkw4YNq8uyAAAAACi4qgVg06ZNS5K0bt16hfo3btw4STJ79uw6qwkAAACA4qtaALbeeuslSZ5//vkV6v/EE08kSdZff/26KgkAAACABqBqAdj222+fcrmcCy64IB988MHn9h03blwuvvjilEql9OrVq0oVAgAAAFBEVQvAjjjiiDRv3jzvvfde9tprr1xzzTUZNWpU5s6dm3K5nDlz5uQf//hHBg0alP333z8ffvhh1llnnfTv379aJQIAAABQQE2qNdCGG26Y3/3ud/nJT36S6dOnZ9CgQRk0aNBy+5bL5bRt2zbXXHNNWrZsWa0SAQAAACigqq0AS5KePXvmr3/9a3baaac0atQo5XJ5ma/VVlst3//+93PPPfekc+fO1SwPAAAAgAKq2gqwJTbZZJP88Y9/zPTp0/P888/n/fffz6xZs9KyZctsuOGG2Wabbaz6AgAAAKBiqh6ALdG6dev07NmzvoYHAAAAoIGotwBs8eLFGTVqVN57773Mnj07e++9d5LknXfeSfv27eurLAAAAAAKpuoB2PTp03PFFVfkrrvuypw5c2qPLwnAjj/++Hz88cf5+c9/nh122KHa5QEAAABQMFXdBH/cuHHZd999c/PNN2f27Nm1G99/2sSJEzN+/Pj0798/f/nLX6pZHgAAAAAFVLUAbP78+RkwYEDee++9tGjRIsccc0yuvPLKZfodddRRWXPNNbN48eKcffbZefPNN6tVIgAAAAAFVLUA7Oabb867776btddeO3fffXd+8pOfZLvttlum3zHHHJM77rgj6623XhYuXJibbrqpWiUCAAAAUEBVC8AefPDBlEqlnHTSSdlggw0+t2+HDh1y0kknpVwu55lnnqlShQAAAAAUUdUCsLfeeitJstNOO61Q/yWrw9577726KgkAAACABqBqAdhHH32UJGnWrNkK9W/atGmSpFGjqu7TDwAAAEDBVC1dWmeddZIkI0eOXKH+L7744lLnAQAAAMCXUbUAbLvttku5XM7VV1/9hX3nz5+fyy67LKVSKd27d69CdQAAAAAUVdUCsMMPPzyNGzfO8OHDc+KJJ+bdd99dbr9XXnkl/fr1y5gxY1IqlXLIIYdUq0QAAAAACqhJtQbq2LFjBg4cmN/85jd5+OGH8/DDD+drX/tabfsPf/jDTJgwIVOnTq09duyxx6Zz587VKhEAAACAAqpaAJYkRxxxRFq2bJkLL7wwc+bMybRp02rbXn755drvmzZtmpNOOilHHXVUNcsDAAAAoICqGoAlyQEHHJA99tgjd999d0aMGJF33nknc+bMSfPmzdOuXbt07do1++yzT9Zaa61qlwYAAABAAVUtAPv73/+ejTbaKOuuu25atmyZQw45xP5eAAAAANS5qm2Cf95556VHjx7561//Wq0hAQAAAKB6AdiECROyePHibLPNNtUaEgAAAACqF4CtttpqSZJmzZpVa0gAAAAAqF4A1rt375TL5Vx77bXVGhIAAAAAqrcJ/n/+539m8uTJueWWWzJq1Kj07t073/zmN9OmTZsvXBW2/vrrV6yOxYsX54477siQIUPyxhtvZOHChVl//fXTs2fPHH300VlzzTUrNhYAAAAA9a9qAdiSFWDlcjkvvPBCXnjhhRU6r1Qq5fXXX69IDYsXL86JJ56Yhx9+ODU1Ndlqq62y+uqr55VXXsm1116bhx9+OLfeemvatm1bkfEAAAAAqH9VC8AmTZpU+325XK7WsEv5y1/+kocffjgbbbRRrr322nz9619PksyePTsD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qumOO+7IWWedlUaNGqV79+5p2rRpnn322SxYsCCnnHJKBgwYUN8lAgAAAFBBDS4AS5Knnnoq11xzTV599dU0btw4m2yySY488sj06tWrvksDAAAAoMIaZAAGAAAAQMPRoPYAAwAAAKDhEYABAAAAUGgCMAAAAAAKTQAGAAAAQKEJwAAAAAAoNAEYAAAAAIUmAAMAAACg0ARgAAAAABSaAAwAAACAQhOAAQAAAFBoAjAAAAAACk0ABgAAAEChCcAAAAAAKDQBGAAAAACFJgADAAAAoNAEYAAAAAAUmgAMAAAAgEITgFXYiBEjcuSRR2b77bfPNttskx/+8IcZOnTov3WN2bNnZ9CgQendu3e+9a1vZeedd84vf/nLTJ06tY6qhlVHJebYm2++mTPOOCO77rprttxyy3Tr1i1HHXVUnnrqqTqqGlYdlZhj/+ree+9N586dM3DgwApVCauuSs2xe+65JwcffHC23XbbfOtb38q+++6bP//5zymXy3VQNaw6KjHHPvjgg/ziF7+o/V2xe/fuOfbYY/Pyyy/XUdWwahoxYkQ222yz3HHHHf/WeR999FH+9Kc/pW/fvvn2t7+dHXbYIQMHDszbb79dR5V+ovGvfvWrX9XpCA3IPffckx//+Md57733ss022+TrX/96XnzxxQwdOjTlcjndu3f/wmvMnj07/fr1ywMPPJA111wzXbt2zcyZM/P000/nvvvuyx577JGWLVtW4W5g5VOJOfbCCy/kkEMOySuvvJK2bdvmO9/5Tpo0aZLnn38+99xzT1ZfffV85zvfqcLdwMqnEnPsX7333ns55phjsmDBgnTu3Dm9evWqg8ph1VCpOXbGGWfk0ksvzbRp09KtW7esvfbaefXVV/Poo49m3rx52XHHHev4TmDlVIk5NmHChBxwwAEZMWJEWrduna5du6ZUKmXEiBG56667svHGG2fTTTetwt3Aym38+PE55phjMmfOnPTo0SNbbLHFCp338ccf57jjjsstt9ySxo0bZ7vttsuiRYvyt7/9LUOGDMkuu+yStm3b1k3RZSpi8uTJ5W9961vlb3/72+VXX3219vjYsWPLO+ywQ7lz585LHf8s559/frlTp07l0047rbxw4cJyuVwuL1q0qPb4McccU2f3ACuzSsyxhQsXlnv06FHu1KlT+eqrry4vXry4tu3pp58ub7HFFuXNNtusPHr06Dq7D1hZVepz7NMWL15cPuyww8qdOnUqd+rUqXzKKadUumxYZVRqjt11113lTp06lb/73e+WJ0yYUHt8zJgx5W7dupU7depUfv311+vkHmBlVqk5dsIJJ5Q7depU/tWvflX++OOPa4/fcccd5U6dOpW7du1anj9/fp3cA6wqnnnmmfL2229f+zve7bffvsLnDh48uNypU6fy4YcfXp47d27t8euvv77cqVOn8t57773Uv9MqySOQFXLLLbdk/vz5OfTQQ5dKPjt27JiTTz455XI5gwcP/txrzJ49O7fffntqamryn//5n2nSpEmSpFGjRjnttNPSvn37PPbYY3W+LBBWRpWYYyNGjMiECROy1VZbZcCAASmVSrVtO+64Yw488MAsXrz4Kz/uBauiSsyxf3X99ddn+PDh6dq1a6XLhVVOpebYlVdemcaNG+eSSy7JBhtsUHt80003zZFHHpl27drl1VdfrZN7gJVZpebY008/nSQ5/vjj07hx49rj+++/f77xjW9kxowZGT16dOVvAFYBU6dOza9+9asceeSRmTFjRtZff/1/6/xyuZzrr78+SXLWWWelpqamtu3www9P165dM3LkyPz973+vaN1LCMAqZNiwYUmSnj17LtPWs2fPlEqlPPHEE597jREjRmTu3Lnp0qVLWrVqtVRb48aNs9tuuyXJF14HiqgSc2zOnDnZaqutsvPOOy+3/Rvf+EaST/Z9gIamEnPs00aPHp1BgwZlt912y3777VepMmGVVYk5NmrUqPzzn//Mdtttl80222yZ9qOPPjpPPPFEDjjggIrUDKuSSn2ONWr0yT+RJ02atNTxhQsXZvbs2UmS1q1bf8VqYdV01VVX5bbbbkuHDh0yePDgf3t7jDFjxmTixInZeOONs/HGGy/TvmT+1lXmIQCrgHK5nLFjxybJcp8Hb9WqVdq2bZsZM2bk/fff/8zrfN41kmSTTTZJ8sl/NNCQVGqO/Z//839y55135sQTT1xu+yuvvJIkWW+99SpQNaw6KjXHlvjoo48ycODAtGjRIueee27F64VVTaXm2JKVXVtttVXK5XKefPLJXHjhhTnzzDNz4403ZsaMGXVzA7CSq+Tn2JL/UXraaafl+eefz7x58/LWW2/llFNOyZQpU9KzZ8906NCh8jcBq4D27dvnl7/8Ze6777506dLl3z6/vjOPJnVy1QZmxowZWbBgQVq0aJHVV199uX3WWWedTJ48OVOmTMm666673D5LVp2ss846y21fe+21kyRTpkypQNWw6qjUHPs8o0ePzv33359SqWSTbhqcSs+xiy++OGPGjMmll15ad5uYwiqkUnNsyTYYLVu2TP/+/Wsf1VriD3/4Q6644govc6HBqeTn2JlnnplJkybVvjhpiVKplGOOOSbHHXdcxeuHVUW/fv2+0vn1nXlYAVYB8+bNS5Klnl/9V82aNUuSzJ079zP7LGlr3rz5ctuXHP+8a0ARVWqOfZapU6fmxBNPzKJFi7Lvvvsu97ESKLJKzrFnn302N9xwQ/baa69897vfrVyRsAqr1BybNWtWkuSaa67Jq6++mt/97ncZPnx4Hn744Rx44IGZNm1ajj32WI/y0+BU8nOsdevW2XfffdOqVau0b98+u+++ezp37pxyuZwhQ4Zk+PDhlSscGpj6zjwEYBWw5DnxT2+o/VkWL178mW1LNln8ouuUy+V/ozpY9VVqji3P+++/n379+uWtt97KlltumV/84hdfqkZYlVVqjs2cOTNnnHFG1l133Zx11lkVqw9WdZWaYx999FGST+bapZdemr59+6Z169bp0KFDfv3rX2e33XbL9OnTc9NNN1WmcFhFVPJ3xYEDB+bMM8/M4YcfnocffjhXXnll7rnnnlx22WX58MMPc9xxx9U+xgX8e+o78xCAVUCLFi2SJPPnz//MPgsWLEiSz1yS++m2z7rOkuOfdw0ookrNsX81ZsyYHHTQQRk7dmy22mqr/OlPf/rc/3MIRVWpOXb22Wdn0qRJueCCC7LmmmtWtkhYhVVqji35jNp0002Xu/HwQQcdlCR19vYsWFlVao49/fTTuf/++9O9e/f8+Mc/Xuof6b169cqRRx6ZBQsW5E9/+lOFKoeGpb4zD3uAVUCLFi3SokWLzJo1K/Pnz1/ucr4vetY1Se2z6J/1vOvkyZOT/P/nYqGhqNQc+7S//e1vOfHEEzN79uz8x3/8Ry699NLaX56goanEHPvHP/6R++67L61bt86QIUMyZMiQ2rYJEyYkSV566aUMHDgwHTt2zLHHHlsHdwIrp0p9jn3ta19Lknz9619fbvuS4x9++OFXLRlWKZWaY0vC4//4j/9YbvvOO++cq6++OiNHjqxA1dDw1HfmYQVYBZRKpdq3GIwbN26Z9unTp2fKlClp1arV5264uOQan7Wk9o033kiSdOrU6auWDKuUSs2xJe69994MGDAgs2fPzv7775+rr75a+EWDVok5tmSvhunTp+fee+9d6uull15K8kkQdu+99+aZZ56pozuBlVOlPsc6d+6cJJ/5Frsl/3BYa621vmrJsEqp1BybOXNmkv//mNa/atLkk/UjCxcu/KolQ4P0RZnHkuN1lXkIwCpkp512SpI88sgjy7Q98sgjKZfLta/U/SxdunTJ6quvnhEjRtRucrrEokWL8vjjj6dUKtWOBQ1JJeZYkjz22GP52c9+lo8//jgnnHBCzjvvvNpfZqAh+6pzrHv37hk9evRyvy644IIkSd++fTN69Gj7E9EgVeJzbLvttkuzZs0ycuTI5f4j/8knn0ySL/VqeljVVWKOdezYMUkybNiw5bb/7W9/SxIvTIIvaeONN0779u3zxhtv1L7Z+NMefvjhJMkuu+xSJ+MLwCpk//33T01NTW644Ya8+OKLtcfHjx+fSy65JEnSv3//2uMffPBBxo0bt9RbempqavL9738/c+bMyS9+8YvajU7L5XIuuuiiTJgwIT179sxGG21UpbuClUcl5tiUKVNyxhlnZNGiRTn22GNz/PHHV+8GYCVXiTkGfLZKzLGWLVvmBz/4Qcrlck499dRMnTq1tu3pp5/OTTfdlObNm+fAAw+swh3ByqUSc2zPPfdMixYtMnz48Pzxj39caiPup59+Otdcc01KpVIOO+ywKtwRrNqmTZuWcePGZeLEiUsdP/TQQ1Mul/Pzn/88s2fPrj0+ePDgPP/889l8882zww471ElNpbJXClbMHXfckbPOOiuNGjVK9+7d07Rp0zz77LNZsGBBTjnllAwYMKC27+mnn5677ror++67by688MLa47Nnz85BBx2UMWPGZIMNNsiWW26ZN954I+PHj88GG2yQ//7v/17hPY6gaL7qHLvoooty7bXXpkmTJundu/dnvn3kO9/5Tg4++OCq3BOsTCrxObY8Q4YMyRlnnJG+ffvmd7/7XV3fBqy0KjHH5s6dmwEDBuS5557L6quvnu7du2f69On53//935RKpfz617/O/vvvXx+3B/WuEnPs8ccfz0knnZQFCxakQ4cO2WyzzfLuu+/mtddeS6lUyumnn57DDz+8Hu4OVj5L5tG5556bAw44YKm2yy67LJdffnm6deu21Or/jz/+OEcddVT+/ve/Z6211kqXLl0yYcKEvPbaa2nVqlVuvfXWbLLJJnVSr+d+KuiAAw7Ieuutl2uuuSYvv/xyGjdunM033zxHHnlkevXqtULXaNmyZW655Zb84Q9/yIMPPpjHH3886667bg7+f+3dMYrCUBSG0b+wkFjauwu7NNmAC7CzsRCyIRWsbEXEPmU2ZTHVdDPDwCgM13PqwCPF5cHHy8t6nd1u5wJ83tpfZ+zz05DH45H7/f7jswIY7+gZ+xjwvWfMWNM0OZ1OOZ/PuV6vGccx0+k0bdtmu91muVy++C3g/3rGjHVdl8vlksPhkHEcMwxDZrNZuq7LZrP58g+swO9NJpPs9/scj8fcbrcMw5D5fJ7VapW+77NYLF62thNgAAAAAJTmDjAAAAAAShPAAAAAAChNAAMAAACgNAEMAAAAgNIEMAAAAABKE8AAAAAAKE0AAwAAAKA0AQwAAACA0gQwAAAAAEoTwAAAAAAoTQADAAAAoDQBDAAAAIDSBDAAAAAAShPAAAAAAChNAAMAAACgNAEMAAAAgNIEMAAAAABKE8AAAAAAKE0AAwAAAKA0AQwAAACA0gQwAAAAAEoTwAAAAAAoTQADAAAAoLQP1Zzf9svsem8AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "image/png": { "height": 293, "width": 608 } }, "output_type": "display_data" } ], "source": [ "# Mapping approach (iterative algorithm)\n", "r = MA_iter(X,beta,N=10)\n", "ax = pd.DataFrame(r['xhat']).plot.hist(bins=100,range=(0,1),title=r'Frequency of $y_i$')\n", "ax.legend(legend_string(r))\n", "plt.xlim([0,1])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] } ], "metadata": { "jupytext": { "cell_metadata_filter": "-all" }, "kernelspec": { "display_name": "Python 3.7.5 64-bit", "language": "python", "name": "python37564bitd6d03e7a62f8431181f582755adfdb3f" }, "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.7.5" } }, "nbformat": 4, "nbformat_minor": 2 }