{
"cells": [
{
"cell_type": "markdown",
"id": "c2ca7c19",
"metadata": {
"papermill": {
"duration": 0.005621,
"end_time": "2023-11-30T06:09:42.105624",
"exception": false,
"start_time": "2023-11-30T06:09:42.100003",
"status": "completed"
},
"tags": []
},
"source": [
"# Reference Space\n",
"\n",
"This notebook contains example code demonstrating the use of the StructureTree and ReferenceSpace classes. These classes provide methods for interacting with the 3D spaces to which Allen Institute data and atlases are registered.\n",
"\n",
"The main entry point will be through the `ReferenceSpaceCache` class. The `ReferenceSpaceCache` class has methods for downloading, storing, and constructing StructureTrees, annotations, and ReferenceSpaces.\n",
"\n",
"* Constructing a StructureTree\n",
"* Using a StructureTree\n",
"* Downloading an annotation volume\n",
"* Constructing a ReferenceSpace\n",
"* Using a ReferenceSpace\n",
"* Exporting"
]
},
{
"cell_type": "markdown",
"id": "1b36b259",
"metadata": {
"papermill": {
"duration": 0.00461,
"end_time": "2023-11-30T06:09:42.115052",
"exception": false,
"start_time": "2023-11-30T06:09:42.110442",
"status": "completed"
},
"tags": []
},
"source": [
"## Constructing a StructureTree\n",
"\n",
"A StructureTree object is a wrapper around a structure graph - a list of dictionaries documenting brain structures and their containment relationships. To build a structure tree, you will first need to obtain a structure graph. The `ReferenceSpaceCache` takes care of that for you.\n",
"\n",
"For a list of atlases and corresponding structure graph ids, see [here](http://help.brain-map.org/display/api/Atlas+Drawings+and+Ontologies)."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "64ad2303",
"metadata": {
"execution": {
"iopub.execute_input": "2023-11-30T06:09:42.125315Z",
"iopub.status.busy": "2023-11-30T06:09:42.125060Z",
"iopub.status.idle": "2023-11-30T06:09:43.715344Z",
"shell.execute_reply": "2023-11-30T06:09:43.714625Z"
},
"papermill": {
"duration": 1.597614,
"end_time": "2023-11-30T06:09:43.717185",
"exception": false,
"start_time": "2023-11-30T06:09:42.119571",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"from pathlib import Path\n",
"import os\n",
"\n",
"from allensdk.core.reference_space_cache import ReferenceSpaceCache"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "40e9752b",
"metadata": {
"execution": {
"iopub.execute_input": "2023-11-30T06:09:43.728095Z",
"iopub.status.busy": "2023-11-30T06:09:43.727792Z",
"iopub.status.idle": "2023-11-30T06:09:43.731074Z",
"shell.execute_reply": "2023-11-30T06:09:43.730493Z"
},
"papermill": {
"duration": 0.010143,
"end_time": "2023-11-30T06:09:43.732379",
"exception": false,
"start_time": "2023-11-30T06:09:43.722236",
"status": "completed"
},
"tags": [
"parameters"
]
},
"outputs": [],
"source": [
"output_dir = '.'"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "65c9dcb7",
"metadata": {
"execution": {
"iopub.execute_input": "2023-11-30T06:09:43.756855Z",
"iopub.status.busy": "2023-11-30T06:09:43.756438Z",
"iopub.status.idle": "2023-11-30T06:09:49.105896Z",
"shell.execute_reply": "2023-11-30T06:09:49.105221Z"
},
"papermill": {
"duration": 5.356303,
"end_time": "2023-11-30T06:09:49.107533",
"exception": false,
"start_time": "2023-11-30T06:09:43.751230",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"reference_space_key = os.path.join('annotation', 'ccf_2017')\n",
"resolution = 25\n",
"rspc = ReferenceSpaceCache(resolution, reference_space_key, manifest=Path(output_dir) / 'manifest.json')\n",
"# ID 1 is the adult mouse structure graph\n",
"tree = rspc.get_structure_tree(structure_graph_id=1) "
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "0bc1327c",
"metadata": {
"execution": {
"iopub.execute_input": "2023-11-30T06:09:49.118400Z",
"iopub.status.busy": "2023-11-30T06:09:49.117985Z",
"iopub.status.idle": "2023-11-30T06:09:49.125144Z",
"shell.execute_reply": "2023-11-30T06:09:49.124520Z"
},
"papermill": {
"duration": 0.014009,
"end_time": "2023-11-30T06:09:49.126476",
"exception": false,
"start_time": "2023-11-30T06:09:49.112467",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[{'acronym': 'AUDd',\n",
" 'graph_id': 1,\n",
" 'graph_order': 122,\n",
" 'id': 1011,\n",
" 'name': 'Dorsal auditory area',\n",
" 'structure_id_path': [997, 8, 567, 688, 695, 315, 247, 1011],\n",
" 'structure_set_ids': [112905828,\n",
" 688152357,\n",
" 691663206,\n",
" 687527945,\n",
" 12,\n",
" 184527634,\n",
" 167587189,\n",
" 114512891],\n",
" 'rgb_triplet': [1, 147, 153]}]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# now let's take a look at a structure\n",
"tree.get_structures_by_name(['Dorsal auditory area'])"
]
},
{
"cell_type": "markdown",
"id": "d516e479",
"metadata": {
"papermill": {
"duration": 0.00459,
"end_time": "2023-11-30T06:09:49.135822",
"exception": false,
"start_time": "2023-11-30T06:09:49.131232",
"status": "completed"
},
"tags": []
},
"source": [
"The fields are:\n",
" * acronym: a shortened name for the structure\n",
" * rgb_triplet: each structure is assigned a consistent color for visualizations\n",
" * graph_id: the structure graph to which this structure belongs\n",
" * graph_order: each structure is assigned a consistent position in the flattened graph\n",
" * id: a unique integer identifier\n",
" * name: the full name of the structure\n",
" * structure_id_path: traces a path from the root node of the tree to this structure\n",
" * structure_set_ids: the structure belongs to these predefined groups"
]
},
{
"cell_type": "markdown",
"id": "ccaca317",
"metadata": {
"papermill": {
"duration": 0.004545,
"end_time": "2023-11-30T06:09:49.145039",
"exception": false,
"start_time": "2023-11-30T06:09:49.140494",
"status": "completed"
},
"tags": []
},
"source": [
"## Using a StructureTree"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "8c0a5d30",
"metadata": {
"execution": {
"iopub.execute_input": "2023-11-30T06:09:49.155684Z",
"iopub.status.busy": "2023-11-30T06:09:49.155126Z",
"iopub.status.idle": "2023-11-30T06:09:49.159821Z",
"shell.execute_reply": "2023-11-30T06:09:49.159178Z"
},
"papermill": {
"duration": 0.011508,
"end_time": "2023-11-30T06:09:49.161165",
"exception": false,
"start_time": "2023-11-30T06:09:49.149657",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[{'acronym': 'AUD',\n",
" 'graph_id': 1,\n",
" 'graph_order': 121,\n",
" 'id': 247,\n",
" 'name': 'Auditory areas',\n",
" 'structure_id_path': [997, 8, 567, 688, 695, 315, 247],\n",
" 'structure_set_ids': [3, 112905828, 691663206, 12, 184527634, 114512891],\n",
" 'rgb_triplet': [1, 147, 153]}]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# get a structure's parent\n",
"tree.parents([1011])"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "17bee9ad",
"metadata": {
"execution": {
"iopub.execute_input": "2023-11-30T06:09:49.171775Z",
"iopub.status.busy": "2023-11-30T06:09:49.171292Z",
"iopub.status.idle": "2023-11-30T06:09:49.176226Z",
"shell.execute_reply": "2023-11-30T06:09:49.175676Z"
},
"papermill": {
"duration": 0.011643,
"end_time": "2023-11-30T06:09:49.177514",
"exception": false,
"start_time": "2023-11-30T06:09:49.165871",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"'Auditory areas'"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# get a dictionary mapping structure ids to names\n",
"\n",
"name_map = tree.get_name_map()\n",
"name_map[247]"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "b3246267",
"metadata": {
"execution": {
"iopub.execute_input": "2023-11-30T06:09:49.187959Z",
"iopub.status.busy": "2023-11-30T06:09:49.187766Z",
"iopub.status.idle": "2023-11-30T06:09:49.191966Z",
"shell.execute_reply": "2023-11-30T06:09:49.191364Z"
},
"papermill": {
"duration": 0.010845,
"end_time": "2023-11-30T06:09:49.193253",
"exception": false,
"start_time": "2023-11-30T06:09:49.182408",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Primary visual area is not in Auditory areas\n"
]
}
],
"source": [
"# ask whether one structure is contained within another\n",
"\n",
"structure_id_a = 385\n",
"structure_id_b = 247\n",
"\n",
"is_desc = '' if tree.structure_descends_from(structure_id_a, structure_id_b) else ' not'\n",
"print( '{0} is{1} in {2}'.format(name_map[structure_id_a], is_desc, name_map[structure_id_b]) )"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "4a0c1e11",
"metadata": {
"execution": {
"iopub.execute_input": "2023-11-30T06:09:49.204231Z",
"iopub.status.busy": "2023-11-30T06:09:49.203852Z",
"iopub.status.idle": "2023-11-30T06:09:49.208020Z",
"shell.execute_reply": "2023-11-30T06:09:49.207348Z"
},
"papermill": {
"duration": 0.011197,
"end_time": "2023-11-30T06:09:49.209357",
"exception": false,
"start_time": "2023-11-30T06:09:49.198160",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"VISp\n"
]
}
],
"source": [
"# build a custom map that looks up acronyms by ids\n",
"# the syntax here is just a pair of node-wise functions. \n",
"# The first one returns keys while the second one returns values\n",
"\n",
"acronym_map = tree.value_map(lambda x: x['id'], lambda y: y['acronym'])\n",
"print( acronym_map[structure_id_a] )"
]
},
{
"cell_type": "markdown",
"id": "cf5a0bf3",
"metadata": {
"papermill": {
"duration": 0.004866,
"end_time": "2023-11-30T06:09:49.219295",
"exception": false,
"start_time": "2023-11-30T06:09:49.214429",
"status": "completed"
},
"tags": []
},
"source": [
"## Downloading an annotation volume\n",
"\n",
"You can obtain annotation volumes through the `ReferenceSpaceCache` which stores a nrrd file containing the Allen Common Coordinate Framework annotation on your hard drive. Above we set the resolution for annotations when we initialized the `ReferenceSpaceCache` to 25-micron isometric spacing. The orientation of this space is:\n",
" * Anterior -> Posterior\n",
" * Superior -> Inferior\n",
" * Left -> Right"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "2abd67d4",
"metadata": {
"execution": {
"iopub.execute_input": "2023-11-30T06:09:49.230285Z",
"iopub.status.busy": "2023-11-30T06:09:49.229787Z",
"iopub.status.idle": "2023-11-30T06:09:51.937500Z",
"shell.execute_reply": "2023-11-30T06:09:51.936858Z"
},
"papermill": {
"duration": 2.71469,
"end_time": "2023-11-30T06:09:51.938951",
"exception": false,
"start_time": "2023-11-30T06:09:49.224261",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2023-11-30 06:09:49,231 allensdk.api.api.retrieve_file_over_http INFO Downloading URL: http://download.alleninstitute.org/informatics-archive/current-release/mouse_ccf/annotation/ccf_2017/annotation_25.nrrd\n"
]
},
{
"data": {
"text/plain": [
"['annotation_25.nrrd']"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import os\n",
"\n",
"annotation, meta = rspc.get_annotation_volume()\n",
"# The file should appear in the reference space key directory\n",
"os.listdir(Path(output_dir) / reference_space_key)"
]
},
{
"cell_type": "markdown",
"id": "4cd74a9f",
"metadata": {
"papermill": {
"duration": 0.005051,
"end_time": "2023-11-30T06:09:51.949364",
"exception": false,
"start_time": "2023-11-30T06:09:51.944313",
"status": "completed"
},
"tags": []
},
"source": [
"## Constructing a ReferenceSpace\n",
"\n",
"A reference space is built from a structure tree and an annotation volume. We can obtain our ReferenceSpace object using `ReferenceSpaceCache` which will load everything from the cache since we have already downloaded the files for use above."
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "49b7b3fa",
"metadata": {
"execution": {
"iopub.execute_input": "2023-11-30T06:09:51.960702Z",
"iopub.status.busy": "2023-11-30T06:09:51.960240Z",
"iopub.status.idle": "2023-11-30T06:09:53.173990Z",
"shell.execute_reply": "2023-11-30T06:09:53.173287Z"
},
"papermill": {
"duration": 1.221248,
"end_time": "2023-11-30T06:09:53.175702",
"exception": false,
"start_time": "2023-11-30T06:09:51.954454",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"rsp = rspc.get_reference_space()"
]
},
{
"cell_type": "markdown",
"id": "af3643c4",
"metadata": {
"papermill": {
"duration": 0.00505,
"end_time": "2023-11-30T06:09:53.186263",
"exception": false,
"start_time": "2023-11-30T06:09:53.181213",
"status": "completed"
},
"tags": []
},
"source": [
"## Using a ReferenceSpace"
]
},
{
"cell_type": "markdown",
"id": "7e61ec1d",
"metadata": {
"papermill": {
"duration": 0.005031,
"end_time": "2023-11-30T06:09:53.196403",
"exception": false,
"start_time": "2023-11-30T06:09:53.191372",
"status": "completed"
},
"tags": []
},
"source": [
"#### making structure masks\n",
"\n",
"The simplest use of a Reference space is to build binary indicator masks for structures or groups of structures."
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "6231e446",
"metadata": {
"execution": {
"iopub.execute_input": "2023-11-30T06:09:53.207327Z",
"iopub.status.busy": "2023-11-30T06:09:53.207111Z",
"iopub.status.idle": "2023-11-30T06:10:02.564413Z",
"shell.execute_reply": "2023-11-30T06:10:02.563675Z"
},
"papermill": {
"duration": 9.364506,
"end_time": "2023-11-30T06:10:02.565862",
"exception": false,
"start_time": "2023-11-30T06:09:53.201356",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAz8AAAJQCAYAAACggNp4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8WgzjOAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAvJUlEQVR4nO3df5CV1X0/8M9ugA0E7yIiu2wBQ2Kiof5q0ZCdpE0TGZEwToz8ES2T2sTEiS5OFGMbOo02bSdY22kbU4PtpCPpTI0pnZKM1thQiMukrmiIjAQtEx0tJHqXRoZdJLL82PP9wy+3rC64l72798d5vWbODHvvw91z9577PPf9fM5zblNKKQUAAECDa652BwAAAMaD8AMAAGRB+AEAALIg/AAAAFkQfgAAgCwIPwAAQBaEHwAAIAvCDwAAkAXhBwAAyILwAwAAZKGq4eeee+6Jd77znfH2t789Fi5cGE888UQ1uwMAADSwqoWf73znO7Fy5cq444474ic/+UlceOGFsXjx4tizZ0+1ugQAADSwppRSqsYvXrhwYVxyySXxd3/3dxERMTg4GHPmzImbbropvvSlL530/w4ODsZLL70Up512WjQ1NY1HdwEAgBqUUor9+/dHR0dHNDefvLYzYZz6NMShQ4di69atsWrVqtJtzc3NsWjRoujp6XnT9gMDAzEwMFD6+Re/+EXMnz9/XPoKAADUvt27d8fs2bNPuk1Vpr398pe/jKNHj0ZbW9uQ29va2qJYLL5p+9WrV0dra2upCT4AAMDxTjvttLfcpi5We1u1alX09fWV2u7du6vdJQAAoIaM5HKYqkx7mzFjRrztbW+L3t7eIbf39vZGe3v7m7ZvaWmJlpaW8eoeAADQgKpS+Zk0aVIsWLAgNm7cWLptcHAwNm7cGJ2dndXoEgAA0OCqUvmJiFi5cmVce+21cfHFF8f73//++Nu//ds4cOBAfPrTn65WlwAAgAZWtfDzyU9+Mv73f/83br/99igWi3HRRRfFI4888qZFEAAAACqhat/zMxr9/f3R2tpa7W4AAAA1oq+vLwqFwkm3qYvV3gAAAEZL+AEAALIg/AAAAFkQfgAAgCwIPwAAQBaEHwAAIAvCDwAAkAXhBwAAyILwAwAAZEH4AQAAsiD8AAAAWRB+AACALAg/AABAFoQfAAAgC8IPAACQBeEHAADIgvADAABkQfgBAACyIPwAAABZEH4AAIAsCD8AAEAWhB8AACALwg8AAJAF4QcAAMiC8AMAAGRB+AEAALIg/AAAAFkQfgAAgCwIPwAAQBaEHwAAIAvCDwAAkAXhBwAAyILwAwAAZEH4AQAAsiD8AAAAWRB+AACALAg/AABAFoQfAAAgC8IPAACQBeEHAADIgvADAABkQfgBAACyIPwAAABZEH4AAIAsCD8AAEAWhB8AACALwg8AAJAF4QcAAMiC8AMAAGRB+AEAALIg/AAAAFkQfgAAgCwIPwAAQBaEHwAAIAvCDwAAkAXhBwAAyILwAwAAZEH4AQAAsiD8AAAAWRB+AACALAg/AABAFoQfAAAgC8IPAACQBeEHAADIgvADAABkQfgBAACyIPwAAABZEH4AAIAsCD8AAEAWhB8AACALwg8AAJAF4QcAAMjChGp3AIDRSymVtX1TU9MY9YRTVe5reIzXEmDkVH4AAIAsVDz8/Mmf/Ek0NTUNaeeee27p/oMHD0ZXV1ecccYZMXXq1Fi2bFn09vZWuhsAdS+lNOJW6cem8sbqbz4W4wOgUY3JtLdf//Vfj//8z//8v18y4f9+zS233BL//u//HuvWrYvW1tZYsWJFXHXVVfFf//VfY9EVgJpSLx9ER9JP063erFZf33L65XUFGtmYhJ8JEyZEe3v7m27v6+uLf/zHf4z7778/PvrRj0ZExH333Rfve9/74vHHH48PfOADY9EdAACAsbnm52c/+1l0dHTEu971rli+fHns2rUrIiK2bt0ahw8fjkWLFpW2Pffcc2Pu3LnR09NzwscbGBiI/v7+IQ2gluUw/ajRns+parTXN4exC+Sr4uFn4cKFsXbt2njkkUdizZo18cILL8Rv/dZvxf79+6NYLMakSZNi2rRpQ/5PW1tbFIvFEz7m6tWro7W1tdTmzJlT6W4DAAANruLT3pYsWVL69wUXXBALFy6Ms846K/7lX/4lJk+efEqPuWrVqli5cmXp5/7+fgEIqAm5nxEf7vk3+jUjub7mb/W8G/11BxrDmC91PW3atHjve98bzz33XLS3t8ehQ4di3759Q7bp7e0d9hqhY1paWqJQKAxpANVgKtBba8S/jdf8rfn7APVgzMPPq6++Gs8//3zMmjUrFixYEBMnToyNGzeW7t+5c2fs2rUrOjs7x7orAABAxio+7e2LX/xiXHHFFXHWWWfFSy+9FHfccUe87W1vi2uuuSZaW1vjuuuui5UrV8b06dOjUCjETTfdFJ2dnVZ6A2qGs9eVcfzfsV6nRBkL5TvZ36xexwHQOCoefn7+85/HNddcE6+88kqceeaZ8aEPfSgef/zxOPPMMyMi4m/+5m+iubk5li1bFgMDA7F48eL4xje+UeluAAAADNGU6vC0Vn9/f7S2tla7G0ADqsNdYl2ppzP/xsLYqqexANSHvr6+t1wbYEy+5BSglvlQWz3H/va1+MHXuBhfpscB1TDmCx4AAADUAuEHyIaleKE+eJ8CY0X4AQAAsuCaH6AhOXNc22ppGWxjpTad6HWp9ngB6pvKDwAAkAWVH6BhOINPuYyZ+pNSUv0BTpnwA9QlH1obRy0vf01tGu79b/wAI2HaGwAAkAWVH6AuqPQ0vvGsABlPjeeNr6lKEDAclR8AACALKj9AzXJ2nkozpvJRS8upA7VD+AFqhg+mRFjNi8ozJQ44xrQ3AAAgCyo/QFWp9jCcSi5+YIzxRqbEQb5UfgAAgCyo/ADjzpl4oFaoAkFehB9gzAk7nKrRTH8z7iiXhRGg8Zn2BgAAZEH4AcaUs+9UQrnjyLijEowjaDzCDwAAkAXX/AAV5UwpY6WSy1/DSJ1on2YcQn1S+QEAALKg8gNUhIoPtcA4ZLyklFR/oA4JP0DZfMCkmoab/mZMUg2Wxob6Y9obAACQBeEHKIsz7ADDs3+E2if8AAAAWXDND3BSzmRSq1xwTi1yHRDUNpUf4IQEH2pdSsk4paYZn1BbhB8AACALpr0BJc5QAlTeifatpsTB+FP5AQAAsqDyA6j4AABZEH4gUwIPQHUdvx82BQ7Gh2lvAABAFlR+IDMqPgC159i+WQUIxpbKDwAAkAWVH8iAag9AfXAdEIwtlR8AACALKj/QwFR8AOqX64Cg8oQfaDACD0BjMRUOKse0NwAAIAvCDwBAnUgpqfDDKAg/AABAFlzzA3XOGUCA/FgMAU6Nyg/UMcEHIG+OA1Ae4QcAAMiCaW9Qh5zpA+CYNx4TTIWDE1P5AQAAsqDyA3VCtQeAkUgpqf7ACQg/UOOEHgDKZSocDM+0NwAAIAsqP1CjVHwAACpL5QcAAMiCyg/UIFUfACrp+OOK63/ImcoPAACQBZUfqCEqPgCMtWPHGhUgciT8QBUJOwBUixBEjkx7AwAAsiD8AABkzCwEciL8AAAAWXDND4wzZ9gAqDWu/yEXKj8AAETE6yHISToamfADAABkwbQ3GAfOogFQT1JKpsDRkFR+AACALAg/AAC8iet/aESmvcEYcLAAoFFYCY5GovIDAABkQfgBAOAtmdVAIxB+AACALLjmByrEGTEAGp3rf6h3Kj8AAEAWyg4/mzdvjiuuuCI6Ojqiqakpvvvd7w65P6UUt99+e8yaNSsmT54cixYtip/97GdDttm7d28sX748CoVCTJs2La677rp49dVXR/VEAAAYH5bBpl6VHX4OHDgQF154Ydxzzz3D3n/XXXfF3XffHffee29s2bIl3vGOd8TixYvj4MGDpW2WL18eO3bsiA0bNsRDDz0Umzdvjuuvv/7UnwVUwbEdvwMAALlyDKTeNKVRjNimpqZYv359XHnllRHx+hugo6Mjbr311vjiF78YERF9fX3R1tYWa9eujauvvjqeffbZmD9/fjz55JNx8cUXR0TEI488Eh/72Mfi5z//eXR0dLzl7+3v74/W1tZT7TZUhJ09ALzONUDUgr6+vigUCifdpqLX/LzwwgtRLBZj0aJFpdtaW1tj4cKF0dPTExERPT09MW3atFLwiYhYtGhRNDc3x5YtW4Z93IGBgejv7x/SAACoDU4IUi8qGn6KxWJERLS1tQ25va2trXRfsViMmTNnDrl/woQJMX369NI2b7R69epobW0ttTlz5lSy2wAAQAbqYrW3VatWRV9fX6nt3r272l0ic85wAcBQrv+hHlT0e37a29sjIqK3tzdmzZpVur23tzcuuuii0jZ79uwZ8v+OHDkSe/fuLf3/N2ppaYmWlpZKdhVOiZ06AED9qmjlZ968edHe3h4bN24s3dbf3x9btmyJzs7OiIjo7OyMffv2xdatW0vbbNq0KQYHB2PhwoWV7A4AAEBJ2ZWfV199NZ577rnSzy+88EJs27Ytpk+fHnPnzo2bb745/vzP/zze8573xLx58+LLX/5ydHR0lFaEe9/73heXX355fO5zn4t77703Dh8+HCtWrIirr756RCu9QTWo+ADAyBw7ZloBjlpU9lLXjz76aHzkIx950+3XXnttrF27NlJKcccdd8Q//MM/xL59++JDH/pQfOMb34j3vve9pW337t0bK1asiAcffDCam5tj2bJlcffdd8fUqVNH1AdLXTPehB8AKI/ww3gbyVLX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",
"text/plain": [
"