madlib-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From fmcquil...@apache.org
Subject [15/18] madlib-site git commit: update jupyter notebooks for 1dot15
Date Wed, 01 Aug 2018 20:14:10 GMT
http://git-wip-us.apache.org/repos/asf/madlib-site/blob/acd339f6/community-artifacts/Decision-trees-v2.ipynb
----------------------------------------------------------------------
diff --git a/community-artifacts/Decision-trees-v2.ipynb b/community-artifacts/Decision-trees-v2.ipynb
new file mode 100644
index 0000000..5b55b03
--- /dev/null
+++ b/community-artifacts/Decision-trees-v2.ipynb
@@ -0,0 +1,3208 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Decision trees\n",
+    "\n",
+    "A decision tree is a supervised learning method that can be used for classification and regression. It consists of a structure in which internal nodes represent tests on attributes, and the branches from nodes represent the result of those tests. Each leaf node is a class label and the paths from root to leaf nodes define the set of classification or regression rules.\n",
+    "\n",
+    "This notebook includes impurity importance which was added in 1.15."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "/Users/fmcquillan/anaconda/lib/python2.7/site-packages/IPython/config.py:13: ShimWarning: The `IPython.config` package has been deprecated. You should import from traitlets.config instead.\n",
+      "  \"You should import from traitlets.config instead.\", ShimWarning)\n",
+      "/Users/fmcquillan/anaconda/lib/python2.7/site-packages/IPython/utils/traitlets.py:5: UserWarning: IPython.utils.traitlets has moved to a top-level traitlets package.\n",
+      "  warn(\"IPython.utils.traitlets has moved to a top-level traitlets package.\")\n"
+     ]
+    }
+   ],
+   "source": [
+    "%load_ext sql"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "u'Connected: gpadmin@madlib'"
+      ]
+     },
+     "execution_count": 2,
+     "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"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "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.15-dev, git revision: rc/1.14-rc1-45-g3ab7554, cmake configuration time: Wed Aug  1 18:34:10 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.15-dev, git revision: rc/1.14-rc1-45-g3ab7554, cmake configuration time: Wed Aug  1 18:34:10 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": 3,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "%sql select madlib.version();\n",
+    "#%sql select version();"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Decision tree 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": 23,
+   "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",
+       "        <th>observation_weight</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",
+       "        <td>5.0</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",
+       "        <td>5.0</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",
+       "        <td>1.5</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",
+       "        <td>1.0</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",
+       "        <td>1.0</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",
+       "        <td>1.0</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",
+       "        <td>1.5</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",
+       "        <td>5.0</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",
+       "        <td>5.0</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",
+       "        <td>1.0</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",
+       "        <td>5.0</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",
+       "        <td>1.5</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",
+       "        <td>1.5</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",
+       "        <td>1.0</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\", 5.0),\n",
+       " (2, u'sunny', 80.0, 90.0, [80.0, 90.0], [u'none', u'moderate'], True, u\"Don't Play\", 5.0),\n",
+       " (3, u'overcast', 83.0, 78.0, [83.0, 78.0], [u'low', u'moderate'], False, u'Play', 1.5),\n",
+       " (4, u'rain', 70.0, 96.0, [70.0, 96.0], [u'low', u'moderate'], False, u'Play', 1.0),\n",
+       " (5, u'rain', 68.0, 80.0, [68.0, 80.0], [u'medium', u'good'], False, u'Play', 1.0),\n",
+       " (6, u'rain', 65.0, 70.0, [65.0, 70.0], [u'low', u'unhealthy'], True, u\"Don't Play\", 1.0),\n",
+       " (7, u'overcast', 64.0, 65.0, [64.0, 65.0], [u'medium', u'moderate'], True, u'Play', 1.5),\n",
+       " (8, u'sunny', 72.0, 95.0, [72.0, 95.0], [u'high', u'unhealthy'], False, u\"Don't Play\", 5.0),\n",
+       " (9, u'sunny', 69.0, 70.0, [69.0, 70.0], [u'high', u'good'], False, u'Play', 5.0),\n",
+       " (10, u'rain', 75.0, 80.0, [75.0, 80.0], [u'medium', u'good'], False, u'Play', 1.0),\n",
+       " (11, u'sunny', 75.0, 70.0, [75.0, 70.0], [u'none', u'good'], True, u'Play', 5.0),\n",
+       " (12, u'overcast', 72.0, 90.0, [72.0, 90.0], [u'medium', u'moderate'], True, u'Play', 1.5),\n",
+       " (13, u'overcast', 81.0, 75.0, [81.0, 75.0], [u'medium', u'moderate'], False, u'Play', 1.5),\n",
+       " (14, u'rain', 71.0, 80.0, [71.0, 80.0], [u'low', u'unhealthy'], True, u\"Don't Play\", 1.0)]"
+      ]
+     },
+     "execution_count": 23,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "%%sql\n",
+    "DROP TABLE IF EXISTS dt_golf CASCADE;\n",
+    "\n",
+    "CREATE TABLE dt_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",
+    "    observation_weight double precision\n",
+    ");\n",
+    "\n",
+    "INSERT INTO dt_golf VALUES\n",
+    "(1,'sunny', 85, 85, ARRAY[85, 85],ARRAY['none', 'unhealthy'], 'false','Don''t Play', 5.0),\n",
+    "(2, 'sunny', 80, 90, ARRAY[80, 90], ARRAY['none', 'moderate'], 'true', 'Don''t Play', 5.0),\n",
+    "(3, 'overcast', 83, 78, ARRAY[83, 78], ARRAY['low', 'moderate'], 'false', 'Play', 1.5),\n",
+    "(4, 'rain', 70, 96, ARRAY[70, 96], ARRAY['low', 'moderate'], 'false', 'Play', 1.0),\n",
+    "(5, 'rain', 68, 80, ARRAY[68, 80], ARRAY['medium', 'good'], 'false', 'Play', 1.0),\n",
+    "(6, 'rain', 65, 70, ARRAY[65, 70], ARRAY['low', 'unhealthy'], 'true', 'Don''t Play', 1.0),\n",
+    "(7, 'overcast', 64, 65, ARRAY[64, 65], ARRAY['medium', 'moderate'], 'true', 'Play', 1.5),\n",
+    "(8, 'sunny', 72, 95, ARRAY[72, 95], ARRAY['high', 'unhealthy'], 'false', 'Don''t Play', 5.0),\n",
+    "(9, 'sunny', 69, 70, ARRAY[69, 70], ARRAY['high', 'good'], 'false', 'Play', 5.0),\n",
+    "(10, 'rain', 75, 80, ARRAY[75, 80], ARRAY['medium', 'good'], 'false', 'Play', 1.0),\n",
+    "(11, 'sunny', 75, 70, ARRAY[75, 70], ARRAY['none', 'good'], 'true', 'Play', 5.0),\n",
+    "(12, 'overcast', 72, 90, ARRAY[72, 90], ARRAY['medium', 'moderate'], 'true', 'Play', 1.5),\n",
+    "(13, 'overcast', 81, 75, ARRAY[81, 75], ARRAY['medium', 'moderate'], 'false', 'Play', 1.5),\n",
+    "(14, 'rain', 71, 80, ARRAY[71, 80], ARRAY['low', 'unhealthy'], 'true', 'Don''t Play', 1.0);\n",
+    "\n",
+    "SELECT * FROM dt_golf ORDER BY id;"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# 2.  Train decision tree\n",
+    "Train tree then view the output table (excluding the tree which is in binary format):"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 24,
+   "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>pruning_cp</th>\n",
+       "        <th>cat_levels_in_text</th>\n",
+       "        <th>cat_n_levels</th>\n",
+       "        <th>impurity_var_importance</th>\n",
+       "        <th>tree_depth</th>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "        <td>0</td>\n",
+       "        <td>[u'overcast', u'rain', u'sunny', u'False', u'True']</td>\n",
+       "        <td>[3, 2]</td>\n",
+       "        <td>[0.102040816326531, 0.0, 0.85905612244898]</td>\n",
+       "        <td>5</td>\n",
+       "    </tr>\n",
+       "</table>"
+      ],
+      "text/plain": [
+       "[(0, [u'overcast', u'rain', u'sunny', u'False', u'True'], [3, 2], [0.102040816326531, 0.0, 0.85905612244898], 5)]"
+      ]
+     },
+     "execution_count": 24,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "%%sql\n",
+    "DROP TABLE IF EXISTS train_output, train_output_summary;\n",
+    "\n",
+    "SELECT madlib.tree_train('dt_golf',         -- source table\n",
+    "                         'train_output',    -- output model table\n",
+    "                         'id',              -- id column\n",
+    "                         'class',           -- response\n",
+    "                         '\"OUTLOOK\", temperature, windy',   -- features\n",
+    "                         NULL::text,        -- exclude columns\n",
+    "                         'gini',            -- split criterion\n",
+    "                         NULL::text,        -- no grouping\n",
+    "                         NULL::text,        -- no weights, all observations treated equally\n",
+    "                         5,                 -- max depth\n",
+    "                         3,                 -- min split\n",
+    "                         1,                 -- min bucket\n",
+    "                         10                 -- number of bins per continuous variable\n",
+    "                         );\n",
+    "\n",
+    "SELECT pruning_cp, cat_levels_in_text, cat_n_levels, impurity_var_importance, tree_depth FROM train_output;"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Review the summary table:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 25,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "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>list_of_features</th>\n",
+       "        <th>list_of_features_to_exclude</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_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>input_cp</th>\n",
+       "        <th>independent_var_types</th>\n",
+       "        <th>n_folds</th>\n",
+       "        <th>null_proxy</th>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "        <td>tree_train</td>\n",
+       "        <td>True</td>\n",
+       "        <td>dt_golf</td>\n",
+       "        <td>train_output</td>\n",
+       "        <td>id</td>\n",
+       "        <td>\"OUTLOOK\", temperature, windy</td>\n",
+       "        <td>None</td>\n",
+       "        <td>class</td>\n",
+       "        <td>\"OUTLOOK\",windy,temperature</td>\n",
+       "        <td>\"OUTLOOK\",windy</td>\n",
+       "        <td>temperature</td>\n",
+       "        <td>None</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>0.0</td>\n",
+       "        <td>text, boolean, double precision</td>\n",
+       "        <td>0</td>\n",
+       "        <td>None</td>\n",
+       "    </tr>\n",
+       "</table>"
+      ],
+      "text/plain": [
+       "[(u'tree_train', True, u'dt_golf', u'train_output', u'id', u'\"OUTLOOK\", temperature, windy', u'None', u'class', u'\"OUTLOOK\",windy,temperature', u'\"OUTLOOK\",windy', u'temperature', None, 1, 0, 14, 0, u'\"Don\\'t Play\",\"Play\"', u'text', 0.0, u'text, boolean, double precision', 0, None)]"
+      ]
+     },
+     "execution_count": 25,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "%%sql\n",
+    "SELECT * FROM train_output_summary;"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "View the normalized impurity importance table using the helper function:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 26,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Done.\n",
+      "1 rows affected.\n",
+      "3 rows affected.\n"
+     ]
+    },
+    {
+     "data": {
+      "text/html": [
+       "<table>\n",
+       "    <tr>\n",
+       "        <th>feature</th>\n",
+       "        <th>impurity_var_importance</th>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "        <td>temperature</td>\n",
+       "        <td>89.3828798938</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "        <td>\"OUTLOOK\"</td>\n",
+       "        <td>10.6171201062</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "        <td>windy</td>\n",
+       "        <td>0.0</td>\n",
+       "    </tr>\n",
+       "</table>"
+      ],
+      "text/plain": [
+       "[(u'temperature', 89.3828798938288),\n",
+       " (u'\"OUTLOOK\"', 10.6171201061712),\n",
+       " (u'windy', 0.0)]"
+      ]
+     },
+     "execution_count": 26,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "%%sql\n",
+    "DROP TABLE IF EXISTS imp_output;\n",
+    "\n",
+    "SELECT madlib.get_var_importance('train_output','imp_output');\n",
+    "SELECT * FROM imp_output ORDER BY impurity_var_importance DESC;"
+   ]
+  },
+  {
+   "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": 27,
+   "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": 27,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "%%sql\n",
+    "DROP TABLE IF EXISTS prediction_results;\n",
+    "\n",
+    "SELECT madlib.tree_predict('train_output',          -- tree model\n",
+    "                           'dt_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",
+    "dt_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": 28,
+   "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>1.0</td>\n",
+       "        <td>0.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "        <td>2</td>\n",
+       "        <td>Don't Play</td>\n",
+       "        <td>1.0</td>\n",
+       "        <td>0.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "        <td>3</td>\n",
+       "        <td>Play</td>\n",
+       "        <td>0.0</td>\n",
+       "        <td>1.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "        <td>4</td>\n",
+       "        <td>Play</td>\n",
+       "        <td>0.0</td>\n",
+       "        <td>1.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "        <td>5</td>\n",
+       "        <td>Play</td>\n",
+       "        <td>0.0</td>\n",
+       "        <td>1.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "        <td>6</td>\n",
+       "        <td>Don't Play</td>\n",
+       "        <td>1.0</td>\n",
+       "        <td>0.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "        <td>7</td>\n",
+       "        <td>Play</td>\n",
+       "        <td>0.0</td>\n",
+       "        <td>1.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "        <td>8</td>\n",
+       "        <td>Don't Play</td>\n",
+       "        <td>1.0</td>\n",
+       "        <td>0.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "        <td>9</td>\n",
+       "        <td>Play</td>\n",
+       "        <td>0.0</td>\n",
+       "        <td>1.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "        <td>10</td>\n",
+       "        <td>Play</td>\n",
+       "        <td>0.0</td>\n",
+       "        <td>1.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "        <td>11</td>\n",
+       "        <td>Play</td>\n",
+       "        <td>0.0</td>\n",
+       "        <td>1.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "        <td>12</td>\n",
+       "        <td>Play</td>\n",
+       "        <td>0.0</td>\n",
+       "        <td>1.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "        <td>13</td>\n",
+       "        <td>Play</td>\n",
+       "        <td>0.0</td>\n",
+       "        <td>1.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "        <td>14</td>\n",
+       "        <td>Don't Play</td>\n",
+       "        <td>1.0</td>\n",
+       "        <td>0.0</td>\n",
+       "    </tr>\n",
+       "</table>"
+      ],
+      "text/plain": [
+       "[(1, u\"Don't Play\", 1.0, 0.0),\n",
+       " (2, u\"Don't Play\", 1.0, 0.0),\n",
+       " (3, u'Play', 0.0, 1.0),\n",
+       " (4, u'Play', 0.0, 1.0),\n",
+       " (5, u'Play', 0.0, 1.0),\n",
+       " (6, u\"Don't Play\", 1.0, 0.0),\n",
+       " (7, u'Play', 0.0, 1.0),\n",
+       " (8, u\"Don't Play\", 1.0, 0.0),\n",
+       " (9, u'Play', 0.0, 1.0),\n",
+       " (10, u'Play', 0.0, 1.0),\n",
+       " (11, u'Play', 0.0, 1.0),\n",
+       " (12, u'Play', 0.0, 1.0),\n",
+       " (13, u'Play', 0.0, 1.0),\n",
+       " (14, u\"Don't Play\", 1.0, 0.0)]"
+      ]
+     },
+     "execution_count": 28,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "%%sql\n",
+    "DROP TABLE IF EXISTS prediction_results;\n",
+    "\n",
+    "SELECT madlib.tree_predict('train_output',          -- tree model\n",
+    "                           'dt_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, dt_golf g WHERE p.id = g.id ORDER BY g.id;"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# 4. View tree in text format"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 29,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "1 rows affected.\n"
+     ]
+    },
+    {
+     "data": {
+      "text/html": [
+       "<table>\n",
+       "    <tr>\n",
+       "        <th>tree_display</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 '--&gt;'<br>        <br>-------------------------------------<br>(0)[5 9]  \"OUTLOOK\" in {overcast}<br>   (1)[0 4]  * --&gt; \"Play\"<br>   (2)[5 5]  temperature &lt;= 75<br>      (5)[3 5]  temperature &lt;= 65<br>         (11)[1 0]  * --&gt; \"Don't Play\"<br>         (12)[2 5]  temperature &lt;= 70<br>            (25)[0 3]  * --&gt; \"Play\"<br>            (26)[2 2]  temperature &lt;= 72<br>              
  (53)[2 0]  * --&gt; \"Don't Play\"<br>               (54)[0 2]  * --&gt; \"Play\"<br>      (6)[2 0]  * --&gt; \"Don't Play\"<br><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)[5 9]  \"OUTLOOK\" in {overcast}\\n   (1)[0 4]  * --> \"Play\"\\n   (2)[5 5]  temperature <= 75\\n      (5)[3 5]  temperature <= 65\\n         (11)[1 0]  * --> \"Don\\'t Play\"\\n         (12)[2 5]  temperature <= 70\\n            (25)[0 3]  * --> \"Play\"\\n            (26)[2 2]  temperature <= 72\\n               (53)[2 0]  * --> \"Don\\'t
  Play\"\\n               (54)[0 2]  * --> \"Play\"\\n      (6)[2 0]  * --> \"Don\\'t Play\"\\n\\n-------------------------------------',)]"
+      ]
+     },
+     "execution_count": 29,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "%%sql\n",
+    "SELECT madlib.tree_display('train_output', FALSE);"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Here are some more details on how to interpret the tree display above:\n",
+    "\n",
+    "* Node numbering starts at 0 for the root node and would be contiguous 1,2...n if the tree was completely full (no pruning). Since the tree has been pruned, the node numbering is not contiguous.\n",
+    "\n",
+    "* The order of values [x y] indicates the number of weighted rows that correspond to [\"Don't play\" \"Play\"] before the node test. For example, at (root) node 0, there are 5 rows for \"Don't play\" and 9 rows for \"Play\" in the raw data.\n",
+    "\n",
+    "* If we apply the test of \"OUTLOOK\" being overcast, then the True (yes) result is leaf node 1 which is \"Play\". There are 0 \"Don't play\" rows and 4 \"Play\" rows that correspond to this case (overcast). In other words, if it is overcast, you always play golf. If it is not overcast, you may or may not play golf, depending on the rest of the tree.\n",
+    "\n",
+    "* The remaining 5 \"Don't play\" rows and 5 \"Play rows\" are then tested at node 2 on temperature<=75. The False (no) result is leaf node 6 which is \"Don't Play\". The True (yes) result proceeds to leaf node 5 to test on temperature<=65. And so on down the tree."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# 5. View tree in dot format"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "1 rows affected.\n"
+     ]
+    },
+    {
+     "data": {
+      "text/html": [
+       "<table>\n",
+       "    <tr>\n",
+       "        <th>tree_display</th>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "        <td>digraph \"Classification tree for dt_golf\" {<br>\t subgraph \"cluster0\"{<br>\t label=\"\"<br>\"g0_0\" [label=\"\\\"OUTLOOK\\\" &lt;= overcast\", shape=ellipse];<br>\"g0_0\" -&gt; \"g0_1\"[label=\"yes\"];<br>\"g0_1\" [label=\"\\\"Play\\\"\",shape=box];<br>\"g0_0\" -&gt; \"g0_2\"[label=\"no\"];<br>\"g0_2\" [label=\"temperature &lt;= 75\", shape=ellipse];<br>\"g0_2\" -&gt; \"g0_5\"[label=\"yes\"];<br>\"g0_2\" -&gt; \"g0_6\"[label=\"no\"];<br>\"g0_6\" [label=\"\\\"Don't Play\\\"\",shape=box];<br>\"g0_5\" [label=\"temperature &lt;= 65\", shape=ellipse];<br>\"g0_5\" -&gt; \"g0_11\"[label=\"yes\"];<br>\"g0_11\" [label=\"\\\"Don't Play\\\"\",shape=box];<br>\"g0_5\" -&gt; \"g0_12\"[label=\"no\"];<br>\"g0_12\" [label=\"temperature &lt;= 70\", shape=ellipse];<br>\"g0_12\" -&gt; \"g0_25\"[label=\"yes\"];<br>\"g0_25\" [label=\"\\\"Play\\\"\",shape=box];<br>\"g0_12\" -&gt; \"g0_26\"[label=\"no\"];<br>\"g0_26\" [label=\"temperature &lt;= 72\", shape=ellipse];<br>\"g0_26\" -&g
 t; \"g0_53\"[label=\"yes\"];<br>\"g0_53\" [label=\"\\\"Don't Play\\\"\",shape=box];<br>\"g0_26\" -&gt; \"g0_54\"[label=\"no\"];<br>\"g0_54\" [label=\"\\\"Play\\\"\",shape=box];<br><br>\t } //--- end of subgraph------------<br>} //---end of digraph--------- </td>\n",
+       "    </tr>\n",
+       "</table>"
+      ],
+      "text/plain": [
+       "[(u'digraph \"Classification tree for dt_golf\" {\\n\\t subgraph \"cluster0\"{\\n\\t label=\"\"\\n\"g0_0\" [label=\"\\\\\"OUTLOOK\\\\\" <= overcast\", shape=ellipse];\\n\"g0_0\" -> \"g0_1\"[label=\"yes\"];\\n\"g0_1\" [label=\"\\\\\"Play\\\\\"\",shape=box];\\n\"g0_0\" -> \"g0_2\"[label=\"no\"];\\n\"g0_2\" [label=\"temperature <= 75\", shape=ellipse];\\n\"g0_2\" -> \"g0_5\"[label=\"yes\"];\\n\"g0_2\" -> \"g0_6\"[label=\"no\"];\\n\"g0_6\" [label=\"\\\\\"Don\\'t Play\\\\\"\",shape=box];\\n\"g0_5\" [label=\"temperature <= 65\", shape=ellipse];\\n\"g0_5\" -> \"g0_11\"[label=\"yes\"];\\n\"g0_11\" [label=\"\\\\\"Don\\'t Play\\\\\"\",shape=box];\\n\"g0_5\" -> \"g0_12\"[label=\"no\"];\\n\"g0_12\" [label=\"temperature <= 70\", shape=ellipse];\\n\"g0_12\" -> \"g0_25\"[label=\"yes\"];\\n\"g0_25\" [label=\"\\\\\"Play\\\\\"\",shape=box];\\n\"g0_12\" -> \"g0_26\"[label=\"no\"];\\n\"g0_26\" [label=\"temperature <= 72\", shape=ellipse];\\n\"g0_26\" -> \"g0_53\"[label=\"yes\"];\\n\"g0_53\" [la
 bel=\"\\\\\"Don\\'t Play\\\\\"\",shape=box];\\n\"g0_26\" -> \"g0_54\"[label=\"no\"];\\n\"g0_54\" [label=\"\\\\\"Play\\\\\"\",shape=box];\\n\\n\\t } //--- end of subgraph------------\\n} //---end of digraph--------- ',)]"
+      ]
+     },
+     "execution_count": 11,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "%%sql\n",
+    "SELECT madlib.tree_display('train_output', TRUE);"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# 6. View tree in dot format with additional information"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "1 rows affected.\n"
+     ]
+    },
+    {
+     "data": {
+      "text/html": [
+       "<table>\n",
+       "    <tr>\n",
+       "        <th>tree_display</th>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "        <td>digraph \"Classification tree for dt_golf\" {<br>\t subgraph \"cluster0\"{<br>\t label=\"\"<br>\"g0_0\" [label=\"\\\"OUTLOOK\\\" &lt;= overcast\\n impurity = 0.459184\\n samples = 14\\n value = [5 9]\\n class = \\\"Play\\\"\", shape=ellipse];<br>\"g0_0\" -&gt; \"g0_1\"[label=\"yes\"];<br>\"g0_1\" [label=\"\\\"Play\\\"\\n impurity = 0\\n samples = 4\\n value = [0 4]\",shape=box];<br>\"g0_0\" -&gt; \"g0_2\"[label=\"no\"];<br>\"g0_2\" [label=\"temperature &lt;= 75\\n impurity = 0.5\\n samples = 10\\n value = [5 5]\\n class = \\\"Don't Play\\\"\", shape=ellipse];<br>\"g0_2\" -&gt; \"g0_5\"[label=\"yes\"];<br>\"g0_2\" -&gt; \"g0_6\"[label=\"no\"];<br>\"g0_6\" [label=\"\\\"Don't Play\\\"\\n impurity = 0\\n samples = 2\\n value = [2 0]\",shape=box];<br>\"g0_5\" [label=\"temperature &lt;= 65\\n impurity = 0.46875\\n samples = 8\\n value = [3 5]\\n class = \\\"Play\\\"\", shape=ellipse];<br>\"g0_5\" -&gt; \"g0_11\"[label=\"yes\"];<br>\"g0_11\" [label=\"\\\"Don't Play\\\"\
 \n impurity = 0\\n samples = 1\\n value = [1 0]\",shape=box];<br>\"g0_5\" -&gt; \"g0_12\"[label=\"no\"];<br>\"g0_12\" [label=\"temperature &lt;= 70\\n impurity = 0.408163\\n samples = 7\\n value = [2 5]\\n class = \\\"Play\\\"\", shape=ellipse];<br>\"g0_12\" -&gt; \"g0_25\"[label=\"yes\"];<br>\"g0_25\" [label=\"\\\"Play\\\"\\n impurity = 0\\n samples = 3\\n value = [0 3]\",shape=box];<br>\"g0_12\" -&gt; \"g0_26\"[label=\"no\"];<br>\"g0_26\" [label=\"temperature &lt;= 72\\n impurity = 0.5\\n samples = 4\\n value = [2 2]\\n class = \\\"Don't Play\\\"\", shape=ellipse];<br>\"g0_26\" -&gt; \"g0_53\"[label=\"yes\"];<br>\"g0_53\" [label=\"\\\"Don't Play\\\"\\n impurity = 0\\n samples = 2\\n value = [2 0]\",shape=box];<br>\"g0_26\" -&gt; \"g0_54\"[label=\"no\"];<br>\"g0_54\" [label=\"\\\"Play\\\"\\n impurity = 0\\n samples = 2\\n value = [0 2]\",shape=box];<br><br>\t } //--- end of subgraph------------<br>} //---end of digraph--------- </td>\n",
+       "    </tr>\n",
+       "</table>"
+      ],
+      "text/plain": [
+       "[(u'digraph \"Classification tree for dt_golf\" {\\n\\t subgraph \"cluster0\"{\\n\\t label=\"\"\\n\"g0_0\" [label=\"\\\\\"OUTLOOK\\\\\" <= overcast\\\\n impurity = 0.459184\\\\n samples = 14\\\\n value = [5 9]\\\\n class = \\\\\"Play\\\\\"\", shape=ellipse];\\n\"g0_0\" -> \"g0_1\"[label=\"yes\"];\\n\"g0_1\" [label=\"\\\\\"Play\\\\\"\\\\n impurity = 0\\\\n samples = 4\\\\n value = [0 4]\",shape=box];\\n\"g0_0\" -> \"g0_2\"[label=\"no\"];\\n\"g0_2\" [label=\"temperature <= 75\\\\n impurity = 0.5\\\\n samples = 10\\\\n value = [5 5]\\\\n class = \\\\\"Don\\'t Play\\\\\"\", shape=ellipse];\\n\"g0_2\" -> \"g0_5\"[label=\"yes\"];\\n\"g0_2\" -> \"g0_6\"[label=\"no\"];\\n\"g0_6\" [label=\"\\\\\"Don\\'t Play\\\\\"\\\\n impurity = 0\\\\n samples = 2\\\\n value = [2 0]\",shape=box];\\n\"g0_5\" [label=\"temperature <= 65\\\\n impurity = 0.46875\\\\n samples = 8\\\\n value = [3 5]\\\\n class = \\\\\"Play\\\\\"\", shape=ellipse];\\n\"g0_5\" -> \"g0_11\"[label=\"yes\"];\\n\"g0_11\" [label=
 \"\\\\\"Don\\'t Play\\\\\"\\\\n impurity = 0\\\\n samples = 1\\\\n value = [1 0]\",shape=box];\\n\"g0_5\" -> \"g0_12\"[label=\"no\"];\\n\"g0_12\" [label=\"temperature <= 70\\\\n impurity = 0.408163\\\\n samples = 7\\\\n value = [2 5]\\\\n class = \\\\\"Play\\\\\"\", shape=ellipse];\\n\"g0_12\" -> \"g0_25\"[label=\"yes\"];\\n\"g0_25\" [label=\"\\\\\"Play\\\\\"\\\\n impurity = 0\\\\n samples = 3\\\\n value = [0 3]\",shape=box];\\n\"g0_12\" -> \"g0_26\"[label=\"no\"];\\n\"g0_26\" [label=\"temperature <= 72\\\\n impurity = 0.5\\\\n samples = 4\\\\n value = [2 2]\\\\n class = \\\\\"Don\\'t Play\\\\\"\", shape=ellipse];\\n\"g0_26\" -> \"g0_53\"[label=\"yes\"];\\n\"g0_53\" [label=\"\\\\\"Don\\'t Play\\\\\"\\\\n impurity = 0\\\\n samples = 2\\\\n value = [2 0]\",shape=box];\\n\"g0_26\" -> \"g0_54\"[label=\"no\"];\\n\"g0_54\" [label=\"\\\\\"Play\\\\\"\\\\n impurity = 0\\\\n samples = 2\\\\n value = [0 2]\",shape=box];\\n\\n\\t } //--- end of subgraph------------\\n} //---end of digraph------
 --- ',)]"
+      ]
+     },
+     "execution_count": 12,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "%%sql\n",
+    "SELECT madlib.tree_display('train_output', 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": 13,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "1 rows affected.\n",
+      "True\n"
+     ]
+    },
+    {
+     "data": {
+      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAccAAAW1CAYAAAB4WRtrAAAAAXNSR0IArs4c6QAAQABJREFUeAHs\nnQXcFFX3x69dIAYCNqgY2IqvrSAGdiFYmK/xWqj4iolgdwACdmBii/oqYLcYIBYmNiLyKlgY7/zP\n9/i/6+w+28/GzM45n8/s7szcuXPv787OuefcE7MFQfCYMzIEDAFDwBAwBAwBj8Azc8qvrf2efRsC\nhoAhYAgYAoaA+2F2A8EQMAQMAUPAEDAE0hEw5piOh+0ZAoaAIWAIGALOmKM9BIaAIWAIGAKGQAYC\nxhwzALFdQ8AQMAQMAUPAmKM9A4aAIWAIGAKGQAYCxhwzALFdQ8AQMAQMAUPAmKM9A4aAIWAIGAKG\nQAYCxhwzALFdQ8AQMAQMAUPAmKM9A4aAIWAIGAKGQAYCxhwzALFdQ8AQMAQMAUPAmKM9A4aAIWAI\nGAKGQAYCxhwzALFdQ8AQMAQMAUPAmKM9A4aAIWAIGAKGQAYCZOUom5544gn38ccfl329XWgIGAKG\ngCFgCFQDgW7durkOHTqUXXWzmOPw4cPdfffd5+aff/6yG2AXGgKGgCFgCBgClURgxowZbuTIkfVj\njnRm11131UZUsmNWlyFgCBgChoAhUC4Cs802W7mXpq6zNccUFPbDEDAEDAFDwBD4CwFjjvYkGAKG\ngCFgCBgCGQgYc8wAxHYNAUPAEDAEDAFjjvYMGAKGgCFgCBgCGQgYc8wAxHYNAUPAEDAEDAFjjvYM\nGAKGgCFgCBgCGQgYc8wAxHYNAUPAEDAEDAFjjvYMGAKGgCFgCBgCGQg0K0JORl22awg0LAK//PKL\nmz59uvv+++/dDz/80OSbYz/++KOjnN9+/vnn1G+O/f777+7PP//Muc0+++xujjnmyLrNOeecbt55\n53XzzTefbkSl8r/5Zr9Vq1a6LbTQQk2+F154YT3Ws
 ANkHTMEKoyAMccKA2rVxQcBGNXXX3/tvvji\nC92+/PJL980337hvv/3WTZ06NbWxP3PmzCYdg2EtuOCCzjOjFi1apDEuGJJnXHxT3jO/8G+OwRiD\nIEhjnH/88Ufa/q+//uoyGS7thfFyPMy0KZtJc889t1tsscVcmzZtdAv/Xnzxxd1SSy2V2iwkZCZ6\ntp80BIw5Jm3EE9Tf3377zX366afuo48+0o0g+ex7ZjhlyhRlPkACc4JptG3bNsU4lltuuTRG0rp1\n6xQjREqDGUaV6HtYykXqDTN9//v999/XSQCThFmzZqW6s8gii6QY5dJLL+3AYvnll099MykwMgQa\nGQFjjo08ugnoG9LWZ5995t555x337rvvuvfeey/FDD///HP3v//9T1FAiuPl3r59e7fhhhumXvxI\nS7z8kZzmmmuuhkEMKdFLiMV0ChynTZuWmjj4CQTfYPrII484JGuP56KLLqp4gumKK67oOnXq5FZZ\nZRX9Pc888xRzSytjCEQaAWOOkR4ea1wYAV7U48ePd2+++aYyQhgiL25UihBSHy/ojh07uq222ipN\n0kH1aZQbAQI1o2ZlW3vttbMWRLKcPHlySgr3Evltt92mqetQU6MiRspkHNhWW201t9Zaa7mVV15Z\n1cpZK7aDhkAEETDmGMFBSXqTeMnC9GCE4Q3JBlp22WVVUunSpYs74ogjUi9ipEOj6iGARLjSSivp\nlnkXGCcqWqR3v/3nP/9xl156qRoiYUzkGSXMkm3NNdeMtGo6s4+2nywEjDkma7wj2VvWu1566SX3\n8ssv6/bqq6+q5SeqQdR1vES33357faHyUjUpMHrDCONcffXVdQu3jrVPJPzwJOfuu+/W9VCkzFVX\nXdWtv/76qY3xZv3XyBCoNwLGHOs9Agm7P2tWqEWfeeYZ9+yzzyozZG0QtR5qOF6Ue+65p/vHP/6h\nkkYjrQMmbKi1u0xwvKQY7j/q
 2XHjxqUmRLfccota3bZs2dKtt956bqONNnKbbbaZfi+wwALhS+23\nIVATBIw51gTm5N4Ed4Q33njDPf3007o999xzKjUg/W2yySbu8MMPV4bIC9EsIJPznGAYxbbHHnto\np3lOJk6cqMwSLQLrmGeffbauU3bu3FkZ5eabb+423nhj89dMzmNS154ac6wr/I158w8//NCNHj1a\ntyeeeEJ9BDH0QBIYOHCgfq+xxhqmPmvM4S+rV/h9YgjExoQJwjoWDQMTq1GjRrkLL7xQDX5glltv\nvbXbZpttdGLFtUaGQKURmE1MuINyK+3Zs6deOnLkyHKrsOsaAAEc5MeOHavM8LHHHnOffPKJGlp0\n7dpVX2LdunVTlWkDdNW6UEcE8M186qmnUhMvXHjQNmyxxRb6nHXv3t116NChji20W0cFAZZp4Ete\nM1FGu+6yKVcZqNklTv3hHnzwQcf25JNPOtRi6667rtt77731RYUvoa0X2pNSSQTQPvCy8y+8SZMm\nKaMcM2aMO/HEE9VyGaOgnXbaSTdU9bwkjQyBchAw5lgOagm9BkOa++67Txni66+/rtIh6q2rr75a\nrUmJIGNkCNQKAe9WcvTRRzusYlG/MlnDuOecc87RwA477rij23nnnd2WW27pMA4yMgSKRcCYY7FI\nJbQcZvh33nmnbszUl1xySccLB2MJ1FkWDSWhD0bEug3jI/AD2+DBg92ECROUUcIsmbxhALbrrru6\nXr16OdT8tk4ZsQGMYHOMOUZwUOrdJAxq7rjjDmWIb731lltiiSVcjx493HXXXaem9aaqqvcI2f0L\nIYBvLNvpp5+u8XTvuusufZ5vuOEGh4Zjt912U0ZJIAnzqyyEZjLPm7dtMse9Sa9nzJjhrr32WnWv\nIPzakCFDHKbzqKrwQ7ziiivUjN4YYxPo7EDEESCi0gknnKB+lYS887+RIHEnOe2009wHH3wQ8V5Y\n82qNgDH
 HWiMeofvhkI+V6b777uvatWvnWLtBbeqDTMMgcb+wmXWEBs2a0iwEiPvar18/x5o5SwZ7\n7bWXQ5okeDp+t0wQmSgaGQLGHBP4DGASf8EFF2hgbtZomE0TA5MwbqwvbrvttupPlkBorMsJQoCI\nTPwPcAkhDizZWZggkqHlkEMO0eAVCYLDupqBgDHHDEAaefeFF15QKZGXwPnnn6/m7syeX3zxRXW8\ntpiljTz61rdcCBDjFR/J22+/XSeI/Deef/55t84662h6sxEjRqTlusxVjx1vLASMOTbWeDbpDSbu\nN954o8a3JPQW2S6uvPJKjT7COiKzZyNDwBD4CwEmiEiPTBrx311mmWXcwQcfrPk/TznlFGWehlUy\nEDDm2KDj/MMPP6jKiIghqIhIF0TWCzJe8Geff/75G7Tn1i1DoDIIYMnKMgNqVxgm1toY8PD/gXka\nNTYCxhwbbHyxLO3bt6+un5x77rkasYZwbjhGk+nCyBAwBEpDAGO1/v37q0sIRmosTzDZ3GGHHdSa\nu7TarHRcEDDmGJeRKtBOmCKJf1dYYQWNKXjGGWeoC8ZFF12kKqECl9tpQ8AQKIAACZvRwiA1ElyA\nmMJIl7g8oYI1aiwEjDnGfDy/+OKLFFN8+OGH1R8R61OkR0sBFfPBteZHEgF8fb3USNYQYggTLQpG\nSWB0o8ZAwJhjTMcRdwzWQZZffnn1SyRkFpFtSPdjMSRjOqjW7NghsOmmm6qvMIm7YZJkooFJsr5v\nFG8EjDnGbPx++eUXx1oiTPGee+5xgwYN0ugehx56qGXBiNlYWnMbBwECCJAdhGTeBNfYYIMNNDzd\nxx9/3DidTFhPjDnGZMD5w+GSQSSP8847z/373/9WpnjYYYcZU4zJGFozGx8B3KVQtd5///2OLDa4\nSh133HFu+vTpjd/5BuuhMccYDCgqGnLTYQxARgzWFAmovMACC8Sg9dZEQyB5CJAma+LE
 iarZIYg/\nhnLDhg1TqTJ5aMSzx8YcIzxuzDaRDEkc3KpVK03DM3ToUNemTZsIt9qaZggYAiBAWiz+vwQ1xzfy\nmGOOceuvv776GhtC0UfAmGMExygIAnf99dc7krmOGjXK3Xrrre6JJ55wnTp1imBrrUmGgCGQD4EW\nLVo4XKrGjx+v2h4YJG5X33//fb7L7FydEbB8jnUegMzbf/rppzrLxCScmebAgQNdy5YtM4tVdP/u\nu+92Cy+8sCaBJYN67969NWxW5k3IZDBu3Dj37rvvanDmNdZYo0nCY6xoyfSRSXvssUcqwSxxK4k6\n4omUQpjHT5482R/K+U1yZSTpTJN5rt9zzz1zXhc+UUw/wuX5zYsMXzZUZWRtwAl8o4020jXgcNnM\nvnGOEGSsRb322mvu/fffDxdXHznyZVI/wd9Rl5Oo94033lA1elph24k1Aquuuqo+t0x2SZv1wAMP\naCLm7bffPtb9atjGi5RSNskLL2AzqgwCkrE8EEYYiIQYyDpjZSotohYxRw/22Wef4KeffgrkQQ9u\nvvnmtKumTp0aSGqfQPI8BpI0NhAmFkiex0CYUbDyyisHYqGXKi+GQ4EwgUDC1mldkuEjEBeT1Hl+\nTJs2LTjrrLP0/Nlnn637PEfCJAJ5aQTCJAJRR+l5MYsPJAZsIEENAll3DST2ZfDnn38GEiw9WHTR\nRbUM7RBmm3aPbDul9CN8PX2WTA2BGFbouNAfCSUWtG3bNhB/UsXNl5ewfYFYEGu7wJIxFWaqp3//\n/fdAJjt6TiYggcS59ZcFjz/+uB4XFVwgxlaBpFZKnbMfjYfAd999p/85npEDDzwwkMlR43Wyjj0C\n15EjRzanBSNdc6425tgc9P6+VqLbBNtss00g2QECyTUX/Prrr3+frMEvmMvxxx+vd5LAAcHo0aNT\ndxXXEWWAMusNZA00ddz/gJlJvsc0Bsk5WWPRl/0111zji6Z9w0S
 ZCPAN7bTTToFEHkmVeeihh/T6\nY489NnUMXJg4eBJHbC0jqmd/KOd3uf2QXH96D5hcJomUHyyyyCI6duFzP//8s2IiEVUCGKKnH3/8\nMVhrrbUCyfrgD6W+RRrX+8BImRyIVJo6Zz+qj8BNN91U/ZtkuYNYtQYSni5YaqmlgsceeyxLCTtU\nDgKVYI625igo1pOECWjGDNSpxGwkXQ6qw1oSwZRR/UH8JqWVJ7Kkk8ljwIABqnr1x/03MSfJZCCz\nX4cPpicfncd/++P+GzUo9+Qbwk+sUIYQcOE+nry6uRir3XL6QfQhYc6qQv3nP//pb5v6pv0yqXDy\nUtMkuf7EfPPNpypkgrtjlAEJY3dYMGKYQbLdTAJ3VNv0id/hMcgsW8y+SPeaiqyYskkvg7qcjBv1\nIJ6Jt99+2xFMgLRZJ554ovvjjz/q0RS7ZwYCxhwzAKnVrkgU6qsoEpO6Z5Ato16Bwcnc4Zlj+Leo\nWd1ll12mlrK77bZbVmh4mXMOizwyGJRC5NHzhN9mMcRaTalUbj8IMk12ExiyZ+KZ9z7ggAP0kKiH\nM0+l9llP3G677ZxoWtxRRx2VOh7+QdxOP/4wRz8e4TLF/CZK0kEHHeREBV6xKC3EEGVsmSCRmYI4\nvp5EGtZnhKTBGJ289dZbeop1WaI2cZxnw9NXX32lxmZnnnmmE1WyP6zf//3vfx3W2BDJh7k2zCj4\nj7AuSxAMjFvCxMSMa1gzZ4L55Zdfhk+jIdP1vssvv1zbhcM+BGOEQdHHq666Sg3g0i6swY5oH9xt\nt92muJBObrPNNktbk69BE+wWWRAw5pgFlGofQkrkDzB8+HAn6hwnqru6+ixiWINlLIRxgE9nxYyW\n4AO8qEV1mhMWDGognJ6jSOX2w/cHZpWLyBpP2DDGFEaaSTASpAJZ01Wz/szz4f2ePXvqrqw3ql9r\n+Fyh30j3GFLJGrAaTGHljNQLMyJqS74NI6
 JchHEQxkT08cgjj1TDIaymZV1aL8ESE6n/1FNPVWaH\noRKExoAwhvQfRg3BiGCwa6+9tmoJdtllF62Tc/wPRLXo+vTp45iUnHzyye6kk05KpYbCUInYwf/6\n17/0GcXvF+d6CAbNPZDYuQaGSpvDmgw0B0wcwASDLvYhpHWef7QS/AeaK7FrpWV+MNFiAkB/RP2u\nwc3LrMouqwQC5ehz/TW25uiRKP5bYjAGiy22WLD66qsHkyZNKv7COpQUdxJdB8OoJh/5dbmtt946\nVQzjFXk+A5E4Uscyf8hLKfNQaj/bmmPq5P//wEiIe4ibS+aptP1y+yGTAq2/kHGUTA60nKjFU/cV\nxhCw5rjkkkvqOZGqUucq+UOsZ9UwinVfeekHjz76aFr1rF+CUb5NGF/aNX5n1qxZut4sqnN/SL/3\n3nvvgP7JpCN1fP/99w9kUpVmWCKqaDXeopBIZmpkxLqrJ78ujXEVhFEY7bz33nt1n3VYSMIkKo66\n8/8foq0IOnfurHuSjk3XeKdMmaL7IlVqPa+88orus67dunXrQJiz7vOBIZgnYdKBMEW/W/dv1scl\n4Ecg2go1XKt7g2LYAJ6j5hrk5BYHpHajyiKAhNitWzed1bK+SCi4KJNf0wvPwLO115/Ptb6Y7Zpa\nHiu3H+Ve5/sm7xRVE4pVq6rQ8V2tFKFW7NGjh0o9uMWgUuSZEsOutFsQnF4MhPJu2SReKhFGq+vN\nxAkNE/f47bffVMXqjyNVch/yhkKoKdm8VuH2229XSY41NcqyCTPTGMFIdBAuLRBqTggpGEJVmunu\ngPuRMFU9L5MkVeeCM2u7Ykmtx706F5U4UmGvXr3UfYKTmer5XGpzrajGH6jYxQBMJWhcuegf/TKq\nLQJz1vZ2ybwbqkleCqyXoH5ivSVKf8Zco4JfFoRhSj7ya1Copzz5zCDiduEPNfmuFQbl9oPrUMnm\n679IVw7fTvrrVdO+o
 xgKsaaMqo5MDQSHx3gp1/qtv66Yb9SHGAKh8mWtD5/LbIRBkDcKynY+3zGf\n7R7VaZhQE0P4u3pCzcnGuh2Mj5BpqJI9gSMqaNbUcpFX3ftvyvH8cC0TgTDx7Ph+UR7GiHEYjIV2\nQPzvPKGqZc0XVS4TVHwNucZTrZ5Ff79ivgkUwASBdrMMg18kGBrVBgGTHKuMM4Y3OKfzUmD2LP59\nsWCMwMI6jqgF1TgAY4lc5I0wwi/oNddcU4sTBzYbsS5UC6tcpKpy+wFDg1h3y0W8uJEQMabxL+vM\nsqyxEYia86KSbGKIklm+mH2kOgJcE7OT9TVRaackqfD1BG0gUH2+7cILLwxfkvqNoQjkJTR/AmmQ\nNUjW68IEUyRIAuWRZDFC8oTxlSwjOP4PpRDYwuRYQ81Fn3zyia5jMgZYnXppNVyeNTyCP8BwnpIA\nG+uss05aMPAoMkfaT55IUQ/rOiRrpV7KDvfNflcHAWOO1cFVa0XNhOTAi4yXBWqdOBEvc2bcqNBI\njZWNkB4wlGACwIzcEyGyIG/U4o/7b16gvow/Fv7mpdhcIuSerDsoUyqnH0h66667rqq4cqkekdqQ\nGjMlosz2k+cPaQXmgPTCC6+5hASH1SXqVMaKyQkqzzAzIyIPKsh8G6nPspEfH5hwmJgM0Q9e1mHi\n+ZbADGoogxYhbI3MZAmrYYzQwoQlr7dQDR/3v+kXLj4vvfSSy0z/BJ6o9AeIkQ/tIQExFJYY2Ue6\nHzFihLrJME48r19//bWTtU1O62Q1n4ZDC9Xxg/R05ItE0sX4Kdd/qo5NbMxby5+4bDKDnNzQEfFC\nZvRqfCMWaLkLxuCMhLFTh/1MYw95wQTyAlWjjWwBAkRyCDD2EHVQWi9FDRuImiggGkwukpeZGlUQ\nPSQX4Sgv/8omRiiUl5epGnHIiyR1eTn94HoctDHaCBuTUOm1116r/ROXhdQ9+OEjDWEkIxJ32jmM\n
 W2izSF2BSDJp55q7I1KiBlMQKUgDEwgTa26VAYY2svYaEPDAkzAYjZaEwU4myfKBBrNgjMNEAAeM\nXjDkEUlVAz5grMU7xEcQEjcXxYYISmHCIAfMMJDCWf+RRx7RdvGMQLvvvrueF6YXiIo7kHVW3RdX\nEMUfAxeeFWGaWp5vjOLuu+8+3RdpUsdRtBwazSlznLVQBD4wapIJqEaJEgvjCLQouk3geWmuQY5F\nyKnC+IqUEYjEoS+DcIiwKtyqZlViPUp0Gl5E4mem4d1kjS0Qk/iAl082EolTI+UQ5k3UWPpC48/N\nxosoG3ENzIZ78YBLNhK1LAyXlzVADeXGi5YyRBgR9VMgalC1YGSf41iKZlI5/YDBiZl9IOrRgIg9\nsmYcYJnLxMBbRPr7EAZOJCi9P20Q4xINDcd5GK24IqTOiQGT9iOTGfi6yv2WuKypcSq3Dn8dYyvq\n0oAISZJPVCcEYhyTM1yfqDh1IuGvD38TAUmM0FL9F7eP1ASBiYa37BWXlibhE4m0ROhAMAU3kUBT\nVWMlLKrUQNT0wa677qpt4//HBARLavpA+D8iQREKEMvhsAUuVqwioWr9hP6LMjHJwFJX1rObRKWK\ncrtr3Taek+Yyx9lotFRUFnm/LFRXRn8hgCoV1RYqINRRqEQaibBARJUqDKhoR3UeMfDAMRwjF9SQ\n9abm9ANVIKo+7w9a777kuj/q8EphjVqZ9VV8XvFHzEf8B/Jhg08oa3zUVQqhLsU4ivuHjXaog3PC\nBFP+wjxzqFp9/1njpgwWstnuS/+o01sol9KuWpelLxjp4DfKxpq2UToCPF/wJXAqk+4y5lgmctku\n42XEGiPZF2CMhcKhZavDjhkChoAhUAgBe9fkR6gSzNEMcvJjXPRZZqqYrovDuJPA3cYYi0bOChoC\nhkCpCCARy5qp5njdaqut8roblVq3lf8LAWOOFXoSJKWS+iHhi2RqjgqBatUYA
 oZATgQIl4eLi6zL\na+AE1NlGlUPAmGMFsES3TeBpTNJx1jUyBAwBQ6AWCBCVCgbJOm44Y00t7t3o9zDm2MwRxrGYgMEE\nNM6W1qiZ1dvlhoAhYAjkRYBA9fiqomYlyIhRZRCw8HHNwJHo+Tg+E6EEZ3Cj7AgQNo+wXkQniQtF\nvc04thNDlBirOIYT/zTTgrMQ1pKNXgMckAEjk3CUx7rYEyECSbcVtkLF6IyMHhwjyEE4fKC/zn9j\nJUrmEB91yB/nm/8R2hdyUNIP1tCIwJOPKN9eQuf5NF/5yibh3Oabb+6uuOIKHSO0V+wbNRMBMSQp\nm5IeBICsAkT7l7RAZWOYhAvxkcMnME4U5TZ/8803geTdDPD9w+ldcmEG+B5KlJeSICawgURdaXIN\n2TAIJCCvltSGj2CY8H2UvJEa8IDyYpmt/qnhMvyeOnVq0Ldv30DWxwKCMGQSfsASAi/AgR8nd8lr\nqM7+wvgzi6b2CXZAcIlhw4aljtmPvxBgTAmWkBl8Imn48OzKBKo53R5pQQDKhI+0OgyAxMwss4bk\nXEbEETEWiFWHs7WZF72EAaxrP2CAIilqJBzfEPF7Uyf4fv36+UMFvyXrg0a5ycYcSZck/nMaFYfI\nOBKfNi3QAxFrcLgPR0Uiag3/h8zILQRJkNi0ei4bcyQdGpPMMO0vUXkkNF74UOo348JEgHsZc0zB\nkvpBQAnJbqIBD1IHE/ijEszR1hwFxVIJdZS8QDR5rU+vU2odSSpPdgos6+JEmW0m9iZBw1H91ZNQ\nZZK4mOfPEzFMhaFoHFzilxYi4q1KFJ1ULNJwedSfxO4koDnO8mxkFUEt7on4qKg0w4HHvXqTAOdh\nIkOGTz0VPu5/E+OU4AJhIiA9auNshAqYzDZG2REgti2JoyU0n8bTzV7KjhaDgDHHYlDKKMOfkzWR\nXNkMMoonflckLpeZy5BoJqQ1wvwchoOlL5krfABoUR06
 URtqzsDw2hfRQUjVBIOgDHnvSN+EfynE\ny5bg0pdffnnqpStSkO5zjCwdnsg04oNeExheYnFqFnnOh9vMi5q15bFjx2oAaNIy8UKXcGq68TKC\n2UAwJwJicw4LwkoTRheQJMtOq1pCsem9RYJLO565Q9QYCfmnfc08x76E7lMsYYgYetAPETzSirJ2\nmHmMl7KoenVc0goX2CF9F0HFfR5I1h/pIwZumcRxcqASZckoNwJbbrmlTpYk4bg+E7lL2pm8CDRH\n4k7imiNBxAkoTfZxo/wIoO67QWJbErg6rL6TlEGq0pMHM7jkkksCyX6h62Zi2KExQVlLIys861ys\nfe244456I4JZE1eS6yQSkarXCBpN3ExiY0rmCS3HWgNliNfpSZLG6jFhrHpIXvqauZ7riOUqWSP0\nPMHAM9tMEHnaRJ2s76FyZE2HINgc6927t7+Nft98880ai5UA19mIWKCSZSHvhiozG6GG5J6ZQb/B\nlOPhDPfZricWrld9ysszbVwoT3B5+ojqlnU96pSXbcBYeiKmLuMCLmGiHOV9IHF/jrZyPJtaVSTV\ngPo4T3uIWcuSRSZ9+eWXwb777quHiV1MeVOrZqL09z7r0sSilRRefx9M0C+eD1tzrOGA87ITazrN\nKFHD28b+VjC0MHOkQ2INqi84AkF7EglQj7Gm5UmkdF3f8sYmks9OyzAx88QLliwLZM8QySggGwV/\njjBzfPDBB/WYZ45cCwOmnH8ZY1jiKbPNYhWqZa+77jpfRL8JqE7Qa+7rieDirLPlIgJnc9982znn\nnJP1cu4natQm51jboz4MZXIRDFTSO6VOZ2OOqZPygz6LSlTrFXVp6pQPng6mYRIVaiA5IMOH9Hc+\n5kgB1nIlBrHeR9JgBYxnmPjf7bXXXqnjxhzD6OT+zaSPteF82W9yXx3vM/wXmsscTa0qKBZLktFB\nVUCo54yKR4A1pEwiqgcUVg+KBKH
 HfKJkdlivQq0pFsF6jrVAiOS1noTx6hocQaklK4Q/XPBbDBe0\njF83Dq+NZWszhYnZGCZJ0aTqU/IlQqgtSUhbyK0BdXK+jXqzUYsWLbIdTqmjCQifjQiWTk7LUtbr\nGAfiBBPom0TdnogGRUB98l2iLicvok90HB47X77Qt0w41PVArF81FyV5JMPq78suu8wJc9R8hoXq\nsvN/IyCTGFV1SxaZvw/ar6IRMOZYNFTOyWzeiYrPwsOVgFkpRbMxJO/vVsjQhLUoSFwbir6l9wv0\n38VcmMkce/TooWtzoh7Wy1nzI/h8PsI4qdBGkt9sxFog67JMGMJElhFIUn2FD6d+s/6EcYxIe8rM\nYGgiUThJgaT7JIbORvgwMnmgrCcmIzBNGK1IyI61W6KzUBf+jqWQqLDVeIR1XJgkm6hQldlSj0/W\nzKSDNrPRB4h1XvZZZzZqigCGWqJW1YlNZqLopqXtSCYC2f+BmaVsX40xMPrwhh8GSeURyGQ84Tvk\nO0c5b/yCEQnWxNWizHbwAhI/Pn2ZY0kqamJ1xs53fwIMZDK3zPI4cUuC3szDqYD2OOVjUepJTPj1\nZy7myKRhzJgxvrh+k6YJ6VXWAtXIRXJipp33O0jUfvLhjyH5ExTAE1IkEubxxx/vDxX1jTGTrKM6\nPxlAepR1fWWSSLtoA5AiaaMnUfjpT1GbOYIVwFBl3dmftu8QAlhYy3q7GmAxATEqHgFjjkVihSWj\nGAtYRI4i8ap1MSQfSXCreSZ56UNIMpUizxS9NW24XqQmWcvTTRL2Oiw38xFWuYUkYaSzbMxRfAI1\nRBiRacLMEUkOVXMmE/PtYEkgk1DdivFQwYwOWIl61XNmHexzHsti3Ae82jtbuWzHcBvJZOjcS4xt\n1BoZhg2DDBMMnfvgNnL44YeHT9nvDASYvGHNjdob9SrPlVFxCJhatQickEokw7tDh29UOgJISTAs\n3DA8eTVgWI
 LCjB8S53JfLMVEMhndxIkTU2VQw0nUlJR7AgwCPzxcRRg7XA+Q6CBUcSS9hTyDyiZp\nZrbZSyYvvviiujHwUveEihQpCpcR1sYKERImzCzfhgSVjVhT5F6EK/QSFNgQfBoJKqwihvmVEu8X\nFSYuFN4thfvjsgJOuH9kI1xqePnCGH3y88xyqF2hzDHkmER0Uebqx4RjuHawZtuxY0d2jZqJAKn0\n8FPFxcioBASaY5OUFFcOCear1pCSYLQ5cCXuWpnhB4MGDQpEklJLRHlZB5iY48rgXSeIhiLrIeoe\ngSWmPLrqoiEvZS2HdTDH5MUbyMs7kPUl3Re1o0ZWEafwQCTGIGzhCtBYqmLKLgYsaulIODKsWeXl\nH0yaNEnPi5SXqlvU5To+udrMyW7duml5WVfT6DF6wf9/YGGJS0nY5SF8vpK/sd4kGs4OO+yg+IIB\n7iOZhKVpmzZtcrYJlw2RJFKXCbMORF2a6iP3EI1Jk+hG3B+8CB+HewVRWXIRkXPER1TrpC24xDCG\nnoTx6jiKn2Yghm6BMHN10+GZyEVcwzNhrhy5EGp6nKhHYvzW9ESDHuH5aK616mxgIxWVRX6miO6/\nkYkZLIY4rBUZ1RcBYUK6voRxFFIOgQCQEr3aM9w6JBUMOcTPUr9RMYUlq3DZYn7zV8FqFtVpJhEg\nANXuueeem3mqavuoeFlrzKUqQxKn/+FINoUag8TMGh+GONn6yfXi8qKGT507d04LRF6o7nznUZUi\n5SMZl9LefHXaub8RQOOBmp4sQknIN8v7AL4kAtzfIJT26y5bcywAGComTPNRTRhFCwFe4ERlyUWo\nknzYM2/1mqtsMcf5w+ViGETq8RarxdRViTIw+1yMkfpzuX3kuzcWw4XUmRJkPGUYlK+uUs4xltRr\nVB0ExH9UrapZXkgCc6wEisYcC6CIRCCZN5yo/AqUtNO1QAAJA8KSsd7Up08flbJ4PthwszA
 yBKKK\nAAaFvM9qqd2IKhbFtMsMcgqgxMNErMJsarsCl9rpCiNADFYc0CGSu+IjJ+vAFb5L8dWh0n3ggQcc\nbhXnn39+8RdaSUOgDgiQJxMjMG8gVYcmxOqWxhzzDBcvXqzxYI5G9UeAiDYExubPzZ981113LZgU\nt5qtxhqWAOoSj9RJSLhq3srqNgSajQBuMUzyJYxgs+tKQgXGHPOMMoYHqPHITm5UfwTmnntuJxao\naVu9JfpsUX3qj5S1wBBoigD/HdycmFgaFUbAmGMejPCPI3JHIQOFPFXYKUMghQCWo/jLEsqtUGqp\n1EV1/oHaOJt/Ymaz8BXNzOWYWcb2648AAReY9BsVRsCYYx6MeIgIR4bEYmQINBcBAhdgXk7geh9I\nvbl1Vut6wrLhqoGTPqrjQkSwgSuuuKJQMTtfZwSwCGbSb1QYAWOOeTASZ3EzL8+Dj50qDQEsngnj\nFXXCz5FsKblC0WW2n9BxRNIxij4CxMnFNS0ckSj6ra5PC4055sGdaP8+rVGeYnbKECgaAR9gu95r\npfkavMwyyzi29hJcoRARcg5fYInWU6ionY8AArzPMDTMFjIxAs2LVBPMzzHPcPAA4b9mFC8EJHmu\nZmvgm7yDSGyoxyFUhFjrESkEJ/revXunOfZznnU20k5xPWuDvFCIkER53DdImUSkHaJveCtV4say\nnkhAbNaoqYM0QVjUkp+wEKFmxeqVINsbb7yxk1B1aZfk61NawRrusIZKzFViunoXmxre3m5VBgL+\nfca7TRKEl1FDci4x5phnrDFEIKi0UXwQIDjAdtttpwyQsYP5QTBHwqmhVrrllls0WDYGJDAi1pYp\nK/FXNWkyuQuJdoNandRMEoNU0yp1795d6yVsG4G2YYAwShgaAQHILQhT5fyyyy6rAbWpB5eP3Xff\nPSeIBCwnmTCB7Ql1xzrffvvt56688kq9Jl+fMiuFyRbK3YfUSr+bS2
 R5IIQfbTaKBwL+fVbMOnI8\nelS9VhpzzIMtM+NKhB3Lcws7VWEEYHyETfOh04jBSpYHCGaGqhyjBKRApMHTTz/dvfXWW5oImByK\nMChyEqJW9LkJKYuTP7nxqB9CIr344ot17YY8hhdeeKEyR1w7fKzh/v3769odDIQ0TF6lqhX8/wcM\nG2MWsnwgdRLa67HHHnNDhw5Vxo4bUb4+heviN0zbtzvznN/nmW5u8AQmEvQnW1otfx/7jh4C/n3G\nu80oPwK25pgHHx4ke4jyABTBU0iGvLglW4QGxyb26m677aYtJZ0UjJB4pGgFKAeFs9wjKUIYpHha\naaWV9KdkEvGHVAIlSLe3OvV5DMmp6In7SDYElSw/+eQTfzjtG4mRWTzppTDWYSO4OswXwwkoX5/S\nKpOdo48+Wn1z8c/Ntfl8l5nXFruPJDtkyBB36qmnFnuJlYsIAv59Zhb4hQfEJMc8GKGC8LE88xSz\nUxFCgCggJ5xwgqpFUXniXkAyYoh1QhgWEh0Byddbbz09XshyL5ujv5+B+5yQWlGWD2/x+e2332b1\nl8XKk1yRXoWapQqXr0+Z5ZHmskmomeWas4+fJtiBrycmGEw4UC3jbE6bjaKHgH+fefVq9FoYnRYZ\nc8wzFmR0JyWQUXwQgAGSCJggyyQFJmkwxiySm9AhvXXp0kUZEdaVWFoWQ/ksS/Odo27SMEHeIEh3\nQh+obFnbzKfCz9enUFX6k6TPxAPOR9wTSbVcgtGPGTMm7XKkUV68xxxzjFt11VWNOaahE50db6XK\nu80oPwKmVs2DDzN6sswbxQcBLCeRBAmyjIsBVp/EY4UGDBigTMi7HRSSGCvRa3I8SjJmzVOYrT5U\ntUifw4cPTzuN6pJ1Ryhfn9Iukh0Y/t133513I2h7c+ihhx5SVTGGSH5jrRbrR/ZZMzWKJgK8z1Cp\nLrLIItFsYIRaZZJjnsHwlo15itipiCGAeg+pZ
 pttttFEvFh+XnvttdpKmBAGObhn/OMf/0gxH9YN\nYUaoA2fOnKllWU/0hNEMNH36dF0L5LdXp2aGViMKjideREhyYfWjX+/zdfbq1UvdIVAFUxeMmzpg\ncDBFKF+f/L38N3lHK5V71GdvyOyjv5d9xw8BLLNR9aONMMqPgDHHPPjAHDGL50WZbd0pz6V2qk4I\nME5Yh2LYguoIxkJqK6hv377u1VdfVQMd3D1Yj3zhhRfUErVNmzYOwxtf9tJLL1XfPdSiw4YN0+sH\nDhyoVqkwOKLCQFjDnn322Sl3Bpgv1qfUN3r0aDdixIiUz+Irr7ziqAO66aab9CW17bbbqqQFE0fV\nybbaaqu5m2++OVVnvj5pZRX+wJcTQyHWD6GTTjpJDZyQxo3ijQDMkfeaUWEEZguEChfLXqJnz556\nwpuuZy8V36PM4NdYYw2dyfPCMoo+AjjjY5DCOiNMxVuf+pajSsU61FuX8viz3tdc6z0sTFHDwyxh\nzjAYIswUWpP07eIbRkx53EjCVKhP4bL22xDIhwBuTASvwEe1kYn/EXyJvpZJd5nkmAc5Zli8RF98\n8UWdzecpaqcigoC31ERyy0aokzxj5Dx/ouYyxsz7zD///A4XklKJwAHZqFCfsl1jxwyBTARYFmBN\nmjVwo8IImOI5D0aY62+22WZNLPPyXGKnEoqAN5Fn7dLIEIgiAoQ3ZDKIxbZRYQSMORbAaMstt9SY\nmbWwbCzQFDsdUQQmT56cii2KJSjrls2NQBPRrlqzYowAhmr4p2YuNcS4S1VtujHHAvDCHFFHYMhh\nZAhkQ4DA5LiLYN1JlnWCjfsgAdnK2zFDoB4IYCDG+8yoOARszbEAThjkYMVIfEvM/42SgwB5DUn6\nC8Pz7iDZes+aZaXXLbPdJ98xpFfWxj1hrh9eW6IfM2bM8Kfd559/rkESWB/NRTiME48WHPgfEFjB\nx6zlGlxUvEsL+z169LBJ
 AUBEkJ599lk1+GqGgUoEe1XdJpnkWAS++++/v7vttttMVVYEVo1SBD/E\n559/Xt00SCUVdaKtBEZnTalr165poerI/E6Qdc77jQAJ+Rjj+PHjdW2qU6dO6l5CnFcyeeCq4gnm\ny4QRv1HqtUwPHpnofd94440a1J5JjlFxCBhzLAIn0h6hMhs1alQRpa1IIyCAhESg8mJyMUapv/hN\ntmvXLpVnkrbhs0mkHlxF2JAEvT9ntrazvn7AAQdo6i+ygsBE8b8kHi0TRU9LLrmkBkUwVZ1HJJrf\nSPe4NYTHLpotjVarjDkWMR6kJEKllC84dBHVWJEYIoAbBdJYXAn/S9JhrbDCCuo/iQ/l0ksvrYwu\nV59I8TVhwgSVNMJlkBIx6kDNbBQfBAhEga9spSInxafnzWuprTkWiR9RQjCBJqKK5bArErQ6FEMd\nSvQarEXxaUSSIoAD621EpcHlghRWHTt21Nbh9wUzgIGgNsSYJhehUiRqDEEDiBZDgG0SFcNIIOoN\nO/ATlg6VLPFGqZs4r7UmDIVefvllZYj4XpKRBAkiH8MnEDqUGR/EZzF57rnn0tYza90nu1/xCPCs\nkov04IMPdq1bty7+QivpjDkW+RCQCJcX3FlnneX+85//FHmVFas1AqhDN9lkE7fhhhuqZd6///1v\nbcKCCy6oRjO8+D1jvPzyy9XgxKscWatD0iKIdjYiAg7BBYgMhYEOzJFrMHY444wzHOtznjnCNAnB\nRl0tW7Z0hIfbb7/9cmofYKSEKsxHMDSewVIIP11ekBjrwCRJ33Xrrbcq0yY7Rzby6Yyw0Ea17Ikc\nkxBqWaN4IIDUyLPVnCws8ehp5VtpzLEETE877TSVRAgm7WfRJVxuRWuEAGNDsuO77rrLEQfV+3Xx\nsmcMPaEmJ0A5TKe9hHojUTEZJ3IxR66DAWbS2muvnXYI6ZX4qkijROPhPJkqyLLB+jXreJl05513\nuuO
 PPz7zcNo+7iGl+k/SPzYICXfPPffUlFak9UIbko1gwFjfkgwa6dFLmT5oOlgZRR8BVKnnnXee\n/hf8pC36rY5OC23NsYSx6N69u9t0001dnz59mqicSqjGitYAAQKPo0LFBQci2wZbOETbU089pdao\nnH/nnXfUvYFA5c0lJEYsN5mt0w42JFIkL6w+s9HRRx+t7aXNuTbPnLJdX8wx0mOxXsgaOm3MRaxJ\nEkydskiaWKNecsklqUAH1GMUfQQGDRqkKn1U6UalI2CSY4mYDRkyxK2zzjoO02ifYb7EKqx4DRBA\nemS76qqrlDndcccdTQwSsLbEMRppEbU5zKsSxiZvv/22BiEvxYALwx8fQ7Wa8GB5uvPOO7vrr78+\n721QR2OAAz6sMSJxsjbL5CFTUs5bkZ2sCwKsjw8YMECTfJukX94QGHMsETf8hFC7kVke4w1yABpF\nEwEkNlwSWG9jnRg1a5hOP/10VR2i8mSdrblJgH3drOWxtslaX7GRclDVjx071leR9Zt6K7F2REB9\nggQUIiYMbNAnn3yiTv+oY1lDNYo2AuQHJWUb7ymj8hAw5lgGbhjl8KI97rjj8vqLlVG1XVJBBEgk\nTA5HxgmVeNgAhZc9qkMkS2+AUkz8XC/d5UsAjNoR37Lhw4c71KWeCEpOMIkjjjjCH0p9YzVLguN8\nxL0rwRzvu+8+lR7z3St8jnVOsCRSVLa2h8va7/ojgBqc5+z+++9PPdv1b1UMWyAL7mWThCIK2JJI\nooojD2YgzrVJ7H5s+izMJBCmGEi4tLQ2i7GMjp9Ymwaylhc888wzgVijBossskgga5OBuH5oefFv\nDRZeeOFAGKfu8y1qqkAsYgMJ2RZI8thAjGy0LjGZD/78889AGGcg63aBGLUEF154YSDrmYEY3Oh/\nxdeb1pgK7MjaqrZBGHCqNpFeA1kfD15//fXUsbfeeiuQwAaBMLzUsXw/xLgoECvb
 QCx0A8lRmbWo\nLDHovcHRqL4IMEZiUR2Iu059G1Lnu1fg3TwSw5KyKcnMEdBEvaovTjFtLxtDu7C6CIiEGIgbRdab\nHHTQQYFIY4E4yAci5QUiuSlD22KLLYIvv/wyuOyyywKRKvXFL0YNKeYgbhyBqNMDcRsJxNUhEKvO\nQIxcAklyHMCQIBiiqC71Wv6o4muZxqSyNqgZB7MxR1k/DcRSV9vAJEBUbMEFF1wQiMFPwTtNmzYt\nuO666wLx6Q3EtzNveWOOeeGp6Unx6w2WW2651OSupjeP0M2MOdZ5MHjJyPpNIL5kgawv1bk1dvtc\nCIiKM9epJi8RpL5iSKxRU9cihSExZiOkSwnZlu1URY9lY47cgP6IyjaQQAQl3U9Ur8FHH31U1DXG\nHIuCqeqFJEygakkkUEnV7xX1G1SCOZorh6BYLrFWRcxCUVu5Y445ptxq7LoqI5AvwHamcck888xT\nVGuIM+qvxeiGaDzZCNeRWvqYzZo1K60Z9IegB1jmlkIELRAJpKhLZGJQVDkrVD0ECOuHhTF+jQTA\nMGo+AmaQ00wMV199dfWlw3KViClYSBoZArVGAAZNFCCCD/By7Ny5s4a4q2Y7rr76ag3Ij3Ea9/bB\nAqp5T6u7KQJYRhO1icwoPiJU01J2pFQEZkM8LvUiX54BgZCekk7nnHOO+hVhKUbcTSNDwBAwBKqN\nANmCyBwjhmTqllSs5qPa7ap3/UzU4EvNyF95V3ZdUL17FsP7n3rqqeoovfvuu7tXXnklhj2wJhsC\nhkCcECBM4XbbbachBXHPMcZY2dEz5lhBPMmRRyBqfOp8poYKVm9VGQKGgCGgCBCekATWYvClwSMI\nim9UWQRszbGCeOKkjSi//fbba/5HAjcTjcSovggQqUb8GDVMHCpvZttxIwIEiL+lpr1ChU8Acwx9\n6Je4naR1B2Mh4qcSBccHXacA2TQefvhhDZFHVpFKU642Vvo
 +Sa+PoAxoqAhszzuGXJ1GlUfAJMcK\nY4pq44EHHtA4neIv58TpusJ3sOpKRWDixIk6aSFFFel74kgEkUYzQVByMovwUoTIVTl+/Hg1xiAa\nEBIFL03KLLHEEu6oo45yWLCignv++ec1KhA5JqtBudpYjXsltU7Gl7yhjCXjyPgbVQcBY45VwJU0\nRQRsXmWVVRz59IjtaVQ/BAgUH3crYlwx2rZt63BLwTK0Xbt2CiiGGD4APi4bEthAs2cQL5aUVAQ/\nP/TQQx15LsnNiPFGtShXG6t1v6TVS1YWidikeTnJQWpp86r7BBhzrBK+vIywXIU5brnllprPr0q3\nsmqLQMDHRI2ruwGZFby/JL9JK+UJZpmNmBDgf4mqH1UcBA7VwiBfG7O1z44Vj4CEhXNdunTRAPCo\n0tddd93iL7aSZSFga45lwVbcRahYWYc5+OCDdfEcvzCyRBhVBwGSGfPiICg464okLy5EBPwmFROq\nSJL84q/qCS8n1JeoLQlazvpx2E1n6tSpuobHN+mukFCLdZz39yj2u0OHDm6xxRbT4vz2jDLf9aw9\nwhyLCaieC4fHH39c81xyH55nVHp8Y5FNDkzWQUmBBZXTRr3QPvIi8N5777kddthBJzWoUwksYVR9\nBIw5VhljZuoSXksfaFRerH9JMOq0DBFVbkIiqif9FFiTtYIXPU7wrLdJfNSc/WcNkvVhVFQS4k0t\njUlKTEoyiHU7XvgSM9XBeJHEPHMkwwYMmITJRErCQAbKxRxRrReKJMNLLywRaoX//0GqNC8hYvCV\nL+qPvw7VKtngWfuWIOj+cJPvfDgQUIDk3uSolHByKXcBcj1KcGvFz1dYThv9tfadHQFSrZFLE2wl\nxm1qgpS9tB2tKALNiZGX9MDjpWIn2dc1kLW4egTh7Aml1mPl0xGQPIyBrHelHRQJJxAGmTomL3cN\nwE3QcE8EHBeG53c1QLkwPN0n+0br1q
 2DJ598MnVeUlylfg8ePDiQXIep/Y8//jiQNEGp/cwfwtj0\n/vLnzfktVqiZlxW1T5B06qW/BFoXhh1I3sVAGGgg6bMCSXybqof/LEHSw5QPB8o9+OCDWv8111yT\nukwMm4IePXqk9u1H5RG4+OKLA5H8A1lTDsSoqvI3aOAa+T/IckJzejjSJMeKTjXyV8YMEPUbaigM\nIwi7Rfg5o+YhgGsD0lSYUGcXktSQ+jCeglARSlorJymldJ91OfIXkscQdThjRgJZT6hYUbnuu+++\nKp0iYWIdmouQSAtRsYmRc9WDSwexNakHVw7cNlinKkT5cOBaVHoYl0lga10iABvyBUoqq0JV2/ky\nEMCy+PDDD3cymVYtE1bIRrVHwAxyaow5Fmao6LA2hEHy4jUqHwEYICo/jEHCxAvcG+GEj4d/Y13J\n2hlB4yUvo05cwutzQ4YMUVUmQbgxqkKV6glVJcwSJsGEBzcL1uJyEarXQluh9uaq2x/HWpXkzbQb\nS9ViGCPXFsIBLInZCUYYmUFjx451kh5Jf9tH5RAgeAhLAgQSx1XDGGPlsC21JpMcS0WsAuWRMDB0\nGDhwoK5v8VtUVqk1pQrcIjFViN5EDU5GjRrlTj755JL6zTol0h9rczAuUc+mXY9BDxlXYDQwHQxu\nWDPGfQJDF1Fdqmk9a5usJ2OYIzkT0+rwO0hdmRkz/Dn/LWpaJ/kT/W7NvgvhQEP22WcfR7lLLrlE\nJyIE2W8uM69ZB2Nyo6FDhyoz3GCDDZyo851FvanvwJnkWCf8sX4888wz1R+SF/Taa6+tlpZ1ak5s\nb8sLGpUfFqey7pfWj1tvvVWd4tMO/v+OrM2pQzxqURgjFJYaYWQjRozQtFT4CqKilLU7NYqgrCQC\n1vIY6LzxxhsauUbWITmVle6//361XEbdm2vDKrEcYoJQLhXCwdeLQQ+GSby0kSK9b6U/b9/lI8Ck\nCivpo48+Wg3Km
 CwbYywfz0pdacyxUkiWWU+3bt00DivWaKjBsAwkCopR8QicccYZDgZBXNubb77Z\nYeGHywzHPOPDgRpiPSf8fccdd+g647PPPquTE7IcUIa1x+HDh2sdlMf5Wgx0dGP/gw8+UNUXv7Ec\nRfXK+VyEi8lrr72Wd0P6LIe8uneyxNksROAgyZ9T/fJ45MJh5syZqSoPO+wwDUc3bdo0Tc+WOmE/\nykYA3Dt16qSuREw80CahlTCKAALyAimbzFq1bOiyXiiSSiB+Y4GsYQXyMs1axg5mRwBLyoUWWkit\nKrEMFcaWKvjyyy8H22yzjZ4TCT2QdTM9J8woEMkzwFqT8iLRBSIhBbKeGGABKrP3QIyoAjGcUuvP\n/v37p+rktxjlBFitYqUq65aBqGBT52v1Q9alApFetW/yOgkkGk4g66hNbi9hxwJxa1FracrRfnEs\n13L5cPjuu+/S6hJDkUAk6bRjtlM6AmCPRbWs5wZHHHFEIJOU0iuxK3IiwDPeXGtVZpBlkzHHsqHL\neSEm8mIdqH8amakHmS+nnBfaiUCMcwLxV9TvYuEQCTGtqAQQSO1LwHI1oafOTOIcxEuuEdxy8uEQ\n7juMWKTr8CH7XQICuAgxkVt00UUD8WsNRIVawtVWtFgEKsEcTX4XFKNErDVgXIIVpPiXqTsB61vy\nUESpmZFsC+ooIseUopZq2bJlWl/CFqesZ7LWli0ajTdGadOmTVrmi7TKYrSTDwffDSwpCXIgEro/\nZN8lIIBxF0EVCDKB2p+kBFg9G0UTAWOO0RwXjYqBgQZWgqz1YMWI4YeRIVBLBFgnZV0cYxwi4mC5\na1QaAqwJE10JNy4mW/yPxcFfg8GXVpOVriUCxhxriXaJ9yJcGKG9eEEhDeH/hJXgF198UWJNVtwQ\nKA8BLHjHjRunIRBPPfVUdeMor6bkXUWwd/6/+MFioXz99der65ClmYrHs2DMMQbjJCHANH8bET
 Ow\neiSJLT593gIzBl2wJsYUAaSd6dOn6yY2BjHtRW2bzRIIVqhEUTrllFM02g3WzUjeBFQwigcCxhzj\nMU7ayp49e2qUEsKlEVmHDODMTMlCYWQIVAsB1ldLWcetVjviUC+RgwjKznII6eoIgs//1QeNj0Mf\nrI1/IWDMMWZPAmsWxx13nGZIQMWKqgsjCZgkWcKNDAFDoPYIEO6NlGcEhSC1GMY3ZOMhxq1RPBEw\n5hjPcVOLQVJfEeFk7733TjFJUjQZk4zpoFqzY4fA6NGj1ViOIBFIh0RqIv4sSyFG8UbAmGO8x8/h\nSoDlG6HTPJNsL0G4Jb2SEx/JmPfOmm8IRA8Bgt2Lg7mqTyW4hDJF8nUSmYlkAkaNgYAxx8YYR9e2\nbVsNCo0kecghh2gaJfzzMCH/8MMPG6SX1g1DoH4IEGpv0KBButbPRJTk1BJ9SbNnECzcqLEQMObY\nWOOpTBKp8bPPPnPnn3++zmbJS7j77rurGXmDdde6YwhUHQGJkKTW4Uw2sRIndyiGNuRjxfjGqDER\nMObYmOOqSXyJ8o8JOS4gEpbOdenSRUj7jcAAAEAASURBVANGk+/P3EAadOCtWxVBAP9O1KQ77rij\nGrwR0B5DOCad/H8wgjNqbASMOTb2+DpSY+ECwpoIFnRY1JFzkAS3EqRajzU4BNY9Q6BoBEgfdcEF\nF6jqdLvtttMMJnfeeadDeiSfpcRELbouKxhvBIw5xnv8Smo9OSPxj0SKPPfccx1pmtZdd121rMPK\nlReDkSGQNASIZHPfffe5nXfeWV0vzjvvPJUY3333XffEE0+4Hj16WGLnpD0U0l9jjgkc9FatWjlJ\nsaQBBZ577jldNxkwYIBKkzvttJO75557HC8MI0OgkREgLCP/gyWWWEIZIHlUb7jhBk1qfcUVV2iE\nm0buv/UtPwLGHPPj0/BnUbNKCh03ZcoUdVrGRxI1bLt27RzJdx977DH3x
 x9/NDwO1sFkIPDOO+84\nkmOvssoqGqtY8mHqWiKJonHkJ7KNT5CdDESsl7kQmDPXCTueLAR4IfBiYCOwOessbMykWWeRxKzK\nNLt27arrmMlCx3obZwQmTZqkzzK+iW+//bZKisSJ5dk2F4w4j2x1227Msbr4xrJ2Ql717dtXN/wm\neanAKJEwW7durabsqF+JCtKiRYtY9tEa3bgIYGn6yiuvaD5UcqLCEPEDZu1w6NChbtNNN7UA4I07\n/BXrmTHHikHZmBV16NBBrVuxcMUtBMMFXjjMvOeaay5N1gqj3GGHHSyOZGM+ArHoFeuFBP3m2Xzo\noYfcN99843h2eTYHDx6sQcCx3DYyBIpFYDZJr1J2innWpiAkC6NkIfDtt9/qS4iXEWs1P/30kyNP\nHdIkGxkJbO0mWc9ELXvLa2vChAmO2KZsGJZhREaKLRgilqeWN7GWIxKte5EaDL7UjDRrd5nkGK0x\njU1ryDxAVhA2UmY99dRT+pLCgOfSSy9188wzj6qvyFKw5ZZbqruIzdxjM7yRbCgO+P45Y0KG6xHP\nIc/YVVdd5YhziiGZkSFQCQSMOVYCxYTXMe+887ru3bvrBhRffvllakZ/0UUXqVqWjAVYxm6++eYq\nVXbu3FnVsgmHzrqfBwFiAj/99NOa4Jsk31iUkrKN54hoNWgo8N21BMJ5QLRTZSNgatWyobMLi0EA\n9RcGEeGXHG4j888/v1oKbrTRRprJgBiVZBgxSiYCaB+I4EQgb9I+EaDi66+/VtU8FqV+UsVvU9cn\n8xkppdemVi0FLStbFwR4SFn7YSNDCETQZpgl60SsC5ApHSaKAQVMkrQ/bOTEW2CBBerSbrtp9RAg\n5RPPwLhx45QZwhDffPNN9/vvv6s1NGN/1FFHKUNkDRFp0cgQqDUCplatNeJ2P7fiiivqRmot6L//\n/a+a3iMx8KKEWZKLcvbZZ9cYl2uttZYLb4svvrih
 GBMEMNSC8Y0fPz61TZw4URNyw/RQi6ImPf74\n43VCtPzyy8ekZ9bMRkfAmGOjj3AM+rfwwgurMQUGFZ5I3hx+oQ4bNsx9/vnnehr1a6dOnTTKCZFO\n/G/CgBnVB4GZM2dqOELikfqNaDSMI36HrDmjCUAqPOyww3SygzbBpML6jJfdtTACxhwLY2Ql6oAA\nKYHYiMzjCWkS830kEV68SCCoZTkO8QKGWXbs2FGvRQqhDr6xYjTDDY9ked8zZsxQZvfRRx+lvvn9\n3nvvaVQlasU4C80A49C7d29VpyP1ozI3/MvD3a6qDwLGHOuDu921DAQIY7fFFlvoFr4ck34vrfDN\nCxumSXSfWbNmaVGMOGCU7du313B4MFAiAYW3JEf7Yb0PAxhCByKh8+03XCiQAKdNm6ZYou4m5Zmf\neOBKATNk4xjnjQyBuCNgzDHuI2jtVytXVK1YNIYJIx/cSsKSzltvveVGjBih8TWnT5+ua1/+GrKV\nEGaMuvCf4zv8m9B5lFlooYX0m99RVAuixkTKI6H1999/r9/0lUkEwRv4zvab6yD8UZG0/cQBi+J9\n991XJXCYH1IgfqxGhkAjI2DMsZFHN+F9Q43nX/CecfKSR+2HewlMAJWsl5BgpJ5x8I1FJRa1MBSk\nJs88wrAikXqGieTJvt9wV/G/+SbcHvfMtVE/lpzZNjKj4O5A1hQ2wqX533xj+AJDhBmy/sfEIJNQ\nO3uGzzfqZlwj+I2R09JLL6148Zs2GhkCSUbAmGOSRz9hfWed8vbbb3e33npr6uWPqpYNY5F8BOPy\nUliubxhUJtPy0ikMDAbnGV/4N8eoH2YeZpxzzjln2j7reTBZz3Rhdn6fY+x7qXbUqFGabgx/QZg3\nRk9RlHLzYW7nDIF6ImDMsZ7o271rigB5/FZddVXXq1evku/LOtoiiyyiW8kX1+ECpEDUxzBhVMVG\nhoAhUBoCxhxLw8tKxxQB3EL
 uueced++99ybCahLneaRFYt3i6mJkCBgCpSFgZmWl4WWlY4pA//79\n3TrrrON22WWXmPagtGajniXgO8zRyBAwBEpHwJhj6ZjZFTFDgKg7rMGdddZZMWt585pLUAUCdmPI\nY2QIGAKlIWDMsTS8rHQMETj99NMd7gjbbrttDFtffpNhjhgCwSCNDAFDoDQEjDmWhpeVjhkCWGuS\n+y9pUiPDhBsL642mWo3ZQ2vNjQQCxhwjMQzWiGohcNppp7muXbs2iapTrftFrV6kR2OOURsVa08c\nEDDmGIdRsjaWhQASIyrFJEqNHjCYIwEPCHBgZAgYAsUjYMyxeKysZMwQYK2xe/fumhIpZk2vWHOJ\nDETwAJMeKwapVZQQBIw5JmSgk9bNhx56SHNDJllqZMxhjJtttpkxx6T9Aay/zUbAmGOzIbQKooYA\ncUXxa8SnsXPnzlFrXs3bg2p17NixWWPD1rwxdkNDICYIGHOMyUBZM4tHgCg4RMQ588wzi7+ogUvC\nHInxOm7cuAbupXXNEKgsAsYcK4un1VZnBAjgTQzVnj17utVXX73OrYnG7Ykni1uHrTtGYzysFfFA\nwJhjPMbJWlkkAmTdIDP9gAEDirwiGcW23nprY47JGGrrZYUQMOZYISCtmvojQAaKgQMHun322cet\nvPLK9W9QhFqAapUweiRANjIEDIHCCBhzLIyRlYgJAjfffLObPHmyqlVj0uSaNZMg5BgqYZhjZAgY\nAoURMOZYGCMrEQMEfvvtNzXAOfDAA91yyy0XgxbXtonkoiSNla071hZ3u1t8ETDmGN+xs5aHELju\nuuvclClTHOHijLIjgGp19OjR2U/aUUPAEEhDwJhjGhy2E0cESMl0zjnnuEMPPdQtvfTScexCTdoM\nc/z000/VYKkmN7SbGAIxRsCYY4wHz5r+FwLDhg1TP75TTjnFIMmDwPrrr+8WWmghU63mwchOGQIe\nAWOOHg
 n7jiUCP/30kzv//PPdkUce6dq1axfLPtSq0XPMMYfr1q2bMcdaAW73iTUCxhxjPXzW+MGD\nB7uff/7Z9evXz8AoAgFUq08//bSbNWtWEaWtiCGQXASMOSZ37GPf8xkzZriLLrrIHXvssa5169ax\n708tOgBzZDJBEmgjQ8AQyI2AMcfc2NiZiCNw2WWXaTDtvn37Rryl0WneMsssowESzKUjOmNiLYkm\nAsYcozku1qoCCBBI+9JLL3UwRoxMjIpHAOnRmGPxeFnJZCJgzDGZ4x77XqNOnXvuuV2fPn1i35da\ndwDmOHHiRPf111/X+tZ2P0MgNggYc4zNUFlDPQJTp051GOJghNOyZUt/2L6LRKBLly5unnnmMemx\nSLysWDIRMOaYzHGPda9x3YAp4r5hVDoC8803n9t0002NOZYOnV2RIASMOSZosBuhq1999ZXD6R+H\nf17yRuUhgGqVIOTkvzQyBAyBpggYc2yKiR2JMAKEiVtsscU0VFyEmxn5psEcp02b5l577bXIt9Ua\naAjUAwFjjvVA3e5ZFgLEBb322ms1uDhrZkblI7D66qu7JZZYwlSr5UNoVzY4AsYcG3yAG6l7Z555\npltqqaUcaamMmo/A1ltvbcyx+TBaDQ2KgDHHBh3YRuvWhx9+6EhmfMYZZ7i55pqr0bpXl/6gWn3p\npZcckYaMDAFDIB0BY47peNheRBEYMGCAW3755d0+++wT0RbGr1lbbbWVGuQ8/vjj8Wu8tdgQqDIC\nxhyrDLBV33wE3nnnHXf77be7gQMHOjJLGFUGgUUXXdR17tzZVKuVgdNqaTAEjDk22IA2YndQpa66\n6qquZ8+ejdi9uvbJ1h3rCr/dPMIIGHOM8OBY05wbP368u+eeexzGOLPNNptBUmEEWHecPHmye//9\n9ytcs1VnCMQbAWOO8R6/hm/96aef7tZdd123yy67NHxf69HBDTbYwLVq1cpUq/UA3+4
 ZaQSMOUZ6\neJLduJdfftk99NBD7qyzzko2EFXs/Zxzzum22GILY45VxNiqjicCxhzjOW6JaDVS40YbbeS6d++e\niP7Wq5OoVp966in322+/1asJdl9DIHIIGHOM3JBYg0DgmWeecWPGjHFnn322AVJlBGCOP/30k3vu\nueeqfCer3hCIDwLGHOMzVolqKVIj6r6uXbsmqt/16Gz79u3diiuuaKrVeoBv94wsAsYcIzs0yW0Y\nEiOSo6011u4ZQHp87LHHandDu5MhEHEEjDlGfICS2Dykxm233VbXG5PY/3r0Geb45ptvuilTptTj\n9nZPQyByCBhzjNyQJLtBo0aNclipmtRY2+egS5cuGrN29OjRtb2x3c0QiCgCxhwjOjBJbFYQBK5/\n//7q04hvo1HtEFhggQXcJptsYqrV2kFud4o4AsYcIz5ASWoekXAmTJig0XCS1O+o9BXVKuu9TFKM\nDIGkI2DMMelPQET6/7///U/TUfXq1cuRiNeo9gjAHL/99lv3+uuv1/7mdkdDIGIIGHOM2IAktTlk\n3Zg0aZIjNZVRfRBYc801Xbt27Uy1Wh/47a4RQ8CYY8QGJInN+eOPP5Qp7rvvvm6llVZKIgSR6bNl\n6YjMUFhD6ozAnHW+v93eEHA33XST+/TTT01iicCzgGr1gAMOcDNnznQtW7aMQIusCYZAfRAwybE+\nuNtd/x8B4nnitnHggQe65ZZbznCpMwJIjkjyTzzxRJ1bYrc3BOqLgDHH+uKf+Ltfe+216niO479R\n/RFo3bq1W2eddUyKr/9QWAvqjIAxxzoPQJJv/+uvv7pzzjnHHXbYYW6ppZZKMhSR6juqVQslF6kh\nscbUAQFjjnUA3W75FwLDhg1z33//vTv55JMNkgghAHP8+OOP3YcffhihVllTDIHaImAGObXF2+72\n/wiQIun88893Rx55pLoPfPfdd47QcdBss83m1lhjDbf22mtrKq
 X777/f/f7775qhY9lll9UyX331\nlXv00UfdF1984TbeeGPXrVs3Pc4HTuxPP/20Gz9+vJtjjjncyiuv7LbaaqvUefuRH4ENN9xQjXGQ\nHldYYQUt/Pnnn7t7773XHX300e6dd95xDzzwgFtmmWXcPvvs42afPX2OjZ/ks88+637++WdV0bKO\nyZgaGQJxQiD9qY5Ty62tsUZg0KBB7pdffnEnnnii9mPRRRfVlyyGOY8//rgyRk4Q1owAATA7XsbQ\nk08+qa4fMM9VVllFw83BZD2ddtppKvUce+yxjhc9+0bFIzDXXHNpujCvWmXSQjg/8GTcLr30UvfS\nSy+5/fbbz11wwQVpFR9//PF6bMcdd9Qk1YwvqceY/BgZArFCQGbZZdMee+wRsBkZAqUg8MMPPwSL\nLLJIIEyryWViDBKIdBiIpJg6969//SuQsHK6Ly4GgVi1Bj/++GPq/MEHH0y8s+DFF18MhJEGYlQS\nCANNnZeEyanf9qM4BIYOHRq0aNEiEGtiveCkk05SjMeOHZuqgLESppnaF5ecYMEFFwxEVZ46JoEd\n9DrxYU0dsx+GQLUR4H0wcuTI5txmpEmOsZrKNEZjkTyQBvv27dukQ0ga+Dzefffdeg51KmtfqFkh\nIul4iRNpkY00S8svv7yWQ31HIAHC0KH6g0444QT9to/iEWDdUSYg7vnnn9eL5ptvPv1GRe2pU6dO\n7rPPPvO77vLLL1cVdqtWrVLHSKLcoUMHd8stt7gZM2akjtsPQyDqCBhzjPoINVj7pk+f7i677DJl\nWAsttFCT3vXo0UP9HS+55BI998gjj7iddtopVe7tt992iy++uLvyyitT20MPPaSMkQg70JAhQ5xI\nMKpu3XLLLdXoJ1WB/SgKAXxOWW/0qtVsF7GeK1NzPcX3u+++60TabFJ000031WPvvfdek3N2wBCI\nKgLGHKM6Mg3arosuusjNPffcrk+fPll7y
 AsXifLVV191zzzzjLvrrrvcXnvtlSrLeWKwIlHmorXW\nWkuDZx9xxBHuqaeeUqMQmLJRaQiU4tKBxL7wwgu7cePGuT///DPtRh07dtR9zhsZAnFBwJhjXEaq\nAdo5depUN3jwYNevX7+sEobvIkY5iy22mBrd8NLFWMcTwbGxdB0+fLg/pN+4hMg6mZs1a5YbMWKE\nWlsiXT788MPu66+/VkvLtAtspyACMEcsfhm3Ymj99dfXsHNvvPFGWnGsV9u0aWMRkNJQsZ2oI2DM\nMeoj1EDtO++885RphS1Ls3WP9a2jjjpKrVLDUiNlWUtceumlVS2LFIoqTxbe3aGHHup69+6taj4Y\np1f34UZA1Bc2o9IQ6Nq1q8NydfTo0an1QsL9eZo2bZpORjzWuObMM888OjnxZVhbFkMpddtB6jcy\nBGKDgDzYZZNZq5YNXeIuFH/EYN555w1Eciyq72JkE8jaYiBxPpuUFz+7QAw91ApS/mjBaqutFoh0\nouXEWEev23PPPQNRyQbCQIP+/fs3qcMOFIdAly5dAvERVQthsP7nP/8ZiCQeiGGUWqZyTNKMpayL\nxb8xaN++fSBuH4EYRAXi7hGIBF/czayUIVAhBHgum2utakEABEWj6iNAmDhUpYccckhRN5s4caI7\nQLJDZJM28G1k3RGrVtSu3v+RioUBqwUlEgtWrBj4GJWPAKpVrFBRTYO1J5l8OLZM2mSTTTS6zvvv\nv68q1quvvlqlycxytm8IRB0BU6tGfYQaoH2TJ0921113nSO4OGq3YoiXqvg35i1KtJwwY/SF55xz\nTjX6yXbOl7Hv4hCAOX7zzTe69ljcFX9FOMKdpnPnzkWPd7F1WzlDoFYImORYK6QTfB9SUhFYHEOb\nfIQFK35zfo2QtUWj+iKA5W/btm3VpYOIREaGQFIQMMkxKSNdp35+8MEHmsz4jDPOcEh0+QgJBcd9\n4nhi3GFUfwRQpRKX
 Np+/Y/1baS0wBCqPgDHHymNqNYYQEGMNh58bAaoL0R133KHRbwgojhO/UTQQ\nQLX6wgsvaMScaLTIWmEIVB8BY47VxzixdyCaDQxv4MCBWQ1rsgFT7JpktmvtWHUQwB2GoAsEfDcy\nBJKCgDHHpIx0HfqJKlXcLJy4/NTh7nbLSiGAAz9rj6ZarRSiVk8cEMi/CBSHHlgbI4kAUVLI/3ff\nffeluQBEsrHWqIIIoFr1weALFrYChkADIGCSYwMMYhS7II73mgNw5513jmLzrE0lIgBzJDvKxx9/\nXOKVVtwQiCcCxhzjOW6RbvXLL7/syJSBC4dRYyCw8cYbazxcU602xnhaLwojYMyxMEZWokQEJImx\n42XavXv3Eq+04lFFgBirxFo15hjVEbJ2VRoBW3OsNKIJr480U5It3iwbG/A5YLJz0kknOYl3W9Bn\ntQG7b11KGAImOSZswKvdXaTGLbbYwknA6mrfyuqvMQK4dMycOVN9Hmt8a7udIVBzBExyrDnkjXtD\nUhtJVgZ7eTboEK+wwgqakxHV6mabbdagvbRuGQJ/IWCSoz0JFUOAwOLbbbed23DDDStWp1UULQSw\nWrV1x2iNibWmOggYc6wOromrddSoUe6VV15xZ555ZuL6nqQOwxwld6b79ttvk9Rt62sCETDmmMBB\nr3SXJT+pw69x1113Vd/GStdv9UUHAdaTCSA/ZsyY6DTKWmIIVAEBY45VADVpVd5zzz1uwoQJJjUm\nYOBbtmypanNTrSZgsBPeRWOOCX8Amtv9//3vf44Yqr169dI4qs2tz66PPgKoVjG+MjIEGhkBY46N\nPLo16Nttt93mJk2a5EhNZZQMBGCOU6ZMUW1BMnpsvUwiAsYckzjqFeozzuCko+rdu7dbaaWVKlSr\nVRN1BNZZZx232GKLmdVq1AfK2tcsBIw5Ngu+ZF980003uU8//VSNcZKNRLJ6P9tss7mtttrKmGOy\
 nhj1xvTXmmLghr0yHf/vtNw0sftBBB7kOHTpUplKrJTYIEEruueeecz/99FNs2mwNNQRKQcCYYylo\nWdkUAtdcc42uOxEuzih5CCA5/v777+6pp55KXuetx4lAwJhjIoa5sp389ddf3bnnnusOO+wwt9RS\nS1W2cqstFgi0a9fOrbHGGqZajcVoWSPLQcCYYzmoJfyaoUOHuu+//96dcsopCUci2d23UHLJHv9G\n770xx0Yf4Qr3jzWm888/3x111FGubdu2Fa7dqosTAjDH999/302ePDlOzba2GgJFIWDMsSiYrJBH\nYNCgQQ616oknnugP2XdCEdhkk03cAgssYKrVhI5/o3fbmGOjj3AF+/fDDz+4iy66yB177LFu0UUX\nrWDNVlUcEZh77rk1b6eFkovj6FmbCyFgzLEQQnY+hcBll13mCDLet2/f1DH7kWwEUK0+8cQTjoAQ\nRoZAIyFgzLGRRrOKfZk+fbqDOZ5wwgmuVatWVbyTVR0nBGCOaBReeumlODXb2moIFETAmGNBiKwA\nCFx44YVunnnmcX369DFADIEUAiuuuKJr3769rTumELEfjYKAMcdGGckq9mPq1KluyJAhrl+/fq5F\nixZVvJNVHUcEzKUjjqNmbS6EgDHHQgjZeXfeeee5BRdc0B1xxBGGhiHQBAGY42uvvea+++67Jufs\ngCEQVwSMOcZ15GrU7i+//NINHz5cHf7nm2++Gt3VbhMnBLp16+Zmn312N2bMmDg129pqCORFwJhj\nXnjs5Nlnn+3atGnjDj30UAPDEMiKAFqFDTbYwNYds6JjB+OKgDHHuI5cDdpN5JPrrrvOEVwcnzYj\nQyAXAqhWR48eneu0HTcEYoeAMcfYDVntGnzmmWe6ZZZZxh144IG1u6ndKZYIwBy/+uorN3HixFi2\n3xptCGQiYMwxExHbVwQ++OADd/PNN7szzjjDzTnnnIaKIZAXgXXXXde1bt06
 pVol3+eTTz7pTjrp\nJHfHHXfkvdZOGgJRRMDeelEclQi0acCAAa5jx45un332iUBrrAlRRwCDnA033NCNGjVKI+YQNWfW\nrFna7GHDhkW9+dY+Q6AJAsYcm0BiB95++22d7d9+++1qhWiIGALZEJgxY4YyQmKrwhSxbJ5jjjk0\nxOD//ve/1CULL7xw6rf9MATigoAxx7iMVA3b2b9/f7faaqu5PfbYo4Z3tVvFCYFvv/1WNQuEjptr\nrrnc77//rs3/888/m3TDmGMTSOxADBCwNccYDFItm/jGG2+4++67z2GMM9tss9Xy1navGCGw2GKL\naYYWmuwZY67mG3PMhYwdjzICxhyjPDp1aNvpp5/uOnfu7Hbeeec63N1uGScEDjnkELftttsWNNgy\n5hinUbW2egRMreqRsG/NrPDwww+7Rx991NAwBIpC4IYbbnArr7yyZuYgnVk2MuaYDRU7FnUETHKM\n+gjVsH1IjWR3x2fNyBAoBoG2bds6GGQuxkgdCy20UDFVWRlDIFIIGHOM1HDUrzFPP/20Gzt2rDvr\nrLPq1wi7cywR2GWXXdz++++fVb06//zzqwVrLDtmjU40AsYcEz38f3ceqZEA0l26dPn7oP0yBIpE\nYPDgwa5du3ZNGCFxV40MgTgiYGuOcRy1CreZmJjPPvuse+GFFypcs1WXFARatmzpbrvtNrf55pun\nddnWG9PgsJ0YIWCSY4wGq1pNRWrcbrvtNMJJte5h9TY+Aptuuqk78cQT06THRRddtPE7bj1sSASM\nOTbksBbfqQcffNC98sorttZYPGRWMg8C+MeutNJKqfVH/CGNDIE4ImBq1TiOWoXajIUh0XB23XVX\nt84661SoVqsmyQiQ2uzOO+90a6+9tsKwyCKLNIGD0HLTp093//3vf92PP/7ofvrppybfBBb4448/\nUhuRd9iHCIRPmDq+/UaUngUWWMC1aNGiyTeqXdpB/Fc
 jQ6BYBIw5FotUA5a7++67NcXQLbfc0oC9\nsy7VGoFp06ZpfFVirGLByvOFVmLHHXd03333neM83zDFXK4f8803nzI3mKxnfGFGSJ880/QMk32y\ngMBkf/nll6zdJtoTTBI1L9lD+MYNZamllnJLLrlk2sZ5I0PAmGNCnwFm76Sj6tWrl8ZRTSgM1u0S\nEIChffrpp+799993H330UZPt559/TtWGgQ5uHByDKa2wwgppjAnmhDSHpOelPSS/5kp3PNcwSS+N\nIpkipcKUwwya3/QFIzSYOUHUPdHu5Zdfvsm24oorumWXXdbCKnqgGvzbmGODD3Cu7mFZyEvu/vvv\nz1XEjicYga+//tpNmDDBkaGF7a233nLvvvuuqj+BBYbnGQiSIb/bt2+fksBgeJ999pl77rnn3N57\n710zJGGuMGa2UggmCpNkmzx5corx4/97/fXXq7RLffRrlVVW0Qnlqquu6tjWXHNNt/jii5dyOysb\nAwSMOcZgkCrdRNRQAwcOdL1793bMho2SjcA333zjXn31Vffaa6/pN79hjhAvfRjARhtt5Iilym+Y\nA8yxEC2zzDJur732KlQsEudhehgSsWUjVMFMDvxkgW/CLIZxIiYxG4mf+UZtaxRfBIw5xnfsym75\njTfeqCol/BuNkoUAqtF33nlHJTqkOjYkJQjpjxf7scceq98YaRXDBPXiHB+NktkFHJggsIUJpvn6\n66/rxILJxc0336zLFZRBkiYco986depkKtkweBH/bcwx4gNU6eZhuECIuIMOOsh16NCh0tVbfRFE\nAIlnzJgxGh7w+eef1zU4JKUNNtjAHXDAAW7jjTdWZthcRhjBrle9SWBGZCk2TzBMGCVYM/k44YQT\nVB3NGitYb7nllm6rrbZSCdxfY9/RQ8CYY/TGpKotuuaaaxxqtNNOO62q97HK64cAiYjRChArF6bI\nOhrBv7t27aquO0gya621Vpqzfv
 1a23h3hmHCANkgrGrHjx+vjJI1TAzh+vTpo+uzMEnKbb311s58\nQqP1LBhzjNZ4VLU1mLmfc8457vDDD1cT9qrezCqvKQLvvfeeI6AD24svvqiMb8MNN9Sx5uW73nrr\nGTOs6Yj8fTNcUVBXs8EUYZbjxo1LTV4OPPBAPcZ47bTTTrqRBsyovggYc6wv/jW9+9ChQzXv3skn\nn1zT+9rNqoMAhjMjR45Ui+MPPvhA/fe23357d9xxx2naMVSnRtFDAGaJSpsNDQ6Wso899pgbNWqU\nu+iii1y/fv1cx44d1Ve0Z8+eatwTvV40fouMOTb+GGsP+QNecMEF7qijjjIruhiP+cSJEzUCzR13\n3KHuBsstt5zr0aOHOtpjLNJcP8EYQxPbpjOJ2X333XXDTxPfSxglQRRglhhK7bnnnuqTvPrqq8e2\nn3FruMVTituIldneQYMGuV9//VUDQ5dZhV1WJwSmTJniLrzwQnWjWGONNdQikgg0qOZwxmfSwzqi\nMcY6DVAFb8sYMpaMKWPLGDPWWMEy9rjS8CzwTBhVFwFjjtXFNxK1//DDD+7iiy9WdZtlSYjEkBRs\nBLFFCdDAGtTSSy/tzjvvPE0HhQUkkV0YT3zpjBobAcaYsWbMGXtSgvEs8EzwbPCM8KwYVR4BY46V\nxzRyNV566aXapuOPPz5ybbMGpSPw+eefu1NPPVUNplC1Ie2PGDFCnc1ZM0Z12ii+g+k9t718CDDm\njD3PAIEHeCZ4NnhGiA/LM8OzY1Q5BIw5Vg7LSNZEDMnLLrtMfa1atWoVyTZao5x76qmndO0Q31PC\nlWFRjHM+LhmsN80777wGkyGgCPAs8EzwbPCM8KzwzPDssP7Ms2TUfASMOTYfw0jXwPoEf6Zjjjkm\n0u1MYuMI48daEkYW+CB6iYCYpIT3Q3VmZAjkQ4BnhGeFZ8ZrGHiWeKZ4tnjGjMpDwJhjebjF4iqc\n/YcMGaKm4
 WbWH50hI1MFBlJYIR588MHqkE8IMtaUiEVKbkIjQ6AUBHhmeHZ4hniWCPLAs8UzxrMW\nzphSSr1JLmvMsQFGnwV5QlQRGSVMLNyjSj3iiCPCh+13nRCYOXOmO/vssx0BufE13Xnnnd2HH36o\nM36fHLhOTbPbNhACPEtIkTxbPGM8azxzPHs8g0bFIWDMsTicIl3qk08+cZdccomq4U455RRNr0PI\nsKuuukoX6kkga1Q/BIhMhL8aa0J8H3nkkaoGY0ZPfkAjQ6AaCPBs8Yxh6cozF34GcyWFrkY74lqn\nMce4jlyo3fhDQbNmzdI/AOsQ+EaR0Zw0Q0b1QYAg74MHD3Y46rMudOihhzomMvw2l5r6jEkS78p7\ngGeOZ49nkN88kzybPKNG2REw5pgdl1gdRX0y55x/BTtiAZ4s6G+88YZmX8BSlX2j2iLwwAMPqMP2\niSeeqMl+eTGde+65jswMRoZAPRDg2eMZ5FkkATXPJkEFeFaNmiJgzLEpJrE7guSY6ftGcGMW4fF/\nQpK8/PLL1S8qdp2LWYMnTJjgtthiC5XcceAmIDgqb8u4ELOBbODm8izyTPJs8oyiZeKZ5dk1+hsB\nY45/YxHbX5MmTcoZJQMmSX45glHvv//+se1j1Bv+/fffu3/961+OBMGs5xAf8/bbb7c1xagPXILb\nx5okzyjPKs8szy7PMM+ykXPGHBvgKWAGmI/IAtClSxd1FM5Xzs6VhwBBwEkxdO+997qbbrpJXzak\nHzIyBOKAAM8qDJJnl2d4lVVWcTzTSSdjjjF/Aoji/8UXX+TsBYyxe/fu7tFHH3ULLLBAznJ2onQE\nWLsBW9ZviHPJJGXfffdtouIuvWa7whCoLQIsy/Ds8gzvuOOO+kzzbPOMJ5WMOcZ85ImnmCsKBhH+\nib1IcOJ55pkn5j2NVvOvvvpqzZLAxOS5555z7JMB3sgQiDMCPMM8yzzTPNtkAmE/iWTMMe
 ajjqVq\nNmImSIZx1hS8JWu2cnasNAQI8UZCYdZm8B0jGgkBoY0MgUZCgGeaZ5tnnGedZ55nP0lkzDHmo42l\nKqrTTOrTp4+79tprLcdfJjDN2Gc9ZrXVVnPvv/++e/bZZ93555/v5p577mbUaJcaAtFFgGebZ5xn\nnWeeZ5//QFLImGPMRxrJMZM59u/fXzNxxLxrkWk+4fmOPfbYVLb28ePHm7QYmdGxhlQbAaRInnmW\naNj4LyQhh+RfnuPVRtfqrxoCH3zwQdqDSogo4qwaVQYBsh307NnTvf322+7WW29VQ4XK1Gy1GALx\nQQBjPtYesXo/7LDD3EsvveRGjhypMVvj04vSWmqSY2l4Ra70u+++64IgUAvJ4cOHG2Os4AiNHTvW\nEcSZYAqvvvqqMcYKYmtVxRMBLLP5L/Cf4L/Bf6RRqS6SI9aTJOk0aj4CPjoODy2OvETCiRKxoB/H\nFEzDhg3THJgkjyWRrAVvj9JT1RhtGTdunGbOyNabDTbYQAPV+3NoMEhH5QkL9ZYtW2p0G3+sVt8r\nrbSSe/nll91BBx3ktt12Ww1ujtFOo1FdmCPZIp555hkzfW/m00T0G/4kxEwk+zdbVOjXX3913333\nneaUixNzBFPWVK688koN0Hz66adHBVJrRwMhgLaH/Is+aUBm11577bU05tivX780x3ys0d95553M\ny2q2z2QRS/hOnTqpRSttYWKeaf9QswZV4UZ1YY70Y88993TXXXddFbqUnCoxtZ42bZrbeuutI9dp\ngg4wq4wToSraY489dJLBegpSY72JHJ28KHHITgqRwX6//fZr6O6ijsQ9grCOSyyxRKqvTz/9tGbO\nIJSbJ1JOYQDDtyf8ltu2bet36/bN5JGIOoSm/Pjjj91dd93l5p9//rq1p5I3rhtzrGQnklpX+A+U\nVAwq1W/iSe6www4aIeTJJ590//jHPypVddn1IMWiLsdCMCkE9uQkj
 TJzZEkIn7/mhAhs0aKFWpQT\nqCNMZMjIHG8y6zA5atOmjZt33nnDxSPxm0kkyZS32247nag/9NBDbqGFFopE25rTCGOOzUHPrm0I\nBL755hu3zTbbqBSOuh9VUb2J3Jz77LOPGjzwUkSNRoi6xRdfXJv21VdfaUhAophsvPHGrlu3bqkm\ns/bMS5byU6dOdY888ohKJ4QFQ+1Ffx988EH1gUVSXnDBBfVaVPSPP/64hhns2LGj1oE0sOuuu7r1\n118/VT8/8t2f88TqJFcgUgUxO7FyZMJB21D/o/WgLb1793ZLLrkklzgYI5nr6StLL16iQvUIM/nn\nP/+pmeyRLJGkwKJXr156LR+57sk5JDXWyYgAwzXl5NPEbYqUTyNGjNC8qc1hjtmuJRQkfoR33303\nTVYiaQAath9//NEdddRRusZ44YUXRs5KlLHlv4MWi7F+7LHHIiHZehzL+hbdd9kkf6yArVSSWVAg\ni7mlXmblY4TAf/7zn0AeyGDGjBmRbrW85ANhBMGKK64YiEQQmbaKJBtcc801iuG///3vQBhHIC9K\nbd8TTzwRSBLrQBhMIOrfQBhHcMQRR+g5YTzaH7CXtESBJLcNuF5UXYFIJFqnMN1AljUCYUKBMEy9\nTsIQBrvttpveT5hqICo/rVMYUCARlgJ5YaewyXd/MBQJQus55phjAmF2em9hsMHMmTMDYYTaF2HE\nwVlnnRVIZohA1Nlat+QgDYTRB5JSScuwD0nOwWCppZbS33zwTAlDD4TB6LF895RJRiBMNZD1sUB8\n9QKRcgJJ/huIa06qvkI/xCI8kLijgTDzQAxlAp5t6MsvvwzEQT7vJmHYClWfOi/MJZAJQSBMMnVM\nJjLBFVdcoeMlqecUV8ZSJjypMlH6wVjwX+I/xX+rXsTzz3+jGTQSN4CyyZhj2dA1/IVxYI4iVQUi\n2QRifReImixyY8LLnD+5SA6ptsFgJIt7IJJE
 6tjBBx+s5V588UU9dumll+q+rP+kypx00kl67J57\n7kkdk1yfgaxdBaK+1WMiGWmZ8IR3ypQpyqxgTiKtKYMrdH/xvdV6RO0fwATBWdZOg1tuuSUQNWJA\nnZDv3yuvvKL7fEhuwQAmECYYWpg5co66PXNkP9c9L7744uCMM86giBKTADAVTYE/lPN74sSJypRo\nM/eSdfS0sh5n6su1iTFa2jX5do4++uhArLtzFgF/UTkrhu3atUtNlnJeUKcT/JdgkPy3GPt6EOPR\nXOZoalVB0Sh5CKCu2mqrrRzqS9RB8rKJLAioGT1hIYhqkizunoTZuOWXX17dAnABaNWqlZ5affXV\nfRGH+T205pprpo6RZov+oyIV5pPK2rLWWmulymD0IVJqKoM8KtFC9/fqUAxOUJ36RM9YZ7JOTp1Y\nM2N8AhHIYr311kvdM9zf1MECP3LdUxiYJvTFpcgTWEyfPt3vNvkmGszZZ5+tKk7UnzLRy2r0JszM\nHX744U2uL+eAMBAnExcnE4iclxMj+ZxzztFnVaRyVUOj8o4a8V8S7YLbbLPN9D8mWo9YeiYYc4za\nk2XtqToCWKVi4IARDozRr3lV/cZl3iDMLIjUw1obrialULasLN7F5qeffspblUgBeh7L2WLu741M\nYIxh4jiMkfCGGJZ4hshaW5jC/Q0fz/c72z0ZXxg/a5WstxZLImXrmln79u11bTFXYHmYVaWC+uPD\nyBotDKUQsWaKuxGTiqgS/ykY5Oabb67/NRhk3KxYjTmGni7+TMw0MU+eMGGCkzUPnTVThJeorDGE\nSjv9gzPj5uXhZ+sYClAWiy0kEyy4Kkn52ljJ+zRqXbyIsQDFyEPUkJEzbMiGe5hZwHAmTZqkBime\nuWW7JvNYuI5SzlHWuxCIOlUlwXLuTz3kBsRYA8aOZTDBrLNRvrZmK5/rmGeYoh4tiTnihkSw7TPP\nPFONnfgfDxw4sIl1Kk7
 8hSLEMF5hKT9XWzHCwRgpc0KRrTySOL7NftKSrUwUjsl6shszZozihnEZ\nkrEfkyi0r1Ab0u2IC5Vu8PNY0ImRgL4M8HMjIr0nItKjbuHF2rdvX1Utvfnmm+60005TqzosyVBR\n8UfkWhximbVWmvK1sdL3asT6iDvLy48oTVhkRpk8k8ClwxNqUSQ9QgWGiUnT0KFDw4cq9hsJYN11\n11V1XnPuP2DAAGXqMEYoU2LkGH0O95djSGeoYUslrHA7dOjgiHaEKjhMqC+JOpOLNt10U32xYwHL\n/ZEesWhmQuUJ5g5Ty7fBEAoRKlXqyHThyHUduRbBbpNNNslVJDLH+Y/xX0M1HbuYz81ZLG00gxys\n0uSpUms4FtvlD5EGjz8vqo+04zLD1OvEN0uPi9Sp+1gbVpp8G7DYy9bGSt+v3PqiaJAjL0m10MRy\nMQ6EMQPPI9aW8jIMeK6ESajBiqQTCsSkP5DIJMGdd96pVuPeMlgmZnod5T15y9ew8QuGPtTvy2FI\nwT6WrJ7EVUStTUVC0kPF3F8CU2g9MmH01eg31rLU//DDD6uBDgYo7F9wwQUp4xKsbjFiEck+wEAI\nwyMJ36fl+Pb7WLmKijaQtUOtO9c9ZcKg12JlKqo9tfAVtW4wZMiQtLYV2hEpMcCKV5i3GvO89dZb\nhS4p+ryoVAPRPAVY1maSJBIIeG5lQqSneA5kgp5mPZx5TRT3+c+BHX2pBfFcNdcgx6xVQyMls8tA\n/KD0iPgbBaLbD539y3Qb0DOZo4RJUwsyWUfRBxwzccpJPsW06yuxU6iNlbhHJeqIGnOEKcBQwpaL\nlehntesQ/0V9lrp27RqIelNvB0PEGpBnjE20GvrS56RIOoFId3pcopYE4qeoTAHrTsriosHzSTkY\nBsck60ggUpBa7LIv60QBFrAnn3xyIBJjELZw5R757i8q14BJIvWIf2YAo5a1NC7Te8LUsJDFtUMk\nN6
 2f/9wNN9ygZWBgIqkF4kQeDBo0SI9hoevbigUk/03cTrA4hennuyfMhH5QJ23iG8tdb6GrNyjh\nA/cSmLz4O5ZwVf6isn6oriLZSokfqLZb1KgBkw2JqBNIRoxsRSN/jEkJ/8HwBK1ajWasjTlWGF1v\n4o0PGf5hYcKvCdAzmSOzOv50DDyzv1zMEX8u/JPEEi4477zzAmblELNeXg5sN954Y+pFxywZ83eO\nh33w8rUx3N56/o4Sc0S6EOOKQNaOyn4p1gtLXu7+OclsA8+EZ5iZ58rZ95KjWESqpAJj5f65qJz7\nw5TCbijUnykxiYo4q39s2C2ASWIpxH8Pac9LYKVcm61sZpuzlSn2GDjzDshF+DoyISm1z7nqq9dx\nxp7/IP9FL/FXqy2VYI625igohoncfRDGB96aLnw+22+iQRBdhDUAYZDZimiEC/TvBOzFGo7yRDaR\nB16jdbBQfeCBB2qEElLBQORQk5eHmrwTnslTOW301ybxm7iPGEqRjzFOBgGMFWtwuaxpMXgIPxeV\nHFssC1mv4/65qJz7gz/PtSfqz/zPYNxGxolM8i4hHC81jBr/OwkmUDGLycw2Z7a1lH1wzhexhwhJ\nRBoqtc+ltKEWZRl7/oP8F/lPRp2MOWaMEGlYIP6gsqaacfavXVwBZNasTEucjJ1Ez1D/MQY+FxHO\nS2bm+pBjkYZpOVaAMpvVS4gliQ8Ylq4wTk8YABCcOPySKqaN/vqkf5OgVda4nKzLpfztko5Jrv7z\nXEMY9xgZAtVAgAkO/0X+k/w3o0zGHMsYHVw6RC2qEehhZAw0lqz5HMlxgIYRZnOA9k3A5BuGieUa\nxAyLeI5rrLGGL2LfJSAg0VCcqMbd8ccfr1J6CZcmriiTPVmP1X5jYSmqfPW7SxwQ1uGqI4DGjP8k\n/03+o1El83MsY2RQjxIYuRRCpVDIAZro9qhzJSampvQiYDTBo43KQ4DILjjM455
 jlB8BIswMHjxY\nN1+yFD9Kf419GwLFIMB/ctSoUepHjmtVFMmYY41G5ZMiHKBRt+JDSagr1KvkRpOgwzVqYWPdBhU3\nDsj4hMV9raYSI0NwC3AQV4ms1bGGVsl1tKw3KeEg2UAI4YYjPoE2okj8p3mxs55JsA/WBosh/CuJ\niOMJ7RNrrBJX1h9q+G+eRbQT2GnwXyVIQNTI1KoljIhYVpVQOr1oMQ7QXIFRDnp5yrPOmG+hPv0O\ntucRYO0MoyewJDamkXPiI+hI9RQXItgFL0+CakSRxDfTsfZPqrAVVljBdenSRaPqFNPWfv36aTAR\nAoqwYZxCnNukEf9N/qP8V/16d5QwMOZYwmh4QwXWZ/LRDz/8oKfFZD1VjKgmGOSgKhWz7VQ0k/9j\n70zgbxur///4maXM83SNmceLK+QiylCXSIV0JcONyJDhmi7XeIWQocgQIckU/jILZZ5lzpCUmRSS\n2v/1Xqxjf/d3n32mfc7Ze5+1Xq/z/Z6z97Of/TxrD+tZ02eBomP90phVKGg7ku8V8FM6tc4BSZwO\nXANAmp0+4gC1DLmnykK4GMBy3WCDDYYMuQgCHm2Rgsxo40C4of3gQwMEnPqaWURMAbEE/LcP74VB\nFI7wiWeUZ5VntnDUSZ5J1RBysnghD4Tm6MgFRH3UOnlpyazyEtLkZNpISkat7hpJ140SoO38lPSh\njp6YW2xT6f73K8+RXFTq3Qn0X+l45gPO5gB1JKkH2W8CJAFwhDiRgwi4gVh84puHfd9tt90UuKDs\nOYvDJtbBBp5Vnlme3byI96+DAOTFzR7000wCNMMQX5mievRgSF07Rb+EI2gjFIwF5szpEw6QSB6v\nC8keEssRONyXApSvxZFBrYHYJn5vhXazOpG6Q/5QE1HAwxUgQLRRRZyRYJ5a0WKxhig82/HHH6+J\n9xzHefjNRzQm6yoCOo0+WBACI8fiEuL8HGMLUL6LX06LHA
 uubHTFFVe0DJ5RO2kHX6hLKcF10dix\nY4f1suSSS0Z86hGJ7xSm5sWNIAWBK86LesdVfTvPKs8sz25elIdwdLOqcLFX1EwCNGMh/2fcuHG9\nGlZlzoO5Gt4BcJxWoqkyE21hIiJkgqAuqV8MUyAkcGzKI3mRB8EYDdQlJEAEgGgS0jH9k7tLbi4R\nrIBwY5aFCJ4gtQgeE9xz7rnnBgD46QO/GyZDIoQJTiE/V6DO9DiBvwuC/arbHn/8cTUpUu+RsP5L\nL7007Ljjjlr5ArB/EdqBskzrrLNOuPfee/V4gZjT83JdqccoBZFbBs/Qjj7+Q/4wwVpZn7Q0AwKF\nAOZgjklizqReyQs+uUt/wxvMiIJdq/wh34/kfllIprYflI1cU+4nnl2e4cJQJ5J6kMyqnfCpmWOl\neKlWQQdkWgRjM4cUuk0/NEepkBLNOuusQ+DJCs2kHg4OLFKAuuME2LWgQNU0PoDLAf1eddVVa9uA\nW5MoVoU8tGNFcCqIdBx8W8q8qUaEVgexT15yQ/CF0fbYJohS2kbqEepvcF9xIQAPh2YGicDVfXGg\naonmVNB1bRD7w/G4LET41LbyDBmgem1j7ItU7ND+GU+9DzB6SbI5UGwgSRKxqn3ZHJL7478ZqyxW\nVAuV/Oga8Hq8zSB9B1KQZ5dnOA/imnZqVnXNUbhYBBKzl67UWa3GS2UVYWxlGIOYZrROIBXS4/Bk\nZRh7L8aYpklT0mnhhRfWIDDGQDoB+Y4Gc8g2YOTQ0khbMIK/giWscGy2jYhDtpGC1CxxLggNkjQm\norTlBanb0sbLjjhSlDaUP+2AZ4gZVyMkiZKs90mrwyhmUT1t2jjQ0hk3Wm4jgldokZS2YyxiWm50\nSKX3c0/x7FLrk2e5COTCsQhXQcZw4YUXKs4qkXC8tJxa4wCoLpgLSfx3ap8DaUIJMACirbMIIUo+\nIhGmzRJuBqiZAr/WZ5pQioNn0K4Z8
 Ayiwht9EGBJYqEApfGD+4/o1Vbmg/kYPogWnTzVwP3m2YWH\nUnWlEHMffvULMazBHETai2kwOdH6rCXYRDWQLAi/1nsdvCPShA9cqLfdOCRVKlQDoiBwNyltHO2A\nZ5CGwZizSKJStchxvA3CES0nzR+Jv8yKBsSPyfqOtizlqFSoZrUbhH08u1gRpNSf5n/2e86lFo5l\nQNFIXuBGSCXJ9r3+zQvjlltuUaxY8rekjl7hK1lwH9x8881B/EG9Zpef72MOEOCCOWzjjTfWLaZ1\n5WkiQzBiukwjksknTJigH6qYNALPIPgoTfuL9w3coxQ8j29Ss6nUulQ8ZQJzTPsl2AjtD8zlVoiA\nIPrhWXMKQWIuFDKTZxoozX5Sqc2qRUfRSLuwRUYqkYAIjZ4D3gr0D14gYLvy8BaZAGpn9Z1MGC/y\nmHs9NhY9JFsDVQZJ0IMKh6T2BHCFpBwMGR5CJCnk6Oexxx6rtcOsjaZlwhHz4ogRI9RdQLI7EarA\nIUJSMFjvKRNOaRGKNq74PiJE8c/x4nzmmWeGCLdWwTPwjRIJm/Wx6je1SX78hYT/N998MzBnIyJP\ngX+TwCfbpP/xW/LCh6jgIwFLNTQYrgG/idI0X6s2HOA/PMM8y1Z8oa+s6CQyqAjRqs1EhnUyx7yP\nJSpLAgCGdXvOOecM29bLDeSVyeo1EmFYOy0RhEQBCtxVbVuzX3oZrSqpBhEV052Gc4B77cQTT4xE\nk9JISnlZRyJYIgF+1t9i1ovE3x2JryeiUru8jDSf0PIWSdBm24wzzhjZPSppF5GYMrUyPQXBJTUh\nkhJswwoUi3lMjyO3T9CeIrFIROKX1Hw2QDWkTJv2LSkQkQSmRB988IFOgEr34kfUfUsvvbTmYLJD\ngla0qDhjYU5JIleyV+AZROMCBsCzIdYgnRPFopMkyDcR8+NZ4h6Fl/LyV95JqkvEXJ2GcgA+8Ux3\nQvC502hVVpBt
 UxGEY9uDL9CBJDj3G/mDFw83lCDlD+EML0zxsbScHtEr4fj666/ri7rDB2HInP1H\nNgcQjqR8QIAGiEZa9wCQYEgRgRB+LMI6IYFarPWX7Kcf4Bkszk2oJ8fDbxYd8ar3gDEAvuAIOWnc\n+mgbzzKLL57tdikP4VhqnyPmPvxjhFdLvpbwI2jEJ8nLmAMxExK5Rsg4xYVx3JMygW8KX4EI91pk\nKGaiG264QZ3thLLTB+Yb8BIl70v7psQK5hzOh6mEyCqwHi3xmcgzI4GL03p4JPnKijuMHj06rLLK\nKjomQSNRsyVtRSiFMWPGaMADZbAYK5F/5vAnSAdTDf8FLUQTpAkV55g8iURsaJlllhnSrazc1XwF\nH+FX0Uhy5vRafulLXyra0AZiPBa9WW+yVF+wqih5lMCiCHk9wjxJubdeUiNzqKV+2JgACuDjVJ8D\nBHXxfubZ7ie+dGmFIygaFGfFNi2JwiocEZSEA+MY5yF54oknAg8TRTWxZfMCJXADpz4+AgQgghKw\nYME81BBihCr7xZyoyB30Q5rFZpttpgIWYYHvBuFIXpiYhjSEfamlllJUD/wrIIcgTMjbIY+J0kkE\nLCDQ2IbwM3+GIX88+eSTivwhJiONXGM8jz76qApji2JFuILgz7jTCBBzBHoWEdQAKkmSLJQ8ifxh\nDzLjKyKxCFl++eX1WhRxfFUcE3mBLCbxTyZf/r2eL88JPnKEFJ9GwrrX4/Pztc4BUtl4pnm2+ykc\nS21WTUPRwP4vlyMS539NI5cEZd0mDvTatv3331/xDc3MI7BP2gZTsRE+DHwy+EkMfQNfCL/jBEKH\nlF+pbRJBo32lIX+kIZWkIX8YEsfpp59e6xfMSs5fj2zuzL/ex8xhyT4YK6aMJIFtSV9SYzK5K/N3\nr8yqsmBQ/03mYHxnbhw477zzFGmHe0IWgZEE1+TWdzsdgU8qCz4F+88y77bTtx/TPw5IZaKIZ
 7td\n4v7s0NVyUamjVU2jEkbUyMwucfMgWIzQcsstV2tHiRgi4tC2IHKXIFYsRoRyo4miWcYRQmx/vf95\nIH96ssnaAABAAElEQVQQ9YdJltQPuUH0VOeff75qqvXOC75lPbQP247Wm0b1NAC0aKiI+YPi69GU\nEzN7p83Lt+XLAe5LIk+J1gThxZ6tfM/SfG8OntE8r8rUkmf6gQceUNdUv8ZdauHYLNPShKj5Pyyc\nvF5fhKRDvUb+wPyJOZhweUy00PXXX5+ZrkBuWSPUD/anEeYoBKGF0Fsb/KoQINVFI8zOCMiRI0cW\nbWiVHQ+LT0z/9ql3P/WSAWnPdy/P7+fKnwNSEkyfbZ7xflFpfY6tMAxBU4+y9nEMPkSo2wmpaePY\naqutggA6q/+UnDH8mpZcrYNK/Ln77rtVgCY2D/lJUFIaZiRaKkQgEJXNjSzPrIjCEW0evlFJwqka\nHCC4jRxEgtbWW2+9IGDehZ8YuZdo0wTdJYnFZtlANZJz6Mdv3rc82zzjraIO5TXegdAcO2GWpFkE\nVjFmVkQ4JROiO+mfY7kJzHwZ70uqIQSpcaYRrWiRoIBkEUEzBChlfeKJy/G+QP1gBU7pojiRJI2p\n2TTo+L5+f+fBwYTtmkO/r0R+53/44YeD+Io0kM1cHvn1nm9PWJMotcSL3KK942coK6hGfA79+s4z\nTXBgK+6svMdaauFoJkDTbmCOmQFtH9uIqoPiyB9mTk0KOh5OI6lMHdDGpAirbQrrr7++1hw766yz\nNMWB/5KPo1Gi+GEg6zs+LuuAceH3I9rPKAv5gzp3mLLoC80xi9A0sxA/2Gd1+ZL9IPzFCR6OOeaY\nmo8T3pC+Am6pwWQlj+vn7+eeey6MEI3aqTockMCwIMFfpZgQ9x/R6pKzOGy8pJkR4U7sA5HtRNIC\nLSfgAcHqag47yDcM4QAWIXjcLyqtcOQlLzXVlG+kZVx11VWaLoGwgghk
 YdVB6gapHtAhhxyieYKk\nVUgUqG4jqMDSGNggKBd6M3MDk3pBMdd1111X2/KHXD/wRknFILcS3wuaJdoVWhnaG/BSECvgE044\nQfMgeYAoHIuJBaEj0bKa80g7+iTohn7wL1pwEPtIFyGceezYsfzsKiEYCbggnYWxwl+prxZ4YRWR\nyFlNpp4UcZw+ptY4YK4DLCpFJp5/AvvSCNMwuKnxKjG4NEjFosC0LaDTjvVtH3GAZ5tnvF9UWp8j\n0UyG1RhnHhFOcWL1gcaUJARknPAbQGiGmDK5KAjO5ANKVCfHYlIBUR8ih9ISnflN0j+fOBEARDQp\nnyThq0AzRDtDGCYJ4IFWAY2TfTTzm7lSSxITL+MhWrfIxAvGrkGRx1nEsbEYM18YL21e8vj4jFjk\nCbRZkHQpzYsFDCNOBIrxzICnKmk7mlPMIo/ALrQmzPM8J5///Od1MWnHEvlNbrEUI9bzk+gNUDhm\n/WaCewhKY2FMfjCgG3GAccyYLJL5T51KFnXdjhWweSX/m5k1HjVPm6KDaiTn0c/fKAmtBELmPdbS\nCse8GRHvjyT9RkEe8ZdyXDDG+2nlu6WgJI+Raub6gKOh9op4WRZdMMILhKObVdu7K7AIcI+zELzn\nnnvUlGnCEeAKgCbwtxOQtvbaa6sgRKDhtsACAzgGyE34t7l30ZII9ELwSS6k+oKx6GAhYR+L2V/+\n8pe6OMRygvuCSGMELAsyLDS0syjy5Kxoi7kVKw7WjcMOO0xBQBDwBIsJrJwG72ApQsgKPqd2UU84\nIrjT/Pzx8wIE0i6ogFmjkpaNooNqxOff7+8Ix36aVV04fnwHkAcI8ZD1m9B0edGw6uRhpzqG03AO\nIBzjJujhLXxLGgfQGoFaM8sLqTCY0o2oxg6EF5YEFh+4DIgeRThi2aC6BDX3iGxGECKMEJpocZji\ngURkG9/R8ND2EI74xCnmjZDEv20+dMHvDQKEHqh
 Yg489jTDzo2EKyLnuPv7441Vw4cKgT8aBVcfy\ndbH6oPnWI9

<TRUNCATED>

Mime
View raw message