http://git-wip-us.apache.org/repos/asf/madlib-site/blob/3f849b9e/community-artifacts/Random-forest-v1.ipynb ---------------------------------------------------------------------- diff --git a/community-artifacts/Random-forest-v1.ipynb b/community-artifacts/Random-forest-v1.ipynb new file mode 100644 index 0000000..bac8363 --- /dev/null +++ b/community-artifacts/Random-forest-v1.ipynb @@ -0,0 +1,2899 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Random forest\n", + "\n", + "Random forests build an ensemble of classifiers, each of which is a tree model constructed using bootstrapped samples from the input data. The results of these models are then combined to yield a single prediction, which, at the expense of some loss in interpretation, have been found to be highly accurate.\n", + "\n", + "Please also refer to the decision tree user documentation for information relevant to the implementation of random forests in MADlib." + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The sql extension is already loaded. To reload it, use:\n", + " %reload_ext sql\n" + ] + } + ], + "source": [ + "%load_ext sql" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "u'Connected: gpadmin@madlib'" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Greenplum Database 5.4.0 on GCP (demo machine)\n", + "%sql postgresql://gpadmin@35.184.253.255:5432/madlib\n", + " \n", + "# PostgreSQL local\n", + "#%sql postgresql://fmcquillan@localhost:5432/madlib\n", + "\n", + "# Greenplum Database 4.3.10.0\n", + "#%sql postgresql://gpdbchina@10.194.10.68:61000/madlib" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 rows affected.\n" + ] + }, + { + "data": { + "text/html": [ + "<table>\n", + " <tr>\n", + " <th>version</th>\n", + " </tr>\n", + " <tr>\n", + " <td>MADlib version: 1.14-dev, git revision: rc/1.13-rc1-40-ga1360f3, cmake configuration time: Wed Mar 28 18:16:08 UTC 2018, build type: release, build system: Linux-2.6.32-696.20.1.el6.x86_64, C compiler: gcc 4.4.7, C++ compiler: g++ 4.4.7</td>\n", + " </tr>\n", + "</table>" + ], + "text/plain": [ + "[(u'MADlib version: 1.14-dev, git revision: rc/1.13-rc1-40-ga1360f3, cmake configuration time: Wed Mar 28 18:16:08 UTC 2018, build type: release, build system: Linux-2.6.32-696.20.1.el6.x86_64, C compiler: gcc 4.4.7, C++ compiler: g++ 4.4.7',)]" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%sql select madlib.version();\n", + "#%sql select version();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Random forest classification examples" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1. Load data\n", + "Data set related to whether to play golf or not." + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Done.\n", + "Done.\n", + "14 rows affected.\n", + "14 rows affected.\n" + ] + }, + { + "data": { + "text/html": [ + "<table>\n", + " <tr>\n", + " <th>id</th>\n", + " <th>OUTLOOK</th>\n", + " <th>temperature</th>\n", + " <th>humidity</th>\n", + " <th>Temp_Humidity</th>\n", + " <th>clouds_airquality</th>\n", + " <th>windy</th>\n", + " <th>class</th>\n", + " </tr>\n", + " <tr>\n", + " <td>1</td>\n", + " <td>sunny</td>\n", + " <td>85.0</td>\n", + " <td>85.0</td>\n", + " <td>[85.0, 85.0]</td>\n", + " <td>[u'none', u'unhealthy']</td>\n", + " <td>False</td>\n", + " <td>Don't Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>2</td>\n", + " <td>sunny</td>\n", + " <td>80.0</td>\n", + " <td>90.0</td>\n", + " <td>[80.0, 90.0]</td>\n", + " <td>[u'none', u'moderate']</td>\n", + " <td>True</td>\n", + " <td>Don't Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>3</td>\n", + " <td>overcast</td>\n", + " <td>83.0</td>\n", + " <td>78.0</td>\n", + " <td>[83.0, 78.0]</td>\n", + " <td>[u'low', u'moderate']</td>\n", + " <td>False</td>\n", + " <td>Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>4</td>\n", + " <td>rain</td>\n", + " <td>70.0</td>\n", + " <td>96.0</td>\n", + " <td>[70.0, 96.0]</td>\n", + " <td>[u'low', u'moderate']</td>\n", + " <td>False</td>\n", + " <td>Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>5</td>\n", + " <td>rain</td>\n", + " <td>68.0</td>\n", + " <td>80.0</td>\n", + " <td>[68.0, 80.0]</td>\n", + " <td>[u'medium', u'good']</td>\n", + " <td>False</td>\n", + " <td>Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>6</td>\n", + " <td>rain</td>\n", + " <td>65.0</td>\n", + " <td>70.0</td>\n", + " <td>[65.0, 70.0]</td>\n", + " <td>[u'low', u'unhealthy']</td>\n", + " <td>True</td>\n", + " <td>Don't Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>7</td>\n", + " <td>overcast</td>\n", + " <td>64.0</td>\n", + " <td>65.0</td>\n", + " <td>[64.0, 65.0]</td>\n", + " <td>[u'medium', u'moderate']</td>\n", + " <td>True</td>\n", + " <td>Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>8</td>\n", + " <td>sunny</td>\n", + " <td>72.0</td>\n", + " <td>95.0</td>\n", + " <td>[72.0, 95.0]</td>\n", + " <td>[u'high', u'unhealthy']</td>\n", + " <td>False</td>\n", + " <td>Don't Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>9</td>\n", + " <td>sunny</td>\n", + " <td>69.0</td>\n", + " <td>70.0</td>\n", + " <td>[69.0, 70.0]</td>\n", + " <td>[u'high', u'good']</td>\n", + " <td>False</td>\n", + " <td>Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>10</td>\n", + " <td>rain</td>\n", + " <td>75.0</td>\n", + " <td>80.0</td>\n", + " <td>[75.0, 80.0]</td>\n", + " <td>[u'medium', u'good']</td>\n", + " <td>False</td>\n", + " <td>Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>11</td>\n", + " <td>sunny</td>\n", + " <td>75.0</td>\n", + " <td>70.0</td>\n", + " <td>[75.0, 70.0]</td>\n", + " <td>[u'none', u'good']</td>\n", + " <td>True</td>\n", + " <td>Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>12</td>\n", + " <td>overcast</td>\n", + " <td>72.0</td>\n", + " <td>90.0</td>\n", + " <td>[72.0, 90.0]</td>\n", + " <td>[u'medium', u'moderate']</td>\n", + " <td>True</td>\n", + " <td>Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>13</td>\n", + " <td>overcast</td>\n", + " <td>81.0</td>\n", + " <td>75.0</td>\n", + " <td>[81.0, 75.0]</td>\n", + " <td>[u'medium', u'moderate']</td>\n", + " <td>False</td>\n", + " <td>Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>14</td>\n", + " <td>rain</td>\n", + " <td>71.0</td>\n", + " <td>80.0</td>\n", + " <td>[71.0, 80.0]</td>\n", + " <td>[u'low', u'unhealthy']</td>\n", + " <td>True</td>\n", + " <td>Don't Play</td>\n", + " </tr>\n", + "</table>" + ], + "text/plain": [ + "[(1, u'sunny', 85.0, 85.0, [85.0, 85.0], [u'none', u'unhealthy'], False, u\"Don't Play\"),\n", + " (2, u'sunny', 80.0, 90.0, [80.0, 90.0], [u'none', u'moderate'], True, u\"Don't Play\"),\n", + " (3, u'overcast', 83.0, 78.0, [83.0, 78.0], [u'low', u'moderate'], False, u'Play'),\n", + " (4, u'rain', 70.0, 96.0, [70.0, 96.0], [u'low', u'moderate'], False, u'Play'),\n", + " (5, u'rain', 68.0, 80.0, [68.0, 80.0], [u'medium', u'good'], False, u'Play'),\n", + " (6, u'rain', 65.0, 70.0, [65.0, 70.0], [u'low', u'unhealthy'], True, u\"Don't Play\"),\n", + " (7, u'overcast', 64.0, 65.0, [64.0, 65.0], [u'medium', u'moderate'], True, u'Play'),\n", + " (8, u'sunny', 72.0, 95.0, [72.0, 95.0], [u'high', u'unhealthy'], False, u\"Don't Play\"),\n", + " (9, u'sunny', 69.0, 70.0, [69.0, 70.0], [u'high', u'good'], False, u'Play'),\n", + " (10, u'rain', 75.0, 80.0, [75.0, 80.0], [u'medium', u'good'], False, u'Play'),\n", + " (11, u'sunny', 75.0, 70.0, [75.0, 70.0], [u'none', u'good'], True, u'Play'),\n", + " (12, u'overcast', 72.0, 90.0, [72.0, 90.0], [u'medium', u'moderate'], True, u'Play'),\n", + " (13, u'overcast', 81.0, 75.0, [81.0, 75.0], [u'medium', u'moderate'], False, u'Play'),\n", + " (14, u'rain', 71.0, 80.0, [71.0, 80.0], [u'low', u'unhealthy'], True, u\"Don't Play\")]" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%sql\n", + "DROP TABLE IF EXISTS rf_golf CASCADE;\n", + "\n", + "CREATE TABLE rf_golf (\n", + " id integer NOT NULL,\n", + " \"OUTLOOK\" text,\n", + " temperature double precision,\n", + " humidity double precision,\n", + " \"Temp_Humidity\" double precision[],\n", + " clouds_airquality text[],\n", + " windy boolean,\n", + " class text\n", + ");\n", + "\n", + "INSERT INTO rf_golf VALUES\n", + "(1,'sunny', 85, 85, ARRAY[85, 85],ARRAY['none', 'unhealthy'], 'false','Don''t Play'),\n", + "(2, 'sunny', 80, 90, ARRAY[80, 90], ARRAY['none', 'moderate'], 'true', 'Don''t Play'),\n", + "(3, 'overcast', 83, 78, ARRAY[83, 78], ARRAY['low', 'moderate'], 'false', 'Play'),\n", + "(4, 'rain', 70, 96, ARRAY[70, 96], ARRAY['low', 'moderate'], 'false', 'Play'),\n", + "(5, 'rain', 68, 80, ARRAY[68, 80], ARRAY['medium', 'good'], 'false', 'Play'),\n", + "(6, 'rain', 65, 70, ARRAY[65, 70], ARRAY['low', 'unhealthy'], 'true', 'Don''t Play'),\n", + "(7, 'overcast', 64, 65, ARRAY[64, 65], ARRAY['medium', 'moderate'], 'true', 'Play'),\n", + "(8, 'sunny', 72, 95, ARRAY[72, 95], ARRAY['high', 'unhealthy'], 'false', 'Don''t Play'),\n", + "(9, 'sunny', 69, 70, ARRAY[69, 70], ARRAY['high', 'good'], 'false', 'Play'),\n", + "(10, 'rain', 75, 80, ARRAY[75, 80], ARRAY['medium', 'good'], 'false', 'Play'),\n", + "(11, 'sunny', 75, 70, ARRAY[75, 70], ARRAY['none', 'good'], 'true', 'Play'),\n", + "(12, 'overcast', 72, 90, ARRAY[72, 90], ARRAY['medium', 'moderate'], 'true', 'Play'),\n", + "(13, 'overcast', 81, 75, ARRAY[81, 75], ARRAY['medium', 'moderate'], 'false', 'Play'),\n", + "(14, 'rain', 71, 80, ARRAY[71, 80], ARRAY['low', 'unhealthy'], 'true', 'Don''t Play');\n", + "\n", + "SELECT * FROM rf_golf ORDER BY id;" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2. Train random forest\n", + "Train random forest then view the summary table:" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Done.\n", + "1 rows affected.\n", + "1 rows affected.\n" + ] + }, + { + "data": { + "text/html": [ + "<table>\n", + " <tr>\n", + " <th>method</th>\n", + " <th>is_classification</th>\n", + " <th>source_table</th>\n", + " <th>model_table</th>\n", + " <th>id_col_name</th>\n", + " <th>dependent_varname</th>\n", + " <th>independent_varnames</th>\n", + " <th>cat_features</th>\n", + " <th>con_features</th>\n", + " <th>grouping_cols</th>\n", + " <th>num_trees</th>\n", + " <th>num_random_features</th>\n", + " <th>max_tree_depth</th>\n", + " <th>min_split</th>\n", + " <th>min_bucket</th>\n", + " <th>num_splits</th>\n", + " <th>verbose</th>\n", + " <th>importance</th>\n", + " <th>num_permutations</th>\n", + " <th>num_all_groups</th>\n", + " <th>num_failed_groups</th>\n", + " <th>total_rows_processed</th>\n", + " <th>total_rows_skipped</th>\n", + " <th>dependent_var_levels</th>\n", + " <th>dependent_var_type</th>\n", + " <th>independent_var_types</th>\n", + " <th>null_proxy</th>\n", + " </tr>\n", + " <tr>\n", + " <td>forest_train</td>\n", + " <td>True</td>\n", + " <td>rf_golf</td>\n", + " <td>train_output</td>\n", + " <td>id</td>\n", + " <td>class</td>\n", + " <td>\"OUTLOOK\",windy,temperature,humidity</td>\n", + " <td>\"OUTLOOK\",windy</td>\n", + " <td>temperature,humidity</td>\n", + " <td>None</td>\n", + " <td>20</td>\n", + " <td>2</td>\n", + " <td>8</td>\n", + " <td>3</td>\n", + " <td>1</td>\n", + " <td>10</td>\n", + " <td>False</td>\n", + " <td>True</td>\n", + " <td>1</td>\n", + " <td>1</td>\n", + " <td>0</td>\n", + " <td>14</td>\n", + " <td>0</td>\n", + " <td>\"Don't Play\",\"Play\"</td>\n", + " <td>text</td>\n", + " <td>text, boolean, double precision, double precision</td>\n", + " <td>None</td>\n", + " </tr>\n", + "</table>" + ], + "text/plain": [ + "[(u'forest_train', True, u'rf_golf', u'train_output', u'id', u'class', u'\"OUTLOOK\",windy,temperature,humidity', u'\"OUTLOOK\",windy', u'temperature,humidity', None, 20, 2, 8, 3, 1, 10, False, True, 1, 1, 0, 14, 0, u'\"Don\\'t Play\",\"Play\"', u'text', u'text, boolean, double precision, double precision', u'None')]" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%sql\n", + "DROP TABLE IF EXISTS train_output, train_output_group, train_output_summary;\n", + "\n", + "SELECT madlib.forest_train('rf_golf', -- source table\n", + " 'train_output', -- output model table\n", + " 'id', -- id column\n", + " 'class', -- response\n", + " '\"OUTLOOK\", temperature, humidity, windy', -- features\n", + " NULL, -- exclude columns\n", + " NULL, -- grouping columns\n", + " 20::integer, -- number of trees\n", + " 2::integer, -- number of random features\n", + " TRUE::boolean, -- variable importance\n", + " 1::integer, -- num_permutations\n", + " 8::integer, -- max depth\n", + " 3::integer, -- min split\n", + " 1::integer, -- min bucket\n", + " 10::integer -- number of splits per continuous variable\n", + " );\n", + "\n", + "SELECT * FROM train_output_summary;" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Review the group table for variable importance:" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 rows affected.\n" + ] + }, + { + "data": { + "text/html": [ + "<table>\n", + " <tr>\n", + " <th>gid</th>\n", + " <th>success</th>\n", + " <th>cat_n_levels</th>\n", + " <th>cat_levels_in_text</th>\n", + " <th>oob_error</th>\n", + " <th>cat_var_importance</th>\n", + " <th>con_var_importance</th>\n", + " </tr>\n", + " <tr>\n", + " <td>1</td>\n", + " <td>True</td>\n", + " <td>[3, 2]</td>\n", + " <td>[u'overcast', u'sunny', u'rain', u'False', u'True']</td>\n", + " <td>0.57142857142857142857</td>\n", + " <td>[0.113988095238095, 0.0363095238095238]</td>\n", + " <td>[0.0, 0.0342261904761905]</td>\n", + " </tr>\n", + "</table>" + ], + "text/plain": [ + "[(1, True, [3, 2], [u'overcast', u'sunny', u'rain', u'False', u'True'], Decimal('0.57142857142857142857'), [0.113988095238095, 0.0363095238095238], [0.0, 0.0342261904761905])]" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%sql\n", + "SELECT * FROM train_output_group;" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The 'cat_levels_in_text' array shows the ordering of the levels of the categorical variables \"OUTLOOK\" and windy, which have 3 and 2 levels respectively.\n", + "\n", + "Variable importance for categorical variables is shown in 'cat_var_importance'.\n", + "\n", + "Variable importance for continuous variables is shown in 'con_var_importance'.\n", + "\n", + "A higher value means higher importance for the variable." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "scrolled": true + }, + "source": [ + "# 3. Predict\n", + "Predict output categories. For the purpose of this example, we use the same data that was used for training:" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Done.\n", + "1 rows affected.\n", + "14 rows affected.\n" + ] + }, + { + "data": { + "text/html": [ + "<table>\n", + " <tr>\n", + " <th>id</th>\n", + " <th>class</th>\n", + " <th>estimated_class</th>\n", + " </tr>\n", + " <tr>\n", + " <td>1</td>\n", + " <td>Don't Play</td>\n", + " <td>Don't Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>2</td>\n", + " <td>Don't Play</td>\n", + " <td>Don't Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>3</td>\n", + " <td>Play</td>\n", + " <td>Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>4</td>\n", + " <td>Play</td>\n", + " <td>Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>5</td>\n", + " <td>Play</td>\n", + " <td>Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>6</td>\n", + " <td>Don't Play</td>\n", + " <td>Don't Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>7</td>\n", + " <td>Play</td>\n", + " <td>Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>8</td>\n", + " <td>Don't Play</td>\n", + " <td>Don't Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>9</td>\n", + " <td>Play</td>\n", + " <td>Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>10</td>\n", + " <td>Play</td>\n", + " <td>Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>11</td>\n", + " <td>Play</td>\n", + " <td>Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>12</td>\n", + " <td>Play</td>\n", + " <td>Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>13</td>\n", + " <td>Play</td>\n", + " <td>Play</td>\n", + " </tr>\n", + " <tr>\n", + " <td>14</td>\n", + " <td>Don't Play</td>\n", + " <td>Don't Play</td>\n", + " </tr>\n", + "</table>" + ], + "text/plain": [ + "[(1, u\"Don't Play\", u\"Don't Play\"),\n", + " (2, u\"Don't Play\", u\"Don't Play\"),\n", + " (3, u'Play', u'Play'),\n", + " (4, u'Play', u'Play'),\n", + " (5, u'Play', u'Play'),\n", + " (6, u\"Don't Play\", u\"Don't Play\"),\n", + " (7, u'Play', u'Play'),\n", + " (8, u\"Don't Play\", u\"Don't Play\"),\n", + " (9, u'Play', u'Play'),\n", + " (10, u'Play', u'Play'),\n", + " (11, u'Play', u'Play'),\n", + " (12, u'Play', u'Play'),\n", + " (13, u'Play', u'Play'),\n", + " (14, u\"Don't Play\", u\"Don't Play\")]" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%sql\n", + "DROP TABLE IF EXISTS prediction_results;\n", + "\n", + "SELECT madlib.forest_predict('train_output', -- tree model \n", + " 'rf_golf', -- new data table\n", + " 'prediction_results', -- output table\n", + " 'response'); -- show response\n", + "\n", + "SELECT g.id, class, estimated_class FROM prediction_results p, \n", + "rf_golf g WHERE p.id = g.id ORDER BY g.id;" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To display the probabilities associated with each value of the dependent variable, set the 'type' parameter to 'prob':" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Done.\n", + "1 rows affected.\n", + "14 rows affected.\n" + ] + }, + { + "data": { + "text/html": [ + "<table>\n", + " <tr>\n", + " <th>id</th>\n", + " <th>class</th>\n", + " <th>estimated_prob_Don't Play</th>\n", + " <th>estimated_prob_Play</th>\n", + " </tr>\n", + " <tr>\n", + " <td>1</td>\n", + " <td>Don't Play</td>\n", + " <td>0.9</td>\n", + " <td>0.1</td>\n", + " </tr>\n", + " <tr>\n", + " <td>2</td>\n", + " <td>Don't Play</td>\n", + " <td>0.7</td>\n", + " <td>0.3</td>\n", + " </tr>\n", + " <tr>\n", + " <td>3</td>\n", + " <td>Play</td>\n", + " <td>0.15</td>\n", + " <td>0.85</td>\n", + " </tr>\n", + " <tr>\n", + " <td>4</td>\n", + " <td>Play</td>\n", + " <td>0.45</td>\n", + " <td>0.55</td>\n", + " </tr>\n", + " <tr>\n", + " <td>5</td>\n", + " <td>Play</td>\n", + " <td>0.25</td>\n", + " <td>0.75</td>\n", + " </tr>\n", + " <tr>\n", + " <td>6</td>\n", + " <td>Don't Play</td>\n", + " <td>0.8</td>\n", + " <td>0.2</td>\n", + " </tr>\n", + " <tr>\n", + " <td>7</td>\n", + " <td>Play</td>\n", + " <td>0.25</td>\n", + " <td>0.75</td>\n", + " </tr>\n", + " <tr>\n", + " <td>8</td>\n", + " <td>Don't Play</td>\n", + " <td>0.9</td>\n", + " <td>0.1</td>\n", + " </tr>\n", + " <tr>\n", + " <td>9</td>\n", + " <td>Play</td>\n", + " <td>0.2</td>\n", + " <td>0.8</td>\n", + " </tr>\n", + " <tr>\n", + " <td>10</td>\n", + " <td>Play</td>\n", + " <td>0.25</td>\n", + " <td>0.75</td>\n", + " </tr>\n", + " <tr>\n", + " <td>11</td>\n", + " <td>Play</td>\n", + " <td>0.35</td>\n", + " <td>0.65</td>\n", + " </tr>\n", + " <tr>\n", + " <td>12</td>\n", + " <td>Play</td>\n", + " <td>0.3</td>\n", + " <td>0.7</td>\n", + " </tr>\n", + " <tr>\n", + " <td>13</td>\n", + " <td>Play</td>\n", + " <td>0.1</td>\n", + " <td>0.9</td>\n", + " </tr>\n", + " <tr>\n", + " <td>14</td>\n", + " <td>Don't Play</td>\n", + " <td>0.8</td>\n", + " <td>0.2</td>\n", + " </tr>\n", + "</table>" + ], + "text/plain": [ + "[(1, u\"Don't Play\", 0.9, 0.1),\n", + " (2, u\"Don't Play\", 0.7, 0.3),\n", + " (3, u'Play', 0.15, 0.85),\n", + " (4, u'Play', 0.45, 0.55),\n", + " (5, u'Play', 0.25, 0.75),\n", + " (6, u\"Don't Play\", 0.8, 0.2),\n", + " (7, u'Play', 0.25, 0.75),\n", + " (8, u\"Don't Play\", 0.9, 0.1),\n", + " (9, u'Play', 0.2, 0.8),\n", + " (10, u'Play', 0.25, 0.75),\n", + " (11, u'Play', 0.35, 0.65),\n", + " (12, u'Play', 0.3, 0.7),\n", + " (13, u'Play', 0.1, 0.9),\n", + " (14, u\"Don't Play\", 0.8, 0.2)]" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%sql\n", + "DROP TABLE IF EXISTS prediction_results;\n", + "\n", + "SELECT madlib.forest_predict('train_output', -- tree model \n", + " 'rf_golf', -- new data table\n", + " 'prediction_results', -- output table\n", + " 'prob'); -- show probability\n", + "\n", + "SELECT g.id, class, \"estimated_prob_Don't Play\", \"estimated_prob_Play\" \n", + "FROM prediction_results p, rf_golf g WHERE p.id = g.id ORDER BY g.id;" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 4. View tree in text format\n", + "View a single tree within the forest identified by 'gid' and 'sample_id', out of the several that were created:" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 rows affected.\n" + ] + }, + { + "data": { + "text/html": [ + "<table>\n", + " <tr>\n", + " <th>get_tree</th>\n", + " </tr>\n", + " <tr>\n", + " <td>-------------------------------------<br> - Each node represented by 'id' inside ().<br> - Each internal nodes has the split condition at the end, while each<br> leaf node has a * at the end.<br> - For each internal node (i), its child nodes are indented by 1 level<br> with ids (2i+1) for True node and (2i+2) for False node.<br> - Number of (weighted) rows for each response variable inside [].'<br> The response label order is given as ['\"Don\\'t Play\"', '\"Play\"'].<br> For each leaf, the prediction is given after the '-->'<br> <br>-------------------------------------<br>(0)[4 4] \"OUTLOOK\" in {overcast}<br> (1)[0 3] * --> \"Play\"<br> (2)[4 1] humidity <= 80<br> (5)[1 1] * --> \"Don't Play\"<br> (6)[3 0] * --> \"Don't Play\"<br></td>\n", + " </tr>\n", + "</table>" + ], + "text/plain": [ + "[(u'-------------------------------------\\n - Each node represented by \\'id\\' inside ().\\n - Each internal nodes has the split condition at the end, while each\\n leaf node has a * at the end.\\n - For each internal node (i), its child nodes are indented by 1 level\\n with ids (2i+1) for True node and (2i+2) for False node.\\n - Number of (weighted) rows for each response variable inside [].\\'\\n The response label order is given as [\\'\"Don\\\\\\'t Play\"\\', \\'\"Play\"\\'].\\n For each leaf, the prediction is given after the \\'-->\\'\\n \\n-------------------------------------\\n(0)[4 4] \"OUTLOOK\" in {overcast}\\n (1)[0 3] * --> \"Play\"\\n (2)[4 1] humidity <= 80\\n (5)[1 1] * --> \"Don\\'t Play\"\\n (6)[3 0] * --> \"Don\\'t Play\"\\n',)]" + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%sql\n", + "SELECT madlib.get_tree('train_output',1,7, FALSE);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Please see the decision tree user docs for an explanation on how to interpret the tree display above." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 5. View tree in dot format" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 rows affected.\n" + ] + }, + { + "data": { + "text/html": [ + "<table>\n", + " <tr>\n", + " <th>get_tree</th>\n", + " </tr>\n", + " <tr>\n", + " <td>digraph \"Classification tree for rf_golf\" {<br>\"0\" [label=\"\\\"OUTLOOK\\\" <= overcast\", shape=ellipse];<br>\"0\" -> \"1\"[label=\"yes\"];<br>\"1\" [label=\"\\\"Play\\\"\",shape=box];<br>\"0\" -> \"2\"[label=\"no\"];<br>\"2\" [label=\"humidity <= 80\", shape=ellipse];<br>\"2\" -> \"5\"[label=\"yes\"];<br>\"5\" [label=\"\\\"Don't Play\\\"\",shape=box];<br>\"2\" -> \"6\"[label=\"no\"];<br>\"6\" [label=\"\\\"Don't Play\\\"\",shape=box];<br><br>} //---end of digraph--------- </td>\n", + " </tr>\n", + "</table>" + ], + "text/plain": [ + "[(u'digraph \"Classification tree for rf_golf\" {\\n\"0\" [label=\"\\\\\"OUTLOOK\\\\\" <= overcast\", shape=ellipse];\\n\"0\" -> \"1\"[label=\"yes\"];\\n\"1\" [label=\"\\\\\"Play\\\\\"\",shape=box];\\n\"0\" -> \"2\"[label=\"no\"];\\n\"2\" [label=\"humidity <= 80\", shape=ellipse];\\n\"2\" -> \"5\"[label=\"yes\"];\\n\"5\" [label=\"\\\\\"Don\\'t Play\\\\\"\",shape=box];\\n\"2\" -> \"6\"[label=\"no\"];\\n\"6\" [label=\"\\\\\"Don\\'t Play\\\\\"\",shape=box];\\n\\n} //---end of digraph--------- ',)]" + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%sql\n", + "SELECT madlib.get_tree('train_output',1,7);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 6. View tree in dot format with additional information" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 rows affected.\n" + ] + }, + { + "data": { + "text/html": [ + "<table>\n", + " <tr>\n", + " <th>get_tree</th>\n", + " </tr>\n", + " <tr>\n", + " <td>digraph \"Classification tree for rf_golf\" {<br>\"0\" [label=\"\\\"OUTLOOK\\\" <= overcast\\n impurity = 0.5\\n samples = 8\\n value = [4 4]\\n class = \\\"Don't Play\\\"\", shape=ellipse];<br>\"0\" -> \"1\"[label=\"yes\"];<br>\"1\" [label=\"\\\"Play\\\"\\n impurity = 0\\n samples = 3\\n value = [0 3]\",shape=box];<br>\"0\" -> \"2\"[label=\"no\"];<br>\"2\" [label=\"humidity <= 80\\n impurity = 0.32\\n samples = 5\\n value = [4 1]\\n class = \\\"Don't Play\\\"\", shape=ellipse];<br>\"2\" -> \"5\"[label=\"yes\"];<br>\"5\" [label=\"\\\"Don't Play\\\"\\n impurity = 0.5\\n samples = 2\\n value = [1 1]\",shape=box];<br>\"2\" -> \"6\"[label=\"no\"];<br>\"6\" [label=\"\\\"Don't Play\\\"\\n impurity = 0\\n samples = 3\\n value = [3 0]\",shape=box];<br><br>} //---end of digraph--------- </td>\n", + " </tr>\n", + "</table>" + ], + "text/plain": [ + "[(u'digraph \"Classification tree for rf_golf\" {\\n\"0\" [label=\"\\\\\"OUTLOOK\\\\\" <= overcast\\\\n impurity = 0.5\\\\n samples = 8\\\\n value = [4 4]\\\\n class = \\\\\"Don\\'t Play\\\\\"\", shape=ellipse];\\n\"0\" -> \"1\"[label=\"yes\"];\\n\"1\" [label=\"\\\\\"Play\\\\\"\\\\n impurity = 0\\\\n samples = 3\\\\n value = [0 3]\",shape=box];\\n\"0\" -> \"2\"[label=\"no\"];\\n\"2\" [label=\"humidity <= 80\\\\n impurity = 0.32\\\\n samples = 5\\\\n value = [4 1]\\\\n class = \\\\\"Don\\'t Play\\\\\"\", shape=ellipse];\\n\"2\" -> \"5\"[label=\"yes\"];\\n\"5\" [label=\"\\\\\"Don\\'t Play\\\\\"\\\\n impurity = 0.5\\\\n samples = 2\\\\n value = [1 1]\",shape=box];\\n\"2\" -> \"6\"[label=\"no\"];\\n\"6\" [label=\"\\\\\"Don\\'t Play\\\\\"\\\\n impurity = 0\\\\n samples = 3\\\\n value = [3 0]\",shape=box];\\n\\n} //---end of digraph--------- ',)]" + ] + }, + "execution_count": 86, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%sql\n", + "SELECT madlib.get_tree('train_output',1,7, TRUE, TRUE);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You may wish to visualize the tree using pygraphviz or another program that can handle dot format:" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 rows affected.\n", + "True\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeQAAAILCAYAAAA5VO8zAAAAAXNSR0IArs4c6QAAQABJREFUeAHs\nnQe4FFXSho85JxTEjBHFgIqCoBgRAwJGMOeAmHNWXF0T5oCYEDGgqKwIiNlVxKyYxcAKKqgoYHZ1\ndfuvt/zPbM/cnngn9PRUPc/cnul4ztd9u86p8NUcgYgzMQQMAUPAEDAEDIGaIjBnTa9uFzcEDAFD\nwBAwBAwBRcAUsj0IhoAhYAgYAoZADBCYOwZtsCY0IAJ4Sv7880/33//+180555xurrnmcnPMMUcD\nImFdNgQMAUPgLwRMIduTkBWB2bNnu2+++cbNmjXLff/99+67776LXP7yyy/u119/1U/4u1/3xx9/\nqPJFAftPVOiCV8woZ/+Ze+653QILLJD2WXDBBVO/F1poIbfYYou5xRdfPHLZokUL16pVK7foootm\n7adtMAQMAUMgDgjMYUFdcbgN1WvDf/7zHzdt2jT3xRdfpD7Tp093M2bM0A8KmO8s2TcsKEwUm1d+\nXhGiIMNKEgXqf88///wOpeoVLMvwb87plXTUEmXuFXumsuf3zz//3GSQ8OOPP7pMhT/ffPOpYm7Z\nsqUuUdJ8ll12Wbf88su7FVZYQZfLLLOMtjXcb/tuCBgChkA1EDCFXA2Uq3gNlOjUqVPdv/71Lzd5\n8mT98P3zzz9XBfz111+nlBXKEQW03HLLpZRUpsLi95JLLqmzz0UWWaQuzMqYwX/44QdV1DNnzmwy\n2PADDrBgcMKSYxAwad26tSrnFVdc0a2yyipu1VVX1Q/fUdzsY2IIGAKGQLkRMIVcbkSrdL4vv/zS\nffDBB6nPpEmTVAl/9tlnOuOkGcxkvUJZaaWVVMkwG/QfFI8pF+eYhWMlCFsNGMAwsGFQw4Dmp59+\n0js7zzzzuDZt2qiCbtu2rWvXrp1ba6219LPUUktV6 e7bZQwBQyCJCJhCjvldxW/75ptv6uedd95J\nKWDWI0sssYRbc801VSGsttpqKQWMIsZ/alIeBJhVe6sDy08++UTvBQMhTOQI1gSvnNdbbz23/vrr\nO5YLL7xweRphZzEEDIFEI2AKOUa3lxna66+/nlLAKOIpU6ZoC5l98XIPz8h4+TPLNaktAsymw9aK\n999/37399ttqMidynIESytl/NtpoI3UR1LbVdnVDwBCIGwKmkGt0RwhGeu2119zLL7+sn5deeknN\nprzA8Vn6l3f79u31O2Zmk/pC4NNPP00bXDHAwqWArLzyyq5Tp06pz4YbbugIPDMxBAyBxkXAFHKV\n7j0+3+eee849++yzbsKECe69995TXy8z3PCLeeONN3YET5kkEwFSyF555ZXUQIzvBJ7hm2YQttlm\nm7nNN9/cde3aVYPpkomC9coQMASiEDCFHIVKGdYxE0L5eiX88ccfawAVMyFetptssokqYiJ5TRob\nAfzRWEpefPFFfV7effddBWTttdd2W2yxhSpolksvvXRjA2W9NwQSjoAp5DLdYKJwn3nmGff444/r\n56OPPnLzzjuv69ixo75QmfVsuummFuBTJryTfBpm0c8//3xqMDdx4kS1phBD0L17d/0wqCPH28QQ\nMASSg4Ap5GbcS16U48aNUwX8wgsvaPoMPl//0kQB20uzGQDboYoAUdxYWvxgj8huyFcY5PGs7bjj\njhppb3AZAoZAfSNgCrmI+/f777+7f/7zn27UqFFu9OjRSrYBsca2226rL0aWsD+ZGAKVRICobq+c\nn3zySaU2XX311V2vXr1c7969XZcuXSy/vJI3wM5tCFQIAVPIeYBldoLyfeihh9yjjz6qOafMgnn5\n8enQoUNdsFfl6aZtrlMEoBvFOvPwww/rB1cJzGo9evRwO++8s9thhx3MSlOn99aa3XgImEKOuOek\nJI0ZM8bdd999apKGyWmrrbZK KWELxIoAzVbFAoEPP/wwpZxR1BTfYNbcp08ft91222lcQywaao0w\nBAyBJgiYQv5/SDBHjx071t17772qjH/77TdVwn379nW77LKLpaA0eXRsRdwRgA70gQce0IElEdwU\nA2HWvOeee7pu3bqZWTvuN9Da13AINLxChhlr6NChbvjw4Y5yg6SXMJvYbbfdlAqx4Z4I63AiEcDv\nfP/997sRI0ZoihVVrvbbbz934IEHWkBYIu+4daoeEWhIhUx1n7vuuksVMTmfa6yxhjvggAP0BUU1\nHxNDIMkI4Ge+44473J133qmBiRDToJiZOVOQxMQQMARqg0BDKWSIOgYNGuT+8Y9/qG8NczSKuHPn\nzrVB365qCNQQAUpOPv300zow5X8C2WuvvVz//v0dBDYmhoAhUF0EEq+QqYvLTODGG29UukqIOo48\n8kidDViOcHUfNrtafBHg/2TYsGH6f0JxDGbN/J8waLX/k/jeN2tZshBIrEKmRN5VV12lo39mAnvv\nvbe+YGzkn6wH2HpTfgQgIcGSNHLkSLfooou6ww8/3B177LFWWaz8UNsZDYE0BBKnkF999VU3cOBA\nfZlQIem4445zBx98sEaYpvXcfhgChkBOBIi1uOmmm9wNN9ygpST33Xdfd9JJJ2nN55wH2kZDwBAo\nCYE5SzoqhgeRskSENCZpZscEbUHaf8IJJ5gyjuH9sibFHwGKWZx77rlu6tSp7rrrrlN+bQpe9OzZ\n040fPz7+HbAWGgJ1hkDdK2QIPCj4vtNOO2nZQgo8UGeYiNG55567zm6HNdcQiB8C+JAPO+ww98EH\nHyht7Pfff6882ttss40p5vjdLmtRHSNQtwoZRUztYEbryy23nCOfmHVbbrllHd8Oa7ohEF8E5phj\nDv1/w8fMwBfaTgpcmGKO7z2zltUXAnWnkHkRYJaGRxpF/MYbb+io3YK16uvBs9bWNwIMfCm0woeg\nSRQzxVX 4fzQxBAyB0hCoG4VMKgaz4a233totscQSOiOm4MMGG2xQWs/tKEPAEGg2AsRtMEhGMVOI\nBfcRDGCfffZZs89tJzAEGg2B2Cvkr776yh1xxBGO4uxffPGFlp177LHHTBE32pNq/Y01Aijml156\nKcWb3bZtW3f66adrdHasG26NMwRihEBsFTIVlsgjhtaSsoe33367msMwi5kYAoZAPBHYY489NPjr\nsssuc7fddpv+/0LTaWIIGAL5EYhlHvKECROUvo9Scqeccoo788wz3QILLJC/N7aHIWAIxAaB7777\nzp111llu8ODBbtNNN1WykXXWWSc27bOGGAJxQyBWM+Rvv/1WSTy6du3qlllmGffOO++4Cy64wJRx\n3J4aa48hUAACFKqAVASyHsqbEu9x8sknO+qNmxgChkBTBGIzQ4bcvl+/flpA/ZprrnG77rpr09aW\ncQ2j9yuvvNKdc8457q233nITJ07UXMuoSxA5ykuFPEwGCvizCS6bb775Urt/88037sknn0z99l8w\n4fl8aGb+4WCXlVZayZFKMmXKFL971iXXWnjhhd3MmTPT9qEtkDXkE/pL8A2DHHiLmal06dJFTYq5\nji2k75wPYpZM6dGjh/IgP/jgg2mbWrRo4bbbbjtdV8x9SDuJ/agrBIIgUBP2aaedphWlhgwZokQ+\nddUJa6whUGkE5B+lpiIKJhCe6UD6GQjFZSAv6Kq056mnntJrfvzxx4GYxYNVVlmlyXVnzJgRSPWb\nYPXVVw+klmwgijOQilGBkI4Ea665ZvD888+njpHUj0ByoYOVV15Zz7vDDjsEwhSW2s4XsQAEMuPX\n7RdeeKH+FoUdSG3aQGYOgQwQAglg0+2SVhLIwCQ477zzAsm3DmS2EdAe4RTW7XPNNVcglXqC3377\nLe0aUT9ouwwkAmEtC15++WVtl/j3AmFiCoQKMZAZS5PDiuk7B4uiD2QGpG3bZJNNgvfe ey91Thms\nBBIZH7Rs2VJxlGjc1LZC7kNqZ/tS9wh8+eWXgaQsBjIQ1Wc56tmr+05aBwyBEhFwJR5XlsNGjx4d\ntG7dOhDO6WDcuHFlOWehJ5HZrioPmd2pIpTZYtqhv/76qypdmX0Gs2bNStvGDxTonHPOmaaUWX/I\nIYfoeW+55RZ+NhEU9yKLLBKwRHg5SUpXaj8hN9Hjjz/++NS6f//730G7du30t7CQ6fYOHTqktuf6\nIsFwuv/NN9/cZDehRAxkthrIbDVtW6l9l6havRaDjbAIjaliyYAmU/Ldh8z97Xd5EZCAq/KesMCz\nSQU2HaStttpqgViOCjzKdjMEko1ATXzI//nPf5RjmrxiTJfvvvuu23777SttDEg7f5s2bTSfWZSj\n4/sKK6yQtv3ss892kyZNcgMGDND90jbKDzh+8ZEddNBBThRYajPVcRC/TG34/y+YqFdccUU1VbNq\ns802y0vWj7ma6yC0F1looYV0mesPaWKi2NU8feihhzbZlXaceOKJjjSyW2+9NbW9nH3HlH3FFVdo\nniom+kzJdx8y98/3W5S+e/HFF/PtZtsFAVwYBEzWQihUIVYUR3oUKVOXXHIJk4NaNMWuaQjEBoGq\nK+RPP/1UIy5RANQpHjp0aE2KP8DPC+MXglJAOXkh6ISUq8UWWyyrLxvFiJ9bTN6ae+mPLWQp5ubU\nbkSRFyIEwxQr119/veaBoswZCETJgQceqKtlVqvLcvb9vvvuc+eff74qfAoVREmu+xC1f7Z1FBKh\nqpe4F5yY5bPtVtR6iC7oA4MyUng+//zz1PE//fSTPiOXXnqpVhdjUIngT6cQA+t5NrwQX/D3v/9d\nI40z4wBmz56t69lXLEV6LGl/CNehUAqxDiNGjGiS18tgkGM4N0pt2rRpepz/g5KDtOPqq6/Wdj3x\nxBO6CWXcu3dvJfOgopNYq/whVVsSjwHdLVgxwBU3jyMWw8QQaFQ EqqqQCdyC4pIZMtzTjJJrKX36\n9NHLi/9YebF9Wxi5QweIkhaztF/dZOlnfG+//XaTbXFY4dvFgCOb8FKcZ555tKIPRQPK1XcC5shF\nRVmI7zjb5XV9tvuQ86D/34gVA2Yo8elr0B2KBavA9OnTtTqR+PmzLgmyyyYE+pGqAzZHHXWUI/hM\n3AZu2LBheggBdlg3SOsRP7haIdiAZWTeeedV5c3ggOhiCjOQQUABFBQhbYV5DiFH15cJZQB1xhln\nKKEG2+lb3759NYhQYgkczHSrrrqqVjPjWJQ11yAlEBIOlDhtDltssHYwWAGTzp07O34jsN0REIj1\nhVlqpoVId6rSH6w03AsGMOuvv76DK9vEEGhIBKplkZdZhgZySCR1gE80ziIRoOoLJTArl3j/bPfu\n3VO7ETglD1IgM6vUuswv8iLMXJX6HeVDTm2UL5KbrecX7uDw6sjvMqDQfQnkyiUysND9XnjhhaA5\nfb/ooov0PPgFwUCUR0AQTyWEIDKC6/Dji6IJhDwm7TIEyNGGXB9RtmnH+B8EyhG0J7M2v0qXBB+K\nsk0LWDvggAOCBRdcMC0YUdwDGgDIQZdffrkG5vkTySxb2xT22++zzz66buTIkbobfnVRroEopyDs\n+ydokOsTe4Hgm6f/wmanv9988009zyuvvKK/iVNYaqmlAhkE6G/+hP37O++8cyCKOLWt1l8I6BSr\nU8B9kVl7rZtj1zcEqo5A9umfvMnKIYzWGeV7c92NN96Yli5UjmuU+xzeTxueaURdw2/P5i+OOqaa\n60rpRynHZPaJmRiF7CdPnqwxAswuyyWidNzuu++usztSyJiBy0AilUblr3PMMce4X375JecHi0CU\nwAzH7FSixdM2E+/AjBfztRdmz1wHszKCmZuPt55gKSCljv34XHzxxTojlUBBfwonUfb6HRMywgz6\nkUcecfSV1DEvWJc4NzNtRDIANP4Cd4AMcp 1kAOh6byrHTcHsl/+/UaNG6bZM10c2V4buXOU/uIge\neOAB9WuTAnncccdpRakqN8MuZwjUDIG5K3llzIa8ZPAbP/74444KMfUgPq+XoKhc4n2KmP68YK5E\nKE2XTar1EqQfmKBz9UNmg+q3o928vL2JPtcx9Cuq776/lMU8+uij9byYeFEg3H+ZSfpdSl5imiUI\nDTP8wIEDNZc66mTkfvv876jtudZ5czJm6bBAWIOQj+6FvvLBD4vCvffee53MeHUzAxH+BwioI4Ax\nm3jM/ZL9MJkTuJdp7vfPF/uwP8oY/yu+eNqB4G7xghmcXHiZDWuZxLvvvluP8dur9Sz66+Vb0h58\n9uTJi/XBwdaHHx9lbWIIJB2Bis2Q8VvhzyJICFKNelHG3HD8cpR2ZAZGwE028YE8EGx4ad++vX5l\ndhgl+PnChCJR+zR3neQQOxStx5yXezZBYYtdRgPcUGDN6Xv4GrxYmUnuuOOO6h9kVkvsQHOF2Ss+\nRjGL6/Ml7oLIqGqeOWajuT74uKME4hIkM1qbWS8+ZfyvYUERQ7jC/szY6TPiFSzbihWUKv87+Jyz\nCQNd2K8ITiRa2s/Kw/vjk4XcpX///u6fEtzFLDs8O4+bQvZt53nB/8//GM8xz7SJIZB4BCphJBcF\noKQTMmJX8otKXKPS55QANPXHyWg98lLkDssLV/2Y4R1EEetxEH5EiSiTQMypUZt0Hf5BeeiCcB5y\neOdCfMjkNovyUz8k+coyu0jzcYbPhx8WvyT3zEupfRe3hLb92muv9adS0hF8vPSJa4nlILWtuV/w\neePn59z48fntBf+qKJ+cH1Fkfve0pffFirk4bT0YcS2Jok5bL66LYMkllww6deqU5i9mJ4hiyLMX\ns3baMeThkgeOCHuVnje8A/5kroWPOiyQy3hf8/7776+EL367z+nm3AixGmKh8JvVzy4KOPA58rvs\nskusfMiphoa+yKBDi XlkoJjCK7TZvhoCiUKA2VFZhZcirFLbbLNNIP6usp672ieDFUt8qk0ChghU\n4uVL4E8UaYjMkDQwRfx2aU0moIdgLPHxpa0P/+BlyotYUpXCq1PfxfSr22HDyhSZUamyJzDGi0Ra\nq0IggEeicv1qXUrqmbYzU8GwsZS+w3hG2yVqNu06X3/9tbJ0sQ02tnIqZS4ks+EU+xPBUjKrSrt+\nKT9QhNx7rzQ5h/Ayq3KIYkc79dRTA9jTuMdhGTRoUOp+EVwls1UNFhNTcmo3Me/rPihbLwR1eeYz\n2NskbUoJbBhs+aDI3XbbTY+TXO8ANjQGemAsaUSBWHYCBgoQ3hDchbCELY0BFyKzZr3/DCJhlct8\nPnSnGPwhaI0ANwY24tuPQYusCYZAZRAoq0IWk10gfreAkbd/aVSm2dU7K1HPsGTx8iOKmJej+FoD\nSR/RF15USyTwRxm7mDUxS+PlzgCFDy+/KOEYFCPX4qXKrJaI2PD+4v8LmNWxnZkOgwLOyUsXRjGi\nU9kWjszlWrycJd9YX/DMvP/2t7/pjJLjfURuVJsK7bsERwXiz1WrCNeHfe08ofxkgIAwIxNzqraN\n7ZIulFIKUdctdZ0ET6XuU6nn8MehzMQUrbhKrnzA4IUZs7gx/C5pS2ZyDHoyBSUoqUyBuAO0/yxh\nNPODEs4r7hHdJulfSm3qzyF+/EDKjeq95n6L6TZgnRcGv+AqLhD9n6NtWESgKSUDgD5AmYplAvpU\n7lE4cpwBAu1hAB22avjzx2lJBDbPDXSvWIlMDIEkIlC24hL4KfH1EPhCMQF8bUkSolsJ5hFlk0Yi\nkquP8sBozihkEQRYhQNych1XqW2+PQQbrbXWWgUHWZXS90r1oZDzEgldLqx9bjY56eQL5xKirbMF\nroly1GdBTNhZ98l2bu4XPmXv2w7vx3rO7ZnbuMf46n3/iVlgH5llRj639A9ft4+uD587bt/Ju+7W\n rVsqxzxM5hO3tlp7DIFSECiLQiYSUkyxmooC806lg5ZK6agdYwgYAvWPAEGWW221laaaEdzHANnE\nEEgKAs1WyOJPdWL61NF3uVJbkgKu9cMQMATKjwD0mkwAsALA8JWZnlb+K9oZDYHqINAshQwZAcTw\nmNTgD6bYgokhYAgYApVGgJRE8q4hb4FSNK7pW5XGwc6fLASalYcMRy+sQPAHmzJO1oNhvTEE4owA\n/mO48SGJgU/cxBBIAgIlK2RIFWAlogLNGmuskQQsrA+GgCFQRwhAyCMZBUr+wrvIxBCodwRKMllj\nnqbSDWXTqNRiUn0E/vWvfzlKJkoKU97o3+q3LvqK8DpD8QhrVBwFdjP4oOGQ5vnGHOrZtvK1l7rP\nRNN7gVoU+tBsUdd+P1s2HwEqWUlRFL1vVG4zMQTqFYGiFTKpB9D1UQYOmkDz3dTm1kPCD0cxRQio\nI1sPAj8xATgvvfRS7JoLNSMKGApKeJ+xAMFp/fDDD+dVyhSioDQjKUdeJPfXDR8+3P+0ZQURYCBF\nYCmDn/Hjx7twvfEKXtZObQiUHYGiFfIhhxyiPmNq7VrKQdnvR1EnpMaulNcr6pha7gw3MzNO6vd6\nIWKW2tjbb7+9X1X1JXm6BCeS5+urIlEchEEnivWSSy7J2abDDz/cSWlG52dnDFIpCoE1wKQ6CDB4\n2mijjZzQkDohpanORe0qhkCZESjKh8yMGNMQRQNMGZf5TpRwunpSxnQP8oqwMkbpocimTJlSQu/L\ndwj5rBQyIEjRC7MsYVhzVEtiIJFNINxgcEqxCwKN+EiNYVPG2QCr0HosFFT/wo0DSZGJIVCPCBRc\nfhH2I+qTCoVkzlJy9QhCPbaZWR3+TkzAvuwejE3M8ITvWKvjYM6m1i6l/1AwwimdMsFi7vZ1nGFz\neuqpp1RhUu2Jc+CjFgpUNQWCD5H0QuOp16OcIOxdlFaEFUroGbXmLvtB3ICpF j8xAziUFbWRqSSF\nWRjiGOGz1mpUlCkUjmbXqlUrdX3gt6VKE8Isk7KWuEdQiKS2cC1IIYQuUvcp1x+idZF111037ZSY\n2Lk2OIJXlAjdqab8oYRh4aIUIorcXDlRaFV2Hc+ccME7amEzyDIxBOoOAfF7FSTwOIuPJiuXb0En\nsZ3KgoCUTAykPJ3yH9944416Timtp4UP5AEMrrjiikDMqAHFHrhn8HDDJy0KUHmNRVkEoqT1OIoh\nUIyC4yhcAF8zRQfgQIbnWHzVqTbDlw3BvxcJYgpEqQdUc0LgfOZ6HAcvt5Si1PNSUAFuZYo1wEWM\nwE1Mm7gu7YRXGc7tO+64Q9ftt99+up//Q9Ui+LhlIOJXpS3hdRb/Yc5PNh5qXzEqs2gEmNI+OMWz\niZSD1PbDs+y5xIXeUSttZTvG1lcOgddee02rsFHty8QQqDcECiouAaG9mBu1uEK9dTCp7aWKE8rC\nK2T6KVHMuo5CAl4oZMB+wi/uVwWSt6kFCXyBAyr9sE+4ZCQVdqgMhAKmlCPCICCskFlH8QyvkPmN\n0udcvkQgJQG9oPi9QmadL3MoLhC/iy45J0UT/HVZeeSRR6aViEw7QH4wMOC6uT6Uh4wSrkelpkyh\n8Abno8hEIUJ/qADGMVKHuZBDbJ8KINCvXz8dUNZ7tbkKQGOnjDkCBfmQCWqhKDumR5N4IBDFFy4V\norRxYdOrVKbSdTJbTTVclIaajKdPn67rfGECitl7EcWpPlUZjDmpZORX511iIkd69+6tS67lJarN\nbMs070opQydlDx2R5Aimahk0qAlbV0T8wZdLcYdcH84bJdmoF/FxI4XGS4AxAWoUobAI6yikq7MO\nPzIuFRmsVueCdhVDoEwI5FXI+B0J4iJ60VeQKdO17TRVQCBKCfpKXLmClWiaJ3whErpQ8Xm7flnI\ncZkKWWbiGrEspnc9HB8ufvFcQrBYvg9+7CjB/4vyJX0m LLzUEQKGChVSbxiMwGBnUhsEpOypE4uK\n4/mB3tfEEKgXBKLfUKHWQ+bAzItAHpP6QyBT2YV7kGsb+zFLRXw6j/6owJ/MdhCAhjVGTMUanCMm\neHfNNdfkvDLPaaZCzTyA1CbYnTKFUpQIZB5ES3shrQwpRiGzP1YBP5jht0n1EeD5IUJe6k0rQUv1\nW2BXNASKRyCnQoYEBLMPkaOWU1k8uPV+xNNPP+2k4H3KZMsMs5wzDq+IvWk4jNdBBx3kBgwYoJ/l\nllvOMevJJURh55vxY4aPUsjk1l9wwQVaOSiskDE/Y8YvVrkSte1N9rnabNsqhwD3mkkEs2QGdv5Z\nq9wV7cyGQPMRyGmyxofHrIOXo0m8EPCzQT+Lo3XexOq3sY5BFTJr1ixd8scrrkzl+s4776T2mTZt\nmqYgQY/qpXv37o7rScS0noPlzJkzNUWKdCfEn5v1mUK7vv/+e0eaFUK6FPLiiy8qyxUpUl4wP0M9\nKdHXbq+99vKrsy5Jc0GB5vqQbhUl+Ii5FnmsEvOhu4ANqV64a8Lm93fffVdTrySq23300UcO2saJ\nEyemTisR8IrB2WefnVpnX2qDwBFHHKE57jxDJoZAXSCQK+hsyy231JSZXPvYtuojINSTqbQnyZUN\nJLc3IO3HpxlJHmwgecSaSkQEsTyIms5EuhT7CUWkruvTp08gSiWQmtb6W0y6gcwWgzPOOCOQmXFa\nZDa9JGrVHytmXo2kJnJ6u+220xQmMQ8GMptNnVs4zxUcCbQKrr322kBmubpNgqsCiU3Qbdtss42u\nk/ziQEzkus7/IdKb9CtR4H5VxZakU0mcRLDTTjtpW8GAVKtMkSIG2l7SukT5B+LOSbWf42UAE9Bf\nk3ggIDn6QWYKXTxaZq0wBJoikJU6E/YkfIfMEiQ3tS4GF9bI0hAgQpnZqqQF6YyPQL42bdpkNfMR\n5AU1JMJMsjnuDHkkHdHemKUzBdI QzOaSA5+5qWK/MZ9jBcDkmU3wNRMIhjDrpzYvwVxRfch2Dltf\nHQRwuUmeu+MZzxZNX52W2FUMgfwIZDVZ4wejxnEtOYbzN9/2KDcCKBYYp3L53Lwy5trNUcYcz3Wy\nKTJK6xEtW00hoCyXMqYtXhnznSh22M2y9YF9TGqHQN++fR0MdtRNNjEE4o5A1qAuZidbb721VU6J\n+x0sQ/vI3UWEPasMZ2veKaBnZcYJTzefsPJr3pnt6EZEgIIhBCbyPoP218QQiDMCkTNkiBgIktl2\n223j3HZrWxkQwDXhq+MIm5cGbMFbXivBXA6XNmbhfFWWatVGu259IcB7DIVsYgjEHYFIHzKVb7p2\n7arFBCqdgxp3gJLePpSvnyH7vpJ3nstk7fer1BK/bBShSaWuZ+dNNgLCSa6R8eTVU43LxBCIKwKR\nJmvh5NXasKaM43rbytcu2NdqwcCGWXrs2LGapgR5Q1jipIxJGxsxYoSmz0iEuVqNPNNZuM32Pb4I\nUCeZASbvNVPI8b1P1jLnIk3WUhDAefYiA8kQKDcCKLkJEyZo7VqpllTu05ftfB9++KGWfyRPGR5s\ncqghDrHSfmWDuConIroafnHeayaGQJwRiFTIkyZNMoUc57tW523jBQnZR6dOnWLdkxNOOMFBt7nj\njjtqygxtph6zkX7E+rZFNo4JhinkSGhsZYwQiFTIzAzCVXpi1F5rSoIQgIqzlr7qfFAKYYqDeSss\nmNPDTGjhbfY9vgjwPoNZzcQQiDMCkT7kGTNmpGgN49x4a1tuBCDdePbZZ9V3Rn4tL6Vw5DwvKGH9\nclBWbrrppm6XXXZJOyEzCggVmCWOGzfOMVCTmsmaiiTMVmp2hvZy8803d/hXvVCy8eGHH9YcYq5P\nDih5unBGQ4mZT4iIFZYvLflJHmmYx5pnE98zy1VXXdUJE1nFil8IC5nyuEuxe7fvvvsqDSn5+fkK\nXeTrn22vPg IQ3xDBb2IIxBmBJgoZPmTSnsIvwTh3wNqWHQFMq5B8wLf82muvKcm+V8hXX321phfB\nhEX0KaZYlC9EHDwD559/vhLzo5TgNCfymuh7fKkoW5QUtY/vu+8+d9ZZZ+k2TNB33323O+aYY5TB\nC25sorg5LylMd955p+6XLSiKfSkEIHSaTigs1cdMShZKnYpL5EljPiZqFsUulIja+WzBhwwWogpX\nhBFbaaWVsuY6H3744dofrvPGG2/obPmmm25qMnAJn8++xxMB3mdR/OrxbK21qmERyGTThGNYwAjk\npZe5yX7XEQJwMwuxhvJZ+2ZL4Xb/NZDgpECUX+r3zjvvHIiyS/3mCzzNcAF7buYffvghEGUaiOJN\nrZNiEoFEaQfhc8tsMhBTdCCFGFLnO+ecc/S5Gjx4cGqdzLYDCbZJ/b788ssDUcCp35KLrMfAlY3A\nHw3fthf4uu+55x7/s8ly0UUX1eN5nrN9hC60yXHhFTITD2Qmrsd37tw5kMFFeLN9rxME4CUXd0Od\ntNaa2agINJkh+0o82Yq5N+zIpc46jm+2bdu2DpMvFJSUAzz55JNTvWCWudBCC+nv999/X4k4ROGm\ntvNFFJqahb2ZeZFFFtFZMVSRfh1Um7Bpffrpp6ljOS/Pz9prr51ad/rpp7uLL75YI5SpwhMl1DQm\nRYVZshf64CtVYXJntoz5+KqrrtLZP7P0bMLMPJ9km63746j2hMmez5AhQzQQjShrS5/xCNXHkufR\nv9vqo8XWykZEoIlC9jmptWRrasQbUYk+U6Adn6/MftUMjDnZ8zTj03388cedVIpSZYM/ltKF+SQq\nRxil5ssuZjsexU3qCYUpogRzNEUmqGHbs2fPqF2UypVBBTVuMZvjy81VGtQPGiJPVsBKyktikn/1\n1Vd1gIGfncEEAwaKrpjUDwK44fy7rX5abS1tNASaKGRenEgme1OjAZOE/q6//vrq+2R2iu+ TACj8\nuvD7iglZZ5sEXKG4oM0sRLJFRWdb789JZDIzVjE/+1VpS19zmPZlU8jsQ81i6jJTv5j6xgR3SdnD\ntHP5H8y480VEM/Pt0qWLPyRteccdd7gddthBlTEbuB6+eGbNDCAovmJSHwgwYPTvtvposbWyERFo\nkvbEQ8sLOlz4vhGBqfc+o4gIosLMfMMNN2hkMmk8I0eOVPOy+HzV9OtnkURNV1IIsKJUI8FaUYJ5\nnAA0yuVRnScsBJDB7IUipJ0Epk2cOFFn/eJXDu+a9v2hhx7SgDSC0rJ9yLnPJkSfZxbcwPSP9cgi\ndrOhFs/1vM8sUDWe98Za9T8EmsyQ2YRfDnJ/k/pFQIIinARQqdJl9sqs0ldQgikLuffee92ee+7p\n3nrrLfXtosTZxrGQdzCryJxhst37dD067IeyDQv+ujDjGzNwZqNhhQzzFcdyPdpI3dr+/furaRp/\nM5HdKNVWrVqpz/bjjz92TzzxhM6yGThiis+k3Qy3obmMWpyfNCdM/34GT5rYeuutpyUXw9ey7/FG\ngPeZlciM9z2y1mWhziR4xlht6v/xINBq77331tkhfldSmlAy6667rppfx48fr6XpCOpipomyZQaI\nwpXoY12S6oQflW2kIE2bNs1xHEqKmeyll16qg7dnnnnGSSRrCjQU2KBBgzRNCoYrUqu83xXlTdoV\n55k9e7YbMGCAmp779evnzjjjDDULk4bVsWNHnY36msj4r0nh4trDhw93KGj8vJUSrtOjRw/Xvn17\n9Vcfdthh6gJgkOAVdKWubectLwJYQnivmRgCcUYgstoTM5WnnnpKXz5xbry1LTcCzFIx8eK7jYoK\nJt8Yk7YXZsNRQVt+e6FLFCsRyZh2mZkw08UkXaig6CWlSU3YYb8f/SFaFr8x7eS81RDiKRhQwGm9\nxBJLVOOSdo0yI4B1iAElOfImhkBcEWjiQ6ahjCRhZaq0XzGuoCSlXS gvIkujlDF9DCtjfpdDGXOe\nsJASVYwy5lj82qRMhZUx6+kPggm7WsqY69EOuJBNGYNG/QmR/ZCC2Ay5/u5do7U4UiFjKmRWQOCM\niSFQLAI8O8xmMXObGAK1RoDKYrgYyHE3MQTijECkQsbHSL4qnMImhkAxCJDrTH4zgVqkI1GD1sQQ\nqCUCBAKS8mcWjlreBbt2IQhE+pA5cJ999tHUDlPKhcBo+3gEiJxGGXvBDO5Tq/w6WxoC1URgjTXW\ncLvttpsyxVXzunYtQ6BYBCJnyJyEXE8ibAn8MTEECkUA3y6EGf5jyrhQ5Gy/SiAwefJkjcb3RVUq\ncQ07pyFQLgSyKmTSY5D777+/XNey89QBAlAMEmF/wgknuEceeST2LZ4yZYqmQJEGxScb/SdBPeQ2\nFytRx0Hb6a/HEsxM4okA5DhEx5MDb2IIxB2BrAqZGQ45qZXM84w7OI3YPqgrR4wYoXnCcEvHXQjY\nIdcaYhFylyl8ESVwZJdSxzjquA4dOmiONAMWrp3JLBZ1fVtXfQRwnUB/SjES6oGbGAJxRyCrQqbh\nBxxwgJqtP/nkk7j3w9pXJgQIfglXWyrTaSt+GjinmQlFpVjdcsstWsu42EZkOw7GJ4pxdOvWrdhT\n2v5VRICKZlhQeI+ZGAL1gEBOhUwhAPJIYSwyaRwEfL5vvoIR9YDIRx99pOl7YcrOQtpd6nGFnNv2\nqQ4CsM9J7W63zjrrVOeCdhVDoJkIRHJZ+3Ni5jn11FP1c+aZZyohg99my3ghQM4vMzrYsci5ZMbI\ni4gax5jtyA3eddddUyZdFA68zBRQoKzgLrvskrVDvigFvlKCYyDtgCoTDmyE84bJR4jMf/nllzXN\nhHrMtSL1p71nn322FqWApalQKfW4Qs9v+1UegXfffVd50OEiNzEE6gWBnDNkOnHIIYeoGfDyyy+v\nlz41ZDspBrHZZpu5s846S4Oy/KwAEy5sXVBYe v8qPNLU9d1vv/20jOGJJ56oVZayAbfMMsvoYIxA\nL5Q4gr8WZc86XzGJwQB8z1TWYUaK0oYdCa7sbEIVKKL5c31KLXTyt7/9TbmvMxnJsrXFry/1OH+8\nLWuPAFzs/A/06tWr9o2xFhgCBSKQc4bMOUhb4YV9wQUXaDWeli1bFnhq263aCGy88cYawEJkPPnA\nnl6SGr7MFL1QjhF3BCbpNm3aOOomjxkzRotP+H0yl+3atctc5TbYYIO0dZgI8a9SQQq56qqr1OXB\n8/Poo4+m7et/bL/99qrY/e+oJS9XLDTFyLPPPqtUm9lqHWc7V6nHZTufra8+AhTGITARkpokuF2q\nj6BdsVYI5FXINIxi8PiRKXRPTVqT+CJAQBYmamoI8508cj4rrbRSqtEEuyy00EL6m9krM1Bmu82V\nK6+8UukJw0Fhbdu2bVKuMXwdCl/kk3nmmSffLmnbqWHsK0Klbcjzo9Tj8pzWNlcZgWOPPVYHmX36\n9Knyle1yhkDzEChIIUOuT/k+/IGYJDfZZJPmXdWOrhgCzJL53HTTTaqQqXkM61pYmMVCb8msmPxM\nIoaz5e+Gj8v1HWVGmhRpQj179sy1a9q2ShCHYEYHA/KFvVCqkbKPI0eOVNKSrbfe2m9KLUs9LnUC\n+1JzBLAOkUfv+atr3iBrgCFQBAIFKWTOt8cee2jBe2Y/r776qtWDLQLkau/KPTrwwAMd/tlx48Y1\nIXc555xzHKbZxx57TF0SDz74YLOb6OsDk8dcjEJmVk3Zx1zCoKEY0zPVfeAvDgsmfALbmD0RlBal\nkEs9Lnwd+147BH7++Wd1r5Hm1Llz59o1xK5sCJSIQMEKmfPjIyRPdeDAgVo4oMRr2mEVRgBLxkkn\nnaQBV/how6QIn376qbvwwgt1Bu1np4WU2fSpUMwyo4TgsZVXXlmDw5hp+nOzL+bzzTffPC0S25/j\noYcecrxIcwmFTopRyMz8 M4VsgWHDhrkvvvgic1Pqd6nHpU5gX2qKAPeYZ+mSSy6paTvs4oZAqQgU\npZAJ7LnooovUlwwpAoxFJvFDYP7559foeNwMDzzwQFoDfUlETNkEX5G69Nxzz+kslW2wGzGbRPy+\nfIegnwAwjiOCGnYqT6tKmU6eh1NOOcX1799fZ5/QVBJUhsKlfnE4LYrzeeHaJoZAcxFgMDVo0CAN\n5mIAZ2II1CMCedOeMjvF7IfZDpSB+WY2mcfa7+ohcOSRR6rpePnll0+7KKU1Dz74YDd+/HgdUBHU\nheUD5QtVKmlN559/vh5DcBgmb4RoVSK1ye8knYTUIPzFnJ/ALNjc+vXr58444wxHVDdpUdTVJhWK\ntpgYApVCgOePZxo3Da41E0OgXhHIWn4xV4emTZvm1ltvPX3hDx06NNeutq2GCOAzJSAvSoi8Dufn\n4selVGI+wWQNcQbHssQc7v3H/lhmz//617/UhJ3t+n7f5i5JbYGrmKAyn+bV3HMWejwDFpQAFoUo\nys5Cz2P7lY7An3/+qSQ4VHWi9nb4mS79rHakIVAbBIoyWfsmEqXLixDTJYqZPFOT+CGQSxlmvrgK\nUcb0EHM4HyRbOhL+YwKnqin5AsMq0RaUgUltESBWgohqiGUyn+natsyubggUj0BJCpnLECx02WWX\nqd8QNqYdd9yx+KvbEYZAMxFgUMDsFPM5kbUbbbSR0ns287Q5D7/55pvd7Nmz1YfOtY18IidcFdsI\nVey1117r7rvvviYkNRW7qJ3YEKggAiWZrMPtOeiggzS384UXXqj6rCjcDvtuCBgCjYMA5Dbdu3fX\nmAUf89A4vbeeJhWBZitkTIXQMEK8QKDQKqusklSsrF+GgCEQAwQIGtxmm23Udzx8+HCzUMTgnlgT\nyoNAsxUyzSBAiH8QiBVQypmRveVpqp3FEDAEGh0BiGe23HJLdU9QySlbHEOj42T9r08EyqKQ6fqs\nWbO UhpE0F3JLLRewsAeCSGXwIo+S0ob16Isn13mJJZbQQRmFIKgiRd4xftaoohJEQ/N8UH2q0tHJ\npHGRkkUkdiES1WZ8xBRVoTY4+dheKn3viByHyQxmNfLFyfeGurZRhZKhpFyutdZamo7ngwsbFQ/r\ndwIRECKIsonUzQ3kJRtIkFfw2Wefle28ST6RcEgHhx9+eCCPViBBKnXZ1a5duwbClx1IXrr2Qxix\ntB/CABZIKkogXNm6XqLyA0kVCoQpLBClHYhiDiQ4MBCKz4r1W9ibAgn2Kvj8tFmoYQPJJNA2c2+k\nOlYghCeBDCICqYwVCFeynq/S947r8FyIOygQ0pVA3EEF9yNpO8rMOJAyoIHw6AdikUta96w/hoAi\nUDQxSK4xSevWrdVkTQoNRe8//PDDXLvbNkEAKtJwdaR6BIU0OGa8pFkx4+U5QJhZtm/fXk2M/Gbm\nvP/++2vNZmgsISWh6hS80pUqJE/bqOccFq6dTWgzkdrUlkZgM4N9jJKV+C6ZQcPV/d5771X83i27\n7LLaBrClDx5XXdlAf+Bk9zNjOMqp/W1iCCQRgbIqZADi5UEEJOY9mTk1u4pQEkHP7JPnia7X9Jk2\nQqnpqTH5zr0PSzazNAqHfHZKNO6+++6OAJ1yC/za4fY888wzBdVWjmozsRE777yzFqnwBTkqee/A\nElcA+bVRuJYbqziejwIouHJQyI888ogp4zjeJGtT2RAoOQ85VwsWX3xxrbazyy67KIXiPffcoyQi\nuY5J+jZmV/iKYbrCTyymz7xdxmeGD/Ttt99WiwN4hmXGjBlu7NixjiUlFJlt+yj3XNvC5yjHd5Qe\nPlaE7145F3JurCnk9UKzOWTIELfXXnulDiNYkJcwBedRqqS5hJUrdZwpp3jMMcfobHvUqFF6bcpN\nevYwFJkPMkQZQw/KwIfylAwIiqlMRcM82Uq+ghywlTEwfeONN5TNDOsAs/WZM2e6 0aNHax9pB8Q6\nG2ywgdLQwvuNXxraUepX4yMFF4R+FIOrHlTnf3geoGPFSsF3P/ip825Z8w2BrAhURCFzNV5cBCod\nffTR+hKkKMVpp52WtSFJ3kBQDi8TqtGgZDGJgstVV12VtdtXX321Q8E8/fTTburUqfqShrPX80IT\n8INi56UPMxYvfASFnGtb1AUxCeZjnUJBhJVh+DwoFT+j7NGjR0pphffJ9R2FNO+882q5yD/++EOx\nIoiJPg0YMEBN+piZKW6C6RizN0rtkEMO0ch+cb7ooIUof/i2qegEpzbCAAGzOcJsk7ZyD5iVM3As\nRlCW1JFGoso3+nPBCw5ZDlWuTj/9dEehDVw4DCyWXHJJHSxQIpD+sUQw3aPkKYvp17G+T58+LPS+\nUuO5EYRn8eSTT3bXXHONO/fcc915552ng6hG6Lv1scERqIYvXf6xAuE8DiTSNZCZQzUuGZtriGlT\nA4TCDdp1110DUcqpVeKP1OCdW2+9NbVutdVWC8S3nPotptJAFHDqtxSECKROcOq3cEcHYonQ37m2\npQ4IfRFlqteXf4WsS4meDh1R3FcpSKLnFUalrAeKotR9Xn755UBy2zUwUF7GaftLQZNAFHcAXogo\nOz3mySefTO0nVoJAqpClfmd+AUcZWGSubvJbopn13KJUA/F1B7RdZuiBzOgDGUil9o+6dxwjM/RA\nBlC6H4FtYPvKK6+kjqOdMsgJRMmn1slgK5CBSOp3I34RH73iLINMxbwRMbA+Ny4CZfchR41vKAqP\n6ZFZDX5lavI2ipAGxKwxLKQJMSvNJcx8qVuMEPyEeRbyFS/MwJhNkc7DzJCZoCh63Zxrmz8+vGTm\nTSGKXB9m95UUX+qRmSKpUpMmTXISUZt2SQhoSKu77bbbdL2vuUx/vTCLlgh//zNyWYyvHlpGLBkU\nLsDPzez7+OOPjzyvX4nZnapYxFPgouA+IeH7B55YPnx5TGb fpGcxg29UAWNM9GAHn4G3DjQqHtbv\nxkOgKgoZWPH/4UfFLIeJ0tfSTTLkmN6IxsX/FxYUQj5/GP5GmVE5BjOYOvERh/2WmEwx6+GfZ9vt\nt9+eqtaUa1u4Hf47ii3fJ197/blKWWJipzoUwUvkmDIAQTKjaRnMIeCRTag+JePrbJt1fTEKmXKj\n+LhxuZADvNRSS+U8NxvxX6OMMbeSR0yfkPD9Q7njXqBmNcKAtVevXvq9Ef/gimAAhp8cv7vVWm/E\np8D6XDEfchS0YoZ1cF5ToYXR7xFHHOHwlSY1wR/FwEsYy4D3aUbhErUOvzMzK6JMUZY+qtfvy0t/\n4MCBOtDBH009WAK58NPn2uaPDy9RGvmqJYl53HXp0iV8WNm+E+yGMAOm7S1atNDfWBG8EmYFfmyY\nmfAFN0eKUcilXAcL0JZbbqn+biqi4bPOFAYO/B+Q8kb/GaDiM200YTBGLADxEgxgiAHgGTAxBBoR\ngao/+UTVXn/99Wqqu/feex2BKkKwkEjsmVUyOyJSmhlgWEj3IRI3SnihY67GHO3NsuHZFcdgtmUd\nKSEwOEFdKr5jPV2ubVHXI7oX02muDybkSghmXCo1YXIfPHiwXqJTp0669IraXxdTJqZdqjqVKijj\nfAFsnDvfLDvX9QlEo50oYyTz3vljKcxCdDr70y4CvhpJhPhEA+74/+A7CtmUcSM9AdbXTASqrpB9\nA3bbbTelA8S0h6mKkTH+waQJEaK83EllIVJ43LhxWtSedV7ZUuAe8X5Uv2TA8sMPP6g/DeUEKQXb\nSAdCkUGSgBDRTn6sN6fm2qYHZPzh3AyKcn2YgZcqU6ZM0UPDAxCiqUlZwpXBII0ZkldIREUTaUy7\nwv5gat5CtynsWXo+sEHCz823336rs/1sChWCDXzmDJAoai/sYnqOzD/M3BDf9szt/nfmvWM95xTW\nOjVD055Bgwbp7tOnT9cIeH8s9x/rBu lY4XQvvz2pS55f0pm6deum//tE1GOBMTEEGh4BeXHVVGT2\nEMgLKxB/YbDOOusE4meuaXsqcXEoMSXFRiNtiWiWmWDqMkQVi6lWt4lvPRBfom4TBRjIDDsg2pr9\nZfaqEcbiHw4klzUgAlmCmQIiqomuFl9zIL43PTbXttSFq/CFdhIJLb5h7Z8MvjSClmhlCXQLDjzw\nQG2/BJM1aQ3R+ESZr7322sHQoUMDItA5xlOyStCbUknKP3AgM+wA2lYhFgl8xLjMOtMimP0FRPkp\nrtwPqaXrV6eWtPmCCy7Q55Fzi4UjuOSSSwKZVaf28V+y3Ttxy2gENRHZkjuubSbyW0ztgfj6/eG6\nJBIbSkgZoKStT+oPIuKJLpfBYzBixIikdtP6ZQiUhEDZiks0d2SDmRYT3oQJE5TogRqnBPkkRTBb\nEqELSUWhZjlmEmEM8PMym0R8vi5+Y9ZRsMFLrm1+n3pZMgMlMI5gH0/w0dy2c07uQRjb5p4z83ju\nNxYBosYR+e9UMzb51mERBaW55gSNJVl4ToksFy5zzQa48cYbXatWrZLcZeubIVA0ArFRyLSclxbR\nwgQmEbxDBGojmfKKvnt2QN0jQHAjz3k20pV67yADE5QvLinIYwhcw71iYggYAk0RiJVC9s2jlCNR\nyWLq1WhVgsDILzUxBJKAwHHHHae+cXz+DDy9jzkJfQv3gSh5osgJxiOinMwBTz0a3s++GwKGwF8I\n1CyoK9cNIO0FrmH+oQncgSyBFCmCcUwMgXpH4Ouvv9YgNshexD9d791p0n6C5fr27atpcqSoEbQF\nfagp4yZQ2QpDIA2BWM6Qwy3EjA0nMCYviPkZaUtt2CakEeFj7LshEHcEwvEAcW9roe0jolwC4tRE\nDefAZZddlkr9KvQctp8h0MgIxF4h+5sDBSH+J0baEImgoGFO8kFOfj9bGgKGQHURIPhQItZVAZPK\nRUAmueWQn5gYA oZA4QjUjUL2XWIUDj80Jm1M21TTMcXs0bGlIVA9BHAnQUYD0xtkK9CMYsHKpDyt\nXovsSoZAfSNQdwrZww3xwqWXXtpEMSeVhtP325aGQK0RQBEzI0YRE0VNkBrKuNhylrXuh13fEIgb\nAnWrkD2QYcVMLi7MR/3790/xIfv9bGkIGALNQ2DatGmqiLFOEduBIj7xxBNNETcPVjvaEEghUPcK\n2feECGzMZ+Q8EjADyQijdiohmRgChkDpCLz99tuaKy1MaMq9TQUysh5sRlw6pnakIRCFQGIUsu8c\nPMIUV6CGLTzIkBAwa4ZL2sQQMAQKQwBT9NixY3WQC2e6UJhquc+9997bZbKNFXZG28sQMATyIRDL\nPOR8jc61HapCRvAUe6dWMDNn6gNTdQm/ly8GkOscts0QaFQEyJGGxpPqW71799YqVCjmd955R4ui\nmDJu1CfD+l0NBBI3Q44CDWIC2JAoeYjvCzpOqs1stNFGUbvbOkOgoRDgf4La25S/pAIXHN9S+MMd\neeSRjnxiE0PAEKgOAg2hkD2URIdCbs+L5/3331czHGX+qDtMWT4TQ6CREKAEJSVB+VDchdrkBETC\nsuVLgzYSHtZXQ6DWCDSUQg6DLaXznJT1c9QchtiAurzMCnr16qXEI+F97bshkBQEeNbvv/9+HZiO\nHz9eKy4xIOXZl/KnSemm9cMQqEsEGlYh+7sFA9ioUaNUORO8At8uSplZgtQptgAWD5Qt6xYBAh3H\njBnj7rvvPjdu3DjNHe7Zs6cq4e23395J3e267Zs13BBIEgINr5DDN5Oc5gceeEBfXFJkXsvFEaVN\nibxtt91WK/OE97fvhkBcEaAWM8FYI0aM0CWpgAQ3MtDcddddHUUfTAwBQyBeCJhCznI/vvjiC32Z\nMat45ZVXHKQjzCaYPe+www72QsuCm62uHQJESDMTfvjhh92TTz7psP5svvnmqoR32203zSGuXe vs\nyoaAIZAPAVPI+RCS7VOnTlWzNi+65557TiO1u3btqsoZ05+RjxQAou1SEQSoNTx69GhVwsRFUGyl\nW7du+mwyeFx66aUrcl07qSFgCJQfAVPIRWL63XffqR8O5Yw/jrzmVVZZRYPCCAzDLMhs2sQQqAQC\n33zzjc5+H3/8cUfMA3SWLVu21DKHKGCeQas7XAnk7ZyGQOURMIXcDIz/85//uBdffNHxcnzsscfc\nG2+8oUQKnTp10hcjyrljx45WIrIZGDf6oQRkEc/w9NNP63M2ceJELWu4ySabaNAhCph8+jnnTBzH\nT6Pfeut/AyJgCrmMN33mzJlps5fPP/9clTEKGl/eFlts4Tp37uxgEzMxBKIQwALz/PPPq2sE98jr\nr7/u/vjjD7f66qtrYKG3wkDeYWIIGALJQsAUcgXvJ2QLvFRhQeIDEQMpJhtuuKEqZhQ1H0zeJo2H\nAAxZkyZNcvh++WBtgaISHul27dqlBnEM5pZddtnGA8h6bAg0GAKmkKt4w/H3oZgnTJigL2Cq6GD2\nXmqppVQxY97ms8EGG1gwThXvS7UuhaOT4OsAAEAASURBVMUEkzNR+yjgV199VWMQqOHNPccMvdlm\nmzkCBvELmxgChkBjIWAKuYb3m7QU/M4vvfRSapZERDfSunVrt/7666d9MFuar7CGN6zAS2Ni/uCD\nD9ybb76Z9pk1a5bGGMAPjfL1FpL27dtbjnuB2NpuhkCSETCFHLO7ix+aFzkzKf9C//DDD9WPCL9w\n27ZttXIV1aswa7LkBW9VeKp/IxlQcW9Qvv4DR/rHH3/sfv/9d70nlC1kYEVwFu4L/MOWJlf9e2VX\nNATqAQFTyHVwl3jxk2+KfzH84p8yZYr6G/FL44dGMfOy57tf8t0KBZR+k+F+xvfPZ/Lkyakl5T3D\n+IO3HyAxSFpvvfV0sDTPPPPoxb/99ludEWP5IGKafGETQ8AQMATCCJhCD qNRZ9/9DI1ZGTO1sMKA\ntQmZY4451Py90korueWXXz7yQ8CQVxx1BkGzmgudJH59WNmiPihc8n4RcAQnP9Bhueaaa6oSxpVQ\nCH4Mpoiy79Gjh5YCbVbj7WBDwBBIHAKmkBN3S//qECbS8KyOgCI+XvF89dVX7s8//9SdUTaLL764\nVv5p1aqVLgkq8t9btGih2yE84cO+LBdeeOFYoEe0MjNZSFr4kDrkl7gAZsyYoYqVZfg7+3hBoVKC\nk0HLCiusoMsVV1wxZW1YeeWVy1IFDEpLqFfPPvtsd9555/nL29IQMAQMAWcKuUEfApQxxTRQ0NOn\nT1dFlamwvPKaPXu2+rAzoZprrrlUMcMMxQfTuP9gRl900UX1N9/Z1y/57j8EqdGWbB8CpCiUwOeX\nX35Jffe/GXhQ55pUoUxByTKYYGARHmD4gQZLZr0oYSgmqxUwd9NNN7l+/fq5e+65x+21116Zzbbf\nhoAh0KAImEJu0BtfbLdRfOGZp5+BsvSK0i9Rlrfddpv6UVF4KNVsChdFiiL0CjpTcaPESQvKVPj+\nNyQrmTN3P4Nnn7jKSSed5G644Qb3zDPPqBk7ru20dhkChkD1EDCFXD2sG+ZKpPcsueSSSicKs5RJ\nUwQYiFDak5Q38pLbtGnTdCdbYwgYAg2FgBHgNtTtrk5nYShDjIEsO95YBYYPH+6WW245DfIK+7Oz\nH2VbDAFDIMkImEJO8t2tUd8IJkPhENltkh0BzO2UTsRH36dPn0g/ffajbYshYAgkDQFTyEm7ozHo\nDzNkAqUKSQWKQXNr2gRwQilDGHLsscfWtC12cUPAEKgtAqaQa4t/Iq/ODNnM1YXf2g4dOri77rrL\nDR482F1zzTWFH2h7GgKGQKIQMIWcqNsZj84wQyZv16RwBHbZZRd3ySWXuBNPPNGNHTu28ANtT0PA\nEEgMAqaQE3Mr49MRmyGXdi9OPfVUd+CBB7o999zT UQnMxBAwBBoLAVPIjXW/K95b0nmoWGUz5NKg\nxmy98cYbu5122snBpmZiCBgCjYOAKeTGuddV6SnMX9R4Nh9yaXATCPfggw8qw1mvXr2Umay0M9lR\nhoAhUG8ImEKutzsW8/b6HGSbIZd+o5ZYYgn1I1MsZL/99nNwdZsYAoZA8hEwhZz8e1zVHuI/hrKS\nMoMmpSNAKc2RI0dqStRZZ51V+onsSEPAEKgbBEwh182tqo+GopCNBrI892qLLbZwFKK4+OKL3dCh\nQ8tzUjuLIWAIxBaBuWPbMmtYXSKAydr8x+W7dURdf/TRR+6II47QQDmUtIkhYAgkEwGbISfzvtas\nV8yQzX9cXvj//ve/OwK8dt11V/fxxx+X9+R2NkPAEIgNAqaQY3MrktEQmyGX/z7OMcccbtiwYW7V\nVVfVdCi4r00MAUMgeQiYQk7ePa1Zj6iHTO6szZDLfwsWWGAB9/DDD2saFDNlUstMDAFDIFkImEJO\n1v2saW+mTJmi1zcfcmVuA5HrY8aMca+99prr169fZS5iZzUEDIGaIWAKuWbQJ+/C+I8RmyFX7t6u\nt9567t5779Wo60svvbRyF7IzGwKGQNURMIVcdciTe0H8xy1btnQLL7xwcjsZg5716NHDXXnlle6M\nM87QXOUYNMmaYAgYAmVAwNKeygCineIvBCzCunpPwnHHHec+/PBDZfJaaaWVHCUcTQwBQ6C+EbAZ\ncn3fv1i13iKsq3s7rrvuOrfZZpu5nj17OjjETQwBQ6C+ETCFXN/3L1atZ4ZsAV3VuyVzzTWXu//+\n+12LFi1UKf/000/Vu7hdyRAwBMqOgCnkskPauCdkhmwBXdW9/4suuqhGXk+fPt3tvffejvKXJoaA\nIVCfCJhCrs/7FrtWf/PNN44Zms2Qq39r4A5/6KGH3BNPPOFOPvnk6jfArmgIGAJlQcAUcllgtJNY\nylNtn4HOnTu7IUOGuKuvvlo LUtS2NXZ1Q8AQKAUBi7IuBTU7pgkCmKvnnntut8IKKzTZZiuqg8Be\ne+2lhSiOPvpotVRsu+221bmwXcUQMATKgoDNkMsCo52EGTLKGKVsUjsEzjvvPNenTx+3xx57uA8+\n+KB2DbErGwKGQNEImEIuGjI7IAoBS3mKQqU26zBdr7322lqI4ttvv61NI+yqhoAhUDQCppCLhswO\niELASEGiUKnNuvnmm0+DvIIgcDvvvLP77bffatMQu6ohYAgUhcAc8k8bFHWE7WwIRCBAdPVhhx3m\nOnbs6D7//HPdA8VAZSKWr7zyinv//ffdEkss4Xr37p06w5NPPulefvllXd+3b1+35JJLprbxaD77\n7LPuzTffdOTcrrnmms78oil48n4B7y5duuhM+a677sq5/x9//OGeeeYZN+ecczoCxEaPHq1MYHvu\nuadbY4010o798ccf3SOPPKImcdwU3bt3t9iBNITshyFQIgIoZBNDoDkISCnAQHzHwfDhw4Off/45\nEHMpg7xg8uTJaacVhRoI3aOuk1lbcOihh+oxonCD3XffPVhqqaWC9957L3XMmWeeGdxyyy36+9VX\nXw1E2ae22ZfCEHj88cf13px//vlZD5g1a1Ygilfv2T777BNIPnMg1JzB0ksvHSyzzDLBzJkzU8dy\nr9Zdd93gwQcfDGbMmBFcfvnlgXCXB3fccUdqH/tiCBgCpSHgSjvMjjIE/oeAmKv1ZS4zXV0pdXv1\nt1emrBTiClW6/ihe5BKA5H8GMqvWY7bbbjtdJwQXqqBl1pba58ILL0x9ty+FI3DjjTcGc8wxhw5+\nsh3166+/Kv5bbbVVwAAL8fdRZsv6m0EUg6pzzz1Xf/s/KPB55503bTDlt9nSEDAECkfAfMglWhbs\nsP8h4HOQPSnITjvt5NZaay2tSCSPou54zz33uP333z91ENWKJk6c6I466ij9XHzxxa5t27ZOZmu6\njygQ/Y 0Ze9SoUbrOSC9S8BX1hdrJxx9/vDvooIPciy++GHns/PPP78B81VVXTUXKt2vXTvf97LPP\ndPnoo4+6SZMmuU022STtHDKIcr///ru77bbb0tbbD0PAECgOAVPIxeFle0cgQIQ1JRfF5KxbebGf\ncsop6mPE14jgK95hhx30+3fffeegehSTtbvhhhtSH172+Jq9XH/99Q5qSAKTunXr5jjOpDQExCKh\n/newnDJlSkEnwW+P+EEVPmkks7xm165ddb2lWSkM9scQKBkBU8glQ2cHegSYIfvZsV8nvki33HLL\nuSuuuMKJX1jTcHyOMoFDyDvvvON3j1yuv/767o033nD9+/d3//znP92GG26YmkFHHmArsyIA5lgp\nxCesQV4//PBD1n2zbaCIBZI5y6b84zzzzKOBedmOtfWGgCGQHwFTyPkxsj3yIMAMObOohPgU1UxK\n5C6zZcylXpj1sr/4Np34Lv1qXRINjImUVJ0777zTLbLIIjqDHjt2rPvyyy/dyJEj0/a3H4UjwMx2\nzJgxOqiBPOTPP/8s/GDZs1OnTrr/c889l3bcu+++68TvrNHZaRvshyFgCBSFgCnkouCynaMQiJoh\ns98RRxzhFltsMQc5BUQVYUFJU8N366231tkv/mQJ8nLff/+9W3HFFdVMOnjw4JS5lNQaTOLeLB4+\nl30vHIHll1/eSbCWGz9+vDv22GNTB1IYBNM0vmAvnlTED5rat2/vDjjgAIdC9n5l9n3++efd6quv\n7g4//HB/qC0NAUOgBASM57AE0OyQdASYIe+7777pK+UXs1v4lSVNpsk2Ao3IVx44cKCTyF4NJCJo\n68gjj0zty3kpKbjbbrup35Nt+EBNmofARhttpNYHSTXTwLlDDjnEnXXWWXpSSZPSWTTugYsuukjX\nYbXgHnXo0MExSGKmveOOO6rlg/xl4gSeeuoph1XExBAwBEpHwIhBSsfOjhQEmFmheDG F9ujRowkm\nzGxHjBjhFl988SbbWMHsixk2JuwFF1wwbR9e9tT3/eqrr3TWnLbRfjQbgUsvvVQVMTNmFGwxgiWD\n2ACsGcy6TQwBQ6D5CNgMufkYNvQZfMpTpg8ZUN566y0N9sqmjNlngQUWaGLOZj3ig8B46ZuUH4HT\nTjstxcaF2Xm99dYr+CK4ImABMzEEDIHyIWAKuXxYNuSZMCsjXiG//vrr7tRTT1UzNZHRDz30UEPi\nUi+dvummmxz3sGfPnkph2rp163ppurXTEEgcAhbUlbhbWt0OMUPmJc5MF8HELDSXbujQoWoObdOm\nja63P/FEgHQlocFUvnE4xn0AVzxba60yBJKNgCnkZN/fiveO2VU4B3njjTfWtBoYt6jJaxJ/BMgv\nJq3sk08+UTY1TwQS/5ZbCw2BZCFgCjlZ97PqvfEBWeEL4/v15B/h9fY9vgiQtkSONzSlZ599dnwb\nai0zBBKMgCnkBN/canQtc4ZcjWvaNSqDwBZbbOHwKZPuJNWbKnMRO6shYAhkRcCCurJCYxsKQQCF\n7AO6Ctnf9ok3AjCqffTRR0rywX3dfPPN491ga50hkCAEbIacoJtZ7a6QH0wQUNiHXO022PXKjwAz\nZKKud911V/Url/8KdkZDwBCIQsAUchQqtq4gBHwOsinkguCqm52o1gWPODNkyF5mz55dN223hhoC\n9YyAKeR6vns1bjvmaugSqepkkiwESGODwQsLCNSlFI8wMQQMgcoiYAq5svgm+uzMkCm9ZxHVybzN\nlGocPXq05pWHOcaT2VvrlSFQewRMIdf+HtRtC6JSnuq2M9bwSASo8DR8+HB3++23u8suuyxyH1tp\nCBgC5UHAFHJ5cGzIs1jKU2Pc9p122sldccUV7vTTT3f/+Mc/GqPT1ktDoAYImEKuAehJuaTNkJNy\nJ/P34/jjj9f61pTZhK/cxBAwBMqPgCnk8mPaEGekkP20adMs5a kh7vZfnbzuuuvcZptt5nr16qX3\nvoG6bl01BKqCgCnkqsCcvItMnTpVC0kYKUjy7m22HkGJ6mtbY8b++eefs+1q6w0BQ6AEBEwhlwCa\nHeK0ZB84WA5yYz0N1EEeM2aMzpD33ntvHZQ1FgLWW0OgcgiYQq4ctok+M/5jXs5LLLFEovtpnWuK\nAFYR6lw/9thj7pRTTmm6g60xBAyBkhAwhVwSbHaQRVg39jPQpUsXN2TIEHfllVe6m2++ubHBsN4b\nAmVCwIpLlAnIRjuNRVg32h1v2l9M1hSiOOqoo9R10a1bt6Y72RpDwBAoGAGbIRcMle0YRsBmyGE0\nGvf7gAED3B577KGfSZMmNQECUpH77ruvyXpbYQgYAk0RMIXcFBNbUwACNkMuAKQG2QUWr3bt2mkh\nim+//TbV6/PPP98xi77mmmtS6+yLIWAIZEfAFHJ2bGxLFgS+//57rQBkEdZZAGqw1fPNN58GeQVB\n4HbZZRf3ww8/uL322suhkJEXX3zRyjg22DNh3S0NAVPIpeHW0EcxO0ZMITf0Y5DW+ZYtW2o61Ftv\nveVWX311d//99zsUNDLPPPNoAFjaAfbDEDAEmiBgCrkJJLYiHwL4j6mZS6UnE0MgjMD888/vZs2a\n5f7888/Uako33nrrrWnrUhvtiyFgCKQQsCjrFBT2pVAEmCFTAxlTpYkhAAJPPPGEmqt/++0398cf\nfzQB5ZtvvnGPPvqo+pmbbKyTFQwyYCf76aef9PPLL79oX+kvH7b775Qkhdlsrrnm0iXf+VA/fOGF\nF3YLLbSQLqk7bWIIeARMIXskbFkwAsyQjTKzYLgSv+PgwYM19QkTtTdTZ3YaZXTLLbfESiETgAYf\n+xdffKFLBg2smzlzpn789++++04V8b///e/MbjX7N4rbK+cll1zS+c9SSy2l31m2bt3aLb/88joI\nZiCMFcIkmQjMIf9Afzl6ktk/61UFENhhh x3c0ksv7YYOHVqBs9sp6wmBGTNmuO222869+eabeZvN\nbPHLL790+JurIZjOJ0+e3OTz+eefu+nTpztm814WXXRRfaZRiF4ZeuUIG114VusV6IILLqj+8aiZ\n8H//+9/UbDk8c+aafpYdXv74449NBgIMDBgUfPXVV3ou39YWLVqocm7Tpo1bbbXV3Kqrrpr6sA6f\nvUl9ImAKuT7vW01bveaaa2oU7XnnnVfTdtjF44EAygcf8amnnqrKJspkTUtRyAMHDnQnnHBCWRvO\nzPbdd9917733XtoHhYygMFdccUVVWigwvjPTDH9QuHEV8GXgw2zef5jVY6nyAw6UNwLGBFuuvfba\nqc8666zj2rZtq+byuPbR2vUXAqaQ7UkoCgEMKvi9MD/ut99+RR1rOycbAUy755xzjrvhhhtUMUQp\nZiKwYfcqVZjZvvbaa1qT2S+//vprPR0zx7AiWmONNVQJE3yIUk6ykIqIcv7kk0/cBx98kBqYgDX3\ngf6TK96hQwe30UYb6bJ9+/Zm/o7ZQ2EKOWY3JO7NYWS+wgoruPHjx2tt3Li319pXfQSYrfbv31+f\nEaLxM71iL7/8suvYsWPehhGd/frrr7vnn39ePxyH+ZZzMtP1imX99ddXRYyv1SQdATD88MMP1YLw\nxhtvKJ5gigJHSTN7hpecOtd8+N82qR0CppBrh31dXhlFvPnmm6vpbNlll63LPlijq4MAucjHHXec\nmlt9GhT+zYMOOsjddNNNTRqBf/WFF15wTz31lCrgV155xf3666+uVatWbtNNN1XFgRLecMMNHT5f\nk9IQYIDEbBrFDMYMeCZOnOhQ3pjzUcz8j2+77bbGNVAaxCUfZQq5ZOga88A77rjD9evXz5HywUzF\nxBDIhQAK9ZJLLnEXX3yxzpQxnxIMRbAS0cLvvPOOpkyRNsVgj+eK2S8KAcWAIsb0bFJZBMDdK2dv\nkSDojGwKFDOfrbfe 2uEWMKkcAqaQK4dtIs88QIoJUCwAP5WJIVAoAlOmTHHHH3+8GzVqlB6y5ZZb\nqimVqGuimnnZ+xe/Ec4Uimrl9mO2DOUpAyU++OuZWXfu3Nn16tVLPwR3mpQXAVPI5cUz8Wfbf//9\ndXbzyCOPJL6v1sHyIDB79mzlun744YfduHHjNN1okUUWcaeccormJW+wwQZmbSkP1BU7CwF7uBJG\njx7txo4dq+8AAvRQzvCX44c2i1nz4TeF3HwMG+oMXbt2dURnXn/99Q3Vb+tscQiQV8ts+N5773WP\nP/64Rl1vs802+gLffvvt3T/+8Q+tBFWtnOTiWm9750KANCx8/ShnBlmU3SQYrE+fPq5v375u4403\nznW4bcuBgCnkHODYpqYIkLt54oknupNOOqnpRlvT0AjgH2b2NGzYMIcFhUCu7t2760u6d+/eFoiV\n0KeDOADcWHxIuyIPmmpfBx54oMYDJLTbFemWKeSKwJrMk0IdSEDOgw8+qGaqZPbSelUsAhByUBP5\nzjvvdJB04A/mhbzrrrs6WK5MGgcBUquwitx9993KhoZF7eCDD3Z77LGHUoQ2DhKl9dQUcmm4NeRR\nmKbWWmstpUnEbG3SuAgwOLvnnns0fYnoXKJxDzjgAJ0VWVBW4z4XvudYR3BVMFDDdUFRDczZRx11\nlCNmwCQaAVPI0bjY2ggEMEP26NFDSQUsDzQCoAZYNXXqVDdo0CB32223OfzEu+++uzv00EMdUdMW\n1NMAD0AJXYTClBkzRUjef/99TWU7+uij3W677Wa82xl4Wj3kDEDsZ3YE4M6FcN+UcXaMkrqF3NSd\nd95Z/YO8XCH8+Oyzz/RFu9VWW5kyTuqNL0O/yF0+5phjlM7z6aef1iIe++67r9ZTv+CCC7R+dhku\nk4hTmEJOxG2sTieog2xlF6uDdRyuQt4pkbSQc+ALxD9M4A45xXBWU/HLxBAoBgEGb8SgMLgn6Ouq\ nq65SdjAKjlCFq9HFTNaN/gRk6T//NJgnUcBETbLkHwjqQ17KJslFAP/f8OHDlWELEyNuitNOO02Z\ns5Lba+tZLRD46aeftFDNlVde6SgSss8++7jTTz9dq1PVoj21vqYp5FrfgZhen4o9+HnCQmAGrEqQ\nAFCD1StquIUxZZvUNwLMiEeMGOFgY/v44481TxhFTAUlE0OgkgjADIYr5NJLL9Vnj0py5557bsNZ\n5EwhV/Ipq+Nzv/rqq1kr8hC8w0zZl9djFkW9VZP6RQCCB8zQVGrac889VSnDxGRiCFQTAUhHUMx/\n+9vf1EJ3yCGHuLPPPltrV1ezHbW6lvmQa4V8zK9LWlO2GrLMpH7//XdlXyLf1JRxzG9mjuYx8MJH\nTMAWCvjtt9/WF6Ip4xyg2aaKITDnnHNqnXW48m+88UalWqXYCEoZ83bSxRRy0u9wif3DPJ3PVMkM\n+bzzzivxCnZYLRGgrjVmwU6dOunAilziBx54IO89r2Wb7dqNgwCTAWbHH330kbvwwgsdLjSqfpHX\nzCw6qWIKOal3tgz9ovwdpukoYT2pCzaTikInvuuoOYw5EKsGfMTULH7uueccdYZNDIG4IcDEAJpe\nYhpgfjv88MP1WaUSVRLFFHIS72qZ+gRJvC8sn3lK1hN0YVI/CPzzn//UwiCXXXaZWjYwC0LOYGII\nxB0BgkkpaINLhQBS3CzUZacKVZLEFHKS7maZ+9KxY8dI8xCzY8yd+HZM4o/At99+qylr5IBi9iMI\n79RTT1U6w/i33lpoCPwPAah7qc981113acUwfsOdnRSxKOuk3MkK9ANfzcILL+x+/fXXtLMTeIEJ\nibQnk3gjQJnDI444ws0333zu2muvtaIg8b5d1roiEKDONjnLt9xyi9tpp510We9kNTZDLuIBaLRd\nUbwdOnRI6zazY4oImDJOgyV2P77//nu9T/jdevbsqbNiCsmbGAJJQYBKYjfd dJN75plnHCUg11ln\nHTdy5Mi67p4p5Lq+fZVvPL4aAiu8MGsmX9UkvgjAF7zuuutqtR2oLykEscgii8S3wdYyQ6AZCGyx\nxRbqWyZ1j5iI/fff3/3www/NOGPtDjWFXDvs6+LKBHaRc4wwO4Y+0/is43nrGCydf/75btttt1VS\nF0g+MOWZGAJJR4ABJ6brsWPH6kAU9sA333yz7rptPuS6u2XVbTCE7yuuuKJedK655nKTJ0/WKi3V\nbYVdLR8CM2bMUB7g8ePHuyuuuELrzuY7xrYbAklE4KuvvlLaV1KjrrnmGk2Vqpd+2gy5Xu5Ujdq5\nwgorOHw1CIn6Vny+Rjcix2XJJ6boO9W4JkyYYMo4B1a2KfkItG7dWiOxTz75ZHfkkUcqX0JmYGpc\nUbAZco47M3HixKx5uDkOS9ym448/3r300kvuoYcecjzsSZMFFligbhmqhg0bpjOA7t27uzvvvNMt\ntthisb49kyZNcmPGjHGYFLfeeuuatZXqQvPPP7/r379/1jaQp40JFBpZ3AAIgx6YoyBXWX755bMe\nWw8boKKkmAjlNDfZZBPtI26pTKFU4qOPPur4P9lxxx1dq1atMneJ7e/HH39cudlJ0Rw1apRbZpll\nYttWbZjwEptkQWDRRRcNBCT7JBwDic7M8gTEd7X4iwNJ+dBnU3KKAyFqiW9j/79lQtcZyIxF23zr\nrbfWtL1CCxsIbWjWNnzyySfBcccdp20dMmRIaj9hNtN1jzzySGpdPX6RgVEgSiqQAUfw448/Bvfc\nc08grqng2WefTevOJZdcEmy55ZbBhx9+GIg7JJC830CY3dL2ifsPod8MJP8+kAFU8MYbb8S6uTZD\nzjFeYrZx5plnur59++bYK/mbmB1jqo796LKEW0GBdKKSSZuoF/n3v/+tPjJmbzfffLOmN9VL25lh\nUrpTFLK6QGrV7p9//tmR1sesL5swQ27Xrp3DCgERjhe IVmCOCgv7EN1bL8JMd9lll9X74NtMwCb3\nBypVhFkxtbBfe+01dYmwjvtG7i8BU/VkIYDRq0+fPurSodZ3r1696E7sZO7YtShmDYKmrU2bNjFr\nVXWbk+T+L7744tUFs5lXk9mMvkx4IT711FMOvvF6EgID4yALLbRQ3magsBG/9AdkKmPyYBm4V0Mh\nY17+8ssvXefOnX1zSlpyDog1wgJ5DFznXmR2rIqY+AQv8NdTJ51UunoqLMP/uVg11KdMahTtr8b9\n8rgVujSFXChStp8hUGMEmJltv/32btq0aU5Mi2699darcYuad/lZs2Y58qSpPLXHHnsorSeKAnIH\nCtbjt6XiGArvrbfe0otBdOKj/gnUwS/IbIcoc164zPogQkHxf/311446zyhUzi8uqFSD2R9f9sEH\nH5xaxxdmh3B+o5zwcyPU//ZCahnYw2BHSiBt6927t+4DSQXX79Kli/bLH8t9QqkxKycOg75BY1pM\ngKSY0N1FF12kcQIDBw5stkIGR7jooaBEyeJPhtWNqGSEZ42I/Uylhd8dCwe+53pSyPSJClKkRjHJ\nwhrArPnYY49lU2zEFHJsboU1xBDIjgCKiiAocsKJpK53prSXX35ZOYjXX399VQrXXXede++999Qt\nQtAQ5kXMoyhklBfKAQWACRmFjFI87LDDlMKVNC/xcWpA2ymnnOJ22GEHHbigWCmCct9996niRjnz\nm+A3XsQLLrhgmkI+66yzVLFfffXVqpBQVIhXyHCA0wbKVFKrF4VMBgIKlzKBVNBiJsYLn0EAjHaY\nulkizMq9QvfrdEOOPwTB/f3vf3eYWbkeAxgGZdOnT1fzco5Dtd0Q+0QJVZPuvvtubZ/4VRV7BhSe\nzQ3TNW2NclNxf4jsF2dsCpuoa8R1HTN/rBwEq8JoFyuio1h7uGvcOIK6ZERV41bY5SuJgMwSgrgH\ndclsLhBFpIEp8iKuJBwVP7eYXD Uo6qCDDkpdS5SMrmOJCKGJ/g4Hfoky1XWPPfZY6jiJlNZ1BFp5\n8YFuDz74oF8ViKINZMabFvgmM8RAeI9T+xCkJbPqQF7QqXV33HGHnp+AJy9SbUjXiUL2qwJhiAok\nPTD123+RGXYgs+BAZsR+lQa1yWw/9TvbF4lpCPbcc89AFHsg5ulA/Llpu/q+i9LT9kQtJWI67ZjM\nHzxXMtvV47mG5O+mdvF4SzR5ap3/Iv5nPeabb77xq+pyOXjw4EAGW8HFF18cm/b/5SSJ61DG2mUI\nNDgC+Pkw3RLIRfBZ1IylHiEilcgLHMQIpDPFiE/xgibUC7NUJHz+NddcU32jzCq9YJIOi7yUlbc9\nbNam2hniZ8h8zzyOdUh4n7/WOK2oNXXqVJ1Rsw5TNabnXK4GYgN233133eezzz5z48aN09nodttt\n50+ry2OOOcb98ssvOT/M/nIJflRoJzHbQ6IhUeeOayKY5JGofmFlAAfPT6A71uEfiq5QcOWMM85I\nmepr3Q0zWdf6Dtj1DYEsCODX40WMUsa3udxyy2XZs75X49tDeNE3V6IUps+txYebTfBRowjDEqWM\nwtvD36P25Xy4FjCpy2xXfdz5onuJYBYrgAaS4ivGHx0lYOZxi9qeb93tt9+upvxXX31Vz4NpGwV1\n1FFHqVkcQiAkCjMCCynjGZcAvXx9zbWdADUC2U444QR1KRx66KG5dq/4NlPIFYe4/BcgGAFiA3wf\nvEggMMGfxoubVIWw8KJo2bKl4x+MfyIvjNZ5yRPYwgyMNIhySrY2lvMaST4Xyol0OzHx6uylmACg\nJOOSr29RitEfk23bH3/8oTNN/NpRku248L5R+6CwTjrpJFVy/K+JaT3vTIz/X/zlEI+gJPnfhJ88\nM6oaRfrkk0+Gm9DkO9en7nWUiDlefe1eqTNLJr2JWTP/u7wv8HlDnZspBHyFI68zt9fbb+4RxSj6\n9eunqVz46 GslZrKuFfLNuC5BGBdccIHDHEa0I0EKCAElq6++uiOwZe+999ZoUSJZiVrdfPPN9Z8I\nsydC3i3HEsASNuXpxjL8ydbGMpy6IU4hpBQawUsgElGtjSReSWCmr4ZwPQrdE1RGZHaxgjLONrsX\nX7kOiAcMGKDmXwK+8knXrl2V+pHAKdrGLBlLCWZlLwSREVyW6yN+dL97k6X4wlXxhjcQLU7QIBhg\naYAqFw4Cgru8oLiohU7QXZKEQc8+++yj/QKbWokp5Foh34zrklqBUIwbn6Kns+TFsNFGG6VyUzGT\nQQ14ww036OiXGTQpIbx4SOnAPFUpydbGSl0vSecl9WTQoEEaDQylYZJk5syZ2h2/5AeDxvASS04b\nyf2/9957ddBJpDGzSwRrkFcQmE6RcO4sZn7En5Pv3uwaVvAcg4+V2TFy2mmn6RLfLNu4BtHZyPPP\nP+98e/21mCV64X+QggZEJuMH99djO8QjmEVJj9prr738IQUtmRWTysVsmHQjZszM3vj/RXm8/vrr\nOT/ZZvxcnFKFpDl5LFmH8sW/zaAeOfHEE9XqFlbsYMKxpE0lTUiJ4v0JGQpZDbUQU8i1QL2Z1+Rl\nRUAFJcf47v09/rThwBS/DlYd/pEIBPH/YH4mEmVu88eVuszXxlLPm/TjMG1iQiPICAKDJAn5096a\ng4LFWoNJlLQehNkeSoHn8eyzz3aUjyTgC/Mtvj2eYRQfgVHMFvGDIrhv4FsmzYl0JIQZD2lK7MeL\nFuE6WIZIsSJtCgXtU51QcPhsYT/D0kSAEyZbZrQSgqvBTig42oKgmNgXIceZfTp06KAKNJN0BN8s\nSjszMEsPLuAPSoJ8a6xOBFthNWmuXH/99ap4CH5jAIjLi/OTJ+2JUHCT8DwyoMe3DasdmDJYTKJQ\n9x1rIulwWAD8YK2qfY1NvHcMGxLntCf551bE5J8oEBN1Gnryz6VpCfLCS1sv0YS6XnIpdb 2MtPV3\nOL2EDfDWkvIhiiGQB1T35Y/MCgJ5Cepn6NChKV5YmZUEQjCg68Xnmdo/VxtTO9X4S5zSnsRUGMiL\nOxDTYY1RicflhfgjEBOpNkZMqWlpS5VqISlKMkhIXVNmxAVdSvyuqbZmHvDEE08E/O+VSwptUyHX\nk9l8IEo2EItCzt1JceIeNIKQ2iaWjQCO+GqLBXVVdfhTvot5Hw5RnBAG5BOCuKh8guSqsoNPmdE4\nsxd81JAyMCuhjFmxhAfFtjFfH5K8HdMhfn9MnDLYSXJXC+4bZlo+iI+ULvjgEnfEauQ5mou5pk/B\nirosfONEWpdLmMmVS5gN4j/PJ5l0ofn2r+ftpNFhBSDQDWpa3HzVEjNZVwvpMl/HU/7xIsBkFiUE\na0GQT/DWTjvtpCZAzE4EeGUTzFOwI2E2bCPmcJiUiMT2ApUe/mdMWWGTDqZBUgfC5u9C2ujP2+hL\nzKX4KjHbYjI1qW8ECMqD9QpTMMos061U371Lfuuh1vSfUgL9SkXIFHKpyNXBcfi5UMCebADOYOji\ncgl+OOq9IviL8PERVRkWUimKJTwIH2/f0xFg0AQlI58kpZOk97KxfvESx9LE/4/3mzcWAvXfW0hD\niNPBOlgtMZN1tZCuwXWYsWJyLkYgn8C0zawYFh9SbojmDEsphAfh4+37/xDAVI0lATNZtpzR/+1t\n3+oFASLEyfWNIiqplz40ejsJoCMvm1xwJjfVKMNrCrnRn7qM/kM2QgQqbEH4M31Edni3UggPwsfb\n9/8hwCic6FY+SWA++l/P7Jsp4/p/BrbZZhtlMCN1DcXcokWLinbKTNYVhbc2J5fIwJIuTOoI5mqq\n3KCMkXCeYvikpRAehI+373+VuIMw4uSTT1a/faNhQrpSPaXQkGeMNQPXT1yF/2FSvwgMpMRkoUIQ\nJ88hwWekp0UJed9UhCIFikpcpFA2glx66aWaCsb/aqXFFHKlEa7B+ aG+Q6BdzCWefN6TKfgl5jYY\neaDwI3gLQhG2eSIGzonCLpXwIFebGmkb9WiJcoXcvhFlyJAhbtiwYXXTdawYkvanucxxbDSKgwED\ns7rVVlvNbbnllvo/nK+tHEcQGv/fl19+uZa39DnW/ljKW0LYgsImLoVgNUhEyMBIusDrADMiAx1I\naioq1c6zqqfrxTkPOQpHYRMK5MEJxPeh+cWSzhBIQElk/qaQHATkCcvDFUggUUD5OUT+oQNJ/Qjk\nHzqgPJlE/QaSZhFIqlTA+cMi/4yaNyvR1uHVdfW9VnnIlBgUE7XmbtcVYGVsLPnrMssq4xkrf6qo\nkoPk7NdapCqUlmqEl8ALpWMlVTGVV+3Xh5fCLBbIADy1SpRyIJkbQbdu3VLr+CI1pgNfNpKyjULU\nou8O3heNIEKNGgiJSiAsXhXtLgwzJlkQqDeFnKUbRa/2ZAz+QGE08l/TluUmPEg7eZV+1EohCwuX\n/oOLS6BKPbXLVAIByHckELISpy7qnBKAGQhTWNoxEKuIHzsQU2va+vAPmfGFf+p3SfcJqBftRYpO\nKPGP/82SutzUapbSluHVif4uwa46CBGO8Yr100zWFbU/1OfJCfUPS7bgFAgPqpkSEG5TPX/H7AWP\nMPSQ4bzteu5TKW3Hx4nZOiykgMH7TOwCZlP8zKQOIazDjXLZZZcpxWb4OPy6+KPlTelI3cMNAD2k\nKCXdDW5icuwhvoELGuE6/Obj6wCzHheN921TjxiTLjn3XJ9j4JZG+E5BBu9bHT16tHJe47/lQ5Q1\n3NsI/NZ33323ridlsJwCrza4hOtCc35IVciSgIcgm/j60X47fYSPGx5rL/ARQFoTFqhAoQqt95rI\n4T7l+05QF9zyF110Ub5dS95uUdYlQ9eYB+Jr4uUF2YERHpT2DJCXij8uiQT9hSBCZaQ777zTHXvs\nsepDx++JUoN/Gh8luECQAukNZCmkg8HfLPSs jqIlpKDAQc02OKdRdBSFgJsarmoqFuHbBGeuw34o\nkFatWilHMQFJkN+QEogiI/+7Xbt26jtFiVKQhXOgnNiXEqfcr3vuuUfbhS8RdjyUEX5UKi+h2CB0\nKZbNLowX5DrZqkb5/eCXziQZIdiMttLHTKHPVI1ioJJv8EcwF1hT1IJCFl7oU5QwUAKrRpIzzzxT\nB2FUhOLel10qNvdOwIkb1WSd69ZJLl4g/9jqf5agsFy71sW2apus5SWmPnqZQdUFPpVsJGZRqViW\ndgn8l6LsUr5l3CdCYRmI4k2tg3+ZuAbJCEgdK5kB+lzim/ciKXxqYiQWAmGbvECDMHe7KHpdJ2l+\n/rBACk3oOs/jLrN23QbHMceLQk7tKwVbAlGQqd/+i7DZBaI8A7ixvYg1KeWH9evCS943nD/XRwpk\nhA/R774PUviiyTapc67ni/J9h3fG/SSDitS1wSCXSGpkIBSjAT7nRhIZ+ASiiPUZqUS/zWQtT79J\n4QgQgY0ZkELq8gIp/EDbUxEgSpeZVLGl+JIIX5QrhGcKM6tPu8N9wqyYkoB+HZHpzBJJ8fFChSV4\nqJn5eiE9h3VkChQjvnQo5mhE/KS6jGovG6JmnqWw2TGrJ5Uo1yeKPAYCi2ztYMZNu/OZliWISyOI\nwRS6XKwOmZHWehH5wznJEMBq4a/ttyV9yb0muwQLTrjEZ7n6bQq5XEg20HmyvZgaCIKSuiojak2b\n2W+//Vw5CwSU1Jg6OijqeaPwQ7jucFR3UNwUipDZYdTmrOt8+UG/zLrj/2+IUshhNjt2o65xr169\ncp6KAUe+DwOMTPEm7Cg8cAVgbi+UdAZ/McoYoRRmlJCvjI+5UWleqTPPffA4RWFU6rqmd7fUM9lx\nWRHAxwPhBrVUfSWZrDvHZAPBNASFxNVHRKF4GMXg6aYiC8EWhb5AawUx5AvMQKjta1I4AlEKj6Oz\nrfdn5hlh1llqHWJ/nnz LqHaUwmbH/xxtziXQ2Xbp0iVtFxQyFgIf/BbeSMBXsYoTfzpWgtatW4dP\npd8J5OR8+QYXTQ5M0AqsNtBoQqtJ7EI5xWbI5UQzy7niTigQ1ew4kzYQnUvJOILLCAiiqDovCAJb\n4iwEBREMxAvPpPIIECRFoBeVzhA/u2RduQRlnC0Qq1g2O55jTKG5PlHEFFgQDjnkEJ3Rhv8HIPeh\nMIwvg1pon7EoQC7UvXv3tEPIDMDKQ8W3sDAwbjShEhTBfhTgKafYDLmcaGY5F+YrHvJ6qikqxCFN\nZpz0gUIT22+/fZaeVn41LxzJ4dUUDz/TvPjii9XvSARkXCvr8CLDJ1fuEXXlEa/cFZgNwhZHShHK\nEowwu2bOEmGJy/TXsV+mYuU8pE35+r7wsDOj9AoZ0y0mWeIgWEcsxP33368dJD0JPypWFm/6FSIc\njZr2CPh2Mev0QmQzs3CsYLSfWSWzVQTzM/5Goriz+WP9eVgW6+sOH4sJmSh0+uzLsRKNLkFnTaL5\n8UODJxHkxIIwwOUdhYkfYeZHqhd+ey9PPvmkroNWl3QyhIEICmmdddZRnP2+jbAkCp33OaluZR1g\ny0NkkgUBi7L+HzCwccHeE44w/d/W6n2T3E+NBJV/hLSLEi0tL8IA9qdipFpR1jCjyYsqIFK30QV2\nLimqoSxSYCIKIoAxCpY5frds2VLZo4jg5f6wTsyEwXXXXaeR1rDPsU6C4wLPknXEEUco85kowOCU\nU04JxM8XSGH5IJPkhghrjoPNTgLrAh8tLGVJA6GH1AhsiD44v8wsA+4bIv7UQJSWrhcFFEg1NF3P\n8yiDCT0nfcoUUdZVY7MjihyCkNNOOy0Q83dAnyT/OrNJSuYh6VAB/9NiglYseNcdfvjhgaSeKSbh\ng2QQrv9bYJL5EbdWEwa/8LFJ/n7AAQcE4i4raxcZ1ZlkQaBcCllGkgGMPq+88krqSryUhg8fHsho\nPB C/YiCkBYGYhPSfhJ34R+afhRdIOL2INAoZ1QaSP6n7CNm7/gPywvBCGoTwzQZQ5yG8lGRUq+vC\nNHkyStbrsg/UmbzofJqG1HMNZKTMpkBmIgHMUvwzCkGAUmryzy8Rw/ohhcdT9qEQZaSu64VLW48v\n5x/JXdV2ZJ5byA90PctipFoKmRQc0mBMKoMACpn0KERcGWn/M5lXhMHKK2rJN46kls08JtdvMe+m\nzpe5Xy3Y7MSSFdCvbMJAh/99L7yfeN+Q0mNSOALiWtBBYCalcOFnaLqnmaxFy1RSMOlgssIv5AkF\n8LlAzo5/ByIEiNshQZCRvRPOWDUJwzaESQizE4XOSTGAjQhiDsmPVJ8p2+Ulr6xPnAdTHOZcmRmo\nGQlzIGZdghDw+xBQRloIAQnZCBDwG+EbCZM2YBrETI05jHrJkCCwxHwto0RH1DBLBHMdZmX66Ndl\n4lsqAQLnATMkkwQBAgQEkoY4CuZISP9NKo+AjzrOdiWCFfkgRGs3V/jfzSYEQfG/WU3J5xrLTFXC\nTC/54NVsYiKuBbEM7zqIV7xbpNkda6qjbY1HoFwz5ChCAUxKcvMC8WH5ywWSN6nrRPGl1gkjkfLR\nMopFPvnkE91H/ESpfRjdYuYjUd/PcDGv8TsskBUIC09qVTYCBHbIJG2QaGa9rp81+5NUkwCBa3I9\nijJkCtYH8DzqqKMyN+X8XY0ZMvcOEynWDJPKICCDQiUGiQNRBVYcCEMowAAZiElyERA/eyAUuGXr\noEVZN3tIk/8EUXmUflQd5p/1vLJSVSR1UkgJCCYRMndd5wNGSN73wuiWGTczaNJqCpVsBAgcH9Vm\n1memeFSTAIHrZ47uWYdgLUCiUjV0Qw3/wJ1MYBI0jyblR4B8UCH+16Aq8Z9qKlz5r1L4GcXdo1Yt\n0pDiGmRYeG9sz1wI8D9NAGy5xBRyuZAsw3milKA3qfnIz2yXIYIUIRK6UPF5u35 ZyHGZCpnozFVW\nWSVllqskAQLtwxyJ8vURr77NECAgZY149Cdv5lKq5WjELdGoJuVHAHMh6UAUhRBqSXWplP8qhZ/R\n2OwKx6re9+zYsaO67srVD/MhlwvJMpwnU9mFT5lrG/v5CjIox0pKZjuqSYBAv3xKC7MPirB78ako\ncVTIVM/hvhTKluT7ZMvCEPDWpsL2rtxe5MWT3kRsBSlFcRbaSZ6yF/6fSNHyqU9+vS1zI8BEiBQy\nBoP56Elzn+mvraaQC0GpDvaBBYpyaN5kS15nZp5mc7rhFbE3DYfPBQHCgAED9EOwV7bqMP4YCBDy\nzfgxw2cyEnE8BAiSHuMmTJiQppB5CWLG95YCf604LHEjrLzyynFoirWhQgjgkuCZhJHP/69U6FLN\nPi3WBAI/xfGZOhd0kKaMU3AU/MX/X0vWhynkglGr8Y7evOpncTTHm1j9NtbxT40w4oJgH/GKK1O5\nUmbOC2XTqNFKJLYXoqUxnUlqkjL1UBMVogPO40dz/tyZBAicg3aFSRt8VDMR0ihgru/Lj1WTAIEB\nByP5gQMHauQ4Lz/6RIK+pJE1ITPxeNRyyT8rgyWT5CJAbAMFQyAakQDDWHcUik4G8N6axv+QBIXG\nus1xbRxZLuDHoLtYitKoPpkPOQqVMq7D4Q+HNUIKE6YilBqKEuGfg5tJmhNpUQh1YUmXYj/JJdZ1\n+MZ8yg8rKLhOSpOvz0nd13BaDWw98DtDLQldIxWGUArMIklfgo0HKjwEvmr/EoG96P/aOwuwO4qr\njw8fpUiBAiFQ3KUQ3CUQLLg2uDsEh+JQrHiAAIXilhDcJUBx1wRtg0Nxt+It853fgVn27ru71/ba\ne895nve9d3dnZ2f/O3fPzJlz/kcIGDRsCUVH3lmYfPjBUj+mOD6pLy4SB6qhSI3mDeaaKGPWDaHL\npK3gK56OTjyw401qm+8MmMqF4rRNY60hdSGAZaqdZ8gSke HI5ctyz/TTT69/9M0QBlbXzXfhyfj9\nEHLJb7wIMZN1ESjm1IEXXqDnixcjKUJcMH1gdk0KSjku/KAQZsDCxOPw6ERZJ18CjNg5FyevMPol\nxjn+w8P8mxRmu9A7plE8CsmBentjlk4KM2b4XZuxTsq94r2K+RyrQ7vHUGL5yPIOT+Jo2/kIYGYl\nxp3fD32NKISVVlopOokBJYNb+OM5Tox8vL9CrclvCErNkSNHKgcAg1eUEjGlmJ353SyzzDI6oA0V\nQ8t51113aZw9lJJwA0CXue6661bkPU+UBDSVREJAuxgfPJe7p9CGIj4ZwDJJ4H5550jYn/IFJN8f\nRVyrW+rgtx2sm/Xes82Q60Wwheez5sOPKu/HFJQxzYwr41qazXXiL7d4HRAgSMxlfFfDv/PCbXdl\nDAgsDYRwtYaD0ssvgCVEYvF1MCox9WoZCbfMSzHkTSYXMkoU5YeSZomItIE4/cHFzIAT5Ys/A78h\nogPgaUbRorT69+8fhbOgRCHTgRwH6wwDWchzLrnkEs00hsUpT+655x71r8CkiVMi/NISLx+dkndP\nUaFfvqDYH3zwwdw/7itLGGhAQESGNO6L5ScG92m+IVl12P5SBPhth+W/0iM1bBUW0dwLKyqKGKRI\naOD8lcesfL1F1ltLXb2BAKHRxCDyotPnBc2eSX0IQO0oLFReFFxUkThRRd+hbJUQPqWBZGcgs4lT\n1opHtpclHOXEpgwUmlBuiiUr2icvVy/5qn287koJeSDsiRPyQFQia7UlHOui0LVPyExc6Srz7ok2\nxiUQCvEOyPoLFKLx89K+g49YGLQeSdCSVsT2VYAAZEvwhhchNkOuYRDTqlNwDoKGE2FUzjq0cNa2\nqjlqLmdGYQQI2Y8AMyjSDFN+dit6xxEsNJDnMFul3yHMeoPgVCUc62o1wf8B0zYS972QQbY6TLI0\ng0ArC0FOmFmzD8sTJl18O4IEC0e1h Dw4GjJDh0CHWTF/mMxx2mSmX+6ewvXDJzN74cHP/cMZsxKB\ngIhlMih1aadJbQjw2w6/89pq+PUsW0P+FYu2/8aLA3Maf0ECcUjYbuYnXtxwYqcRmjSzHe18LZx8\nZLZVnEmrnW+2CW3D3MyaL2Zf1mFh6QrLFoGTmXVRlmdwZkTKvSzT+i+/q0rMkCHMDl8NlHpSYGkj\nQkGSxyQPRdt59xQV+uUL/Ym/ooTBx9prr+3If25SGwJFLkkV92Rruxc7qwoEeLHz106S9jJrp/a1\nQ1t46VXycm+HtrZ7G5ih4rDFGrFwg6tnPQ6Fk002mc5oBwwYoMoPL/xKE41k+WBk7Y9jVI6Qh9kT\nyWOEYz4zkUXePcWvxXfCG8lNnCdckxl5pYJjXBhYVHqOlfsVAX7b/MaLEDNZF4FiL6gDliHCrgil\nameRVHdK00nWK/iLO8EZpVCnj3Z+OA1uG7HxhPdhZmbGSQgh4X9kP0MOP/xwVXwh8065mXERzU0S\n8iTrxCzMC/uss84qOUQ/PvPMMzXeP++eSk6SDQYZZI7L+yvnZJask/BHZskmtSFgM+TacLOzMhDA\nO7UTWIYgTIE7FgYv4v4w9S288MKRN2zG7bV8NyZVFIdJfQiI04wqNryhmb3iHUyqwZBukBcjOOMx\nTT9B4SF4JqMAodikTJyMh+P0f/pWXCjHOnRSyhHysH7LubSVNrLejRc1a93Ux2CBOlCocAGUu6fk\n9SVDm+OvFkGZgwlpUQOJBSZ12ksbTapHgEEfPA1h2aT6GhJnFOEZ1lvraEcv60ZiLTGVXsKaGnmJ\nuuqWGbyPJwMXQhD1EJUwkJrrbbSXNQ0jlSXetyb1ISDOUV7WY73QPGraUglB8jy/IJKX1gtzkqYr\npS+L1ccLGY4XjmEvisgL5ar2FwkF9OL/4PGA5nx5JXqZdXvxzVBPa4lx131CfuPFR0KrF0Wv+yR+\n2eMlfeCBB2rd MhvV47TtlFNO8eIspuWoVzgC9JiQ/HgxCet+riVJRryY3aPz8u5JCxX0Txy4PF7m\ntEFy+XrJjOWPP/74yLu8oMt0VTWyZKF4yoSmkPtmhGaSgUC3KeRkyEYGLC3ZLbMaL0QMJdcWr3P9\nMZBvulZphkLeZ599vMzka22inRdDgHzf9AVehGlCmJnMeKNDMoPR8tGOGr8EhSwkPF5mlNoXqbsa\nob+mtbvcPVVzjXJlZZbuZabsJQa5XFE7XgEC4smv7yCxwlRQunwRc+pKWAwauSmPI5dlCJPSo48+\nqtR2EBrAAhSXWlmGIACA5xriDkJBbr/9diX4gOAghH/Er5P8jhMJ7D5kM8EEF08egbmGtTw+CeWA\nvjJw5CbrqWcbZzYIHOICBSAmwHhO6fjxdvlOu82LtZinETyMoX1MEzytQ4gSxzEbF+0IiQNPsi+m\ntSW5D97jNCl3T2nn1LoPJ8w0b/Ba6+v288jkxjs0JPWpFw9TyPUiWMX5rNPwQ4bykhy5xCQG2r+h\nQ4dqbCVOInhuiklJ4xVRorAMwW990kknOTF/6voT62Ew9uBNibIVUgSNp4QvG/5pjkHbSVgIsYus\nX7F2RdwycZBQT+JMQrms0CnK0kbCS1B8ZLIhDhqlDuMR63Krrbaau1eoCumU0BQiWQoZSsJyTli8\ntIgBzRMGNtCRggmDi3YX1utI6EFcay0v8na/v25oH7G/CH3exBAICBDHjeNeJR754Zzcz/KT6O4t\nUaTJGvNWHiOPkL17UX4R2BJn6UXZRdt8qZVlSJxgvHQYL6QJUX2HHnqomlrE+zPalzRZDxkyxIsC\njo4LAYieIwkkdB9rbqypBcGkPGLEiLDZ4xM8pTPm/mESzBPMkdtvv72XWYrWwzpfnIkp79y0Y80w\nWcvL3MssyAv5QloTbF+bIyADKc9viL4L65ZYOwoxg7f5bVvzKkCApSgYC4sSC3vKHa4Ud5ARV B7L\nELNMZqAImZ5gv4ozDLFfFFrNLEOYxeaee26qUSGOk333339/2NXjk0xUo0ePjhiGhF5P7yF4pBK/\nyGybP10iAABAAElEQVQZr1eIEZj9MYPPEmbm5ViGysVPYo6ENxurgTjR6CfZqtpZsB6QqhKzv0nn\nIRAIebByMCNiKSnLqtR5d2ctrhUBrI5wmmOJLErMZF0UkhXUk8fIQ9IG4mpvvvlmzUTDeiw//nKS\nRsxRCcsQ62BQ5qFI0wTTHOEixCWTzDxNll9+eQ3nwJSO2fzUU09Vsvq0suyrZL0669zkftYKMf2L\nZ63GoRLKkoZF8rxWbZMIIW/w06p22XXLI9COhDzlW20lGo0A/j4QvvDbLkpMIReFZAX15DHyiAk5\ncrhCcVUa3J+1dpG1PzQTBcaMNSt/MQoPYd05SyFThuw3xIPuuuuumnsZ5y4JpwiXKflkxs1180RM\n4BpnnFcmfmzFFVd0kmygrZUx7WWtnRhQ4qezMmbF78u+F4sAxDc4HzLIJad3Owuc9fhbBIFFi1zm\naXLllVe6GWecUeOu046n7YMHnN99PPsbA2rikYMMGjTIrAABjIzPm266SdN/FukXYibrDLCL3o0i\nymLkwdkHczWm3zCLJOC8kcIPPhAVpF0H8zgdDfYuyPHjggMZLziIDWgnjmmYtnH+ivNsx8/hO6nu\n8hiGODZmzJjkabnbEBtkDRhyT2zyQawJPFssICbNRSBOfENO4nYXSHo22WQTdRTCuTPLKxrHUN4Z\nUIlWIgxIINKBBzz5m0bhQ6YCqQrXTh6vpP5uK4NCLvrdYwq5Sb1IFv2VZYhPJM4yxAsDIVmDpINz\nDzzwgJo3WbPiGOulnMcINjnD5HhY09VK5B/lULZxITcsYVNBmIEzGw00g+yPswyxTd5UQqZQJqxx\no3TxsqYcYSescf/jH/+gqHK58kMPrEm6M/EPky0zlLy/bbbZJnHWz5u8 IMThS7P5hAJCEqJtYi25\n3YXZCLN5ZiImzUWABPJkgipyra8Zd7DqqqtqOA2D46TwGw9UocljadsMoAkPzOKsxmrDMhl91KQ8\nAkwceP/F35/lzypfwhRyeYwKK8FMmNEnM0HWXQlpQonxQ0ERoYgZqeLUxUwTZQvHLAoXZcQnYUqE\nNnEM5YgJlPNYn0ZpCfOOOoRhxiWBehDMy5hMcZri5URoFSM8BOVN2BX1MAjgh47peaeddnLCSKQh\nWozUGUETCkW7EdZsWcfl2qRvo4OSErIRwkycQQTOUbRDvKM1pIsRPSFgnSBkKWIAA7YmzUcAJ8Zy\nSznNb1VtV+R3SXhjpcIAmj/M2yb1IxDCTOGLKFSKctfujfUQpnPuuecWdmvlGHlIlh4XUZTxzZq/\n77jjjpqEnQqgE5QZblV1EbZDyJSMykvO434QKALFCazkWKM2ZMDQox31XKsZYU+hfeBI6NoJJ5wQ\ndtlnGQQkLt9DZclf/LcoA07dRwhSEMmqpFSXMKNJwomwO/qMh/XBrCQDSaW7DOGAXAv6S/6SjFoy\n8PWyROMl9t0LUU5UZyO+yMteQ6yyflPcGyGH/I5FGXgoZSsVKD85Rwb3qadcdNFFerzad0RqZb10\np1gblWIYLIsWc+oqdHiTXxkjdCSLZYgsNnFphNdwOdKN+PXDd9Y+4yFTYX+4nymmmCLsavinxB03\n/BqNugA4YiFh7Z3lAJPyCGCZwXqDqT/u6MRyS7AqUUsesU7aVchRTL/dYIMN1MmL/s21sBJheYL4\nJvxOsTZhAcIyxG8Uq9YWW2yRmeOY6ASJyU+7bLSPmXotsyvqJrsV/igsb5k0H4GRI0eqZTJrea2e\nFplCrge9DjmX2F/WkDFzs55m0joECCPDUY6XPArApDwC+AjgDMff4osvriewJsp6Z/BYJx0jnsMo\nuhnFLEtEA+XD8kraVVC6SQlZkMJ+fjM8M2haiYH nOOxwLP/ATBfaE8rzyZLS3nvvHd/V4zuhiSz/\nVCMyG9Mww07wmajmvjqtLKk0BwwY4ITMqfCmm0IuHNL2qhDqTOKb+TETjiQsV/qyaq9Wdk9r4Prm\nxwzJiinkyp47VKyrrLKK8oHj34BlBm7wHXbYIaoAp8PAYR2IdYqYQTIzxjcjTlhDuCAOUK+88kqq\nQoaqFv+LogVFjP9HYan+im5gF9THwAxv9eB/U/Qtm0IuGtE2qw8vwNVXXz1qVSPM4FHl9qUiBA46\n6CD1sn/iiSfcIossUtE53V4ITnX6MaZrTMYwJMFlHqRWYp1wftYnYXWYt5mBVyoMGMJyTqXnlCtH\n4hmcQcmrjMkawfKFEP3APggqaKtJ4xA45phj1LG0aO/q0GJTyAGJNv2ECYZwIcxvxPtCMFGNNNsD\nOY/UgJAtqDaffvppt/TSS+vsIhCQ5N0TrGGsu2Km5KVMvPPYY48dndJppAY8R+JBiT2HpMGkPAKE\nADFTPvvss5XQgu241EqsE68j7Tv9TJzFlJGpUrpMBlpkSMsT6o3PuvPKcozwQ/q/8CZHRbF6IZCD\nMGvjN2IKOYKn8C8Mikhqg9WxUWJhT41CtqB6YcriB4fTCg4d7S5ZpAaE+vzxj3/UlwrOEJCErLXW\nWkoskndPhHqhvJgRiTes40W85JJLlpzSiaQGmF4ZSBDGZlIeAdaGWQ8mbIyQQZzjgtRKrBNmscmY\n/VAvn2TyIeaXdcO4MEhkHTlNwmw2jwSnUia+UD9cACjl+F/gumf5g/1ZrHuhDvusDwH4/+HvJ3yx\nYVK023Zvqq/osKdasRFlpKEI8bCPWutq9HlpIRskjZcZsRcFHF2e0AFJtehlXTval/aFkA4hAIkO\nHXnkkYqFKLJoX/hSS8hGM8OeQjvDpzglebLFkAnMpDwC9APxVPeydlxSWNb1tE/ImryGAolFyctM\n0U822WReSHV8CCcUMh4vOb 0jvMFdHMC0b4plxwtxjhdHLa2LMCv6LaGHEpnghc9aw9VkfdqL05Yn\nhCrUW9KYAjbSfkNp1RKGKIqhqrAnWdvWcwj7SpNafkNp9fS2fYTEgbV4WDf01myG3LChTnEVh5F8\np5IaYHJnJohDWRBMdltuuaWSijADSRO8UBn1y4s1Oky4CZLGXhQV6pAvIZvWxRdf3CEtbm0z6Qc4\nNUlcfUlDyhHrwHSXRnzD74kc5Vhe+vXr52Swpx7VJF3BcQunLXwu8KoWxa0mZjyzjzrqKCXMSYYp\nljSqzTaEK0AxCOvPzPYCy16bNbXtmgMp0V577aWOhTgXNlJsDblB6BIuITNaDW1gnRRTKz96PD95\nAeOQQarCwFOLmYvsIXjxEZ9Iircsee+999SJg/Vl1iOJoSSMBrMuQr0hhpJt1rNI/SezA7fhhhu6\nPn36sLtpct111+m1eHHGBTxQxrBtpZmByLKTJG4HHxwqknXF6+2U79wDITWwLmG+jw88OuUemt1O\nGOzIVJYU1k9RunElyW8tODHCKMdfUrbddlu36aab6hox5/KbgsUu7tvAUgvryOxHicd/W8n6mrkN\nDjJdq+iSeGZnYVBRBV1cCIc+nPsk13vDUTCF3CCIiffFcQnPR+IlAxEEMzsUDT/woIwbRWrADBPv\nVJygUGI4EUF6gGNVWgwmUEC+IKa6XFTE1OyqIRgJa11Jh5NAKMJgpJzw4sGhAs9aZiy9RcQ0qiEU\ne+yxh5I99Jb7atR9pCnjcK24MmZfUMbheNYnPOMh81Ge4xb9vpmS5K1vxrXL/fab0YZ2ugYELwyY\n+ct6ZxbZXlPIRaKZqIuQFrKxoEhIyBA8nsnSgqksSKNIDZhNEA6y0UYb6aWIY0SRQlqQlfUGkwwz\nizyBV5vQnUoFcxkmagYicQkvV2b8ecIsGpMR3o1YFphZElvdG0KGYB7Dc5isMVgJmCmbdDcCDAoY\nuGM9Y UCPUyOWsEbKOeecozz2vKu4dqcujxWJEZMALChY6eLv6yKvkazLFHISkYK3maFiooaMnO+s\nZ/EXH203itSANUp+zFw3yBxzzNEjO1Q4xidrZ+UkbxaRdm4WO1gYjf/hD39IOy3aB+EDLww8XU87\n7TSNxRw8eLAjvKQ3CNYLBm6sjeJBnpcxqzfcr91DPgLQefLXTAkkK1m5zJvZlna5FhMaqFRZSkxO\nJhrVRlPIjUL2l3qZxfHHLAjFSIpF1qzi0ghSA8IyCJNilF1Nzk74losWZuUoX0xwcTMiAxOkUlMQ\n63qsgz388MO6hp6sr+h2N7M+BhqweNE34MqNr2E2sx12LUPAEHA62GeZkSU+JjXNElPITUAaRbzV\nVlvp+iwvW8xCcWkEqUF4oRPHXI1CZlZdbu0KYv9kLHD8fpLfcYpB3nrrrRL+148//lj3V6qQtbD8\nY00eJ7a4cg/HOvUThzvizfE7wIuXF4GJIWAINB8BuA9YPoLitpoUl0W01BRyESiWqQPPZkkJF7nO\ns54aJJAaMIMOs1Pc7MtJCIXKIjVgHYi1DxIZsP4a6qZezOfLLLNMqrcohB1ZYUihTXhsVqOQWYdB\nyUAaEidkf+qpp5RXOytperhe8hOPx2oGGcnz23UbSwqkFzh4gW+j1w0bhUO97HKNalc19WJhYnDK\nYJnoBegpCdsjX3ia/wX+IfwucNTkt9do4ffEEkdwjCx3PUIPyZ0eFxzZCPHi9xf8WzgOIxjMX/w+\nzzvvvPgpdX/PwrXuiguqgHVjQitJxsN7MkxsCqq+fDXSAJMMBOSHVZKDNaNYRbuFJs+LIvYySywp\nXwmpgZhoNShdvLGjcyshNRAmIT1PMtJ4mVH6UaNGeYgwyAPbKMkiNSBHrYRnRaQMQtjv5UXg5Uef\n2RRx4PLiGe5llh+VkVm179+/f2r+5VpIDVpJDBLdVOKLsFB5cfbykFB0ovBMIe+Qt0 9hv59m43DX\nXXdp+yVCwIvp0gttpzaB351Qv3pJLqHHZf1fczDTTyEVEcXmxTHSS7RCw5rM7wJsJdqg4mtAqsI7\niPMgTZEwMS9scR6yFHGu9GLFUxIUWUbyEt7jp556as35W/EFKiyYhWuFpze8GO8psbx5mTw0/Fpp\nFyCOzSQDgSIVssyEvZDip15JqCS9zHi9zB69OC55odxTZiChy/PiTeyFHEN/SJL6zUvMblSHjF71\nxS1OU14IE7yEM3kZ8XpZZ/Uka+flQRJt6uaHyKcQAigDUVRJwV+yFDJtgZWLF5isl2q7Lrnkktyr\nSyy3557F49PL7NHLbMWfeuqpyr6UdmJvUciwQ0ksurJIiZNd2q22/b5OYpdLAxPWLn4zsHHJTNmL\nxaKkmFh99DisXXGRWaj/05/+pIxiQsIRP1TodxjHGMwHEcfR8DXzM9yTWMdKygT2O5kZRvuFB6Eh\nCjm0IQvXqAEt+MIEhneNRHO04Oo/X9IUcg70RSpkLiOm4Myr0UHjwku5EmGmGc6VuONUZcuIWtiI\ncq9fybUqKZOlkMO5UGZWq2TETFhR23uLQgarjz76SGdhiy66aEX3HvBtl09ZVlCFxaCxE4XfFUoP\nQbHKslPJbcgyUKpCphC/XcnH7MXcqbPNkhML2hAHQM/vAoHWURxDy9bMYIFBRlIhM3umrWLC9uI/\novVADcrgvmgph2vR16u0PjHRqwWTwUkrxdaQpYc2S0Lcbdr1GklqwPoxbF7NlCzHMNbPq83nSqxu\nJRLCqCop2+5lCH2CwSywtpGIot2c2GCjw+cAkhtiw6E5ja9FpmEsL2RHmJ8sn2hsuph5NVY+lCUJ\nCeuXfJJzGM9zsjwh8qKMsoXRjyD6b9Q6O+urMhjS60KbWQ07F8+JMD3OJ28zdJ9BiCzgucpMUTkB\nxGRcQrLD2iUOi6xdEoNM3l3whUsg7msByx2/C8quvfbaGjeMH 4qYmqv2r+BeuZ5YsUIzUz/znp2Y\notVpkxO5f9gC+Xz88ccd+alxWqSd9eCa2qgCdrK+jhMXa8f4DLRSjMu6lej3wmvHSQ3IQtMMvlxe\nfscff7xm38GhpreQGvAChgCFl9qgQYOU1rFdusyYMWOUhnXeeedVj3AUMwoUZqMsQYHj9MQAES5l\nlA8DDl70CA4/pBfl5Rjy/qK4g0DOAL80oW8oqzyyBkL+4E/P+8PJME9CLDADAhzuqhFZatHYVZjv\nuE8E5zDul98IkRfcLxEGsnSjx3EYY4CCkr7wwgvViYzzySqFxy/ev0HICY2g6HgGKD84Bqph0At1\nwXxHG/Hwz4q3LffseB5DhgxxW2+9tVtsscWiwSODEn6bIdKCa9aDa2hzUZ/gS0pX/qA6brm0cnre\n7tcu2mTd7vfbje1rR6eu5HMQYgIvFhTPup54MCcPN31bXt5qkpWBUHRtHLnkZe5lRqf70kzWLGdg\nGg1LFjhHyQvQy4BDzxEiBi8hdVGdotwjky8+CGI1UOfEUABHqixh3Ze68/5EMWadXnZ/nsk6nCyK\nUq8vPPJqCpYZvTpVhuN84sAHbuCFYNKlzWSuCs9arCO6L2CrBWP/8E0RRRzbk/41mKzJMPa6+LSI\npcKfeOKJ6tQlaSa9MOZFJyZN1uWeHSeGdsaz0pFVSgaTUb3t9EWIhdQJjyx0LPe1g9gMWXq/iSHQ\nzggw48CMy2xZHIZcVqhbs+4Bk6soU51VhGtiWsYcC+tYlmC6JbMSSxbcA5zqSOA6xwTNPljLZA1d\nw/YwfSJYPZgBEkJ4ww036D5m0Vmy2267Kc0qVKtZf9DZNlKYVSIwzREqhVVBIh5KLomZH855kmMg\nmHS5V6wNIbQxxOkTjpQl1ViFCH/CegUfAjNj+hbPM48xr9yzo108e2bChIuJctOmkpAhZGjLansr\n9mM5gc+A50H8f7Xsg41qsynkRiFr9RoC BSIgoV6atQsqv0r4xgu8dI+qML2iZPr27VtyLMvcGQqx\nTokyFquEvrSDGTOsXUpUgZqqeYmjkDDbYooNIuF6GuOLuZaXKSbfLEGZYRov95d1fr37aRvme3xD\nuE/WUZEkjSzPFWFNOUsCb0FQcmnlqlHILBuw3gyeLB1gDi8n5Z4d59MG2K24FwZtCJnmyHTXTsIA\nhGUBku60m2+GOXW1U0+xthgCOQgwmscBhZeJmDSVYrNSYoicaqs+hAKFPAaHItpSqYiZVF/+JFNh\nNpXM8sVLX0yoWueuu+7qJBxQnbsCv7J4LqszGEoEhcKsHCa6tLSV8JyjDPIERSexuXlFaj7Gc0KY\nAXNfoY2sWQYlzHE47ZmdsRZcj1SjkGu5TrlnF+qE+hXHKAhuZhRnOJxJw0w/lGnlJwlqthLWRGbt\n+J6EwU4r2xS/ts2Q42jYd0OgzRHAuxZzG+ZWFDSsZc2WkIs6mR9WwmdcyH2d1iYholDHtGDWDjPj\nUBazLfvwnIYZixkMBP8IXvvDhg3TGScKnVkOWcIkJCmcXvKJspd4/ty/a665puScojYwwcMhD1Me\nCVEQlh2QoKh1Q/5hwofZDKeoWgVlXEmEQd4Mu9y1yz27cD5WEpzuGKwxW8bJq10EdjOc5mgffa3d\nlDE42Qy5TG9hNE66QZPeiQCmRegDO0nw+iUDDeurvMgvu+yykvXcRt8LKSLxIiaLGWueeEULSYWG\nM7Eeh4T12bCOyj5m1ShRzJl43+I9jOARzXNAkeGVz6ySEEFM04G6EWWCcmN9GQXEzJzQsKzMWMzU\nkklc9GIF/XvjjTe0puAhzgbrsZhAocnF1M5ad58+fbScOE25LbfcUgcQrAWHMCoGV5iQQ7Yl8OJe\nWVcOEjjf49cKx/gkzzhZ2jCRcy5rwSwpJCWY+EPbk8fj2zw/nhf1gXe5ZxcPTYTSUxzuHO1udrhl\n/B7Cd/wVGBgwQKP P7bTTTuFQ232aQs55JBIkXjbRQs7pdqhDEEiuhXZCs1FEmGR5uaAgTzjhBFUE\nzWg7MwviY3nJYfbjj4Qj4omriogwrSOOOEKbgtImfIt1RBQVucAZSBDeJKxrmrnruOOOU05mlBiz\nF0KCUGQoaNaRg2A2Fa9kdWxDqey8886qtMPxZnwSeoRZPZjDMacHSwGmZ/oS9wl/O+vXcWFAwRoy\n987sEQXO4IQYXmaWKL2QzAAHvptvvlnN8sccc4xWA74sVSy00ELxanVAxDNgP+8sHNqSQmgTZmSE\nAQFKk1l8MpwL5UU78VVgAMDMmOdR7tlhBg7CujlOYMGSEva34pPBHgM7wuVwrMPq0s4yloyAfnaH\na+dWWtsMAUMgEwEUhFCkOgmLUlMcsdjNEmZdmJnDGmm561KWF32YwfH6wWSLQkJBsd4IKQjKOUky\nwnHOZzYYZpjlrteOx5l9stTAPRRlnaFO1qqTBENF3n/es0teBwsG1pL4zDlZptHbDJqwkrA+j+Ui\nTqzS6GvXWr8p5FqRs/MMgTZC4F5hv2JWgqIjnAWTsokh0AoE8MIny1xYP292Gxg4YClgzRgSEgg/\nkt7tzW5Tpdczp65KkbJyhkAbIzBAQleIJWXWxboyjk8mhkCzECBVI+ZglhxYK8f3phWCiRq
<TRUNCATED>