GitHub_collection_pykan/tutorials/Interp_1_Hello, MultKAN.ipynb
2024-08-11 18:21:12 -04:00

367 lines
116 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "c982abca",
"metadata": {},
"source": [
"# Interpretability 1: Hello, MultKAN!"
]
},
{
"cell_type": "markdown",
"id": "30fde2f3",
"metadata": {},
"source": [
"Motivation: The original KAN has some level of interpretability, but sometimes not fully interpretable (fully interpretable = convert the network to a symbolic formula). The biggest limitation is the lack of multiplications operators. The original KAN only has addition operators. Although multiplication can be expressed as addition and single-variable functions (which is the core idea of Kolmogorov-Arnold representation theorem), we still hope to explicitly have multiplications in the KANs so that multiplications can be more easily read out from KANs. "
]
},
{
"cell_type": "markdown",
"id": "72377ee4",
"metadata": {},
"source": [
"We first show how multiplications can be represented by addition and single variable functions. Usually KAN would find solutions leveraging linear functions and quadractic functions (the solutions are not unique). $$xy=((x+y)^2-(x-y)^2)/4=((x+y)^2-x^2-y^2)/2=\\cdots$$"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "76538154",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cuda\n",
"checkpoint directory created: ./model\n",
"saving model version 0.0\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"| train_loss: 4.73e-03 | test_loss: 4.96e-03 | reg: 6.68e+00 | : 100%|█| 20/20 [00:04<00:00, 4.77it"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"saving model version 0.1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"from kan import *\n",
"torch.set_default_dtype(torch.float64)\n",
"\n",
"device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
"print(device)\n",
"\n",
"model = KAN(width=[2,5,1], device=device)\n",
"\n",
"f = lambda x: x[:,0] * x[:,1]\n",
"dataset = create_dataset(f, n_var=2, device=device)\n",
"model.fit(dataset, steps=20, lamb=0.001);"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "939224b9",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 500x400 with 22 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"model.plot()"
]
},
{
"cell_type": "markdown",
"id": "2ec84826",
"metadata": {},
"source": [
"This network seems to be using the equality $xy=((x+y)^2-(x-y)^2)/4$ but not exactly."
]
},
{
"cell_type": "markdown",
"id": "b33ecf62",
"metadata": {},
"source": [
"Now we want to explicitly introduce multiplication operators, called MultKAN. Note that MultKAN and KAN are actually the same class in implementation, so you can use either class name. If you dig into MultKAN.py, there is a line 'KAN = MultKAN'. KAN is just a special case of MultKAN. To inlcude multiplications, you only need to modify the width parameter. For example, [2,5,1] KAN means 2 inputs, 5 hidden add neurons, and 1 output; [2,[5,2],1] MultKAN means 2 inputs, 5 hidden add neurons and 2 hidden mult neurons, and 1 output."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "d8f94f0f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"checkpoint directory created: ./model\n",
"saving model version 0.0\n"
]
},
{
"data": {
"image/png": "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44IgbsTFYDAQAOT999+PtSlhw3EcGTVqFJk6dWrCh1p4nidz584lSqWS/Pjjj7E2Jyw4jiO//e1vCQByww03EIvFEmuTQsbj8ZClS5eSlJQUUlBQQD755JOEPddcLhd5++23SUlJCZFKpeTmm28mJ06cCPjvn3/+eSKRSPpFIdD69euJXC4nV199ddCzwQYMGEAeeOCBCFkWPHEjLps3byYAyJ49e2JtSth88MEHBEDC1tN783//93/9Io5tMpnIjBkziEQiIb///e8T9kZMCCH79u0jEydOJBKJhCxcuDBhn9Y9Hg9Zs2YNGTRokCD4Bw8eDOo1du3aReRyOXn00UcjZGX0WLlyJZFIJGTevHkhFctcddVV5JJLLomAZaERN+Ly5z//mchksphP8gwXl8tFBg0aRK644opYmxI2dOLqH//4x1ibEhbHjh0jlZWVJDU1lXz55ZexNidkrFYreeSRR4hMJiOVlZUJO76E53nyySefkMrKSgKAXHnllWTv3r1Bv47VaiVDhw4lY8aMSfgqv9dee40AIHfddVfIOdrHH3+cFBQUiGxZ6MSNuNxzzz1k2LBhsTYjbOgNOZSLJZ7429/+RqRSKVm0aFFCP+X/85//JJmZmWTQoEEJnS/6xz/+QQYOHEhUKhX53e9+l5A3U57nyVdffUXGjh1LAJBLLrmEbN26NeTXu+eee4harU7o75XnefLss88SAOThhx8O61pbv349AdBnZVm0iBtxOe+888gNN9wQazPCwmazkcLCwrgYGhcOO3bsIMnJyWT69OkJW3XE8zx59dVXiVQqJZdeemnC9k61t7eTefPmEQDkwgsvPKM7O1H47rvvyDnnnEMAkHPOOSfsCj1aMLN8+XKRLIw+PM+TX//618Kki3Af4g4cOEAAkO+++04cA8MkLsSF53mSmZnZbZRIIvLHP/6RyOVycvTo0VibEjInTpwgubm5ZNKkSQFXqsQbdrud3HzzzcLTYCIKJM/z5C9/+QvRarUkKyuLvPvuuwnpQW7ZsoVcfPHFBAAZN24c+frrr8M+jvb2dpKXl0d++ctfJuRnQsjp4hLak/Tqq6+K8poul4solUqydOlSUV4vXOJCXBobGwkA8vnnn8falJAxGAwkKyuLLFiwINamhIxOpyNnnXUWqaioIO3t7bE2JySamprIxIkTiUqlIqtXr461OSFx9OhR4YY8Z86cPns84pE9e/aQX/3qVwQAqaqqIp999pkoQsDzPJk+fTrJzs5O2H4rt9tN5s2bRyQSCXn77bdFfe1Ro0aRO+64Q9TXDJW4EJevv/6aACDHjx+PtSkh8+STTxK1Wh1QXX48YrfbyTnnnEOys7PJkSNHYm1OSGzZsoUUFBSQoqIismPHjlibEzQul4v8/ve/J2q1mgwYMIB88803sTYpaGpra8n111/fbfy9mJ7j22+/TQCQzz77TLTXjCYOh4Ncc801RC6Xkw8++ED01587dy6ZPHmy6K8bCnEhLi+++CLRaDQJ28ne1tZGNBpNwjaAchxHrr/+eqJWq8mWLVtibU5IvPvuu0SpVJKzzz47IZ9ot2zZQkaMGEFkMhn59a9/nXAhyePHj5ObbrqJSKVSUlpaSlatWiX67LkjR46Q5ORkMn/+fFFfN1pYrVbyy1/+kqhUqohVLf7hD38gKSkpcXEvjQtxmTdvHpk0aVKszQiZe++9l6SlpcVNlUawPPjgg0QikZBPP/001qYEjdvtJvfeey8BQG6//faEK2U3Go1k0aJFRCKRkPHjxydcn1dDQwNZsGABkcvlJD8/nyxfvjwi34HL5SITJ04kFRUVCTnXzmg0kvPOO48kJyeTjRs3Rux9vvrqKwIgqCbUSBEX4jJ69OiEfRo5deoUUSqVCVuMsHTpUgIgbpKAwaDT6cjFF19MZDIZWb58ecIldz/77DNSVFRENBoNee211xKq8KC1tZXcd999wvj7P/7xjxH1tn77298SmUyWkJ61TqcjEyZMIOnp6RHvTWpoaCAAyBdffBHR9wmEmIuL2+0mKpWKvP7667E2JSRuvfVWkpubm5BPU59++imRSCTkwQcfjLUpQbN//34ycOBAotVq46b0MlAaGxvJ1VdfTQCQK664gtTV1cXapIDxHn+flpZGnnnmGZ/j78Xkp59+IjKZjDz11FMRfZ9I0NLSQqqqqkh2djbZvXt3xN+P53mSkZFBfve730X8vfoi5uJSW1tLAJB///vfsTYlaGpra4lUKk1IYfzpp5+IWq0mN9xwQ1zEZ4Ph008/JRqNhowcOZKcPHky1uYEDMdxZMWKFSQ1NZXk5eWRDz/8MGG8LaPRSJ555hmSlpZGkpOTyWOPPRaVdbomk4lUVFSQSZMmJdz+oFOnTpFBgwaRwsLCqDZ6Tp06lcycOTNq7+ePmIvLhg0bCAC/61fjmWuvvZaUlpYmXJz/yJEjRKvVkqlTpxK73R5rcwKG4zjy9NNPEwDkuuuuS6jBk/v37ydTpkwhAMidd96ZME2dVquVvPjii0Sr1RKVSkXuu+++qG7qvP3224lGo0m43rEjR46QkpISMmDAgKhXwS5cuJAMHz48qu/pi5iLyxNPPEHy8/NjbUbQ7NixgwAg77zzTqxNCYq2tjZSUVFBhg4dGpUnT7Ewm83kmmuuIQDI7373u4R54rfb7eTxxx8ncrmcDBs2jGzatCnWJgWEw+Egy5YtI/n5+UQul5MFCxZEfZz/p59+SgCQlStXRvV9w6W6uprk5eWRoUOHxqQ14Y033oiLOY0xF5fp06fH1STPQLnkkkvI0KFDE8pVt1qtZOLEiSQvLy+hwknHjx8nVVVVJDU1NS4SlYHy73//mwwePJgolUry9NNPx/xiDwS3201WrlxJSktLiVQqJTfddFNM+s+am5uJVqslM2bMSJgHCUII2bZtG8nMzCSjR4+OWSMynTAf6/mGMReXgQMHxtUOgkD497//TQCQjz/+ONamBIzH4yHTp08nycnJcbWtri82btxIsrKySEVFBTlw4ECszQkInU5HbrnlFgKAnHfeeUGPkY8FHo+HrF27ttv4+1gNhOR5nlx66aUkLy8voSZFfP/99yQlJYVMmTKFdHV1xcwOuhsr1hMqYiouZrM57ran9QXP82TSpElk/PjxCfNExfM8ueeee4hUKiV/+9vfYm1OQPA8T15//XUik8nIJZdckhAhPJ7nyZo1a0h2djbJyMggK1eujPtiCZ7nyaefftpt/H2se22WLVuWcFtcv/76a6JWq8nFF18cF5WjpaWl5Ne//nVMbYiZuHg8HvLtt98SAOSnn36KlRkB4fF4iE6nI62treSjjz4iAMg//vGPWJvlE29baRjmxRdfJADIm2++GWPruuPLVkJOx/tvvfVWAoA8+OCDcRF69Gcr5fjx42TatGkEAJk5c2ZMpwT0ZSshp0Xl66+/JuPGjSMAyC9+8YuY9JD0tPXAgQNErVaTe+65J+q29IW/z/Xjjz8mCoWCXHnllXFTIHP55ZeTiy++uNdzINJICCEEUWbTpk1YtmwZGhsbYbPZUFhYiOnTp+OWW26BSqWKtjm9Qm01Go2Qy+XYt28fNBoN9u3bB7VaHWvzuuFtq0KhAADk5+dj1apV+L//+z8899xzMbbwf/iy9corr8Sll16K2bNnY8+ePXj77bcxb968GFvq39ZbbrkFUqkUr776Kp566ink5OTgjTfewOWXXx6XttJr64cffsATTzyBzZs34+yzz8Zzzz2HCy64IOa2EkKwf/9+JCUlYc+ePUhOTo66Tf7w97nKZDIsWLAAN9xwA95//33hv8WSTZs24e677wbP8xg4cCCAM8+BqBBtNVu7di2ZOnUq+fHHH8lnn31GXn75ZXL8+HHy5JNPkltuuSUunlIp/mx94oknEsbWxx57jAwaNIi4XK5YmyjQ2+dKd8Jv37491mYSQno/X6+88koycuRIIpVKyQMPPBDzcEhf19bmzZvJL37xCwKAjB07lnz11VcxC+32dr5eddVVCXFtPf7440Qmk5HbbrstbqYrUFt/+OGHmN9foyouzc3NZOjQoaS1tZXwPE9uvvlmIpPJiMViIRzHkd/+9rdxU3bIbI0Mfdn6m9/8hrz00kuxNpMQEpitpaWlcVEgEYitAEhlZSX59NNPY5ov7G/nq9hj80Ml3j5XafR8JODdd9/FwoULIZVKodPp4HA4AAA6nQ56vR733HMPli9fHk2T/MJsjQx92bpo0SKsWbMmxlaeJhBbs7KyMG7cuBhbGpitFRUV2LdvH66++mpIJJK4tTXRztcVK1bE2MrTxNvnKo/aOwHYvHkzHnroIeFi7OzsBMdxOPfccyGRSPDAAw9AJpPB5XJBqVRG0zRmK7O139uakZEBjuMgk8ni3tZE+lyZrb6JqrgkJyfD4/Fg8uTJAIDt27fDZrNhwoQJkMvlKCoqgsPhQE1NDSorK2Oa3A/EVo/HAxL9eogzCMRWjuMglUbVUfUJszUyqFSqhLCVEJIwtrrdbiiVyri3leM4OJ1OKBSK+LI1agE4Qsjq1avJfffdRziOIxzHCTFBk8lEOI4j9fX1pKCggPzqV78iM2bMIA8//DB57733yM6dO4nNZoumqQHZevbZZ5O6ujrS0tJCurq6iN1uj0ksOxBbzzvvPGKz2YjT6Yxp78XKlSvJvffe26utY8aMIQcPHoxZgpznedLR0UGee+65Pm0tLy8np06diomdHMeRtrY2Ul1dTZ544ok+bb3gggtiZqfNZiOdnZ2ktbWVLFu2rE9bL7zwwqjb6fF4iNVqJV1dXaStrY20tLSQFStWxJ2tbre7m53Nzc2kubmZ/OlPf+rzPhBNW6Mqt9dccw2+++47bN68GRKJBDKZDHK5HFKpFFarFYsXL8ZHH32E5cuXY/78+dBqtdi4cSOeeuopzJw5Ew888ADeeecdbNu2DRaLJea2vvDCC9BqtVAoFLBarWhvb0djYyM6OjpgNpvh8XgiaiPliiuuwMaNG3u19Xe/+x2kUik8Hg/sdjtsNhtcLhc4jouKjW63G62trZgyZUqftj788MNobm7G5s2b8dNPP6G+vh5utzviNvI8j9bWVuzZswdHjx7FL3/5S/zrX//ya+vdd98Nt9uN8ePH44477kB1dXXEbQQAk8mEo0ePYtu2bThy5AgA4Pbbb+/1fF20aBFuvfVWdHR0RMXb5jgONpsNnZ2daG9vh9FoBCEEKSkpuPnmm/H999/7tfWee+7BE088EXEbCSFwOp0wmUzQ6XTo6OiAyWQCx3FITk6GVqvFLbfc0qut9NqKJG63G1arFV1dXWhra0NHRweMRiM8Hg/UajWysrKQl5eHm2++uc97VqRt9SbqfS61tbWYP38+pk2bhgEDBsBkMiEvLw/vvfcerrnmGsyfP7/b7xNC0NzcjJqaGuGfTqeDRCJBWVkZRowYgaqqKlRWViI9PV1UW2tqarBgwQJMmzYN5eXlfdrqcrngcDjgcDjgdDpBCIFcLodarRb+ie2S2mw2uN1unDhxAosWLQrIVo7jwHGcENbzPhHFjsfzPA+DwQCTyQS5XI6srCycOnUKd9xxR6+28jyPjo4ONDU1oaOjAxKJBLm5uSgqKkJ2draoCWmPx4PW1la0tLTA4/EgOzsbhYWF0Gg0qK2t7dXWOXPmYN26dVi+fDnq6+txwQUXYMmSJTjvvPNEtdHpdKK9vR3t7e2w2+1Qq9XIzc1Fbm6u0G/Vm63Tp0/H5ZdfDp1Oh6SkJBQXFyMlJUU0+4DT5xU9/+nDgEqlgkqlOuPc92fru+++i6qqKlx66aUYO3YssrKyRLXR4/HA6XTC6XTC7XaDEAKZTAalUgmVSgWlUnnGNdqbrTNmzMCCBQtEtdHtdsPlcgn/eJ6HRCKBQqGAUqkU/vk6v/o6X3vesyJJTJoof/zxR9x///2oqKiAXC5HRUUFZs6ciaqqqj7/lhCC9vZ2QWgOHDiAlpYWAEBJSQkqKysxYsQIVFZWQqvVhmwjOV2mja6uLnz44YfYunUr3G53wLYSQoQLzW63C14MvdCSkpLCSqoRQmC1WoWnLIVCAb1eH7StPM/D4/GA4zjhJJbJZMK/cG6QFosFnZ2d4HkeGRkZSE9PF14vGFtdLheam5vR2NgIi8UClUqFoqIiFBUVQaPRhGyf0+lEc3Mz2tvbAQC5ubkoLCw8I9cXiK0ejwdffvklli1bhurqaowcORKLFy/GVVddBbk8tNQmz/PQ6/Vob29HV1cXpFIpsrOzkZeX5/dBqi9bbTYbGhsbYbVakZmZiaKiorAa/zwej3CeezweSCQSQVBUKlWvD1P+bD3rrLOwZ88edHZ2oqqqCsXFxSHbx/M8XC6XICj0HKc3aJVKFdD348vW6dOnY+jQodBoNCFfJ4SQM8SEPvApFApB8BQKRcDv4W2r0+lEeXk55s6dG9D9VUxiIi4bNmzAP//5T7z11lsAEPbTvE6nw4EDBwTBaWxsBAAUFBSgsrISVVVVGDFiBHJycgL6gqiwSCQS4ffpz0K1lV6EdrtdOMmlUqkgNGq1OmCvgYYcCCHQaDRn/F2otvI8L3g0PM8DQDePJtCT2+VyQa/Xw+FwQKPRICsry+8FHKytJpMJjY2NaGlpgdvtRkZGBoqKilBQUBDwTdxqtaK5uRk6nQ5yuRwFBQXIz8/v8+8DsZUQgh9//BFLly7F999/j7KyMtxzzz248cYbkZSUFJB9ZrMZ7e3t6OjogMfjQVpaGvLy8pCdnR3wOdKXrZ2dnWhqagLP88jPz0dubm7A36/b7RYEheM4SCQSqNVqQVCCvdH6spUQgtraWtTX16O8vBxDhw4N6vyjgkI9KLlcLtgXzI26N1vpA55UKg14moC3mHh7T96CF6yY9PZeLpcLbrdbdC81EGIiLk899RRSU1Px4IMPRuT1jUZjtzDaqVOnAADZ2dmCV1NVVYXCwkKfXyB9uolULwD90u12OxwOB1wuFwBAoVAIQuPvInW73bDb7cIJHanKD0KI4NHQvAz1ZuRyud/PraurCyaTCQqFAlqtNuAbarDwPI/29nY0NTVBp9NBKpUiLy8PRUVFyMrK8mmf0WhEU1MTjEYjVCoVCgsLkZubG7HPsLq6GsuWLcPnn3+OjIwM3HHHHbj99tt9etQulwsdHR1oa2uDzWaDUqlEXl4ecnNzI/YZchyH1tZWdHR0QKlUori4GGlpaT5/1zvk6/1gRJ+sI3Wt1NXV4eDBg8jOzsbo0aN9PgDQail6w6Y3f+qZ9OVBhQN90KOfQ0/otU7/UTGh9nmLSSTgeR42mw1JSUlRL0GPuri43W7ceuutuPHGG6M2g8lsNqO2tlYIox07dgyEEGRmZnYLo5WWlgJAWB5KKPA8L3g13k+DKpVKEBuFQgGn0wmHwyGIULQa4QghgkdDhUYqlQoejVQqhdlsRldXFwghyMjIQFpaWtTsczqdaGpqQlNTE6xWK9RqtRA2S0pKgl6vR3NzM6xWKzQaTa8CFAnq6urwpz/9CWvWrIFEIsHcuXOxcOFClJSUoLOzE21tbejq6oJEIoFWqxXCXtGyz+FwoKGhARaLBenp6SguLoZCoRAEhXraMpmsm6BEC51Ohz179kCtVmPcuHFISkrqFuqi56R3qCuaM76osCUnJ0MikcDtdgs/o55TtMTEF1arVcjXRJOoi8uhQ4fw29/+Fi+88AIGDBgQzbcWsNlsOHjwoODZHD16FBzHITU1FcOHD0dVVRVGjhyJ8vLymNSvU+/E+8J2u92Qy+VIT09Henp6zOrqqdBQsXE6nejq6oLH40FGRkZQoZtIYDAYBKHR6XSCXQMGDEBpaanoRR/BoNfrsWrVKrz11lvo6urC1KlTMWPGDIwZMwa5ubnIyckJOT8jBp2dnTh58iRsNhsyMjKg1WqhVCoFQYnlUEaDwYBt27bBarVi2LBhyMzMhEwmE4QulHCcGNCcjsFgEHpNaN7SW0xi+b06HA4QQiLmAfsj6uLy2Wef4YsvvsA777wT8yYpitPpxKFDh1BdXY0DBw7gyJEjcLvd0Gg0GD58uBBGowUI0YQmdW02W7eLhxYG0As/2nAch66uLhgMBkilUmRkZAgXOPVoYiEytPKrsbER7e3tcLvdkMlk0Gg0yM/PF7yWaON2u4WwV2dnJ/71r3/hiy++QGtra8QqzAKB53nBI6al6Z2dnTCbzUhOTkZ5eXlMBJnaRT0UWnhy6NAhWCwWjB49GuXl5TG1y+VyCYU6EokEHo8HycnJSE9Pj/kUBG+ordHOu0RdXJ5//nkAwGOPPRbNt+0TmsCWSqVwu904cuSI4NkcPHgQTqcTarUaQ4cORVVVFaqqqjBkyJCIPs3ReC5wultcJpN1q87pGf+mxQGRPLEJIUIIDAAyMzORmpoKiUTSLXRGk5TREpreKr/sdjuam5vR1NQEm82G5ORkIWwWybUJtNqQCgoAoSchMzMTHMedUWG2ZMkSXHnllRF9iKE5Cu98n7eHIpPJ4HQ60djYCJPJhLS0NBQXF0f0IYYmunuGk2g4x9tzOnjwIOrq6lBWVoZhw4ZFVJA5juuWM6FiIpfLu3kmMplMKHSgYex4geM42O32qOddoiouPM/jtttuw4wZMzBjxoxovW2f9FVZ4/F4cPz4cSFnc+DAAdhsNigUCpx11lmC2AwdOlS0C9A7cd9bqSO9SdAQGnD6gqRCI2a4wOFwQK/Xw+VyITU1VQhN+CJavTTBVn7RKqnW1lZwHAetVouioiLk5eWJZpfNZkNbW5vgOWk0GuTl5SEnJ8fnTYcQgh9++AFLly7FDz/8EFKFWV/QEGbPHhQqKP7OfaPRiMbGRrjdbuTm5iI/P1+0iAMVOSoo9Br0DnX5e6/6+nrU1tZCq9Vi9OjRot3MPR5PNzGh+RwqJv56YSi0JDuSxTahQEv4oyl6URWXkydP4tFHH8XTTz+NoUOHRutte8VX2XFf8DyPkydPduu1MZvNkMvlGDRokCA2w4YNC2nhUaiJe1oYQIsDvAsDqNiEcnLRUAk9QbVabVAi2rOXBkA3jyYU8Qu38otWSjU1NaGzs1MQpqKiImRkZARtj8fjEcJeFosFcrkcubm5yMvLC6oXx7vCLDMzU6gwCyWURz2Bnj0ovVUj+oJW5rW1tUEmk6GoqAiZmZlB20M74mmoyzsR793PESh6vR579uyBUqnEuHHjQup58icmPRsWAz2vCCFCCDuelp3Z7XahZDxaRFVcvvrqK6xbtw7vvvtu3LiNYpQdE0JQX1+PAwcOYP/+/aipqYHBYIBEIsGgQYOEnM3w4cORmpra6+vY7Xa43W5RcinUTae9NbQb2bu3pq+eDZPJJBwLDYGFQzi9NISQMyq/CgsLodVqw/r+bDabUARAe3No2Ky374AQAoPBIIS9aAViXl5e2NVo/irMaEWjP+iNm1YdUk9ArVaHXTLscrnQ2NgIo9GIlJQUlJSU9Hmz8g510RAcTcSLUcZss9mwc+dOuFwujBkzps/GaV/d7wDOaFgMx+ug4WwqmvEADTWG03QcLFEVl5dffhlmsxlPPfVUtN6yV8JtjOztdenIGio43iNrqGdTVVUlJEtpPTrP8yF7GH3ZRG86VMCA00+NVGi8L3S73Q69Xg+32420tDRkZmZG5HMKpJeGPjk3NzfD6XQiPT0dRUVFoieaCSHdwmaEEGRnZ6OoqKibV2S324WwFy1BpWEvscs99Xo9Vq5ciZUrV8JoNGLGjBlYtGgRRo4cKdjsLSg9c3CRKD+ljawulws5OTnIz88XQoo04U0FhT68eYe6xI77u91u7N27F3q9HsOHD+8mwOGMUgkH+p3QXGmsoXmXaIbroiYuhBDccccduOSSSzBz5sxovGWf9gQbDgvnvTo6OgSvxntkTXFxMYYPH46KigoMHz4cJSUlUTkZ6RwoWvJMb0pyuVwYV5OSkiKUo0YaX700PM9Dp9Ohvb0dPM93m/kVaTweD1paWtDU1CRUxNGYNc/zkMvlyMnJQV5eXlSqcGw2G9atW4cVK1agvr4e5513Hu644w6MGzeum0carWQyHcPU0tICnueh1Wqh0WiEhLe3JxCt8+fgwYM4duwYCgoKMHDgwG7d76GOUgkH+rAYzngYMYl23iVq4tLU1IQHHngAjz/+uPDUFUsi3YXfF3q9HgcOHMDevXtRXV2NpqYmyOVy5Ofnd/NsghnLEQ5OpxOtra1ob28XekPS09MFr0atVke9qY8m3XNyclBUVITk5GRhymu0MBgMOHXqFA4dOoT29naoVCoUFxdj2LBhKC4ujlpjGvUIrFYrvvzyS6xcuRKHDh1CVVUVlixZghkzZkStTJ4WB7hcLlitVrS0tMBkMgn9RBkZGVH5jnyNUmlsbMSRI0eQk5OD8ePHQ6PRRE1MfNlntVohk8mi3mPii2jnXaImLhs3bsSqVavw7rvvRjWp5AvvsuNYQiu8FAoF3G53tzBaXV2dEJbxFht/I2vCwWazQa/Xg+M4pKWlIS0trdu4j57J4EiFW2jll16vh0wmEyq/aA9BtEqcHQ6HMIHY4XAgKSlJmO1lNpvR1NSE9vZ2EEKQk5OD4uLigOfWBQMt0KBhJuB/lYAqlQqbN28WKszKy8uxcOFCUSvMvO2gN3Ca9Pb2BlQqlfBA4HA4kJ2dHdSst0AJdJSK2WzG7t27oVAoBIGJFXTFRTyUJ0c77xI1cVm2bBlaWlrw+9//Phpv55dI5VmCtaGvxD0dWUMHctKRNRkZGd3EprS0NOSbmtvtRmdnpzB7iO6m6Qm9QKjY9AzDBDN00xfBVH5FqsSZ4zjo9Xq0tbXBaDRCJpMhJycHubm5Pudtud1utLS0CL0gSqUShYWFKCoqCqvogYYr6Y0cOLMHpSdiVph5H5/3aHrgzHLcnucdIQQ6nU4I+YZbbEEnU4QySsVms2HXrl1wOBwYM2YMsrOzQ7JBDGj5t0ajiel9h/bIRSvvEjVxWbhwIaZMmYJ58+ZF4+18Es08iz9CTdx7j6w5cOAAjh49Co/Hg9TUVKEaraqqCgMGDOjzxKFVTvQmmpWVFfDTjHdhgK8mvEDLXL2T56FWfvlbFxCM0JhMJrS1tUGn04HjOKSnpyMvLw9arTbg16DeTHNzM1wul9B0WFBQEND3Sy96eiOnE3L76kHpyalTp/CnP/0Ja9euDarCDPhfs6AYiXiPxyOUeCcnJ6O4uDig84t6SN6eCYCQR6l4PB7s3bsXOp0Ow4YNQ1lZWUB/FwmsVisAxNSLomG6aOVdoiIuHR0dWLRoER5++GGMHz8+0m/nl1jnWTiOg9VqFWrgw3nSdjqdOHz4sFAkcPjwYbjdbiQnJwvz0XyNrLFarejs7BRupBkZGWF9Ht4Loux2u/AZe08M8H7/SFV+BVPiTBdvtbW1CR3VPRdvhQIt3KDbSHtbcEbLxJ1OZ1g9KL7Q6XRYtWoV3n77bZhMJlx99dVYtGgRRowY0c1W79H0PRPxYtyArFYrGhsbYbPZkJWVhaKiojPOBV+jVLzFJNzqMkIIDh8+jJMnTwr7nmI1g8xqtca8PNlmswml4JEmKuLy448/YsWKFVi5cmXYfRKhEus8i9vtFr7YSFSP0JE1NGdz6NAhOBwOqFQqDBs2DEOHDkVxcTHy8/ORkZGBrKysiDy90FwN7a0BTodT5HI5jEajsDwskpVfvoRGIpHAaDRCp9PBaDQGtHgrHOiCs6amJpjNZqhUKmRnZyM7OxtyuVz0HhRf9Kwwu+CCC3DnnXdi/PjxQlixry2M4eLdm8RxHLKyspCeng63293rKBWxaWxsRE1NDTIzMzF27NiY5D+okPd84IomtHk1Gg2eURGXN998E0eOHMHLL78c6bfySazzLPQJlfaURAM6sqa6uhq7d+/G/v37hbp7b8/mrLPOiliBBc/zMJlMOHnyJJqamoRxK6WlpcjIyIhYYYA3JpNJSMDTsTUFBQXIy8uL+CRd6h10dHTg5MmTaG1tFYS1vLwcZWVlEb3J0DCT1WrFF1980a3CbOHChZgxY0ZEi2u8u99tNhuam5vR2dkJjUaD8vJyocw9WtdlV1cXdu/eDblcjnHjxsVkgRadnBGr8mQago3G+0dFXO6//35UVVXh9ttvj/RbnUEs8yxid9wHi/ea4bS0NHR1dQk5m5qaGpjNZshkMgwePDjskTU96Vn5lZ+fj+zsbKGZK9xtnL3hcrmEai+6yImOtFcqlb3upQkX75xUz6kISqUSXV1dwjoAiUSCvLw8FBcXi7ZfprctjAqFAlu2bMGyZcsiUmEWyCgVj8cjTFgQY81ysNjtduzatQt2ux2jR49GTk5O1N4b+F/eI5jtlZF4f7VaHXHvKeLiYjQaceedd+Lee+/F2WefHcm38kms8izeiXvanxEtAlkz3NvImoqKCkFs+hpZ0xOj0Yjm5mYYDIZeK7/C2cbpCxp+ofvm+1q85b2XhpY4S6VSIU8TjNB4d6VTQZHL5ULeydd339uCs2BuOn1tYfQXZtq3bx+WLVuGL774IuQKs0BGqfgL94WzZjlcPB4P9u3bh46ODpx11llR3yvV1/bKSBOtvEvExWXr1q149dVX8cYbb0R9j0aswmFiJu6DIZw1w3RkDfVq6MgaACgvLxfEprKy8ozBjmJVfnmXO3vvZu+t89xisQheCq2eoz0pwQh6sOsCvIeEegtjKKXZdMFZS0sLPB4PMjMzhfxYz9fxHvfinQQPdQtjzwqzefPm4e677/ZZYdazYTHcUSrBrFkWG0IIjhw5ghMnTqC4uBiVlZVRvU94b6+M9niYaOVdIi4u7733Hnbv3o2lS5dG8m3OIFbhMPo0LpfLhbWn0SASa4bb29uxf/9+QXC8R9ZQryY3N1dI4os588u7ibOnNyCTyWA2m9HR0SFU4NBqLzEuGH+9NHSFrffYeu8S7HBvThzHob29HY2Njd3Cibm5uUhJSenW++K9hVGMvIVOpxNmmJlMJsyYMQN33XUXhgwZIngm9LPo2WMS7nnma81ytJ7om5qaUFNTg/T0dIwdOzaqnoTNZgMhJKr3CSB6eZeIi8sjjzyCsrIyLFy4MJJvcwaxCIfFInHvdDqh1+vhdDqRkpKCrKysiD0J0ZE1+/btw44dO3Dy5EkQQlBYWIjx48dj3LhxERlZQ3NXdMNkR0cHAAj5ivz8/Iglpl0uFywWC2w2G1wuFyQSCZKSkqDRaCL21MnzPIxGI+rq6lBXVwer1Yrk5GSUlpairKwM6enpEel+d7vdMBgMWLt2LVatWoXm5macffbZuOuuu3D++ecLXlGkrimaj+I4TlhXEA1vgib6ZTIZxo0bF7WKVho6pw9N0YK+b6TzLhEVF5vNhttuuw0LFizAhRdeGKm3OYNolx3THQ4ejydqiXu6ZthsNkOpVEKr1Ub8BO257VGtVqOzsxNHjx5FTU0NTp061W1kTWVlJUaMGBHWyJqei7eogKampgo9NmJv46TeiXd4jnoJtIw42HUBvUFv7D070Wki3mq1Cn05Yi046zlKhXpENF8jlUrxzTff4I033sD+/fsxatQoLFmyBL/61a8iXuFGZ9wpFAoUFxdHZc0yTfTbbDaMHj0aubm5EX9P4H/nWrTHw1itVuH8ihQRFZc9e/bghRdewOuvv478/PxIvU03op1niXbinvhYMxzpOLWvyq/8/PwzLoZARtZUVlairKys1xtxz8VbCoVCmEDsqy/Ge5VAz/xHoNs4aRiOxqP76kEJdF2AP/xtYaR5E1+d+eEsOAt1lAr575bM119/HT/++GNEZ5h5E+01y8Dpz3ffvn1oa2vD0KFDo5boj8X2SjrGKZLfYUTFZd26dfjhhx/w5z//OSrhqWjnWTwej7B1Lhpzg4JZMywGgVZ++YOOrKFi4z2yZvjw4RgxYgQqKysxcOBASCQSYfGWXq8HgJAWb/W2jZNWoSkUCuHJnQoKz/NCHiPY/htf6wJ6Co13Il6MLYz+FpwVFhZCrVaLPkoFOLPC7M4778Rtt90W0UKdSK5Z9gUhBEePHsXx48dRVFSEqqqqiF/XNPIRze2V9EEjknmXiIrLk08+Ca1Wi/vuuy9Sb9GNaOZZopm4D3fNcDCIUfnlD++RNQcOHMDhw4dht9shlUpRWFgojOcYN24cCgoKREmuem/j9DXlOSUlpZvohIu30HiPd6Hi5T1eRYyufPp9NTQ0oKGhAW63G6mpqcjNzUV2dna3Si6xFnXRCrM1a9ZAKpX2WmEmBmKtWQ6G5uZm7N+/P2qJ/mhvr6QRl3BDyL0RMXFxOp249dZbcfPNN+PSSy+NxFt0I5rhsGgl7kkE1gz7g17ALS0told+9YTjOHR0dKCpqQm1tbWoq6tDW1sbGhsb4fF4hJE1dCDnkCFDQr64aQ8K/c5oHoWeK3T0iHdvTaj42sLIcZzgwVDvJJRemp7QQZPec7k8Hg/0ej10Oh2sViuSkpJQXFwcse+xZ4XZ1VdfjcWLF6Oqqkr09wJOP9DR5W0pKSkoLi6O6PVnMBiwe/duSKXSqCT6o7290mq1Cg8fkSBi4nLgwAE888wz+OMf/xixJxpKtMJh3on7pKSkiD7NRGPNMHA6tNfa2ir0WNBkcSRmfhkMBrS3t0On04Hn+W5hL6lUKoysoWG02tpa4QI466yzhJzN0KFDey1eoPmMnlObaciLXrh0WgD1aHoWBvRVTeOdiO85/NE73OVtV6h7afx1v/ccg0/PEavVKoTNaCVhcXExCgsLRT9vbTYb1q5dixUrVqChoQEXXXQRlixZgnPPPTci16P3mmW6OyZSN2OHw4Fdu3bBarVi1KhRyMvLi8j7UKK5vTLSeZeIicvHH3+Mr776CqtWrYr4hxSNcBidakrr0iOVuPd4POjs7BS6tiO1ZtjpdKKlpQVtbW0AgNzcXBQUFIhecUYXb7W1tQlD++i++b68BJ7ncerUqW69NnRkzaBBgzBixAhhZA1dWOXdg0LDT4H2oHhPDPAeuum9jbPnaHrqAXmHugJ5r7720niLCc0JATijYTGQ9Qo6ne6MBWdFRUXIyckR9YHF4/Hgiy++wNKlS1FTUyNUmF155ZWi3/zJf9cst7a2CmFVrVYr6ntQOI5DdXU1WltbMWTIEFRUVETkfYDobq+kD0aRmrEWMXF59tlnoVQq8cgjj0Ti5QWiUXYcjcQ9IQRGo1HY156VlRWRLz3Qyq9wCHbxVqAQQtDQ0ICamhrU1NSguroaer0ehBCUlpZi6NChGDlyJEaOHIns7OywvidaGGCz2WAymYQZcbQnISUlBampqVCpVGE/aNDpBFTY6E4X74VswXa/+yJSC856QgjB999/j6VLlwoVZvfccw9uvPFG0R9e3G43mpqa0NXVBY1Gg+Li4ogkxQkhOHbsGI4dO4bCwkKMGDEiYvecaG2vjHTeJSLiwnEcbr31Vlx33XW46qqrxH55gWjkWaKRuO+5ZjgSO8jDrfwKhJ6LtzIyMpCbmxvU4q2+8O5B8Xg8aG9vx4kTJ3DkyBEcOnSo28ga7yVqfZXq9nyPnlsYCSHgeV74XwDdbv5JSUlBfZb+RqnQEBnNB/X0aMQ6/3wtOKPVZmLe0LwrzLKysnDHHXdEpMLMYrGgsbERdrs9YmuWAaClpQXV1dVIS0vD2LFjI5Z8j9b2ykjmXSIiLseOHcPjjz+O5557DoMGDRL75QFEJ89C+yYilbgPdM1wqESy8osSqcVb3niPgvHOi/iquGpvbxc8G++RNUVFRULpc1VVVbe1t8FuYfSefEw9GuB/o2BoPo7aRXMz3jmTQEaphNtLEwh0wRkNm/W24CwcTp48iTfeeEOoMLvppptw9913o6SkRJTXB8Rfs+wPo9GIXbt2QSKRYNy4cRHpM6P5XSCy2yvtdjsAROT+FhFx+fLLL/Hxxx/j3XffjViiLZJ5lkgn7kmPNcNarVZUV95X5VdhYWFQT+99vT4Ne9EwnpiLt/z1oHgLSqDQkTVUbBoaGgAA2dnZOOusszBkyBAMGjRIGMfvPa8rUHpu46S5FKlUKkxapl5HqHO5fPXSiL0uwNeCMxo2EytE27PC7JprrsGiRYtErTCjY/31ej2SkpJQUlIi+g3a4XBg9+7dsFgsGDlyZESaxKOxvZL2QEVCwCIiLi+++CKcTieefPJJsV8aQGTzLJFO3Iu9ZtibSFd+mc1mIezl8XiQlpYmTCAO9yHC1x4Umt8QY+Wux+OB0+mETqfD/v37cfDgQRw5cgSNjY2QSqXIyckRQmhVVVUoKioK6sbv7ZVYLJZuCX+6RiA1NVWYGBDOueu9LoBWqIW6LsAftCKrpaUFbrcbGRkZKCoqEi0/Z7PZsGbNGqxYsQKNjY0RqTDruWZZ7JAfx3HYv38/WlpaMHjw4IhEaSK9vZJWTEZiOoDo4kIIwe23347LL78c1113nZgvLbx+pPIskUzcu91u6PV64YvUarWinSyRrPzyt3grLy8v7Nf37kHxvhFTQQnn86Ed6vQmTzv1vRsK5XI5LBYLamtrBc/m+PHj4HleGFlDw2jeI2v8db/7GqVCj5Em66kYeE8MCNcz9lfiLIbQUC+454KzoqIiUUJObrcbX3zxBZYtW4aamhqMHj1amGEmRtSDhoabm5vB8zwKCgqQk5MjasTj2LFjOHr0KAoKCjBixAjRozWR3l5Jm7PFLh4QXVzq6+vx8MMP4ze/+Q0qKyvFfOmI5lkilbjneR4GgwEmkwlyuRxZWVmihcAiVfnF8zw6OzvR1taGrq4uSKXSXhdvBYO/HhQqKOFcmL1tYQy02sput+PgwYOC2Bw9elQIGwwZMkR4Qi0tLe0mJIGOUqGd+1Rs6IOSd7lzOJ9BOL00fUEHlzY2Noa14MwXtMLs9ddfx6ZNm0SvMOM4Ds3NzdDpdFCr1SguLha1Qq61tRXV1dVISUnBuHHjRA1j0fLkSG2vtNvtwu4kMRFdXL799lv85S9/wbvvvit6nDBSeZZIJe691wxnZGSEfWOmRKryy2KxoK2tDR0dHWEt3uoJDUn17EGhghKq3aFuYQzkdalQmc1mHD58GIcOHcKRI0dw8uRJeDweaDSabtVogwYNCvozouG0nts4vXfEBLON09dx9NZLEw6+FpzRsFm4HvnevXuxbNkyfPnll6JXmNntdjQ0NAhrlsVsKjWZTNi1axcIIRg3bpyoUxEiub0yUnkX0cXltddeg16vx7PPPivmy0YkHBapxH0ga4ZDsTUSlV9ut1sIe4m5eIuW8/ac5RXODdN7+KP3FkbveV2heG2+RqkA/+t+p/9kMhncbrewYqCmpgYHDx6Ew+GASqXC0KFDBbEJZWSNd2FAMNs4A4HnecGjoTlLb48mHAHzteCMzv8K59yMZIVZpNYsO51O7Nq1CxaLBSNGjEBBQUHYr+n92pHYXhmpvIuo4kIIwd13343zzjsPN954o1gvG7FwmNlsFj1xb7FY0NHRAYVCgezsbNFczerqalitVlErvzo7O3Hw4EEAgFarRW5ubtg3BPq6Lperz7H1weByuYRNm2JuYezq6oLD4QDgf5RKb3g8Hpw4cUIQG++RNc8//zzOOuuskG3ztY2TlnqHA515RgdqAgg7HAecrqCiI2dsNhsyMjIwefLksF4TOLPC7J133sGvfvWrsF/Xe82yWq3GWWedJcr9heM41NTUoLm5GSNHjkRRUVHYr0mh2yvF9DJo2E3svEvI4vLb3/4W99xzzxk3z46ODmFLny96qwnvzRQqLr5+3tdNgF5ANBELnL6YvMtFfdHX69KS0J7vZbPZfCbfaE9Bb08zNGzUE6PR6Ddsd+jQIYwYMaJXW6urq1FWVtbte6ELxzIyMvyKa28nG/1ce+JwOITwlDd0CkFf4Q1fr0sT4wqF4gxbaWl3b+M/dDqdT+GkwuJPTPo6Bx599FHMmjULAwcOFGyx2Wwwm83Iycnxe8Pu7TrwdV7RajoAZ1xzNEfW19wrX9cX7aXx1zfjcDh6DRXT66knFosFbrf7jOnFdGdKX6JD1y70tNXpdPr0fO12O+6880589dVXfl+TeqQ9oQ2zPb8Tj8eD+vp6DBkypFdb/X0G7e3tPqMWHMdh7969mDJlit/X9Hdt0UpBX9erw+HoM9pAN1D2/PzcbnevJe2hiG7I4mIymfDyyy/joYceitpaUG+C8WboF0JL+uhJGq3dCdSG1tZW5ObmiurS0jxGX9+Bx+PBqVOnoFQqUVRUFJWpq94QQtDV1YX09HRR35uGC/sa7ElvwGI31VmtVqxduxYajQbXX399VHewA6dvCl1dXaJOQaA4HI6wPUNveJ7Htm3bMG7cOFE/J5fLhSuvvBJr167t1hwbDk6nE/X19RgwYICoJcAcx2H79u2ifgb0gSaQKRF0rFFSUlLEZz6GFRYzm8147bXXMH/+fFFji954m+fd8dzzZ71BqyG8n3gsFktUJo9S9Ho9NBqN6BUZO3bswIQJEwL6Xeo5NDc3o6ysLKKdvz0xmUyilN16E6xgcRwHg8EQ1PKxQO2oqanBZ599hrvvvhs5OTmivXZvOJ1OmEwmaLVa0UvzaRGAWGESnuexY8cOjBw5UtSiGY7jcPXVV+NPf/oTiouLRXlNWtgyYMAAUT9XjuOwY8cOjB49WrT7ACFEmEMWqK00x+jLgxGTsHMuDocDy5cvx7Rp0zBy5Eix7ALwP++E0vODCKbJrefv0+RwpBfzEHJ6LTHQeygk1Nc+ePAghg8fHtTfcRyHI0eOoKioKOIrkgEIYyzE9BTJf3fdJCcnB3UDdLvdMJvNouSWemKxWPCHP/wB9957r2hP0P6wWq1wOp0ROQ5CSJ/hsGBfb+fOnRg+fLioDzQ8z2Pu3Ln4zW9+g6FDh4b9evRhxWw2o7S0VNTP1ePxYNeuXaKKK/VCghEWb3vo7qS43kTJ8zxWr16NnJwcXHbZZaLNPPKVZ/H+WbjvYzQaI7JECfif/SaTCQBEG73ijU6nE3ahBAshBAcOHMCgQYNE96a834NWi4kdOqV1/6FcqC6XC1arVdTpCBS3242HHnoIL730UkQm2hJCYLFYhAkPkRAWu90uWtiEEII9e/agoqJC1GuN53nMnz8fCxcuxPjx48N+PUIIWlpaIJVKkZeXJ+rn6nA4sG/fPowaNUqUa42G+V0uV1jfU6QFRhSfj5YJqlQqrFq1ym8yKhi88yn+/oULzb+ICb04DQYD9Ho9lEplxATs2LFjIbvtEokElZWVOHDggOifAfC/ChSO40RfHUDnjYX6BKhUKqHRaITqMzFRKBR47rnn8Nhjj0Xkc6UVjpESFqfTKVq4hBCC/fv3o7y8XPSejzvuuAPz588XRVjo3iCNRiO6sHR2dqKmpgZjx44VTVhouXy4DwByuRwKhUIYCCs2ove5HDhwAF9//TXuu+++sMd3RHplMU2EieWq00Vf3j0J4Xz51D46SqTnf6uvr0dZWVlYNrvdbhw6dAhVVVWi3VBof0vP6cBi4Ha7YbFYRPE63G43TCZTRLZ80rLkG264QbTXpOHVlJQU0XNGPM/D7XYLa5jFeM3a2lrk5uaKmoNyuVy47bbbcN9994kiLBzH4cSJEygpKRHVgyeEoK6uDjabDUOHDhXl/KKRADraR8wpIrQSU8y1DqLfvSsrK3HDDTfghRde8FlSGQj+yo7FRiKR+C1PDBZCTm/G02q1SEtLE+Wm2tLSgq6uLhw/flwoQ6WcOHFClPXRCoUChYWFwpjycKBhQJ7nkZ6eLrq7zXEcTCaTaOEshUKB9PR0dHV1hXyu+qOqqgo6nU6YwhwuFosFhBCkpqaK+pnS8nyO48Iev0OhuUCtViuqsFgsFsyaNQtPPvmkaMJy7NgxlJeXiy4stbW1kMlkGDZsmGjCYrfbhV4UMc8BusKCngti+RsRcQ1KS0tx22234fnnnw/J0GiJC3A6ySzGh9na2oq8vDxRl2LZ7XYUFRVhyJAhOHTokGAn7esQ6zPSarWwWCywWq0hvwZNhtIeJ7G/v0hVesnlcmRmZsJgMIguMHfffTdeeOEFv71LgUKnSIidt/J4PIK3ItYNiwpLVlaWqGPoDQYDbrzxRixdujSsxlQKIac3S1ZUVIi+Q2n//v3IyclBSUmJaJ9poKXGoSKRSATPhTbshg2JIMeOHSOvv/464Xk+4L/heZ5wHBdBq87EZDKF9fc2m42YzWaRrDnNzp07u31uLpeLHDhwgHg8HlJXV0dcLpeo78fzPNmzZw9xu90h/a1erycej0dUmyhut5vo9fqgzqNg4Xme6HQ60Y/BbDaThx9+OORz2m63R+TYXS4XcTqdor4uz/Nk//79pLW1VbTXJIQQvV5PLrvsMqLT6UR7zePHjxOHwyHa61EOHTok6vHzPE8sFktEz/2eeDweYrfbw37PiCY1KioqMGHCBPz1r38N+G9IFL0WikQiCVmpCTm9/U7MpLXD4TjjqUehUKC0tBSnTp2CTCYTfzy2RIIRI0agpqYm6Cd4s9mM1NRU0Zv4yH/zN5EqHfZGIpEgKytL9BBZSkqK4MEEmzSNVNk0nS8mZniF53ns3bsXBQUFfU4KCIauri7MmTMH69ev73UCQzB0dHQgMzNT9DaE5uZmKJVKUY9fzAKLQKHz5sL1uCObMQcwZcoUGAwGYYZVIERbXDQajTCzJ1g6OztRWFgoqj3Ure5JSkoKBgwYIPr7UWQyGYYPHx6UwDidzoiIHflvtZnL5YpIybAvJBIJtFoturq6RK2eGTBgAGbMmIEXX3wx4BwfLQ4Rc9Uw8L8ci5iFFhzHYffu3aioqBBNAIDTobDZs2djw4YNovVj2Ww22O32M8bShIvZbEZ7ezvKy8tFe006nira0zSA0w+z5L8lz6EScXEBgHnz5mH9+vVCz4c/YuG1AP+LN9JRKnQXRl/QwX9ifvl2ux3l5eV+PwepVBrRz0ipVGLo0KE4cOBAnzdCurVT7DE6dAeOXC4XvTKqL6gHQ1cliMXw4cNx3XXX4bnnnhOaSv1B10iLNamXQj1BMZ+E3W630CApZkOu0WjErFmzRBUWj8eDhoYGUaYqe+NyubB//36MGjVKVE/Q5XJFpFcqUJRKZVj5l5BLkS0WS1C/z3EcXnnlFTz99NN+f4fuawmWQGaLBQLdf0EVu68S5ZaWlpAm1PYmRvv378ewYcOCfs2+yr6DrYpzuVw4duxYr1MXOjs7Q2oO7SspqdfrkZaWFrRo9zVbLBiowPXVaR/sddDe3o633noLL7zwgt/faWtrC2mkS1+/T6uNgr3Gevv9bdu2oaqqKuixPn3dNK+44gosX748aA+jt/PxyJEjGDBgQNDH39e1tXXrVowePTro87W3z8DfgMm+EOte6P37gQzE9GlLqOLS3t7u9+dpaWk+S/s8Hk+vIZ3eTOnNq+nrA/V3Y+ltEij572j33vAVk6S7EXrLwfR2UtEpvb7s8TcRFjhzUm4gr8txnDDM0ddnwPN8rycV3dPSE6fTCalU6vc4+/pc/Qkh7Rz3R283AX+v6Xa7QQjxe3Ps68ZCV0t7Q/oYUupyuXp9ena73X4/VwB+cwV92drbddDbOdmbaFksFp//3WazCeNpfNHXzerIkSM+z2n64OevH6O38nyHw+F38nNvw1/7ys34+wz8TUWm9PYZ+Puu6LoEf99XoBPie9LXVORQqtREbaJ0Op144IEH0NnZiQsuuADXXnutKDOWSAT3uQCncy5ilfjZbDa0tbWJtsOeYrVaUV1djZEjR4rW9NnQ0ICGhgaMHz9etIGSTqcTBoMBarVatK5st9sNg8EAnueRlZUlSqiAbpmkA/zEjMEfPXoUjz76KBQKBa655hpcddVVopwLer0eVqsVqampouWheJ6H3W6HTCYT9Xw9ePAgmpubcf7554s6Vbi6uhoXXnghvvvuO9FmGR47dgwej0eU+WSUo0ePCp6/WPtc6AI+iUQiauO3y+UCz/Oi73MRNeeiUqnw6quvYs6cOdixYwfuvfdevPvuuzAYDGG9LhUV8t9OYrH0kH5BVqtVtPh6cnIylEoljEajKK8XKTiOQ1NTE/Ly8kTdwGkwGKBUKkWJk5P/Dv3U6/WQSqXIzs4O++R3u93o7OyEXq8Hz/PIzMwUPbk7ePBgvP3227jwwgvxwQcfYP78+fjiiy/87v0IFK1Wi8zMTFgsFrS2tob9esD/GujoFkyxGDBggJDjiGfo7h0xe3JOnDiBY8eO4ayzzhJFWMh/Gyhpd74YOU6PxwObzSbsXgp2AGwgiJ7QVyqV+NWvfoVly5bh2muvxY8//oglS5Zg3bp1QcenvZFIJEIym3oy4SKVSrsJjFiilZ6eDpvNJsrFHylaW1vBcZxoY8rpXhGFQiHKUzWtlqJP6uHuK/F4POjq6oJOpwPHccjIyEBOTk7EhnZmZWVhwYIFePPNNzFx4kS88847uPPOO/HNN9+ENRUiNTUV+fn5kEgkaG1t7bNIJhCo10J3HomBWq1GUVERTp48KXpzqpi0trZCpVKJ5mXX1dXh8OHDGDRokLBALhw8Ho8woy8pKSnsYgyO4wRRkUgkwmtGojkzYtViSUlJuOaaa7B8+XJcfvnl+Oabb7Bo0SJ8/PHHsNvtIb+u2F4MFRha+iqGwGg0Gsjl8rA9tkjB8zyampqQm5srSq0/9QYUCoUoPRlWqxV6vR6EEGi12rBCALSzv6OjA263G+np6cjJyRF1p0hv5ObmYsmSJfjTn/6EyspKrFixAnfffTe+++67kL1lhUKBvLw8pKWlwWAwoK2tLewxRlRgPB6PaAIzcOBAuN1uNDU1ifJ6YmO322E0GgWxDpeGhgbU1tZiwIABGDx4cFivRRPpNGRJ7ymhQnPBdLdVUlISkpKSIlrmHPFSZI1Gg1mzZmHZsmW48MIL8fnnn2Px4sX461//GvKTvdhejFQqRUpKilBaG+7rSSQSZGRkwGq1ht2IFAna29vhcrlE8VqoR0DHqIT7VNXZ2Qmz2Yzk5GRotdqQXXWO42A0GtHe3i6ssM3JyYnq9lFvioqK8PDDD2PZsmUoKyvDK6+8gkWLFuGnn34K6Xyj51heXh44jkNLS0tYkQHgtMCoVCrRBCY5ORn5+fk4ceJERKbuhktbWxuUSqUoYdGmpibU1NSgrKws7NwN9S48Hg/UanVY049pTs1ut4MQIrxeNHpnRJ+K3Bd6vR6ffvopvvvuO6SlpeGaa67BRRddFLIqe4tLuK4dx3HCnpBwt1QSQtDY2Ai1Wi3K8D6xEvqEEOzatQspKSlhXwQ0dCWTycKeLGy322EymSCVSpGenh5yHojneVgsFthsNiHxGc2No4Fy5MgRrF69Gnv37kVFRQXmzZuHsWPHhmQn+e9cN4vFgqSkJGRlZYUdQqRTcsPNx1ksFmzevBlVVVWiPMyIldB3Op2ora1FSUlJ2EVHra2t2Lt3L4qKisKeLu50OuFyuQRPMtRrivbJ0EZMpVIpamFFIERdXChtbW346KOPsHnzZmRnZ+O6667D1KlTQ74o6JNRuBVlVGBkMlnYAxhNJhP0ej1KSkrC/mLFEpf29nYcOXIEY8aMCTvcRBPtoS4sA05/byaTSRjRn5qaGvLyM+/hmxqNJuoNmKFQU1OD999/X9goOm/ePFRVVYX0Wna7HZ2dnSCEICsrKywvze12C0184QrMnj17YDabMXXq1LC/D7HEpb6+HiaTCcOHDw/roai9vR27d+9GQUEBRo4cGbaHQau2wnm48hYVOpQ0FsRMXCiNjY3YsGEDtm/fjsLCQtxwww2YPHlyyE9wYngxtJKCxjpDhRCChoYGJCcnh/10JJa47Nq1C0lJSUGvRvaGhq9oN3uon7XT6RSq6vz1RvUFzZXRcGZycjJSUlIivgtITAgh2L17N1avXo3jx49j9OjRuOmmm0KK2/M8j87OTmFPUTgeJRUYX/uEgsFkMuGnn37CqFGjUFBQEPLrAOKIi8vlQm1tLQoLC0NqgqbodDrs2rULOTk5GDNmTMjC4nK5hN6wUCcfk/8uEaM9UuF+Z2IQXT/JB8XFxXjwwQdx4sQJbNiwAa+99hrKysowa9asoL8w6rXwPC90+4fyhdNyP6vVCpvNFvIToEQiEZKumZmZMZkR5I1Op4PdbseQIUNCfg168wIQ8o2LlhjbbDahUifY1yH/HUNusViEZs+UlJSYf8ahIJFIMG7cOIwdOxZbtmzBmjVr8MADD2DSpEmYO3duUPOqaMm21WpFV1cXHA4HtFptSMJNb040NxrqzSotLQ3Z2dk4ceKEaMnzcGhvb4dMJgvrga+zsxO7d++GVqvF6NGjQzomnufhcDjAcRyUSmVIxTU9RUXsXpVwiLnn0pNDhw5h/fr1OHjwIAYPHoxZs2aFFCYQo/GSlgEqFIqQBYbneTQ0NCA1NRVZWVkhvQYgjueyZ88eKBSKkMMuVFho2CWUG7l3Q2RqampInysVFVqeGYmJzLGE53n88MMPWLduHdra2jB16lTMmTMn6IGlNCfmcDjCarykN69wnoa7urqwbds2jB07NixvIVzPxe1248CBA8jPzw+5t8VgMGD79u3IyMjA+PHjQ3rA8m6IVKvVQZ+/hBC43W6hYEjMnTxiEXfiAvxv4c4HH3yAEydOoKqqCjNnzgz6ids7TBaqyLjdbmHVcKjlq11dXTAajSgpKQn5JhiuuHR2dqK2thYjRowIqaafCgvtkg82h+SdE6G9MMF+Fna7HRaLRaiiSU1NjXqSMpp4PB5s3LgR69evR1dXFy6++GLMnj076AIRs9ksDALVarUhxfOpwKhUqpA/8+3bt4PjOEyZMiWkvwfCF5empibo9XpUVlaGdC2aTCZs27YNqampmDBhQkii4HA44PF4oFAogp715i0qdGxRvIkKJS6vTIlEgpEjR2LEiBHYuXMnNmzYgCeffBJjx47FzJkzAw4TePfEeItMMFCvhU6yDUVg0tPTYTQahX3tsaChoQFpaWkhCQutRgpVWDweD4xGozC/KVhxdDgcMJvN8Hg8UKlUyMjIiBvXP5LI5XL88pe/xEUXXYSvv/4aH330Eb777jtcdtlluP766wM+l1JTU6FWq6HX69Ha2oqMjIygJygolUphvh21LVgGDhyInTt3Qq/XizqaP1A8Hg90Oh1ycnJCEhaz2Yzt27dDo9Fg/PjxQb+Gx+MRpiAkJSUF/RnSHBghRCi0iEdRocSluFAkEgkmTJiAcePG4aeffsJHH32ERx55BJMnT8YNN9wQ8GgF+gWEGipTKBRISkoSGpCCjV9LpVKkpaXBZDKFlF8IF6PRCLPZjMrKyqD/lgqLx+MJSVisVissFgtkMlnQfSt0URgNyYT61J3oKJVKTJ8+HZdeeim+/PJLfPrpp/j2229x1VVX4Zprrglo/TFtvDQajTAYDLDb7dBqtUF9nzQnEKrAZGdnIz09HcePH4+JuHR0dABASGE5q9WKHTt2ICkpCRMmTAjq2Kkou91uyOXyoLvsE01UKHEZFvMHx3H44Ycf8PHHH6OzsxPnnXcerrvuuqBOlnByMS6XSxhbHqzAcByHhoYGZGRkhDSmPpywWE1NDTweD0aPHh3U31FhcbvdQQ+MpE2MLpcr6LJg76GSCoUCaWlpP0tR8YfFYsFnn32GL7/8ElKpFDNmzMD06dMDzl85nU7o9XpwHIfMzMygt6g6nU4hNBns03tbWxv27NmDSZMmheTFhxoW4zgOBw4cgFarDXrel91ux9atWyGXyzFp0qSgzkU6s40QEnSy3XuopFwuh1KpTKgqyMSxFKc7iC+66CK8/vrruPnmm7F3717cd999WLVqFbq6ugJ6jZ7jY4JBqVRCrVbD6XQG3cEsk8mQmpoKo9EY1W5lGm8PtoGNEAKDwQC3243MzMygLgq73S7M8MrKykJqampAwuI9VJIWDWRnZzNh6UFKSgrmzZuHlStX4pJLLsFHH32E+fPn49NPPw3ovFSpVCgoKIBGo0FnZyc6OjqCmv+lUqkgk8mESqdgyM3NRUpKCo4fPx7U34WLTqcDz/NBey0OhwPbtm2DVCrFxIkTgzoXnU6n0MwbzGBIX0MlIzX/K5IklrX/RaFQ4LLLLsOyZcswc+ZM/Oc//8HixYuxevVqYYx+b9DxMQCCnk9GvRaHwxG0wKSnpwtluNEi1D4b6nVkZmYGfEHRBVtGoxFqtTrgMFbPoZKZmZnIzs4Wfcd5fyM9PR3z58/HW2+9hXPOOQfvv/8+7rzzTvz973/vc9YY7VHKycmBy+VCS0tLnxsyvaFeS7ACI5FIUFFRAZ1OJ8rQzUDgeR7t7e0hhWW3b98OAJg4cWLA5yMdI+VyuaBSqZCcnByQMPQcKpmookJJTKv/i0qlwvTp07F8+XJMnz4dGzduxKJFi/Dhhx8GdKF4zycLxptQqVRQqVRwOBxBzUeja3uNRqNoE5h7w2q1orOzM2ivxWAwwOFwICMjI2BhcTqd0Ol0ws77QHJLHo+n21DJSE8q7q9kZ2fjnnvuwRtvvIFRo0bhzTffxIIFC7Bx48Y+b/xJSUnC7iGdTiesIggEKjBOpzOo6yc/Px/JyclR815oCDAvLy/gv3G5XNi+fTs8Hg8mTpwYcCGPy+XqNiUikOvH31DJRBUVSmJb/1+Sk5Nx/fXXY/ny5bjkkkvw5ZdfYtGiRfj888/79C5C9WLUajWUSiXsdntQApOeng6O48IeMhgIDQ0NQc82MxqNgrAE8qRGCIHJZBLG7WdnZ/cpDjQf09HRAafTGfVJxf2VgoICPPDAA1ixYgUGDRqE119/Hffccw82bdrU63lNGy+1Wi3sdjtaW1sD3u1CS2kdDkfAAiORSDBw4EC0tbVF/DoghKCtrS0oD9ztdmPHjh1wuVyYNGlSQLksnueF7ZtKpTKgBYTeokIIicqk4mjSL8SFkpqairlz52LZsmU455xz8OGHH2Lx4sX4+uuv+5xOHMqU5aSkJEFgAp1+rFAooNFoYDAYIuq90LxHcXFxwIl0k8kEu92O9PT0gLwHt9stdP2npaX12bFP54h1dHTA4XAgLS0Nubm5Yc9wY3SnpKQEjz32GF599VXk5+fjxRdfxL333ovt27f3es5pNBrk5+dDLpejvb0dXV1dfZ6jtHoyWIEpLCyEWq3GiRMngjq2YOns7ITb7Q7Ya/F4PNi5cyfsdjsmTpwYUPEM7YWj44f6eiijnfnek4qTk5P7jahQEqpaLFg6Ojrw8ccf44cffkBWVhauu+46nH/++b1+iaE0XtpsNrjd7oCTdi6XC01NTcjJyQm4UifYarEjR47AYDAE3EFsNpthtVqRlpbW55NasA2RNAZNwwUpKSlxOam4v1JbW4vVq1ejpqYGZ511FubNm4dRo0b1+jfBNl7S5kB6swzknKuvr8fBgwcxderUgCvdgqkWI4Tg4MGDSEpKwoABA/p8bY7jsHPnTphMJkycOLHPnrBgGyLjYVJxNOnX4kJpamrCRx99hC1btiA/Px/XX389zjnnnF5PhGBLlqnABLrUp62tDW63O+B8SDDi4nA4sGvXLgwYMCCgkSEWiwUWiyUgYfFuiExJSelVHOlQSRr6oOPvEz2WnIgQQrBv3z68//77OHr0KEaOHIl58+b1unbB7XZDr9cLS9b6arz0FphAdpDQ1oK8vLyAe7CCEZeuri6cOnUKQ4cO7TPkyvM8du3aha6uLkyYMKHPMmnvhki1Wt3rNR+PQyWjwc9CXCinTp3Chg0bsHv3bpSUlGDmzJkYP36834sgWC8mGIFxOp1obm5Gbm5uQJ5IMOJy/Phx6HS6gLqIrVYrzGZzQJ3z3g2R6enpfi8Q76GSiTqpuL9CCMH27duxevVq1NXVYcKECZg7d67flbyEEGG6hEql6rPxku57BxCQwJw8eRJHjhzB+eefH1AoNhhxOXjwIJRKJSoqKnr9PZ7nsWfPHuh0OkyYMKHXGYDBNET+XEWF8rMSF8qRI0ewYcMG1NTUYODAgZg1a1avuxiC8WLovmuNRtPnjZ3usQ+kqStQcXG5XNi5cydKSkpQUlLS62vabDaYTKY+PZBAGyLpjYUOlUzkScX9HUIINm3ahLVr16K5uRnnnnsu5syZ49eTDqbxkp4H3vkYf3g8Hvzwww8oLCzEsGHD+rQ7UHExGAw4efIkhgwZ0uv1QgjB3r170d7ejnHjxvVash9oQySd/+VyuSCRSOJyqGQ0+FmKC6Wmpgbr16/H0aNHMXToUMyePdtvmCDQXTH0qT0QgXE4HGhpaUFeXl6f4ahAxeXkyZNoa2vD+PHje33CpMKi0Wh6HR8S6IZIu90Os9ksTCpOSUnp1/Hk/gLHcfj3v/+NdevWQa/X46KLLsLs2bN9JsCD2XhJk9aBCMyxY8dw8uRJnH/++X3mdgIVl8OHD0Mqlfa6E4cQgurqarS0tPQ5rTmQDZGJMKk4mvysxQU4fULs2bMH69evR11dHUaNGoVZs2b5DRMEsvGS5hp4nu9TYFpaWkAI6TM3Eoi40BLKoqIilJWV+X0tu90Oo9GI5ORkv3H0QDdEeg+V/DlMKu6vuN1ufPPNN/jwww9hNpsxbdo0zJw50+cMsEA3XgYqMG63G99//z3Kysr6nHweiLiYTCYcP34cgwYN6vXBqaamBo2Njb0uMQt0QyQNfyXa/K9I8rMXFwohBFu3bsWHH36I5uZmTJw4ETNnzvQZJgjEi/EWmN7yDbSvID8/v9ekYyDiUldXh6amJkyYMMGvy+5wOGAwGJCUlOS3GiaQDZHeQyVVKhVSU1N/VvHk/orD4cDf/vY3fPLJJ3C5XLj88stx3XXXnXGuBLrxkgqMVCrttZrq8OHDaGhowPnnn9/reRSIuBw9ehSEkF6Fqra2FnV1dRg5cqTfsHQgGyITdahkNGAZ1v8ikUgwZcoUvPTSS7j77rtx8uRJPPTQQ1i2bBlaW1vP+N2+Gi8lEolQGUVFxhe0V4bezEPF4/GgpaUFBQUFfi9Op9PZq7AE0hDpcrmg1+uFNcdarTbooZaM+EWtVuO6667DypUrcc011+Cbb77B/PnzsXbtWqGUHAi88VIqlUKtVoPn+V4bmgcMGACe51FfXx+W/bTysbe+lsOHD6Ourg5VVVU+hSWQhki32w2r1Qqn0wmZTCb0tzBh+R9MXHogk8lwwQUX4LXXXsNtt92GAwcO4P7778dbb70FvV7f7Xf7arykAgOgV4HJyMiA3W4PelaZN62treB53u9TGBUWtVrtU1j6aoj0NVTy5zoC/+eARqPBnDlzsGrVKlx22WX49NNPMX/+fHz88cfdRCSQxkvqtdCEuC+USiVKSkpw6tSpoIdhetPa2tqrV37s2DGcOHECw4YN81nw0ldDJB0q6S0qiTz/K5KwT8QPcrkc06ZNw9KlSzFnzhxs374d9957L/7yl7908zJ6TlnueWEFIjAajQYKhQIGgyEkWzmOQ1NTE/Ly8nze7F0uFwwGA5RK5RkXHW2I1Ov1wtOodwzd7XazoZI/Y9LS0nDbbbfh7bffxvnnn4+1a9di/vz5+PLLL4WxR3K5HLm5ucjMzITFYkFra+sZI5FoIrw3gRkwYAA8Hk/I3ovNZoPZbPbrtZw8eRJHjx7FkCFDzlg4SCvcHA4H5HL5GR3z3pOK+8NQyWjAPpk+UCqV+NWvfoVly5bh6quvxnfffYfFixfjgw8+EMIENEzmz4uRSqXdBMaXl5ORkQGbzRbUnDJKW1sbPB6PT6+FigPtpPd22+mOdYvFgpSUFGi1WuGCokMldTodGyrJQFZWFu666y68+eabmDBhAlauXIkFCxbg22+/FSYwp6amIj8/HxKJBG1tbWdMPfYWGF9eulqtRlFREU6dOhXSWorW1lZhU2lP6urqcOjQIVRUVJzR9+LxeIQWgqSkpG7FB3T+FxWV/jJUMhqwTyhAkpKScO2112L58uW47LLL8PXXX2PRokX49NNPhaax3rwYKjA00d9TYGjjZbDeC8/zaGxs9Hnjp6EshUKBzMzMbsJitVqFEJdWqxX6FryHSrpcLqSnpyM3N5cNlWQAOL2P5d5778Ubb7yBYcOGYfny5Vi4cCG+//578DwvbLxMTU2FwWAQHnwoMpkMKpUKHo/Hp8AMHDgQLpcLjY2NQdlFKyCpuHnT2NiI2tpaDBgwoFuSn04UsNvtkMlk3ZqfvYdKAuh3QyWjAROXIElJScHs2bOxdOlSnH/++fjkk0+wePFi/O1vfxOapvx5MVRg6Kwt7/8mkUiQkZEBq9Ua8BBMAGhvb4fL5Tojfkx3pMjl8m7CwnEcOjs7YTabkZycLOy44HkeRqMR7e3twlDJnJycgGc+MX5eFBUV4de//jWWLl2KkpISvPzyy1i8eDG2bNkC4LQnnpeXB47j0NLS0m36sVwuFwSmp6eenJyM/Px8nDhxIqjBrm1tbVAqlWeMbWlubsb+/ftRWlrarYeN7k6hJfR0mgAtPfYeKslEJTRYKXKY6HQ6fPLJJ/j++++Rnp6Oa6+9FhdeeCHkcrnfkmWO42C1WoWEIL3xE0LQ0NCApKSkM8bk+ypFJoRg165dSElJ6Xbh0HCXTCbrlpj31RDJ8zwsFouwMY/O/2JVL4xgOHz4MFavXo19+/Zh8ODBmDt3LsaMGQMAfhsvqfdCS3gpFosFmzdvxogRI84I9foqRXY6naitrUVJSUm3DvvW1lbs3bsXRUVFqKqqEs5pXw2RP7ehktGAiYtItLS04OOPP8Z//vMf5OTk4Prrr8e5554rnLhA98ZLfwJjMpmg1+tRUlLS7eT2JS7t7e04cuQIxowZI/yMeiZ00yB9/54NkRKJRJhsDLChkgxxqK6uxurVq3Ho0CFUVlZi3rx5qKys9Nt4SftEegrMnj17YDabMXXq1G4POr7Epb6+HiaTCcOHDxfO346ODuzatQv5+fkYNWpUN6/EuyHSW1R+jvO/IgkTF5Gpr6/Hhx9+KHTK33DDDZg0aRIAnOHF0AoUGu+lv+NrNbEvcdm9ezfUajWGDx8O4H/CAgBarRZSqfSMhkiVSiWMv2dDJRmRgBCCnTt3Ys2aNThx4gTGjh2LuXPnoqKiwmfjJRUY7xu70WjEli1bzuie7ykuLpcLtbW1KCwsFMa36PV67Ny5Ezk5ORgzZgwkEskZDZH0Zz/XoZLRgPl9IlNaWoqHHnoIx48fx/r16/Hqq6+ivLwcM2fOxJgxY4Rkv0QiEUoerVYrbDab4MGkpaXBYDAgMzPTb6xXp9PBZrMJs5NoxzRwurJHIpHAZDLBZrNBpVIhLS0NDocD7e3t4HmeDZVkRAyJRIIJEyZg/Pjx+M9//oO1a9figQcewJQpUzBnzhxkZ2ejq6sLTqcTWVlZQiEKzb8oFAqkp6cjOzsbJ06c8Jmkp7S3twsl9MDpENyuXbug1WoxevRoocSY4zgolUoolcozRIX1akUG5rlEmIMHD2L9+vU4dOgQhgwZglmzZmH48OHdpizTUkiFQoHk5GTwPI+GhgakpqYK4797ei579+6FXC5HVVWVICw05MDzPAwGA3ieF2Yr0UnFNCzGRIURLTiOw/fff49169aho6MD5513HmbOnAmlUgmn04nU1FRkZGQIQx+pF9HV1YVt27Z1Gyrp7bkMGzYMBw4cQH5+PvLz82EwGLB9+3ZkZGRg3LhxwlQAiUQClUoFnufZUMkowsQlCtBFTRs2bMCJEydQVVWFWbNmCfX2VGBsNhuUSiWSkpLQ1dUFo9GIkpISyGSybuLicrlw4MABjBgxAqmpqejq6hIaHJ1OJywWi7AZz263s6GSjLjA4/HgH//4BzZs2ACDwYBLLrkEV1xxBeRyubDxEoAwr04ul2Pbtm3geR5TpkwB0F1ctFot9Ho9KisrYbVasX37dqSkpGD8+PFwu93weDyQy+WQSqXweDwghAjCxUQl8jBxiSKEEOzYsQMbNmxAY2Mjxo0bh5kzZ6KkpOQMgVGpVKivr0d6ejoyMzO7icvx48dBCMHIkSPR2dkJjuOQlpYmlDFTAWFDJRnxiMvlwt///nd8/PHHsNlsmDZtGi666CIkJycjPT1dKFNWqVQwGAzYuXMnJkyYAK1WK4jLxo0bIZVKkZOTg7S0NGzbtg1JSUkYO3as0Fcjk8mEfjM2VDL6MHGJATzP46effsKHH36ItrY2TJkyBddddx0KCwvhdrvhcDigUqmEcRYlJSWw2+2orq5GWVmZMBtJIpEIAuJ0OoUySuD0ZIHU1FQWT2bELXa7HV988QU+++wzeDwe/OIXv8AFF1yArKwsoalXrVZj27ZtkMvlmDhxoiAuH374IbKzs1FeXo5du3ZBoVBg9OjRAE4/xNHrgIlK7GDiEkNoLPqTTz5BZ2cnzjvvPFx77bXIyMgQZhx1dHQgIyMDcrkcO3bsELqIy8vL4XA4IJPJ4HQ6wfO8kJxMTU1ls78YCYPZbMZnn32GL7/8EhKJBBdeeCEuueQSIdlvNBpRXV2NSZMmob6+HhdeeCHefPNNjBkzBg0NDZBIJEK5sUQigUwmg1wuh1KpZFWQMYSJSxzgdrvxz3/+E59//jnMZjMuvvhiXH755dBoNGhsbMTrr7+O9evXw2w2IykpCbNnz8bixYuRlpYmhA/o+mE2+4uRqBgMBnz00Uf4+9//LgyOvfjii5GdnY0ff/wRH374IT7//HNYLBao1WpcccUVuPHGG3H22WcLYkL/MVGJPUxc4giHw4FvvvlGmDg7ceJEvPLKK6ivrz9jFEZJSQk+/vhjlJWVIS0tjc3+YvQbdDod1q9fj2+++QZJSUk499xz8fLLL6OxsfGM66C8vBwbN25EYWEhlEolq4KMI5i4xCFWqxV/+9vf8PTTT+PgwYM+f0cikWDJkiV47bXXomscgxElWlpasGbNGqxYsQJ1dXU+f0cikeD+++/Hyy+/HGXrGH3BxCVOIYQgIyPjjLHl3qSnp6Orq4slKxn9FkII0tPTYTab/f4Ouw7iEyYucQodkdEXVquVTS5m9FvYdZC4sKxXnNLbqlZKeno6y7Uw+jXsOkhcmLjEKRKJBPPnz/eboJTJZLjjjjtYKIDRr2HXQeLCwmJxTGdnJ6ZMmYLjx4+D4zjh5zKZDBUVFdiyZYswe4zB6K+w6yAxYZ5LHJOVlYUtW7bg/vvvF0ID6enpuP/++9kFxfjZwK6DxIR5LgkCHR1Od1EwGD9H2HWQODBxYTAYDIbosLAYg8FgMESHiQuDwWAwRIeJC4PBYDBEh4kLg8FgMESHiQuDwWAwRIeJC4PBYDBEh4kLg8FgMESHiQuDwWAwRIeJC4PBYDBEh4kLg8FgMESHiQuDwWAwRIeJC4PBYDBEh4kLg8FgMESHiQuDwWAwRIeJC4PBYDBEh4kLg8FgMESHiQuDwWAwROf/AeJTCanyg2zeAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 500x400 with 38 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"model = KAN(width=[2,[5,2],1], base_fun='identity', device=device)\n",
"model.get_act(dataset)\n",
"model.plot()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "4b39ad0c",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"| train_loss: 6.34e-02 | test_loss: 7.16e-02 | reg: 7.99e+00 | : 100%|█| 20/20 [00:04<00:00, 4.79it\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"saving model version 0.1\n"
]
}
],
"source": [
"model.fit(dataset, steps=20, lamb=0.01, lamb_coef=1.0);"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "4c0314b5",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 500x400 with 38 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"model.plot()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "2af1c553",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"saving model version 0.2\n"
]
}
],
"source": [
"model = model.prune()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "aac1fb1c",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 500x400 with 10 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"model.plot()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "97851f1f",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"| train_loss: 1.37e-07 | test_loss: 1.66e-07 | reg: 6.31e+00 | : 100%|█| 20/20 [00:02<00:00, 6.90it\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"saving model version 0.3\n"
]
}
],
"source": [
"model.fit(dataset, steps=20);"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "f27281df",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"fixing (0,0,0) with x, r2=0.9999999997931204, c=1\n",
"fixing (0,0,1) with 0\n",
"fixing (0,1,0) with 0\n",
"fixing (0,1,1) with x, r2=0.99999999995849, c=1\n",
"fixing (1,0,0) with x, r2=0.9999999918922519, c=1\n",
"saving model version 0.4\n"
]
}
],
"source": [
"model.auto_symbolic()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "fd45a429",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"| train_loss: 1.43e-16 | test_loss: 1.28e-16 | reg: 0.00e+00 | : 100%|█| 20/20 [00:00<00:00, 37.98it"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"saving model version 0.5\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"model.fit(dataset, steps=20);"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "ffb84f4c",
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$\\displaystyle x_{1} x_{2}$"
],
"text/plain": [
"x_1*x_2"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sf = model.symbolic_formula()[0][0]\n",
"nsimplify(ex_round(ex_round(sf, 3),3))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "900f7788",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.16"
}
},
"nbformat": 4,
"nbformat_minor": 5
}