From ee18846346103347586ecc1e0c4f14e8e5170a92 Mon Sep 17 00:00:00 2001 From: pirat Date: Fri, 16 Jun 2023 16:15:41 +0200 Subject: [PATCH] BT combined strategies example for https://github.com/pmorissette/bt/issues/415 --- README.md | 37 +- environment.yml | 14 + example.ipynb | 725 ++++++++++++++++++++++++++++++++++++++ src/interpreter.py | 119 +++++++ tests/test_interpreter.py | 99 ++++++ 5 files changed, 993 insertions(+), 1 deletion(-) create mode 100644 environment.yml create mode 100644 example.ipynb create mode 100644 src/interpreter.py create mode 100644 tests/test_interpreter.py diff --git a/README.md b/README.md index 2d0a59b..046361e 100644 --- a/README.md +++ b/README.md @@ -1 +1,36 @@ -# bt-composite-strategies \ No newline at end of file +# BT composite strategies + +This repository shows the effect of the issue https://github.com/pmorissette/bt/issues/415. +For more details see the `test_interpreter.py` unit test or use the Jupyter notebook `example.ipynb` + + +# Simple buy and hold strategy: + +We create a simple buy and hold strategy with the QQQ. +* Everything is fine. +* We have transactions. +* The backtest works fine. +* The portfolio gets rebalanced every day. + +# First level composite strategy +We create a combined strategy containing two buy and hold strategies of QQQ and SPY +* The strategy does not have a return, but some other statistics. +* It has sold everything on the 4th day and rebalancing is not propagated to the children. + +# Second level composite strategy +We create a combined strategy containing to combined strategies and one asset. +* The execution fails with +```shell +ZeroDivisionError: Could not update df876984-3be8-40c9-8847-e3b3c6af3cdc on 2023-05-17 00:00:00. Last value was 0.0 and net flows were 0. Currentvalue is 1000000.0. Therefore, we are dividing by zero to obtain the return for the period. +``` + +# How to get this working? + +```shell +git clone https://github.com/Pirat83/bt-composite-strategies.git +cd bt-composite-strategies/ +conda create --name bt-composite-strategies +conda env update +``` + +If you can contribute to the solution I would appreciate it very much. \ No newline at end of file diff --git a/environment.yml b/environment.yml new file mode 100644 index 0000000..effb8f4 --- /dev/null +++ b/environment.yml @@ -0,0 +1,14 @@ +name: bt-composite-strategies +channels: + - conda-forge + - defaults +dependencies: + - python>=3.10 + - jupyter + - pandas<2.0.0 + - pip + - pytest + + - pip: + - git+https://github.com/pmorissette/bt.git + - pytest-resource-path diff --git a/example.ipynb b/example.ipynb new file mode 100644 index 0000000..355bea2 --- /dev/null +++ b/example.ipynb @@ -0,0 +1,725 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "source": [ + "Let's import the necessary things" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 1, + "outputs": [], + "source": [ + "import bt\n", + "import pandas as pd\n", + "\n", + "from interpreter import BTInterpreter\n", + "from datetime import date, timedelta\n", + "\n", + "pd.set_option('display.max_columns', None)\n", + "pd.set_option('display.max_rows', None)" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-06-16T14:08:03.219460099Z", + "start_time": "2023-06-16T14:08:01.529884315Z" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "# Let's create a simple buy and hold strategy with one asset" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 2, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[*********************100%***********************] 1 of 1 completed\n" + ] + } + ], + "source": [ + "node: dict = {\n", + " 'id': 'df876984-3be8-40c9-8847-e3b3c6af3cdc',\n", + " 'node-type': 'asset',\n", + " 'ticker': 'QQQ'\n", + "}\n", + "\n", + "subject = BTInterpreter(node, date.today() - timedelta(weeks=4), date.today())\n", + "actual: bt.backtest.Result = subject.traverse()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-06-16T14:08:03.524660658Z", + "start_time": "2023-06-16T14:08:03.182877357Z" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "## Show stats, transactions, weights and security weights of the buy and hold strategy" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 3, + "outputs": [ + { + "data": { + "text/plain": " df876984-3be8-40c9-8847-e3b3c6af3cdc\nstart 2023-05-18 00:00:00\nend 2023-06-15 00:00:00\nrf 0.0\ntotal_return 0.096612\ncagr 2.330242\nmax_drawdown -0.017741\ncalmar 131.348931\nmtd 0.063996\nthree_month NaN\nsix_month NaN\nytd 0.096612\none_year NaN\nthree_year NaN\nfive_year NaN\nten_year NaN\nincep 2.330242\ndaily_sharpe 7.053351\ndaily_sortino 16.174643\ndaily_mean 1.240758\ndaily_vol 0.17591\ndaily_skew 0.014216\ndaily_kurt 0.03809\nbest_day 0.02555\nworst_day -0.016965\nmonthly_sharpe NaN\nmonthly_sortino NaN\nmonthly_mean 0.767954\nmonthly_vol NaN\nmonthly_skew NaN\nmonthly_kurt NaN\nbest_month 0.063996\nworst_month 0.063996\nyearly_sharpe NaN\nyearly_sortino NaN\nyearly_mean NaN\nyearly_vol NaN\nyearly_skew NaN\nyearly_kurt NaN\nbest_year NaN\nworst_year NaN\navg_drawdown -0.013519\navg_drawdown_days 3.0\navg_up_month 0.063996\navg_down_month NaN\nwin_year_perc NaN\ntwelve_month_win_perc NaN", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
df876984-3be8-40c9-8847-e3b3c6af3cdc
start2023-05-18 00:00:00
end2023-06-15 00:00:00
rf0.0
total_return0.096612
cagr2.330242
max_drawdown-0.017741
calmar131.348931
mtd0.063996
three_monthNaN
six_monthNaN
ytd0.096612
one_yearNaN
three_yearNaN
five_yearNaN
ten_yearNaN
incep2.330242
daily_sharpe7.053351
daily_sortino16.174643
daily_mean1.240758
daily_vol0.17591
daily_skew0.014216
daily_kurt0.03809
best_day0.02555
worst_day-0.016965
monthly_sharpeNaN
monthly_sortinoNaN
monthly_mean0.767954
monthly_volNaN
monthly_skewNaN
monthly_kurtNaN
best_month0.063996
worst_month0.063996
yearly_sharpeNaN
yearly_sortinoNaN
yearly_meanNaN
yearly_volNaN
yearly_skewNaN
yearly_kurtNaN
best_yearNaN
worst_yearNaN
avg_drawdown-0.013519
avg_drawdown_days3.0
avg_up_month0.063996
avg_down_monthNaN
win_year_percNaN
twelve_month_win_percNaN
\n
" + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "actual.stats" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-06-16T14:08:03.525327964Z", + "start_time": "2023-06-16T14:08:03.506428667Z" + } + } + }, + { + "cell_type": "code", + "execution_count": 4, + "outputs": [ + { + "data": { + "text/plain": " price quantity\nDate Security \n2023-05-22 QQQ 337.640015 2961.734263", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
pricequantity
DateSecurity
2023-05-22QQQ337.6400152961.734263
\n
" + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "actual.get_transactions()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-06-16T14:08:03.605003987Z", + "start_time": "2023-06-16T14:08:03.520064283Z" + } + } + }, + { + "cell_type": "code", + "execution_count": 5, + "outputs": [ + { + "data": { + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAABNsAAAGlCAYAAADDBfDHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB8OklEQVR4nO3deVxUZfvH8e8AsqngirggLrkvuKWimZYLWmmbuWRS2VNZWhYtlpam9WhlWVmaLWb+Krd8Ms3MDbXcMxXcEBVFzX1JUFRA5v79MTGJgGIyHpbP+/Wa1zlztrnOORcjXN7nvm3GGCMAAAAAAAAA183N6gAAAAAAAACAgoJiGwAAAAAAAJBLKLYBAAAAAAAAuYRiGwAAAAAAAJBLKLYBAAAAAAAAuYRiGwAAAAAAAJBLKLYBAAAAAAAAucTD6gDyKrvdrkOHDql48eKy2WxWhwMAAAAAAAALGWN05swZVahQQW5u2bdfo9iWjUOHDikoKMjqMAAAAAAAAJCHHDhwQJUqVcp2PcW2bBQvXlyS4wL6+flZHA0AAAAAAACslJiYqKCgIGfNKDsU27KR/uion58fxTYAAAAAAABI0lW7G2OABAAAAAAAACCXUGwDAAAAAAAAcgnFNgAAAAAAACCXUGwDAAAAAAAAcgnFNgAAAAAAACCXUGwDAAAAAAAAcgnFNgAAAAAAACCXUGwDAAAAAAAAcgnFNgAAAAAAACCX5Iti22+//aauXbuqQoUKstls+vHHH6+6z/Lly9WkSRN5eXnppptu0tdff+3yOAEAAAAAAFC45YtiW1JSkkJCQjR+/Pgcbb93717deeeduu222xQVFaXnnntO//nPf7Rw4UIXRwoAAAAAAIDCzMPqAHKiS5cu6tKlS463nzhxoqpWrar3339fklSnTh2tXLlSH3zwgcLCwlwVZp5mjNH51DSrw0AB5bZnqdxO7LI6DAAAAABAHmKKBcgzpLtsNpvVodxQ+aLYdq3WrFmjDh06ZFgWFham5557Ltt9kpOTlZyc7HyfmJjoqvAscT41TXWH0bIPua+Wbb8Wer1idRgAAAAAgDxmo/0m1a57r3w9C2T5KVsF8myPHDmicuXKZVhWrlw5JSYm6vz58/Lx8cm0z+jRozVixIgbFSJQYNzvvkKSFGcvr62mqsXRAAAAAADyinhTTrWtDsICBbLY9m+8+uqrioiIcL5PTExUUFCQhRHlLp8i7to+snA+QgsXsl+Uz8fPS0lSpR5jVL5mzh/3BgAAAAAUfD5F3K0O4YYrkMW2wMBAHT16NMOyo0ePys/PL8tWbZLk5eUlLy+vGxGeJWw2W6FrtokbYPdyKemo5FtaXrXDJA9yDAAAAABQuOWL0UivVWhoqCIjIzMsW7x4sUJDQy2KCCigoqc7pvW7Sx6e1sYCAAAAAEAekC+KbWfPnlVUVJSioqIkSXv37lVUVJT2798vyfEIaHh4uHP7/v37a8+ePXr55Ze1Y8cOTZgwQTNnztTzzz9vRfhAwXQhUYqZ55gP6WVtLAAAAAAA5BH5otj2xx9/qHHjxmrcuLEkKSIiQo0bN9awYcMkSYcPH3YW3iSpatWq+vnnn7V48WKFhITo/fff15dffqmwMPosA3JNzFzp4nmpTE2pQmOrowEAAAAAIE+wGWOM1UHkRYmJifL391dCQoL8/PysDgfIe76+S4pfIbUfJrV5wepoAAAAAABwqZzWivJFyzYAeczp/Y5Cm2xSgx5WRwMAAAAAQJ5BsQ3Atds80zGt2kYqEWRtLAAAAAAA5CEU2wBcG2P+GYW0IQMjAAAAAABwKYptAK7NwY3SyV2Sh49Ut5vV0QAAAAAAkKdQbANwbTb/3aqtTlfJq7i1sQAAAAAAkMdQbAOQcxdTpC2zHPMhPEIKAAAAAMDlKLYByLndi6Xzp6RigVK1dlZHAwAAAABAnkOxDUDORU9zTBs+ILm5WxsLAAAAAAB5EMU2ADlz7pQUu8AxH9Lb2lgAAAAAAMijKLYByJltsyV7qhTYQCpXz+poAAAAAADIkyi2AciZ6L9HIaVVGwAAAAAA2aLYBuDqTsZJf/4u2dyk+t2tjgYAAAAAgDyLYhuAq0tv1Va9vVS8nLWxAAAAAACQh1FsA3Bldru0Of0R0l7WxgIAAAAAQB5HsQ3AlR1YK53eL3n5SbXvtDoaAAAAAADyNIptAK4seppjWvduqYiPtbEAAAAAAJDHUWwDkL3U89K2Hx3zPEIKAAAAAMBVUWwDkL3Y+VJyouRfWarcyupoAAAAAADI8yi2Ache9AzHNKSn5MbXBQAAAAAAV8NfzwCydvaYtHuJY74hj5ACAAAAAJATFNsAZG3LLMmkSRWbSWVusjoaAAAAAADyBYptALKWPgopAyMAAAAAAJBjFNsAZHZ0u3Rks+RWRKp/v9XRAAAAAACQb1BsA5DZ5umOac0wybeUtbEAAAAAAJCPUGwDkJE9Tdo80zEf0tvaWAAAAAAAyGcotgHIaO+v0pnDkk9JqUYnq6MBAAAAACBfodgGIKPovx8hrX+/5OFpbSwAAAAAAOQzFNsA/CP5rBTzk2OeR0gBAAAAALhmFNsA/CPmJyn1nFT6JqliU6ujAQAAAAAg36HYBuAf0dMc04a9JJvN2lgAAAAAAMiHKLYBcEj4U9r7m2O+YQ9rYwEAAAAAIJ+i2AbAYfNMSUYKvkUqGWx1NAAAAAAA5EsU2wBIxkibZzjmQ3pZGwsAAAAAAPkYxTYA0uEo6fgOycNbqnu31dEAAAAAAJBvUWwDIEVPd0xr3yl5+1kbCwAAAAAA+RjFNqCwS0uVtsxyzIf0tjYWAAAAAADyOYptQGG3O1I6d0IqGiBVu83qaAAAAAAAyNcotgGFXfQ0x7RhD8ndw9pYAAAAAADI5yi2AYXZ+b+k2F8c8w17WhsLAAAAAAAFAMU2oDDb9qOUliwF1JMCG1gdDQAAAAAA+R7FNqAwSx+FNKSXZLNZGwsAAAAAAAUAxTagsDq1RzqwVrK5SQ0esDoaAAAAAAAKBIptQGG1eaZjWu02ya+8tbEAAAAAAFBAUGwDCiNj/hmFNKSXtbEAAAAAAFCAUGwDCqMD66S/4iXPYlLtO62OBgAAAACAAoNiG1AYpbdqq3u35FnU2lgAAAAAAChAKLYBhU3qBWnbbMc8j5ACAAAAAJCrKLYBhc3OBdKFBMmvkhR8i9XRAAAAAABQoFBsAwqb6OmOacMekhtfAQAAAAAA5Cb+0gYKk6QT0u7FjnkeIQUAAAAAINdRbAMKk63/k+wXpQpNpLK1rI4GAAAAAIACJ98U28aPH68qVarI29tbLVq00O+//37F7T/88EPVqlVLPj4+CgoK0vPPP68LFy7coGiBPCp9FNKQ3tbGAQAAAABAAZUvim0zZsxQRESEhg8fro0bNyokJERhYWE6duxYlttPnTpVr7zyioYPH66YmBhNmjRJM2bM0JAhQ25w5EAecmyHdGiT5OYh1b/f6mgAAAAAACiQ8kWxbezYsXr88cf16KOPqm7dupo4caJ8fX311VdfZbn96tWr1bp1az344IOqUqWKOnXqpN69e1+xNVxycrISExMzvIACZfPfAyPU6CQVLW1tLAAAAAAAFFB5vtiWkpKiDRs2qEOHDs5lbm5u6tChg9asWZPlPq1atdKGDRucxbU9e/Zo/vz5uuOOO7L9nNGjR8vf39/5CgoKyt0TAaxkt0ubZzrmGRgBAAAAAACX8bA6gKs5ceKE0tLSVK5cuQzLy5Urpx07dmS5z4MPPqgTJ07olltukTFGFy9eVP/+/a/4GOmrr76qiIgI5/vExEQKbig44ldIiQclb3+pZmerowEAAAAAoMDK8y3b/o3ly5dr1KhRmjBhgjZu3KgffvhBP//8s958881s9/Hy8pKfn1+GF1BgRP/9CGm9+yQPL2tjAQAAAACgAMvzLdvKlCkjd3d3HT16NMPyo0ePKjAwMMt9Xn/9dfXt21f/+c9/JEkNGjRQUlKSnnjiCQ0dOlRubgWyxghkLSVJ2j7HMc8opAAAAAAAuFSerzp5enqqadOmioyMdC6z2+2KjIxUaGholvucO3cuU0HN3d1dkmSMcV2wQF4UM09KTZJKVpWCmlsdDQAAAAAABVqeb9kmSREREXr44YfVrFkzNW/eXB9++KGSkpL06KOPSpLCw8NVsWJFjR49WpLUtWtXjR07Vo0bN1aLFi20e/duvf766+ratauz6AYUGumjkIb0lmw2a2MBAAAAAKCAyxfFtp49e+r48eMaNmyYjhw5okaNGmnBggXOQRP279+foSXba6+9JpvNptdee00HDx5U2bJl1bVrV/33v/+16hQAayQekvYsd8w37GFpKAAAAAAAFAY2w3OVWUpMTJS/v78SEhIYLAH516qPpMXDpMqhUr8FVkcDAAAAAEC+ldNaUZ7vsw3Av2SMFDXNMR/Sy9pYAAAAAAAoJCi2AQXVkc3S8RjJ3Uuqe4/V0QAAAAAAUChQbAMKqugZjmntOySfEpaGAgAAAABAYUGxDSiI0i5KW2Y65hvyCCkAAAAAADcKxTagIIpbKiUdl3zLSDe1tzoaAAAAAAAKDYptQEEU/ffACA0ekNyLWBsLAAAAAACFCMU2oKC5kCDFznfMMwopAAAAAAA3FMU2oKDZPke6eEEqW0cqH2J1NAAAAAAAFCoU24CCJnq6YxrSU7LZrI0FAAAAAIBChmIbUJD8FS/tWyXJJjXoYXU0AAAAAAAUOhTbgIJk80zHtFpbyb+itbEAAAAAAFAIUWwDCgpjLnmEtLe1sQAAAAAAUEhRbAMKij//kE7FSUV8pdp3WR0NAAAAAACFEsU2oKCInuaY1ukmeRWzNhYAAAAAAAopim1AQXAxWdr6P8d8SC9rYwEAAAAAoBCj2AYUBDsXShdOS8UrSFVvtToaAAAAAAAKLYptQEGweYZj2rCH5OZubSwAAAAAABRiFNuA/C7ppKNlm8QjpAAAAAAAWIxiG5DfbftBsqdK5UOkgDpWRwMAAAAAQKFGsQ3I79JHIQ3pbW0cAAAAAACAYhuQr53YJR3cINncpfrdrY4GAAAAAIBCj2IbkJ9FT3dMb+ogFStrbSwAAAAAAIBiG5Bv2e3/jELKwAgAAAAAAOQJFNuA/GrfKinhgOTlL9XqYnU0AAAAAABAFNuA/Cv9EdJ690hFfCwNBQAAAAAAOFBsA/KjlHPS9jmOeUYhBQAAAAAgz6DYBuRHsfOllDNSiWCpckurowEAAAAAAH+j2AbkR9HTHNOQXpLNZm0sAAAAAADAiWIbkN+cOSLFLXXMN+xpbSwAAAAAACADim1AfrNllmTsUlALqXR1q6MBAAAAAACXoNgG5Dfpo5DSqg0AAAAAgDyHYhuQnxzZIh3dIrl7SvXutToaAAAAAABwGYptQH6S3qqtZmfJt5S1sQAAAAAAgEwotgH5RdpFacv3jvmQ3tbGAgAAAAAAskSxDcgv9i6Xzh6VfEtLN3WwOhoAAAAAAJAFim1AfpH+CGn9+yUPT2tjAQAAAAAAWaLYBuQHFxKlmHmO+ZBe1sYCAAAAAACyRbENyA9i5koXz0tlakoVmlgdDQAAAAAAyAbFNiA/SH+ENKSXZLNZGwsAAAAAAMgWxTYgrzu9X4pf4Zhv0MPaWAAAAAAAwBVRbAPyus0zHdMqbaQSQdbGAgAAAAAArohiG5CXGXPJI6S9rY0FAAAAAABcFcU2IC87uFE6uUvy8JHqdrM6GgAAAAAAcBUU24C8bPPfrdrqdJW8ilsbCwAAAAAAuCqKbUBedTFF2jLLMR/S09pYAAAAAABAjlBsA/Kq3Yul86ekYoFS1XZWRwMAAAAAAHKAYhuQV0VPc0wbPiC5e1gbCwAAAAAAyBGKbUBedO6UFLvAMc8opAAAAAAA5BsU24C8aNtsyZ4qlWsglatndTQAAAAAACCHKLYBeVH036OQhvSyNg4AAAAAAHBNKLYBec3JOOnP3yWbm9TgAaujAQAAAAAA1yDfFNvGjx+vKlWqyNvbWy1atNDvv/9+xe1Pnz6tAQMGqHz58vLy8lLNmjU1f/78GxQtcB3SW7VVby8VL2dtLAAAAAAA4JrkiyEOZ8yYoYiICE2cOFEtWrTQhx9+qLCwMMXGxiogICDT9ikpKerYsaMCAgI0a9YsVaxYUfv27VOJEiVufPDAtbDbpc08QgoAAAAAQH5lM8YYq4O4mhYtWujmm2/WJ598Ikmy2+0KCgrSM888o1deeSXT9hMnTtSYMWO0Y8cOFSlSJEefkZycrOTkZOf7xMREBQUFKSEhQX5+frlzIsDV7FstTe4ieRaXXtolFfGxOiIAAAAAACBHrcjf3/+qtaI8/xhpSkqKNmzYoA4dOjiXubm5qUOHDlqzZk2W+8ydO1ehoaEaMGCAypUrp/r162vUqFFKS0vL9nNGjx4tf39/5ysoKCjXzwW4quhpjmm9uym0AQAAAACQD+X5YtuJEyeUlpamcuUy9l1Vrlw5HTlyJMt99uzZo1mzZiktLU3z58/X66+/rvfff19vvfVWtp/z6quvKiEhwfk6cOBArp4HcFWp56VtPzrmQ3pbGgoAAAAAAPh38kWfbdfKbrcrICBAn3/+udzd3dW0aVMdPHhQY8aM0fDhw7Pcx8vLS15eXjc4UuASsfOl5ETJv7JUuZXV0QAAAAAAgH8hzxfbypQpI3d3dx09ejTD8qNHjyowMDDLfcqXL68iRYrI3d3duaxOnTo6cuSIUlJS5Onp6dKYgX8leoZj2rCH5JbnG50CAAAAAIAs5Pm/6D09PdW0aVNFRkY6l9ntdkVGRio0NDTLfVq3bq3du3fLbrc7l+3cuVPly5en0Ia86ewxafcSxzyjkAIAAAAAkG/l+WKbJEVEROiLL77QlClTFBMTo6eeekpJSUl69NFHJUnh4eF69dVXnds/9dRTOnXqlAYNGqSdO3fq559/1qhRozRgwACrTgG4si2zJJMmVWwmlalhdTQAAAAAAOBfyvOPkUpSz549dfz4cQ0bNkxHjhxRo0aNtGDBAuegCfv375fbJY/dBQUFaeHChXr++efVsGFDVaxYUYMGDdLgwYOtOgXgytJHIaVVGwAAAAAA+ZrNGGOsDiIvSkxMlL+/vxISEuTn52d1OCjIjm6XPg2V3IpIL+6UfEtZHREAAAAAALhMTmtF+eIxUqBA2zzdMa0ZRqENAAAAAIB8jmIbYCV7mrR5pmOeR0gBAAAAAMj3KLYBVtr7q3TmsORTUqrRyepoAAAAAADAdaLYBlgp+u9HSOvfL3l4WRsLAAAAAAC4bhTbAKskn5VifnLMN+QRUgAAAAAACgKKbYBVYn6SUs9JpapLlZpZHQ0AAAAAAMgFFNsAq0RPc0xDeks2m7WxAAAAAACAXEGxDbBCwp/S3t8c8w17WBsLAAAAAADINRTbACtsninJSMG3SCWDrY4GAAAAAADkEoptwI1mjLR5hmM+pKe1sQAAAAAAgFxFsQ240Q5HScd3SB7eUt27rY4GAAAAAADkIoptwI0WPd0xrX2n5O1vbSwAAAAAACBXUWwDbqS0VGnLLMd8SG9rYwEAAAAAALmOYhtwI+2OlM6dkIoGSNVuszoaAAAAAACQyyi2ATdS9DTHtMEDkruHtbEAAAAAAIBcR7ENuFHO/yXF/uKYD+llbSwAAAAAAMAlKLYBN8q2H6W0ZCmgnhTYwOpoAAAAAACAC1BsA26U9FFIQ3pJNpu1sQAAAAAAAJeg2AbcCKf2SAfWSjY3R39tAAAAAACgQKLYBtwIm2c6ptXaSX7lLQ0FAAAAAAC4DsU2wNWM+WcU0pDe1sYCAAAAAABcimIb4GoH1kl/xUuexaTad1odDQAAAAAAcCGKbYCrpbdqq9NN8ixqbSwAAAAAAMClKLYBrpR6Qdo22zEf0svaWAAAAAAAgMtRbANcaecC6UKC5FdJqtLG6mgAAAAAAICLUWwDXCl6umPasIfkxo8bAAAAAAAFHX/9A66SdELavdgxzyOkAAAAAAAUChTbAFfZ+j/JflGq0FgqW8vqaAAAAAAAwA1AsQ1wlfRRSEN6WxsHAAAAAAC4YSi2Aa5wbId0aJPk5iHVv9/qaAAAAAAAwA1CsQ1whc1/D4xQo5NUtIy1sQAAAAAAgBuGYhuQ2+x2afNMx3zDntbGAgAAAAAAbiiKbUBui18hJR6UvP2lmp2tjgYAAAAAANxAFNuA3Bb99yOk9e6TinhbGwsAAAAAALihKLYBuSklSdo+xzHPKKQAAAAAABQ6FNuA3BQzT0pNkkpWlYKaWx0NAAAAAAC4wSi2AbkpfRTSkF6SzWZtLAAAAAAA4Iaj2AbklsRD0p7ljnlGIQUAAAAAoFCi2Abkli3fS8YuVQ6VSlW1OhoAAAAAAGABim1AbjBGiprmmA/pZW0sAAAAAADAMhTbgNxwZLN0PEZy95Lq3mN1NAAAAAAAwCIU24DcED3DMa3VRfIpYWkoAAAAAADAOhTbgOuVdlHaMtMxH9Lb2lgAAAAAAIClKLYB1ytuqZR0XPItI93U3upoAAAAAACAhSi2Adcr+u+BERo8ILkXsTYWAAAAAABgKYptwPW4kCDFznfMh/S0NhYAAAAAAGA5im3A9dg+R7p4QSpbWyrfyOpoAAAAAACAxSi2AdcjerpjGtJLstmsjQUAAAAAAFiOYhvwb/0VL+1bJckmNehhdTQAAAAAACAPoNgG/FubZzqmVW+V/CtaGwsAAAAAAMgT8k2xbfz48apSpYq8vb3VokUL/f777znab/r06bLZbLrnnntcGyAKF2MueYS0t7WxAAAAAACAPCNfFNtmzJihiIgIDR8+XBs3blRISIjCwsJ07NixK+4XHx+vF198UW3atLlBkaLQ+PMP6VScVMRXqtPV6mgAAAAAAEAekS+KbWPHjtXjjz+uRx99VHXr1tXEiRPl6+urr776Ktt90tLS1KdPH40YMULVqlW7gdGiUIie5pjW6SZ5FbM2FgAAAAAAkGfk+WJbSkqKNmzYoA4dOjiXubm5qUOHDlqzZk22+40cOVIBAQF67LHHcvQ5ycnJSkxMzPACsnQxWdr6P8d8SC9rYwEAAAAAAHlKni+2nThxQmlpaSpXrlyG5eXKldORI0ey3GflypWaNGmSvvjiixx/zujRo+Xv7+98BQUFXVfcKMB2LpQunJaKl3cMjgAAAAAAAPC3PF9su1ZnzpxR37599cUXX6hMmTI53u/VV19VQkKC83XgwAEXRol8bfMMx7RhD8nN3dpYAAAAAABAnuJhdQBXU6ZMGbm7u+vo0aMZlh89elSBgYGZto+Li1N8fLy6dv2n03q73S5J8vDwUGxsrKpXr55pPy8vL3l5eeVy9Chwkk46WrZJUkMeIQUAAAAAABnl+ZZtnp6eatq0qSIjI53L7Ha7IiMjFRoammn72rVra8uWLYqKinK+unXrpttuu01RUVE8Horrs+0HyZ4qlQ+RytW1OhoAAAAAAJDH5PmWbZIUERGhhx9+WM2aNVPz5s314YcfKikpSY8++qgkKTw8XBUrVtTo0aPl7e2t+vXrZ9i/RIkSkpRpOXDN0kchpVUbAAAAAADIQr4otvXs2VPHjx/XsGHDdOTIETVq1EgLFixwDpqwf/9+ubnl+UZ6yO9O7JIObpBs7lKD7lZHAwAAAAAA8iCbMcZYHURelJiYKH9/fyUkJMjPz8/qcJAXRL4prXhPqhEm9ZlpdTQAAAAAAOAGymmtiOZgQE7Y7f+MQhrCI6QAAAAAACBrFNuAnNi3Sko4IHn5S7W6WB0NAAAAAADIoyi2ATkRPd0xrXe3VMTH2lgAAAAAAECeRbENuJqUc9L2OY75kN7WxgIAAAAAAPI0im3A1cTOl1LOSCWCpaCWVkcDAAAAAADyMIptwNVET3NMQ3pJbvzIAAAAAACA7FE5AK7kzBEpbqljvmFPa2MBAAAAAAB5HsU24Eq2zJKMXarUXCpd3epoAAAAAABAHkexDbiS9FFIQ3pZGwcAAAAAAMgXKLYB2TmyRTq6RXL3lOrda3U0AAAAAAAgH6DYBmQnvVVbzc6SbylrYwEAAAAAAPkCxTYgK2kXpS3fO+Z5hBQAAAAAAOQQxTYgK3uXS2ePSj6lpJs6Wh0NAAAAAADIJyi2AVlJf4S0QXfJw9PaWAAAAAAAQL5BsQ243IVEKWaeY55HSAEAAAAAwDWg2AZcLmaudPG8VLqGVKGJ1dEAAAAAAIB8hGIbcLn0R0hDekk2m7WxAAAAAACAfIViG3Cp0/ul+BWO+YY9rY0FAAAAAADkOxTbgEttnumYVmkjlQiyNhYAAAAAAJDvUGwD0hlzySOkva2NBQAAAAAA5EsU24B0BzdKJ3dJHj5S3W5WRwMAAAAAAPIhim1Aus1/t2qrc5fkVdzaWAAAAAAAQL5EsQ2QpIsp0pZZjvmQXtbGAgAAAAAA8i2KbYAk7V4snT8lFQuUqrazOhoAAAAAAJBPUWwDJCl6mmPaoLvk7mFtLAAAAAAAIN+i2AacOyXFLnDMMwopAAAAAAC4DhTbgG2zJXuqVK6BFFjf6mgAAAAAAEA+RrENiP57FFIGRgAAAAAAANeJYhsKt5Nx0p+/SzY3qcEDVkcDAAAAAADyOYptKNzSW7VVv10qXs7aWAAAAAAAQL5HsQ2Fl90ubU5/hJSBEQAAAAAAwPWj2IbC68Ba6fR+ybO4VOsOq6MBAAAAAAAFAMU2FF7R0xzTendLnr7WxgIAAAAAAAoEim0onFLPS9t+dMw3ZBRSAAAAAACQOyi2oXCKnS8lJ0r+QVJwa6ujAQAAAAAABQTFNhRO0TMc04Y9JTd+DAAAAAAAQO6gyoDC5+wxafcSx3wIj5ACAAAAAIDcQ7ENhc+WWZJJkyo2k8rUsDoaAAAAAABQgFBsQ+GTPgoprdoAAAAAAEAuo9iGwuXodunIZsmtiFTvPqujAQAAAAAABQzFNhQum6c7pjXDpKKlrY0FAAAAAAAUOBTbUHjY06TNMx3zPEIKAAAAAABcgGIbCo+9v0pnDkveJaQanayOBgAAAAAAFEAU21B4RP/9CGn9+yUPL2tjAQAAAAAABRLFNhQOyWelmJ8c8yG9rY0FAAAAAAAUWBTbUDjE/CSlnpNKVZcqNbM6GgAAAAAAUEBRbEPhED3NMQ3pLdls1sYCAAAAAAAKLIptKPgS/pT2/uaYb9jD2lgAAAAAAECBRrENBd/mmZKMFNxaKhlsdTQAAAAAAKAAo9iGgs0YafMMx3xIL2tjAQAAAAAABR7FNhRsh6Ok4zskD2+p7t1WRwMAAAAAAAq4fFNsGz9+vKpUqSJvb2+1aNFCv//+e7bbfvHFF2rTpo1KliypkiVLqkOHDlfcHgVY9HTHtNYdkre/tbEAAAAAAIACL18U22bMmKGIiAgNHz5cGzduVEhIiMLCwnTs2LEst1++fLl69+6tZcuWac2aNQoKClKnTp108ODBGxw5LJWWKm2Z5ZgP6W1tLAAAAAAAoFCwGWOM1UFcTYsWLXTzzTfrk08+kSTZ7XYFBQXpmWee0SuvvHLV/dPS0lSyZEl98sknCg8Pz9FnJiYmyt/fXwkJCfLz87uu+GGR2AXStJ5S0bJSxA7J3cPqiAAAAAAAQD6V01pRnm/ZlpKSog0bNqhDhw7OZW5uburQoYPWrFmTo2OcO3dOqampKlWqVLbbJCcnKzExMcML+Vz0NMe0QQ8KbQAAAAAA4IbI88W2EydOKC0tTeXKlcuwvFy5cjpy5EiOjjF48GBVqFAhQ8HucqNHj5a/v7/zFRQUdF1xw2Ln/5Jif3HMMwopAAAAAAC4QfJ8se16vf3225o+fbpmz54tb2/vbLd79dVXlZCQ4HwdOHDgBkaJXLftRyktWQqoKwU2sDoaAAAAAABQSOT5Z+vKlCkjd3d3HT16NMPyo0ePKjAw8Ir7vvfee3r77be1ZMkSNWzY8Irbenl5ycvL67rjRR6RPgppSC/JZrM2FgAAAAAAUGjk+ZZtnp6eatq0qSIjI53L7Ha7IiMjFRoamu1+7777rt58800tWLBAzZo1uxGhIq84tUc6sFayuTn6awMAAAAAALhB8nzLNkmKiIjQww8/rGbNmql58+b68MMPlZSUpEcffVSSFB4erooVK2r06NGSpHfeeUfDhg3T1KlTVaVKFWffbsWKFVOxYsUsOw/cIJtnOqbV2kl+5S0NBQAAAAAAFC75otjWs2dPHT9+XMOGDdORI0fUqFEjLViwwDlowv79++Xm9k8jvU8//VQpKSnq3r17huMMHz5cb7zxxo0MHTeaMf+MQtqQgREAAAAAAMCNZTPGGKuDyIsSExPl7++vhIQE+fn5WR0Ocmr/WumrMKlIUemlXZJnUasjAgAAAAAABUBOa0V5vs824Jqkt2qrezeFNgAAAAAAcMNRbEPBkXpB2jbbMR/CI6QAAAAAAODGo9iGgmPnAulCguRXSarSxupoAAAAAABAIUSxDQVH9HTHtOEDkhupDQAAAAAAbjwqEigYkk5Iuxc75hmFFAAAAAAAWIRiGwqGrf+T7BelCo2lgNpWRwMAAAAAAAopim0oGNJHIQ3pbW0cAAAAAACgUKPYhvzv2A7p0CbJzUOqf7/V0QAAAAAAgEKMYhvyv81/D4xwU0epaBlrYwEAAAAAAIUaxTbkb3a7tHmmYz6EgREAAAAAAIC1KLYhf4tfISUelLz9pZqdrY4GAAAAAAAUchTbkL9F//0Iab37pCLe1sYCAAAAAAAKPYptyL9SkqTtcxzzPEIKAAAAAADyAIptyL9i5kmpSVLJKlJQC6ujAQAAAAAAoNiGfCx9FNKQ3pLNZm0sAAAAAAAAotiG/CrxkLRnuWO+YU9LQwEAAAAAAEjnYXUAwL+y5XvJ2KWgllKpqlZHAwAAgAIuLS1NqampVocBAHChIkWKyN3d/bqPQ7EN+Y8xUtQ0xzwDIwAAAMCFjDE6cuSITp8+bXUoAIAboESJEgoMDJTtOrqrotiG/OfIZul4jOTuJdW7x+poAAAAUIClF9oCAgLk6+t7XX98AQDyLmOMzp07p2PHjkmSypcv/6+PRbEN+U/0DMe0VhfJp6S1sQAAAKDASktLcxbaSpcubXU4AAAX8/HxkSQdO3ZMAQEB//qRUgZIQP6SdlHaMtMxH9Lb2lgAAABQoKX30ebr62txJACAGyX9O/96+umk2Ib8JW6plHRc8i0j3dTe6mgAAABQCPDoKAAUHrnxnU+xDflL9N8DIzToLrkXsTYWAAAAAACAy1BsQ/5xIUGKne+YZxRSAAAAAACQB1FsQ/6xfY508YJUtrZUvpHV0QAAAAD5Srt27fTcc89Jks6dO6f7779ffn5+stlsOn36tKWx5SXLly/nmhRiVapU0Ycffmh1GDmyY8cOtWzZUt7e3mrUqJHLPufS7w7kDMU25B/R0x3Thj0l+s0AAAAA/rUpU6ZoxYoVWr16tQ4fPix/f3+dPXtWAwcOVKVKleTj46O6detq4sSJzn3i4+Nls9myfH3//fcZjv/111+rYcOG8vb2VkBAgAYMGJBh/cyZM9WoUSP5+voqODhYY8aMyRTjd999p5CQEPn6+qp8+fLq16+fTp48meX5TJ8+XTabTffcc89Vz/3JJ59U9erV5ePjo7Jly+ruu+/Wjh07cnDVrs3VrufVJCcnq1GjRrLZbIqKisqwbvPmzWrTpo28vb0VFBSkd99995pii4uL07333quyZcvKz89PPXr00NGjR6+63/r169W+fXuVKFFCJUuWVFhYmKKjozNss3DhQrVs2VLFixdX2bJldf/99ys+Pj7L461atUoeHh6ZCkVVqlTJMs8uz6Nr9cMPP6hZs2YqUaKEihYtqkaNGumbb7655uPkRg6dPn1aAwYMUPny5eXl5aWaNWtq/vz513SM4cOHq2jRooqNjVVkZKQkqVu3bqpcubK8vb1Vvnx59e3bV4cOHbqm4+L6UWxD/vBXvLRvlSSb1LCH1dEAAAAA+VpcXJzq1Kmj+vXrKzAwUDabTREREVqwYIG+/fZbxcTE6LnnntPAgQM1d+5cSVJQUJAOHz6c4TVixAgVK1ZMXbp0cR577NixGjp0qF555RVt27ZNS5YsUVhYmHP9L7/8oj59+qh///7aunWrJkyYoA8++ECffPKJc5tVq1YpPDxcjz32mLZt26bvv/9ev//+ux5//PFM5xIfH68XX3xRbdq0ydG5N23aVJMnT1ZMTIwWLlwoY4w6deqktLS0f3s5s3S163k1L7/8sipUqJBpeWJiojp16qTg4GBt2LBBY8aM0RtvvKHPP/88R8dNSkpSp06dZLPZtHTpUq1atUopKSnq2rWr7HZ7tvudPXtWnTt3VuXKlbVu3TqtXLlSxYsXV1hYmHPUxr179+ruu+/W7bffrqioKC1cuFAnTpzQfffdl+l4p0+fVnh4uNq3zzzw3fr16zPk2eLFiyVJDzzwQI7OMTulSpXS0KFDtWbNGm3evFmPPvqoHn30US1cuPCajnO9OZSSkqKOHTsqPj5es2bNUmxsrL744gtVrFjxmuKIi4vTLbfcouDgYJUuXVqSdNttt2nmzJmKjY3V//73P8XFxal79+7XdFzkAoMsJSQkGEkmISHB6lBgjDHL3zFmuJ8xX3e1OhIAAAAUEufPnzfbt28358+fN8YYY7fbTVJyqiUvu91+TbGfPXvW9O3b1xQtWtQEBgaa9957z7Rt29YMGjTItG3b1khyvtq2bWuMMaZevXpm5MiRGY7TpEkTM3To0Gw/p1GjRqZfv37O96dOnTI+Pj5myZIl2e7Tu3dv07179wzLxo0bZypVquQ8zzFjxphq1apl2qZixYoZll28eNG0atXKfPnll+bhhx82d999d7afm53o6GgjyezevdsYY8yyZcuMJDNv3jzToEED4+XlZVq0aGG2bNmSYb8VK1aYW265xXh7e5tKlSqZZ555xpw9e9a5/t9cz3Tz5883tWvXNtu2bTOSzKZNm5zrJkyYYEqWLGmSk5OdywYPHmxq1aqV4RiTJk0ydevWNZ6eniYwMNAMGDDAGGPMwoULjZubW4a/dU+fPm1sNptZvHhxtjGtX7/eSDL79+93Ltu8ebORZHbt2mWMMeb77783Hh4eJi0tzbnN3Llzjc1mMykpKRmO17NnT/Paa6+Z4cOHm5CQkCtej0GDBpnq1atf9edg//795oEHHjD+/v6mZMmSplu3bmbv3r1X3Kdx48bmtddec74PDg42I0eONL169TK+vr6mQoUK5pNPPrniMS7PIWOM2bp1q7nzzjtN8eLFTbFixcwtt9ziXP/pp5+aatWqZboml/rll19M69atjb+/vylVqpS58847Mxz/0p9hSWb48OFZHmfOnDmZrv/KlStN27ZtjY+PjylRooTp1KmTOXXqlDHmyt8d6S5cuGBefvllU6lSJePp6WmqV69uvvzyyyteo/zk8u/+S+W0VuRhQX0PuDbG/PMIaUhva2MBAABAoXU+NU11h11bC5jcsn1kmHw9c/7n20svvaRff/1Vc+bMUUBAgIYMGaKNGzeqUaNG+uGHH/TKK69o69at+uGHH+Tp6SlJatWqlebOnat+/fqpQoUKWr58uXbu3KkPPvggy8/YsGGDoqKiNH78eOeyxYsXy2636+DBg6pTp47OnDmjVq1a6f3331dQUJAkx+ORvr6+GY7l4+OjP//8U/v27VOVKlUUGhqqIUOGaP78+erSpYuOHTumWbNm6Y477siw38iRIxUQEKDHHntMK1asyPH1SZeUlKTJkyeratWqzvguvYYfffSRAgMDNWTIEHXt2lU7d+5UkSJFFBcXp86dO+utt97SV199pePHj2vgwIEaOHCgJk+e/K+uZ7qjR4/q8ccf148//pjpOknSmjVrdOuttzrvmySFhYXpnXfe0V9//aWSJUvq008/VUREhN5++2116dJFCQkJWrVqlSTH9bfZbPLy8nLu7+3tLTc3N61cuVIdOnTIMq5atWqpdOnSmjRpkoYMGaK0tDRNmjRJderUUZUqVSQ5Wny5ublp8uTJeuSRR3T27Fl988036tChg4oUKeI81uTJk7Vnzx59++23euutt654PVJSUvTtt98qIiJCtit0J5SamqqwsDCFhoZqxYoV8vDw0FtvvaXOnTtr8+bNGa6XJBljtHTpUsXGxuqdd97JsG7MmDEaMmSIRowYoYULF2rQoEGqWbOmOnbsmOlzs8qhgwcP6tZbb1W7du20dOlS+fn5adWqVbp48aIkae7cuQoNDdWAAQM0Z84clS1bVg8++KAGDx4sd3d353EjIiLUsGFDnT17VsOGDdO9996rqKgoubm56fDhw+rQoYM6d+6sF198UcWKFcsU26lTp/Tdd9+pVatWzusfFRWl9u3bq1+/fvroo4/k4eGhZcuWOVvlXem7I114eLjWrFmjcePGKSQkRHv37tWJEyeueB8LHRcVAvM9WrblIft/d7RqeyvQmAtnrI4GAAAAhcTlrRuSklNN8OB5lrySklNzHPeZM2eMp6enmTlzpnPZyZMnjY+Pj7N1SnoLt0tduHDBhIeHG0nGw8PDeHp6milTpmT7OU899ZSpU6dOhmWjR482RYoUMbVq1TILFiwwa9asMe3btze1atVytsT67LPPjK+vr1myZIlJS0szsbGxpnbt2kaSWb16tfNYM2fONMWKFTMeHh5GkunatWuG1jkrVqwwFStWNMePHzfGmGtq2TZ+/HhTtGhRI8nUqlUrQ4uh9JZt06dPz3T9ZsyYYYwx5rHHHjNPPPFEhmOuWLHCuLm5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du3a6bnnnpMknTt3Tvfff7/8/Pxks9l0+vRpS2PLS5YvX841KcSqVKmiDz/80OowcmTHjh1q2bKlvL291ahRI5d9zqXfHcgZim3IO7bMkoxdqtRcKl3d6mgAAACAAmvKlClasWKFVq9ercOHD8vf319nz57VwIEDValSJfn4+Khu3bqaOHGic5/4+HjZbLYsX99//32G43/99ddq2LChvL29FRAQoAEDBmRYP3PmTDVq1Ei+vr4KDg7WmDFjMsX43XffKSQkRL6+vipfvrz69eunkydPZnk+06dPl81m0z333HPVc3/yySdVvXp1+fj4qGzZsrr77ru1Y8eOHFy1a3O163k1ycnJatSokWw2m6KiojKs27x5s9q0aSNvb28FBQXp3XffvabY4uLidO+996ps2bLy8/NTjx49dPTo0avut379erVv314lSpRQyZIlFRYWpujo6AzbLFy4UC1btlTx4sVVtmxZ3X///YqPj8/yeKtWrZKHh0emQlGVKlWyzLPL8+ha/fDDD2rWrJlKlCihokWLqlGjRvrmm2+u+Ti5kUOnT5/WgAEDVL58eXl5ealmzZqaP3/+NR1j+PDhKlq0qGJjYxUZGSlJ6tatmypXrixvb2+VL19effv21aFDh67puDfaqVOn9Nxzzyk4OFienp6qUKGC+vXrp/3792fa9sCBA+rXr58qVKggT09PBQcHa9CgQVl+N2zbtk09evRQ2bJlndd42LBhOnfunMvPiWIb8o70UUhp1QYAAAC4VFxcnOrUqaP69esrMDBQNptNERERWrBggb799lvFxMToueee08CBAzV37lxJUlBQkA4fPpzhNWLECBUrVkxdunRxHnvs2LEaOnSoXnnlFW3btk1LlixRWFiYc/0vv/yiPn36qH///tq6dasmTJigDz74QJ988olzm1WrVik8PFyPPfaYtm3bpu+//16///67Hn/88UznEh8frxdffFFt2rTJ0bk3bdpUkydPVkxMjBYuXChjjDp16qS0tLR/ezmzdLXreTUvv/yyKlSokGl5YmKiOnXqpODgYG3YsEFjxozRG2+8oc8//zxHx01KSlKnTp1ks9m0dOlSrVq1SikpKeratavsdnu2+509e1adO3dW5cqVtW7dOq1cuVLFixdXWFiYUlNTJUl79+7V3Xffrdtvv11RUVFauHChTpw4ofvuuy/T8U6fPq3w8HC1b98+07r169dnyLPFixdLkh544IEcnWN2SpUqpaFDh2rNmjXavHmzHn30UT366KNauHDhNR3nenMoJSVFHTt2VHx8vGbNmqXY2Fh98cUXqlix4jXFERcXp1tuuUXBwcEqXbq0JOm2227TzJkzFRsbq//973+Ki4tT9+7dr+m41yurIll2Tp06pZYtW2rJkiWaOHGidu/erenTp2v37t26+eabtWfPHue2e/bsUbNmzbRr1y5NmzZNu3fv1sSJExUZGanQ0FCdOnXKue3atWvVokULpaSk6Oeff9bOnTv13//+V19//bU6duyolJSUXD3nTAyylJCQYCSZhIQEq0MpHA5vNma4nzEjyxiTdNLqaAAAAABz/vx5s337dnP+/HnHArvdmOSz1rzs9muK/ezZs6Zv376maNGiJjAw0Lz33numbdu2ZtCgQaZt27ZGkvPVtm1bY4wx9erVMyNHjsxwnCZNmpihQ4dm+zmNGjUy/fr1c74/deqU8fHxMUuWLMl2n969e5vu3btnWDZu3DhTqVIlY//7PMeMGWOqVauWaZuKFStmWHbx4kXTqlUr8+WXX5qHH37Y3H333dl+bnaio6ONJLN7925jjDHLli0zksy8efNMgwYNjJeXl2nRooXZsmVLhv1WrFhhbrnlFuPt7W0qVapknnnmGXP27Fnn+n9zPdPNnz/f1K5d22zbts1IMps2bXKumzBhgilZsqRJTk52Lhs8eLCpVatWhmNMmjTJ1K1b13h6eprAwEAzYMAAY4wxCxcuNG5ubhn+1j19+rSx2Wxm8eLF2ca0fv16I8ns37/fuWzz5s1Gktm1a5cxxpjvv//eeHh4mLS0NOc2c+fONTabzaSkpGQ4Xs+ePc1rr71mhg8fbkJCQq54PQYNGmSqV6/uzI/s7N+/3zzwwAPG39/flCxZ0nTr1s3s3bv3ivs0btzYvPbaa873wcHBZuTIkaZXr17G19fXVKhQwXzyySdXPMblOWSMMVu3bjV33nmnKV68uClWrJi55ZZbnOs//fRTU61atUzX5FK//PKLad26tfH39zelSpUyd955Z4bjX/ozLMkMHz48y+PMmTMn0/VfuXKladu2rfHx8TElSpQwnTp1MqdOnTLGXPm7I92FCxfMyy+/bCpVqmQ8PT1N9erVzZdffulc7+bmZtq3b2/+7//+zyQlJV3x2vXv398ULVrUHD58OMPyc+fOmYoVK5rOnTs7l3Xu3NlUqlTJnDt3LsO2hw8fNr6+vqZ///7GGGPsdrupW7euadasWYZcNMaYqKgoY7PZzNtvv51tTJm++y+R01oRLduQN6S3aqsZJvmWsjYWAAAAICup56RRFax5pV7bY08vvfSSfv31V82ZM0eLFi3S8uXLtXHjRkmOR+kef/xxhYaG6vDhw/rhhx8kSa1atdLcuXN18OBBGWO0bNky7dy5U506dcryMzZs2KCoqCg99thjzmWLFy+W3W7XwYMHVadOHVWqVEk9evTQgQMHnNskJyfL29s7w7F8fHz0559/at++fZKk0NBQHThwQPPnz5cxRkePHtWsWbN0xx13ZNhv5MiRCggIyBDDtUhKStLkyZNVtWpVBQUFZbqG77//vtavX6+yZcuqa9euzhZccXFx6ty5s+6//35t3rxZM2bM0MqVKzVw4EDn/td6PdMdPXpUjz/+uL755hv5+vpmWr9mzRrdeuut8vT0dC4LCwtTbGys/vrrL0nSp59+qgEDBuiJJ57Qli1bNHfuXN10002SHNffZrPJy8vLub+3t7fc3Ny0cuXKbOOqVauWSpcurUmTJiklJUXnz5/XpEmTVKdOHVWpUkWSo8WXm5ubJk+erLS0NCUkJOibb75Rhw4dVKRIEeexJk+erD179mj48OFXvBaSoxXYt99+q379+slms2W7XWpqqsLCwlS8eHGtWLFCq1atUrFixdS5c+csWzEZYxQZGanY2FjdeuutGdaNGTNGISEh2rRpk1555RUNGjTI2bruclnl0MGDB3XrrbfKy8tLS5cu1YYNG9SvXz9dvHhRkjR37lyFhoZqwIABKleunOrXr69Ro0ZlaBmXlJSkiIgI/fHHH4qMjJSbm5vuvfdeZ+vDw4cPq169enrhhRd0+PBhvfjii5liO3XqlL777ju1atXKef2joqLUvn171a1bV2vWrNHKlSvVtWtX52df6bsjXXh4uKZNm6Zx48YpJiZGn332mYoVK+Zcv337djVv3lyvvfaaypUrp379+unXX3+VMSbDcex2u6ZPn64+ffooMDAwwzofHx89/fTTWrhwoU6dOqVTp05p4cKFevrpp+Xj45Nh28DAQPXp00czZsyQMUZRUVHavn27IiIi5HbZwIshISHq0KGDpk2bluX9zDVX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zUNq9YyjWT4AAACA6zZmzBidPXtWXbt2VfHixfXCCy8oISHhivtMnz5dr776qvr06aNTp04pODhY//3vf539pKX76quvVKlSpWxH1fy///s/Pf/887rzzjvl5uamtm3basGCBRla+EyZMkUvvviijDEKDQ3V8uXL1bx5c+f6Rx55RGfOnNEnn3yiF154QSVKlNDtt9+ud9555zquimPUzRUrVujDDz/UX3/9pXLlyunWW2/V6tWrM7WUevvttzVo0CDt2rVLjRo10k8//eTs56lhw4b69ddfNXToULVp00bGGFWvXl09e/a85ut5rfz9/bVo0SINGDBATZs2VZkyZTRs2DA98cQTzm0efvhhXbhwQR988IFefPFFlSlTRt27d3euj42N1auvvqpTp06pSpUqGjp0aKZ+tC5Xu3Zt/fTTTxoxYoRCQ0Pl5uamxo0ba8GCBc7Hh2+//XZNnTpV7777rt599135+voqNDRUCxYsuObHD5csWaL9+/erX79+Odre19dXv/32mwYPHqz77rtPZ86cUcWKFdW+fXtnS7ekpCQ9/fTT+vPPP+Xj46PatWvr22+/zXDfJOmFF17QH3/8oREjRsjPz09jx45VWFiYpJzlUOnSpbV06VK99NJLatu2rdzd3dWoUSNny8+goCAtXLhQzz//vBo2bKiKFStq0KBBGjx4sCRHi6/p06fr2WefVf369VWrVi2NGzfuqo+6+vr66ocfftDw4cOVlJSk8uXLq3PnznrttdecjybXrFlTixYt0pAhQ9S8eXP5+PioRYsWzkeoc/Ld8emnn2rIkCF6+umndfLkSVWuXFlDhgxxrt+2bZtq166do/tWpkwZrV27ViNHjtSTTz6pQ4cOKS0tTa1atVJUVFSG1qk1atTQ+vXr9cYbb6hHjx46duyYjDG67777Mo3em9634IgRI9SlSxedOnVKkjRw4EB98MEHGR7hdQWbMVfpXc5ihw4dUsWKFbV69eoMnRS+/PLL+vXXX7Vu3bpM+3h6emrKlCkZnrefMGGCRowYkenZ9nTJyckZmo4mJiYqKChICQkJ19QEFQAAAEDBcOHCBe3du1dVq1aVt7e31eEAQKEwadIkPf3005oxY4buueeeK247fPhwjR07VosXL1bLli2z3c5ut+uxxx7TwoUL9euvvzr7dcvKlb77ExMT5e/vf9VaUZ5v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Xfv27VN0dLRSU1PVsmVLHTlyRH379r2hcSN/uNb8io6O1ubNm/XCCy/o+eef13333aeKFSvyxzQyuNa8OnTokNasWaPnnntOw4YN0wMPPCAfHx/yKg9IS0tTSEiIZsyYkWH5gAEDVKpUKX300UfO7dL//Vm6dKlOnDih9u3b6+jRo3rmmWesCB15XE5zyxijrVu3av369Xr++efVr18/de7cmRH+kKUr5VXp0qWdeWW323X8+HFFRkZq0KBBevbZZ9WtWzeVKlWKf3uQpcDAQOfvMPfff78qV66s77//XkePHpXNZsvwhFpsbKxWrFih5557Trfddptq1aql3r17WxU68jmKbZex2+2qUaOG7r//fv3xxx+aN2+eJGWoZKc3Ux4+fLj69OljSZzI+4wxmZocJycn6/jx484mypc6d+6c3njjDc2ZM0fr1q3TV199pdKlS9/AiJGfXGt+LViwQPfff79Wr16tn376Sa+99prc3Nz4XzpkcK15dfDgQU2YMEFr167VL7/8ooiICNlsNvIqD6hcubJq1aqldevWKT4+XpLjdxw/Pz899dRTmjVrli5cuOBsgfTRRx/pxx9/dP77U6pUKQujR16Wk9w6f/68bDabVq1apQEDBmjdunX6+eefNWrUKHl4eFh7AsiTcvqd5ebmpoSEBP3444/asGGDFi1axO80yBG73a5KlSrp3nvv1alTpzRp0iRJGZ9Q27p1q95//31t3rxZixcv1sSJE+Xj42NVyMjnCkWxLS4uTm+88YZ2796dad3FixczvE+vbPfv318lS5bUvHnznF/427Ztk/TPD+TTTz+t+vXruzBy5GVXy6v0f/DTh5eWpC1btmjv3r2qVauWc9uTJ09Kkry9vTV69Gj9+eefuvnmm2/AGSAvy638On78uCTpySef1Lfffqs1a9aoRYsWN+AMkBflVl6dOHFCkhQSEqLRo0dr7dq15NUNFB8fr6eeekoLFy7MtC7995qiRYvqnnvu0a5du5x9f6b//uLv7y8/Pz8dO3bMud/IkSN1+PBh/v0p5HIrt44ePSpJeuihh/Tll19q9erVfEcUYrn9nVW9enUNHz5cK1euJK8KuZzkVrr0v/PvueceNWzYUIsWLdLmzZslSX/88YckqUuXLho7dqyWLl2q5s2buzh6FHQFuthmjNFTTz2lGjVq6PDhw6pUqZJz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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "actual.plot_weights()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-06-16T14:08:03.971825730Z", + "start_time": "2023-06-16T14:08:03.551071088Z" + } + } + }, + { + "cell_type": "code", + "execution_count": 6, + "outputs": [ + { + "data": { + "text/plain": "
", + "image/png": "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/v73vys5Odn9+B133KHVq1crOjpaX3/9NX8nepny8nIZYxQSEiKp6meZw4cPKyoqSpI0fvx4bd++Xa+++qouu+wyK6PCx/x0tsrKyvT+++8rJSVFN9xwgzZs2KAOHTpox44dKioq0h/+8Af9/ve/tzg1vN1P5+rw4cMaOHCgxowZo0cffdR93KOPPqp58+aptLRU+/btU0BAgFWR4SOqf293Op0KCAhQZWWljh07piZNmkiSjh49qrFjx2rbtm268sorNXz4cI0YMYKfa3BBWNn2E2+99ZbefvttSTqpaJPk/iber18/5eXlad++fXzx4axeeukl/epXv9JDDz2kb7/9VhUVFQoJCVGrVq3c95h46623tHz5cs2bN48VkzgvP52v8vJyhYeHa/DgwYqLi9Px48c1Z84cpaWlKTs7W1dccYX+/ve/a+XKlVZHhxf76VyVlZUpNjZW/fv313PPPaclS5ZIkp566il99913uuOOO1RUVMTmQV7mmWee0VVXXaVbbrlFb731lg4fPqzAwEBFRUW5//55/vnndeDAAc2dO1dHjx6VxOWkOLufztahQ4cUEhKiAQMGaMiQITp06JDmzJmj1NRU7d27V2PGjFFaWpr7HoHAqfx0rgoKCtS0aVP16dNH77zzjt555x2VlJTo6aefVlpamlJSUtSoUSP36jbgdP7617/qmWeekfTj7/SBgYHuom3fvn1q3bq1iouL9cQTT6ioqEhPPvmkJk6caFVk+DoDY4wxmZmZZsCAAcZms5kbbrjBrFu3zhhjjNPpPOXx//rXv0zLli3Ntm3b6jAlfM3y5ctNt27dTI8ePczTTz9tunbtahITE01qamqN4yorK40xxjz00EOmdevWZsuWLVbEhY853Xx9/PHHxpiq719z58496fvZ1q1bTVRUlJk9e7ZV0eHFTjdXH330kTHGmEOHDpmkpCTTrl07Ex4ebtq2bWvWrl1rjh07Zpo1a2YWL15s8TOAMcZUVFSYMWPGmPbt25v333/f3HbbbaZr167mZz/7WY3jqv/+ee6550ynTp3Mp59+6v6Yy+Wq08zwDaebrWHDhhljqubm66+/NmvWrDEul8s9Y/v27TNdu3Y1L730kpXx4aVON1dDhw41xhhTUlJikpOTTbt27UyTJk1Mu3btzIoVK4wxxnTq1Mn84x//sDA9vNn69evNkCFD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xES1atVKBw4c0C9/+Uv95je/kcPhkN1uV0xMTN0/IXiV2p6vBx54QA6HQ5GRkfxAWo/V9lzdf//9cjgcCg4OrvFnwfOeeOIJde7cWfn5+SouLnavQqz+3+qfY/7973/rl7/8pfr376+0tDT3Sn2pqiyNjIxUfHy8+7FGjRrV7ROB16nN2UpISJBUVaD06NGj7p8MvIYnvmfZbDY1b9687p8MvMq5zJYxRu+//777fZfLpbCwMI0ePVqBgYF64YUXNHToUF1++eXKzs5WgwYNdMkll1j2nOBnPLrXqYVmzZplmjZtapKSksw333xT42P/u5X9m2++aZo3b27GjBljjhw5UuO4vLw8Ex8fb2w2m7nppptMVlZWXUSHF7vYuRozZoz585//bF544QUTFhZmrr32WpOdnV1X8eHlmC94AnPlPzIyMkz//v3NokWLTnvMW2+9ZaKioszgwYNNeXm52bJli/n1r39tAgMDzf33328eeughExERYf76178aY2rOAOovZguewFzBU85ntoYNG2Zyc3NrfCw3N9d07drV2Gw2M3LkSLN3715PR0Y95Ldl25AhQ0ybNm3cvxB89913ZvHixWbXrl2muLjYGGPMtGnTTGhoqJk5c6aprKyscX5GRoax2Wyme/fuZvny5XWeH97pYubq4MGDplGjRsZms5l27dqZJUuWWPIc4L2YL3gCc+U/xowZY8aMGWOMMWblypXmySefNDNnzjTbt283xhjzn//8x8THx5t3333XVFRU1Dj3L3/5i7n33nvNkCFDTEZGRp1nh3djtuAJzBU85Xxm66e/569cudI0bdrUdOrUyXz99dd1nh31h80Y/9y2ZePGjRo5cqRuv/12bdmyRWvXrlWjRo106NAhXXvttfrggw9kjFFhYaEiIyNPOt/hcOhf//qXHnjggboPD691MXOVnZ2tO+64Q3fffTcba+CUmC94AnPl+1wul0pLS3XzzTfrzjvvVH5+vl588UX169dP3333nUpLSzVjxgwNHz5cxcXFatCggftcYwy3v8BpMVvwBOYKnnIxs1WtqKhIaWlp+tWvfmXBM0B94hdl29SpU5WXl6dOnTpp/PjxCg4OliT97ne/05tvvqlRo0YpJSVFwcHB2rJli379619rwoQJmjRp0im/obtcrhq7kqB+qs25qn6fHyBQjfmCJzBX/uF0r+Og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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "actual.plot_security_weights()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-06-16T14:08:04.357914601Z", + "start_time": "2023-06-16T14:08:03.960909280Z" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "Conclusion: Works like desired" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "markdown", + "source": [ + "## Show stats, transactions, weights and security weights of a first level composite strategy" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 7, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[*********************100%***********************] 1 of 1 completed\n", + "\n", + "2023-05-22 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-05-23 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-05-24 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-05-25 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-05-26 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-05-30 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-05-31 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-01 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-02 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-05 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-06 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-07 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-08 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-09 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-12 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-13 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-14 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n" + ] + } + ], + "source": [ + "node: dict = {\n", + " 'id': '5fc986bf-d7c8-4582-bc27-f1ede76bdc29',\n", + " 'node-type': 'group',\n", + " 'children': [\n", + " {\n", + " 'id': 'df876984-3be8-40c9-8847-e3b3c6af3cdc',\n", + " 'node-type': 'asset',\n", + " 'ticker': 'QQQ'\n", + " },\n", + " {\n", + " 'id': '742dc790-d0f7-472d-bd3e-405e411c0b2c',\n", + " 'node-type': 'asset',\n", + " 'ticker': 'SPY'\n", + " }\n", + " ]\n", + "}\n", + "\n", + "subject = BTInterpreter(node, date.today() - timedelta(weeks=4), date.today())\n", + "actual: bt.backtest.Result = subject.traverse()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-06-16T14:08:04.908795648Z", + "start_time": "2023-06-16T14:08:04.379923683Z" + } + } + }, + { + "cell_type": "code", + "execution_count": 8, + "outputs": [ + { + "data": { + "text/plain": " 5fc986bf-d7c8-4582-bc27-f1ede76bdc29\nstart 2023-05-17 00:00:00\nend 2023-06-15 00:00:00\nrf 0.0\ntotal_return 0.0\ncagr 0.0\nmax_drawdown 0.0\ncalmar NaN\nmtd 0.0\nthree_month NaN\nsix_month NaN\nytd 0.0\none_year NaN\nthree_year NaN\nfive_year NaN\nten_year NaN\nincep 0.0\ndaily_sharpe NaN\ndaily_sortino NaN\ndaily_mean 0.0\ndaily_vol 0.0\ndaily_skew 0\ndaily_kurt NaN\nbest_day 0.0\nworst_day 0.0\nmonthly_sharpe NaN\nmonthly_sortino NaN\nmonthly_mean 0.0\nmonthly_vol NaN\nmonthly_skew NaN\nmonthly_kurt NaN\nbest_month 0.0\nworst_month 0.0\nyearly_sharpe NaN\nyearly_sortino NaN\nyearly_mean NaN\nyearly_vol NaN\nyearly_skew NaN\nyearly_kurt NaN\nbest_year NaN\nworst_year NaN\navg_drawdown NaN\navg_drawdown_days NaN\navg_up_month NaN\navg_down_month 0.0\nwin_year_perc NaN\ntwelve_month_win_perc NaN", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
5fc986bf-d7c8-4582-bc27-f1ede76bdc29
start2023-05-17 00:00:00
end2023-06-15 00:00:00
rf0.0
total_return0.0
cagr0.0
max_drawdown0.0
calmarNaN
mtd0.0
three_monthNaN
six_monthNaN
ytd0.0
one_yearNaN
three_yearNaN
five_yearNaN
ten_yearNaN
incep0.0
daily_sharpeNaN
daily_sortinoNaN
daily_mean0.0
daily_vol0.0
daily_skew0
daily_kurtNaN
best_day0.0
worst_day0.0
monthly_sharpeNaN
monthly_sortinoNaN
monthly_mean0.0
monthly_volNaN
monthly_skewNaN
monthly_kurtNaN
best_month0.0
worst_month0.0
yearly_sharpeNaN
yearly_sortinoNaN
yearly_meanNaN
yearly_volNaN
yearly_skewNaN
yearly_kurtNaN
best_yearNaN
worst_yearNaN
avg_drawdownNaN
avg_drawdown_daysNaN
avg_up_monthNaN
avg_down_month0.0
win_year_percNaN
twelve_month_win_percNaN
\n
" + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "actual.stats" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-06-16T14:08:04.909576748Z", + "start_time": "2023-06-16T14:08:04.879933292Z" + } + } + }, + { + "cell_type": "code", + "execution_count": 13, + "outputs": [ + { + "data": { + "text/plain": " price quantity\nDate Security \n2023-05-17 QQQ NaN 2961.734263\n SPY NaN 2387.831561\n2023-05-22 QQQ NaN -2961.734263\n SPY NaN -2387.831561", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
pricequantity
DateSecurity
2023-05-17QQQNaN2961.734263
SPYNaN2387.831561
2023-05-22QQQNaN-2961.734263
SPYNaN-2387.831561
\n
" + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "actual.get_transactions()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-06-16T14:13:12.774460864Z", + "start_time": "2023-06-16T14:13:12.744591825Z" + } + } + }, + { + "cell_type": "code", + "execution_count": 14, + "outputs": [ + { + "data": { + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAABL4AAAGlCAYAAAD0yz/zAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADquUlEQVR4nOzdeXxM1/8/8Ndkm0wi+zokgiBS+/IVoQQJQYu2KD6IrVTpp8qnKG0lVRSlqrWl9n2ppWKnqdi3ILZEIpE0logWobEkJO/fH365H1dmkolqtfm8no/HPB6Ze88995xzl5l555xzNSIiICIiIiIiIiIiKmXMXnYBiIiIiIiIiIiI/gwMfBERERERERERUanEwBcREREREREREZVKDHwREREREREREVGpxMAXERERERERERGVSgx8ERERERERERFRqcTAFxERERERERERlUoWL7sApsjPz8e1a9dgZ2cHjUbzsotDREREREREREQviYjg999/R9myZWFmVnSfrn9E4OvatWvw9vZ+2cUgIiIiIiIiIqK/icuXL8PLy6vINP+IwJednR2AJxWyt7d/yaUhIiIiIiIiIqKX5e7du/D29lbiRUX5RwS+CoY32tvbM/BFREREREREREQmTYfFye2JiIiIiIiIiKhUYuCLiIiIiIiIiIhKJQa+iIiIiIiIiIioVGLgi4iIiIiIiIiISiUGvoiIiIiIiIiIqFRi4IuIiIiIiIiIiEolBr6IiIiIiIiIiKhUYuCLiIiIiIiIiIhKJQa+iIiIiIiIiIioVCpx4Gvfvn1o3749ypYtC41Ggx9//LHYbWJiYlCvXj1otVpUrlwZixcvfo6iEhERERERERERma7Ega979+6hdu3amDVrlknpU1NT8dprr6FFixaIi4vDhx9+iHfeeQc7d+4scWGJiIiIiIiIiIhMZVHSDdq2bYu2bduanH7u3LmoWLEipk2bBgDw9/fHgQMHMH36dISGhpZ096WCiODBo7yXXQwiIiIiIiIi+h+hszSHRqN52cX4y5U48FVShw8fRkhIiGpZaGgoPvzwQ6Pb5OTkICcnR3l/9+7dP6t4L8WDR3l4ZSx7vBERERERERHRXyN+XChsrP70MNDfzp8+uf3169fh4eGhWubh4YG7d+/iwYMHBrf58ssv4eDgoLy8vb3/7GISEREREREREVEp87cM9Y0ePRrDhw9X3t+9e7dUBb90luaIH/e/OcyTiIiIiIiIiP56Okvzl12El+JPD3x5enoiMzNTtSwzMxP29vbQ6XQGt9FqtdBqtX920V4ajUbzP9m9kIiIiIiIiIjor/SnD3UMDAxEdHS0atnu3bsRGBj4Z++aiIiIiIiIiIj+h5U48JWdnY24uDjExcUBAFJTUxEXF4f09HQAT4YphoWFKekHDRqES5cuYeTIkbhw4QJmz56NtWvXYtiwYS+mBkRERERERERERAaUOPAVGxuLunXrom7dugCA4cOHo27duhg7diwAICMjQwmCAUDFihWxdetW7N69G7Vr18a0adMwf/58hIZyjisiIiIiIiIiIvrzaEREXnYhinP37l04ODjgzp07sLe3f9nFISIiIiIiIiKil6QkcaI/fY4vIiIiIiIiIiKil4GBLyIiIiIiIiIiKpUY+CIiIiIiIiIiolKJgS8iIiIiIiIiIiqVGPgiIiIiIiIiIqJSiYEvIiIiIiIiIiIqlRj4IiIiIiIiIiKiUomBLyIiIiIiIiIiKpUY+CIiIiIiIiIiolKJgS8iIiIiIiIiIiqVGPgiIiIiIiIiIqJSiYEvIiIiIiIiIiIqlRj4IiIiIiIiIiKiUomBLyIiIiIiIiIiKpUY+CIiIiIiIiIiolKJgS8iIiIiIiIiIiqVGPgiIiIiIiIiIqJSiYEvIiIiIiIiIiIqlRj4IiIiIiIiIiKiUomBLyIiIiIiIiIiKpUY+CIiIiIiIiIiolKJgS8iIiIiIiIiIiqVGPgiIiIiIiIiIqJSiYEvIiIiIiIiIiIqlRj4IiIiIiIiIiKiUomBLyIiIiIiIiIiKpUY+CIiIiIiIiIiolKJgS8iIiIiIiIiIiqVGPgiIiIiIiIiIqJSiYEvIiIiIiIiIiIqlRj4IiIiIiIiIiKiUomBLyIiIiIiIiIiKpUY+CIiIiIiIiIiolKJgS8iIiIiIiIiIiqVGPgiIiIiIiIiIqJSiYEvIiIiIiIiIiIqlRj4IiIiIiIiIiKiUomBLyIiIiIiIiIiKpUY+CIiIiIiIiIiolKJgS8iIiIiIiIiIiqVGPgiIiIiIiIiIqJSiYEvIiIiIiIiIiIqlRj4IiIiIiIiIiKiUomBLyIiIiIiIiIiKpUY+CIiIiIiIiIiolKJgS8iIiIiIiIiIiqVGPgiIiIiIiIiIqJSiYEvIiIiIiIiIiIqlRj4IiIiIiIiIiKiUomBLyIiIiIiIiIiKpUY+CIiIiIiIiIiolLpuQJfs2bNQoUKFWBtbY2AgAAcO3asyPTffPMN/Pz8oNPp4O3tjWHDhuHhw4fPVWAiIiIiIiIiIiJTlDjwtWbNGgwfPhzh4eE4efIkateujdDQUNy4ccNg+pUrV+Ljjz9GeHg4EhISsGDBAqxZswZjxoz5w4UnIiIiIiIiIiIyRiMiUpINAgIC8H//93+YOXMmACA/Px/e3t7497//jY8//rhQ+vfffx8JCQmIjo5Wlv3nP//B0aNHceDAAYP7yMnJQU5OjvL+7t278Pb2xp07d2Bvb1+S4hIRERERERERUSly9+5dODg4mBQnKlGPr9zcXJw4cQIhISH/zcDMDCEhITh8+LDBbRo3bowTJ04owyEvXbqEbdu2oV27dkb38+WXX8LBwUF5eXt7l6SYREREREREREREsChJ4t9++w15eXnw8PBQLffw8MCFCxcMbvOvf/0Lv/32G1599VWICB4/foxBgwYVOdRx9OjRGD58uPK+oMcXERERERERERGRqf70pzrGxMRg4sSJmD17Nk6ePIkNGzZg69at+OKLL4xuo9VqYW9vr3oRERERERERERGVRIl6fLm6usLc3ByZmZmq5ZmZmfD09DS4zWeffYZevXrhnXfeAQDUrFkT9+7dw8CBA/HJJ5/AzOxPj70REREREREREdH/oBJFnaysrFC/fn3VRPX5+fmIjo5GYGCgwW3u379fKLhlbm4OACjhvPpEREREREREREQmK1GPLwAYPnw4evfujQYNGqBhw4b45ptvcO/ePfTt2xcAEBYWhnLlyuHLL78EALRv3x5ff/016tati4CAACQnJ+Ozzz5D+/btlQAYERERERERERHRi1biwFfXrl3x66+/YuzYsbh+/Trq1KmDHTt2KBPep6enq3p4ffrpp9BoNPj0009x9epVuLm5oX379pgwYcKLqwUREREREREREdEzNPIPGG949+5dODg44M6dO5zonoiIiIiIiIjof1hJ4kScWZ6IiIiIiIiIiEolBr6IiIiIiIiIiKhUYuCLiIiIiIiIiIhKJQa+iIiIiIiIiIioVGLgi4iIiIiIiIiISiUGvoiIiIiIiIiIqFRi4IuIiIiIiIiIiEolBr6IiIiIiIiIiKhUYuCLiIiIiIiIiIhKJQa+iIiIiIiIiIioVGLgi4iIiIiIiIiISiUGvoiIiIiIiIiIqFRi4IuIiIiIiIiIiEolBr6IiIiIiIiIiKhUYuCLiIiIiIiIiIhKJQa+iIiIiIiIiIioVGLgi4iIiIiIiIiISiUGvoiIiIiIiIiIqFRi4IuIiIiIiIiIiEolBr6IiIiIiIiIiKhUYuCLiIiIiIiIiIhKJQa+iIiIiIiIiIioVGLgi4iIiIiIiIiISiUGvoiIiIiIiIiIqFRi4IuIiIiIiIiIiEolBr6IiIiIiIiIiKhUYuCLiIiIiIiIiIhKJQa+iIiIiIiIiIioVGLgi4iIiIiIiIiISiUGvoiIiIiIiIiIqFSyeNkFICIior+fvLw8PHr06GUXg4iIiIj+R1laWsLc3PwP58PAFxEREalkZ2fjypUrEJGXXRQiIiIi+h+l0Wjg5eWFMmXK/KF8GPgiIiIiRV5eHq5cuQIbGxu4ublBo9G87CIRERER0f8YEcGvv/6KK1euoEqVKn+o5xcDX0RERKR49OgRRARubm7Q6XQvuzhERERE9D/Kzc0NaWlpePTo0R8KfHFyeyIiIiqEPb2IiIiI6GV6Ud9HGfgiIiIiIiIiIqJSiYEvIiIiIiIiIiIqlRj4IiIiolLv+vXraNWqFWxtbeHo6Piyi6PSvHlzfPjhh0WmuX//Pjp16gR7e3toNBpkZWW9sLzp791Oz3vsn0dERATq1Knzp+X/ovfbp08fvPHGGy+8PEREVLow8EVERET/eBEREdBoNKpXtWrVlPXTp09HRkYG4uLikJSUZFKea9euRZ06dWBjYwMfHx989dVXhdKsWLECtWvXho2NDfR6Pfr164ebN2+q0mRlZWHIkCHQ6/XQarWoWrUqtm3bVqL6LVmyBPv378ehQ4eQkZEBBweHEm1f4Nk2KngZqpsxptS5KJMmTYJGoykUaGrevHmhcg0aNEiV5vjx4wgODoajoyOcnJwQGhqK06dPK+tjYmLQsWNH6PV62Nraok6dOlixYoXJZXtep0+fRvfu3eHt7Q2dTgd/f3/MmDFDlaZPnz4G27569epF5m3o2G/YsAGtW7eGi4sLNBoN4uLi/sTaGRcTE2P0nDp+/LiSTkQwdepUVK1aFVqtFuXKlcOECRP+0rKmpaWhf//+qFixInQ6HXx9fREeHo7c3FxVOlOueyIi+mfhUx2JiIioVKhevTp++ukn5b2FxX+/5qSkpKB+/fqoUqWKSXlt374dPXr0wHfffYfWrVsjISEBAwYMgE6nw/vvvw8AOHjwIMLCwjB9+nS0b98eV69exaBBgzBgwABs2LABAJCbm4tWrVrB3d0d69atQ7ly5fDLL7+UuNdZSkoK/P39UaNGjRJt96yMjIxC9ezfvz86depk0vam1Lkox48fR2RkJGrVqmVw/YABAzBu3DjlvY2NjfJ3dnY22rRpgw4dOmD27Nl4/PgxwsPDERoaisuXL8PS0hKHDh1CrVq1MGrUKHh4eGDLli0ICwuDg4MDXn/9dZPq+DxOnDgBd3d3LF++HN7e3jh06BAGDhwIc3Nz5XyZMWMGJk2apGzz+PFj1K5dG126dCkyb0PH/t69e3j11Vfx9ttvY8CAAX9OpUzQuHHjQufUZ599hujoaDRo0EBZNnToUOzatQtTp05FzZo1cevWLdy6desvLeuFCxeQn5+PyMhIVK5cGefOncOAAQNw7949TJ06FYBp1z0REf0DyT/AnTt3BIDcuXPnZReFiIioVHvw4IHEx8fLgwcPREQkPz9f7uU8eimv/Px8k8sdHh4utWvXNrjOx8dHACiv3r17i4jI7du3ZeDAgeLu7i5arVaqV68umzdvFhGR7t27S+fOnVX5fPvtt+Ll5aWU66uvvpJKlSoVSlOuXDnl/Zw5c6RSpUqSm5trtOxBQUEyZMgQGTJkiNjb24uLi4t8+umnyn6CgoJU5Q8KCjKYT3Z2tvTq1UtsbW3F09NTpk6dKkFBQTJ06FCj++7YsaO0bNlStezy5cvSrVs3cXJyEhsbG6lfv74cOXLE5Dob8/vvv0uVKlVk9+7dBstVXFmPHz8uACQ9PV1ZdubMGQEgFy9eNLpdu3btpG/fvkWWrbhjICLy8OFDGTlypHh5eYmVlZX4+vrK/PnzjeY5ePBgadGihdH1GzduFI1GI2lpaUWWq6hjn5qaKgDk1KlThba9ffu29O/fX1xdXcXOzk5atGghcXFxqjRffvmluLu7S5kyZaRfv34yatSoQtfRvHnzpFq1aqLVasXPz09mzZpltLy5ubni5uYm48aNU5bFx8eLhYWFXLhwweh2Bdfv3LlzxcvLS3Q6nXTp0kWysrKUNI8fP5Zhw4aJg4ODODs7y4gRIyQsLEw6duyopMnLy5PJkyeLr6+vWFlZibe3t4wfP97ofqdMmSIVK1ZU3pty3RMR0V/n2e+lTytJnIg9voiIiMioB4/y8MrYnS9l3/HjQmFjZfpXlYsXL6Js2bKwtrZGYGAgvvzyS5QvXx7Hjx9HWFgY7O3tMWPGDOh0OuTn56Nt27b4/fffsXz5cvj6+iI+Ph7m5uYAgJycHFVvIwDQ6XS4cuUKfvnlF1SoUAGBgYEYM2YMtm3bhrZt2+LGjRtYt24d2rVrp2wTFRWFwMBADBkyBJs2bYKbmxv+9a9/YdSoUcq+gCfD2fr3749jx44hNjYWAwcORPny5ZWeVB9//DHOnTuHDRs2wMrKymD9R4wYgb1792LTpk1wd3fHmDFjcPLkSaNzJ2VmZmLr1q1YsmSJsiw7OxtBQUEoV64coqKi4OnpiZMnTyI/Px8ATKqzMUOGDMFrr72GkJAQjB8/3mCaFStWYPny5fD09ET79u3x2WefKcfBz88PLi4uWLBgAcaMGYO8vDwsWLAA/v7+qFChgtH93rlzB/7+/sWWr6hjAABhYWE4fPgwvv32W9SuXRupqan47bffityvs7Oz0fULFixASEgIfHx8jKYx9dgb0qVLF+h0Omzfvh0ODg6IjIxEcHAwkpKS4OzsjLVr1yIiIgKzZs3Cq6++imXLluHbb79FpUqVlDxWrFiBsWPHYubMmahbty5OnTqFAQMGwNbWFr179y60z6ioKNy8eRN9+/ZVlm3evBmVKlXCli1b0KZNG4gIQkJCMGXKFFX7JCcnY+3atdi8eTPu3r2L/v37Y/DgwcpQ1WnTpmHx4sVYuHAh/P39MW3aNGzcuBEtW7ZU8hg9ejTmzZuH6dOn49VXX0VGRgYuXLhgtI2ePUamXPdERPTPw8AXERER/eMFBARg8eLF8PPzQ0ZGBj7//HM0bdoU586dg5ubG7RaLXQ6HTw9PQEAu3btwrFjx5CQkICqVasCgOoHf2hoKIYNG4Y+ffqgRYsWSE5OxrRp0wA8GS5YoUIFNGnSBCtWrEDXrl3x8OFDPH78GO3bt8esWbOUfC5duoSff/4ZPXr0wLZt25CcnIzBgwfj0aNHCA8PV9J5e3tj+vTp0Gg08PPzw9mzZzF9+nQMGDAAzs7OsLGxgZWVlVL+Z2VnZ2PBggVYvnw5goODATwJ5Hh5eRltsyVLlsDOzg5vvfWWsmzlypX49ddfcfz4cSUgULlyZWW9KXU2ZPXq1Th58qRq3qdn/etf/4KPjw/Kli2LM2fOYNSoUUhMTFSGUNrZ2SEmJgZvvPEGvvjiCwBAlSpVsHPnTtWw1qetXbtWGV5ZnKKOQVJSEtauXYvdu3cjJCQEgPp8edahQ4ewZs0abN261eD6a9euYfv27Vi5cmWRZTLl2Bty4MABHDt2DDdu3IBWqwUATJ06FT/++CPWrVuHgQMH4ptvvkH//v3Rv39/AMD48ePx008/4eHDh0o+4eHhmDZtmnKOVKxYEfHx8YiMjDQY+FqwYAFCQ0NV592lS5fwyy+/4IcffsDSpUuRl5eHYcOGoXPnzvj555+VdA8fPsTSpUtRrlw5AMB3332H1157DdOmTYOnpye++eYbjB49WinL3LlzsXPnf4Pyv//+O2bMmIGZM2cqZfP19cWrr75qsI2Sk5Px3XffKcMcAdOueyIi+udh4IuIiIiM0lmaI35c6Evbt6natm2r/F2rVi0EBATAx8cHa9euVX7YPy0uLg5eXl5K0OtZAwYMQEpKCl5//XU8evQI9vb2GDp0KCIiImBm9uTZQPHx8Rg6dCjGjh2L0NBQZGRkYMSIERg0aBAWLFgAAMjPz4e7uzu+//57mJubo379+rh69Sq++uorVeCrUaNG0Gg0yvvAwEBMmzYNeXl5qp5hALB//35VfSMjI1GjRg3k5uYiICBAWe7s7Aw/Pz+jbbZw4UL06NED1tbWqnapW7eu0Z5KxdXZUNmaNWuGoUOHYvfu3ap9PWvgwIHK3zVr1oRer0dwcDBSUlLg6+uLBw8eoH///mjSpAlWrVqFvLw8TJ06Fa+99hqOHz8OnU6nym/Pnj3o27cv5s2bp0wgb6h8PXr0AFD0MYiLi4O5uTmCgoKMlr/AuXPn0LFjR4SHh6N169YG0yxZsgSOjo6qJxKuWLEC7777rvJ++/btaNq0abH7M+T06dPIzs6Gi4uLavmDBw+QkpICAEhISCj08IDAwEDs2bMHwJN5xFJSUtC/f3/VPGKPHz82+HCFK1euYOfOnVi7dq1qeX5+PnJycrB06VLleluwYAHq16+PxMRE5RwtX768EvQqKEt+fj4SExOh0+mQkZGhOr8tLCzQoEEDiIhSn5ycHCXwW5SrV6+iTZs26NKli6puplz3RET0z8PAFxERERml0WhKNNzw78LR0RFVq1ZFcnKywfXPBkmepdFoMHnyZEycOBHXr1+Hm5sboqOjAfy3p8+XX36JJk2aYMSIEQCeBNxsbW3RtGlTjB8/Hnq9Hnq9HpaWlqrglb+/P65fv47c3NwSDV0r0KBBA9VT/Dw8PHDp0qUS5bF//34kJiZizZo1quXFtUtxdTZUtujoaNy4cQP16tVTlufl5WHfvn2YOXMmcnJyCgX3AChBjuTkZPj6+mLlypVIS0vD4cOHlSDEypUr4eTkhE2bNqFbt27Ktnv37kX79u0xffp0hIWFKcsNlc8UxbVLgfj4eAQHB2PgwIH49NNPDaYRESxcuBC9evVSHf8OHTqoAjtPB4FKKjs7G3q9HjExMYXWmfpghezsbADAvHnzVOUCYPB4LVq0CC4uLujQoYNquV6vh4WFhSrIXDD0ND09vcjgbEmYeoyuXbuGFi1aoHHjxvj+++9V60y57omI6J+H/7ogIiKiUic7OxspKSnQ6/UG19eqVQtXrlxBUlJSkfmYm5ujXLlysLKywqpVqxAYGAg3NzcAwP379wv1AikICBT0QmnSpAmSk5OVObIAICkpCXq9XhX0OHr0qCqfI0eOoEqVKgYDDDqdDpUrV1ZednZ28PX1haWlpSqf27dvG61fQY+b2rVrF2qXuLg4o0/cK67OhsoWHByMs2fPIi4uTnk1aNAAPXr0UHpSGVIQoCo4hgX7frpXVsH7p9s3JiYGr732GiZPnqzqRWas7QoUdQxq1qyJ/Px87N2712BZAeD8+fNo0aIFevfujQkTJhhNt3fvXiQnJxfqiWhnZ6cqm6mBHEPq1auH69evw8LCQpVn5cqV4erqCuBJ8MlQnQt4eHigbNmyuHTpUqE8KlasqNpORLBo0SKEhYXB0tJSta5JkyZ4/Pix0tMMgHJePj2/WXp6Oq5du6Yqi5mZGfz8/ODg4AC9Xq8q7+PHj3HixAnlfZUqVaDT6ZRAlSFXr15F8+bNUb9+fSxatMhoL66irnsiIvoHerFz7v85+FRHIiKiv0ZRT8/5O/vPf/4jMTExkpqaKgcPHpSQkBBxdXWVGzduiMiTpxcWPM2xQPPmzaVGjRqya9cuuXTpkmzbtk22b98uIiK//vqrzJkzRxISEuTUqVPywQcfiLW1tRw9elTZftGiRWJhYSGzZ8+WlJQUOXDggDRo0EAaNmyopElPTxc7Ozt5//33JTExUbZs2SLu7u6qJ80FBQVJmTJlZNiwYXLhwgVZuXKl2Nrayty5c5U0Q4cONfo0xwKDBg0SHx8fiY6OlrNnz0qHDh2kTJkyhZ6UeOfOHbGxsZE5c+YUyiMnJ0eqVq0qTZs2lQMHDkhKSoqsW7dODh06ZHKdTfHsExyTk5Nl3LhxEhsbK6mpqbJp0yapVKmSNGvWTEmTkJAgWq1W3nvvPYmPj5dz585Jz549xcHBQa5duyYiIj///LPY2NjI6NGjJSMjQ3ndvHmz2PIUdwz69Okj3t7esnHjRrl06ZLs2bNH1qxZIyIiZ8+eFTc3N+nZs6dqvwXn39N69uwpAQEBJreVoWN/8+ZNOXXqlGzdulUAyOrVq+XUqVOSkZEhIk+exvrqq69K7dq1ZefOncp1MWbMGDl+/LiIiKxevVqsra1l4cKFkpiYKGPHjhU7OzvVUx3nzZsnOp1OZsyYIYmJiXLmzBlZuHChTJs2TVWen376SQBIQkJCofLn5eVJvXr1pFmzZnLy5EmJjY2VgIAAadWqlZImPDxcbG1tJSQkROLi4mTfvn1StWpV6datm5Jm0qRJ4uzsLBs3bpSEhAQZMGCA2NnZqZ7qGBERIU5OTrJkyRJJTk6Ww4cPK0/evHLlilSuXFmCg4PlypUrquNUwJTrnoiI/jov6qmODHwRERGR4p8a+Oratavo9XqxsrKScuXKSdeuXSU5OVlZbyjwdfPmTenbt6+4uLiItbW11KhRQ7Zs2SIiT34AN2rUSGxtbcXGxkaCg4PlyJEjhfb77bffyiuvvCI6nU70er306NFDrly5okpz6NAhCQgIEK1WK5UqVZIJEybI48ePlfVBQUEyePBgGTRokNjb24uTk5OMGTNG8vPzlTSmBL5+//136dmzp9jY2IiHh4dMmTKlUIBJRCQyMlJ0Op1kZWUZzCctLU06deok9vb2YmNjIw0aNFD98DelzsV5tlzp6enSrFkzcXZ2Fq1WK5UrV5YRI0YU+u63a9cuadKkiTg4OIiTk5O0bNlSDh8+rKzv3bu3ACj0Kq7tTDkGDx48kGHDhinnWeXKlWXhwoUi8iRwY2i/Pj4+qv1kZWWJTqeT77//3uS2MnTsFy1aZHB/4eHhSpq7d+/Kv//9bylbtqxYWlqKt7e39OjRQ9LT05U0EyZMEFdXVylTpoz07t1bRo4cqQp8iYisWLFC6tSpI1ZWVuLk5CTNmjWTDRs2qNJ0795dGjdubLQOV69elbfeekvKlCkjHh4e0qdPH1UwMjw8XGrXri2zZ8+WsmXLirW1tXTu3Flu3bqlpHn06JEMHTpU7O3txdHRUYYPHy5hYWGqwFdeXp6MHz9efHx8xNLSUsqXLy8TJ04sss2e7gdg6nVPRER/jRcV+NKI/P+++H9jd+/ehYODA+7cuQN7e/uXXRwiIqJS6+HDh0hNTUXFihWLnIiciIiIiOjPVNT30pLEiTjHFxERERERERERlUoMfBERERERERERUan0XIGvWbNmoUKFCrC2tkZAQACOHTtWZPqsrCwMGTIEer0eWq0WVatWxbZt256rwERERERERERERKawKOkGa9aswfDhwzF37lwEBATgm2++QWhoKBITE+Hu7l4ofW5uLlq1agV3d3esW7cO5cqVwy+//AJHR8cXUX4iIiIiIiIiIiKDShz4+vrrrzFgwAD07dsXADB37lxs3boVCxcuxMcff1wo/cKFC3Hr1i0cOnQIlpaWAIAKFSoUuY+cnBzk5OQo7+/evVvSYhIRERERERER0f+4Eg11zM3NxYkTJxASEvLfDMzMEBISgsOHDxvcJioqCoGBgRgyZAg8PDxQo0YNTJw4EXl5eUb38+WXX8LBwUF5eXt7l6SYREREREREREREJQt8/fbbb8jLy4OHh4dquYeHB65fv25wm0uXLmHdunXIy8vDtm3b8Nlnn2HatGkYP3680f2MHj0ad+7cUV6XL18uSTGJiIiIiIiIiIhKPtSxpPLz8+Hu7o7vv/8e5ubmqF+/Pq5evYqvvvoK4eHhBrfRarXQarV/dtGIiIiIiIiIiKgUK1Hgy9XVFebm5sjMzFQtz8zMhKenp8Ft9Ho9LC0tYW5urizz9/fH9evXkZubCysrq+coNhERERERERERUdFKNNTRysoK9evXR3R0tLIsPz8f0dHRCAwMNLhNkyZNkJycjPz8fGVZUlIS9Ho9g15ERET0l7h+/TpatWoFW1vbv92TpZs3b44PP/ywyDT3799Hp06dYG9vD41Gg6ysrBeWN/292+l5j/3ziIiIQJ06df60/F/0fvv06YM33njjhZfnz1ahQgV88803yvu/8/3pZVu8eDHb5H+YRqPBjz/++LKLYZKDBw+iZs2asLS0/FPvS8/eP8g0JQp8AcDw4cMxb948LFmyBAkJCXjvvfdw79495SmPYWFhGD16tJL+vffew61btzB06FAkJSVh69atmDhxIoYMGfLiakFERET/0yIiIqDRaFSvatWqKeunT5+OjIwMxMXFISkpyaQ8165dizp16sDGxgY+Pj746quvCqVZsWIFateuDRsbG+j1evTr1w83b95UpcnKysKQIUOg1+uh1WpRtWpVbNu2rUT1W7JkCfbv349Dhw4hIyMDDg4OJdq+wLNtVPAyVDdjTKlzUSZNmgSNRlMo0NS8efNC5Ro0aJAqzfHjxxEcHAxHR0c4OTkhNDQUp0+fVtbHxMSgY8eO0Ov1sLW1RZ06dbBixQqTy/a8Tp8+je7du8Pb2xs6nQ7+/v6YMWOGKk2fPn0Mtn316tWLzNvQsd+wYQNat24NFxcXaDQaxMXF/Ym1My4mJsboOXX8+HElnYhg6tSpqFq1KrRaLcqVK4cJEyb8pWVNS0tD//79UbFiReh0Ovj6+iI8PBy5ubmqdKZc9y+aofvT9evX0atXL3h6esLW1hb16tXD+vXrlW1eZNvPmjUL/v7+0Ol08PPzw9KlSwuV8ZtvvoGfnx90Oh28vb0xbNgwPHz40GB9jF3jhnTo0AHly5eHtbU19Ho9evXqhWvXrpnSbCVSXHsW5+bNm/Dy8jIYfI6JiUG9evWg1WpRuXJlLF68uERlO3nyJFq1agVHR0e4uLhg4MCByM7OLna7nTt3olGjRrCzs4Obmxs6deqEtLQ0VZqS3K9Xr14NjUZTKGjzIj43DJkzZw5q1aoFe3t72NvbIzAwENu3by9xPi/iHLp69Sp69uwJFxcX6HQ61KxZE7GxsSXKY/jw4ahTpw5SU1OxePFi3Lx5E23atEHZsmWh1Wrh7e2N999/H3fv3i1RvvRilDjw1bVrV0ydOhVjx45FnTp1EBcXhx07digT3qenpyMjI0NJ7+3tjZ07d+L48eOoVasWPvjgAwwdOhQff/zxi6sFERER/c+rXr06MjIylNeBAweUdSkpKahfvz6qVKkCd3f3YvPavn07evTogUGDBuHcuXOYPXs2pk+fjpkzZyppDh48iLCwMPTv3x/nz5/HDz/8gGPHjmHAgAFKmtzcXLRq1QppaWlYt24dEhMTMW/ePJQrV65EdUtJSYG/vz9q1KgBT09PaDSaEm1f4On2ycjIwMKFC6HRaNCpUyeTtjelzkU5fvw4IiMjUatWLYPrBwwYoCrflClTlHXZ2dlo06YNypcvj6NHj+LAgQOws7NDaGgoHj16BAA4dOgQatWqhfXr1+PMmTPo27cvwsLCsGXLFpPK97xOnDgBd3d3LF++HOfPn8cnn3yC0aNHq86XGTNmqOp2+fJlODs7o0uXLkXmbejY37t3D6+++iomT578p9arOI0bNy50Tr3zzjuoWLEiGjRooKQbOnQo5s+fj6lTp+LChQuIiopCw4YN/9KyXrhwAfn5+YiMjMT58+cxffp0zJ07F2PGjFHSmHLdZ2VlvfAfrobuT2FhYUhMTERUVBTOnj2Lt956C2+//TZOnToF4MW1/Zw5czB69GhERETg/Pnz+PzzzzFkyBBs3rxZSbNy5Up8/PHHCA8PR0JCAhYsWIA1a9ao2q5Acdf4s1q0aIG1a9ciMTER69evR0pKCjp37vxc7ViU4tqzOP379zdYp9TUVLz22mto0aIF4uLi8OGHH+Kdd97Bzp07Tcr32rVrCAkJQeXKlXH06FHs2LED58+fR58+fYrcLjU1FR07dkTLli0RFxeHnTt34rfffsNbb72lpCnJ/TotLQ0fffQRmjZtWmjdH/3cMMbLywuTJk3CiRMnEBsbi5YtW6Jjx444f/58ifL5o+fQ7du30aRJE1haWmL79u2Ij4/HtGnT4OTkVKJypKSkoGXLlvDy8oKjoyPMzMzQsWNHREVFISkpCYsXL8ZPP/1U6B869BeRf4A7d+4IALlz587LLgoREVGp9uDBA4mPj5cHDx48WZCfL5KT/XJe+fkmlzs8PFxq165tcJ2Pj48AUF69e/cWEZHbt2/LwIEDxd3dXbRarVSvXl02b94sIiLdu3eXzp07q/L59ttvxcvLS/L/f7m++uorqVSpUqE05cqVU97PmTNHKlWqJLm5uUbLHhQUJEOGDJEhQ4aIvb29uLi4yKeffqrsJygoSFX+oKAgg/lkZ2dLr169xNbWVjw9PWXq1KkSFBQkQ4cONbrvjh07SsuWLVXLLl++LN26dRMnJyexsbGR+vXry5EjR0yuszG///67VKlSRXbv3m2wXMWV9fjx4wJA0tPTlWVnzpwRAHLx4kWj27Vr10769u1bZNmKOwYiIg8fPpSRI0eKl5eXWFlZia+vr8yfP99onoMHD5YWLVoYXb9x40bRaDSSlpZWZLmKOvapqakCQE6dOlVo29u3b0v//v3F1dVV7OzspEWLFhIXF6dK8+WXX4q7u7uUKVNG+vXrJ6NGjSp0Hc2bN0+qVasmWq1W/Pz8ZNasWUbLm5ubK25ubjJu3DhlWXx8vFhYWMiFCxeMbldw/c6dO1e8vLxEp9NJly5dJCsrS0nz+PFjGTZsmDg4OIizs7OMGDFCwsLCpGPHjkqavLw8mTx5svj6+oqVlZV4e3vL+PHjje53ypQpUrFiReW9Kdd9TEyM6HQ66dGjh+zatUvy8vKM5i8ikpmZKa+//rpYW1tLhQoVZPny5eLj4yPTp08XEeP3J1tbW1m6dKkqL2dnZ5k3b57B/Txv2wcGBspHH32kWjZ8+HBp0qSJ8n7IkCGF7hPPphEp/ho3xaZNm0Sj0Sj3zEWLFomDg4Ns3LhRKleuLFqtVlq3bq26D4iI/Pjjj1K3bl3RarVSsWJFiYiIkEePHinrS9qeT5s9e7YEBQVJdHS0AJDbt28r60aOHCnVq1dXpe/atauEhoYq74s6LyMjI8Xd3V11HplyX/vhhx/EwsJCtV1UVJSq7Uy9Xz9+/FgaN24s8+fPl969e6uuKUMMfW4YcvbsWWnTpo3Y2tqKu7u79OzZU3799dcit3FyclLdVwHI7NmzpU2bNmJtbS0VK1aUH374ocg8nj2HREQOHDggQUFBotPpxNHRUVq3bi23bt0SEZFRo0bJq6++WmSeS5culfr160uZMmXEw8NDunfvLpmZmSLy3/vw069FixYZzGfGjBni5eWlWhYVFSUNGjQQrVYrLi4u8sYbbyjrirt/iBT9XaY0KPS99CkliROVuMcXERER/Q95dB+YWPblvB7dL1FRL168iLJly6JSpUro0aMH0tPTATzpgdCmTRu8/fbbyMjIwIwZM5Cfn4+2bdvi4MGDWL58OeLj4zFp0iTlYTw5OTmwtrZW5a/T6XDlyhX88ssvAIDAwEBcvnwZ27Ztg4ggMzMT69atQ7t27ZRtoqKiEBgYiCFDhsDDwwM1atTAxIkTkZeXp8p7yZIlsLCwwLFjxzBjxgx8/fXXmD9/PgBgw4YNGDBgAAIDA5GRkYENGzYYrP+IESOwd+9ebNq0Cbt27UJMTAxOnjxptL0yMzOxdetW9O/fX1mWnZ2NoKAgXL16FVFRUTh9+jRGjhypzNVqSp2NGTJkCF577TWEhIQYTbNixQq4urqiRo0aGD16NO7f/+854OfnBxcXFyxYsAC5ubl48OABFixYAH9/f1SoUMFonnfu3IGzs3Ox5SvqGABPeoysWrUK3377LRISEhAZGYkyZco8934XLFiAkJAQ+Pj4GE1j6rE3pEuXLrhx4wa2b9+OEydOoF69eggODsatW7cAPBnSFxERgYkTJyI2NhZ6vR6zZ89W5bFixQqMHTsWEyZMQEJCAiZOnIjPPvsMS5YsMbjPqKgo3Lx5U5kCBQA2b96MSpUqYcuWLahYsSIqVKiAd955RylHgeTkZKxduxabN2/Gjh07cOrUKQwePFhZP23aNCxevBgLFy7EgQMHcOvWLWzcuFGVx+jRozFp0iR89tlniI+Px8qVK5VRKYY8e4xMue6bNWuG7du3Q6vVonPnzvDx8cGYMWOQmJhocB99+vTB5cuXsWfPHqxbtw6zZ8/GjRs3lPWG7k/Akx5da9aswa1bt5Cfn4/Vq1fj4cOHaN68ucH9PG/bG6vzsWPHlJ6UjRs3xokTJ3Ds2DEAwKVLl7Bt27ZC170p13hRbt26hRUrVqBx48awtLRUlt+/fx8TJkzA0qVLcfDgQWRlZaFbt27K+v379yMsLAxDhw5FfHw8IiMjsXjxYtWQzpK2Z4H4+HiMGzcOS5cuhZlZ4Z/Ohw8fLlTf0NBQHD58WHlf1HmZk5MDKysrVd46nQ4AVL2Wn1W/fn2YmZlh0aJFyMvLw507d7Bs2TKEhIQobWfq/XrcuHFwd3dXfRYYY+hzw5CsrCy0bNkSdevWRWxsLHbs2IHMzEy8/fbbBtPn5eVh9erVuHfvXqG5wz/77DN06tQJp0+fRo8ePdCtWzckJCQYzMfQORQXF4fg4GC88sorOHz4MA4cOID27dsrn8NRUVFo0KABunTpAnd3d9StWxfz5s1T5fvo0SN88cUXOH36NH788UekpaUpvfK8vb2RkZEBe3t7fPPNN8jIyEDXrl0Lle3atWvYsGEDgoKClGVbt27Fm2++iXbt2uHUqVOIjo5W9cgs7v5R3HcZesoLD8n9Cdjji4iI6K9R6D9rOdki4fYv55WTbXK5t23bJmvXrpXTp0/Ljh07JDAwUMqXLy93794VkSf/oS7oSSEisnPnTjEzM5PExESD+UVGRoqNjY389NNPkpeXJ4mJiVKtWjUBIIcOHVLSrV27VsqUKSMWFhYCQNq3b6/6L7Ofn59otVrp16+fxMbGyurVq8XZ2VkiIiKUNEFBQeLv76/qXTRq1Cjx9/dX3g8dOtRoTy+RJz0trKysZO3atcqymzdvik6nM9rrYvLkyeLk5KT6L2pkZKTY2dnJzZs3je6ruDobsmrVKqlRo4ayL0O9QSIjI2XHjh1y5swZWb58uZQrV07efPNNVZqzZ8+Kr6+vmJmZiZmZmfj5+RXZY2rNmjViZWUl586dK7J8xR2DxMREASC7d+8uMp8CBw8eFAsLC9m5c6fB9VevXhVzc3NZs2ZNsXkVdeyN9fjav3+/2Nvby8OHD1XLfX19JTIyUkSe9PQZPHiwan1AQICqx5evr6+sXLlSleaLL76QwMBAg+Vp27attG3bVrXs3XffFa1WKwEBAbJv3z7Zs2eP1KlTR9UbLjw8XMzNzeXKlSvKsu3bt4uZmZlkZGSIiIher5cpU6Yo6x89eiReXl5K75S7d++KVqs1qQePiMjFixfF3t5evv/+e2WZqdd9gfv378vKlSulTZs2YmFhIQEBATJnzhylp1rBeXPs2DFlm4SEBAGg6rHx7P1J5EkvjtatWwsAsbCwEHt7e6Pnk8jzt/3o0aPF09NTYmNjJT8/X44fPy4eHh4CQK5du6akmzFjhlhaWirX/aBBg1T7MuUaN2bkyJFiY2MjAKRRo0by22+/KesWLVokAJRepyL/bcOjR4+KiEhwcLBMnDhRleeyZctEr9cr70vaniJPennWqlVLli1bJiIie/bsKdTjq0qVKoX2vXXrVgEg9+/fL/a8PHfunFhYWMiUKVMkJydHbt26JZ06dRIAhfJ9VkxMjLi7u4u5ubkAkMDAQFXZRIq/X+/fv1/KlSun9MQqrseXoc8NQ7744gtp3bq1atnly5cFgOpz98yZM2Jrayvm5ubi4OAgW7duVW1j6FwLCAiQ9957T7WsqHOoe/fuhXonPk2r1YpWq5XRo0fLyZMnJTIyUqytrWXx4sVGtynogfz7778ryxwcHAz29OrWrZvodDql/Z9uu8DAQOnRo4fBfZhy/yjuu0xp8KJ6fDHwRURERIp/6lDHZ92+fVvs7e2VIRPP/rCcPHmylC9f3uj2+fn5MnLkSLG2thZzc3NxcnKSiIgI1Q+w8+fPKz/GCwJuNWvWlH79+in5VKlSRby9veXx48fKsmnTpomnp6fyPigoqNBQvB9//FEsLCyU7Z4Ofuzbt09sbW2V1/LlyyUuLk4AyC+//KLKp06dOkZ/fPr5+cn777+vWvbee+9Js2bNjLZLcXU2VLb09HRxd3eX06dPq+pc3I/igmFFycnJIvIkyNCwYUMJCwuTY8eOyeHDh6VTp05SvXp1uX//fqHtf/75Z7GxsZElS5YoywyVr6A8RR2DNWvWiLm5ebEBPpEnwTlXV1f54osvjKaZOHGiuLi4SE5OjrJs+fLlqrLt27dPRJ4v8DVz5kwxMzNT5WdraytmZmYycuRIERFxdHRUtY2IyIcffqgEvrKzswWA6HQ6VR5arVbc3d0LleXy5ctiZmYm69atUy0fMGBAoR+7J06cEADKELzw8HDVkEMRkaysLAEgMTExyt979+5VpXnjjTeUH+lHjx4VAHLp0iWDbfW0K1euiK+vr/Tv31+13JTr3pjExESpV6+e6kdpwTn07HBIR0fHYgNf77//vjRs2FB++ukniYuLk4iICHFwcJAzZ84U2vcfafv79+9L3759xcLCQszNzaVs2bIycuRIASDXr18XkScBHw8PD5k3b56cOXNGNmzYIN7e3sqwSlOu8XfffVd1Hj3t119/lcTERNm1a5c0adJE2rVrpwShFy1aZLQNCwITrq6uYm1trcrf2tpaAMi9e/dMas+CIXm2trbyyiuviIjIsGHDpGvXrso+nyfwZcp5uWLFCvHw8BBzc3OxsrKSjz76SDw8PGTSpEkiIvLKK68oZWvTpo2IiGRkZEiVKlVkxIgRcvLkSdm7d68EBQVJcHCw0nbF3a/v3r0rFSpUkG3btillKS7wZehzw1Dbde7cWSwtLQvdgwCo9peTkyMXL16U2NhY+fjjj8XV1VXOnz+vrAdg8D7VvHlz1bKiziF/f38ZO3as0TpZWloWCub/+9//lkaNGinvY2Nj5fXXXxdvb28pU6aMEmR7uqzGAl8ZGRmSkJAgmzZtkldeeUUVtNPpdLJw4UKD5TLl/lHcd5nS4EUFvixeaPcxIiIiKl00GsDK9mWXosQcHR1RtWpVJCcnG1xfMJTEGI1Gg8mTJ2PixIm4fv063NzcEB0dDQCoVKkSAODLL79EkyZNMGLECABArVq1YGtri6ZNm2L8+PHQ6/XQ6/WwtLRUDTvw9/fH9evXkZubCysrqxLXrUGDBqqn+Hl4eODSpUslymP//v1ITEzEmjVrVMuLa5fi6myobNHR0bhx4wbq1aunLM/Ly8O+ffswc+ZM5OTkGByWERAQAODJEDhfX1+sXLkSaWlpOHz4sDIsaOXKlXBycsKmTZtUQ5/27t2L9u3bY/r06QgLC1OWGyqfKYprlwLx8fEIDg7GwIED8emnnxpMIyJYuHAhevXqpTr+HTp0UOoMoMQPQHhadnY29Ho9YmJiCq1zdHQ0OQ8AmDdvnqpcAAwer0WLFsHFxQUdOnRQLdfr9bCwsEDVqlWVZf7+/gCePBTLz8/PpPIUx9RjdO3aNbRo0QKNGzfG999/r1pnynX/tMePH2PXrl1YtmwZNm3ahEqVKmHKlCno0aPHH6pLSkoKZs6ciXPnzilP/axduzb279+PWbNmYe7cuar0f6TtdTodFi5ciMjISGRmZkKv1+P7779XnhQIPBlq1qtXL7zzzjsAgJo1a+LevXsYOHAgPvnkE5w4caLYa3zcuHH46KOPDNbX1dUVrq6uqFq1Kvz9/eHt7Y0jR44UGvJmTHZ2Nj7//HPVxO4FrK2tTWrP+fPn48GDBwCgDJH7+eefcfbsWaxbtw7Ak2u3oLyffPIJPv/8c3h6eiIzM1O1z8zMTNjb20On05l0Xv7rX//Cv/71L2RmZsLW1hYajQZff/21cs5t27ZNGXZakN+sWbPg4OCgegDI8uXL4e3tjaNHj6JRo0bF3q8zMzORlpaG9u3bK3kUDGu3sLBAYmIifH19lXXGPjcMtV12djbat29v8AEcer1e+dvKygqVK1cG8GT45vHjxzFjxgxERkYW225PK+ocKu4Y6PV6vPLKK6pl/v7+ylM/7927h9DQUISGhmLFihVwc3NDeno6QkNDCz0V1hBPT094enqiWrVqcHZ2RtOmTfHZZ59Br9ebfN8y5o9u/7+EgS8iIiIqdbKzs5GSkoJevXoZXF+rVi1cuXIFSUlJqh+FzzI3N1cCEKtWrUJgYKDyY/D+/fuwsLAolB747w+kJk2aYOXKlcjPz1eCNUlJSdDr9aqgx9GjR1X5HDlyBFWqVDEYYNDpdMoPhQK+vr6wtLTE0aNHUb58eQBPnlSVlJSkmk+kwIIFC1C/fn3Url27ULvMnz8ft27dMjg/VXF1NlS24OBgnD17VrWsb9++qFatGkaNGmV0LpKCAFXBj6T79+/DzMxM9UTLgvcFP9YAICYmBq+//jomT56MgQMHqvI0VL4CRR2DmjVrIj8/H3v37jU6f9H58+fRsmVL9O7dWzW30LP27t2L5OTkQnPk2NnZwc7Ozuh2JVGvXj1cv34dFhYWRuc/8/f3x9GjR1WBwSNHjih/e3h4oGzZsrh06VKxgRwRwaJFixAWFqaamwl4cg08fvwYKSkpyo/opKQkAFDNb5aeno5r166hbNmySlnMzMzg5+cHBwcH6PV6HD16FM2aNQPwJOhUMHcZAFSpUgU6nQ7R0dFKgOZZV69eRYsWLVC/fn0sWrTI4JxNQNHXPQCcPHkSy5Ytw6pVq/D48WN0794d+/btUz1NEQCqVaumlPP//u//AACJiYnIysoqsj0L5rZ7tnzm5uaqcx14MW0PPAlYeHl5AQBWr16N119/Xdl/wbX3bFkK9m/KNe7u7m7SE3UL6peTk6Mse/z4MWJjY5W5jwrasCCIV69ePSQmJhq9tk1pT0OB5vXr1ysBHeDJfGz9+vXD/v37lfYMDAzEtm3bVNvt3r1bCdqZcl4WKAjEL1y4ENbW1mjVqhWAwseqoE7GjklBnYq7X1erVq3Qcfv000/x+++/Y8aMGfD29latM/a5Yajt6tWrh/Xr16NChQqFylCU/Px81bEHntwLnr1P1a1bt8g8gP+eQ7Vq1UJ0dDQ+//xzg+mbNGlSaI6+pKQkpd0vXLiAmzdvYtKkSUqbxMbGmlwnU8r29Nx8BUy5f5j6XYbAOb6IiIjov4rqUv539p///EdiYmIkNTVVDh48KCEhIeLq6io3btwQEcNDiZo3by41atSQXbt2yaVLl2Tbtm2yfft2EXkybGLOnDmSkJAgp06dkg8++ECsra2VOWVE/jsEZ/bs2ZKSkiIHDhyQBg0aSMOGDZU06enpYmdnJ++//74kJibKli1bxN3dXfWkuaCgIClTpowMGzZMLly4ICtXrhRbW1uZO3eukqa4Ob5ERAYNGiQ+Pj4SHR0tZ8+elQ4dOkiZMmUKDSm8c+eO2NjYyJw5cwrlkZOTI1WrVpWmTZvKgQMHJCUlRdatW6fMb2RKnU3x7DCo5ORkGTdunMTGxkpqaqps2rRJKlWqpBp2mZCQIFqtVt577z2Jj4+Xc+fOSc+ePcXBwUGZi6hgeOPo0aMlIyNDeRU1Z1lBeYo7Bn369BFvb2/ZuHGjXLp0Sfbs2aPM0XX27Flxc3OTnj17qvZbcP49rWfPnhIQEGByWxk69jdv3pRTp04pQ6pWr14tp06dUubDys/Pl1dffVVq164tO3fuVK6LMWPGyPHjx0VEZPXq1WJtbS0LFy6UxMREGTt2rNjZ2anm+Jo3b57odDqZMWOGJCYmypkzZ2ThwoUybdo0VXl++uknASAJCQmFyp+Xlyf16tWTZs2aycmTJyU2NlYCAgKkVatWSprw8HCxtbWVkJAQiYuLk3379knVqlWlW7duSppJkyaJs7OzbNy4URISEmTAgAFiZ2enGpYVEREhTk5OsmTJEklOTpbDhw8rw52vXLkilStXluDgYLly5YrqOBUw5brft2+fWFpaSocOHWT9+vWq4aqGtGnTRurWrStHjhyR2NhYefXVV0Wn0xU51DE3N1cqV64sTZs2laNHj0pycrJMnTpVNBpNoTmQ/mjbJyYmyrJlyyQpKUmOHj0qXbt2FWdnZ0lNTVUdHzs7O1m1apVcunRJdu3aJb6+vvL2228brbcpw5mPHDki3333nZw6dUrS0tIkOjpaGjduLL6+vsr8dIsWLRJLS0tp2LCh0oaNGjVSDUPbsWOHWFhYSEREhJw7d07i4+Nl1apV8sknn5S4PYtiaKjjpUuXxMbGRkaMGCEJCQkya9YsMTc3lx07dihpijovRUS+++47OXHihCQmJsrMmTOVa64o0dHRotFo5PPPP5ekpCQ5ceKEhIaGio+PjzL0+3nu18aGOhb1uWHI1atXxc3NTTp37izHjh2T5ORk2bFjh/Tp00cZwv/xxx/L3r17JTU1Vc6cOSMff/yxaDQa2bVrl5IPAHF1dZUFCxYo9ykzMzNliKEp51BiYqJYWVnJe++9J6dPn5aEhASZPXu2Mq/ZsWPHxMLCQiZMmCAXL16UFStWiI2NjTIU/saNG2JlZSUjRoyQlJQU2bRpk1StWrXQMPNnhzpu3bpVFi5cKGfPnpXU1FTZsmWL+Pv7q+Yb27Nnj5iZmcnYsWMlPj5ezpw5owxxFTHt/lHUd5nSgHN8ERER0Qv3Tw18de3aVfR6vVhZWUm5cuWka9euytxQIoYDXzdv3pS+ffuKi4uLWFtbS40aNWTLli0i8uQHcKNGjcTW1lZsbGwkODjY4Bw/3377rbzyyiui0+lEr9dLjx49VBN0i4gcOnRIAgICRKvVSqVKlWTChAmqOb+CgoJk8ODBMmjQILG3txcnJycZM2aMaqJ1UwJfv//+u/Ts2VNsbGzEw8NDpkyZYnQSeZ1Op0zA/ay0tDTp1KmT2Nvbi42NjTRo0ED1w9+UOhfn2XKlp6dLs2bNxNnZWbRarVSuXFlGjBhR6LtfwfwtDg4O4uTkJC1btpTDhw8r63v37l3osfIAim07U47BgwcPZNiwYcp5VrlyZWVulvDwcIP79fHxUe0nKytLdDqdakL14hg69gUTfj/7Cg8PV9LcvXtX/v3vf0vZsmXF0tJSvL29pUePHpKenq6kmTBhgri6ukqZMmWkd+/eMnLkSFXgS+TJ/EN16tQRKysrcXJykmbNmsmGDRtUabp37y6NGzc2WoerV6/KW2+9JWXKlBEPDw/p06ePKhgZHh4utWvXltmzZ0vZsmXF2tpaOnfuLLdu3VLSPHr0SIYOHSr29vbi6Ogow4cPl7CwMNWP9Ly8PBk/frz4+PiIpaWllC9fXpl/yVibPd0PwJTr/rfffjMY0DQmIyNDXnvtNdFqtVK+fHlZunSp+Pj4FDvHV1JSkrz11lvi7u4uNjY2UqtWLVm6dGmh/P9o28fHx0udOnVEp9OJvb29dOzYUZn/q8CjR48kIiJCfH19xdraWry9vWXw4MGFJlJ/mimBrzNnzkiLFi2U675ChQoyaNAg1f1k0aJF4uDgIOvXr5dKlSqJVquVkJCQQvMZ7tixQxo3bqzUo2HDhqrrzNT2LIqhwFfB8oJrpFKlSoXmeSrqvBQR6dWrlzg7O4uVlVWJyrVq1SqpW7eu2Nraipubm3To0KFQALSk92tjga/iPjcMSUpKkjfffFMcHR1Fp9NJtWrV5MMPP1Tuq/369RMfHx+xsrISNzc3CQ4OVgW9RJ4EvmbNmiWtWrVSzpGnHwpiyjkk8uRBAI0bNxatViuOjo4SGhqqOo6bN2+WGjVqiFarlWrVqhW6R69cuVIqVKggWq1WAgMDJSoqqtjA188//yyBgYHi4OAg1tbWUqVKFRk1alSh82f9+vXK+ePq6ipvvfWWss6U+0dR32VKgxcV+NKI/P+++H9jd+/ehYODA+7cuQN7e/uXXRwiIqJS6+HDh0hNTUXFihULPeKeiIiIiOivUtT30pLEiQwPbCciIiIiIiIiIvqHY+CLiIiIiIiIiIhKJQa+iIiIiIiIiIioVGLgi4iIiIiIiIiISiUGvoiIiIiIiIiIqFRi4IuIiIiIiIiIiEolBr6IiIiIiIiIiKhUYuCLiIiIiIiIiIhKJQa+iIiIiIiIiIioVGLgi4iIiEq969evo1WrVrC1tYWjo+PLLo5K8+bN8eGHHxaZ5v79++jUqRPs7e2h0WiQlZX1wvKmv3c7Pe+xfx4RERGoU6fOn5b/i95vnz598MYbb7zw8vzZKlSogG+++UZ5/3e+P71sixcvZpv8D9NoNPjxxx9fdjFMcvDgQdSsWROWlpZ/6n3p2fsHmYaBLyIiIvrHi4iIgEajUb2qVaumrJ8+fToyMjIQFxeHpKQkk/Jcu3Yt6tSpAxsbG/j4+OCrr74qlGbFihWoXbs2bGxsoNfr0a9fP9y8eVOVJisrC0OGDIFer4dWq0XVqlWxbdu2EtVvyZIl2L9/Pw4dOoSMjAw4ODiUaPsCz7ZRwctQ3Ywxpc5FmTRpEjQaTaFAU/PmzQuVa9CgQao0x48fR3BwMBwdHeHk5ITQ0FCcPn1aWR8TE4OOHTtCr9fD1tYWderUwYoVK0wu2/M6ffo0unfvDm9vb+h0Ovj7+2PGjBmqNH369DHY9tWrVy8yb0PHfsOGDWjdujVcXFyg0WgQFxf3J9bOuJiYGKPn1PHjx5V0IoKpU6eiatWq0Gq1KFeuHCZMmPCXljUtLQ39+/dHxYoVodPp4Ovri/DwcOTm5qrSmXLdv2iG7k/Xr19Hr1694OnpCVtbW9SrVw/r169XtnmRbT9r1iz4+/tDp9PBz88PS5cuLVTGb775Bn5+ftDpdPD29sawYcPw8OFDg/Uxdo0b0qFDB5QvXx7W1tbQ6/Xo1asXrl27ZkqzlUhx7VmcmzdvwsvLy2DwOSYmBvXq1YNWq0XlypWxePHiEpXt5MmTaNWqFRwdHeHi4oKBAwciOzu72O127tyJRo0awc7ODm5ubujUqRPS0tJUaUpyv169ejU0Gk2hoM2L+NwwZM6cOahVqxbs7e1hb2+PwMBAbN++vcT5vIhz6OrVq+jZsydcXFyg0+lQs2ZNxMbGliiP4cOHo06dOkhNTcXixYtx8+ZNtGnTBmXLloVWq4W3tzfef/993L17t0T5/tUuX76Mfv36oWzZsrCysoKPjw+GDh1q8Lw5f/483n77bbi5uSnfb8aOHYv79+8XSnvo0CG0a9cOTk5OsLa2Rs2aNfH1118jLy/vr6gWA19ERERUOlSvXh0ZGRnK68CBA8q6lJQU1K9fH1WqVIG7u3uxeW3fvh09evTAoEGDcO7cOcyePRvTp0/HzJkzlTQHDx5EWFgY+vfvj/Pnz+OHH37AsWPHMGDAACVNbm4uWrVqhbS0NKxbtw6JiYmYN28eypUrV6K6paSkwN/fHzVq1ICnpyc0Gk2Jti/wdPtkZGRg4cKF0Gg06NSpk0nbm1Lnohw/fhyRkZGoVauWwfUDBgxQlW/KlCnKuuzsbLRp0wbly5fH0aNHceDAAdjZ2SE0NBSPHj0C8OSLda1atbB+/XqcOXMGffv2RVhYGLZs2WJS+Z7XiRMn4O7ujuXLl+P8+fP45JNPMHr0aNX5MmPGDFXdLl++DGdnZ3Tp0qXIvA0d+3v37uHVV1/F5MmT/9R6Fadx48aFzql33nkHFStWRIMGDZR0Q4cOxfz58zF16lRcuHABUVFRaNiw4V9a1gsXLiA/Px+RkZE4f/48pk+fjrlz52LMmDFKGlOu+6ysrBf+w9XQ/SksLAyJiYmIiorC2bNn8dZbb+Htt9/GqVOnALy4tp8zZw5Gjx6NiIgInD9/Hp9//jmGDBmCzZs3K2lWrlyJjz/+GOHh4UhISMCCBQuwZs0aVdsVKO4af1aLFi2wdu1aJCYmYv369UhJSUHnzp2fqx2LUlx7Fqd///4G65SamorXXnsNLVq0QFxcHD788EO888472Llzp0n5Xrt2DSEhIahcuTKOHj2KHTt24Pz58+jTp0+R26WmpqJjx45o2bIl4uLisHPnTvz222946623lDQluV+npaXho48+QtOmTQut+6OfG8Z4eXlh0qRJOHHiBGJjY9GyZUt07NgR58+fL1E+f/Qcun37Npo0aQJLS0ts374d8fHxmDZtGpycnEpUjpSUFLRs2RJeXl5wdHSEmZkZOnbsiKioKCQlJWHx4sX46aefCv1D58/08OFD/Prrryanv3TpEho0aICLFy9i1apVSE5Oxty5cxEdHY3AwEDcunVLSXvkyBEEBAQgNzcXW7duRVJSEiZMmIDFixejVatWqn8qbNy4EUFBQfDy8sKePXtw4cIFDB06FOPHj0e3bt0gIi+03gbJP8CdO3cEgNy5c+dlF4WIiKhUe/DggcTHx8uDBw9ERCQ/P1/u5d57Ka/8/HyTyx0eHi61a9c2uM7Hx0cAKK/evXuLiMjt27dl4MCB4u7uLlqtVqpXry6bN28WEZHu3btL586dVfl8++234uXlpZTrq6++kkqVKhVKU65cOeX9nDlzpFKlSpKbm2u07EFBQTJkyBAZMmSI2Nvbi4uLi3z66afKfoKCglTlDwoKMphPdna29OrVS2xtbcXT01OmTp0qQUFBMnToUKP77tixo7Rs2VK17PLly9KtWzdxcnISGxsbqV+/vhw5csTkOhvz+++/S5UqVWT37t0Gy1VcWY8fPy4AJD09XVl25swZASAXL140ul27du2kb9++RZatuGMgIvLw4UMZOXKkeHl5iZWVlfj6+sr8+fON5jl48GBp0aKF0fUbN24UjUYjaWlpRZarqGOfmpoqAOTUqVOFtr19+7b0799fXF1dxc7OTlq0aCFxcXGqNF9++aW4u7tLmTJlpF+/fjJq1KhC19G8efOkWrVqotVqxc/PT2bNmmW0vLm5ueLm5ibjxo1TlsXHx4uFhYVcuHDB6HYF1+/cuXPFy8tLdDqddOnSRbKyspQ0jx8/lmHDhomDg4M4OzvLiBEjJCwsTDp27KikycvLk8mTJ4uvr69YWVmJt7e3jB8/3uh+p0yZIhUrVlTem3Ldx8TEiE6nkx49esiuXbskLy/PaP4iIpmZmfL666+LtbW1VKhQQZYvXy4+Pj4yffp0ETF+f7K1tZWlS5eq8nJ2dpZ58+YZ3M/ztn1gYKB89NFHqmXDhw+XJk2aKO+HDBlS6D7xbBqR4q9xU2zatEk0Go1yz1y0aJE4ODjIxo0bpXLlyqLVaqV169aq+4CIyI8//ih169YVrVYrFStWlIiICHn06JGyvqTt+bTZs2dLUFCQREdHCwC5ffu2sm7kyJFSvXp1VfquXbtKaGio8r6o8zIyMlLc3d1V55Ep97UffvhBLCwsVNtFRUWp2s7U+/Xjx4+lcePGMn/+fOndu7fqmjLE0OeGIWfPnpU2bdqIra2tuLu7S8+ePeXXX38tchsnJyfVfRWAzJ49W9q0aSPW1tZSsWJF+eGHH4rM49lzSETkwIEDEhQUJDqdThwdHaV169Zy69YtEREZNWqUvPrqq0XmuXTpUqlfv76UKVNGPDw8pHv37pKZmSki/70PP/1atGiRwXxmzJghXl5eqmVRUVHSoEED0Wq14uLiIm+88Yayrrj7h0jR32XS0tLE0tJSOnbsKBs2bCjyu4iISJs2bcTLy0vu37+vWp6RkSE2NjYyaNAgEXny3fCVV16RBg0aFLoHxsXFiUajkUmTJonIk+8mLi4u8tZbbxXaX1RUlACQ1atXGy3Ts99Ln1aSOBF7fBEREZFRDx4/QMDKgJfyevD4QYnKevHiRZQtWxaVKlVCjx49kJ6eDuBJD4Q2bdrg7bffRkZGBmbMmIH8/Hy0bdsWBw8exPLlyxEfH49JkybB3NwcAJCTkwNra2tV/jqdDleuXMEvv/wCAAgMDMTly5exbds2iAgyMzOxbt06tGvXTtkmKioKgYGBGDJkCDw8PFCjRg1MnDixUNf+JUuWwMLCAseOHcOMGTPw9ddfY/78+QCADRs2YMCAAQgMDERGRgY2bNhgsP4jRozA3r17sWnTJuzatQsxMTE4efKk0fbKzMzE1q1b0b9/f2VZdnY2goKCcPXqVURFReH06dMYOXIk8vPzTa6zMUOGDMFrr72GkJAQo2lWrFgBV1dX1KhRA6NHj1YNl/Dz84OLiwsWLFiA3NxcPHjwAAsWLIC/vz8qVKhgNM87d+7A2dm52PIVdQyAJz1GVq1ahW+//RYJCQmIjIxEmTJlnnu/CxYsQEhICHx8fIymMfXYG9KlSxfcuHED27dvx4kTJ1CvXj0EBwcr/7Ffu3YtIiIiMHHiRMTGxkKv12P27NmqPFasWIGxY8diwoQJSEhIwMSJE/HZZ59hyZIlBvcZFRWFmzdvom/fvsqyzZs3o1KlStiyZQsqVqyIChUq4J133lH1HACA5ORkrF27Fps3b8aOHTtw6tQpDB48WFk/bdo0LF68GAsXLsSBAwdw69YtbNy4UZXH6NGjMWnSJHz22WeIj4/HypUr4eHhYbSNnj1Gplz3zZo1w/bt26HVatG5c2f4+PhgzJgxSExMNLiPPn364PLly9izZw/WrVuH2bNn48aNG8p6Q/cn4EmPrjVr1uDWrVvIz8/H6tWr8fDhQzRv3tzgfp637Y3V+dixY0pPysaNG+PEiRM4duwYgCe9QrZt21boujflGi/KrVu3sGLFCjRu3BiWlpbK8vv372PChAlYunQpDh48iKysLHTr1k1Zv3//foSFhWHo0KGIj49HZGQkFi9erBrSWdL2LBAfH49x48Zh6dKlMDMr/NP58OHDheobGhqKw4cPK++LOi9zcnJgZWWlylun0wGAqtfys+rXrw8zMzMsWrQIeXl5uHPnDpYtW4aQkBCl7Uy9X48bNw7u7u6qzwJjDH1uGJKVlYWWLVuibt26iI2NxY4dO5CZmYm3337bYPq8vDysXr0a9+7dQ2BgoGrdZ599hk6dOuH06dPo0aMHunXrhoSEBIP5GDqH4uLiEBwcjFdeeQWHDx/GgQMH0L59e+VzOCoqCg0aNECXLl3g7u6OunXrYt68eap8Hz16hC+++AKnT5/Gjz/+iLS0NKVXnre3NzIyMmBvb49vvvkGGRkZ6Nq1a6GyXbt2DRs2bEBQUJCybOvWrXjzzTfRrl07nDp1CtHR0aoemcXdP4r7LuPj44PDhw/Dx8cH7777LvR6PT744AOcOHHCYNvt3LkTgwcPVs7BAp6enujRowfWrFkDEUFcXBzi4+MxfPjwQtdF7dq1ERISglWrVgEAdu3ahZs3b+Kjjz4qtM/27dujatWqSto/VbGhsb8B9vgiIiL6azz7n7V7ufekxuIaL+V1L/eeyeXetm2brF27Vk6fPi07duyQwMBAKV++vNy9e1dEnvyHuqAnhYjIzp07xczMTBITEw3mFxkZKTY2NvLTTz9JXl6eJCYmSrVq1QSAHDp0SEm3du1aKVOmjFhYWAgAad++veo/qn5+fqLVaqVfv34SGxsrq1evFmdnZ4mIiFDSBAUFib+/v6p30ahRo8Tf3195P3ToUKM9vUSe9LSwsrKStWvXKstu3rwpOp3OaK+LyZMni5OTk+q/qJGRkWJnZyc3b940uq/i6mzIqlWrpEaNGsq+DPUGiYyMlB07dsiZM2dk+fLlUq5cOXnzzTdVac6ePSu+vr5iZmYmZmZm4ufnV2SPqTVr1oiVlZWcO3euyPIVdwwSExMFgOzevbvIfAocPHhQLCwsZOfOnQbXX716VczNzWXNmjXF5lXUsTfW42v//v1ib28vDx8+VC339fWVyMhIEXnS02fw4MGq9QEBAaoeX76+vrJy5UpVmi+++EICAwMNlqdt27bStm1b1bJ3331XtFqtBAQEyL59+2TPnj1Sp04dVW+48PBwMTc3lytXrijLtm/fLmZmZpKRkSEiInq9XqZMmaKsf/TokXh5eSm9U+7evStardakHjwiIhcvXhR7e3v5/vvvlWWmXvcF7t+/LytXrpQ2bdqIhYWFBAQEyJw5c5SeagXnzbFjx5RtEhISBICqx8az9yeRJ704WrduLQDEwsJC7O3tjZ5PIs/f9qNHjxZPT0+JjY2V/Px8OX78uHh4eAgAuXbtmpJuxowZYmlpqVz3BT0/CphyjRszcuRIsbGxEQDSqFEj+e2335R1ixYtEgBKr1OR/7bh0aNHRUQkODhYJk6cqMpz2bJlotfrlfclbU+RJ708a9WqJcuWLRMRkT179hTq8VWlSpVC+966dasAkPv37xd7Xp47d04sLCxkypQpkpOTI7du3ZJOnToJgEL5PismJkbc3d3F3NxcAEhgYKCqbCLF36/3798v5cqVU3piFdfjy9DnhiFffPGFtG7dWrXs8uXLAkD1uXvmzBmxtbUVc3NzcXBwkK1bt6q2MXSuBQQEyHvvvadaVtQ51L1790K9E5+m1WpFq9XK6NGj5eTJkxIZGSnW1tayePFio9sU9ED+/ffflWUODg4Ge3p169ZNdDqd0v5Pt11gYKD06NHD4D5MuX8U913maY8ePZKoqCjp3LmzaLVaqVGjhnz11Vdy/fp1ERE5cuSIAJCNGzca3P7rr78WAJKZmSmrV6822ttYROSDDz4QnU4nIiKTJk0qdN08rUOHDqrvO896UT2+GPgiIiIixT91qOOzbt++Lfb29sqQiWd/WE6ePFnKly9vdPv8/HwZOXKkWFtbi7m5uTg5OUlERITqB9j58+eVH+MFAbeaNWtKv379lHyqVKki3t7e8vjxY2XZtGnTxNPTU3kfFBRUaCjejz/+KBYWFsp2Twc/9u3bJ7a2tspr+fLlEhcXJwDkl19+UeVTp04doz8+/fz85P3331cte++996RZs2ZG26W4OhsqW3p6uri7u8vp06dVdS7uR3HBsKLk5GQReRJkaNiwoYSFhcmxY8fk8OHD0qlTJ6levXqhYRkiIj///LPY2NjIkiVLlGWGyldQnqKOwZo1a8Tc3LzYAJ/Ik+Ccq6urfPHFF0bTTJw4UVxcXCQnJ0dZtnz5clXZ9u3bJyLPF/iaOXOmmJmZqfKztbUVMzMzGTlypIiIODo6qtpGROTDDz9UAl/Z2dkCQHQ6nSoPrVYr7u7uhcpy+fJlMTMzk3Xr1qmWDxgwoNCP3RMnTggAZQheeHi4asihiEhWVpYAkJiYGOXvvXv3qtK88cYbyo/0o0ePCgC5dOmSwbZ62pUrV8TX11f69++vWm7KdW9MYmKi1KtXT/WjtOAcenYokKOjY7GBr/fff18aNmwoP/30k8TFxUlERIQ4ODjImTNnCu37j7T9/fv3pW/fvmJhYSHm5uZStmxZGTlypABQfhDv2bNHPDw8ZN68eXLmzBnZsGGDeHt7K8MqTbnG3333XdV59LRff/1VEhMTZdeuXdKkSRNp166dcv9ftGiR0TYsCEy4urqKtbW1Kn9ra2sBIPfu3TOpPQuG5Nna2sorr7wiIiLDhg2Trl27Kvt8nsCXKeflihUrxMPDQ8zNzcXKyko++ugj8fDwUIaKvfLKK0rZ2rRpIyJPhp5VqVJFRowYISdPnpS9e/dKUFCQBAcHK21X3P367t27UqFCBdm2bZtSluICX4Y+Nwy1XefOncXS0rLQPQiAan85OTly8eJFiY2NlY8//lhcXV3l/PnzynoABu9TzZs3Vy0r6hzy9/eXsWPHGq2TpaVloWD+v//9b2nUqJHyPjY2Vl5//XXx9vaWMmXKKEG2p8tqLPCVkZEhCQkJsmnTJnnllVdUQTudTicLFy40WC5T7h/FfZcx5tq1axISEiIAlOu0IPC1YcMGg9sUBL5u376tBL5OnjxpMO0HH3wgDg4OIvLfwFfB0NJndejQwehUFSIvLvBl8SJ6jREREVHppNFoYGNp87KLUWKOjo6oWrUqkpOTDa5/thv/szQaDSZPnoyJEyfi+vXrcHNzQ3R0NACgUqVKAIAvv/wSTZo0wYgRIwAAtWrVgq2tLZo2bYrx48dDr9dDr9fD0tJSGXYAAP7+/rh+/Tpyc3NhZWVV4ro1aNBA9RQ/Dw8PXLp0qUR57N+/H4mJiVizZo1qeXHtUlydDZUtOjoaN27cQL169ZTleXl52LdvH2bOnImcnBxV+xQICAgA8GQInK+vL1auXIm0tDQcPnxYGVqxcuVKODk5YdOmTaqhT3v37kX79u0xffp0hIWFKcsNlc8UxbVLgfj4eAQHB2PgwIH49NNPDaYRESxcuBC9evVSHf8OHToodQZQ4gcgPC07Oxt6vR4xMTGF1jk6OpqcBwDMmzdPVS4ABo/XokWL4OLigg4dOqiW6/V6WFhYoGrVqsoyf39/AEB6ejr8/PxMKk9xTD1G165dQ4sWLdC4cWN8//33qnWmXPdPe/z4MXbt2oVly5Zh06ZNqFSpEqZMmYIePXr8obqkpKRg5syZOHfunPLUz9q1a2P//v2YNWsW5s6dq0r/R9pep9Nh4cKFiIyMRGZmJvR6Pb7//nvlSYHAk6FmvXr1wjvvvAMAqFmzJu7du4eBAwfik08+wYkTJ4q9xseNG2dwqBMAuLq6wtXVFVWrVoW/vz+8vb1x5MiRQkPejMnOzsbnn3+umti9gLW1tUntOX/+fDx48GR4fcEQuZ9//hlnz57FunXrAECZgNvV1RWffPIJPv/8c3h6eiIzM1O1z8zMTNjb20On05l0Xv7rX//Cv/71L2RmZsLW1hYajQZff/21cs5t27ZNGXZakN+sWbPg4OCgegDI8uXL4e3tjaNHj6JRo0bF3q8zMzORlpaG9u3bK3kUDGu3sLBAYmIifH19lXXGPjcMtV12djbat29v8AEcer1e+dvKygqVK1cG8GT45vHjxzFjxgxERkYW225PK+ocKu4Y6PV6vPLKK6pl/v7+ylM/7927h9DQUISGhmLFihVwc3NDeno6QkNDCz0V1hBPT094enqiWrVqcHZ2RtOmTfHZZ59Br9ebfN8ypiTbiwj279+PZcuW4YcffoCTkxPGjh2rDFutXLkyNBoNEhIS8OabbxbaPiEhAW5ubnB0dESVKlWUZXXr1jWYtuC+83Taxo0bG0xbp04dk+vxvBj4IiIiolInOzsbKSkp6NWrl8H1tWrVwpUrV5CUlKT6Ufgsc3NzJQCxatUqBAYGKj8G79+/DwsLi0Lpgf/+QGrSpAlWrlyJ/Px8JViTlJQEvV6vCnocPXpUlc+RI0dQpUoVgwEGnU6n/FAo4OvrC0tLSxw9ehTly5cH8ORJVUlJSar5RAosWLAA9evXR+3atQu1y/z583Hr1i2D81MVV2dDZQsODsbZs2dVy/r27Ytq1aph1KhRBusIQAlQFfxIun//PszMzFRPtCx4X/BjDQBiYmLw+uuvY/LkyRg4cKAqT0PlK1DUMahZsyby8/Oxd+9eo/MXnT9/Hi1btkTv3r1Vcws9a+/evUhOTi40R46dnR3s7OyMblcS9erVw/Xr12FhYWF0/jN/f38cPXpUFRg8cuSI8reHhwfKli2LS5cuFRvIEREsWrQIYWFhqrmZgCfXwOPHj5GSkqL8iE5KSgIA1fxm6enpuHbtGsqWLauUxczMDH5+fnBwcIBer8fRo0fRrFkzAE+CTgVzlwFPflzpdDpER0crAZpnXb16FS1atED9+vWxaNEig3M2AUVf9wBw8uRJLFu2DKtWrcLjx4/RvXt37Nu3T/U0RQCoVq2aUs7/+7//AwAkJiYiKyuryPYsmNvu2fKZm5urznXgxbQ98CRg4eXlBQBYvXo1Xn/9dWX/Bdfes2Up2L8p17i7u7tJT9QtqF9OTo6y7PHjx4iNjVXmPipow4IgXr169ZCYmGj02jalPQ0FmtevX68EdIAn87H169cP+/fvV9ozMDAQ27ZtU223e/duJWhnynlZoCAQv3DhQlhbW6NVq1YACh+rgjoZOyYFdSrufl2tWrVCx+3TTz/F77//jhkzZsDb21u1ztjnhqG2q1evHtavX48KFSoUKkNR8vPzVcceeHIvePY+ZSjY8nQewH/PoVq1aiE6Ohqff/65wfRNmjQpNEdfUlKS0u4XLlzAzZs3MWnSJKVNYmNjTa6TKWV7em6+AqbcP0z5LpOUlIRly5Zh+fLl+O2339C5c2f8+OOPCAoKUn2euri4oFWrVpg9ezaGDRumCqpdv34dK1aswJAhQwAAdevWRbVq1TB9+nR069ZNdS6ePn0aP/30k/I03NDQUDg7O2PatGmFAl9RUVG4ePEivvnmG1Ob8PkV2yfsb4BDHYmIiP4aRXUp/zv7z3/+IzExMZKamioHDx6UkJAQcXV1lRs3boiI4aFEzZs3lxo1asiuXbvk0qVLsm3bNtm+fbuIPBk2MWfOHElISJBTp07JBx98INbW1sqcMiL/HYIze/ZsSUlJkQMHDkiDBg2kYcOGSpr09HSxs7OT999/XxITE2XLli3i7u6uetJcUFCQlClTRoYNGyYXLlyQlStXiq2trcydO1dJU9wcXyIigwYNEh8fH4mOjpazZ89Khw4dpEyZMoWGFN65c0dsbGxkzpw5hfLIycmRqlWrStOmTeXAgQOSkpIi69atU+Y3MqXOpnh2GFRycrKMGzdOYmNjJTU1VTZt2iSVKlVSDbtMSEgQrVYr7733nsTHx8u5c+ekZ8+e4uDgoMxFVDC8cfTo0ZKRkaG8ipqzrKA8xR2DPn36iLe3t2zcuFEuXboke/bsUeboOnv2rLi5uUnPnj1V+y04/57Ws2dPCQgIMLmtDB37mzdvyqlTp5QhVatXr5ZTp04p82Hl5+fLq6++KrVr15adO3cq18WYMWPk+PHjIiKyevVqsba2loULF0piYqKMHTtW7OzsVENO5s2bJzqdTmbMmCGJiYly5swZWbhwoUybNk1Vnp9++kkASEJCQqHy5+XlSb169aRZs2Zy8uRJiY2NlYCAAGnVqpWSJjw8XGxtbSUkJETi4uJk3759UrVqVenWrZuSZtKkSeLs7CwbN26UhIQEGTBggNjZ2amGZUVERIiTk5MsWbJEkpOT5fDhw8pw5ytXrkjlypUlODhYrly5ojpOBUy57vft2yeWlpbSoUMHWb9+vWq4qiFt2rSRunXrypEjRyQ2NlZeffVV0el0RQ51zM3NlcqVK0vTpk3l6NGjkpycLFOnThWNRlNoDqQ/2vaJiYmybNkySUpKkqNHj0rXrl3F2dlZUlNTVcfHzs5OVq1aJZcuXZJdu3aJr6+vvP3220brbcpw5iNHjsh3330np06dkrS0NImOjpbGjRuLr6+vMj/dokWLxNLSUho2bKi0YaNGjVTD0Hbs2CEWFhYSEREh586dk/j4eFm1apV88sknJW7Pohga6njp0iWxsbGRESNGSEJCgsyaNUvMzc1lx44dSpqizksRke+++05OnDghiYmJMnPmTOWaK0p0dLRoNBr5/PPPJSkpSU6cOCGhoaHi4+OjDP1+nvu1saGORX1uGHL16lVxc3OTzp07y7FjxyQ5OVl27Nghffr0UYbwf/zxx7J3715JTU2VM2fOyMcffywajUZ27dql5ANAXF1dZcGCBcp9yszMTBliaMo5lJiYKFZWVvLee+/J6dOnJSEhQWbPnq3Ma3bs2DGxsLCQCRMmyMWLF2XFihViY2OjDIW/ceOGWFlZyYgRIyQlJUU2bdokVatWLTTM/Nmhjlu3bpWFCxfK2bNnJTU1VbZs2SL+/v6q+cb27NkjZmZmMnbsWImPj5czZ84oQ1xFTLt/FPVd5pdffhEzMzNp2bKlLFmyRLKzs4s8bklJSeLq6ipNmzaVvXv3Snp6umzfvl1q1KghderUUc1pduDAAbGxsZE33nhDjh49Kr/88ousXbtWvL29pU2bNqopHn744QcxNzeXAQMGyOnTpyU1NVXmz58vTk5OMmDAgCLLxDm+iIiI6IX7pwa+unbtKnq9XqysrKRcuXLStWtXZW4oEcOBr5s3b0rfvn3FxcVFrK2tpUaNGrJlyxYRefIDuFGjRmJrays2NjYSHBxscI6fb7/9Vl555RXR6XSi1+ulR48eqgm6RUQOHTokAQEBotVqpVKlSjJhwgTVF8KgoCAZPHiwDBo0SOzt7cXJyUnGjBmjmuPMlMDX77//Lj179hQbGxvx8PCQKVOmGJ1EXqfTKRNwPystLU06deok9vb2YmNjIw0aNFD98DelzsV5tlzp6enSrFkzcXZ2Fq1WK5UrV5YRI0YU+u5XMH+Lg4ODODk5ScuWLeXw4cPK+t69exd6rDyAYtvOlGPw4MEDGTZsmHKeVa5cWZmbJTw83OB+fXx8VPvJysoSnU6nmlC9OIaOfcGE38++wsPDlTR3796Vf//731K2bFmxtLQUb29v6dGjh6SnpytpJkyYIK6urlKmTBnp3bu3jBw5stBcKytWrJA6deqIlZWVODk5SbNmzQrNAdO9e3dp3Lix0TpcvXpV3nrrLSlTpox4eHhInz59VMHI8PBwqV27tsyePVvKli0r1tbW0rlzZ9WcMI8ePZKhQ4eKvb29ODo6yvDhwyUsLEz1Iz0vL0/Gjx8vPj4+YmlpKeXLl1fmXzLWZk/3AzDluv/tt98MBjSNycjIkNdee020Wq2UL19eli5dKj4+PsXO8ZWUlCRvvfWWuLu7i42NjdSqVUuWLl1aKP8/2vbx8fFSp04d0el0Ym9vLx07dlTm/yrw6NEjiYiIEF9fX7G2thZvb28ZPHiw0cmqRUwLfJ05c0ZatGihXPcVKlSQQYMGqe4nixYtEgcHB1m/fr1UqlRJtFqthISEFJrPcMeOHdK4cWOlHg0bNlRdZ6a2Z1EMBb4KlhdcI5UqVSo0z1NR56WISK9evcTZ2VmsrKxKVK5Vq1ZJ3bp1xdbWVtzc3KRDhw6FAqAlvV8bC3wV97lhSFJSkrz55pvi6OgoOp1OqlWrJh9++KFyX+3Xr5/4+PiIlZWVuLm5SXBwsCroJfIk8DVr1ixp1aqVco48/VAQU84hkScPAmjcuLFotVpxdHSU0NBQ1XHcvHmz1KhRQ7RarVSrVq3QPXrlypVSoUIF0Wq1EhgYKFFRUcUGvn7++WcJDAwUBwcHsba2lipVqsioUaMKnT/r169Xzh9XV1d56623lHWm3D+K+i5z7969QtdKcVJTU6V3797i4eEhGo1GAMhbb72lzJf3tDNnzkinTp3E2dlZuZ++//778ujRo0Jp9+3bJ6GhoWJvb6+knTx5crHleVGBL43I/++L/zd29+5dODg44M6dO7C3t3/ZxSEiIiq1Hj58iNTUVFSsWLHQI+6JiIiI6H9HeHg4vv76a+zevRuNGjUymi4/Px/9+/fHzp07sXfvXmVuL0MePnyIjh074vLly9i7d69qKLmhtMa+l5YkTmR4YDsREREREREREf3P+vzzz/Htt9/iyJEjheYYfJqZmRkWLFiAUaNGYf/+/UXmaW1tjU2bNiEsLAz79u170UU2iD2+iIiISMEeX0RERET0d8AeX0REREREREREREVg4IuIiIiIiIiIiEolBr6IiIiIiIiIiKhUYuCLiIiIiIiIiIhKJQa+iIiIiIiIiIioVGLgi4iIiIiIiIiISiUGvoiIiIiIiIiIqFRi4IuIiIhKvevXr6NVq1awtbWFo6Pjyy6OSvPmzfHhhx8Wmeb+/fvo1KkT7O3todFokJWV9cLypr93Oz3vsX8eERERqFOnzp+W/4veb58+ffDGG2+88PKUFv/09qlQoQK++eabEm1z8OBB1KxZE5aWlv/Yui9evLjYz6nnPbZ/53vd/7q0tDRoNBrExcW97KKUSgx8ERER0T9eREQENBqN6lWtWjVl/fTp05GRkYG4uDgkJSWZlOfatWtRp04d2NjYwMfHB1999VWhNCtWrEDt2rVhY2MDvV6Pfv364ebNm6o0WVlZGDJkCPR6PbRaLapWrYpt27aVqH5LlizB/v37cejQIWRkZMDBwaFE2xd4to0KXobqZowpdS7KpEmToNFoCv34at68eaFyDRo0SJXm+PHjCA4OhqOjI5ycnBAaGorTp08r62NiYtCxY0fo9XrY2tqiTp06WLFihclle16nT59G9+7d4e3tDZ1OB39/f8yYMUOVpk+fPgbbvnr16kXmbejYb9iwAa1bt4aLi8tL/aEUExNj9Jw6fvy4kk5EMHXqVFStWhVarRblypXDhAkT/tKypqWloX///qhYsSJ0Oh18fX0RHh6O3NxcVTpTrvuSKMk1l5OTgzp16hQ6pn/FeW3qsTSlfWJiYlCvXj1otVpUrlwZixcvfiFlfPjwIYYMGQIXFxeUKVMGnTp1QmZmpirN8OHDUadOHaSmpmLx4sVYvHix0XrduHHDpP2uXr0aGo2mUKCpuGNr6jn3MkVERKBatWqwtbWFk5MTQkJCcPTo0Re6D2P3fFOOp6H2Xb169XOVQ0TQtm1baDQa/Pjjj6p1H3zwAerXrw+tVmswCP/w4UP06dMHNWvWhIWFxXMFHUUEY8eOhV6vh06nQ0hICC5evFiiPEz5rCHDGPgiIiKiUqF69erIyMhQXgcOHFDWpaSkoH79+qhSpQrc3d2LzWv79u3o0aMHBg0ahHPnzmH27NmYPn06Zs6cqaQ5ePAgwsLC0L9/f5w/fx4//PADjh07hgEDBihpcnNz0apVK6SlpWHdunVITEzEvHnzUK5cuRLVLSUlBf7+/qhRowY8PT2h0WhKtH2Bp9snIyMDCxcuhEajQadOnUza3pQ6F+X48eOIjIxErVq1DK4fMGCAqnxTpkxR1mVnZ6NNmzYoX748jh49igMHDsDOzg6hoaF49OgRAODQoUOoVasW1q9fjzNnzqBv374ICwvDli1bTCrf8zpx4gTc3d2xfPlynD9/Hp988glGjx6tOl9mzJihqtvly5fh7OyMLl26FJm3oWN/7949vPrqq5g8efKfWq/iNG7cuNA59c4776BixYpo0KCBkm7o0KGYP38+pk6digsXLiAqKgoNGzb8S8t64cIF5OfnIzIyEufPn8f06dMxd+5cjBkzRkljynWflZWFu3fvmrzfklxzI0eORNmyZQst/yvOa1OOpSntk5qaitdeew0tWrRAXFwcPvzwQ7zzzjvYuXPnHy7jsGHDsHnzZvzwww/Yu3cvrl27hrfeekuVJiUlBS1btoSXlxccHR3RtWvXQvUKDQ1FUFCQSZ8FaWlp+Oijj9C0adNC64o7tqaccy9b1apVMXPmTJw9exYHDhxAhQoV0Lp1a/z6668vJP+i7vmmHE8AWLRokaqdn7cn3zfffFPkZ2e/fv3QtWtXg+vy8vKg0+nwwQcfICQk5Ln2P2XKFHz77beYO3cujh49CltbW4SGhuLhw4cm52HKZw0ZIf8Ad+7cEQBy586dl10UIiKiUu3BgwcSHx8vDx48EBGR/Px8ybt376W88vPzTS53eHi41K5d2+A6Hx8fAaC8evfuLSIit2/floEDB4q7u7totVqpXr26bN68WUREunfvLp07d1bl8+2334qXl5dSrq+++koqVapUKE25cuWU93PmzJFKlSpJbm6u0bIHBQXJkCFDZMiQIWJvby8uLi7y6aefKvsJCgpSlT8oKMhgPtnZ2dKrVy+xtbUVT09PmTp1qgQFBcnQoUON7rtjx47SsmVL1bLLly9Lt27dxMnJSWxsbKR+/fpy5MgRk+tszO+//y5VqlSR3bt3GyxXcWU9fvy4AJD09HRl2ZkzZwSAXLx40eh27dq1k759+xZZtuKOgYjIw4cPZeTIkeLl5SVWVlbi6+sr8+fPN5rn4MGDpUWLFkbXb9y4UTQajaSlpRVZrqKOfWpqqgCQU6dOFdr29u3b0r9/f3F1dRU7Oztp0aKFxMXFqdJ8+eWX4u7uLmXKlJF+/frJqFGjCl1H8+bNk2rVqolWqxU/Pz+ZNWuW0fLm5uaKm5ubjBs3TlkWHx8vFhYWcuHCBaPbFVy/c+fOFS8vL9HpdNKlSxfJyspS0jx+/FiGDRsmDg4O4uzsLCNGjJCwsDDp2LGjkiYvL08mT54svr6+YmVlJd7e3jJ+/Hij+50yZYpUrFhReW/KdR8TEyM6nU569Oghu3btkry8PKP5G2LomhMR2bZtm1SrVk3Onz9v9Jg+7dnz+kW3j6FjaUr7jBw5UqpXr65K07VrVwkNDS2yPpmZmfL666+LtbW1VKhQQZYvXy4+Pj4yffp0ERHJysoSS0tL+eGHH5RtEhISBIAcPnxYuRaefi1atKjQfm7cuCGWlpaydOnSIssj8qRNGzduLPPnz5fevXur2tIQY8f2ac+ecyIiixYtEm9vb9HpdPLGG2/I1KlTxcHBoch8CsoTERGhXOPvvvuu5OTkKGme5zOh4Hf3Tz/9pCxLT0+XLl26iIODgzg5OUmHDh0kNTW1yPKJFH3PL+54FgAgGzduLHI/P/74o9StW1e0Wq1UrFhRIiIi5NGjR6o0p06dknLlyklGRkaReRb1XaJAUedCVFSUNGjQQLRarbi4uMgbb7whIk++S3l6espXX32lpM3KyhKtViurVq0Skf/ez1etWiWBgYHK95KYmJgiy2Pos8ZYOf6Jnv1e+rSSxInY44uIiIiMkgcPkFiv/kt5yYMHJSrrxYsXUbZsWVSqVAk9evRAeno6gCf/cW7Tpg3efvttZGRkYMaMGcjPz0fbtm1x8OBBLF++HPHx8Zg0aRLMzc0BPBlyZG1trcpfp9PhypUr+OWXXwAAgYGBuHz5MrZt2wYRQWZmJtatW4d27dop20RFRSEwMBBDhgyBh4cHatSogYkTJyIvL0+V95IlS2BhYYFjx45hxowZ+PrrrzF//nwAwIYNGzBgwAAEBgYiIyMDGzZsMFj/ESNGYO/evdi0aRN27dqFmJgYnDx50mh7ZWZmYuvWrejfv7+yLDs7G0FBQbh69SqioqJw+vRpjBw5Evn5+SbX2ZghQ4bgtddeK/K/5StWrICrqytq1KiB0aNH4/79+8o6Pz8/uLi4YMGCBcjNzcWDBw+wYMEC+Pv7o0KFCkbzvHPnDpydnYstX1HHAADCwsKwatUqfPvtt0hISEBkZCTKlCnz3PtdsGABQkJC4OPjYzSNqcfekC5duuDGjRvYvn07Tpw4gXr16iE4OBi3bt0C8GTIWkREBCZOnIjY2Fjo9XrMnj1blceKFSswduxYTJgwAQkJCZg4cSI+++wzLFmyxOA+o6KicPPmTfTt21dZtnnzZlSqVAlbtmxBxYoVUaFCBbzzzjtKOQokJydj7dq12Lx5M3bs2IFTp05h8ODByvpp06Zh8eLFWLhwIQ4cOIBbt25h48aNqjxGjx6NSZMm4bPPPkN8fDxWrlwJDw8Po2307DEy5bpv1qwZtm/fDq1Wi86dO8PHxwdjxoxBYmKi0f0UMHTNFSwfMGAAli1bBhsbm2LzMVT2F90+ho6lKe1z+PDhQtd4aGgoDh8+XGR9+vTpg8uXL2PPnj1Yt24dZs+erRqKeOLECTx69EiVd7Vq1VC+fHkcPnwY3t7eyMjIgL29Pb755htkZGQY7L2zdOlS2NjYoHPnzkWWBwDGjRsHd3f3QsfLEGPH9lnPHrejR4+if//+eP/99xEXF4cWLVpg/Pjxxe4PAKKjo5GQkICYmBisWrUKGzZswOeff66sL+lnQm5uLr7//ns4ODigdu3aAIBHjx4hNDQUdnZ22L9/Pw4ePIgyZcqgTZs2xQ7ZLOqeX9zxfDYfV1dXNGzYEAsXLoSIKOv279+PsLAwDB06FPHx8YiMjMTixYtVQ6nv37+Pf/3rX5g1axY8PT2LLPMfsXXrVrz55pto164dTp06hejoaKVna2pqKq5fv66qr4ODAwICAgrVd8SIEfjPf/6DU6dOITAwEO3bty9yOoFnz6miyvE/7YWH5P4E7PFFRET013j2P2t59+5JvF+1l/LKu3fP5HJv27ZN1q5dK6dPn5YdO3ZIYGCglC9fXu7evSsiT/4TX9DTS0Rk586dYmZmJomJiQbzi4yMFBsbG/npp58kLy9PEhMTpVq1agJADh06pKRbu3atlClTRiwsLASAtG/fXtW7y8/PT7RarfTr109iY2Nl9erV4uzsLBEREUqaoKAg8ff3V/UuGjVqlPj7+yvvhw4darSnl8iT/6xbWVnJ2rVrlWU3b94UnU5n9L/7kydPFicnJ9V/USMjI8XOzk5u3rxpdF/F1dmQVatWSY0aNZR9Gep1EBkZKTt27JAzZ87I8uXLpVy5cvLmm2+q0pw9e1Z8fX3FzMxMzMzMxM/Pr8geU2vWrBErKys5d+5ckeUr7hgkJiYKANm9e3eR+RQ4ePCgWFhYyM6dOw2uv3r1qpibm8uaNWuKzauoY2+sx9f+/fvF3t5eHj58qFru6+srkZGRIiISGBgogwcPVq0PCAhQ9Xbw9fWVlStXqtJ88cUXEhgYaLA8bdu2lbZt26qWvfvuu6LVaiUgIED27dsne/bskTp16qh6KISHh4u5ublcuXJFWbZ9+3YxMzOTjIwMERHR6/UyZcoUZf2jR4/Ey8tL6Xlx9+5d0Wq1Mm/ePINle9bFixfF3t5evv/+e2WZqdd9gfv378vKlSulTZs2YmFhIQEBATJnzhxVT7WnGbrm8vPzpU2bNvLFF1+ISNG9+AoYOq9fdPsYOpamtE+VKlVk4sSJqu22bt0qAOT+/fsG91VwfR07dkxZVtD7p6DH14oVK8TKyqrQtv/3f/8nI0eOVN47ODgY7OlVwN/fX957770i6y7y5BoqV66c/PrrryJSdC8fEcPH9lmGzrnu3btLu3btVOm6du1qUo8vZ2dnuffU5+ScOXOkTJkykpeXV6LPhM2bN4utra1oNBopW7as6jgsW7ZM/Pz8VPfGnJwc0el0Ru9vIsXf8009nuPGjZMDBw7IyZMnZdKkSaLVamXGjBnK+uDg4ELn27Jly0Sv1yvvBw4cKP3791fe40/q8RUYGCg9evQwuM3BgwcFgFy7dk21vEuXLvL222+LyH+v/UmTJinrC67jyZMnG8332c+aosrxT/SienxZ/PWhNiIiIvqn0Oh08Dt54qXt21Rt27ZV/q5VqxYCAgLg4+ODtWvXGvwPfFxcHLy8vFC1alWD+Q0YMAApKSl4/fXX8ejRI9jb22Po0KGIiIiAmdmTDvPx8fEYOnQoxo4di9DQUGRkZGDEiBEYNGgQFixYAADIz8+Hu7s7vv/+e5ibm6N+/fq4evUqvvrqK4SHhyv7a9SokWrukcDAQEybNg15eXlKL7QC+/fvV9U3MjISNWrUQG5uLgICApTlzs7O8PPzM9pmCxcuRI8ePVQ9OOLi4lC3bl2jPZWKq7OhsjVr1gxDhw7F7t27C/UWedrAgQOVv2vWrAm9Xo/g4GCkpKTA19cXDx48QP/+/dGkSROsWrUKeXl5mDp1Kl577TUcP34cumfOlz179qBv376YN2+eMoG8ofL16NEDQNHHIC4uDubm5ggKCjJa/gLnzp1Dx44dER4ejtatWxtMs2TJEjg6OqrmqlmxYgXeffdd5f327dsNzitkitOnTyM7OxsuLi6q5Q8ePEBKSgoAICEhodDDAwIDA7Fnzx4AwL1795CSkoL+/fur5nB7/PixwYcrXLlyBTt37sTatWtVy/Pz85GTk4OlS5cq19uCBQtQv359JCYmKudo+fLlVXPfBQYGIj8/H4mJidDpdMjIyFCd3xYWFmjQoIHS+yMhIQE5OTkIDg4utn2uXr2KNm3aoEuXLqq6mXLdP02n06F79+7o3r07kpKS0L17d7z33nt4+PChwSfnGbrmvvvuO/z+++8YPXp0seUGDJ/Xd+7ceaHtY+xYlrR9DDF0nt+6dQsWFhaoX7++srxatWov/Am8hw8fRkJCApYtW6YsS09PxyuvvKK8HzNmDP7973+jV69emDdvHlxdXU3K29CxfZqxcy4hIQFvvvmmKm1gYCB27NhhtHwFc4QVPGTk6e2ys7Nx+fJlZGVlmfyZUDAf22+//YZ58+bh7bffxtGjR+Hu7o7Tp08jOTkZdnZ2qm0ePnyIlJSUP3TPN8Vnn32m/F23bl3cu3cPX331FT744AMAT+51Bw8eVPXwysvLw8OHD3H//n389NNP+Pnnn3Hq1Kk/VA5TxMXFmTzfZVECAwOVvwuu44SEhELpjH3WvKhylDYMfBEREZFRGo0GGhOH3vydODo6omrVqkhOTja4/tkgybM0Gg0mT56MiRMn4vr163Bzc0N0dDQAoFKlSgCAL7/8Ek2aNMGIESMAPAm42draomnTphg/fjz0ej30ej0sLS1VwSt/f39cv34dubm5sLKyKnHdGjRooHrim4eHBy5dulSiPPbv34/ExESsWbNGtby4dimuzobKFh0djRs3bqBevXrK8ry8POzbtw8zZ85ETk5OoeAeAOUHW3JyMnx9fbFy5UqkpaXh8OHDyo/slStXwsnJCZs2bUK3bt2Ubffu3Yv27dtj+vTpCAsLU5YbKp8pimuXAvHx8QgODsbAgQPx6aefGkwjIli4cCF69eqlOv4dOnRQ/Ugt6QMQnpadnQ29Xo+YmJhC60wNJmRnZwMA5s2bpyoXAIPHa9GiRXBxcUGHDh1Uy/V6PSwsLFRBZn9/fwBPftQXFZwtCVOP0bVr19CiRQs0btwY33//vWqdKdf90x4/foxdu3Zh2bJl2LRpEypVqoQpU6YowdSnGbvmfv75Zxw+fBharVa1vEGDBujRo4dqWKmx89oUprYPYPxYmtI+np6ehZ7Ml5mZCXt7e+h0OoPn+a5du4otk6enJ3Jzc5GVlaU6hzMzM00evjZ//nzUqVNHFWArW7as6p7g7OyMlJQUpKWloX379sryguHeFhYWSExMhK+vr7LO2LEtUNQ5VxxD5XvRbG1tUblyZVSuXBmNGjVClSpVsGDBAowePRrZ2dmoX7++waeIurm5wcrK6rnu+c97PAMCAvDFF18gJycHWq0W2dnZ+Pzzzw1Oim9tbY2ff/4ZKSkphe57nTp1QtOmTQ3eI59XUddYQZ0yMzOh1+uV5ZmZmQafIlmcoj5rSnKt/y/hHF9ERERU6mRnZyMlJUX1BfNptWrVwpUrV5CUlFRkPubm5ihXrhysrKywatUqBAYGws3NDcCTeUOe7eVQEBAo6GXRpEkTJCcnKz+aACApKQl6vV4V9Hj28fFHjhxBlSpVDAYYdDqd8iOlcuXKsLOzg6+vLywtLVX53L5922j9CnrcFMzj8nS7xMXFFZp/qUBxdTZUtuDgYJw9exZxcXHKq+BHfUFPKkMKfkwVHMOCfT/dK6vg/dPtGxMTg9deew2TJ09W9SIz1nYFijoGNWvWRH5+Pvbu3WuwrABw/vx5tGjRAr1791b1PnjW3r17kZycXKgnop2dnapsf+THS7169XD9+nVYWFio8qxcubLSg8Xf399gnQt4eHigbNmyuHTpUqE8KlasqNpORLBo0SKEhYXB0tJSta5JkyZ4/Pix0tMMgHJePj2/WXp6Oq5du6Yqi5mZGfz8/ODg4AC9Xq8q7+PHj3HixH97o1apUgU6nU4JxBhy9epVNG/eHPXr18eiRYuM9lIq6roHgJMnT2LYsGHw8vJCWFgYXF1dsW/fPpw7dw4jRoxQpS1g7Jr79ttvcfr0aeXa2LZtGwBgzZo1qvOoqPP6RbUPUPSxNKV9AgMDC+1j9+7dSi8WQ+d5tWrVCpU3MTERWVlZyvv69evD0tJSlXdiYiLS09NVPWSMyc7ONtgD+NlrxNnZGdWqVSt0z+rQoYPSM8rb21uVh7FjCxR/zhV3HRoqX4HTp0/jwVNzYR45cgRlypSBt7d3iT8TnlbQSxN4ci+5ePEi3N3dC90HHBwcnvue/7zHMy4uDk5OTkqguF69ekhMTCxUtsqVK8PMzAwff/wxzpw5oyoLAEyfPh2LFi0qti1KolatWkavr4oVK8LT01O1/u7duzh69Gih+j59/Auui4J/FgDFf9YUVY7/aS90AOafhHN8ERER/TWKmkvh7+w///mPxMTESGpqqhw8eFBCQkLE1dVVbty4ISKF5/gSEWne/P+1d99hUZxdG8DvXZaygCBYABEs2I2KXWwYxZrY9TU27N1o1BijRsWS2Gs0auyJDTX2ghrU2BAbdsRKUEGwgqLS9nx/+LFxpevqUu7fde2lzD4zc2aeM1vOzjxTT7744gs5cOCA3LlzR/bu3Sv79u0TEZFHjx7J4sWLJTAwUAICAmTIkCFiZmYm/v7+2vlXrVolKpVKfvvtN7l9+7YcP35cqlSpItWqVdO2CQkJkVy5csngwYMlKChIdu/eLfnz59e5k5q7u7tYWlrKsGHD5Pr167J+/XqxsLCQJUuWaNukNcaXiEj//v2lUKFC4uvrK5cvX5YWLVqIpaVlkvFcIiMjxdzcXBYvXpxkGTExMVKiRAmpU6eOHD9+XG7fvi1btmzRjt+Tnm1Oj/fHe7l165ZMmjRJzp49K3fv3pUdO3ZI0aJFpW7duto2gYGBYmpqKgMGDJBr167JlStXpEuXLmJtba0dN+XQoUNibm4uo0ePlrCwMO0jtTHLEuNJqw+6d+8uTk5Osm3bNrlz544cPnxYO0bX5cuXJV++fNKlSxed9Sbm37u6dOki1atXT/e+Sq7vnzx5IgEBAdqxkzZu3CgBAQHa8bA0Go3Url1bKlSoIPv379ceF2PGjJEzZ86IiMjGjRvFzMxMVq5cKUFBQTJ+/HjJlSuXzvg2y5YtE7VaLfPnz5egoCC5dOmSrFy5UmbPnq0Tz99//y0AJDAwMEn8CQkJUqlSJalbt66cP39ezp49K9WrV5eGDRtq20yYMEEsLCzEw8NDLly4IEePHpUSJUrIN998o20zbdo0sbW1lW3btklgYKD06dNHcuXKpTPWjpeXl9jY2MiaNWvk1q1b4ufnp73z5v3796VYsWLSoEEDuX//vk4/JUrPcX/06FExNjaWFi1ayF9//aVzF72UpHbMvS+5Mb7Sk9cfu38SpdaX6dk/d+7cEXNzcxk5cqQEBgbKokWLxMjISHx8fFLd7iZNmkjFihXl1KlTcvbsWaldu7ao1WrtGF8ib1/jnJ2d5dChQ3L27Flxc3NLMt5cSmN8LV++XMzMzOTZs2epxpGSlMZ1Sq1v05Nzfn5+olQqZebMmXLjxg359ddfJXfu3Oka48vS0lI6duwoV69elT179oidnZ38+OOP2jZpvSe8fPlSRo8eLX5+fhIcHCxnz56VHj16iKmpqXb8uOjoaClevLjUq1dPjh49qn3t+/bbb+XevXvp3n/JjeuYVn/u3LlTli1bJpcvX5abN2/Kb7/9Jubm5jJ+/HhtGx8fH1GpVOLl5SVXrlyRa9euyYYNG2Ts2LEpxoJkxvi6efOmBAQESL9+/aREiRISEBAgAQEBOsf31atXJSAgQJo3by716tXTtkl0+PBhUSqVMn78eLl27ZpcunRJZ7yuadOmSe7cuWXHjh1y6dIladmypRQpUkT7eSvx2Hd2dpatW7dKYGCg9O3bVywtLbVjzaXnvSatOLIafY3xxcIXERERaWXVwleHDh3EwcFBTExMxNHRUTp06CC3bt3SPp9c4evJkyfSo0cPyZMnj5iZmckXX3whu3fvFpG3X/Bq1KghFhYWYm5uLg0aNJBTp04lWe+CBQukTJkyolarxcHBQTp37qwzQLeIyMmTJ6V69epiamoqRYsWlZ9//lni4+O1z7u7u8vAgQOlf//+YmVlJTY2NjJmzBidwYTTU/h68eKFdOnSRczNzcXOzk5mzJiR4iDyarU6xQG4g4ODpW3btmJlZSXm5uZSpUoVnS+26dnmtLwfV0hIiNStW1dsbW3F1NRUihUrJiNHjkzy2e/AgQNSq1Ytsba2FhsbG6lfv774+flpn+/WrZsASPJIa9+lpw9ev34tw4YN0+ZZsWLFZOXKlSLytnCT3HoLFSqks57nz5+LWq3WGdw6Lcn1/apVq5Jd34QJE7RtoqKi5Ntvv5UCBQqIsbGxODk5SefOnSUkJETb5ueff5a8efOKpaWldOvWTX744YckAzuvW7dOXF1dxcTERGxsbKRu3bqydetWnTYdO3aUmjVrprgNDx48kDZt2oilpaXY2dlJ9+7ddYo2iQNK//bbb1KgQAExMzOTdu3aydOnT7Vt4uLiZOjQoWJlZSW5c+eW4cOHi6enp04xIiEhQaZMmSKFChUSY2NjcXZ21g58ndI+e/c8gPQc948fP062oJmatI65dyVX+EpPXn/s/kmUWl+m93Ux8QYGJiYmUrRo0VQHm08UFhYmX331lZiamoqzs7P88ccfUqhQIZ3C1+vXr2XgwIFiY2Mj5ubm0rp1a50ikkjKhS83Nzfp1KlTmnGkJKXCV2p9m56cExFZsWKFFCxYUNRqtTRv3lxmzZqVrsJXy5YtZfz48ZInTx6xtLSUPn366NzQIq33hNevX0vr1q2lQIECYmJiIg4ODtKiRQudwe1F3vaNp6en5M2bV/s+1qdPnwx9N0/uvSit/ty3b5+4urqKpaWlWFhYSIUKFWTJkiWSkJCgsxwfHx+pWbOmqNVqsbKykmrVqqX6Gptc4cvd3T3Zfrp79662TaFChdLsy7/++kub+3nz5pU2bdpon9NoNDJu3Dixs7MTU1NTadCggc4NdhKP/fXr10u1atXExMREypQpI4cOHdK2Se97TWpxZDX6KnwpRN65H2gmFRUVBWtra0RGRsLKysrQ4RAREWVbb968wd27d1GkSJGPHpSWiIiIiOhDpfa5NCN1og8a42vRokUoXLgwzMzMUL16dZw+fTpd823cuBEKhULnDjZERERERERERESfQoYLX97e3hg+fDgmTJiA8+fPo0KFCmjcuDEiIiJSnS84OBjff//9B9+WmYiIiIiIiIiIKCMyXPiaM2cO+vTpgx49eqBMmTJYsmQJzM3NsXLlyhTnSUhIQOfOnTFx4sRkbwVMRERERERERESkbxkqfMXGxuLcuXPw8PD4bwFKJTw8PODn55fifJMmTUL+/PmT3D42JTExMYiKitJ5EBERERERERERZUSGCl+PHz9GQkIC7OzsdKbb2dnh4cOHyc5z/PhxrFixAsuWLUv3eqZOnQpra2vtw8nJKSNhEhERERERERERfdjg9un14sULdO3aFcuWLUPevHnTPd/o0aMRGRmpfdy7d+8TRklERERERERERNmRKiON8+bNCyMjI4SHh+tMDw8Ph729fZL2t2/fRnBwMJo3b66dptFo3q5YpUJQUBBcXFySzGdqagpTU9OMhEZERERERERERKQjQ2d8mZiYoHLlyvD19dVO02g08PX1hZubW5L2pUqVwuXLl3HhwgXto0WLFvjyyy9x4cIFXsJIRERERERERESfTIbO+AKA4cOHo1u3bqhSpQqqVauGefPmITo6Gj169AAAeHp6wtHREVOnToWZmRm++OILnflz584NAEmmExERERERERER6VOGx/jq0KEDZs2ahfHjx8PV1RUXLlyAj4+PdsD7kJAQhIWF6T1QIiIiog/18OFDNGzYEBYWFtof4TKLevXq4bvvvku1zatXr9C2bVtYWVlBoVDg+fPnels2Ze799KF9/yG8vLzg6ur6yZav7/V2794drVq10ns82UVW3z+FCxfGvHnzMjTPiRMnUK5cORgbG2fZbV+9enWa71Mf2reZ+bUupwsODoZCocCFCxcMHUq29EGD2w8ePBj//vsvYmJi4O/vj+rVq2ufO3LkCFavXp3ivKtXr8b27ds/ZLVEREREyfLy8oJCodB5lCpVSvv83LlzERYWhgsXLuDGjRvpWuamTZvg6uoKc3NzFCpUCDNnzkzSZt26dahQoQLMzc3h4OCAnj174smTJzptnj9/jkGDBsHBwQGmpqYoUaIE9u7dm6HtW7NmDY4dO4aTJ08iLCwM1tbWGZo/0fv7KPGR3LalJD3bnJpp06ZBoVAk+fJVr169JHH1799fp82ZM2fQoEED5M6dGzY2NmjcuDEuXryoff7IkSNo2bIlHBwcYGFhAVdXV6xbty7dsX2oixcvomPHjnBycoJarUbp0qUxf/58nTbdu3dPdt+XLVs21WUn1/dbt25Fo0aNkCdPHoN+UTpy5EiKOXXmzBltOxHBrFmzUKJECZiamsLR0RE///zzZ401ODgYvXr1QpEiRaBWq+Hi4oIJEyYgNjZWp116jvuMyMgxFxMTA1dX1yR9+jnyOr19mZ79c+TIEVSqVAmmpqYoVqxYqt8NM+LNmzcYNGgQ8uTJA0tLS7Rt2zbJ2NPDhw+Hq6sr7t69i9WrV2P16tUpbldERES61rtx40YoFIokhaa0+ja9OWdIXl5eKFWqFCwsLGBjYwMPDw/4+/vrdR0pveanpz+T278bN278oDhEBE2bNoVCoUhSjxgyZAgqV64MU1PTZIvwb968Qffu3VGuXDmoVKoPKjqKCMaPHw8HBweo1Wp4eHjg5s2bGVpGet5r9G3btm2oUaMGrK2tkStXLpQtW1anL989xpRKJQoWLIgePXogIiICf/75JywsLHDr1i2dZYaGhsLGxgYLFy78pLG/65Pe1ZGIiIjocylbtizCwsK0j+PHj2ufu337NipXrozixYsjf/78aS5r37596Ny5M/r3748rV67gt99+w9y5c3U+pJ04cQKenp7o1asXrl69is2bN+P06dPo06ePtk1sbCwaNmyI4OBgbNmyBUFBQVi2bBkcHR0ztG23b99G6dKl8cUXX8De3h4KhSJD8yd6d/+EhYVh5cqVUCgUaNu2bbrmT882p+bMmTNYunQpypcvn+zzffr00YlvxowZ2udevnyJJk2awNnZGf7+/jh+/Dhy5cqFxo0bIy4uDgBw8uRJlC9fHn/99RcuXbqEHj16wNPTE7t3705XfB/q3LlzyJ8/P9auXYurV69i7NixGD16tE6+zJ8/X2fb7t27B1tbW7Rv3z7VZSfX99HR0ahduzamT5/+SbcrLTVr1kySU71790aRIkVQpUoVbbuhQ4di+fLlmDVrFq5fv46dO3eiWrVqnzXW69evQ6PRYOnSpbh69Srmzp2LJUuWYMyYMdo26Tnunz9/jqioqHSvNyPH3A8//IACBQokmf458jo9fZme/XP37l189dVX2jGdv/vuO/Tu3Rv79+//6BiHDRuGXbt2YfPmzfjnn38QGhqKNm3a6LS5ffs26tevj4IFCyJ37tzo0KFDku1q3Lgx3N3d0/VeEBwcjO+//x516tRJ8lxafZuenDO0EiVKYOHChbh8+TKOHz+OwoULo1GjRnj06JFelp/aa356+hMAVq1apbOfP/RMvnnz5qX63tmzZ0906NAh2ecSEhKgVqsxZMgQeHh4fND6Z8yYgQULFmDJkiXw9/eHhYUFGjdujDdv3qR7Gel5r0nL/fv3ISLpauvr64sOHTqgbdu2OH36NM6dO4eff/5Z+56byMrKCmFhYbh//z6WLVuGffv2oWvXrujatSsaN26M7t27a29yCLx9r69cuTIGDRqU7rg/mmQBkZGRAkAiIyMNHQoREVG29vr1a7l27Zq8fv1aREQ0Go3Evok3yEOj0aQ77gkTJkiFChWSfa5QoUICQPvo1q2biIg8e/ZM+vbtK/nz5xdTU1MpW7as7Nq1S0REOnbsKO3atdNZzoIFC6RgwYLauGbOnClFixZN0sbR0VH79+LFi6Vo0aISGxubYuzu7u4yaNAgGTRokFhZWUmePHnkp59+0q7H3d1dJ353d/dkl/Py5Uvp2rWrWFhYiL29vcyaNUvc3d1l6NChKa67ZcuWUr9+fZ1p9+7dk2+++UZsbGzE3NxcKleuLKdOnUr3NqfkxYsXUrx4cTl48GCycaUV65kzZwSAhISEaKddunRJAMjNmzdTnK9Zs2bSo0ePVGNLqw9ERN68eSM//PCDFCxYUExMTMTFxUWWL1+e4jIHDhwoX375ZYrPb9u2TRQKhQQHB6caV2p9f/fuXQEgAQEBSeZ99uyZ9OrVS/LmzSu5cuWSL7/8Ui5cuKDTZurUqZI/f36xtLSUnj17yqhRo5IcR8uWLZNSpUqJqamplCxZUhYtWpRivLGxsZIvXz6ZNGmSdtq1a9dEpVLJ9evXU5wv8fhdsmSJFCxYUNRqtbRv316eP3+ubRMfHy/Dhg0Ta2trsbW1lZEjR4qnp6e0bNlS2yYhIUGmT58uLi4uYmJiIk5OTjJlypQU1ztjxgwpUqSI9u/0HPdHjhwRtVotnTt3lgMHDkhCQkKKy09OcseciMjevXulVKlScvXq1RT79F3v57W+909yfZme/fPDDz9I2bJlddp06NBBGjdunOr2hIeHy9dffy1mZmZSuHBhWbt2rRQqVEjmzp0rIiLPnz8XY2Nj2bx5s3aewMBAASB+fn7aY+Hdx6pVq5KsJyIiQoyNjeWPP/5INR6Rt/u0Zs2asnz5cunWrZvOvkxOSn37rvdzTkRk1apV4uTkJGq1Wlq1aiWzZs0Sa2vrVJeTGI+Xl5f2GO/Xr5/ExMRo23zIe0Li9+6///5bOy0kJETat28v1tbWYmNjIy1atJC7d++mGp9I6q/5afVnIgCybdu2VNezfft2qVixopiamkqRIkXEy8tL4uLidNoEBASIo6OjhIWFpbrM1D5LJEotF3bu3ClVqlQRU1NTyZMnj7Rq1UpE3n6Wsre3l5kzZ2rbPn/+XExNTWXDhg0i8t/r+YYNG8TNzU37ueTIkSOpxpPce01KcYiIdO/eXQoXLizjx4+X27dvp7rsoUOHSr169VJts2rVqiT5+vPPP4tSqZRXr15JRESE5MuXT7vtie3ffS9PzfufS9+VkTpRhge3JyIiopwjPlaD34f+Y5B1953vDmNTo3S3v3nzJgoUKAAzMzO4ublh6tSpcHZ2xpkzZ+Dp6QkrKyvMnz8farUaGo0GTZs2xYsXL7B27Vq4uLjg2rVrMDJ6u76YmBiYm5vrLF+tVuP+/fv4999/UbhwYbi5uWHMmDHYu3cvmjZtioiICGzZsgXNmjXTzrNz5064ublh0KBB2LFjB/Lly4dOnTph1KhR2nUBby9n69WrF06fPo2zZ8+ib9++cHZ2Rp8+fbB161b8+OOPuHLlCrZu3QoTE5Nkt3/kyJH4559/sGPHDuTPnx9jxozB+fPnUxw7KTw8HHv27MGaNWu0016+fAl3d3c4Ojpi586dsLe3x/nz57W/1KZnm1MyaNAgfPXVV/Dw8MCUKVOSbbNu3TqsXbsW9vb2aN68OcaNG6fth5IlSyJPnjxYsWIFxowZg4SEBKxYsQKlS5dG4cKFU1xvZGQkSpcunWZ8qfUB8PYGTn5+fliwYAEqVKiAu3fv4vHjx6mu19bWNsXnV6xYAQ8PDxQqVCjFNunt++S0b98earUa+/btg7W1NZYuXYoGDRrgxo0bsLW1xaZNm+Dl5YVFixahdu3a+PPPP7FgwQIULVpUu4x169Zh/PjxWLhwISpWrIiAgAD06dMHFhYW6NatW5J17ty5E0+ePNHe9AoAdu3ahaJFi2L37t1o0qQJRAQeHh6YMWOGzv65desWNm3ahF27diEqKgq9evXCwIEDtZf0zZ49G6tXr8bKlStRunRpzJ49G9u2bUP9+vW1yxg9ejSWLVuGuXPnonbt2ggLC8P169dT3Efv91F6jvu6deti3759+OOPP9CuXTtYWVmha9eu6NatG0qWLJlqnyR3zCVO79OnD7Zv355k/anF/m5e63v/JNeX6dk/fn5+Sc6Iady4cZrjSnXv3h2hoaE4fPgwjI2NMWTIEJ1LEc+dO4e4uDidZZcqVQrOzs7w8/PDkCFDEBYWhpIlS2LSpEno0KFDspeE//HHHzA3N0e7du1SjQcAJk2ahPz586NXr144duxYqm1T6tv3vZ9z/v7+6NWrF6ZOnYpWrVrBx8cHEyZMSDM24O3ZOGZmZjhy5AiCg4PRo0cP5MmTR3sZcUbfE2JjY/H777/D2toaFSpUAADExcWhcePGcHNzw7Fjx6BSqTBlyhQ0adIEly5dSvU1KbXX/LT6s0aNGjrL6d27N4oWLYr+/fujR48e2jO3jh07Bk9PTyxYsAB16tTB7du30bdvXwDQ7sdXr16hU6dOWLRoEezt7dO1bz/Enj170Lp1a4wdOxZ//PEHYmNjtcMa3L17Fw8fPtTZXmtra1SvXh1+fn745ptvtNNHjhyJefPmoUyZMpgzZw6aN2+Ou3fvIk+ePMmu9/2cSi0OAFiwYAE2b96MP/74A1OmTEGtWrXQvXt3tG/fHrly5dJZtr29PdavX48rV65k6OaEiZ+z4uPjkS9fPvz+++/o2LEjKlSogGHDhmH+/PlwcnJK9/L0Il1lNgPjGV9ERESfx/u/rMW+iZeF/XwN8oh9E5/uuPfu3SubNm2Sixcvio+Pj7i5uYmzs7NERUWJyNtf4hPP9BIR2b9/vyiVSgkKCkp2eUuXLhVzc3P5+++/JSEhQYKCgqRUqVICQE6ePKltt2nTJrG0tBSVSiUApHnz5jpnd5UsWVJMTU2lZ8+ecvbsWdm4caPY2tqKl5eXto27u7uULl1a5+yiUaNGSenSpbV/Dx06NMUzvUTe/rJuYmIimzZt0k578uSJqNXqFH/dnz59utjY2Oj8irp06VLJlSuXPHnyJMV1pbXNydmwYYN88cUX2nUld9bB0qVLxcfHRy5duiRr164VR0dHad26tU6by5cvi4uLiyiVSlEqlVKyZMlUz5jy9vYWExMTuXLlSqrxpdUHQUFBAkAOHjyY6nISnThxQlQqlezfvz/Z5x88eCBGRkbi7e2d5rJS6/uUzvg6duyYWFlZyZs3b3Smu7i4yNKlS0VExM3NTQYOHKjzfPXq1XXOdnBxcZH169frtJk8ebK4ubklG0/Tpk2ladOmOtP69esnpqamUr16dTl69KgcPnxYXF1ddc5QmDBhghgZGcn9+/e10/bt2ydKpVLCwsJERMTBwUFmzJihfT4uLk4KFiyoPfMiKipKTE1NZdmyZcnG9r6bN2+KlZWV/P7779pp6T3uE7169UrWr18vTZo0EZVKJdWrV5fFixfrnKn2ruSOOY1GI02aNJHJkyeLSOpn8SVKLq/1vX+S68v07J/ixYvLL7/8ojPfnj17BIC8evUq2XUlHl+nT5/WTks8+yfxjK9169aJiYlJknmrVq0qP/zwg/Zva2vrZM/0SlS6dGkZMGBAqtsu8vYYcnR0lEePHolI6mf5iCTft+9LLuc6duwozZo102nXoUOHdJ3xZWtrK9HR0dppixcvFktLS0lISMjQe8KuXbvEwsJCFAqFFChQQKcf/vzzTylZsqTOa2NMTIyo1eoUX99E0n7NT29/Tpo0SY4fPy7nz5+XadOmiampqcyfP1/7fIMGDZLk259//ikODg7av/v27Su9evXS/o1PdMaXm5ubdO7cOdl5Tpw4IQAkNDRUZ3r79u3lf//7n4j8d+xPmzZN+3zicTx9+vQUl/v+e01qcbwvODhYJk+eLCVKlBBzc3PtmayJ/f3y5Utp1qyZAJBChQpJhw4dZMWKFTrvLe+f8XXjxg0pUaKEVKlSRWddnp6eolQq0zxz8n36OuOLhS8iIiLSyqqXOr7v2bNnYmVlpb0U7f3C1/Tp08XZ2TnF+TUajfzwww9iZmYmRkZGYmNjI15eXgJAe9nf1atXtV82Ewtu5cqVk549e2qXU7x4cXFycpL4+P+KeLNnzxZ7e3vt3+7u7kkuxdu+fbuoVCrtfO8WP44ePSoWFhbax9q1a+XChQsCQP7991+d5bi6uqZY+CpZsqQMHjxYZ9qAAQOkbt26Ke6XtLY5udhCQkIkf/78cvHiRZ1tTu1yGxERX19fASC3bt0SkbdFhmrVqomnp6ecPn1a/Pz8pG3btlK2bNlkv1AfOnRIzM3NZc2aNdppycWXGE9qfeDt7S1GRkZpFvhE3hbn8ubNqy1kJOeXX36RPHny6FyWtHbtWp3Yjh49KiIfVvhauHChKJVKneVZWFiIUqnUfqnMnTu3zr4REfnuu++0X/pevnwpAEStVussw9TUVPLnz58klnv37olSqZQtW7boTO/Tp48A0Ckynzt3TgBoL3+cMGFCksu/nj9/LgDkyJEj2v//888/Om1atWql/RLl7+8vAOTOnTvJ7qt33b9/X1xcXHS+DIuk77hPSVBQkFSqVEmnWPO+5I65+fPnS61atbTHelqFr+TyWt/7J6W+TM/+SavwlVyeJx5r7182mjt3br0Wvk6ePCkA5OzZs9pp//77r048P//8s0RFRUnhwoVl79692nZpFb6S69t3pZRzrq6uMnHiRJ1p8+bN0xYSkosvMZ73L29LfB8IDg7O0HvCy5cv5ebNm+Ln5yc9e/aUwoULS3h4uIiIfP/992JkZJTktUShUMhvv/32wa/56e3P940bN04KFiyo/Ttv3rxiZmamE4OZmZkAkOjoaNmxY4cUK1ZMXrx4oZ3nUxW+1Gq1rFy5Mtl5MlL4Su447t69e5JlpvRek1ocqVm9erVYWloKAHn27JnOc7du3ZJly5ZJr169JHfu3FK+fHlt0XXVqlUCQCwsLEStVotCoZA6deok+WHx5s2bAkDOnDmTobh4qSMRERF9cgqFIkOXG2YWuXPnRokSJZLcSSiRWq1OdX6FQoHp06fjl19+wcOHD5EvXz74+voCgPZSsKlTp6JWrVoYOXIkAKB8+fKwsLBAnTp1MGXKFDg4OMDBwQHGxsY6lzWWLl0aDx8+RGxsbIYuXUtUpUoVnTu+2dnZ4c6dOxlaxrFjxxAUFARvb2+d6Wntl7S2ObnYfH19ERERgUqVKmmnJyQk4OjRo1i4cCFiYmJ09k+ixLuG37p1Cy4uLli/fj2Cg4Ph5+cHpfLt/ZnWr18PGxsb7NixQ+dSkX/++QfNmzfH3Llz4enpqZ2eXHzpkdZ+SXTt2jU0aNAAffv2xU8//ZRsGxHBypUr0bVrV53+b9Gihc6d0jN6A4R3vXz5Eg4ODjhy5EiS53Lnzp3uZQDAsmXLdOICkGx/rVq1Cnny5EGLFi10pjs4OEClUqFEiRLaaYmX6IWEhKR5eWB6pbePQkND8eWXX6JmzZr4/fffdZ5Lz3H/rvj4eBw4cAB//vknduzYgaJFi2LGjBno3LlzkrYpHXOHDh2Cn58fTE1NdaZXqVIFnTt31rl0LqW8To/07h8g5b5Mz/6xt7dPcme+8PBwWFlZQa1WJ5vnBw4cSDMme3t7xMbG4vnz5zo5HB4enu7L15YvXw5XV1dUrlxZO61AgQI6rwm2tra4ffs2goOD0bx5c+30xMu9VSoVgoKC4OLion0upb5NlFrOpSW5+PTNwsICxYoVQ7FixVCjRg0UL14cK1aswOjRo/Hy5UtUrlw52buI5suXDyYmJh/0mv+h/Vm9enVMnjwZMTExMDU1xcuXLzFx4sRkB8U3MzPDoUOHcPv27SSve23btkWdOnWSfY38UKkdY4nbFB4eDgcHB+308PDwFC89TU1q7zUZOdYfP36MDRs24M8//8SFCxfQtGlTdOvWLcllwi4uLnBxcUHv3r0xduxYlChRAt7e3tpLoXPlyoXz589DqVRq71r5PpVKpfPv58bCFxEREWU7L1++xO3bt9G1a9dkny9fvjzu37+PGzdu6Hwhf5+RkZG2ALFhwwa4ubkhX758AN6OG/L+B7jEgoD8/x2TatWqhfXr10Oj0WiLNTdu3ICDg4NO0eP928efOnUKxYsXT7bAoFarUaxYMZ1pLi4uMDY2hr+/P5ydnQEAz549w40bN+Du7p5kGStWrEDlypW147i8u1+WL1+Op0+fJvsFK61tTi62Bg0a4PLlyzrTevTogVKlSiUZ6+xdiV+mEr8kvHr1CkqlUueuXIl/v3u3qCNHjuDrr7/G9OnTtWO9JEouvkSp9UG5cuWg0Wjwzz//pHhHr6tXr6J+/fro1q2bdoyd5Pzzzz+4desWevXqpTM9V65cScZX+VCVKlXCw4cPoVKpUhz/rHTp0vD399cpoJw6dUr7fzs7OxQoUAB37txJtpDzLhHBqlWr4OnpCWNjY53natWqhfj4eNy+fVtbLLhx4wYA6IxvFhISgtDQUO1dDU+dOgWlUomSJUvC2toaDg4O8Pf3R926dQG8LTqdO3dO++W6ePHiUKvV8PX1Re/evZON88GDB/jyyy9RuXJlrFq1SntMvi+14x4Azp8/jz///BMbNmxAfHw8OnbsiKNHj+rcyfJ9KR1zCxYs0Bn/KDQ0FI0bN4a3t7dOgSi1vNbX/gFS78v07B83Nzed8YQA4ODBg3BzcwOQfJ6XKlVKG2/VqlUBAEFBQXj+/Lm2TeXKlWFsbAxfX1/tXRODgoIQEhKiXXZqXr58iU2bNmHq1Kk601UqVZLXBHNz8ySvWT/99BNevHiR7NhEKfUtkHbOJR6H73r3OEwuvkQXL17E69evtUWGU6dOwdLSEk5OTsiTJ0+G3hPepdFoEBMTA+Dta4m3tzfy588PKyurZNt/yGv+h/bnhQsXYGNjoy0UV6pUCUFBQSnuox9//DFJvpcrVw5z587VKWzqQ/ny5eHr66szLl6iIkWKwN7eHr6+vtpCV1RUFPz9/TFgwACdtqdOnUpyHA8ePFj7fFrvNanFAbwdq2/nzp34888/4ePjg7Jly6J79+7Ys2ePzutcSgoXLgxzc3NER0drpymVyhT7INPI0HlmBsJLHYmIiD6P1E4pz8xGjBghR44ckbt378qJEyfEw8ND8ubNKxERESKS9FJHEZF69erJF198IQcOHJA7d+7I3r17Zd++fSIi8ujRI1m8eLEEBgZKQECADBkyRMzMzMTf3187/6pVq0SlUslvv/0mt2/fluPHj0uVKlWkWrVq2jYhISGSK1cuGTx4sAQFBcnu3bslf/78OndSc3d3F0tLSxk2bJhcv35d1q9fLxYWFrJkyRJtm7TG+BIR6d+/vxQqVEh8fX3l8uXL0qJFC7G0tExyWUtkZKSYm5vL4sWLkywjJiZGSpQoIXXq1JHjx4/L7du3ZcuWLdrxe9Kzzenx/mUvt27dkkmTJsnZs2fl7t27smPHDilatKjOZZeBgYFiamoqAwYMkGvXrsmVK1ekS5cuYm1trb18JPEysNGjR0tYWJj2kdqYZYnxpNUH3bt3FycnJ9m2bZvcuXNHDh8+rB2j6/Lly5IvXz7p0qWLznoT8+9dXbp0kerVq6d7XyXX90+ePJGAgADtJWQbN26UgIAA7XhYGo1GateuLRUqVJD9+/drj4sxY8ZoLzPZuHGjmJmZycqVKyUoKEjGjx8vuXLl0rnMZ9myZaJWq2X+/PkSFBQkly5dkpUrV8rs2bN14vn7778FgAQGBiaJPyEhQSpVqiR169aV8+fPy9mzZ6V69erSsGFDbZsJEyaIhYWFeHh4yIULF+To0aNSokQJ+eabb7Rtpk2bJra2trJt2zYJDAyUPn36SK5cuXQuOfLy8hIbGxtZs2aN3Lp1S/z8/LSXO9+/f1+KFSsmDRo0kPv37+v0U6L0HPdHjx4VY2NjadGihfz11186l6umJLVj7n3JXeqYnrz+2P2TKLW+TM/+uXPnjpibm8vIkSMlMDBQFi1aJEZGRuLj45Pqdjdp0kQqVqwop06dkrNnz0rt2rVFrVbrXDbav39/cXZ2lkOHDsnZs2fFzc0tyXhzKV3quHz5cjEzM0tyCVd6pXR5W2p9m56c8/PzE6VSKTNnzpQbN27Ir7/+Krlz507XGF+WlpbSsWNHuXr1quzZs0fs7Ozkxx9/1LZJ6z3h5cuXMnr0aPHz85Pg4GA5e/as9OjRQ0xNTbXjx0VHR0vx4sWlXr16cvToUe1r37fffiv37t1L9/5L7vL2tPpz586dsmzZMrl8+bLcvHlTfvvtNzE3N5fx48dr2/j4+IhKpRIvLy+5cuWKXLt2TTZs2CBjx45NMRYkc6njzZs3JSAgQPr16yclSpSQgIAACQgI0Dm+r169KgEBAdK8eXOpV6+etk2iw4cPi1KplPHjx8u1a9fk0qVLOuN1TZs2TXLnzi07duyQS5cuScuWLaVIkSLaz1uJx76zs7Ns3bpVAgMDpW/fvmJpaakday497zVpxdGzZ0+xs7OT4cOH61yOmpwJEybIyJEj5fDhw3Lnzh05f/68dO/eXdRqtfZS9eTu6pic9IxfmBxe6piFbT4wDOvv+xo6jEzPUqnCENfBqOra09ChEBFRJnf//n107NgRT548Qb58+VC7dm2cOnUq1V8v//rrL3z//ffo2LEjoqOjUaxYMUybNk37/Jo1a/D9999DRODm5oYjR46gWrVq2ue7d++OFy9eYOHChRgxYgRy586N+vXrY/r06do2Tk5O2L9/P4YNG4by5cvD0dERQ4cOxahRo3Ri8fT0xOvXr1GtWjUYGRlh6NChSc7qSMvMmTPx8uVLNG/eHLly5cKIESMQGRmZpN3GjRshIujYsWOS50xMTHDgwAGMGDECzZo1Q3x8PMqUKYNFixale5s/hImJCf7++2/MmzcP0dHRcHJyQtu2bXUu4ShVqhR27dqFiRMnws3NDUqlEhUrVoSPj4/2rLA1a9bg1atXmDp1qs6ZHe7u7mle0pJWHyxevBhjxozBwIED8eTJEzg7O2PMmDEAgC1btuDRo0dYu3Yt1q5dq52nUKFCCA4O1v4dGRmJv/76C/Pnz/+Y3YWdO3fq/JqfeJnnhAkT4OXlBYVCgb1792Ls2LHo0aMHHj16BHt7e9StW1d7eWeHDh1w+/Zt/PDDD3jz5g3atm2LAQMGYP/+/drl9u7dG+bm5pg5cyZGjhwJCwsLlCtXLskd+lasWIGaNWuiVKlSSWJVKpXYtWsXvv32W9StWxcWFhZo2rQpZs+erdOuWLFiaNOmDZo1a4anT5/i66+/xm+//aZ9fsSIEQgLC0O3bt2gVCrRs2dPtG7dWifHx40bB5VKhfHjxyM0NBQODg7o378/gLdnHd26dQu3bt1CwYIFddYt/3+GJpD2cV+mTBk8ePAgXWdGJErtmEuP9OT1x+6fRKn1ZWIsqe2fIkWKYM+ePdo7txUsWBDLly9H48aNU93GVatWoXfv3nB3d4ednR2mTJmCcePG6bSZO3culEol2rZti5iYGDRu3FgnR1KzYsUKtGnTJt2X+qZXan2bnpyrUaMGli1bhgkTJmD8+PHw8PDATz/9hMmTJ6e57gYNGqB48eKoW7cuYmJi0LFjR3h5eWmfT+s9wcjICNevX8eaNWvw+PFj5MmTB1WrVsWxY8dQtmxZAG/Pfjt69ChGjRqFNm3a4MWLF3B0dESDBg1SPAMsvdLqT2NjYyxatAjDhg2DiKBYsWKYM2eO9k67wNs7hu7evRuTJk3C9OnTYWxsjFKlSqV6VmNyevfujX/++e8O1hUrVgTw9m6MiWfNNmvWDP/++2+SNol9Wa9ePWzevBmTJ0/GtGnTYGVlpT1zCwB++OEHREdHo2/fvnj+/Dlq164NHx8fmJmZ6cQybdo0TJs2DRcuXECxYsWwc+dO5M2bF0D63mvSimP06NFYunRpui45dHd3x6JFi+Dp6Ynw8HDY2NigYsWKOHDggN4uU/9cFPLuK30mFRUVBWtra0RGRn70AZYZ/L6zK359dsHQYWQJZhrBgvKD4Va5f9qNiYjoo7158wZ3795FkSJFknwYIyIiIiL6XFL7XJqROhHP+DKAryp/C9eIS4YOI9Nbc3kFjipf4ttLCzFfE49aVQenPRMRERERERER0f9j4csAHB2rwdGxWtoNczjXMh0wwrsxjihf4NurSzBPk4C61YcaOiwiIiIiIiIiyiJY+DKAEz9vwZW76b/NaE6lkhj0rj4WKvVU/K2JxNDAZZgr8ahXY4ShQyMiIiIiIiKiLICFLwNIiNMgXsXCV1riocbxcxp0LDUCynxzcCDhOYZdX4VZCXFoUOtHQ4dHRERERERERJkcC18GUKn3lygZ9tTQYWR6Z9edQfCbAjgTZI02b4bAyGkh9iU8xYibazFdE4fGdcalvRAiIvogWeDeN0RERESUjenr8ygLXwZgWTAfLAum/xbIOVXTysXx948bcTPKHhf+zYNmr/vDqPhS7NY8wajb3tBoEtDU3cvQYRIRZStGRkYAgNjYWKjVPDuZiIiIiAwjNjYWwH+fTz8UC1+UaSmVSnhM+wYmXptxNSIfrkbYoX5MHxiVW4kdCRH48e4WxGvi0fzLKYYOlYgo21CpVDA3N8ejR49gbGwMpVJp6JCIiIiIKIfRaDR49OgRzM3NoVJ9XOlKIVngWoaoqChYW1sjMjISVlZWhg6HDODk1L8Q8K8NAKCIOhSnq6zBX/EPoRDBZOev0bL+NANHSESUfcTGxuLu3bvQaDSGDoWIiIiIciilUokiRYrAxMQkyXMZqROx8EVZxpm5O3D6ugWgUKKg6gEu11gH74QHUIjAq2ATtPGYZegQiYiyDY1Goz29nIiIiIjoczMxMUnx6gMWvijburDUByfPG0EURrBXhOJmTW+s0wQDAMY5NMD/Gs0zaHxERERERERE9GllpE7EgTsoS3Ht1wT1ahtBqYnDQymAosc6oJvCBQAwOcwXG3wGGzhCIiIiIiIiIsosWPiiLKdM1/rwaGIBZUIsHikLoMDR/6G3lAQA/BL+D9bu62/gCImIiIiIiIgoM2Dhi7Kk4m1qo0nrPFDFv8YzlT1sj7VD/4SyAIDpESewZk8fA0dIRERERERERIbGwhdlWUWaVcVXXQrCOD4aUcb5YXmiDQbHugIAZj0+heW7uhs0PiIiIiIiIiIyLBa+KEsrWK8CWvQtDtO4KLw0zgvjU63w3asqAID5T89h6Y6uBo6QiIiIiIiIiAyFhS/K8uyrlUKr7ypAHfcMr41tIGdb4PsXNQAAC59fwG/bOkI0GgNHSURERERERESfGwtflC3kLVcEbX6sDou4J4gxtkZsQHOMelobALA46gp+3f4Ni19EREREREREOQwLX5Rt5C5eEG0nuMMqLgKxxpaIvvo1Rkd8CQBY9iIQ87a1Z/GLiIiIiIiIKAdh4YuylVzO+dH2l0awiQ9HvEqNqBtN8VOoBwBg5csbmPVXaxa/iIiIiIiIiHIIFr4o2zG3s0XbmV8jryYMCUameHq3Ccb/2xQA8MerO5i+pSWLX0REREREREQ5AAtflC2Z2uRC6zltYI9QaJTGeHS/ISbcag4AWPc6GD9v/hqahHgDR0lEREREREREnxILX5RtmViq0XJeexRUhUKURgiPqI+Jga2hEIH3m3uYvPkrFr+IiIiIiIiIsjEWvihbU5mZ4uu536CwWSigUCLseT14Xe4AhQi2xITCa1MTFr+IiIiIiIiIsikWvijbMzJWoemcTihu9RAAEBZdCxMCOkOZoMG22HCM826MhPhYA0dJRERERERERPrGwhflCEqlEh7TvkHZ/I8AAA9jqmPcue4wStBgZ1wExno3RnzcGwNHSURERERERET6xMIX5RhKpRL1JnWAq/MzAEB4QmWMPd0HxgmCPfGPMdq7EYtfRERERERERNkIC1+U49Qa0xbVSr4ARIMIlMcov/4wjQd8Ep7hh40eiIt7ZegQiYiIiIiIiEgPWPiiHKnqsJaoVSkeCknAY6MyGHFyECxilDioicT3GxsiLiba0CESERERERER0Udi4YtyLNd+TVCvthEUmng8NS6Bb099C+s3RjikicJw74aIjXlh6BCJiIiIiIiI6COw8EU5Wpmu9dGwkRrKhFg8NymKfqe+Q76XJjgiL/Cdd0PEvIk0dIhERERERERE9IFY+KIcr3i7OmjSOg9U8a8RZeqMbmeHoUCkGY5JNIZ4N8Sb188MHSIRERERERERfQAWvogAFGlWFV91KQjj+Gi8NC2AbwKGo9ATS5zEawze1AivXz01dIhERERERERElEEsfBH9v4L1KqBF3+IwjYvCK1M7tL4yHCUirOGPNxi0qRFevYwwdIhERERERERElAEsfBG9w75aKbQaWh7quGd4Y5IHTQOH44vQPDijiMGALU0R/fKhoUMkIiIiIiIionRi4YvoPXnLF0WbH6vDIu4JYkxy48tbw1AlxB7nFbHov6UZXr4IM3SIRERERERERJQOLHwRJSN38YJoO8EdueIeIc44F2r8OxQ1bzvhgiIO/bY0Q1TkPUOHSERERERERERpYOGLKAW5nPOj3S8NYRMfjniVOSqGfYv6111wSRmPvlubIzIyxNAhEhEREREREVEqWPgiSoW5nS3azvwaeTVhSDAyRanH/dH0amlcVSagz9YWeP7srqFDJCIiIiIiIqIUsPBFlAZTm1xoPacN7BEKjZEJCj/vg5YXyyNQmYBe21vh6dNbhg6RiIiIiIiIiJLBwhdROphYqtFyXnsUNAqFKI3gEN0D/ztbFTeUGvTa0RZPHt8wdIhERERERERE9B4WvojSSWVmiq/nfYPCZqGAQgnbuC7oeqo2bik16LmzHR4/CjR0iERERERERET0jg8qfC1atAiFCxeGmZkZqlevjtOnT6fYdtmyZahTpw5sbGxgY2MDDw+PVNsTZWZGxio0ndMJxa0eAgAspD16nvDAHYUGPXZ1QET4FQNHSERERERERESJMlz48vb2xvDhwzFhwgScP38eFSpUQOPGjREREZFs+yNHjqBjx444fPgw/Pz84OTkhEaNGuHBgwcfHTyRISiVSnhM+wZl8z8CAJgom6Pf8a8RrNCg556OePjwgmEDJCIiIiIiIiIAgEJEJCMzVK9eHVWrVsXChQsBABqNBk5OTvj222/x448/pjl/QkICbGxssHDhQnh6eqZrnVFRUbC2tkZkZCSsrKwyEi7RJ3Xil79wIcQGAKCMOYrFdf+CowArm6yGQ4HKBo6OiIiIiIiIKPvJSJ0oQ2d8xcbG4ty5c/Dw8PhvAUolPDw84Ofnl65lvHr1CnFxcbC1tU2xTUxMDKKionQeRJlRrTFtUa3kC0A00JjWxaB/OiEMCvTw6Y4HD3hJLxEREREREZEhZajw9fjxYyQkJMDOzk5nup2dHR4+fJiuZYwaNQoFChTQKZ69b+rUqbC2ttY+nJycMhIm0WdVdVhL1KoYB4UkIN6sOgb90x2PEozQY39P3Lt3wtDhEREREREREeVYn/WujtOmTcPGjRuxbds2mJmZpdhu9OjRiIyM1D7u3bv3GaMkyjjX/k3hXksJhSYesWpXDDjeG8/jjNHjYD/8++8xQ4dHRERERERElCNlqPCVN29eGBkZITw8XGd6eHg47O3tU5131qxZmDZtGg4cOIDy5cun2tbU1BRWVlY6D6LMrqxnAzRspIYyIRYx6jLoe3IAXseYoYfvANwNPmLo8IiIiIiIiIhynAwVvkxMTFC5cmX4+vpqp2k0Gvj6+sLNzS3F+WbMmIHJkyfDx8cHVapU+fBoiTK54u3qoEnrPFDFv0aMuhh6nBqEhGhz9Dg0GLdvHzR0eEREREREREQ5SoYvdRw+fDiWLVuGNWvWIDAwEAMGDEB0dDR69OgBAPD09MTo0aO17adPn45x48Zh5cqVKFy4MB4+fIiHDx/i5cuX+tsKokykSLOqaNbZEcbx0YhRF0LXc0NgHGWFnkeH4eYtH0OHR0RERERERJRjZLjw1aFDB8yaNQvjx4+Hq6srLly4AB8fH+2A9yEhIQgLC9O2X7x4MWJjY9GuXTs4ODhoH7NmzdLfVhBlMk5fuqJF72IwjYtCjFkB/O/iEFg+sUGvY98j6MZuQ4dHRERERERElCMoREQMHURaoqKiYG1tjcjISI73RVnK40t3sHN+AF4b28A49in2lViER3aPsKzmzyhdsqWhwyMiIiIiIiLKcjJSJ/qsd3Ukymnyli+KNj9Wh0XcE8SZ2KLJzaEo+KAAep0ci6uBfxk6PCIiIiIiIqJsjYUvok8sd/GCaDvBHbniHiHe2Ar1goegeHAh9Dk1AZeuehs6PCIiIiIiIqJsi4Uvos8gl3N+tPulIXLHhyNBZY4aoYPwxS0X9D09GRcurzN0eERERERERETZEgtfRJ+JuZ0t2s34Cnk1YdAYmaFixABUDSyNfmen4tzFNYYOj4iIiIiIiCjbYeGL6DMytbVC6zltYIdQaIxMUPp5H9S5XAEDzs/EmYAVhg6PiIiIiIiIKFth4YvoMzOxVKPVvPYoaBQKUapQJLoHGgVUw8ALc3Hq3FJDh0dERERERESUbbDwRWQAKjNTfD3vGxQ2CwUUSjjEdkHzM3Uw+NKvOHlmkaHDIyIiIiIiIsoWWPgiMhAjYxWazumE4lYPAQB5NO3R7lRDfHt1MY6dXmDg6IiIiIiIiIiyPha+iAxIqVTCY9o3KJPvEQAgl6I5Oh3/GkOvLMWRU7MNHB0RERERERFR1sbCF5GBKZVKfDm5A1ydngIAzFSN0P14Owy/tgq+J6cbODoiIiIiIiKirIuFL6JMotbYdqhW8gUgGhiZuKP30c4YFbgWB4//YujQiIiIiIiIiLIkFr6IMpGqw1qiVsU4KCQBYlYdvY/2wNhr3vA5OtHQoRERERERERFlOSx8EWUyrv2bwr2WEgpNPBLUruh1oje8Ardhz5Hxhg6NiIiIiIiIKEth4YsoEyrr2QAeDdVQJsQgXl0WPU8OwLRre7Dz0BhDh0ZERERERESUZbDwRZRJlWhfB01a54FR/BvEqYvD038Q5lw9iG1/jzR0aERERERERERZAgtfRJlYkWbV8FXnAjCOj0asujA6nxuCRVeOY/OBYYYOjYiIiIiIiCjTY+GLKJNz+tIVLXoXg2lcFGLNHPG/i0Ox+tJZbPT51tChEREREREREWVqLHwRZQH2NUqj1dDyUMc9R5xpfrS8NhTeF65g3b4Bhg6NiIiIiIiIKNNi4Ysoi8hbvija/FgNFnFPEGdiiyY3h2LXudtYs6evoUMjIiIiIiIiypRY+CLKQnIXL4i24+sgV9wjxBtboV7wt/A9cx8rd/U0dGhEREREREREmQ4LX0RZTK5C9mj3S0Pkjg9HgsoCbg8Gw8//KZbt9DR0aERERERERESZCgtfRFmQuZ0t2s34Cnk1YdAYmaFSeH9cOv4ai7d3NnRoRERERERERJkGC19EWZSprRVaz2kDO4RCY2SC0s/74PZRYOG2byAajaHDIyIiIiIiIjI4Fr6IsjATSzVazWsPR6MHEKUKRaJ7IOywORZs+x+LX0RERERERJTjsfBFlMWpzEzRfF5HFDYLBRRKFIjtgue++TBna1sWv4iIiIiIiChHY+GLKBswMlah6ZxOKJ7rIQAgr6Y94g4Wwoy/WrH4RURERERERDkWC19E2YRSqYTH9G9QJt8jAEAuRQuo9pfBVO+vWfwiIiIiIiKiHImFL6JsRKlU4svJHeDq9BQAYKZqBMuDVTFlQ1NoEuINHB0RERERERHR58XCF1E2VGtsO1Qr+QIQDYxM3GF70B2TNzRj8YuIiIiIiIhyFBa+iLKpqsNaolbFWCgkATCrAbuDjeG1tikS4mMNHRoRERERERHRZ8HCF1E25tq/GdxrKqDQxCFBXRGOh1pgwppmLH4RERERERFRjsDCF1E2V7abBzwamkOZEIN4dVk4H22PCSubIT7ujaFDIyIiIiIiIvqkWPgiygFKtK+DJq3zwCj+NeLUxVHoRCd4LfsacXGvDB0aERERERER0SfDwhdRDlGkWTV81dkRqriXiFUXRqHT3eC1uCXiYqINHRoRERERERHRJ8HCF1EO4vSlK1r2KQ6TuEjEmjmiUEAvTFzYBrExLwwdGhEREREREZHesfBFlMPY1yiN1kMrwCz2KeJM88P5ah9Mnt8eMW8iDR0aERERERERkV6x8EWUA+UtXxRtRlWHeUwE4kxsUTCoP36Z1RlvXj8zdGhEREREREREesPCF1EOZVPSCe286sEyJgzxxlZwCO6HGdN74PWrp4YOjYiIiIiIiEgvWPgiysFyFbJH+2lNYRVzHwkqC+R70Bezf+6DV68eGzo0IiIiIiIioo/GwhdRDmduZ4v/zW6F3LH/QmNkhjwRfTDfazCiXz40dGhEREREREREH4WFLyKCqa0V2i/4Bnni70BjZALr5z2xaPwPePkizNChEREREREREX0wFr6ICABgYqlGu4VdkV9zE6JUwSLaE0vH/oQXUQ8MHRoRERERERHRB2Hhi4i0VGamaLOoFxwUNwCFEmaxnbHixymIjAwxdGhEREREREREGcbCFxHpMDJWodWivnAyuQ4AMNa0xx8j5yLyebBhAyMiIiIiIiLKIBa+iCgJpVKJr+f1RxHL6///d3Os+34Jnjy+aeDIiIiIiIiIiNKPhS8iSpZSqUSzWQNR3DYIACCqRtj8w1o8ehho4MiIiIiIiIiI0oeFLyJKVaNfBqB0gZuAaJBg4o5tP25D+IMrhg6LiIiIiIiIKE0sfBFRmuqP74dyLsGAJCDOrAZ2jvHBw5AAQ4dFRERERERElCoWvogoXer+0BuVvgiFQhOHWHUl7B53HA9unzF0WEREREREREQpYuGLiNLN7dtuqFr9MZQJMYhRl8W+SecQcvW4ocMiIiIiIiIiShYLX0SUIVV7dUaNei9gFP8aMeoSODDjBu4EHDJ0WERERERERERJfFDha9GiRShcuDDMzMxQvXp1nD59OtX2mzdvRqlSpWBmZoZy5cph7969HxQsEWUOFTv/D7WbxUEV9xIx6sI4NP8Bgvx8DB0WERERERERkY4MF768vb0xfPhwTJgwAefPn0eFChXQuHFjREREJNv+5MmT6NixI3r16oWAgAC0atUKrVq1wpUrvCscUVb2RZtWcP+fMYxjnyPGzBFHf3+GwCM7DR0WERERERERkZZCRCQjM1SvXh1Vq1bFwoULAQAajQZOTk749ttv8eOPPyZp36FDB0RHR2P37t3aaTVq1ICrqyuWLFmSrnVGRUXB2toakZGRsLKyyki4RPSJ3Tp6CIdXPUasaV4Yxz5FPofLMFJlrquoy9jEIZ9Z5oqJiIiIiIjoczKr1gCmldwNHYZeZKROpMrIgmNjY3Hu3DmMHj1aO02pVMLDwwN+fn7JzuPn54fhw4frTGvcuDG2b9+e4npiYmIQExOj/TsqKiojYRLRZ1Ssbn0YmR6D7+J7iDGzR+iTzPdCmmf/fMQ9v2HoMIiIiIiIiAzGrsvjbFP4yogMFb4eP36MhIQE2NnZ6Uy3s7PD9evXk53n4cOHybZ/+PBhiuuZOnUqJk6cmJHQiMiAilSvgyZmp/H3vMPQaKwNHU4SxnnjYW5lZugwiIiIiIiIDEbl6GToEAwiQ4Wvz2X06NE6Z4lFRUXBySlndhBRVlGwQjV0X1XN0GGkoL+hAyAiIiIiIiIDyFDhK2/evDAyMkJ4eLjO9PDwcNjb2yc7j729fYbaA4CpqSlMTU0zEhoREREREREREZGODI32bGJigsqVK8PX11c7TaPRwNfXF25ubsnO4+bmptMeAA4ePJhieyIiIiIiIiIiIn3I8KWOw4cPR7du3VClShVUq1YN8+bNQ3R0NHr06AEA8PT0hKOjI6ZOnQoAGDp0KNzd3TF79mx89dVX2LhxI86ePYvff/9dv1tCRERERERERET0jgwXvjp06IBHjx5h/PjxePjwIVxdXeHj46MdwD4kJARK5X8nktWsWRPr16/HTz/9hDFjxqB48eLYvn07vvjiC/1tBRERERERERER0XsUIiKGDiItUVFRsLa2RmRkJKysrAwdDhERERERERERGUhG6kQZGuOLiIiIiIiIiIgoq2Dhi4iIiIiIiIiIsiUWvoiIiIiIiIiIKFti4YuIiIiIiIiIiLIlFr6IiIiIiIiIiChbYuGLiIiIiIiIiIiyJRa+iIiIiIiIiIgoW1IZOoD0EBEAQFRUlIEjISIiIiIiIiIiQ0qsDyXWi1KTJQpfL168AAA4OTkZOBIiIiIiIiIiIsoMXrx4AWtr61TbKCQ95TED02g0CA0NRa5cuaBQKAwdjl5ERUXByckJ9+7dg5WVlaHDoSyIOUT6wDwifWAeZT3sM9IH5hHpA/OIPhZzKGcSEbx48QIFChSAUpn6KF5Z4owvpVKJggULGjqMT8LKyooHJ30U5hDpA/OI9IF5lPWwz0gfmEekD8wj+ljMoZwnrTO9EnFweyIiIiIiIiIiypZY+CIiIiIiIiIiomyJhS8DMTU1xYQJE2BqamroUCiLYg6RPjCPSB+YR1kP+4z0gXlE+sA8oo/FHKK0ZInB7YmIiIiIiIiIiDKKZ3wREREREREREVG2xMIXERERERERERFlSyx8ERERERERERFRtsTCFxERERERERERZUssfBERERERERERUbbEwtcnEhgYiOjoaEOHQURERERERESUY7HwpWcPHjxA+/btUaVKFfz999+GDoeyqNevXyMmJsbQYVAWFxoaimbNmmHVqlWGDoWyqMePH+PChQuIiIgwdCiUTi9fvkRkZCQAQEQMHA1lVaGhoahevTpmz55t6FAoC4uIiMDRo0dx584dQ4dCWVhERATWr1+PEydO4NmzZ4YOh7IoFr70aPjw4ShUqBCeP3+OmJgYWFhYAOAHT8qYcePGoUqVKvD39zd0KJSFDRs2DE5OTjAzM8PXX39t6HAoCxo9ejRcXFwwePBglC5dGqtWrcKjR48MHRalwsvLC1988QW2bdsGAFAoFAaOiLKi7777DoULF4adnR06d+5s6HAoixo7diyKFi2K8ePHo3z58pgyZQr+/fdfAIBGozFwdJRV/PjjjyhWrBiWLl2KJk2aYMiQIQgODjZ0WJQFsfClB1u2bEHu3Llx+PBhHD58GAcPHkTlypWxd+9eAPzgSenz8OFDeHp6Ys+ePQgODsbq1au1v9oTpdf58+dRoEAB+Pj44NSpU9i6dSvy5ctn6LAoi5k8eTIOHz6MPXv2wNvbG0OHDsXs2bMxbdo0Q4dGyXj69Cl69+6NXbt2AQD27t2LmzdvAuCPb5R+169fh6OjI3x8fHDy5Ens3LkT9vb2hg6LsqBFixbh77//xp49e7B7927Mnj0be/fuxfDhwwEASiW/glLqHjx4gCZNmuDw4cPYvXs3Dh48iN9++w0XLlzAlStXDB0eZUF81dGDW7duYf78+QgICECdOnUQHR2NXLly4fXr14iLizN0eJRFREZGIl++fJg/fz68vb2xZs0aHDt2zNBhURZz584dWFhYoFevXqhatSouXryIOXPmYPv27bh9+7ahw6NMTkTw4sULHDhwAM2aNUPt2rXh6OiI8ePHI3/+/Fi0aBH27Nlj6DAJugWt+Ph4ODg4YNKkSVi5ciVOnDiB/fv3Iy4ujj++UarezaPIyEhYWVmhadOmqFKlCs6fP4+JEydi1apVCAgIMGCUlNkl5pGIID4+Hnv27EGlSpXg7u4OS0tL9OvXDyVKlMC2bduwfv16AEBCQoIhQ6ZMLi4uDs2aNcOKFStQt25dmJiYoG3btlAoFChRooShw6MsSCH8KfCDxcXFwdjYWGdafHw8VCoV+vbti4sXL8Lf3x8iwg+elIRGo9H5xSsmJgbh4eFwdnYGADRs2BBv3ryBt7c3ChQoYKgwKZN7P4+ioqIwc+ZMbNq0CaVLl8aFCxfg7OyM69evQ6VSYcGCBWjXrp0BI6bM5v0cCgsLg6urKxYvXow2bdpop3fu3Bn+/v6ws7PD8ePH+b5mQLGxsRARmJqaAnj72ePp06fInz8/AKBHjx64ceMG5s2bh6pVqxoyVMrE3s+jmJgYrFmzBsOHD0eDBg1w8eJFFC9eHDdv3kR0dDR++OEHjBw50sBRU2bzfh49ffoUHh4e6Nq1K4YNG6ZtN2zYMOzYsQNv3rzBvXv3YGRkZKiQKRNK/L6ckJAAIyMjxMfH48WLF7CxsQEAPH/+HJ6enggKCkKtWrXQvHlztGrVip9FKN14xlcG/f7771i2bBkAJCl6AdC+iLu5uSEiIgL37t3jAUlJzJw5E126dMHgwYNx9uxZxMXFwdTUFM7OztpxD37//XecOHECO3bs4JmDlKz38yg2NhZWVlZo1KgRChQogJcvX+Kvv/7Ctm3bEBoaiho1amDx4sXw8/MzdOiUSbyfQzExMXBwcEDNmjUxefJkHDhwAADw008/4fLly+jcuTOio6N58xYD8vLyQu3atdGyZUv8/vvvePr0KVQqFfLnz699/5gyZQoePHiA7du34/nz5wB4ySPpej+Pnjx5AlNTU9SrVw+NGzfGkydP8Ndff2Hr1q0IDg5G165dsW3bNu34cURA0jx6/PgxbG1tUaVKFSxfvhzLly/H69evMW7cOGzbtg3Dhw+HpaWl9qwvIgD49ddf4eXlBeC/79IqlUpb9Lp37x4KFSqEV69eYcyYMYiOjsbYsWMxevRoQ4VMWZFQupw/f17q1asnCoVCGjRoIAEBASIikpCQkGz7tWvXSsGCBSUoKOgzRkmZ3YkTJ+SLL76Q8uXLy7hx46Rs2bJSsWJF2bp1q067+Ph4EREZPHiwFCpUSAIDAw0RLmVSKeXRli1bROTt69L27duTvE5dv35d8ufPL97e3oYKnTKJlHJo8+bNIiLy5MkTqVSpkri4uIiVlZUUKVJEzp07Jy9evJA8efLI/v37DbwFOU9cXJx07dpVihUrJmvWrJGOHTtK2bJl5auvvtJpl/j+MXnyZClVqpTs27dP+5xGo/msMVPmk1IeNWvWTETe5sjx48fl9OnTotFotPl07949KVu2rMycOdOQ4VMmkVIeNW3aVEREXr9+LW3atBEXFxexsbERFxcXOXnypIiIlCpVSlatWmXA6CmzuHDhgjRu3FgUCoWUK1dOfH19RUT3+3Xi+1biZ9pE48aNk4oVK0pkZORni5eyNp7xlQ4JCQnYvXs37OzssHjxYkRFRWHbtm1JLg8B/vtFtWHDhggLC8P9+/cB8O4lBISEhGDhwoWoX78+Tp06hUmTJuHKlStQKBS4ePEigP/yJ/EswQULFuD58+dYvXo1nj9/jt27d2PTpk0G2wYyvNTy6PLlywDeDhrbtGlTuLq6av8GgCJFiuDVq1cICwszVPiUCaSWQ4kDxtra2uLAgQPw9vbGzp07cefOHVSqVAlxcXEQEbx588bAW5Hz3Lt3D2fOnMGcOXPg6emJ9evXY+7cuTh06BDmzp2rbZf4/jF27FiYmppiy5YtuHv3Lnbs2IFFixYZKnzKJFLKo8OHD2POnDlQKBSoUaMGqlatCoVCASMjI4gIChYsiMePH2vPIKScLaU8OnLkCGbOnAkzMzOsXbsWe/fuxd69e3Hr1i24ubkhNjYWjx8/5vheBADw9fWFqakpVq9eDScnJ6xevRrx8fFQKpVJvhMlfqZNnH7r1i1YWVnB2NiYZzRTurDwlQ5GRkZo06YNhgwZgn79+qFWrVo4cuSI9lKPdw+2xIPz9evXqFSpEk6fPg2Ady+ht3mUN29e9OvXD2q1GjExMQCAsmXL4ty5cwD+yx+lUomEhAQoFArMmDEDc+fORc2aNdG6dWvtfJQzpSePAMDExCTJvJs3b0bx4sV1xm2inCe9OZQnTx5UrlwZ7u7u2mnr1q1DiRIl4OHh8dnjzuni4uIQFBSEChUqaKc1bNgQ48aNw6RJkxASEgJA9/1j7Nix2LlzJ+rVq4d27drxywGlmkeTJ09GSEhIkrGXFAoFdu7ciQIFCqBTp06fO2TKhFLLo59//hkhISFQq9UoUaIEatSooW2zYcMGFClSBC1btjRE2JTJdOrUCSNGjICnpycaNWqEGzduYN26danOo1AocP78eYSFhcHT0xNqtZrDClG6sBqTTmXLlkXNmjUBAAMHDkRsbKx27AyFQpHkw2ShQoXw77//IjIy0hDhUibk6OiI2bNno0yZMgCgHQT04cOHqFu3bpL2RkZG+Pfff3Hx4kXExcWhRo0aePjwIbp27fpZ46bMJaN5dPHiRVy6dAkjRozAsGHD0KZNGzg6OvILcA6W0RwKDQ2Fn58fvvvuO4wfPx7t27eHWq1mDn1mCQkJqFChAry9vXWmDxo0CLa2tpg/f762XeL7x6FDh/D48WM0aNAA4eHh+Pbbbw0ROmUi6c0jEcGVK1dw5swZDBs2DD179kSTJk14NzUCkHoe5cmTR5tHGo0Gjx49gq+vL4YOHYohQ4agRYsWsLW15XsIwd7eXvu5o23btnB2dsbmzZsRHh4OhUKhc8VUUFAQjh07hu+++w5ffvklSpYsiY4dOxoqdMqCWPjKII1Gg+LFi6Nt27Y4e/Ysdu/eDQA6lebE03cnTJiAzp07GyROynxEJMnpuDExMXj06JH29N13vXr1Cl5eXtixYwf8/f2xcuVK5MmT5zNGTJlRRvPIx8cHbdu2xcmTJ7Fr1y789NNPUCqV/HUsB8toDj148AC//fYbTp06hX379mH48OFQKBTMoc/M2dkZJUuWhL+/P4KDgwG8/UxiZWWFAQMGYMuWLXjz5o32bJ358+dj+/bt2vcPW1tbA0ZPmUV68uj169dQKBQ4ceIEBg0aBH9/f+zZswe//PILVCqVYTeAMoX0vh4plUpERkZi+/btOHfuHA4cOMDPIZSERqNBwYIF0bp1azx9+hQrVqwAoHvF1JUrVzB79mxcunQJBw8exJIlS6BWqw0VMmVBLHwBuH37Nry8vHDr1q0kz8XHx+v8nVh57t+/P2xsbLB7927tC/7Vq1cB/HeQDhw4EF988cUnjJwyk7TyKPENPvFWvQBw+fJl3L17FyVLltS2ffLkCQDAzMwMU6dOxf3793k7+hxEX3n06NEjAEC/fv2wdu1a+Pn5oXr16p9hC8jQ9JVDjx8/BgBUqFABU6dOxalTp5hDn0hwcDAGDBiA/fv3J3ku8XOIhYUFWrVqhZs3b2rHekz8vGFtbQ0rKytERERo55s0aRLCwsL4/pGD6CuPwsPDAQBdunTB8uXLcfLkSR77OYi+X49cXFwwYcIEHD9+nHmUg6QnjxIlfr9u1aoVypcvjwMHDuDSpUsAgLNnzwIAmjZtijlz5uDQoUOoVq3aJ46esqMcXfgSEQwYMADFixdHWFgYChYsqH0u8QBUqVQQEezcuVP7d0JCAiwtLdGrVy/cuXMHCxYsQLNmzfDll1/i0aNH/AUjh/mQPEr8RX7Xrl2oWLEinJ2d8eDBA3zzzTfo378/oqKioFQqYW9v//k3iAxC33k0cOBAREVFIXfu3PygmUPoO4cGDBiAqKgomJiY6CyL9GvMmDEoXbo0Hj16hFevXmnPxEv8N/Fzx7p16/DNN9+gZs2a2LZtm/aMc+BtkTJ37txwdHTUTrO0tPy8G0IGpc88cnJyAvC2uFG+fPnPvzFkMJ/i9UihUCBv3ryff2PIYNKTRyKCNWvWaP/WaDRQq9Xo0KEDVCoVfvnlFzRt2hTVqlVDaGgozM3NUbRoUYNtE2UDn/SekZnY+vXrxdbWVipVqiRnzpzRee7d230vXbpU8ubNK127dpVnz57ptIuIiBBHR0dRKBTy9ddfS0hIyOcInTKRj82jrl27yowZM+SXX34RtVot7u7uEhoa+rnCp0yCeUQfizmUNfn6+krNmjXFx8cnxTa///675M+fXxo1aiSxsbESGBgoPXv2FJVKJQMGDJDBgweLtbW1/PrrryKi29+UMzCPSB+YR6QPGcmjZs2aSXh4uM5z4eHhUrZsWVEoFNK6dWsJDg7+1CFTDpFjC1+NGzeWwoULaz/YX758Wfbv3y+3b9+WV69eiYjInDlzxMzMTFauXCnx8fE68/v6+opCoZBy5crJiRMnPnv8lDl8TB6FhYWJpaWlKBQKcXFxkQMHDhhkG8jwmEf0sZhDWVPXrl2la9euIiLi5+cnY8eOlZUrV8qNGzdERGTjxo3i6OgoK1askLi4OJ15Z82aJX379pXGjRuLr6/vZ4+dMg/mEekD84j0ISN59P73az8/P7G1tZVSpUrJ8ePHP3vslL0pRHLmLTUuXbqE1q1bo1OnTggMDMS5c+dgaWmJJ0+ewN3dHRs2bICIIDIyErlz504yf1RUFNauXYuBAwd+/uAp0/iYPAoNDUXnzp3Ru3dv3gQhh2Me0cdiDmUtGo0Gb968QYsWLdC9e3c8evQI06ZNg5ubGy5fvow3b95gyZIlaN68OV69egVzc3PtvCLCIRUIAPOI9IN5RPrwMXmUKDo6Gtu2bUOXLl0MsAWU3eWIwtfUqVMRERGBUqVKoUePHjAxMQEADBkyBEuXLkXbtm0xfPhwmJiYIDAwED179sSoUaMwfvz4ZF/QNRqNzl0mKGfQZx4l/s0PDDkP84g+FnMo60mpzxo2bIiEhAQ4OzvD09MTdevWhUqlQsuWLREbG4tp06ahQoUKBo6eMgvmEekD84j0Qd95xM8h9Ml9ztPLPrfr169LmTJlpFy5ctKhQwexsbGRevXqaU+djIyMlDFjxsidO3d05ps5c6bkzp07yemXlDMxj0gfmEf0sZhDWU9KfXby5EkREdmwYYMYGxuLk5OT3L9/XzvfuXPnxMHBQXvJEMfJydmYR6QPzCPSB+YRZVUqQxfePqU9e/bA2toaR48ehUqlwsOHD9GkSRMsWLAA+fLlQ4kSJTBq1ChYWVnpzOfo6AgTExNcvXqVd7Mh5hHpBfOIPhZzKOtJqc/mzp0LR0dH1K9fH/Xq1cOtW7eQkJAA4O2v3hUrVkRMTAyCg4MBgL+C53DMI9IH5hHpA/OIsqpse71efHw8rl69ivz582tv125vb4+xY8ciJCQEq1evBoAkXxAAwM/PDzVq1OAXBGIekV4wj+hjMYeynrT6bNmyZcifPz9GjBiB8PBw/Prrr7h37x4UCgX27t2LYsWKoWHDhgbeCjI05hHpA/OI9IF5RFlZti18qVQqxMTE4PXr19BoNNqKc/v27VG5cmX4+/sjICBA2z4kJATBwcEYPHgwtm/fDk9PTwBvK9SUczGPSB+YR/SxmENZT2p9VqVKFRw/fhyXLl1C48aNsWDBAqxfvx7169dHu3bt8M0338DDwwOOjo4G3goyNOYR6QPziPSBeURZmuGusvx0EscxOXz4sCiVSgkICBAR0d5698iRI1KsWDHZtGmTiIjcuHFDRowYIfb29uLm5iaXLl0ySNyUuTCPSB+YR/SxmENZT3r6zMXFRby9vbXznDlzRpYuXSqjRo2SixcvfvaYKfNhHpE+MI9IH5hHlNVl2bs6vnz5EpaWltq/5Z07QcTHx0OlUuHNmzdo0qQJjI2NcfDgQZ02xYoVg6enJ8aPH4/Xr1/D398fGo0G9evXN8j2kGEwj0gfmEf0sZhDWY8++qxbt24YN26cQeKnzIF5RPrAPCJ9YB5RdpblLnWMjY3Ft99+i1atWqFNmzbw9vbWHnBxcXEA3p6GmZCQgMjISEycOBH//PMPlixZor3E49mzZ7CwsECePHkAAGq1GvXq1eMXhByEeUT6wDyij8Ucynr02We2traG3BQyIOYR6QPziPSBeUQ5QZYqfP35558oXLgwrly5gm7duuHFixeYP38+9u/fDwAwNjYGACxYsADm5ubw8fGBu7s7JkyYgAkTJqBfv344duwYJk+ejBcvXqBBgwaG3BwyEOYR6QPziD4WcyjrYZ+RPjCPSB+YR6QPzCPKMT71tZT6EhQUJO3atZO5c+dqpwUHB4udnZ0cPHhQRESeP38unTp1kgIFCsiaNWtEo9Fo2y5YsEDq1Kkj5cqVkwoVKoi/v//n3gTKBJhHpA/MI/pYzKGsh31G+sA8In1gHpE+MI8oJ8kyha+nT5+Kv7+/PHv2TDvt/Pnz0qhRI/Hz89MOrOfv7y+RkZHaNgkJCTr/v3PnzmeLmTIf5hHpA/OIPhZzKOthn5E+MI9IH5hHpA/MI8pJMm3ha/PmzXLw4EEJDQ1N9vlBgwaJSqUSV1dXyZs3rzRt2lSOHTsmIv/ddYKIeUT6wDyij8UcynrYZ6QPzCPSB+YR6QPziHKyTDfG159//gk7OzvMnDkTnTp1Qvv27bFt2zYAgEaj0bZ78uQJdu/ejePHj2PHjh3IlSsXfvjhBwCAkZGRQWKnzIN5RPrAPKKPxRzKethnpA/MI9IH5hHpA/OICJlnjK+4uDiZN2+elC5dWpYvXy4xMTFy4sQJ8fT0lKZNm8qbN2+07URE5/piEZGffvpJKlasKA8ePPjssVPmwTwifWAe0cdiDmU97DPSB+YR6QPziPSBeUT0n0xzxld0dDQePXqEbt26oUePHjAxMUHNmjVRpkwZREVFIT4+HsDbW6nK/99eNVFCQgJu376NypUro0CBAobaBMoEmEekD8wj+ljMoayHfUb6wDwifWAekT4wj4j+ozLkym/evIlixYpBoVDA2toa7dq1Q7ly5aBUKqHRaKBUKuHk5ITo6GjtrVQBaA/K169f4+nTp/Dy8sL58+exZMkSAEhy4FL2xjwifWAe0cdiDmU97DPSB+YR6QPziPSBeUSUPIOc8bVp0yYUKVIEzZs3R40aNbBixQoAgKurK4yMjLQHJQDs2bMHrq6uMDExQUJCgnYZW7duxY8//ojKlSvj1q1b2L17N+rVqwcAPChzCOYR6QPziD4WcyjrYZ+RPjCPSB+YR6QPzCOi1H32M74OHjyIUaNGYeTIkXBxccGBAwcwYMAAaDQadO3aFWZmZlAoFBARxMTE4MqVKxg5ciQA3UH1SpUqhbt372LdunVo0KDB594MMjDmEekD84g+FnMo62GfkT4wj0gfmEekD8wjonT4XIOJJQ6WN3HiRKlcubLExsZqnxs4cKBUqVJFtm7dqjPPgwcPpHDhwnLjxg0REblx44Z89913nytkyoSYR6QPzCP6WMyhrId9RvrAPCJ9YB6RPjCPiNLvs13qmHh65LVr1+Di4gJjY2PExcUBAKZMmQIzMzPs2LEDDx8+1M7z999/w8nJCQ4ODhg6dCjKlCmDkJAQxMXFQUQ+V+iUiTCPSB+YR/SxmENZD/uM9IF5RPrAPCJ9YB4Rpd8nu9Tx4MGD2LVrF4oWLYqaNWuiWrVqAIAGDRpgxIgRSEhI0B6cNjY28PT0xKxZs3D9+nXY29tDRLB7925cuXIFhQsXhr29Pfz8/FClSpVPFTJlQswj0gfmEX0s5lDWwz4jfWAekT4wj0gfmEdEH07vZ3yFhYWhefPm6NKlC54+fYqVK1eiUaNGOH36NADA3d0dVlZWmDhxIgBoK8t9+vRBVFQULly4AODtHSVev34NCwsLLFq0CFeuXOFBmYMwj0gfmEf0sZhDWQ/7jPSBeUT6wDwifWAeEemBPq+bjI6Olm7dukmHDh3kzp072unVqlWT7t27i4hIVFSUTJkyRdRqtYSEhIjIf9cnu7u7S+/evbXznT17Vp/hURbBPCJ9YB7Rx2IOZT3sM9IH5hHpA/OI9IF5RKQfej3jy9zcHKampujevTuKFCmC+Ph4AECzZs0QGBgIEUGuXLnQqVMnVKpUCf/73//w77//QqFQICQkBBEREWjVqpV2eZUrV9ZneJRFMI9IH5hH9LGYQ1kP+4z0gXlE+sA8In1gHhHph0JEv6PYxcXFwdjYGACg0WigVCrRuXNnWFhY4Pfff9e2e/DgAerVq4f4+HhUqVIFJ0+eRKlSpbB+/XrY2dnpMyTKgphHpA/MI/pYzKGsh31G+sA8In1gHpE+MI+IPp7eC1/JqV27Nvr06YNu3bpBo9EAAJRKJW7duoVz587B398fFSpUQLdu3T51KJSFMY9IH5hH9LGYQ1kP+4z0gXlE+sA8In1gHhFlzCcvfN25cwc1a9bEnj17tKdWxsbGwsTE5FOulrIZ5hHpA/OIPhZzKOthn5E+MI9IH5hHpA/MI6KM0/tdHRMl1tOOHz8OS0tL7UE5ceJEDB06FBEREZ9q1ZSNMI9IH5hH9LGYQ1kP+4z0gXlE+sA8In1gHhF9ONWnWrBCoQAAnD59Gm3btsXBgwfRt29fvHr1Cn/++Sfy58//qVZN2QjziPSBeUQfizmU9bDPSB+YR6QPzCPSB+YR0Yf7pJc6vnnzBuXKlcPt27dhYmKCiRMnYtSoUZ9qdZRNMY9IH5hH9LGYQ1kP+4z0gXlE+sA8In1gHhF9mE8+xlfDhg1RvHhxzJkzB2ZmZp9yVZSNMY9IH5hH9LGYQ1kP+4z0gXlE+sA8In1gHhFl3CcvfCUkJMDIyOhTroJyAOYR6QPziD4WcyjrYZ+RPjCPSB+YR6QPzCOijPvkhS8iIiIiIiIiIiJD+GR3dSQiIiIiIiIiIjIkFr6IiIiIiIiIiChbYuGLiIiIiIiIiIiyJRa+iIiIiIiIiIgoW2Lhi4iIiIiIiIiIsiUWvoiIiIiIiIiIKFti4YuIiIiIiIiIiLIlFr6IiIiIiIiIiChbYuGLiIiIiIiIiIiyJRa+iIiIiIiIiIgoW/o/vYBkWZf6qKMAAAAASUVORK5CYII=" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "actual.plot_weights()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-06-16T14:13:16.109303222Z", + "start_time": "2023-06-16T14:13:15.768260195Z" + } + } + }, + { + "cell_type": "code", + "execution_count": 15, + "outputs": [ + { + "data": { + "text/plain": "
", + "image/png": "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dYir+ig9PV2SdNttt+mDDz7QunXr+NqvQ1z9/1G7du00Y8YMrVmzhj6qIy6mh84487v16NGj1bNnTy1fvlxbt26VJP3000+SpBEjRui1117Td999p/79+1dz9aiNCMZ+h2EYmjJlijp06KBjx46pRYsWzsfOfJF6eXnJMAwtWrTI+XFpaakaNGigO++8UwcOHNCbb76pa665RldeeaUyMzP5C0gdUpkeOvPX/G+++Ua9evVSy5YtdfToUY0fP17/93//J7vdLqvVqrCwsJo/IZjC1X103333yW63q1GjRvwQWoe4uo+mTJkiu90uHx+fcseCa/3lL39Rly5dlJmZqfz8fOdMvjNvz/zc8emnn2r8+PG65JJLtGDBAueMdaksxGzUqJGaN2/uvK9BgwY1eyIwlSv7KCIiQlJZ+NGzZ8+aPxmYpjr+P7JYLAoODq75k4EpLqaHDMPQ3LlznR87HA75+/tr3Lhx8vLy0vPPP68RI0aof//+Sk1NVb169dS2bVvTzgm1QLXueenhPvvsMyMoKMjo3bu38eOPP5Z77L+3M3/33XeN4OBg4/bbbzdOnDhRblxGRobRvHlzw2KxGNddd52RkpJSE6XDTVS1h26//XbjpZdeMp5//nnD39/fGDx4sJGamlpT5cNN0EdwBfrIMyUkJBiXXHKJER8ff94x7733nhESEmIMGzbMKCoqMnbu3Gn84Q9/MLy8vIwpU6YY999/vxEYGGi89dZbhmGUf71RN9BHcAX6CFVVkR665pprjPT09HKPpaenG926dTMsFotxww03GIcOHaruklFHEIxdQExMjNG6dWvnD/7btm0zli1bZuzfv9/Iz883DMMwXnvtNcPPz8/46KOPjJKSknLPT0hIMCwWi9GjRw9j7dq1NV4/zFeVHjp27JjRoEEDw2KxGO3atTOWL19uyjnAfPQRXIE+8ky33367cfvttxuGYRiJiYnGk08+aXz00UfGnj17DMMwjM8//9xo3ry58eGHHxrFxcXlnvvKK68Y99xzjxETE2MkJCTUeO1wH/QRXIE+QlVVpIf+93frxMREIygoyOjcubOxZs2aGq8dtZvFMNju43y2bt2qG264Qbfccot27typTZs2qUGDBsrOztbgwYM1b948GYah3NxcNWrU6Kzn2+12ffLJJ7rvvvtqvni4har0UGpqqm699Vbddddd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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "actual.plot_security_weights()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-06-16T14:13:26.830768035Z", + "start_time": "2023-06-16T14:13:26.528201400Z" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "Conclusion: The strategy does not have a return, but some other statistics. It has sold everything on the 4th day and rebalancing is not propagated to the children." + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "markdown", + "source": [ + "## Show stats, transactions, weights and security weights of a second level composite strategy" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 12, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "2023-05-22 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-05-23 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-05-24 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-05-25 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-05-26 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-05-30 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-05-31 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-01 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-02 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-05 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-06 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-07 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-08 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-09 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-12 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-13 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-14 00:00:00: 5fc986bf-d7c8-4582-bc27-f1ede76bdc29 -> Value:3153466, Price:315.3466\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "[*********************100%***********************] 1 of 1 completed\n", + "[*********************100%***********************] 1 of 1 completed\n", + "\n", + "2023-05-22 00:00:00: e5286ea7-9591-4b43-896e-cf34fb63a0e0 -> Value:3112742, Price:311.2742\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-05-23 00:00:00: e5286ea7-9591-4b43-896e-cf34fb63a0e0 -> Value:3112742, Price:311.2742\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-05-24 00:00:00: e5286ea7-9591-4b43-896e-cf34fb63a0e0 -> Value:3112742, Price:311.2742\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-05-25 00:00:00: e5286ea7-9591-4b43-896e-cf34fb63a0e0 -> Value:3112742, Price:311.2742\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-05-26 00:00:00: e5286ea7-9591-4b43-896e-cf34fb63a0e0 -> Value:3112742, Price:311.2742\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-05-30 00:00:00: e5286ea7-9591-4b43-896e-cf34fb63a0e0 -> Value:3112742, Price:311.2742\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-05-31 00:00:00: e5286ea7-9591-4b43-896e-cf34fb63a0e0 -> Value:3112742, Price:311.2742\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-01 00:00:00: e5286ea7-9591-4b43-896e-cf34fb63a0e0 -> Value:3112742, Price:311.2742\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-02 00:00:00: e5286ea7-9591-4b43-896e-cf34fb63a0e0 -> Value:3112742, Price:311.2742\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-05 00:00:00: e5286ea7-9591-4b43-896e-cf34fb63a0e0 -> Value:3112742, Price:311.2742\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-06 00:00:00: e5286ea7-9591-4b43-896e-cf34fb63a0e0 -> Value:3112742, Price:311.2742\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-07 00:00:00: e5286ea7-9591-4b43-896e-cf34fb63a0e0 -> Value:3112742, Price:311.2742\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-08 00:00:00: e5286ea7-9591-4b43-896e-cf34fb63a0e0 -> Value:3112742, Price:311.2742\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-09 00:00:00: e5286ea7-9591-4b43-896e-cf34fb63a0e0 -> Value:3112742, Price:311.2742\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-12 00:00:00: e5286ea7-9591-4b43-896e-cf34fb63a0e0 -> Value:3112742, Price:311.2742\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-13 00:00:00: e5286ea7-9591-4b43-896e-cf34fb63a0e0 -> Value:3112742, Price:311.2742\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "\n", + "2023-06-14 00:00:00: e5286ea7-9591-4b43-896e-cf34fb63a0e0 -> Value:3112742, Price:311.2742\n", + "Weights: \n", + "Series([], dtype: float64)\n", + "[*********************100%***********************] 1 of 1 completed\n" + ] + }, + { + "ename": "ZeroDivisionError", + "evalue": "Could not update df876984-3be8-40c9-8847-e3b3c6af3cdc on 2023-05-17 00:00:00. Last value was 0.0 and net flows were 0. Currentvalue is 1000000.0. Therefore, we are dividing by zero to obtain the return for the period.", + "output_type": "error", + "traceback": [ + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mZeroDivisionError\u001B[0m Traceback (most recent call last)", + "Cell \u001B[0;32mIn[12], line 46\u001B[0m\n\u001B[1;32m 1\u001B[0m node: \u001B[38;5;28mdict\u001B[39m \u001B[38;5;241m=\u001B[39m {\n\u001B[1;32m 2\u001B[0m \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mid\u001B[39m\u001B[38;5;124m'\u001B[39m: \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mc20d0968-2dfa-4ff7-8dfc-4c3d0df36dd4\u001B[39m\u001B[38;5;124m'\u001B[39m,\n\u001B[1;32m 3\u001B[0m \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mnode-type\u001B[39m\u001B[38;5;124m'\u001B[39m: \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mgroup\u001B[39m\u001B[38;5;124m'\u001B[39m,\n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 42\u001B[0m ]\n\u001B[1;32m 43\u001B[0m }\n\u001B[1;32m 45\u001B[0m subject \u001B[38;5;241m=\u001B[39m BTInterpreter(node, date\u001B[38;5;241m.\u001B[39mtoday() \u001B[38;5;241m-\u001B[39m timedelta(weeks\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m4\u001B[39m), date\u001B[38;5;241m.\u001B[39mtoday())\n\u001B[0;32m---> 46\u001B[0m actual: bt\u001B[38;5;241m.\u001B[39mbacktest\u001B[38;5;241m.\u001B[39mResult \u001B[38;5;241m=\u001B[39m \u001B[43msubject\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mtraverse\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/PycharmProjects/bt-composite-strategies/src/interpreter.py:48\u001B[0m, in \u001B[0;36mBTInterpreter.traverse\u001B[0;34m(self, node)\u001B[0m\n\u001B[1;32m 46\u001B[0m \u001B[38;5;28;01mmatch\u001B[39;00m node_type:\n\u001B[1;32m 47\u001B[0m \u001B[38;5;28;01mcase\u001B[39;00m \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mgroup\u001B[39m\u001B[38;5;124m'\u001B[39m:\n\u001B[0;32m---> 48\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mparse_group\u001B[49m\u001B[43m(\u001B[49m\u001B[43mnode\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 49\u001B[0m \u001B[38;5;28;01mcase\u001B[39;00m \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mgroup\u001B[39m\u001B[38;5;124m'\u001B[39m:\n\u001B[1;32m 50\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mparse_group(node)\n", + "File \u001B[0;32m~/PycharmProjects/bt-composite-strategies/src/interpreter.py:76\u001B[0m, in \u001B[0;36mBTInterpreter.parse_group\u001B[0;34m(self, node)\u001B[0m\n\u001B[1;32m 74\u001B[0m strategy: bt\u001B[38;5;241m.\u001B[39mStrategy \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mbuild_strategy(identifier, strategies, debug\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mTrue\u001B[39;00m)\n\u001B[1;32m 75\u001B[0m backtest: bt\u001B[38;5;241m.\u001B[39mBacktest \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mbuild_backtest(strategy, prices)\n\u001B[0;32m---> 76\u001B[0m result: bt\u001B[38;5;241m.\u001B[39mbacktest\u001B[38;5;241m.\u001B[39mResult \u001B[38;5;241m=\u001B[39m \u001B[43mbt\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mrun\u001B[49m\u001B[43m(\u001B[49m\u001B[43mbacktest\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 77\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m result\n", + "File \u001B[0;32m~/.conda/envs/bt-composite-strategies/lib/python3.11/site-packages/bt/backtest.py:28\u001B[0m, in \u001B[0;36mrun\u001B[0;34m(*backtests)\u001B[0m\n\u001B[1;32m 26\u001B[0m \u001B[38;5;66;03m# run each backtest\u001B[39;00m\n\u001B[1;32m 27\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m bkt \u001B[38;5;129;01min\u001B[39;00m backtests:\n\u001B[0;32m---> 28\u001B[0m \u001B[43mbkt\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mrun\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 30\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m Result(\u001B[38;5;241m*\u001B[39mbacktests)\n", + "File \u001B[0;32m~/.conda/envs/bt-composite-strategies/lib/python3.11/site-packages/bt/backtest.py:244\u001B[0m, in \u001B[0;36mBacktest.run\u001B[0;34m(self)\u001B[0m\n\u001B[1;32m 240\u001B[0m bar \u001B[38;5;241m=\u001B[39m pyprind\u001B[38;5;241m.\u001B[39mProgBar(\u001B[38;5;28mlen\u001B[39m(\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mdates), title\u001B[38;5;241m=\u001B[39m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mname, stream\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m1\u001B[39m)\n\u001B[1;32m 242\u001B[0m \u001B[38;5;66;03m# since there is a dummy row at time 0, start backtest at date 1.\u001B[39;00m\n\u001B[1;32m 243\u001B[0m \u001B[38;5;66;03m# we must still update for t0\u001B[39;00m\n\u001B[0;32m--> 244\u001B[0m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mstrategy\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mupdate\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mdates\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;241;43m0\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 246\u001B[0m \u001B[38;5;66;03m# and for the backtest loop, start at date 1\u001B[39;00m\n\u001B[1;32m 247\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m dt \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mdates[\u001B[38;5;241m1\u001B[39m:]:\n\u001B[1;32m 248\u001B[0m \u001B[38;5;66;03m# update progress bar\u001B[39;00m\n", + "File \u001B[0;32m~/.conda/envs/bt-composite-strategies/lib/python3.11/site-packages/bt/core.py:732\u001B[0m, in \u001B[0;36mbt.core.StrategyBase.update\u001B[0;34m()\u001B[0m\n", + "File \u001B[0;32m~/.conda/envs/bt-composite-strategies/lib/python3.11/site-packages/bt/core.py:732\u001B[0m, in \u001B[0;36mbt.core.StrategyBase.update\u001B[0;34m()\u001B[0m\n", + "File \u001B[0;32m~/.conda/envs/bt-composite-strategies/lib/python3.11/site-packages/bt/core.py:855\u001B[0m, in \u001B[0;36mbt.core.StrategyBase.update\u001B[0;34m()\u001B[0m\n", + "File \u001B[0;32m~/.conda/envs/bt-composite-strategies/lib/python3.11/site-packages/bt/core.py:803\u001B[0m, in \u001B[0;36mbt.core.StrategyBase.update\u001B[0;34m()\u001B[0m\n", + "\u001B[0;31mZeroDivisionError\u001B[0m: Could not update df876984-3be8-40c9-8847-e3b3c6af3cdc on 2023-05-17 00:00:00. Last value was 0.0 and net flows were 0. Currentvalue is 1000000.0. Therefore, we are dividing by zero to obtain the return for the period." + ] + } + ], + "source": [ + "node: dict = {\n", + " 'id': 'c20d0968-2dfa-4ff7-8dfc-4c3d0df36dd4',\n", + " 'node-type': 'group',\n", + " 'children': [\n", + " {\n", + " 'id': '5fc986bf-d7c8-4582-bc27-f1ede76bdc29 ',\n", + " 'node-type': 'group',\n", + " 'children': [\n", + " {\n", + " 'id': 'df876984-3be8-40c9-8847-e3b3c6af3cdc',\n", + " 'node-type': 'asset',\n", + " 'ticker': 'QQQ'\n", + " },\n", + " {\n", + " 'id': '742dc790-d0f7-472d-bd3e-405e411c0b2c',\n", + " 'node-type': 'asset',\n", + " 'ticker': 'SPY'\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " 'id': 'e5286ea7-9591-4b43-896e-cf34fb63a0e0',\n", + " 'node-type': 'group',\n", + " 'children': [\n", + " {\n", + " 'id': '9e4f255b-343a-43ee-a433-f2366f8e9e62',\n", + " 'node-type': 'asset',\n", + " 'ticker': 'IYY'\n", + " },\n", + " {\n", + " 'id': '57033cdf-c185-4091-9d3e-3fc1e17913be',\n", + " 'node-type': 'asset',\n", + " 'ticker': 'IWM'\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " 'id': '07306351-709d-41d8-b8dd-d8f6e6ae2900',\n", + " 'node-type': 'asset',\n", + " 'ticker': 'IVV'\n", + " }\n", + " ]\n", + "}\n", + "\n", + "subject = BTInterpreter(node, date.today() - timedelta(weeks=4), date.today())\n", + "actual: bt.backtest.Result = subject.traverse()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-06-16T14:08:23.603928733Z", + "start_time": "2023-06-16T14:08:05.853567917Z" + } + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "actual.stats" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "actual.get_transactions()" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "actual.plot_weights()" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "actual.plot_security_weights()" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "markdown", + "source": [ + "Conclusion: Something does not fit together :-(\n", + "\n", + "How to get this example running?" + ], + "metadata": { + "collapsed": false + } + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/src/interpreter.py b/src/interpreter.py new file mode 100644 index 0000000..e3a7084 --- /dev/null +++ b/src/interpreter.py @@ -0,0 +1,119 @@ +from datetime import date +from typing import Union + +import bt +import pandas as pd +from pandas import DataFrame, Series + + +def flatten(i, result=None) -> list[bt.Backtest]: + if result is None: + result = [] + if isinstance(i, bt.Backtest): + result.append(i) + elif isinstance(i, bt.backtest.Result): + for b in i.backtest_list: + flatten(b, result) + elif isinstance(i, list): + for b in i: + flatten(b, result) + elif isinstance(i, tuple): + for b in i: + flatten(b, result) + else: + raise NotImplementedError() + + return result + + +class BTInterpreter: + root: dict + + start: date + end: date + rebalance: bt.algos.RunPeriod + + def __init__(self, root: dict, start: date, end: date): + self.root = root + + self.start = start + self.end = end + + def traverse(self, node: dict = None) -> bt.backtest.Result: + if node is None: + node = self.root + node_type: str = node.get('node-type') + match node_type: + case 'group': + return self.parse_group(node) + case 'group': + return self.parse_group(node) + case 'asset': + return self.parse_asset(node) + case _: + raise NotImplementedError() + + def parse_group(self, node: dict) -> bt.backtest.Result: + identifier: str = node.get('id') + + children: list = node.get('children') + children: list[bt.backtest.Result] = [self.traverse(c) for c in children] + + prices: DataFrame = pd.DataFrame() + for p in [c.prices for c in children]: + prices = bt.merge(p) + + backtests: list[bt.Backtest] = flatten([c.backtest_list for c in children]) + #for p in [b.data for b in backtests]: + # prices = bt.merge(prices, p) + + strategies: list[bt.Strategy] = [b.strategy for b in backtests] + #for p in [s.universe for s in strategies]: + # prices = bt.merge(prices, p) + + strategy: bt.Strategy = self.build_strategy(identifier, strategies, debug=True) + backtest: bt.Backtest = self.build_backtest(strategy, prices) + result: bt.backtest.Result = bt.run(backtest) + return result + + def parse_asset(self, node: dict) -> bt.backtest.Result: + identifier: str = node.get('id') + + ticker: str = node.get('ticker') + prices: DataFrame = bt.data.get(ticker, clean_tickers=False, start=self.start, end=self.end) + strategy: bt.Strategy = self.build_strategy(identifier, [bt.Security(ticker)]) + backtest: bt.Backtest = self.build_backtest(strategy, prices) + result: bt.backtest.Result = bt.run(backtest) + return result + + def build_strategy(self, name: str, + children: Union[list[bt.algos.SecurityBase], list[bt.core.StrategyBase]], + selection: bt.algos.Algo = bt.algos.SelectAll(), + weight: bt.algos.Algo = bt.algos.WeighInvVol(), + debug: bool = False + ) -> bt.Strategy: + algos: [list[bt.algos.Algo]] = [ + bt.algos.RunAfterDate(self.start), + bt.algos.RunDaily(), + selection, + weight + ] + if debug: + algos.append(bt.algos.PrintInfo('\n{now}: {name} -> Value:{_value:0.0f}, Price:{_price:0.4f}')) + algos.append(bt.algos.PrintTempData('Weights: \n{weights}')) + + algos.append(bt.algos.Rebalance()) + result: bt.Strategy = bt.Strategy(name, algos, children) + return result + + @staticmethod + def build_backtest(strategy: bt.Strategy, prices: Union[Series, DataFrame]) -> bt.Backtest: + return bt.Backtest(strategy, prices, integer_positions=False) + + +def main(): + print("Hello World!") + + +if __name__ == "__main__": + main() diff --git a/tests/test_interpreter.py b/tests/test_interpreter.py new file mode 100644 index 0000000..8ce9972 --- /dev/null +++ b/tests/test_interpreter.py @@ -0,0 +1,99 @@ +import pprint +from datetime import date, timedelta + +import bt.algos + +from interpreter import BTInterpreter + + +def print_backtest_results(result: bt.backtest.Result): + result.display() + for k, v in result.items(): + pprint.pp(result.get_transactions(k)) + pprint.pp(result.get_weights(k)) + pprint.pp(result.get_security_weights(k)) + + +def test_traverse_asset(): + node: dict = { + 'id': 'df876984-3be8-40c9-8847-e3b3c6af3cdc', + 'node-type': 'asset', + 'ticker': 'QQQ' + } + + subject = BTInterpreter(node, date.today() - timedelta(weeks=4), date.today()) + actual: bt.backtest.Result = subject.traverse() + print_backtest_results(actual) + + +def test_traverse_first_level_asset(): + node: dict = { + 'id': '5fc986bf-d7c8-4582-bc27-f1ede76bdc29', + 'node-type': 'group', + 'children': [ + { + 'id': 'df876984-3be8-40c9-8847-e3b3c6af3cdc', + 'node-type': 'asset', + 'ticker': 'QQQ' + }, + { + 'id': '742dc790-d0f7-472d-bd3e-405e411c0b2c', + 'node-type': 'asset', + 'ticker': 'SPY' + } + ] + } + + subject = BTInterpreter(node, date.today() - timedelta(weeks=4), date.today()) + actual: bt.backtest.Result = subject.traverse() + print_backtest_results(actual) + + +def test_traverse_second_level_asset(): + node: dict = { + 'id': 'c20d0968-2dfa-4ff7-8dfc-4c3d0df36dd4', + 'node-type': 'group', + 'children': [ + { + 'id': '5fc986bf-d7c8-4582-bc27-f1ede76bdc29 ', + 'node-type': 'group', + 'children': [ + { + 'id': 'df876984-3be8-40c9-8847-e3b3c6af3cdc', + 'node-type': 'asset', + 'ticker': 'QQQ' + }, + { + 'id': '742dc790-d0f7-472d-bd3e-405e411c0b2c ', + 'node-type': 'asset', + 'ticker': 'SPY' + } + ] + }, + { + 'id': 'e5286ea7-9591-4b43-896e-cf34fb63a0e0', + 'node-type': 'group', + 'children': [ + { + 'id': '9e4f255b-343a-43ee-a433-f2366f8e9e62', + 'node-type': 'asset', + 'ticker': 'IYY' + }, + { + 'id': '57033cdf-c185-4091-9d3e-3fc1e17913be ', + 'node-type': 'asset', + 'ticker': 'IWM' + } + ] + }, + { + 'id': '07306351-709d-41d8-b8dd-d8f6e6ae2900 ', + 'node-type': 'asset', + 'ticker': 'IVV' + } + ] + } + + subject = BTInterpreter(node, date.today() - timedelta(weeks=4), date.today()) + actual: bt.backtest.Result = subject.traverse() + print_backtest_results(actual)