{
"cells": [
{
"cell_type": "markdown",
"id": "7ccf6e03-085d-436f-8b1b-92a07429d321",
"metadata": {},
"source": [
"# Deformation Fields and Grey Matter vs Grey Matter and White Matter "
]
},
{
"cell_type": "markdown",
"id": "43bf70fc-26cc-4f52-b1a5-2e76d01b833d",
"metadata": {},
"source": [
"## Data Loading"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "1eadee30-8dec-46ac-91fa-acad5251d88d",
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"suppressWarnings(suppressMessages(library(\"tidyverse\")))\n",
"suppressWarnings(suppressMessages(library(\"ggpubr\")))\n",
"suppressWarnings(suppressMessages(library(\"rstatix\")))\n",
"\n",
"library(tidyverse)\n",
"library(ggpubr)\n",
"library(rstatix)\n",
"\n",
"\n",
"map_abb <- list(\"df_gm\"= \"DF+ǴM\", \"gm_wm\"= \"GM+WM\")\n",
"\n",
"all_results <- c()\n",
"\n",
"df_eval <- list(\"crossval\"= data.frame(), \"test\"= data.frame())\n",
"\n",
"\n",
"for (evaluation in names(df_eval)){\n",
" for (mod in names(map_abb)){\n",
"\n",
" filename <- sprintf(\"%s_%s.csv\", mod, evaluation)\n",
" path_col <- file.path(getwd(), \"..\", \"..\", \"..\", \"resources\", filename)\n",
" \n",
" df_mod <- read.csv(path_col)\n",
" df_mod$fusion <- map_abb[[mod]]\n",
"\n",
" df_eval[[evaluation]] <- rbind(df_eval[[evaluation]], df_mod)\n",
" }\n",
"}\n",
"df_val <- df_eval[[\"crossval\"]]\n",
"df_test <- df_eval[[\"test\"]]"
]
},
{
"cell_type": "markdown",
"id": "fe1638d1-16cd-4c7a-8a8d-e808fb095a3a",
"metadata": {},
"source": [
"#### Validation data"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "d7b0dc7c-cb46-4bd3-ad83-4b7ac2f37e0b",
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"A data.frame: 6 × 4\n",
"\n",
"\t | fold | r2 | MAE | fusion |
\n",
"\t | <int> | <dbl> | <dbl> | <chr> |
\n",
"\n",
"\n",
"\t1 | 0 | 0.8026467 | 5.740682 | DF+ǴM |
\n",
"\t2 | 1 | 0.7473344 | 6.313860 | DF+ǴM |
\n",
"\t3 | 2 | 0.7362875 | 5.625505 | DF+ǴM |
\n",
"\t4 | 3 | 0.7456859 | 5.830985 | DF+ǴM |
\n",
"\t5 | 4 | 0.7941903 | 5.643035 | DF+ǴM |
\n",
"\t6 | 5 | 0.7565052 | 5.573205 | DF+ǴM |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 6 × 4\n",
"\\begin{tabular}{r|llll}\n",
" & fold & r2 & MAE & fusion\\\\\n",
" & & & & \\\\\n",
"\\hline\n",
"\t1 & 0 & 0.8026467 & 5.740682 & DF+ǴM\\\\\n",
"\t2 & 1 & 0.7473344 & 6.313860 & DF+ǴM\\\\\n",
"\t3 & 2 & 0.7362875 & 5.625505 & DF+ǴM\\\\\n",
"\t4 & 3 & 0.7456859 & 5.830985 & DF+ǴM\\\\\n",
"\t5 & 4 & 0.7941903 & 5.643035 & DF+ǴM\\\\\n",
"\t6 & 5 & 0.7565052 & 5.573205 & DF+ǴM\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 6 × 4\n",
"\n",
"| | fold <int> | r2 <dbl> | MAE <dbl> | fusion <chr> |\n",
"|---|---|---|---|---|\n",
"| 1 | 0 | 0.8026467 | 5.740682 | DF+ǴM |\n",
"| 2 | 1 | 0.7473344 | 6.313860 | DF+ǴM |\n",
"| 3 | 2 | 0.7362875 | 5.625505 | DF+ǴM |\n",
"| 4 | 3 | 0.7456859 | 5.830985 | DF+ǴM |\n",
"| 5 | 4 | 0.7941903 | 5.643035 | DF+ǴM |\n",
"| 6 | 5 | 0.7565052 | 5.573205 | DF+ǴM |\n",
"\n"
],
"text/plain": [
" fold r2 MAE fusion\n",
"1 0 0.8026467 5.740682 DF+ǴM \n",
"2 1 0.7473344 6.313860 DF+ǴM \n",
"3 2 0.7362875 5.625505 DF+ǴM \n",
"4 3 0.7456859 5.830985 DF+ǴM \n",
"5 4 0.7941903 5.643035 DF+ǴM \n",
"6 5 0.7565052 5.573205 DF+ǴM "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"head(df_val)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "e718beab-7016-43df-86ad-8bce779c3365",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"A data.frame: 2 × 3\n",
"\n",
"\tGroup.1 | r2 | MAE |
\n",
"\t<chr> | <dbl> | <dbl> |
\n",
"\n",
"\n",
"\tDF+ǴM | 0.7884606 | 5.548079 |
\n",
"\tGM+WM | 0.7896436 | 5.445226 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 2 × 3\n",
"\\begin{tabular}{lll}\n",
" Group.1 & r2 & MAE\\\\\n",
" & & \\\\\n",
"\\hline\n",
"\t DF+ǴM & 0.7884606 & 5.548079\\\\\n",
"\t GM+WM & 0.7896436 & 5.445226\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 2 × 3\n",
"\n",
"| Group.1 <chr> | r2 <dbl> | MAE <dbl> |\n",
"|---|---|---|\n",
"| DF+ǴM | 0.7884606 | 5.548079 |\n",
"| GM+WM | 0.7896436 | 5.445226 |\n",
"\n"
],
"text/plain": [
" Group.1 r2 MAE \n",
"1 DF+ǴM 0.7884606 5.548079\n",
"2 GM+WM 0.7896436 5.445226"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"aggregate(df_val[,c(\"r2\", \"MAE\")], list(df_val$fusion), mean)"
]
},
{
"cell_type": "markdown",
"id": "3538a735-52a9-47b5-a81c-78884eb6ad2a",
"metadata": {},
"source": [
"#### Test data"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "66f929bf-69a9-4155-9b6b-1cf42a19ffee",
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"A data.frame: 6 × 5\n",
"\n",
"\t | subjectID | gender | age | y_hat | fusion |
\n",
"\t | <chr> | <int> | <dbl> | <dbl> | <chr> |
\n",
"\n",
"\n",
"\t1 | sub-474 | 1 | 34.01 | 40.33901 | DF+ǴM |
\n",
"\t2 | sub-292 | 1 | 23.73 | 31.65292 | DF+ǴM |
\n",
"\t3 | sub-382 | 1 | 65.91 | 46.45294 | DF+ǴM |
\n",
"\t4 | sub-434 | 1 | 67.24 | 56.62014 | DF+ǴM |
\n",
"\t5 | sub-395 | 0 | 45.03 | 35.61988 | DF+ǴM |
\n",
"\t6 | sub-306 | 1 | 30.18 | 39.87024 | DF+ǴM |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 6 × 5\n",
"\\begin{tabular}{r|lllll}\n",
" & subjectID & gender & age & y\\_hat & fusion\\\\\n",
" & & & & & \\\\\n",
"\\hline\n",
"\t1 & sub-474 & 1 & 34.01 & 40.33901 & DF+ǴM\\\\\n",
"\t2 & sub-292 & 1 & 23.73 & 31.65292 & DF+ǴM\\\\\n",
"\t3 & sub-382 & 1 & 65.91 & 46.45294 & DF+ǴM\\\\\n",
"\t4 & sub-434 & 1 & 67.24 & 56.62014 & DF+ǴM\\\\\n",
"\t5 & sub-395 & 0 & 45.03 & 35.61988 & DF+ǴM\\\\\n",
"\t6 & sub-306 & 1 & 30.18 & 39.87024 & DF+ǴM\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 6 × 5\n",
"\n",
"| | subjectID <chr> | gender <int> | age <dbl> | y_hat <dbl> | fusion <chr> |\n",
"|---|---|---|---|---|---|\n",
"| 1 | sub-474 | 1 | 34.01 | 40.33901 | DF+ǴM |\n",
"| 2 | sub-292 | 1 | 23.73 | 31.65292 | DF+ǴM |\n",
"| 3 | sub-382 | 1 | 65.91 | 46.45294 | DF+ǴM |\n",
"| 4 | sub-434 | 1 | 67.24 | 56.62014 | DF+ǴM |\n",
"| 5 | sub-395 | 0 | 45.03 | 35.61988 | DF+ǴM |\n",
"| 6 | sub-306 | 1 | 30.18 | 39.87024 | DF+ǴM |\n",
"\n"
],
"text/plain": [
" subjectID gender age y_hat fusion\n",
"1 sub-474 1 34.01 40.33901 DF+ǴM \n",
"2 sub-292 1 23.73 31.65292 DF+ǴM \n",
"3 sub-382 1 65.91 46.45294 DF+ǴM \n",
"4 sub-434 1 67.24 56.62014 DF+ǴM \n",
"5 sub-395 0 45.03 35.61988 DF+ǴM \n",
"6 sub-306 1 30.18 39.87024 DF+ǴM "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"head(df_test)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "27784f5a-5b68-436e-8ff8-07853a26db33",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"A data.frame: 2 × 4\n",
"\n",
"\tGroup.1 | age | y_hat | abs_diff |
\n",
"\t<chr> | <dbl> | <dbl> | <dbl> |
\n",
"\n",
"\n",
"\tDF+ǴM | 42.37309 | 45.59776 | 6.896464 |
\n",
"\tGM+WM | 42.37309 | 39.80127 | 7.919839 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 2 × 4\n",
"\\begin{tabular}{llll}\n",
" Group.1 & age & y\\_hat & abs\\_diff\\\\\n",
" & & & \\\\\n",
"\\hline\n",
"\t DF+ǴM & 42.37309 & 45.59776 & 6.896464\\\\\n",
"\t GM+WM & 42.37309 & 39.80127 & 7.919839\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 2 × 4\n",
"\n",
"| Group.1 <chr> | age <dbl> | y_hat <dbl> | abs_diff <dbl> |\n",
"|---|---|---|---|\n",
"| DF+ǴM | 42.37309 | 45.59776 | 6.896464 |\n",
"| GM+WM | 42.37309 | 39.80127 | 7.919839 |\n",
"\n"
],
"text/plain": [
" Group.1 age y_hat abs_diff\n",
"1 DF+ǴM 42.37309 45.59776 6.896464\n",
"2 GM+WM 42.37309 39.80127 7.919839"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_test[\"abs_diff\"] <- abs(df_test$y_hat - df_test$age)\n",
"\n",
"result_mean <- aggregate(df_test[,c(\"age\", \"y_hat\", \"abs_diff\")], list(df_test$fusion), mean)\n",
"result_mean"
]
},
{
"cell_type": "markdown",
"id": "07473604-b20d-49b9-b387-d10e3ad64c5b",
"metadata": {},
"source": [
"## Statistics"
]
},
{
"cell_type": "markdown",
"id": "fc35781e-4e99-4c27-b63c-997cdb95ca03",
"metadata": {},
"source": [
"### Paired t-test"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "864c14fb-2819-4046-a72c-c91ced0b96ef",
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"A rstatix_test: 1 × 10\n",
"\n",
"\t | .y. | group1 | group2 | n1 | n2 | statistic | df | p | p.adj | p.adj.signif |
\n",
"\t | <chr> | <chr> | <chr> | <int> | <int> | <dbl> | <dbl> | <dbl> | <dbl> | <chr> |
\n",
"\n",
"\n",
"\t1 | MAE | DF+ǴM | GM+WM | 30 | 30 | 0.6854774 | 29 | 0.751 | 0.751 | ns |
\n",
"\n",
"
\n"
],
"text/latex": [
"A rstatix\\_test: 1 × 10\n",
"\\begin{tabular}{r|llllllllll}\n",
" & .y. & group1 & group2 & n1 & n2 & statistic & df & p & p.adj & p.adj.signif\\\\\n",
" & & & & & & & & & & \\\\\n",
"\\hline\n",
"\t1 & MAE & DF+ǴM & GM+WM & 30 & 30 & 0.6854774 & 29 & 0.751 & 0.751 & ns\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A rstatix_test: 1 × 10\n",
"\n",
"| | .y. <chr> | group1 <chr> | group2 <chr> | n1 <int> | n2 <int> | statistic <dbl> | df <dbl> | p <dbl> | p.adj <dbl> | p.adj.signif <chr> |\n",
"|---|---|---|---|---|---|---|---|---|---|---|\n",
"| 1 | MAE | DF+ǴM | GM+WM | 30 | 30 | 0.6854774 | 29 | 0.751 | 0.751 | ns |\n",
"\n"
],
"text/plain": [
" .y. group1 group2 n1 n2 statistic df p p.adj p.adj.signif\n",
"1 MAE DF+ǴM GM+WM 30 30 0.6854774 29 0.751 0.751 ns "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Warning message in if (fill %in% names(data) & is.null(add.params$fill)) add.params$fill <- fill:\n",
"“the condition has length > 1 and only the first element will be used”\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAAJYCAIAAADXJFGjAAAACXBIWXMAABJ0AAASdAHeZh94\nAAAgAElEQVR4nOzdd0AT5/8H8E8SEvYUFMQBMpwoTsTVumcVpVJx4t7+rLZarYNvtXW0ts4q\nWqm7zoqDOqDixIm7iKI4EEVBAUFGIMnvj2uvaQaEQHIxeb/+Op577vLJHZBPnnsGTyaTEQAA\nAAB8+PhcBwAAAAAAlQOJHQAAAICRQGIHAAAAYCSQ2AEAAAAYCSR2AAAAAEYCiR0AAACAkUBi\nBwAAAGAkkNgBAAAAGAkkdgAAAABGAokdVNSuXbt4PB6Px1u0aJH+Xz0iIoJ59R9++EH/rw4A\nAGBQjDmxO336NE8rEyZM4Dr2D8bFixdHjRpFRAMHDpw/f77C3mvXrk2cONHPz8/e3l4oFFap\nUiUwMHDOnDkpKSmln/bPP/8MCwvz9fW1s7OztLSsU6dOaGjoH3/8oVxz/PjxkydPJqLZs2cf\nOnSokt5Wpbl///5XX33l7+/v7OxsYWFRq1atnj17RkZGFhcXV+S0Fy5cGD16tK+vr7W1tZWV\nlY+PT1hY2IULF0o/SvOrapoq62YdPXpU8/823t7e8sfGxMRoclSLFi0q9a1/SCQSyf79+0NC\nQry8vKytrUUikYuLS7t27ebNm/fo0aPSj9XR3yOAYZEZr7i4OO2uyfjx4zU5//jx44loyZIl\nun4jnIRx+vRpIvLz8yulTnZ2du3atYmoZs2a2dnZ8rsKCgpGjhyp7gqLRKIVK1aoPOfbt297\n9uyp7sCgoKC8vDyFQwoLCxs1akREjo6Oz549q+Abr0RLliwRiUQq34i/v39ycrIW5ywsLBw3\nbpy66zN58mSpVKp8lBZX1dRU4s06cuSIukutzMvLS/7YvXv3anJU8+bNK/sCfBiSkpL8/f3V\nXRahULh48WJ1x+ri7xHAAJlp/g/og1OzZs2ZM2cql//111/Hjx8nIg8Pj+DgYOUKgYGBmpz/\n8uXLFYywUugojDVr1hBR06ZNS6kzbdq0p0+fEtHmzZvt7e3ZcqlUGhQUdOLECebH9u3bBwQE\nuLm5paWlHTx48PHjx2KxeObMmba2tmPHjpU/YWFhYbdu3a5du0ZEQqEwODi4VatWfD7/5s2b\ne/bsKSgoiIqKCg4O/uOPP/j8fxubzc3Nt23b1qJFi6ysrFGjRsXExFTeZdDeihUr5syZw2x3\n7ty5U6dOdnZ2T5482bNnz/Pnz2/evNm9e/fLly87Oztrfk6ZTBYWFrZ7924isrW1DQkJ8fPz\nKygouHz58pEjRyQSybp161xcXBYuXCh/lHZX1aRU7s3y9fVVuAXKsrKyVq9eTUTMVyNWdnY2\ns9GrV6+WLVuqO7x69eqaRGJknj592rZt2zdv3hCRhYVFUFCQr6+vvb19amrq0aNHHz58WFxc\nPG/ePKFQOGvWLIVjdfH3CGCguM4sOfDrr78y77179+5an+T9+/dmZmbEdYudjsJITU1lTvvT\nTz+pqxMfH8/j8Yjok08+Udi1bt065gpbWlr+8ccf8rvEYjHz6JaInJyc3r9/L7+X/Th0c3O7\nffu2/K7k5GQPDw9m76ZNm5TjGT16NLP3wIED5X7DlS0lJUUoFBKRUCiMioqS3/X+/ft+/fox\noY4dO7Zcp924cSNzoL+/f2pqqvyu2NhYCwsLIjI3N3/x4oX8ropcVVOgo5tVuhEjRjCveOfO\nHfny5cuXMy+3ZcuWSnw549CnTx/m4rRu3frly5fyu0pKSqZNm8bstbCwUHiAwMktBuAKEjst\nnT17ljkJt4mdjsJgv9rGxcWpq9OuXTumjkKuIJPJfH19mV0bN25UPlAsFteqVYupEB0dzZYX\nFxc7Ojoy5SdOnFA+8Nq1awKBgIhq1qyp/MAxLS2Nec7i6+srkUg0f7O6wLZELlq0SHlvTk6O\nm5sbEZmZmT19+lTDc+bn5zPtNEwThXKFb775plu3btOnT09MTGQLK3hVTYEublbpjh07xrzi\n/PnzFXbNnTuX2aWQf8Dz58+Zb5KWlpYZGRnKFUpKSry8vJird/DgQfld+r/FABxCYldu6h6y\nKJ8tISFh8uTJDRs2dHBwEAqF1apV69Chw+LFizMzM9WdvKSkZOfOnQMGDKhTp461tbVAILC3\nt2/SpMnkyZMTEhK0C6NcmH9wyn7//Xf5ahcvXmTKu3TponCGV69eMf9/LSwsFBrkWOz/WfkW\nwfj4eKawfv366sJjv7JfuHBBee/QoUMN4UNRIpEwD3QsLCyysrJU1pk3b57yFSgd2/tKORso\nRcWvqhbYARnffPONTCZLSUn54osvGjRowAzaaNCgwddff63uyuiZjm5WKXJzc2vWrElE3t7e\nhYWFCnsnTpzIvNbp06cr/lqauHHjBvOKTHvV27dvly5d2qJFCycnJ5FI5OHhMWHChOfPn+sn\nmFLcvXt36NChvXr1+vzzz9XVCQsLY97Lzz//zBbq/xYDcAuJXblpklGJxeJx48Yx+Y0yOzu7\nffv2KZ85LS2t9D5t8v/RdJHYpaenq3tphUEJ7MCIPXv2KJ9HLBY/e/bsr7/+UvdCbN/H5cuX\ns4Xbtm1jCsPCwtQdyPT8I6KFCxcq72XbL3v37q3J+5XJ/TJoqEmTJmWek+31+PHHH6urc+7c\nOaZO165dNQx10KBBzCFJSUkaHiKrjKuqhR9//JE54YYNG/bs2WNra6t8Jb29vdPS0sp12g/o\nZpWC7f517Ngx5b2hoaHM3ps3b1b8tTSxZ88e5hWXLFly7do1lV/tXF1dyzUsSRd3ShPs1du1\naxdbqP9bDMAtE+0rXRHTpk1LTk7+4osvmB+/+OKL5OTk5ORk+f9lgwcPZp5CVq9efenSpWfP\nnk1ISDh06NCoUaMEAsG7d+8+++yz6OhohTN/9tlnzLfn5s2br169+vjx43/++eeuXbvGjRtn\nY2NDRD/99BP7GaxJGOXl4OCQnJy8ZcsW5sc+ffow53z48CHTxsAoLi6OiooiIgsLi169eimf\nRygU1qxZs0GDBupeiJ3uhH10QkTv3r1jNuTHYShg6//111/Ke9u2bevq6kpEMTExbCd0/bt7\n9y6zUUrn9xYtWjB5/507dzQ8LTObiaura926dZmSrKysmzdvnj9//uHDhzKZTOVRFb+qWkhK\nSmI2rl+/PnjwYFtb21mzZm3fvn3Pnj2zZs0yNzcnoocPH44ZM6ZSXq4idHSz1Hnw4MHKlSuJ\nKCgoqEePHsoV2N9bBweHCr6WhhITE5kNqVTatWvX3NzcqVOn7t69e8+ePZ9//jnTcTM9Pb3M\n4SCce/v2LTNgSygUfvzxx2y5nm8xAOeMeVSsjjg5OTk5OVWpUoX5sUqVKgozUe3YsWP//v1E\n1LRp05iYGLZms2bN+vbtO2DAgH79+kkkkjFjxqSkpFhaWjJ7b9++ff78eeaoCxcuMB9+jNDQ\n0ClTprRv3z4nJ+e7776bMmUKj8crMwwtmJube3t7s7PBtW3bVuU5r1y5kpWVRUTt2rVjMs5y\nefPmDTMq2draunv37mw5e6qcnBx1xzJDOogoOTlZeS+fz+/Wrdu2bdvEYvHp06eDgoLKDCYw\nMHD9+vWaB6/JoLn79+8zGwoDHuVZWFi4uLi8fv06PT09JyenlKyLkZubm5qaSkT16tUjonPn\nzn3zzTenTp2SSqVMBVdX17Fjx86aNUvhjlT8qmqBTew2btz46aefbtmyxdramikJCQnp2LEj\nM/fKsWPHHj58qPnv7Ydys0oxY8YMsVgsFAq///57lRXYxM7a2nrr1q179+69fv36mzdvrKys\natWq1alTp0mTJrF9WCvFrVu3mI2lS5f6+voeOnTI3d2dKQkJCWncuDHTPM/8zWpIF3eqdElJ\nSSNGjHj79i0RzZ49W77dUc+3GIBzSOwqHzOujc/n79ixg028WL179x4xYkRkZGR6evr+/fuH\nDRvGlN+7d4/Z6Nmzp3xWx/Dz81u5cuXjx489PDyKioqYr9E6cv36dWZD3XNhtoNd69attTj/\ntGnTCgoKiOjLL79kP++JiP2AZybmUIm9Suoa5Fq3bs08fIyPj9cksatbty7bAFZZMjIymI1q\n1aqVUs3V1fX169dM/TI/SNg2ThcXl/Xr10+dOlUikchXSE9PX7Ro0aFDh44fPy7/qVYpV7W8\nbt++zWwEBATs3LlTYfKwHj16NGzYkGkdjI+P1zyx+1BuljoXLlxg2uknTJig7l0zX5mI6KOP\nPmLb0ogoJyfnzp07d+7cWbt27fz58xcsWKCup0d5sX3snJ2dT5486eTkJL83KCiISexevXql\n+Tl1cacUPHnyZO3atVKpNCcn5/bt20wXZEtLywULFnz11VfyNfV5iwEMARK7SpaUlMQ05gcG\nBqp7Fjls2LDIyEgiOnr0KJvYsSkO+wVaAdsvWNfYf/TNmjVTWYH92G7SpEl5T7548eJdu3YR\nUYsWLWbPni2/q2XLlra2trm5uXfv3j179myHDh0UjhWLxREREcx2Xl6eyvOzk5eyQerf+/fv\nmQ22OVYlNjtX917ksU9U79+/HxUV5e7uHh4e3qNHD2dn51evXh0+fDg8PDwjI+P27dshISGn\nT59mBrpSJV3Vcnn8+DGbIK5Zs0bllLB169ZlErvMzMyKv2JF6OJmqcP00Le0tGSHvipjL11i\nYqKjo2Pfvn0bNmwoFApTUlKioqJSU1MlEkl4eHhBQcHSpUu1joSVlZXFTEVJRKtWrVLI6kiu\nxbf066N/z58/X7FiBfujnZ3d2LFjv/rqK+XGP33eYgBDgD52lYztqNu4cWN1dZo3b85sJCQk\nsIVt27a1srIioujo6NDQUPkv6/qUn5//4MEDInJ3d3dxcVFZ5/Hjx8yGp6dnuU4+b948Ztkx\nDw+PqKgohXZHkUjEdroaMWIE+yqMvLy8oUOH3rt3j5lEV12XMjYkhcP1qbCwkNlQN809g22X\nZeuXIjc3l9m4ffu2h4dHQkLCyJEj3dzchEJhjRo1Jk2adPHiRWZak/Pnzx84cIA9sFKuarmw\nXwzat2+vrleTnZ0ds8EmoFzRxc1S6dy5c8xqLkOGDGF6gqrEJnaTJk16+vTpli1bvvzyy+nT\np69evfrhw4fTp09n9i5btowd71wR7M3y8fFhB0fLS0tLYzbq1KlT8ZfTnXfv3q1YsSIgIIDp\n3Cy/S2+3GMBAILGrZOzX3/Xr16tb55H9VGP/aRKRo6Pj2rVrmccru3fvbtiwoY+Pz8SJE/fs\n2cM+StCDW7duMc/4Shmf+/LlS2aD7YtTpvz8/JCQkG+//ZaI6tWrd+bMGZXHhoeHM58fT548\nady48bRp03bs2LFjx47Zs2fXq1dv3759EydOZFIBlQMtiahatWpMBTZI/WMT1qKiolKqsXvL\n2xby448/KjdLeHl5LViwgNlmh78wKn5Vy+XmzZvMxoABA9TVYRYPID0OEVBH1zeLtWrVKmZj\n0qRJpVRLT0/PysrKyclZt26dwu0QiUQ//fRT//79mR9/+OEH7SKRxyZ2ffr0Uflslx15wKza\nZzjatWsnk8kkEklWVtalS5fmzJlja2ubkpIyfvx4ZvJnlt5uMYCBQGJXyUrpoq6ssLBQLBaz\nP44cOfLEiRMNGzZkfnz48OGGDRsGDRrk6uratm3brVu3KnSr0oUyn8OS3KMN+R5ypXj27Fnb\ntm337dtHRB06dLhw4QI7QbECOzu72NhYpndOXl7emjVrhg0bNmzYsOXLl6elpY0cOfKbb75h\nlutWl4LweDzm/zIbpP6xT6+YroTq5OfnMxuapFPsOUUiUbdu3VTWGThwILOh0JZT8ataLuyv\nUKdOndTVYb/SyI+25oQubpay1NRUZiB569atS5/SyN7e3sHBgf3up4ydcS02NpYdOqM19ma1\nbdu29Aqlh80VPp/v4OAQEBDw3Xff3bp1i/nHsn379s2bN7N19HOLAQwH+thVMna1zREjRmjS\nK07hUVTXrl3v3r17+fLlqKiomJiYGzduSKVSqVQaHx8fHx+/Zs0a+TFruqDJ/3H2q63yIA9l\n58+fDw4OZnoljxkzZt26daU/EPH09Lx169bGjRv37dt39+7d/Px8d3f3gICAcePGffzxx+x8\nHKU8GLKwsMjLy5NKpcXFxcw6QqW4f/9+XFxcme+C5ezs/Omnn5Zeh+2jXXqrIZPc8Hi8qlWr\nlvm67OoRjo6O6i6gu7u7lZVVfn5+Tk5OYWGh/JPuil9VzTEtdiKRqH79+ioriMVith2I/Rqj\niQ/lZinbtWsX862MnWhNa02bNjU3Ny8qKsrNzX379m0Fx5OW+UWOHUpVyjc9Zbq4U2Xy9PRc\nuXIl0068evVqdo1B/dxiAMOBxK6SscOpqlSpIj+XUrkEBAQEBAQsWbIkOzs7Li5u7969+/fv\nLykpSUhICA4OvnjxYmUNiFOmyf9xNp8rKioqPUuLior67LPPxGKxQCD48ccf2cUcS2dubj51\n6tSpU6cq72JTkFIeDDFdZPh8fplZHRFdvHiRnetfE02aNCnzE4hNaErp55eTk8OMf6xZs6Ym\nU8b4+PgIBAKJRFJ6z24LCwum4aGkpERhVwWvqobevHnz/PlzIqpevbq663/r1i2modrDw6P0\ngYoKPpSbpYydBLhv375aHC6Px+NZWVkxX64q2BusoKCAmQrEwcFBXX/ZMsfIq6SLO6UJdmrA\nO3fusN/r9HOLAQwHHsVWMrbNgxmCUEEODg79+/f/7bffEhISmAFrly9fZiaq1YXi4mLmM97J\nyUnd01KSewJb+uPOqKiogQMHisViW1vbw4cPa5jVlY6ZgJSI2rRpo64O88BFw8fEusCOzGVH\n0ihjb6KGn5cWFhY+Pj5E9P79e2ZCO2VisZjpCSASicr14aTJVdUQ2wJUyoQRMTExzIb8LIZc\n0cXNUvD8+XPmsvj5+Xl4eGhxBnmFhYVsfw/l2ZTK5c6dO6V3qGXHzHp4eCgPmNWz2NjY5cuX\nf/7556WMGjE3N2eHAbEPFvRwiwEMChK7StaqVStm4/z58/L95yqocePGU6ZMYbZ1N5FHYmIi\n89+w9P9uzFL09N/BHwouXboUGhpaUlJiZ2d38uRJlQtUqKNusEhubu7BgweJyN7evmvXrirr\npKenM59V6ha9VVDKQlsqsSMDSuHn58ekxdeuXVM3+xc7C3S/fv00iZOI2GvIHqvgypUrzHtX\nOSK7IldVc2xix87Pouy3335jNkJCQsp18g/oZsk7c+YMsxEYGFh6zUOHDo0bN65Hjx4Kw18U\nzsZ0ratbt24Fu/lr/hy2vOmOLu7U0aNHZ8+evXLlSrb5U9mjR4+Yi2NlZcV+t9HDLQYwKEjs\nKkrhmZe3tzfzBTE7O5tdplPB6dOnfXx8pk+fzi5fI5VK586d271798GDB6t7IbYJROXTT+VH\nb1pgH8mV3vOJfWrz5MkTlRVycnIGDRpUWFgoFAqPHDmi+TzGQUFBtra2rq6uKpdAWLJkCfO4\nJCwsTN0jYDakijeNVATTlaq4uJhdNVVeamrqzp07icjGxkaTWZQZQ4YMYTaWL1/Ozn4ij1mr\nioiYdR1YFb+qmmNzhcePH7MjxOUdPnyY6WBXt27djh07VvDlKoUubpY8ZkUZIvLz8yu9ZkZG\nxqZNm06cOPHtt9+qHMIplUqZoeVE9Mknn2gRjLwyO9Rq18FOR9jHrNu3b1f3LYWZH5SU2p51\nfYsBDEu5vlcZB3Y11e7du2t9EnbBnOHDhyvs2rFjB7PLwcHhxo0bCntTUlLYx7Xx8fFsefv2\n7ZnCrVu3Kr/c+/fv2dmA79y5o0kYMplszpw5kydPnjx5sobLxjNrZhDRjBkzSqnGzrMwf/58\nlRXY7jVLlizR5HVZzCx3RBQYGPju3Tv5Xb/88gvzkMXe3j4jI0PdGdgLMnPmzHK9dOXKzMxk\nBjYKBIKdO3fK73r9+nVAQAATZHh4uPKxM2bMYO7a48ePFXYFBwezv7oK14e9KZaWli9fvpTf\nVZGrWt5fIaY/k0gk4vF4wcHBEolEfu+jR4/YKdwOHDigyQn1QEc3i8VOCn3mzJnSI8nLy2MH\nQ/Tp0ycnJ0d+b35+PrMIBBFZW1sr3GVZ+W8W+3ghMTFRZQV2qEd0dLQmJ9QpiUTC9gFt3bp1\nWlqaQoXNmzezY9H27t0rv6sitxjgg8OTVcaUpB+WLVu2MP8fu3fvXq4FEOXFxsYyz61EItGX\nX37p6+v77NmzuXPnMh+TAwcOZJaLNTc3Hz9+fLdu3RwdHV++fHnu3LnIyEimuWXixIk///wz\ne8Lz58937NiRaXjr1q1bv379atasaWdnl5ube/v27V9//fXhw4dEFBQUxDw40yQMV1dX5tFD\nTExMly5dynxTEREREyZMICInJ6eFCxcKBAIPD4/evXsrVIuPj2cmR+jatevJkycV9j558sTX\n17e4uJjP58+ePbv0RiAnJyf5vnfZ2dmNGjVinvBWrVp1+PDhXl5e2dnZ0dHRTLOHmZnZ4cOH\nFVqk5I0cOZJ5jHXgwIFS5lHTg927dw8ePJj5+/roo486d+5sa2v74MGD3bt3My1kbdq0+fPP\nP5VXh7OxsWE6L168eFGhsfPFixdt2rRhWsLc3d2HDh1ap06dzMzMQ4cOXblyhamzefPmUaNG\nyR9Vkatarl+hgoICW1tbiUTStGlTb2/vffv2dejQYcqUKd7e3rm5uXFxcatWrWLe+8iRI9nG\nFUOgi5vFcnNzS09PJ6Lk5OQy1087fPhw//79meeJdnZ2AwcO9Pb2trCwSE5OPnjwIDOuk8fj\n7du3j83yWeW6WRKJxNbWtqCgwMrKKjc3lx3OL69evXrM6IqXL1+WMqmy3ly/fv3jjz9m/n9a\nWlr27t27cePGzDeZkydPskOt+/fv//vvvyscq/UtBvjwcJtXcqJSWuxKSkqUZ3MoLi5m9orF\n4rFjx6obu8rj8aZOnVpSUqJwzj179pTe5z0oKCg3N1fzMNghhzExMZq8qZSUFIUZTFasWKFc\nTSwWM7NvWFpavn//XmEvM1+dhry8vBQOv379urrucc7OzlFRUaXEL5VKmf5/QqHw7du3mrxl\nnfrll1/UjeHo1q1bZmamyqPYQy5evKi8Nzk5me0MrsDc3DwiIkLlObW+quX6Fbp06RJTeciQ\nIWlpafXq1VP5imPGjGF/RQ2HLm4Wg21Gev36tSaRHDx4sJRJTFxcXNS1n5XrZrFpUGBgoMoK\nbLbn5uamSdj6cfXq1dJXoR07dmxBQYHKY7W7xQAfHCR22nv69Gn//v1dXFzMzc3d3d179uyp\n8ODpxo0bU6dO9fPzc3BwEAgEdnZ2TZs2nTZt2q1bt9Sd8/Xr10uXLu3SpYu7u7uFhYVAILC3\nt2/SpMm4cePUPccpJQz2H31cXJyGb+ro0aN+fn7m5ubOzs5t27a9fPmyympsm9D+/fsVdlUw\nsZPJZNnZ2UuXLm3btq2jo6NAIHBxcWEmfynzc5EdLtejRw8N36+uPX78eO7cuU2aNHF0dDQ3\nN69du3ZwcPDvv/9eyiFl5grFxcW//vprz5493d3dRSKRvb29v7//rFmznj17Vspptbuq5foV\nYp+DL1u2TCaTZWVlLVq0qHHjxnZ2dubm5p6ensOGDTt37lyZ5+GKLm4WO+0tERUWFmoYSVZW\n1sqVK7t16+bm5iYSiSwsLGrUqNGnT59169bl5eWpO6pcN2v79u1M5cmTJ6uswHYN7N27t4Zh\n60dRUdFvv/02cODAOnXqWFtbm5mZOTk5tWjRYvr06aX8a2VocYsBPjimmNiZlK+//pqIrl69\nWrmnZdtmunXrVrlnrgh2KSHD6b9lBDT/FRo/fjxz/Y8dO6aHwECZjv7eAeADglGxRo7pIlPp\nQ0QDAgLatWtHRDExMYmJiZV7cu2kp6fv3r2biHx8fDC0rRJp/ivEjrJkB/qAnuno7x0APiBI\n7IxZfn5+bGysj49PBdcdUmnZsmVEJJPJ5s6dW+kn18LChQuZGSKWLFmisic4aEHzXyGJRMJM\n31O1alUNJxGEyqXTv3cA+FDg88+Y/fLLL9nZ2cOHD9fFydu0acOc+dChQ7Gxsbp4Cc3dvHmT\nWfa7c+fOyqMFQWua/wrdv3+fWfMDzXVc0enfOwB8KJDYGTMej7dw4UKVy4NWilWrVjFTuo8e\nPbqUlQZ0raioaPjw4RKJxMHBgR0ZA5VC818h9jmsukG7oGu6/nsHgA+CGdcBgA7p+l+8g4PD\nb7/91qlTp2fPno0dO7aUpX506osvvrhz5w6Px9uyZUvNmjU5icFYaf4rxK4KhRY7riClAwBC\nix1UUJs2bZhnoHv37l20aJH+A9i0adPatWuJaNmyZVjnkUNosQMAMASmuPIEAAAAgFFCix0A\nAACAkUBiBwAAAGAkkNgBAAAAGAkkdgAAAABGAokdAAAAgJFAYgcAAABgJJDYAQAAABgJJHYA\nAAAARgKJHQAAAICRQGIHAAAAYCSQ2AEAAAAYCSR2AAAAAEYCiR0AAACAkUBiBwAAAGAkkNgB\nAAAAGAnjTOyePHmycePGmzdvch0IAAAAgP4YZ2J38+bN8ePHHz9+nOtAAAAAAPTHOBM7AAAA\nABOExA4AAADASCCxAwAotzt37nzyySeOjo5WVlYBAQGHDh1SWS07O5unRlRUFBGFh4cr7+rS\npYv8SR48eNCyZUsej3f69Gk9vDUA+KCZcR0AAMAHJjk5uX379lWrVv3222/t7Oy2bdvWv3//\n33//PSgoSKGmlZXVpk2bFApjYmL2799fp04dIsrJyeHz+REREfIV3N3d2e0NGzbMnDmzSpUq\nunkrAGBskNgBAJTP//73v5KSkjNnzri5uRFRaGho8+bNZ86c2a9fPx6PJ19TJBKNGTNGviQn\nJ2fhwoUTJ05s3Lgx86Otra1CHdbFixc///zzH374wdraeuTIkTp7QwBgPPAoFgCMUKtWrQIC\nAs6dOxcQEGBlZeXo6DhkyJDMzEzlmjKZLFON7Oxs5foSieTw4cO9e/dmsjoiEjVnMo8AACAA\nSURBVAgEYWFhKSkpt27dKjOwefPmFRcXL168mPkxJyfHzs5OXWUXF5fLly9PnjxZo/cMAIAW\nOwAwSkKhMDk5eerUqT/88IOPj09sbOzkyZNfvnx56tQphZqvXr1iUzQFdevWTUpKUih8/Phx\nbm5ukyZN5AubNm1KRLdu3fL39y8lqsTExA0bNqxdu9bBwYEpkU/sCgoKLC0t5et7e3uX8T4B\nAP4LiR0AGCEej5eRkbFjxw5mIMLo0aPv3LmzatWqxMTEBg0ayNd0cnKKiYlReRJra2vlwpcv\nXxJRtWrV5AurVq3K7irF/PnzPT095R+85uTkFBUVDRs27MiRIzk5OVWqVBkyZMh3332n8qUB\nAMqExA4AjJO5uXnHjh3ZH9u3b79q1aqEhASFxE4kEimMQi1dYWEhc5TCa7G71ElMTDx48OCG\nDRsEAgFbmJ2d/ejRow4dOkRERJiZmf3++++rV6/+66+/YmNjNQ8JAICFxA4AjJOLi4tQKGR/\nZAaWZmRkVPC0FhYWRFRUVCRfyKR0Cg9SFfz88882NjaDBw+WL4yLizMzM3N1dWV+DA4ONjc3\n//XXX+Pi4uSzUgAADWHwBAAYJ/mGMSKSSqVExOcr/tMr7+CJ6tWrE1F6erp8IfMQVn6aEgUl\nJSV79uzp2bOnjY2NfHmNGjXYrI4REhJCRJqMwwAAUIYWOwAwTunp6SUlJWZmf/+XU9k3jso/\neMLT09PR0TEhIUG+8MqVK0TUvHlzdcFcunQpMzOzZ8+eCuXv3r0jIvmBse/fvyciKysrtW8M\nAEA9JHYAYJyKiopOnDjRu3dv5seTJ08SUevWrRWqlXfwBJ/PDw4O3r59+5MnTzw8PIiosLBw\n8+bNjRs3rl+/vrpg4uPjiUhhzGx6enqNGjV69ux55MgRtvDXX3/l8XgdOnTQ4C0CAChCYgcA\nxsnV1XX69OmPHz+uV69eTEzMtm3b+vbt6+npqVCtvIMniGjBggVRUVEdO3b8v//7P2tr619+\n+eXp06dM4khEhw8fHjBgwI8//jht2jT2EKblz8vLSyHCSZMmrVmzpkePHgMGDBCLxQcOHDh9\n+vTUqVPr1atHRBcuXLh37x79kxdGR0c/fPiQiDp16sQsXAEAoACJHQAYJxsbmz179nz++efX\nrl0TiUQjRoxYtWpVpZy5Zs2a58+fnzVr1sKFC0tKSpo1a3by5El2rINUKpVIJEyXPlZmZiaf\nz1foYEdEK1eurFu37ubNm7/88svi4uIGDRpERESMGzeO2bt9+3b51cZ++OEHZuO3335DYgcA\nKvFkMhnXMVS+qKio/v37L1my5KuvvuI6FgDgQLt27dLT05n2LQAA04FRsQAAAABGAokdAACA\n9uLj47t27Vq/fv3evXsnJiZyHQ6YOvSxA6io169fy0+EC4agpKREKpVmZWVxHQgYue+++47t\n+5iUlHTs2LH169ePHz+e26jAlCGxA6iQBQsWLFq0iOsoQDUnJyeuQwDTIpPJpkyZMmzYMMxE\nCFxBYgdQIZ6env369YuKiuI6EADQtzlz5ixdulShsKSkZOfOnWPHjuUkJAD0sQMAANCGykXn\niOjt27d6jgSAhcQOAABAG927d1dZzq53AqB/SOwAAAC0ERQUxKwRIq9Dhw6NGjXiJB4AQmIH\nAACgtcuXL3fp0sXMzIyIhELhp59+qm7pYQD9wOAJAAAALdnZ2cXExGRmZlarVk0sFnMdDgBa\n7AAAAACMBRI7AAAAACOBxA4AAADASCCxAwAAADASSOwAAAAAjAQSOwDtFRcXp6WlZWVl5ebm\nch0LAAAAEjsAbcXFxdWvX3/+/Plnz551c3Nbvnw51xEBAAd27Njx0UcfWVtb+/v7Hz9+nOtw\nwNQhsQPQxuPHj/v37//o0SPmx/fv38+ePXvr1q3cRgUAejZmzJhhw4YlJibm5ubeunWrZ8+e\n4eHhXAcFJg2JHYA2NmzYkJOTo1C4ZMkSToIBAE7cvXt38+bNCoWLFi16+/YtJ/EAEBI7AO08\nfvxYw0IAMFZbtmxRLpRKpb/99pveYwH4GxI7AG24ubkpF1avXl3/kQAAVwoLC1WWFxQU6DkS\nABYSOwBtjBo1ysLCQqFw4sSJnAQDAJzo37+/yvLg4GA9RwLAQmIHoI0mTZps2rTJ3t6eLRk3\nbtwXX3zBYUgAoGedO3cODAxUKBwwYICnpycn8QAQEjsArQ0dOvTRo0dNmjQhohs3bkRERPD5\n+IMCMC1nz54dNWqUjY0Nn8+3t7f/8ssvDxw4wHVQYNLMuA4A4ANWpUoVFxcXIvL29uY6FgDg\ngJmZ2ebNm5XHxgJwBQ0MAAAAAEYCiR0AAACAkUBiBwAAAGAkkNgBAAAAGAkkdgAAAABGAokd\nAAAAgJFAYgcAAABgJJDYAQAAABgJJHYAAAAARgKJHQAAAICRQGIHAAAAYCSQ2AEAAAAYCUNM\n7KRS6eHDh0NDQ318fGxsbEQiUdWqVdu3bx8eHv7s2TOuowMAAAAwUGZcB6Do2bNngwYNunjx\nonxhRkZGRkbG+fPnly1b9u23386YMYOr8AAAAAAMlmEldjk5OR07dkxJSSGiWrVqTZ06tX79\n+k5OTi9evPjjjz+2bt1aWFg4c+ZMHo/3+eefcx0sAAAAgGExrMTuu+++Y7K6zp07R0dHm5ub\ns7uCg4ODgoL69u1LRF9//fWwYcOcnZ05CxQAAICVlUV9+tCZM2RmWJ+qYIIMq4/d/v37mY0l\nS5bIZ3WMTz75pH379kRUUFBw/PhxfQcHAACgUlYWxcdTYSHXcQAYWGL39OlTZsPf319lhWbN\nminUBAAAAACGYSV2lpaWzIZEIlFZgS23sLDQU0wAAAAAHwjDSuzatGnDbMTHx6uscOPGDWYj\nMDBQTzEBAAAQ0ZIlNHIkqWl3UKuwkPr3p02bdBMTgCLDSuzYeUxmzZqVk5OjsPfw4cMXLlwg\notatW7MpIAAAgD4MGkRxcTRsWDlyOyare/CA+vXTZWQA/zKsxK579+4rVqzg8XgJCQne3t7f\nfPPNwYMH4+Litm7dGhISEhQUREQ1a9bcuXMn15ECAICJ8fSks2fp0iUKDaWSkrLri8U0cCA9\neUKxsVS1qu7jAyAytOlOiGjGjBn+/v4rV648cuTIwoUL5Xe5u7sPGzbsiy++qFKlivKBBw4c\nWLJkCbOdnZ2tj1gBAMCk1KpFp0/Txx/T4MG0a1dpk5uIxRQcTA8f0qlT5OamxxDB1BlcYpeT\nk/PHH39cvXpVedfLly///PPPxo0bh4aGKu/NyMhISEjQfYAAAGDCNMntkNUBdwzrUezz58+b\nN2++YsWKV69ejRw5Mj4+Pjc3VywWP336dMuWLT4+PlevXh08ePDEiROVjx08ePCjf2zYsEH/\nwQMAgElgcrtr12jwYBXPZJHVAacMK7EbOnToo0ePiGjDhg2RkZGBgYE2NjZCobBWrVojRoy4\nfv16q1atmL2//fabwrF2dnZ1/lGtWjUOogcAABOhLrdDVgdcM6DE7tKlS2fOnCGiFi1ajBs3\nTrmClZXV8uXLme2ffvpJr8EBAADIk8/tmHGyyOrAABhQYnf27Flmo1OnTurqtG3blsfjEVFC\nQoJYLNZTZAAAAMrY3G76dCKiIUOQ1QHnDGjwBDuU1cbGRl0dMzMzMzOz4uJiqVSal5fn5OSk\nr+gAAMD0/PUXHT1aRp3PPqP164mIrl2j8eNp27Yy6oeEkKdn5YQHoMSAEjs2S3v+/Lm6Oq9f\nvy4uLiYigUDg4OCgp8gAAMA0paRQbGwZdaRS4vH+3r506d9tlXg8CgxEYge6Y0CJXYsWLZiN\nP/74o7i4WCgUKtc5duwYs9G8eXM+34CeIwMAgBH65BP65JPSKjD96pycKDubrK2pShXaubO0\n+e0AdMyAcqN27dp5e3sT0fPnz2fMmCGVShUqpKamzps3j9keNWqUvuMDAACQx2R1ycnErId0\n7BhdvUpDhmi0LgWAbhjQtwozM7NNmzb16NGjqKho7dq1ly5dGjFiRMOGDS0tLTMzM8+dO7dp\n06asrCwi6tix45gxY7iOFwAATBib1cXFUUEBEVHNmn/PXTxkCNrtgCuG9Wv38ccfR0dHh4WF\nPX/+/Nq1a9euXVOuExoaunHjRoFAoP/wAAAAiP6b1bm5UUrK3+XsuhTI7YAjBvQoltG5c+f7\n9+9HRkb279/fw8PD2trazMzM0dGxefPmU6ZMuXLlyq5du0oZNgsAAKBbClmdAia3wzNZ4Igh\nfpmwsrIaOXLkyJEjuQ4EAADgv0rP6hhotwPuGFyLHQAAgIHSJKtjoN0OOILEDgAAQAOaZ3UM\n5HbABSR2AAAAGli0iFJS6MyZcqwYVqsW/fknXbr099IUALqHB/8AAAAamDmTZs0iW9vyHeXp\nSTdukLm5bmICUITEDgAAQANar2OJZc1Bj/AoFgAAAMBIILEDAACoGAsLEokwrQkYAiR2AAAA\nFVO9OmVkkIUF13EAILEDAACoODs7riMAIEJiBwAAAGA0kNgBAAAAGAkkdgAAAABGAokdAAAA\ngJFAYgcAAABgJJDYAQAAABgJJHYAAAAARgKJHQAAAICRQGIHAAAAYCSQ2AEAAAAYCSR2AAAA\nAEYCiR0AAACAkUBiBwAAAGAkkNgBAAAAGAkkdgAAAABGAokdAAAAgJFAYgcAAABgJJDYAQAA\nABgJJHYAAAAARgKJHQAAAICRQGIHAAAAYCSQ2AEAAAAYCSR2AAAAAEYCiR0AAACAkUBiBwAA\nAGAkkNgBAAAAGAkzrgMAAAD4gL1//z46Ojo1NbVOnTq9e/cWiURcRwQmDYkdAACAlq5evTpg\nwIDnz58zP/r6+h45csTX15fbqMCU4VEsAACANvLz8z/77DM2qyOiBw8eDBo0SCqVchgVmDgk\ndgAAANo4c+bM48ePFQpv3Lhx8+ZNTuIBICR2AAAA2snMzFRZnpGRoedIAFhI7AAAALShri9d\n3bp19RwJAAuJHQAAgDZatWrVu3dvhcJRo0Z5eHhwEQ4AERI7AAAA7fB4vG3btg0fPpzH4xGR\nQCCYMmXK6tWruY4LTBoSOwAAAC05OTlt3bp12bJlRBQZGblmzRpra2uugwKThsQOAACgQphJ\niYVCIdeBACCxAwAAADAWSOwAAAAAjAQSOwAAAAAjgcQOAAAAwEggsQPQ3sGDB+/du0dE69at\ny8/P5zocAAAwdQaU2B09epSnMW9vb67jBVM3YsSIAQMGpKWlEdFXX33VpEmTN2/ecB0UAACY\nNANK7AA+IAcOHNi2bZt8ycOHD2fMmMFVPAAAAERkxnUA//L19V24cGHpdbKysphJvWvXrq2X\noABUO3r0qHLhkSNH9B8JAAAAy7ASu/Dw8NLrhIWFEZFQKFy1apUeQgJQp7CwUMNCAAAAvfmQ\nHsUeP35869atRPTVV181atSI63DApLVs2VK5sFWrVvqPBAAAgPXBJHZ5eXnjxo0jIm9v76+/\n/prrcMDUTZo0yc/Pj4h8iYKIiMjS0nLlypXcRgUAACbug0nsFi1alJqaSkRr1qwxNzfnOhww\ndRYWFqdOnZo8eXJfoXAaUffu3c+fP+/v7891XAAAYNI+jMTuwYMHTFtIUFBQjx49uA4HgIjI\n2dl57dq1np6eRLR///5mzZpxHREAAJi6DyOxmzFjhlgsFgqF33//PdexAAAAABioDyCxu3Dh\nQnR0NBFNmDAB8xIDN77/nh4+LPdRYjGFhxNmLQYAAH0xoOlO1Jk3bx4RWVpazp07t5RqGRkZ\nz549Y7YfPXqkj8jAdDx8SB9/TKdPk+ZfLcRiGjiQkpJo+nRdRgYAAPAvQ0/szp07d/r0aSIa\nMmSIq6trKTUPHDgwceJEPYUFpmb9eho1itq3p1OnqH79suuLxRQSQvfuUVwcOTjoPj4AAAAi\nw0/s2ImIJ02aVHrNGjVqdOnShdnOyMi4deuWbiMDk8LnU2QkjRpFnTqVndsxWV1iIsXFkbu7\nvkIEAG6cOnWKmWN1/fr13t7eKie5BNAbg+5jl5qaGhUVRUStW7du2rRp6ZX79OkT848yV7AA\nKDcmt+venTp1onv31FZDVgdgStasWdO5c+cbN24Q0blz51q1arV3716ugwKTZtCJ3a5duyQS\nCRGFhoZyHQuABrkdsjoAU5KWljZr1iyFwnHjxuXl5XESDwAZeGK3Z88eZqNv377cRgLwN7nc\nLj0ubsiQIcxIna5du56NjUVWB2BSLly4oLxCdE5OTkJCAifxAJAh97F7/vw507jt5+fn4eHB\ndTgA/+DzKTKyZPhwQdeuNySSbkREdP3SpZzu3Qvd3S0uXkRWB2AipFJpucoB9MBwW+zOnDnD\nbAQGBnIbCYAiPn9Fw4Z/SCSniKoR8Yn2EtWTSj+rWhVZHYDpCAwMFIlECoU2NjbNmzfnJB4A\nMuQWu/PnzzMbzFLrAPqWnU1v36rbmXbhwi9EtkTTiEqIsogGE2XfvUspKWpPaG6OtA/AmNSu\nXTs8PFxhjtXVq1fb2dlxFRKA4SZ2iYmJzEbjxo25jQRM1IABFBenbufq//5oTxRPREVF5OWl\n9oRmZpSeTlWqVFaAAMC5OXPm1K9ff+7cuffu3WvevPn333/fsWNHroMCk2a4id2DBw+YjerV\nq3MbCZioEydI/dC2kydPDh80KJKoFRERSYn6ErUJC/vxxx/VntDcnKysKj9OAOBUUFDQ06dP\np0+fPnPmTGR1wDnDTewyMjKYDXt7e24jARMlFJKjo7qd3fr3j6lTxyIlZQ1RR6KnREfNzCwm\nTSrlEAAAAF0z0METBQUFzAx2RITOCmBwxGIKCfETCDL37RM4OcmIitavdwoNtenbt7S5iwEA\nAHTMQBM7S0tL2T/Mzc25DgdAjtwsxIGffurs7ExEg4cO5W/ZUva6FAAAALpkoIkdgIH679oS\nBQUFzPSkb9680XTNMQAAAJ1BYgegsf9mdceOHfP19X327BkR1a1bd+HChcjtAACAW0jsADTz\n36wuOTk5JCTk+fPnzM6ioqJvvvkmIiICuR0AAHAIiR2ABv6b1RFRRESE8jrfP/zwAxEhtwMA\nAK4gsQPQwPDhdO8enT7NLh3BPIFV8G8hm9t17Ur/TNwDAACga0jsADTQtSvFxZHcXNnuqhYH\nq1Gjxr8/MLndnDmEYd0AAKAvSOwANDB6NP13BZSxY8daKS0jMW3atP/8zOfT5MmEiRgBAEBf\nkNgBaKN+/fpNmjSRL7G1tR00aBBX8QAAABASOwDt7N69++LFi0Qk+6ckNzd3+vTpHIYEAACA\nxA5AG8ePH2c2oogW/VN47NgxruIBAK6kpqbGxsYSUXR0dAYGSwHXkNgBaCM9PZ3ZeEYU909h\nfn4+V/EAACeio6Pr169/9OhRItq5c2fdunUvXbrEdVBg0pDYAWhDZQ7H5+MPCsCEZGdnh4WF\nvX//ni3JysoKDQ0tLi7mMCowcfgcAtBGtWrVlAulUqn+IwEArpw5cyYzM1Oh8MmTJwkJCZzE\nA0BI7AC0U7duXQ0LAcBY5ebmlqscQA+Q2AFoY/LkyS4uLgqF//vf/zgJBgA4oTDnEUMgEPj5\n+ek/GAAGEjsAbVSvXj06Orpp06bMj05OTps2bRowYAC3UQGAPvn5+Y0ePVqhcM6cOa6urpzE\nA0BEZlwHAPChatmy5fXr1zt06HDu3LmUlBR7e3uuIwIAfVu7dm2tWrV+/PHHnJwcFxeXuXPn\nTpkyheugwKQhsQOoEHNzcyISCARcBwIAHLCwsFiwYIG9vf306dNXrVoVGhrKdURg6vAoFgAA\nAMBIILEDAAAAMBJI7AAAAACMBBI7AAAAACOBxA4AAEB7f/zxxy+//EJEq1atOn/+PNfhgKlD\nYgcAAKCl77//vnfv3nfv3iWiy5cvt2/ffvv27VwHBSYNiR0AAIA2UlNT582bp1A4efJkLCkG\nHEJiBwAAoI34+HixWKxQmJube+3aNU7iASAkdgAAAJWLx+NxHQKYLiR2AAAA2mjbti2z9ow8\nOzu7Fi1acBIPACGxAwAA0E6NGjW+++47hcL169fb2NhwEg8AIbEDAADQ2owZM06cONGkSRMi\nCgwMjI+PHzx4MNdBgUlDYgcAAKC9bt26jRw5koimTp0aGBjIdThg6pDYAWjv+PHj9+/fJ6LN\nmzcrD44DAADQMyR2AFqaMGFCz549U1NTiWj69OlNmjTJzs7mOigAADBpSOwAtHHo0KGIiAj5\nkqSkpMmTJ3MVDwAAACGxA9DOypUrlQv379+v/0gAAABYZlwHALqSn59fVFTEdRRGKyUlRblQ\nLBZnZWXpPxgTwefz7e3tuY4CAMCgIbEzTikpKY0aNSooKOA6EJPj5OTEdQjGbN26dZMmTeI6\nCgAAw4XEzjilpaUVFBS48PluAgHXsRinxxJJrlSqUMgnaiQUchKP0cuXyR6WlDx69IjrQAAU\nXbp0affu3UQUGRnp5+fXqFEjriMCk4bEzpgFikTDLC25jsI4/fT+fbzS/CZmPN58zDivG/dL\nSubl5nIdBYCiTZs2jRs3jtmOjY1t0aLFnj17+vXrx21UYMoweAJAGyrb5dBYB2BS0tPTp0+f\nLl9SVFQ0evTo/Px8rkICQGIHoA1/VY9cVRYCgLE6d+6ccg735s2ba9eucRIPACGxA9BOW5Go\ntUgkX1KFzx+JB98ApqSkpKRc5QB6UEYfuydPnhCRvb29o6NjeU+9atWq7du3ExG+u4Dx4RHN\nsLY+LxReLy4ulMm8zcx6mZtb8nhcxwUA+hMQEKBcaGlp2axZM/0HA8Aoo8XO09PT09Pz22+/\nVbk3KSkpKSkpMzNT5d7U1NSEhISEhISKxghgkHhE7UWi/7O2nm1jE2xhgawOwNTUqVNn/vz5\nCoUrVqxwcHDgJB4AquCj2Pr169evX1/lFPwAAABG73//+9/OnTu9vLyIqFGjRkeOHJk4cSLX\nQYFJQx87AAAALfF4vMGDB0+dOpWI5s6d26dPH64jAlOHxA4AAADASCCxAwAAADASSOwAAAAA\njAQSOwAAAO2JxeKkpCQiSkxMlEgkXIcDpg6JHQAAgJbu3Lnj5+e3YcMGIlq8eHHLli2Z+V8B\nuGK4id2FCxdGjx7t6+trbW1tZWXl4+MTFhZ24cIFruMCAAAgIioqKgoJCXnw4AFbcuPGjcGD\nB8tkMg6jAhNniIldUVHR+PHj27VrFxkZmZycnJ+fX1BQ8PDhw61bt7Zr127KlCn4mwEAAM6d\nOXOGeQgr7+LFi7dv3+YkHgAqc0kx/ZPJZGFhYbt37yYiW1vbkJAQPz+/goKCy5cvHzlyRCKR\nrFu3zsXFZeHChVxHCgAAJu3Vq1cqy9PT05s0aaLnYAAYBpfY/fLLL0xW5+/vf+TIkRo1arC7\n/vzzzz59+hQWFi5ZsmTcuHFubm7chQkA8AH46KOPzp49y3UUJqdHjx5ch2DMPv3003379nEd\nheEyrMSuoKAgPDyciOzt7RWyOiLq3Lnz3Llzz58/36BBg+zsbCR2AAClu337No8vEFg7cR2I\n0ZLkZ8skxfIlPDNzgaUdV/EYvZK8N3jSXTrDSuyOHj364sULIpo2bZpCVsdQXm4ZAABKwbew\nc2gWwnUURkuc+ehd4kmSSZkfeXwzu0a9hfZod9CVNxc2cx2CodMosfv111+PHj2qbu+GDRv2\n79+vXJ6RkVHeaH7//XdmY8iQIeU9FgAAQJ9kkuK85LNsVkdEMmlJ3oM4xxahxONxGBiYMo0S\nu7dv3759+1bd3jdv3rx586ZSomFmM3F1da1bty5TkpWV9fTp07y8PFdXVy8vLx7+VAAAwDAU\nZ6dJxfkKhZL8rJK812a21TgJCcCApjvJzc1NTU0lonr16hHRuXPnunbt6uzs3LRp0/bt2/v4\n+FSvXn3BggV5eXlcRwrwr2KZLA/z7wCYJFlJkZpysZ4jAWCV0WIXExOjnziIKCUlhdlwcXFZ\nv3791KlTFdZmSU9PX7Ro0aFDh44fP46RE8C5NIlkc37+XyUlUqJqfP4wK6sAoZDroABAf9SM\nSuEJrDBaBThTRmLXpUsX/cRBRO/evWM27t+/HxUV5e7uHh4e3qNHD2dn51evXh0+fDg8PDwj\nI+P27dshISGnT58WCATyh8fExGzatInZTktL01vYYJpyZbJFeXlvpH/3rXkllf6QlzfPxqYJ\ncjsAk2Fm42Je1afodbJ8oWWNxnxza65CAtD5qNiCggJLS0tNaubm5jIbt2/f9vHxiY+Pd3Z2\nZkpq1KgxadKk7t27t2zZMisr6/z58wcOHAgJ+c84r0ePHmFiG9CbY4WFbFbH2llQgMQOwKTY\n+Hbki6wKXybKJMU8M3NL98ZWtZtzHRSYNB0mdn/99dfGjRu3bduWlZVV3mN//PFHNqtjeXl5\nLViw4PPPPyeiLVu2KCR2ffr08fb2ZrYvXLjAzIcHoCNpSlkdET3/b+cBADB6PIHQ2qudtVc7\naXEBX6hRKwaATlV+YldYWLhv376IiAhmiKvmbGxsmA2RSNStWzeVdQYOHMgkdvHx8Qq7atSo\nwU59hwEWoGtWqgZoW/MNaDQSAOgTsjowEJWZ2CUmJmrdREdEjo6O7IZIJFJZx93d3crKKj8/\nPycnp7Cw0MLCQvtwASqgnUgUW6Q4IK69mt9bAAAA/aiEBobCwsIdO3a0b9++YcOGq1atYrM6\na2vrUaNGXbp0ScPz+Pj4MOMhSm9vY5O5kpKSCkQNUCENzcwG/bfzaCMzs1B80wAAAE5VqMXu\n3r17Gzdu3Lp1q0ITXbNmzcaOHTtkyBBbW1vNz2ZhYeHj45OUlPT+/fvU1NSaNWsq1xGLxTk5\nOUQkEonYR7cAnAi2sGgpFN4sLi4i8hIImgqFmD4bAAC4pU1iV1RUtH///oiIiHPnzins6tGj\nx7ffftusWTPtounVq1dSUhIRHTp0aMqUKcoVrly5wkxu17hxY+1eAqASO46XzgAAIABJREFU\n1RIIav132h0AAAAOle9RbFJS0owZM6pXrz506FD5rK59+/bMRu/evbXO6khuidjly5ezs5/I\nW7lyJbPRs2dPrV8FAAAAwChplNgVFRXt2rXro48+ql+//k8//cSuG+vm5jZ79uwHDx6cPXu2\nUqJp1qxZcHAwEaWmpg4cOFAht1uxYsWBAweIyNLSctKkSZXyigAAAABGo4xHsffv32d60b15\n8+bfY8zMevXqNXr06F69epmZVfKEKatXr7527drTp09PnDhRv379oUOH1qlTJzMz89ChQ1eu\nXGHqrF271tXVtXJfF6C8CmSy3wsLbxYXF8hkPmZmIRYWbngsCwAAnCojLatXr57CjyNHjhw+\nfLju8qrq1avHxsYOHDjw5s2baWlpy5Ytk99rbm6+evXqUaNG6ejVATQkIfomL+/hP0OzX4nF\nV4uLl9nauiO3AwAA7mjU3ubs7Dx27NiBAwc2bdpU1wERkbe399WrV3fs2LF3797bt29nZGRY\nWlp6enp269ZtypQpKkfLAuhZTFHRw/9OuFMkk0UWFMzHYG0AAOCORoldZmbm0aNHLS0t7ezs\nvLy8dB0TEZmZmYWFhYWFhenhtQC0cF/VNIoqCwEAAPSmjMETAQEBzMadO3cWLFjg7e3dtm3b\nyMhIrNkFJk7lXw6ewgKYIJlEXPTqfv6zhKKMhzIpFowGjpWR2F26dOnGjRvjxo1jZwOOj48f\nPXq0m5vbmDFjLl68qPsIAQyRv1CoYSEAGLGSd+lZV3bmJsXmP76Um3gi++ouSb42i2oCVJay\npzvx9/ePiIh48eLFzz//zE4LnJeXt3nz5jZt2jRo0GDFihWvX7/WcZwAhqWdSNTqv2mcI58/\n0hKrgAOYEJmk+F3iSak4ny2RFL7LTTxBJOMwKjBxmk5QbGtrO3HixFu3bl24cGHYsGHsgq33\n7t374osvatSoobMIAQwRjyjY0tKB//dfkJDH62dhwf4IAKagOOeFtEhxLv2S929KcjM5iQeA\nyrvyBBG1adNm27ZtaWlpK1as8PX1ZQqLi4uZjWXLli1evPjFixeVGSOA4cmWSufn5mZLpcyP\nxTLZlvz8c2Ixt1EBgD7JigtVl5eoLgfQAy0bGJycnGbMmHH//v0///zz008/Ff7zTOr58+fz\n58+vXbt2//79jx8/Lv3nYw/AyGzOzxfLFJ+2bM7PV1kZAIwS39xaZbnAyl7PkQCwKvrkqFOn\nTvv27Xv27NnixYtr167NFJaUlERFRfXs2dPLy+u7776rcJAABueRRMXYt/dKqR4AGLGSd69U\nlhe/Q79z4EzldAlydXX9+uuvU1JSjh492qdPH/4/PY2ePHny9ddfV8pLABgUTGkAAJJCxQ52\nf5fn5+g5EgBWZfb15vP5vXv3PnLkyOPHj7/++ms3N7dKPDmAQbHm8ZQLMXQCwKSY2TirLBfa\nYzVz4IxOPolq1aq1ePHiZ8+e7du3r3Pnzrp4CQBuqVwTFokdgEmxcGvIMzNXKORb2Aod3DmJ\nB4B0+klkZmb26aefxsbG6u4lALhSS1Vip7IQAIwWj+fg358v+ncIhcDS3sF/AIcRAWi0ViwA\nKOhmbv57QYHC0rA9zBW/uwOAcRNYV3EKDCvJfyt599rM3k1gifGwwLEyErvCwkqYjIedzRj0\nLFsqTVE1eBMq7qJYXKJUGCMW1zbDlyWdeIHfZDBgZlZOZlZOXEcBQFRmYmdZGUskyTAHBEfO\nisVnMWWuHiWXlMx+947rKABAryQFOUXpSZKiXIGlvYVrA3WT2wHoB1oXAAAAtCTOTMm9d1Im\n/btFuSD1hl2jPkKH6txGBaZMo8SOx+M1btzYy8urqKiosLBQLBZjSQkAADBxspLC3Pun2KyO\niGSS4tykGKeAocTDUCrghkaJnUwmu3XrVnZ2dt++fUNCQtq2bctTNYkXGJomQmHrf1Z7g8p1\nvbj46j9LJLMc+PzP0KNUN9Kl0kOV0eUXoBIVZ7+QlRQpFEqL8opzM4R2mMoOuFFGYvfgwYMt\nW7Zs3749NTX16dOna9asWbNmjYeHR1hY2IgRIzw8PPQSJGiptkDQBeM0deOxmr78uOA6cr+k\nBIkdGBqZVHkMFRERSRS/9QHoTRnz2Pn4+Hz77bdPnjw5efJkaGgoM5biyZMn4eHhderU6dy5\n8/bt2/Ox8DmYnltKzXVElIMuCgCmRPXKEzy+QM2KFAB6oNEExXw+v2vXrrt27Xr58mVERERg\nYCARyWSyU6dODR8+3NXVdezYsfHx8ToOFcCAqGyvw/BvAJMisHKyqO6nUGjl0ZIvrIQJJQC0\nU76VJ+zt7ceNGxcfH5+UlPTVV1+5u7sTUW5u7i+//NK2bdu6desuXbo0LS1NN6ECGJA6qhaZ\nULmALAAYMRvvdtZ12ggsHXh8gcDKyca3o1Wt5lwHBSZNyyXF6tatu2TJkmfPnh07duyzzz5j\npiB+8ODBnDlzatWq1bNnz7179xYVKXYpBTAaU6ytRUpp3ERrzF8FYGJ4fMuaTR1bDanSfoJj\ny1ALtwZE+IIHXKrQWrF8Pr9Hjx67d+9++fLl+vXrAwICiEgqlR4/fvyzzz5zc3ObMmVKQkJC\nJYUKYEAsebyf7Ow8BQIzIh6RI5//hbV1AMYgAwAApypngmIHB4cJEyZMmDDhwYMH+/fvj46O\nvnLlSlZW1rp169atW4eVJ8AoVeXzl9vZcR0FAADAvyrUYqfMzs6uatWqrq6utra2lXtmAAAA\nAChd5bTY5efnHzhwIDIy8syZM2z7HI/H69Sp06hRoyrlJQAAAACgdBVN7C5fvhwZGbl79+53\ncmuf165de8SIESNHjsQMxgAAAAB6o2Vi9/r16+3bt0dGRiYmJrKF5ubmQUFBo0eP7tKlC9Yc\nAwAAANCz8iV2JSUlx44di4yMjI6OLpabed/f33/06NFDhgxxdHSs7AgBAAAMnExaXIh5icEQ\naJrY3b9/PzIyctu2benp6Wyho6PjkCFDRo8e7e/vr5vwAAAADJdMUpz/+HLhy79k0hKemcjS\nvYllreY8vooJzAH0o4zELi8vb8+ePZGRkfIrhvH5/E6dOo0ePbp///7mWPIcAABMVd79U0UZ\nD5ltWYk4/+lVWYnY2rsdt1GBKSsjsXN1dX3//j2zzePxWrduHRwcHBISUrNmTd3HBgAAYLhK\ncjPYrI5VkHbbsqY/39yGk5AAykjsmKyOx+M1bdq0a9euzs7OYrH4119/lUqlmr9GeHh4RUIE\nAAAwQJL8t6qKZZL8LCR2wBWN+tjJZLLr169fv35du9dAYgcAAMaHZ6a6M5K6cgA9qJwJigFM\nUJZUuqOg4EZxcRGRl0Aw2NKynhn+oABMiNDBnS+0khbnyxcKLB3MbFy4CgmgjM+hmJgY/cQB\n8GEpksnC8/JeSCTMj/dKSr7Jy/ufjY0PcjsAk8HjC3hCc/pvYscXWRFmcgXulPEh1KVLF/3E\nAfBhOVZUxGZ1jGKZbGtBwWKskgxgMopzXkrys5QKX0jyswRWmNUVuMHnOgCAD9Lj/2Z1jBRV\nhQBgrKRFeSrLJYW5eo4EgIXHRgDasFD1qMVC/3EAlEVWUlT48i+uozBOys11jJLcdGkRcjvd\nkOL7cxmQ2AFoo6VQeKqoSKEwQCTiJBgAdWQymVScn/fgNNeBmJb8J1e5DgFMFx7FAmijhVDY\n47/LrtQSCIZZYqVIAADgElrsALQ02sqqlUh0o7i4QCbzEQg+MjfH8pAAAMAtJHYA2vMzM/PD\n/CZgwHg8nsDS3q5xX64DMU7FWakqH3PbNuyBqex0JPvaXq5DMHT4TAIAMGo8vsDCjusgjFMJ\nX/VnKF8gwjXXFcwRWBb0sQMAANCGwMZZRSmPJ7CuovdYAP6GxA4AAEAbZtZVLNwaKBRa1WrO\nF1lxEg8A4VEsAACA1qy9O/DNbQtf3pUWvRdY2FnUaGxZvTHXQYFJQ2IHAACgJR5fYFW7hVXt\nFiSTEg8PwYB7+C0EAACoMGR1YBjwiwgAAABgJAwrsYuJieFpoEWLFlxHCgAAAGBwDCuxy87O\n5joEAAAAgA+VYQ2eYBO7Xr16tWzZUl216tWr6ysiAAAAgA+GgSZ2ISEh/9/efcdFced/HP8u\nsFRBUAmYqMFeMIi9axQ1sUTRxK5Bgp4xp+cZzak5o8acmvuFM9ZoPDuXWKKCp8ZGbBHFgiL2\nE7FGJAoofYHd/f0xlz3CLoir7iyzr+dfX77z3ZnP+nCGN1O+ExISIm8xwFM91OkuFBRohKht\nb1+Pd4sBAORmXb+KDMHO09NT3kqAp9qj0WzIzS3U66UfW6nVH1eoYC9vTQAA22Zd99ilp6dL\nDYIdrNx/CgvX5OQYUp0Q4lRBwabcXBlLAgDAuoIdZ+xQXmzLyzPu3KPRWL4SAAAMCHaAOe5p\ntcadmiIn8ADYFH0hf9fBKljpPXZubm7r16/fsmXL2bNnU1NTXV1da9So0bVr148++qhevXry\nFgkIIRxVKuNOE10AFE2vLci5dSov+ZJeW6BycHap1sS1RlOh4m5byMa6gp3hHrvOnTtfvnzZ\n0P/kyZMLFy5cuHBh6dKln3322cyZM1Wmfq0CFtNSrTY+aVfVnqM5YFuy/nNI8+t1qa0vzMu5\ndVJfqHGr3V7eqmDLrCvYGc7YXb582cvLq2/fvv7+/mq1OikpKSoq6u7du1qtdvbs2bm5uV9+\n+WWxz2o0mpycHKmdlZVl0bphe/o7Ox/Nz0/V6Qw99kJ85OoqY0kALKww66Eh1Rnk3jvvUi3Q\nzslNlpIAKw12H3300Zdffunu7m5YFB4ePnXq1IULFwoh/v73v/ft27ddu3ZFP7t27dpx48ZZ\nslrYMheVaq67e0Ru7tmCgny9vpaDwzAXl/pMZQfYEm12mqluvTYnjWAHuVjX76EHDx7o9Xo7\nOzsPD49iixwdHb/++uvbt29HRkYKIcLDw7dv3150gIeHR61ataR2dnZ2SkqKZWqGzapsZ/dn\nNzchhFYILsECNkhXwgMTer3OZD9gAdb1VGzFihU9PT2NU53BjBkzpEZ0dLRO97s9Z9iwYTd+\ns2LFipdbKFAEqQ6wTSo70ydHVDxJBflYV7B7qqZNmzo5OQkhMjMz09JMngMHAMAS7NQuJvtV\nDk4WrgQwKGfBTqVSuf52f3qeqRliAQCwDLXna8bZzt6looO7tyz1AKLcBbu8vLwnT55I7cqV\nK8tbDADAlqkcHCs06KayV/+vR+3s3rC7UJWz361QEit6eGLHjh27d+++c+fOkCFDRo0aZXLM\nkSNHpFvr6tev7+Ji+hw4AACW4Viphler4ZqU/2g1mfYuFZ196qscnOUuCjbNioLdw4cP//nP\nfwohbty4MXToUOleuqJ0Ot3cuXOl9jvvvGPp+gAAMGLn6OZSvancVQD/ZUWni4cOHVqlShUh\nRGJi4nvvvZeRkVF0aW5u7ujRo3/++WchhJub2+TJk+WpEgAAwFpZ0Rk7Nze31atX9+/fX6fT\n7dq1q3r16gMHDqxTp46zs/P169cjIyOTk5OFECqVav369b6+vnLXCwAAYF2sKNgJIfr27btt\n27YxY8Y8evQoIyNj9erVxQZ4e3uvW7euV69espQHFBObn3+usDBPr69tb/+Wk5MTrzAGAMjK\nuoKdECI4OPjNN99cv379jz/+eOHChdTUVDs7uypVqgQGBvbs2TMkJMTNjfe0wCoszs7+OT9f\nah8XYr9GM9/Dw51sB9gWfV7ylbzki7q8LDuXii7Vmjh515G7JNg0qwt2QghPT8+JEydOnDhR\n7kKAEp3IzzekOkmKTrcuJ2cCf3gAtiQ7KTb37lmprSvIzbz8QFc726VaE3mrgi2zoocngHLk\nbEGBcWecqU4ASqXNfWxIdQY5N0/oC5g/H7Ih2AHmMJngiHWATSnM/NW4U6/TFmY9snwxgIRg\nB5ijjr29cWddU50AFEtVwi5vx6EAsiHYAeZ4y8np9d/HOEeVKvS3FxkDsAX2bl6mulX2bpUs\nXQrwG4IdYA61SjXb3b2Xk5OPnZ2nnV0LtXquu/vrnLEDbIk2O81Ut16bnWrpUoDfWONTsUC5\nUEGlCnV1DZW7DABy0Rfmm16gK7RsIcD/cMYOAADz6OQuACiOYAcAgDlU9o4lLbFoHUARBDsA\nAMzhUMHbRK9KZV+hisVrAf6LYAcAgFn0+rJ2ApbCwxPKpFKphBD/zsv7dx4ToAM2TVeQm510\nQu4qlKngyX2T/VlXf7J3q2zhYmyFjpngn4Jgp0yNGzcODg7OysqSuxAlu3jx4oMHDww/uri4\ntGrVSq1Wy1iSsqlUqr59+8pdRTlTqVKlx4+TjF97hZcqP+22SLstdxWKVakS0wSWhmCnTJ6e\nnpGRkXJXoWRbtmwZPHhw0Z7c3Nzq1atHRETIVRJgLCYm5pdffpG7CsU6evToxx9/bNy/cePG\nunXrWr4eG+Hn5yd3CVaNYAeY48cffzTu3LVrl+UrAUrh6+vr6+srdxWKFRAQsHTp0qSkpKKd\nLVu2HDJkiFwlATw8AZhDo9GUsROAUqnV6gMHDjRp0sTQ07Fjx507d8pYEkCwA8zh7W1imoNX\nXnnF8pUAkFGtWrXOnTsXFhYmhJg+ffrRo0d9fHzkLgo2jWAHmCPP1OPGOTk5lq8EgIzu3LkT\nFBS0evVqIcT8+fODg4NTU3lRLOTEPXaAOR4/fmzc+eTJE8tXAkAuWq12yJAhJ078bzaZHTt2\n6PX6HTt2yFgVbBxn7ABz1K9f37izYcOGlq8EgFyOHTtWNNVJ/v3vf1+7dk2WegBBsAPMM2HC\nBOM7ab744gtZigEgi9u3TU9Wd+vWLcsWAvwPwQ4wxyuvvLJ37962bdtKP/r6+m7YsOGdd96R\ntyoAlvTaa6+Z7K9WrZqFKwEMCHaAmQIDA48fP965c2chxPXr10eOHCl3RQAsqlOnTkXnOpF0\n7drV399flnoAQbADnhPvEANsllqt3rJlS9OmTQ09HTt25PUzkBfBDgAAM9WrV+/06dN//vOf\nhRBz5849cuTIq6++KndRsGkEOwAAzHfjxo2LFy8KIc6cOXPv3j25y4GtI9gB5ktOTk5JSRFC\nSId1ALZm69atAQEB0dHRQojIyMiGDRseOnRI7qJg0wh2gJlWr15dt27dCxcuCCHatm37/vvv\na7VauYsCYDmpqamjR48u+pLo7OzskSNH8tpoyIhgB5gjLi5u/Pjx2dnZhp6IiIj58+fLWBIA\nCzty5Ijx+2Z++eWXM2fOyFIPIAh2gHnWrVtn/LrYlStXylIMAFnk5uY+Uz9gAQQ7wBz37983\n7nzw4IHlKwEgl2bNmhl3qtVq48ntAIsh2AHmSEtLM+5kTjvApjRs2HDChAnFOj///HNvb29Z\n6gEEwQ4wj7u7u3FnQUGB5SsBIKPw8PDhw4dLf9Q5OTlNmDBh6tSpchcFm0awA8xRpUoV404P\nDw/LVwJARnPmzPnuu++kP+o0Gs2SJUuWL18ud1GwaQQ7wBz9+vUz7gwODrZ8JQDkcuPGjblz\n5xbrnDJlSnp6uiz1AIJgB5inX79+Y8eOLdrTqFGj8PBwueoBYHmnTp0y7szLyzt79qzliwEk\nBDvATCtWrNi7d2+NGjWEEIsWLTp37pynp6fcRQGwHAcHB5P9jo6OFq4EMCDYAeZ766236tWr\nJ4T44IMPOJQDtqZt27Z2dsV/jTo6OrZo0UKWegBBsAMAwDyJiYk6na5YZ35+/q1bt+QoBxCC\nYAcAgHnu3LnzTP2ABRDsAAAwR7Vq1Uz2V69e3cKVAAYEOwAAzNGxY0fjt4r16NGjUaNGstQD\nCIIdAADmUavVW7ZsadmypaEnKChow4YNMpYEEOwAADBT7dq1Y2Njp0yZIoT4+9//Hh0d7ePj\nI3dRsGkEO8B8UVFRCQkJQoivv/6aF8UCtsnOzk662Y5b62ANCHaAmd5+++3+/fv/+uuvQoiZ\nM2dWrVr18ePHchcFALBpBDvAHEuXLt23b1/RntTU1J49e8pVDwAAgmAHmGfFihXGnSZfHAkA\ngMUQ7ABzZGRkGHcaz0EPAIAlEewAc9SsWdO408XFxfKVAABgQLADzLFs2TLjl39PmjRJlmIA\nyGjbtm3Lly8XQnz11VfR0dFylwNbR7ADzNG4ceOIiAg3NzfpRzs7u7CwsLlz58pbFQAL+9vf\n/vbee+9du3ZNCHHu3Lnu3buvXr1a7qJg08pHsLt9+7aHh4dKpVKpVJs2bZK7HEAIIYYNG5aa\nmtqqVSshxO3bt1etWiV3RQAs6tatW5999lmxzokTJz558kSWegBRLoKdXq8PCwvLzMyUuxCg\nOCcnJw8PDyGEp6en3LUAsLTY2Fjjzuzs7Li4OMsXA0jKQbD79ttvf/rpJ7mrAADgd4xvtJXY\n29tbuBLAwNqD3e3btz/55BMhhPTCFgAArESHDh2cnZ2LdXp5ebVo0UKWegBh5cFOr9d/8MEH\nWVlZPj4+H330kdzlAADwP6+++mp4eHixzpUrVxoeqwIsz6qD3fLlyw8ePCiE+Oqrr9zd3eUu\nBwCA3/njH/945MiR5s2bCyE6deoUFxf33nvvyV0UbJr1BrubN29OnTpVCNGnT5+RI0fKXQ4A\nACZ06tRJ+iX14YcfNmvWTO5yYOusNNhJT8JmZWV5eXmtXLlS7nIAAADKASsNdt98882hQ4eE\nEIsWLapatarc5QAAAJQD1hjsDBdh33nnHS7CAgAAlJGD3AUUJz0Jm52d7eXl9e2335b9g/Hx\n8fv27ZPaly5dejnVAQAAWC+rC3ZLly49fPiwEGLx4sXPdBE2NjZ22rRpL6ssAAAAq2ddwe7G\njRvTp08XQvTt23fEiBHP9Nk2bdp8+eWXUvvSpUsREREvvj4AAAArZkXBznARtlKlSs90EVYS\nGBgYGBgotaOiogh2AADA1ljRwxNLliw5evSoEOKbb77x9fWVuxwAAIByxlrO2N27d0+6CBsQ\nEGBvb79169ZiA+Lj46XGyZMnHRwchBB169Zt0qSJhesEAACwWtYS7G7dupWTkyOESEhIGDhw\nYCkjFy5cuHDhQiHExIkTpQYAAACEVV2KBQAAwPOwlmDXoUMHfamWLFkijdy4caPUw+k6AACA\noqwl2AEAAOA5EewAAAAUgmAHAACgEAQ7AAAAhSg3wW78+PHSMxNDhgyRuxYAAABrVG6CHQAA\nAEpHsAMAAFAIgh0AAIBCEOwAAAAUgmAHAACgEAQ7AAAAhSDYAQAAKATBDjBfWlpaamqqECIp\nKUnuWgAAINgB5tq4cWOdOnXOnTsnhGjSpMkf//hHnU4nd1EAAJtGsAPMceHChbCwsPT0dEPP\nN998s2DBAhlLAgCAYAeYY9WqVbm5ucU6ly1bJksxAABICHaAOZKTk40779+/b/lKAAAwINgB\n5vDz8zPurFmzpsULAQDgfwh2gDk+/PBDDw+PYp1Tp06VpRgAACQEO8ActWrV2rZtm+EUnaur\n69y5c0NDQ+WtCgBg4xzkLgAor7p163bt2rWOHTuePHny+vXrr776qtwVAQBsHWfsAPOp1Wp3\nd3chhPFlWQAALI9gBwAAoBAEOwAAAIUg2AEAACgEwQ4AAEAhCHYAAAAKQbADAABQCIIdAACA\nQhDsAAAAFIJgBwAAoBAEOwAAAIUg2AEAACgEwQ4AAEAhCHYAAAAKQbADAABQCIIdAACAQhDs\nAAAAFIJgBwAAoBAEOwAAAIUg2AEAACgEwQ4AAEAhCHYAAAAKQbADAABQCIIdAACAQhDsAAB4\nLpmZmUKIrKwsuQsBCHYAAJgrJSUlODj4s88+E0KMHTs2JCQkIyND7qJg0xzkLgAAgHJJp9MN\nGzbs4MGD0o96vX7Dhg35+fkbN26UtzDYMs7YAQBgjhMnThhSncGmTZsSExNlqQcQBDsAAMyT\nlJRksv/GjRsWrgQwINgBAGAOHx8fk/1Vq1a1cCWAAcEOAABzdO7cuUGDBsU627Zt+8Ybb8hS\nDyAIdgAAmMfJyWnz5s1169Y19AQGBn7//fcqlUrGqmDjCHYAAJgpICDg4sWLH374oRDir3/9\n65kzZ/z8/OQuCjaNYAcAgPkcHR2lC7L+/v729vZylwNbR7ADAABQCGsMdlqtduvWrYMGDapd\nu7abm5ujo6O3t3eHDh1mzJjBM+QAAAAlsbo3T1y7dm3IkCHx8fFFOx89evTo0aOYmJj/+7//\nmzVr1l//+le5ygMAALBa1hXsbt++3b59+9TUVCGEs7NzcHBwvXr1KlasePfu3V27diUmJhYU\nFMyYMUOtVv/lL3+Ru1gAAADrYl3Bbvz48VKqa9OmTWRkpK+vr2FReHj4xx9/vHjxYiHErFmz\nxo4dW7FiRdkKBQAAsD5WdI/dL7/8snv3biGEi4vLzp07i6Y6IYS9vf2CBQtq164thMjLyzt0\n6JA8VQIAAFgrKzpj9/jx4+HDh6elpdWvX79KlSrGA+zt7Tt27Cg9P5GcnGzxAgEAAKyaFQU7\nf3//iIiI0sdoNBqp4enp+fIrAp5Oq9XKXQIAAP9lRZdinyotLW3fvn1CCLVa/eabb8pdDmzd\npUuXunTpIt0V4O/v/8MPP8hdEQBL0+l0K1euDA8PF0LMnDlz06ZNclcEW1dugt3Vq1d79uyZ\nlpYmhJg6dWrVqlXlrgg27dGjRz169Dh8+LD04507dwYNGrR3715ZiwJgadOmTRs7duy9e/eE\nEImJiUOHDl2wYIHcRcGmWdGl2GJu3bq1dOlSnU735MmThISEuLg4vV7v4uIyc+bMadOmyV0d\nbN2SJUvu379frHP69Olvv/22LPUAsLzr169/9dVXxTo//fTTkJCQypUry1ISYL3B7t69e//4\nxz8MP3p4eIwZM2batGkmn6sQQnz//fefffaZ1M7OzrZEibBhV69eNe68cuWK5SsBIJfTp08b\nd2o0mvj4+KCgIMvXA4hydCk2IyPjH//4R+vWrVeuXKnX600OSPrmw10aAAAYCUlEQVRNSkqK\n5SuETfHy8jLurFSpkuUrASAXJyenZ+oHLMB6g12HDh30er1Wq01PT4+NjZ0+fbq7u3tSUtLY\nsWNDQkKMx4eGhqb95qlP1wLPadiwYcadI0aMsHwlAOTSqVOnChUqFOv08fFp0aKFLPUAwpqD\nncTOzs7T07N169bz5s07f/58jRo1hBARERGrV68uNtLJycnrN8Z7GvBiderUad68eY6Ojoae\n7t27f/HFFzKWBMDCvL29ly9fXrTH2dl5/fr1zs7OcpUEqExe1rRakZGRAwYMEEIEBAScP3++\npGFRUVH9+/efP38+j1ngpbp8+fL+/fuzsrJatWrVo0cPucsBIIOEhITVq1ffunWrbt2648aN\nk96QBMjFeh+eMMnwyOGFCxcKCgrUarW89cDGNWrUqFGjRnJXAUBOAQEBixYtkrsK4L+sKNhF\nR0efPXs2OTl54MCB7dq1MznGycnJzs5Op9Pp9XqNRkOwAwAAMLCiYLdr1y7pjx6dTldSsLtx\n44ZOpxNCuLq6ciMdAABAUVb08IThMmtERMTDhw9NjlmzZo3UKCn5AQAA2CwrCnY9evRo3Lix\nECI9Pb1v377G0/qvWbPGMMf3H/7wB0vXBwAAYN2s6FKsnZ3d+vXr33zzzczMzNjY2Dp16vTu\n3TsgIMDFxSU5OXn//v0XL16URvbv33/gwIHyVgsAAGBtrCjYCSGaNWt28ODBESNGXLt2LTc3\nd+vWrVu3bi02ZsyYMYsXL5alPAAAAGtmXcFOCNGiRYuEhITt27dv3749Li4uJSVFo9F4eHjU\nqlWrQ4cOoaGhAQEBctcIAABgjawu2AkhHB0dhwwZMmTIELkLAQAAKE+s6OEJAAAAPA+CHQAA\ngEIQ7AAAABSCYAcAAKAQBDsAAACFINgBAAAohDVOd/KipKWlJSUlyV0FAADAC1OzZk2VSlXi\nYr0SxcTE1K9f34L/yAAAAJaQnZ1dSgRS6fV6uSt8Kfbu3btmzRq5q4DyHThw4PHjx7169XJz\nc5O7FgDyuHTp0uXLl5s2bVqnTh25a4HyRUREODk5lbRUscEOsIymTZvGx8ffvHnTz89P7loA\nyGPmzJlffPHF4sWLJ0yYIHctsHVKvscOsGbZ2dkLFy4sKCgQQrRt2/att96SuyIAQLlHsANk\nkJeX17dv34MHDwohevXqNW7cOLkrAgAoAcEOeC6tW7euUqWKi4tL2T+Sn58/YMCAgwcPurq6\nhoeHk+qA8q5WrVrdunWrXr263IUA3GMHWFZhYeGgQYMiIyNbtGjxr3/9i8e3AQAvEGfsAItK\nTEwMCAgICgoaO3asgwM7IADgReKMHQAAgELwSjEAAACFINjBekVHR6tMUavV3t7e9erV69mz\n59/+9rfjx4+bt55S5OXlvdjvotVqd+7c+fHHH7du3fr111+vUKGCo6Ojl5dXo0aNBgwYsGjR\novv375fxK7i7u2dlZZVlo9evX3+pXwp4eZSxy/Ts2VNa1fTp00sf6efnJ41cvXp1KcMyMzMd\nHR2lkefOnRNW801hRSzyii/AHAcOHCjjf+PAwMDNmzc//3oMcnNzX+AXWbVqVc2aNUvfooOD\nw+jRo9PS0sryFVatWlWW7X766acv70sBL49idpmlS5dKq2rSpEkpwy5fvmzY6MCBA0sZGRUV\nJQ179dVXdTqd3mq+KawH926jHKhcufL48eMNPxYWFqalpd2/f//EiRO//vqrECI+Pn7w4ME7\nduxYsWKFu7t7SeupVKlSaGhoWbb4oh5ryMrK+uCDD3744QdDT61atZo1a1alShUhREpKyo0b\nNxISEoQQhYWFq1atOnz48P79+0v5laZSqfR6/Zo1a8LCwkrftE6ni4iIMHzkhXwd4GVT2C7T\nu3dv6diVkJDw4MEDX19fk8P27t1raEdHR2u1Wnt7e5Mj9+3bJzV69eql+v1r4Dk44L/kTJVA\nqQx/idavX7+kMcePH+/Xr5/h/3Pnzp01Go0Z6ym7ixcvRkRE/PDDD08dWVhY2L17d0Ntw4YN\nu3LlivGwpKSkyZMn29n9976Ihg0bZmZmlvQVmjVrJjWuXr1a+tb3798vjWzSpInU4I9yWLly\nt8uU5WjQqFEjaW1r164taYz04hkPDw9p5PHjx0saWatWLWlMZGSk1MPBAcVwjx3Kt7Zt20ZF\nRa1bt87R0VEIceTIkT/96U8vdYs7d+4cOXLkhx9++NSRs2fPlo65Dg4O69at++677xo0aGA8\nrGbNmuHh4QcPHnR2dhZCXLlyZfbs2SWts1u3btKf6WvWrCl962vXrhVCvP7667Vr135qqYA1\nKHe7TFmOBn369JEaRU/LFZWbm3vkyBEhREhIiHStwHBarpjExMSkpCQhhKOjY7du3Yot5eAA\nCcEOShASEvLNN99I7X/+858XL16Utx4hREpKSnh4uNSeM2dOSEhI6eM7d+68dOnSxo0bT548\nuXfv3iUN8/b2btOmjRAiIiJCq9WWNCwjI0O6F6dv374ajcacLwBYllJ3GUNtBw4c0Ol0xgOO\nHDkiPbsQFBQknUIrKdgZomHnzp0rVKhQbKns3xRWgmAHhQgLCwsKChJC6HS6+fPny12OWLJk\niXSwrlev3tSpU8vykbCwsAsXLoSHh3fp0qWkMQUFBe+++64QIjk5+ccffyxp2KZNm3Jzc4UQ\ngwYN4nk3lAtK3WXatWvn5eUlhEhLSzt16pTxAEOMa9euXbt27YQQp0+fTk9PL2WkySAr+zeF\nlSDYQTn+8pe/SI09e/aY/MvYknbv3i01PvroI8PNQM+voKBg0KBB0gpLueCybt06IYSfn1/7\n9u3z8/Nf1NaBl0epu4yDg4N0C50o4Wqs1NmoUSNvb+9OnToJIbRarfGz/Pn5+YcPH5baJQU7\nDg4QBDsoSefOnaV7btLT06UZnuTy5MkT6cE9IUTRm8Gfn06nq169eteuXYUQu3fvlh4KLuba\ntWsnTpwQQowaNUqlUsmecYGnUvYuY8hhxsHuzp07V69eFUJI98x16dJFSmbGV2NjYmKkOerq\n169fp04d461YwzeFNSDYQTmcnJwaN24stW/evCljJTdv3pSOmK6urg0bNnzh65emMygoKJDm\nLChG+otcpVI99S4lwEooe5fp2bOnFNdOnz6dlpZWdJEhwEnBrnLlyk2bNhWmgp3hUdZSbigU\ncn9TWAPmsYOiSJNdCSEePXr0/Gu7fv269LRaUadPnxZCaDSaVatWFVtUuXLl/v37CyFSU1MN\nPcXmmnoh+vfv7+XllZ6evnbt2smTJxddZJihqkuXLn5+fi9808DLYP27jNlHA6ndpk2b48eP\n63S6/fv3DxkyxDBMCnBqtfrNN9+Uerp37x4XF/fLL79cunTJ39+/2EjxtGDHwQHMYwfrZcb8\nc9K9w0KI8PBw4/WU0fDhw6UPSpMClJ1hcvnIyMinVr5nz55SVvX111+b/KeYNWuW1GOYsTk2\nNtbkajds2CD1tG/fXuphqipYLevfZcw+Gkjmzp0r9YeEhBg6CwsLPT09hRAdO3Y0dB48eFAa\nWfQglpKSIuVdd3f3/Pz8l/pNUd5xKRaKYnhPovFcAJbk6uoqNTIyMl7SJj744AOpUewuaelS\ni7u7uyHjAtZP8buM4TTbvn379L+97OHUqVOPHz8Wv7+tsH379m5ubuL3V2MPHDggfapHjx5q\ntbr0bXFwsHFcioWiSLN3CiGqVatmvNTT03P48OFPXUmrVq2kxqhRo0aNGlVs6Zdffjl9+vTK\nlSuXcrXX8OKgR48e5efnS5MnF1O9enXjN/9cunQpNjb2qRUKIZo2bRoYGBgfH79p06aFCxe6\nuLgIIR4/frxjxw4hxODBgw2/KQHrZ/27jNlHA0mTJk2qV69+9+7dBw8enD9/PjAwUBS5ba5H\njx6GkY6Ojp06ddqzZ8/PP/+cm5sr1VnGG+xeyDdFeUewg3I8fPgwMTFRahueoijKx8fH8E7u\nl6pevXoODg6FhYUFBQVxcXFt27Y1HuPv7298X87ChQvL+FtKCBEWFjZhwoSMjIytW7eOHDlS\nCLFp0yZpYqoyvhIXsBK2sMv06tXr22+/FULs27evaLDz8vJq2bJl0ZE9evTYs2dPXl7e0aNH\npalSpOutKpWqZ8+eZdkWBwdbxqVYKMe2bdukqxV16tR5/fXXZazE2dlZmgJeCCFN8v4yDB8+\n3MnJSRS54CJdaqlXr540zSlQXtjCLmM42SY9hJGZmSnNVxwUFFRs3j7DCbxDhw4JIS5evJic\nnCyEaN68ueHUZuk4ONgygh0UIicnx/A+omHDhslbjBBi8ODBUmPlypVPnjx5GZvw8vIKDg4W\nQhw5ciQlJeU///nPyZMnBX+Ro3xS/C4TFBQkTbQZExOj0+mOHTtWWFgofn8dVtKoUaPXXntN\nCCHNSPzTTz9J/YbXzj4VBwdbRrCDQkybNu3GjRtCCDc3t3Hjxsldjhg1alTlypWFEI8fPx47\ndmwZP1XKGx5Nkm450uv1u3bt2rZtmxDCzs5OuvIClC+K32VcXV2lV59lZGTEx8cfO3ZM6jcO\nduK3xyni4uKysrJ+/vlnqbMsN9gZcHCwWQQ7lHt6vX7WrFmGm+dmz55dxqsVL1WFChW++uor\nqb158+Y//elPT53kffv27XPmzHmmrQQFBUkXnffs2SO9kalHjx7S3/pA+WILu4whmf38888x\nMTFCiPr165u8b0QKdoWFhSdOnJAioI+PT/Pmzcu+LQ4ONotgh/ItPj7+7bffnjNnjnR3Xf/+\n/YvNySmj0NDQ0aNHS+0lS5a0b9/+p59+Msx0YKDRaHbv3t2lS5d3331XmuuhRYsWAwcOLMsm\n7OzspBnkDx48yKUWlHeK32UMwe7gwYPS5MYmT9cJIbp37y5NXLdu3bqUlBQhRK9evZ5p6mYO\nDjaLp2JRDjx69Gj27NlFezQaTXJy8smTJ6XXLEqGDRu2du3alzFtfVHTpk2bNm1aGQd/++23\nrq6uixcvFkLExsZ269bN29u7Q4cOvr6+zs7Oqampd+7ciY2NlZ5WE0KoVKr3339/+fLl0gwF\nZREaGvrFF1+kp6cLIby8vPr16/fs3wmwFuVrl3mmo4EQws/Pz9/f/9KlS7t375YuIksPvRrz\n9vYODAw8d+7c5s2bpZ5nug4r4eBgmwh2KAdSU1M///zzUgb4+fnNmzdv6NChFiupjOzs7BYt\nWtS7d+9PPvlEesf5w4cPDZPsF9OnT585c+ZIb4osOz8/v65du0q3Vw8bNkx6FA4opxS/y/Tu\n3fvSpUtSqnN0dDS8ScxY9+7dz507J41Uq9VFJzEuIw4OtolLsSiX7O3tPT09mzRpEhYWFhUV\ndf36dStMdQY9evQ4f/780aNHP/nkk06dOlWtWtXZ2dne3t7d3b1BgwYDBgxYsGBBUlLSzp07\nn/VXlMQwa6vxBKpAeaTgXaboibd27dpJL5kwqehV2o4dO3p4eJixOQ4ONkhlfPsCAAAAyiPO\n2AEAACgEwQ4AAEAhCHYAAAAKQbADAABQCIIdAACAQhDsAAAAFIJgBwAAoBAEOwAAAIUg2AEA\nACgEwQ4AXpYOHTqoVCqVSnX16lW5awFgEwh2AMqf6Oho1TPKy8uTu2oAeOkc5C4AABSrbt26\nWVlZQghnZ2e5awFgEwh2AMqxSpUqhYaGlmWkg4MMh7u1a9dafqMAbBnBDkA55u3tHR4eLncV\nAGAtuMcOAABAIQh2AGxL48aNpccp7t27Z3JAnz59pAGxsbHFFmm12u+///7dd9+tXbt2hQoV\nHBwcPD09AwMDx48ff/bsWeNVlf5U7KFDh8aMGdOwYUNPT09HR0dfX9927drNmDHj7t27Jgvr\n0qWLtDatViuEOHXqVGhoaJ06dVxdXd3d3Zs0aTJ9+vSHDx8+2z8HAGXhUiwAlMn9+/f79Olz\n7ty5op1Pnjw5f/78+fPnly1bNmnSpAULFpRlVZmZmcOHD9+5c2fRzpSUlJSUlBMnToSHh8+f\nP3/SpEnFPuXq6io1cnNzV65cOWXKFL1eb1iakJCQkJDwr3/9KyYmpkaNGuZ8QwDlH8EOAMpk\n8ODBUqpr3rx5SEhIvXr11Gp1SkrK4cOHv//++6ysrK+//rpmzZoTJkwofT1arbZXr17Hjh0T\nQvj4+EycOLFdu3bu7u7379/fsWPH2rVrNRrNxx9/rFarx48fX/SD9vb2UmPLli1TpkypXbt2\nWFhYgwYNNBrN2bNnly1blp2dfe/evYkTJ0ZGRr6cfwMAVk8PAOXNgQMHpCNY/fr1n/Wz/v7+\n0mfv3r1rckDv3r2lASdOnDB0nj9/Xups2rRpXl5esY8kJCRUrFhRCOHr66vT6Qz97du3lz51\n5coVQ6fhrF6DBg0ePnxYbFVRUVEqlUoI4erqev/+/aKL+vXrJ33Qw8OjX79+xcqIjo6Wltrb\n26enpz/LPwkA5eAeOwB4uitXrkiNnj17Ojk5FVv6xhtvLFy4cObMmfPmzdNoNKWsR6/XL168\nWGovW7asSpUqxQb069cvODhYCJGTk7N+/XqTK3F2dt6wYUOxMoKCgho1aiSE0Gq1hhgKwNYQ\n7ADg6dzc3KRGSZlp1KhRn3/+eWhoaOlzEZ8/f/7WrVtCiGrVqnXt2tXkmGHDhkmNH3/80eSA\nESNGeHh4GPe/8cYbUuPXX38tpQYACkawA1COXbt2rSzvExsxYsRzbqh9+/bSswu7d+8eOnTo\n5cuXzVvPmTNnpEabNm1KGtOiRQupER8fry/yeIRBSZ/19PSUGjk5OeaVB6C8I9gBwNN5eXkt\nXbpUuvtt06ZN/v7+devWHTdu3ObNm59phpE7d+5IjVq1apU0pkaNGtKGMjMzMzMzjQd4e3ub\n/KDh7Rom4yAAW8BTsQDKMU9Pz+HDhz91WKtWrZ5/W6GhodWqVZs0adKlS5eEEImJiYmJiStW\nrLCzs2vTps0f/vCHESNGGB5cLcmTJ0+kRoUKFUoaY2dn5+LiIp11y8jIML7qKsvr0QCUCxwd\nAJRjPj4+S5cutdjmunfvfvHixZMnT0ZFRR04cODcuXM6nU6n0x0/fvz48eNLlizZsWPHa6+9\n9vwbMpxyk07dAUAZcSkWAH6nsLCw9AGtW7eeP3/+mTNnUlNTt2/fPmTIEOkUWlxc3Lvvvlv6\nZVDDbXAmr7FKtFptbm6u1JZmUQGAMiLYAbAthnNgJQW4sj9S6unp2b9//40bN8bFxVWqVEkI\ncfLkyZiYmFI+4ufnJzVu3LhR0pibN29KDS8vr1Ku2AKAMYIdANtimI7EcLtbUdnZ2dItdM8k\nICDA8JaIhISEUka2bNlSakizH5scY3hHrWEwAJQRwQ6AbXnllVekxsWLF42Xrl69Oj8/v1in\nTqf79NNP33rrLcMMc8YM10wdHR1L2Xrjxo0bNGgghEhOTt63b5/JMYZ5iQcMGFDKqgDAGMEO\ngG1p3ry51Fi+fLlWqy26KDY2dsaMGe7u7sU+Ymdnd+zYsf3792/cuHHDhg3G68zJyTH0lzJB\nnWTSpElSY8KECY8ePSq2dM2aNdLLwXx8fMrywC8AFMVTsQBsy9ChQ+fOnavT6WJiYjp37hwS\nEvLaa69lZmZGR0evX7/e39+/ffv2y5YtE7+fDW7evHldunQpLCwMCQn57rvv+vXrV716dQ8P\nj8zMzISEhLVr1yYmJgohgoODGzduXHoBY8aM2bZt2/79+xMTEwMCAiZPntymTRtnZ+fbt29v\n3rx5y5YtQgh7e/t169Zxgx2AZ0WwA2BbGjZsOGvWrFmzZgkhYmJiij7rULt27aioqOXLl0s/\nFhQUGBZ16NDhu+++CwsLy8rK2r9///79+43XHBwcHBER8dQCVCpVVFTU+++/v3Xr1uTk5ClT\nphQbUKlSpQ0bNrz99ttmfDsANo5gB8DmzJw5s2XLlsuXLz99+nRqaqqHh0etWrUGDhw4duxY\nDw8Pw6XY7Ozsop8aNGhQly5dpEulV65cSU1NLSgoqFChgp+fX+vWrYcPH96pU6cyFuDi4vLD\nDz8cOXJkw4YNx44dS05O1mg0lSpVaty4cc+ePUePHm3yVbAA8FQq3jwDAACgDDw8AQAAoBAE\nOwAAAIUg2AEAACgEwQ4AAEAhCHYAAAAKQbADAABQCIIdAACAQhDsAAAAFIJgBwAAoBAEOwAA\nAIUg2AEAACgEwQ4AAEAhCHYAAAAKQbADAABQCIIdAACAQhDsAAAAFOL/AS8XPFrkRwBrAAAA\nAElFTkSuQmCC",
"text/plain": [
"plot without title"
]
},
"metadata": {
"image/png": {
"height": 300,
"width": 420
}
},
"output_type": "display_data"
}
],
"source": [
"\n",
"colors <-c(\"#AB1111\", \"#143F6B\")\n",
"\n",
"pwc <- df_val %>%\n",
" pairwise_t_test(\n",
" MAE ~ fusion, paired = TRUE, alternative=\"less\"\n",
" )\n",
"pwc\n",
"\n",
"options(repr.plot.width = 7, repr.plot.height = 5)\n",
"\n",
"bxp <- ggboxplot(df_val, x = \"fusion\", y = \"MAE\", add = \"point\", fill = colors,\n",
" xlab = \"Fusion\", ylab = \"MAE\") + theme(text = element_text(size=20))\n",
"\n",
"\n",
"pwc <- pwc %>% add_xy_position(x = \"fusion\")\n",
"bxp <- bxp + \n",
" stat_pvalue_manual(pwc, label = \"p = {p.adj}\") +\n",
" labs(\n",
" subtitle = get_test_label(pwc, detailed = TRUE),\n",
" ) + geom_point(data = data.frame(x = factor(result_mean[[\"Group.1\"]]), y = result_mean[[\"abs_diff\"]]),\n",
" aes(x=x, y=y),\n",
" color = 'red', shape=8, size=5)\n",
"\n",
"bxp "
]
}
],
"metadata": {
"kernelspec": {
"display_name": "R",
"language": "R",
"name": "ir"
},
"language_info": {
"codemirror_mode": "r",
"file_extension": ".r",
"mimetype": "text/x-r-source",
"name": "R",
"pygments_lexer": "r",
"version": "4.1.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}